@mediansh/widget 0.1.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.bun/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_wildcard.js","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/querystring.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/format-url.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/omit.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/utils.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/remove-trailing-slash.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/parse-path.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/client/normalize-trailing-slash.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/path-has-prefix.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/client/has-base-path.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/is-local-url.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/sorted-routes.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/page-path/ensure-leading-slash.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/segment.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/app-paths.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/interception-routes.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/is-dynamic.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/index.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/dist/compiled/path-to-regexp/index.js","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/lib/route-pattern-normalizer.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/route-match-utils.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/route-matcher.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/lib/constants.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/escape-regexp.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/invariant-error.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/parse-loader-tree.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/get-segment-param.tsx","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/routes/app.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/interception-prefix-from-param-type.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/resolve-param-value.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/get-dynamic-param.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/route-regex.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/interpolate-as.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/client/resolve-href.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/add-path-prefix.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router/utils/add-locale.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/client/add-locale.ts","../../../node_modules/.bun/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_default.js","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/router-context.shared-runtime.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/client/request-idle-callback.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/client/use-intersection.tsx","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/i18n/normalize-locale-path.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/client/normalize-locale-path.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/i18n/detect-domain-locale.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/client/detect-domain-locale.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/client/get-domain-locale.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/client/add-base-path.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/client/use-merged-ref.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/shared/lib/utils/error-once.ts","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/src/client/link.tsx","../../../node_modules/.bun/next@16.3.0+005eabf3d8b6ef06/node_modules/next/link.js","../../backend/convex/shared/support.ts","../../../apps/web/src/components/support-widget/sdk/median-support.tsx","../../../apps/web/src/components/support-widget/widget-launcher.tsx","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/lib/SSRBase.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Alarm.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Alarm.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Archive.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Archive.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowBendUpLeft.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ArrowBendUpLeft.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowDown.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ArrowDown.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowSquareOut.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ArrowSquareOut.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowUp.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ArrowUp.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowsClockwise.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ArrowsClockwise.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowsIn.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ArrowsIn.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowsOut.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ArrowsOut.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/BookOpenText.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/BookOpenText.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Bug.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Bug.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Buildings.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Buildings.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/CalendarBlank.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/CalendarBlank.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/CaretDown.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/CaretDown.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/CaretLeft.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/CaretLeft.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/CaretRight.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/CaretRight.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/CellSignalHigh.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/CellSignalHigh.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/CellSignalLow.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/CellSignalLow.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/CellSignalMedium.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/CellSignalMedium.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ChatCircleDots.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ChatCircleDots.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ChatsCircle.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ChatsCircle.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Check.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Check.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/CheckCircle.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/CheckCircle.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Circle.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Circle.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/CircleDashed.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/CircleDashed.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/CircleHalf.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/CircleHalf.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Clock.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Clock.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ClockCounterClockwise.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ClockCounterClockwise.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/CodeBlock.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/CodeBlock.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Code.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Code.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Copy.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Copy.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/CreditCard.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/CreditCard.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/DeviceMobile.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/DeviceMobile.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/DotsThree.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/DotsThree.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/EnvelopeSimple.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/EnvelopeSimple.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/File.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/File.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Folder.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Folder.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/FolderOpen.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/FolderOpen.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/FolderPlus.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/FolderPlus.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Funnel.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Funnel.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/GitCommit.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/GitCommit.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/GlobeSimple.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/GlobeSimple.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ImageSquare.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ImageSquare.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Key.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Key.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Lightbulb.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Lightbulb.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/LinkSimple.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/LinkSimple.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ListBullets.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ListBullets.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ListChecks.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ListChecks.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ListNumbers.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ListNumbers.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/LockSimple.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/LockSimple.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/MagicWand.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/MagicWand.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/MagnifyingGlass.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/MagnifyingGlass.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/MapPin.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/MapPin.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Megaphone.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Megaphone.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Monitor.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Monitor.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Moon.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Moon.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Note.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Note.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/NotionLogo.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/NotionLogo.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/PaperPlaneRight.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/PaperPlaneRight.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Paperclip.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Paperclip.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/PencilSimple.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/PencilSimple.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Play.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Play.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/PlugsConnected.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/PlugsConnected.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Plus.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Plus.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Quotes.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Quotes.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ShieldWarning.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ShieldWarning.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/SidebarSimple.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/SidebarSimple.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/SignOut.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/SignOut.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/SlidersHorizontal.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/SlidersHorizontal.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Sparkle.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Sparkle.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Square.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Square.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Star.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Star.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Sun.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Sun.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Table.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Table.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Tag.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Tag.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/TextB.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/TextB.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/TextItalic.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/TextItalic.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/TextStrikethrough.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/TextStrikethrough.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Trash.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Trash.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/TrendUp.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/TrendUp.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/UploadSimple.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/UploadSimple.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/UserCircle.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/UserCircle.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Users.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Users.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/WarningCircle.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/WarningCircle.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Wrench.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Wrench.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/X.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/X.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/XCircle.es.js","../../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/XCircle.es.js","../../../apps/web/src/components/icons.tsx","../../../apps/web/src/lib/utils.ts","../../../apps/web/src/components/support-widget/launcher-position.ts","../../../apps/web/src/components/ui/message-scroller.tsx","../../../node_modules/.bun/@shadcn+react@0.3.0+03aa47d54245a271/node_modules/@shadcn/react/dist/chunk-HBS6WEDP.js","../../../node_modules/.bun/@shadcn+react@0.3.0+03aa47d54245a271/node_modules/@shadcn/react/dist/message-scroller/index.js","../../../node_modules/.bun/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs","../../../node_modules/.bun/@radix-ui+react-slot@1.3.3+0f58469d5b3bd39f/node_modules/@radix-ui/react-slot/src/slot.tsx","../../../node_modules/.bun/@radix-ui+react-compose-refs@1.1.5+0f58469d5b3bd39f/node_modules/@radix-ui/react-compose-refs/src/compose-refs.tsx","../../../apps/web/src/components/ui/button.tsx","../../../apps/web/src/hooks/use-is-resizing.ts","../../../apps/web/src/lib/message-groups.ts","../../../apps/web/src/components/support-widget/use-stack-shift.ts","../../../apps/web/src/components/support-widget/motion.ts","../../../apps/web/src/components/support-widget/widget-composer.tsx","../src/next-image-shim.tsx","../../../apps/web/src/components/attachments/attachment-draft-chip.tsx","../../../apps/web/src/components/attachments/use-attachment-drafts.ts","../../../apps/web/src/components/attachments/use-attachment-target.ts","../../../apps/web/src/components/support-widget/widget-button.tsx","../../../apps/web/src/components/ui/text-field.ts","../../../apps/web/src/components/ui/textarea.tsx","../../../apps/web/src/hooks/use-typing-signal.ts","../../../apps/web/src/components/brand.tsx","../../../apps/web/src/components/support-widget/widget-badge.tsx","../../../apps/web/src/components/avatar.tsx","../../../apps/web/src/components/initial-badge.tsx","../../../apps/web/src/components/support-widget/widget-avatar.tsx","../../../apps/web/src/components/support-widget/widget-empty.tsx","../../../apps/web/src/components/support-widget/widget-header.tsx","../../../apps/web/src/components/support-widget/widget-loading.tsx","../../../apps/web/src/components/support-widget/widget-locked.tsx","../../../apps/web/src/components/ui/badge.tsx","../../../apps/web/src/components/support-widget/widget-attachments.tsx","../../../apps/web/src/components/ui/morph-bubble.tsx","../../../apps/web/src/components/support-widget/widget-bubble.tsx","../../../apps/web/src/components/ui/message-markdown.tsx","../../../apps/web/src/lib/links.ts","../../../apps/web/src/components/support-widget/widget-message-body.tsx","../../../apps/web/src/components/support-widget/widget-typing.tsx","../../../apps/web/src/components/support-widget/widget-message.tsx","../../../apps/web/src/components/support-widget/widget-rating.tsx","../../../apps/web/src/components/ui/collapse.tsx","../../../apps/web/src/components/support-widget/widget-status.tsx","../../../apps/web/src/components/support-widget/support-widget.tsx","../../../apps/web/src/components/support-widget/use-launcher-drag.ts","../../../apps/web/src/components/support-widget/use-widget-sheet.ts","../../../apps/web/src/components/support-widget/use-page-lock.ts","../../../apps/web/src/components/support-widget/widget-spotlight.tsx","../../../apps/web/src/components/support-widget/widget-toast.tsx","../../../apps/web/src/components/support-widget/sdk/control.ts","../../backend/convex/shared/customData.ts","../../../apps/web/src/components/support-widget/sdk/custom-data.ts","../../../apps/web/src/components/support-widget/sdk/open-store.ts","../../backend/convex/_generated/api.js","../../backend/convex/shared/crashes.ts","../../../apps/web/src/components/support-widget/sdk/report-error.ts","../../../apps/web/src/components/support-widget/sdk/context.ts","../../../apps/web/src/components/support-widget/sdk/deployment.ts","../../backend/convex/shared/diagnostics.ts","../../../apps/web/src/components/support-widget/sdk/diagnostics.ts","../../../apps/web/src/components/support-widget/sdk/install.ts","../../../apps/web/src/components/support-widget/sdk/session.ts","../../../apps/web/src/components/support-widget/sdk/use-median-thread.ts","../../../apps/web/src/hooks/use-now.ts","../../../apps/web/src/lib/errors.ts","../../../apps/web/src/lib/time.ts","../../../apps/web/src/lib/upload.ts","../../../apps/web/src/components/support-widget/sdk/rating-skips.ts","../../../apps/web/src/components/support-widget/sdk/read-state.ts","../../../apps/web/src/components/support-widget/sdk/visitor-email.ts","../../../apps/web/src/components/support-widget/sdk/error-boundary.tsx","../../../node_modules/.bun/cuelume@0.2.2/node_modules/cuelume/dist/sounds/recipes.js","../../../node_modules/.bun/cuelume@0.2.2/node_modules/cuelume/dist/audio/engine.js","../../../apps/web/src/components/support-widget/sdk/use-message-sound.ts","../../../apps/web/src/components/support-widget/sdk/use-navigation.ts","../../../apps/web/src/components/support-widget/sdk/mount.tsx","../../../apps/web/src/components/support-widget/sdk/median-feedback.tsx","../../backend/convex/shared/feedback.ts","../../../apps/web/src/components/support-widget/feedback/feedback-panel.tsx","../../../apps/web/src/components/support-widget/feedback/feedback-popover.tsx","../../../apps/web/src/components/support-widget/use-hydrated.ts","../../../apps/web/src/components/support-widget/feedback/use-anchor.ts","../../../apps/web/src/components/support-widget/sdk/feedback-control.ts","../../../apps/web/src/components/support-widget/sdk/use-feedback-note.ts","../../../apps/web/src/components/support-widget/sdk/mount-feedback.tsx"],"sourcesContent":["function _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}\nexport { _interop_require_wildcard as _ };\n","import type { ParsedUrlQuery } from 'querystring'\n\nexport function searchParamsToUrlQuery(\n searchParams: URLSearchParams\n): ParsedUrlQuery {\n const query: ParsedUrlQuery = {}\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] = [existing, value]\n }\n }\n return query\n}\n\nfunction stringifyUrlQueryParam(param: unknown): string {\n if (typeof param === 'string') {\n return param\n }\n\n if (\n (typeof param === 'number' && !isNaN(param)) ||\n typeof param === 'boolean'\n ) {\n return String(param)\n } else {\n return ''\n }\n}\n\nexport function urlQueryToSearchParams(query: ParsedUrlQuery): URLSearchParams {\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}\n\nexport function assign(\n target: URLSearchParams,\n ...searchParamsList: URLSearchParams[]\n): URLSearchParams {\n for (const searchParams of searchParamsList) {\n for (const key of searchParams.keys()) {\n target.delete(key)\n }\n\n for (const [key, value] of searchParams.entries()) {\n target.append(key, value)\n }\n }\n\n return target\n}\n","// 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\nimport type { UrlObject } from 'url'\nimport type { ParsedUrlQuery } from 'querystring'\nimport * as querystring from './querystring'\n\nconst slashedProtocols = /https?|ftp|gopher|file/\n\nexport function formatUrl(urlObj: UrlObject) {\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: string | false = false\n\n auth = auth ? encodeURIComponent(auth).replace(/%3A/i, ':') + '@' : ''\n\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\n if (query && typeof query === 'object') {\n query = String(querystring.urlQueryToSearchParams(query as ParsedUrlQuery))\n }\n\n let search = urlObj.search || (query && `?${query}`) || ''\n\n if (protocol && !protocol.endsWith(':')) protocol += ':'\n\n if (\n urlObj.slashes ||\n ((!protocol || slashedProtocols.test(protocol)) && host !== false)\n ) {\n host = '//' + (host || '')\n if (pathname && pathname[0] !== '/') pathname = '/' + pathname\n } else if (!host) {\n host = ''\n }\n\n if (hash && hash[0] !== '#') hash = '#' + hash\n if (search && search[0] !== '?') search = '?' + search\n\n pathname = pathname.replace(/[?#]/g, encodeURIComponent)\n search = search.replace('#', '%23')\n\n return `${protocol}${host}${pathname}${search}${hash}`\n}\n\nexport const 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]\n\nexport function formatWithValidation(url: UrlObject): string {\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(\n `Unknown key passed via urlObject into url.format: ${key}`\n )\n }\n })\n }\n }\n\n return formatUrl(url)\n}\n","export function omit<T extends { [key: string]: unknown }, K extends keyof T>(\n object: T,\n keys: K[]\n): Omit<T, K> {\n const omitted: { [key: string]: unknown } = {}\n Object.keys(object).forEach((key) => {\n if (!keys.includes(key as K)) {\n omitted[key] = object[key]\n }\n })\n return omitted as Omit<T, K>\n}\n","import type { HtmlProps } from './html-context.shared-runtime'\nimport type { ComponentType, JSX } from 'react'\nimport type { DomainLocale } from '../../server/config'\nimport type { Env } from '@next/env'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { NextRouter } from './router/router'\nimport type { ParsedUrlQuery } from 'querystring'\nimport type { PreviewData } from '../../types'\nimport type { COMPILER_NAMES } from './constants'\nimport type fs from 'fs'\n\nexport type NextComponentType<\n Context extends BaseContext = NextPageContext,\n InitialProps = {},\n Props = {},\n> = ComponentType<Props> & {\n /**\n * Used for initial page load data population. Data returned from `getInitialProps` is serialized when server rendered.\n * Make sure to return plain `Object` without using `Date`, `Map`, `Set`.\n * @param context Context of `page`\n */\n getInitialProps?(context: Context): InitialProps | Promise<InitialProps>\n}\n\nexport type DocumentType = NextComponentType<\n DocumentContext,\n DocumentInitialProps,\n DocumentProps\n>\n\nexport type AppType<P = {}> = NextComponentType<\n AppContextType,\n P,\n AppPropsType<any, P>\n>\n\nexport type AppTreeType = ComponentType<\n AppInitialProps & { [name: string]: any }\n>\n\n/**\n * Web vitals provided to _app.reportWebVitals by Core Web Vitals plugin developed by Google Chrome team.\n * https://nextjs.org/blog/next-9-4#integrated-web-vitals-reporting\n */\nexport const WEB_VITALS = ['CLS', 'FCP', 'FID', 'INP', 'LCP', 'TTFB'] as const\nexport type NextWebVitalsMetric = {\n id: string\n startTime: number\n value: number\n attribution?: { [key: string]: unknown }\n} & (\n | {\n label: 'web-vital'\n name: (typeof WEB_VITALS)[number]\n }\n | {\n label: 'custom'\n name:\n | 'Next.js-hydration'\n | 'Next.js-route-change-to-render'\n | 'Next.js-render'\n }\n)\n\nexport type Enhancer<C> = (Component: C) => C\n\nexport type ComponentsEnhancer =\n | {\n enhanceApp?: Enhancer<AppType>\n enhanceComponent?: Enhancer<NextComponentType>\n }\n | Enhancer<NextComponentType>\n\nexport type RenderPageResult = {\n html: string\n head?: Array<JSX.Element | null>\n}\n\nexport type RenderPage = (\n options?: ComponentsEnhancer\n) => DocumentInitialProps | Promise<DocumentInitialProps>\n\nexport type BaseContext = {\n res?: ServerResponse\n [k: string]: any\n}\n\nexport type NEXT_DATA = {\n props: Record<string, any>\n page: string\n query: ParsedUrlQuery\n buildId: string\n assetPrefix?: string\n nextExport?: boolean\n autoExport?: boolean\n isFallback?: boolean\n isExperimentalCompile?: boolean\n dynamicIds?: (string | number)[]\n err?: Error & {\n statusCode?: number\n source?: typeof COMPILER_NAMES.server | typeof COMPILER_NAMES.edgeServer\n __NEXT_ERROR_CODE?: string\n }\n gsp?: boolean\n gssp?: boolean\n customServer?: boolean\n gip?: boolean\n appGip?: boolean\n locale?: string\n locales?: readonly string[]\n defaultLocale?: string\n domainLocales?: readonly DomainLocale[]\n scriptLoader?: any[]\n isPreview?: boolean\n notFoundSrcPage?: string\n}\n\n/**\n * `Next` context\n */\nexport interface NextPageContext {\n /**\n * Error object if encountered during rendering\n */\n err?: (Error & { statusCode?: number }) | null\n /**\n * `HTTP` request object.\n */\n req?: IncomingMessage\n /**\n * `HTTP` response object.\n */\n res?: ServerResponse\n /**\n * Path section of `URL`.\n */\n pathname: string\n /**\n * Query string section of `URL` parsed as an object.\n */\n query: ParsedUrlQuery\n /**\n * `String` of the actual path including query.\n */\n asPath?: string\n /**\n * The currently active locale\n */\n locale?: string\n /**\n * All configured locales\n */\n locales?: readonly string[]\n /**\n * The configured default locale\n */\n defaultLocale?: string\n /**\n * `Component` the tree of the App to use if needing to render separately\n */\n AppTree: AppTreeType\n}\n\nexport type AppContextType<Router extends NextRouter = NextRouter> = {\n Component: NextComponentType<NextPageContext>\n AppTree: AppTreeType\n ctx: NextPageContext\n router: Router\n}\n\nexport type AppInitialProps<PageProps = any> = {\n pageProps: PageProps\n}\n\nexport type AppPropsType<\n Router extends NextRouter = NextRouter,\n PageProps = {},\n> = AppInitialProps<PageProps> & {\n Component: NextComponentType<NextPageContext, any, any>\n router: Router\n __N_SSG?: boolean\n __N_SSP?: boolean\n}\n\nexport type DocumentContext = NextPageContext & {\n renderPage: RenderPage\n defaultGetInitialProps(\n ctx: DocumentContext,\n options?: { nonce?: string }\n ): Promise<DocumentInitialProps>\n}\n\nexport type DocumentInitialProps = RenderPageResult & {\n styles?: React.ReactElement[] | Iterable<React.ReactNode> | JSX.Element\n}\n\nexport type DocumentProps = DocumentInitialProps & HtmlProps\n\n/**\n * Next `API` route request\n */\nexport interface NextApiRequest extends IncomingMessage {\n /**\n * Object of `query` values from url\n */\n query: Partial<{\n [key: string]: string | string[]\n }>\n /**\n * Object of `cookies` from header\n */\n cookies: Partial<{\n [key: string]: string\n }>\n\n body: any\n\n env: Env\n\n draftMode?: boolean\n\n preview?: boolean\n /**\n * Preview data set on the request, if any\n * */\n previewData?: PreviewData\n}\n\n/**\n * Send body of response\n */\ntype Send<T> = (body: T) => void\n\n/**\n * Next `API` route response\n */\nexport type NextApiResponse<Data = any> = ServerResponse & {\n /**\n * Send data `any` data in response\n */\n send: Send<Data>\n /**\n * Send data `json` data in response\n */\n json: Send<Data>\n status: (statusCode: number) => NextApiResponse<Data>\n redirect(url: string): NextApiResponse<Data>\n redirect(status: number, url: string): NextApiResponse<Data>\n\n /**\n * Set draft mode\n */\n setDraftMode: (options: { enable: boolean }) => NextApiResponse<Data>\n\n /**\n * Set preview data for Next.js' prerender mode\n */\n setPreviewData: (\n data: object | string,\n options?: {\n /**\n * Specifies the number (in seconds) for the preview session to last for.\n * The given number will be converted to an integer by rounding down.\n * By default, no maximum age is set and the preview session finishes\n * when the client shuts down (browser is closed).\n */\n maxAge?: number\n /**\n * Specifies the path for the preview session to work under. By default,\n * the path is considered the \"default path\", i.e., any pages under \"/\".\n */\n path?: string\n }\n ) => NextApiResponse<Data>\n\n /**\n * Clear preview data for Next.js' prerender mode\n */\n clearPreviewData: (options?: { path?: string }) => NextApiResponse<Data>\n\n /**\n * Revalidate a specific page and regenerate it using On-Demand Incremental\n * Static Regeneration.\n * The path should be an actual path, not a rewritten path. E.g. for\n * \"/blog/[slug]\" this should be \"/blog/post-1\".\n * @link https://nextjs.org/docs/app/building-your-application/data-fetching/incremental-static-regeneration#on-demand-revalidation-with-revalidatepath\n */\n revalidate: (\n urlPath: string,\n opts?: {\n unstable_onlyGenerated?: boolean\n }\n ) => Promise<void>\n}\n\n/**\n * Next `API` route handler\n */\nexport type NextApiHandler<T = any> = (\n req: NextApiRequest,\n res: NextApiResponse<T>\n) => unknown | Promise<unknown>\n\n/**\n * Utils\n */\nexport function execOnce<T extends (...args: any[]) => ReturnType<T>>(\n fn: T\n): T {\n let used = false\n let result: ReturnType<T>\n\n return ((...args: any[]) => {\n if (!used) {\n used = true\n result = fn(...args)\n }\n return result\n }) as T\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+\\-.]*?:/\nexport const isAbsoluteUrl = (url: string) => {\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 =\n (c >= 65 /* A */ && c <= 90) /* Z */ ||\n (c >= 97 /* a */ && c <= 122) /* z */\n if (!isLetter) {\n return false\n }\n\n return ABSOLUTE_URL_REGEX.test(url)\n}\n\nexport function getLocationOrigin() {\n const { protocol, hostname, port } = window.location\n return `${protocol}//${hostname}${port ? ':' + port : ''}`\n}\n\nexport function getURL() {\n const { href } = window.location\n const origin = getLocationOrigin()\n return href.substring(origin.length)\n}\n\nexport function getDisplayName<P>(Component: ComponentType<P>) {\n return typeof Component === 'string'\n ? Component\n : Component.displayName || Component.name || 'Unknown'\n}\n\nexport function isResSent(res: ServerResponse) {\n return res.finished || res.headersSent\n}\n\nexport function normalizeRepeatedSlashes(url: string) {\n const urlParts = url.split('?')\n const urlNoQuery = urlParts[0]\n\n return (\n urlNoQuery\n // first we replace any non-encoded backslashes with forward\n // then normalize repeated forward slashes\n .replace(/\\\\/g, '/')\n .replace(/\\/\\/+/g, '/') +\n (urlParts[1] ? `?${urlParts.slice(1).join('?')}` : '')\n )\n}\n\nexport async function loadGetInitialProps<\n C extends BaseContext,\n IP = {},\n P = {},\n>(App: NextComponentType<C, IP, P>, ctx: C): Promise<IP> {\n if (process.env.NODE_ENV !== 'production') {\n if (App.prototype?.getInitialProps) {\n const message = `\"${getDisplayName(\n App\n )}.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\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 {} as IP\n }\n\n const props = await App.getInitialProps(ctx)\n\n if (res && isResSent(res)) {\n return props\n }\n\n if (!props) {\n const message = `\"${getDisplayName(\n App\n )}.getInitialProps()\" should resolve to an object. But found \"${props}\" instead.`\n throw new Error(message)\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (Object.keys(props).length === 0 && !ctx.ctx) {\n console.warn(\n `${getDisplayName(\n App\n )} 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 }\n\n return props\n}\n\nexport const SP = typeof performance !== 'undefined'\nexport const ST =\n SP &&\n (['mark', 'measure', 'getEntriesByName'] as const).every(\n (method) => typeof performance[method] === 'function'\n )\n\nexport class DecodeError extends Error {}\nexport class NormalizeError extends Error {}\nexport class PageNotFoundError extends Error {\n code: string\n\n constructor(page: string) {\n super()\n this.code = 'ENOENT'\n this.name = 'PageNotFoundError'\n this.message = `Cannot find module for page: ${page}`\n }\n}\n\nexport class MissingStaticPage extends Error {\n constructor(page: string, message: string) {\n super()\n this.message = `Failed to load static file for page: ${page} ${message}`\n }\n}\n\nexport class MiddlewareNotFoundError extends Error {\n code: string\n constructor() {\n super()\n this.code = 'ENOENT'\n this.message = `Cannot find the middleware module`\n }\n}\n\nexport interface CacheFs {\n existsSync: typeof fs.existsSync\n readFile: typeof fs.promises.readFile\n readFileSync: typeof fs.readFileSync\n writeFile(f: string, d: any): Promise<void>\n mkdir(dir: string): Promise<void | string>\n stat(f: string): Promise<{ mtime: Date }>\n}\n\nexport function stringifyError(error: Error) {\n return JSON.stringify({ message: error.message, stack: error.stack })\n}\n","/**\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 */\nexport function removeTrailingSlash(route: string) {\n return route.charCodeAt(route.length - 1) === 47 && route.length > 1\n ? route.slice(0, -1)\n : route\n}\n","/**\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 */\nexport function parsePath(path: string) {\n const hashIndex = path.indexOf('#')\n const queryIndex = path.indexOf('?')\n const hasQuery = queryIndex > -1 && (hashIndex < 0 || queryIndex < hashIndex)\n\n if (hasQuery || hashIndex > -1) {\n return {\n pathname: path.substring(0, hasQuery ? queryIndex : hashIndex),\n query: hasQuery\n ? path.substring(queryIndex, hashIndex > -1 ? hashIndex : undefined)\n : '',\n hash: hashIndex > -1 ? path.slice(hashIndex) : '',\n }\n }\n\n return { pathname: path, query: '', hash: '' }\n}\n","import { removeTrailingSlash } from '../shared/lib/router/utils/remove-trailing-slash'\nimport { parsePath } from '../shared/lib/router/utils/parse-path'\n\n/**\n * Normalizes the trailing slash of a path according to the `trailingSlash` option\n * in `next.config.js`.\n */\nexport const normalizePathTrailingSlash = (path: string) => {\n // 47 is the char code for '/'\n if (path.charCodeAt(0) !== 47 || process.env.__NEXT_MANUAL_TRAILING_SLASH) {\n return path\n }\n\n const { pathname, query, hash } = parsePath(path)\n if (process.env.__NEXT_TRAILING_SLASH) {\n if (/\\.[^/]+\\/?$/.test(pathname)) {\n return `${removeTrailingSlash(pathname)}${query}${hash}`\n } else if (pathname.endsWith('/')) {\n return `${pathname}${query}${hash}`\n } else {\n return `${pathname}/${query}${hash}`\n }\n }\n\n return `${removeTrailingSlash(pathname)}${query}${hash}`\n}\n","import { parsePath } from './parse-path'\n\n/**\n * Checks if a given path starts with a given prefix. It ensures it matches\n * exactly without containing extra chars. e.g. prefix /docs should replace\n * for /docs, /docs/, /docs/a but not /docsss\n * @param path The path to check.\n * @param prefix The prefix to check against.\n */\nexport function pathHasPrefix(path: string, prefix: string) {\n if (typeof path !== 'string') {\n return false\n }\n\n const { pathname } = parsePath(path)\n return pathname === prefix || pathname.startsWith(prefix + '/')\n}\n","import { pathHasPrefix } from '../shared/lib/router/utils/path-has-prefix'\n\nconst basePath = (process.env.__NEXT_ROUTER_BASEPATH as string) || ''\n\nexport function hasBasePath(path: string): boolean {\n return pathHasPrefix(path, basePath)\n}\n","import { isAbsoluteUrl, getLocationOrigin } from '../../utils'\nimport { hasBasePath } from '../../../../client/has-base-path'\n\n/**\n * Detects whether a given url is routable by the Next.js router (browser only).\n */\nexport function isLocalURL(url: string): boolean {\n // prevent a hydration mismatch on href for url with anchor refs\n if (!isAbsoluteUrl(url)) return true\n try {\n // absolute urls can be local if they are on the same origin\n const locationOrigin = getLocationOrigin()\n const resolved = new URL(url, locationOrigin)\n return resolved.origin === locationOrigin && hasBasePath(resolved.pathname)\n } catch (_) {\n return false\n }\n}\n","class UrlNode {\n placeholder: boolean = true\n children: Map<string, UrlNode> = new Map()\n slugName: string | null = null\n restSlugName: string | null = null\n optionalRestSlugName: string | null = null\n\n insert(urlPath: string): void {\n this._insert(urlPath.split('/').filter(Boolean), [], false)\n }\n\n smoosh(): string[] {\n return this._smoosh()\n }\n\n private _smoosh(prefix: string = '/'): string[] {\n const childrenPaths = [...this.children.keys()].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\n const routes = childrenPaths\n .map((c) => this.children.get(c)!._smoosh(`${prefix}${c}/`))\n .reduce((prev, curr) => [...prev, ...curr], [])\n\n if (this.slugName !== null) {\n routes.push(\n ...this.children.get('[]')!._smoosh(`${prefix}[${this.slugName}]/`)\n )\n }\n\n if (!this.placeholder) {\n const r = prefix === '/' ? '/' : prefix.slice(0, -1)\n if (this.optionalRestSlugName != null) {\n throw new Error(\n `You cannot define a route with the same specificity as a optional catch-all route (\"${r}\" and \"${r}[[...${this.optionalRestSlugName}]]\").`\n )\n }\n\n routes.unshift(r)\n }\n\n if (this.restSlugName !== null) {\n routes.push(\n ...this.children\n .get('[...]')!\n ._smoosh(`${prefix}[...${this.restSlugName}]/`)\n )\n }\n\n if (this.optionalRestSlugName !== null) {\n routes.push(\n ...this.children\n .get('[[...]]')!\n ._smoosh(`${prefix}[[...${this.optionalRestSlugName}]]/`)\n )\n }\n\n return routes\n }\n\n private _insert(\n urlPaths: string[],\n slugNames: string[],\n isCatchAll: boolean\n ): void {\n if (urlPaths.length === 0) {\n this.placeholder = false\n return\n }\n\n if (isCatchAll) {\n throw new Error(`Catch-all must be the last part of the URL.`)\n }\n\n // The next segment in the urlPaths list\n let nextSegment = urlPaths[0]\n\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\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\n if (segmentName.startsWith('…')) {\n throw new Error(\n `Detected a three-dot character ('…') at ('${segmentName}'). Did you mean ('...')?`\n )\n }\n\n if (segmentName.startsWith('...')) {\n // Strip `...`, leaving only `something`\n segmentName = segmentName.substring(3)\n isCatchAll = true\n }\n\n if (segmentName.startsWith('[') || segmentName.endsWith(']')) {\n throw new Error(\n `Segment names may not start or end with extra brackets ('${segmentName}').`\n )\n }\n\n if (segmentName.startsWith('.')) {\n throw new Error(\n `Segment names may not start with erroneous periods ('${segmentName}').`\n )\n }\n\n function handleSlug(previousSlug: string | null, nextSlug: string) {\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(\n `You cannot use different slug names for the same dynamic path ('${previousSlug}' !== '${nextSlug}').`\n )\n }\n }\n\n slugNames.forEach((slug) => {\n if (slug === nextSlug) {\n throw new Error(\n `You cannot have the same slug name \"${nextSlug}\" repeat within a single dynamic path`\n )\n }\n\n if (slug.replace(/\\W/g, '') === nextSegment.replace(/\\W/g, '')) {\n throw new Error(\n `You cannot have the slug names \"${slug}\" and \"${nextSlug}\" differ only by non-word symbols within a single dynamic path`\n )\n }\n })\n\n slugNames.push(nextSlug)\n }\n\n if (isCatchAll) {\n if (isOptional) {\n if (this.restSlugName != null) {\n throw new Error(\n `You cannot use both an required and optional catch-all route at the same level (\"[...${this.restSlugName}]\" and \"${urlPaths[0]}\" ).`\n )\n }\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(\n `You cannot use both an optional and required catch-all route at the same level (\"[[...${this.optionalRestSlugName}]]\" and \"${urlPaths[0]}\").`\n )\n }\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(\n `Optional route parameters are not yet supported (\"${urlPaths[0]}\").`\n )\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\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\n this.children\n .get(nextSegment)!\n ._insert(urlPaths.slice(1), slugNames, isCatchAll)\n }\n}\n\n/**\n * @deprecated Use `sortSortableRoutes` or `sortPages` instead.\n */\nexport function getSortedRoutes(\n normalizedPages: ReadonlyArray<string>\n): string[] {\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\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\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}\n\n/**\n * @deprecated Use `sortSortableRouteObjects` or `sortPageObjects` instead.\n */\nexport function getSortedRouteObjects<T>(\n objects: T[],\n getter: (obj: T) => string\n): T[] {\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: Record<string, number> = {}\n const pathnames: string[] = []\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\n // Sort the pathnames.\n const sorted = getSortedRoutes(pathnames)\n\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 * 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 */\nexport function ensureLeadingSlash(path: string) {\n return path.startsWith('/') ? path : `/${path}`\n}\n","import type { FlightRouterState, Segment } from './app-router-types'\n\nexport function getSegmentValue(segment: Segment) {\n return Array.isArray(segment) ? segment[1] : segment\n}\n\nexport function isGroupSegment(segment: string) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')')\n}\n\nexport function isParallelRouteSegment(segment: string) {\n return segment.startsWith('@') && segment !== '@children'\n}\n\nexport function addSearchParamsIfPageSegment(\n segment: Segment,\n searchParams: Record<string, string | string[] | undefined>\n) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY)\n\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams)\n return stringifiedQuery !== '{}'\n ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery\n : PAGE_SEGMENT_KEY\n }\n\n return segment\n}\n\nexport function computeSelectedLayoutSegment(\n segments: string[] | null,\n parallelRouteKey: string\n): string | null {\n if (!segments || segments.length === 0) {\n return null\n }\n\n // For 'children', use first segment; for other parallel routes, use last segment\n const rawSegment =\n parallelRouteKey === 'children'\n ? segments[0]\n : segments[segments.length - 1]\n\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}\n\n/** Get the canonical parameters from the current level to the leaf node. */\nexport function getSelectedLayoutSegmentPath(\n tree: FlightRouterState,\n parallelRouteKey: string,\n first = true,\n segmentPath: string[] = []\n): string[] {\n let node: FlightRouterState\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\n if (!node) return segmentPath\n const segment = node[0]\n\n let segmentValue = getSegmentValue(segment)\n\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) {\n return segmentPath\n }\n\n segmentPath.push(segmentValue)\n\n return getSelectedLayoutSegmentPath(\n node,\n parallelRouteKey,\n false,\n segmentPath\n )\n}\n\nexport const PAGE_SEGMENT_KEY = '__PAGE__'\nexport const DEFAULT_SEGMENT_KEY = '__DEFAULT__'\nexport const NOT_FOUND_SEGMENT_KEY = '/_not-found'\n","import { ensureLeadingSlash } from '../../page-path/ensure-leading-slash'\nimport { isGroupSegment } from '../../segment'\n\n/**\n * Normalizes an app route so it represents the actual request path. Essentially\n * performing the following transformations:\n *\n * - `/(dashboard)/user/[id]/page` to `/user/[id]`\n * - `/(dashboard)/account/page` to `/account`\n * - `/user/[id]/page` to `/user/[id]`\n * - `/account/page` to `/account`\n * - `/page` to `/`\n * - `/(dashboard)/user/[id]/route` to `/user/[id]`\n * - `/(dashboard)/account/route` to `/account`\n * - `/user/[id]/route` to `/user/[id]`\n * - `/account/route` to `/account`\n * - `/route` to `/`\n * - `/` to `/`\n *\n * @param route the app route to normalize\n * @returns the normalized pathname\n */\nexport function normalizeAppPath(route: string) {\n return ensureLeadingSlash(\n route.split('/').reduce((pathname, segment, index, segments) => {\n // Empty segments are ignored.\n if (!segment) {\n return pathname\n }\n\n // Groups are ignored.\n if (isGroupSegment(segment)) {\n return pathname\n }\n\n // Parallel segments are ignored.\n if (segment[0] === '@') {\n return pathname\n }\n\n // The last segment (if it's a leaf) should be ignored.\n if (\n (segment === 'page' || segment === 'route') &&\n index === segments.length - 1\n ) {\n return pathname\n }\n\n return `${pathname}/${segment}`\n }, '')\n )\n}\n\n/**\n * Comparator for sorting app paths so that parallel slot paths (containing\n * `/@`) come before the children/root page path. This ensures the last item\n * is always the children page, which is what `renderPageComponent` reads via\n * `appPaths[appPaths.length - 1]`.\n *\n * Without this, route group prefixes like `(group)` (char code 0x28) sort\n * before `@` (0x40), causing the children page to sort first instead of last\n * and leading to a manifest mismatch / 404 in webpack dev mode.\n */\nexport function compareAppPaths(a: string, b: string): number {\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}\n\n/**\n * Strips the `.rsc` extension if it's in the pathname.\n * Since this function is used on full urls it checks `?` for searchParams handling.\n */\nexport function normalizeRscURL(url: string) {\n return url.replace(\n /\\.rsc($|\\?)/,\n // $1 ensures `?` is preserved\n '$1'\n )\n}\n","import { normalizeAppPath } from './app-paths'\n\n// order matters here, the first match will be used\nexport const INTERCEPTION_ROUTE_MARKERS = [\n '(..)(..)',\n '(.)',\n '(..)',\n '(...)',\n] as const\n\nexport type InterceptionMarker = (typeof INTERCEPTION_ROUTE_MARKERS)[number]\n\nexport function isInterceptionRouteAppPath(path: string): boolean {\n // TODO-APP: add more serious validation\n return (\n path\n .split('/')\n .find((segment) =>\n INTERCEPTION_ROUTE_MARKERS.find((m) => segment.startsWith(m))\n ) !== undefined\n )\n}\n\ntype InterceptionRouteInformation = {\n /**\n * The intercepting route. This is the route that is being intercepted or the\n * route that the user was coming from. This is matched by the Next-Url\n * header.\n */\n interceptingRoute: string\n\n /**\n * The intercepted route. This is the route that is being intercepted or the\n * route that the user is going to. This is matched by the request pathname.\n */\n interceptedRoute: string\n}\n\nexport function extractInterceptionRouteInformation(\n path: string\n): InterceptionRouteInformation {\n let interceptingRoute: string | undefined\n let marker: (typeof INTERCEPTION_ROUTE_MARKERS)[number] | undefined\n let interceptedRoute: string | undefined\n\n for (const segment of path.split('/')) {\n marker = INTERCEPTION_ROUTE_MARKERS.find((m) => segment.startsWith(m))\n if (marker) {\n ;[interceptingRoute, interceptedRoute] = path.split(marker, 2)\n break\n }\n }\n\n if (!interceptingRoute || !marker || !interceptedRoute) {\n throw new Error(\n `Invalid interception route: ${path}. Must be in the format /<intercepting route>/(..|...|..)(..)/<intercepted route>`\n )\n }\n\n interceptingRoute = 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(\n `Invalid interception route: ${path}. Cannot use (..) marker at the root level, use (.) instead.`\n )\n }\n interceptedRoute = interceptingRoute\n .split('/')\n .slice(0, -1)\n .concat(interceptedRoute)\n .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\n const splitInterceptingRoute = interceptingRoute.split('/')\n if (splitInterceptingRoute.length <= 2) {\n throw new Error(\n `Invalid interception route: ${path}. Cannot use (..)(..) marker at the root level or one level up.`\n )\n }\n\n interceptedRoute = splitInterceptingRoute\n .slice(0, -2)\n .concat(interceptedRoute)\n .join('/')\n break\n default:\n throw new Error('Invariant: unexpected marker')\n }\n\n return { interceptingRoute, interceptedRoute }\n}\n","import {\n extractInterceptionRouteInformation,\n isInterceptionRouteAppPath,\n} from './interception-routes'\n\n// Identify /.*[param].*/ in route string\nconst TEST_ROUTE = /\\/[^/]*\\[[^/]+\\][^/]*(?=\\/|$)/\n\n// Identify /[param]/ in route string\nconst TEST_STRICT_ROUTE = /\\/\\[[^/]+\\](?=\\/|$)/\n\n/**\n * Check if a route is dynamic.\n *\n * @param route - The route to check.\n * @param strict - Whether to use strict mode which prohibits segments with prefixes/suffixes (default: true).\n * @returns Whether the route is dynamic.\n */\nexport function isDynamicRoute(route: string, strict: boolean = true): boolean {\n if (isInterceptionRouteAppPath(route)) {\n route = extractInterceptionRouteInformation(route).interceptedRoute\n }\n\n if (strict) {\n return TEST_STRICT_ROUTE.test(route)\n }\n\n return TEST_ROUTE.test(route)\n}\n","export { getSortedRoutes, getSortedRouteObjects } from './sorted-routes'\nexport { isDynamicRoute } from './is-dynamic'\n","(()=>{\"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})();","import type { Token } from 'next/dist/compiled/path-to-regexp'\n\n/**\n * Route pattern normalization utilities for path-to-regexp compatibility.\n *\n * path-to-regexp 6.3.0+ introduced stricter validation that rejects certain\n * patterns commonly used in Next.js interception routes. This module provides\n * normalization functions to make Next.js route patterns compatible with the\n * updated library while preserving all functionality.\n */\n\n/**\n * Internal separator used to normalize adjacent parameter patterns.\n * This unique marker is inserted between adjacent parameters and stripped out\n * during parameter extraction to avoid conflicts with real URL content.\n */\nexport const PARAM_SEPARATOR = '_NEXTSEP_'\n\n/**\n * Detects if a route pattern needs normalization for path-to-regexp compatibility.\n */\nexport function hasAdjacentParameterIssues(route: string): boolean {\n if (typeof route !== 'string') return false\n\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\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\n return false\n}\n\n/**\n * Normalizes route patterns that have adjacent parameters without text between them.\n * Inserts a unique separator that can be safely stripped out later.\n */\nexport function normalizeAdjacentParameters(route: string): string {\n let normalized = route\n\n // Handle interception route patterns: (.):param -> (.)_NEXTSEP_:param\n normalized = normalized.replace(\n /(\\([^)]*\\)):([^/\\s]+)/g,\n `$1${PARAM_SEPARATOR}:$2`\n )\n\n // Handle other adjacent parameter patterns: :param1:param2 -> :param1_NEXTSEP_:param2\n normalized = normalized.replace(/:([^:/\\s)]+)(?=:)/g, `:$1${PARAM_SEPARATOR}`)\n\n return normalized\n}\n\n/**\n * Normalizes tokens that have repeating modifiers (* or +) but empty prefix and suffix.\n *\n * path-to-regexp 6.3.0+ introduced validation that throws:\n * \"Can not repeat without prefix/suffix\"\n *\n * This occurs when a token has modifier: '*' or '+' with both prefix: '' and suffix: ''\n */\nexport function normalizeTokensForRegexp(tokens: Token[]): Token[] {\n return tokens.map((token) => {\n // Token union type: Token = string | TokenObject\n // Literal path segments are strings, parameters/wildcards are objects\n if (\n typeof token === 'object' &&\n token !== null &&\n // Not all token objects have 'modifier' property (e.g., simple text tokens)\n 'modifier' in token &&\n // Only repeating modifiers (* or +) cause the validation error\n // Other modifiers like '?' (optional) are fine\n (token.modifier === '*' || token.modifier === '+') &&\n // Token objects can have different shapes depending on route pattern\n 'prefix' in token &&\n 'suffix' in token &&\n // Both prefix and suffix must be empty strings\n // This is what causes the validation error in path-to-regexp\n token.prefix === '' &&\n token.suffix === ''\n ) {\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}\n\n/**\n * Strips normalization separators from compiled pathname.\n * This removes separators that were inserted by normalizeAdjacentParameters\n * to satisfy path-to-regexp validation.\n *\n * Only removes separators in the specific contexts where they were inserted:\n * - After interception route markers: (.)_NEXTSEP_ -> (.)\n *\n * This targeted approach ensures we don't accidentally remove the separator\n * from legitimate user content.\n */\nexport function stripNormalizedSeparators(pathname: string): string {\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}\n\n/**\n * Strips normalization separators from extracted route parameters.\n * Used by both server and client code to clean up parameters after route matching.\n */\nexport function stripParameterSeparators(\n params: Record<string, any>\n): Record<string, any> {\n const cleaned: Record<string, any> = {}\n\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) =>\n typeof item === 'string'\n ? item.replace(new RegExp(`^${PARAM_SEPARATOR}`), '')\n : item\n )\n } else {\n cleaned[key] = value\n }\n }\n\n return cleaned\n}\n","/**\n * Client-safe utilities for route matching that don't import server-side\n * utilities to avoid bundling issues with Turbopack\n */\n\nimport type {\n Key,\n TokensToRegexpOptions,\n ParseOptions,\n TokensToFunctionOptions,\n} from 'next/dist/compiled/path-to-regexp'\nimport {\n pathToRegexp,\n compile,\n regexpToFunction,\n} from 'next/dist/compiled/path-to-regexp'\nimport {\n hasAdjacentParameterIssues,\n normalizeAdjacentParameters,\n stripParameterSeparators,\n stripNormalizedSeparators,\n} from '../../../../lib/route-pattern-normalizer'\n\n/**\n * Client-safe wrapper around pathToRegexp that handles path-to-regexp 6.3.0+ validation errors.\n * This includes both \"Can not repeat without prefix/suffix\" and \"Must have text between parameters\" errors.\n */\nexport function safePathToRegexp(\n route: string | RegExp | Array<string | RegExp>,\n keys?: Key[],\n options?: TokensToRegexpOptions & ParseOptions\n): RegExp {\n if (typeof route !== 'string') {\n return pathToRegexp(route, keys, options)\n }\n\n // Check if normalization is needed and cache the result\n const needsNormalization = hasAdjacentParameterIssues(route)\n const routeToUse = needsNormalization\n ? normalizeAdjacentParameters(route)\n : route\n\n try {\n return 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 = normalizeAdjacentParameters(route)\n return 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}\n\n/**\n * Client-safe wrapper around compile that handles path-to-regexp 6.3.0+ validation errors.\n * No server-side error reporting to avoid bundling issues.\n * When normalization is applied, the returned compiler function automatically strips\n * the internal separator from the output URL.\n */\nexport function safeCompile(\n route: string,\n options?: TokensToFunctionOptions & ParseOptions\n) {\n // Check if normalization is needed and cache the result\n const needsNormalization = hasAdjacentParameterIssues(route)\n const routeToUse = needsNormalization\n ? normalizeAdjacentParameters(route)\n : route\n\n try {\n const compiler = compile(routeToUse, options)\n\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: any) => {\n return stripNormalizedSeparators(compiler(params))\n }\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 = normalizeAdjacentParameters(route)\n const compiler = compile(normalizedRoute, options)\n\n // Wrap the compiler to strip separators from output\n return (params: any) => {\n return 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}\n\n/**\n * Client-safe wrapper around regexpToFunction that automatically cleans parameters.\n */\nexport function safeRegexpToFunction<\n T extends Record<string, any> = Record<string, any>,\n>(regexp: RegExp, keys?: Key[]): (pathname: string) => { params: T } | false {\n const originalMatcher = regexpToFunction<T>(regexp, keys || [])\n\n return (pathname: string) => {\n const result = originalMatcher(pathname)\n if (!result) return false\n\n // Clean parameters before returning\n return {\n ...result,\n params: stripParameterSeparators(result.params as any) as T,\n }\n }\n}\n\n/**\n * Safe wrapper for route matcher functions that automatically cleans parameters.\n * This is client-safe and doesn't import path-to-regexp.\n */\nexport function safeRouteMatcher<T extends Record<string, any>>(\n matcherFn: (pathname: string) => false | T\n): (pathname: string) => false | T {\n return (pathname: string) => {\n const result = matcherFn(pathname)\n if (!result) return false\n\n // Clean parameters before returning\n return stripParameterSeparators(result) as T\n }\n}\n","import type { Group } from './route-regex'\nimport { DecodeError } from '../../utils'\nimport type { Params } from '../../../../server/request/params'\nimport { safeRouteMatcher } from './route-match-utils'\n\nexport interface RouteMatchFn {\n (pathname: string): false | Params\n}\n\ntype RouteMatcherOptions = {\n // We only use the exec method of the RegExp object. This helps us avoid using\n // type assertions that the passed in properties are of the correct type.\n re: Pick<RegExp, 'exec'>\n groups: Record<string, Group>\n}\n\nexport function getRouteMatcher({\n re,\n groups,\n}: RouteMatcherOptions): RouteMatchFn {\n const rawMatcher = (pathname: string) => {\n const routeMatch = re.exec(pathname)\n if (!routeMatch) return false\n\n const decode = (param: string) => {\n try {\n return decodeURIComponent(param)\n } catch {\n throw new DecodeError('failed to decode param')\n }\n }\n\n const params: 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\n return params\n }\n\n // Wrap with safe matcher to handle parameter cleaning\n return safeRouteMatcher(rawMatcher)\n}\n","import type { ServerRuntime } from '../types'\n\nexport const TEXT_PLAIN_CONTENT_TYPE_HEADER = 'text/plain'\nexport const HTML_CONTENT_TYPE_HEADER = 'text/html; charset=utf-8'\nexport const JSON_CONTENT_TYPE_HEADER = 'application/json; charset=utf-8'\nexport const NEXT_QUERY_PARAM_PREFIX = 'nxtP'\nexport const NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI'\n\nexport const MATCHED_PATH_HEADER = 'x-matched-path'\nexport const PRERENDER_REVALIDATE_HEADER = 'x-prerender-revalidate'\nexport const PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER =\n 'x-prerender-revalidate-if-generated'\n\nexport const RSC_SEGMENTS_DIR_SUFFIX = '.segments'\nexport const RSC_SEGMENT_SUFFIX = '.segment.rsc'\nexport const RSC_SUFFIX = '.rsc'\nexport const ACTION_SUFFIX = '.action'\nexport const NEXT_DATA_SUFFIX = '.json'\nexport const NEXT_META_SUFFIX = '.meta'\nexport const NEXT_BODY_SUFFIX = '.body'\n\nexport const NEXT_NAV_DEPLOYMENT_ID_HEADER = 'x-nextjs-deployment-id'\n\nexport const NEXT_CACHE_TAGS_HEADER = 'x-next-cache-tags'\nexport const NEXT_CACHE_REVALIDATED_TAGS_HEADER = 'x-next-revalidated-tags'\nexport const NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER =\n 'x-next-revalidate-tag-token'\n\nexport const NEXT_RESUME_HEADER = 'next-resume'\nexport const NEXT_RESUME_STATE_LENGTH_HEADER = 'x-next-resume-state-length'\n\n// if these change make sure we update the related\n// documentation as well\nexport const NEXT_CACHE_TAG_MAX_ITEMS = 128\nexport const NEXT_CACHE_TAG_MAX_LENGTH = 256\nexport const NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024\nexport const NEXT_CACHE_IMPLICIT_TAG_ID = '_N_T_'\nexport const NEXT_CACHE_ROOT_PARAM_TAG_ID = '_N_RP_'\n\n// in seconds\nexport const CACHE_ONE_YEAR_SECONDS = 31536000\n\n// in seconds, represents revalidate=false. I.e. never revaliate.\n// We use this value since it can be represented as a V8 SMI for optimal performance.\n// It can also be serialized as JSON if it ever leaks accidentally as an actual value.\nexport const INFINITE_CACHE = 0xfffffffe\n\n// Patterns to detect middleware files\nexport const MIDDLEWARE_FILENAME = 'middleware'\nexport const MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`\n\n// Patterns to detect proxy files (replacement for middleware)\nexport const PROXY_FILENAME = 'proxy'\nexport const PROXY_LOCATION_REGEXP = `(?:src/)?${PROXY_FILENAME}`\n\n// Pattern to detect instrumentation hooks file\nexport const INSTRUMENTATION_HOOK_FILENAME = 'instrumentation'\n\n// Because on Windows absolute paths in the generated code can break because of numbers, eg 1 in the path,\n// we have to use a private alias\nexport const PAGES_DIR_ALIAS = 'private-next-pages'\nexport const DOT_NEXT_ALIAS = 'private-dot-next'\nexport const ROOT_DIR_ALIAS = 'private-next-root-dir'\nexport const APP_DIR_ALIAS = 'private-next-app-dir'\nexport const RSC_MOD_REF_PROXY_ALIAS = 'private-next-rsc-mod-ref-proxy'\nexport const RSC_ACTION_VALIDATE_ALIAS = 'private-next-rsc-action-validate'\nexport const RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference'\nexport const RSC_CACHE_WRAPPER_ALIAS = 'private-next-rsc-cache-wrapper'\nexport const RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS =\n 'private-next-rsc-track-dynamic-import'\nexport const RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption'\nexport const RSC_ACTION_CLIENT_WRAPPER_ALIAS =\n 'private-next-rsc-action-client-wrapper'\n\nexport const 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`\n\nexport const SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`\n\nexport const SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`\n\nexport const SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`\n\nexport const STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`\n\nexport const SERVER_PROPS_EXPORT_ERROR = `pages with \\`getServerSideProps\\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`\n\nexport const GSP_NO_RETURNED_VALUE =\n 'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?'\nexport const GSSP_NO_RETURNED_VALUE =\n 'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?'\n\nexport const UNSTABLE_REVALIDATE_RENAME_ERROR =\n 'The `unstable_revalidate` property is available for general use.\\n' +\n 'Please use `revalidate` instead.'\n\nexport const 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`\n\nexport const 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`\n\nexport const 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`\n\nexport const ESLINT_DEFAULT_DIRS = ['app', 'pages', 'components', 'lib', 'src']\n\nexport const SERVER_RUNTIME: Record<string, ServerRuntime> = {\n edge: 'edge',\n experimentalEdge: 'experimental-edge',\n nodejs: 'nodejs',\n}\n\nexport const WEB_SOCKET_MAX_RECONNECTIONS = 12\n\n/**\n * The names of the webpack layers. These layers are the primitives for the\n * webpack chunks.\n */\nconst WEBPACK_LAYERS_NAMES = {\n /**\n * The layer for the shared code between the client and server bundles.\n */\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 */\n reactServerComponents: 'rsc',\n /**\n * Server Side Rendering layer for app (ssr).\n */\n serverSideRendering: 'ssr',\n /**\n * The browser client bundle layer for actions.\n */\n actionBrowser: 'action-browser',\n /**\n * The Node.js bundle layer for the API routes.\n */\n apiNode: 'api-node',\n /**\n * The Edge Lite bundle layer for the API routes.\n */\n apiEdge: 'api-edge',\n /**\n * The layer for the middleware code.\n */\n middleware: 'middleware',\n /**\n * The layer for the instrumentation hooks.\n */\n instrument: 'instrument',\n /**\n * The layer for assets on the edge.\n */\n edgeAsset: 'edge-asset',\n /**\n * The browser client bundle layer for App directory.\n */\n appPagesBrowser: 'app-pages-browser',\n /**\n * The browser client bundle layer for Pages directory.\n */\n pagesDirBrowser: 'pages-dir-browser',\n /**\n * The Edge Lite bundle layer for Pages directory.\n */\n pagesDirEdge: 'pages-dir-edge',\n /**\n * The Node.js bundle layer for Pages directory.\n */\n pagesDirNode: 'pages-dir-node',\n} as const\n\nexport type WebpackLayerName =\n (typeof WEBPACK_LAYERS_NAMES)[keyof typeof WEBPACK_LAYERS_NAMES]\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}\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\nexport { WEBPACK_LAYERS, WEBPACK_RESOURCE_QUERIES }\n","// regexp is based on https://github.com/sindresorhus/escape-string-regexp\nconst reHasRegExp = /[|\\\\{}()[\\]^$+*?.-]/\nconst reReplaceRegExp = /[|\\\\{}()[\\]^$+*?.-]/g\n\nexport function escapeStringRegexp(str: string) {\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","export class InvariantError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(\n `Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`,\n options\n )\n this.name = 'InvariantError'\n }\n}\n","import { DEFAULT_SEGMENT_KEY } from '../../segment'\nimport type { LoaderTree } from '../../../../server/lib/app-dir-module'\n\nexport function parseLoaderTree(tree: LoaderTree) {\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 === DEFAULT_SEGMENT_KEY ? modules.defaultPage : page\n\n const conventionPath = layout?.[1] || template?.[1] || page?.[1]\n\n return {\n page,\n segment,\n modules,\n /* it can be either layout / template / page */\n conventionPath,\n parallelRoutes,\n staticSiblings,\n }\n}\n","import { INTERCEPTION_ROUTE_MARKERS } from './interception-routes'\nimport type { DynamicParamTypes } from '../../app-router-types'\n\nexport type SegmentParam = {\n paramName: string\n paramType: DynamicParamTypes\n}\n\n/**\n * Parse dynamic route segment to type of parameter\n */\nexport function getSegmentParam(segment: string): SegmentParam | null {\n const interceptionMarker = INTERCEPTION_ROUTE_MARKERS.find((marker) =>\n segment.startsWith(marker)\n )\n\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\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\n if (segment.startsWith('[...') && segment.endsWith(']')) {\n return {\n paramType: interceptionMarker\n ? `catchall-intercepted-${interceptionMarker}`\n : 'catchall',\n paramName: segment.slice(4, -1),\n }\n }\n\n if (segment.startsWith('[') && segment.endsWith(']')) {\n return {\n paramType: interceptionMarker\n ? `dynamic-intercepted-${interceptionMarker}`\n : 'dynamic',\n paramName: segment.slice(1, -1),\n }\n }\n\n return null\n}\n\nexport function isCatchAll(\n type: DynamicParamTypes\n): type is\n | 'catchall'\n | 'catchall-intercepted-(..)(..)'\n | 'catchall-intercepted-(.)'\n | 'catchall-intercepted-(..)'\n | 'catchall-intercepted-(...)'\n | 'optional-catchall' {\n return (\n type === 'catchall' ||\n type === 'catchall-intercepted-(..)(..)' ||\n type === 'catchall-intercepted-(.)' ||\n type === 'catchall-intercepted-(..)' ||\n type === 'catchall-intercepted-(...)' ||\n type === 'optional-catchall'\n )\n}\n\nexport function getParamProperties(paramType: DynamicParamTypes): {\n repeat: boolean\n optional: boolean\n} {\n let repeat = false\n let optional = false\n\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 satisfies never\n }\n\n return { repeat, optional }\n}\n","import { InvariantError } from '../../invariant-error'\nimport { getSegmentParam, type SegmentParam } from '../utils/get-segment-param'\nimport {\n INTERCEPTION_ROUTE_MARKERS,\n type InterceptionMarker,\n} from '../utils/interception-routes'\n\nexport type RouteGroupAppRouteSegment = {\n type: 'route-group'\n name: string\n\n /**\n * If present, this segment has an interception marker prefixing it.\n */\n interceptionMarker?: InterceptionMarker\n}\n\nexport type ParallelRouteAppRouteSegment = {\n type: 'parallel-route'\n name: string\n\n /**\n * If present, this segment has an interception marker prefixing it.\n */\n interceptionMarker?: InterceptionMarker\n}\n\nexport type StaticAppRouteSegment = {\n type: 'static'\n name: string\n\n /**\n * If present, this segment has an interception marker prefixing it.\n */\n interceptionMarker?: InterceptionMarker\n}\n\nexport type DynamicAppRouteSegment = {\n type: 'dynamic'\n name: string\n param: SegmentParam\n\n /**\n * If present, this segment has an interception marker prefixing it.\n */\n interceptionMarker?: InterceptionMarker\n}\n\n/**\n * Represents a single segment in a route path.\n * Can be either static (e.g., \"blog\") or dynamic (e.g., \"[slug]\").\n */\nexport type AppRouteSegment =\n | StaticAppRouteSegment\n | DynamicAppRouteSegment\n | RouteGroupAppRouteSegment\n | ParallelRouteAppRouteSegment\n\nexport type NormalizedAppRouteSegment =\n | StaticAppRouteSegment\n | DynamicAppRouteSegment\n\nfunction normalizeEncodedDynamicPlaceholder(segment: string): string {\n if (!/%5b|%5d/i.test(segment)) {\n return segment\n }\n\n try {\n const decodedSegment = decodeURIComponent(segment)\n return getSegmentParam(decodedSegment) ? decodedSegment : segment\n } catch {\n return segment\n }\n}\n\nexport function parseAppRouteSegment(segment: string): AppRouteSegment | null {\n if (segment === '') {\n return null\n }\n\n // Check if the segment starts with an interception marker\n const interceptionMarker = INTERCEPTION_ROUTE_MARKERS.find((m) =>\n segment.startsWith(m)\n )\n\n const param = 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}\n\nexport type AppRoute = {\n normalized: boolean\n pathname: string\n segments: AppRouteSegment[]\n dynamicSegments: DynamicAppRouteSegment[]\n interceptionMarker: InterceptionMarker | undefined\n interceptingRoute: AppRoute | undefined\n interceptedRoute: AppRoute | undefined\n}\n\nexport type NormalizedAppRoute = Omit<AppRoute, 'normalized' | 'segments'> & {\n normalized: true\n segments: NormalizedAppRouteSegment[]\n}\n\nexport function isNormalizedAppRoute(\n route: InterceptionAppRoute\n): route is NormalizedInterceptionAppRoute\nexport function isNormalizedAppRoute(\n route: AppRoute | InterceptionAppRoute\n): route is NormalizedAppRoute {\n return route.normalized\n}\n\nexport type InterceptionAppRoute = Omit<\n AppRoute,\n 'interceptionMarker' | 'interceptingRoute' | 'interceptedRoute'\n> & {\n interceptionMarker: InterceptionMarker\n interceptingRoute: AppRoute\n interceptedRoute: AppRoute\n}\n\nexport type NormalizedInterceptionAppRoute = Omit<\n InterceptionAppRoute,\n | 'normalized'\n | 'segments'\n | 'interceptionMarker'\n | 'interceptingRoute'\n | 'interceptedRoute'\n> & {\n normalized: true\n segments: NormalizedAppRouteSegment[]\n interceptionMarker: InterceptionMarker\n interceptingRoute: NormalizedAppRoute\n interceptedRoute: NormalizedAppRoute\n}\n\nexport function isInterceptionAppRoute(\n route: NormalizedAppRoute\n): route is NormalizedInterceptionAppRoute\nexport function isInterceptionAppRoute(\n route: AppRoute\n): route is InterceptionAppRoute {\n return (\n route.interceptionMarker !== undefined &&\n route.interceptingRoute !== undefined &&\n route.interceptedRoute !== undefined\n )\n}\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 = /* */ 0b00\nconst AllowParallelSegments = /* */ 0b01\nconst AllowGroupSegments = /* */ 0b10\n\nfunction parseAppRouteImpl(\n pathname: string,\n allowedTypes: number\n): AppRoute | NormalizedAppRoute {\n const pathnameSegments = pathname.split('/').filter(Boolean)\n\n // Build segments array with static and dynamic segments\n const segments: AppRouteSegment[] = []\n\n // Parse if this is an interception route.\n let interceptionMarker: InterceptionMarker | undefined\n let interceptingRoute: AppRoute | NormalizedAppRoute | undefined\n let interceptedRoute: AppRoute | NormalizedAppRoute | undefined\n\n for (const segment of pathnameSegments) {\n const normalizedSegment = normalizeEncodedDynamicPlaceholder(segment)\n\n // Parse the segment into an AppSegment.\n const appSegment = parseAppRouteSegment(normalizedSegment)\n if (!appSegment) {\n continue\n }\n\n if (\n appSegment.type === 'route-group' &&\n !(allowedTypes & AllowGroupSegments)\n ) {\n throw new InvariantError(\n `${pathname} is being parsed as a normalized route, but it has a route group segment.`\n )\n }\n\n if (\n appSegment.type === 'parallel-route' &&\n !(allowedTypes & AllowParallelSegments)\n ) {\n throw new InvariantError(\n `${pathname} is being parsed as a normalized route, but it has a parallel route segment.`\n )\n }\n\n segments.push(appSegment)\n\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\n interceptingRoute = parseAppRouteImpl(parts[0], allowedTypes)\n interceptedRoute = parseAppRouteImpl(parts[1], allowedTypes)\n interceptionMarker = appSegment.interceptionMarker\n }\n }\n\n const dynamicSegments = segments.filter(\n (segment) => segment.type === 'dynamic'\n )\n\n return {\n normalized: allowedTypes === OnlyRoutableSegments,\n pathname,\n segments,\n dynamicSegments,\n interceptionMarker,\n interceptingRoute,\n interceptedRoute,\n }\n}\n\n/**\n * Parse an app route that has been fully normalized (no @slot or ()\n * group segments). Throws if either is present.\n */\nexport function parseNormalizedAppRoute(pathname: string): NormalizedAppRoute {\n return parseAppRouteImpl(pathname, OnlyRoutableSegments) as NormalizedAppRoute\n}\n\n/**\n * Parse an app route that may contain @slot segments but not ()\n * group segments. Slot segments are preserved as parallel-route\n * type segments so callers can distinguish routes in different\n * parallel slots.\n */\nexport function parseAppRouteWithSlots(pathname: string): AppRoute {\n return parseAppRouteImpl(pathname, AllowParallelSegments) as AppRoute\n}\n","import type { DynamicParamTypes } from '../../app-router-types'\n\nexport function interceptionPrefixFromParamType(\n paramType: DynamicParamTypes\n): string | null {\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","import type { Params } from '../../../../server/request/params'\nimport type { DynamicParamTypes } from '../../app-router-types'\nimport { InvariantError } from '../../invariant-error'\nimport type {\n NormalizedAppRoute,\n NormalizedAppRouteSegment,\n} from '../routes/app'\nimport { interceptionPrefixFromParamType } from './interception-prefix-from-param-type'\n\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 */\nfunction getParamValueFromSegment(\n pathSegment: NormalizedAppRouteSegment,\n params: Params,\n paramType: DynamicParamTypes\n): string {\n // If the segment is dynamic, resolve it from the params object\n if (pathSegment.type === 'dynamic') {\n return params[pathSegment.param.paramName] as string\n }\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 = interceptionPrefixFromParamType(paramType)\n if (interceptionPrefix === pathSegment.interceptionMarker) {\n return pathSegment.name.replace(pathSegment.interceptionMarker, '')\n }\n\n // For static segments, use the name\n return pathSegment.name\n}\n\n/**\n * Resolves a route parameter value from the route segments at the given depth.\n * This shared logic is used by both extractPathnameRouteParamSegmentsFromLoaderTree\n * and resolveRouteParamsFromTree.\n *\n * @param paramName - The parameter name to resolve\n * @param paramType - The parameter type (dynamic, catchall, etc.)\n * @param depth - The current depth in the route tree\n * @param route - The normalized route containing segments\n * @param params - The current params object (used to resolve embedded param references)\n * @param options - Configuration options\n * @returns The resolved parameter value, or undefined if it cannot be resolved\n */\nexport function resolveParamValue(\n paramName: string,\n paramType: DynamicParamTypes,\n depth: number,\n route: NormalizedAppRoute,\n params: Params\n): string | string[] | undefined {\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: string[] = []\n\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\n if (pathSegment.type === 'static') {\n let value = pathSegment.name\n\n // For intercepted catch-all params, strip the marker from the first segment\n const interceptionPrefix = interceptionPrefixFromParamType(paramType)\n if (\n interceptionPrefix &&\n index === depth &&\n interceptionPrefix === pathSegment.interceptionMarker\n ) {\n // Strip the interception marker from the value\n value = value.replace(pathSegment.interceptionMarker, '')\n }\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\n // Unknown param placeholder in pathname - can't derive full value\n return undefined\n }\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 as string)\n }\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(\n `Unexpected empty path segments match for a route \"${route.pathname}\" with param \"${paramName}\" of type \"${paramType}\"`\n )\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\n // Check if the segment at this depth is a placeholder for an unknown param\n if (\n pathSegment.type === 'dynamic' &&\n !params.hasOwnProperty(pathSegment.param.paramName)\n ) {\n // The segment is a placeholder like [category] and we don't have the value\n return undefined\n }\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\n return undefined\n\n default:\n paramType satisfies never\n }\n}\n","import type { DynamicParam } from '../../../../server/app-render/app-render'\nimport type { LoaderTree } from '../../../../server/lib/app-dir-module'\nimport type { OpaqueFallbackRouteParams } from '../../../../server/request/fallback-params'\nimport type { Params } from '../../../../server/request/params'\nimport type { DynamicParamTypesShort } from '../../app-router-types'\nimport { InvariantError } from '../../invariant-error'\nimport { parseLoaderTree } from './parse-loader-tree'\nimport { parseNormalizedAppRoute, parseAppRouteSegment } from '../routes/app'\nimport { resolveParamValue } from './resolve-param-value'\n\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 */\nfunction getParamValue(\n interpolatedParams: Params,\n segmentKey: string,\n fallbackRouteParams: OpaqueFallbackRouteParams | null\n) {\n let value = interpolatedParams[segmentKey]\n\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 [searchValue] = fallbackRouteParams.get(segmentKey)!\n value = searchValue\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\n return value\n}\n\nexport function interpolateParallelRouteParams(\n loaderTree: LoaderTree,\n params: Params,\n pagePath: string,\n fallbackRouteParams: OpaqueFallbackRouteParams | null\n): Params {\n const interpolated = structuredClone(params)\n\n // Stack-based traversal with depth tracking\n const stack: Array<{ tree: LoaderTree; depth: number }> = [\n { tree: loaderTree, depth: 0 },\n ]\n\n // Parse the route from the provided page path.\n const route = parseNormalizedAppRoute(pagePath)\n\n while (stack.length > 0) {\n const { tree, depth } = stack.pop()!\n const { segment, parallelRoutes } = parseLoaderTree(tree)\n\n const appSegment = parseAppRouteSegment(segment)\n\n if (\n appSegment?.type === 'dynamic' &&\n !interpolated.hasOwnProperty(appSegment.param.paramName) &&\n // 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 ) {\n const { paramName, paramType } = appSegment.param\n\n const paramValue = resolveParamValue(\n paramName,\n paramType,\n depth,\n route,\n interpolated\n )\n\n if (paramValue !== undefined) {\n interpolated[paramName] = paramValue\n } else if (paramType !== 'optional-catchall') {\n throw new InvariantError(\n `Could not resolve param value for segment: ${paramName}`\n )\n }\n }\n\n // Calculate next depth - increment if this is not a route group and not empty\n let nextDepth = depth\n if (\n appSegment &&\n appSegment.type !== 'route-group' &&\n appSegment.type !== 'parallel-route'\n ) {\n nextDepth++\n }\n\n // Add all parallel routes to the stack for processing\n for (const parallelRoute of Object.values(parallelRoutes)) {\n stack.push({ tree: parallelRoute, depth: nextDepth })\n }\n }\n\n return interpolated\n}\n\n/**\n *\n * Shared logic on client and server for creating a dynamic param value.\n *\n * This code needs to be shared with the client so it can extract dynamic route\n * params from the URL without a server request.\n *\n * Because everything in this module is sent to the client, we should aim to\n * keep this code as simple as possible. The special case handling for catchall\n * and optional is, alas, unfortunate.\n */\nexport function getDynamicParam(\n interpolatedParams: Params,\n segmentKey: string,\n dynamicParamType: DynamicParamTypesShort,\n fallbackRouteParams: OpaqueFallbackRouteParams | null,\n staticSiblings: readonly string[] | null\n): DynamicParam {\n let value: string | string[] | undefined = getParamValue(\n interpolatedParams,\n segmentKey,\n fallbackRouteParams\n )\n\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: [segmentKey, '', dynamicParamType, staticSiblings],\n }\n }\n\n throw new InvariantError(\n `Missing value for segment key: \"${segmentKey}\" with dynamic param type: ${dynamicParamType}`\n )\n }\n\n const paramCacheKey = Array.isArray(value) ? value.join('/') : value\n\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: [segmentKey, paramCacheKey, dynamicParamType, staticSiblings],\n type: dynamicParamType,\n }\n}\n\n/**\n * Regular expression pattern used to match route parameters.\n * Matches both single parameters and parameter groups.\n * Examples:\n * - `[[...slug]]` matches parameter group with key 'slug', repeat: true, optional: true\n * - `[...slug]` matches parameter group with key 'slug', repeat: true, optional: false\n * - `[[foo]]` matches parameter with key 'foo', repeat: false, optional: true\n * - `[bar]` matches parameter with key 'bar', repeat: false, optional: false\n */\nexport const PARAMETER_PATTERN = /^([^[]*)\\[((?:\\[[^\\]]*\\])|[^\\]]+)\\](.*)$/\n\n/**\n * Parses a given parameter from a route to a data structure that can be used\n * to generate the parametrized route.\n * Examples:\n * - `[[...slug]]` -> `{ key: 'slug', repeat: true, optional: true }`\n * - `[...slug]` -> `{ key: 'slug', repeat: true, optional: false }`\n * - `[[foo]]` -> `{ key: 'foo', repeat: false, optional: true }`\n * - `[bar]` -> `{ key: 'bar', repeat: false, optional: false }`\n * - `fizz` -> `{ key: 'fizz', repeat: false, optional: false }`\n * @param param - The parameter to parse.\n * @returns The parsed parameter as a data structure.\n */\nexport function parseParameter(param: string) {\n const match = param.match(PARAMETER_PATTERN)\n\n if (!match) {\n return parseMatchedParameter(param)\n }\n\n return parseMatchedParameter(match[2])\n}\n\n/**\n * Parses a matched parameter from the PARAMETER_PATTERN regex to a data structure that can be used\n * to generate the parametrized route.\n * Examples:\n * - `[...slug]` -> `{ key: 'slug', repeat: true, optional: true }`\n * - `...slug` -> `{ key: 'slug', repeat: true, optional: false }`\n * - `[foo]` -> `{ key: 'foo', repeat: false, optional: true }`\n * - `bar` -> `{ key: 'bar', repeat: false, optional: false }`\n * @param param - The matched parameter to parse.\n * @returns The parsed parameter as a data structure.\n */\nexport function parseMatchedParameter(param: string) {\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 { key: param, repeat, optional }\n}\n","import {\n NEXT_INTERCEPTION_MARKER_PREFIX,\n NEXT_QUERY_PARAM_PREFIX,\n} from '../../../../lib/constants'\nimport { INTERCEPTION_ROUTE_MARKERS } from './interception-routes'\nimport { escapeStringRegexp } from '../../escape-regexp'\nimport { removeTrailingSlash } from './remove-trailing-slash'\nimport { PARAMETER_PATTERN, parseMatchedParameter } from './get-dynamic-param'\n\nexport interface Group {\n pos: number\n repeat: boolean\n optional: boolean\n}\n\nexport interface RouteRegex {\n groups: { [groupName: string]: Group }\n re: RegExp\n}\n\nexport type RegexReference = {\n names: Record<string, string>\n intercepted: Record<string, string>\n}\n\ntype GetNamedRouteRegexOptions = {\n /**\n * Whether to prefix the route keys with the NEXT_INTERCEPTION_MARKER_PREFIX\n * or NEXT_QUERY_PARAM_PREFIX. This is only relevant when creating the\n * routes-manifest during the build.\n */\n prefixRouteKeys: boolean\n\n /**\n * Whether to include the suffix in the route regex. This means that when you\n * have something like `/[...slug].json` the `.json` part will be included\n * in the regex, yielding `/(.*).json` as the regex.\n */\n includeSuffix?: boolean\n\n /**\n * Whether to include the prefix in the route regex. This means that when you\n * have something like `/[...slug].json` the `/` part will be included\n * in the regex, yielding `^/(.*).json$` as the regex.\n *\n * Note that interception markers will already be included without the need\n */\n includePrefix?: boolean\n\n /**\n * Whether to exclude the optional trailing slash from the route regex.\n */\n excludeOptionalTrailingSlash?: boolean\n\n /**\n * Whether to backtrack duplicate keys. This is only relevant when creating\n * the routes-manifest during the build.\n */\n backreferenceDuplicateKeys?: boolean\n\n /**\n * If provided, this will be used as the reference for the dynamic parameter\n * keys instead of generating them in context. This is currently only used for\n * interception routes.\n */\n reference?: RegexReference\n}\n\ntype GetRouteRegexOptions = {\n /**\n * Whether to include extra parts in the route regex. This means that when you\n * have something like `/[...slug].json` the `.json` part will be included\n * in the regex, yielding `/(.*).json` as the regex.\n */\n includeSuffix?: boolean\n\n /**\n * Whether to include the prefix in the route regex. This means that when you\n * have something like `/[...slug].json` the `/` part will be included\n * in the regex, yielding `^/(.*).json$` as the regex.\n *\n * Note that interception markers will already be included without the need\n * of adding this option.\n */\n includePrefix?: boolean\n\n /**\n * Whether to exclude the optional trailing slash from the route regex.\n */\n excludeOptionalTrailingSlash?: boolean\n}\n\nfunction getParametrizedRoute(\n route: string,\n includeSuffix: boolean,\n includePrefix: boolean\n) {\n const groups: { [groupName: string]: Group } = {}\n let groupIndex = 1\n\n const segments: string[] = []\n for (const segment of removeTrailingSlash(route).slice(1).split('/')) {\n const markerMatch = INTERCEPTION_ROUTE_MARKERS.find((m) =>\n segment.startsWith(m)\n )\n const paramMatches = segment.match(PARAMETER_PATTERN) // Check for parameters\n\n if (markerMatch && paramMatches && paramMatches[2]) {\n const { key, optional, repeat } = parseMatchedParameter(paramMatches[2])\n groups[key] = { pos: groupIndex++, repeat, optional }\n segments.push(`/${escapeStringRegexp(markerMatch)}([^/]+?)`)\n } else if (paramMatches && paramMatches[2]) {\n const { key, repeat, optional } = parseMatchedParameter(paramMatches[2])\n groups[key] = { pos: groupIndex++, repeat, optional }\n\n if (includePrefix && paramMatches[1]) {\n segments.push(`/${escapeStringRegexp(paramMatches[1])}`)\n }\n\n let s = repeat ? (optional ? '(?:/(.+?))?' : '/(.+?)') : '/([^/]+?)'\n\n // Remove the leading slash if includePrefix already added it.\n if (includePrefix && paramMatches[1]) {\n s = s.substring(1)\n }\n\n segments.push(s)\n } else {\n segments.push(`/${escapeStringRegexp(segment)}`)\n }\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(escapeStringRegexp(paramMatches[3]))\n }\n }\n\n return {\n parameterizedRoute: segments.join(''),\n groups,\n }\n}\n\n/**\n * From a normalized route this function generates a regular expression and\n * a corresponding groups object intended to be used to store matching groups\n * from the regular expression.\n */\nexport function getRouteRegex(\n normalizedRoute: string,\n {\n includeSuffix = false,\n includePrefix = false,\n excludeOptionalTrailingSlash = false,\n }: GetRouteRegexOptions = {}\n): RouteRegex {\n const { parameterizedRoute, groups } = getParametrizedRoute(\n normalizedRoute,\n includeSuffix,\n includePrefix\n )\n\n let re = parameterizedRoute\n if (!excludeOptionalTrailingSlash) {\n re += '(?:/)?'\n }\n\n return {\n re: new RegExp(`^${re}$`),\n groups: groups,\n }\n}\n\n/**\n * Builds a function to generate a minimal routeKey using only a-z and minimal\n * number of characters.\n */\nfunction buildGetSafeRouteKey() {\n let i = 0\n\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}\n\nfunction getSafeKeyFromSegment({\n interceptionMarker,\n getSafeRouteKey,\n segment,\n routeKeys,\n keyPrefix,\n backreferenceDuplicateKeys,\n}: {\n interceptionMarker?: string\n getSafeRouteKey: () => string\n segment: string\n routeKeys: Record<string, string>\n keyPrefix?: string\n backreferenceDuplicateKeys: boolean\n}) {\n const { key, optional, repeat } = parseMatchedParameter(segment)\n\n // replace any non-word characters since they can break\n // the named regex\n let cleanedKey = key.replace(/\\W/g, '')\n\n if (keyPrefix) {\n cleanedKey = `${keyPrefix}${cleanedKey}`\n }\n let invalidKey = false\n\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\n if (invalidKey) {\n cleanedKey = getSafeRouteKey()\n }\n\n const duplicateKey = cleanedKey in routeKeys\n\n if (keyPrefix) {\n routeKeys[cleanedKey] = `${keyPrefix}${key}`\n } else {\n routeKeys[cleanedKey] = key\n }\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\n ? escapeStringRegexp(interceptionMarker)\n : ''\n\n let pattern: string\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\n return {\n key,\n pattern: optional\n ? `(?:/${interceptionPrefix}${pattern})?`\n : `/${interceptionPrefix}${pattern}`,\n cleanedKey: cleanedKey,\n optional,\n repeat,\n }\n}\n\nfunction getNamedParametrizedRoute(\n route: string,\n prefixRouteKeys: boolean,\n includeSuffix: boolean,\n includePrefix: boolean,\n backreferenceDuplicateKeys: boolean,\n reference: RegexReference = { names: {}, intercepted: {} }\n) {\n const getSafeRouteKey = buildGetSafeRouteKey()\n const routeKeys: { [named: string]: string } = {}\n\n const segments: string[] = []\n const inverseParts: string[] = []\n\n // Ensure we don't mutate the original reference object.\n reference = structuredClone(reference)\n\n for (const segment of removeTrailingSlash(route).slice(1).split('/')) {\n const hasInterceptionMarker = INTERCEPTION_ROUTE_MARKERS.some((m) =>\n segment.startsWith(m)\n )\n\n const paramMatches = segment.match(PARAMETER_PATTERN) // Check for parameters\n\n const interceptionMarker = hasInterceptionMarker\n ? paramMatches?.[1]\n : undefined\n\n let keyPrefix: string | undefined\n if (interceptionMarker && paramMatches?.[2]) {\n keyPrefix = prefixRouteKeys ? NEXT_INTERCEPTION_MARKER_PREFIX : undefined\n reference.intercepted[paramMatches[2]] = interceptionMarker\n } else if (paramMatches?.[2] && reference.intercepted[paramMatches[2]]) {\n keyPrefix = prefixRouteKeys ? NEXT_INTERCEPTION_MARKER_PREFIX : undefined\n } else {\n keyPrefix = prefixRouteKeys ? NEXT_QUERY_PARAM_PREFIX : undefined\n }\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 } =\n getSafeKeyFromSegment({\n getSafeRouteKey,\n interceptionMarker,\n segment: paramMatches[2],\n routeKeys,\n keyPrefix,\n backreferenceDuplicateKeys,\n })\n\n segments.push(pattern)\n inverseParts.push(\n `/${paramMatches[1]}:${reference.names[key] ?? cleanedKey}${repeat ? (optional ? '*' : '+') : ''}`\n )\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(`/${escapeStringRegexp(paramMatches[1])}`)\n inverseParts.push(`/${paramMatches[1]}`)\n }\n\n const { key, pattern, cleanedKey, repeat, optional } =\n getSafeKeyFromSegment({\n getSafeRouteKey,\n segment: paramMatches[2],\n routeKeys,\n keyPrefix,\n backreferenceDuplicateKeys,\n })\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\n segments.push(s)\n inverseParts.push(\n `/:${reference.names[key] ?? cleanedKey}${repeat ? (optional ? '*' : '+') : ''}`\n )\n reference.names[key] ??= cleanedKey\n } else {\n segments.push(`/${escapeStringRegexp(segment)}`)\n inverseParts.push(`/${segment}`)\n }\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(escapeStringRegexp(paramMatches[3]))\n inverseParts.push(paramMatches[3])\n }\n }\n\n return {\n namedParameterizedRoute: segments.join(''),\n routeKeys,\n pathToRegexpPattern: inverseParts.join(''),\n reference,\n }\n}\n\n/**\n * This function extends `getRouteRegex` generating also a named regexp where\n * each group is named along with a routeKeys object that indexes the assigned\n * named group with its corresponding key. When the routeKeys need to be\n * prefixed to uniquely identify internally the \"prefixRouteKey\" arg should\n * be \"true\" currently this is only the case when creating the routes-manifest\n * during the build\n */\nexport function getNamedRouteRegex(\n normalizedRoute: string,\n options: GetNamedRouteRegexOptions\n) {\n const result = getNamedParametrizedRoute(\n normalizedRoute,\n options.prefixRouteKeys,\n options.includeSuffix ?? false,\n options.includePrefix ?? false,\n options.backreferenceDuplicateKeys ?? false,\n options.reference\n )\n\n let namedRegex = result.namedParameterizedRoute\n if (!options.excludeOptionalTrailingSlash) {\n namedRegex += '(?:/)?'\n }\n\n return {\n ...getRouteRegex(normalizedRoute, options),\n namedRegex: `^${namedRegex}$`,\n routeKeys: result.routeKeys,\n pathToRegexpPattern: result.pathToRegexpPattern,\n reference: result.reference,\n }\n}\n\n/**\n * Generates a named regexp.\n * This is intended to be using for build time only.\n */\nexport function getNamedMiddlewareRegex(\n normalizedRoute: string,\n options: {\n catchAll?: boolean\n }\n) {\n const { parameterizedRoute } = getParametrizedRoute(\n normalizedRoute,\n false,\n false\n )\n const { catchAll = true } = options\n if (parameterizedRoute === '/') {\n let catchAllRegex = catchAll ? '.*' : ''\n return {\n namedRegex: `^/${catchAllRegex}$`,\n }\n }\n\n const { namedParameterizedRoute } = getNamedParametrizedRoute(\n normalizedRoute,\n false,\n false,\n false,\n false,\n undefined\n )\n let catchAllGroupedRegex = catchAll ? '(?:(/.*)?)' : ''\n return {\n namedRegex: `^${namedParameterizedRoute}${catchAllGroupedRegex}$`,\n }\n}\n","import type { ParsedUrlQuery } from 'querystring'\n\nimport { getRouteMatcher } from './route-matcher'\nimport { getRouteRegex } from './route-regex'\n\nexport function interpolateAs(\n route: string,\n asPathname: string,\n query: ParsedUrlQuery\n) {\n let interpolatedRoute = ''\n\n const dynamicRegex = getRouteRegex(route)\n const dynamicGroups = dynamicRegex.groups\n const dynamicMatches =\n // Try to match the dynamic route against the asPath\n (asPathname !== route ? getRouteMatcher(dynamicRegex)(asPathname) : '') ||\n // 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\n interpolatedRoute = route\n const params = Object.keys(dynamicGroups)\n\n if (\n !params.every((param) => {\n let value = dynamicMatches[param] || ''\n const { repeat, optional } = dynamicGroups[param]\n\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 = [value]\n\n return (\n (optional || param in dynamicMatches) &&\n // Interpolate group into data URL if present\n (interpolatedRoute =\n interpolatedRoute!.replace(\n replaced,\n repeat\n ? (value as string[])\n .map(\n // 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)\n )\n .join('/')\n : encodeURIComponent(value as string)\n ) || '/')\n )\n })\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","import type { NextRouter, Url } from '../shared/lib/router/router'\n\nimport { searchParamsToUrlQuery } from '../shared/lib/router/utils/querystring'\nimport { formatWithValidation } from '../shared/lib/router/utils/format-url'\nimport { omit } from '../shared/lib/router/utils/omit'\nimport { normalizeRepeatedSlashes } from '../shared/lib/utils'\nimport { normalizePathTrailingSlash } from './normalize-trailing-slash'\nimport { isLocalURL } from '../shared/lib/router/utils/is-local-url'\nimport { isDynamicRoute } from '../shared/lib/router/utils'\nimport { interpolateAs } from '../shared/lib/router/utils/interpolate-as'\nimport { getRouteRegex } from '../shared/lib/router/utils/route-regex'\nimport { getRouteMatcher } from '../shared/lib/router/utils/route-matcher'\n\n/**\n * Resolves a given hyperlink with a certain router state (basePath not included).\n * Preserves absolute urls.\n */\nexport function resolveHref(\n router: NextRouter,\n href: Url,\n resolveAs: true\n): [string, string] | [string]\nexport function resolveHref(\n router: NextRouter,\n href: Url,\n resolveAs?: false\n): string\nexport function resolveHref(\n router: NextRouter,\n href: Url,\n resolveAs?: boolean\n): [string, string] | [string] | string {\n // we use a dummy base url for relative urls\n let base: URL\n let urlAsString = typeof href === 'string' ? href : formatWithValidation(href)\n\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\n ? urlAsString.slice(urlProtoMatch[0].length)\n : urlAsString\n\n const urlParts = urlAsStringNoProto.split('?', 1)\n\n if ((urlParts[0] || '').match(/(\\/\\/|\\\\)/)) {\n console.error(\n `Invalid href '${urlAsString}' passed to next/router in page: '${router.pathname}'. Repeated forward-slashes (//) or backslashes \\\\ are not valid in the href.`\n )\n const normalizedUrl = normalizeRepeatedSlashes(urlAsStringNoProto)\n urlAsString = (urlProtoMatch ? urlProtoMatch[0] : '') + normalizedUrl\n }\n\n // Return because it cannot be routed by the Next.js router\n if (!isLocalURL(urlAsString)) {\n return (resolveAs ? [urlAsString] : urlAsString) as string\n }\n\n try {\n let baseBase = urlAsString.startsWith('#') ? router.asPath : router.pathname\n\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\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 (isDynamicRoute(router.pathname)) {\n baseBase = router.pathname\n\n const routeRegex = getRouteRegex(router.pathname)\n const match = getRouteMatcher(routeRegex)(router.asPath)\n\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\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\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\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\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\n try {\n const finalUrl = new URL(urlAsString, base)\n finalUrl.pathname = normalizePathTrailingSlash(finalUrl.pathname)\n let interpolatedAs = ''\n\n if (\n isDynamicRoute(finalUrl.pathname) &&\n finalUrl.searchParams &&\n resolveAs\n ) {\n const query = searchParamsToUrlQuery(finalUrl.searchParams)\n\n const { result, params } = interpolateAs(\n finalUrl.pathname,\n finalUrl.pathname,\n query\n )\n\n if (result) {\n interpolatedAs = formatWithValidation({\n pathname: result,\n hash: finalUrl.hash,\n query: omit(query, params),\n })\n }\n }\n\n // if the origin didn't change, it means we received a relative href\n const resolvedHref =\n finalUrl.origin === base.origin\n ? finalUrl.href.slice(finalUrl.origin.length)\n : finalUrl.href\n\n return resolveAs\n ? [resolvedHref, interpolatedAs || resolvedHref]\n : resolvedHref\n } catch (_) {\n return resolveAs ? [urlAsString] : urlAsString\n }\n}\n","import { parsePath } from './parse-path'\n\n/**\n * Adds the provided prefix to the given path. It first ensures that the path\n * is indeed starting with a slash.\n */\nexport function addPathPrefix(path: string, prefix?: string) {\n if (!path.startsWith('/') || !prefix) {\n return path\n }\n\n const { pathname, query, hash } = parsePath(path)\n return `${prefix}${pathname}${query}${hash}`\n}\n","import { addPathPrefix } from './add-path-prefix'\nimport { pathHasPrefix } from './path-has-prefix'\n\n/**\n * For a given path and a locale, if the locale is given, it will prefix the\n * locale. The path shouldn't be an API path. If a default locale is given the\n * prefix will be omitted if the locale is already the default locale.\n */\nexport function addLocale(\n path: string,\n locale?: string | false,\n defaultLocale?: string,\n ignorePrefix?: boolean\n) {\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\n const lower = path.toLowerCase()\n\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 (pathHasPrefix(lower, '/api')) return path\n if (pathHasPrefix(lower, `/${locale.toLowerCase()}`)) return path\n }\n\n // Add the locale prefix to the path.\n return addPathPrefix(path, `/${locale}`)\n}\n","import type { addLocale as Fn } from '../shared/lib/router/utils/add-locale'\nimport { normalizePathTrailingSlash } from './normalize-trailing-slash'\n\nexport const addLocale: typeof Fn = (path, ...args) => {\n if (process.env.__NEXT_I18N_SUPPORT) {\n return normalizePathTrailingSlash(\n (\n require('../shared/lib/router/utils/add-locale') as typeof import('../shared/lib/router/utils/add-locale')\n ).addLocale(path, ...args)\n )\n }\n return path\n}\n","function _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\nexport { _interop_require_default as _ };\n","import React from 'react'\nimport type { NextRouter } from './router/router'\n\nexport const RouterContext = React.createContext<NextRouter | null>(null)\n\nif (process.env.NODE_ENV !== 'production') {\n RouterContext.displayName = 'RouterContext'\n}\n","export const requestIdleCallback =\n (typeof self !== 'undefined' &&\n self.requestIdleCallback &&\n self.requestIdleCallback.bind(window)) ||\n function (cb: IdleRequestCallback): number {\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 }\n\nexport const cancelIdleCallback =\n (typeof self !== 'undefined' &&\n self.cancelIdleCallback &&\n self.cancelIdleCallback.bind(window)) ||\n function (id: number) {\n return clearTimeout(id)\n }\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport {\n requestIdleCallback,\n cancelIdleCallback,\n} from './request-idle-callback'\n\ntype UseIntersectionObserverInit = Pick<\n IntersectionObserverInit,\n 'rootMargin' | 'root'\n>\n\ntype UseIntersection = { disabled?: boolean } & UseIntersectionObserverInit & {\n rootRef?: React.RefObject<HTMLElement | null> | null\n }\ntype ObserveCallback = (isVisible: boolean) => void\ntype Identifier = {\n root: Element | Document | null\n margin: string\n}\ntype Observer = {\n id: Identifier\n observer: IntersectionObserver\n elements: Map<Element, ObserveCallback>\n}\n\nconst hasIntersectionObserver = typeof IntersectionObserver === 'function'\n\nconst observers = new Map<Identifier, Observer>()\nconst idList: Identifier[] = []\n\nfunction createObserver(options: UseIntersectionObserverInit): Observer {\n const id = {\n root: options.root || null,\n margin: options.rootMargin || '',\n }\n const existing = idList.find(\n (obj) => obj.root === id.root && obj.margin === id.margin\n )\n let instance: Observer | undefined\n\n if (existing) {\n instance = observers.get(existing)\n if (instance) {\n return instance\n }\n }\n\n const elements = new Map<Element, ObserveCallback>()\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\n idList.push(id)\n observers.set(id, instance)\n return instance\n}\n\nfunction observe(\n element: Element,\n callback: ObserveCallback,\n options: UseIntersectionObserverInit\n): () => void {\n const { id, observer, elements } = createObserver(options)\n elements.set(element, callback)\n\n observer.observe(element)\n return function unobserve(): void {\n elements.delete(element)\n observer.unobserve(element)\n\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(\n (obj) => obj.root === id.root && obj.margin === id.margin\n )\n if (index > -1) {\n idList.splice(index, 1)\n }\n }\n }\n}\n\nexport function useIntersection<T extends Element>({\n rootRef,\n rootMargin,\n disabled,\n}: UseIntersection): [(element: T | null) => void, boolean, () => void] {\n const isDisabled: boolean = disabled || !hasIntersectionObserver\n\n const [visible, setVisible] = useState(false)\n const elementRef = useRef<T | null>(null)\n const setElement = useCallback((element: T | null) => {\n elementRef.current = element\n }, [])\n\n useEffect(() => {\n if (hasIntersectionObserver) {\n if (isDisabled || visible) return\n\n const element = elementRef.current\n if (element && element.tagName) {\n const unobserve = observe(\n element,\n (isVisible) => isVisible && setVisible(isVisible),\n { root: rootRef?.current, rootMargin }\n )\n\n return unobserve\n }\n } else {\n if (!visible) {\n const idleCallback = requestIdleCallback(() => setVisible(true))\n return () => cancelIdleCallback(idleCallback)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDisabled, rootMargin, rootRef, visible, elementRef.current])\n\n const resetVisible = useCallback(() => {\n setVisible(false)\n }, [])\n\n return [setElement, visible, resetVisible]\n}\n","export interface PathLocale {\n detectedLocale?: string\n pathname: string\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 */\nconst cache = new WeakMap<readonly string[], readonly string[]>()\n\n/**\n * For a pathname that may include a locale from a list of locales, it\n * removes the locale from the pathname returning it alongside with the\n * detected locale.\n *\n * @param pathname A pathname that may include a locale.\n * @param locales A list of locales.\n * @returns The detected locale and pathname without locale\n */\nexport function normalizeLocalePath(\n pathname: string,\n locales?: readonly string[]\n): PathLocale {\n // If locales is undefined, return the pathname as is.\n if (!locales) return { 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\n let detectedLocale: string | undefined\n\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\n // If there's no second segment (ie, the pathname is just `/`), there's no\n // locale.\n if (!segments[1]) return { pathname }\n\n // The second segment will contain the locale part if any.\n const segment = segments[1].toLowerCase()\n\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 { pathname }\n\n // Return the case-sensitive locale.\n detectedLocale = locales[index]\n\n // Remove the `/${locale}` part of the pathname.\n pathname = pathname.slice(detectedLocale.length + 1) || '/'\n\n return { pathname, detectedLocale }\n}\n","import type { normalizeLocalePath as Fn } from '../shared/lib/i18n/normalize-locale-path'\n\nexport const normalizeLocalePath: typeof Fn = (pathname, locales) => {\n if (process.env.__NEXT_I18N_SUPPORT) {\n return (\n require('../shared/lib/i18n/normalize-locale-path') as typeof import('../shared/lib/i18n/normalize-locale-path')\n ).normalizeLocalePath(pathname, locales)\n }\n return { pathname, detectedLocale: undefined }\n}\n","import type { DomainLocale } from '../../../server/config-shared'\n\nexport function detectDomainLocale(\n domainItems?: readonly DomainLocale[],\n hostname?: string,\n detectedLocale?: string\n) {\n if (!domainItems) return\n\n if (detectedLocale) {\n detectedLocale = detectedLocale.toLowerCase()\n }\n\n for (const item of domainItems) {\n // remove port if present\n const domainHostname = item.domain?.split(':', 1)[0].toLowerCase()\n if (\n hostname === domainHostname ||\n detectedLocale === item.defaultLocale.toLowerCase() ||\n item.locales?.some((locale) => locale.toLowerCase() === detectedLocale)\n ) {\n return item\n }\n }\n}\n","import type { detectDomainLocale as Fn } from '../shared/lib/i18n/detect-domain-locale'\n\nexport const detectDomainLocale: typeof Fn = (...args) => {\n if (process.env.__NEXT_I18N_SUPPORT) {\n return (\n require('../shared/lib/i18n/detect-domain-locale') as typeof import('../shared/lib/i18n/detect-domain-locale')\n ).detectDomainLocale(...args)\n }\n}\n","import type { DomainLocale } from '../server/config'\nimport type { normalizeLocalePath as NormalizeFn } from './normalize-locale-path'\nimport type { detectDomainLocale as DetectFn } from './detect-domain-locale'\nimport { normalizePathTrailingSlash } from './normalize-trailing-slash'\n\nconst basePath = (process.env.__NEXT_ROUTER_BASEPATH as string) || ''\n\nexport function getDomainLocale(\n path: string,\n locale?: string | false,\n locales?: readonly string[],\n domainLocales?: readonly DomainLocale[]\n) {\n if (process.env.__NEXT_I18N_SUPPORT) {\n const normalizeLocalePath: typeof NormalizeFn = (\n require('./normalize-locale-path') as typeof import('./normalize-locale-path')\n ).normalizeLocalePath\n const detectDomainLocale: typeof DetectFn = (\n require('./detect-domain-locale') as typeof import('./detect-domain-locale')\n ).detectDomainLocale\n\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}${normalizePathTrailingSlash(\n `${basePath}${finalLocale}${path}`\n )}`\n }\n return false\n } else {\n return false\n }\n}\n","import { addPathPrefix } from '../shared/lib/router/utils/add-path-prefix'\nimport { normalizePathTrailingSlash } from './normalize-trailing-slash'\n\nconst basePath = (process.env.__NEXT_ROUTER_BASEPATH as string) || ''\n\nexport function addBasePath(path: string, required?: boolean): string {\n return normalizePathTrailingSlash(\n process.env.__NEXT_MANUAL_CLIENT_BASE_PATH && !required\n ? path\n : addPathPrefix(path, basePath)\n )\n}\n","import { useCallback, useRef, type Ref } from 'react'\n\n// This is a compatibility hook to support React 18 and 19 refs.\n// In 19, a cleanup function from refs may be returned.\n// In 18, returning a cleanup function creates a warning.\n// Since we take userspace refs, we don't know ahead of time if a cleanup function will be returned.\n// This implements cleanup functions with the old behavior in 18.\n// We know refs are always called alternating with `null` and then `T`.\n// So a call with `null` means we need to call the previous cleanup functions.\nexport function useMergedRef<TElement>(\n refA: Ref<TElement>,\n refB: Ref<TElement>\n): Ref<TElement> {\n const cleanupA = useRef<(() => void) | null>(null)\n const cleanupB = useRef<(() => void) | null>(null)\n\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 useCallback(\n (current: TElement | null): void => {\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, refB]\n )\n}\n\nfunction applyRef<TElement>(\n refA: NonNullable<Ref<TElement>>,\n current: TElement\n) {\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","let errorOnce = (_: string) => {}\nif (process.env.NODE_ENV !== 'production') {\n const errors = new Set<string>()\n errorOnce = (msg: string) => {\n if (!errors.has(msg)) {\n console.error(msg)\n }\n errors.add(msg)\n }\n}\n\nexport { errorOnce }\n","'use client'\n\nimport type {\n NextRouter,\n PrefetchOptions as RouterPrefetchOptions,\n} from '../shared/lib/router/router'\n\nimport React, { createContext, useContext } from 'react'\nimport type { UrlObject } from 'url'\nimport { resolveHref } from './resolve-href'\nimport { isLocalURL } from '../shared/lib/router/utils/is-local-url'\nimport { formatUrl } from '../shared/lib/router/utils/format-url'\nimport { isAbsoluteUrl } from '../shared/lib/utils'\nimport { addLocale } from './add-locale'\nimport { RouterContext } from '../shared/lib/router-context.shared-runtime'\nimport type { AppRouterInstance } from '../shared/lib/app-router-context.shared-runtime'\nimport { useIntersection } from './use-intersection'\nimport { getDomainLocale } from './get-domain-locale'\nimport { addBasePath } from './add-base-path'\nimport { useMergedRef } from './use-merged-ref'\n\ntype Url = string | UrlObject\ntype RequiredKeys<T> = {\n [K in keyof T]-?: {} extends Pick<T, K> ? never : K\n}[keyof T]\ntype OptionalKeys<T> = {\n [K in keyof T]-?: {} extends Pick<T, K> ? K : never\n}[keyof T]\n\ntype OnNavigateEventHandler = (event: { preventDefault: () => void }) => void\n\ntype InternalLinkProps = {\n /**\n * The path or URL to navigate to. It can also be an object.\n *\n * @example https://nextjs.org/docs/api-reference/next/link#with-url-object\n */\n href: Url\n /**\n * Optional decorator for the path that will be shown in the browser URL bar. Before Next.js 9.5.3 this was used for dynamic routes, check our [previous docs](https://github.com/vercel/next.js/blob/v9.5.2/docs/api-reference/next/link.md#dynamic-routes) to see how it worked. Note: when this path differs from the one provided in `href` the previous `href`/`as` behavior is used as shown in the [previous docs](https://github.com/vercel/next.js/blob/v9.5.2/docs/api-reference/next/link.md#dynamic-routes).\n */\n as?: Url\n /**\n * Replace the current `history` state instead of adding a new url into the stack.\n *\n * @defaultValue `false`\n */\n replace?: boolean\n /**\n * Whether to override the default scroll behavior\n *\n * @example https://nextjs.org/docs/api-reference/next/link#disable-scrolling-to-the-top-of-the-page\n *\n * @defaultValue `true`\n */\n scroll?: boolean\n /**\n * Update the path of the current page without rerunning [`getStaticProps`](https://nextjs.org/docs/pages/building-your-application/data-fetching/get-static-props), [`getServerSideProps`](https://nextjs.org/docs/pages/building-your-application/data-fetching/get-server-side-props) or [`getInitialProps`](/docs/pages/api-reference/functions/get-initial-props).\n *\n * @defaultValue `false`\n */\n shallow?: boolean\n /**\n * Forces `Link` to send the `href` property to its child.\n *\n * @defaultValue `false`\n */\n passHref?: boolean\n /**\n * Prefetch the page in the background.\n * Any `<Link />` that is in the viewport (initially or through scroll) will be prefetched.\n * Prefetch can be disabled by passing `prefetch={false}`. Prefetching is only enabled in production.\n *\n * In App Router:\n * - \"auto\", null, undefined (default): For statically generated pages, this will prefetch the full React Server Component data. For dynamic pages, this will prefetch up to the nearest route segment with a [`loading.js`](https://nextjs.org/docs/app/api-reference/file-conventions/loading) file. If there is no loading file, it will not fetch the full tree to avoid fetching too much data.\n * - `true`: This will prefetch the full React Server Component data for all route segments, regardless of whether they contain a segment with `loading.js`.\n * - `false`: This will not prefetch any data, even on hover.\n *\n * In Pages Router:\n * - `true` (default): The full route & its data will be prefetched.\n * - `false`: Prefetching will not happen when entering the viewport, but will still happen on hover.\n * @defaultValue `true` (pages router) or `null` (app router)\n */\n prefetch?: boolean | 'auto' | null\n /**\n * The active locale is automatically prepended. `locale` allows for providing a different locale.\n * When `false` `href` has to include the locale as the default behavior is disabled.\n * Note: This is only available in the Pages Router.\n */\n locale?: string | false\n /**\n * Enable legacy link behavior.\n *\n * @deprecated This will be removed in a future version\n * @defaultValue `false`\n * @see https://github.com/vercel/next.js/commit/489e65ed98544e69b0afd7e0cfc3f9f6c2b803b7\n */\n legacyBehavior?: boolean\n /**\n * Optional event handler for when the mouse pointer is moved onto Link\n */\n onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement>\n /**\n * Optional event handler for when Link is touched.\n */\n onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>\n /**\n * Optional event handler for when Link is clicked.\n */\n onClick?: React.MouseEventHandler<HTMLAnchorElement>\n /**\n * Optional event handler for when the `<Link>` is navigated.\n */\n onNavigate?: OnNavigateEventHandler\n\n /**\n * Transition types to apply when navigating. These types are passed to\n * [`React.addTransitionType`](https://react.dev/reference/react/addTransitionType)\n * inside the navigation transition, enabling\n * [`<ViewTransition>`](https://react.dev/reference/react/ViewTransition) components\n * to apply different animations based on the type of navigation.\n *\n * @example\n * ```tsx\n * <Link href=\"/about\" transitionTypes={['slide-in']}>About</Link>\n * ```\n */\n transitionTypes?: string[]\n}\n\n// TODO-APP: Include the full set of Anchor props\n// adding this to the publicly exported type currently breaks existing apps\n\n// `RouteInferType` is a stub here to avoid breaking `typedRoutes` when the type\n// isn't generated yet. It will be replaced when type generation runs.\n// WARNING: This should be an interface to prevent TypeScript from inlining it\n// in declarations of libraries dependending on Next.js.\n// Not trivial to reproduce so only convert to an interface when needed.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport interface LinkProps<RouteInferType = any> extends InternalLinkProps {}\ntype LinkPropsRequired = RequiredKeys<LinkProps>\ntype LinkPropsOptional = OptionalKeys<InternalLinkProps>\n\nconst prefetched = new Set<string>()\n\ntype PrefetchOptions = RouterPrefetchOptions & {\n /**\n * bypassPrefetchedCheck will bypass the check to see if the `href` has\n * already been fetched i.e. unconditionally prefetch the `href`.\n */\n bypassPrefetchedCheck: boolean\n}\n\nfunction prefetch(\n router: NextRouter,\n href: string,\n as: string,\n options: PrefetchOptions\n): void {\n if (typeof window === 'undefined') {\n return\n }\n\n if (!isLocalURL(href)) {\n return\n }\n\n // We should only dedupe requests when experimental.optimisticClientCache is\n // disabled.\n if (!options.bypassPrefetchedCheck) {\n const locale =\n // Let the link's locale prop override the default router locale.\n typeof options.locale !== 'undefined'\n ? options.locale\n : // Otherwise fallback to the router's locale.\n 'locale' in router\n ? router.locale\n : undefined\n\n const prefetchedKey = href + '%' + as + '%' + locale\n\n // If we've already fetched the key, then don't prefetch it again!\n if (prefetched.has(prefetchedKey)) {\n return\n }\n\n // Mark this URL as prefetched.\n prefetched.add(prefetchedKey)\n }\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}\n\nfunction isModifiedEvent(event: React.MouseEvent): boolean {\n const eventTarget = event.currentTarget as HTMLAnchorElement | SVGAElement\n const target = eventTarget.getAttribute('target')\n return (\n (target && target !== '_self') ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey || // triggers resource download\n (event.nativeEvent && event.nativeEvent.which === 2)\n )\n}\n\nfunction linkClicked(\n e: React.MouseEvent,\n router: NextRouter | AppRouterInstance,\n href: string,\n as: string,\n replace?: boolean,\n shallow?: boolean,\n scroll?: boolean,\n locale?: string | false,\n onNavigate?: OnNavigateEventHandler\n): void {\n const { nodeName } = e.currentTarget\n\n // anchors inside an svg have a lowercase nodeName\n const isAnchorNodeName = nodeName.toUpperCase() === 'A'\n\n if (\n (isAnchorNodeName && isModifiedEvent(e)) ||\n e.currentTarget.hasAttribute('download')\n ) {\n // ignore click for browser’s default behavior\n return\n }\n\n if (!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\n // ignore click for browser’s default behavior\n return\n }\n\n e.preventDefault()\n\n const navigate = () => {\n if (onNavigate) {\n let isDefaultPrevented = false\n\n onNavigate({\n preventDefault: () => {\n isDefaultPrevented = true\n },\n })\n\n if (isDefaultPrevented) {\n return\n }\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\n navigate()\n}\n\ntype LinkPropsReal = React.PropsWithChildren<\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof LinkProps> &\n LinkProps\n>\n\nfunction formatStringOrUrl(urlObjOrString: UrlObject | string): string {\n if (typeof urlObjOrString === 'string') {\n return urlObjOrString\n }\n\n return formatUrl(urlObjOrString)\n}\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 */\nconst Link = React.forwardRef<HTMLAnchorElement, LinkPropsReal>(\n function LinkComponent(props, forwardedRef) {\n let children: React.ReactNode\n\n const {\n href: hrefProp,\n as: asProp,\n children: childrenProp,\n prefetch: prefetchProp = null,\n passHref,\n replace,\n shallow,\n scroll,\n locale,\n onClick,\n onNavigate,\n onMouseEnter: onMouseEnterProp,\n onTouchStart: onTouchStartProp,\n legacyBehavior = false,\n transitionTypes,\n ...restProps\n } = props\n\n children = childrenProp\n\n if (\n legacyBehavior &&\n (typeof children === 'string' || typeof children === 'number')\n ) {\n children = <a>{children}</a>\n }\n\n const router = React.useContext(RouterContext)\n\n const prefetchEnabled = prefetchProp !== false\n\n if (process.env.NODE_ENV !== 'production') {\n function createPropError(args: {\n key: string\n expected: string\n actual: string\n }) {\n return new Error(\n `Failed prop type: The prop \\`${args.key}\\` expects a ${args.expected} in \\`<Link>\\`, but got \\`${args.actual}\\` instead.` +\n (typeof window !== 'undefined'\n ? // TODO: Remove this addendum if Owner Stacks are available\n \"\\nOpen your browser's console to view the Component stack trace.\"\n : '')\n )\n }\n\n // TypeScript trick for type-guarding:\n const requiredPropsGuard: Record<LinkPropsRequired, true> = {\n href: true,\n } as const\n const requiredProps: LinkPropsRequired[] = Object.keys(\n requiredPropsGuard\n ) as LinkPropsRequired[]\n requiredProps.forEach((key: LinkPropsRequired) => {\n if (key === 'href') {\n if (\n props[key] == null ||\n (typeof props[key] !== 'string' && typeof props[key] !== 'object')\n ) {\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 _: never = key\n }\n })\n\n // TypeScript trick for type-guarding:\n const optionalPropsGuard: Record<LinkPropsOptional, true> = {\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 } as const\n const optionalProps: LinkPropsOptional[] = Object.keys(\n optionalPropsGuard\n ) as LinkPropsOptional[]\n optionalProps.forEach((key: LinkPropsOptional) => {\n const valType = typeof props[key]\n\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 (\n key === 'onClick' ||\n key === 'onMouseEnter' ||\n key === 'onTouchStart' ||\n key === 'onNavigate'\n ) {\n if (props[key] && valType !== 'function') {\n throw createPropError({\n key,\n expected: '`function`',\n actual: valType,\n })\n }\n } else if (\n key === 'replace' ||\n key === 'scroll' ||\n key === 'shallow' ||\n key === 'passHref' ||\n key === 'legacyBehavior'\n ) {\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 (\n props[key] != null &&\n valType !== 'boolean' &&\n props[key] !== 'auto'\n ) {\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 _: never = key\n }\n })\n }\n\n const { href, as } = React.useMemo(() => {\n if (!router) {\n const resolvedHref = formatStringOrUrl(hrefProp)\n return {\n href: resolvedHref,\n as: asProp ? formatStringOrUrl(asProp) : resolvedHref,\n }\n }\n\n const [resolvedHref, resolvedAs] = resolveHref(router, hrefProp, true)\n\n return {\n href: resolvedHref,\n as: asProp ? resolveHref(router, asProp) : resolvedAs || resolvedHref,\n }\n }, [router, hrefProp, asProp])\n\n const previousHref = React.useRef<string>(href)\n const previousAs = React.useRef<string>(as)\n\n // This will return the first child, if multiple are provided it will throw an error\n let child: any\n if (legacyBehavior) {\n if (process.env.NODE_ENV === 'development') {\n if (onClick) {\n console.warn(\n `\"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 }\n if (onMouseEnterProp) {\n console.warn(\n `\"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 }\n try {\n child = React.Children.only(children)\n } catch (err) {\n if (!children) {\n throw new Error(\n `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 }\n throw new Error(\n `Multiple children were passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children` +\n (typeof window !== 'undefined'\n ? \" \\nOpen your browser's console to view the Component stack trace.\"\n : '')\n )\n }\n } else {\n child = React.Children.only(children)\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if ((children as any)?.type === 'a') {\n throw new Error(\n '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 }\n\n const childRef: any = legacyBehavior\n ? child && typeof child === 'object' && child.ref\n : forwardedRef\n\n const [setIntersectionRef, isVisible, resetVisible] = useIntersection({\n rootMargin: '200px',\n })\n const setIntersectionWithResetRef = React.useCallback(\n (el: Element | null) => {\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\n setIntersectionRef(el)\n },\n [as, href, resetVisible, setIntersectionRef]\n )\n\n const setRef = useMergedRef(setIntersectionWithResetRef, childRef)\n\n // Prefetch the URL if we haven't already and it's visible.\n React.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\n if (!router) {\n return\n }\n\n // If we don't need to prefetch the URL, don't do prefetch.\n if (!isVisible || !prefetchEnabled) {\n return\n }\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 }, [as, href, isVisible, locale, prefetchEnabled, router?.locale, router])\n\n const childProps: {\n onTouchStart?: React.TouchEventHandler<HTMLAnchorElement>\n onMouseEnter: React.MouseEventHandler<HTMLAnchorElement>\n onClick: React.MouseEventHandler<HTMLAnchorElement>\n href?: string\n ref?: any\n } = {\n ref: setRef,\n onClick(e) {\n if (process.env.NODE_ENV !== 'production') {\n if (!e) {\n throw new Error(\n `Component rendered inside next/link has to pass click event to \"onClick\" prop.`\n )\n }\n }\n\n if (!legacyBehavior && typeof onClick === 'function') {\n onClick(e)\n }\n\n if (\n legacyBehavior &&\n child.props &&\n typeof child.props.onClick === 'function'\n ) {\n child.props.onClick(e)\n }\n\n if (!router) {\n return\n }\n\n if (e.defaultPrevented) {\n return\n }\n\n linkClicked(\n e,\n router,\n href,\n as,\n replace,\n shallow,\n scroll,\n locale,\n onNavigate\n )\n },\n onMouseEnter(e) {\n if (!legacyBehavior && typeof onMouseEnterProp === 'function') {\n onMouseEnterProp(e)\n }\n\n if (\n legacyBehavior &&\n child.props &&\n typeof child.props.onMouseEnter === 'function'\n ) {\n child.props.onMouseEnter(e)\n }\n\n if (!router) {\n return\n }\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\n ? undefined\n : function onTouchStart(e) {\n if (!legacyBehavior && typeof onTouchStartProp === 'function') {\n onTouchStartProp(e)\n }\n\n if (\n legacyBehavior &&\n child.props &&\n typeof child.props.onTouchStart === 'function'\n ) {\n child.props.onTouchStart(e)\n }\n\n if (!router) {\n return\n }\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\n // If the url is absolute, we can bypass the logic to prepend the domain and locale.\n if (isAbsoluteUrl(as)) {\n childProps.href = as\n } else if (\n !legacyBehavior ||\n passHref ||\n (child.type === 'a' && !('href' in child.props))\n ) {\n const curLocale = typeof locale !== 'undefined' ? locale : router?.locale\n\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 =\n router?.isLocaleDomain &&\n getDomainLocale(as, curLocale, router?.locales, router?.domainLocales)\n\n childProps.href =\n localeDomain ||\n addBasePath(addLocale(as, curLocale, router?.defaultLocale))\n }\n\n if (legacyBehavior) {\n if (process.env.NODE_ENV === 'development') {\n const { errorOnce } =\n require('../shared/lib/utils/error-once') as typeof import('../shared/lib/utils/error-once')\n errorOnce(\n '`legacyBehavior` is deprecated and will be removed in a future ' +\n 'release. A codemod is available to upgrade your components:\\n\\n' +\n 'npx @next/codemod@latest new-link .\\n\\n' +\n 'Learn more: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#remove-a-tags-from-link-components'\n )\n }\n return React.cloneElement(child, childProps)\n }\n\n return (\n <a {...restProps} {...childProps}>\n {children}\n </a>\n )\n }\n)\n\nconst LinkStatusContext = createContext<{\n pending: boolean\n}>({\n // We do not support link status in the Pages Router, so we always return false\n pending: false,\n})\n\nexport const 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 useContext(LinkStatusContext)\n}\n\nexport default Link\n","module.exports = require('./dist/client/link')\n","/**\n * The rules the support side of Median follows: how long a message can be,\n * what an agent can be called, what an API key looks like.\n *\n * Deliberately pure, like shared/organizations.ts: no Convex imports, so the\n * web app can import this (`@median/backend/support`) and complain in the same\n * words the mutations would.\n */\n\n/** What an organization's AI agent is called until someone renames it. */\nexport const DEFAULT_AGENT_NAME = \"Median AI\";\n\n/**\n * Whether the agent may end a conversation on its own: resolving one it\n * finished, or closing one that was only ever spam.\n *\n * On unless a team says otherwise. A queue is only useful if what is left in\n * it is what somebody still has to look at, and a thread the agent answered\n * end to end is not one of those. Turning it off means every conversation\n * waits for a person to end it, which is the right call for a team that\n * reads all of them anyway.\n */\nexport const DEFAULT_AUTO_RESOLVE = true;\n\n/**\n * Whether resolved conversations get read for knowledge base suggestions.\n * On by default: the suggestions only ever land in a review queue, so the\n * cost of being wrong is a dismissal, not a bad answer.\n */\nexport const DEFAULT_LEARN_FROM_THREADS = true;\n\n/**\n * Whether the live agent may file knowledge suggestions from the middle of\n * a conversation, the moment something teaches it. On by default for the\n * same reason the reader is: everything lands in the same review queue,\n * so the cost of a bad one is a dismissal.\n */\nexport const DEFAULT_SUGGEST_KNOWLEDGE = true;\n\n/**\n * Whether the nightly sweep may resolve this organization's finished\n * threads. On by default for the same reason auto-resolve is: an inbox\n * that closes what is clearly done is the behavior a team expects.\n */\nexport const DEFAULT_NIGHTLY_SWEEP = true;\n\n/**\n * Whether the agent may file a bug or a suggestion when a customer hands one\n * over. On by default: a signal is a note in a list a person reads, not a\n * change to anything, and a complaint nobody wrote down is a complaint the\n * team never hears.\n */\nexport const DEFAULT_FILE_SIGNALS = true;\n\n/**\n * Whether the widget asks for an email before a visitor's first message. On\n * by default: an anonymous thread cannot be followed up, and half of support\n * is getting back to somebody. A host can waive it in code, and this is the\n * team's side of the same switch.\n */\nexport const DEFAULT_REQUIRE_EMAIL = true;\n\nexport const AGENT_NAME_MIN_LENGTH = 2;\nexport const AGENT_NAME_MAX_LENGTH = 40;\nexport const PERSONALITY_MAX_LENGTH = 2000;\n\nexport const MESSAGE_MAX_LENGTH = 4000;\n\nexport const VISITOR_NAME_MAX_LENGTH = 80;\nexport const VISITOR_EMAIL_MAX_LENGTH = 320;\nexport const VISITOR_AVATAR_URL_MAX_LENGTH = 512;\n/** Extra facts a host attaches to a visitor. Small on purpose. */\nexport const VISITOR_METADATA_MAX_ENTRIES = 16;\nexport const VISITOR_METADATA_MAX_LENGTH = 200;\n\n/** A message can carry a few files, not a filesystem. */\nexport const MESSAGE_MAX_ATTACHMENTS = 6;\nexport const ATTACHMENT_MAX_BYTES = 25 * 1024 * 1024;\n\n/**\n * What a visitor makes of a finished conversation: stars, and whatever they\n * wanted to say about it. Both sides check the score, since the widget draws\n * exactly this many stars and the backend takes nothing else.\n */\nexport const RATING_MIN_STARS = 1;\nexport const RATING_MAX_STARS = 5;\nexport const RATING_FEEDBACK_MAX_LENGTH = 1000;\n\n/** Whether a score is one of the stars actually offered. */\nexport function isRatingStars(stars: number): boolean {\n return (\n Number.isInteger(stars) &&\n stars >= RATING_MIN_STARS &&\n stars <= RATING_MAX_STARS\n );\n}\n\n/** Their words, trimmed and capped. Empty means they had none. */\nexport function cleanFeedback(feedback: string): string {\n return feedback.trim().slice(0, RATING_FEEDBACK_MAX_LENGTH);\n}\n\n/**\n * Publishable, like a Stripe pk_ or an Intercom app id: it ships in the\n * browser on the host's site, so it grants nothing beyond opening a support\n * conversation with that organization.\n */\nexport const API_KEY_PREFIX = \"median_pk_\";\n\n/**\n * The only credential a new Median integration needs. The public id is part\n * of the value so server-side SDKs can safely hand the widget its\n * `median_pk_...` identifier without another environment variable. The\n * secret tail never leaves the server.\n */\nexport const MEDIAN_KEY_PREFIX = \"median_key_\";\n\n/** Purpose-separated signing material is derived from the Median key. */\nexport const MEDIAN_SIGNATURE_PREFIX = \"median_sig_\";\n\nexport const MEDIAN_KEY_PUBLIC_ID_LENGTH = 32;\nexport const MEDIAN_KEY_SECRET_LENGTH = 64;\n\n/** Enough separate credentials for production, staging, and local work. */\nexport const MAX_MEDIAN_KEYS_PER_ORG = 10;\nexport const MEDIAN_KEY_NAME_MAX_LENGTH = 40;\n\n/**\n * The other kind, and the opposite of the one above: this one never goes near\n * a browser. It lives on the host's server, where it signs the id of whoever\n * is signed in, and anybody holding it can claim to be any of their users.\n */\nexport const SIGNING_KEY_PREFIX = \"median_sk_\";\n\n/**\n * What the REST API takes. Secret like the signing key: it lives on the\n * host's server and can read and write their whole inbox's visitor side, so\n * shipping one in a browser is handing the room key to the lobby.\n */\nexport const SECRET_API_KEY_PREFIX = \"median_api_\";\n\n/**\n * What webhook deliveries are signed with, one per endpoint. Held by us and\n * by the receiver, so the receiver can tell our POST from anybody else's.\n */\nexport const WEBHOOK_SECRET_PREFIX = \"median_whsec_\";\n\n/**\n * What tool endpoint calls are signed with, one per organization. Held by us\n * and by the host's server, so their handler can tell our POST from anybody\n * else's. The `@mediansh/agent-tools` package mirrors this literal in\n * `src/handler.ts`; change them together.\n */\nexport const TOOL_SECRET_PREFIX = \"median_toolsec_\";\n\n/**\n * What every prefix above starts with, and what it started with when the\n * product was called Portal.\n *\n * A key issued then is still a key. The rename went all the way to the wire\n * for anything minted from here on, but nothing already in somebody's\n * environment was invalidated by it, so every prefix has a twin and one rule\n * makes it. Read through `legacyPrefix` rather than writing `portal_` out\n * again: there is one family to retire, and this is the only line that names\n * it.\n */\nconst FAMILY = \"median_\";\nconst LEGACY_FAMILY = \"portal_\";\n\n/** The same prefix under the old name. */\nexport function legacyPrefix(prefix: string): string {\n return prefix.startsWith(FAMILY)\n ? `${LEGACY_FAMILY}${prefix.slice(FAMILY.length)}`\n : prefix;\n}\n\n/** Whether a credential carries this prefix under either name. */\nexport function hasPrefix(value: string, prefix: string): boolean {\n return value.startsWith(prefix) || value.startsWith(legacyPrefix(prefix));\n}\n\n/**\n * The prefix a credential actually carries, so anything derived from it\n * comes out in the family it belongs to. A legacy key's signing material\n * was derived as `portal_sig_` and is held that way, and re-deriving it as\n * `median_sig_` would stop it matching.\n */\nexport function prefixCarriedBy(value: string, prefix: string): string | null {\n if (value.startsWith(prefix)) return prefix;\n const legacy = legacyPrefix(prefix);\n return value.startsWith(legacy) ? legacy : null;\n}\n\n/**\n * The bounds on a session token, here rather than in the widget so the REST\n * API and the SDK refuse the same strings in the same words.\n */\nexport const SESSION_ID_MIN_LENGTH = 8;\nexport const SESSION_ID_MAX_LENGTH = 128;\n\n/**\n * A host's own id for a person. Long enough for a UUID or a Stripe style id\n * and short enough that nobody is putting a document in it.\n */\nexport const EXTERNAL_ID_MAX_LENGTH = 128;\n\n/**\n * How long a typing signal counts as live. Composers refresh it well inside\n * this while keys are hit, so anything older is a browser that went away.\n */\nexport const TYPING_TTL_MS = 12_000;\n\n/**\n * The bounds on a snooze. When it comes back is worked out on the client,\n * where the clock and the timezone are, so these only catch a number that\n * cannot have been meant: one already gone, or one so far out that nobody was\n * ever going to see the conversation again.\n */\nexport const SNOOZE_MIN_MS = 60_000;\nexport const SNOOZE_MAX_MS = 365 * 24 * 60 * 60_000;\n\n/** What is wrong with this snooze, in a sentence, or null if nothing is. */\nexport function snoozeIssue(until: number, now: number): string | null {\n if (!Number.isFinite(until)) return \"That is not a time to snooze until.\";\n if (until - now < SNOOZE_MIN_MS) {\n return \"Snoozing has to be for at least a minute.\";\n }\n if (until - now > SNOOZE_MAX_MS) {\n return \"Conversations can be snoozed for up to a year.\";\n }\n return null;\n}\n\n/**\n * A visitor's picture, or null if what we were handed cannot be one.\n *\n * https only. It ends up in an `<img>` on the inbox, and anything else is\n * either blocked as mixed content or was never a picture in the first place.\n * Whatever a host sends is theirs, so it is checked rather than trusted.\n */\nexport function cleanAvatarUrl(input: string | undefined): string | null {\n const url = input?.trim();\n if (!url || url.length > VISITOR_AVATAR_URL_MAX_LENGTH) return null;\n\n try {\n return new URL(url).protocol === \"https:\" ? url : null;\n } catch {\n return null;\n }\n}\n\n/**\n * An address, or null if what we were handed cannot be one.\n *\n * Deliberately barely a check: the shape of an address is the only thing\n * anyone can tell without sending mail to it. It is here because the agent\n * writes these down from whatever a customer typed, and \"looks like an\n * address\" should be decided in one place rather than at each caller.\n */\nexport function cleanEmail(input: string | undefined): string | null {\n const email = input?.trim();\n if (!email || email.length > VISITOR_EMAIL_MAX_LENGTH) return null;\n\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email) ? email : null;\n}\n\n/**\n * What to call a customer wherever a name is printed. Their name when we have\n * one, otherwise the number they were handed on arrival, so an anonymous\n * customer is \"Customer #12\" everywhere rather than one of a crowd of\n * anonymous visitors. The last fallback is for rows written before numbers\n * existed.\n */\nexport function customerDisplayName(\n name: string | null | undefined,\n customerNumber: number | null | undefined,\n): string {\n if (name) return name;\n if (customerNumber) return `Customer #${customerNumber}`;\n return \"Anonymous visitor\";\n}\n\n/** Collapses the whitespace someone pasted in without changing their words. */\nexport function normalizeAgentName(input: string): string {\n return input.replace(/\\s+/g, \" \").trim();\n}\n\n/** What is wrong with this agent name, in a sentence, or null if nothing is. */\nexport function agentNameIssue(name: string): string | null {\n if (name.length === 0) return \"Give your agent a name.\";\n if (name.length < AGENT_NAME_MIN_LENGTH) {\n return `Agent names need at least ${AGENT_NAME_MIN_LENGTH} characters.`;\n }\n if (name.length > AGENT_NAME_MAX_LENGTH) {\n return `Agent names have to be ${AGENT_NAME_MAX_LENGTH} characters or fewer.`;\n }\n return null;\n}\n\n/** What is wrong with this personality, or null. Empty is fine: quiet is a personality. */\nexport function personalityIssue(personality: string): string | null {\n if (personality.length > PERSONALITY_MAX_LENGTH) {\n return `Personalities have to be ${PERSONALITY_MAX_LENGTH} characters or fewer.`;\n }\n return null;\n}\n","\"use client\";\n\nimport { API_KEY_PREFIX, hasPrefix } from \"@median/backend/support\";\nimport { ConvexProvider, ConvexReactClient } from \"convex/react\";\nimport { useEffect, useState } from \"react\";\nimport { SupportLauncher } from \"../widget-launcher\";\nimport { WidgetSpotlight } from \"../widget-spotlight\";\nimport { WidgetToast } from \"../widget-toast\";\nimport type { SupportLauncherKind } from \"../types\";\nimport { useMedianOpenState, useRegisterMedianSupport } from \"./control\";\nimport { MEDIAN_DEPLOYMENT_URL } from \"./deployment\";\nimport type { MedianDiagnostics } from \"./diagnostics\";\nimport { MedianErrorBoundary } from \"./error-boundary\";\nimport { useRememberInstall } from \"./install\";\nimport { useMessageSound } from \"./use-message-sound\";\nimport { useSupportNavigation } from \"./use-navigation\";\nimport {\n isSignedIn,\n useMedianThread,\n type MedianUser,\n} from \"./use-median-thread\";\n\n/**\n * How often the open panel says so. Well inside the server's window for\n * counting somebody as present, so one dropped beat changes nothing.\n */\nconst PRESENCE_BEAT_MS = 45_000;\n\nexport type MedianSupportProps = {\n apiKey: string;\n /** Who is signed in on the host's site, if anyone. Shown to the team. */\n user?: MedianUser;\n /**\n * Whether a message carries what the browser already knows: time zone,\n * language, browser, OS, device, screen, and the page it was sent from.\n * On by default, because a team that has to ask for all six spends its\n * first reply asking. Pass `false` and none of it is read at all.\n */\n telemetry?: boolean;\n /**\n * Take questions from signed in people only.\n *\n * Until `user` says somebody is there, the panel asks them to sign in\n * instead of offering a composer, and no conversation is opened or read.\n * Pass `user` the moment you have it and the thread takes over.\n *\n * A rule about your own page, kept on your own page: it decides what this\n * widget offers, not what the API accepts. `user.id` with a signed `hash`\n * is the part nobody can talk their way around.\n */\n requireSignIn?: boolean;\n /**\n * Where your sign in lives, for the button on that panel.\n *\n * <MedianSupport\n * apiKey=\"median_pk_...\"\n * requireSignIn\n * onSignIn={() => router.push(\"/login\")}\n * />\n *\n * Without it the panel says the same thing and offers no button, which is\n * right for a site whose sign in is already the first thing on the page.\n */\n onSignIn?: () => void;\n /**\n * Ask for an email before a visitor's first message. On by default: an\n * anonymous thread cannot be followed up, and half of support is getting\n * back to somebody. Pass `false` and the composer opens straight away.\n *\n * The composer asks once per browser; the answer rides their first message\n * and lands with their details on your side. A visitor your `user` already\n * names an email for is never asked, and `medianSupport.reset()` asks the\n * next person instead.\n *\n * Your team can turn the question off from the dashboard without a\n * redeploy, and either side saying no is enough to keep it away.\n */\n requireEmail?: boolean;\n /**\n * Watch what goes wrong on the page, so a bug report arrives with the\n * error already attached instead of after four messages of asking.\n *\n * <MedianSupport apiKey=\"median_pk_...\" diagnostics />\n *\n * `true` listens for uncaught errors and rejected promises, which changes\n * nothing about how your page runs. The object form adds the two that wrap\n * something of yours:\n *\n * diagnostics={{ network: true, console: true }}\n *\n * `network` wraps window.fetch to note requests that failed, `console`\n * wraps console.error. Both call through to what they replaced, and both\n * are put back when the widget leaves the page.\n *\n * Off by default: this reads your program's error stream, which is yours\n * to offer rather than ours to take. Nothing is sent on its own. The\n * newest snapshot rides the next message the customer sends, and only when\n * something new is in it.\n */\n diagnostics?: MedianDiagnostics;\n /**\n * Anything about your own app worth having next to a bug report: a build,\n * a route, a flag. Read when a message is sent, so it can change as they\n * move around.\n *\n * <MedianSupport\n * apiKey=\"median_pk_...\"\n * diagnostics\n * appState={{ version: BUILD_SHA, plan: user.plan }}\n * />\n *\n * Twenty entries at most, and each one a line rather than a document.\n */\n appState?: Record<string, string | number | boolean>;\n /** Our button in the corner while it is closed, or nothing at all. */\n launcher?: SupportLauncherKind;\n /** Pass it, with `onOpenChange`, to hold the open state yourself. */\n open?: boolean;\n /** Every open and close, whoever asked for it. */\n onOpenChange?: (open: boolean) => void;\n /**\n * Take the visitor to a page, when one of your own tools asks for it.\n *\n * <MedianSupport apiKey=\"median_pk_...\" onNavigate={router.push} />\n *\n * Called with a path on your own site, already checked against this page's\n * origin. Your router decides what happens: pass `router.push` and the\n * conversation stays open across the move.\n *\n * Without it a tool that asks to navigate cannot, and says so in the\n * console while you are building. Nothing else needs it.\n */\n onNavigate?: (path: string) => void;\n};\n\n/**\n * The whole SDK, as one component. Drop it on a page with your publishable API\n * key and the launcher, the thread, the AI and the inbox on the other side are\n * all wired up:\n *\n * <MedianSupport apiKey=\"median_pk_...\" />\n *\n * Optionally say who is signed in, and the team sees a person rather than\n * another anonymous visitor:\n *\n * <MedianSupport\n * apiKey=\"median_pk_...\"\n * user={{ name: \"Ada\", email: \"ada@example.com\" }}\n * />\n *\n * There are three states rather than two: open, closed as a button in the\n * corner, and not on the page at all. Take the corner back and open it from\n * your own nav, from anywhere in your app, with no state to thread through:\n *\n * <MedianSupport apiKey=\"median_pk_...\" launcher=\"hidden\" />\n *\n * const support = useMedianSupport();\n * <button onClick={support.open}>Contact us</button>\n *\n * On a site nobody uses signed out, say so and the panel asks them to sign in\n * rather than opening a conversation with a stranger:\n *\n * <MedianSupport\n * apiKey=\"median_pk_...\"\n * user={session?.user}\n * requireSignIn\n * onSignIn={() => router.push(\"/login\")}\n * />\n *\n * When somebody signs out, `medianSupport.reset()` forgets the conversation\n * along with them, so the next person at the keyboard starts fresh.\n *\n * That is the surface, on purpose. Everything else a support widget could be\n * asked to do is either our decision or a setting on the dashboard, so it can\n * change without every host having to redeploy.\n *\n * It brings its own connection, so it works on pages (and sites) that have\n * never heard of Convex.\n */\nexport function MedianSupport(props: MedianSupportProps) {\n return <MedianSupportPreview {...props} />;\n}\n\n/**\n * The same widget with the handful of knobs Median's own pages need: the\n * gallery pins it inside a frame rather than to the viewport, and `defaultOpen`\n * is there for a screenshot or a page that has room for nothing else.\n *\n * Nothing uses `defaultOpen` today, on purpose. Everywhere the widget is shown\n * it starts as the button, because that is the state a host's visitors meet it\n * in and the morph out of the corner is most of what there is to look at.\n *\n * Not exported from the package. A host gets `MedianSupport` and nothing else,\n * which is why these can exist at all without becoming promises we have to\n * keep.\n */\nexport function MedianSupportPreview({\n defaultOpen = false,\n className,\n ...props\n}: MedianSupportProps & {\n /** Where it starts, until anything opens or closes it. */\n defaultOpen?: boolean;\n className?: string;\n}) {\n return (\n <MedianErrorBoundary>\n <MedianConnection\n {...props}\n defaultOpen={defaultOpen}\n className={className}\n />\n </MedianErrorBoundary>\n );\n}\n\ntype ConnectionProps = MedianSupportProps & {\n defaultOpen: boolean;\n className?: string;\n};\n\n/**\n * A key with the wrong shape would only ever fail later, quietly, as a widget\n * that never appears. Say so now, in the console, while the person who pasted\n * it is still looking at this page.\n *\n * The key is truncated in the message: if what was pasted is a secret from\n * somewhere else, the console should not repeat all of it.\n */\nfunction useApiKeyShapeWarning(apiKey: string) {\n useEffect(() => {\n if (hasPrefix(apiKey, API_KEY_PREFIX)) return;\n\n const shown =\n apiKey === \"\"\n ? \"an empty string\"\n : `\"${apiKey.length > 16 ? `${apiKey.slice(0, 16)}…` : apiKey}\"`;\n console.error(\n `Median: the apiKey passed to <MedianSupport> is ${shown}, which does not look like the browser-safe id from publicKeyFromMedianKey(MEDIAN_KEY). It should start with ${API_KEY_PREFIX}.`,\n );\n }, [apiKey]);\n}\n\nfunction MedianConnection(props: ConnectionProps) {\n // Its own client rather than the app's, so the widget is self contained on a\n // host site. Lazy so a missing URL fails at render, into the boundary.\n const [client] = useState(() => {\n if (!MEDIAN_DEPLOYMENT_URL) {\n throw new Error(\n \"The Median widget was built without a deployment URL. Set NEXT_PUBLIC_CONVEX_URL.\",\n );\n }\n return new ConvexReactClient(MEDIAN_DEPLOYMENT_URL);\n });\n\n return (\n <ConvexProvider client={client}>\n <MedianLauncher {...props} />\n </ConvexProvider>\n );\n}\n\nfunction MedianLauncher({\n apiKey,\n user,\n telemetry,\n diagnostics,\n appState,\n requireSignIn = false,\n onSignIn,\n requireEmail = true,\n launcher,\n defaultOpen,\n open,\n onOpenChange,\n onNavigate,\n className,\n}: ConnectionProps) {\n useRegisterMedianSupport();\n useApiKeyShapeWarning(apiKey);\n // So a crash screen can file a report from a tree this widget is no\n // longer in. See `install.ts`.\n useRememberInstall(apiKey, user);\n\n const [isOpen, setOpen] = useMedianOpenState({\n open,\n defaultOpen,\n onOpenChange,\n });\n\n // Whoever is at the keyboard has not said who they are, and this host only\n // takes questions from people who have.\n const isLocked = requireSignIn && !isSignedIn(user);\n\n const {\n presence,\n messages,\n ask,\n conversationId,\n isLoading,\n isSending,\n askForEmail,\n setVisitorEmail,\n awaitingHuman,\n rating,\n unreadCount,\n markSeen,\n reportPresence,\n sendError,\n send,\n setTyping,\n } = useMedianThread(\n apiKey,\n user,\n telemetry,\n isLocked,\n diagnostics,\n appState,\n requireEmail,\n );\n\n // Open is looking. It runs again as replies land, so a conversation read\n // live never builds up a count behind the panel that is showing it.\n useEffect(() => {\n if (isOpen) markSeen();\n }, [isOpen, markSeen]);\n\n // The same fact, told to the server as a heartbeat: on open, on coming\n // back to the tab, and every so often in between. It is what keeps a\n // reply they are watching arrive from also landing in their email.\n useEffect(() => {\n if (!isOpen) return;\n\n const beat = () => {\n if (document.visibilityState === \"visible\") reportPresence();\n };\n beat();\n const interval = setInterval(beat, PRESENCE_BEAT_MS);\n document.addEventListener(\"visibilitychange\", beat);\n window.addEventListener(\"focus\", beat);\n return () => {\n clearInterval(interval);\n document.removeEventListener(\"visibilitychange\", beat);\n window.removeEventListener(\"focus\", beat);\n };\n }, [isOpen, reportPresence]);\n\n // Whether the panel is up or not: somebody who asked to be taken somewhere\n // and then closed the panel still asked.\n const direction = useSupportNavigation({\n messages,\n ask,\n // Signing in is the case this exists for. A page that has been watching\n // an empty query is handed the account's whole history the moment the\n // widget can say who they are, and an instruction from a conversation\n // they had last week is not an instruction to anybody now.\n conversationId,\n // Locked, there is no thread being read at all, so the first one to\n // arrive after somebody signs in is history like any other first look.\n isLoading: isLoading || isLocked,\n onNavigate,\n });\n\n // Also whether the panel is up or not, and for the same reason as the ring:\n // a reply landing behind a closed panel is the one most worth hearing.\n useMessageSound({\n messages,\n conversationId,\n isLoading: isLoading || isLocked,\n });\n\n // Until the config lands there is no name to put on the header, so the\n // launcher waits as a button and the panel shimmers if opened.\n const resolvedPresence = presence ?? {\n name: \"Support\",\n status: \"Connecting\",\n team: [],\n };\n\n // Whose name goes on the line about the page moving. The AI is the one that\n // called the tool, so it is the one that says so.\n const mover = resolvedPresence.team.find((member) => member.kind === \"ai\");\n\n return (\n <>\n {/* Keyed on the message that asked, so a second instruction is a second\n ring and a second line rather than a stale one carrying on. Two\n keys rather than one: these are siblings, and one message asking for\n both would otherwise hand them the same name. */}\n {direction?.selector != null && (\n <WidgetSpotlight\n key={`ring:${direction.key}`}\n selector={direction.selector}\n />\n )}\n {direction?.didNavigate === true && mover !== undefined && (\n <WidgetToast key={`moved:${direction.key}`} agent={mover}>\n {mover.name} navigated you here\n </WidgetToast>\n )}\n\n <SupportLauncher\n presence={resolvedPresence}\n messages={messages}\n // Passed through as a promise, so the composer can hold the draft on\n // a failed send and clear it on a delivered one.\n onSend={send}\n onTypingChange={setTyping}\n isLoading={isLoading}\n isLocked={isLocked}\n onSignIn={onSignIn}\n askForEmail={askForEmail}\n onSubmitEmail={setVisitorEmail}\n isSending={isSending}\n awaitingHuman={awaitingHuman}\n rating={rating}\n unreadCount={unreadCount}\n notice={sendError}\n launcher={launcher}\n // Always controlled from here: the panel answers to the host's own\n // prop, to their trigger anywhere on the page, and to its own button,\n // and this is where those three are settled into one answer.\n open={isOpen}\n onOpenChange={setOpen}\n className={className}\n />\n </>\n );\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { ChatCircleDots } from \"@/components/icons\";\nimport { cn } from \"@/lib/utils\";\nimport {\n clipOrigin,\n closedClip,\n type LauncherSide,\n} from \"./launcher-position\";\nimport { SupportWidget } from \"./support-widget\";\nimport { BUTTON_Y, useLauncherDrag } from \"./use-launcher-drag\";\nimport { useWidgetSheet } from \"./use-widget-sheet\";\nimport type {\n SupportLauncherKind,\n SupportMessage,\n SupportPresence,\n SupportRating,\n} from \"./types\";\n\nconst DEFAULT_WIDTH = \"24rem\";\nconst DEFAULT_HEIGHT = \"34rem\";\nconst DEFAULT_BUTTON_SIZE = \"3.5rem\";\n\n/**\n * Bigger, for a thread you are actually reading rather than glancing at.\n *\n * More of the growth goes into the height than the width, because that is the\n * axis a conversation runs out of: room to see what was said, rather than room\n * per line. The width still moves, and moving it re-wraps every bubble as it\n * goes, so it is kept to the smaller number of the two.\n */\nconst EXPANDED_WIDTH = \"30rem\";\nconst EXPANDED_HEIGHT = \"46rem\";\n\n/**\n * The morph, as a clip rather than a resize.\n *\n * The panel is always laid out at its full size. Closed, it is clipped down to\n * a circle in the corner the size of the button; open, the clip is the panel\n * itself. Only the clip travels.\n *\n * This matters. Animating width and height means the browser lays out the whole\n * panel again on every frame, and the message scroller measures its viewport\n * every time that happens, so it fights the animation the entire way. Clipping\n * touches no layout at all: nothing inside ever moves, reflows or gets measured,\n * it is simply revealed.\n *\n * Where it grows out of is `launcher-position.ts`. The button can be dragged\n * anywhere up or down either edge, and the panel has to follow it there.\n */\n/**\n * The panel's own `rounded-xl`, to the same decimal.\n *\n * The clip used to be a hair rounder than the panel inside it, which is why\n * the panel had to give up its border: two curves that nearly agree meet in a\n * hairline, and a hairline that moves is the thing that makes an animation\n * look broken. Same number, one curve, and the border can come back.\n */\nconst PANEL_RADIUS = \"0.75rem\";\n\nconst OPEN_CLIP = `inset(0px 0px 0px 0px round ${PANEL_RADIUS})`;\n\n/**\n * The button's height inside the box.\n *\n * Measured and written by the drag before paint, because it is the difference\n * between two lengths taken against different boxes and no amount of `calc`\n * gets at that. The fallback is the resting place of a widget nobody has\n * moved, which is the one the server rendered and the only one on screen\n * before the measurement lands.\n */\nconst buttonY = (buttonSize: string) =>\n `var(${BUTTON_Y}, calc(100% - ${buttonSize}))`;\n\n/**\n * How far off the edges the whole thing sits. Close enough to read as parked\n * against the side rather than floating near it, and still clear of the corner\n * radius on a phone.\n */\nconst MARGIN = \"1rem\";\n\n/**\n * The bounce rides on a scale, not on the clip.\n *\n * A clip cannot show an overshoot: carrying past \"fully revealed\" only means\n * clipping outside the box, which looks like nothing at all. So the panel comes\n * up the last few percent of its size as it opens, and that is what carries a\n * touch too far and settles back. Around four pixels on a panel this wide,\n * which is about right for something you feel rather than watch.\n *\n * Scale is composited, so this costs the same as the clip does: nothing.\n */\nconst CLOSED_SCALE = \"scale(0.94)\";\nconst OPEN_SCALE = \"scale(1)\";\n\n/**\n * Where the panel comes from when there is no button for it to come from.\n *\n * A morph needs two shapes and one of them has gone. Clipping down to a circle\n * nobody can see is not an origin, it is a place the panel happens to vanish\n * at, and growing out of it reads as the corner deciding to produce a panel.\n * So it rises the last few pixels into place instead, which is what everything\n * that arrives out of nothing does.\n */\nconst RISEN = \"translateY(0.5rem) scale(0.98)\";\n\n/**\n * The shape, shared by the panel and the shadow layer behind it. One function\n * so the two cannot drift a frame apart.\n */\nconst shape = (\n isOpen: boolean,\n buttonSize: string,\n side: LauncherSide,\n hasBubble: boolean,\n) =>\n hasBubble\n ? {\n clipPath: isOpen\n ? OPEN_CLIP\n : closedClip(side, buttonY(buttonSize), buttonSize),\n transform: isOpen ? OPEN_SCALE : CLOSED_SCALE,\n // The point it grows out of, so the closed circle stays put under the\n // button rather than shrinking towards the middle.\n transformOrigin: clipOrigin(side, buttonY(buttonSize), buttonSize),\n }\n : { clipPath: OPEN_CLIP, transform: isOpen ? \"none\" : RISEN };\n\n/**\n * The two properties the morph is actually about, named rather than `all`.\n *\n * `transform-origin` is the one deliberately left out. It moves whenever the\n * button does, and easing a shape's origin across a panel while the shape\n * itself holds still is a swim, not a morph.\n */\nconst MORPH =\n \"transition-[clip-path,transform] duration-450 ease-spring motion-reduce:transition-none\";\n\n/**\n * The other one, for a widget with no button. Shorter and a pure deceleration:\n * a spring's overshoot is the button's swagger, and a panel that simply\n * appeared has not earned it.\n */\nconst ARRIVE =\n \"transition-transform duration-200 ease-out-quint motion-reduce:transition-none\";\n\n/**\n * The phone's version of the morph: none. A panel about to be the whole\n * screen has no corner to grow out of, so it rises into place as a sheet,\n * which is the shape every thumb has already been taught. A touch longer than\n * ARRIVE because it travels further, and the same pure deceleration.\n */\nconst SHEET =\n \"fixed transition-[opacity,transform] duration-300 ease-out-quint motion-reduce:transition-none\";\n\n/** Where the sheet waits: a little below its feet, ready to come up. */\nconst SHEET_RISEN = \"translateY(2rem)\";\n\n/**\n * A sheet is the screen, so the card's own dress goes: no corners against\n * edges that already have their own, no border where the screen ends, and\n * room for the notch and the home bar on hosts that let content under them.\n *\n * The home bar's room goes back while the keyboard has the bottom of the\n * screen, which is the sheet's own attribute for it: the panel's foot is then\n * the keyboard's top edge, and the inset would hold the composer a thumb's\n * width above the keys for no reason. It transitions rather than snapping,\n * since the keyboard is on its way in while this changes its mind.\n */\nconst SHEET_PANEL = cn(\n \"rounded-none border-0 pt-[env(safe-area-inset-top)] pb-[env(safe-area-inset-bottom)]\",\n \"transition-[padding] duration-200 ease-out motion-reduce:transition-none\",\n \"[[data-keyboard=up]_&]:pb-0\",\n);\n\n/**\n * The three things about the box itself that move: whether it is there at all,\n * and how wide and tall it is.\n *\n * One declaration rather than two named ones, because they are one property\n * list. Two classes reads better and does not work: both set\n * `transition-property`, so the second simply replaces the first.\n *\n * With no button in the corner there is nothing to show while it is closed, so\n * the whole thing fades with the morph. Quicker than the morph either way: the\n * clip still carries the panel out of the corner and back into it, but the few\n * frames where that is an empty circle are spent at zero.\n *\n * What is not in the list is the travel between corners. That is an animation\n * on the node rather than a transition on this class, so a drag can move the\n * box every frame without a transition trying to catch up with it.\n *\n * `ease-out` rather than the app's usual `ease-out-quint`, which is the one\n * exception in here and is about what is moving. Quint spends about seven\n * tenths of the distance in the first quarter of the time, which is what makes\n * it feel quick on something composited. This is a size, so every one of those\n * frames lays the panel out again and re-wraps the text in it, and thirty odd\n * pixels of that per frame reads as the panel stuttering rather than growing.\n * A gentler curve over slightly longer moves the same distance in far more\n * even steps.\n */\nconst BOX =\n \"transition-[opacity,width,height] duration-300 ease-out motion-reduce:transition-none\";\n\n/**\n * The button, and the panel it turns into.\n *\n * The shadow sits on a layer above the clip rather than on it, because a filter\n * is painted before a clip and would otherwise be cut away with everything\n * else. On the parent it reads the clipped shape's alpha instead, so the shadow\n * follows the corner round as it opens.\n *\n * Uncontrolled by default. Pass `open` and `onOpenChange` to drive it yourself,\n * for a host that opens support from its own menu. Pass `launcher=\"hidden\"`\n * too and the corner is theirs again: nothing is on the page until they ask\n * for it.\n */\nexport function SupportLauncher({\n presence,\n messages,\n onSend,\n onTypingChange,\n isLoading = false,\n isLocked = false,\n onSignIn,\n askForEmail = false,\n onSubmitEmail,\n isSending = false,\n awaitingHuman = false,\n rating,\n unreadCount = 0,\n notice,\n showBadge = true,\n width = DEFAULT_WIDTH,\n height = DEFAULT_HEIGHT,\n expandedWidth = EXPANDED_WIDTH,\n expandedHeight = EXPANDED_HEIGHT,\n buttonSize = DEFAULT_BUTTON_SIZE,\n launcher = \"bubble\",\n defaultOpen = false,\n open,\n onOpenChange,\n className,\n}: {\n presence: SupportPresence;\n messages: SupportMessage[];\n /** Awaited by the composer, which keeps the draft if it rejects. */\n onSend?: (body: string, files: File[]) => unknown;\n /** The visitor's own typing, throttled by the composer. */\n onTypingChange?: (isTyping: boolean) => unknown;\n isLoading?: boolean;\n /** Nobody is signed in, on a host that asks people to be. */\n isLocked?: boolean;\n /** Takes the visitor to the host's own sign in. */\n onSignIn?: () => void;\n /**\n * The composer asks for an email before a first message. Off here by\n * default: only the SDK decides it, from its prop and the team's switch.\n */\n askForEmail?: boolean;\n /** What the composer's question does with a good answer. */\n onSubmitEmail?: (email: string) => void;\n /** Holds the send button while a message is on its way. */\n isSending?: boolean;\n /** The agent has called for a person and nobody has picked it up yet. */\n awaitingHuman?: boolean;\n /** The finished conversation's one question, while it is worth asking. */\n rating?: SupportRating | null;\n /** Replies that arrived while the panel was closed. Sits on the button. */\n unreadCount?: number;\n /** One line above the composer, for a send that went wrong. */\n notice?: string | null;\n showBadge?: boolean;\n /** Any CSS length. The panel never grows past the viewport whatever this says. */\n width?: string;\n height?: string;\n /** What the header's own control grows it to, and back from. */\n expandedWidth?: string;\n expandedHeight?: string;\n /** The closed circle, and the corner the panel opens out of. */\n buttonSize?: string;\n /** Our button while it is closed, or nothing at all. */\n launcher?: SupportLauncherKind;\n /** Uncontrolled starting state. Ignored when `open` is passed. */\n defaultOpen?: boolean;\n /** Pass it to control the panel yourself. */\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Lands on the outer box. Override the default corner from here. */\n className?: string;\n}) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isOpen = open ?? uncontrolledOpen;\n const hasBubble = launcher === \"bubble\";\n\n // Kept while it is closed rather than reset, so a panel that was too small\n // once is not too small again the next time it is opened. Nothing is stored\n // between visits: it is a reach for more room right now, not a setting.\n const [isExpanded, setExpanded] = useState(false);\n\n const launcherRef = useRef<HTMLButtonElement>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n const boxRef = useRef<HTMLDivElement>(null);\n\n // Where it lives, and how it gets moved. The button while it is closed, the\n // panel by its own header once it is open: one position, held by whichever\n // end of the widget is on the page at the time.\n const drag = useLauncherDrag({\n boxRef,\n buttonRef: launcherRef,\n margin: MARGIN,\n enabled: isOpen || hasBubble,\n subject: isOpen ? \"panel\" : \"button\",\n });\n\n // On a phone the open panel is the screen, not a card: it leaves the box,\n // covers the viewport, and follows the keyboard. The button and the box it\n // lives in never hear about any of this.\n const isSheet = useWidgetSheet({ boxRef, panelRef, isOpen });\n // Whatever had focus when the panel came up, so closing can hand it back.\n // Our own button, usually; the host's own trigger when there is no button.\n const opener = useRef<HTMLElement | null>(null);\n // Focus only moves once the panel has actually changed state. Without this a\n // widget that starts open would steal focus on page load.\n const wasOpen = useRef(isOpen);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (open === undefined) setUncontrolledOpen(next);\n onOpenChange?.(next);\n },\n [open, onOpenChange],\n );\n\n const close = useCallback(() => setOpen(false), [setOpen]);\n\n // Escape closes, wherever focus happens to be inside the panel.\n useEffect(() => {\n if (!isOpen) return;\n\n function handleKeyDown(event: KeyboardEvent) {\n if (event.key === \"Escape\") close();\n }\n\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, close]);\n\n // Opening moves focus into the panel rather than onto the composer, so a\n // keyboard carries on from here without a phone throwing up its keyboard.\n // Closing hands it back where it came from.\n //\n // In an effect rather than in the handlers, because whichever end focus is\n // going to is still `inert` until the state that opened or closed it has\n // rendered, and focusing an inert element does nothing at all. It also has to\n // run for a host driving `open` themselves, who never touches a handler here.\n useEffect(() => {\n if (wasOpen.current === isOpen) return;\n wasOpen.current = isOpen;\n\n if (isOpen) {\n const active = document.activeElement;\n opener.current = active instanceof HTMLElement ? active : null;\n // Without `preventScroll` the browser scrolls the host's page to bring\n // the panel into view, and a panel that covers the screen is already in\n // view: all it does is drag the page out from under the sheet.\n panelRef.current?.focus({ preventScroll: true });\n return;\n }\n\n const back = launcherRef.current ?? opener.current;\n opener.current = null;\n // Only somewhere focus can actually land, and only if it is still on the\n // page: a menu that closed behind the panel is not there to take it back,\n // and leaving focus where it is beats throwing it at the body.\n if (back && back !== document.body && back.isConnected) back.focus();\n }, [isOpen]);\n\n return (\n // The box is panel sized whether it is open or not, so it never lets a\n // click through to the host's page. Only what is actually on screen takes\n // pointer events back.\n <div\n ref={boxRef}\n // The hook the published stylesheet scopes its resets to. On a page\n // without Tailwind there is no preflight, so the package ships one that\n // reaches no further than this box and its siblings below.\n data-median-widget=\"\"\n style={{\n width: isExpanded ? expandedWidth : width,\n height: isExpanded ? expandedHeight : height,\n ...drag.style,\n }}\n className={cn(\n \"pointer-events-none fixed z-50\",\n // Twice the margin, so the panel is inset by the same gap on both\n // sides however close to the edge the button has been put.\n //\n // Against whatever is positioning it as well as against the window,\n // which are the same thing for a widget on a host's page and are not\n // for one pinned inside a frame. Expanded is what finds the\n // difference: it is bigger than some of the boxes this turns up in,\n // and a panel hanging out the side of its own preview is not a panel\n // anybody is going to trust on their site.\n \"max-h-[min(calc(100svh-2rem),calc(100%-2rem))] max-w-[min(calc(100vw-2rem),calc(100%-2rem))]\",\n BOX,\n // Closed with no button on it, there is nothing here to see. The panel\n // stays mounted and stays `inert`, so the conversation is still live\n // and nothing behind it can be tabbed into by mistake.\n !hasBubble && !isOpen && \"opacity-0\",\n // The body wears the closed hand while a drag is on, which covers the\n // host's page. It does not reach in here, where the composer asks for\n // a caret and every button asks for a pointer, so this says it again\n // for everything inside.\n drag.isMoving && \"cursor-grabbing **:cursor-grabbing\",\n className,\n )}\n >\n {/* The shadow, on an empty layer of its own behind the panel.\n\n It cannot go on the panel, because a filter is painted before a clip\n and would be cut away with everything else. It also cannot go on a\n parent of the panel, which is where it used to be: a filter anywhere\n above a scrolling area stops the browser scrolling it the cheap way\n and makes it re-paint the whole thread on every frame instead, which\n is what made the thread stutter.\n\n So it goes on a sibling with nothing inside it. Same shape, same\n timing, no children to re-paint. */}\n {/* Not when the panel is a sheet: a full screen has no edges to throw a\n shadow past, and the closed circle it would leave in the corner sits\n entirely under the button, which carries a shadow of its own. */}\n {!isSheet && (\n <div aria-hidden className=\"absolute inset-0 drop-shadow-xl\">\n <div\n style={shape(isOpen, buttonSize, drag.side, hasBubble)}\n className={cn(\n \"size-full bg-card\",\n hasBubble ? MORPH : ARRIVE,\n drag.isMoving && \"transition-none\",\n )}\n />\n </div>\n )}\n\n <div\n ref={panelRef}\n tabIndex={-1}\n inert={!isOpen}\n // As a sheet it wears no clip at all: it fades and rises as one piece,\n // and the keyboard fit writes its edges straight onto the node.\n style={\n isSheet\n ? { transform: isOpen ? \"none\" : SHEET_RISEN }\n : shape(isOpen, buttonSize, drag.side, hasBubble)\n }\n className={cn(\n \"absolute inset-0 outline-none\",\n isSheet\n ? [SHEET, !isOpen && \"opacity-0\"]\n : [\n hasBubble ? MORPH : ARRIVE,\n // While it is travelling, the clip changes corners and there\n // is nothing to animate about that. Transitioning it wipes\n // the panel across the box on the way from one circle to the\n // other.\n drag.isMoving && \"transition-none\",\n ],\n isOpen && \"pointer-events-auto\",\n )}\n >\n <SupportWidget\n presence={presence}\n messages={messages}\n onSend={onSend}\n onTypingChange={onTypingChange}\n onClose={close}\n isExpanded={isExpanded}\n // A sheet is already every pixel there is, so a control that asks\n // for more would be a lie with an icon.\n onToggleExpanded={\n isSheet ? undefined : () => setExpanded((current) => !current)\n }\n isLoading={isLoading}\n isLocked={isLocked}\n onSignIn={onSignIn}\n askForEmail={askForEmail}\n onSubmitEmail={onSubmitEmail}\n isSending={isSending}\n awaitingHuman={awaitingHuman}\n rating={rating}\n notice={notice}\n showBadge={showBadge}\n // The header is the handle. Same four handlers the button wears,\n // and only one of the two is ever reachable at a time. A sheet has\n // nowhere to be dragged to, so there it is only a header.\n grabHandlers={isSheet ? undefined : drag.dragHandlers}\n isMoving={drag.isMoving}\n // Its own border and its own radius, which the clip is cut to match.\n // The panel is a card sitting on somebody else's page, and a card\n // here has an edge like a card anywhere else in the app. Unless it\n // is the screen, which has neither.\n className={isSheet ? SHEET_PANEL : undefined}\n />\n </div>\n\n {/* A sibling rather than a child of the clip, so its focus ring is not\n clipped away with it. Gone entirely when the host is doing the\n opening: an invisible button in the corner of somebody else's page\n would still be there to tab into. */}\n {hasBubble && (\n <button\n ref={launcherRef}\n type=\"button\"\n {...drag.dragHandlers}\n draggable={false}\n onClick={() => {\n // The pointerup that ended a drag still arrives here as a click.\n // Opening on it would mean the panel came up every time somebody\n // moved the button, which is the one thing they did not ask for.\n if (drag.swallowClick()) return;\n setOpen(true);\n }}\n aria-expanded={isOpen}\n aria-label={\n unreadCount > 0\n ? `Chat with ${presence.name} support, ${unreadCount} unread`\n : `Chat with ${presence.name} support`\n }\n inert={isOpen}\n style={{\n width: buttonSize,\n height: buttonSize,\n // The same height the clip is cut at, from the same variable, so\n // the button and the circle under it cannot end up a pixel apart.\n top: buttonY(buttonSize),\n [drag.side]: 0,\n }}\n className={cn(\n \"absolute grid place-items-center rounded-full\",\n \"bg-primary text-primary-foreground shadow-lg outline-none\",\n // Struck off its own foreground rather than the border token. The\n // button is the inverse of the page it sits on, so `border` is a\n // colour picked to separate a card from the background and lands\n // invisible here: white at a tenth, over white. This reads as a\n // rim in both, because it is a tenth of whatever the icon is.\n \"border border-primary-foreground/15\",\n // Named properties rather than `all`, and the names matter.\n //\n // Its height inside the box is a real length now, and it changes\n // the instant a drag is committed. Under `transition-all` that is\n // an animatable property, so the button eased to its new height\n // over three hundred milliseconds after a two hundred millisecond\n // delay, while the clipped circle it is supposed to be sitting on\n // moved immediately. Half a second of a button beside its own\n // shadow rather than on it.\n //\n // Nothing about where it is should ever animate. The box carries\n // it, in one animation, and that is the only travel there is.\n \"transition-[opacity,transform,filter] motion-reduce:transition-none\",\n \"hover:brightness-125 focus-visible:ring-3 focus-visible:ring-ring/50\",\n // The browser must not claim the gesture for scrolling, or a drag\n // on a phone moves the page instead of the button.\n \"touch-none\",\n isOpen\n ? // Gone before the clip has opened far enough to show what is\n // underneath it.\n \"scale-90 opacity-0 duration-150 ease-out-quint\"\n : \"pointer-events-auto scale-100 opacity-100 delay-200 duration-300 ease-spring\",\n // Nothing on it is selectable, and it is not a thing the browser\n // may pick up and drag as an image either. Both of those end the\n // same way: the gesture becomes the browser's instead of ours.\n \"select-none\",\n // No scale while it is being dragged, and not only because the\n // press-in belongs to a tap. A scaled button measures scaled, and\n // every sum here starts from where its edges are.\n // A pointer at rest, not a grab hand. The button is a button first\n // and a thing you can move second, and hovering it should say the\n // first of those. The grab shows up once one is actually underway.\n !isOpen &&\n (drag.isMoving ? \"cursor-grabbing\" : \"cursor-pointer active:scale-95\"),\n )}\n >\n <ChatCircleDots className=\"size-6\" />\n\n {/* What arrived while they were not looking. The count is already in\n the button's own label, so this is only the picture of it.\n\n Struck off `background` rather than a fixed white, so it inverts\n with the theme and stays legible on the red either way. */}\n {unreadCount > 0 && (\n <span\n aria-hidden\n className={cn(\n \"absolute -top-0.5 -right-0.5 grid min-w-5 place-items-center rounded-full px-1\",\n \"bg-destructive text-xs font-semibold text-background tabular-nums\",\n \"ring-2 ring-card\",\n \"animate-in duration-300 ease-spring fade-in-0 zoom-in-50 motion-reduce:animate-none\",\n )}\n >\n {unreadCount > 9 ? \"9+\" : unreadCount}\n </span>\n )}\n </button>\n )}\n </div>\n );\n}\n","import * as e from \"react\";\nconst w = e.forwardRef((l, s) => {\n const {\n alt: r,\n color: a = \"currentColor\",\n size: t = \"1em\",\n weight: o = \"regular\",\n mirrored: i = !1,\n children: n,\n weights: c,\n ...m\n } = l;\n return /* @__PURE__ */ e.createElement(\n \"svg\",\n {\n ref: s,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: t,\n height: t,\n fill: a,\n viewBox: \"0 0 256 256\",\n transform: i ? \"scale(-1, 1)\" : void 0,\n ...m\n },\n !!r && /* @__PURE__ */ e.createElement(\"title\", null, r),\n n,\n c.get(o)\n );\n});\nw.displayName = \"SSRBase\";\nexport {\n w as default\n};\n","import * as r from \"react\";\nimport e from \"../lib/SSRBase.es.js\";\nimport t from \"../defs/Alarm.es.js\";\nconst o = r.forwardRef((a, m) => /* @__PURE__ */ r.createElement(e, { ref: m, ...a, weights: t }));\no.displayName = \"AlarmIcon\";\nconst f = o;\nexport {\n f as Alarm,\n o as AlarmIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,36A100,100,0,1,0,228,136,100.11,100.11,0,0,0,128,36Zm0,176a76,76,0,1,1,76-76A76.08,76.08,0,0,1,128,212ZM32.49,72.49a12,12,0,1,1-17-17l32-32a12,12,0,1,1,17,17Zm208,0a12,12,0,0,1-17,0l-32-32a12,12,0,1,1,17-17l32,32A12,12,0,0,1,240.49,72.49ZM176,124a12,12,0,0,1,0,24H128a12,12,0,0,1-12-12V88a12,12,0,0,1,24,0v36Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,136a88,88,0,1,1-88-88A88,88,0,0,1,216,136Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,40a96,96,0,1,0,96,96A96.11,96.11,0,0,0,128,40Zm0,176a80,80,0,1,1,80-80A80.09,80.09,0,0,1,128,216ZM61.66,37.66l-32,32A8,8,0,0,1,18.34,58.34l32-32A8,8,0,0,1,61.66,37.66Zm176,32a8,8,0,0,1-11.32,0l-32-32a8,8,0,0,1,11.32-11.32l32,32A8,8,0,0,1,237.66,69.66ZM184,128a8,8,0,0,1,0,16H128a8,8,0,0,1-8-8V80a8,8,0,0,1,16,0v48Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M61.66,37.66l-32,32A8,8,0,0,1,18.34,58.34l32-32A8,8,0,0,1,61.66,37.66Zm176,20.68-32-32a8,8,0,0,0-11.32,11.32l32,32a8,8,0,0,0,11.32-11.32ZM224,136a96,96,0,1,1-96-96A96.11,96.11,0,0,1,224,136Zm-32,0a8,8,0,0,0-8-8H136V80a8,8,0,0,0-16,0v56a8,8,0,0,0,8,8h56A8,8,0,0,0,192,136Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,42a94,94,0,1,0,94,94A94.11,94.11,0,0,0,128,42Zm0,176a82,82,0,1,1,82-82A82.1,82.1,0,0,1,128,218ZM60.24,36.24l-32,32a6,6,0,1,1-8.48-8.48l32-32a6,6,0,1,1,8.48,8.48Zm176,32a6,6,0,0,1-8.48,0l-32-32a6,6,0,0,1,8.48-8.48l32,32A6,6,0,0,1,236.24,68.24ZM184,130a6,6,0,0,1,0,12H128a6,6,0,0,1-6-6V80a6,6,0,0,1,12,0v50Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,40a96,96,0,1,0,96,96A96.11,96.11,0,0,0,128,40Zm0,176a80,80,0,1,1,80-80A80.09,80.09,0,0,1,128,216ZM61.66,37.66l-32,32A8,8,0,0,1,18.34,58.34l32-32A8,8,0,0,1,61.66,37.66Zm176,32a8,8,0,0,1-11.32,0l-32-32a8,8,0,0,1,11.32-11.32l32,32A8,8,0,0,1,237.66,69.66ZM184,128a8,8,0,0,1,0,16H128a8,8,0,0,1-8-8V80a8,8,0,0,1,16,0v48Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,44a92,92,0,1,0,92,92A92.1,92.1,0,0,0,128,44Zm0,176a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,220ZM58.83,34.83l-32,32a4,4,0,0,1-5.66-5.66l32-32a4,4,0,0,1,5.66,5.66Zm176,32a4,4,0,0,1-5.66,0l-32-32a4,4,0,0,1,5.66-5.66l32,32A4,4,0,0,1,234.83,66.83ZM188,136a4,4,0,0,1-4,4H128a4,4,0,0,1-4-4V80a4,4,0,0,1,8,0v52h52A4,4,0,0,1,188,136Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport c from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/Archive.es.js\";\nconst r = e.forwardRef((o, t) => /* @__PURE__ */ e.createElement(c, { ref: t, ...o, weights: a }));\nr.displayName = \"ArchiveIcon\";\nconst s = r;\nexport {\n s as Archive,\n r as ArchiveIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,44H32A20,20,0,0,0,12,64V88a20,20,0,0,0,16,19.6V192a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V107.6A20,20,0,0,0,244,88V64A20,20,0,0,0,224,44ZM36,68H220V84H36ZM52,188V108H204v80Zm112-52a12,12,0,0,1-12,12H104a12,12,0,0,1,0-24h48A12,12,0,0,1,164,136Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,96v96a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V96Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,48H32A16,16,0,0,0,16,64V88a16,16,0,0,0,16,16v88a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V104a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48ZM208,192H48V104H208ZM224,88H32V64H224V88ZM96,136a8,8,0,0,1,8-8h48a8,8,0,0,1,0,16H104A8,8,0,0,1,96,136Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,48H32A16,16,0,0,0,16,64V88a16,16,0,0,0,16,16v88a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V104a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48Zm-72,96H104a8,8,0,0,1,0-16h48a8,8,0,0,1,0,16Zm72-56H32V64H224V88Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,50H32A14,14,0,0,0,18,64V88a14,14,0,0,0,14,14h2v90a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V102h2a14,14,0,0,0,14-14V64A14,14,0,0,0,224,50ZM210,192a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V102H210ZM226,88a2,2,0,0,1-2,2H32a2,2,0,0,1-2-2V64a2,2,0,0,1,2-2H224a2,2,0,0,1,2,2ZM98,136a6,6,0,0,1,6-6h48a6,6,0,0,1,0,12H104A6,6,0,0,1,98,136Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,48H32A16,16,0,0,0,16,64V88a16,16,0,0,0,16,16v88a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V104a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48ZM208,192H48V104H208ZM224,88H32V64H224V88ZM96,136a8,8,0,0,1,8-8h48a8,8,0,0,1,0,16H104A8,8,0,0,1,96,136Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,52H32A12,12,0,0,0,20,64V88a12,12,0,0,0,12,12h4v92a12,12,0,0,0,12,12H208a12,12,0,0,0,12-12V100h4a12,12,0,0,0,12-12V64A12,12,0,0,0,224,52ZM212,192a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V100H212ZM228,88a4,4,0,0,1-4,4H32a4,4,0,0,1-4-4V64a4,4,0,0,1,4-4H224a4,4,0,0,1,4,4ZM100,136a4,4,0,0,1,4-4h48a4,4,0,0,1,0,8H104A4,4,0,0,1,100,136Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport f from \"../defs/ArrowBendUpLeft.es.js\";\nconst r = e.forwardRef((o, t) => /* @__PURE__ */ e.createElement(a, { ref: t, ...o, weights: f }));\nr.displayName = \"ArrowBendUpLeftIcon\";\nconst p = r;\nexport {\n p as ArrowBendUpLeft,\n r as ArrowBendUpLeftIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M236,200a12,12,0,0,1-24,0,84.09,84.09,0,0,0-84-84H61l27.52,27.51a12,12,0,0,1-17,17l-48-48a12,12,0,0,1,0-17l48-48a12,12,0,0,1,17,17L61,92h67A108.12,108.12,0,0,1,236,200Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M80,56v96L32,104Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,96H88V56a8,8,0,0,0-13.66-5.66l-48,48a8,8,0,0,0,0,11.32l48,48A8,8,0,0,0,88,152V112h40a88.1,88.1,0,0,1,88,88,8,8,0,0,0,16,0A104.11,104.11,0,0,0,128,96ZM72,132.69,43.31,104,72,75.31Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M232,200a8,8,0,0,1-16,0,88.1,88.1,0,0,0-88-88H88v40a8,8,0,0,1-13.66,5.66l-48-48a8,8,0,0,1,0-11.32l48-48A8,8,0,0,1,88,56V96h40A104.11,104.11,0,0,1,232,200Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M230,200a6,6,0,0,1-12,0,90.1,90.1,0,0,0-90-90H46.49l37.75,37.76a6,6,0,1,1-8.48,8.48l-48-48a6,6,0,0,1,0-8.48l48-48a6,6,0,0,1,8.48,8.48L46.49,98H128A102.12,102.12,0,0,1,230,200Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M232,200a8,8,0,0,1-16,0,88.1,88.1,0,0,0-88-88H51.31l34.35,34.34a8,8,0,0,1-11.32,11.32l-48-48a8,8,0,0,1,0-11.32l48-48A8,8,0,0,1,85.66,61.66L51.31,96H128A104.11,104.11,0,0,1,232,200Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M228,200a4,4,0,0,1-8,0,92.1,92.1,0,0,0-92-92H41.66l41.17,41.17a4,4,0,0,1-5.66,5.66l-48-48a4,4,0,0,1,0-5.66l48-48a4,4,0,0,1,5.66,5.66L41.66,100H128A100.11,100.11,0,0,1,228,200Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/ArrowDown.es.js\";\nconst r = o.forwardRef((e, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...e, weights: m }));\nr.displayName = \"ArrowDownIcon\";\nconst s = r;\nexport {\n s as ArrowDown,\n r as ArrowDownIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208.49,152.49l-72,72a12,12,0,0,1-17,0l-72-72a12,12,0,0,1,17-17L116,187V40a12,12,0,0,1,24,0V187l51.51-51.52a12,12,0,0,1,17,17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M200,144l-72,72L56,144Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M207.39,140.94A8,8,0,0,0,200,136H136V40a8,8,0,0,0-16,0v96H56a8,8,0,0,0-5.66,13.66l72,72a8,8,0,0,0,11.32,0l72-72A8,8,0,0,0,207.39,140.94ZM128,204.69,75.31,152H180.69Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M205.66,149.66l-72,72a8,8,0,0,1-11.32,0l-72-72A8,8,0,0,1,56,136h64V40a8,8,0,0,1,16,0v96h64a8,8,0,0,1,5.66,13.66Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M204.24,148.24l-72,72a6,6,0,0,1-8.48,0l-72-72a6,6,0,0,1,8.48-8.48L122,201.51V40a6,6,0,0,1,12,0V201.51l61.76-61.75a6,6,0,0,1,8.48,8.48Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M205.66,149.66l-72,72a8,8,0,0,1-11.32,0l-72-72a8,8,0,0,1,11.32-11.32L120,196.69V40a8,8,0,0,1,16,0V196.69l58.34-58.35a8,8,0,0,1,11.32,11.32Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M202.83,146.83l-72,72a4,4,0,0,1-5.66,0l-72-72a4,4,0,0,1,5.66-5.66L124,206.34V40a4,4,0,0,1,8,0V206.34l65.17-65.17a4,4,0,0,1,5.66,5.66Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as r from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/ArrowSquareOut.es.js\";\nconst o = r.forwardRef((e, t) => /* @__PURE__ */ r.createElement(a, { ref: t, ...e, weights: m }));\no.displayName = \"ArrowSquareOutIcon\";\nconst u = o;\nexport {\n u as ArrowSquareOut,\n o as ArrowSquareOutIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M184,80V208a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V80a8,8,0,0,1,8-8H176A8,8,0,0,1,184,80Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M192,136v72a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V80A16,16,0,0,1,48,64h72a8,8,0,0,1,0,16H48V208H176V136a8,8,0,0,1,16,0Zm32-96a8,8,0,0,0-8-8H152a8,8,0,0,0-5.66,13.66L172.69,72l-42.35,42.34a8,8,0,0,0,11.32,11.32L184,83.31l26.34,26.35A8,8,0,0,0,224,104Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M222,104a6,6,0,0,1-12,0V54.49l-69.75,69.75a6,6,0,0,1-8.48-8.48L201.51,46H152a6,6,0,0,1,0-12h64a6,6,0,0,1,6,6Zm-38,26a6,6,0,0,0-6,6v72a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V80a2,2,0,0,1,2-2h72a6,6,0,0,0,0-12H48A14,14,0,0,0,34,80V208a14,14,0,0,0,14,14H176a14,14,0,0,0,14-14V136A6,6,0,0,0,184,130Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,104a8,8,0,0,1-16,0V59.32l-66.33,66.34a8,8,0,0,1-11.32-11.32L196.68,48H152a8,8,0,0,1,0-16h64a8,8,0,0,1,8,8Zm-40,24a8,8,0,0,0-8,8v72H48V80h72a8,8,0,0,0,0-16H48A16,16,0,0,0,32,80V208a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V136A8,8,0,0,0,184,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M220,104a4,4,0,0,1-8,0V49.66l-73.16,73.17a4,4,0,0,1-5.66-5.66L206.34,44H152a4,4,0,0,1,0-8h64a4,4,0,0,1,4,4Zm-36,28a4,4,0,0,0-4,4v72a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V80a4,4,0,0,1,4-4h72a4,4,0,0,0,0-8H48A12,12,0,0,0,36,80V208a12,12,0,0,0,12,12H176a12,12,0,0,0,12-12V136A4,4,0,0,0,184,132Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as r from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/ArrowUp.es.js\";\nconst o = r.forwardRef((e, t) => /* @__PURE__ */ r.createElement(a, { ref: t, ...e, weights: m }));\no.displayName = \"ArrowUpIcon\";\nconst c = o;\nexport {\n c as ArrowUp,\n o as ArrowUpIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208.49,120.49a12,12,0,0,1-17,0L140,69V216a12,12,0,0,1-24,0V69L64.49,120.49a12,12,0,0,1-17-17l72-72a12,12,0,0,1,17,0l72,72A12,12,0,0,1,208.49,120.49Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M200,112H56l72-72Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M205.66,106.34l-72-72a8,8,0,0,0-11.32,0l-72,72A8,8,0,0,0,56,120h64v96a8,8,0,0,0,16,0V120h64a8,8,0,0,0,5.66-13.66ZM75.31,104,128,51.31,180.69,104Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M207.39,115.06A8,8,0,0,1,200,120H136v96a8,8,0,0,1-16,0V120H56a8,8,0,0,1-5.66-13.66l72-72a8,8,0,0,1,11.32,0l72,72A8,8,0,0,1,207.39,115.06Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M204.24,116.24a6,6,0,0,1-8.48,0L134,54.49V216a6,6,0,0,1-12,0V54.49L60.24,116.24a6,6,0,0,1-8.48-8.48l72-72a6,6,0,0,1,8.48,0l72,72A6,6,0,0,1,204.24,116.24Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M205.66,117.66a8,8,0,0,1-11.32,0L136,59.31V216a8,8,0,0,1-16,0V59.31L61.66,117.66a8,8,0,0,1-11.32-11.32l72-72a8,8,0,0,1,11.32,0l72,72A8,8,0,0,1,205.66,117.66Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M202.83,114.83a4,4,0,0,1-5.66,0L132,49.66V216a4,4,0,0,1-8,0V49.66L58.83,114.83a4,4,0,0,1-5.66-5.66l72-72a4,4,0,0,1,5.66,0l72,72A4,4,0,0,1,202.83,114.83Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as o from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport c from \"../defs/ArrowsClockwise.es.js\";\nconst r = o.forwardRef((e, s) => /* @__PURE__ */ o.createElement(t, { ref: s, ...e, weights: c }));\nr.displayName = \"ArrowsClockwiseIcon\";\nconst m = r;\nexport {\n m as ArrowsClockwise,\n r as ArrowsClockwiseIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M228,48V96a12,12,0,0,1-12,12H168a12,12,0,0,1,0-24h19l-7.8-7.8a75.55,75.55,0,0,0-53.32-22.26h-.43A75.49,75.49,0,0,0,72.39,75.57,12,12,0,1,1,55.61,58.41a99.38,99.38,0,0,1,69.87-28.47H126A99.42,99.42,0,0,1,196.2,59.23L204,67V48a12,12,0,0,1,24,0ZM183.61,180.43a75.49,75.49,0,0,1-53.09,21.63h-.43A75.55,75.55,0,0,1,76.77,179.8L69,172H88a12,12,0,0,0,0-24H40a12,12,0,0,0-12,12v48a12,12,0,0,0,24,0V189l7.8,7.8A99.42,99.42,0,0,0,130,226.06h.56a99.38,99.38,0,0,0,69.87-28.47,12,12,0,0,0-16.78-17.16Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,48V96a8,8,0,0,1-8,8H168a8,8,0,0,1,0-16h28.69L182.06,73.37a79.56,79.56,0,0,0-56.13-23.43h-.45A79.52,79.52,0,0,0,69.59,72.71,8,8,0,0,1,58.41,61.27a96,96,0,0,1,135,.79L208,76.69V48a8,8,0,0,1,16,0ZM186.41,183.29a80,80,0,0,1-112.47-.66L59.31,168H88a8,8,0,0,0,0-16H40a8,8,0,0,0-8,8v48a8,8,0,0,0,16,0V179.31l14.63,14.63A95.43,95.43,0,0,0,130,222.06h.53a95.36,95.36,0,0,0,67.07-27.33,8,8,0,0,0-11.18-11.44Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,48V96a8,8,0,0,1-8,8H168a8,8,0,0,1-5.66-13.66L180.65,72a79.48,79.48,0,0,0-54.72-22.09h-.45A79.52,79.52,0,0,0,69.59,72.71,8,8,0,0,1,58.41,61.27,96,96,0,0,1,192,60.7l18.36-18.36A8,8,0,0,1,224,48ZM186.41,183.29A80,80,0,0,1,75.35,184l18.31-18.31A8,8,0,0,0,88,152H40a8,8,0,0,0-8,8v48a8,8,0,0,0,13.66,5.66L64,195.3a95.42,95.42,0,0,0,66,26.76h.53a95.36,95.36,0,0,0,67.07-27.33,8,8,0,0,0-11.18-11.44Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M222,48V96a6,6,0,0,1-6,6H168a6,6,0,0,1,0-12h33.52L183.47,72a81.51,81.51,0,0,0-57.53-24h-.46A81.5,81.5,0,0,0,68.19,71.28a6,6,0,1,1-8.38-8.58,93.38,93.38,0,0,1,65.67-26.76H126a93.45,93.45,0,0,1,66,27.53l18,18V48a6,6,0,0,1,12,0ZM187.81,184.72a81.5,81.5,0,0,1-57.29,23.34h-.46a81.51,81.51,0,0,1-57.53-24L54.48,166H88a6,6,0,0,0,0-12H40a6,6,0,0,0-6,6v48a6,6,0,0,0,12,0V174.48l18,18.05a93.45,93.45,0,0,0,66,27.53h.52a93.38,93.38,0,0,0,65.67-26.76,6,6,0,1,0-8.38-8.58Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,48V96a8,8,0,0,1-8,8H168a8,8,0,0,1,0-16h28.69L182.06,73.37a79.56,79.56,0,0,0-56.13-23.43h-.45A79.52,79.52,0,0,0,69.59,72.71,8,8,0,0,1,58.41,61.27a96,96,0,0,1,135,.79L208,76.69V48a8,8,0,0,1,16,0ZM186.41,183.29a80,80,0,0,1-112.47-.66L59.31,168H88a8,8,0,0,0,0-16H40a8,8,0,0,0-8,8v48a8,8,0,0,0,16,0V179.31l14.63,14.63A95.43,95.43,0,0,0,130,222.06h.53a95.36,95.36,0,0,0,67.07-27.33,8,8,0,0,0-11.18-11.44Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M220,48V96a4,4,0,0,1-4,4H168a4,4,0,0,1,0-8h38.34L184.89,70.54A84,84,0,0,0,66.8,69.85a4,4,0,1,1-5.6-5.72,92,92,0,0,1,129.34.76L212,86.34V48a4,4,0,0,1,8,0ZM189.2,186.15a83.44,83.44,0,0,1-58.68,23.91h-.47a83.52,83.52,0,0,1-58.94-24.6L49.66,164H88a4,4,0,0,0,0-8H40a4,4,0,0,0-4,4v48a4,4,0,0,0,8,0V169.66l21.46,21.45A91.43,91.43,0,0,0,130,218.06h.51a91.45,91.45,0,0,0,64.28-26.19,4,4,0,1,0-5.6-5.72Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as r from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/ArrowsIn.es.js\";\nconst o = r.forwardRef((e, s) => /* @__PURE__ */ r.createElement(t, { ref: s, ...e, weights: a }));\no.displayName = \"ArrowsInIcon\";\nconst c = o;\nexport {\n c as ArrowsIn,\n o as ArrowsInIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M140,104V64a12,12,0,0,1,24,0V75l35.51-35.52a12,12,0,0,1,17,17L181,92h11a12,12,0,0,1,0,24H152A12,12,0,0,1,140,104Zm-36,36H64a12,12,0,0,0,0,24H75L39.51,199.51a12,12,0,0,0,17,17L92,181v11a12,12,0,0,0,24,0V152A12,12,0,0,0,104,140Zm77,24h11a12,12,0,0,0,0-24H152a12,12,0,0,0-12,12v40a12,12,0,0,0,24,0V181l35.51,35.52a12,12,0,0,0,17-17ZM104,52A12,12,0,0,0,92,64V75L56.49,39.51a12,12,0,0,0-17,17L75,92H64a12,12,0,0,0,0,24h40a12,12,0,0,0,12-12V64A12,12,0,0,0,104,52Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M224,48V208a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V48A16,16,0,0,1,48,32H208A16,16,0,0,1,224,48Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M144,104V64a8,8,0,0,1,16,0V84.69l42.34-42.35a8,8,0,0,1,11.32,11.32L171.31,96H192a8,8,0,0,1,0,16H152A8,8,0,0,1,144,104Zm-40,40H64a8,8,0,0,0,0,16H84.69L42.34,202.34a8,8,0,0,0,11.32,11.32L96,171.31V192a8,8,0,0,0,16,0V152A8,8,0,0,0,104,144Zm67.31,16H192a8,8,0,0,0,0-16H152a8,8,0,0,0-8,8v40a8,8,0,0,0,16,0V171.31l42.34,42.35a8,8,0,0,0,11.32-11.32ZM104,56a8,8,0,0,0-8,8V84.69L53.66,42.34A8,8,0,0,0,42.34,53.66L84.69,96H64a8,8,0,0,0,0,16h40a8,8,0,0,0,8-8V64A8,8,0,0,0,104,56Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M144,104V64a8,8,0,0,1,13.66-5.66L172,72.69l30.34-30.35a8,8,0,0,1,11.32,11.32L183.31,84l14.35,14.34A8,8,0,0,1,192,112H152A8,8,0,0,1,144,104Zm-40,40H64a8,8,0,0,0-5.66,13.66L72.69,172,42.34,202.34a8,8,0,0,0,11.32,11.32L84,183.31l14.34,14.35A8,8,0,0,0,112,192V152A8,8,0,0,0,104,144Zm3.06-87.39a8,8,0,0,0-8.72,1.73L84,72.69,53.66,42.34A8,8,0,0,0,42.34,53.66L72.69,84,58.34,98.34A8,8,0,0,0,64,112h40a8,8,0,0,0,8-8V64A8,8,0,0,0,107.06,56.61ZM183.31,172l14.35-14.34A8,8,0,0,0,192,144H152a8,8,0,0,0-8,8v40a8,8,0,0,0,13.66,5.66L172,183.31l30.34,30.35a8,8,0,0,0,11.32-11.32Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M146,104V64a6,6,0,0,1,12,0V89.51l45.76-45.75a6,6,0,0,1,8.48,8.48L166.48,98H192a6,6,0,0,1,0,12H152A6,6,0,0,1,146,104Zm-42,42H64a6,6,0,0,0,0,12H89.52L43.76,203.76a6,6,0,1,0,8.48,8.48L98,166.48V192a6,6,0,0,0,12,0V152A6,6,0,0,0,104,146Zm62.48,12H192a6,6,0,0,0,0-12H152a6,6,0,0,0-6,6v40a6,6,0,0,0,12,0V166.48l45.76,45.76a6,6,0,0,0,8.48-8.48ZM104,58a6,6,0,0,0-6,6V89.51L52.24,43.76a6,6,0,0,0-8.48,8.48L89.52,98H64a6,6,0,0,0,0,12h40a6,6,0,0,0,6-6V64A6,6,0,0,0,104,58Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M144,104V64a8,8,0,0,1,16,0V84.69l42.34-42.35a8,8,0,0,1,11.32,11.32L171.31,96H192a8,8,0,0,1,0,16H152A8,8,0,0,1,144,104Zm-40,40H64a8,8,0,0,0,0,16H84.69L42.34,202.34a8,8,0,0,0,11.32,11.32L96,171.31V192a8,8,0,0,0,16,0V152A8,8,0,0,0,104,144Zm67.31,16H192a8,8,0,0,0,0-16H152a8,8,0,0,0-8,8v40a8,8,0,0,0,16,0V171.31l42.34,42.35a8,8,0,0,0,11.32-11.32ZM104,56a8,8,0,0,0-8,8V84.69L53.66,42.34A8,8,0,0,0,42.34,53.66L84.69,96H64a8,8,0,0,0,0,16h40a8,8,0,0,0,8-8V64A8,8,0,0,0,104,56Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M148,104V64a4,4,0,0,1,8,0V94.34l49.17-49.17a4,4,0,1,1,5.66,5.66L161.66,100H192a4,4,0,0,1,0,8H152A4,4,0,0,1,148,104Zm-44,44H64a4,4,0,0,0,0,8H94.34L45.17,205.17a4,4,0,0,0,5.66,5.66L100,161.66V192a4,4,0,0,0,8,0V152A4,4,0,0,0,104,148Zm57.66,8H192a4,4,0,0,0,0-8H152a4,4,0,0,0-4,4v40a4,4,0,0,0,8,0V161.66l49.17,49.17a4,4,0,0,0,5.66-5.66ZM104,60a4,4,0,0,0-4,4V94.34L50.83,45.17a4,4,0,0,0-5.66,5.66L94.34,100H64a4,4,0,0,0,0,8h40a4,4,0,0,0,4-4V64A4,4,0,0,0,104,60Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as r from \"react\";\nimport s from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/ArrowsOut.es.js\";\nconst o = r.forwardRef((t, e) => /* @__PURE__ */ r.createElement(s, { ref: e, ...t, weights: a }));\no.displayName = \"ArrowsOutIcon\";\nconst f = o;\nexport {\n f as ArrowsOut,\n o as ArrowsOutIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M220,48V96a12,12,0,0,1-24,0V77l-35.51,35.52a12,12,0,0,1-17-17L179,60H160a12,12,0,0,1,0-24h48A12,12,0,0,1,220,48ZM95.51,143.51,60,179V160a12,12,0,0,0-24,0v48a12,12,0,0,0,12,12H96a12,12,0,0,0,0-24H77l35.52-35.51a12,12,0,0,0-17-17ZM208,148a12,12,0,0,0-12,12v19l-35.51-35.52a12,12,0,0,0-17,17L179,196H160a12,12,0,0,0,0,24h48a12,12,0,0,0,12-12V160A12,12,0,0,0,208,148ZM77,60H96a12,12,0,0,0,0-24H48A12,12,0,0,0,36,48V96a12,12,0,0,0,24,0V77l35.51,35.52a12,12,0,0,0,17-17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,48V208H48V48Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48V96a8,8,0,0,1-16,0V67.31l-42.34,42.35a8,8,0,0,1-11.32-11.32L188.69,56H160a8,8,0,0,1,0-16h48A8,8,0,0,1,216,48ZM98.34,146.34,56,188.69V160a8,8,0,0,0-16,0v48a8,8,0,0,0,8,8H96a8,8,0,0,0,0-16H67.31l42.35-42.34a8,8,0,0,0-11.32-11.32ZM208,152a8,8,0,0,0-8,8v28.69l-42.34-42.35a8,8,0,0,0-11.32,11.32L188.69,200H160a8,8,0,0,0,0,16h48a8,8,0,0,0,8-8V160A8,8,0,0,0,208,152ZM67.31,56H96a8,8,0,0,0,0-16H48a8,8,0,0,0-8,8V96a8,8,0,0,0,16,0V67.31l42.34,42.35a8,8,0,0,0,11.32-11.32Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M109.66,146.34a8,8,0,0,1,0,11.32L83.31,184l18.35,18.34A8,8,0,0,1,96,216H48a8,8,0,0,1-8-8V160a8,8,0,0,1,13.66-5.66L72,172.69l26.34-26.35A8,8,0,0,1,109.66,146.34ZM83.31,72l18.35-18.34A8,8,0,0,0,96,40H48a8,8,0,0,0-8,8V96a8,8,0,0,0,13.66,5.66L72,83.31l26.34,26.35a8,8,0,0,0,11.32-11.32ZM208,40H160a8,8,0,0,0-5.66,13.66L172.69,72,146.34,98.34a8,8,0,0,0,11.32,11.32L184,83.31l18.34,18.35A8,8,0,0,0,216,96V48A8,8,0,0,0,208,40Zm3.06,112.61a8,8,0,0,0-8.72,1.73L184,172.69l-26.34-26.35a8,8,0,0,0-11.32,11.32L172.69,184l-18.35,18.34A8,8,0,0,0,160,216h48a8,8,0,0,0,8-8V160A8,8,0,0,0,211.06,152.61Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M214,48V96a6,6,0,0,1-12,0V62.48l-45.76,45.76a6,6,0,0,1-8.48-8.48L193.52,54H160a6,6,0,0,1,0-12h48A6,6,0,0,1,214,48ZM99.76,147.76,54,193.52V160a6,6,0,0,0-12,0v48a6,6,0,0,0,6,6H96a6,6,0,0,0,0-12H62.48l45.76-45.76a6,6,0,0,0-8.48-8.48ZM208,154a6,6,0,0,0-6,6v33.52l-45.76-45.76a6,6,0,0,0-8.48,8.48L193.52,202H160a6,6,0,0,0,0,12h48a6,6,0,0,0,6-6V160A6,6,0,0,0,208,154ZM62.48,54H96a6,6,0,0,0,0-12H48a6,6,0,0,0-6,6V96a6,6,0,0,0,12,0V62.48l45.76,45.76a6,6,0,0,0,8.48-8.48Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48V96a8,8,0,0,1-16,0V67.31l-42.34,42.35a8,8,0,0,1-11.32-11.32L188.69,56H160a8,8,0,0,1,0-16h48A8,8,0,0,1,216,48ZM98.34,146.34,56,188.69V160a8,8,0,0,0-16,0v48a8,8,0,0,0,8,8H96a8,8,0,0,0,0-16H67.31l42.35-42.34a8,8,0,0,0-11.32-11.32ZM208,152a8,8,0,0,0-8,8v28.69l-42.34-42.35a8,8,0,0,0-11.32,11.32L188.69,200H160a8,8,0,0,0,0,16h48a8,8,0,0,0,8-8V160A8,8,0,0,0,208,152ZM67.31,56H96a8,8,0,0,0,0-16H48a8,8,0,0,0-8,8V96a8,8,0,0,0,16,0V67.31l42.34,42.35a8,8,0,0,0,11.32-11.32Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M212,48V96a4,4,0,0,1-8,0V57.66l-49.17,49.17a4,4,0,0,1-5.66-5.66L198.34,52H160a4,4,0,0,1,0-8h48A4,4,0,0,1,212,48ZM101.17,149.17,52,198.34V160a4,4,0,0,0-8,0v48a4,4,0,0,0,4,4H96a4,4,0,0,0,0-8H57.66l49.17-49.17a4,4,0,0,0-5.66-5.66ZM208,156a4,4,0,0,0-4,4v38.34l-49.17-49.17a4,4,0,0,0-5.66,5.66L198.34,204H160a4,4,0,0,0,0,8h48a4,4,0,0,0,4-4V160A4,4,0,0,0,208,156ZM57.66,52H96a4,4,0,0,0,0-8H48a4,4,0,0,0-4,4V96a4,4,0,0,0,8,0V57.66l49.17,49.17a4,4,0,0,0,5.66-5.66Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/BookOpenText.es.js\";\nconst e = o.forwardRef((t, r) => /* @__PURE__ */ o.createElement(a, { ref: r, ...t, weights: m }));\ne.displayName = \"BookOpenTextIcon\";\nconst s = e;\nexport {\n s as BookOpenText,\n e as BookOpenTextIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,44H160a43.86,43.86,0,0,0-32,13.85A43.86,43.86,0,0,0,96,44H24A12,12,0,0,0,12,56V200a12,12,0,0,0,12,12H96a20,20,0,0,1,20,20,12,12,0,0,0,24,0,20,20,0,0,1,20-20h72a12,12,0,0,0,12-12V56A12,12,0,0,0,232,44ZM96,188H36V68H96a20,20,0,0,1,20,20V192.81A43.79,43.79,0,0,0,96,188Zm124,0H160a43.71,43.71,0,0,0-20,4.83V88a20,20,0,0,1,20-20h60ZM164,96h32a12,12,0,0,1,0,24H164a12,12,0,0,1,0-24Zm44,52a12,12,0,0,1-12,12H164a12,12,0,0,1,0-24h32A12,12,0,0,1,208,148Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M232,56V200H160a32,32,0,0,0-32,32V88a32,32,0,0,1,32-32Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,48H160a40,40,0,0,0-32,16A40,40,0,0,0,96,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,24,8,8,0,0,0,16,0,24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM96,192H32V64H96a24,24,0,0,1,24,24V200A39.81,39.81,0,0,0,96,192Zm128,0H160a39.81,39.81,0,0,0-24,8V88a24,24,0,0,1,24-24h64ZM160,88h40a8,8,0,0,1,0,16H160a8,8,0,0,1,0-16Zm48,40a8,8,0,0,1-8,8H160a8,8,0,0,1,0-16h40A8,8,0,0,1,208,128Zm0,32a8,8,0,0,1-8,8H160a8,8,0,0,1,0-16h40A8,8,0,0,1,208,160Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,48H168a32,32,0,0,0-32,32v87.73a8.17,8.17,0,0,1-7.47,8.25,8,8,0,0,1-8.53-8V80A32,32,0,0,0,88,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,23.94,7.9,7.9,0,0,0,5.12,7.55A8,8,0,0,0,136,232a24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM208,168H168.27a8.17,8.17,0,0,1-8.25-7.47,8,8,0,0,1,8-8.53h39.73a8.17,8.17,0,0,1,8.25,7.47A8,8,0,0,1,208,168Zm0-32H168.27a8.17,8.17,0,0,1-8.25-7.47,8,8,0,0,1,8-8.53h39.73a8.17,8.17,0,0,1,8.25,7.47A8,8,0,0,1,208,136Zm0-32H168.27A8.17,8.17,0,0,1,160,96.53,8,8,0,0,1,168,88h39.73A8.17,8.17,0,0,1,216,95.47,8,8,0,0,1,208,104Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,50H160a38,38,0,0,0-32,17.55A38,38,0,0,0,96,50H24a6,6,0,0,0-6,6V200a6,6,0,0,0,6,6H96a26,26,0,0,1,26,26,6,6,0,0,0,12,0,26,26,0,0,1,26-26h72a6,6,0,0,0,6-6V56A6,6,0,0,0,232,50ZM96,194H30V62H96a26,26,0,0,1,26,26V204.31A37.86,37.86,0,0,0,96,194Zm130,0H160a37.87,37.87,0,0,0-26,10.32V88a26,26,0,0,1,26-26h66ZM160,90h40a6,6,0,0,1,0,12H160a6,6,0,0,1,0-12Zm46,38a6,6,0,0,1-6,6H160a6,6,0,0,1,0-12h40A6,6,0,0,1,206,128Zm0,32a6,6,0,0,1-6,6H160a6,6,0,0,1,0-12h40A6,6,0,0,1,206,160Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,48H160a40,40,0,0,0-32,16A40,40,0,0,0,96,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,24,8,8,0,0,0,16,0,24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM96,192H32V64H96a24,24,0,0,1,24,24V200A39.81,39.81,0,0,0,96,192Zm128,0H160a39.81,39.81,0,0,0-24,8V88a24,24,0,0,1,24-24h64ZM160,88h40a8,8,0,0,1,0,16H160a8,8,0,0,1,0-16Zm48,40a8,8,0,0,1-8,8H160a8,8,0,0,1,0-16h40A8,8,0,0,1,208,128Zm0,32a8,8,0,0,1-8,8H160a8,8,0,0,1,0-16h40A8,8,0,0,1,208,160Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,52H160a36,36,0,0,0-32,19.54A36,36,0,0,0,96,52H24a4,4,0,0,0-4,4V200a4,4,0,0,0,4,4H96a28,28,0,0,1,28,28,4,4,0,0,0,8,0,28,28,0,0,1,28-28h72a4,4,0,0,0,4-4V56A4,4,0,0,0,232,52ZM96,196H28V60H96a28,28,0,0,1,28,28V209.4A35.94,35.94,0,0,0,96,196Zm132,0H160a35.94,35.94,0,0,0-28,13.41V88a28,28,0,0,1,28-28h68ZM160,92h40a4,4,0,0,1,0,8H160a4,4,0,0,1,0-8Zm44,36a4,4,0,0,1-4,4H160a4,4,0,0,1,0-8h40A4,4,0,0,1,204,128Zm0,32a4,4,0,0,1-4,4H160a4,4,0,0,1,0-8h40A4,4,0,0,1,204,160Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/Bug.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...r, weights: m }));\ne.displayName = \"BugIcon\";\nconst f = e;\nexport {\n f as Bug,\n e as BugIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M140,88a16,16,0,1,1,16,16A16,16,0,0,1,140,88ZM100,72a16,16,0,1,0,16,16A16,16,0,0,0,100,72Zm120,72a91.84,91.84,0,0,1-2.34,20.64L236.81,173a12,12,0,0,1-9.62,22l-18-7.85a92,92,0,0,1-162.46,0l-18,7.85a12,12,0,1,1-9.62-22l19.15-8.36A91.84,91.84,0,0,1,36,144v-4H16a12,12,0,0,1,0-24H36v-4a91.84,91.84,0,0,1,2.34-20.64L19.19,83a12,12,0,0,1,9.62-22l18,7.85a92,92,0,0,1,162.46,0l18-7.85a12,12,0,1,1,9.62,22l-19.15,8.36A91.84,91.84,0,0,1,220,112v4h20a12,12,0,0,1,0,24H220ZM60,116H196v-4a68,68,0,0,0-136,0Zm56,94.92V140H60v4A68.1,68.1,0,0,0,116,210.92ZM196,144v-4H140v70.92A68.1,68.1,0,0,0,196,144Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,128v16a80,80,0,0,1-160,0V128Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M144,92a12,12,0,1,1,12,12A12,12,0,0,1,144,92ZM100,80a12,12,0,1,0,12,12A12,12,0,0,0,100,80Zm116,64A87.76,87.76,0,0,1,213,167l22.24,9.72A8,8,0,0,1,232,192a7.89,7.89,0,0,1-3.2-.67L207.38,182a88,88,0,0,1-158.76,0L27.2,191.33A7.89,7.89,0,0,1,24,192a8,8,0,0,1-3.2-15.33L43,167A87.76,87.76,0,0,1,40,144v-8H16a8,8,0,0,1,0-16H40v-8a87.76,87.76,0,0,1,3-23L20.8,79.33a8,8,0,1,1,6.4-14.66L48.62,74a88,88,0,0,1,158.76,0l21.42-9.36a8,8,0,0,1,6.4,14.66L213,89.05a87.76,87.76,0,0,1,3,23v8h24a8,8,0,0,1,0,16H216ZM56,120H200v-8a72,72,0,0,0-144,0Zm64,95.54V136H56v8A72.08,72.08,0,0,0,120,215.54ZM200,144v-8H136v79.54A72.08,72.08,0,0,0,200,144Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M168,92a12,12,0,1,1-12-12A12,12,0,0,1,168,92ZM100,80a12,12,0,1,0,12,12A12,12,0,0,0,100,80Zm116,64A87.76,87.76,0,0,1,213,167l22.24,9.72A8,8,0,0,1,232,192a7.89,7.89,0,0,1-3.2-.67L207.38,182a88,88,0,0,1-158.76,0L27.2,191.33A7.89,7.89,0,0,1,24,192a8,8,0,0,1-3.2-15.33L43,167A87.76,87.76,0,0,1,40,144v-8H16a8,8,0,0,1,0-16H40v-8a87.76,87.76,0,0,1,3-23L20.8,79.33a8,8,0,1,1,6.4-14.66L48.62,74a88,88,0,0,1,158.76,0l21.42-9.36a8,8,0,0,1,6.4,14.66L213,89.05a87.76,87.76,0,0,1,3,23v8h24a8,8,0,0,1,0,16H216Zm-80,0a8,8,0,0,0-16,0v64a8,8,0,0,0,16,0Zm64-32a72,72,0,0,0-144,0v8H200Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M146,92a10,10,0,1,1,10,10A10,10,0,0,1,146,92ZM100,82a10,10,0,1,0,10,10A10,10,0,0,0,100,82Zm146,46a6,6,0,0,1-6,6H214v10a85.88,85.88,0,0,1-3.45,24.08L234.4,178.5a6,6,0,0,1-4.8,11l-23.23-10.15a86,86,0,0,1-156.74,0L26.4,189.5a6,6,0,1,1-4.8-11l23.85-10.42A85.88,85.88,0,0,1,42,144V134H16a6,6,0,0,1,0-12H42V112a85.88,85.88,0,0,1,3.45-24.08L21.6,77.5a6,6,0,0,1,4.8-11L49.63,76.65a86,86,0,0,1,156.74,0L229.6,66.5a6,6,0,1,1,4.8,11L210.55,87.92A85.88,85.88,0,0,1,214,112v10h26A6,6,0,0,1,246,128ZM54,122H202V112a74,74,0,0,0-148,0Zm68,95.74V134H54v10A74.09,74.09,0,0,0,122,217.74ZM202,134H134v83.74A74.09,74.09,0,0,0,202,144Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M144,92a12,12,0,1,1,12,12A12,12,0,0,1,144,92ZM100,80a12,12,0,1,0,12,12A12,12,0,0,0,100,80Zm116,64A87.76,87.76,0,0,1,213,167l22.24,9.72A8,8,0,0,1,232,192a7.89,7.89,0,0,1-3.2-.67L207.38,182a88,88,0,0,1-158.76,0L27.2,191.33A7.89,7.89,0,0,1,24,192a8,8,0,0,1-3.2-15.33L43,167A87.76,87.76,0,0,1,40,144v-8H16a8,8,0,0,1,0-16H40v-8a87.76,87.76,0,0,1,3-23L20.8,79.33a8,8,0,1,1,6.4-14.66L48.62,74a88,88,0,0,1,158.76,0l21.42-9.36a8,8,0,0,1,6.4,14.66L213,89.05a87.76,87.76,0,0,1,3,23v8h24a8,8,0,0,1,0,16H216ZM56,120H200v-8a72,72,0,0,0-144,0Zm64,95.54V136H56v8A72.08,72.08,0,0,0,120,215.54ZM200,144v-8H136v79.54A72.08,72.08,0,0,0,200,144Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M148,92a8,8,0,1,1,8,8A8,8,0,0,1,148,92Zm-48-8a8,8,0,1,0,8,8A8,8,0,0,0,100,84Zm144,44a4,4,0,0,1-4,4H212v12a83.64,83.64,0,0,1-3.87,25.2l25.47,11.13A4,4,0,0,1,232,188a4.09,4.09,0,0,1-1.6-.33l-25-10.95a84,84,0,0,1-154.72,0l-25,10.95A4.09,4.09,0,0,1,24,188a4,4,0,0,1-1.6-7.67L47.87,169.2A83.64,83.64,0,0,1,44,144V132H16a4,4,0,0,1,0-8H44V112a83.64,83.64,0,0,1,3.87-25.2L22.4,75.67a4,4,0,0,1,3.2-7.34l25,11a84,84,0,0,1,154.72,0l25-11a4,4,0,1,1,3.2,7.34L208.13,86.8A83.64,83.64,0,0,1,212,112v12h28A4,4,0,0,1,244,128ZM52,124H204V112a76,76,0,0,0-152,0Zm72,95.89V132H52v12A76.09,76.09,0,0,0,124,219.89ZM204,132H132v87.89A76.09,76.09,0,0,0,204,144Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport s from \"../lib/SSRBase.es.js\";\nimport t from \"../defs/Buildings.es.js\";\nconst i = o.forwardRef((e, r) => /* @__PURE__ */ o.createElement(s, { ref: r, ...e, weights: t }));\ni.displayName = \"BuildingsIcon\";\nconst n = i;\nexport {\n n as Buildings,\n i as BuildingsIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M240,204H228V96a20,20,0,0,0-20-20H172V32a20,20,0,0,0-28.45-18.12l-104,48.54A20.06,20.06,0,0,0,28,80.55V204H16a12,12,0,0,0,0,24H240a12,12,0,0,0,0-24ZM204,100V204H172V100ZM52,83.09,148,38.3V204H52ZM132,112v12a12,12,0,0,1-24,0V112a12,12,0,0,1,24,0Zm-40,0v12a12,12,0,0,1-24,0V112a12,12,0,0,1,24,0Zm0,52v12a12,12,0,0,1-24,0V164a12,12,0,0,1,24,0Zm40,0v12a12,12,0,0,1-24,0V164a12,12,0,0,1,24,0Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M136,32V216H40V85.35a8,8,0,0,1,3.56-6.66l80-53.33A8,8,0,0,1,136,32Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M240,208H224V96a16,16,0,0,0-16-16H144V32a16,16,0,0,0-24.88-13.32L39.12,72A16,16,0,0,0,32,85.34V208H16a8,8,0,0,0,0,16H240a8,8,0,0,0,0-16ZM208,96V208H144V96ZM48,85.34,128,32V208H48ZM112,112v16a8,8,0,0,1-16,0V112a8,8,0,1,1,16,0Zm-32,0v16a8,8,0,0,1-16,0V112a8,8,0,1,1,16,0Zm0,56v16a8,8,0,0,1-16,0V168a8,8,0,0,1,16,0Zm32,0v16a8,8,0,0,1-16,0V168a8,8,0,0,1,16,0Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M239.73,208H224V96a16,16,0,0,0-16-16H164a4,4,0,0,0-4,4V208H144V32.41a16.43,16.43,0,0,0-6.16-13,16,16,0,0,0-18.72-.69L39.12,72A16,16,0,0,0,32,85.34V208H16.27A8.18,8.18,0,0,0,8,215.47,8,8,0,0,0,16,224H240a8,8,0,0,0,8-8.53A8.18,8.18,0,0,0,239.73,208ZM76,184a8,8,0,0,1-8.53,8A8.18,8.18,0,0,1,60,183.72V168.27A8.19,8.19,0,0,1,67.47,160,8,8,0,0,1,76,168Zm0-56a8,8,0,0,1-8.53,8A8.19,8.19,0,0,1,60,127.72V112.27A8.19,8.19,0,0,1,67.47,104,8,8,0,0,1,76,112Zm40,56a8,8,0,0,1-8.53,8,8.18,8.18,0,0,1-7.47-8.26V168.27a8.19,8.19,0,0,1,7.47-8.26,8,8,0,0,1,8.53,8Zm0-56a8,8,0,0,1-8.53,8,8.19,8.19,0,0,1-7.47-8.26V112.27a8.19,8.19,0,0,1,7.47-8.26,8,8,0,0,1,8.53,8Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M240,210H222V96a14,14,0,0,0-14-14H142V32a14,14,0,0,0-21.77-11.64l-80,53.33A14,14,0,0,0,34,85.34V210H16a6,6,0,0,0,0,12H240a6,6,0,0,0,0-12ZM208,94a2,2,0,0,1,2,2V210H142V94ZM46,85.34a2,2,0,0,1,.89-1.66l80-53.34A2,2,0,0,1,130,32V210H46ZM110,112v16a6,6,0,0,1-12,0V112a6,6,0,0,1,12,0Zm-32,0v16a6,6,0,0,1-12,0V112a6,6,0,0,1,12,0Zm0,56v16a6,6,0,0,1-12,0V168a6,6,0,0,1,12,0Zm32,0v16a6,6,0,0,1-12,0V168a6,6,0,0,1,12,0Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M240,208H224V96a16,16,0,0,0-16-16H144V32a16,16,0,0,0-24.88-13.32L39.12,72A16,16,0,0,0,32,85.34V208H16a8,8,0,0,0,0,16H240a8,8,0,0,0,0-16ZM208,96V208H144V96ZM48,85.34,128,32V208H48ZM112,112v16a8,8,0,0,1-16,0V112a8,8,0,1,1,16,0Zm-32,0v16a8,8,0,0,1-16,0V112a8,8,0,1,1,16,0Zm0,56v16a8,8,0,0,1-16,0V168a8,8,0,0,1,16,0Zm32,0v16a8,8,0,0,1-16,0V168a8,8,0,0,1,16,0Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M240,212H220V96a12,12,0,0,0-12-12H140V32a12,12,0,0,0-18.66-10l-80,53.33a12,12,0,0,0-5.34,10V212H16a4,4,0,0,0,0,8H240a4,4,0,0,0,0-8ZM208,92a4,4,0,0,1,4,4V212H140V92ZM44,85.34A4,4,0,0,1,45.78,82l80-53.33A4,4,0,0,1,132,32V212H44ZM108,112v16a4,4,0,0,1-8,0V112a4,4,0,0,1,8,0Zm-32,0v16a4,4,0,0,1-8,0V112a4,4,0,0,1,8,0Zm0,56v16a4,4,0,0,1-8,0V168a4,4,0,0,1,8,0Zm32,0v16a4,4,0,0,1-8,0V168a4,4,0,0,1,8,0Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nimport n from \"../lib/SSRBase.es.js\";\nimport t from \"../defs/CalendarBlank.es.js\";\nconst e = a.forwardRef((r, o) => /* @__PURE__ */ a.createElement(n, { ref: o, ...r, weights: t }));\ne.displayName = \"CalendarBlankIcon\";\nconst s = e;\nexport {\n s as CalendarBlank,\n e as CalendarBlankIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,28H188V24a12,12,0,0,0-24,0v4H92V24a12,12,0,0,0-24,0v4H48A20,20,0,0,0,28,48V208a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V48A20,20,0,0,0,208,28ZM68,52a12,12,0,0,0,24,0h72a12,12,0,0,0,24,0h16V76H52V52ZM52,204V100H204V204Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M216,48V88H40V48a8,8,0,0,1,8-8H208A8,8,0,0,1,216,48Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,32H184V24a8,8,0,0,0-16,0v8H88V24a8,8,0,0,0-16,0v8H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM72,48v8a8,8,0,0,0,16,0V48h80v8a8,8,0,0,0,16,0V48h24V80H48V48ZM208,208H48V96H208V208Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,32H184V24a8,8,0,0,0-16,0v8H88V24a8,8,0,0,0-16,0v8H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32Zm0,48H48V48H72v8a8,8,0,0,0,16,0V48h80v8a8,8,0,0,0,16,0V48h24Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,34H182V24a6,6,0,0,0-12,0V34H86V24a6,6,0,0,0-12,0V34H48A14,14,0,0,0,34,48V208a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V48A14,14,0,0,0,208,34ZM48,46H74V56a6,6,0,0,0,12,0V46h84V56a6,6,0,0,0,12,0V46h26a2,2,0,0,1,2,2V82H46V48A2,2,0,0,1,48,46ZM208,210H48a2,2,0,0,1-2-2V94H210V208A2,2,0,0,1,208,210Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,32H184V24a8,8,0,0,0-16,0v8H88V24a8,8,0,0,0-16,0v8H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM72,48v8a8,8,0,0,0,16,0V48h80v8a8,8,0,0,0,16,0V48h24V80H48V48ZM208,208H48V96H208V208Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,36H180V24a4,4,0,0,0-8,0V36H84V24a4,4,0,0,0-8,0V36H48A12,12,0,0,0,36,48V208a12,12,0,0,0,12,12H208a12,12,0,0,0,12-12V48A12,12,0,0,0,208,36ZM48,44H76V56a4,4,0,0,0,8,0V44h88V56a4,4,0,0,0,8,0V44h28a4,4,0,0,1,4,4V84H44V48A4,4,0,0,1,48,44ZM208,212H48a4,4,0,0,1-4-4V92H212V208A4,4,0,0,1,208,212Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/CaretDown.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...r, weights: m }));\ne.displayName = \"CaretDownIcon\";\nconst c = e;\nexport {\n c as CaretDown,\n e as CaretDownIcon\n};\n","import * as e from \"react\";\nconst t = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216.49,104.49l-80,80a12,12,0,0,1-17,0l-80-80a12,12,0,0,1,17-17L128,159l71.51-71.52a12,12,0,0,1,17,17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208,96l-80,80L48,96Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M215.39,92.94A8,8,0,0,0,208,88H48a8,8,0,0,0-5.66,13.66l80,80a8,8,0,0,0,11.32,0l80-80A8,8,0,0,0,215.39,92.94ZM128,164.69,67.31,104H188.69Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,48,88H208a8,8,0,0,1,5.66,13.66Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M212.24,100.24l-80,80a6,6,0,0,1-8.48,0l-80-80a6,6,0,0,1,8.48-8.48L128,167.51l75.76-75.75a6,6,0,0,1,8.48,8.48Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M210.83,98.83l-80,80a4,4,0,0,1-5.66,0l-80-80a4,4,0,0,1,5.66-5.66L128,170.34l77.17-77.17a4,4,0,1,1,5.66,5.66Z\" }))\n ]\n]);\nexport {\n t as default\n};\n","import * as e from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport f from \"../defs/CaretLeft.es.js\";\nconst t = e.forwardRef((r, o) => /* @__PURE__ */ e.createElement(a, { ref: o, ...r, weights: f }));\nt.displayName = \"CaretLeftIcon\";\nconst c = t;\nexport {\n c as CaretLeft,\n t as CaretLeftIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M168.49,199.51a12,12,0,0,1-17,17l-80-80a12,12,0,0,1,0-17l80-80a12,12,0,0,1,17,17L97,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M160,48V208L80,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M163.06,40.61a8,8,0,0,0-8.72,1.73l-80,80a8,8,0,0,0,0,11.32l80,80A8,8,0,0,0,168,208V48A8,8,0,0,0,163.06,40.61ZM152,188.69,91.31,128,152,67.31Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M168,48V208a8,8,0,0,1-13.66,5.66l-80-80a8,8,0,0,1,0-11.32l80-80A8,8,0,0,1,168,48Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M164.24,203.76a6,6,0,1,1-8.48,8.48l-80-80a6,6,0,0,1,0-8.48l80-80a6,6,0,0,1,8.48,8.48L88.49,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M165.66,202.34a8,8,0,0,1-11.32,11.32l-80-80a8,8,0,0,1,0-11.32l80-80a8,8,0,0,1,11.32,11.32L91.31,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M162.83,205.17a4,4,0,0,1-5.66,5.66l-80-80a4,4,0,0,1,0-5.66l80-80a4,4,0,1,1,5.66,5.66L85.66,128Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as t from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport i from \"../defs/CaretRight.es.js\";\nconst e = t.forwardRef((r, o) => /* @__PURE__ */ t.createElement(a, { ref: o, ...r, weights: i }));\ne.displayName = \"CaretRightIcon\";\nconst c = e;\nexport {\n c as CaretRight,\n e as CaretRightIcon\n};\n","import * as e from \"react\";\nconst t = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M184.49,136.49l-80,80a12,12,0,0,1-17-17L159,128,87.51,56.49a12,12,0,1,1,17-17l80,80A12,12,0,0,1,184.49,136.49Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M176,128,96,208V48Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M181.66,122.34l-80-80A8,8,0,0,0,88,48V208a8,8,0,0,0,13.66,5.66l80-80A8,8,0,0,0,181.66,122.34ZM104,188.69V67.31L164.69,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M181.66,133.66l-80,80A8,8,0,0,1,88,208V48a8,8,0,0,1,13.66-5.66l80,80A8,8,0,0,1,181.66,133.66Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M180.24,132.24l-80,80a6,6,0,0,1-8.48-8.48L167.51,128,91.76,52.24a6,6,0,0,1,8.48-8.48l80,80A6,6,0,0,1,180.24,132.24Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M178.83,130.83l-80,80a4,4,0,0,1-5.66-5.66L170.34,128,93.17,50.83a4,4,0,0,1,5.66-5.66l80,80A4,4,0,0,1,178.83,130.83Z\" }))\n ]\n]);\nexport {\n t as default\n};\n","import * as e from \"react\";\nimport l from \"../lib/SSRBase.es.js\";\nimport r from \"../defs/CellSignalHigh.es.js\";\nconst o = e.forwardRef((a, i) => /* @__PURE__ */ e.createElement(l, { ref: i, ...a, weights: r }));\no.displayName = \"CellSignalHighIcon\";\nconst n = o;\nexport {\n n as CellSignalHigh,\n o as CellSignalHighIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M172,72V200a12,12,0,0,1-24,0V72a12,12,0,0,1,24,0Zm-52,28a12,12,0,0,0-12,12v88a12,12,0,0,0,24,0V112A12,12,0,0,0,120,100ZM80,140a12,12,0,0,0-12,12v48a12,12,0,0,0,24,0V152A12,12,0,0,0,80,140ZM40,180a12,12,0,0,0-12,12v8a12,12,0,0,0,24,0v-8A12,12,0,0,0,40,180Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M160,60.7V208H32a8,8,0,0,1-5.66-13.66Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M198.12,25.23a16,16,0,0,0-17.44,3.46l-160,160A16,16,0,0,0,32,216H192a16,16,0,0,0,16-16V40A15.94,15.94,0,0,0,198.12,25.23ZM152,80V200H32Zm40,120H168V64l24-24Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M198.12,25.23a16,16,0,0,0-17.44,3.46l-160,160A16,16,0,0,0,32,216H192a16,16,0,0,0,16-16V40A15.94,15.94,0,0,0,198.12,25.23ZM192,200H168V64l24-24Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M166,72V200a6,6,0,0,1-12,0V72a6,6,0,0,1,12,0Zm-46,34a6,6,0,0,0-6,6v88a6,6,0,0,0,12,0V112A6,6,0,0,0,120,106ZM80,146a6,6,0,0,0-6,6v48a6,6,0,0,0,12,0V152A6,6,0,0,0,80,146ZM40,186a6,6,0,0,0-6,6v8a6,6,0,0,0,12,0v-8A6,6,0,0,0,40,186Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M168,72V200a8,8,0,0,1-16,0V72a8,8,0,0,1,16,0Zm-48,32a8,8,0,0,0-8,8v88a8,8,0,0,0,16,0V112A8,8,0,0,0,120,104ZM80,144a8,8,0,0,0-8,8v48a8,8,0,0,0,16,0V152A8,8,0,0,0,80,144ZM40,184a8,8,0,0,0-8,8v8a8,8,0,0,0,16,0v-8A8,8,0,0,0,40,184Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M164,72V200a4,4,0,0,1-8,0V72a4,4,0,0,1,8,0Zm-44,36a4,4,0,0,0-4,4v88a4,4,0,0,0,8,0V112A4,4,0,0,0,120,108ZM80,148a4,4,0,0,0-4,4v48a4,4,0,0,0,8,0V152A4,4,0,0,0,80,148ZM40,188a4,4,0,0,0-4,4v8a4,4,0,0,0,8,0v-8A4,4,0,0,0,40,188Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport r from \"../lib/SSRBase.es.js\";\nimport t from \"../defs/CellSignalLow.es.js\";\nconst e = o.forwardRef((a, l) => /* @__PURE__ */ o.createElement(r, { ref: l, ...a, weights: t }));\ne.displayName = \"CellSignalLowIcon\";\nconst n = e;\nexport {\n n as CellSignalLow,\n e as CellSignalLowIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M92,152v48a12,12,0,0,1-24,0V152a12,12,0,0,1,24,0ZM40,180a12,12,0,0,0-12,12v8a12,12,0,0,0,24,0v-8A12,12,0,0,0,40,180Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M80,140.7V208H32a8,8,0,0,1-5.66-13.66Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M198.12,25.23a16,16,0,0,0-17.44,3.46l-160,160A16,16,0,0,0,32,216H192a16,16,0,0,0,16-16V40A15.94,15.94,0,0,0,198.12,25.23ZM72,160v40H32Zm120,40H88V144L192,40Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M198.12,25.23a16,16,0,0,0-17.44,3.46l-160,160A16,16,0,0,0,32,216H192a16,16,0,0,0,16-16V40A15.94,15.94,0,0,0,198.12,25.23ZM192,200H88V144L192,40Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M86,152v48a6,6,0,0,1-12,0V152a6,6,0,0,1,12,0ZM40,186a6,6,0,0,0-6,6v8a6,6,0,0,0,12,0v-8A6,6,0,0,0,40,186Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M88,152v48a8,8,0,0,1-16,0V152a8,8,0,0,1,16,0ZM40,184a8,8,0,0,0-8,8v8a8,8,0,0,0,16,0v-8A8,8,0,0,0,40,184Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M84,152v48a4,4,0,0,1-8,0V152a4,4,0,0,1,8,0ZM40,188a4,4,0,0,0-4,4v8a4,4,0,0,0,8,0v-8A4,4,0,0,0,40,188Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nimport l from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/CellSignalMedium.es.js\";\nconst o = e.forwardRef((a, i) => /* @__PURE__ */ e.createElement(l, { ref: i, ...a, weights: m }));\no.displayName = \"CellSignalMediumIcon\";\nconst n = o;\nexport {\n n as CellSignalMedium,\n o as CellSignalMediumIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M132,112v88a12,12,0,0,1-24,0V112a12,12,0,0,1,24,0ZM80,140a12,12,0,0,0-12,12v48a12,12,0,0,0,24,0V152A12,12,0,0,0,80,140ZM40,180a12,12,0,0,0-12,12v8a12,12,0,0,0,24,0v-8A12,12,0,0,0,40,180Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M120,100.7V208H32a8,8,0,0,1-5.66-13.66Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M198.12,25.23a16,16,0,0,0-17.44,3.46l-160,160A16,16,0,0,0,32,216H192a16,16,0,0,0,16-16V40A15.94,15.94,0,0,0,198.12,25.23ZM112,120v80H32Zm80,80H128V104l64-64Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M198.12,25.23a16,16,0,0,0-17.44,3.46l-160,160A16,16,0,0,0,32,216H192a16,16,0,0,0,16-16V40A15.94,15.94,0,0,0,198.12,25.23ZM192,200H128V104l64-64Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M126,112v88a6,6,0,0,1-12,0V112a6,6,0,0,1,12,0ZM80,146a6,6,0,0,0-6,6v48a6,6,0,0,0,12,0V152A6,6,0,0,0,80,146ZM40,186a6,6,0,0,0-6,6v8a6,6,0,0,0,12,0v-8A6,6,0,0,0,40,186Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,112v88a8,8,0,0,1-16,0V112a8,8,0,0,1,16,0ZM80,144a8,8,0,0,0-8,8v48a8,8,0,0,0,16,0V152A8,8,0,0,0,80,144ZM40,184a8,8,0,0,0-8,8v8a8,8,0,0,0,16,0v-8A8,8,0,0,0,40,184Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M124,112v88a4,4,0,0,1-8,0V112a4,4,0,0,1,8,0ZM80,148a4,4,0,0,0-4,4v48a4,4,0,0,0,8,0V152A4,4,0,0,0,80,148ZM40,188a4,4,0,0,0-4,4v8a4,4,0,0,0,8,0v-8A4,4,0,0,0,40,188Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as t from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport s from \"../defs/ChatCircleDots.es.js\";\nconst o = t.forwardRef((e, r) => /* @__PURE__ */ t.createElement(a, { ref: r, ...e, weights: s }));\no.displayName = \"ChatCircleDotsIcon\";\nconst m = o;\nexport {\n m as ChatCircleDots,\n o as ChatCircleDotsIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M120,128a16,16,0,1,1-16-16A16,16,0,0,1,120,128Zm32-16a16,16,0,1,0,16,16A16,16,0,0,0,152,112Zm84,16A108,108,0,0,1,78.77,224.15L46.34,235A20,20,0,0,1,21,209.66l10.81-32.43A108,108,0,1,1,236,128Zm-24,0A84,84,0,1,0,55.27,170.06a12,12,0,0,1,1,9.81l-9.93,29.79,29.79-9.93a12.1,12.1,0,0,1,3.8-.62,12,12,0,0,1,6,1.62A84,84,0,0,0,212,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M224,128A96,96,0,0,1,79.93,211.11h0L42.54,223.58a8,8,0,0,1-10.12-10.12l12.47-37.39h0A96,96,0,1,1,224,128Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,24A104,104,0,0,0,36.18,176.88L24.83,210.93a16,16,0,0,0,20.24,20.24l34.05-11.35A104,104,0,1,0,128,24Zm0,192a87.87,87.87,0,0,1-44.06-11.81,8,8,0,0,0-4-1.08,7.85,7.85,0,0,0-2.53.42L40,216,52.47,178.6a8,8,0,0,0-.66-6.54A88,88,0,1,1,128,216Zm12-88a12,12,0,1,1-12-12A12,12,0,0,1,140,128Zm-44,0a12,12,0,1,1-12-12A12,12,0,0,1,96,128Zm88,0a12,12,0,1,1-12-12A12,12,0,0,1,184,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,24A104,104,0,0,0,36.18,176.88L24.83,210.93a16,16,0,0,0,20.24,20.24l34.05-11.35A104,104,0,1,0,128,24ZM84,140a12,12,0,1,1,12-12A12,12,0,0,1,84,140Zm44,0a12,12,0,1,1,12-12A12,12,0,0,1,128,140Zm44,0a12,12,0,1,1,12-12A12,12,0,0,1,172,140Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M138,128a10,10,0,1,1-10-10A10,10,0,0,1,138,128ZM84,118a10,10,0,1,0,10,10A10,10,0,0,0,84,118Zm88,0a10,10,0,1,0,10,10A10,10,0,0,0,172,118Zm58,10A102,102,0,0,1,79.31,217.65L44.44,229.27a14,14,0,0,1-17.71-17.71l11.62-34.87A102,102,0,1,1,230,128Zm-12,0A90,90,0,1,0,50.08,173.06a6,6,0,0,1,.5,4.91L38.12,215.35a2,2,0,0,0,2.53,2.53L78,205.42a6.2,6.2,0,0,1,1.9-.31,6.09,6.09,0,0,1,3,.81A90,90,0,0,0,218,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128ZM84,116a12,12,0,1,0,12,12A12,12,0,0,0,84,116Zm88,0a12,12,0,1,0,12,12A12,12,0,0,0,172,116Zm60,12A104,104,0,0,1,79.12,219.82L45.07,231.17a16,16,0,0,1-20.24-20.24l11.35-34.05A104,104,0,1,1,232,128Zm-16,0A88,88,0,1,0,51.81,172.06a8,8,0,0,1,.66,6.54L40,216,77.4,203.53a7.85,7.85,0,0,1,2.53-.42,8,8,0,0,1,4,1.08A88,88,0,0,0,216,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M136,128a8,8,0,1,1-8-8A8,8,0,0,1,136,128Zm-52-8a8,8,0,1,0,8,8A8,8,0,0,0,84,120Zm88,0a8,8,0,1,0,8,8A8,8,0,0,0,172,120Zm56,8A100,100,0,0,1,79.5,215.47l-35.69,11.9a12,12,0,0,1-15.18-15.18l11.9-35.69A100,100,0,1,1,228,128Zm-8,0A92,92,0,1,0,48.35,174.07a4,4,0,0,1,.33,3.27L36.22,214.72a4,4,0,0,0,5.06,5.06l37.38-12.46a3.93,3.93,0,0,1,1.27-.21,4.05,4.05,0,0,1,2,.54A92,92,0,0,0,220,128Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport s from \"../defs/ChatsCircle.es.js\";\nconst r = e.forwardRef((t, o) => /* @__PURE__ */ e.createElement(a, { ref: o, ...t, weights: s }));\nr.displayName = \"ChatsCircleIcon\";\nconst m = r;\nexport {\n m as ChatsCircle,\n r as ChatsCircleIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M236.34,187.09A84,84,0,0,0,172.29,68.9,84,84,0,0,0,19.66,139.09l-6.84,23.26a20,20,0,0,0,24.83,24.83l23.26-6.84a83.94,83.94,0,0,0,22.76,6.74,84.06,84.06,0,0,0,111.42,41.26l23.26,6.84a20,20,0,0,0,24.83-24.83ZM62,155.5a11.88,11.88,0,0,0-3.39.49l-20.72,6.09L44,141.35a12,12,0,0,0-.93-9A60,60,0,1,1,67.7,156.92,12,12,0,0,0,62,155.5Zm150.89,24.8a12,12,0,0,0-.93,9l6.09,20.73L197.36,204a12,12,0,0,0-9.06.93A60,60,0,0,1,111,186.63a83.93,83.93,0,0,0,68.55-91.37,60,60,0,0,1,33.38,85Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M231.66,213.73a8,8,0,0,1-9.93,9.93L194,215.5A72.05,72.05,0,0,1,92.06,175.89h0c1.31.07,2.62.11,3.94.11a72,72,0,0,0,67.93-95.88h0A72,72,0,0,1,223.5,186Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M232.07,186.76a80,80,0,0,0-62.5-114.17A80,80,0,1,0,23.93,138.76l-7.27,24.71a16,16,0,0,0,19.87,19.87l24.71-7.27a80.39,80.39,0,0,0,25.18,7.35,80,80,0,0,0,108.34,40.65l24.71,7.27a16,16,0,0,0,19.87-19.86ZM62,159.5a8.28,8.28,0,0,0-2.26.32L32,168l8.17-27.76a8,8,0,0,0-.63-6,64,64,0,1,1,26.26,26.26A8,8,0,0,0,62,159.5Zm153.79,28.73L224,216l-27.76-8.17a8,8,0,0,0-6,.63,64.05,64.05,0,0,1-85.87-24.88A79.93,79.93,0,0,0,174.7,89.71a64,64,0,0,1,41.75,92.48A8,8,0,0,0,215.82,188.23Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232.07,186.76a80,80,0,0,0-62.5-114.17A80,80,0,1,0,23.93,138.76l-7.27,24.71a16,16,0,0,0,19.87,19.87l24.71-7.27a80.39,80.39,0,0,0,25.18,7.35,80,80,0,0,0,108.34,40.65l24.71,7.27a16,16,0,0,0,19.87-19.86Zm-16.25,1.47L224,216l-27.76-8.17a8,8,0,0,0-6,.63,64.05,64.05,0,0,1-85.87-24.88A79.93,79.93,0,0,0,174.7,89.71a64,64,0,0,1,41.75,92.48A8,8,0,0,0,215.82,188.23Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M229.93,186.58A78,78,0,0,0,168.16,74.42,78,78,0,1,0,26.07,138.58L18.58,164A14,14,0,0,0,36,181.42l25.46-7.49a78,78,0,0,0,26.39,7.63,78,78,0,0,0,106.77,40.37L220,229.42A14,14,0,0,0,237.42,212ZM62,161.5a6.05,6.05,0,0,0-1.69.24l-27.77,8.17a2,2,0,0,1-2.48-2.48l8.17-27.77a6.05,6.05,0,0,0-.47-4.53,66,66,0,1,1,27.08,27.08A6,6,0,0,0,62,161.5Zm155.71,26.16,8.17,27.77a2,2,0,0,1-2.48,2.48l-27.77-8.17a6.06,6.06,0,0,0-4.53.47,66,66,0,0,1-90-28.4,77.92,77.92,0,0,0,71-94.68,66,66,0,0,1,46.07,96A6.05,6.05,0,0,0,217.74,187.66Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232.07,186.76a80,80,0,0,0-62.5-114.17A80,80,0,1,0,23.93,138.76l-7.27,24.71a16,16,0,0,0,19.87,19.87l24.71-7.27a80.39,80.39,0,0,0,25.18,7.35,80,80,0,0,0,108.34,40.65l24.71,7.27a16,16,0,0,0,19.87-19.86ZM62,159.5a8.28,8.28,0,0,0-2.26.32L32,168l8.17-27.76a8,8,0,0,0-.63-6,64,64,0,1,1,26.26,26.26A8,8,0,0,0,62,159.5Zm153.79,28.73L224,216l-27.76-8.17a8,8,0,0,0-6,.63,64.05,64.05,0,0,1-85.87-24.88A79.93,79.93,0,0,0,174.7,89.71a64,64,0,0,1,41.75,92.48A8,8,0,0,0,215.82,188.23Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M227.79,186.39a76,76,0,0,0-61-110.07A76,76,0,1,0,28.21,138.39L20.5,164.6a12,12,0,0,0,14.9,14.9l26.21-7.71a75.93,75.93,0,0,0,27.6,7.9,76,76,0,0,0,105.18,40.1l26.21,7.71a12,12,0,0,0,14.9-14.9ZM60.9,163.66l-27.76,8.17a4,4,0,0,1-5-5l8.17-27.76a4.07,4.07,0,0,0-.31-3A68,68,0,1,1,63.92,164,4.06,4.06,0,0,0,60.9,163.66Zm165.92,55.16a4,4,0,0,1-4,1l-27.76-8.17a4.07,4.07,0,0,0-3,.31A68,68,0,0,1,98,180a76,76,0,0,0,71.5-95.28A68,68,0,0,1,220,184.08a4.07,4.07,0,0,0-.31,3l8.17,27.76A4,4,0,0,1,226.82,218.82Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport c from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/Check.es.js\";\nconst o = e.forwardRef((r, t) => /* @__PURE__ */ e.createElement(c, { ref: t, ...r, weights: a }));\no.displayName = \"CheckIcon\";\nconst f = o;\nexport {\n f as Check,\n o as CheckIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M232,56V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M228.24,76.24l-128,128a6,6,0,0,1-8.48,0l-56-56a6,6,0,0,1,8.48-8.48L96,191.51,219.76,67.76a6,6,0,0,1,8.48,8.48Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M226.83,74.83l-128,128a4,4,0,0,1-5.66,0l-56-56a4,4,0,0,1,5.66-5.66L96,194.34,221.17,69.17a4,4,0,1,1,5.66,5.66Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/CheckCircle.es.js\";\nconst r = e.forwardRef((c, o) => /* @__PURE__ */ e.createElement(t, { ref: o, ...c, weights: a }));\nr.displayName = \"CheckCircleIcon\";\nconst s = r;\nexport {\n s as CheckCircle,\n r as CheckCircleIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M176.49,95.51a12,12,0,0,1,0,17l-56,56a12,12,0,0,1-17,0l-24-24a12,12,0,1,1,17-17L112,143l47.51-47.52A12,12,0,0,1,176.49,95.51ZM236,128A108,108,0,1,1,128,20,108.12,108.12,0,0,1,236,128Zm-24,0a84,84,0,1,0-84,84A84.09,84.09,0,0,0,212,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm45.66,85.66-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35a8,8,0,0,1,11.32,11.32Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M172.24,99.76a6,6,0,0,1,0,8.48l-56,56a6,6,0,0,1-8.48,0l-24-24a6,6,0,0,1,8.48-8.48L112,151.51l51.76-51.75A6,6,0,0,1,172.24,99.76ZM230,128A102,102,0,1,1,128,26,102.12,102.12,0,0,1,230,128Zm-12,0a90,90,0,1,0-90,90A90.1,90.1,0,0,0,218,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M173.66,98.34a8,8,0,0,1,0,11.32l-56,56a8,8,0,0,1-11.32,0l-24-24a8,8,0,0,1,11.32-11.32L112,148.69l50.34-50.35A8,8,0,0,1,173.66,98.34ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M170.83,101.17a4,4,0,0,1,0,5.66l-56,56a4,4,0,0,1-5.66,0l-24-24a4,4,0,0,1,5.66-5.66L112,154.34l53.17-53.17A4,4,0,0,1,170.83,101.17ZM228,128A100,100,0,1,1,128,28,100.11,100.11,0,0,1,228,128Zm-8,0a92,92,0,1,0-92,92A92.1,92.1,0,0,0,220,128Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nimport c from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/Circle.es.js\";\nconst r = e.forwardRef((o, t) => /* @__PURE__ */ e.createElement(c, { ref: t, ...o, weights: a }));\nr.displayName = \"CircleIcon\";\nconst s = r;\nexport {\n s as Circle,\n r as CircleIcon\n};\n","import * as e from \"react\";\nconst t = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M232,128A104,104,0,1,1,128,24,104.13,104.13,0,0,1,232,128Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm0,192a90,90,0,1,1,90-90A90.1,90.1,0,0,1,128,218Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,192a92,92,0,1,1,92-92A92.1,92.1,0,0,1,128,220Z\" }))\n ]\n]);\nexport {\n t as default\n};\n","import * as e from \"react\";\nimport s from \"../lib/SSRBase.es.js\";\nimport t from \"../defs/CircleDashed.es.js\";\nconst r = e.forwardRef((o, a) => /* @__PURE__ */ e.createElement(s, { ref: a, ...o, weights: t }));\nr.displayName = \"CircleDashedIcon\";\nconst m = r;\nexport {\n m as CircleDashed,\n r as CircleDashedIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M92.38,38.05A12,12,0,0,1,101,23.42a108,108,0,0,1,54,0,12,12,0,1,1-6,23.23,84.11,84.11,0,0,0-42,0A12,12,0,0,1,92.38,38.05ZM50.94,52.34a108.1,108.1,0,0,0-27,46.76,12,12,0,0,0,8.37,14.77,12.2,12.2,0,0,0,3.2.43,12,12,0,0,0,11.56-8.8,84,84,0,0,1,21-36.35A12,12,0,1,0,50.94,52.34Zm-3.88,98.14a12,12,0,0,0-23.12,6.42,108,108,0,0,0,27,46.78A12,12,0,0,0,68,186.85,84,84,0,0,1,47.06,150.48ZM149,209.35a84,84,0,0,1-42,0,12,12,0,1,0-6,23.23,108,108,0,0,0,54,0,12,12,0,1,0-6-23.23Zm74.72-67.22A12,12,0,0,0,209,150.5a84,84,0,0,1-21,36.35,12,12,0,0,0,17.12,16.82,108.19,108.19,0,0,0,27-46.77A12,12,0,0,0,223.71,142.13Zm-14.77-36.61a12,12,0,0,0,23.12-6.42,108,108,0,0,0-27-46.78A12,12,0,1,0,188,69.15,84,84,0,0,1,208.94,105.52Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M96.26,37A8,8,0,0,1,102,27.29a104.11,104.11,0,0,1,52,0,8,8,0,0,1-2,15.75,8.15,8.15,0,0,1-2-.26,88.09,88.09,0,0,0-44,0A8,8,0,0,1,96.26,37ZM53.79,55.14a104,104,0,0,0-26,45,8,8,0,1,0,15.42,4.26,87.91,87.91,0,0,1,22-38.08A8,8,0,0,0,53.79,55.14ZM43.21,151.55a8,8,0,1,0-15.42,4.28,104,104,0,0,0,26,45,8,8,0,1,0,11.41-11.21A88.14,88.14,0,0,1,43.21,151.55ZM150,213.22a88,88,0,0,1-44,0,8,8,0,1,0-4,15.49,104.11,104.11,0,0,0,52,0,8,8,0,0,0-4-15.49ZM222.65,146a8,8,0,0,0-9.85,5.57,87.88,87.88,0,0,1-22,38.09,8,8,0,1,0,11.42,11.21,104.05,104.05,0,0,0,26-45A8,8,0,0,0,222.65,146Zm-9.86-41.54a8,8,0,0,0,15.42-4.28,104,104,0,0,0-26-45,8,8,0,1,0-11.41,11.21A88.14,88.14,0,0,1,212.79,104.45Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm54.59,45a8,8,0,0,1,11.29.7,88,88,0,0,1,17.6,30.47,8,8,0,0,1-15.18,5.08,71.87,71.87,0,0,0-14.4-25A8,8,0,0,1,182.59,69ZM73.41,187.05a8,8,0,0,1-11.29-.7,88,88,0,0,1-17.6-30.47A8,8,0,1,1,59.7,150.8a71.87,71.87,0,0,0,14.4,24.95A8,8,0,0,1,73.41,187.05Zm.69-106.8a71.87,71.87,0,0,0-14.4,25,8,8,0,1,1-15.18-5.08,88,88,0,0,1,17.6-30.47,8,8,0,1,1,12,10.6Zm71.49,134a87.8,87.8,0,0,1-35.18,0,8,8,0,0,1,3.18-15.68,72.08,72.08,0,0,0,28.82,0,8,8,0,0,1,3.18,15.68Zm6.25-163A8,8,0,0,1,144,57.61a7.89,7.89,0,0,1-1.6-.16,72.08,72.08,0,0,0-28.82,0,8,8,0,1,1-3.18-15.68,87.92,87.92,0,0,1,35.18,0A8,8,0,0,1,151.84,51.2Zm59.64,104.68a88,88,0,0,1-17.6,30.47,8,8,0,1,1-12-10.6,71.87,71.87,0,0,0,14.4-24.95,8,8,0,0,1,15.18,5.08Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M98.19,36.54a6,6,0,0,1,4.3-7.31,102.12,102.12,0,0,1,51,0,6,6,0,0,1-3,11.62,90,90,0,0,0-45,0A6,6,0,0,1,98.19,36.54Zm-43,20A102.07,102.07,0,0,0,29.7,100.7a6,6,0,0,0,4.19,7.38,5.88,5.88,0,0,0,1.6.22,6,6,0,0,0,5.78-4.4A90,90,0,0,1,63.78,65a6,6,0,1,0-8.56-8.41ZM41.28,152.09a6,6,0,1,0-11.56,3.2,102,102,0,0,0,25.49,44.18,6,6,0,0,0,8.55-8.41A90.11,90.11,0,0,1,41.28,152.09Zm109.21,63.06a90,90,0,0,1-45,0,6,6,0,1,0-3,11.62,102.16,102.16,0,0,0,51,0,6,6,0,0,0-3-11.62Zm71.62-67.23a6,6,0,0,0-7.38,4.18,90,90,0,0,1-22.51,39,6,6,0,1,0,8.56,8.41A102.12,102.12,0,0,0,226.3,155.3,6,6,0,0,0,222.11,147.92Zm-7.39-44a6,6,0,0,0,5.78,4.4,5.88,5.88,0,0,0,1.6-.22,6,6,0,0,0,4.18-7.38,102,102,0,0,0-25.49-44.18,6,6,0,0,0-8.55,8.41A90.05,90.05,0,0,1,214.72,103.91Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M96.26,37.05A8,8,0,0,1,102,27.29a104.11,104.11,0,0,1,52,0,8,8,0,0,1-2,15.75,8.15,8.15,0,0,1-2-.26,88.09,88.09,0,0,0-44,0A8,8,0,0,1,96.26,37.05ZM53.79,55.14a104.05,104.05,0,0,0-26,45,8,8,0,0,0,15.42,4.27,88,88,0,0,1,22-38.09A8,8,0,0,0,53.79,55.14ZM43.21,151.55a8,8,0,1,0-15.42,4.28,104.12,104.12,0,0,0,26,45,8,8,0,0,0,11.41-11.22A88.14,88.14,0,0,1,43.21,151.55ZM150,213.22a88,88,0,0,1-44,0,8,8,0,1,0-4,15.49,104.11,104.11,0,0,0,52,0,8,8,0,0,0-4-15.49ZM222.65,146a8,8,0,0,0-9.85,5.58,87.91,87.91,0,0,1-22,38.08,8,8,0,1,0,11.42,11.21,104,104,0,0,0,26-45A8,8,0,0,0,222.65,146Zm-9.86-41.54a8,8,0,0,0,15.42-4.28,104,104,0,0,0-26-45,8,8,0,1,0-11.41,11.22A88,88,0,0,1,212.79,104.45Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M155.87,36.06a4,4,0,0,1-3.87,3,4.29,4.29,0,0,1-1-.13,92,92,0,0,0-46,0,4,4,0,0,1-2-7.74,100.09,100.09,0,0,1,50,0A4,4,0,0,1,155.87,36.06ZM56.65,57.94a100.18,100.18,0,0,0-25,43.29,4,4,0,0,0,7.71,2.14,92.06,92.06,0,0,1,23-39.82,4,4,0,1,0-5.7-5.61ZM39.36,152.62a4,4,0,0,0-7.71,2.14,100.08,100.08,0,0,0,25,43.31,4,4,0,1,0,5.71-5.61A91.91,91.91,0,0,1,39.36,152.62ZM151,217.09a92,92,0,0,1-46,0,4,4,0,0,0-2,7.75,100,100,0,0,0,50,0,4,4,0,1,0-2-7.74Zm70.58-67.25a4,4,0,0,0-4.92,2.79,92.12,92.12,0,0,1-23,39.82,4,4,0,1,0,5.7,5.61,100.18,100.18,0,0,0,25-43.29A4,4,0,0,0,221.58,149.84Zm-4.94-46.46a4,4,0,0,0,7.71-2.14,100.08,100.08,0,0,0-25-43.31,4,4,0,1,0-5.71,5.61A91.91,91.91,0,0,1,216.64,103.38Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport c from \"../defs/CircleHalf.es.js\";\nconst r = e.forwardRef((o, a) => /* @__PURE__ */ e.createElement(t, { ref: a, ...o, weights: c }));\nr.displayName = \"CircleHalfIcon\";\nconst l = r;\nexport {\n l as CircleHalf,\n r as CircleHalfIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm12,24.87a83.53,83.53,0,0,1,24,7.25V203.88a83.53,83.53,0,0,1-24,7.25ZM44,128a84.12,84.12,0,0,1,72-83.13V211.13A84.12,84.12,0,0,1,44,128Zm144,58.71V69.29a83.81,83.81,0,0,1,0,117.42Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M224,128a96,96,0,0,1-96,96V32A96,96,0,0,1,224,128Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24ZM40,128a88.11,88.11,0,0,1,80-87.63V215.63A88.11,88.11,0,0,1,40,128Zm96,87.63V40.37a88,88,0,0,1,0,175.26Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24ZM40,128a88.1,88.1,0,0,1,88-88V216A88.1,88.1,0,0,1,40,128Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm6,12.2a89.86,89.86,0,0,1,20,3.63V214.17a89.86,89.86,0,0,1-20,3.63Zm32,8.23a90.48,90.48,0,0,1,20,12.81V196.76a90.48,90.48,0,0,1-20,12.81ZM38,128a90.12,90.12,0,0,1,84-89.8V217.8A90.12,90.12,0,0,1,38,128Zm160,56.5V71.5a89.81,89.81,0,0,1,0,113Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm8,16.37a86.4,86.4,0,0,1,16,3V212.67a86.4,86.4,0,0,1-16,3Zm32,9.26a87.81,87.81,0,0,1,16,10.54V195.83a87.81,87.81,0,0,1-16,10.54ZM40,128a88.11,88.11,0,0,1,80-87.63V215.63A88.11,88.11,0,0,1,40,128Zm160,50.54V77.46a87.82,87.82,0,0,1,0,101.08Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm4,8.09a91.58,91.58,0,0,1,24,4.27V215.64a91.58,91.58,0,0,1-24,4.27Zm32,7.25a92.21,92.21,0,0,1,24,15V197.69a92.21,92.21,0,0,1-24,15ZM36,128a92.11,92.11,0,0,1,88-91.91V219.91A92.11,92.11,0,0,1,36,128Zm160,61.9V66.1a91.83,91.83,0,0,1,0,123.8Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as o from \"react\";\nimport c from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/Clock.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(c, { ref: t, ...r, weights: a }));\ne.displayName = \"ClockIcon\";\nconst f = e;\nexport {\n f as Clock,\n e as ClockIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Zm68-84a12,12,0,0,1-12,12H128a12,12,0,0,1-12-12V72a12,12,0,0,1,24,0v44h44A12,12,0,0,1,196,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm56,112H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm0,192a90,90,0,1,1,90-90A90.1,90.1,0,0,1,128,218Zm62-90a6,6,0,0,1-6,6H128a6,6,0,0,1-6-6V72a6,6,0,0,1,12,0v50h50A6,6,0,0,1,190,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm64-88a8,8,0,0,1-8,8H128a8,8,0,0,1-8-8V72a8,8,0,0,1,16,0v48h48A8,8,0,0,1,192,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,192a92,92,0,1,1,92-92A92.1,92.1,0,0,1,128,220Zm60-92a4,4,0,0,1-4,4H128a4,4,0,0,1-4-4V72a4,4,0,0,1,8,0v52h52A4,4,0,0,1,188,128Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as o from \"react\";\nimport c from \"../lib/SSRBase.es.js\";\nimport s from \"../defs/ClockCounterClockwise.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(c, { ref: t, ...r, weights: s }));\ne.displayName = \"ClockCounterClockwiseIcon\";\nconst i = e;\nexport {\n i as ClockCounterClockwise,\n e as ClockCounterClockwiseIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M140,80v41.21l34.17,20.5a12,12,0,1,1-12.34,20.58l-40-24A12,12,0,0,1,116,128V80a12,12,0,0,1,24,0ZM128,28A99.38,99.38,0,0,0,57.24,57.34c-4.69,4.74-9,9.37-13.24,14V64a12,12,0,0,0-24,0v40a12,12,0,0,0,12,12H72a12,12,0,0,0,0-24H57.77C63,86,68.37,80.22,74.26,74.26a76,76,0,1,1,1.58,109,12,12,0,0,0-16.48,17.46A100,100,0,1,0,128,28Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M136,80v43.47l36.12,21.67a8,8,0,0,1-8.24,13.72l-40-24A8,8,0,0,1,120,128V80a8,8,0,0,1,16,0Zm-8-48A95.44,95.44,0,0,0,60.08,60.15C52.81,67.51,46.35,74.59,40,82V64a8,8,0,0,0-16,0v40a8,8,0,0,0,8,8H72a8,8,0,0,0,0-16H49c7.15-8.42,14.27-16.35,22.39-24.57a80,80,0,1,1,1.66,114.75,8,8,0,1,0-11,11.64A96,96,0,1,0,128,32Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,128A96,96,0,0,1,62.11,197.82a8,8,0,1,1,11-11.64A80,80,0,1,0,71.43,71.43C67.9,75,64.58,78.51,61.35,82L77.66,98.34A8,8,0,0,1,72,112H32a8,8,0,0,1-8-8V64a8,8,0,0,1,13.66-5.66L50,70.7c3.22-3.49,6.54-7,10.06-10.55A96,96,0,0,1,224,128ZM128,72a8,8,0,0,0-8,8v48a8,8,0,0,0,3.88,6.86l40,24a8,8,0,1,0,8.24-13.72L136,123.47V80A8,8,0,0,0,128,72Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M134,80v44.6l37.09,22.25a6,6,0,0,1-6.18,10.3l-40-24A6,6,0,0,1,122,128V80a6,6,0,0,1,12,0Zm-6-46A93.4,93.4,0,0,0,61.51,61.56c-8.58,8.68-16,17-23.51,25.8V64a6,6,0,0,0-12,0v40a6,6,0,0,0,6,6H72a6,6,0,0,0,0-12H44.73C52.86,88.29,60.79,79.35,70,70a82,82,0,1,1,1.7,117.62,6,6,0,1,0-8.24,8.72A94,94,0,1,0,128,34Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M136,80v43.47l36.12,21.67a8,8,0,0,1-8.24,13.72l-40-24A8,8,0,0,1,120,128V80a8,8,0,0,1,16,0Zm-8-48A95.44,95.44,0,0,0,60.08,60.15C52.81,67.51,46.35,74.59,40,82V64a8,8,0,0,0-16,0v40a8,8,0,0,0,8,8H72a8,8,0,0,0,0-16H49c7.15-8.42,14.27-16.35,22.39-24.57a80,80,0,1,1,1.66,114.75,8,8,0,1,0-11,11.64A96,96,0,1,0,128,32Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M132,80v45.74l38.06,22.83a4,4,0,0,1-4.12,6.86l-40-24A4,4,0,0,1,124,128V80a4,4,0,0,1,8,0Zm-4-44A91.42,91.42,0,0,0,62.93,63C53.05,73,44.66,82.47,36,92.86V64a4,4,0,0,0-8,0v40a4,4,0,0,0,4,4H72a4,4,0,0,0,0-8H40.47C49.61,89,58.3,79,68.6,68.6a84,84,0,1,1,1.75,120.49,4,4,0,1,0-5.5,5.82A92,92,0,1,0,128,36Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport c from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/CodeBlock.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(c, { ref: t, ...r, weights: a }));\ne.displayName = \"CodeBlockIcon\";\nconst d = e;\nexport {\n d as CodeBlock,\n e as CodeBlockIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M51.51,104.49l-32-32a12,12,0,0,1,0-17l32-32a12,12,0,1,1,17,17L45,64,68.49,87.51a12,12,0,0,1-17,17Zm48,0a12,12,0,0,0,17,0l32-32a12,12,0,0,0,0-17l-32-32a12,12,0,1,0-17,17L123,64,99.51,87.51A12,12,0,0,0,99.51,104.49ZM200,36H180a12,12,0,0,0,0,24h16V196H60V140a12,12,0,0,0-24,0v60a20,20,0,0,0,20,20H200a20,20,0,0,0,20-20V56A20,20,0,0,0,200,36Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M152,32V96a16,16,0,0,1-16,16H32A16,16,0,0,1,16,96V32A16,16,0,0,1,32,16H136A16,16,0,0,1,152,32Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M58.34,101.66l-32-32a8,8,0,0,1,0-11.32l32-32A8,8,0,0,1,69.66,37.66L43.31,64,69.66,90.34a8,8,0,0,1-11.32,11.32Zm40,0a8,8,0,0,0,11.32,0l32-32a8,8,0,0,0,0-11.32l-32-32A8,8,0,0,0,98.34,37.66L124.69,64,98.34,90.34A8,8,0,0,0,98.34,101.66ZM200,40H176a8,8,0,0,0,0,16h24V200H56V136a8,8,0,0,0-16,0v64a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V56A16,16,0,0,0,200,40Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M200,40H168a16,16,0,0,0-16-16H32A16,16,0,0,0,16,40v80a16,16,0,0,0,16,16h8v64a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V56A16,16,0,0,0,200,40ZM106.34,61.66a8,8,0,0,1,11.32-11.32l24,24a8,8,0,0,1,0,11.32l-24,24a8,8,0,0,1-11.32-11.32L124.69,80Zm-64,24a8,8,0,0,1,0-11.32l24-24A8,8,0,0,1,77.66,61.66L59.31,80,77.66,98.34a8,8,0,0,1-11.32,11.32ZM200,200H56V136h96a16,16,0,0,0,16-16V56h32Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M59.76,100.24l-32-32a6,6,0,0,1,0-8.48l32-32a6,6,0,1,1,8.48,8.48L40.49,64,68.24,91.76a6,6,0,1,1-8.48,8.48Zm40,0a6,6,0,0,0,8.48,0l32-32a6,6,0,0,0,0-8.48l-32-32a6,6,0,1,0-8.48,8.48L127.51,64,99.76,91.76A6,6,0,0,0,99.76,100.24ZM200,42H176a6,6,0,0,0,0,12h24a2,2,0,0,1,2,2V200a2,2,0,0,1-2,2H56a2,2,0,0,1-2-2V136a6,6,0,0,0-12,0v64a14,14,0,0,0,14,14H200a14,14,0,0,0,14-14V56A14,14,0,0,0,200,42Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M58.34,101.66l-32-32a8,8,0,0,1,0-11.32l32-32A8,8,0,0,1,69.66,37.66L43.31,64,69.66,90.34a8,8,0,0,1-11.32,11.32Zm40,0a8,8,0,0,0,11.32,0l32-32a8,8,0,0,0,0-11.32l-32-32A8,8,0,0,0,98.34,37.66L124.69,64,98.34,90.34A8,8,0,0,0,98.34,101.66ZM200,40H176a8,8,0,0,0,0,16h24V200H56V136a8,8,0,0,0-16,0v64a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V56A16,16,0,0,0,200,40Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M61.17,98.83l-32-32a4,4,0,0,1,0-5.66l32-32a4,4,0,0,1,5.66,5.66L37.66,64,66.83,93.17a4,4,0,0,1-5.66,5.66Zm40,0a4,4,0,0,0,5.66,0l32-32a4,4,0,0,0,0-5.66l-32-32a4,4,0,0,0-5.66,5.66L130.34,64,101.17,93.17A4,4,0,0,0,101.17,98.83ZM200,44H176a4,4,0,0,0,0,8h24a4,4,0,0,1,4,4V200a4,4,0,0,1-4,4H56a4,4,0,0,1-4-4V136a4,4,0,0,0-8,0v64a12,12,0,0,0,12,12H200a12,12,0,0,0,12-12V56A12,12,0,0,0,200,44Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/Code.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...r, weights: m }));\ne.displayName = \"CodeIcon\";\nconst d = e;\nexport {\n d as Code,\n e as CodeIcon\n};\n","import * as a from \"react\";\nconst l = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M71.68,97.22,34.74,128l36.94,30.78a12,12,0,1,1-15.36,18.44l-48-40a12,12,0,0,1,0-18.44l48-40A12,12,0,0,1,71.68,97.22Zm176,21.56-48-40a12,12,0,1,0-15.36,18.44L221.26,128l-36.94,30.78a12,12,0,1,0,15.36,18.44l48-40a12,12,0,0,0,0-18.44ZM164.1,28.72a12,12,0,0,0-15.38,7.18l-64,176a12,12,0,0,0,7.18,15.37A11.79,11.79,0,0,0,96,228a12,12,0,0,0,11.28-7.9l64-176A12,12,0,0,0,164.1,28.72Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M240,128l-48,40H64L16,128,64,88H192Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M69.12,94.15,28.5,128l40.62,33.85a8,8,0,1,1-10.24,12.29l-48-40a8,8,0,0,1,0-12.29l48-40a8,8,0,0,1,10.24,12.3Zm176,27.7-48-40a8,8,0,1,0-10.24,12.3L227.5,128l-40.62,33.85a8,8,0,1,0,10.24,12.29l48-40a8,8,0,0,0,0-12.29ZM162.73,32.48a8,8,0,0,0-10.25,4.79l-64,176a8,8,0,0,0,4.79,10.26A8.14,8.14,0,0,0,96,224a8,8,0,0,0,7.52-5.27l64-176A8,8,0,0,0,162.73,32.48Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM92.8,145.6a8,8,0,1,1-9.6,12.8l-32-24a8,8,0,0,1,0-12.8l32-24a8,8,0,0,1,9.6,12.8L69.33,128Zm58.89-71.4-32,112a8,8,0,1,1-15.38-4.4l32-112a8,8,0,0,1,15.38,4.4Zm53.11,60.2-32,24a8,8,0,0,1-9.6-12.8L186.67,128,163.2,110.4a8,8,0,1,1,9.6-12.8l32,24a8,8,0,0,1,0,12.8Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M67.84,92.61,25.37,128l42.47,35.39a6,6,0,1,1-7.68,9.22l-48-40a6,6,0,0,1,0-9.22l48-40a6,6,0,0,1,7.68,9.22Zm176,30.78-48-40a6,6,0,1,0-7.68,9.22L230.63,128l-42.47,35.39a6,6,0,1,0,7.68,9.22l48-40a6,6,0,0,0,0-9.22Zm-81.79-89A6,6,0,0,0,154.36,38l-64,176A6,6,0,0,0,94,221.64a6.15,6.15,0,0,0,2,.36,6,6,0,0,0,5.64-3.95l64-176A6,6,0,0,0,162.05,34.36Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M69.12,94.15,28.5,128l40.62,33.85a8,8,0,1,1-10.24,12.29l-48-40a8,8,0,0,1,0-12.29l48-40a8,8,0,0,1,10.24,12.3Zm176,27.7-48-40a8,8,0,1,0-10.24,12.3L227.5,128l-40.62,33.85a8,8,0,1,0,10.24,12.29l48-40a8,8,0,0,0,0-12.29ZM162.73,32.48a8,8,0,0,0-10.25,4.79l-64,176a8,8,0,0,0,4.79,10.26A8.14,8.14,0,0,0,96,224a8,8,0,0,0,7.52-5.27l64-176A8,8,0,0,0,162.73,32.48Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M66.56,91.07,22.25,128l44.31,36.93A4,4,0,0,1,64,172a3.94,3.94,0,0,1-2.56-.93l-48-40a4,4,0,0,1,0-6.14l48-40a4,4,0,0,1,5.12,6.14Zm176,33.86-48-40a4,4,0,1,0-5.12,6.14L233.75,128l-44.31,36.93a4,4,0,1,0,5.12,6.14l48-40a4,4,0,0,0,0-6.14ZM161.37,36.24a4,4,0,0,0-5.13,2.39l-64,176a4,4,0,0,0,2.39,5.13A4.12,4.12,0,0,0,96,220a4,4,0,0,0,3.76-2.63l64-176A4,4,0,0,0,161.37,36.24Z\" }))\n ]\n]);\nexport {\n l as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/Copy.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...r, weights: m }));\ne.displayName = \"CopyIcon\";\nconst c = e;\nexport {\n c as Copy,\n e as CopyIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,40V168H168V88H88V40Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32ZM160,208H48V96H160Zm48-48H176V88a8,8,0,0,0-8-8H96V48H208Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32Zm-8,128H176V88a8,8,0,0,0-8-8H96V48H208Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,34H88a6,6,0,0,0-6,6V82H40a6,6,0,0,0-6,6V216a6,6,0,0,0,6,6H168a6,6,0,0,0,6-6V174h42a6,6,0,0,0,6-6V40A6,6,0,0,0,216,34ZM162,210H46V94H162Zm48-48H174V88a6,6,0,0,0-6-6H94V46H210Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32ZM160,208H48V96H160Zm48-48H176V88a8,8,0,0,0-8-8H96V48H208Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,36H88a4,4,0,0,0-4,4V84H40a4,4,0,0,0-4,4V216a4,4,0,0,0,4,4H168a4,4,0,0,0,4-4V172h44a4,4,0,0,0,4-4V40A4,4,0,0,0,216,36ZM164,212H44V92H164Zm48-48H172V88a4,4,0,0,0-4-4H92V44H212Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as r from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport d from \"../defs/CreditCard.es.js\";\nconst e = r.forwardRef((t, o) => /* @__PURE__ */ r.createElement(a, { ref: o, ...t, weights: d }));\ne.displayName = \"CreditCardIcon\";\nconst s = e;\nexport {\n s as CreditCard,\n e as CreditCardIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,44H32A20,20,0,0,0,12,64V192a20,20,0,0,0,20,20H224a20,20,0,0,0,20-20V64A20,20,0,0,0,224,44Zm-4,24V88H36V68ZM36,188V112H220v76Zm172-24a12,12,0,0,1-12,12H164a12,12,0,0,1,0-24h32A12,12,0,0,1,208,164Zm-68,0a12,12,0,0,1-12,12H116a12,12,0,0,1,0-24h12A12,12,0,0,1,140,164Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,96v96a8,8,0,0,1-8,8H32a8,8,0,0,1-8-8V96Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,48H32A16,16,0,0,0,16,64V192a16,16,0,0,0,16,16H224a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48Zm0,16V88H32V64Zm0,128H32V104H224v88Zm-16-24a8,8,0,0,1-8,8H168a8,8,0,0,1,0-16h32A8,8,0,0,1,208,168Zm-64,0a8,8,0,0,1-8,8H120a8,8,0,0,1,0-16h16A8,8,0,0,1,144,168Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,48H32A16,16,0,0,0,16,64V192a16,16,0,0,0,16,16H224a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48ZM136,176H120a8,8,0,0,1,0-16h16a8,8,0,0,1,0,16Zm64,0H168a8,8,0,0,1,0-16h32a8,8,0,0,1,0,16ZM32,88V64H224V88Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,50H32A14,14,0,0,0,18,64V192a14,14,0,0,0,14,14H224a14,14,0,0,0,14-14V64A14,14,0,0,0,224,50ZM32,62H224a2,2,0,0,1,2,2V90H30V64A2,2,0,0,1,32,62ZM224,194H32a2,2,0,0,1-2-2V102H226v90A2,2,0,0,1,224,194Zm-18-26a6,6,0,0,1-6,6H168a6,6,0,0,1,0-12h32A6,6,0,0,1,206,168Zm-64,0a6,6,0,0,1-6,6H120a6,6,0,0,1,0-12h16A6,6,0,0,1,142,168Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,48H32A16,16,0,0,0,16,64V192a16,16,0,0,0,16,16H224a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48Zm0,16V88H32V64Zm0,128H32V104H224v88Zm-16-24a8,8,0,0,1-8,8H168a8,8,0,0,1,0-16h32A8,8,0,0,1,208,168Zm-64,0a8,8,0,0,1-8,8H120a8,8,0,0,1,0-16h16A8,8,0,0,1,144,168Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,52H32A12,12,0,0,0,20,64V192a12,12,0,0,0,12,12H224a12,12,0,0,0,12-12V64A12,12,0,0,0,224,52ZM32,60H224a4,4,0,0,1,4,4V92H28V64A4,4,0,0,1,32,60ZM224,196H32a4,4,0,0,1-4-4V100H228v92A4,4,0,0,1,224,196Zm-20-28a4,4,0,0,1-4,4H168a4,4,0,0,1,0-8h32A4,4,0,0,1,204,168Zm-64,0a4,4,0,0,1-4,4H120a4,4,0,0,1,0-8h16A4,4,0,0,1,140,168Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport c from \"../defs/DeviceMobile.es.js\";\nconst o = e.forwardRef((i, r) => /* @__PURE__ */ e.createElement(t, { ref: r, ...i, weights: c }));\no.displayName = \"DeviceMobileIcon\";\nconst s = o;\nexport {\n s as DeviceMobile,\n o as DeviceMobileIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M176,12H80A28,28,0,0,0,52,40V216a28,28,0,0,0,28,28h96a28,28,0,0,0,28-28V40A28,28,0,0,0,176,12ZM76,76H180V180H76Zm4-40h96a4,4,0,0,1,4,4V52H76V40A4,4,0,0,1,80,36Zm96,184H80a4,4,0,0,1-4-4V204H180v12A4,4,0,0,1,176,220Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M192,56V200H64V56Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M176,16H80A24,24,0,0,0,56,40V216a24,24,0,0,0,24,24h96a24,24,0,0,0,24-24V40A24,24,0,0,0,176,16ZM72,64H184V192H72Zm8-32h96a8,8,0,0,1,8,8v8H72V40A8,8,0,0,1,80,32Zm96,192H80a8,8,0,0,1-8-8v-8H184v8A8,8,0,0,1,176,224Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M176,16H80A24,24,0,0,0,56,40V216a24,24,0,0,0,24,24h96a24,24,0,0,0,24-24V40A24,24,0,0,0,176,16ZM80,32h96a8,8,0,0,1,8,8v8H72V40A8,8,0,0,1,80,32Zm96,192H80a8,8,0,0,1-8-8v-8H184v8A8,8,0,0,1,176,224Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M176,18H80A22,22,0,0,0,58,40V216a22,22,0,0,0,22,22h96a22,22,0,0,0,22-22V40A22,22,0,0,0,176,18ZM70,62H186V194H70ZM80,30h96a10,10,0,0,1,10,10V50H70V40A10,10,0,0,1,80,30Zm96,196H80a10,10,0,0,1-10-10V206H186v10A10,10,0,0,1,176,226Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M176,16H80A24,24,0,0,0,56,40V216a24,24,0,0,0,24,24h96a24,24,0,0,0,24-24V40A24,24,0,0,0,176,16ZM72,64H184V192H72Zm8-32h96a8,8,0,0,1,8,8v8H72V40A8,8,0,0,1,80,32Zm96,192H80a8,8,0,0,1-8-8v-8H184v8A8,8,0,0,1,176,224Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M176,20H80A20,20,0,0,0,60,40V216a20,20,0,0,0,20,20h96a20,20,0,0,0,20-20V40A20,20,0,0,0,176,20ZM68,60H188V196H68ZM80,28h96a12,12,0,0,1,12,12V52H68V40A12,12,0,0,1,80,28Zm96,200H80a12,12,0,0,1-12-12V204H188v12A12,12,0,0,1,176,228Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nimport s from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/DotsThree.es.js\";\nconst o = e.forwardRef((r, t) => /* @__PURE__ */ e.createElement(s, { ref: t, ...r, weights: a }));\no.displayName = \"DotsThreeIcon\";\nconst f = o;\nexport {\n f as DotsThree,\n o as DotsThreeIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M144,128a16,16,0,1,1-16-16A16,16,0,0,1,144,128ZM60,112a16,16,0,1,0,16,16A16,16,0,0,0,60,112Zm136,0a16,16,0,1,0,16,16A16,16,0,0,0,196,112Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M240,96v64a16,16,0,0,1-16,16H32a16,16,0,0,1-16-16V96A16,16,0,0,1,32,80H224A16,16,0,0,1,240,96Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128Zm56-12a12,12,0,1,0,12,12A12,12,0,0,0,196,116ZM60,116a12,12,0,1,0,12,12A12,12,0,0,0,60,116Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,80H32A16,16,0,0,0,16,96v64a16,16,0,0,0,16,16H224a16,16,0,0,0,16-16V96A16,16,0,0,0,224,80ZM60,140a12,12,0,1,1,12-12A12,12,0,0,1,60,140Zm68,0a12,12,0,1,1,12-12A12,12,0,0,1,128,140Zm68,0a12,12,0,1,1,12-12A12,12,0,0,1,196,140Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M138,128a10,10,0,1,1-10-10A10,10,0,0,1,138,128ZM60,118a10,10,0,1,0,10,10A10,10,0,0,0,60,118Zm136,0a10,10,0,1,0,10,10A10,10,0,0,0,196,118Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128Zm56-12a12,12,0,1,0,12,12A12,12,0,0,0,196,116ZM60,116a12,12,0,1,0,12,12A12,12,0,0,0,60,116Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M136,128a8,8,0,1,1-8-8A8,8,0,0,1,136,128Zm-76-8a8,8,0,1,0,8,8A8,8,0,0,0,60,120Zm136,0a8,8,0,1,0,8,8A8,8,0,0,0,196,120Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nimport r from \"../lib/SSRBase.es.js\";\nimport t from \"../defs/EnvelopeSimple.es.js\";\nconst o = e.forwardRef((m, p) => /* @__PURE__ */ e.createElement(r, { ref: p, ...m, weights: t }));\no.displayName = \"EnvelopeSimpleIcon\";\nconst l = o;\nexport {\n l as EnvelopeSimple,\n o as EnvelopeSimpleIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,44H32A12,12,0,0,0,20,56V192a20,20,0,0,0,20,20H216a20,20,0,0,0,20-20V56A12,12,0,0,0,224,44ZM193.15,68,128,127.72,62.85,68ZM44,188V83.28l75.89,69.57a12,12,0,0,0,16.22,0L212,83.28V188Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,56l-96,88L32,56Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48ZM203.43,64,128,133.15,52.57,64ZM216,192H40V74.19l82.59,75.71a8,8,0,0,0,10.82,0L216,74.19V192Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48Zm-8,144H40V74.19l82.59,75.71a8,8,0,0,0,10.82,0L216,74.19V192Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,50H32a6,6,0,0,0-6,6V192a14,14,0,0,0,14,14H216a14,14,0,0,0,14-14V56A6,6,0,0,0,224,50ZM208.58,62,128,135.86,47.42,62ZM216,194H40a2,2,0,0,1-2-2V69.64l86,78.78a6,6,0,0,0,8.1,0L218,69.64V192A2,2,0,0,1,216,194Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48ZM203.43,64,128,133.15,52.57,64ZM216,192H40V74.19l82.59,75.71a8,8,0,0,0,10.82,0L216,74.19V192Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,52H32a4,4,0,0,0-4,4V192a12,12,0,0,0,12,12H216a12,12,0,0,0,12-12V56A4,4,0,0,0,224,52Zm-10.28,8L128,138.57,42.28,60ZM216,196H40a4,4,0,0,1-4-4V65.09L125.3,147a4,4,0,0,0,5.4,0L220,65.09V192A4,4,0,0,1,216,196Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport i from \"../defs/File.es.js\";\nconst o = e.forwardRef((r, t) => /* @__PURE__ */ e.createElement(a, { ref: t, ...r, weights: i }));\no.displayName = \"FileIcon\";\nconst c = o;\nexport {\n c as File,\n o as FileIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216.49,79.52l-56-56A12,12,0,0,0,152,20H56A20,20,0,0,0,36,40V216a20,20,0,0,0,20,20H200a20,20,0,0,0,20-20V88A12,12,0,0,0,216.49,79.52ZM160,57l23,23H160ZM60,212V44h76V92a12,12,0,0,0,12,12h48V212Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208,88H152V32Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM152,88V44l44,44Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M212.24,83.76l-56-56A6,6,0,0,0,152,26H56A14,14,0,0,0,42,40V216a14,14,0,0,0,14,14H200a14,14,0,0,0,14-14V88A6,6,0,0,0,212.24,83.76ZM158,46.48,193.52,82H158ZM200,218H56a2,2,0,0,1-2-2V40a2,2,0,0,1,2-2h90V88a6,6,0,0,0,6,6h50V216A2,2,0,0,1,200,218Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M210.83,85.17l-56-56A4,4,0,0,0,152,28H56A12,12,0,0,0,44,40V216a12,12,0,0,0,12,12H200a12,12,0,0,0,12-12V88A4,4,0,0,0,210.83,85.17ZM156,41.65,198.34,84H156ZM200,220H56a4,4,0,0,1-4-4V40a4,4,0,0,1,4-4h92V88a4,4,0,0,0,4,4h52V216A4,4,0,0,1,200,220Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport c from \"../defs/Folder.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...r, weights: c }));\ne.displayName = \"FolderIcon\";\nconst d = e;\nexport {\n d as Folder,\n e as FolderIcon,\n e as FolderNotchIcon\n};\n","import * as e from \"react\";\nconst t = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,68H133.39l-26-29.29a20,20,0,0,0-15-6.71H40A20,20,0,0,0,20,52V200.62A19.41,19.41,0,0,0,39.38,220H216.89A19.13,19.13,0,0,0,236,200.89V88A20,20,0,0,0,216,68ZM44,56H90.61l10.67,12H44ZM212,196H44V92H212Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M128,80H32V56a8,8,0,0,1,8-8H92.69a8,8,0,0,1,5.65,2.34Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,72H131.31L104,44.69A15.86,15.86,0,0,0,92.69,40H40A16,16,0,0,0,24,56V200.62A15.4,15.4,0,0,0,39.38,216H216.89A15.13,15.13,0,0,0,232,200.89V88A16,16,0,0,0,216,72ZM92.69,56l16,16H40V56ZM216,200H40V88H216Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,72H131.31L104,44.69A15.88,15.88,0,0,0,92.69,40H40A16,16,0,0,0,24,56V200.62A15.41,15.41,0,0,0,39.39,216h177.5A15.13,15.13,0,0,0,232,200.89V88A16,16,0,0,0,216,72ZM40,56H92.69l16,16H40Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,74H130.49l-27.9-27.9a13.94,13.94,0,0,0-9.9-4.1H40A14,14,0,0,0,26,56V200.62A13.39,13.39,0,0,0,39.38,214H216.89A13.12,13.12,0,0,0,230,200.89V88A14,14,0,0,0,216,74ZM40,54H92.69a2,2,0,0,1,1.41.59L113.51,74H38V56A2,2,0,0,1,40,54ZM218,200.89a1.11,1.11,0,0,1-1.11,1.11H39.38A1.4,1.4,0,0,1,38,200.62V86H216a2,2,0,0,1,2,2Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,72H131.31L104,44.69A15.86,15.86,0,0,0,92.69,40H40A16,16,0,0,0,24,56V200.62A15.4,15.4,0,0,0,39.38,216H216.89A15.13,15.13,0,0,0,232,200.89V88A16,16,0,0,0,216,72ZM40,56H92.69l16,16H40ZM216,200H40V88H216Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,76H129.66L101.17,47.52A11.9,11.9,0,0,0,92.69,44H40A12,12,0,0,0,28,56V200.62A11.4,11.4,0,0,0,39.38,212H216.89A11.12,11.12,0,0,0,228,200.89V88A12,12,0,0,0,216,76ZM36,56a4,4,0,0,1,4-4H92.69a4,4,0,0,1,2.82,1.17L118.34,76H36ZM220,200.89a3.12,3.12,0,0,1-3.11,3.11H39.38A3.39,3.39,0,0,1,36,200.62V84H216a4,4,0,0,1,4,4Z\" }))\n ]\n]);\nexport {\n t as default\n};\n","import * as e from \"react\";\nimport n from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/FolderOpen.es.js\";\nconst o = e.forwardRef((r, t) => /* @__PURE__ */ e.createElement(n, { ref: t, ...r, weights: a }));\no.displayName = \"FolderOpenIcon\";\nconst m = o;\nexport {\n o as FolderNotchOpenIcon,\n m as FolderOpen,\n o as FolderOpenIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M248.23,112.31A20,20,0,0,0,232,104H220V88a20,20,0,0,0-20-20H132L105.34,48a20.12,20.12,0,0,0-12-4H40A20,20,0,0,0,20,64V208a12,12,0,0,0,12,12H211.1a12,12,0,0,0,11.33-8l28.49-81.47.06-.17A20,20,0,0,0,248.23,112.31ZM92,68l28.8,21.6A12,12,0,0,0,128,92h68v12H69.77a20,20,0,0,0-18.94,13.58L44,137.15V68ZM202.59,196H48.89l23.72-68H226.37Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M208,88v24H69.77a8,8,0,0,0-7.59,5.47L32,208V64a8,8,0,0,1,8-8H93.33a8,8,0,0,1,4.8,1.6L128,80h72A8,8,0,0,1,208,88Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Zm112,136H43.1l26.67-80H232Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208h0a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M243.36,111.81A14,14,0,0,0,232,106H214V88a14,14,0,0,0-14-14H130L101.74,52.8a14.06,14.06,0,0,0-8.4-2.8H40A14,14,0,0,0,26,64V208a6,6,0,0,0,6,6H211.1a6,6,0,0,0,5.69-4.1l28.49-85.47A14,14,0,0,0,243.36,111.81ZM40,62H93.34a2,2,0,0,1,1.2.4L124.4,84.8A6,6,0,0,0,128,86h72a2,2,0,0,1,2,2v18H69.77a14,14,0,0,0-13.28,9.57L38,171V64A2,2,0,0,1,40,62Zm193.9,58.63L206.78,202H40.33l27.54-82.63a2,2,0,0,1,1.9-1.37H232a2,2,0,0,1,1.9,2.63Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M245,110.64A16,16,0,0,0,232,104H216V88a16,16,0,0,0-16-16H130.67L102.94,51.2a16.14,16.14,0,0,0-9.6-3.2H40A16,16,0,0,0,24,64V208h0a8,8,0,0,0,8,8H211.1a8,8,0,0,0,7.59-5.47l28.49-85.47A16.05,16.05,0,0,0,245,110.64ZM93.34,64,123.2,86.4A8,8,0,0,0,128,88h72v16H69.77a16,16,0,0,0-15.18,10.94L40,158.7V64Zm112,136H43.1l26.67-80H232Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M241.72,113a11.88,11.88,0,0,0-9.73-5H212V88a12,12,0,0,0-12-12H129.33l-28.8-21.6a12.05,12.05,0,0,0-7.2-2.4H40A12,12,0,0,0,28,64V208a4,4,0,0,0,4,4H211.09a4,4,0,0,0,3.79-2.74l28.49-85.47A11.86,11.86,0,0,0,241.72,113ZM40,60H93.33a4,4,0,0,1,2.4.8L125.6,83.2a4,4,0,0,0,2.4.8h72a4,4,0,0,1,4,4v20H69.76a12,12,0,0,0-11.38,8.21L36,183.35V64A4,4,0,0,1,40,60Zm195.78,61.26L208.2,204H37.55L66,118.74A4,4,0,0,1,69.76,116H232a4,4,0,0,1,3.79,5.26Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport l from \"../defs/FolderPlus.es.js\";\nconst e = o.forwardRef((r, s) => /* @__PURE__ */ o.createElement(t, { ref: s, ...r, weights: l }));\ne.displayName = \"FolderPlusIcon\";\nconst m = e;\nexport {\n e as FolderNotchPlusIcon,\n m as FolderPlus,\n e as FolderPlusIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,68H133.39l-26-29.29a20,20,0,0,0-15-6.71H40A20,20,0,0,0,20,52V200.62A19.41,19.41,0,0,0,39.38,220H216.89A19.13,19.13,0,0,0,236,200.89V88A20,20,0,0,0,216,68ZM90.61,56l10.67,12H44V56ZM212,196H44V92H212Zm-72-76v12h12a12,12,0,0,1,0,24H140v12a12,12,0,0,1-24,0V156H104a12,12,0,0,1,0-24h12V120a12,12,0,0,1,24,0Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M128,80H32V56a8,8,0,0,1,8-8H92.69a8,8,0,0,1,5.65,2.34Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,72H131.31L104,44.69A15.86,15.86,0,0,0,92.69,40H40A16,16,0,0,0,24,56V200.62A15.4,15.4,0,0,0,39.38,216H216.89A15.13,15.13,0,0,0,232,200.89V88A16,16,0,0,0,216,72ZM92.69,56l16,16H40V56ZM216,200H40V88H216Zm-88-88a8,8,0,0,1,8,8v16h16a8,8,0,0,1,0,16H136v16a8,8,0,0,1-16,0V152H104a8,8,0,0,1,0-16h16V120A8,8,0,0,1,128,112Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,72H131.31L104,44.69A15.88,15.88,0,0,0,92.69,40H40A16,16,0,0,0,24,56V200.62A15.41,15.41,0,0,0,39.39,216h177.5A15.13,15.13,0,0,0,232,200.89V88A16,16,0,0,0,216,72ZM40,56H92.69l16,16H40Zm112,96H136v16a8,8,0,0,1-16,0V152H104a8,8,0,0,1,0-16h16V120a8,8,0,0,1,16,0v16h16a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,74H130.49l-27.9-27.9a13.94,13.94,0,0,0-9.9-4.1H40A14,14,0,0,0,26,56V200.62A13.39,13.39,0,0,0,39.38,214H216.89A13.12,13.12,0,0,0,230,200.89V88A14,14,0,0,0,216,74ZM40,54H92.69a2,2,0,0,1,1.41.59L113.51,74H38V56A2,2,0,0,1,40,54ZM218,200.89a1.11,1.11,0,0,1-1.11,1.11H39.38A1.4,1.4,0,0,1,38,200.62V86H216a2,2,0,0,1,2,2ZM158,144a6,6,0,0,1-6,6H134v18a6,6,0,0,1-12,0V150H104a6,6,0,0,1,0-12h18V120a6,6,0,0,1,12,0v18h18A6,6,0,0,1,158,144Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,72H131.31L104,44.69A15.86,15.86,0,0,0,92.69,40H40A16,16,0,0,0,24,56V200.62A15.4,15.4,0,0,0,39.38,216H216.89A15.13,15.13,0,0,0,232,200.89V88A16,16,0,0,0,216,72ZM92.69,56l16,16H40V56ZM216,200H40V88H216Zm-88-88a8,8,0,0,1,8,8v16h16a8,8,0,0,1,0,16H136v16a8,8,0,0,1-16,0V152H104a8,8,0,0,1,0-16h16V120A8,8,0,0,1,128,112Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,76H129.66L101.17,47.52A11.9,11.9,0,0,0,92.69,44H40A12,12,0,0,0,28,56V200.62A11.4,11.4,0,0,0,39.38,212H216.89A11.12,11.12,0,0,0,228,200.89V88A12,12,0,0,0,216,76ZM40,52H92.69a4,4,0,0,1,2.82,1.17L118.34,76H36V56A4,4,0,0,1,40,52ZM220,200.89a3.12,3.12,0,0,1-3.11,3.11H39.38A3.39,3.39,0,0,1,36,200.62V84H216a4,4,0,0,1,4,4ZM156,144a4,4,0,0,1-4,4H132v20a4,4,0,0,1-8,0V148H104a4,4,0,0,1,0-8h20V120a4,4,0,0,1,8,0v20h20A4,4,0,0,1,156,144Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/Funnel.es.js\";\nconst o = e.forwardRef((n, r) => /* @__PURE__ */ e.createElement(t, { ref: r, ...n, weights: a }));\no.displayName = \"FunnelIcon\";\nconst c = o;\nexport {\n c as Funnel,\n o as FunnelIcon\n};\n","import * as e from \"react\";\nconst l = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M234.29,47.91A20,20,0,0,0,216,36H40A20,20,0,0,0,25.2,69.45l.12.14L92,140.75V216a20,20,0,0,0,31.1,16.64l32-21.33A20,20,0,0,0,164,194.66V140.75l66.67-71.16.12-.14A20,20,0,0,0,234.29,47.91Zm-91,79.89A12,12,0,0,0,140,136v56.52l-24,16V136a12,12,0,0,0-3.25-8.2L49.23,60H206.77Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M221.9,61.38,152,136v58.65a8,8,0,0,1-3.56,6.66l-32,21.33A8,8,0,0,1,104,216V136L34.1,61.38A8,8,0,0,1,40,48H216A8,8,0,0,1,221.9,61.38Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M230.6,49.53A15.81,15.81,0,0,0,216,40H40A16,16,0,0,0,28.19,66.76l.08.09L96,139.17V216a16,16,0,0,0,24.87,13.32l32-21.34A16,16,0,0,0,160,194.66V139.17l67.74-72.32.08-.09A15.8,15.8,0,0,0,230.6,49.53ZM40,56h0Zm106.18,74.58A8,8,0,0,0,144,136v58.66L112,216V136a8,8,0,0,0-2.16-5.47L40,56H216Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M227.81,66.76l-.08.09L160,139.17v55.49A16,16,0,0,1,152.87,208l-32,21.34A16,16,0,0,1,96,216V139.17L28.27,66.85l-.08-.09A16,16,0,0,1,40,40H216a16,16,0,0,1,11.84,26.76Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M228.77,50.34A13.8,13.8,0,0,0,216,42H40A14,14,0,0,0,29.67,65.42l.06.07L98,138.38V216a14,14,0,0,0,21.77,11.64l32-21.33A14,14,0,0,0,158,194.66V138.38l68.33-73A13.82,13.82,0,0,0,228.77,50.34Zm-11.26,6.94L147.62,131.9A6,6,0,0,0,146,136v58.66a2,2,0,0,1-.89,1.67l-32,21.33A2,2,0,0,1,110,216V136a6,6,0,0,0-1.62-4.1L38.53,57.32A2,2,0,0,1,40,54H216a1.9,1.9,0,0,1,1.83,1.19A1.86,1.86,0,0,1,217.51,57.28Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M230.6,49.53A15.81,15.81,0,0,0,216,40H40A16,16,0,0,0,28.19,66.76l.08.09L96,139.17V216a16,16,0,0,0,24.87,13.32l32-21.34A16,16,0,0,0,160,194.66V139.17l67.74-72.32.08-.09A15.8,15.8,0,0,0,230.6,49.53ZM40,56h0Zm106.18,74.58A8,8,0,0,0,144,136v58.66L112,216V136a8,8,0,0,0-2.16-5.47L40,56H216Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M227,51.15A11.85,11.85,0,0,0,216,44H40a12,12,0,0,0-8.88,20.07l.05.05L100,137.59V216a12,12,0,0,0,18.66,10l32-21.33a12,12,0,0,0,5.35-10V137.59l68.86-73.52A11.85,11.85,0,0,0,227,51.15Zm-8,7.5-69.9,74.62A4,4,0,0,0,148,136v58.65a4,4,0,0,1-1.78,3.33l-32,21.33A4,4,0,0,1,108,216V136a4,4,0,0,0-1.08-2.74L37.05,58.67A4,4,0,0,1,40,52H216a4,4,0,0,1,3,6.65Z\" }))\n ]\n]);\nexport {\n l as default\n};\n","import * as t from \"react\";\nimport e from \"../lib/SSRBase.es.js\";\nimport r from \"../defs/GitCommit.es.js\";\nconst o = t.forwardRef((m, i) => /* @__PURE__ */ t.createElement(e, { ref: i, ...m, weights: r }));\no.displayName = \"GitCommitIcon\";\nconst c = o;\nexport {\n c as GitCommit,\n o as GitCommitIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M244,116H186.79a60,60,0,0,0-117.58,0H12a12,12,0,0,0,0,24H69.21a60,60,0,0,0,117.58,0H244a12,12,0,0,0,0-24ZM128,164a36,36,0,1,1,36-36A36,36,0,0,1,128,164Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M176,128a48,48,0,1,1-48-48A48,48,0,0,1,176,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M248,120H183.42a56,56,0,0,0-110.84,0H8a8,8,0,0,0,0,16H72.58a56,56,0,0,0,110.84,0H248a8,8,0,0,0,0-16ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M256,128a8,8,0,0,1-8,8H183.42a56,56,0,0,1-110.84,0H8a8,8,0,0,1,0-16H72.58a56,56,0,0,1,110.84,0H248A8,8,0,0,1,256,128Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M248,122H181.66a54,54,0,0,0-107.32,0H8a6,6,0,0,0,0,12H74.34a54,54,0,0,0,107.32,0H248a6,6,0,0,0,0-12ZM128,170a42,42,0,1,1,42-42A42,42,0,0,1,128,170Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M248,120H183.42a56,56,0,0,0-110.84,0H8a8,8,0,0,0,0,16H72.58a56,56,0,0,0,110.84,0H248a8,8,0,0,0,0-16ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M248,124H179.83a52,52,0,0,0-103.66,0H8a4,4,0,0,0,0,8H76.17a52,52,0,0,0,103.66,0H248a4,4,0,0,0,0-8ZM128,172a44,44,0,1,1,44-44A44.05,44.05,0,0,1,128,172Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/GlobeSimple.es.js\";\nconst o = e.forwardRef((m, r) => /* @__PURE__ */ e.createElement(t, { ref: r, ...m, weights: a }));\no.displayName = \"GlobeSimpleIcon\";\nconst p = o;\nexport {\n p as GlobeSimple,\n o as GlobeSimpleIcon\n};\n","import * as e from \"react\";\nconst t = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm83.13,96H179.56a144.3,144.3,0,0,0-21.35-66.36A84.22,84.22,0,0,1,211.13,116ZM128,207c-9.36-10.81-24.46-33.13-27.45-67h54.94a119.74,119.74,0,0,1-17.11,52.77A108.61,108.61,0,0,1,128,207Zm-27.45-91a119.74,119.74,0,0,1,17.11-52.77A108.61,108.61,0,0,1,128,49c9.36,10.81,24.46,33.13,27.45,67ZM97.79,49.64A144.3,144.3,0,0,0,76.44,116H44.87A84.22,84.22,0,0,1,97.79,49.64ZM44.87,140H76.44a144.3,144.3,0,0,0,21.35,66.36A84.22,84.22,0,0,1,44.87,140Zm113.34,66.36A144.3,144.3,0,0,0,179.56,140h31.57A84.22,84.22,0,0,1,158.21,206.36Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24h0A104,104,0,1,0,232,128,104.12,104.12,0,0,0,128,24Zm87.62,96H175.79C174,83.49,159.94,57.67,148.41,42.4A88.19,88.19,0,0,1,215.63,120ZM96.23,136h63.54c-2.31,41.61-22.23,67.11-31.77,77C118.45,203.1,98.54,177.6,96.23,136Zm0-16C98.54,78.39,118.46,52.89,128,43c9.55,9.93,29.46,35.43,31.77,77Zm11.36-77.6C96.06,57.67,82,83.49,80.21,120H40.37A88.19,88.19,0,0,1,107.59,42.4ZM40.37,136H80.21c1.82,36.51,15.85,62.33,27.38,77.6A88.19,88.19,0,0,1,40.37,136Zm108,77.6c11.53-15.27,25.56-41.09,27.38-77.6h39.84A88.19,88.19,0,0,1,148.41,213.6Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24h0A104,104,0,1,0,232,128,104.12,104.12,0,0,0,128,24Zm87.62,96H175.79C174,83.49,159.94,57.67,148.41,42.4A88.19,88.19,0,0,1,215.63,120ZM96.23,136h63.54c-2.31,41.61-22.23,67.11-31.77,77C118.45,203.1,98.54,177.6,96.23,136Zm0-16C98.54,78.39,118.46,52.89,128,43c9.55,9.93,29.46,35.43,31.77,77Zm52.18,93.6c11.53-15.27,25.56-41.09,27.38-77.6h39.84A88.19,88.19,0,0,1,148.41,213.6Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm89.8,96H173.89c-1.54-40.77-18.48-68.23-30.43-82.67A90.19,90.19,0,0,1,217.8,122ZM128,215.83a110,110,0,0,1-15.19-19.45A128.37,128.37,0,0,1,94.13,134h67.74a128.37,128.37,0,0,1-18.68,62.38A110,110,0,0,1,128,215.83ZM94.13,122a128.37,128.37,0,0,1,18.68-62.38A110,110,0,0,1,128,40.17a110,110,0,0,1,15.19,19.45A128.37,128.37,0,0,1,161.87,122Zm18.41-82.67c-12,14.44-28.89,41.9-30.43,82.67H38.2A90.19,90.19,0,0,1,112.54,39.33ZM38.2,134H82.11c1.54,40.77,18.48,68.23,30.43,82.67A90.19,90.19,0,0,1,38.2,134Zm105.26,82.67c11.95-14.44,28.89-41.9,30.43-82.67H217.8A90.19,90.19,0,0,1,143.46,216.67Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24h0A104,104,0,1,0,232,128,104.12,104.12,0,0,0,128,24Zm87.62,96H175.79C174,83.49,159.94,57.67,148.41,42.4A88.19,88.19,0,0,1,215.63,120ZM96.23,136h63.54c-2.31,41.61-22.23,67.11-31.77,77C118.45,203.1,98.54,177.6,96.23,136Zm0-16C98.54,78.39,118.46,52.89,128,43c9.55,9.93,29.46,35.43,31.77,77Zm11.36-77.6C96.06,57.67,82,83.49,80.21,120H40.37A88.19,88.19,0,0,1,107.59,42.4ZM40.37,136H80.21c1.82,36.51,15.85,62.33,27.38,77.6A88.19,88.19,0,0,1,40.37,136Zm108,77.6c11.53-15.27,25.56-41.09,27.38-77.6h39.84A88.19,88.19,0,0,1,148.41,213.6Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,28h0A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm91.9,96h-48c-1.15-45.55-21.74-74.52-33.48-87.4A92.14,92.14,0,0,1,219.91,124ZM128,218.61c-8.32-8-34.57-37.13-35.93-86.61h71.86C162.57,181.48,136.32,210.61,128,218.61ZM92.07,124C93.43,74.52,119.68,45.39,128,37.39c8.32,8,34.57,37.13,35.93,86.61Zm25.47-87.4C105.8,49.48,85.21,78.45,84.06,124h-48A92.14,92.14,0,0,1,117.54,36.6ZM36.09,132h48c1.15,45.55,21.74,74.52,33.48,87.4A92.14,92.14,0,0,1,36.09,132Zm102.37,87.4c11.74-12.88,32.33-41.85,33.48-87.4h48A92.14,92.14,0,0,1,138.46,219.4Z\" }))\n ]\n]);\nexport {\n t as default\n};\n","import * as e from \"react\";\nimport m from \"../lib/SSRBase.es.js\";\nimport t from \"../defs/ImageSquare.es.js\";\nconst a = e.forwardRef((r, o) => /* @__PURE__ */ e.createElement(m, { ref: o, ...r, weights: t }));\na.displayName = \"ImageSquareIcon\";\nconst I = a;\nexport {\n I as ImageSquare,\n a as ImageSquareIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,28H48A20,20,0,0,0,28,48V208a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V48A20,20,0,0,0,208,28Zm-4,24v63.72L186.14,97.86a20,20,0,0,0-28.28,0L52,203.72V52ZM85.66,204,172,117.66l32,32V204ZM76,96a20,20,0,1,1,20,20A20,20,0,0,1,76,96Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M208,40H48a8,8,0,0,0-8,8V208a8,8,0,0,0,8,8h8.69L166.34,106.34a8,8,0,0,1,11.32,0L216,144.69V48A8,8,0,0,0,208,40ZM96,112a16,16,0,1,1,16-16A16,16,0,0,1,96,112Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM48,48H208v77.38l-24.69-24.7a16,16,0,0,0-22.62,0L53.37,208H48ZM208,208H76l96-96,36,36v60ZM96,120A24,24,0,1,0,72,96,24,24,0,0,0,96,120Zm0-32a8,8,0,1,1-8,8A8,8,0,0,1,96,88Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM48,48H208v77.38l-24.69-24.7a16,16,0,0,0-22.62,0L53.37,208H48ZM80,96a16,16,0,1,1,16,16A16,16,0,0,1,80,96Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,34H48A14,14,0,0,0,34,48V208a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V48A14,14,0,0,0,208,34ZM46,208V48a2,2,0,0,1,2-2H208a2,2,0,0,1,2,2v82.2l-28.1-28.1a14,14,0,0,0-19.8,0L54.2,210H48A2,2,0,0,1,46,208Zm162,2H71.17l99.41-99.41a2,2,0,0,1,2.83,0L210,147.17V208A2,2,0,0,1,208,210ZM96,118A22,22,0,1,0,74,96,22,22,0,0,0,96,118Zm0-32A10,10,0,1,1,86,96,10,10,0,0,1,96,86Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM48,48H208v77.38l-24.69-24.7a16,16,0,0,0-22.62,0L53.37,208H48ZM208,208H76l96-96,36,36v60ZM96,120A24,24,0,1,0,72,96,24,24,0,0,0,96,120Zm0-32a8,8,0,1,1-8,8A8,8,0,0,1,96,88Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,36H48A12,12,0,0,0,36,48V208a12,12,0,0,0,12,12H208a12,12,0,0,0,12-12V48A12,12,0,0,0,208,36ZM44,208V48a4,4,0,0,1,4-4H208a4,4,0,0,1,4,4v87l-31.51-31.52a12,12,0,0,0-17,0L55,212H48A4,4,0,0,1,44,208Zm164,4H66.34L169.17,109.17a4,4,0,0,1,5.66,0L212,146.34V208A4,4,0,0,1,208,212ZM96,116A20,20,0,1,0,76,96,20,20,0,0,0,96,116Zm0-32A12,12,0,1,1,84,96,12,12,0,0,1,96,84Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/Key.es.js\";\nconst o = e.forwardRef((r, t) => /* @__PURE__ */ e.createElement(a, { ref: t, ...r, weights: m }));\no.displayName = \"KeyIcon\";\nconst f = o;\nexport {\n f as Key,\n o as KeyIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M196,76a16,16,0,1,1-16-16A16,16,0,0,1,196,76Zm48,22.74A84.3,84.3,0,0,1,160.11,180H160a83.52,83.52,0,0,1-23.65-3.38l-7.86,7.87A12,12,0,0,1,120,188H108v12a12,12,0,0,1-12,12H84v12a12,12,0,0,1-12,12H40a20,20,0,0,1-20-20V187.31a19.86,19.86,0,0,1,5.86-14.14l53.52-53.52A84,84,0,1,1,244,98.74ZM202.43,53.57A59.48,59.48,0,0,0,158,36c-32,1-58,27.89-58,59.89a59.69,59.69,0,0,0,4.2,22.19,12,12,0,0,1-2.55,13.21L44,189v23H60V200a12,12,0,0,1,12-12H84V176a12,12,0,0,1,12-12h19l9.65-9.65a12,12,0,0,1,13.22-2.55A59.58,59.58,0,0,0,160,156h.08c32,0,58.87-26.07,59.89-58A59.55,59.55,0,0,0,202.43,53.57Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M232,98.36C230.73,136.92,198.67,168,160.09,168a71.68,71.68,0,0,1-26.92-5.17h0L120,176H96v24H72v24H40a8,8,0,0,1-8-8V187.31a8,8,0,0,1,2.34-5.65l58.83-58.83h0A71.68,71.68,0,0,1,88,95.91c0-38.58,31.08-70.64,69.64-71.87A72,72,0,0,1,232,98.36Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M216.57,39.43A80,80,0,0,0,83.91,120.78L28.69,176A15.86,15.86,0,0,0,24,187.31V216a16,16,0,0,0,16,16H72a8,8,0,0,0,8-8V208H96a8,8,0,0,0,8-8V184h16a8,8,0,0,0,5.66-2.34l9.56-9.57A79.73,79.73,0,0,0,160,176h.1A80,80,0,0,0,216.57,39.43ZM224,98.1c-1.09,34.09-29.75,61.86-63.89,61.9H160a63.7,63.7,0,0,1-23.65-4.51,8,8,0,0,0-8.84,1.68L116.69,168H96a8,8,0,0,0-8,8v16H72a8,8,0,0,0-8,8v16H40V187.31l58.83-58.82a8,8,0,0,0,1.68-8.84A63.72,63.72,0,0,1,96,95.92c0-34.14,27.81-62.8,61.9-63.89A64,64,0,0,1,224,98.1ZM192,76a12,12,0,1,1-12-12A12,12,0,0,1,192,76Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216.57,39.43A80,80,0,0,0,83.91,120.78L28.69,176A15.86,15.86,0,0,0,24,187.31V216a16,16,0,0,0,16,16H72a8,8,0,0,0,8-8V208H96a8,8,0,0,0,8-8V184h16a8,8,0,0,0,5.66-2.34l9.56-9.57A79.73,79.73,0,0,0,160,176h.1A80,80,0,0,0,216.57,39.43ZM180,92a16,16,0,1,1,16-16A16,16,0,0,1,180,92Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M215.15,40.85A78,78,0,0,0,86.2,121.31l-56.1,56.1a13.94,13.94,0,0,0-4.1,9.9V216a14,14,0,0,0,14,14H72a6,6,0,0,0,6-6V206H96a6,6,0,0,0,6-6V182h18a6,6,0,0,0,4.24-1.76l10.45-10.44A77.59,77.59,0,0,0,160,174h.1A78,78,0,0,0,215.15,40.85ZM226,98.16c-1.12,35.16-30.67,63.8-65.88,63.84a65.93,65.93,0,0,1-24.51-4.67,6,6,0,0,0-6.64,1.26L117.51,170H96a6,6,0,0,0-6,6v18H72a6,6,0,0,0-6,6v18H40a2,2,0,0,1-2-2V187.31a2,2,0,0,1,.58-1.41l58.83-58.83a6,6,0,0,0,1.26-6.64A65.61,65.61,0,0,1,94,95.92C94,60.71,122.68,31.16,157.83,30A66,66,0,0,1,226,98.16ZM190,76a10,10,0,1,1-10-10A10,10,0,0,1,190,76Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216.57,39.43A80,80,0,0,0,83.91,120.78L28.69,176A15.86,15.86,0,0,0,24,187.31V216a16,16,0,0,0,16,16H72a8,8,0,0,0,8-8V208H96a8,8,0,0,0,8-8V184h16a8,8,0,0,0,5.66-2.34l9.56-9.57A79.73,79.73,0,0,0,160,176h.1A80,80,0,0,0,216.57,39.43ZM224,98.1c-1.09,34.09-29.75,61.86-63.89,61.9H160a63.7,63.7,0,0,1-23.65-4.51,8,8,0,0,0-8.84,1.68L116.69,168H96a8,8,0,0,0-8,8v16H72a8,8,0,0,0-8,8v16H40V187.31l58.83-58.82a8,8,0,0,0,1.68-8.84A63.72,63.72,0,0,1,96,95.92c0-34.14,27.81-62.8,61.9-63.89A64,64,0,0,1,224,98.1ZM192,76a12,12,0,1,1-12-12A12,12,0,0,1,192,76Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M213.74,42.26A76,76,0,0,0,88.51,121.84l-57,57A11.93,11.93,0,0,0,28,187.31V216a12,12,0,0,0,12,12H72a4,4,0,0,0,4-4V204H96a4,4,0,0,0,4-4V180h20a4,4,0,0,0,2.83-1.17l11.33-11.34A75.72,75.72,0,0,0,160,172h.1A76,76,0,0,0,213.74,42.26Zm14.22,56c-1.15,36.22-31.6,65.72-67.87,65.77H160a67.52,67.52,0,0,1-25.21-4.83,4,4,0,0,0-4.45.83l-12,12H96a4,4,0,0,0-4,4v20H72a4,4,0,0,0-4,4v20H40a4,4,0,0,1-4-4V187.31a4.06,4.06,0,0,1,1.17-2.83L96,125.66a4,4,0,0,0,.83-4.45A67.51,67.51,0,0,1,92,95.91C92,59.64,121.55,29.19,157.77,28A68,68,0,0,1,228,98.23ZM188,76a8,8,0,1,1-8-8A8,8,0,0,1,188,76Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as t from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport i from \"../defs/Lightbulb.es.js\";\nconst o = t.forwardRef((e, r) => /* @__PURE__ */ t.createElement(a, { ref: r, ...e, weights: i }));\no.displayName = \"LightbulbIcon\";\nconst b = o;\nexport {\n b as Lightbulb,\n o as LightbulbIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M180,232a12,12,0,0,1-12,12H88a12,12,0,0,1,0-24h80A12,12,0,0,1,180,232Zm40-128a91.51,91.51,0,0,1-35.17,72.35A12.26,12.26,0,0,0,180,186v2a20,20,0,0,1-20,20H96a20,20,0,0,1-20-20v-2a12,12,0,0,0-4.7-9.51A91.57,91.57,0,0,1,36,104.52C35.73,54.69,76,13.2,125.79,12A92,92,0,0,1,220,104Zm-24,0a68,68,0,0,0-69.65-68C89.56,36.88,59.8,67.55,60,104.38a67.71,67.71,0,0,0,26.1,53.19A35.87,35.87,0,0,1,100,184h56.1A36.13,36.13,0,0,1,170,157.49,67.68,67.68,0,0,0,196,104Zm-20.07-5.32a48.5,48.5,0,0,0-31.91-40,12,12,0,0,0-8,22.62,24.31,24.31,0,0,1,16.09,20,12,12,0,0,0,23.86-2.64Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M208,104a79.86,79.86,0,0,1-30.59,62.92A24.29,24.29,0,0,0,168,186v6a8,8,0,0,1-8,8H96a8,8,0,0,1-8-8v-6a24.11,24.11,0,0,0-9.3-19A79.87,79.87,0,0,1,48,104.45C47.76,61.09,82.72,25,126.07,24A80,80,0,0,1,208,104Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M176,232a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h80A8,8,0,0,1,176,232Zm40-128a87.55,87.55,0,0,1-33.64,69.21A16.24,16.24,0,0,0,176,186v6a16,16,0,0,1-16,16H96a16,16,0,0,1-16-16v-6a16,16,0,0,0-6.23-12.66A87.59,87.59,0,0,1,40,104.49C39.74,56.83,78.26,17.14,125.88,16A88,88,0,0,1,216,104Zm-16,0a72,72,0,0,0-73.74-72c-39,.92-70.47,33.39-70.26,72.39a71.65,71.65,0,0,0,27.64,56.3A32,32,0,0,1,96,186v6h64v-6a32.15,32.15,0,0,1,12.47-25.35A71.65,71.65,0,0,0,200,104Zm-16.11-9.34a57.6,57.6,0,0,0-46.56-46.55,8,8,0,0,0-2.66,15.78c16.57,2.79,30.63,16.85,33.44,33.45A8,8,0,0,0,176,104a9,9,0,0,0,1.35-.11A8,8,0,0,0,183.89,94.66Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M176,232a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h80A8,8,0,0,1,176,232Zm40-128a87.55,87.55,0,0,1-33.64,69.21A16.24,16.24,0,0,0,176,186v6a16,16,0,0,1-16,16H96a16,16,0,0,1-16-16v-6a16,16,0,0,0-6.23-12.66A87.59,87.59,0,0,1,40,104.49C39.74,56.83,78.26,17.14,125.88,16A88,88,0,0,1,216,104Zm-32.11-9.34a57.6,57.6,0,0,0-46.56-46.55,8,8,0,0,0-2.66,15.78c16.57,2.79,30.63,16.85,33.44,33.45A8,8,0,0,0,176,104a9,9,0,0,0,1.35-.11A8,8,0,0,0,183.89,94.66Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M174,232a6,6,0,0,1-6,6H88a6,6,0,0,1,0-12h80A6,6,0,0,1,174,232Zm40-128a85.56,85.56,0,0,1-32.88,67.64A18.23,18.23,0,0,0,174,186v6a14,14,0,0,1-14,14H96a14,14,0,0,1-14-14v-6a18,18,0,0,0-7-14.23h0a85.59,85.59,0,0,1-33-67.24C41.74,57.91,79.39,19.12,125.93,18A86,86,0,0,1,214,104Zm-12,0a74,74,0,0,0-75.79-74C86.17,31,53.78,64.34,54,104.42a73.67,73.67,0,0,0,28.4,57.87A29.92,29.92,0,0,1,94,186v6a2,2,0,0,0,2,2h64a2,2,0,0,0,2-2v-6a30.18,30.18,0,0,1,11.7-23.78A73.59,73.59,0,0,0,202,104Zm-20.08-9A55.58,55.58,0,0,0,137,50.08a6,6,0,1,0-2,11.84C152.38,64.84,167.13,79.6,170.08,97a6,6,0,0,0,5.91,5,6.87,6.87,0,0,0,1-.08A6,6,0,0,0,181.92,95Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M176,232a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h80A8,8,0,0,1,176,232Zm40-128a87.55,87.55,0,0,1-33.64,69.21A16.24,16.24,0,0,0,176,186v6a16,16,0,0,1-16,16H96a16,16,0,0,1-16-16v-6a16,16,0,0,0-6.23-12.66A87.59,87.59,0,0,1,40,104.49C39.74,56.83,78.26,17.14,125.88,16A88,88,0,0,1,216,104Zm-16,0a72,72,0,0,0-73.74-72c-39,.92-70.47,33.39-70.26,72.39a71.65,71.65,0,0,0,27.64,56.3A32,32,0,0,1,96,186v6h64v-6a32.15,32.15,0,0,1,12.47-25.35A71.65,71.65,0,0,0,200,104Zm-16.11-9.34a57.6,57.6,0,0,0-46.56-46.55,8,8,0,0,0-2.66,15.78c16.57,2.79,30.63,16.85,33.44,33.45A8,8,0,0,0,176,104a9,9,0,0,0,1.35-.11A8,8,0,0,0,183.89,94.66Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M172,232a4,4,0,0,1-4,4H88a4,4,0,0,1,0-8h80A4,4,0,0,1,172,232Zm40-128a83.59,83.59,0,0,1-32.11,66.06A20.2,20.2,0,0,0,172,186v6a12,12,0,0,1-12,12H96a12,12,0,0,1-12-12v-6a20,20,0,0,0-7.76-15.81A83.58,83.58,0,0,1,44,104.47C43.75,59,80.52,21.09,126,20a84,84,0,0,1,86,84Zm-8,0a76,76,0,0,0-77.83-76C85,29,51.77,63.27,52,104.43a75.62,75.62,0,0,0,29.17,59.43A28,28,0,0,1,92,186v6a4,4,0,0,0,4,4h64a4,4,0,0,0,4-4v-6a28.14,28.14,0,0,1,10.94-22.2A75.62,75.62,0,0,0,204,104ZM136.66,52.06a4,4,0,0,0-1.32,7.88C153.53,63,169,78.45,172.06,96.67A4,4,0,0,0,176,100a3.88,3.88,0,0,0,.67-.06,4,4,0,0,0,3.27-4.61A53.51,53.51,0,0,0,136.66,52.06Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport r from \"../lib/SSRBase.es.js\";\nimport t from \"../defs/LinkSimple.es.js\";\nconst o = e.forwardRef((i, m) => /* @__PURE__ */ e.createElement(r, { ref: m, ...i, weights: t }));\no.displayName = \"LinkSimpleIcon\";\nconst p = o;\nexport {\n p as LinkSimple,\n o as LinkSimpleIcon\n};\n","import * as a from \"react\";\nconst l = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M87.5,151.52l64-64a12,12,0,0,1,17,17l-64,64a12,12,0,0,1-17-17Zm131-114a60.08,60.08,0,0,0-84.87,0L103.51,67.61a12,12,0,0,0,17,17l30.07-30.06a36,36,0,0,1,50.93,50.92L171.4,135.52a12,12,0,1,0,17,17l30.08-30.06A60.09,60.09,0,0,0,218.45,37.55ZM135.52,171.4l-30.07,30.08a36,36,0,0,1-50.92-50.93l30.06-30.07a12,12,0,0,0-17-17L37.55,133.58a60,60,0,0,0,84.88,84.87l30.06-30.07a12,12,0,0,0-17-17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M209.94,113.94l-96,96a48,48,0,0,1-67.88-67.88l96-96a48,48,0,0,1,67.88,67.88Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M165.66,90.34a8,8,0,0,1,0,11.32l-64,64a8,8,0,0,1-11.32-11.32l64-64A8,8,0,0,1,165.66,90.34ZM215.6,40.4a56,56,0,0,0-79.2,0L106.34,70.45a8,8,0,0,0,11.32,11.32l30.06-30a40,40,0,0,1,56.57,56.56l-30.07,30.06a8,8,0,0,0,11.31,11.32L215.6,119.6a56,56,0,0,0,0-79.2ZM138.34,174.22l-30.06,30.06a40,40,0,1,1-56.56-56.57l30.05-30.05a8,8,0,0,0-11.32-11.32L40.4,136.4a56,56,0,0,0,79.2,79.2l30.06-30.07a8,8,0,0,0-11.32-11.31Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM144.56,173.66l-21.45,21.45a44,44,0,0,1-62.22-62.22l21.45-21.46a8,8,0,0,1,11.32,11.31L72.2,144.2a28,28,0,0,0,39.6,39.6l21.45-21.46a8,8,0,0,1,11.31,11.32Zm-34.9-16a8,8,0,0,1-11.32-11.32l48-48a8,8,0,0,1,11.32,11.32Zm85.45-34.55-21.45,21.45a8,8,0,0,1-11.32-11.31L183.8,111.8a28,28,0,0,0-39.6-39.6L122.74,93.66a8,8,0,0,1-11.31-11.32l21.46-21.45a44,44,0,0,1,62.22,62.22Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M164.25,91.75a6,6,0,0,1,0,8.49l-64,64a6,6,0,0,1-8.49-8.48l64-64A6,6,0,0,1,164.25,91.75ZM214.2,41.8a54.07,54.07,0,0,0-76.38,0L107.75,71.85a6,6,0,0,0,8.49,8.49l30.07-30.06a42,42,0,0,1,59.41,59.41l-30.08,30.07a6,6,0,1,0,8.49,8.49l30.07-30.07A54,54,0,0,0,214.2,41.8ZM139.76,175.64l-30.07,30.08a42,42,0,0,1-59.41-59.41l30.06-30.07a6,6,0,0,0-8.49-8.49l-30,30.07a54,54,0,0,0,76.38,76.39l30.07-30.08a6,6,0,0,0-8.49-8.49Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M165.66,90.34a8,8,0,0,1,0,11.32l-64,64a8,8,0,0,1-11.32-11.32l64-64A8,8,0,0,1,165.66,90.34ZM215.6,40.4a56,56,0,0,0-79.2,0L106.34,70.45a8,8,0,0,0,11.32,11.32l30.06-30a40,40,0,0,1,56.57,56.56l-30.07,30.06a8,8,0,0,0,11.31,11.32L215.6,119.6a56,56,0,0,0,0-79.2ZM138.34,174.22l-30.06,30.06a40,40,0,1,1-56.56-56.57l30.05-30.05a8,8,0,0,0-11.32-11.32L40.4,136.4a56,56,0,0,0,79.2,79.2l30.06-30.07a8,8,0,0,0-11.32-11.31Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M162.84,93.16a4,4,0,0,1,0,5.66l-64,64a4,4,0,0,1-5.66-5.66l64-64A4,4,0,0,1,162.84,93.16Zm49.95-49.95a52.07,52.07,0,0,0-73.56,0L109.17,73.27a4,4,0,0,0,5.65,5.66l30.07-30.06a44,44,0,0,1,62.24,62.24l-30.07,30.06a4,4,0,0,0,5.66,5.66l30.07-30.06A52.07,52.07,0,0,0,212.79,43.21ZM141.17,177.06l-30.06,30.07a44,44,0,0,1-62.24-62.24l30.06-30.06a4,4,0,0,0-5.66-5.66L43.21,139.23a52,52,0,0,0,73.56,73.56l30.06-30.07a4,4,0,1,0-5.66-5.66Z\" }))\n ]\n]);\nexport {\n l as default\n};\n","import * as t from \"react\";\nimport r from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/ListBullets.es.js\";\nconst e = t.forwardRef((s, o) => /* @__PURE__ */ t.createElement(r, { ref: o, ...s, weights: a }));\ne.displayName = \"ListBulletsIcon\";\nconst m = e;\nexport {\n m as ListBullets,\n e as ListBulletsIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M76,64A12,12,0,0,1,88,52H216a12,12,0,0,1,0,24H88A12,12,0,0,1,76,64Zm140,52H88a12,12,0,0,0,0,24H216a12,12,0,0,0,0-24Zm0,64H88a12,12,0,0,0,0,24H216a12,12,0,0,0,0-24ZM44,112a16,16,0,1,0,16,16A16,16,0,0,0,44,112Zm0-64A16,16,0,1,0,60,64,16,16,0,0,0,44,48Zm0,128a16,16,0,1,0,16,16A16,16,0,0,0,44,176Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,64V192H88V64Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M80,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H88A8,8,0,0,1,80,64Zm136,56H88a8,8,0,1,0,0,16H216a8,8,0,0,0,0-16Zm0,64H88a8,8,0,1,0,0,16H216a8,8,0,0,0,0-16ZM44,52A12,12,0,1,0,56,64,12,12,0,0,0,44,52Zm0,64a12,12,0,1,0,12,12A12,12,0,0,0,44,116Zm0,64a12,12,0,1,0,12,12A12,12,0,0,0,44,180Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM68,188a12,12,0,1,1,12-12A12,12,0,0,1,68,188Zm0-48a12,12,0,1,1,12-12A12,12,0,0,1,68,140Zm0-48A12,12,0,1,1,80,80,12,12,0,0,1,68,92Zm124,92H104a8,8,0,0,1,0-16h88a8,8,0,0,1,0,16Zm0-48H104a8,8,0,0,1,0-16h88a8,8,0,0,1,0,16Zm0-48H104a8,8,0,0,1,0-16h88a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M82,64a6,6,0,0,1,6-6H216a6,6,0,0,1,0,12H88A6,6,0,0,1,82,64Zm134,58H88a6,6,0,0,0,0,12H216a6,6,0,0,0,0-12Zm0,64H88a6,6,0,0,0,0,12H216a6,6,0,0,0,0-12ZM44,54A10,10,0,1,0,54,64,10,10,0,0,0,44,54Zm0,128a10,10,0,1,0,10,10A10,10,0,0,0,44,182Zm0-64a10,10,0,1,0,10,10A10,10,0,0,0,44,118Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M80,64a8,8,0,0,1,8-8H216a8,8,0,0,1,0,16H88A8,8,0,0,1,80,64Zm136,56H88a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16Zm0,64H88a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16ZM44,52A12,12,0,1,0,56,64,12,12,0,0,0,44,52Zm0,64a12,12,0,1,0,12,12A12,12,0,0,0,44,116Zm0,64a12,12,0,1,0,12,12A12,12,0,0,0,44,180Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M84,64a4,4,0,0,1,4-4H216a4,4,0,0,1,0,8H88A4,4,0,0,1,84,64Zm132,60H88a4,4,0,0,0,0,8H216a4,4,0,0,0,0-8Zm0,64H88a4,4,0,0,0,0,8H216a4,4,0,0,0,0-8ZM44,120a8,8,0,1,0,8,8A8,8,0,0,0,44,120Zm0-64a8,8,0,1,0,8,8A8,8,0,0,0,44,56Zm0,128a8,8,0,1,0,8,8A8,8,0,0,0,44,184Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport r from \"../lib/SSRBase.es.js\";\nimport c from \"../defs/ListChecks.es.js\";\nconst s = e.forwardRef((t, o) => /* @__PURE__ */ e.createElement(r, { ref: o, ...t, weights: c }));\ns.displayName = \"ListChecksIcon\";\nconst m = s;\nexport {\n m as ListChecks,\n s as ListChecksIcon\n};\n","import * as a from \"react\";\nconst l = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M228,128a12,12,0,0,1-12,12H128a12,12,0,0,1,0-24h88A12,12,0,0,1,228,128ZM128,76h88a12,12,0,0,0,0-24H128a12,12,0,0,0,0,24Zm88,104H128a12,12,0,0,0,0,24h88a12,12,0,0,0,0-24ZM79.51,39.51,56,63l-7.51-7.52a12,12,0,0,0-17,17l16,16a12,12,0,0,0,17,0l32-32a12,12,0,0,0-17-17Zm0,64L56,127l-7.51-7.52a12,12,0,1,0-17,17l16,16a12,12,0,0,0,17,0l32-32a12,12,0,0,0-17-17Zm0,64L56,191l-7.51-7.52a12,12,0,1,0-17,17l16,16a12,12,0,0,0,17,0l32-32a12,12,0,0,0-17-17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,64V192H128V64Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H128a8,8,0,0,1,0-16h88A8,8,0,0,1,224,128ZM128,72h88a8,8,0,0,0,0-16H128a8,8,0,0,0,0,16Zm88,112H128a8,8,0,0,0,0,16h88a8,8,0,0,0,0-16ZM82.34,42.34,56,68.69,45.66,58.34A8,8,0,0,0,34.34,69.66l16,16a8,8,0,0,0,11.32,0l32-32A8,8,0,0,0,82.34,42.34Zm0,64L56,132.69,45.66,122.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32,0l32-32a8,8,0,0,0-11.32-11.32Zm0,64L56,196.69,45.66,186.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32,0l32-32a8,8,0,0,0-11.32-11.32Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM117.66,149.66l-32,32a8,8,0,0,1-11.32,0l-16-16a8,8,0,0,1,11.32-11.32L80,164.69l26.34-26.35a8,8,0,0,1,11.32,11.32Zm0-64-32,32a8,8,0,0,1-11.32,0l-16-16A8,8,0,0,1,69.66,90.34L80,100.69l26.34-26.35a8,8,0,0,1,11.32,11.32ZM192,168H144a8,8,0,0,1,0-16h48a8,8,0,0,1,0,16Zm0-64H144a8,8,0,0,1,0-16h48a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M222,128a6,6,0,0,1-6,6H128a6,6,0,0,1,0-12h88A6,6,0,0,1,222,128ZM128,70h88a6,6,0,0,0,0-12H128a6,6,0,0,0,0,12Zm88,116H128a6,6,0,0,0,0,12h88a6,6,0,0,0,0-12ZM83.76,43.76,56,71.51,44.24,59.76a6,6,0,0,0-8.48,8.48l16,16a6,6,0,0,0,8.48,0l32-32a6,6,0,0,0-8.48-8.48Zm0,64L56,135.51,44.24,123.76a6,6,0,1,0-8.48,8.48l16,16a6,6,0,0,0,8.48,0l32-32a6,6,0,0,0-8.48-8.48Zm0,64L56,199.51,44.24,187.76a6,6,0,0,0-8.48,8.48l16,16a6,6,0,0,0,8.48,0l32-32a6,6,0,0,0-8.48-8.48Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H128a8,8,0,0,1,0-16h88A8,8,0,0,1,224,128ZM128,72h88a8,8,0,0,0,0-16H128a8,8,0,0,0,0,16Zm88,112H128a8,8,0,0,0,0,16h88a8,8,0,0,0,0-16ZM82.34,42.34,56,68.69,45.66,58.34A8,8,0,0,0,34.34,69.66l16,16a8,8,0,0,0,11.32,0l32-32A8,8,0,0,0,82.34,42.34Zm0,64L56,132.69,45.66,122.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32,0l32-32a8,8,0,0,0-11.32-11.32Zm0,64L56,196.69,45.66,186.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32,0l32-32a8,8,0,0,0-11.32-11.32Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M220,128a4,4,0,0,1-4,4H128a4,4,0,0,1,0-8h88A4,4,0,0,1,220,128ZM128,68h88a4,4,0,0,0,0-8H128a4,4,0,0,0,0,8Zm88,120H128a4,4,0,0,0,0,8h88a4,4,0,0,0,0-8ZM85.17,45.17,56,74.34,42.83,61.17a4,4,0,0,0-5.66,5.66l16,16a4,4,0,0,0,5.66,0l32-32a4,4,0,0,0-5.66-5.66Zm0,64L56,138.34,42.83,125.17a4,4,0,1,0-5.66,5.66l16,16a4,4,0,0,0,5.66,0l32-32a4,4,0,0,0-5.66-5.66Zm0,64L56,202.34,42.83,189.17a4,4,0,0,0-5.66,5.66l16,16a4,4,0,0,0,5.66,0l32-32a4,4,0,0,0-5.66-5.66Z\" }))\n ]\n]);\nexport {\n l as default\n};\n","import * as e from \"react\";\nimport o from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/ListNumbers.es.js\";\nconst r = e.forwardRef((s, t) => /* @__PURE__ */ e.createElement(o, { ref: t, ...s, weights: m }));\nr.displayName = \"ListNumbersIcon\";\nconst c = r;\nexport {\n c as ListNumbers,\n r as ListNumbersIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M228,128a12,12,0,0,1-12,12H116a12,12,0,0,1,0-24H216A12,12,0,0,1,228,128ZM116,76H216a12,12,0,0,0,0-24H116a12,12,0,0,0,0,24ZM216,180H116a12,12,0,0,0,0,24H216a12,12,0,0,0,0-24ZM44,59.31V104a12,12,0,0,0,24,0V40A12,12,0,0,0,50.64,29.27l-16,8a12,12,0,0,0,9.36,22Zm39.73,96.86a27.7,27.7,0,0,0-11.2-18.63A28.89,28.89,0,0,0,32.9,143a27.71,27.71,0,0,0-4.17,7.54,12,12,0,0,0,22.55,8.21,4,4,0,0,1,.58-1,4.78,4.78,0,0,1,6.5-.82,3.82,3.82,0,0,1,1.61,2.6,3.63,3.63,0,0,1-.77,2.77l-.13.17L30.39,200.82A12,12,0,0,0,40,220H72a12,12,0,0,0,0-24H64l14.28-19.11A27.48,27.48,0,0,0,83.73,156.17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,64V192H104V64Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H104a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM104,72H216a8,8,0,0,0,0-16H104a8,8,0,0,0,0,16ZM216,184H104a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16ZM43.58,55.16,48,52.94V104a8,8,0,0,0,16,0V40a8,8,0,0,0-11.58-7.16l-16,8a8,8,0,0,0,7.16,14.32ZM79.77,156.72a23.73,23.73,0,0,0-9.6-15.95,24.86,24.86,0,0,0-34.11,4.7,23.63,23.63,0,0,0-3.57,6.46,8,8,0,1,0,15,5.47,7.84,7.84,0,0,1,1.18-2.13,8.76,8.76,0,0,1,12-1.59A7.91,7.91,0,0,1,63.93,159a7.64,7.64,0,0,1-1.57,5.78,1,1,0,0,0-.08.11L33.59,203.21A8,8,0,0,0,40,216H72a8,8,0,0,0,0-16H56l19.08-25.53A23.47,23.47,0,0,0,79.77,156.72Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM56.84,75.58a8,8,0,0,1,3.58-10.74l16-8A8,8,0,0,1,88,64v48a8,8,0,0,1-16,0V76.94l-4.42,2.22A8,8,0,0,1,56.84,75.58ZM92,180a8,8,0,0,1,0,16H68a8,8,0,0,1-6.4-12.8l21.67-28.89A3.92,3.92,0,0,0,84,152a4,4,0,0,0-7.77-1.33,8,8,0,0,1-15.09-5.34,20,20,0,1,1,35,18.53L84,180Zm100,4H120a8,8,0,0,1,0-16h72a8,8,0,0,1,0,16Zm0-48H120a8,8,0,0,1,0-16h72a8,8,0,0,1,0,16Zm0-48H120a8,8,0,0,1,0-16h72a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M222,128a6,6,0,0,1-6,6H104a6,6,0,0,1,0-12H216A6,6,0,0,1,222,128ZM104,70H216a6,6,0,0,0,0-12H104a6,6,0,0,0,0,12ZM216,186H104a6,6,0,0,0,0,12H216a6,6,0,0,0,0-12ZM42.68,53.37,50,49.71V104a6,6,0,0,0,12,0V40a6,6,0,0,0-8.68-5.37l-16,8a6,6,0,0,0,5.36,10.74ZM72,202H52l21.48-28.74A21.5,21.5,0,0,0,77.79,157,21.75,21.75,0,0,0,69,142.38a22.86,22.86,0,0,0-31.35,4.31,22.18,22.18,0,0,0-3.28,5.92,6,6,0,0,0,11.28,4.11,9.87,9.87,0,0,1,1.48-2.67,10.78,10.78,0,0,1,14.78-2,9.89,9.89,0,0,1,4,6.61,9.64,9.64,0,0,1-2,7.28l-.06.09L35.2,204.41A6,6,0,0,0,40,214H72a6,6,0,0,0,0-12Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H104a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM104,72H216a8,8,0,0,0,0-16H104a8,8,0,0,0,0,16ZM216,184H104a8,8,0,0,0,0,16H216a8,8,0,0,0,0-16ZM43.58,55.16,48,52.94V104a8,8,0,0,0,16,0V40a8,8,0,0,0-11.58-7.16l-16,8a8,8,0,0,0,7.16,14.32ZM79.77,156.72a23.73,23.73,0,0,0-9.6-15.95,24.86,24.86,0,0,0-34.11,4.7,23.63,23.63,0,0,0-3.57,6.46,8,8,0,1,0,15,5.47,7.84,7.84,0,0,1,1.18-2.13,8.76,8.76,0,0,1,12-1.59A7.91,7.91,0,0,1,63.93,159a7.64,7.64,0,0,1-1.57,5.78,1,1,0,0,0-.08.11L33.59,203.21A8,8,0,0,0,40,216H72a8,8,0,0,0,0-16H56l19.08-25.53A23.47,23.47,0,0,0,79.77,156.72Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M220,128a4,4,0,0,1-4,4H104a4,4,0,0,1,0-8H216A4,4,0,0,1,220,128ZM104,68H216a4,4,0,0,0,0-8H104a4,4,0,0,0,0,8ZM216,188H104a4,4,0,0,0,0,8H216a4,4,0,0,0,0-8ZM41.79,51.58,52,46.47V104a4,4,0,0,0,8,0V40a4,4,0,0,0-5.79-3.58l-16,8a4,4,0,1,0,3.58,7.16ZM72,204H48l23.85-31.92a19.54,19.54,0,0,0,4-14.8,19.76,19.76,0,0,0-8-13.28,20.84,20.84,0,0,0-28.59,3.92,19.85,19.85,0,0,0-3,5.38A4,4,0,0,0,43.76,156a12.1,12.1,0,0,1,1.78-3.22,12.78,12.78,0,0,1,17.54-2.37,11.85,11.85,0,0,1,4.81,7.94,11.65,11.65,0,0,1-2.41,8.85L36.8,205.61A4,4,0,0,0,40,212H72a4,4,0,0,0,0-8Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport c from \"../defs/LockSimple.es.js\";\nconst e = o.forwardRef((m, r) => /* @__PURE__ */ o.createElement(t, { ref: r, ...m, weights: c }));\ne.displayName = \"LockSimpleIcon\";\nconst p = e;\nexport {\n p as LockSimple,\n e as LockSimpleIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,76H180V56A52,52,0,0,0,76,56V76H48A20,20,0,0,0,28,96V208a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V96A20,20,0,0,0,208,76ZM100,56a28,28,0,0,1,56,0V76H100ZM204,204H52V100H204Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M216,96V208a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8H208A8,8,0,0,1,216,96Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,80H176V56a48,48,0,0,0-96,0V80H48A16,16,0,0,0,32,96V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V96A16,16,0,0,0,208,80ZM96,56a32,32,0,0,1,64,0V80H96ZM208,208H48V96H208V208Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,80H176V56a48,48,0,0,0-96,0V80H48A16,16,0,0,0,32,96V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V96A16,16,0,0,0,208,80ZM96,56a32,32,0,0,1,64,0V80H96Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,82H174V56a46,46,0,0,0-92,0V82H48A14,14,0,0,0,34,96V208a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V96A14,14,0,0,0,208,82ZM94,56a34,34,0,0,1,68,0V82H94ZM210,208a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V96a2,2,0,0,1,2-2H208a2,2,0,0,1,2,2Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,80H176V56a48,48,0,0,0-96,0V80H48A16,16,0,0,0,32,96V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V96A16,16,0,0,0,208,80ZM96,56a32,32,0,0,1,64,0V80H96ZM208,208H48V96H208V208Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,84H172V56a44,44,0,0,0-88,0V84H48A12,12,0,0,0,36,96V208a12,12,0,0,0,12,12H208a12,12,0,0,0,12-12V96A12,12,0,0,0,208,84ZM92,56a36,36,0,0,1,72,0V84H92ZM212,208a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V96a4,4,0,0,1,4-4H208a4,4,0,0,1,4,4Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport c from \"../defs/MagicWand.es.js\";\nconst o = a.forwardRef((e, r) => /* @__PURE__ */ a.createElement(t, { ref: r, ...e, weights: c }));\no.displayName = \"MagicWandIcon\";\nconst n = o;\nexport {\n n as MagicWand,\n o as MagicWandIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M252,152a12,12,0,0,1-12,12H228v12a12,12,0,0,1-24,0V164H192a12,12,0,0,1,0-24h12V128a12,12,0,0,1,24,0v12h12A12,12,0,0,1,252,152ZM56,76H68V88a12,12,0,0,0,24,0V76h12a12,12,0,1,0,0-24H92V40a12,12,0,0,0-24,0V52H56a12,12,0,0,0,0,24ZM184,188h-4v-4a12,12,0,0,0-24,0v4h-4a12,12,0,0,0,0,24h4v4a12,12,0,0,0,24,0v-4h4a12,12,0,0,0,0-24ZM222.14,82.83,82.82,222.14a20,20,0,0,1-28.28,0L33.85,201.46a20,20,0,0,1,0-28.29L173.17,33.86a20,20,0,0,1,28.28,0l20.69,20.68A20,20,0,0,1,222.14,82.83ZM159,112,144,97,53.65,187.31l15,15Zm43.31-43.31-15-15L161,80l15,15Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M176,112,74.34,213.66a8,8,0,0,1-11.31,0L42.34,193a8,8,0,0,1,0-11.31L144,80Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M248,152a8,8,0,0,1-8,8H224v16a8,8,0,0,1-16,0V160H192a8,8,0,0,1,0-16h16V128a8,8,0,0,1,16,0v16h16A8,8,0,0,1,248,152ZM56,72H72V88a8,8,0,0,0,16,0V72h16a8,8,0,0,0,0-16H88V40a8,8,0,0,0-16,0V56H56a8,8,0,0,0,0,16ZM184,192h-8v-8a8,8,0,0,0-16,0v8h-8a8,8,0,0,0,0,16h8v8a8,8,0,0,0,16,0v-8h8a8,8,0,0,0,0-16ZM219.31,80,80,219.31a16,16,0,0,1-22.62,0L36.68,198.63a16,16,0,0,1,0-22.63L176,36.69a16,16,0,0,1,22.63,0l20.68,20.68A16,16,0,0,1,219.31,80Zm-54.63,32L144,91.31l-96,96L68.68,208ZM208,68.69,187.31,48l-32,32L176,100.69Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M248,152a8,8,0,0,1-8,8H224v16a8,8,0,0,1-16,0V160H192a8,8,0,0,1,0-16h16V128a8,8,0,0,1,16,0v16h16A8,8,0,0,1,248,152ZM56,72H72V88a8,8,0,0,0,16,0V72h16a8,8,0,0,0,0-16H88V40a8,8,0,0,0-16,0V56H56a8,8,0,0,0,0,16ZM184,192h-8v-8a8,8,0,0,0-16,0v8h-8a8,8,0,0,0,0,16h8v8a8,8,0,0,0,16,0v-8h8a8,8,0,0,0,0-16ZM219.31,80,80,219.31a16,16,0,0,1-22.62,0L36.68,198.63a16,16,0,0,1,0-22.63L176,36.69a16,16,0,0,1,22.63,0l20.68,20.68A16,16,0,0,1,219.31,80ZM208,68.69,187.31,48l-32,32L176,100.69Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M246,152a6,6,0,0,1-6,6H222v18a6,6,0,0,1-12,0V158H192a6,6,0,0,1,0-12h18V128a6,6,0,0,1,12,0v18h18A6,6,0,0,1,246,152ZM56,70H74V88a6,6,0,0,0,12,0V70h18a6,6,0,0,0,0-12H86V40a6,6,0,0,0-12,0V58H56a6,6,0,0,0,0,12ZM184,194H174V184a6,6,0,0,0-12,0v10H152a6,6,0,0,0,0,12h10v10a6,6,0,0,0,12,0V206h10a6,6,0,0,0,0-12ZM217.9,78.59,78.58,217.9a14,14,0,0,1-19.8,0L38.09,197.21a14,14,0,0,1,0-19.8L177.41,38.1a14,14,0,0,1,19.8,0L217.9,58.79A14,14,0,0,1,217.9,78.59ZM167.51,112,144,88.49,46.58,185.9a2,2,0,0,0,0,2.83l20.69,20.68a2,2,0,0,0,2.82,0h0Zm41.9-44.73L188.73,46.59a2,2,0,0,0-2.83,0L152.48,80,176,103.52,209.41,70.1A2,2,0,0,0,209.41,67.27Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M48,64a8,8,0,0,1,8-8H72V40a8,8,0,0,1,16,0V56h16a8,8,0,0,1,0,16H88V88a8,8,0,0,1-16,0V72H56A8,8,0,0,1,48,64ZM184,192h-8v-8a8,8,0,0,0-16,0v8h-8a8,8,0,0,0,0,16h8v8a8,8,0,0,0,16,0v-8h8a8,8,0,0,0,0-16Zm56-48H224V128a8,8,0,0,0-16,0v16H192a8,8,0,0,0,0,16h16v16a8,8,0,0,0,16,0V160h16a8,8,0,0,0,0-16ZM219.31,80,80,219.31a16,16,0,0,1-22.62,0L36.68,198.63a16,16,0,0,1,0-22.63L176,36.69a16,16,0,0,1,22.63,0l20.68,20.68A16,16,0,0,1,219.31,80Zm-54.63,32L144,91.31l-96,96L68.68,208ZM208,68.69,187.31,48l-32,32L176,100.69Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M244,152a4,4,0,0,1-4,4H220v20a4,4,0,0,1-8,0V156H192a4,4,0,0,1,0-8h20V128a4,4,0,0,1,8,0v20h20A4,4,0,0,1,244,152ZM56,68H76V88a4,4,0,0,0,8,0V68h20a4,4,0,0,0,0-8H84V40a4,4,0,0,0-8,0V60H56a4,4,0,0,0,0,8ZM184,196H172V184a4,4,0,0,0-8,0v12H152a4,4,0,0,0,0,8h12v12a4,4,0,0,0,8,0V204h12a4,4,0,0,0,0-8ZM216.48,77.17,77.17,216.49a12,12,0,0,1-17,0L39.51,195.8a12,12,0,0,1,0-17L178.83,39.51a12,12,0,0,1,17,0L216.48,60.2A12,12,0,0,1,216.48,77.17ZM170.34,112,144,85.66,45.17,184.49a4,4,0,0,0,0,5.65l20.68,20.69a4,4,0,0,0,5.66,0Zm40.49-46.14L190.14,45.17a4,4,0,0,0-5.66,0L149.65,80,176,106.34l34.83-34.83A4,4,0,0,0,210.83,65.86Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as a from \"react\";\nimport n from \"../lib/SSRBase.es.js\";\nimport e from \"../defs/MagnifyingGlass.es.js\";\nconst s = a.forwardRef((o, i) => /* @__PURE__ */ a.createElement(n, { ref: i, ...o, weights: e }));\ns.displayName = \"MagnifyingGlassIcon\";\nconst f = s;\nexport {\n f as MagnifyingGlass,\n s as MagnifyingGlassIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M232.49,215.51,185,168a92.12,92.12,0,1,0-17,17l47.53,47.54a12,12,0,0,0,17-17ZM44,112a68,68,0,1,1,68,68A68.07,68.07,0,0,1,44,112Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M192,112a80,80,0,1,1-80-80A80,80,0,0,1,192,112Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M229.66,218.34,179.6,168.28a88.21,88.21,0,1,0-11.32,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M168,112a56,56,0,1,1-56-56A56,56,0,0,1,168,112Zm61.66,117.66a8,8,0,0,1-11.32,0l-50.06-50.07a88,88,0,1,1,11.32-11.31l50.06,50.06A8,8,0,0,1,229.66,229.66ZM112,184a72,72,0,1,0-72-72A72.08,72.08,0,0,0,112,184Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M228.24,219.76l-51.38-51.38a86.15,86.15,0,1,0-8.48,8.48l51.38,51.38a6,6,0,0,0,8.48-8.48ZM38,112a74,74,0,1,1,74,74A74.09,74.09,0,0,1,38,112Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M229.66,218.34l-50.07-50.06a88.11,88.11,0,1,0-11.31,11.31l50.06,50.07a8,8,0,0,0,11.32-11.32ZM40,112a72,72,0,1,1,72,72A72.08,72.08,0,0,1,40,112Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M226.83,221.17l-52.7-52.7a84.1,84.1,0,1,0-5.66,5.66l52.7,52.7a4,4,0,0,0,5.66-5.66ZM36,112a76,76,0,1,1,76,76A76.08,76.08,0,0,1,36,112Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as o from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport i from \"../defs/MapPin.es.js\";\nconst a = o.forwardRef((e, r) => /* @__PURE__ */ o.createElement(t, { ref: r, ...e, weights: i }));\na.displayName = \"MapPinIcon\";\nconst p = a;\nexport {\n p as MapPin,\n a as MapPinIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,60a44,44,0,1,0,44,44A44.05,44.05,0,0,0,128,60Zm0,64a20,20,0,1,1,20-20A20,20,0,0,1,128,124Zm0-112a92.1,92.1,0,0,0-92,92c0,77.36,81.64,135.4,85.12,137.83a12,12,0,0,0,13.76,0,259,259,0,0,0,42.18-39C205.15,170.57,220,136.37,220,104A92.1,92.1,0,0,0,128,12Zm31.3,174.71A249.35,249.35,0,0,1,128,216.89a249.35,249.35,0,0,1-31.3-30.18C80,167.37,60,137.31,60,104a68,68,0,0,1,136,0C196,137.31,176,167.37,159.3,186.71Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M128,24a80,80,0,0,0-80,80c0,72,80,128,80,128s80-56,80-128A80,80,0,0,0,128,24Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,128,136Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,64a40,40,0,1,0,40,40A40,40,0,0,0,128,64Zm0,64a24,24,0,1,1,24-24A24,24,0,0,1,128,128Zm0-112a88.1,88.1,0,0,0-88,88c0,31.4,14.51,64.68,42,96.25a254.19,254.19,0,0,0,41.45,38.3,8,8,0,0,0,9.18,0A254.19,254.19,0,0,0,174,200.25c27.45-31.57,42-64.85,42-96.25A88.1,88.1,0,0,0,128,16Zm0,206c-16.53-13-72-60.75-72-118a72,72,0,0,1,144,0C200,161.23,144.53,209,128,222Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,16a88.1,88.1,0,0,0-88,88c0,75.3,80,132.17,83.41,134.55a8,8,0,0,0,9.18,0C136,236.17,216,179.3,216,104A88.1,88.1,0,0,0,128,16Zm0,56a32,32,0,1,1-32,32A32,32,0,0,1,128,72Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,66a38,38,0,1,0,38,38A38,38,0,0,0,128,66Zm0,64a26,26,0,1,1,26-26A26,26,0,0,1,128,130Zm0-112a86.1,86.1,0,0,0-86,86c0,30.91,14.34,63.74,41.47,94.94a252.32,252.32,0,0,0,41.09,38,6,6,0,0,0,6.88,0,252.32,252.32,0,0,0,41.09-38c27.13-31.2,41.47-64,41.47-94.94A86.1,86.1,0,0,0,128,18Zm0,206.51C113,212.93,54,163.62,54,104a74,74,0,0,1,148,0C202,163.62,143,212.93,128,224.51Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,64a40,40,0,1,0,40,40A40,40,0,0,0,128,64Zm0,64a24,24,0,1,1,24-24A24,24,0,0,1,128,128Zm0-112a88.1,88.1,0,0,0-88,88c0,31.4,14.51,64.68,42,96.25a254.19,254.19,0,0,0,41.45,38.3,8,8,0,0,0,9.18,0A254.19,254.19,0,0,0,174,200.25c27.45-31.57,42-64.85,42-96.25A88.1,88.1,0,0,0,128,16Zm0,206c-16.53-13-72-60.75-72-118a72,72,0,0,1,144,0C200,161.23,144.53,209,128,222Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,68a36,36,0,1,0,36,36A36,36,0,0,0,128,68Zm0,64a28,28,0,1,1,28-28A28,28,0,0,1,128,132Zm0-112a84.09,84.09,0,0,0-84,84c0,30.42,14.17,62.79,41,93.62a250,250,0,0,0,40.73,37.66,4,4,0,0,0,4.58,0A250,250,0,0,0,171,197.62c26.81-30.83,41-63.2,41-93.62A84.09,84.09,0,0,0,128,20Zm37.1,172.23A254.62,254.62,0,0,1,128,227a254.62,254.62,0,0,1-37.1-34.81C73.15,171.8,52,139.9,52,104a76,76,0,0,1,152,0C204,139.9,182.85,171.8,165.1,192.23Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/Megaphone.es.js\";\nconst o = e.forwardRef((a, r) => /* @__PURE__ */ e.createElement(t, { ref: r, ...a, weights: m }));\no.displayName = \"MegaphoneIcon\";\nconst s = o;\nexport {\n s as Megaphone,\n o as MegaphoneIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M252,120a52.06,52.06,0,0,0-52-52H160.32c-3.44-.21-52.6-4-99.46-43.3A20,20,0,0,0,28,40V200a19.8,19.8,0,0,0,11.54,18.12,19.86,19.86,0,0,0,21.32-2.81A192.92,192.92,0,0,1,144,174.47v26.2a20,20,0,0,0,8.9,16.64,11.35,11.35,0,0,0,1.39.8l14.44,7.06A20,20,0,0,0,198.37,213l11.09-41.82A52.07,52.07,0,0,0,252,120ZM52,191.63V48.4c36.17,28.07,72.17,38.1,92,41.66V150C124.17,153.52,88.17,163.55,52,191.63ZM176.39,202.2,168,198.1V172h16.4ZM200,148H168V92h32a28,28,0,1,1,0,56Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M240,120a40,40,0,0,1-40,40H160V80h40A40,40,0,0,1,240,120Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M248,120a48.05,48.05,0,0,0-48-48H160.2c-2.91-.17-53.62-3.74-101.91-44.24A16,16,0,0,0,32,40V200a16,16,0,0,0,26.29,12.25c37.77-31.68,77-40.76,93.71-43.3v31.72A16,16,0,0,0,159.12,214l11,7.33A16,16,0,0,0,194.5,212l11.77-44.36A48.07,48.07,0,0,0,248,120ZM48,199.93V40h0c42.81,35.91,86.63,45,104,47.24v65.48C134.65,155,90.84,164.07,48,199.93Zm131,8,0,.11-11-7.33V168h21.6ZM200,152H168V88h32a32,32,0,1,1,0,64Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M200,72H160.2c-2.91-.17-53.62-3.74-101.91-44.24A16,16,0,0,0,32,40V200a16,16,0,0,0,26.29,12.25c37.77-31.68,77-40.76,93.71-43.3v31.72A16,16,0,0,0,159.12,214l11,7.33A16,16,0,0,0,194.5,212l11.77-44.36A48,48,0,0,0,200,72ZM179,207.89l0,.11-11-7.33V168h21.6ZM200,152H168V88h32a32,32,0,1,1,0,64Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M246,120a46.05,46.05,0,0,0-46-46H160.15c-2.58-.15-54.1-3.57-103.15-44.71A14,14,0,0,0,34,40V200a13.85,13.85,0,0,0,8.07,12.68A14.16,14.16,0,0,0,48,214a13.9,13.9,0,0,0,9-3.3c40-33.52,81.57-42,97-44.07v34a14,14,0,0,0,6.23,11.65l11,7.33a14,14,0,0,0,21.32-8.17l12.13-45.71A46.07,46.07,0,0,0,246,120ZM49.29,201.52A2,2,0,0,1,46,200V40a1.9,1.9,0,0,1,1.15-1.8A2.08,2.08,0,0,1,48,38a1.91,1.91,0,0,1,1.26.48c44,36.92,89,45.19,104.71,47v69C138.29,156.33,93.3,164.61,49.29,201.52Zm131.64,7a2,2,0,0,1-3.05,1.18l-11-7.33a2,2,0,0,1-.89-1.67V166h26.2ZM200,154H166V86h34a34,34,0,1,1,0,68Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M248,120a48.05,48.05,0,0,0-48-48H160.2c-2.91-.17-53.62-3.74-101.91-44.24A16,16,0,0,0,32,40V200a16,16,0,0,0,26.29,12.25c37.77-31.68,77-40.76,93.71-43.3v31.72A16,16,0,0,0,159.12,214l11,7.33A16,16,0,0,0,194.5,212l11.77-44.36A48.07,48.07,0,0,0,248,120ZM48,199.93V40h0c42.81,35.91,86.63,45,104,47.24v65.48C134.65,155,90.84,164.07,48,199.93Zm131,8,0,.11-11-7.33V168h21.6ZM200,152H168V88h32a32,32,0,1,1,0,64Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M200,76H160.1c-2.19-.11-54.55-3.38-104.38-45.17A12,12,0,0,0,36,40V200a11.88,11.88,0,0,0,6.92,10.87A12.18,12.18,0,0,0,48,212a11.93,11.93,0,0,0,7.69-2.83c42.46-35.62,86.76-43.25,100.28-44.8v36.29a12,12,0,0,0,5.34,10l11,7.33a12,12,0,0,0,18.28-7l12.49-47.09A44,44,0,0,0,200,76Zm-44,80.3c-13.53,1.35-60,8.62-105.42,46.75A4,4,0,0,1,44,200V40a4,4,0,0,1,2.3-3.62A4.32,4.32,0,0,1,48.05,36a3.88,3.88,0,0,1,2.53,1C96,75.09,142.47,82.36,156,83.71ZM182.87,209a4,4,0,0,1-6.1,2.36l-11-7.33a4,4,0,0,1-1.78-3.33V164h30.8ZM200,156H164V84h36a36,36,0,0,1,0,72Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport i from \"../defs/Monitor.es.js\";\nconst r = o.forwardRef((t, e) => /* @__PURE__ */ o.createElement(a, { ref: e, ...t, weights: i }));\nr.displayName = \"MonitorIcon\";\nconst s = r;\nexport {\n s as Monitor,\n r as MonitorIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,36H48A28,28,0,0,0,20,64V176a28,28,0,0,0,28,28H208a28,28,0,0,0,28-28V64A28,28,0,0,0,208,36Zm4,140a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V64a4,4,0,0,1,4-4H208a4,4,0,0,1,4,4Zm-40,52a12,12,0,0,1-12,12H96a12,12,0,0,1,0-24h64A12,12,0,0,1,172,228Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M224,64V176a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V64A16,16,0,0,1,48,48H208A16,16,0,0,1,224,64Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,40H48A24,24,0,0,0,24,64V176a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V64A24,24,0,0,0,208,40Zm8,136a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V64a8,8,0,0,1,8-8H208a8,8,0,0,1,8,8Zm-48,48a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h64A8,8,0,0,1,168,224Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,64V176a24,24,0,0,1-24,24H48a24,24,0,0,1-24-24V64A24,24,0,0,1,48,40H208A24,24,0,0,1,232,64ZM160,216H96a8,8,0,0,0,0,16h64a8,8,0,0,0,0-16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,42H48A22,22,0,0,0,26,64V176a22,22,0,0,0,22,22H208a22,22,0,0,0,22-22V64A22,22,0,0,0,208,42Zm10,134a10,10,0,0,1-10,10H48a10,10,0,0,1-10-10V64A10,10,0,0,1,48,54H208a10,10,0,0,1,10,10Zm-52,48a6,6,0,0,1-6,6H96a6,6,0,0,1,0-12h64A6,6,0,0,1,166,224Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,40H48A24,24,0,0,0,24,64V176a24,24,0,0,0,24,24H208a24,24,0,0,0,24-24V64A24,24,0,0,0,208,40Zm8,136a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V64a8,8,0,0,1,8-8H208a8,8,0,0,1,8,8Zm-48,48a8,8,0,0,1-8,8H96a8,8,0,0,1,0-16h64A8,8,0,0,1,168,224Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,44H48A20,20,0,0,0,28,64V176a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V64A20,20,0,0,0,208,44Zm12,132a12,12,0,0,1-12,12H48a12,12,0,0,1-12-12V64A12,12,0,0,1,48,52H208a12,12,0,0,1,12,12Zm-56,48a4,4,0,0,1-4,4H96a4,4,0,0,1,0-8h64A4,4,0,0,1,164,224Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/Moon.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...r, weights: m }));\ne.displayName = \"MoonIcon\";\nconst c = e;\nexport {\n c as Moon,\n e as MoonIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M236.37,139.4a12,12,0,0,0-12-3A84.07,84.07,0,0,1,119.6,31.59a12,12,0,0,0-15-15A108.86,108.86,0,0,0,49.69,55.07,108,108,0,0,0,136,228a107.09,107.09,0,0,0,64.93-21.69,108.86,108.86,0,0,0,38.44-54.94A12,12,0,0,0,236.37,139.4Zm-49.88,47.74A84,84,0,0,1,68.86,69.51,84.93,84.93,0,0,1,92.27,48.29Q92,52.13,92,56A108.12,108.12,0,0,0,200,164q3.87,0,7.71-.27A84.79,84.79,0,0,1,186.49,187.14Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M227.89,147.89A96,96,0,1,1,108.11,28.11,96.09,96.09,0,0,0,227.89,147.89Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M233.54,142.23a8,8,0,0,0-8-2,88.08,88.08,0,0,1-109.8-109.8,8,8,0,0,0-10-10,104.84,104.84,0,0,0-52.91,37A104,104,0,0,0,136,224a103.09,103.09,0,0,0,62.52-20.88,104.84,104.84,0,0,0,37-52.91A8,8,0,0,0,233.54,142.23ZM188.9,190.34A88,88,0,0,1,65.66,67.11a89,89,0,0,1,31.4-26A106,106,0,0,0,96,56,104.11,104.11,0,0,0,200,160a106,106,0,0,0,14.92-1.06A89,89,0,0,1,188.9,190.34Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M235.54,150.21a104.84,104.84,0,0,1-37,52.91A104,104,0,0,1,32,120,103.09,103.09,0,0,1,52.88,57.48a104.84,104.84,0,0,1,52.91-37,8,8,0,0,1,10,10,88.08,88.08,0,0,0,109.8,109.8,8,8,0,0,1,10,10Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M232.13,143.64a6,6,0,0,0-6-1.49A90.07,90.07,0,0,1,113.86,29.85a6,6,0,0,0-7.49-7.48A102.88,102.88,0,0,0,54.48,58.68,102,102,0,0,0,197.32,201.52a102.88,102.88,0,0,0,36.31-51.89A6,6,0,0,0,232.13,143.64Zm-42,48.29a90,90,0,0,1-126-126A90.9,90.9,0,0,1,99.65,37.66,102.06,102.06,0,0,0,218.34,156.35,90.9,90.9,0,0,1,190.1,191.93Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M233.54,142.23a8,8,0,0,0-8-2,88.08,88.08,0,0,1-109.8-109.8,8,8,0,0,0-10-10,104.84,104.84,0,0,0-52.91,37A104,104,0,0,0,136,224a103.09,103.09,0,0,0,62.52-20.88,104.84,104.84,0,0,0,37-52.91A8,8,0,0,0,233.54,142.23ZM188.9,190.34A88,88,0,0,1,65.66,67.11a89,89,0,0,1,31.4-26A106,106,0,0,0,96,56,104.11,104.11,0,0,0,200,160a106,106,0,0,0,14.92-1.06A89,89,0,0,1,188.9,190.34Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M230.72,145.06a4,4,0,0,0-4-1A92.08,92.08,0,0,1,111.94,29.27a4,4,0,0,0-5-5A100.78,100.78,0,0,0,56.08,59.88a100,100,0,0,0,140,140,100.78,100.78,0,0,0,35.59-50.87A4,4,0,0,0,230.72,145.06ZM191.3,193.53A92,92,0,0,1,62.47,64.7a93,93,0,0,1,39.88-30.35,100.09,100.09,0,0,0,119.3,119.3A93,93,0,0,1,191.3,193.53Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/Note.es.js\";\nconst e = o.forwardRef((t, r) => /* @__PURE__ */ o.createElement(a, { ref: r, ...t, weights: m }));\ne.displayName = \"NoteIcon\";\nconst f = e;\nexport {\n f as Note,\n e as NoteIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M84,108A12,12,0,0,1,96,96h64a12,12,0,0,1,0,24H96A12,12,0,0,1,84,108Zm32,28H96a12,12,0,0,0,0,24h20a12,12,0,0,0,0-24ZM228,48V156.69a19.86,19.86,0,0,1-5.86,14.14l-51.31,51.31A19.86,19.86,0,0,1,156.69,228H48a20,20,0,0,1-20-20V48A20,20,0,0,1,48,28H208A20,20,0,0,1,228,48ZM52,204h92V156a12,12,0,0,1,12-12h48V52H52Zm139-36H168v23Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,160l-56,56V160Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M88,96a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H96A8,8,0,0,1,88,96Zm8,40h64a8,8,0,0,0,0-16H96a8,8,0,0,0,0,16Zm32,16H96a8,8,0,0,0,0,16h32a8,8,0,0,0,0-16ZM224,48V156.69A15.86,15.86,0,0,1,219.31,168L168,219.31A15.86,15.86,0,0,1,156.69,224H48a16,16,0,0,1-16-16V48A16,16,0,0,1,48,32H208A16,16,0,0,1,224,48ZM48,208H152V160a8,8,0,0,1,8-8h48V48H48Zm120-40v28.7L196.69,168Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H156.69A15.92,15.92,0,0,0,168,219.31L219.31,168A15.92,15.92,0,0,0,224,156.69V48A16,16,0,0,0,208,32ZM96,88h64a8,8,0,0,1,0,16H96a8,8,0,0,1,0-16Zm32,80H96a8,8,0,0,1,0-16h32a8,8,0,0,1,0,16ZM96,136a8,8,0,0,1,0-16h64a8,8,0,0,1,0,16Zm64,68.69V160h44.7Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M90,96a6,6,0,0,1,6-6h64a6,6,0,0,1,0,12H96A6,6,0,0,1,90,96Zm6,38h64a6,6,0,0,0,0-12H96a6,6,0,0,0,0,12Zm32,20H96a6,6,0,0,0,0,12h32a6,6,0,0,0,0-12ZM222,48V156.69a13.94,13.94,0,0,1-4.1,9.9L166.59,217.9a13.94,13.94,0,0,1-9.9,4.1H48a14,14,0,0,1-14-14V48A14,14,0,0,1,48,34H208A14,14,0,0,1,222,48ZM48,210H154V160a6,6,0,0,1,6-6h50V48a2,2,0,0,0-2-2H48a2,2,0,0,0-2,2V208A2,2,0,0,0,48,210Zm153.52-44H166v35.52Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M88,96a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H96A8,8,0,0,1,88,96Zm8,40h64a8,8,0,0,0,0-16H96a8,8,0,0,0,0,16Zm32,16H96a8,8,0,0,0,0,16h32a8,8,0,0,0,0-16ZM224,48V156.69A15.86,15.86,0,0,1,219.31,168L168,219.31A15.86,15.86,0,0,1,156.69,224H48a16,16,0,0,1-16-16V48A16,16,0,0,1,48,32H208A16,16,0,0,1,224,48ZM48,208H152V160a8,8,0,0,1,8-8h48V48H48Zm120-40v28.7L196.69,168Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M92,96a4,4,0,0,1,4-4h64a4,4,0,0,1,0,8H96A4,4,0,0,1,92,96Zm4,36h64a4,4,0,0,0,0-8H96a4,4,0,0,0,0,8Zm32,24H96a4,4,0,0,0,0,8h32a4,4,0,0,0,0-8ZM220,48V156.69a11.9,11.9,0,0,1-3.52,8.48l-51.31,51.32a11.93,11.93,0,0,1-8.48,3.51H48a12,12,0,0,1-12-12V48A12,12,0,0,1,48,36H208A12,12,0,0,1,220,48ZM48,212H156V160a4,4,0,0,1,4-4h52V48a4,4,0,0,0-4-4H48a4,4,0,0,0-4,4V208A4,4,0,0,0,48,212Zm158.35-48H164v42.35Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport i from \"../defs/NotionLogo.es.js\";\nconst t = o.forwardRef((e, r) => /* @__PURE__ */ o.createElement(a, { ref: r, ...e, weights: i }));\nt.displayName = \"NotionLogoIcon\";\nconst s = t;\nexport {\n s as NotionLogo,\n t as NotionLogoIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,36H176a12,12,0,0,0,0,24h8V161.28L118.51,42.22A12,12,0,0,0,108,36H40a12,12,0,0,0,0,24h8V196H40a12,12,0,0,0,0,24H80a12,12,0,0,0,0-24H72V94.72l65.49,119.06A12,12,0,0,0,148,220h48a12,12,0,0,0,12-12V60h8a12,12,0,0,0,0-24ZM80.3,60h20.6l74.8,136H155.1Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M192,208H152L64,48h40Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,40H168a8,8,0,0,0,0,16h16V176.85L111,44.14A8,8,0,0,0,104,40H40a8,8,0,0,0,0,16H56V200H40a8,8,0,0,0,0,16H88a8,8,0,0,0,0-16H72V79.15l73,132.71a8,8,0,0,0,7,4.14h40a8,8,0,0,0,8-8V56h16a8,8,0,0,0,0-16ZM156.73,200,77.53,56H99.27l79.2,144Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,48a8,8,0,0,1-8,8H200V208a8,8,0,0,1-8,8H152a8,8,0,0,1-7-4.14L72,79.15V200H88a8,8,0,0,1,0,16H40a8,8,0,0,1,0-16H56V56H40a8,8,0,0,1,0-16h64a8,8,0,0,1,7,4.14l73,132.71V56H168a8,8,0,0,1,0-16h48A8,8,0,0,1,224,48Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,42H168a6,6,0,0,0,0,12h18V184.64L109.26,45.11A6,6,0,0,0,104,42H40a6,6,0,0,0,0,12H58V202H40a6,6,0,0,0,0,12H88a6,6,0,0,0,0-12H70V71.36l76.74,139.53A6,6,0,0,0,152,214h40a6,6,0,0,0,6-6V54h18a6,6,0,0,0,0-12ZM74.15,54h26.3l81.4,148h-26.3Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,40H168a8,8,0,0,0,0,16h16V176.85L111,44.14A8,8,0,0,0,104,40H40a8,8,0,0,0,0,16H56V200H40a8,8,0,0,0,0,16H88a8,8,0,0,0,0-16H72V79.15l73,132.71a8,8,0,0,0,7,4.14h40a8,8,0,0,0,8-8V56h16a8,8,0,0,0,0-16ZM77.53,56H99.27l79.2,144H156.73Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,44H168a4,4,0,0,0,0,8h20V192.43L107.5,46.07A4,4,0,0,0,104,44H40a4,4,0,0,0,0,8H60V204H40a4,4,0,0,0,0,8H88a4,4,0,0,0,0-8H68V63.57l80.5,146.36A4,4,0,0,0,152,212h40a4,4,0,0,0,4-4V52h20a4,4,0,0,0,0-8ZM70.77,52h30.86l83.6,152H154.37Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport o from \"../lib/SSRBase.es.js\";\nimport i from \"../defs/PaperPlaneRight.es.js\";\nconst a = e.forwardRef((r, t) => /* @__PURE__ */ e.createElement(o, { ref: t, ...r, weights: i }));\na.displayName = \"PaperPlaneRightIcon\";\nconst p = a;\nexport {\n p as PaperPlaneRight,\n a as PaperPlaneRightIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M233.86,110.48,65.8,14.58A20,20,0,0,0,37.15,38.64L67.33,128,37.15,217.36A20,20,0,0,0,56,244a20.1,20.1,0,0,0,9.81-2.58l.09-.06,168-96.07a20,20,0,0,0,0-34.81ZM63.19,215.26,88.61,140H144a12,12,0,0,0,0-24H88.61L63.18,40.72l152.76,87.17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M227.91,134.86,59.93,231a8,8,0,0,1-11.44-9.67L80,128,48.49,34.72a8,8,0,0,1,11.44-9.67l168,95.85A8,8,0,0,1,227.91,134.86Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M231.87,114l-168-95.89A16,16,0,0,0,40.92,37.34L71.55,128,40.92,218.67A16,16,0,0,0,56,240a16.15,16.15,0,0,0,7.93-2.1l167.92-96.05a16,16,0,0,0,.05-27.89ZM56,224a.56.56,0,0,0,0-.12L85.74,136H144a8,8,0,0,0,0-16H85.74L56.06,32.16A.46.46,0,0,0,56,32l168,95.83Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M240,127.89a16,16,0,0,1-8.18,14L63.9,237.9A16.15,16.15,0,0,1,56,240a16,16,0,0,1-15-21.33l27-79.95A4,4,0,0,1,71.72,136H144a8,8,0,0,0,8-8.53,8.19,8.19,0,0,0-8.26-7.47h-72a4,4,0,0,1-3.79-2.72l-27-79.94A16,16,0,0,1,63.84,18.07l168,95.89A16,16,0,0,1,240,127.89Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M230.88,115.69l-168-95.88a14,14,0,0,0-20,16.87L73.66,128,42.81,219.33A14,14,0,0,0,56,238a14.15,14.15,0,0,0,6.93-1.83L230.84,140.1a14,14,0,0,0,0-24.41Zm-5.95,14L57,225.73a2,2,0,0,1-2.86-2.42.42.42,0,0,0,0-.1L84.3,134H144a6,6,0,0,0,0-12H84.3L54.17,32.8a.3.3,0,0,0,0-.1,1.87,1.87,0,0,1,.6-2.2A1.85,1.85,0,0,1,57,30.25l168,95.89a1.93,1.93,0,0,1,1,1.74A2,2,0,0,1,224.93,129.66Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M231.87,114l-168-95.89A16,16,0,0,0,40.92,37.34L71.55,128,40.92,218.67A16,16,0,0,0,56,240a16.15,16.15,0,0,0,7.93-2.1l167.92-96.05a16,16,0,0,0,.05-27.89ZM56,224a.56.56,0,0,0,0-.12L85.74,136H144a8,8,0,0,0,0-16H85.74L56.06,32.16A.46.46,0,0,0,56,32l168,95.83Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M229.89,117.43l-168-95.88A12,12,0,0,0,44.7,36l31.08,92L44.71,220A12,12,0,0,0,56,236a12.13,12.13,0,0,0,5.93-1.57l167.94-96.08a12,12,0,0,0,0-20.92Zm-4,14L58,227.47a4,4,0,0,1-5.72-4.83l0-.07L82.87,132H144a4,4,0,0,0,0-8H82.87L52.26,33.37A3.89,3.89,0,0,1,53.44,29,4.13,4.13,0,0,1,56,28a3.88,3.88,0,0,1,1.93.54l168,95.87a4,4,0,0,1,0,7Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nimport p from \"../lib/SSRBase.es.js\";\nimport t from \"../defs/Paperclip.es.js\";\nconst r = e.forwardRef((o, a) => /* @__PURE__ */ e.createElement(p, { ref: a, ...o, weights: t }));\nr.displayName = \"PaperclipIcon\";\nconst m = r;\nexport {\n m as Paperclip,\n r as PaperclipIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M212.48,136.49l-82.06,82a60,60,0,0,1-84.85-84.88l98.16-97.89a40,40,0,0,1,56.56,56.59l-.17.16-95.8,92.22a12,12,0,1,1-16.64-17.3l95.71-92.12a16,16,0,0,0-22.7-22.56L62.53,150.57a36,36,0,0,0,50.93,50.91l82.06-82a12,12,0,0,1,17,17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M180.75,104.75,204,128l-82.06,81.94a48,48,0,0,1-67.88-67.88L153.37,41.37a32,32,0,0,1,45.26,45.26Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M209.66,122.34a8,8,0,0,1,0,11.32l-82.05,82a56,56,0,0,1-79.2-79.21L147.67,35.73a40,40,0,1,1,56.61,56.55L105,193A24,24,0,1,1,71,159L154.3,74.38A8,8,0,1,1,165.7,85.6L82.39,170.31a8,8,0,1,0,11.27,11.36L192.93,81A24,24,0,1,0,159,47L59.76,147.68a40,40,0,1,0,56.53,56.62l82.06-82A8,8,0,0,1,209.66,122.34Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm37.66,50.34a8,8,0,0,0-11.32,0L87.09,143A24,24,0,1,0,121,177l49.32-50.32a8,8,0,1,1,11.42,11.2l-49.37,50.38a40,40,0,1,1-56.62-56.51L143,63.09A24,24,0,1,1,177,97L109.71,165.6a8,8,0,1,1-11.42-11.2L165.6,85.71a8,8,0,0,0,.06-11.37Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208.25,123.76a6,6,0,0,1,0,8.49l-82.06,82a54,54,0,0,1-76.36-76.39L149.1,37.14a38,38,0,1,1,53.77,53.72L103.59,191.54a22,22,0,1,1-31.15-31.09l83.28-84.67a6,6,0,0,1,8.56,8.42L81,168.91a10,10,0,1,0,14.11,14.18L194.35,82.4a26,26,0,1,0-36.74-36.8L58.33,146.28a42,42,0,1,0,59.37,59.44l82.06-82A6,6,0,0,1,208.25,123.76Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M209.66,122.34a8,8,0,0,1,0,11.32l-82.05,82a56,56,0,0,1-79.2-79.21L147.67,35.73a40,40,0,1,1,56.61,56.55L105,193A24,24,0,1,1,71,159L154.3,74.38A8,8,0,1,1,165.7,85.6L82.39,170.31a8,8,0,1,0,11.27,11.36L192.93,81A24,24,0,1,0,159,47L59.76,147.68a40,40,0,1,0,56.53,56.62l82.06-82A8,8,0,0,1,209.66,122.34Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M206.83,125.17a4,4,0,0,1,0,5.66l-82.06,82a52,52,0,0,1-73.54-73.55L150.52,38.55a36,36,0,1,1,50.94,50.9l-99.3,100.69a20,20,0,1,1-28.3-28.27l83.29-84.68a4,4,0,1,1,5.7,5.61L79.54,167.5a12,12,0,1,0,16.95,17L195.78,83.81A28,28,0,1,0,156.2,44.18L56.91,144.87a44,44,0,1,0,62.21,62.26l82-82A4,4,0,0,1,206.83,125.17Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport r from \"../lib/SSRBase.es.js\";\nimport t from \"../defs/PencilSimple.es.js\";\nconst o = e.forwardRef((i, m) => /* @__PURE__ */ e.createElement(r, { ref: m, ...i, weights: t }));\no.displayName = \"PencilSimpleIcon\";\nconst l = o;\nexport {\n l as PencilSimple,\n o as PencilSimpleIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M230.14,70.54,185.46,25.85a20,20,0,0,0-28.29,0L33.86,149.17A19.85,19.85,0,0,0,28,163.31V208a20,20,0,0,0,20,20H92.69a19.86,19.86,0,0,0,14.14-5.86L230.14,98.82a20,20,0,0,0,0-28.28ZM91,204H52V165l84-84,39,39ZM192,103,153,64l18.34-18.34,39,39Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M221.66,90.34,192,120,136,64l29.66-29.66a8,8,0,0,1,11.31,0L221.66,79A8,8,0,0,1,221.66,90.34Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M227.31,73.37,182.63,28.68a16,16,0,0,0-22.63,0L36.69,152A15.86,15.86,0,0,0,32,163.31V208a16,16,0,0,0,16,16H92.69A15.86,15.86,0,0,0,104,219.31L227.31,96a16,16,0,0,0,0-22.63ZM92.69,208H48V163.31l88-88L180.69,120ZM192,108.68,147.31,64l24-24L216,84.68Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M227.31,73.37,182.63,28.68a16,16,0,0,0-22.63,0L36.69,152A15.86,15.86,0,0,0,32,163.31V208a16,16,0,0,0,16,16H92.69A15.86,15.86,0,0,0,104,219.31L227.31,96a16,16,0,0,0,0-22.63ZM192,108.68,147.31,64l24-24L216,84.68Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M225.9,74.78,181.21,30.09a14,14,0,0,0-19.8,0L38.1,153.41a13.94,13.94,0,0,0-4.1,9.9V208a14,14,0,0,0,14,14H92.69a13.94,13.94,0,0,0,9.9-4.1L225.9,94.58a14,14,0,0,0,0-19.8ZM94.1,209.41a2,2,0,0,1-1.41.59H48a2,2,0,0,1-2-2V163.31a2,2,0,0,1,.59-1.41L136,72.48,183.51,120ZM217.41,86.1,192,111.51,144.49,64,169.9,38.58a2,2,0,0,1,2.83,0l44.68,44.69a2,2,0,0,1,0,2.83Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M227.31,73.37,182.63,28.68a16,16,0,0,0-22.63,0L36.69,152A15.86,15.86,0,0,0,32,163.31V208a16,16,0,0,0,16,16H92.69A15.86,15.86,0,0,0,104,219.31L227.31,96a16,16,0,0,0,0-22.63ZM92.69,208H48V163.31l88-88L180.69,120ZM192,108.68,147.31,64l24-24L216,84.68Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224.49,76.2,179.8,31.51a12,12,0,0,0-17,0L133.17,61.17h0L39.52,154.83A11.9,11.9,0,0,0,36,163.31V208a12,12,0,0,0,12,12H92.69a12,12,0,0,0,8.48-3.51L224.48,93.17a12,12,0,0,0,0-17Zm-129,134.63A4,4,0,0,1,92.69,212H48a4,4,0,0,1-4-4V163.31a4,4,0,0,1,1.17-2.83L136,69.65,186.34,120ZM218.83,87.51,192,114.34,141.66,64l26.82-26.83a4,4,0,0,1,5.66,0l44.69,44.68a4,4,0,0,1,0,5.66Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/Play.es.js\";\nconst a = o.forwardRef((e, r) => /* @__PURE__ */ o.createElement(t, { ref: r, ...e, weights: m }));\na.displayName = \"PlayIcon\";\nconst f = a;\nexport {\n f as Play,\n a as PlayIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M234.49,111.07,90.41,22.94A20,20,0,0,0,60,39.87V216.13a20,20,0,0,0,30.41,16.93l144.08-88.13a19.82,19.82,0,0,0,0-33.86ZM84,208.85V47.15L216.16,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M228.23,134.69,84.15,222.81A8,8,0,0,1,72,216.12V39.88a8,8,0,0,1,12.15-6.69l144.08,88.12A7.82,7.82,0,0,1,228.23,134.69Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M232.4,114.49,88.32,26.35a16,16,0,0,0-16.2-.3A15.86,15.86,0,0,0,64,39.87V216.13A15.94,15.94,0,0,0,80,232a16.07,16.07,0,0,0,8.36-2.35L232.4,141.51a15.81,15.81,0,0,0,0-27ZM80,215.94V40l143.83,88Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M240,128a15.74,15.74,0,0,1-7.6,13.51L88.32,229.65a16,16,0,0,1-16.2.3A15.86,15.86,0,0,1,64,216.13V39.87a15.86,15.86,0,0,1,8.12-13.82,16,16,0,0,1,16.2.3L232.4,114.49A15.74,15.74,0,0,1,240,128Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M231.36,116.19,87.28,28.06a14,14,0,0,0-14.18-.27A13.69,13.69,0,0,0,66,39.87V216.13a13.69,13.69,0,0,0,7.1,12.08,14,14,0,0,0,14.18-.27l144.08-88.13a13.82,13.82,0,0,0,0-23.62Zm-6.26,13.38L81,217.7a2,2,0,0,1-2.06,0,1.78,1.78,0,0,1-1-1.61V39.87a1.78,1.78,0,0,1,1-1.61A2.06,2.06,0,0,1,80,38a2,2,0,0,1,1,.31L225.1,126.43a1.82,1.82,0,0,1,0,3.14Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M232.4,114.49,88.32,26.35a16,16,0,0,0-16.2-.3A15.86,15.86,0,0,0,64,39.87V216.13A15.94,15.94,0,0,0,80,232a16.07,16.07,0,0,0,8.36-2.35L232.4,141.51a15.81,15.81,0,0,0,0-27ZM80,215.94V40l143.83,88Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M230.32,117.9,86.24,29.79a11.91,11.91,0,0,0-12.17-.23A11.71,11.71,0,0,0,68,39.89V216.11a11.71,11.71,0,0,0,6.07,10.33,11.91,11.91,0,0,0,12.17-.23L230.32,138.1a11.82,11.82,0,0,0,0-20.2Zm-4.18,13.37L82.06,219.39a4,4,0,0,1-4.07.07,3.77,3.77,0,0,1-2-3.35V39.89a3.77,3.77,0,0,1,2-3.35,4,4,0,0,1,4.07.07l144.08,88.12a3.8,3.8,0,0,1,0,6.54Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nimport r from \"../lib/SSRBase.es.js\";\nimport s from \"../defs/PlugsConnected.es.js\";\nconst o = e.forwardRef((t, n) => /* @__PURE__ */ e.createElement(r, { ref: n, ...t, weights: s }));\no.displayName = \"PlugsConnectedIcon\";\nconst m = o;\nexport {\n m as PlugsConnected,\n o as PlugsConnectedIcon\n};\n","import * as a from \"react\";\nconst l = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M240.49,15.51a12,12,0,0,0-17,0L173.94,65.09l-2.54-2.55a36.05,36.05,0,0,0-50.91,0L100,83l-3.51-3.52a12,12,0,0,0-17,17L83,100,62.54,120.49a36,36,0,0,0,0,50.91l2.55,2.54L15.51,223.51a12,12,0,0,0,17,17l49.57-49.58,2.54,2.55a36.06,36.06,0,0,0,50.91,0L156,173l3.51,3.52a12,12,0,0,0,17-17L173,156l20.49-20.49a36,36,0,0,0,0-50.91l-2.55-2.54,49.58-49.57A12,12,0,0,0,240.49,15.51Zm-121.95,161a12,12,0,0,1-17,0L79.51,154.43a12,12,0,0,1,0-17L100,117l39,39Zm58-57.95h0L156,139l-39-39,20.49-20.49a12,12,0,0,1,17,0l22.06,22.06a12,12,0,0,1,0,17ZM85.27,33.37a12,12,0,0,1,21.46-10.74l8,16A12,12,0,1,1,93.27,49.37Zm-68,57.26a12,12,0,0,1,16.1-5.36l16,8a12,12,0,1,1-10.74,21.46l-16-8A12,12,0,0,1,17.27,90.63Zm221.46,74.74a12,12,0,0,1-16.1,5.36l-16-8a12,12,0,0,1,10.74-21.46l16,8A12,12,0,0,1,238.73,165.37Zm-68,57.26a12,12,0,1,1-21.46,10.74l-8-16a12,12,0,0,1,21.46-10.74Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M185,127,127,185a24,24,0,0,1-33.94,0L71,162.91A24,24,0,0,1,71,129L129,71a24,24,0,0,1,33.94,0L185,93.09A24,24,0,0,1,185,127Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M237.66,18.34a8,8,0,0,0-11.32,0l-52.4,52.41-5.37-5.38a32.05,32.05,0,0,0-45.26,0L100,88.69l-6.34-6.35A8,8,0,0,0,82.34,93.66L88.69,100,65.37,123.31a32,32,0,0,0,0,45.26l5.38,5.37-52.41,52.4a8,8,0,0,0,11.32,11.32l52.4-52.41,5.37,5.38a32.06,32.06,0,0,0,45.26,0L156,167.31l6.34,6.35a8,8,0,0,0,11.32-11.32L167.31,156l23.32-23.31a32,32,0,0,0,0-45.26l-5.38-5.37,52.41-52.4A8,8,0,0,0,237.66,18.34Zm-116.29,161a16,16,0,0,1-22.62,0L76.69,157.25a16,16,0,0,1,0-22.62L100,111.31,144.69,156Zm57.94-57.94h0L156,144.69,111.31,100l23.32-23.31a16,16,0,0,1,22.62,0l22.06,22a16,16,0,0,1,0,22.63ZM88.57,35A8,8,0,0,1,103.43,29l8,20A8,8,0,0,1,96.57,55ZM24.57,93A8,8,0,0,1,35,88.57l20,8A8,8,0,0,1,49,111.43l-20-8A8,8,0,0,1,24.57,93ZM231.43,163a8,8,0,0,1-10.4,4.46l-20-8A8,8,0,1,1,207,144.57l20,8A8,8,0,0,1,231.43,163Zm-64,58.06A8,8,0,0,1,152.57,227l-8-20A8,8,0,0,1,159.43,201Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M88.57,35A8,8,0,0,1,103.43,29l8,20A8,8,0,0,1,96.57,55ZM29,103.43l20,8A8,8,0,1,0,55,96.57l-20-8A8,8,0,0,0,29,103.43ZM227,152.57l-20-8A8,8,0,1,0,201,159.43l20,8A8,8,0,0,0,227,152.57ZM159.43,201A8,8,0,0,0,144.57,207l8,20A8,8,0,1,0,167.43,221ZM237.91,18.52a8,8,0,0,0-11.5-.18L174,70.75l-5.38-5.38a32,32,0,0,0-45.28,0L106.14,82.54a4,4,0,0,0,0,5.66l61.7,61.66a4,4,0,0,0,5.66,0l16.74-16.74a32.76,32.76,0,0,0,9.81-22.52,31.82,31.82,0,0,0-9.37-23.17l-5.38-5.37,52.2-52.17A8.22,8.22,0,0,0,237.91,18.52ZM85.64,90.34a8,8,0,0,0-11.49.18,8.22,8.22,0,0,0,.41,11.37L80.67,108,65.34,123.31A31.82,31.82,0,0,0,56,146.47,32.75,32.75,0,0,0,65.77,169l5,4.94L18.49,226.13a8.21,8.21,0,0,0-.61,11.1,8,8,0,0,0,11.72.43L82,185.25l5.37,5.38a32.1,32.1,0,0,0,45.29,0L148,175.31l6.34,6.35a8,8,0,0,0,11.32-11.32Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M236.24,19.76a6,6,0,0,0-8.48,0L173.94,73.57l-6.79-6.78a30,30,0,0,0-42.42,0L100,91.51l-7.76-7.75a6,6,0,0,0-8.48,8.48L91.51,100,66.79,124.73a30,30,0,0,0,0,42.42l6.78,6.79L19.76,227.76a6,6,0,1,0,8.48,8.48l53.82-53.81,6.79,6.78a30,30,0,0,0,42.42,0L156,164.49l7.76,7.75a6,6,0,0,0,8.48-8.48L164.49,156l24.72-24.73a30,30,0,0,0,0-42.42l-6.78-6.79,53.81-53.82A6,6,0,0,0,236.24,19.76Zm-113.45,161a18,18,0,0,1-25.46,0L75.27,158.67a18,18,0,0,1,0-25.46L100,108.49,147.51,156Zm57.94-57.94L156,147.51,108.49,100l24.72-24.73a18,18,0,0,1,25.46,0l22.06,22.06a18,18,0,0,1,0,25.46ZM90.43,34.23a6,6,0,0,1,11.14-4.46l8,20a6,6,0,1,1-11.14,4.46Zm-64,59.54a6,6,0,0,1,7.8-3.34l20,8a6,6,0,1,1-4.46,11.14l-20-8A6,6,0,0,1,26.43,93.77Zm203.14,68.46a6,6,0,0,1-7.8,3.34l-20-8a6,6,0,0,1,4.46-11.14l20,8A6,6,0,0,1,229.57,162.23Zm-64,59.54a6,6,0,1,1-11.14,4.46l-8-20a6,6,0,0,1,11.14-4.46Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M237.66,18.34a8,8,0,0,0-11.32,0l-52.4,52.41-5.37-5.38a32.05,32.05,0,0,0-45.26,0L100,88.69l-6.34-6.35A8,8,0,0,0,82.34,93.66L88.69,100,65.37,123.31a32,32,0,0,0,0,45.26l5.38,5.37-52.41,52.4a8,8,0,0,0,11.32,11.32l52.4-52.41,5.37,5.38a32,32,0,0,0,45.26,0L156,167.31l6.34,6.35a8,8,0,0,0,11.32-11.32L167.31,156l23.32-23.31a32,32,0,0,0,0-45.26l-5.38-5.37,52.41-52.4A8,8,0,0,0,237.66,18.34Zm-116.29,161a16,16,0,0,1-22.62,0L76.69,157.25a16,16,0,0,1,0-22.62L100,111.31,144.69,156Zm57.94-57.94L156,144.69,111.31,100l23.32-23.31a16,16,0,0,1,22.62,0l22.06,22A16,16,0,0,1,179.31,121.37ZM88.57,35A8,8,0,0,1,103.43,29l8,20A8,8,0,0,1,96.57,55ZM24.57,93A8,8,0,0,1,35,88.57l20,8A8,8,0,0,1,49,111.43l-20-8A8,8,0,0,1,24.57,93ZM231.43,163a8,8,0,0,1-10.4,4.46l-20-8A8,8,0,1,1,207,144.57l20,8A8,8,0,0,1,231.43,163Zm-64,58.06A8,8,0,0,1,152.57,227l-8-20A8,8,0,0,1,159.43,201Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M234.83,21.17a4,4,0,0,0-5.66,0L173.94,76.4l-8.2-8.2a28,28,0,0,0-39.6,0L100,94.34l-9.17-9.17a4,4,0,0,0-5.66,5.66L94.34,100,68.2,126.14a28,28,0,0,0,0,39.6l8.2,8.2L21.17,229.17a4,4,0,0,0,5.66,5.66L82.06,179.6l8.2,8.2a28,28,0,0,0,39.6,0L156,161.66l9.17,9.17a4,4,0,0,0,5.66-5.66L161.66,156l26.14-26.14a28,28,0,0,0,0-39.6l-8.2-8.2,55.23-55.23A4,4,0,0,0,234.83,21.17Zm-110.63,161a20,20,0,0,1-28.28,0L73.86,160.08a20,20,0,0,1,0-28.28L100,105.66,150.34,156Zm57.94-57.94L156,150.34,105.66,100,131.8,73.86a20,20,0,0,1,28.28,0l22.06,22.06A20,20,0,0,1,182.14,124.2ZM92.29,33.49a4,4,0,1,1,7.42-3l8,20a4,4,0,0,1-2.22,5.2A3.91,3.91,0,0,1,104,56a4,4,0,0,1-3.71-2.51Zm-64,61a4,4,0,0,1,5.2-2.22l20,8A4,4,0,0,1,52,108a3.91,3.91,0,0,1-1.49-.29l-20-8A4,4,0,0,1,28.29,94.51Zm199.42,67A4,4,0,0,1,224,164a3.91,3.91,0,0,1-1.49-.29l-20-8a4,4,0,1,1,3-7.42l20,8A4,4,0,0,1,227.71,161.49Zm-64,61a4,4,0,0,1-2.22,5.2A3.91,3.91,0,0,1,160,228a4,4,0,0,1-3.71-2.51l-8-20a4,4,0,0,1,7.42-3Z\" }))\n ]\n]);\nexport {\n l as default\n};\n","import * as o from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/Plus.es.js\";\nconst e = o.forwardRef((r, s) => /* @__PURE__ */ o.createElement(t, { ref: s, ...r, weights: a }));\ne.displayName = \"PlusIcon\";\nconst f = e;\nexport {\n f as Plus,\n e as PlusIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M228,128a12,12,0,0,1-12,12H140v76a12,12,0,0,1-24,0V140H40a12,12,0,0,1,0-24h76V40a12,12,0,0,1,24,0v76h76A12,12,0,0,1,228,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM184,136H136v48a8,8,0,0,1-16,0V136H72a8,8,0,0,1,0-16h48V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M222,128a6,6,0,0,1-6,6H134v82a6,6,0,0,1-12,0V134H40a6,6,0,0,1,0-12h82V40a6,6,0,0,1,12,0v82h82A6,6,0,0,1,222,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M220,128a4,4,0,0,1-4,4H132v84a4,4,0,0,1-8,0V132H40a4,4,0,0,1,0-8h84V40a4,4,0,0,1,8,0v84h84A4,4,0,0,1,220,128Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as o from \"react\";\nimport s from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/Quotes.es.js\";\nconst e = o.forwardRef((t, r) => /* @__PURE__ */ o.createElement(s, { ref: r, ...t, weights: a }));\ne.displayName = \"QuotesIcon\";\nconst f = e;\nexport {\n f as Quotes,\n e as QuotesIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M100,52H40A20,20,0,0,0,20,72v64a20,20,0,0,0,20,20H96v4a28,28,0,0,1-28,28,12,12,0,0,0,0,24,52.06,52.06,0,0,0,52-52V72A20,20,0,0,0,100,52Zm-4,80H44V76H96ZM216,52H156a20,20,0,0,0-20,20v64a20,20,0,0,0,20,20h56v4a28,28,0,0,1-28,28,12,12,0,0,0,0,24,52.06,52.06,0,0,0,52-52V72A20,20,0,0,0,216,52Zm-4,80H160V76h52Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M108,72v72H40a8,8,0,0,1-8-8V72a8,8,0,0,1,8-8h60A8,8,0,0,1,108,72Zm108-8H156a8,8,0,0,0-8,8v64a8,8,0,0,0,8,8h68V72A8,8,0,0,0,216,64Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M100,56H40A16,16,0,0,0,24,72v64a16,16,0,0,0,16,16h60v8a32,32,0,0,1-32,32,8,8,0,0,0,0,16,48.05,48.05,0,0,0,48-48V72A16,16,0,0,0,100,56Zm0,80H40V72h60ZM216,56H156a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h60v8a32,32,0,0,1-32,32,8,8,0,0,0,0,16,48.05,48.05,0,0,0,48-48V72A16,16,0,0,0,216,56Zm0,80H156V72h60Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M116,72v88a48.05,48.05,0,0,1-48,48,8,8,0,0,1,0-16,32,32,0,0,0,32-32v-8H40a16,16,0,0,1-16-16V72A16,16,0,0,1,40,56h60A16,16,0,0,1,116,72ZM216,56H156a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h60v8a32,32,0,0,1-32,32,8,8,0,0,0,0,16,48.05,48.05,0,0,0,48-48V72A16,16,0,0,0,216,56Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M100,58H40A14,14,0,0,0,26,72v64a14,14,0,0,0,14,14h62v10a34,34,0,0,1-34,34,6,6,0,0,0,0,12,46.06,46.06,0,0,0,46-46V72A14,14,0,0,0,100,58Zm2,80H40a2,2,0,0,1-2-2V72a2,2,0,0,1,2-2h60a2,2,0,0,1,2,2ZM216,58H156a14,14,0,0,0-14,14v64a14,14,0,0,0,14,14h62v10a34,34,0,0,1-34,34,6,6,0,0,0,0,12,46.06,46.06,0,0,0,46-46V72A14,14,0,0,0,216,58Zm2,80H156a2,2,0,0,1-2-2V72a2,2,0,0,1,2-2h60a2,2,0,0,1,2,2Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M100,56H40A16,16,0,0,0,24,72v64a16,16,0,0,0,16,16h60v8a32,32,0,0,1-32,32,8,8,0,0,0,0,16,48.05,48.05,0,0,0,48-48V72A16,16,0,0,0,100,56Zm0,80H40V72h60ZM216,56H156a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16h60v8a32,32,0,0,1-32,32,8,8,0,0,0,0,16,48.05,48.05,0,0,0,48-48V72A16,16,0,0,0,216,56Zm0,80H156V72h60Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M100,60H40A12,12,0,0,0,28,72v64a12,12,0,0,0,12,12h64v12a36,36,0,0,1-36,36,4,4,0,0,0,0,8,44.05,44.05,0,0,0,44-44V72A12,12,0,0,0,100,60Zm4,80H40a4,4,0,0,1-4-4V72a4,4,0,0,1,4-4h60a4,4,0,0,1,4,4ZM216,60H156a12,12,0,0,0-12,12v64a12,12,0,0,0,12,12h64v12a36,36,0,0,1-36,36,4,4,0,0,0,0,8,44.05,44.05,0,0,0,44-44V72A12,12,0,0,0,216,60Zm4,80H156a4,4,0,0,1-4-4V72a4,4,0,0,1,4-4h60a4,4,0,0,1,4,4Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport i from \"../lib/SSRBase.es.js\";\nimport n from \"../defs/ShieldWarning.es.js\";\nconst r = e.forwardRef((o, a) => /* @__PURE__ */ e.createElement(i, { ref: a, ...o, weights: n }));\nr.displayName = \"ShieldWarningIcon\";\nconst s = r;\nexport {\n s as ShieldWarning,\n r as ShieldWarningIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M116,132V96a12,12,0,0,1,24,0v36a12,12,0,0,1-24,0Zm12,56a16,16,0,1,0-16-16A16,16,0,0,0,128,188ZM228,56v56c0,54.29-26.32,87.22-48.4,105.29-23.71,19.39-47.44,26-48.44,26.29a12.1,12.1,0,0,1-6.32,0c-1-.28-24.73-6.9-48.44-26.29C54.32,199.22,28,166.29,28,112V56A20,20,0,0,1,48,36H208A20,20,0,0,1,228,56Zm-24,4H52v52c0,35.71,13.09,64.69,38.91,86.15A126.14,126.14,0,0,0,128,219.38a126.28,126.28,0,0,0,37.09-21.23C190.91,176.69,204,147.71,204,112Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M216,56v56c0,96-88,120-88,120S40,208,40,112V56a8,8,0,0,1,8-8H208A8,8,0,0,1,216,56Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M120,136V96a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm8,48a12,12,0,1,0-12-12A12,12,0,0,0,128,184ZM224,56v56c0,52.72-25.52,84.67-46.93,102.19-23.06,18.86-46,25.27-47,25.53a8,8,0,0,1-4.2,0c-1-.26-23.91-6.67-47-25.53C57.52,196.67,32,164.72,32,112V56A16,16,0,0,1,48,40H208A16,16,0,0,1,224,56Zm-16,0L48,56l0,56c0,37.3,13.82,67.51,41.07,89.81A128.25,128.25,0,0,0,128,223.62a129.3,129.3,0,0,0,39.41-22.2C194.34,179.16,208,149.07,208,112Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,40H48A16,16,0,0,0,32,56v56c0,52.72,25.52,84.67,46.93,102.19,23.06,18.86,46,25.27,47,25.53a8,8,0,0,0,4.2,0c1-.26,23.91-6.67,47-25.53C198.48,196.67,224,164.72,224,112V56A16,16,0,0,0,208,40ZM120,96a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm8,88a12,12,0,1,1,12-12A12,12,0,0,1,128,184Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M122,136V96a6,6,0,0,1,12,0v40a6,6,0,0,1-12,0Zm6,26a10,10,0,1,0,10,10A10,10,0,0,0,128,162ZM222,56v56c0,51.94-25.12,83.4-46.2,100.64-22.73,18.6-45.27,24.89-46.22,25.15a6,6,0,0,1-3.16,0c-1-.26-23.49-6.55-46.22-25.15C59.12,195.4,34,163.94,34,112V56A14,14,0,0,1,48,42H208A14,14,0,0,1,222,56Zm-12,0a2,2,0,0,0-2-2H48a2,2,0,0,0-2,2v56c0,37.75,13.94,68.39,41.44,91.06A130.94,130.94,0,0,0,128,225.72a131.17,131.17,0,0,0,40.56-22.66C196.06,180.39,210,149.75,210,112Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M120,136V96a8,8,0,0,1,16,0v40a8,8,0,0,1-16,0Zm8,48a12,12,0,1,0-12-12A12,12,0,0,0,128,184ZM224,56v56c0,52.72-25.52,84.67-46.93,102.19-23.06,18.86-46,25.27-47,25.53a8,8,0,0,1-4.2,0c-1-.26-23.91-6.67-47-25.53C57.52,196.67,32,164.72,32,112V56A16,16,0,0,1,48,40H208A16,16,0,0,1,224,56Zm-16,0L48,56l0,56c0,37.3,13.82,67.51,41.07,89.81A128.25,128.25,0,0,0,128,223.62a129.3,129.3,0,0,0,39.41-22.2C194.34,179.16,208,149.07,208,112Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M124,136V96a4,4,0,0,1,8,0v40a4,4,0,0,1-8,0Zm4,28a8,8,0,1,0,8,8A8,8,0,0,0,128,164ZM220,56v56c0,51.16-24.73,82.12-45.47,99.1-22.4,18.32-44.55,24.5-45.48,24.76a4,4,0,0,1-2.1,0c-.93-.26-23.08-6.44-45.48-24.76C60.73,194.12,36,163.16,36,112V56A12,12,0,0,1,48,44H208A12,12,0,0,1,220,56Zm-8,0a4,4,0,0,0-4-4H48a4,4,0,0,0-4,4v56c0,38.44,14.23,69.63,42.29,92.71A132.23,132.23,0,0,0,128,227.82a132.45,132.45,0,0,0,41.71-23.11C197.77,181.63,212,150.44,212,112Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport i from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/SidebarSimple.es.js\";\nconst r = e.forwardRef((o, a) => /* @__PURE__ */ e.createElement(i, { ref: a, ...o, weights: m }));\nr.displayName = \"SidebarSimpleIcon\";\nconst S = r;\nexport {\n S as SidebarSimple,\n r as SidebarSimpleIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,36H40A20,20,0,0,0,20,56V200a20,20,0,0,0,20,20H216a20,20,0,0,0,20-20V56A20,20,0,0,0,216,36ZM44,60H76V196H44ZM212,196H100V60H212Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M88,48V208H40a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM40,56H80V200H40ZM216,200H96V56H216V200Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40Zm0,160H88V56H216V200Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,42H40A14,14,0,0,0,26,56V200a14,14,0,0,0,14,14H216a14,14,0,0,0,14-14V56A14,14,0,0,0,216,42ZM38,200V56a2,2,0,0,1,2-2H82V202H40A2,2,0,0,1,38,200Zm180,0a2,2,0,0,1-2,2H94V54H216a2,2,0,0,1,2,2Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM40,56H80V200H40ZM216,200H96V56H216V200Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M216,44H40A12,12,0,0,0,28,56V200a12,12,0,0,0,12,12H216a12,12,0,0,0,12-12V56A12,12,0,0,0,216,44ZM36,200V56a4,4,0,0,1,4-4H84V204H40A4,4,0,0,1,36,200Zm184,0a4,4,0,0,1-4,4H92V52H216a4,4,0,0,1,4,4Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as t from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport i from \"../defs/SignOut.es.js\";\nconst o = t.forwardRef((e, r) => /* @__PURE__ */ t.createElement(a, { ref: r, ...e, weights: i }));\no.displayName = \"SignOutIcon\";\nconst s = o;\nexport {\n s as SignOut,\n o as SignOutIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M124,216a12,12,0,0,1-12,12H48a12,12,0,0,1-12-12V40A12,12,0,0,1,48,28h64a12,12,0,0,1,0,24H60V204h52A12,12,0,0,1,124,216Zm108.49-96.49-40-40a12,12,0,0,0-17,17L195,116H112a12,12,0,0,0,0,24h83l-19.52,19.51a12,12,0,0,0,17,17l40-40A12,12,0,0,0,232.49,119.51Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M224,56V200a16,16,0,0,1-16,16H48V40H208A16,16,0,0,1,224,56Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40a8,8,0,0,0-11.32,11.32L204.69,120H112a8,8,0,0,0,0,16h92.69l-26.35,26.34a8,8,0,0,0,11.32,11.32l40-40A8,8,0,0,0,229.66,122.34Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40A8,8,0,0,0,176,88v32H112a8,8,0,0,0,0,16h64v32a8,8,0,0,0,13.66,5.66l40-40A8,8,0,0,0,229.66,122.34Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M118,216a6,6,0,0,1-6,6H48a6,6,0,0,1-6-6V40a6,6,0,0,1,6-6h64a6,6,0,0,1,0,12H54V210h58A6,6,0,0,1,118,216Zm110.24-92.24-40-40a6,6,0,0,0-8.48,8.48L209.51,122H112a6,6,0,0,0,0,12h97.51l-29.75,29.76a6,6,0,1,0,8.48,8.48l40-40A6,6,0,0,0,228.24,123.76Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M120,216a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h64a8,8,0,0,1,0,16H56V208h56A8,8,0,0,1,120,216Zm109.66-93.66-40-40a8,8,0,0,0-11.32,11.32L204.69,120H112a8,8,0,0,0,0,16h92.69l-26.35,26.34a8,8,0,0,0,11.32,11.32l40-40A8,8,0,0,0,229.66,122.34Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M116,216a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V40a4,4,0,0,1,4-4h64a4,4,0,0,1,0,8H52V212h60A4,4,0,0,1,116,216Zm110.83-90.83-40-40a4,4,0,0,0-5.66,5.66L214.34,124H112a4,4,0,0,0,0,8H214.34l-33.17,33.17a4,4,0,0,0,5.66,5.66l40-40A4,4,0,0,0,226.83,125.17Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport i from \"../defs/SlidersHorizontal.es.js\";\nconst r = o.forwardRef((e, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...e, weights: i }));\nr.displayName = \"SlidersHorizontalIcon\";\nconst m = r;\nexport {\n m as SlidersHorizontal,\n r as SlidersHorizontalIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M40,92H70.06a36,36,0,0,0,67.88,0H216a12,12,0,0,0,0-24H137.94a36,36,0,0,0-67.88,0H40a12,12,0,0,0,0,24Zm64-24A12,12,0,1,1,92,80,12,12,0,0,1,104,68Zm112,96H201.94a36,36,0,0,0-67.88,0H40a12,12,0,0,0,0,24h94.06a36,36,0,0,0,67.88,0H216a12,12,0,0,0,0-24Zm-48,24a12,12,0,1,1,12-12A12,12,0,0,1,168,188Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M128,80a24,24,0,1,1-24-24A24,24,0,0,1,128,80Zm40,72a24,24,0,1,0,24,24A24,24,0,0,0,168,152Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M40,88H73a32,32,0,0,0,62,0h81a8,8,0,0,0,0-16H135a32,32,0,0,0-62,0H40a8,8,0,0,0,0,16Zm64-24A16,16,0,1,1,88,80,16,16,0,0,1,104,64ZM216,168H199a32,32,0,0,0-62,0H40a8,8,0,0,0,0,16h97a32,32,0,0,0,62,0h17a8,8,0,0,0,0-16Zm-48,24a16,16,0,1,1,16-16A16,16,0,0,1,168,192Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M32,80a8,8,0,0,1,8-8H77.17a28,28,0,0,1,53.66,0H216a8,8,0,0,1,0,16H130.83a28,28,0,0,1-53.66,0H40A8,8,0,0,1,32,80Zm184,88H194.83a28,28,0,0,0-53.66,0H40a8,8,0,0,0,0,16H141.17a28,28,0,0,0,53.66,0H216a8,8,0,0,0,0-16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M40,86H74.6a30,30,0,0,0,58.8,0H216a6,6,0,0,0,0-12H133.4a30,30,0,0,0-58.8,0H40a6,6,0,0,0,0,12Zm64-24A18,18,0,1,1,86,80,18,18,0,0,1,104,62ZM216,170H197.4a30,30,0,0,0-58.8,0H40a6,6,0,0,0,0,12h98.6a30,30,0,0,0,58.8,0H216a6,6,0,0,0,0-12Zm-48,24a18,18,0,1,1,18-18A18,18,0,0,1,168,194Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M40,88H73a32,32,0,0,0,62,0h81a8,8,0,0,0,0-16H135a32,32,0,0,0-62,0H40a8,8,0,0,0,0,16Zm64-24A16,16,0,1,1,88,80,16,16,0,0,1,104,64ZM216,168H199a32,32,0,0,0-62,0H40a8,8,0,0,0,0,16h97a32,32,0,0,0,62,0h17a8,8,0,0,0,0-16Zm-48,24a16,16,0,1,1,16-16A16,16,0,0,1,168,192Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M40,84H76.29a28,28,0,0,0,55.42,0H216a4,4,0,0,0,0-8H131.71a28,28,0,0,0-55.42,0H40a4,4,0,0,0,0,8Zm64-24A20,20,0,1,1,84,80,20,20,0,0,1,104,60ZM216,172H195.71a28,28,0,0,0-55.42,0H40a4,4,0,0,0,0,8H140.29a28,28,0,0,0,55.42,0H216a4,4,0,0,0,0-8Zm-48,24a20,20,0,1,1,20-20A20,20,0,0,1,168,196Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/Sparkle.es.js\";\nconst r = e.forwardRef((o, a) => /* @__PURE__ */ e.createElement(t, { ref: a, ...o, weights: m }));\nr.displayName = \"SparkleIcon\";\nconst c = r;\nexport {\n c as Sparkle,\n r as SparkleIcon\n};\n","import * as a from \"react\";\nconst l = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M199,125.31l-49.88-18.39L130.69,57a19.92,19.92,0,0,0-37.38,0L74.92,106.92,25,125.31a19.92,19.92,0,0,0,0,37.38l49.88,18.39L93.31,231a19.92,19.92,0,0,0,37.38,0l18.39-49.88L199,162.69a19.92,19.92,0,0,0,0-37.38Zm-63.38,35.16a12,12,0,0,0-7.11,7.11L112,212.28l-16.47-44.7a12,12,0,0,0-7.11-7.11L43.72,144l44.7-16.47a12,12,0,0,0,7.11-7.11L112,75.72l16.47,44.7a12,12,0,0,0,7.11,7.11L180.28,144ZM140,40a12,12,0,0,1,12-12h12V16a12,12,0,0,1,24,0V28h12a12,12,0,0,1,0,24H188V64a12,12,0,0,1-24,0V52H152A12,12,0,0,1,140,40ZM252,88a12,12,0,0,1-12,12h-4v4a12,12,0,0,1-24,0v-4h-4a12,12,0,0,1,0-24h4V72a12,12,0,0,1,24,0v4h4A12,12,0,0,1,252,88Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M194.82,151.43l-55.09,20.3-20.3,55.09a7.92,7.92,0,0,1-14.86,0l-20.3-55.09-55.09-20.3a7.92,7.92,0,0,1,0-14.86l55.09-20.3,20.3-55.09a7.92,7.92,0,0,1,14.86,0l20.3,55.09,55.09,20.3A7.92,7.92,0,0,1,194.82,151.43Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,144a15.78,15.78,0,0,1-10.42,14.94L146,178l-19,51.62a15.92,15.92,0,0,1-29.88,0L78,178l-51.62-19a15.92,15.92,0,0,1,0-29.88L78,110l19-51.62a15.92,15.92,0,0,1,29.88,0L146,110l51.62,19A15.78,15.78,0,0,1,208,144ZM152,48h16V64a8,8,0,0,0,16,0V48h16a8,8,0,0,0,0-16H184V16a8,8,0,0,0-16,0V32H152a8,8,0,0,0,0,16Zm88,32h-8V72a8,8,0,0,0-16,0v8h-8a8,8,0,0,0,0,16h8v8a8,8,0,0,0,16,0V96h8a8,8,0,0,0,0-16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M196.89,130.94,144.4,111.6,125.06,59.11a13.92,13.92,0,0,0-26.12,0L79.6,111.6,27.11,130.94a13.92,13.92,0,0,0,0,26.12L79.6,176.4l19.34,52.49a13.92,13.92,0,0,0,26.12,0L144.4,176.4l52.49-19.34a13.92,13.92,0,0,0,0-26.12Zm-4.15,14.86-55.08,20.3a6,6,0,0,0-3.56,3.56l-20.3,55.08a1.92,1.92,0,0,1-3.6,0L89.9,169.66a6,6,0,0,0-3.56-3.56L31.26,145.8a1.92,1.92,0,0,1,0-3.6l55.08-20.3a6,6,0,0,0,3.56-3.56l20.3-55.08a1.92,1.92,0,0,1,3.6,0l20.3,55.08a6,6,0,0,0,3.56,3.56l55.08,20.3a1.92,1.92,0,0,1,0,3.6ZM146,40a6,6,0,0,1,6-6h18V16a6,6,0,0,1,12,0V34h18a6,6,0,0,1,0,12H182V64a6,6,0,0,1-12,0V46H152A6,6,0,0,1,146,40ZM246,88a6,6,0,0,1-6,6H230v10a6,6,0,0,1-12,0V94H208a6,6,0,0,1,0-12h10V72a6,6,0,0,1,12,0V82h10A6,6,0,0,1,246,88Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M196.2,132.81l-53.36-19.65L123.19,59.8a11.93,11.93,0,0,0-22.38,0L81.16,113.16,27.8,132.81a11.93,11.93,0,0,0,0,22.38l53.36,19.65,19.65,53.36a11.93,11.93,0,0,0,22.38,0l19.65-53.36,53.36-19.65a11.93,11.93,0,0,0,0-22.38Zm-2.77,14.87L138.35,168a4,4,0,0,0-2.37,2.37l-20.3,55.08a3.92,3.92,0,0,1-7.36,0L88,170.35A4,4,0,0,0,85.65,168l-55.08-20.3a3.92,3.92,0,0,1,0-7.36L85.65,120A4,4,0,0,0,88,117.65l20.3-55.08a3.92,3.92,0,0,1,7.36,0L136,117.65a4,4,0,0,0,2.37,2.37l55.08,20.3a3.92,3.92,0,0,1,0,7.36ZM148,40a4,4,0,0,1,4-4h20V16a4,4,0,0,1,8,0V36h20a4,4,0,0,1,0,8H180V64a4,4,0,0,1-8,0V44H152A4,4,0,0,1,148,40Zm96,48a4,4,0,0,1-4,4H228v12a4,4,0,0,1-8,0V92H208a4,4,0,0,1,0-8h12V72a4,4,0,0,1,8,0V84h12A4,4,0,0,1,244,88Z\" }))\n ]\n]);\nexport {\n l as default\n};\n","import * as e from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/Square.es.js\";\nconst r = e.forwardRef((o, a) => /* @__PURE__ */ e.createElement(t, { ref: a, ...o, weights: m }));\nr.displayName = \"SquareIcon\";\nconst f = r;\nexport {\n f as Square,\n r as SquareIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208,28H48A20,20,0,0,0,28,48V208a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V48A20,20,0,0,0,208,28Zm-4,176H52V52H204Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M216,48V208a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V48a8,8,0,0,1,8-8H208A8,8,0,0,1,216,48Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32Zm0,176H48V48H208V208Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,48V208a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V48A16,16,0,0,1,48,32H208A16,16,0,0,1,224,48Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208,34H48A14,14,0,0,0,34,48V208a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V48A14,14,0,0,0,208,34Zm2,174a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V48a2,2,0,0,1,2-2H208a2,2,0,0,1,2,2Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32Zm0,176H48V48H208V208Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208,36H48A12,12,0,0,0,36,48V208a12,12,0,0,0,12,12H208a12,12,0,0,0,12-12V48A12,12,0,0,0,208,36Zm4,172a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V48a4,4,0,0,1,4-4H208a4,4,0,0,1,4,4Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as r from \"react\";\nimport e from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/Star.es.js\";\nconst t = r.forwardRef((o, a) => /* @__PURE__ */ r.createElement(e, { ref: a, ...o, weights: m }));\nt.displayName = \"StarIcon\";\nconst f = t;\nexport {\n f as Star,\n t as StarIcon\n};\n","import * as a from \"react\";\nconst l = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M243,96a20.33,20.33,0,0,0-17.74-14l-56.59-4.57L146.83,24.62a20.36,20.36,0,0,0-37.66,0L87.35,77.44,30.76,82A20.45,20.45,0,0,0,19.1,117.88l43.18,37.24-13.2,55.7A20.37,20.37,0,0,0,79.57,233L128,203.19,176.43,233a20.39,20.39,0,0,0,30.49-22.15l-13.2-55.7,43.18-37.24A20.43,20.43,0,0,0,243,96ZM172.53,141.7a12,12,0,0,0-3.84,11.86L181.58,208l-47.29-29.08a12,12,0,0,0-12.58,0L74.42,208l12.89-54.4a12,12,0,0,0-3.84-11.86L41.2,105.24l55.4-4.47a12,12,0,0,0,10.13-7.38L128,41.89l21.27,51.5a12,12,0,0,0,10.13,7.38l55.4,4.47Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M229.06,108.79l-48.7,42,14.88,62.79a8.4,8.4,0,0,1-12.52,9.17L128,189.09,73.28,222.74a8.4,8.4,0,0,1-12.52-9.17l14.88-62.79-48.7-42A8.46,8.46,0,0,1,31.73,94L95.64,88.8l24.62-59.6a8.36,8.36,0,0,1,15.48,0l24.62,59.6L224.27,94A8.46,8.46,0,0,1,229.06,108.79Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M239.18,97.26A16.38,16.38,0,0,0,224.92,86l-59-4.76L143.14,26.15a16.36,16.36,0,0,0-30.27,0L90.11,81.23,31.08,86a16.46,16.46,0,0,0-9.37,28.86l45,38.83L53,211.75a16.38,16.38,0,0,0,24.5,17.82L128,198.49l50.53,31.08A16.4,16.4,0,0,0,203,211.75l-13.76-58.07,45-38.83A16.43,16.43,0,0,0,239.18,97.26Zm-15.34,5.47-48.7,42a8,8,0,0,0-2.56,7.91l14.88,62.8a.37.37,0,0,1-.17.48c-.18.14-.23.11-.38,0l-54.72-33.65a8,8,0,0,0-8.38,0L69.09,215.94c-.15.09-.19.12-.38,0a.37.37,0,0,1-.17-.48l14.88-62.8a8,8,0,0,0-2.56-7.91l-48.7-42c-.12-.1-.23-.19-.13-.5s.18-.27.33-.29l63.92-5.16A8,8,0,0,0,103,91.86l24.62-59.61c.08-.17.11-.25.35-.25s.27.08.35.25L153,91.86a8,8,0,0,0,6.75,4.92l63.92,5.16c.15,0,.24,0,.33.29S224,102.63,223.84,102.73Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M234.29,114.85l-45,38.83L203,211.75a16.4,16.4,0,0,1-24.5,17.82L128,198.49,77.47,229.57A16.4,16.4,0,0,1,53,211.75l13.76-58.07-45-38.83A16.46,16.46,0,0,1,31.08,86l59-4.76,22.76-55.08a16.36,16.36,0,0,1,30.27,0l22.75,55.08,59,4.76a16.46,16.46,0,0,1,9.37,28.86Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M237.28,97.87A14.18,14.18,0,0,0,224.76,88l-60.25-4.87-23.22-56.2a14.37,14.37,0,0,0-26.58,0L91.49,83.11,31.24,88a14.18,14.18,0,0,0-12.52,9.89A14.43,14.43,0,0,0,23,113.32L69,152.93l-14,59.25a14.4,14.4,0,0,0,5.59,15,14.1,14.1,0,0,0,15.91.6L128,196.12l51.58,31.71a14.1,14.1,0,0,0,15.91-.6,14.4,14.4,0,0,0,5.59-15l-14-59.25L233,113.32A14.43,14.43,0,0,0,237.28,97.87Zm-12.14,6.37-48.69,42a6,6,0,0,0-1.92,5.92l14.88,62.79a2.35,2.35,0,0,1-.95,2.57,2.24,2.24,0,0,1-2.6.1L131.14,184a6,6,0,0,0-6.28,0L70.14,217.61a2.24,2.24,0,0,1-2.6-.1,2.35,2.35,0,0,1-1-2.57l14.88-62.79a6,6,0,0,0-1.92-5.92l-48.69-42a2.37,2.37,0,0,1-.73-2.65,2.28,2.28,0,0,1,2.07-1.65l63.92-5.16a6,6,0,0,0,5.06-3.69l24.63-59.6a2.35,2.35,0,0,1,4.38,0l24.63,59.6a6,6,0,0,0,5.06,3.69l63.92,5.16a2.28,2.28,0,0,1,2.07,1.65A2.37,2.37,0,0,1,225.14,104.24Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M239.18,97.26A16.38,16.38,0,0,0,224.92,86l-59-4.76L143.14,26.15a16.36,16.36,0,0,0-30.27,0L90.11,81.23,31.08,86a16.46,16.46,0,0,0-9.37,28.86l45,38.83L53,211.75a16.38,16.38,0,0,0,24.5,17.82L128,198.49l50.53,31.08A16.4,16.4,0,0,0,203,211.75l-13.76-58.07,45-38.83A16.43,16.43,0,0,0,239.18,97.26Zm-15.34,5.47-48.7,42a8,8,0,0,0-2.56,7.91l14.88,62.8a.37.37,0,0,1-.17.48c-.18.14-.23.11-.38,0l-54.72-33.65a8,8,0,0,0-8.38,0L69.09,215.94c-.15.09-.19.12-.38,0a.37.37,0,0,1-.17-.48l14.88-62.8a8,8,0,0,0-2.56-7.91l-48.7-42c-.12-.1-.23-.19-.13-.5s.18-.27.33-.29l63.92-5.16A8,8,0,0,0,103,91.86l24.62-59.61c.08-.17.11-.25.35-.25s.27.08.35.25L153,91.86a8,8,0,0,0,6.75,4.92l63.92,5.16c.15,0,.24,0,.33.29S224,102.63,223.84,102.73Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M235.36,98.49A12.21,12.21,0,0,0,224.59,90l-61.47-5L139.44,27.67a12.37,12.37,0,0,0-22.88,0L92.88,85,31.41,90a12.45,12.45,0,0,0-7.07,21.84l46.85,40.41L56.87,212.64a12.35,12.35,0,0,0,18.51,13.49L128,193.77l52.62,32.36a12.12,12.12,0,0,0,13.69-.51,12.28,12.28,0,0,0,4.82-13l-14.32-60.42,46.85-40.41A12.29,12.29,0,0,0,235.36,98.49Zm-8.93,7.26-48.68,42a4,4,0,0,0-1.28,3.95l14.87,62.79a4.37,4.37,0,0,1-1.72,4.65,4.24,4.24,0,0,1-4.81.18L130.1,185.67a4,4,0,0,0-4.2,0L71.19,219.32a4.24,4.24,0,0,1-4.81-.18,4.37,4.37,0,0,1-1.72-4.65L79.53,151.7a4,4,0,0,0-1.28-3.95l-48.68-42A4.37,4.37,0,0,1,28.25,101a4.31,4.31,0,0,1,3.81-3L96,92.79a4,4,0,0,0,3.38-2.46L124,30.73a4.35,4.35,0,0,1,8.08,0l24.62,59.6A4,4,0,0,0,160,92.79l63.9,5.15a4.31,4.31,0,0,1,3.81,3A4.37,4.37,0,0,1,226.43,105.75Z\" }))\n ]\n]);\nexport {\n l as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/Sun.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...r, weights: m }));\ne.displayName = \"SunIcon\";\nconst c = e;\nexport {\n c as Sun,\n e as SunIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M116,36V20a12,12,0,0,1,24,0V36a12,12,0,0,1-24,0Zm80,92a68,68,0,1,1-68-68A68.07,68.07,0,0,1,196,128Zm-24,0a44,44,0,1,0-44,44A44.05,44.05,0,0,0,172,128ZM51.51,68.49a12,12,0,1,0,17-17l-12-12a12,12,0,0,0-17,17Zm0,119-12,12a12,12,0,0,0,17,17l12-12a12,12,0,1,0-17-17ZM196,72a12,12,0,0,0,8.49-3.51l12-12a12,12,0,0,0-17-17l-12,12A12,12,0,0,0,196,72Zm8.49,115.51a12,12,0,0,0-17,17l12,12a12,12,0,0,0,17-17ZM48,128a12,12,0,0,0-12-12H20a12,12,0,0,0,0,24H36A12,12,0,0,0,48,128Zm80,80a12,12,0,0,0-12,12v16a12,12,0,0,0,24,0V220A12,12,0,0,0,128,208Zm108-92H220a12,12,0,0,0,0,24h16a12,12,0,0,0,0-24Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M184,128a56,56,0,1,1-56-56A56,56,0,0,1,184,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm72,88a64,64,0,1,1-64-64A64.07,64.07,0,0,1,192,128Zm-16,0a48,48,0,1,0-48,48A48.05,48.05,0,0,0,176,128ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm8,24a64,64,0,1,0,64,64A64.07,64.07,0,0,0,128,64ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M122,40V16a6,6,0,0,1,12,0V40a6,6,0,0,1-12,0Zm68,88a62,62,0,1,1-62-62A62.07,62.07,0,0,1,190,128Zm-12,0a50,50,0,1,0-50,50A50.06,50.06,0,0,0,178,128ZM59.76,68.24a6,6,0,1,0,8.48-8.48l-16-16a6,6,0,0,0-8.48,8.48Zm0,119.52-16,16a6,6,0,1,0,8.48,8.48l16-16a6,6,0,1,0-8.48-8.48ZM192,70a6,6,0,0,0,4.24-1.76l16-16a6,6,0,0,0-8.48-8.48l-16,16A6,6,0,0,0,192,70Zm4.24,117.76a6,6,0,0,0-8.48,8.48l16,16a6,6,0,0,0,8.48-8.48ZM46,128a6,6,0,0,0-6-6H16a6,6,0,0,0,0,12H40A6,6,0,0,0,46,128Zm82,82a6,6,0,0,0-6,6v24a6,6,0,0,0,12,0V216A6,6,0,0,0,128,210Zm112-88H216a6,6,0,0,0,0,12h24a6,6,0,0,0,0-12Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M120,40V16a8,8,0,0,1,16,0V40a8,8,0,0,1-16,0Zm72,88a64,64,0,1,1-64-64A64.07,64.07,0,0,1,192,128Zm-16,0a48,48,0,1,0-48,48A48.05,48.05,0,0,0,176,128ZM58.34,69.66A8,8,0,0,0,69.66,58.34l-16-16A8,8,0,0,0,42.34,53.66Zm0,116.68-16,16a8,8,0,0,0,11.32,11.32l16-16a8,8,0,0,0-11.32-11.32ZM192,72a8,8,0,0,0,5.66-2.34l16-16a8,8,0,0,0-11.32-11.32l-16,16A8,8,0,0,0,192,72Zm5.66,114.34a8,8,0,0,0-11.32,11.32l16,16a8,8,0,0,0,11.32-11.32ZM48,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H40A8,8,0,0,0,48,128Zm80,80a8,8,0,0,0-8,8v24a8,8,0,0,0,16,0V216A8,8,0,0,0,128,208Zm112-88H216a8,8,0,0,0,0,16h24a8,8,0,0,0,0-16Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M124,40V16a4,4,0,0,1,8,0V40a4,4,0,0,1-8,0Zm64,88a60,60,0,1,1-60-60A60.07,60.07,0,0,1,188,128Zm-8,0a52,52,0,1,0-52,52A52.06,52.06,0,0,0,180,128ZM61.17,66.83a4,4,0,0,0,5.66-5.66l-16-16a4,4,0,0,0-5.66,5.66Zm0,122.34-16,16a4,4,0,0,0,5.66,5.66l16-16a4,4,0,0,0-5.66-5.66ZM192,68a4,4,0,0,0,2.83-1.17l16-16a4,4,0,1,0-5.66-5.66l-16,16A4,4,0,0,0,192,68Zm2.83,121.17a4,4,0,0,0-5.66,5.66l16,16a4,4,0,0,0,5.66-5.66ZM40,124H16a4,4,0,0,0,0,8H40a4,4,0,0,0,0-8Zm88,88a4,4,0,0,0-4,4v24a4,4,0,0,0,8,0V216A4,4,0,0,0,128,212Zm112-88H216a4,4,0,0,0,0,8h24a4,4,0,0,0,0-8Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/Table.es.js\";\nconst o = e.forwardRef((a, r) => /* @__PURE__ */ e.createElement(t, { ref: r, ...a, weights: m }));\no.displayName = \"TableIcon\";\nconst f = o;\nexport {\n f as Table,\n o as TableIcon\n};\n","import * as e from \"react\";\nconst H = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,44H32A12,12,0,0,0,20,56V192a20,20,0,0,0,20,20H216a20,20,0,0,0,20-20V56A12,12,0,0,0,224,44ZM44,116H76v24H44Zm56,0H212v24H100ZM212,68V92H44V68ZM44,164H76v24H44Zm56,24V164H212v24Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M88,104v96H32V104Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48ZM40,112H80v32H40Zm56,0H216v32H96ZM216,64V96H40V64ZM40,160H80v32H40Zm176,32H96V160H216v32Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48ZM40,112H80v32H40Zm56,0H216v32H96ZM40,160H80v32H40Zm176,32H96V160H216v32Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,50H32a6,6,0,0,0-6,6V192a14,14,0,0,0,14,14H216a14,14,0,0,0,14-14V56A6,6,0,0,0,224,50ZM38,110H82v36H38Zm56,0H218v36H94ZM218,62V98H38V62ZM38,192V158H82v36H40A2,2,0,0,1,38,192Zm178,2H94V158H218v34A2,2,0,0,1,216,194Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48ZM40,112H80v32H40Zm56,0H216v32H96ZM216,64V96H40V64ZM40,160H80v32H40Zm176,32H96V160H216v32Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,52H32a4,4,0,0,0-4,4V192a12,12,0,0,0,12,12H216a12,12,0,0,0,12-12V56A4,4,0,0,0,224,52ZM36,108H84v40H36Zm56,0H220v40H92ZM220,60v40H36V60ZM36,192V156H84v40H40A4,4,0,0,1,36,192Zm180,4H92V156H220v36A4,4,0,0,1,216,196Z\" }))\n ]\n]);\nexport {\n H as default\n};\n","import * as o from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/Tag.es.js\";\nconst a = o.forwardRef((e, r) => /* @__PURE__ */ o.createElement(t, { ref: r, ...e, weights: m }));\na.displayName = \"TagIcon\";\nconst f = a;\nexport {\n f as Tag,\n a as TagIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M246.15,133.18,146.83,33.86A19.85,19.85,0,0,0,132.69,28H40A12,12,0,0,0,28,40v92.69a19.85,19.85,0,0,0,5.86,14.14l99.32,99.32a20,20,0,0,0,28.28,0l84.69-84.69A20,20,0,0,0,246.15,133.18Zm-98.83,93.17L52,131V52h79l95.32,95.32ZM104,88A16,16,0,1,1,88,72,16,16,0,0,1,104,88Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M237.66,153,153,237.66a8,8,0,0,1-11.31,0L42.34,138.34A8,8,0,0,1,40,132.69V40h92.69a8,8,0,0,1,5.65,2.34l99.32,99.32A8,8,0,0,1,237.66,153Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M243.31,136,144,36.69A15.86,15.86,0,0,0,132.69,32H40a8,8,0,0,0-8,8v92.69A15.86,15.86,0,0,0,36.69,144L136,243.31a16,16,0,0,0,22.63,0l84.68-84.68a16,16,0,0,0,0-22.63Zm-96,96L48,132.69V48h84.69L232,147.31ZM96,84A12,12,0,1,1,84,72,12,12,0,0,1,96,84Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M243.31,136,144,36.69A15.86,15.86,0,0,0,132.69,32H40a8,8,0,0,0-8,8v92.69A15.86,15.86,0,0,0,36.69,144L136,243.31a16,16,0,0,0,22.63,0l84.68-84.68a16,16,0,0,0,0-22.63ZM84,96A12,12,0,1,1,96,84,12,12,0,0,1,84,96Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M241.91,137.42,142.59,38.1a13.94,13.94,0,0,0-9.9-4.1H40a6,6,0,0,0-6,6v92.69a13.94,13.94,0,0,0,4.1,9.9l99.32,99.32a14,14,0,0,0,19.8,0l84.69-84.69A14,14,0,0,0,241.91,137.42Zm-8.49,11.31-84.69,84.69a2,2,0,0,1-2.83,0L46.59,134.1a2,2,0,0,1-.59-1.41V46h86.69a2,2,0,0,1,1.41.59l99.32,99.31A2,2,0,0,1,233.42,148.73ZM94,84A10,10,0,1,1,84,74,10,10,0,0,1,94,84Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M243.31,136,144,36.69A15.86,15.86,0,0,0,132.69,32H40a8,8,0,0,0-8,8v92.69A15.86,15.86,0,0,0,36.69,144L136,243.31a16,16,0,0,0,22.63,0l84.68-84.68a16,16,0,0,0,0-22.63Zm-96,96L48,132.69V48h84.69L232,147.31ZM96,84A12,12,0,1,1,84,72,12,12,0,0,1,96,84Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M240.49,138.83,141.17,39.51A11.93,11.93,0,0,0,132.69,36H40a4,4,0,0,0-4,4v92.69a11.93,11.93,0,0,0,3.51,8.48l99.32,99.32a12,12,0,0,0,17,0l84.69-84.69a12,12,0,0,0,0-17Zm-5.66,11.31-84.69,84.69a4,4,0,0,1-5.65,0L45.17,135.51A4,4,0,0,1,44,132.69V44h88.69a4,4,0,0,1,2.82,1.17l99.32,99.32A4,4,0,0,1,234.83,150.14ZM92,84a8,8,0,1,1-8-8A8,8,0,0,1,92,84Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/TextB.es.js\";\nconst o = e.forwardRef((t, r) => /* @__PURE__ */ e.createElement(a, { ref: r, ...t, weights: m }));\no.displayName = \"TextBIcon\";\nconst n = o;\nexport {\n n as TextB,\n o as TextBIcon,\n o as TextBolderIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M185.08,114.46A48,48,0,0,0,148,36H80A12,12,0,0,0,68,48V200a12,12,0,0,0,12,12h80a52,52,0,0,0,25.08-97.54ZM92,60h56a24,24,0,0,1,0,48H92Zm68,128H92V132h68a28,28,0,0,1,0,56Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M200,160a40,40,0,0,1-40,40H80V48h68a36,36,0,0,1,0,72h12A40,40,0,0,1,200,160Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M178.48,115.7A44,44,0,0,0,148,40H80a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8h80a48,48,0,0,0,18.48-92.3ZM88,56h60a28,28,0,0,1,0,56H88Zm72,136H88V128h72a32,32,0,0,1,0,64Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M168,156a20,20,0,0,1-20,20H96V136h52A20,20,0,0,1,168,156ZM224,48V208a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V48A16,16,0,0,1,48,32H208A16,16,0,0,1,224,48ZM184,156a36,36,0,0,0-18-31.15A36,36,0,0,0,140,64H88a8,8,0,0,0-8,8V184a8,8,0,0,0,8,8h60A36,36,0,0,0,184,156Zm-24-56a20,20,0,0,0-20-20H96v40h44A20,20,0,0,0,160,100Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M174.69,116.41A42,42,0,0,0,148,42H80a6,6,0,0,0-6,6V200a6,6,0,0,0,6,6h80a46,46,0,0,0,14.69-89.59ZM86,54h62a30,30,0,0,1,0,60H86Zm74,140H86V126h74a34,34,0,0,1,0,68Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M178.48,115.7A44,44,0,0,0,148,40H80a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8h80a48,48,0,0,0,18.48-92.3ZM88,56h60a28,28,0,0,1,0,56H88Zm72,136H88V128h72a32,32,0,0,1,0,64Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M170.27,117.21A40,40,0,0,0,148,44H80a4,4,0,0,0-4,4V200a4,4,0,0,0,4,4h80a44,44,0,0,0,10.27-86.79ZM84,52h64a32,32,0,0,1,0,64H84Zm76,144H84V124h76a36,36,0,0,1,0,72Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as t from \"react\";\nimport r from \"../lib/SSRBase.es.js\";\nimport c from \"../defs/TextItalic.es.js\";\nconst e = t.forwardRef((o, a) => /* @__PURE__ */ t.createElement(r, { ref: a, ...o, weights: c }));\ne.displayName = \"TextItalicIcon\";\nconst s = e;\nexport {\n s as TextItalic,\n e as TextItalicIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M204,56a12,12,0,0,1-12,12H160.65l-40,120H144a12,12,0,0,1,0,24H64a12,12,0,0,1,0-24H95.35l40-120H112a12,12,0,0,1,0-24h80A12,12,0,0,1,204,56Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M192,56,144,200H64L112,56Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M200,56a8,8,0,0,1-8,8H157.77L115.1,192H144a8,8,0,0,1,0,16H64a8,8,0,0,1,0-16H98.23L140.9,64H112a8,8,0,0,1,0-16h80A8,8,0,0,1,200,56Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM176,80H153.64l-34.29,96H136a8,8,0,0,1,0,16H80a8,8,0,0,1,0-16h22.36l34.29-96H120a8,8,0,0,1,0-16h56a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M198,56a6,6,0,0,1-6,6H156.32l-44,132H144a6,6,0,0,1,0,12H64a6,6,0,0,1,0-12H99.68l44-132H112a6,6,0,0,1,0-12h80A6,6,0,0,1,198,56Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M200,56a8,8,0,0,1-8,8H157.77L115.1,192H144a8,8,0,0,1,0,16H64a8,8,0,0,1,0-16H98.23L140.9,64H112a8,8,0,0,1,0-16h80A8,8,0,0,1,200,56Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M196,56a4,4,0,0,1-4,4H154.88L109.55,196H144a4,4,0,0,1,0,8H64a4,4,0,0,1,0-8h37.12L146.45,60H112a4,4,0,0,1,0-8h80A4,4,0,0,1,196,56Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as t from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport i from \"../defs/TextStrikethrough.es.js\";\nconst e = t.forwardRef((r, o) => /* @__PURE__ */ t.createElement(a, { ref: o, ...r, weights: i }));\ne.displayName = \"TextStrikethroughIcon\";\nconst s = e;\nexport {\n s as TextStrikethrough,\n e as TextStrikethroughIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M228,128a12,12,0,0,1-12,12H185.86A41.48,41.48,0,0,1,196,168c0,14.45-7.81,28.32-21.43,38.05C162,215.05,145.44,220,128,220s-34-4.95-46.57-13.95C67.81,196.32,60,182.45,60,168a12,12,0,0,1,24,0c0,15.18,20.15,28,44,28s44-12.82,44-28c0-12.76-9.3-20.18-35.35-28H40a12,12,0,0,1,0-24H216A12,12,0,0,1,228,128ZM75.11,100a12,12,0,0,0,12-12c0-16,17.58-28,40.89-28,17.36,0,31.37,6.65,37.48,17.78a12,12,0,0,0,21-11.56C176.13,47.3,154.25,36,128,36,91,36,63.11,58.35,63.11,88A12,12,0,0,0,75.11,100Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M176,72l-55.31,51.05c-24-6.7-45.58-14.26-45.58-35,0-22.09,22-40,52.89-40C151.2,48,168.37,57.64,176,72Zm-55.31,51.05L72,168c0,22.09,25.07,40,56,40s56-17.91,56-40C184,138.43,150.52,131.4,120.69,123.05Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H175.93c9.19,7.11,16.07,17.2,16.07,32,0,13.34-7,25.7-19.75,34.79C160.33,211.31,144.61,216,128,216s-32.33-4.69-44.25-13.21C71,193.7,64,181.34,64,168a8,8,0,0,1,16,0c0,17.35,22,32,48,32s48-14.65,48-32c0-14.85-10.54-23.58-38.77-32H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM76.33,104a8,8,0,0,0,7.61-10.49A17.3,17.3,0,0,1,83.11,88c0-18.24,19.3-32,44.89-32,18.84,0,34.16,7.42,41,19.85a8,8,0,0,0,14-7.7C173.33,50.52,152.77,40,128,40,93.29,40,67.11,60.63,67.11,88a33.73,33.73,0,0,0,1.62,10.49A8,8,0,0,0,76.33,104Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM82.71,94.58C86,76.57,104.58,64,128,64c18.2,0,33.59,7.41,41.18,19.83a8,8,0,1,1-13.66,8.34C150.94,84.66,140.39,80,128,80c-15.3,0-27.73,7.33-29.55,17.42A8,8,0,0,1,90.59,104a7.76,7.76,0,0,1-1.43-.13A8,8,0,0,1,82.71,94.58ZM192,136H168.29A28.45,28.45,0,0,1,176,156c0,20.19-21.08,36-48,36-23.89,0-43.83-12.78-47.43-30.4a8,8,0,1,1,15.67-3.2c2,9.87,16,17.6,31.76,17.6,17.35,0,32-9.16,32-20,0-9.14-6.76-14.43-25.72-20H64a8,8,0,0,1,0-16H192a8,8,0,0,1,0,16Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M222,128a6,6,0,0,1-6,6H169.45c11.28,6.92,20.55,17.38,20.55,34,0,25.36-27.81,46-62,46s-62-20.64-62-46a6,6,0,0,1,12,0c0,18.75,22.43,34,50,34s50-15.25,50-34c0-18.23-15.46-26.59-40.47-34H40a6,6,0,0,1,0-12H216A6,6,0,0,1,222,128ZM76.33,102a6.2,6.2,0,0,0,1.88-.3A6,6,0,0,0,82,94.13,19.74,19.74,0,0,1,81.11,88c0-19.38,20.16-34,46.89-34,19.58,0,35.56,7.81,42.74,20.89a6,6,0,0,0,10.52-5.78C171.94,52.13,152,42,128,42,94.43,42,69.11,61.77,69.11,88a31.62,31.62,0,0,0,1.52,9.87A6,6,0,0,0,76.33,102Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,128a8,8,0,0,1-8,8H175.93c9.19,7.11,16.07,17.2,16.07,32,0,13.34-7,25.7-19.75,34.79C160.33,211.31,144.61,216,128,216s-32.33-4.69-44.25-13.21C71,193.7,64,181.34,64,168a8,8,0,0,1,16,0c0,17.35,22,32,48,32s48-14.65,48-32c0-14.85-10.54-23.58-38.77-32H40a8,8,0,0,1,0-16H216A8,8,0,0,1,224,128ZM76.33,104a8,8,0,0,0,7.61-10.49A17.3,17.3,0,0,1,83.11,88c0-18.24,19.3-32,44.89-32,18.84,0,34.16,7.42,41,19.85a8,8,0,0,0,14-7.7C173.33,50.52,152.77,40,128,40,93.29,40,67.11,60.63,67.11,88a33.73,33.73,0,0,0,1.62,10.49A8,8,0,0,0,76.33,104Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M220,128a4,4,0,0,1-4,4H161.16c15.45,7.24,26.84,17.8,26.84,36,0,24.26-26.92,44-60,44s-60-19.74-60-44a4,4,0,0,1,8,0c0,19.85,23.33,36,52,36s52-16.15,52-36c0-19.54-16.13-28.3-42.18-36H40a4,4,0,0,1,0-8H216A4,4,0,0,1,220,128ZM76.33,100a3.85,3.85,0,0,0,1.25-.2,4,4,0,0,0,2.55-5,21.9,21.9,0,0,1-1-6.75c0-20.52,21-36,48.89-36,20.32,0,37,8.2,44.49,21.92a4,4,0,0,0,7-3.85C170.54,53.75,151.29,44,128,44,95.57,44,71.11,62.92,71.11,88a29.76,29.76,0,0,0,1.42,9.25A4,4,0,0,0,76.33,100Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as r from \"react\";\nimport s from \"../lib/SSRBase.es.js\";\nimport t from \"../defs/Trash.es.js\";\nconst o = r.forwardRef((a, e) => /* @__PURE__ */ r.createElement(s, { ref: e, ...a, weights: t }));\no.displayName = \"TrashIcon\";\nconst f = o;\nexport {\n f as Trash,\n o as TrashIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48H180V36A28,28,0,0,0,152,8H104A28,28,0,0,0,76,36V48H40a12,12,0,0,0,0,24h4V208a20,20,0,0,0,20,20H192a20,20,0,0,0,20-20V72h4a12,12,0,0,0,0-24ZM100,36a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4V48H100Zm88,168H68V72H188ZM116,104v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Zm48,0v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M200,56V208a8,8,0,0,1-8,8H64a8,8,0,0,1-8-8V56Z\", opacity: \"0.2\" }), /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM112,168a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm0-120H96V40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,50H174V40a22,22,0,0,0-22-22H104A22,22,0,0,0,82,40V50H40a6,6,0,0,0,0,12H50V208a14,14,0,0,0,14,14H192a14,14,0,0,0,14-14V62h10a6,6,0,0,0,0-12ZM94,40a10,10,0,0,1,10-10h48a10,10,0,0,1,10,10V50H94ZM194,208a2,2,0,0,1-2,2H64a2,2,0,0,1-2-2V62H194ZM110,104v64a6,6,0,0,1-12,0V104a6,6,0,0,1,12,0Zm48,0v64a6,6,0,0,1-12,0V104a6,6,0,0,1,12,0Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M216,52H172V40a20,20,0,0,0-20-20H104A20,20,0,0,0,84,40V52H40a4,4,0,0,0,0,8H52V208a12,12,0,0,0,12,12H192a12,12,0,0,0,12-12V60h12a4,4,0,0,0,0-8ZM92,40a12,12,0,0,1,12-12h48a12,12,0,0,1,12,12V52H92ZM196,208a4,4,0,0,1-4,4H64a4,4,0,0,1-4-4V60H196ZM108,104v64a4,4,0,0,1-8,0V104a4,4,0,0,1,8,0Zm48,0v64a4,4,0,0,1-8,0V104a4,4,0,0,1,8,0Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/TrendUp.es.js\";\nconst r = e.forwardRef((o, t) => /* @__PURE__ */ e.createElement(a, { ref: t, ...o, weights: m }));\nr.displayName = \"TrendUpIcon\";\nconst s = r;\nexport {\n s as TrendUp,\n r as TrendUpIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M244,56v64a12,12,0,0,1-24,0V85l-75.51,75.52a12,12,0,0,1-17,0L96,129,32.49,192.49a12,12,0,0,1-17-17l72-72a12,12,0,0,1,17,0L136,135l67-67H168a12,12,0,0,1,0-24h64A12,12,0,0,1,244,56Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M232,56v64L168,56Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M232,48H168a8,8,0,0,0-5.66,13.66L188.69,88,136,140.69l-34.34-34.35a8,8,0,0,0-11.32,0l-72,72a8,8,0,0,0,11.32,11.32L96,123.31l34.34,34.35a8,8,0,0,0,11.32,0L200,99.31l26.34,26.35A8,8,0,0,0,240,120V56A8,8,0,0,0,232,48Zm-8,52.69L187.31,64H224Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M240,56v64a8,8,0,0,1-13.66,5.66L200,99.31l-58.34,58.35a8,8,0,0,1-11.32,0L96,123.31,29.66,189.66a8,8,0,0,1-11.32-11.32l72-72a8,8,0,0,1,11.32,0L136,140.69,188.69,88,162.34,61.66A8,8,0,0,1,168,48h64A8,8,0,0,1,240,56Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M238,56v64a6,6,0,0,1-12,0V70.48l-85.76,85.76a6,6,0,0,1-8.48,0L96,120.49,28.24,188.24a6,6,0,0,1-8.48-8.48l72-72a6,6,0,0,1,8.48,0L136,143.51,217.52,62H168a6,6,0,0,1,0-12h64A6,6,0,0,1,238,56Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M240,56v64a8,8,0,0,1-16,0V75.31l-82.34,82.35a8,8,0,0,1-11.32,0L96,123.31,29.66,189.66a8,8,0,0,1-11.32-11.32l72-72a8,8,0,0,1,11.32,0L136,140.69,212.69,64H168a8,8,0,0,1,0-16h64A8,8,0,0,1,240,56Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M236,56v64a4,4,0,0,1-8,0V65.66l-89.17,89.17a4,4,0,0,1-5.66,0L96,117.66,26.83,186.83a4,4,0,0,1-5.66-5.66l72-72a4,4,0,0,1,5.66,0L136,146.34,222.34,60H168a4,4,0,0,1,0-8h64A4,4,0,0,1,236,56Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as o from \"react\";\nimport p from \"../lib/SSRBase.es.js\";\nimport r from \"../defs/UploadSimple.es.js\";\nconst e = o.forwardRef((a, m) => /* @__PURE__ */ o.createElement(p, { ref: m, ...a, weights: r }));\ne.displayName = \"UploadSimpleIcon\";\nconst l = e;\nexport {\n l as UploadSimple,\n e as UploadSimpleIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M228,144v64a12,12,0,0,1-12,12H40a12,12,0,0,1-12-12V144a12,12,0,0,1,24,0v52H204V144a12,12,0,0,1,24,0ZM96.49,80.49,116,61v83a12,12,0,0,0,24,0V61l19.51,19.52a12,12,0,1,0,17-17l-40-40a12,12,0,0,0-17,0l-40,40a12,12,0,1,0,17,17Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M216,48V208H40V48A16,16,0,0,1,56,32H200A16,16,0,0,1,216,48Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0ZM93.66,77.66,120,51.31V144a8,8,0,0,0,16,0V51.31l26.34,26.35a8,8,0,0,0,11.32-11.32l-40-40a8,8,0,0,0-11.32,0l-40,40A8,8,0,0,0,93.66,77.66Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0ZM88,80h32v64a8,8,0,0,0,16,0V80h32a8,8,0,0,0,5.66-13.66l-40-40a8,8,0,0,0-11.32,0l-40,40A8,8,0,0,0,88,80Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M222,144v64a6,6,0,0,1-6,6H40a6,6,0,0,1-6-6V144a6,6,0,0,1,12,0v58H210V144a6,6,0,0,1,12,0ZM92.24,76.24,122,46.49V144a6,6,0,0,0,12,0V46.49l29.76,29.75a6,6,0,0,0,8.48-8.48l-40-40a6,6,0,0,0-8.48,0l-40,40a6,6,0,0,0,8.48,8.48Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0ZM93.66,77.66,120,51.31V144a8,8,0,0,0,16,0V51.31l26.34,26.35a8,8,0,0,0,11.32-11.32l-40-40a8,8,0,0,0-11.32,0l-40,40A8,8,0,0,0,93.66,77.66Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M220,144v64a4,4,0,0,1-4,4H40a4,4,0,0,1-4-4V144a4,4,0,0,1,8,0v60H212V144a4,4,0,0,1,8,0ZM90.83,74.83,124,41.66V144a4,4,0,0,0,8,0V41.66l33.17,33.17a4,4,0,1,0,5.66-5.66l-40-40a4,4,0,0,0-5.66,0l-40,40a4,4,0,0,0,5.66,5.66Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as e from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport c from \"../defs/UserCircle.es.js\";\nconst r = e.forwardRef((o, s) => /* @__PURE__ */ e.createElement(t, { ref: s, ...o, weights: c }));\nr.displayName = \"UserCircleIcon\";\nconst m = r;\nexport {\n m as UserCircle,\n r as UserCircleIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20ZM79.57,196.57a60,60,0,0,1,96.86,0,83.72,83.72,0,0,1-96.86,0ZM100,120a28,28,0,1,1,28,28A28,28,0,0,1,100,120ZM194,179.94a83.48,83.48,0,0,0-29-23.42,52,52,0,1,0-74,0,83.48,83.48,0,0,0-29,23.42,84,84,0,1,1,131.9,0Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M224,128a95.76,95.76,0,0,1-31.8,71.37A72,72,0,0,0,128,160a40,40,0,1,0-40-40,40,40,0,0,0,40,40,72,72,0,0,0-64.2,39.37h0A96,96,0,1,1,224,128Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24ZM74.08,197.5a64,64,0,0,1,107.84,0,87.83,87.83,0,0,1-107.84,0ZM96,120a32,32,0,1,1,32,32A32,32,0,0,1,96,120Zm97.76,66.41a79.66,79.66,0,0,0-36.06-28.75,48,48,0,1,0-59.4,0,79.66,79.66,0,0,0-36.06,28.75,88,88,0,1,1,131.52,0Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M172,120a44,44,0,1,1-44-44A44.05,44.05,0,0,1,172,120Zm60,8A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88.09,88.09,0,0,0-91.47-87.93C77.43,41.89,39.87,81.12,40,128.25a87.65,87.65,0,0,0,22.24,58.16A79.71,79.71,0,0,1,84,165.1a4,4,0,0,1,4.83.32,59.83,59.83,0,0,0,78.28,0,4,4,0,0,1,4.83-.32,79.71,79.71,0,0,1,21.79,21.31A87.62,87.62,0,0,0,216,128Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26ZM71.44,198a66,66,0,0,1,113.12,0,89.8,89.8,0,0,1-113.12,0ZM94,120a34,34,0,1,1,34,34A34,34,0,0,1,94,120Zm99.51,69.64a77.53,77.53,0,0,0-40-31.38,46,46,0,1,0-51,0,77.53,77.53,0,0,0-40,31.38,90,90,0,1,1,131,0Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24ZM74.08,197.5a64,64,0,0,1,107.84,0,87.83,87.83,0,0,1-107.84,0ZM96,120a32,32,0,1,1,32,32A32,32,0,0,1,96,120Zm97.76,66.41a79.66,79.66,0,0,0-36.06-28.75,48,48,0,1,0-59.4,0,79.66,79.66,0,0,0-36.06,28.75,88,88,0,1,1,131.52,0Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28ZM68.87,198.42a68,68,0,0,1,118.26,0,91.8,91.8,0,0,1-118.26,0Zm124.3-5.55a75.61,75.61,0,0,0-44.51-34,44,44,0,1,0-41.32,0,75.61,75.61,0,0,0-44.51,34,92,92,0,1,1,130.34,0ZM128,156a36,36,0,1,1,36-36A36,36,0,0,1,128,156Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nimport t from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/Users.es.js\";\nconst r = e.forwardRef((s, o) => /* @__PURE__ */ e.createElement(t, { ref: o, ...s, weights: a }));\nr.displayName = \"UsersIcon\";\nconst f = r;\nexport {\n f as Users,\n r as UsersIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M125.18,156.94a64,64,0,1,0-82.36,0,100.23,100.23,0,0,0-39.49,32,12,12,0,0,0,19.35,14.2,76,76,0,0,1,122.64,0,12,12,0,0,0,19.36-14.2A100.33,100.33,0,0,0,125.18,156.94ZM44,108a40,40,0,1,1,40,40A40,40,0,0,1,44,108Zm206.1,97.67a12,12,0,0,1-16.78-2.57A76.31,76.31,0,0,0,172,172a12,12,0,0,1,0-24,40,40,0,1,0-10.3-78.67,12,12,0,1,1-6.16-23.19,64,64,0,0,1,57.64,110.8,100.23,100.23,0,0,1,39.49,32A12,12,0,0,1,250.1,205.67Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M136,108A52,52,0,1,1,84,56,52,52,0,0,1,136,108Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M117.25,157.92a60,60,0,1,0-66.5,0A95.83,95.83,0,0,0,3.53,195.63a8,8,0,1,0,13.4,8.74,80,80,0,0,1,134.14,0,8,8,0,0,0,13.4-8.74A95.83,95.83,0,0,0,117.25,157.92ZM40,108a44,44,0,1,1,44,44A44.05,44.05,0,0,1,40,108Zm210.14,98.7a8,8,0,0,1-11.07-2.33A79.83,79.83,0,0,0,172,168a8,8,0,0,1,0-16,44,44,0,1,0-16.34-84.87,8,8,0,1,1-5.94-14.85,60,60,0,0,1,55.53,105.64,95.83,95.83,0,0,1,47.22,37.71A8,8,0,0,1,250.14,206.7Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M164.47,195.63a8,8,0,0,1-6.7,12.37H10.23a8,8,0,0,1-6.7-12.37,95.83,95.83,0,0,1,47.22-37.71,60,60,0,1,1,66.5,0A95.83,95.83,0,0,1,164.47,195.63Zm87.91-.15a95.87,95.87,0,0,0-47.13-37.56A60,60,0,0,0,144.7,54.59a4,4,0,0,0-1.33,6A75.83,75.83,0,0,1,147,150.53a4,4,0,0,0,1.07,5.53,112.32,112.32,0,0,1,29.85,30.83,23.92,23.92,0,0,1,3.65,16.47,4,4,0,0,0,3.95,4.64h60.3a8,8,0,0,0,7.73-5.93A8.22,8.22,0,0,0,252.38,195.48Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M112.6,158.43a58,58,0,1,0-57.2,0A93.83,93.83,0,0,0,5.21,196.72a6,6,0,0,0,10.05,6.56,82,82,0,0,1,137.48,0,6,6,0,0,0,10-6.56A93.83,93.83,0,0,0,112.6,158.43ZM38,108a46,46,0,1,1,46,46A46.06,46.06,0,0,1,38,108Zm211,97a6,6,0,0,1-8.3-1.74A81.8,81.8,0,0,0,172,166a6,6,0,0,1,0-12,46,46,0,1,0-17.08-88.73,6,6,0,1,1-4.46-11.14,58,58,0,0,1,50.14,104.3,93.83,93.83,0,0,1,50.19,38.29A6,6,0,0,1,249,205Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M117.25,157.92a60,60,0,1,0-66.5,0A95.83,95.83,0,0,0,3.53,195.63a8,8,0,1,0,13.4,8.74,80,80,0,0,1,134.14,0,8,8,0,0,0,13.4-8.74A95.83,95.83,0,0,0,117.25,157.92ZM40,108a44,44,0,1,1,44,44A44.05,44.05,0,0,1,40,108Zm210.14,98.7a8,8,0,0,1-11.07-2.33A79.83,79.83,0,0,0,172,168a8,8,0,0,1,0-16,44,44,0,1,0-16.34-84.87,8,8,0,1,1-5.94-14.85,60,60,0,0,1,55.53,105.64,95.83,95.83,0,0,1,47.22,37.71A8,8,0,0,1,250.14,206.7Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M107.19,159a56,56,0,1,0-46.38,0A91.83,91.83,0,0,0,6.88,197.81a4,4,0,1,0,6.7,4.37,84,84,0,0,1,140.84,0,4,4,0,1,0,6.7-4.37A91.83,91.83,0,0,0,107.19,159ZM36,108a48,48,0,1,1,48,48A48.05,48.05,0,0,1,36,108Zm212,95.35a4,4,0,0,1-5.53-1.17A83.81,83.81,0,0,0,172,164a4,4,0,0,1,0-8,48,48,0,1,0-17.82-92.58,4,4,0,1,1-3-7.43,56,56,0,0,1,44,103,91.83,91.83,0,0,1,53.93,38.86A4,4,0,0,1,248,203.35Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as r from \"react\";\nimport i from \"../lib/SSRBase.es.js\";\nimport n from \"../defs/WarningCircle.es.js\";\nconst e = r.forwardRef((o, a) => /* @__PURE__ */ r.createElement(i, { ref: a, ...o, weights: n }));\ne.displayName = \"WarningCircleIcon\";\nconst m = e;\nexport {\n m as WarningCircle,\n e as WarningCircleIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Zm-12-80V80a12,12,0,0,1,24,0v52a12,12,0,0,1-24,0Zm28,40a16,16,0,1,1-16-16A16,16,0,0,1,144,172Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm-8-80V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,172Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-8,56a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm8,104a12,12,0,1,1,12-12A12,12,0,0,1,128,184Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm0,192a90,90,0,1,1,90-90A90.1,90.1,0,0,1,128,218Zm-6-82V80a6,6,0,0,1,12,0v56a6,6,0,0,1-12,0Zm16,36a10,10,0,1,1-10-10A10,10,0,0,1,138,172Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm-8-80V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,172Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,192a92,92,0,1,1,92-92A92.1,92.1,0,0,1,128,220Zm-4-84V80a4,4,0,0,1,8,0v56a4,4,0,0,1-8,0Zm12,36a8,8,0,1,1-8-8A8,8,0,0,1,136,172Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nimport c from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/Wrench.es.js\";\nconst r = e.forwardRef((o, t) => /* @__PURE__ */ e.createElement(c, { ref: t, ...o, weights: a }));\nr.displayName = \"WrenchIcon\";\nconst s = r;\nexport {\n s as Wrench,\n r as WrenchIcon\n};\n","import * as a from \"react\";\nconst e = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M230.47,67.5a12,12,0,0,0-19.26-4.32L172.43,99l-12.68-2.72L157,83.57l35.79-38.78a12,12,0,0,0-4.32-19.26A76.07,76.07,0,0,0,88.41,121.64L30.92,174.18a4.68,4.68,0,0,0-.39.38,36,36,0,0,0,50.91,50.91l.38-.39,52.54-57.49A76.05,76.05,0,0,0,230.47,67.5ZM160,148a51.5,51.5,0,0,1-23.35-5.52,12,12,0,0,0-14.26,2.62L64.31,208.66a12,12,0,0,1-17-17l63.55-58.07a12,12,0,0,0,2.62-14.26A51.5,51.5,0,0,1,108,96a52.06,52.06,0,0,1,52-52h.89L135.17,71.87a12,12,0,0,0-2.91,10.65l5.66,26.35a12,12,0,0,0,9.21,9.21l26.35,5.66a12,12,0,0,0,10.65-2.91L212,95.12c0,.3,0,.59,0,.89A52.06,52.06,0,0,1,160,148Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\n \"path\",\n {\n d: \"M224,96a64,64,0,0,1-94.94,56L73,217A24,24,0,0,1,39,183L104,126.94a64,64,0,0,1,80-90.29L144,80l5.66,26.34L176,112l43.35-40A63.8,63.8,0,0,1,224,96Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ a.createElement(\"path\", { d: \"M226.76,69a8,8,0,0,0-12.84-2.88l-40.3,37.19-17.23-3.7-3.7-17.23,37.19-40.3A8,8,0,0,0,187,29.24,72,72,0,0,0,88,96,72.34,72.34,0,0,0,94,124.94L33.79,177c-.15.12-.29.26-.43.39a32,32,0,0,0,45.26,45.26c.13-.13.27-.28.39-.42L131.06,162A72,72,0,0,0,232,96,71.56,71.56,0,0,0,226.76,69ZM160,152a56.14,56.14,0,0,1-27.07-7,8,8,0,0,0-9.92,1.77L67.11,211.51a16,16,0,0,1-22.62-22.62L109.18,133a8,8,0,0,0,1.77-9.93,56,56,0,0,1,58.36-82.31l-31.2,33.81a8,8,0,0,0-1.94,7.1L141.83,108a8,8,0,0,0,6.14,6.14l26.35,5.66a8,8,0,0,0,7.1-1.94l33.81-31.2A56.06,56.06,0,0,1,160,152Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M232,96a72,72,0,0,1-100.94,66L79,222.22c-.12.14-.26.29-.39.42a32,32,0,0,1-45.26-45.26c.14-.13.28-.27.43-.39L94,124.94a72.07,72.07,0,0,1,83.54-98.78,8,8,0,0,1,3.93,13.19L144,80l5.66,26.35L176,112l40.65-37.52a8,8,0,0,1,13.19,3.93A72.6,72.6,0,0,1,232,96Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M224.91,69.75a6,6,0,0,0-9.63-2.16l-41.07,37.9L154.7,101.3l-4.19-19.51,37.9-41.07a6,6,0,0,0-2.16-9.63,70,70,0,0,0-89.77,94.39l-61.39,53c-.11.09-.21.19-.32.3A30,30,0,0,0,77.2,221.23c.11-.11.21-.21.3-.32l53-61.39a70,70,0,0,0,94.39-89.77ZM160,154a58,58,0,0,1-28-7.22,6,6,0,0,0-7.45,1.33L68.57,212.88a18,18,0,0,1-25.45-25.45l64.76-55.94A6,6,0,0,0,109.2,124a58,58,0,0,1,64-84.53L139.58,75.93a6,6,0,0,0-1.45,5.33l5.65,26.35a6,6,0,0,0,4.61,4.61l26.35,5.65a6,6,0,0,0,5.33-1.45L216.49,82.8A58.06,58.06,0,0,1,160,154Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M226.76,69a8,8,0,0,0-12.84-2.88l-40.3,37.19-17.23-3.7-3.7-17.23,37.19-40.3A8,8,0,0,0,187,29.24,72,72,0,0,0,88,96,72.34,72.34,0,0,0,94,124.94L33.79,177c-.15.12-.29.26-.43.39a32,32,0,0,0,45.26,45.26c.13-.13.27-.28.39-.42L131.06,162A72,72,0,0,0,232,96,71.56,71.56,0,0,0,226.76,69ZM160,152a56.14,56.14,0,0,1-27.07-7,8,8,0,0,0-9.92,1.77L67.11,211.51a16,16,0,0,1-22.62-22.62L109.18,133a8,8,0,0,0,1.77-9.93,56,56,0,0,1,58.36-82.31l-31.2,33.81a8,8,0,0,0-1.94,7.1L141.83,108a8,8,0,0,0,6.14,6.14l26.35,5.66a8,8,0,0,0,7.1-1.94l33.81-31.2A56.06,56.06,0,0,1,160,152Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ a.createElement(a.Fragment, null, /* @__PURE__ */ a.createElement(\"path\", { d: \"M223.05,70.5a4,4,0,0,0-6.42-1.44l-41.82,38.6L153,103l-4.68-21.79,38.6-41.82a4,4,0,0,0-1.44-6.43A68,68,0,0,0,98.94,126L36.4,180l-.21.2a28,28,0,0,0,39.6,39.6l.2-.21,54-62.54A68,68,0,0,0,228,96,67.51,67.51,0,0,0,223.05,70.5ZM160,156a60,60,0,0,1-29-7.47,4,4,0,0,0-5,.89L70,214.25A20,20,0,0,1,41.75,186l64.82-56a4,4,0,0,0,.89-5,60,60,0,0,1,69.46-86.59L141.05,77.29a4,4,0,0,0-1,3.55l5.66,26.35a4,4,0,0,0,3.07,3.07l26.35,5.66a4,4,0,0,0,3.55-1l38.87-35.87A60.05,60.05,0,0,1,160,156Z\" }))\n ]\n]);\nexport {\n e as default\n};\n","import * as o from \"react\";\nimport a from \"../lib/SSRBase.es.js\";\nimport m from \"../defs/X.es.js\";\nconst e = o.forwardRef((r, t) => /* @__PURE__ */ o.createElement(a, { ref: t, ...r, weights: m }));\ne.displayName = \"XIcon\";\nconst f = e;\nexport {\n f as X,\n e as XIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208.49,191.51a12,12,0,0,1-17,17L128,145,64.49,208.49a12,12,0,0,1-17-17L111,128,47.51,64.49a12,12,0,0,1,17-17L128,111l63.51-63.52a12,12,0,0,1,17,17L145,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\n \"path\",\n {\n d: \"M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z\",\n opacity: \"0.2\"\n }\n ), /* @__PURE__ */ e.createElement(\"path\", { d: \"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM181.66,170.34a8,8,0,0,1-11.32,11.32L128,139.31,85.66,181.66a8,8,0,0,1-11.32-11.32L116.69,128,74.34,85.66A8,8,0,0,1,85.66,74.34L128,116.69l42.34-42.35a8,8,0,0,1,11.32,11.32L139.31,128Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M204.24,195.76a6,6,0,1,1-8.48,8.48L128,136.49,60.24,204.24a6,6,0,0,1-8.48-8.48L119.51,128,51.76,60.24a6,6,0,0,1,8.48-8.48L128,119.51l67.76-67.75a6,6,0,0,1,8.48,8.48L136.49,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M202.83,197.17a4,4,0,0,1-5.66,5.66L128,133.66,58.83,202.83a4,4,0,0,1-5.66-5.66L122.34,128,53.17,58.83a4,4,0,0,1,5.66-5.66L128,122.34l69.17-69.17a4,4,0,1,1,5.66,5.66L133.66,128Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import * as e from \"react\";\nimport c from \"../lib/SSRBase.es.js\";\nimport a from \"../defs/XCircle.es.js\";\nconst r = e.forwardRef((o, t) => /* @__PURE__ */ e.createElement(c, { ref: t, ...o, weights: a }));\nr.displayName = \"XCircleIcon\";\nconst s = r;\nexport {\n s as XCircle,\n r as XCircleIcon\n};\n","import * as e from \"react\";\nconst a = /* @__PURE__ */ new Map([\n [\n \"bold\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M168.49,104.49,145,128l23.52,23.51a12,12,0,0,1-17,17L128,145l-23.51,23.52a12,12,0,0,1-17-17L111,128,87.51,104.49a12,12,0,0,1,17-17L128,111l23.51-23.52a12,12,0,0,1,17,17ZM236,128A108,108,0,1,1,128,20,108.12,108.12,0,0,1,236,128Zm-24,0a84,84,0,1,0-84,84A84.09,84.09,0,0,0,212,128Z\" }))\n ],\n [\n \"duotone\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z\", opacity: \"0.2\" }), /* @__PURE__ */ e.createElement(\"path\", { d: \"M165.66,101.66,139.31,128l26.35,26.34a8,8,0,0,1-11.32,11.32L128,139.31l-26.34,26.35a8,8,0,0,1-11.32-11.32L116.69,128,90.34,101.66a8,8,0,0,1,11.32-11.32L128,116.69l26.34-26.35a8,8,0,0,1,11.32,11.32ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z\" }))\n ],\n [\n \"fill\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm37.66,130.34a8,8,0,0,1-11.32,11.32L128,139.31l-26.34,26.35a8,8,0,0,1-11.32-11.32L116.69,128,90.34,101.66a8,8,0,0,1,11.32-11.32L128,116.69l26.34-26.35a8,8,0,0,1,11.32,11.32L139.31,128Z\" }))\n ],\n [\n \"light\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M164.24,100.24,136.48,128l27.76,27.76a6,6,0,1,1-8.48,8.48L128,136.48l-27.76,27.76a6,6,0,0,1-8.48-8.48L119.52,128,91.76,100.24a6,6,0,0,1,8.48-8.48L128,119.52l27.76-27.76a6,6,0,0,1,8.48,8.48ZM230,128A102,102,0,1,1,128,26,102.12,102.12,0,0,1,230,128Zm-12,0a90,90,0,1,0-90,90A90.1,90.1,0,0,0,218,128Z\" }))\n ],\n [\n \"regular\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M165.66,101.66,139.31,128l26.35,26.34a8,8,0,0,1-11.32,11.32L128,139.31l-26.34,26.35a8,8,0,0,1-11.32-11.32L116.69,128,90.34,101.66a8,8,0,0,1,11.32-11.32L128,116.69l26.34-26.35a8,8,0,0,1,11.32,11.32ZM232,128A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88,88,0,1,0-88,88A88.1,88.1,0,0,0,216,128Z\" }))\n ],\n [\n \"thin\",\n /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(\"path\", { d: \"M162.83,98.83,133.66,128l29.17,29.17a4,4,0,0,1-5.66,5.66L128,133.66,98.83,162.83a4,4,0,0,1-5.66-5.66L122.34,128,93.17,98.83a4,4,0,0,1,5.66-5.66L128,122.34l29.17-29.17a4,4,0,1,1,5.66,5.66ZM228,128A100,100,0,1,1,128,28,100.11,100.11,0,0,1,228,128Zm-8,0a92,92,0,1,0-92,92A92.1,92.1,0,0,0,220,128Z\" }))\n ]\n]);\nexport {\n a as default\n};\n","import type { Icon, IconProps, IconWeight } from \"@phosphor-icons/react\";\nimport {\n AlarmIcon,\n ArchiveIcon,\n ArrowBendUpLeftIcon,\n ArrowDownIcon,\n ArrowUpIcon,\n ArrowsClockwiseIcon,\n ArrowSquareOutIcon,\n ArrowsInIcon,\n ArrowsOutIcon,\n BookOpenTextIcon,\n BugIcon,\n BuildingsIcon,\n CopyIcon,\n CalendarBlankIcon,\n CaretDownIcon,\n CaretLeftIcon,\n CaretRightIcon,\n CellSignalHighIcon,\n CellSignalLowIcon,\n CellSignalMediumIcon,\n ChatCircleDotsIcon,\n ChatsCircleIcon,\n CheckIcon,\n CheckCircleIcon,\n CircleDashedIcon,\n CircleHalfIcon,\n CircleIcon,\n ClockIcon,\n ClockCounterClockwiseIcon,\n CodeIcon,\n CodeBlockIcon,\n CreditCardIcon,\n DeviceMobileIcon,\n DotsThreeIcon,\n EnvelopeSimpleIcon,\n FileIcon,\n FolderIcon,\n FolderOpenIcon,\n FolderPlusIcon,\n FunnelIcon,\n GitCommitIcon,\n GlobeSimpleIcon,\n ImageSquareIcon,\n KeyIcon,\n LightbulbIcon,\n LinkSimpleIcon,\n ListBulletsIcon,\n ListChecksIcon,\n ListNumbersIcon,\n LockSimpleIcon,\n MagicWandIcon,\n MagnifyingGlassIcon,\n MapPinIcon,\n MegaphoneIcon,\n MonitorIcon,\n MoonIcon,\n NoteIcon,\n NotionLogoIcon,\n PaperclipIcon,\n PaperPlaneRightIcon,\n PencilSimpleIcon,\n PlayIcon,\n PlugsConnectedIcon,\n PlusIcon,\n QuotesIcon,\n ShieldWarningIcon,\n SidebarSimpleIcon,\n SignOutIcon,\n SlidersHorizontalIcon,\n SparkleIcon,\n SquareIcon,\n StarIcon,\n SunIcon,\n TableIcon,\n TagIcon,\n TextBIcon,\n TextItalicIcon,\n TextStrikethroughIcon,\n TrashIcon,\n TrendUpIcon,\n UploadSimpleIcon,\n UserCircleIcon,\n UsersIcon,\n WarningCircleIcon,\n WrenchIcon,\n XCircleIcon,\n XIcon,\n} from \"@phosphor-icons/react/dist/ssr\";\n\n/**\n * Icons are the filled weight in this app.\n *\n * Phosphor sets weight per icon and the SSR entry does not read IconContext,\n * so the rule is applied here once instead of at every call site. Import from\n * this file rather than from @phosphor-icons/react directly.\n *\n * Props spread after the weight, so a caller can still override it.\n */\nfunction icon(Base: Icon, name: string, weight: IconWeight = \"fill\") {\n function Wrapped(props: IconProps) {\n return <Base weight={weight} {...props} />;\n }\n Wrapped.displayName = `${name}Icon`;\n return Wrapped;\n}\n\nexport const Alarm = icon(AlarmIcon, \"Alarm\");\nexport const Archive = icon(ArchiveIcon, \"Archive\");\nexport const BookOpenText = icon(BookOpenTextIcon, \"BookOpenText\");\nexport const Bug = icon(BugIcon, \"Bug\");\nexport const Buildings = icon(BuildingsIcon, \"Buildings\");\nexport const CalendarBlank = icon(CalendarBlankIcon, \"CalendarBlank\");\nexport const ChatCircleDots = icon(ChatCircleDotsIcon, \"ChatCircleDots\");\nexport const ChatsCircle = icon(ChatsCircleIcon, \"ChatsCircle\");\nexport const CellSignalHigh = icon(CellSignalHighIcon, \"CellSignalHigh\");\nexport const CellSignalLow = icon(CellSignalLowIcon, \"CellSignalLow\");\nexport const CellSignalMedium = icon(CellSignalMediumIcon, \"CellSignalMedium\");\nexport const CheckCircle = icon(CheckCircleIcon, \"CheckCircle\");\n// Half a body by design; the fill weight is the half that shows.\nexport const CircleHalf = icon(CircleHalfIcon, \"CircleHalf\");\nexport const Clock = icon(ClockIcon, \"Clock\");\nexport const ClockCounterClockwise = icon(\n ClockCounterClockwiseIcon,\n \"ClockCounterClockwise\",\n);\nexport const CodeBlock = icon(CodeBlockIcon, \"CodeBlock\");\nexport const Copy = icon(CopyIcon, \"Copy\");\nexport const CreditCard = icon(CreditCardIcon, \"CreditCard\");\nexport const DeviceMobile = icon(DeviceMobileIcon, \"DeviceMobile\");\nexport const EnvelopeSimple = icon(EnvelopeSimpleIcon, \"EnvelopeSimple\");\nexport const File = icon(FileIcon, \"File\");\nexport const Folder = icon(FolderIcon, \"Folder\");\nexport const FolderOpen = icon(FolderOpenIcon, \"FolderOpen\");\nexport const FolderPlus = icon(FolderPlusIcon, \"FolderPlus\");\nexport const Funnel = icon(FunnelIcon, \"Funnel\");\nexport const GlobeSimple = icon(GlobeSimpleIcon, \"GlobeSimple\");\n// Linear has no logo in this set, and a board is what the integration is\n// about anyway.\nexport const ImageSquare = icon(ImageSquareIcon, \"ImageSquare\");\nexport const Key = icon(KeyIcon, \"Key\");\nexport const Lightbulb = icon(LightbulbIcon, \"Lightbulb\");\nexport const LockSimple = icon(LockSimpleIcon, \"LockSimple\");\nexport const MagicWand = icon(MagicWandIcon, \"MagicWand\");\nexport const MapPin = icon(MapPinIcon, \"MapPin\");\nexport const Megaphone = icon(MegaphoneIcon, \"Megaphone\");\nexport const Monitor = icon(MonitorIcon, \"Monitor\");\nexport const Moon = icon(MoonIcon, \"Moon\");\nexport const Note = icon(NoteIcon, \"Note\");\nexport const NotionLogo = icon(NotionLogoIcon, \"NotionLogo\");\nexport const Paperclip = icon(PaperclipIcon, \"Paperclip\");\nexport const PaperPlaneRight = icon(PaperPlaneRightIcon, \"PaperPlaneRight\");\nexport const PencilSimple = icon(PencilSimpleIcon, \"PencilSimple\");\nexport const Play = icon(PlayIcon, \"Play\");\nexport const PlugsConnected = icon(PlugsConnectedIcon, \"PlugsConnected\");\nexport const Quotes = icon(QuotesIcon, \"Quotes\");\nexport const Reply = icon(ArrowBendUpLeftIcon, \"Reply\");\nexport const ShieldWarning = icon(ShieldWarningIcon, \"ShieldWarning\");\nexport const SidebarSimple = icon(SidebarSimpleIcon, \"SidebarSimple\");\nexport const SignOut = icon(SignOutIcon, \"SignOut\");\nexport const SlidersHorizontal = icon(\n SlidersHorizontalIcon,\n \"SlidersHorizontal\",\n);\nexport const Sparkle = icon(SparkleIcon, \"Sparkle\");\n// The stop button's own glyph. Filled, because a stop is a solid block and\n// an outline of one reads as a checkbox.\nexport const Square = icon(SquareIcon, \"Square\");\n// Filled either way: an empty star is this one wearing a quieter colour, so\n// the row cannot change shape as it fills.\nexport const Star = icon(StarIcon, \"Star\");\nexport const Sun = icon(SunIcon, \"Sun\");\nexport const Table = icon(TableIcon, \"Table\");\nexport const Tag = icon(TagIcon, \"Tag\");\nexport const Trash = icon(TrashIcon, \"Trash\");\nexport const TrendUp = icon(TrendUpIcon, \"TrendUp\");\nexport const UserCircle = icon(UserCircleIcon, \"UserCircle\");\nexport const Users = icon(UsersIcon, \"Users\");\nexport const WarningCircle = icon(WarningCircleIcon, \"WarningCircle\");\nexport const Wrench = icon(WrenchIcon, \"Wrench\");\nexport const XCircle = icon(XCircleIcon, \"XCircle\");\n\n// Exceptions. These are line glyphs with nothing to fill in, so Phosphor's\n// fill weight gives them a shape instead of a body: Check becomes a filled\n// box, the carets become solid triangles, the magnifier becomes a solid disc,\n// the three dots swell into blobs, and the arrow turns into a slab. Bold is\n// the heavier version of the same icon, which is what fill is meant to look\n// like here.\nexport const ArrowDown = icon(ArrowDownIcon, \"ArrowDown\", \"bold\");\nexport const ArrowUp = icon(ArrowUpIcon, \"ArrowUp\", \"bold\");\nexport const ArrowsClockwise = icon(\n ArrowsClockwiseIcon,\n \"ArrowsClockwise\",\n \"bold\",\n);\nexport const ArrowSquareOut = icon(ArrowSquareOutIcon, \"ArrowSquareOut\", \"bold\");\nexport const ArrowsIn = icon(ArrowsInIcon, \"ArrowsIn\", \"bold\");\nexport const ArrowsOut = icon(ArrowsOutIcon, \"ArrowsOut\", \"bold\");\nexport const CaretDown = icon(CaretDownIcon, \"CaretDown\", \"bold\");\nexport const CaretLeft = icon(CaretLeftIcon, \"CaretLeft\", \"bold\");\nexport const CaretRight = icon(CaretRightIcon, \"CaretRight\", \"bold\");\n// Rings, not discs: filling them leaves a dot where a status should be.\nexport const Circle = icon(CircleIcon, \"Circle\", \"bold\");\nexport const CircleDashed = icon(CircleDashedIcon, \"CircleDashed\", \"bold\");\nexport const Check = icon(CheckIcon, \"Check\", \"bold\");\n// A line drawing of a node on a line, like the carets: filling it makes a\n// blob rather than a heavier commit.\nexport const GitCommit = icon(GitCommitIcon, \"GitCommit\", \"bold\");\nexport const DotsThree = icon(DotsThreeIcon, \"DotsThree\", \"bold\");\nexport const X = icon(XIcon, \"X\", \"bold\");\nexport const Plus = icon(PlusIcon, \"Plus\", \"bold\");\nexport const UploadSimple = icon(UploadSimpleIcon, \"UploadSimple\", \"bold\");\nexport const MagnifyingGlass = icon(\n MagnifyingGlassIcon,\n \"MagnifyingGlass\",\n \"bold\",\n);\n\n// The editor toolbar's glyphs live here too: letterforms, list markers, and\n// brackets are all line drawings, so they take the bold weight for the same\n// reason the carets do. CodeBlock and Quotes are up in the filled group,\n// having actual bodies to fill.\nexport const Code = icon(CodeIcon, \"Code\", \"bold\");\nexport const LinkSimple = icon(LinkSimpleIcon, \"LinkSimple\", \"bold\");\nexport const ListBullets = icon(ListBulletsIcon, \"ListBullets\", \"bold\");\nexport const ListChecks = icon(ListChecksIcon, \"ListChecks\", \"bold\");\nexport const ListNumbers = icon(ListNumbersIcon, \"ListNumbers\", \"bold\");\nexport const TextB = icon(TextBIcon, \"TextB\", \"bold\");\nexport const TextItalic = icon(TextItalicIcon, \"TextItalic\", \"bold\");\nexport const TextStrikethrough = icon(\n TextStrikethroughIcon,\n \"TextStrikethrough\",\n \"bold\",\n);\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","/**\n * Where the widget lives, and everything that follows from it.\n *\n * A side and a height. The button snaps to the left or the right edge, because\n * an edge is where a thing parked on somebody's page belongs, and keeps\n * whatever height it was let go at, because that is the half nobody can guess\n * for them: the button is in the way of a cart, a banner or a footer, and only\n * the person looking at it knows which.\n *\n * The height is kept as a fraction of the travel rather than a number of\n * pixels, so a window that changes size moves it proportionally instead of\n * stranding it off the bottom.\n */\n\nexport type LauncherSide = \"left\" | \"right\";\n\n/** `y` runs 0 at the top of its travel to 1 at the bottom. */\nexport type LauncherSpot = { side: LauncherSide; y: number };\n\nexport const DEFAULT_SPOT: LauncherSpot = { side: \"right\", y: 1 };\n\nexport type Bounds = { left: number; top: number; width: number; height: number };\nexport type Size = { width: number; height: number };\n\nfunction clamp(value: number, low: number, high: number): number {\n return Math.min(Math.max(value, low), Math.max(low, high));\n}\n\n/** How far the button can travel between the top margin and the bottom one. */\nexport function travelOf(bounds: Bounds, button: Size, margin: number): number {\n return Math.max(0, bounds.height - 2 * margin - button.height);\n}\n\n/** The spot a button that landed here belongs to. */\nexport function spotFrom(\n at: { x: number; y: number },\n bounds: Bounds,\n button: Size,\n margin: number,\n): LauncherSpot {\n const travel = travelOf(bounds, button, margin);\n\n return {\n side:\n at.x + button.width / 2 < bounds.left + bounds.width / 2\n ? \"left\"\n : \"right\",\n y: travel === 0 ? 0 : clamp((at.y - bounds.top - margin) / travel, 0, 1),\n };\n}\n\n/**\n * The spot a panel dropped here belongs to.\n *\n * The other way round from the one above: an open panel is dragged by its own\n * header, so what landed somewhere is the box, not the button. The box hangs\n * upward from the button, so the button is at the box's bottom edge, and that\n * is the height the spot is a fraction of.\n *\n * The two do not cover the same range, and should not. A panel dragged to the\n * top of a short window still leaves its button at the panel's bottom edge,\n * which is exactly where the bubble should be waiting when it closes.\n */\nexport function spotFromPanel(\n at: { x: number; y: number },\n bounds: Bounds,\n button: Size,\n box: Size,\n margin: number,\n): LauncherSpot {\n const travel = travelOf(bounds, button, margin);\n const buttonY = at.y + box.height - button.height;\n\n return {\n side:\n at.x + box.width / 2 < bounds.left + bounds.width / 2 ? \"left\" : \"right\",\n y: travel === 0 ? 0 : clamp((buttonY - bounds.top - margin) / travel, 0, 1),\n };\n}\n\n/**\n * Everything the widget is positioned by, worked out from a spot.\n *\n * The box is panel sized and hangs upward from the button, which is where it\n * hung when this was a corner. Clamped so it never leaves the space it is in:\n * a button near the top drags the panel down below it instead, and the button\n * simply sits further up inside the same box.\n */\nexport function metricsFor(\n spot: LauncherSpot,\n bounds: Bounds,\n button: Size,\n boxHeight: number,\n margin: number,\n): { buttonY: number; boxTop: number; buttonInBox: number } {\n const buttonY = bounds.top + margin + spot.y * travelOf(bounds, button, margin);\n\n const highest = bounds.top + margin;\n const lowest = bounds.top + bounds.height - margin - boxHeight;\n const boxTop = clamp(buttonY + button.height - boxHeight, highest, lowest);\n\n return { buttonY, boxTop, buttonInBox: buttonY - boxTop };\n}\n\n/**\n * The closed shape: a circle the size of the button, at the button's own\n * height on the side it is parked against.\n *\n * `buttonY` is handed in as a CSS length rather than a number, so the same\n * function writes the resting shape from a variable the layout has filled in\n * and the fallback shape from a plain calc.\n */\nexport function closedClip(\n side: LauncherSide,\n buttonY: string,\n buttonSize: string,\n): string {\n const far = `calc(100% - ${buttonSize})`;\n\n return [\n `inset(${buttonY}`,\n side === \"left\" ? far : \"0px\",\n `calc(100% - ${buttonY} - ${buttonSize})`,\n side === \"left\" ? \"0px\" : far,\n `round calc(${buttonSize} / 2))`,\n ].join(\" \");\n}\n\n/** The point the scale grows from, so the circle stays under the button. */\nexport function clipOrigin(\n side: LauncherSide,\n buttonY: string,\n buttonSize: string,\n): string {\n return `${side === \"left\" ? \"0%\" : \"100%\"} calc(${buttonY} + ${buttonSize} / 2)`;\n}\n\n/**\n * Where this browser last left it.\n *\n * A small store rather than a bare read, the same shape `session.ts` uses and\n * for the same two reasons. The server cannot know, so it renders the default\n * and the store hands the real answer over on the client without a mismatched\n * attribute in between; and a snapshot has to be stable across calls, which is\n * what the cache is for.\n */\nconst STORAGE_KEY = \"median:launcher-spot\";\n\nconst listeners = new Set<() => void>();\nlet current: LauncherSpot | null = null;\n\nexport function subscribeSpot(listener: () => void) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n}\n\nexport function getSpot(): LauncherSpot {\n if (current !== null) return current;\n\n current = DEFAULT_SPOT;\n try {\n const stored = window.localStorage.getItem(STORAGE_KEY);\n const parsed: unknown = stored === null ? null : JSON.parse(stored);\n if (\n typeof parsed === \"object\" &&\n parsed !== null &&\n \"side\" in parsed &&\n \"y\" in parsed\n ) {\n const { side, y } = parsed as { side: unknown; y: unknown };\n if ((side === \"left\" || side === \"right\") && typeof y === \"number\") {\n current = { side, y: clamp(y, 0, 1) };\n }\n }\n } catch {\n // Blocked storage, or something else's key with our name on it. Either\n // way the default is a perfectly good place for a support button.\n }\n return current;\n}\n\nexport function getDefaultSpot(): LauncherSpot {\n return DEFAULT_SPOT;\n}\n\nexport function setSpot(spot: LauncherSpot): void {\n current = spot;\n\n try {\n window.localStorage.setItem(STORAGE_KEY, JSON.stringify(spot));\n } catch {\n // It stays where they put it until the page goes away, which is the same\n // deal the session token gets.\n }\n\n for (const listener of listeners) listener();\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n MessageScroller as MessageScrollerPrimitive,\n useMessageScroller,\n useMessageScrollerScrollable,\n useMessageScrollerVisibility,\n} from \"@shadcn/react/message-scroller\";\n\n// Phosphor instead of the registry default, per the project icon rule.\nimport { ArrowDown } from \"@/components/icons\";\nimport { Button } from \"@/components/ui/button\";\nimport { useIsResizing } from \"@/hooks/use-is-resizing\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * From the shadcn registry (@shadcn/message-scroller, radix-nova style), with\n * two changes: the icon comes from our own set, and the registry's\n * `scrollbar-*` and `inset-s-*` utilities are written as plain properties,\n * since neither the scrollbar plugin nor logical inset utilities are here.\n *\n * `scrollbar-width` is said here as well as on the app's own `html`, and the\n * repetition is the point: this is the one scroller that also runs inside the\n * widget on somebody else's page, where there is no `html` of ours to inherit\n * from and a thread would otherwise wear whatever their site wears.\n */\n\nfunction MessageScrollerProvider({\n autoScroll = true,\n ...props\n}: React.ComponentProps<typeof MessageScrollerPrimitive.Provider>) {\n // Every thread here is a chat, so the chat behavior is the default: stay\n // pinned to the newest message while at the bottom, stay put while reading\n // older ones, and let the button offer the way back down. The primitive's\n // own default (off, with per-item scroll anchors) is built for pin-the-\n // question streaming UIs and yanks the viewport around in a live thread.\n return <MessageScrollerPrimitive.Provider autoScroll={autoScroll} {...props} />;\n}\n\nfunction MessageScroller({\n className,\n ...props\n}: React.ComponentProps<typeof MessageScrollerPrimitive.Root>) {\n return (\n <MessageScrollerPrimitive.Root\n data-slot=\"message-scroller\"\n className={cn(\n \"group/message-scroller relative flex size-full min-h-0 flex-col overflow-hidden\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/** Within this of the foot of the thread counts as being at it. */\nconst AT_END_PX = 8;\n/** Less than a pixel adrift is not worth correcting. */\nconst DRIFT_PX = 1;\n\n/**\n * Holds the newest message against the foot of the viewport while the viewport\n * is changing size.\n *\n * The scroller already does this, one frame late. Both of its resize observers\n * hand their work to `requestAnimationFrame`, so every frame of a resize is\n * painted with the scroll position the frame before it asked for.\n *\n * Growing hides that. A viewport that gets taller leaves its scroll offset out\n * of range, and the browser has to pull it back in as part of the same layout,\n * which lands the thread exactly where the late correction was going to put it\n * anyway. Shrinking has nothing doing that: the offset stays valid, the foot of\n * the viewport comes down past the thread, and the newest message drops a dozen\n * pixels behind and is dragged back a frame later. Every frame. That is the\n * shiver, and it is why only shrinking has it, and why it is worst on a panel\n * parked at the bottom, where the whole of the change comes off the top.\n *\n * So the same correction is made here first, in the observer itself, which is\n * before the frame is painted rather than after.\n */\nfunction usePinnedToEnd(viewport: React.RefObject<HTMLDivElement | null>) {\n React.useEffect(() => {\n const node = viewport.current;\n if (!node || typeof ResizeObserver === \"undefined\") return;\n\n // Whether the thread was against the foot of the viewport, written down as\n // it happens: by the time a resize is reported the new size is already on\n // and the answer to that has changed.\n let wasAtEnd = true;\n const remember = () => {\n wasAtEnd =\n node.scrollHeight - node.scrollTop - node.clientHeight <= AT_END_PX;\n };\n\n const observer = new ResizeObserver(() => {\n const drift = node.scrollHeight - node.scrollTop - node.clientHeight;\n\n // Only ever catching up, never restating. A viewport that grew has had\n // its offset put back in range by the browser already, to a precision\n // this cannot match: `scrollHeight` and `clientHeight` are whole pixels\n // and the box between them is not, so saying it again would replace an\n // exact answer with one up to a pixel out, differently on every frame.\n if (wasAtEnd && drift > DRIFT_PX) {\n // Not `auto`, which would take the smooth scrolling below and ease a\n // correction that is meant to be invisible.\n node.scrollTo({\n top: node.scrollHeight - node.clientHeight,\n behavior: \"instant\",\n });\n }\n\n remember();\n });\n\n node.addEventListener(\"scroll\", remember, { passive: true });\n observer.observe(node);\n return () => {\n node.removeEventListener(\"scroll\", remember);\n observer.disconnect();\n };\n }, [viewport]);\n}\n\n/**\n * True from the frame after the viewport mounts, which is a frame after the\n * scroller has put itself at the newest message.\n */\nfunction useHasLanded() {\n const [hasLanded, setHasLanded] = React.useState(false);\n\n React.useEffect(() => {\n const frame = requestAnimationFrame(() => setHasLanded(true));\n\n return () => cancelAnimationFrame(frame);\n }, []);\n\n return hasLanded;\n}\n\nfunction MessageScrollerViewport({\n className,\n ref,\n ...props\n}: React.ComponentProps<typeof MessageScrollerPrimitive.Viewport>) {\n const viewport = React.useRef<HTMLDivElement | null>(null);\n\n // Two scrolls are never worth watching, and this is both of them.\n //\n // The first one: a thread opens at the top and lands on the newest message,\n // and easing that drags the whole history past before you can read any of it.\n //\n // And every one during a resize: a panel growing, a window dragged, a phone\n // keyboard coming up. Each of those re-pins the thread on every frame, and\n // easing towards a target that moves every frame leaves the messages\n // trailing the box they are in.\n const hasLanded = useHasLanded();\n const isResizing = useIsResizing(viewport);\n const isSettled = hasLanded && !isResizing;\n\n usePinnedToEnd(viewport);\n\n // Ours as well as whoever else asked for it. The primitive keeps its own\n // separately, so this is only the two of us.\n const holdViewport = React.useCallback(\n (node: HTMLDivElement | null) => {\n viewport.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n },\n [ref],\n );\n\n return (\n <MessageScrollerPrimitive.Viewport\n ref={holdViewport}\n data-slot=\"message-scroller-viewport\"\n // Every scroll the scroller makes for itself asks for `auto`, which\n // hands the decision to this element, so the thread is either all\n // animated or none of it. Only the button picks smooth on its own.\n //\n // All of them are a pin to the newest message today. The one to watch\n // for is the correction that holds your place when older messages are\n // loaded in above: that one wants to be instant, and it would have to\n // stop asking for `auto` to stay that way.\n data-settled={isSettled ? \"\" : undefined}\n className={cn(\n \"size-full min-h-0 min-w-0 overflow-y-auto overscroll-contain contain-content [scrollbar-gutter:stable] [scrollbar-width:thin]\",\n // A reply landing while you are at the bottom should carry you down\n // rather than teleport you, and the button should travel the distance\n // it is offering to cover. See above for the two that are left out.\n //\n // Granted rather than taken away, since `motion-reduce:scroll-auto`\n // would lose to an attribute selector and never get a say.\n \"motion-safe:data-settled:scroll-smooth\",\n // The fade says \"there is more below\", so it only belongs to a\n // viewport that has more below.\n //\n // The registry hangs `scroll-fade-b` on unconditionally and retracts\n // it with a scroll driven animation. That leaves the newest message\n // dimmed at the foot of every thread: a browser without scroll\n // timelines takes the utility's own fallback and pins the fade on\n // forever, and even where they work the mask is still painted over a\n // thread too short to scroll at all. `data-scrollable` is the same\n // question answered by measurement, and the primitive already writes\n // it here. It drops \"end\" as soon as you are within a few pixels of\n // the bottom, and while it is following the bottom it never claims it.\n \"data-[scrollable~=end]:scroll-fade-b\",\n // The registry also blanks the scrollbar while the scroller is moving\n // on its own. That was covering for the jump: the bar flicked from one\n // place to another with nothing in between. Now it slides, so hiding it\n // is the flicker, and it holds the thumb back for a fixed 180ms that\n // has nothing to do with how far the thread actually travelled.\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MessageScrollerContent({\n className,\n ...props\n}: React.ComponentProps<typeof MessageScrollerPrimitive.Content>) {\n return (\n <MessageScrollerPrimitive.Content\n data-slot=\"message-scroller-content\"\n className={cn(\"flex h-max min-h-full flex-col gap-6\", className)}\n {...props}\n />\n );\n}\n\nfunction MessageScrollerItem({\n className,\n scrollAnchor = false,\n ...props\n}: React.ComponentProps<typeof MessageScrollerPrimitive.Item>) {\n return (\n <MessageScrollerPrimitive.Item\n data-slot=\"message-scroller-item\"\n scrollAnchor={scrollAnchor}\n className={cn(\n \"min-w-0 shrink-0 [contain-intrinsic-size:auto_10rem] [content-visibility:auto]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MessageScrollerButton({\n direction = \"end\",\n className,\n children,\n render,\n variant = \"secondary\",\n size = \"icon-sm\",\n ...props\n}: React.ComponentProps<typeof MessageScrollerPrimitive.Button> &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <MessageScrollerPrimitive.Button\n data-slot=\"message-scroller-button\"\n data-direction={direction}\n data-variant={variant}\n data-size={size}\n direction={direction}\n className={cn(\n \"absolute start-1/2 -translate-x-1/2 border-border bg-background text-foreground transition-[translate,scale,opacity] duration-200 hover:bg-muted hover:text-foreground data-[active=false]:pointer-events-none data-[active=false]:scale-95 data-[active=false]:opacity-0 data-[active=false]:duration-400 data-[active=false]:ease-[cubic-bezier(0.7,0,0.84,0)] data-[active=true]:translate-y-0 data-[active=true]:scale-100 data-[active=true]:opacity-100 data-[active=true]:ease-[cubic-bezier(0.23,1,0.32,1)] data-[direction=end]:bottom-4 data-[direction=end]:data-[active=false]:translate-y-full data-[direction=start]:top-4 data-[direction=start]:data-[active=false]:-translate-y-full rtl:translate-x-1/2 data-[direction=start]:[&_svg]:rotate-180\",\n className,\n )}\n render={render ?? <Button variant={variant} size={size} />}\n {...props}\n >\n {children ?? (\n <>\n <ArrowDown />\n <span className=\"sr-only\">\n {direction === \"end\" ? \"Scroll to end\" : \"Scroll to start\"}\n </span>\n </>\n )}\n </MessageScrollerPrimitive.Button>\n );\n}\n\nexport {\n MessageScrollerProvider,\n MessageScroller,\n MessageScrollerViewport,\n MessageScrollerContent,\n MessageScrollerItem,\n MessageScrollerButton,\n useMessageScroller,\n useMessageScrollerScrollable,\n useMessageScrollerVisibility,\n};\n","import*as i from'react';function S({defaultTagName:a,props:r,render:t,state:n={},stateAttributesMapping:e}){let o=d(R(n,e),r);if(!t)return i.createElement(a,o);if(typeof t==\"function\")return t(o,n);if(!i.isValidElement(t))return null;let s=t.props,u={...d(o,s),ref:f(o.ref,s.ref)};return i.cloneElement(t,u)}function d(...a){let r={};for(let t of a){if(!t)continue;let n=t;for(let e of Object.keys(n)){let o=n[e];if(o===void 0)continue;let s=r[e];e===\"className\"?r[e]=[s,o].filter(Boolean).join(\" \"):e===\"style\"?r[e]={...s,...o}:e===\"ref\"?r[e]=f(s,o):l(e)&&typeof s==\"function\"&&typeof o==\"function\"?r[e]=p(o,s):r[e]=o;}}return r}function R(a,r){let t={};for(let n of Object.keys(a)){let e=a[n],o=r?.[n]?.(e);if(o){Object.assign(t,o);continue}if(n===\"slot\"){t[\"data-slot\"]=e;continue}let s=`data-${String(n).replace(/[A-Z]/g,c=>`-${c.toLowerCase()}`)}`;typeof e==\"boolean\"?t[s]=e?\"\":void 0:e!=null&&(t[s]=String(e));}return t}function p(a,r){return function(n){a(n),n.defaultPrevented||r(n);}}function l(a){return /^on[A-Z]/.test(a)}function f(...a){let r=a.filter(Boolean);if(r.length!==0)return t=>{for(let n of r)typeof n==\"function\"?n(t):n&&(n.current=t);}}export{S as a,d as b,f as c};","\"use client\";\nimport {c,a,b}from'../chunk-HBS6WEDP.js';import*as g from'react';import {jsx,jsxs}from'react/jsx-runtime';var xe=8,Ve=64,_e=0,J=.5,ke=180,Be=new Set([\"ArrowDown\",\"ArrowUp\",\"End\",\"Home\",\"PageDown\",\"PageUp\",\" \"]),ge={start:false,end:false},dt=[],Q={currentAnchorId:null,visibleMessageIds:dt};function De({content:e,scrollEdgeThreshold:t,spacer:r,viewport:n}){if(!n||!e)return ge;let o=Se({content:e,spacer:r,viewport:n});return {start:n.scrollTop>t,end:o-n.scrollTop-n.clientHeight>t}}function Fe({content:e,scrollMargin:t,scrollPreviousItemPeek:r,spacer:n,viewport:o,visibleMessageIds:i}){if(!e||!o)return Q;let S=o.getBoundingClientRect(),l=S.top+t+r,d=typeof IntersectionObserver>\"u\",E=[],b=null;for(let C of ee(e,n)){let p=C.dataset.messageId;if(!p)continue;let m=C.dataset.scrollAnchor===\"true\",L=m||d?C.getBoundingClientRect():null;(d&&L?L.bottom>l&&L.top<S.bottom:i.has(p))&&E.push(p),m&&L&&L.top<=l+J&&(b=p);}return E.length===0&&b===null?Q:{currentAnchorId:b,visibleMessageIds:E}}function ee(e,t){return Array.from(e.children).filter(r=>r instanceof HTMLElement&&r!==t)}function je(e,t){for(let r=t;r<e.length;r++){let n=e[r];if(n?.dataset.scrollAnchor===\"true\")return n}return null}function Ge(e,t){for(let r of e)if(r.dataset.scrollAnchor===\"true\"&&!t.has(r))return r;return null}function Ne(e,t){let r=0;for(let n=t;n<e.length;n++)if(e[n]?.dataset.scrollAnchor===\"true\"&&(r+=1,r>1))return true;return false}function Ue(e){for(let t=e.length-1;t>=0;t--){let r=e[t];if(r?.dataset.scrollAnchor===\"true\")return r}return null}function Ye({content:e,spacer:t,viewport:r}){let n=r.getBoundingClientRect();for(let o of ee(e,t)){if(!o.dataset.messageId)continue;let i=o.getBoundingClientRect();if(i.bottom>n.top&&i.top<n.bottom)return o}return null}function ze({align:e,element:t,scrollMargin:r,spacer:n,viewport:o}){let i=pe(t,o),S=t.getBoundingClientRect().height,l=bt(n);if(e===\"center\"){let d=Math.max(0,o.clientHeight-l.start-l.end);return i-l.start-(d-S)/2-r}if(e===\"end\")return i-o.clientHeight+S+l.end+r;if(e===\"nearest\"){let d=i+S,E=o.scrollTop+l.start,b=o.scrollTop+o.clientHeight-l.end;return i>=E&&d<=b?o.scrollTop:i<E?i-l.start-r:d-o.clientHeight+l.end+r}return i-l.start-r}function pe(e,t){let r=e.getBoundingClientRect(),n=t.getBoundingClientRect();return r.top-n.top+t.scrollTop}function te(e,t){return e.getBoundingClientRect().top-t.getBoundingClientRect().top}function qe({content:e,scrollTop:t,spacer:r,viewport:n}){let o=Se({content:e,spacer:r,viewport:n});return t+n.clientHeight-o}function Se({content:e,spacer:t,viewport:r}){let n=ee(e,t),o=We(e),i=r.getBoundingClientRect(),S=r.scrollTop,l=o.start+o.end;for(let d of n){let E=d.getBoundingClientRect();l=Math.max(l,E.bottom-i.top+S+o.end);}return l}function Ke(e){return Math.max(0,e.scrollHeight-e.clientHeight)}function We(e){let t=window.getComputedStyle(e);return {end:Re(t.paddingBlockEnd||t.paddingBottom),start:Re(t.paddingBlockStart||t.paddingTop)}}function bt(e){let t=e?.parentElement;return t?We(t):{end:0,start:0}}function $e(e){if(!e)return 0;let t=window.getComputedStyle(e),r=t.rowGap===\"normal\"?t.gap:t.rowGap;return Re(r)}function Re(e){if(!e)return 0;let t=Number.parseFloat(e);return Number.isFinite(t)?t:0}function Je({refs:e,commitScrollState:t,scheduleStateCommit:r,scheduleVisibilitySync:n}){let{streamingTurnRef:o,autoScrollRef:i,autoscrollingRef:S,autoscrollingTimeoutRef:l,contentRef:d,defaultScrollPositionAppliedRef:E,itemCountRef:b,messageElementsRef:C,modeRef:p,pendingScrollToMessageRef:m,prependRestoreRef:L,scrollMarginRef:y,scrollPreviousItemPeekRef:u,spacerGapRef:x,spacerHeightRef:Y,spacerRef:k,viewportRef:_}=e,G=g.useCallback(c=>{l.current!==null&&(window.clearTimeout(l.current),l.current=null),S.current!==c&&(S.current=c,t()),c&&(l.current=window.setTimeout(()=>{l.current=null,S.current=false,t();},ke));},[t]),v=g.useCallback(c=>{let f=k.current;if(!f)return;let h=Math.max(0,Math.ceil(c));Y.current!==h&&(Y.current=h,f.hidden=h===0,f.style.height=`${h}px`,f.style.marginTop=h>0?`${-x.current}px`:\"\");},[]),H=g.useCallback((c,{behavior:f=\"auto\",autoscrolling:h=false}={})=>{let P=_.current;if(!P)return;let V=Math.max(0,c);if(Math.abs(P.scrollTop-V)<=J){P.scrollTop=V,t();return}h&&G(true),P.scrollTo({top:V,behavior:f}),r();},[t,r,G]),N=g.useCallback(({behavior:c=\"auto\"}={})=>_.current?(v(0),o.current=null,p.current=\"free-scrolling\",H(0,{behavior:c}),n(),true):false,[n,H,v]),ne=g.useCallback(({behavior:c=\"auto\"}={})=>{let f=_.current;return f?(v(0),o.current=null,p.current=i.current?\"following-bottom\":\"free-scrolling\",H(Ke(f),{autoscrolling:true,behavior:c}),n(),true):false},[n,H,v]),A=g.useCallback((c,{align:f=\"start\",behavior:h=\"auto\",scrollMargin:P=y.current}={},{keepPreviousPeek:V=false}={})=>{let z=d.current,q=_.current;if(!z||!q||!z.contains(c))return false;let K=ze({align:f,element:c,scrollMargin:V?P+u.current:P,spacer:k.current,viewport:q}),se=qe({content:z,scrollTop:K,spacer:k.current,viewport:q});return v(se),L.current={element:c,viewportTop:te(c,q)},p.current=V?\"anchored-to-message\":\"settling-jump\",o.current=V?c:null,H(K,{behavior:h}),n(),true},[n,H,v]),B=g.useCallback(()=>{let c=o.current;return !c||!c.isConnected||p.current!==\"anchored-to-message\"?false:A(c,{align:\"start\"},{keepPreviousPeek:true})},[A]),D=g.useCallback((c,f)=>{let h=C.current.get(c);return h?(E.current=true,A(h,f)?(m.current=null,true):(m.current={messageId:c,options:f},true)):b.current===0?(m.current={messageId:c,options:f},E.current=true,true):false},[A]);return {flushPendingScrollToMessage:g.useCallback(()=>{let c=m.current;if(!c)return false;let f=C.current.get(c.messageId);return !f||!A(f,c.options)?false:(m.current=null,E.current=true,true)},[A]),reanchorToAnchoredMessage:B,scrollToElement:A,scrollToEnd:ne,scrollToMessage:D,scrollToStart:N}}function Qe(e,t){let r=e,n=new Set;return {getSnapshot:()=>r,hasListeners:()=>n.size>0,setSnapshot:o=>{t(r,o)||(r=o,n.forEach(i=>i()));},subscribe:(o,i,S)=>{let l=n.size===0;return n.add(o),l&&i?.(),()=>{n.delete(o),n.size===0&&S?.();}}}}function Xe(e,t){return Qe(e,t)}function Ze(){return Qe(Q,Tt)}function et(e,t){return e.start===t.start&&e.end===t.end}function Tt(e,t){return e.currentAnchorId!==t.currentAnchorId||e.visibleMessageIds.length!==t.visibleMessageIds.length?false:e.visibleMessageIds.every((r,n)=>r===t.visibleMessageIds[n])}function tt({autoScroll:e,scrollEdgeThreshold:t,scrollMargin:r,scrollPreviousItemPeek:n}){let o=g.useRef(e),i=g.useRef(false),S=g.useRef(null),l=g.useRef(false),d=g.useRef(t),E=g.useRef(0),b=g.useRef(null),C=g.useRef(0),p=g.useRef(e?\"following-bottom\":\"free-scrolling\"),m=g.useRef(new Map),L=g.useRef(null),y=g.useRef(null),u=g.useRef(null),x=g.useRef(n),Y=g.useRef(true),k=g.useRef(null),_=g.useRef(r),G=g.useRef(null),v=g.useRef(0),H=g.useRef(0),N=g.useRef(null),ne=g.useRef(null),A=g.useRef(null),B=g.useRef(null),D=g.useRef(null),U=g.useRef(null),c=g.useRef(null),f=g.useRef(null),h=g.useRef(new Set),P=g.useRef(new WeakSet);return A.current===null&&(A.current=Xe(ge,et)),f.current===null&&(f.current=Ze()),o.current=e,d.current=t,_.current=r,x.current=n,{autoScrollRef:o,autoscrollingRef:i,autoscrollingTimeoutRef:B,streamingTurnRef:u,contentRef:S,defaultScrollPositionAppliedRef:l,firstItemRef:b,itemCountRef:E,lastScrollTopRef:C,messageElementsRef:m,modeRef:p,pendingScrollFrameRef:G,pendingScrollToMessageRef:L,prependRestoreRef:y,preserveScrollOnPrependRef:Y,rootRef:k,scrollEdgeThresholdRef:d,scrollMarginRef:_,scrollPreviousItemPeekRef:x,spacerGapRef:v,spacerHeightRef:H,spacerRef:N,stateFrameRef:ne,stateStore:A.current,viewportRef:D,visibilityFrameRef:U,visibilityObserverRef:c,visibilityStore:f.current,visibleMessageIdsRef:h,handledScrollAnchorsRef:P}}function rt(e,t){return g.useCallback(r=>{e.current=r,r&&t();},[e,t])}function nt({autoScroll:e=false,defaultScrollPosition:t=\"end\",scrollEdgeThreshold:r=xe,scrollPreviousItemPeek:n=Ve,scrollMargin:o=_e}){let i=tt({autoScroll:e,scrollEdgeThreshold:r,scrollMargin:o,scrollPreviousItemPeek:n}),{streamingTurnRef:S,autoScrollRef:l,autoscrollingRef:d,autoscrollingTimeoutRef:E,contentRef:b,defaultScrollPositionAppliedRef:C,firstItemRef:p,itemCountRef:m,lastScrollTopRef:L,messageElementsRef:y,modeRef:u,pendingScrollFrameRef:x,pendingScrollToMessageRef:Y,prependRestoreRef:k,preserveScrollOnPrependRef:_,rootRef:G,scrollEdgeThresholdRef:v,scrollMarginRef:H,scrollPreviousItemPeekRef:N,spacerGapRef:ne,spacerHeightRef:A,spacerRef:B,stateFrameRef:D,stateStore:U,viewportRef:c,visibilityFrameRef:f,visibilityObserverRef:h,visibilityStore:P,visibleMessageIdsRef:V,handledScrollAnchorsRef:z}=i,q=g.useRef(t);q.current!==t&&(q.current=t,C.current=false);let K=g.useCallback(s=>{let a=G.current,T=c.current,O=[s.start&&\"start\",s.end&&\"end\"].filter(Boolean).join(\" \"),ue=d.current;for(let W of [a,T])W&&(O?W.setAttribute(\"data-scrollable\",O):W.removeAttribute(\"data-scrollable\"),W.toggleAttribute(\"data-autoscrolling\",ue));},[]),se=g.useCallback(s=>{let a=c.current?.scrollTop??0,T=a<L.current-J;L.current=a,l.current&&!s.end&&u.current!==\"settling-jump\"&&u.current!==\"anchored-to-message\"?u.current=\"following-bottom\":u.current===\"following-bottom\"&&s.end&&T&&!d.current&&(u.current=\"free-scrolling\");},[]),F=g.useCallback(()=>{let s=De({content:b.current,scrollEdgeThreshold:v.current,spacer:B.current,viewport:c.current});se(s);let a=u.current===\"following-bottom\"?{...s,end:false}:s;K(a),U.setSnapshot(a);},[se,U,K]),oe=g.useCallback(()=>{D.current===null&&(D.current=window.requestAnimationFrame(()=>{D.current=null,F();}));},[F]),w=g.useCallback(()=>{P.hasListeners()&&f.current===null&&(f.current=window.requestAnimationFrame(()=>{f.current=null,P.hasListeners()&&P.setSnapshot(Fe({content:b.current,scrollMargin:H.current,scrollPreviousItemPeek:N.current,spacer:B.current,viewport:c.current,visibleMessageIds:V.current}));}));},[P]),{flushPendingScrollToMessage:ce,reanchorToAnchoredMessage:me,scrollToElement:le,scrollToEnd:I,scrollToMessage:Me,scrollToStart:ae}=Je({refs:i,commitScrollState:F,scheduleStateCommit:oe,scheduleVisibilitySync:w}),de=g.useCallback(()=>{let s=k.current,a=c.current;if(!s||!a||!s.element.isConnected)return false;let O=te(s.element,a)-s.viewportTop;return Math.abs(O)<=J?false:(a.scrollTop+=O,s.viewportTop=te(s.element,a),oe(),w(),true)},[oe,w]),Z=g.useCallback(()=>{let s=b.current,a=c.current;if(!s||!a){k.current=null;return}let T=Ye({content:s,spacer:B.current,viewport:a});k.current=T?{element:T,viewportTop:te(T,a)}:null;},[]),be=g.useCallback(()=>{x.current===null&&(x.current=window.requestAnimationFrame(()=>{x.current=null,ce()&&Z();}));},[Z,ce]),ie=g.useCallback(()=>{if(!t||C.current||m.current===0)return false;let s=false;if(t===\"last-anchor\"){let a=b.current,T=c.current,O=a&&T?Ue(ee(a,B.current)):null;if(!a||!T||!O)s=I({behavior:\"auto\"});else {let ue=pe(O,T);s=Se({content:a,spacer:B.current,viewport:T})-ue<=T.clientHeight?I({behavior:\"auto\"}):le(O,{align:\"start\"},{keepPreviousPeek:true});}}else s=t===\"end\"?I({behavior:\"auto\"}):ae({behavior:\"auto\"});return s?(C.current=true,true):false},[t,le,I,ae]),Te=g.useCallback(()=>{let s=b.current;if(!s)return;let a=ee(s,B.current),T=m.current,O=p.current;m.current=a.length,p.current=a[0]??null,(()=>{if(ce())return;if(T===0){if(ie()||a.length>0&&l.current&&I({behavior:\"auto\"}))return;F(),w();return}let W=O?a.indexOf(O):-1;if(_.current&&W>0){de();return}if(a.length>T){let $=je(a,T);if($){if(l.current&&u.current===\"following-bottom\"&&Ne(a,T)){I({behavior:\"auto\"});return}le($,{align:\"start\"},{keepPreviousPeek:true}),z.current.add($);return}}if(a.length===T){let $=Ge(a,z.current);if($){le($,{align:\"start\"},{keepPreviousPeek:true}),z.current.add($);return}}u.current===\"following-bottom\"&&l.current?I({behavior:\"auto\"}):(F(),w());})(),Z();},[ie,Z,F,ce,de,w,le,I]),Ee=g.useCallback(()=>{if(u.current===\"following-bottom\"&&l.current){I({behavior:\"auto\"});return}let s=A.current;if(me()){l.current&&s>0&&A.current===0&&I({behavior:\"auto\"});return}oe(),w();},[me,oe,w,I]),ve=g.useCallback(()=>{let s=c.current;if(!(!s||!P.hasListeners())){if(typeof IntersectionObserver>\"u\"){w();return}h.current||(h.current=new IntersectionObserver(a=>{for(let T of a){let O=T.target.dataset.messageId;O&&(T.isIntersecting?V.current.add(O):V.current.delete(O));}w();},{root:s,rootMargin:`${-(H.current+N.current)}px 0px 0px 0px`,threshold:[0,.01,.5,1]})),y.current.forEach(a=>{h.current?.observe(a);}),w();}},[w,P]),he=g.useCallback(()=>{f.current!==null&&(window.cancelAnimationFrame(f.current),f.current=null),h.current?.disconnect(),h.current=null,V.current.clear(),P.setSnapshot(Q);},[P]),pt=g.useCallback((s,a,T)=>{if(a){y.current.set(s,a),h.current?.observe(a),w(),Y.current?.messageId===s&&be();return}T&&y.current.get(s)===T&&(y.current.delete(s),V.current.delete(s),h.current?.unobserve(T),w());},[be,w]),Le=g.useCallback(()=>{(u.current===\"following-bottom\"||u.current===\"anchored-to-message\"||u.current===\"settling-jump\")&&(S.current=null,u.current=\"free-scrolling\");},[]),Ce=g.useCallback(()=>K(U.getSnapshot()),[U,K]),Pe=rt(G,Ce),we=rt(c,Ce),Oe=g.useCallback(s=>{b.current=s;},[]),ye=g.useCallback(s=>{B.current=s,ne.current=$e(s?.parentElement??null);},[]),He=g.useCallback(()=>{F(),w(),Z();},[Z,F,w]),mt=g.useMemo(()=>({handleContentChange:Te,handleResize:Ee,observeVisibility:ve,preserveScrollOnPrependRef:_,scrollToEnd:I,scrollToMessage:Me,scrollToStart:ae,setContentElement:Oe,setRootElement:Pe,setSpacerElement:ye,setViewportElement:we,stateStore:U,syncAfterScroll:He,unobserveVisibility:he,userScrollIntent:Le,viewportRef:c,visibilityStore:P}),[Te,Ee,ve,I,Me,ae,Oe,Pe,ye,we,U,He,he,Le,P]);return g.useLayoutEffect(()=>{ie();},[ie]),g.useEffect(()=>()=>{D.current!==null&&(window.cancelAnimationFrame(D.current),D.current=null),f.current!==null&&(window.cancelAnimationFrame(f.current),f.current=null),E.current!==null&&(window.clearTimeout(E.current),E.current=null),x.current!==null&&(window.cancelAnimationFrame(x.current),x.current=null),h.current?.disconnect(),h.current=null;},[]),g.useLayoutEffect(()=>{if(e&&u.current===\"following-bottom\"&&m.current>0){I({behavior:\"auto\"});return}F();},[e,F,I]),{context:mt,registerMessage:pt}}function lt(e){let t=g.useRef(e);return t.current=e,t}var st=g.createContext(null),ct=g.createContext(null);function X(){let e=g.useContext(st);if(!e)throw new Error(\"useMessageScroller must be used within a MessageScroller.\");return e}function Et(){let e=g.useContext(ct);if(!e)throw new Error(\"MessageScrollerItem must be used within a MessageScroller.\");return e}function vt(){let{scrollToEnd:e,scrollToMessage:t,scrollToStart:r}=X();return g.useMemo(()=>({scrollToEnd:e,scrollToMessage:t,scrollToStart:r}),[e,t,r])}function ht(){let{stateStore:e}=X();return g.useSyncExternalStore(e.subscribe,e.getSnapshot,e.getSnapshot)}function Lt(){let{observeVisibility:e,unobserveVisibility:t,visibilityStore:r}=X(),n=g.useCallback(o=>r.subscribe(o,e,t),[e,t,r]);return g.useSyncExternalStore(n,r.getSnapshot,r.getSnapshot)}function at({autoScroll:e=false,children:t,defaultScrollPosition:r=\"end\",scrollEdgeThreshold:n,scrollPreviousItemPeek:o,scrollMargin:i}){let{context:S,registerMessage:l}=nt({autoScroll:e,defaultScrollPosition:r,scrollEdgeThreshold:n,scrollPreviousItemPeek:o,scrollMargin:i});return jsx(st.Provider,{value:S,children:jsx(ct.Provider,{value:l,children:t})})}function it({children:e,...t}){let{setRootElement:r}=X();return jsx(\"div\",{ref:r,...t,children:e})}function ut({\"aria-label\":e,children:t,onKeyDown:r,onScroll:n,onTouchMove:o,onWheel:i,preserveScrollOnPrepend:S=true,ref:l,role:d,tabIndex:E,...b}){let{handleResize:C,preserveScrollOnPrependRef:p,setViewportElement:m,syncAfterScroll:L,userScrollIntent:y,viewportRef:u}=X();p.current=S;let x=g.useCallback(v=>{m(v),c(l)?.(v);},[l,m]);function Y(v){L(),n?.(v);}function k(v){y(),i?.(v);}function _(v){y(),o?.(v);}function G(v){Be.has(v.key)&&y(),r?.(v);}return g.useEffect(()=>{let v=u.current;if(!v||typeof ResizeObserver>\"u\")return;let H=0,N=new ResizeObserver(()=>{window.cancelAnimationFrame(H),H=window.requestAnimationFrame(C);});return N.observe(v),()=>{window.cancelAnimationFrame(H),N.disconnect();}},[C,u]),jsx(\"div\",{ref:x,role:d??\"region\",\"aria-label\":e??\"Messages\",tabIndex:E??0,onKeyDown:G,onScroll:Y,onTouchMove:_,onWheel:k,...b,children:t})}function ft({\"aria-relevant\":e,children:t,ref:r,role:n,spacerClassName:o,...i}){let{handleContentChange:S,handleResize:l,setContentElement:d,setSpacerElement:E}=X(),b=g.useRef(null),C=g.useCallback(p=>{b.current=p,d(p),c(r)?.(p);},[r,d]);return g.useLayoutEffect(()=>{let p=b.current;if(!p||(S(),typeof MutationObserver>\"u\"))return;let m=new MutationObserver(()=>{S();});return m.observe(p,{childList:true}),()=>m.disconnect()},[S]),g.useEffect(()=>{let p=b.current;if(!p||typeof ResizeObserver>\"u\")return;let m=0,L=new ResizeObserver(()=>{window.cancelAnimationFrame(m),m=window.requestAnimationFrame(l);});return L.observe(p),()=>{window.cancelAnimationFrame(m),L.disconnect();}},[l]),jsxs(\"div\",{ref:C,role:n??\"log\",\"aria-relevant\":e??\"additions\",...i,children:[t,jsx(\"div\",{ref:E,\"aria-hidden\":\"true\",\"data-message-scroller-spacer\":\"\",hidden:true,className:o})]})}function gt({messageId:e,ref:t,scrollAnchor:r=false,...n}){let o=Et(),i=g.useRef(null),S=g.useCallback(l=>{let d=i.current;i.current=l,e&&o(e,l,d),c(t)?.(l);},[e,t,o]);return jsx(\"div\",{ref:S,\"data-message-id\":e,\"data-scroll-anchor\":r?\"true\":\"false\",...n})}function St({behavior:e=\"smooth\",children:t,direction:r=\"end\",onClick:n,render:o,tabIndex:i,type:S=\"button\",...l}){let{scrollToEnd:d,scrollToStart:E,stateStore:b$1}=X(),C=lt(n),p=g.useCallback(u=>b$1.subscribe(u),[b$1]),m=g.useCallback(()=>{let u=b$1.getSnapshot();return r===\"start\"?u.start:u.end},[r,b$1]),L=g.useSyncExternalStore(p,m,m),y=g.useCallback(u=>{L&&(C.current?.(u),u.defaultPrevented||(u.currentTarget.blur(),r===\"start\"?E({behavior:e}):d({behavior:e})));},[e,r,L,C,d,E]);return a({defaultTagName:\"button\",props:b({type:S,inert:!L,tabIndex:L?i:-1,children:t??jsxs(\"span\",{children:[\"Scroll to \",r]}),onClick:y},l),render:o,state:{active:L,direction:r},stateAttributesMapping:{active:u=>({\"data-active\":u?\"true\":\"false\"})}})}var $t={Provider:at,Root:it,Viewport:ut,Content:ft,Item:gt,Button:St};export{$t as MessageScroller,vt as useMessageScroller,ht as useMessageScrollerScrollable,Lt as useMessageScrollerVisibility};","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\n\ndeclare module 'react' {\n interface ReactElement {\n $$typeof?: symbol | string;\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Slot\n * -----------------------------------------------------------------------------------------------*/\n\nexport type Usable<T> = PromiseLike<T> | React.Context<T>;\n\ntype SlotProps<Elem extends Element = HTMLElement, Props = React.HTMLAttributes<Elem>> = Props & {\n children?: React.ReactNode;\n};\n\n/* @__NO_SIDE_EFFECTS__ */ export function createSlot<\n Elem extends Element = HTMLElement,\n Props = React.HTMLAttributes<Elem>,\n>(ownerName: string) {\n const Slot = React.forwardRef<Elem, SlotProps<Elem, Props>>((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n let slottableElement: React.ReactElement | null = null;\n let hasSlottable = false;\n const newChildren: React.ReactNode[] = [];\n\n if (isLazyComponent(children) && typeof use === 'function') {\n children = use(children._payload);\n }\n\n React.Children.forEach(children, (maybeSlottable) => {\n if (isSlottable(maybeSlottable)) {\n hasSlottable = true;\n const slottable = maybeSlottable;\n let child = 'child' in slottable.props ? slottable.props.child : slottable.props.children;\n\n if (isLazyComponent(child) && typeof use === 'function') {\n child = use(child._payload);\n }\n\n slottableElement = getSlottableElementFromSlottable(slottable, child);\n newChildren.push((slottableElement?.props as any)?.children);\n } else {\n newChildren.push(maybeSlottable);\n }\n });\n\n if (slottableElement) {\n slottableElement = React.cloneElement(slottableElement, undefined, newChildren);\n } else if (\n // A `Slottable` was found but it didn't resolve to a single element (e.g.\n // it wrapped multiple elements, text, or a render-prop `child` that\n // wasn't an element). Don't fall back to treating the `Slottable` wrapper\n // itself as the slot target — throw a descriptive error below instead.\n !hasSlottable &&\n React.Children.count(children) === 1 &&\n React.isValidElement(children)\n ) {\n slottableElement = children;\n }\n\n const slottableElementRef = slottableElement ? getElementRef(slottableElement) : undefined;\n const composedRef = useComposedRefs(forwardedRef, slottableElementRef);\n\n if (!slottableElement) {\n // Empty/falsy children (`null`, `undefined`, `false`, no children, etc.) are valid and\n // render nothing. Anything else is content we couldn't slot onto a single element, which\n // is a usage error, so we fail loudly with a clear message.\n if (children || children === 0) {\n throw new Error(\n hasSlottable ? createSlottableError(ownerName) : createSlotError(ownerName),\n );\n }\n return children;\n }\n\n const mergedProps = mergeProps(slotProps, slottableElement.props ?? {});\n\n // do not pass ref to React.Fragment for React 19 compatibility\n if (slottableElement.type !== React.Fragment) {\n mergedProps.ref = forwardedRef ? composedRef : slottableElementRef;\n }\n\n return React.cloneElement(slottableElement, mergedProps);\n });\n\n Slot.displayName = `${ownerName}.Slot`;\n return Slot;\n}\n\nconst Slot = createSlot('Slot');\n\n/* -------------------------------------------------------------------------------------------------\n * Slottable\n * -----------------------------------------------------------------------------------------------*/\n\nconst SLOTTABLE_IDENTIFIER = Symbol.for('radix.slottable');\n\ntype SlottableChildrenProps = { children: React.ReactNode };\ntype SlottableRenderFnProps = {\n child: React.ReactNode;\n children: (slottable: React.ReactNode) => React.ReactNode;\n};\n\ntype SlottableProps = SlottableRenderFnProps | SlottableChildrenProps;\ninterface SlottableComponent extends React.FC<SlottableProps> {\n __radixId: symbol;\n}\n\n/* @__NO_SIDE_EFFECTS__ */ export function createSlottable(ownerName: string) {\n const Slottable: SlottableComponent = (props) =>\n 'child' in props ? props.children(props.child) : props.children;\n\n Slottable.displayName = `${ownerName}.Slottable`;\n Slottable.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable;\n}\n\nconst Slottable = createSlottable('Slottable');\n\n/* -------------------------------------------------------------------------------------------------\n * getSlottableElementFromSlottable\n * -----------------------------------------------------------------------------------------------*/\n\nconst getSlottableElementFromSlottable = (slottable: SlottableElement, child: React.ReactNode) => {\n if ('child' in slottable.props) {\n const child = slottable.props.child;\n if (!React.isValidElement<React.PropsWithChildren>(child)) return null;\n return React.cloneElement(child, undefined, slottable.props.children(child.props.children));\n }\n\n return React.isValidElement(child) ? child : null;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * mergeProps\n * -----------------------------------------------------------------------------------------------*/\n\ntype AnyProps = Record<string, any>;\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps) {\n // all child props should override\n const overrideProps = { ...childProps };\n\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n // if the handler exists on both, we compose them\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args: unknown[]) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n }\n // but if it exists only on the slot, we use only this one\n else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n }\n // if it's `style`, we merge them\n else if (propName === 'style') {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === 'className') {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ');\n }\n }\n\n return { ...slotProps, ...overrideProps };\n}\n\n/* -------------------------------------------------------------------------------------------------\n * getElementRef\n * -----------------------------------------------------------------------------------------------*/\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element.props as { ref?: React.Ref<unknown> }).ref;\n }\n\n // Not DEV\n return (element.props as { ref?: React.Ref<unknown> }).ref || (element as any).ref;\n}\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype SlottableElement = React.ReactElement<SlottableProps, SlottableComponent>;\n\nfunction isSlottable(\n child: React.ReactNode,\n): child is React.ReactElement<SlottableProps, typeof Slottable> {\n return (\n React.isValidElement(child) &&\n typeof child.type === 'function' &&\n '__radixId' in child.type &&\n child.type.__radixId === SLOTTABLE_IDENTIFIER\n );\n}\n\nconst REACT_LAZY_TYPE = Symbol.for('react.lazy');\n\ninterface LazyReactElement extends React.ReactElement {\n $$typeof: typeof REACT_LAZY_TYPE;\n _payload: PromiseLike<Exclude<React.ReactNode, PromiseLike<any>>>;\n}\n\nfunction isLazyComponent(element: React.ReactNode): element is LazyReactElement {\n return (\n element != null &&\n typeof element === 'object' &&\n '$$typeof' in element &&\n element.$$typeof === REACT_LAZY_TYPE &&\n '_payload' in element &&\n isPromiseLike(element._payload)\n );\n}\n\nfunction isPromiseLike(value: unknown): value is PromiseLike<unknown> {\n return typeof value === 'object' && value !== null && 'then' in value;\n}\n\nconst createSlotError = (ownerName: string) => {\n return `${ownerName} failed to slot onto its children. Expected a single React element child or \\`Slottable\\`.`;\n};\n\nconst createSlottableError = (ownerName: string) => {\n return `${ownerName} failed to slot onto its \\`Slottable\\`. Expected \\`Slottable\\` to receive a single React element child.`;\n};\n\nconst use: typeof React.use | undefined = (React as any)[' use '.trim().toString()];\n\nexport {\n Slot,\n Slottable,\n //\n Slot as Root,\n};\nexport type { SlotProps };\n","import * as React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == 'function') {\n hasCleanup = true;\n }\n return cleanup;\n });\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == 'function') {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-full border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline:\n \"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n destructive:\n \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-9 gap-1.5 px-3.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n xs: \"h-7 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1 px-3 text-[0.8rem] has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-9\",\n \"icon-xs\": \"size-7 [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","\"use client\";\n\nimport { useEffect, useState, type RefObject } from \"react\";\n\n/**\n * How long the box has to hold still before it counts as done. Long enough to\n * outlast the gap between two frames of an animation, short enough that\n * whatever was waiting on it is not left waiting.\n */\nconst SETTLE_MS = 120;\n\n/**\n * Whether an element is in the middle of changing size.\n *\n * For the things that correct themselves against a box, so they can hold off\n * while it moves. Correcting on every frame of a resize means aiming at a\n * target that moves every frame, and the numbers those corrections are made of\n * are whole pixels while the box between them is not, so each one lands a\n * fraction out from the last and the result shimmers rather than travels.\n *\n * False until something actually changes, and false again a moment after it\n * stops. The observer's opening report is the size the box already had rather\n * than a change to it, so it is not counted.\n */\nexport function useIsResizing(target: RefObject<HTMLElement | null>): boolean {\n const [isResizing, setIsResizing] = useState(false);\n\n useEffect(() => {\n const node = target.current;\n if (!node || typeof ResizeObserver === \"undefined\") return;\n\n let settle = 0;\n let isOpeningReport = true;\n\n const observer = new ResizeObserver(() => {\n if (isOpeningReport) {\n isOpeningReport = false;\n return;\n }\n\n setIsResizing(true);\n window.clearTimeout(settle);\n settle = window.setTimeout(() => setIsResizing(false), SETTLE_MS);\n });\n\n observer.observe(node);\n return () => {\n window.clearTimeout(settle);\n observer.disconnect();\n };\n }, [target]);\n\n return isResizing;\n}\n","/**\n * Runs of consecutive messages from the same voice, so a burst of three reads\n * as one turn rather than as three separate arrivals. A run says who is\n * speaking once, at the top, and carries the time and the face at the foot;\n * everything in between is just a bubble.\n *\n * What joins what is the caller's rule, since the inbox and the widget hold\n * different shapes. All this does is walk the list and mark the edges.\n */\n\n/** How long a run stays open. A message later than this starts a new one. */\nconst RUN_MS = 5 * 60_000;\n\n/** Where a message sits in its run. Both true when it is a run of one. */\nexport type MessageGroup = {\n /** Carries the name. */\n isFirst: boolean;\n /** Carries the face and the time. */\n isLast: boolean;\n};\n\n/** A message standing on its own, for anywhere nothing is grouped. */\nexport const LONE_MESSAGE: MessageGroup = { isFirst: true, isLast: true };\n\n/**\n * Marks each message with where it sits in its run.\n *\n * `joinsPrevious` is only ever asked about neighbours, so it can compare\n * senders, timestamps, day labels, or whatever else the shape at hand knows.\n */\nexport function groupMessages<T>(\n messages: T[],\n joinsPrevious: (message: T, previous: T) => boolean,\n): MessageGroup[] {\n /** Whether the message at `index` carries on the one above it. */\n const continues = (index: number) => {\n const message = messages[index];\n const previous = messages[index - 1];\n if (message === undefined || previous === undefined) return false;\n return joinsPrevious(message, previous);\n };\n\n return messages.map((_, index) => ({\n isFirst: !continues(index),\n isLast: !continues(index + 1),\n }));\n}\n\n/**\n * Whether two messages are close enough together to belong to one run. A\n * missing timestamp means canned content with no clock behind it, which groups\n * on who is speaking alone.\n */\nexport function withinRun(previous?: number, next?: number): boolean {\n if (previous === undefined || next === undefined) return true;\n return next - previous <= RUN_MS;\n}\n","\"use client\";\n\nimport { useCallback, useLayoutEffect, useRef } from \"react\";\nimport { prefersReducedMotion } from \"./motion\";\n\nconst SHIFT_MS = 420;\n/** Matches --ease-spring. Kept in step by hand, since JS cannot read a theme token. */\nconst SHIFT_EASING = \"cubic-bezier(0.34, 1.45, 0.64, 1)\";\n\n/** How far the first message sits from the top of the stack, or null if there is none. */\nfunction topOfStack(element: HTMLElement | null): number | null {\n const first = element?.firstElementChild as HTMLElement | null;\n\n return first ? first.offsetTop : null;\n}\n\n/**\n * Slides a bottom anchored stack up as it grows, rather than letting it jump.\n *\n * A short thread sits on the composer, so a new message does not push the ones\n * above it down: it lifts them. Left alone that happens between two frames and\n * the whole conversation teleports.\n *\n * So it is measured instead. The first message's offset from the top of the\n * stack says how far everything moved, the stack is put straight back where it\n * was, and it travels the distance properly. Nothing moves once the thread is\n * long enough to scroll, because then the first message stops moving, the\n * distance is zero, and the scroller has it.\n *\n * The starting measurement is taken as the element attaches rather than in the\n * effect below, because the effect only runs when the message count changes. A\n * thread that arrives after a loading state would otherwise have nothing to\n * compare against until its second message, and the first one would jump.\n */\nexport function useStackShift(dependency: number) {\n const stack = useRef<HTMLDivElement | null>(null);\n const previousTop = useRef<number | null>(null);\n const watcher = useRef<ResizeObserver | null>(null);\n\n // Attaching also starts watching the stack for a change of size, and letting\n // go stops. Both here rather than in an effect, because the stack arrives\n // whenever the first message does: a thread that starts empty has nothing to\n // attach to on mount, and an effect that ran then would have found nothing\n // and never looked again.\n const ref = useCallback((node: HTMLDivElement | null) => {\n stack.current = node;\n previousTop.current = topOfStack(node);\n\n watcher.current?.disconnect();\n watcher.current = null;\n if (!node || typeof ResizeObserver === \"undefined\") return;\n\n // The stack moves when the panel changes size too, and that is not a shift\n // worth animating: nothing arrived, the box around it grew. It does have to\n // be written down though. The effect below only runs on a new message, so\n // without this the measurement from before a resize is the one the next\n // message is compared against, and it travels the difference between two\n // panel heights on its way in.\n watcher.current = new ResizeObserver(() => {\n previousTop.current = topOfStack(node);\n });\n watcher.current.observe(node);\n }, []);\n\n useLayoutEffect(() => {\n const element = stack.current;\n if (!element) return;\n\n const top = topOfStack(element);\n const from = previousTop.current;\n previousTop.current = top;\n\n if (from === null || top === null) return;\n\n const distance = from - top;\n if (distance <= 0) return;\n if (prefersReducedMotion()) return;\n\n element.animate(\n [\n { transform: `translateY(${distance}px)` },\n { transform: \"translateY(0)\" },\n ],\n { duration: SHIFT_MS, easing: SHIFT_EASING },\n );\n }, [dependency]);\n\n return ref;\n}\n","/**\n * CSS carries `motion-reduce:` for anything animated in a stylesheet. The two\n * animations driven from JavaScript cannot read that, so they ask here.\n *\n * Guarded for the server, where there is no window to ask.\n */\nexport function prefersReducedMotion(): boolean {\n if (typeof window === \"undefined\") return false;\n\n return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n}\n","\"use client\";\n\nimport {\n useEffect,\n useRef,\n useState,\n type ChangeEvent,\n type KeyboardEvent,\n} from \"react\";\nimport {\n AttachmentDraftChip,\n useAttachmentDrafts,\n useAttachmentTarget,\n} from \"@/components/attachments\";\nimport { ArrowUp, Check, EnvelopeSimple, Plus } from \"@/components/icons\";\nimport { WidgetButton } from \"./widget-button\";\nimport { TEXT_FIELD_SHELL } from \"@/components/ui/text-field\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { useTypingSignal } from \"@/hooks/use-typing-signal\";\nimport { cn } from \"@/lib/utils\";\nimport { PoweredByMedian } from \"./widget-badge\";\n\n/**\n * Loose on purpose: it decides whether the arrow lights up, not whether the\n * address is real. Only a mail server can answer that, and a visitor locked\n * out by a suspicious regex has nobody to appeal to.\n */\nconst EMAIL_PATTERN = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\n/**\n * How the pill changes its mind.\n *\n * `translate` rather than `transform`, because that is the property Tailwind's\n * `translate-y-*` actually sets. Named as `transform` it transitions nothing:\n * the opacity eases and the travel lands in one frame, which is the jump this\n * was written to avoid.\n */\nconst SWAP =\n \"transition-[opacity,translate] duration-300 ease-out motion-reduce:transition-none\";\n\n/**\n * The notch coming up out of the composer, with the spring's small overshoot\n * at the top of the travel: it is a thing being pushed up from underneath, and\n * a thing pushed up passes where it lands.\n */\nconst RISE =\n \"transition-transform duration-450 ease-spring motion-reduce:transition-none\";\n\n/**\n * And going back into it. Quicker, and accelerating rather than easing off,\n * which is the difference between something leaving and something being taken\n * back: it is not travelling to a new place, it is going home.\n */\nconst SINK =\n \"transition-transform duration-250 ease-in motion-reduce:transition-none\";\n\n/**\n * The two phrases passing each other, both moving the same way, like a word on\n * a wheel. No fade in it: two things at half opacity on top of each other is\n * what makes a swap look like a smudge.\n *\n * A pure deceleration rather than the spring above, because this one runs\n * inside a box exactly one line tall. Anything that overshoots its landing has\n * its ascenders shaved off on the way past.\n */\nconst ROLL =\n \"transition-transform duration-350 ease-out-quint motion-reduce:transition-none\";\n\n/**\n * How long the tab holds its answer before tucking away. Long enough to read\n * two words, and short enough that nobody is waiting on it: the box to write\n * in is already underneath by then.\n */\nconst SAVED_MS = 1200;\n\n/**\n * One pill at the foot of the panel: add on the left, write in the middle,\n * send on the right. The shape is round rather than square so the composer\n * reads as a control rather than as another message, and it holds that shape\n * as the box grows because the corners are already as round as they get.\n *\n * Enter sends, shift and enter starts a new line. Files arrive from the plus\n * button, from a drop anywhere along the foot of the panel, or from a paste,\n * which is how anybody who has just taken a screenshot expects to send it.\n * They stack above the pill as chips, each with a thumbnail and a way out, and\n * one that is too big says so and holds the send button until it goes. Nothing\n * is uploaded yet.\n *\n * The draft clears when the send lands rather than when the button goes down,\n * so a send that fails costs a retry, not a retype.\n *\n * Before a first message, the same pill can ask who they are instead: a tab\n * rises from behind its top edge and says what is being asked, while the\n * writing box makes way for an email field underneath. Nothing remounts, so\n * both movements are transitions rather than things appearing.\n *\n * An answer is taken here rather than waited on. The tab says it has it, the\n * box to write in comes back under it, and the caret is already there before\n * the tab has finished tucking away, so a phone keeps the keyboard it has\n * instead of losing it and asking for it again.\n */\nexport function WidgetComposer({\n onSend,\n onTypingChange,\n askForEmail = false,\n onSubmitEmail,\n placeholder = \"Type your message...\",\n showBadge = true,\n isSending = false,\n}: {\n /** Awaited if it returns a promise. A rejection keeps the draft in place. */\n onSend?: (body: string, files: File[]) => unknown;\n /** Best effort, throttled here. */\n onTypingChange?: (isTyping: boolean) => unknown;\n /**\n * Ask for an email before a first message. The pill asks instead of the\n * composer: no attachments, no typing dots, nothing to send but the\n * address.\n */\n askForEmail?: boolean;\n /** Called with the address once it looks like one. */\n onSubmitEmail?: (email: string) => void;\n placeholder?: string;\n /** The \"Powered by Median\" line. Hosts on a paid plan can turn it off. */\n showBadge?: boolean;\n isSending?: boolean;\n}) {\n const [draft, setDraft] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n // Where the notch has got to. `none` is the question, `saved` is the word\n // that answers it, and `settled` is that same word on its way down: the\n // notch goes back to asking only if the question itself comes back.\n const [answer, setAnswer] = useState<\"none\" | \"saved\" | \"settled\">(\"none\");\n const fileInputRef = useRef<HTMLInputElement>(null);\n const draftRef = useRef<HTMLTextAreaElement>(null);\n const attachments = useAttachmentDrafts();\n const target = useAttachmentTarget({ onFiles: attachments.add });\n const typing = useTypingSignal(onTypingChange);\n\n const hasContent = draft.trim().length > 0 || attachments.drafts.length > 0;\n const canSend = hasContent && !attachments.hasBlocker && !isSending;\n\n // True once what they typed could be an address. It decides the arrow, not\n // whether the address is real.\n const isValid = EMAIL_PATTERN.test(email.trim());\n\n // A question that has come back outranks an answer already given, which is\n // `medianSupport.reset()` and nothing else: the stored address went, so the\n // notch has something to ask again rather than something to hold. Worked out\n // here rather than written back into the state, since the two facts are the\n // prop and the beat, and this is only what they add up to.\n const stage = askForEmail && answer === \"settled\" ? \"none\" : answer;\n\n // What the notch says, and whether it is up at all. It holds the word it\n // answered with the whole way down: a notch that changed its mind back to\n // the question as it left would be asking on its way out the door.\n const isAsking = askForEmail && stage === \"none\";\n const isSaved = stage !== \"none\";\n const showTab = isAsking || stage === \"saved\";\n\n function submitEmail() {\n if (!isValid || !onSubmitEmail) return;\n setAnswer(\"saved\");\n onSubmitEmail(email.trim());\n }\n\n // The beat itself. Nothing waits on it: the composer is already back\n // underneath, so this only decides how long the word stays up before the\n // notch takes it down.\n useEffect(() => {\n if (answer !== \"saved\") return;\n const timer = setTimeout(() => setAnswer(\"settled\"), SAVED_MS);\n return () => clearTimeout(timer);\n }, [answer]);\n\n // Straight on to the message, since that is what the address was in the way\n // of. On a phone it also keeps the keyboard where it is: sending it away and\n // asking for it back is the whole screen bouncing twice for nothing.\n // `preventScroll`, because the browser's idea of bringing a field into view\n // is to scroll a page that is holding a sheet still.\n useEffect(() => {\n if (answer !== \"saved\" || askForEmail) return;\n draftRef.current?.focus({ preventScroll: true });\n }, [answer, askForEmail]);\n\n async function send() {\n if (!canSend) return;\n // Quiet locally only: the message itself is the stop, server side.\n typing.settle();\n\n const body = draft.trim();\n try {\n await onSend?.(body, attachments.files);\n } catch {\n // The notice above the composer says why it failed. The draft stays\n // where it was written.\n return;\n }\n\n // Only what was sent is cleared: anything typed while the message was in\n // flight is the next draft, not part of the one that just went.\n setDraft((now) => (now.trim() === body ? \"\" : now));\n attachments.clear();\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLTextAreaElement>) {\n if (event.key !== \"Enter\") return;\n // Shift for a new line, and never while an IME is open, where Enter is\n // accepting a candidate rather than finishing the message.\n if (event.shiftKey || event.nativeEvent.isComposing) return;\n\n event.preventDefault();\n void send();\n }\n\n function handlePick(event: ChangeEvent<HTMLInputElement>) {\n if (event.target.files?.length) attachments.add(event.target.files);\n // Cleared so picking the same file twice in a row still fires a change.\n event.target.value = \"\";\n }\n\n return (\n // The whole foot of the panel takes a drop, not just the pill: the pill is\n // a thin thing to aim a file at, and the chips that appear sit up here\n // anyway. Paste rides on the same element, so it is caught wherever the\n // caret happens to be inside the composer. None of that while the email\n // is asked for: there is no message yet to attach anything to.\n <div\n className=\"flex shrink-0 flex-col gap-1.5 px-3 pt-1 pb-3\"\n {...(isAsking ? {} : target.targetProps)}\n >\n {!isAsking && attachments.drafts.length > 0 && (\n <ul className=\"flex flex-wrap gap-1.5 px-1\">\n {attachments.drafts.map((item) => (\n <li key={item.id} className=\"min-w-0\">\n <AttachmentDraftChip\n draft={item}\n onRemove={() => attachments.remove(item.id)}\n />\n </li>\n ))}\n </ul>\n )}\n\n <div className=\"relative\">\n {/* The slot the notch lives in: the full width of the pill, ending two\n pixels inside its top edge, and clipped.\n\n That clip is the whole trick. The notch does not fade and does not\n need to: it slides down the height of itself and the slot cuts it\n off exactly where the pill begins, so it goes into the composer\n rather than off it. Coming back it comes up out of the same seam.\n The two pixels are what guarantee no hairline of daylight between\n the two shapes, and they are behind the pill, which paints over\n them. */}\n <div\n aria-hidden={!showTab}\n inert={!showTab}\n // The headroom is for the spring: the notch passes where it lands on\n // the way up, and a clip tight to its resting height would flatten\n // the top edge for those few frames.\n className=\"pointer-events-none absolute inset-x-0 bottom-full z-0 -mb-0.5 flex items-end justify-center overflow-hidden pt-2\"\n >\n {/* Square at the bottom and no bottom hairline: that edge is the\n seam with the pill, not an edge of its own. */}\n <div\n className={cn(\n \"grid max-w-[calc(100%-2rem)] select-none\",\n \"rounded-t-2xl border border-b-0 bg-muted px-3 pt-1.5 pb-2 text-sm text-muted-foreground\",\n showTab ? RISE : SINK,\n !showTab && \"translate-y-full\",\n )}\n >\n {/* One line tall and clipped, so the phrases roll through it.\n\n Both share the cell, so the notch is as wide as the longer of\n the two and holds that width while they change: the words move\n inside a shape that does not. Each is centred, so the short one\n sits in the middle of the notch rather than off to its left. */}\n <span className=\"grid overflow-hidden\">\n <span\n aria-hidden={isSaved}\n className={cn(\n \"col-start-1 row-start-1 flex items-center gap-2 justify-self-center\",\n ROLL,\n isSaved && \"-translate-y-full\",\n )}\n >\n <EnvelopeSimple aria-hidden className=\"size-4 shrink-0\" />\n <span className=\"truncate\">Enter your email</span>\n </span>\n\n <span\n aria-hidden={!isSaved}\n className={cn(\n \"col-start-1 row-start-1 flex items-center gap-2 justify-self-center\",\n ROLL,\n !isSaved && \"translate-y-full\",\n )}\n >\n <Check aria-hidden className=\"size-4 shrink-0\" />\n <span className=\"truncate\">Saved</span>\n </span>\n </span>\n </div>\n </div>\n\n {/* The same surface as the panel behind it, so the composer is a shape\n rather than a slab. Painted rather than left transparent, since it\n is what hides the foot of the tab. A grid with both composers in\n one cell: they sit exactly on top of each other, same height, so\n the swap moves nothing. Whichever one is waiting wears `inert`,\n which takes it out of the tab order and the accessibility tree\n along with the pointer events. */}\n <div\n className={cn(\n TEXT_FIELD_SHELL,\n \"relative z-10 grid items-center rounded-3xl bg-card p-1.5 transition-colors dark:bg-card\",\n // The pill lights up rather than the whole foot of the panel, so a\n // file being dragged in points at the thing it is about to join.\n !isAsking &&\n target.isDropTarget &&\n \"border-ring bg-muted/60 ring-1 ring-ring dark:bg-muted/60\",\n )}\n >\n {/* The message half. Both halves travel down together, the same way\n the notch above them goes, so an answer settles the whole thing\n rather than sending three pieces of it in three directions. */}\n <div\n aria-hidden={isAsking}\n inert={isAsking}\n className={cn(\n \"col-start-1 row-start-1 flex items-end gap-1.5\",\n SWAP,\n isAsking && \"-translate-y-1 opacity-0 pointer-events-none\",\n )}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n tabIndex={-1}\n onChange={handlePick}\n className=\"sr-only\"\n />\n <WidgetButton\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => fileInputRef.current?.click()}\n aria-label=\"Add an attachment\"\n className=\"rounded-full text-muted-foreground hover:rotate-90 motion-reduce:hover:rotate-0\"\n >\n <Plus />\n </WidgetButton>\n\n <Textarea\n ref={draftRef}\n rows={1}\n value={draft}\n onChange={(event) => {\n setDraft(event.target.value);\n typing.ping();\n }}\n onKeyDown={handleKeyDown}\n // The same swap the inbox does, so both ends of a conversation\n // confirm a drop the same way.\n placeholder={\n target.isDropTarget ? \"Drop to attach\" : placeholder\n }\n aria-label=\"Message\"\n // 16px on phones, and in pixels: any focused field smaller than\n // that makes iOS zoom the host's whole page in, and a host who has\n // resized their root rem would smuggle the zoom back past `text-base`.\n className=\"max-h-32 min-h-8 flex-1 px-1 py-1.5 max-sm:text-[16px]\"\n />\n\n {/* Pops in as the first character lands, rather than sitting there\n greyed out waiting to be earned. */}\n <WidgetButton\n type=\"button\"\n size=\"icon\"\n disabled={!canSend}\n onClick={() => void send()}\n aria-label=\"Send message\"\n className={cn(\n \"rounded-full\",\n canSend\n ? \"scale-100 opacity-100\"\n : \"scale-90 opacity-40 motion-reduce:scale-100\",\n )}\n >\n <ArrowUp />\n </WidgetButton>\n </div>\n\n {/* The answer half. */}\n <div\n aria-hidden={!isAsking}\n inert={!isAsking}\n className={cn(\n \"col-start-1 row-start-1 flex items-center gap-1.5\",\n SWAP,\n !isAsking && \"pointer-events-none translate-y-1 opacity-0\",\n )}\n >\n <input\n type=\"email\"\n value={email}\n onChange={(event) => setEmail(event.target.value)}\n onKeyDown={(event) => {\n if (event.key !== \"Enter\" || event.nativeEvent.isComposing)\n return;\n event.preventDefault();\n submitEmail();\n }}\n placeholder=\"you@example.com\"\n aria-label=\"Email address\"\n autoComplete=\"email\"\n spellCheck={false}\n // The same rule as the message field, for the same reason.\n className=\"h-8 min-w-0 flex-1 px-1 outline-none placeholder:text-muted-foreground max-sm:text-[16px]\"\n />\n\n <WidgetButton\n type=\"button\"\n size=\"icon\"\n disabled={!isValid}\n onClick={() => submitEmail()}\n aria-label=\"Continue with this email\"\n className={cn(\n \"rounded-full\",\n isValid\n ? \"scale-100 opacity-100\"\n : \"scale-90 opacity-40 motion-reduce:scale-100\",\n )}\n >\n <ArrowUp />\n </WidgetButton>\n </div>\n </div>\n </div>\n\n {showBadge && <PoweredByMedian />}\n </div>\n );\n}\n","import { forwardRef, type ImgHTMLAttributes } from \"react\";\n\n/**\n * Stands in for `next/image` when the widget is bundled for npm, via the\n * `paths` entry in this package's tsconfig. The app renders avatars and\n * marks through the framework's image pipeline; the package has no framework,\n * and everything in the widget's closure is an avatar, a mark, or an object\n * URL that never left the browser, all of which a plain img carries the same.\n *\n * Next-only props are swallowed here so they do not land on a DOM element\n * that has never heard of them.\n */\ntype NextOnlyProps = {\n unoptimized?: boolean;\n priority?: boolean;\n quality?: number | string;\n placeholder?: string;\n blurDataURL?: string;\n fill?: boolean;\n loader?: unknown;\n};\n\nconst Image = forwardRef<\n HTMLImageElement,\n ImgHTMLAttributes<HTMLImageElement> & NextOnlyProps\n>(function Image(\n {\n unoptimized: _unoptimized,\n priority: _priority,\n quality: _quality,\n placeholder: _placeholder,\n blurDataURL: _blurDataURL,\n fill: _fill,\n loader: _loader,\n ...props\n },\n ref,\n) {\n return <img ref={ref} {...props} />;\n});\n\nexport default Image;\n","\"use client\";\n\nimport Image from \"next/image\";\nimport { File, ImageSquare, Play, WarningCircle, X } from \"@/components/icons\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport type { AttachmentDraft } from \"./use-attachment-drafts\";\n\nconst KIND_ICONS = {\n image: ImageSquare,\n video: Play,\n file: File,\n};\n\n/**\n * One staged file, with a thumbnail where there is one and a way out.\n *\n * `max-w-full` so the chip gives up its preferred width inside something\n * narrow, like the support widget, rather than pushing out of the box.\n */\nexport function AttachmentDraftChip({\n draft,\n onRemove,\n className,\n}: {\n draft: AttachmentDraft;\n onRemove: () => void;\n className?: string;\n}) {\n const hasError = draft.error !== null;\n const Glyph = hasError ? WarningCircle : KIND_ICONS[draft.kind];\n\n return (\n <div\n className={cn(\n \"flex w-48 max-w-full items-center gap-2 rounded-lg border bg-card/60 p-1.5\",\n \"animate-in fade-in-0 zoom-in-95 duration-200 ease-out motion-reduce:animate-none\",\n hasError && \"border-destructive/40\",\n className,\n )}\n >\n {draft.previewUrl ? (\n // Object URLs cannot be optimised, and there is nothing to optimise:\n // the file has not left the browser.\n <Image\n src={draft.previewUrl}\n alt=\"\"\n width={64}\n height={64}\n unoptimized\n className=\"size-8 shrink-0 rounded-md object-cover\"\n />\n ) : (\n <span className=\"grid size-8 shrink-0 place-items-center rounded-md bg-muted\">\n <Glyph\n className={cn(\n \"size-4\",\n hasError ? \"text-destructive\" : \"text-muted-foreground\",\n )}\n />\n </span>\n )}\n\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <p className=\"truncate text-xs font-medium\">{draft.name}</p>\n <p\n className={cn(\n \"truncate text-xs\",\n hasError ? \"text-destructive\" : \"text-muted-foreground\",\n )}\n >\n {draft.error ?? draft.size}\n </p>\n </div>\n\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={onRemove}\n aria-label={`Remove ${draft.name}`}\n className=\"shrink-0 rounded-full text-muted-foreground\"\n >\n <X />\n </Button>\n </div>\n );\n}\n","\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport type { AttachmentKind } from \"./types\";\n\nconst MAX_BYTES = 25 * 1024 * 1024;\n\nexport type AttachmentDraft = {\n id: string;\n /** The file itself, kept so a caller can hand it on once it is sent. */\n file: File;\n name: string;\n size: string;\n kind: AttachmentKind;\n /** An object URL for pictures, so the chip can show what was picked. */\n previewUrl: string | null;\n /** Set when the file cannot be sent. Shown on the chip in place of the size. */\n error: string | null;\n};\n\nlet nextDraftId = 0;\n\n/**\n * Bytes, written the way a person would say them. Exported because whoever\n * receives a sent file has to label it the same way the chip that staged it\n * did, or the same file changes size on its way into the thread.\n */\nexport function formatFileSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n\n const units = [\"KB\", \"MB\", \"GB\"];\n let value = bytes / 1024;\n let unit = 0;\n\n while (value >= 1024 && unit < units.length - 1) {\n value /= 1024;\n unit += 1;\n }\n\n return `${value < 10 ? value.toFixed(1) : Math.round(value)} ${units[unit]}`;\n}\n\n/** What a file is, from its MIME type. Anything unrecognised is just a file. */\nexport function attachmentKindOf(type: string): AttachmentKind {\n if (type.startsWith(\"image/\")) return \"image\";\n if (type.startsWith(\"video/\")) return \"video\";\n return \"file\";\n}\n\nfunction release(draft: AttachmentDraft) {\n if (draft.previewUrl) URL.revokeObjectURL(draft.previewUrl);\n}\n\n/**\n * Files staged on a composer, from either the picker or a drop. Shared by the\n * agent's composer in the inbox and the visitor's in the support widget, so\n * the two agree on what is too big and what a size looks like written down.\n *\n * Nothing is uploaded: a draft is checked, previewed and then thrown away when\n * the message is sent. A file that fails the check stays in the list wearing\n * its reason, so it gets read rather than silently dropped.\n *\n * `files` hands back the originals in the same order, which is what a caller\n * passes on once there is somewhere to send them.\n */\nexport function useAttachmentDrafts() {\n const [drafts, setDrafts] = useState<AttachmentDraft[]>([]);\n\n // Object URLs outlive the elements that used them, so any still open when\n // the composer goes away get revoked on the way out.\n const draftsRef = useRef(drafts);\n useEffect(() => {\n draftsRef.current = drafts;\n }, [drafts]);\n useEffect(() => () => draftsRef.current.forEach(release), []);\n\n function add(files: FileList | File[]) {\n const picked = Array.from(files).map((file): AttachmentDraft => {\n const isTooBig = file.size > MAX_BYTES;\n const kind = attachmentKindOf(file.type);\n\n return {\n id: `draft-${(nextDraftId += 1)}`,\n file,\n name: file.name,\n size: formatFileSize(file.size),\n kind,\n previewUrl:\n kind === \"image\" && !isTooBig ? URL.createObjectURL(file) : null,\n error: isTooBig\n ? `Larger than the ${formatFileSize(MAX_BYTES)} limit`\n : null,\n };\n });\n\n setDrafts([...drafts, ...picked]);\n }\n\n function remove(id: string) {\n const going = drafts.find((draft) => draft.id === id);\n if (going) release(going);\n setDrafts(drafts.filter((draft) => draft.id !== id));\n }\n\n function clear() {\n drafts.forEach(release);\n setDrafts([]);\n }\n\n return {\n drafts,\n add,\n remove,\n clear,\n /** The originals, in the order they were picked. */\n files: drafts.map((draft) => draft.file),\n /** True while something in the list cannot be sent. */\n hasBlocker: drafts.some((draft) => draft.error !== null),\n };\n}\n","\"use client\";\n\nimport { useRef, useState, type ClipboardEvent, type DragEvent } from \"react\";\n\n/**\n * The two ways a file arrives that are not the picker: dragged onto the\n * composer, or pasted into it. Both are how somebody who has just taken a\n * screenshot expects to send it, and neither should need the plus button.\n *\n * Shared by the inbox and the widget, so a screenshot lands the same way on\n * both sides of a conversation. This only notices and collects; what becomes\n * of the files is the caller's business, which is what lets an internal note\n * turn them away.\n */\nexport function useAttachmentTarget({\n onFiles,\n disabled = false,\n}: {\n onFiles: (files: File[]) => void;\n /** Somewhere a file is not welcome, like a note the backend keeps to words. */\n disabled?: boolean;\n}) {\n const [isDropTarget, setIsDropTarget] = useState(false);\n\n // Dragging over a child element fires leave on the parent, so the highlight\n // counts its way in and out rather than trusting a single leave to mean the\n // pointer has actually gone.\n const depth = useRef(0);\n\n function handleDragEnter(event: DragEvent<HTMLElement>) {\n // Dragging a selection of text across the page is not an attachment.\n if (disabled || !event.dataTransfer.types.includes(\"Files\")) return;\n depth.current += 1;\n setIsDropTarget(true);\n }\n\n function handleDragLeave() {\n depth.current = Math.max(0, depth.current - 1);\n if (depth.current === 0) setIsDropTarget(false);\n }\n\n function handleDrop(event: DragEvent<HTMLElement>) {\n event.preventDefault();\n depth.current = 0;\n setIsDropTarget(false);\n if (disabled) return;\n\n const files = Array.from(event.dataTransfer.files);\n if (files.length > 0) onFiles(files);\n }\n\n function handlePaste(event: ClipboardEvent<HTMLElement>) {\n if (disabled) return;\n\n // Ordinary text carries no files, and is left alone entirely: caret,\n // selection, undo history and all. A screenshot does carry one, and\n // taking it means the markup the clipboard came with does not also end\n // up in the message.\n const files = Array.from(event.clipboardData.files);\n if (files.length === 0) return;\n\n event.preventDefault();\n onFiles(files);\n }\n\n return {\n /** True while something is being dragged over it, for the highlight. */\n isDropTarget,\n /** Spread onto whatever counts as the target. */\n targetProps: {\n onDragEnter: handleDragEnter,\n onDragLeave: handleDragLeave,\n // Without this the browser refuses the drop and opens the file instead,\n // taking the page, and whatever was being written, with it.\n onDragOver: (event: DragEvent<HTMLElement>) => event.preventDefault(),\n onDrop: handleDrop,\n onPaste: handlePaste,\n },\n };\n}\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"@/lib/utils\";\n\n/**\n * The widget's own button, deliberately forked from `ui/button`.\n *\n * The widget ships on other people's sites, so its look is a contract with\n * them, not with our chrome. When the app restyles its buttons, the widget\n * must not come along for the ride; this file is where it stays put.\n */\nconst widgetButtonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline:\n \"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)] aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost:\n \"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50\",\n destructive:\n \"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default:\n \"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n xs: \"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\",\n lg: \"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-[min(var(--radius-md),10px)] [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-7 rounded-[min(var(--radius-md),12px)]\",\n \"icon-lg\": \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction WidgetButton({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof widgetButtonVariants> & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n <Comp\n data-slot=\"widget-button\"\n data-variant={variant}\n data-size={size}\n className={cn(widgetButtonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { WidgetButton, widgetButtonVariants };\n","/**\n * The shell every text field wears: surface, border, and focus outline. Kept\n * in one place so a single line box and a multi line composer cannot drift\n * into different colours.\n *\n * `focus-within` rather than `focus-visible`, so it reads the same whether the\n * element wearing it is the field itself or the box around one. For a text\n * field the two fire together anyway.\n */\nexport const TEXT_FIELD_SHELL = [\n \"rounded-lg border border-input bg-transparent text-sm transition-[color,box-shadow] outline-none dark:bg-input/30\",\n \"placeholder:text-muted-foreground\",\n // Focus recolours the hairline rather than adding a ring on top of it, so\n // the outline stays exactly 1px and nothing swells on click.\n \"focus-within:border-ring\",\n \"aria-invalid:border-destructive\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n].join(\" \");\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\n/**\n * Grows with its content up to `max-h`, courtesy of `field-sizing-content`.\n * Browsers without it fall back to the `rows` the caller sets.\n */\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"field-sizing-content w-full resize-none bg-transparent text-sm outline-none\",\n \"placeholder:text-muted-foreground\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","\"use client\";\n\nimport { useCallback, useEffect, useRef } from \"react\";\n\n/** Refreshed well inside the server's TTL, without spamming a mutation. */\nconst REFRESH_MS = 2500;\n/**\n * This long without a keystroke means the sentence stalled. Generous on\n * purpose: dots that vanish at every thinking pause and pop back at the next\n * key read as flicker, not presence.\n */\nconst IDLE_MS = 8000;\n\n/**\n * Turns keystrokes into a calm typing signal: `ping` on every change sends\n * \"typing\" at most every couple of seconds, going quiet after a pause, on\n * `stop`, and on unmount.\n *\n * `settle` goes quiet locally without announcing it. That is for sending:\n * the message itself is the stop, and racing a \"stopped typing\" mutation in\n * ahead of it would delete the pending bubble the reply is about to fill,\n * which is the difference between a bubble that morphs and one that flashes.\n *\n * Failures are swallowed on purpose. A typing indicator is decoration, and\n * decoration does not get to put errors in front of anyone.\n */\nexport function useTypingSignal(onChange?: (isTyping: boolean) => unknown) {\n // Held in a ref so ping and stop keep stable identities while the caller\n // re-renders with fresh closures.\n const onChangeRef = useRef(onChange);\n useEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n const isTypingRef = useRef(false);\n const lastSentRef = useRef(0);\n const idleTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const send = useCallback((isTyping: boolean) => {\n try {\n void Promise.resolve(onChangeRef.current?.(isTyping)).catch(() => {});\n } catch {\n // Decorative; see above.\n }\n }, []);\n\n /** Goes quiet without telling anyone. The send that follows says it. */\n const settle = useCallback(() => {\n if (idleTimer.current) clearTimeout(idleTimer.current);\n idleTimer.current = null;\n isTypingRef.current = false;\n lastSentRef.current = 0;\n }, []);\n\n const stop = useCallback(() => {\n const wasTyping = isTypingRef.current;\n settle();\n if (wasTyping) send(false);\n }, [send, settle]);\n\n const ping = useCallback(() => {\n if (idleTimer.current) clearTimeout(idleTimer.current);\n idleTimer.current = setTimeout(stop, IDLE_MS);\n\n const now = Date.now();\n if (!isTypingRef.current || now - lastSentRef.current > REFRESH_MS) {\n isTypingRef.current = true;\n lastSentRef.current = now;\n send(true);\n }\n }, [send, stop]);\n\n useEffect(() => () => stop(), [stop]);\n\n return { ping, stop, settle };\n}\n","import Image from \"next/image\";\n\n/** The artwork is solid black, so it gets inverted for dark mode. */\nconst INVERT_IN_DARK = \"dark:invert\";\n\nexport function Wordmark({\n width = 132,\n className = \"\",\n}: {\n width?: number;\n className?: string;\n}) {\n return (\n <Image\n src=\"/median-wordmark.svg\"\n alt=\"Median\"\n width={width}\n height={Math.round((width * 58) / 253)}\n className={`${INVERT_IN_DARK} ${className}`}\n draggable={false}\n priority\n />\n );\n}\n\nexport function Logo({\n size = 104,\n className = \"\",\n}: {\n size?: number;\n className?: string;\n}) {\n return (\n <Image\n src=\"/median-logo.svg\"\n alt=\"\"\n width={size}\n height={size}\n className={`${INVERT_IN_DARK} ${className}`}\n draggable={false}\n priority\n />\n );\n}\n","import { Logo, Wordmark } from \"@/components/brand\";\nimport { cn } from \"@/lib/utils\";\n\nconst MEDIAN_URL = \"https://median.sh\";\n\n/**\n * Our name on somebody else's site, so it sits under the composer rather than\n * inside it: a quiet line at the foot of the panel, not a control.\n *\n * It opens in a new tab, since a visitor who taps it is halfway through asking\n * for help and should not lose the page they were on.\n */\nexport function PoweredByMedian({ className }: { className?: string }) {\n return (\n <a\n href={MEDIAN_URL}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n className={cn(\n \"flex items-center justify-center gap-1.5 rounded-md py-1 text-xs text-muted-foreground\",\n \"transition-opacity hover:opacity-70\",\n \"focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none\",\n className,\n )}\n >\n Powered by\n <Logo size={12} className=\"opacity-80\" />\n <Wordmark width={40} className=\"opacity-80\" />\n </a>\n );\n}\n","\"use client\";\n\nimport Image from \"next/image\";\nimport { useState } from \"react\";\nimport { InitialBadge } from \"@/components/initial-badge\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * A profile photo, falling back to a letter if there is no image or it fails\n * to load. `className` lands last on both branches, so a caller can override\n * the size and the letter's type scale together.\n */\nexport function Avatar({\n src,\n name,\n sourceSize = 48,\n unoptimized = false,\n className,\n}: {\n src: string | null;\n name: string;\n /** Intrinsic pixels to request. Aim for twice the rendered size. */\n sourceSize?: number;\n /**\n * Serve the picture as it came rather than through the image optimizer.\n * For faces from somebody else's site: the optimizer only fetches hosts\n * next.config names, and a customer's picture could be on any of them.\n */\n unoptimized?: boolean;\n className?: string;\n}) {\n // Which picture failed, rather than whether one did. A plain boolean never\n // cleared itself, so one bad response left the letter in place for the life\n // of the component: switch organizations and the next face inherited the\n // last one's failure, and a picture that was fine again stayed a letter\n // until the whole page reloaded.\n const [failedSrc, setFailedSrc] = useState<string | null>(null);\n const hasFailed = failedSrc !== null && failedSrc === src;\n const shape = \"size-4.5 shrink-0 rounded-full\";\n\n if (!src || hasFailed) {\n return (\n <InitialBadge\n value={name}\n className={cn(shape, \"border-none bg-muted text-[10px]\", className)}\n />\n );\n }\n\n return (\n <Image\n src={src}\n alt=\"\"\n width={sourceSize}\n height={sourceSize}\n unoptimized={unoptimized}\n onError={() => setFailedSrc(src)}\n draggable={false}\n className={cn(shape, \"bg-muted object-cover\", className)}\n />\n );\n}\n","import { cn } from \"@/lib/utils\";\n\n/**\n * A letter stand in for an avatar. Decorative: the readable name always sits\n * next to it, so this stays out of the accessibility tree.\n */\nexport function InitialBadge({\n value,\n className,\n}: {\n value: string;\n className?: string;\n}) {\n return (\n <span\n aria-hidden\n className={cn(\n // Sized to match UserAvatar, since the two sit side by side in the nav.\n \"grid size-4.5 shrink-0 place-items-center rounded border text-[10px] font-semibold text-muted-foreground\",\n className,\n )}\n >\n {value.trim().charAt(0).toUpperCase() || \"?\"}\n </span>\n );\n}\n","import { Avatar } from \"@/components/avatar\";\nimport { Sparkle } from \"@/components/icons\";\nimport { cn } from \"@/lib/utils\";\nimport type { SupportAgent } from \"./types\";\n\n/**\n * An agent's face, or a mark where the AI is concerned. Squares rather than\n * the circles the inbox uses: the widget sits on somebody else's site next to\n * their own chrome, and a rounded square reads as a product mark there instead\n * of as another person's photo.\n *\n * Sizing comes from `className` so a caller can pick one scale for the header\n * and a smaller one for a read receipt. `label` overrides the name a screen\n * reader hears, which is how a receipt says \"Seen by Median AI\" from the same\n * one element rather than announcing the name twice.\n */\nexport function WidgetAvatar({\n agent,\n label,\n className,\n}: {\n agent: SupportAgent;\n label?: string;\n className?: string;\n}) {\n const shape = \"size-7 shrink-0 rounded-lg\";\n\n // The AI wears the mark until somebody gives it a face in settings; a\n // configured picture takes over and renders like anyone else's.\n if (agent.kind === \"ai\" && !agent.avatarUrl) {\n return (\n <span\n role=\"img\"\n aria-label={label ?? agent.name}\n className={cn(\n \"grid place-items-center bg-foreground text-background\",\n shape,\n className,\n )}\n >\n <Sparkle className=\"size-[55%]\" />\n </span>\n );\n }\n\n // Wrapped rather than labelled directly, because Avatar renders a decorative\n // image and has no name of its own to override.\n return (\n <span\n role=\"img\"\n aria-label={label ?? agent.name}\n className={cn(\"inline-flex\", shape, className)}\n >\n <Avatar\n src={agent.avatarUrl}\n name={agent.name}\n className=\"size-full rounded-[inherit]\"\n />\n </span>\n );\n}\n\n/**\n * Who is around, in the corner of the header. A row rather than an overlap,\n * since two or three faces read more clearly side by side at this size.\n */\nexport function WidgetAvatarStack({\n team,\n className,\n}: {\n team: SupportAgent[];\n className?: string;\n}) {\n if (team.length === 0) return null;\n\n return (\n <div className={cn(\"flex items-center gap-1\", className)}>\n {team.map((agent) => (\n <WidgetAvatar key={agent.id} agent={agent} className=\"size-8\" />\n ))}\n </div>\n );\n}\n","import type { ComponentType } from \"react\";\nimport { Bug, CaretRight, ChatCircleDots, Lightbulb } from \"@/components/icons\";\nimport { cn } from \"@/lib/utils\";\nimport { WidgetAvatar } from \"./widget-avatar\";\nimport { WidgetButton } from \"./widget-button\";\nimport type { SupportAgent } from \"./types\";\n\n/**\n * The three things people open a support widget to do, and the message each\n * row sends.\n *\n * The messages are written as something a person would actually type, since\n * that is exactly what they become: the row sends it and the agent takes it\n * from there.\n */\nconst STARTERS: {\n label: string;\n glyph: ComponentType<{ className?: string }>;\n message: string;\n}[] = [\n {\n label: \"Ask a question\",\n glyph: ChatCircleDots,\n message: \"I have a question\",\n },\n {\n label: \"Report a bug\",\n glyph: Bug,\n message: \"I want to report a bug\",\n },\n {\n label: \"Make a suggestion\",\n glyph: Lightbulb,\n message: \"I have a suggestion\",\n },\n];\n\n/**\n * A conversation with nothing in it yet.\n *\n * Who is about to answer, and three ways to start. The AI goes first because\n * it is the one that always replies; a team of only people falls back to\n * whoever is at the front.\n *\n * The invitation names the organization, because that is the whole of what\n * the agent will talk about. Saying so here is cheaper than declining later.\n *\n * The rows send rather than fill the box in. Somebody who knows what they\n * want types it; somebody who is looking at three rows wants the shortest\n * way to the first reply.\n */\nexport function WidgetEmpty({\n team,\n orgName,\n onPick,\n isSending = false,\n isWaiting = false,\n}: {\n team: SupportAgent[];\n /** Whose site this is, so the invitation can say what it covers. */\n orgName?: string;\n /** Omit to leave the rows off, for a widget with nowhere to send them. */\n onPick?: (message: string) => void;\n /** Holds the rows while a message is on its way. */\n isSending?: boolean;\n /**\n * Holds them for something else the visitor has to do first, which is the\n * composer's question. The rows stay where they are while it is up rather\n * than arriving once it is answered: three rows appearing in a column that\n * centres itself would shove everything above them up the panel, and an\n * answer should not move the furniture.\n */\n isWaiting?: boolean;\n}) {\n const agent = team.find((member) => member.kind === \"ai\") ?? team[0];\n\n return (\n <div className=\"flex min-h-0 flex-1 flex-col items-center justify-center gap-4 px-5 pb-2 text-center\">\n {agent && (\n <WidgetAvatar\n agent={agent}\n className=\"size-14 animate-in rounded-2xl duration-500 ease-out fade-in-0 zoom-in-95 motion-reduce:animate-none\"\n />\n )}\n\n {/* A beat behind the mark, so the two read as one thing settling rather\n than as a block appearing. Backwards fill holds it out of sight\n through the delay instead of showing it and taking it away. */}\n <div className=\"flex max-w-64 animate-in flex-col gap-1 delay-150 duration-500 ease-out fade-in-0 slide-in-from-bottom-2 fill-mode-backwards motion-reduce:animate-none\">\n {agent && (\n <p className=\"text-base font-semibold tracking-tight\">{agent.name}</p>\n )}\n <p className=\"text-sm text-balance text-muted-foreground\">\n {orgName ? `Ask me anything about ${orgName}.` : \"Ask me anything.\"}\n </p>\n </div>\n\n {onPick && (\n <div className=\"flex w-full flex-col gap-1.5 pt-1\">\n {STARTERS.map((starter, index) => (\n <WidgetButton\n key={starter.label}\n type=\"button\"\n variant=\"outline\"\n disabled={isSending || isWaiting}\n onClick={() => onPick(starter.message)}\n // Each one a beat behind the last, so the three deal out rather\n // than land as a block. Backwards fill keeps them out of sight\n // until their turn.\n style={{ animationDelay: `${300 + index * 60}ms` }}\n className={cn(\n \"group/row h-auto w-full animate-in justify-start gap-2.5 px-3 py-2.5 text-left\",\n \"duration-500 ease-out fade-in-0 slide-in-from-bottom-2 fill-mode-backwards motion-reduce:animate-none\",\n \"hover:border-foreground/15 hover:shadow-sm\",\n )}\n >\n <starter.glyph className=\"size-4 text-muted-foreground\" />\n <span className=\"min-w-0 flex-1 truncate\">{starter.label}</span>\n <CaretRight\n aria-hidden\n className=\"size-3 text-muted-foreground/50 transition-transform group-hover/row:translate-x-0.5\"\n />\n </WidgetButton>\n ))}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { ArrowsIn, ArrowsOut, X } from \"@/components/icons\";\nimport { WidgetButton } from \"./widget-button\";\nimport { cn } from \"@/lib/utils\";\nimport type { DragHandlers } from \"./use-launcher-drag\";\nimport { WidgetAvatarStack } from \"./widget-avatar\";\nimport type { SupportPresence } from \"./types\";\n\n/**\n * Who you are talking to, and the one way out. There is no way back, because\n * there is nothing behind it: a visitor gets one thread, not a queue of them.\n *\n * It is also the handle. A panel floating on somebody's page is in the way of\n * something eventually, and the strip along the top is where anyone would\n * reach for to move it. The close button and the faces stay their own: a press\n * that lands on a control belongs to that control, which the drag checks\n * before it takes hold of anything.\n */\nexport function WidgetHeader({\n presence,\n onClose,\n isExpanded = false,\n onToggleExpanded,\n grabHandlers,\n isMoving = false,\n}: {\n presence: SupportPresence;\n onClose?: () => void;\n /** Standing taller than it normally does. */\n isExpanded?: boolean;\n /** Omit to hide the control, for a widget whose size is not its own. */\n onToggleExpanded?: () => void;\n /** Omit for a widget that is framed rather than floating. */\n grabHandlers?: DragHandlers;\n isMoving?: boolean;\n}) {\n return (\n <header\n {...grabHandlers}\n className={cn(\n \"flex shrink-0 items-start gap-2 px-3 pt-3 pb-2\",\n grabHandlers && [\n // Nothing here is selectable while it is being used to drag, and the\n // browser must not claim the gesture for scrolling either. Both end\n // the same way: the drag becomes the page's instead of ours.\n \"touch-none select-none\",\n isMoving ? \"cursor-grabbing\" : \"cursor-grab\",\n ],\n )}\n >\n <div className=\"flex min-w-0 flex-1 flex-col pt-0.5\">\n <h2 className=\"truncate text-base font-semibold tracking-tight\">\n {presence.name}\n </h2>\n <p className=\"truncate text-sm text-muted-foreground\">\n {presence.status}\n </p>\n </div>\n\n <div className=\"flex shrink-0 items-center gap-2\">\n <WidgetAvatarStack team={presence.team} />\n\n {/* The controls sit closer to each other than to the faces, so they\n read as a pair rather than as the end of the row. */}\n <div className=\"flex items-center gap-0.5\">\n {onToggleExpanded && (\n <WidgetButton\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={onToggleExpanded}\n aria-pressed={isExpanded}\n aria-label={isExpanded ? \"Shrink the panel\" : \"Expand the panel\"}\n className=\"text-muted-foreground\"\n >\n {isExpanded ? <ArrowsIn /> : <ArrowsOut />}\n </WidgetButton>\n )}\n\n {onClose && (\n <WidgetButton\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={onClose}\n aria-label=\"Close support\"\n className=\"-mr-1 text-muted-foreground\"\n >\n <X />\n </WidgetButton>\n )}\n </div>\n </div>\n </header>\n );\n}\n","/**\n * Waiting on the conversation.\n *\n * The mark is painted by a gradient showing through a mask cut in its shape,\n * rather than by the artwork itself, so the band of light travels across the\n * logo instead of over the top of it. The gradient is angled, so sliding it\n * sideways reads as a diagonal sweep.\n *\n * One mark and nothing else. Skeleton bubbles would be guessing at a shape\n * nobody knows yet, and they always guess wrong.\n */\nexport function WidgetLoading() {\n return (\n <div className=\"grid min-h-0 flex-1 place-items-center p-6\">\n <span\n role=\"status\"\n aria-label=\"Loading the conversation\"\n style={{\n maskImage: \"url(/median-logo.svg)\",\n maskSize: \"contain\",\n maskRepeat: \"no-repeat\",\n maskPosition: \"center\",\n WebkitMaskImage: \"url(/median-logo.svg)\",\n WebkitMaskSize: \"contain\",\n WebkitMaskRepeat: \"no-repeat\",\n WebkitMaskPosition: \"center\",\n backgroundImage:\n \"linear-gradient(115deg, var(--muted) 34%, var(--muted-foreground) 50%, var(--muted) 66%)\",\n backgroundSize: \"300% 100%\",\n }}\n className=\"size-12 animate-shimmer motion-reduce:animate-none motion-reduce:bg-muted\"\n />\n </div>\n );\n}\n","import { LockSimple } from \"@/components/icons\";\nimport { WidgetButton } from \"./widget-button\";\nimport { PoweredByMedian } from \"./widget-badge\";\n\n/**\n * What a visitor meets when the host only takes questions from people who are\n * signed in.\n *\n * The same shape as the empty conversation it stands in for, and it arrives\n * the same way: the mark, then the words a beat behind it, then the one thing\n * to do about it. The button is only there when the host said where their\n * sign in lives, because a button that goes nowhere is worse than none.\n */\nexport function WidgetLocked({\n orgName,\n onSignIn,\n showBadge = true,\n}: {\n /** Whose site this is, so the line can name who is waiting. */\n orgName?: string;\n onSignIn?: () => void;\n /** The line the composer usually carries, which is not here to carry it. */\n showBadge?: boolean;\n}) {\n return (\n <div className=\"flex min-h-0 flex-1 flex-col\">\n <div className=\"flex min-h-0 flex-1 flex-col items-center justify-center gap-4 px-6 text-center\">\n <span className=\"grid size-14 animate-in place-items-center rounded-2xl bg-muted duration-500 ease-out fade-in-0 zoom-in-95 motion-reduce:animate-none\">\n <LockSimple className=\"size-6 text-muted-foreground\" />\n </span>\n\n <div className=\"flex max-w-64 animate-in flex-col gap-1 delay-150 duration-500 ease-out fade-in-0 slide-in-from-bottom-2 fill-mode-backwards motion-reduce:animate-none\">\n <p className=\"text-base font-semibold tracking-tight\">\n Sign in to chat\n </p>\n <p className=\"text-sm text-balance text-muted-foreground\">\n {orgName\n ? `Ask ${orgName} anything once you are signed in.`\n : \"Ask us anything once you are signed in.\"}\n </p>\n </div>\n\n {onSignIn && (\n <WidgetButton\n onClick={onSignIn}\n className=\"animate-in delay-300 duration-500 ease-out fade-in-0 slide-in-from-bottom-2 fill-mode-backwards motion-reduce:animate-none\"\n >\n Sign in\n </WidgetButton>\n )}\n </div>\n\n {showBadge && <PoweredByMedian className=\"shrink-0 px-3 pb-3\" />}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"@/lib/utils\";\n\n// The palette is greyscale on purpose, so badges separate by weight rather\n// than by hue. Anything that needs to shout can reach for `solid`.\nconst badgeVariants = cva(\n \"inline-flex w-fit shrink-0 items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium whitespace-nowrap [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3\",\n {\n variants: {\n variant: {\n default: \"bg-secondary text-secondary-foreground\",\n muted: \"bg-muted text-muted-foreground\",\n outline: \"border border-border text-muted-foreground\",\n solid: \"bg-primary text-primary-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Badge({\n className,\n variant = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot.Root : \"span\";\n\n return (\n <Comp\n data-slot=\"badge\"\n data-variant={variant}\n className={cn(badgeVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\nexport { Badge, badgeVariants };\n","\"use client\";\n\nimport { useState, type ReactNode } from \"react\";\nimport { File, ImageSquare, Play } from \"@/components/icons\";\nimport { cn } from \"@/lib/utils\";\nimport type { SupportAttachment } from \"./types\";\n\n/** Tiles sit on the panel colour so they read as objects inside the bubble. */\nconst SURFACE = \"rounded-xl border border-foreground/10 bg-card/70\";\n\n/**\n * Opens the file, for anything that has somewhere to be opened.\n *\n * A new tab, because this is running on somebody else's page and a visitor\n * halfway through asking for help should not lose it. No `download`: the file\n * is served from another origin, where browsers ignore that attribute, so it\n * would promise a save and quietly do something else.\n *\n * Falls through to the plain contents when there is no URL, which is a file\n * still on its way or one whose link could not be signed. Better a tile that\n * does nothing than a link that goes nowhere.\n */\nfunction OpenAttachment({\n attachment,\n className,\n children,\n}: {\n attachment: SupportAttachment;\n className?: string;\n children: ReactNode;\n}) {\n if (!attachment.url) return <>{children}</>;\n\n return (\n <a\n href={attachment.url}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n aria-label={`Open ${attachment.name}`}\n className={cn(\n \"block rounded-xl transition-opacity outline-none hover:opacity-80\",\n \"focus-visible:ring-3 focus-visible:ring-ring/50\",\n className,\n )}\n >\n {children}\n </a>\n );\n}\n\nfunction MediaTile({\n attachment,\n className,\n}: {\n attachment: SupportAttachment;\n className?: string;\n}) {\n const [hasFailed, setHasFailed] = useState(false);\n\n // A preview that will not load says so in place, rather than leaving a grey\n // rectangle to puzzle over.\n if (!attachment.previewUrl || hasFailed) {\n return (\n <div\n className={cn(\n SURFACE,\n \"flex flex-col items-center justify-center gap-1 px-2 text-center\",\n className,\n )}\n >\n <ImageSquare className=\"size-5 text-muted-foreground\" />\n <p className=\"text-xs text-muted-foreground\">Preview unavailable</p>\n </div>\n );\n }\n\n return (\n <figure className={cn(SURFACE, \"relative overflow-hidden\", className)}>\n {/* A plain img, not the framework's: a freshly picked file is an object\n URL that has not left the browser, so there is nothing for an image\n pipeline to do, and this file also ships in the npm package where\n there is no framework to ask. */}\n {/* eslint-disable-next-line @next/next/no-img-element -- an object URL or signed link, nothing for the optimizer to do, and the npm bundle has no next/image. */}\n <img\n src={attachment.previewUrl}\n alt={attachment.name}\n width={640}\n height={480}\n onError={() => setHasFailed(true)}\n draggable={false}\n className=\"size-full object-cover\"\n />\n\n {attachment.kind === \"video\" && (\n <span\n aria-hidden\n className=\"absolute inset-0 grid place-items-center bg-foreground/15\"\n >\n <span className=\"grid size-8 place-items-center rounded-full bg-background/85 shadow-sm\">\n <Play className=\"size-3.5 translate-x-px\" />\n </span>\n </span>\n )}\n </figure>\n );\n}\n\nfunction FileRow({ attachment }: { attachment: SupportAttachment }) {\n return (\n <OpenAttachment attachment={attachment}>\n <div className={cn(SURFACE, \"flex items-center gap-2 px-2 py-1.5\")}>\n <File className=\"size-4 shrink-0 text-muted-foreground\" />\n\n <div className=\"flex min-w-0 flex-1 flex-col text-left\">\n <p className=\"truncate text-xs font-medium\">{attachment.name}</p>\n <p className=\"truncate text-xs text-muted-foreground\">\n {attachment.size}\n </p>\n </div>\n </div>\n </OpenAttachment>\n );\n}\n\n/**\n * Everything hanging off a message. Pictures and clips get a tile, anything\n * else gets a named row.\n *\n * Tiles go shorter once they share a row, so a pair reads as a pair rather than\n * two letterboxes stacked in a box.\n */\nexport function WidgetAttachments({\n attachments,\n}: {\n attachments: SupportAttachment[];\n}) {\n const media = attachments.filter((one) => one.kind !== \"file\");\n const files = attachments.filter((one) => one.kind === \"file\");\n\n return (\n <div className=\"flex w-56 max-w-full flex-col gap-1.5\">\n {media.length > 0 && (\n <div className={cn(\"grid gap-1.5\", media.length > 1 && \"grid-cols-2\")}>\n {media.map((attachment) => (\n <OpenAttachment\n key={attachment.id}\n attachment={attachment}\n className={media.length > 1 ? \"h-20\" : \"h-32\"}\n >\n {/* Opens in a tab rather than a lightbox. The inbox has one\n because a teammate is working through a queue; a visitor is\n looking at a picture they sent a minute ago. */}\n <MediaTile attachment={attachment} className=\"size-full\" />\n </OpenAttachment>\n ))}\n </div>\n )}\n\n {files.map((attachment) => (\n <FileRow key={attachment.id} attachment={attachment} />\n ))}\n </div>\n );\n}\n","\"use client\";\n\nimport { useLayoutEffect, useRef, type ReactNode } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nconst MORPH_MS = 260;\n/**\n * Matches --ease-out-quint. A pure deceleration on purpose: a spring's\n * overshoot carries the box past its final size and back, and since the box\n * clips its contents that reads as the text being cut off and restored.\n */\nconst MORPH_EASING = \"cubic-bezier(0.22, 1, 0.36, 1)\";\n\n/** How long the new contents take to appear once the box has room for them. */\nconst CONTENT_FADE_MS = 140;\n\n/** Sub pixel differences are not worth an animation. */\nconst EPSILON = 1;\n\nfunction prefersReducedMotion(): boolean {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n}\n\n/**\n * Hand the contents back to the layout: no held width, no held opacity.\n *\n * Also what has to happen before measuring, since a box still pinned by the\n * last morph measures at the size that morph was holding it at.\n */\nfunction release(inner: HTMLElement) {\n inner.style.width = \"\";\n inner.style.boxSizing = \"\";\n inner.style.opacity = \"\";\n}\n\n/**\n * Hold the contents at the width they just laid out at, in full precision.\n *\n * The precision is the whole point. `offsetWidth` is rounded to a whole\n * pixel, and a bubble that sizes itself to its own text sits on a fractional\n * width far more often than not, so half the time that rounding goes down and\n * pins the text a hair narrower than the width it measured at. That is enough\n * to push the last word of a line onto the next one. It happens under the\n * pin, where it is hidden, so the box travels to the height it measured\n * before the wrap and the words spring back a line the moment the pin comes\n * off. The computed width is the used width, fractions and all, and it is\n * layout space rather than screen space, so an ancestor mid animation cannot\n * skew it either.\n *\n * Held as a content box so the number means the same thing going back in as\n * it did coming out, whatever padding the contents carry.\n */\nfunction pin(inner: HTMLElement) {\n const width = getComputedStyle(inner).width;\n inner.style.boxSizing = \"content-box\";\n inner.style.width = width;\n inner.style.opacity = \"0\";\n}\n\n/**\n * A bubble that grows into its new contents rather than snapping to them.\n *\n * `morphKey` is what it watches. Change it and the bubble measures where it\n * was, where it now is, and travels between the two. That is what turns three\n * bouncing dots into an answer: same element, same node, a different size.\n *\n * The contents wait, and they wait for the whole morph. React puts the new\n * text in at its full size the moment it arrives, so without this it is\n * already sitting there while the box is still growing, and the box, which\n * clips, wipes it into view a sliver at a time. Fading it in partway through\n * only moves the problem: a multi line reply is taller than the box until the\n * very end, so it fades in already cut off. The box travels first and the\n * words arrive in it once there is room for all of them.\n *\n * They are also pinned to the width they just laid out at for the duration.\n * Without that the text re-wraps on every frame while the box around it is\n * still moving, which looks far worse than no animation at all.\n */\nexport function MorphBubble({\n morphKey,\n className,\n contentClassName,\n children,\n}: {\n /** Derive it from the content, so any change to that content morphs. */\n morphKey: string;\n className?: string;\n contentClassName?: string;\n children: ReactNode;\n}) {\n const box = useRef<HTMLDivElement>(null);\n const content = useRef<HTMLDivElement>(null);\n const previous = useRef<{ width: number; height: number } | null>(null);\n const running = useRef<Animation[]>([]);\n\n useLayoutEffect(() => {\n const outer = box.current;\n const inner = content.current;\n if (!outer || !inner) return;\n\n // Where the box is right now, mid travel included, so a change that lands\n // during a morph carries on from what is on screen rather than from where\n // that morph happened to start.\n const from = running.current.length\n ? { width: outer.offsetWidth, height: outer.offsetHeight }\n : previous.current;\n\n // Everything the last morph was holding comes off before this one\n // measures, or \"the natural size of the new contents\" is really just the\n // size the last one was pinning them at.\n const interrupted = running.current;\n running.current = [];\n release(inner);\n for (const animation of interrupted) animation.cancel();\n\n const next = { width: outer.offsetWidth, height: outer.offsetHeight };\n previous.current = next;\n\n // Nothing to travel from on the first paint, and nothing to travel to if\n // the new contents happen to be the same size.\n if (!from) return;\n if (\n Math.abs(from.width - next.width) < EPSILON &&\n Math.abs(from.height - next.height) < EPSILON\n ) {\n return;\n }\n if (prefersReducedMotion()) return;\n\n // Set before the browser paints, so the new contents are never on screen\n // at full size for even one frame while the box is still small.\n pin(inner);\n\n const size = outer.animate(\n [\n { width: `${from.width}px`, height: `${from.height}px` },\n { width: `${next.width}px`, height: `${next.height}px` },\n ],\n { duration: MORPH_MS, easing: MORPH_EASING },\n );\n // Filled both ways on purpose. Backwards holds it invisible through the\n // delay, while the box is still moving. Forwards is what stops it\n // blinking at the other end: the inline opacity above is what hides it\n // before the animation starts, and without a forwards fill the finished\n // animation stops applying and that inline zero shows through again for\n // a frame before the cleanup below can clear it.\n const reveal = inner.animate([{ opacity: 0 }, { opacity: 1 }], {\n duration: CONTENT_FADE_MS,\n delay: MORPH_MS,\n easing: \"ease-out\",\n fill: \"both\",\n });\n\n running.current = [size, reveal];\n\n reveal.finished\n .catch(() => {})\n .finally(() => {\n if (!running.current.includes(reveal)) return;\n running.current = [];\n // Drop the inline hold first and only then the animation holding it\n // open, so there is never a frame where neither is keeping it up.\n release(inner);\n reveal.cancel();\n });\n }, [morphKey]);\n\n return (\n <div ref={box} className={cn(\"overflow-hidden\", className)}>\n <div ref={content} className={contentClassName}>\n {children}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { MorphBubble } from \"@/components/ui/morph-bubble\";\n\n/**\n * The widget's bubble. The morph itself is shared with the inbox, so both\n * sides of a conversation grow into a reply the same way; this only fixes\n * how the contents stack inside it.\n */\nexport function WidgetBubble({\n morphKey,\n className,\n children,\n}: {\n morphKey: string;\n className?: string;\n children: ReactNode;\n}) {\n return (\n <MorphBubble\n morphKey={morphKey}\n className={className}\n contentClassName=\"flex flex-col gap-2\"\n >\n {children}\n </MorphBubble>\n );\n}\n","import Link from \"next/link\";\nimport { Streamdown, type Components } from \"streamdown\";\n\nimport { staysInApp } from \"@/lib/links\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * Markdown, sized for a chat bubble. The agent and the team write it; this\n * renders it the same way in the widget and the inbox, so a reply reads\n * identically on both ends of the conversation.\n *\n * Streamdown underneath, because a reply can be read while it is still being\n * written: half-finished emphasis and an unclosed code fence render as what\n * they are becoming rather than as stray punctuation. Its own code block\n * chrome stays off; a copy button and line numbers are IDE furniture, not\n * chat.\n *\n * Everything stays at the bubble's own text size: a heading the model was\n * told not to write renders as a bold line rather than a headline, so a\n * disobedient reply is merely emphatic instead of enormous.\n *\n * Customer messages never come through here. What a visitor types is quoted\n * verbatim, asterisks and all; markdown is something the house voice writes.\n */\n\n/**\n * What a link wears, wherever it goes.\n *\n * The palette has no colour to spend on one, so the underline is the whole of\n * the signal and has to be worth reading as one: solid, at the text's own\n * weight, close enough under the words to belong to them. Nothing else in a\n * reply is underlined, which is what makes it mean something.\n */\nconst LINK =\n \"font-medium break-all underline decoration-foreground/60 decoration-1 underline-offset-[3px] transition-colors hover:decoration-foreground\";\n\n/** A stray heading becomes a bold line of body text, whatever its rank. */\nconst Flattened: Components[\"h1\"] = ({ children }) => (\n <p className=\"font-semibold\">{children}</p>\n);\n\n/**\n * Headings that are headings.\n *\n * Sized in `em` rather than in steps of the type scale, so they are a\n * proportion of whatever they are set in: the same markdown reads right in\n * the assistant's column and in a card half its size, and neither has to\n * know what the other chose.\n *\n * Two ranks and then a floor. Anything past the second level of an answer in\n * a chat is a list pretending to be an outline, and rendering six sizes\n * would only make that look deliberate.\n */\nconst RANKS: Components = {\n h1: ({ children }) => (\n <p className=\"mt-2 text-[1.25em] leading-tight font-semibold first:mt-0\">\n {children}\n </p>\n ),\n h2: ({ children }) => (\n <p className=\"mt-2 text-[1.1em] leading-snug font-semibold first:mt-0\">\n {children}\n </p>\n ),\n h3: ({ children }) => (\n <p className=\"mt-1 font-semibold first:mt-0\">{children}</p>\n ),\n h4: ({ children }) => <p className=\"font-semibold\">{children}</p>,\n h5: ({ children }) => <p className=\"font-semibold\">{children}</p>,\n h6: ({ children }) => <p className=\"font-semibold\">{children}</p>,\n};\n\nconst FLAT: Components = {\n h1: Flattened,\n h2: Flattened,\n h3: Flattened,\n h4: Flattened,\n h5: Flattened,\n h6: Flattened,\n};\n\nconst COMPONENTS: Components = {\n p: ({ children }) => <p className=\"break-words\">{children}</p>,\n\n /** A link, and whether it leaves. See `lib/links.ts` for the rule. */\n a: ({ children, href }) => {\n const to = href ?? \"\";\n\n return staysInApp(to) ? (\n <Link href={to} className={LINK}>\n {children}\n </Link>\n ) : (\n <a href={to} target=\"_blank\" rel=\"noopener noreferrer\" className={LINK}>\n {children}\n </a>\n );\n },\n\n ul: ({ children }) => (\n <ul className=\"list-disc space-y-1 pl-5\">{children}</ul>\n ),\n ol: ({ children, start }) => (\n <ol start={start} className=\"list-decimal space-y-1 pl-5\">\n {children}\n </ol>\n ),\n\n blockquote: ({ children }) => (\n <blockquote className=\"border-l-2 border-foreground/20 pl-3 text-foreground/80\">\n {children}\n </blockquote>\n ),\n\n // Inline code only. Streamdown's own bg-muted chip vanishes inside a\n // muted bubble, so the chip leans on the text colour instead. Fenced code\n // is left alone: Streamdown's block, with its language header and\n // highlighting, is the proper thing and needs no help.\n inlineCode: ({ children }) => (\n <code className=\"rounded bg-foreground/10 px-1 py-0.5 font-mono text-[0.85em]\">\n {children}\n </code>\n ),\n\n // A table is an object on the page rather than a stripe across it, so it\n // is boxed and it hugs what is in it. `w-fit` is the whole of that: two\n // columns of single digits stay two columns of single digits instead of\n // being stretched over the width of the reply, which is what makes a\n // three-row table read as a spreadsheet somebody dropped in.\n //\n // Every part of it is written down here, including the ones that were\n // being left to Streamdown. Its defaults are sized for a document with a\n // table in it: a grey header band, sm text, px-4 cells. In a thread that\n // is louder than the answer around it.\n table: ({ children }) => (\n <div className=\"w-fit max-w-full overflow-x-auto rounded-lg border\">\n <table className=\"w-full text-left text-xs\">{children}</table>\n </div>\n ),\n thead: ({ children }) => <thead className=\"bg-muted/50\">{children}</thead>,\n // The line under the head belongs to the head. Between rows it belongs to\n // the row above, and the last one has the box's own edge under it already.\n tr: ({ children }) => (\n <tr className=\"[&:not(:last-child)>td]:border-b\">{children}</tr>\n ),\n th: ({ children }) => (\n <th className=\"border-b px-3 py-2 font-medium whitespace-nowrap\">\n {children}\n </th>\n ),\n // Figures line up under each other, and a cell with a paragraph in it sits\n // against the top of its row rather than floating in the middle of one.\n td: ({ children }) => (\n <td className=\"px-3 py-2 align-top tabular-nums\">{children}</td>\n ),\n\n hr: () => <hr className=\"border-foreground/15\" />,\n\n img: ({ src, alt }) => (\n // eslint-disable-next-line @next/next/no-img-element -- arbitrary remote URL, nothing for the optimizer to do.\n <img src={src} alt={alt ?? \"\"} className=\"max-w-full rounded-lg\" />\n ),\n};\n\nexport function MessageMarkdown({\n body,\n className,\n headings = \"flatten\",\n}: {\n body: string;\n className?: string;\n /**\n * What to do with a heading. Flattened by default, which is what a bubble\n * wants: a customer reply that reaches for an H1 should read as emphatic,\n * not as a press release. `keep` is for the places an answer is a document\n * rather than a message, which is the assistant's own column.\n */\n headings?: \"flatten\" | \"keep\";\n}) {\n return (\n <Streamdown\n // The code block brings its own my-4, sized for prose; in a bubble the\n // column's gap is the spacing, so the margin goes.\n className={cn(\n \"flex min-w-0 flex-col gap-2 break-words\",\n \"[&>[data-streamdown=code-block]]:my-0\",\n className,\n )}\n components={{\n ...COMPONENTS,\n ...(headings === \"keep\" ? RANKS : FLAT),\n }}\n controls={false}\n lineNumbers={false}\n >\n {body}\n </Streamdown>\n );\n}\n","/**\n * Whether an address is one of ours.\n *\n * One rule, in one place, because two things lean on it and they have to\n * agree: a link inside a reply, and a row saying where a call went. Ours\n * open in the tab you are in, the way every other link in the app does.\n * Anything with a host on it leaves, and takes a new tab with it, so\n * following one never costs you a half-written reply.\n *\n * `//` is excluded on purpose. It looks like a path and is a protocol\n * relative URL, which is as external as it gets.\n */\nexport function staysInApp(href: string): boolean {\n return href.startsWith(\"/\") && !href.startsWith(\"//\");\n}\n","import { MessageMarkdown } from \"@/components/ui/message-markdown\";\nimport type { SupportSender } from \"./types\";\n\n/**\n * What was said.\n *\n * The agent's side renders markdown, because the house voice writes it: a\n * bold word, a short list, a line of code. The visitor's side is quoted\n * verbatim, asterisks and all, since nothing they type is markup.\n *\n * No animation of its own, on purpose. The bubble around it is already\n * growing and clipping as the words land, and anything fading or sliding in\n * here fights that: text appears, gets clipped, fades again. The morph is\n * the animation. The words just sit in it.\n */\nexport function WidgetMessageBody({\n body,\n sender,\n}: {\n body: string;\n sender: SupportSender;\n}) {\n if (sender === \"visitor\") {\n return <p className=\"break-words whitespace-pre-line\">{body}</p>;\n }\n\n return <MessageMarkdown body={body} />;\n}\n","/** Offsets, so the bounce travels along the row instead of all three hopping together. */\nconst DOTS = [0, 160, 320];\n\n/**\n * An agent mid sentence. It lives inside the reply's own bubble rather than in\n * a bubble of its own, which is what lets the bubble stay put and grow into the\n * answer when it arrives.\n */\nexport function WidgetTyping({ label }: { label: string }) {\n return (\n <span className=\"flex items-center gap-1 py-1.5\">\n <span className=\"sr-only\">{label}</span>\n\n {DOTS.map((delay) => (\n <span\n key={delay}\n aria-hidden\n style={{ animationDelay: `${delay}ms` }}\n className=\"size-1.5 animate-typing-dot rounded-full bg-foreground/45 motion-reduce:animate-none\"\n />\n ))}\n </span>\n );\n}\n","import { Badge } from \"@/components/ui/badge\";\nimport { LONE_MESSAGE, type MessageGroup } from \"@/lib/message-groups\";\nimport { cn } from \"@/lib/utils\";\nimport { WidgetAttachments } from \"./widget-attachments\";\nimport { WidgetAvatar } from \"./widget-avatar\";\nimport { WidgetBubble } from \"./widget-bubble\";\nimport { WidgetMessageBody } from \"./widget-message-body\";\nimport { WidgetTyping } from \"./widget-typing\";\nimport type { SupportMessage } from \"./types\";\n\n/**\n * Both bubbles keep the page's text colour and separate by surface instead.\n * The visitor's own is a step further from the panel than the agent's, which\n * tells the two apart without a slab of pure black in the light, or pure white\n * in the dark.\n */\nconst BUBBLE = \"max-w-[80%] rounded-2xl px-3.5 py-2 text-sm\";\nconst VISITOR_BUBBLE =\n \"bg-[color-mix(in_oklch,var(--muted),var(--foreground)_12%)]\";\n\n/**\n * New messages arrive rather than appear. Short and small on purpose: the\n * scroller is easing down to the newest message at the same time, and a bubble\n * travelling any further than this reads as a wobble against it rather than as\n * one thing arriving. Off for anyone who asked.\n */\nconst ARRIVES =\n \"animate-in fade-in-0 slide-in-from-bottom-1 duration-200 ease-out motion-reduce:animate-none\";\n\n/**\n * The break above a message, when there is one: a new day, or a conversation\n * that starts here because the one before it was resolved.\n *\n * One line either way, and never two stacked. A conversation starting is the\n * bigger of the two breaks, so it stands in for the date rather than sitting\n * under it.\n */\nexport function WidgetDivider({ message }: { message: SupportMessage }) {\n const label = message.startsConversation\n ? \"New conversation\"\n : message.dayLabel;\n if (!label) return null;\n\n return (\n <div className=\"flex items-center gap-3 py-1\">\n <span className=\"h-px flex-1 bg-border\" />\n <span className=\"text-xs text-muted-foreground\">{label}</span>\n <span className=\"h-px flex-1 bg-border\" />\n </div>\n );\n}\n\n/**\n * One message. The two sides are built differently on purpose.\n *\n * A visitor's own message is only the bubble. They know what they said and\n * when, so a name, a time and a read receipt underneath are three things that\n * earn nothing. An agent's turn gets one line above it saying who is speaking\n * and when, because you want both before you read what they said. One line per\n * turn, not per message: a reply that comes in three parts says it once.\n */\nexport function WidgetMessage({\n message,\n group = LONE_MESSAGE,\n}: {\n message: SupportMessage;\n /** Where it sits in a run from the same voice. Alone, by default. */\n group?: MessageGroup;\n}) {\n return message.sender === \"visitor\" ? (\n <VisitorMessage message={message} />\n ) : (\n <AgentMessage message={message} group={group} />\n );\n}\n\n/**\n * What goes in a bubble: the files first, then what was said about them. The\n * text is skipped entirely when there is none, so a picture sent on its own\n * gets a bubble that hugs it rather than one with an empty line underneath.\n *\n * A reply that has not landed yet holds three bouncing dots in the same place\n * the words are about to be, which is what the bubble grows out of.\n */\nfunction BubbleContent({ message }: { message: SupportMessage }) {\n const hasAttachments = (message.attachments?.length ?? 0) > 0;\n\n if (message.pending) {\n return (\n <WidgetTyping\n label={`${message.agent?.name ?? \"Support\"} is writing a reply`}\n />\n );\n }\n\n return (\n <>\n {hasAttachments && (\n <WidgetAttachments attachments={message.attachments ?? []} />\n )}\n\n {message.body && (\n <WidgetMessageBody body={message.body} sender={message.sender} />\n )}\n </>\n );\n}\n\nfunction VisitorMessage({ message }: { message: SupportMessage }) {\n return (\n <div className={cn(\"flex justify-end\", ARRIVES)}>\n <WidgetBubble morphKey=\"settled\" className={cn(BUBBLE, VISITOR_BUBBLE)}>\n <BubbleContent message={message} />\n </WidgetBubble>\n </div>\n );\n}\n\nfunction AgentMessage({\n message,\n group,\n}: {\n message: SupportMessage;\n group: MessageGroup;\n}) {\n const { agent } = message;\n\n return (\n // One line saying who and when, then the thing they said. The face used to\n // sit in a gutter beside the bubble with the name above it and the time\n // below, which spread four small things across three rows and pushed every\n // bubble in off the edge. All of it is one line now, and the bubble gets\n // the full width back.\n <div className={cn(\"flex flex-col items-start gap-1\", ARRIVES)}>\n {/* Once per turn rather than once per message: a reply that arrives in\n three parts is still one agent saying one thing. */}\n {group.isFirst && (\n <div className=\"flex max-w-full items-center gap-1.5 px-0.5\">\n {agent && (\n <>\n <WidgetAvatar agent={agent} className=\"size-5 rounded-md\" />\n <span className=\"truncate text-xs font-medium\">{agent.name}</span>\n\n {/* Said plainly, because a name and a face are exactly what a\n machine can be given, and a visitor should never have to\n work out which one they got. Once per turn, since that is\n where the name is: a burst of three says it once. */}\n {agent.kind === \"ai\" && (\n <Badge variant=\"muted\" className=\"shrink-0 rounded-md px-1\">\n AI\n </Badge>\n )}\n </>\n )}\n\n {/* No time on a reply that has not been written yet. */}\n {!message.pending && (\n <span className=\"shrink-0 text-xs text-muted-foreground tabular-nums\">\n {message.time}\n </span>\n )}\n </div>\n )}\n\n {/* The same bubble either way. It is what the dots are in, so when the\n answer replaces them it grows out of where they were rather than\n appearing somewhere near them. */}\n <WidgetBubble\n // Derived from the contents, so an answer that arrives in pieces\n // keeps growing rather than morphing once and then snapping.\n morphKey={\n message.pending\n ? \"pending\"\n : `${message.body.length}:${message.attachments?.length ?? 0}`\n }\n className={cn(BUBBLE, \"bg-muted\")}\n >\n <BubbleContent message={message} />\n </WidgetBubble>\n </div>\n );\n}\n","\"use client\";\n\nimport {\n RATING_FEEDBACK_MAX_LENGTH,\n RATING_MAX_STARS,\n} from \"@median/backend/support\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { Star } from \"@/components/icons\";\nimport { WidgetButton } from \"./widget-button\";\nimport { Collapse, COLLAPSE_MS } from \"@/components/ui/collapse\";\nimport { TEXT_FIELD_SHELL } from \"@/components/ui/text-field\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { cn } from \"@/lib/utils\";\nimport type { SupportRating } from \"./types\";\n\nconst STARS = Array.from({ length: RATING_MAX_STARS }, (_, index) => index + 1);\n\n/** How long the thank you stays before the card folds itself away. */\nconst THANKS_MS = 1400;\n\n/** Between one star lighting up and the next, so a pick reads as a sweep. */\nconst STAR_STAGGER_MS = 40;\n\n/**\n * The question a resolved conversation asks, sitting on the composer.\n *\n * A star saves the moment it is pressed rather than waiting for a Send,\n * because most people stop there and four stars with nothing after them is\n * still the answer. The box for words opens underneath afterwards, so\n * somebody who has more to say has somewhere to say it and nobody is held up\n * by a form they did not want.\n *\n * Nothing here appears or vanishes. The card opens out of the composer, the\n * box for words opens under the stars, the thank you takes the question's\n * place, and the whole thing folds away when it is finished, each of them the\n * same height travelling. Which is why leaving tells the panel it is done\n * only once it has finished folding: unmounting on the click would take the\n * animation with it.\n *\n * Above the composer rather than in place of it: the thread is finished, not\n * closed, and writing again is how a visitor starts the next one.\n */\nexport function WidgetRating({ rating }: { rating: SupportRating }) {\n const [isOpen, setIsOpen] = useState(false);\n const [picked, setPicked] = useState<number | null>(rating.stars);\n const [hovered, setHovered] = useState<number | null>(null);\n const [feedback, setFeedback] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isDone, setIsDone] = useState(false);\n\n const timers = useRef<ReturnType<typeof setTimeout>[]>([]);\n useEffect(() => {\n // Shut for one frame, open on the next, which is what turns a card that\n // was suddenly there into one that grew out of the composer.\n const frame = requestAnimationFrame(() => setIsOpen(true));\n const pending = timers.current;\n return () => {\n cancelAnimationFrame(frame);\n for (const timer of pending) clearTimeout(timer);\n };\n }, []);\n\n function later(ms: number, run: () => void) {\n timers.current.push(setTimeout(run, ms));\n }\n\n /** Fold away first, and only then tell the panel there is nothing to ask. */\n function leave() {\n setIsOpen(false);\n later(COLLAPSE_MS, rating.skip);\n }\n\n const shown = hovered ?? picked ?? 0;\n\n async function send(stars: number, words?: string) {\n setError(null);\n setIsSending(true);\n try {\n await rating.submit(stars, words);\n return true;\n } catch (caught) {\n console.error(\"Rating the conversation failed\", caught);\n setError(\"That did not send. Try again.\");\n return false;\n } finally {\n setIsSending(false);\n }\n }\n\n async function choose(stars: number) {\n // On screen first: the star they pressed is the answer whether or not\n // the network agrees yet.\n setPicked(stars);\n await send(stars);\n }\n\n /**\n * Finishing, with or without words. The stars are already saved, so an\n * empty box is somebody who has said all they wanted to and does not owe\n * anybody a sentence about it: no round trip, straight to the thanks.\n */\n async function finish() {\n if (picked === null) return;\n const words = feedback.trim();\n if (words.length > 0 && !(await send(picked, words))) return;\n\n setIsDone(true);\n later(THANKS_MS, leave);\n }\n\n return (\n <Collapse isOpen={isOpen} className=\"shrink-0\">\n {/* The spacing lives inside each section rather than as a gap between\n them, so a section that is closed takes up nothing at all. */}\n <div className=\"mx-3 mb-2 rounded-xl border bg-muted/40 px-3 dark:bg-muted/20\">\n <Collapse isOpen={!isDone}>\n <div className=\"py-2.5\">\n <div className=\"flex items-start justify-between gap-2\">\n <p className=\"text-sm font-medium\">\n {picked === null ? \"How did we do?\" : \"Thanks. Tell us more?\"}\n </p>\n {/* A word rather than a cross: this is a question, and the way\n out of a question is an answer, not a close button. */}\n <WidgetButton\n type=\"button\"\n variant=\"ghost\"\n size=\"xs\"\n className=\"-mt-0.5 -mr-1 text-muted-foreground\"\n disabled={isSending}\n onClick={leave}\n >\n Skip\n </WidgetButton>\n </div>\n\n <div\n role=\"radiogroup\"\n aria-label=\"How did we do?\"\n className=\"flex items-center justify-center gap-1 pt-1.5\"\n onMouseLeave={() => setHovered(null)}\n >\n {STARS.map((value) => (\n <button\n key={value}\n type=\"button\"\n role=\"radio\"\n aria-checked={picked === value}\n aria-label={`${value} of ${RATING_MAX_STARS}`}\n disabled={isSending}\n onMouseEnter={() => setHovered(value)}\n onFocus={() => setHovered(value)}\n onBlur={() => setHovered(null)}\n onClick={() => void choose(value)}\n className={cn(\n \"rounded-md p-1 outline-none transition-transform duration-150 ease-out\",\n \"hover:scale-115 focus-visible:ring-3 focus-visible:ring-ring/50\",\n \"active:scale-95 disabled:pointer-events-none\",\n \"motion-reduce:transition-none\",\n )}\n >\n <Star\n // A pick lights the row up one star at a time, left to\n // right. Only a pick: a stagger under the pointer would\n // read as the widget lagging behind the mouse.\n style={{\n transitionDelay:\n hovered === null && picked !== null\n ? `${(value - 1) * STAR_STAGGER_MS}ms`\n : undefined,\n }}\n className={cn(\n \"size-6 transition-colors duration-200 ease-out motion-reduce:transition-none\",\n value <= shown\n ? \"text-foreground\"\n : \"text-muted-foreground/30\",\n )}\n />\n </button>\n ))}\n </div>\n\n <Collapse isOpen={picked !== null}>\n <div className=\"flex flex-col gap-2 pt-2\">\n <Textarea\n value={feedback}\n onChange={(event) => setFeedback(event.target.value)}\n placeholder=\"Anything to add? Optional\"\n aria-label=\"Anything to add, optional\"\n rows={2}\n maxLength={RATING_FEEDBACK_MAX_LENGTH}\n disabled={isSending}\n // The field's own shell, over the card's tint rather than in\n // it, so the box to write in reads as a box to write in.\n className={cn(\n TEXT_FIELD_SHELL,\n \"max-h-24 min-h-16 bg-card px-2.5 py-2\",\n )}\n />\n {/* Never held shut by an empty box. The words are the optional\n half of this, and a button that refuses to finish without\n them is a required field in a hat. */}\n <WidgetButton\n type=\"button\"\n size=\"sm\"\n className=\"self-end\"\n disabled={isSending}\n onClick={() => void finish()}\n >\n {isSending\n ? \"Sending\"\n : feedback.trim().length === 0\n ? \"Done\"\n : \"Send\"}\n </WidgetButton>\n </div>\n </Collapse>\n\n <Collapse isOpen={error !== null}>\n <p className=\"pt-1.5 text-center text-xs text-destructive\">\n {error}\n </p>\n </Collapse>\n </div>\n </Collapse>\n\n <Collapse isOpen={isDone}>\n <p className=\"py-3 text-center text-sm font-medium\">\n Thanks for the feedback.\n </p>\n </Collapse>\n </div>\n </Collapse>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * How long one takes to open or close. Anything that has to act after a\n * collapse has finished reads this rather than guessing, so the two cannot\n * drift; it matches the `duration-200` below.\n */\nexport const COLLAPSE_MS = 200;\n\n/**\n * A section that opens and closes rather than appearing and disappearing.\n *\n * The height is a grid row travelling between nothing and whatever the\n * contents want to be, which is the one way to animate to `auto` without\n * measuring anything on every frame. The contents keep their own size\n * throughout and are clipped rather than squashed, so words never reflow\n * mid animation.\n *\n * Closed, it is inert: a keyboard cannot land in a section that is not on\n * screen, and nothing inside one can be clicked through the clip.\n *\n * No gap between this and its neighbours. A closed section is zero pixels\n * tall but a flex gap around it is not, so spacing belongs inside the\n * contents; otherwise closing one leaves a hole where it used to be.\n */\nexport function Collapse({\n isOpen,\n id,\n children,\n className,\n}: {\n isOpen: boolean;\n /** For whatever toggles it to point at with `aria-controls`. */\n id?: string;\n children: ReactNode;\n className?: string;\n}) {\n return (\n <div\n id={id}\n inert={isOpen ? undefined : true}\n className={cn(\n \"grid transition-[grid-template-rows,opacity] duration-200 ease-out motion-reduce:transition-none\",\n isOpen ? \"grid-rows-[1fr] opacity-100\" : \"grid-rows-[0fr] opacity-0\",\n className,\n )}\n >\n <div className=\"overflow-hidden\">{children}</div>\n </div>\n );\n}\n","import { UserCircle } from \"@/components/icons\";\n\n/**\n * A quiet line about where the conversation stands, rather than about the\n * last thing said in it.\n *\n * Above the composer rather than under the header, for the same reason the\n * inbox puts its own status line there: the question it settles is who writes\n * the next reply, and that belongs next to the box you would write it in.\n *\n * Not a live region. The handoff arrives as a message too, in a thread that\n * already announces itself, and a screen reader should hear that once.\n */\nexport function WidgetAwaitingHuman() {\n return (\n <p className=\"flex animate-in items-center justify-center gap-1.5 px-4 pb-1 text-xs text-muted-foreground duration-200 ease-out fade-in-0 slide-in-from-bottom-1 motion-reduce:animate-none\">\n <UserCircle aria-hidden className=\"size-3.5\" />\n Waiting for a teammate\n </p>\n );\n}\n","\"use client\";\n\nimport {\n MessageScroller,\n MessageScrollerButton,\n MessageScrollerContent,\n MessageScrollerItem,\n MessageScrollerProvider,\n MessageScrollerViewport,\n} from \"@/components/ui/message-scroller\";\nimport { groupMessages, withinRun } from \"@/lib/message-groups\";\nimport { cn } from \"@/lib/utils\";\nimport type { DragHandlers } from \"./use-launcher-drag\";\nimport { useStackShift } from \"./use-stack-shift\";\nimport { WidgetComposer } from \"./widget-composer\";\nimport { WidgetEmpty } from \"./widget-empty\";\nimport { WidgetHeader } from \"./widget-header\";\nimport { WidgetLoading } from \"./widget-loading\";\nimport { WidgetLocked } from \"./widget-locked\";\nimport { WidgetDivider, WidgetMessage } from \"./widget-message\";\nimport { WidgetRating } from \"./widget-rating\";\nimport { WidgetAwaitingHuman } from \"./widget-status\";\nimport type {\n SupportMessage,\n SupportPresence,\n SupportRating,\n} from \"./types\";\n\n/**\n * What keeps a run going: the same voice, close together, and no divider\n * cutting in. The agent is compared by id rather than by side, so a handover\n * from the AI to a person always starts a fresh run and says so. A new\n * conversation always does too, whoever is speaking either side of it.\n */\nfunction joinsPreviousTurn(message: SupportMessage, previous: SupportMessage) {\n return (\n !message.dayLabel &&\n !message.startsConversation &&\n message.sender === previous.sender &&\n message.agent?.id === previous.agent?.id &&\n withinRun(previous.sentAt, message.sentAt)\n );\n}\n\n/**\n * The support panel a visitor sees on a host's site: who is around, the\n * thread, and a box to write in.\n *\n * It fills whatever it is given rather than picking its own size, so the same\n * component works as a floating bubble on desktop, a full screen sheet on a\n * phone, and a framed preview in the gallery. Whoever mounts it decides the\n * box; this decides what goes in it.\n *\n * Uncontrolled on purpose for now: `messages` come in, `onSend` goes out, and\n * nothing here holds a thread of its own. That is the seam the SDK will sit on\n * once this is wired to a real conversation.\n */\nexport function SupportWidget({\n presence,\n messages,\n onSend,\n onTypingChange,\n onClose,\n isExpanded = false,\n onToggleExpanded,\n isLoading = false,\n isLocked = false,\n onSignIn,\n askForEmail = false,\n onSubmitEmail,\n isSending = false,\n awaitingHuman = false,\n rating,\n notice,\n showBadge = true,\n grabHandlers,\n isMoving = false,\n className,\n}: {\n presence: SupportPresence;\n messages: SupportMessage[];\n /** Awaited by the composer, which keeps the draft if it rejects. */\n onSend?: (body: string, files: File[]) => unknown;\n /** The visitor's own typing, throttled by the composer. */\n onTypingChange?: (isTyping: boolean) => unknown;\n /** Omit to hide the close button, for a widget that is always on the page. */\n onClose?: () => void;\n /** Standing taller than it normally does. */\n isExpanded?: boolean;\n /**\n * Omit to hide the control. Only whoever owns the box the panel is drawn in\n * can grow it, so a widget that fills a frame it was given does not offer it.\n */\n onToggleExpanded?: () => void;\n /** Holds the mark while the conversation is on its way. */\n isLoading?: boolean;\n /**\n * Nobody is signed in, on a host that only takes questions from people who\n * are. The thread and the composer make way for the invitation to sign in.\n */\n isLocked?: boolean;\n /** Takes the visitor to the host's own sign in, and gives it its button. */\n onSignIn?: () => void;\n /**\n * The composer asks for an email before a first message, and the starter\n * rows stand down while it does: a pick would send before the question\n * was answered.\n */\n askForEmail?: boolean;\n /** What the composer's question does with a good answer. */\n onSubmitEmail?: (email: string) => void;\n /** Holds the send button while a message is. */\n isSending?: boolean;\n /** The agent has called for a person and nobody has picked it up yet. */\n awaitingHuman?: boolean;\n /**\n * The conversation is over and nobody has asked how it went yet. Null the\n * rest of the time, which is most of it.\n */\n rating?: SupportRating | null;\n /** One line above the composer, for a send that went wrong. */\n notice?: string | null;\n showBadge?: boolean;\n /**\n * Makes the header the thing the panel is dragged around by. Omitted by\n * anything that frames the widget rather than floats it, which is most of\n * the places it turns up outside a host's page.\n */\n grabHandlers?: DragHandlers;\n /** Being dragged right now, so the header can hold the closed hand. */\n isMoving?: boolean;\n className?: string;\n}) {\n const stack = useStackShift(messages.length);\n return (\n <section\n aria-label={`${presence.name} support`}\n className={cn(\n // The widget keeps its own radius scale. The app's token can climb as\n // the chrome gets rounder without the widget changing shape under the\n // hosts embedding it.\n \"flex h-full w-full flex-col overflow-hidden rounded-xl border bg-card text-card-foreground [--radius:0.625rem]\",\n className,\n )}\n >\n <WidgetHeader\n presence={presence}\n onClose={onClose}\n isExpanded={isExpanded}\n onToggleExpanded={onToggleExpanded}\n grabHandlers={grabHandlers}\n isMoving={isMoving}\n />\n\n {isLoading ? (\n <WidgetLoading />\n ) : isLocked ? (\n /* After the loading rather than before it: the line names the host,\n so it waits for the name the same as everything else does. */\n <WidgetLocked\n orgName={presence.name}\n onSignIn={onSignIn}\n showBadge={showBadge}\n />\n ) : (\n <Conversation\n presence={presence}\n messages={messages}\n onSend={onSend}\n onTypingChange={onTypingChange}\n askForEmail={askForEmail}\n onSubmitEmail={onSubmitEmail}\n isSending={isSending}\n awaitingHuman={awaitingHuman}\n rating={rating}\n notice={notice}\n showBadge={showBadge}\n stackRef={stack}\n />\n )}\n </section>\n );\n}\n\n/**\n * Everything under the header. Split out so it mounts as one thing when the\n * conversation lands, which is what gives the whole lot a single fade in\n * rather than a thread and a composer arriving separately.\n */\nfunction Conversation({\n presence,\n messages,\n onSend,\n onTypingChange,\n askForEmail = false,\n onSubmitEmail,\n isSending = false,\n awaitingHuman = false,\n rating,\n notice,\n showBadge,\n stackRef,\n}: {\n presence: SupportPresence;\n messages: SupportMessage[];\n onSend?: (body: string, files: File[]) => unknown;\n onTypingChange?: (isTyping: boolean) => unknown;\n /** The composer asks for an email before a first message. */\n askForEmail?: boolean;\n /** What the composer's question does with a good answer. */\n onSubmitEmail?: (email: string) => void;\n isSending?: boolean;\n awaitingHuman?: boolean;\n rating?: SupportRating | null;\n notice?: string | null;\n showBadge: boolean;\n stackRef: (node: HTMLDivElement | null) => void;\n}) {\n const groups = groupMessages(messages, joinsPreviousTurn);\n\n return (\n <div className=\"flex min-h-0 flex-1 flex-col animate-in fade-in-0 duration-500 ease-out motion-reduce:animate-none\">\n {messages.length === 0 ? (\n <WidgetEmpty\n team={presence.team}\n orgName={presence.name}\n onPick={\n onSend === undefined\n ? undefined\n : (message) => void onSend(message, [])\n }\n isSending={isSending}\n // Held rather than taken away while the email is asked for: a row\n // would send before the question above it was answered, and rows\n // that leave and come back move everything above them twice.\n isWaiting={askForEmail}\n />\n ) : (\n /* The same scroller the inbox thread uses, so both sides of a\n conversation stick to the newest message the same way, and both grow\n the same button when you scroll back up.\n\n It keeps following the bottom while the panel is resizing, and it\n has to. A panel shrinking takes its top edge down past the thread,\n so a scroller left alone slides the newest message under the\n composer and has to catch up afterwards. Following it is what the\n scroller stops easing for, so this tracks frame by frame. */\n <MessageScrollerProvider>\n {/* h-auto so the scroller takes the space the header and composer\n leave, rather than the full column its own `size-full` asks for. */}\n <MessageScroller className=\"h-auto min-h-0 flex-1\">\n <MessageScrollerViewport\n // A log with a polite live region, so a reply is announced as it\n // lands without pulling focus out of the box being typed in.\n role=\"log\"\n aria-live=\"polite\"\n aria-relevant=\"additions\"\n aria-label=\"Conversation\"\n className=\"px-3 py-2\"\n >\n {/* justify-end so a short thread sits on the composer rather than\n hanging from the header with a field of nothing under it. The\n content is already at least a viewport tall, so this only\n decides where the slack goes: above the first message, not\n below the last.\n\n The space between messages is on the items rather than here,\n since a message carrying on the one above it sits closer to\n it than one starting a new turn. */}\n <MessageScrollerContent\n ref={stackRef}\n className=\"justify-end gap-0\"\n >\n {messages.map((message, index) => (\n <MessageScrollerItem\n key={message.id}\n messageId={message.id}\n // The scroller skips rendering off screen items and holds\n // 10rem open for each one until it arrives. That is a fair\n // guess in the inbox, where the column is wide and a\n // message is tall. Here it is roughly double: a bubble in a\n // panel this narrow is nearer 4rem, so every item resized\n // the moment it scrolled into view and the whole thread\n // jumped. A support thread is short enough that skipping\n // any of it buys nothing anyway.\n className={cn(\n \"flex flex-col gap-4 [content-visibility:visible] first:pt-0\",\n groups[index].isFirst ? \"pt-4\" : \"pt-1\",\n )}\n >\n <WidgetDivider message={message} />\n <WidgetMessage message={message} group={groups[index]} />\n </MessageScrollerItem>\n ))}\n </MessageScrollerContent>\n </MessageScrollerViewport>\n\n {/* Outside the viewport: it is positioned against the scroller, so\n inside it would scroll away with the messages. */}\n <MessageScrollerButton />\n </MessageScroller>\n </MessageScrollerProvider>\n )}\n\n {/* The question a finished thread asks. Never at the same time as the\n line below it: one is a conversation that is over and the other is\n one waiting on a person. */}\n {rating && <WidgetRating rating={rating} />}\n\n {/* Above the failed send, since it is the older of the two facts and\n the one that is still true after a retry works. */}\n {awaitingHuman && <WidgetAwaitingHuman />}\n\n {/* A send that failed says so right where the retry happens. */}\n {notice && (\n <p className=\"animate-in px-4 pb-1 text-center text-xs text-destructive fade-in duration-150\">\n {notice}\n </p>\n )}\n\n <WidgetComposer\n onSend={onSend}\n onTypingChange={onTypingChange}\n askForEmail={askForEmail}\n onSubmitEmail={onSubmitEmail}\n isSending={isSending}\n showBadge={showBadge}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport {\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n useSyncExternalStore,\n type PointerEvent as ReactPointerEvent,\n type RefObject,\n} from \"react\";\nimport { flushSync } from \"react-dom\";\nimport {\n getDefaultSpot,\n getSpot,\n metricsFor,\n setSpot,\n spotFrom,\n spotFromPanel,\n subscribeSpot,\n type Bounds,\n type Size,\n} from \"./launcher-position\";\nimport { prefersReducedMotion } from \"./motion\";\n\n/** Further than this and it is a drag. Under it, it is a click that wobbled. */\nconst DRAG_THRESHOLD = 5;\n\n/**\n * What a press takes hold of: the button while it is closed, and the panel\n * itself, by its header, once it is open.\n *\n * Both move the same box. The difference is what is being kept on the page\n * while it travels, and what the spot is read back off when it lands.\n */\nexport type DragSubject = \"button\" | \"panel\";\n\n/** What a surface wears to become something the widget can be dragged by. */\nexport type DragHandlers = {\n onPointerDown: (event: ReactPointerEvent<HTMLElement>) => void;\n onPointerMove: (event: ReactPointerEvent<HTMLElement>) => void;\n onPointerUp: (event: ReactPointerEvent<HTMLElement>) => void;\n onPointerCancel: (event: ReactPointerEvent<HTMLElement>) => void;\n};\n\n/**\n * A press that landed on a control belongs to that control.\n *\n * Only the panel needs asking. The button is the handle and the whole of it,\n * so a press anywhere on it is a press on the thing being dragged; the header\n * is a strip with a close button and a row of faces on it, and grabbing the\n * panel by the close button would be a drag that shuts it.\n */\nfunction isControl(target: EventTarget | null): boolean {\n return (\n target instanceof Element &&\n target.closest(\"a, button, input, select, textarea\") !== null\n );\n}\n\n/** The flight to the edge once it is let go. Matches --ease-spring. */\nconst SNAP_MS = 420;\nconst SNAP_EASING = \"cubic-bezier(0.34, 1.45, 0.64, 1)\";\n\n/**\n * The button's height inside the box, which the clip and the button both read.\n * A custom property because it inherits: one write on the box reaches the\n * panel, the shadow and the button, and none of them has to be told twice.\n */\nexport const BUTTON_Y = \"--median-button-y\";\n\n/** Everything the drag needs, measured once, while it is still standing still. */\ntype Grip = {\n subject: DragSubject;\n grabX: number;\n grabY: number;\n startX: number;\n startY: number;\n bounds: Bounds;\n margin: number;\n /** The button, which the spot is always defined in terms of. */\n size: Size;\n box: Size;\n /** The one actually travelling: the button, or the whole box. */\n dragged: Size;\n /** Where that one was before any of this, and where it is now. */\n resting: { x: number; y: number };\n at: { x: number; y: number };\n moved: boolean;\n};\n\n/**\n * Dragging the launcher, and the edge it settles against.\n *\n * The box that holds the panel is positioned to contain the button, and the\n * button is pinned inside it, so moving one moves both. The closed panel is a\n * circle sitting exactly under the button; if only the button travelled it\n * would slide off its own shadow.\n *\n * Nothing goes through React state while a finger is down. The offset is\n * written straight onto the box, because a `setState` per pointermove renders\n * the whole panel underneath, and the panel is an entire conversation. React\n * hears the spot once, at the end.\n *\n * The resting geometry cannot be written in CSS, because the button's height\n * inside the box is the difference between two things measured against\n * different boxes. So it is measured and written, before paint, and the style\n * carries a plain calc as a fallback for the frame before that happens, which\n * is the one the server rendered.\n */\nexport function useLauncherDrag({\n boxRef,\n buttonRef,\n margin,\n enabled,\n subject,\n}: {\n boxRef: RefObject<HTMLDivElement | null>;\n buttonRef: RefObject<HTMLButtonElement | null>;\n /** Any CSS length. How far off the edges it sits. */\n margin: string;\n /** Off when there is nothing on the page to take hold of. */\n enabled: boolean;\n /** Which of the two a press is grabbing, which is to say whether it is open. */\n subject: DragSubject;\n}) {\n const spot = useSyncExternalStore(subscribeSpot, getSpot, getDefaultSpot);\n\n // Two renders a drag, at the ends of it. Never one per move. It stays true\n // through the flight as well, because the clip is keyed to the button's\n // height and that changes as it lands; transitioning between the two would\n // wipe the panel across the box on the way.\n const [isMoving, setIsMoving] = useState(false);\n\n const grip = useRef<Grip | null>(null);\n /** Set by the drag that just ended, read by the click it turns into. */\n const justDragged = useRef(false);\n\n /** The space it lives in: the page, or whatever is positioning it. */\n const measure = useCallback((): {\n bounds: Bounds;\n margin: number;\n size: Size;\n box: Size;\n } | null => {\n const box = boxRef.current;\n const button = buttonRef.current;\n if (!box) return null;\n\n const parent = box.offsetParent;\n const rect =\n parent instanceof HTMLElement\n ? parent.getBoundingClientRect()\n : new DOMRect(0, 0, window.innerWidth, window.innerHeight);\n const boxRect = box.getBoundingClientRect();\n\n return {\n bounds: {\n left: rect.left,\n top: rect.top,\n width: rect.width,\n height: rect.height,\n },\n // Asked of the resolved style rather than parsed out of the string we\n // were handed, so a margin in any unit at all comes back in pixels.\n margin: Math.round(\n Number.parseFloat(getComputedStyle(box).getPropertyValue(spot.side)) ||\n 0,\n ),\n // Offset sizes, so a button mid press is not measured through whatever\n // scale it happens to be wearing.\n //\n // No button at all is a widget the host opens themselves. Nothing\n // hangs below the panel then, so it is a button of no size: the same\n // arithmetic, with the box parked against the bottom margin.\n size: button\n ? { width: button.offsetWidth, height: button.offsetHeight }\n : { width: 0, height: 0 },\n // The box gets the fractional one instead, and the difference is the\n // whole of whether a resize is smooth. Its top is worked out as its\n // bottom edge minus its height, so a height rounded to a whole pixel\n // against a box that is mid animation puts the bottom edge up to half a\n // pixel out, in a different direction on every frame. The panel shimmers\n // in place rather than growing. Nothing scales the box, so a rect is as\n // safe here as an offset and says the same thing more precisely.\n box: { width: boxRect.width, height: boxRect.height },\n };\n }, [boxRef, buttonRef, spot.side]);\n\n /**\n * Writes the resting geometry onto the nodes. Before paint on the way in,\n * and again whenever the space it is measured against changes.\n */\n const place = useCallback(() => {\n const box = boxRef.current;\n const taken = measure();\n if (!box || taken === null) return;\n\n const metrics = metricsFor(\n spot,\n taken.bounds,\n taken.size,\n taken.box.height,\n taken.margin,\n );\n\n box.style.top = `${metrics.boxTop - taken.bounds.top}px`;\n box.style.setProperty(BUTTON_Y, `${metrics.buttonInBox}px`);\n }, [boxRef, measure, spot]);\n\n useLayoutEffect(place, [place]);\n\n useEffect(() => {\n window.addEventListener(\"resize\", place);\n return () => window.removeEventListener(\"resize\", place);\n }, [place]);\n\n // Its own size counts as the space changing too, and this is the one that\n // moves on its own. The box hangs upward from the button, so where its top\n // belongs is worked out from how tall it is, and a panel growing into its\n // expanded height has a different answer on every frame of the way there.\n // Left to the effect above it would get the final answer on the first frame,\n // and the panel would jump off the button and then grow back down onto it.\n useEffect(() => {\n const box = boxRef.current;\n if (!box || typeof ResizeObserver === \"undefined\") return;\n\n // Nothing here changes the box's size, so this cannot feed itself.\n const observer = new ResizeObserver(place);\n observer.observe(box);\n return () => observer.disconnect();\n }, [boxRef, place]);\n\n /** Puts the box back where `place` left it, with no animation. */\n const settle = useCallback(() => {\n const box = boxRef.current;\n if (box) box.style.transform = \"\";\n }, [boxRef]);\n\n /**\n * The page while something is being dragged across it: nothing selectable,\n * and the closed hand everywhere.\n *\n * Both belong on the body rather than on what is being held, because the\n * pointer spends the whole drag over everything else. Left to the handle's\n * own classes the cursor turns back into a caret the moment it crosses the\n * thread, and the browser reads the gesture as a sweep through the host's\n * text, which leaves the next press picking up that selection instead of\n * the widget.\n *\n * Written and cleared in one place because these outlive the widget: a drag\n * that ended without this running leaves somebody else's page unselectable\n * and wearing a cursor that is not theirs.\n */\n const holdPointer = useCallback((held: boolean) => {\n document.body.style.userSelect = held ? \"none\" : \"\";\n document.body.style.cursor = held ? \"grabbing\" : \"\";\n if (held) window.getSelection()?.removeAllRanges();\n }, []);\n\n const handlePointerDown = useCallback(\n (event: ReactPointerEvent<HTMLElement>) => {\n justDragged.current = false;\n\n // A press starts from nothing held. If the last one never heard its own\n // release, this is where the page gets its cursor and its selection\n // back, rather than the next drag inheriting them.\n if (grip.current !== null) {\n grip.current = null;\n holdPointer(false);\n setIsMoving(false);\n }\n\n if (!enabled || !event.isPrimary) return;\n // A right click is a menu, not a move.\n if (event.pointerType === \"mouse\" && event.button !== 0) return;\n if (subject === \"panel\" && isControl(event.target)) return;\n\n // The button when it is closed, the whole box when it is open. Either\n // way the box is what travels; this is only what is being aimed.\n const moving = subject === \"panel\" ? boxRef.current : buttonRef.current;\n const taken = measure();\n if (moving === null || taken === null) return;\n\n // Refused so the press cannot begin a selection, or pick up one already\n // lying around and drag that instead. Focus is handed back by hand,\n // since that was the other thing the default was going to do.\n event.preventDefault();\n // Only the button takes it. An open panel is being moved, not entered,\n // so whatever was half typed in the composer keeps the caret.\n if (subject === \"button\") buttonRef.current?.focus({ preventScroll: true });\n\n const rect = moving.getBoundingClientRect();\n grip.current = {\n subject,\n grabX: event.clientX - rect.left,\n grabY: event.clientY - rect.top,\n startX: event.clientX,\n startY: event.clientY,\n ...taken,\n dragged: subject === \"panel\" ? taken.box : taken.size,\n resting: { x: rect.left, y: rect.top },\n at: { x: rect.left, y: rect.top },\n moved: false,\n };\n\n event.currentTarget.setPointerCapture(event.pointerId);\n },\n [boxRef, buttonRef, enabled, holdPointer, measure, subject],\n );\n\n const handlePointerMove = useCallback(\n (event: ReactPointerEvent<HTMLElement>) => {\n const held = grip.current;\n const box = boxRef.current;\n if (held === null || box === null) return;\n\n if (!held.moved) {\n const travelled = Math.hypot(\n event.clientX - held.startX,\n event.clientY - held.startY,\n );\n if (travelled < DRAG_THRESHOLD) return;\n held.moved = true;\n holdPointer(true);\n setIsMoving(true);\n }\n\n // Kept inside the edges it can settle against. Arithmetic only:\n // everything it needs was measured on the way down.\n held.at = {\n x: clamp(\n event.clientX - held.grabX,\n held.bounds.left + held.margin,\n held.bounds.left +\n held.bounds.width -\n held.margin -\n held.dragged.width,\n ),\n y: clamp(\n event.clientY - held.grabY,\n held.bounds.top + held.margin,\n held.bounds.top +\n held.bounds.height -\n held.margin -\n held.dragged.height,\n ),\n };\n\n box.style.transform = `translate3d(${held.at.x - held.resting.x}px, ${held.at.y - held.resting.y}px, 0)`;\n },\n [boxRef, holdPointer],\n );\n\n /**\n * The end of a drag, wherever the news of it came from.\n *\n * Separate from the handler because a release is not reliably an event on\n * the thing that was grabbed. Pointer capture usually delivers it there, but\n * a capture lost to the window manager, a switch to another window mid\n * press, or an element that went away underneath one all end the gesture\n * with nothing firing on the handle at all. Every one of those used to leave\n * the page holding a grabbing cursor and nothing selectable, with no way\n * back except starting another drag.\n *\n * Nothing to end is not a problem to report: the flight home runs after the\n * grip is let go, and the same release arrives twice on the way out.\n */\n const finishDrag = useCallback(() => {\n const held = grip.current;\n if (held === null) return;\n grip.current = null;\n\n holdPointer(false);\n\n const box = boxRef.current;\n if (!held.moved || box === null) {\n setIsMoving(false);\n return;\n }\n\n justDragged.current = true;\n\n // Where it landed, read back as a spot. Which end of the widget that is\n // asked of is the whole of the difference between the two drags.\n const target =\n held.subject === \"panel\"\n ? spotFromPanel(held.at, held.bounds, held.size, held.box, held.margin)\n : spotFrom(held.at, held.bounds, held.size, held.margin);\n\n const home = metricsFor(\n target,\n held.bounds,\n held.size,\n held.box.height,\n held.margin,\n );\n // Where the thing that travelled belongs once it is there, so the flight\n // below is exactly the gap between that and the finger.\n const from = {\n x:\n held.at.x -\n (target.side === \"left\"\n ? held.bounds.left + held.margin\n : held.bounds.left +\n held.bounds.width -\n held.margin -\n held.dragged.width),\n y: held.at.y - (held.subject === \"panel\" ? home.boxTop : home.buttonY),\n };\n\n // All of this is one frame, and the order is the whole trick.\n //\n // Committing the spot synchronously runs the layout effect above with it,\n // so the box is already positioned where it is going before anything is\n // painted. Clearing the transform then puts it there, which is not where\n // the finger left it, and the animation starts from exactly the gap\n // between the two. The first frame drawn still has whatever was being\n // held under the finger, and the rest of them carry it home.\n flushSync(() => setSpot(target));\n settle();\n\n if (prefersReducedMotion()) {\n setIsMoving(false);\n return;\n }\n\n const flight = box.animate(\n [\n { transform: `translate3d(${from.x}px, ${from.y}px, 0)` },\n { transform: \"none\" },\n ],\n { duration: SNAP_MS, easing: SNAP_EASING },\n );\n // Only once it has landed: the clip must not start transitioning between\n // heights while one of them is still travelling.\n flight.finished.catch(() => {}).finally(() => setIsMoving(false));\n }, [boxRef, holdPointer, settle]);\n\n const handlePointerUp = useCallback(\n (event: ReactPointerEvent<HTMLElement>) => {\n if (event.currentTarget.hasPointerCapture(event.pointerId)) {\n event.currentTarget.releasePointerCapture(event.pointerId);\n }\n finishDrag();\n },\n [finishDrag],\n );\n\n // The safety net, live only while something is actually being dragged. A\n // release anywhere at all ends it, and so does the window losing focus,\n // which is the one that catches a press abandoned to another app.\n useEffect(() => {\n if (!isMoving) return;\n\n const end = () => finishDrag();\n window.addEventListener(\"pointerup\", end);\n window.addEventListener(\"pointercancel\", end);\n window.addEventListener(\"blur\", end);\n return () => {\n window.removeEventListener(\"pointerup\", end);\n window.removeEventListener(\"pointercancel\", end);\n window.removeEventListener(\"blur\", end);\n };\n }, [isMoving, finishDrag]);\n\n const dragHandlers: DragHandlers = {\n onPointerDown: handlePointerDown,\n onPointerMove: handlePointerMove,\n onPointerUp: handlePointerUp,\n onPointerCancel: handlePointerUp,\n };\n\n // Everything above was measured against a page that is no longer that size.\n // Nothing to rescue: it goes back to wherever `place` puts it.\n useEffect(() => {\n function abandon() {\n if (grip.current === null) return;\n grip.current = null;\n holdPointer(false);\n settle();\n setIsMoving(false);\n }\n\n window.addEventListener(\"resize\", abandon);\n return () => {\n window.removeEventListener(\"resize\", abandon);\n // A widget that goes away mid drag must not leave the host's whole page\n // unselectable and wearing a cursor it never asked for. This is their\n // body, not ours.\n holdPointer(false);\n };\n }, [holdPointer, settle]);\n\n return {\n side: spot.side,\n /** Being dragged, or on its way to an edge. Nothing may transition. */\n isMoving,\n /** The side only. Height is measured and written straight to the node. */\n style: { [spot.side]: margin } as { left?: string; right?: string },\n /** True for the click that ended a drag, so it does not also open. */\n swallowClick: () => {\n if (!justDragged.current) return false;\n justDragged.current = false;\n return true;\n },\n /**\n * The same four handlers whichever end is being held. Both ends can wear\n * them at once: only one of the two is ever reachable, since the button is\n * inert while the panel is up and the panel is inert while it is down.\n */\n dragHandlers,\n };\n}\n\nfunction clamp(value: number, low: number, high: number): number {\n return Math.min(Math.max(value, low), Math.max(low, high));\n}\n","\"use client\";\n\nimport {\n useLayoutEffect,\n useState,\n useSyncExternalStore,\n type RefObject,\n} from \"react\";\nimport { usePageLock } from \"./use-page-lock\";\n\n/**\n * When the panel stops floating and takes the screen.\n *\n * Tailwind's `sm` breakpoint, written out, so this hook and any `max-sm:`\n * styles riding along with it change their minds at the same width.\n */\nconst PHONE = \"(max-width: 40rem)\";\n\n/**\n * How long the panel keeps following the visual viewport after it last heard\n * from it.\n *\n * The keyboard takes about a quarter of a second to come up and reports its\n * progress two or three times on the way, so a panel that moved only when it\n * was told would arrive in two or three jumps. This keeps it measuring every\n * frame for a beat afterwards instead, which is what turns those jumps into\n * the panel riding the keyboard up.\n */\nconst SETTLE_MS = 400;\n\n/**\n * How much of the visible height has to go missing before it is the keyboard\n * and not the browser's own chrome sliding away.\n */\nconst KEYBOARD_PX = 96;\n\nfunction subscribePhone(onChange: () => void) {\n const media = window.matchMedia(PHONE);\n media.addEventListener(\"change\", onChange);\n return () => media.removeEventListener(\"change\", onChange);\n}\n\nconst isPhoneNow = () => window.matchMedia(PHONE).matches;\n\n/** The server's answer. Nothing is open on the server, so nothing is lost. */\nconst isPhoneOnServer = () => false;\n\n/**\n * Whether the open panel should be the whole screen rather than a floating\n * card, and everything that has to be true while it is.\n *\n * A phone has no room for a card floating over a page: the card is nearly the\n * page already, and the margins around it are the only thing the extra rem\n * buys. So under `sm` the panel opens edge to edge instead, the way every\n * sheet on a phone does.\n *\n * Only when the widget is the viewport's, though. The gallery pins its\n * previews inside a frame with `absolute`, and a preview that burst out of\n * its frame to swallow the page would be demonstrating exactly the wrong\n * thing. `offsetParent` is the tell: a `fixed` box answers null, a framed one\n * answers with its frame. An ancestor wearing a transform also answers, and\n * should: a box positioned against somebody's transformed container is not\n * positioned against the screen, so it has no business covering it.\n *\n * While the sheet is up this also does two jobs the floating panel never\n * needed:\n *\n * - The panel is sized to `visualViewport` rather than to `inset-0`, and keeps\n * measuring for a beat after each report so it rides the keyboard up instead\n * of arriving in two jumps. The keyboard shrinks the visual viewport and not\n * the layout one, so a panel pinned to the layout viewport keeps its composer\n * underneath the keyboard, which is the one place the thing being typed into\n * cannot be. Written straight onto the node, the way the drag writes its\n * travel: a render per frame of that would run the whole conversation through\n * React to move an edge.\n *\n * - The host's page is pinned where it stands, by `usePageLock`. A full screen\n * sheet with a live page rumbling underneath it reads as broken, and a page\n * the keyboard is free to scroll takes the sheet's own footing with it.\n */\nexport function useWidgetSheet({\n boxRef,\n panelRef,\n isOpen,\n}: {\n boxRef: RefObject<HTMLDivElement | null>;\n panelRef: RefObject<HTMLDivElement | null>;\n isOpen: boolean;\n}): boolean {\n const isPhone = useSyncExternalStore(\n subscribePhone,\n isPhoneNow,\n isPhoneOnServer,\n );\n\n // Asked once the box is on the page, and asked again if the viewport\n // changed, since that is the only thing here that changes the answer's\n // consequences. The layout effect answers before anything is painted.\n const [isFramed, setIsFramed] = useState(false);\n useLayoutEffect(() => {\n setIsFramed(boxRef.current?.offsetParent != null);\n }, [boxRef, isPhone]);\n\n const isSheet = isPhone && !isFramed;\n const isUp = isSheet && isOpen;\n\n useLayoutEffect(() => {\n if (!isUp) return;\n const panel = panelRef.current;\n const viewport = window.visualViewport;\n if (!panel || !viewport) return;\n\n let frame = 0;\n let until = 0;\n let top = -1;\n let height = -1;\n let keyboard = \"\";\n\n // Exactly what can be seen, top edge included: the keyboard coming up can\n // shove the layout viewport as well as shrink the visible one, and\n // `offsetTop` is the sum of that shove.\n //\n // Whole pixels, and only ever written when they change. Measuring runs\n // every frame while the keyboard moves, and the browser cannot tell a\n // style it has already been given from a new one: it lays the panel out\n // again either way, and a fractional height rewritten sixty times a second\n // is the thread re-wrapping sixty times a second.\n const fit = () => {\n const nextTop = Math.round(viewport.offsetTop);\n const nextHeight = Math.round(viewport.height);\n if (nextTop === top && nextHeight === height) return;\n top = nextTop;\n height = nextHeight;\n\n panel.style.top = `${top}px`;\n panel.style.height = `${height}px`;\n panel.style.bottom = \"auto\";\n\n // The home bar's inset is only worth room while the home bar is what is\n // down there. With the keyboard up the foot of the panel is the top of\n // the keyboard, and the inset is a strip of nothing between the two.\n const next = height < window.innerHeight - KEYBOARD_PX ? \"up\" : \"down\";\n if (next === keyboard) return;\n keyboard = next;\n panel.dataset.keyboard = next;\n };\n\n const follow = () => {\n fit();\n frame = performance.now() < until ? requestAnimationFrame(follow) : 0;\n };\n\n // The viewport reports where it has got to, not where it is going. Each\n // report is taken as a sign it is still moving, and the panel measures for\n // itself until the reports stop coming.\n const track = () => {\n until = performance.now() + SETTLE_MS;\n if (frame === 0) frame = requestAnimationFrame(follow);\n };\n\n fit();\n viewport.addEventListener(\"resize\", track);\n viewport.addEventListener(\"scroll\", track);\n // A tap on the composer is the first anybody knows about a keyboard: the\n // viewport says nothing until it has already started moving.\n panel.addEventListener(\"focusin\", track);\n\n return () => {\n if (frame !== 0) cancelAnimationFrame(frame);\n viewport.removeEventListener(\"resize\", track);\n viewport.removeEventListener(\"scroll\", track);\n panel.removeEventListener(\"focusin\", track);\n // Back to the classes' `inset-0`, for the floating panel these would\n // otherwise misplace.\n panel.style.top = \"\";\n panel.style.height = \"\";\n panel.style.bottom = \"\";\n delete panel.dataset.keyboard;\n };\n }, [panelRef, isUp]);\n\n usePageLock(isUp);\n\n return isSheet;\n}\n","\"use client\";\n\nimport { useEffect } from \"react\";\n\n/**\n * Holds the host's page still underneath a full screen sheet.\n *\n * `overflow: hidden` is not a lock on a phone. Tapping a field inside a fixed\n * panel makes the browser scroll the page to bring the field above the\n * keyboard, and it scrolls a page that only said it had no overflow: the sheet\n * stays where it is, the page slides about behind it, and everything pinned to\n * the visual viewport chases that a frame late. That is the shudder.\n *\n * So the page is pinned instead, fixed at the offset it is already scrolled to.\n * It looks exactly the same and there is nothing left to scroll, which is the\n * only answer the keyboard takes. Letting go puts the offset back first, so the\n * page never flashes at the top on the way out.\n *\n * Width is deliberately not set. A fixed box with both edges pinned already\n * works out to the width the page had, margins and all, and saying `100%` on\n * top of that hangs the host's own margin off the right hand side.\n *\n * Everything it touches is written down first and put back after. This is\n * somebody else's body, and they may have had an opinion about all of it.\n */\nexport function usePageLock(isLocked: boolean) {\n useEffect(() => {\n if (!isLocked) return;\n\n const { style } = document.body;\n const held = {\n position: style.position,\n top: style.top,\n left: style.left,\n right: style.right,\n overflow: style.overflow,\n };\n const scrollY = window.scrollY;\n\n style.position = \"fixed\";\n style.top = `${-scrollY}px`;\n style.left = \"0\";\n style.right = \"0\";\n style.overflow = \"hidden\";\n\n return () => {\n style.position = held.position;\n style.top = held.top;\n style.left = held.left;\n style.right = held.right;\n style.overflow = held.overflow;\n // Instant, or a host who asked for smooth scrolling watches their page\n // sail back down from the top while the sheet is still coming off it.\n window.scrollTo({ top: scrollY, behavior: \"instant\" });\n };\n }, [isLocked]);\n}\n","\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\n/**\n * How long to keep looking for something that may not be on the page yet.\n * A navigation is usually still resolving when the instruction lands, so the\n * element the tool means is often a route change away.\n */\nconst FIND_TIMEOUT_MS = 4_000;\n\n/** How long the ring stays once it has found something. */\nconst HOLD_MS = 2_600;\n\n/** The fade at the end, which is also how long the node outlives the hold. */\nconst FADE_MS = 300;\n\n/** Above the host's own chrome. Their z-indexes are not ours to guess at. */\nconst LAYER = 2_147_483_000;\n\nfunction prefersReducedMotion(): boolean {\n return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n}\n\n/**\n * A ring drawn over something on the host's page, because one of their tools\n * asked for it to be pointed at.\n *\n * Nothing on their page is touched. The ring is a box of our own, positioned\n * over the element's rectangle and following it every frame, so a page that\n * scrolls, resizes or animates underneath keeps the ring where the thing is,\n * and there is no style of theirs to put back afterwards.\n *\n * It also waits. The instruction rides the same reply that moves the page, so\n * the element it names is usually a route change away and not in the document\n * yet; this keeps looking for a few seconds and gives up quietly rather than\n * ringing the wrong thing or nothing at all.\n *\n * In `document.body` rather than where the widget sits, since a `fixed` box\n * inside a host container that happens to carry a transform is fixed to that\n * container instead of to the window, and this one has to line up with an\n * element anywhere on their page.\n */\nexport function WidgetSpotlight({ selector }: { selector: string }) {\n const [isShown, setIsShown] = useState(false);\n const [isLeaving, setIsLeaving] = useState(false);\n const ring = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n let target: Element | null = null;\n let frame = 0;\n let startedAt = 0;\n let foundAt = 0;\n let stopped = false;\n let leaveTimer: ReturnType<typeof setTimeout> | undefined;\n\n function find(): Element | null {\n try {\n return document.querySelector(selector);\n } catch {\n // Not a selector at all. Median checks the shape of one before it is\n // stored, but only a browser can say whether it parses.\n console.error(\n `Median: a tool asked to highlight ${selector}, which is not a valid CSS selector.`,\n );\n stopped = true;\n return null;\n }\n }\n\n function tick(now: number) {\n if (stopped) return;\n if (startedAt === 0) startedAt = now;\n\n if (target === null) {\n target = find();\n if (stopped) return;\n\n if (target === null) {\n // Still not there. It may be one route change behind us.\n if (now - startedAt > FIND_TIMEOUT_MS) return;\n frame = requestAnimationFrame(tick);\n return;\n }\n\n foundAt = now;\n target.scrollIntoView({\n behavior: prefersReducedMotion() ? \"auto\" : \"smooth\",\n block: \"center\",\n });\n setIsShown(true);\n }\n\n // Written straight onto the node rather than held in state: this runs\n // every frame for a couple of seconds, and a re-render per frame to\n // move one box is a cost the host's page would pay for nothing.\n const node = ring.current;\n if (node !== null) {\n const rect = target.getBoundingClientRect();\n node.style.transform = `translate(${rect.left}px, ${rect.top}px)`;\n node.style.width = `${rect.width}px`;\n node.style.height = `${rect.height}px`;\n }\n\n if (now - foundAt > HOLD_MS) {\n setIsLeaving(true);\n leaveTimer = setTimeout(() => setIsShown(false), FADE_MS);\n return;\n }\n frame = requestAnimationFrame(tick);\n }\n\n frame = requestAnimationFrame(tick);\n return () => {\n stopped = true;\n cancelAnimationFrame(frame);\n clearTimeout(leaveTimer);\n };\n }, [selector]);\n\n if (!isShown || typeof document === \"undefined\") return null;\n\n return createPortal(\n <div\n ref={ring}\n aria-hidden\n // Portalled to the body, outside the launcher's box, so it carries the\n // published stylesheet's scope hook itself.\n data-median-widget=\"\"\n style={{ zIndex: LAYER, top: 0, left: 0 }}\n className=\"pointer-events-none fixed\"\n >\n {/* Two layers of the same box: one that holds the outline, and one\n that swells out of it and fades, which is the part the eye catches\n on a page somebody is already looking at. */}\n <span\n className={[\n \"absolute -inset-1 rounded-lg outline-2 outline-offset-0 outline-primary\",\n \"shadow-[0_0_0_6px_color-mix(in_oklch,var(--primary)_20%,transparent)]\",\n \"transition-opacity duration-300 ease-out motion-reduce:transition-none\",\n isLeaving ? \"opacity-0\" : \"opacity-100\",\n ].join(\" \")}\n />\n <span\n className={[\n \"absolute -inset-1 rounded-lg outline-2 outline-primary\",\n \"animate-ping opacity-60 motion-reduce:animate-none\",\n isLeaving ? \"hidden\" : \"\",\n ].join(\" \")}\n />\n </div>,\n document.body,\n );\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"@/lib/utils\";\nimport { WidgetAvatar } from \"./widget-avatar\";\nimport type { SupportAgent } from \"./types\";\n\n/** How long it stays. Long enough to read twice, short enough to forgive. */\nconst STAY_MS = 5_000;\n\n/** The travel at either end. */\nconst MOVE_MS = 250;\n\n/** Above the host's own chrome, and above the ring it explains. */\nconst LAYER = 2_147_483_001;\n\n/**\n * A line at the foot of the page saying who moved it.\n *\n * A page changing under somebody who did not touch anything is the one thing\n * a widget can do that feels like it has been let loose, so it says so, by\n * name, where a browser already puts its own status line.\n *\n * Nothing to click: it cannot be in the way of whatever they came to do, and\n * it takes itself off. In `document.body` for the same reason the ring is: a\n * host container with a transform on it would otherwise capture the fixed\n * position and put this somewhere that is not the bottom of the window.\n */\nexport function WidgetToast({\n agent,\n children,\n}: {\n /** Who did it, so the line can say so with their own face on it. */\n agent: SupportAgent;\n children: React.ReactNode;\n}) {\n const [isShown, setIsShown] = useState(false);\n\n useEffect(() => {\n // Up on the frame after it mounts, so it rises into place rather than\n // being there suddenly.\n const frame = requestAnimationFrame(() => setIsShown(true));\n const timer = setTimeout(() => setIsShown(false), STAY_MS);\n return () => {\n cancelAnimationFrame(frame);\n clearTimeout(timer);\n };\n }, []);\n\n if (typeof document === \"undefined\") return null;\n\n return createPortal(\n <div\n // Portalled to the body, outside the launcher's box, so it carries the\n // published stylesheet's scope hook itself.\n data-median-widget=\"\"\n style={{ zIndex: LAYER, transitionDuration: `${MOVE_MS}ms` }}\n // A live region rather than a thing to find: somebody using a screen\n // reader is told the page moved without having to go looking for the\n // line that says so.\n role=\"status\"\n aria-live=\"polite\"\n className={cn(\n \"pointer-events-none fixed bottom-4 left-1/2 flex max-w-[calc(100vw-2rem)] items-center gap-2\",\n \"-translate-x-1/2 rounded-full border bg-card py-1.5 pr-4 pl-1.5 shadow-lg\",\n \"text-sm text-card-foreground\",\n // `translate`, which is the property `translate-y-*` sets. Under\n // `transform` the line used to arrive in one frame with only its\n // opacity easing.\n \"transition-[opacity,translate] ease-out motion-reduce:transition-none\",\n isShown\n ? \"translate-y-0 opacity-100\"\n : \"pointer-events-none translate-y-2 opacity-0\",\n )}\n >\n <WidgetAvatar agent={agent} className=\"size-6 rounded-full\" />\n <span className=\"truncate\">{children}</span>\n </div>,\n document.body,\n );\n}\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\nimport { queueCustomData } from \"./custom-data\";\nimport {\n createOpenStore,\n isDevelopment,\n useOpenState,\n useRegister,\n} from \"./open-store\";\nimport {\n reportError,\n type MedianErrorReportOptions,\n type MedianErrorReportOutcome,\n} from \"./report-error\";\nimport { resetSessions } from \"./session\";\nimport { resetVisitorEmails } from \"./visitor-email\";\n\n/**\n * Driving the support panel from anywhere on the page. The open state lives\n * in `open-store.ts`, which the feedback panel keeps its own copy of; this\n * file is the three things that are the support widget's alone, `attach`,\n * `reportError` and `reset`, and the shape a host reaches for them through.\n */\nconst store = createOpenStore(\"MedianSupport\");\n\n/**\n * The widget from anywhere, React or not: the same shape the hook hands\n * back, for a plain `onclick` or a shortcut listener that never sees a\n * component. `isOpen` reads live but does not re-render anything; the hook\n * is for that.\n */\nexport const medianSupport = {\n /** What the panel is doing right now. */\n get isOpen() {\n return store.readEffective();\n },\n open() {\n store.request(true);\n store.warnIfNothingIsMounted(\"the widget was asked to open\");\n },\n close() {\n store.request(false);\n },\n toggle() {\n const next = !store.readEffective();\n store.request(next);\n if (next) store.warnIfNothingIsMounted(\"the widget was asked to open\");\n },\n /**\n * Put your own data on the next bug report: a crash trace from your error\n * handler, a request id, the state of a store. Objects are written out as\n * JSON. Entries ride the visitor's next message and land on the report,\n * whether or not diagnostics are on.\n */\n attach(label: string, value: unknown) {\n if (!queueCustomData(label, value)) {\n if (isDevelopment) {\n console.warn(\n \"Median: attach() needs a label and a value, and nothing was queued. Pass a short label naming the data, and the data itself.\",\n );\n }\n return;\n }\n store.warnIfNothingIsMounted(\"data was attached\");\n },\n /**\n * File the crash your error screen is showing, with everything the browser\n * was doing when it happened. One press from a \"Report error\" button:\n *\n * const outcome = await medianSupport.reportError(error);\n *\n * It answers rather than throws, so the screen can say whether it landed.\n * It works from a boundary with no widget left under it, which is most of\n * them.\n */\n reportError(error: unknown, options?: MedianErrorReportOptions) {\n return reportError(error, options);\n },\n /**\n * Forget this browser's conversation, so the next one starts fresh and\n * anonymous. Call it when your user signs out: whoever sits down next\n * should not find somebody else's thread waiting.\n */\n reset() {\n resetSessions();\n resetVisitorEmails();\n },\n} satisfies MedianSupportControl;\n\n/** The shape of {@link medianSupport}, and of what the hook returns. */\nexport type MedianSupportControl = {\n /** Whether the panel is open. */\n isOpen: boolean;\n open: () => void;\n close: () => void;\n toggle: () => void;\n /** Put your own data on the next bug report: a crash trace, an id. */\n attach: (label: string, value: unknown) => void;\n /** File the crash your error screen is showing. For a report button. */\n reportError: (\n error: unknown,\n options?: MedianErrorReportOptions,\n ) => Promise<MedianErrorReportOutcome>;\n /** Forget this browser's conversation. For sign out. */\n reset: () => void;\n};\n\n/**\n * The widget, from anywhere else on the page:\n *\n * const support = useMedianSupport();\n *\n * <button onClick={support.open}>Contact us</button>\n *\n * `isOpen` follows the panel however it was opened, so a trigger can render\n * itself as pressed, or step out of the way while the panel is up.\n */\nexport function useMedianSupport(): MedianSupportControl {\n const isOpen = useSyncExternalStore(\n store.subscribe,\n store.readEffective,\n store.readServerEffective,\n );\n\n return {\n isOpen,\n open: medianSupport.open,\n close: medianSupport.close,\n toggle: medianSupport.toggle,\n attach: medianSupport.attach,\n reportError: medianSupport.reportError,\n reset: medianSupport.reset,\n };\n}\n\n/** The panel's own settled open state. See {@link useOpenState}. */\nexport function useMedianOpenState(options: {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}): [boolean, (next: boolean) => void] {\n return useOpenState(store, options);\n}\n\n/** One widget per page, and a word in the console when there are two. */\nexport function useRegisterMedianSupport() {\n useRegister(store);\n}\n","/**\n * Data somebody chose to put on a bug report: a crash trace, a request id,\n * the state of a store when it fell over.\n *\n * The deliberate third of the telemetry. Context is what the browser knows,\n * diagnostics are what the widget caught on its own; this is what the host's\n * code or the agent decided the team should see, word for word. Because it is\n * handed over on purpose, it does not wait behind the diagnostics switch.\n *\n * Pure on purpose, like `diagnostics.ts` next door: the SDK cleans what it\n * queues with this file before it sends, and the backend cleans it again with\n * the same file before it stores, so neither side is trusting the other's\n * arithmetic.\n */\n\nexport type CustomDataEntry = {\n /** What the value is, in a few words. The entry's heading on the report. */\n label: string;\n /** The thing itself, kept exactly as written, up to the cap. */\n value: string;\n};\n\n/** The most entries one report carries. Newest kept, oldest dropped. */\nexport const MAX_CUSTOM_ENTRIES = 8;\n\nexport const CUSTOM_LABEL_MAX_LENGTH = 60;\n\n/** Room for a real stack trace, not just its first line. */\nexport const CUSTOM_VALUE_MAX_LENGTH = 4_000;\n\nfunction cleanLabel(input: unknown): string | undefined {\n if (typeof input !== \"string\") return undefined;\n const label = input.trim().slice(0, CUSTOM_LABEL_MAX_LENGTH);\n return label.length > 0 ? label : undefined;\n}\n\n/**\n * Whatever was handed over, written out as text. Objects become readable\n * JSON, because \"the state of the store\" arrives as an object, and making the\n * caller serialize it first is exactly the chore this exists to remove.\n */\nfunction cleanValue(input: unknown): string | undefined {\n let written: string | undefined;\n if (typeof input === \"string\") {\n written = input.trim();\n } else if (typeof input === \"number\" || typeof input === \"boolean\") {\n written = String(input);\n } else {\n try {\n written = JSON.stringify(input, null, 2);\n } catch {\n written = undefined;\n }\n }\n\n if (written === undefined || written.length === 0) return undefined;\n return written.length > CUSTOM_VALUE_MAX_LENGTH\n ? `${written.slice(0, CUSTOM_VALUE_MAX_LENGTH)}…`\n : written;\n}\n\n/**\n * Whatever arrived, cut down to what may be stored. Undefined when nothing\n * survived, so an empty list never lands on a row and reads later as \"they\n * attached something and it was blank\".\n *\n * One entry per label, the newest one winning: attaching a second crash\n * trace means the first one is no longer the crash.\n */\nexport function cleanCustomData(input: unknown): CustomDataEntry[] | undefined {\n if (!Array.isArray(input)) return undefined;\n\n const byLabel = new Map<string, string>();\n for (const raw of input) {\n if (typeof raw !== \"object\" || raw === null) continue;\n const entry = raw as Record<string, unknown>;\n const label = cleanLabel(entry.label);\n const value = cleanValue(entry.value);\n if (label === undefined || value === undefined) continue;\n // Re-set so a replaced label moves to the end, where the newest live.\n byLabel.delete(label);\n byLabel.set(label, value);\n }\n\n const entries = [...byLabel].map(([label, value]) => ({ label, value }));\n return entries.length > 0 ? entries.slice(-MAX_CUSTOM_ENTRIES) : undefined;\n}\n\n/**\n * Several sources of entries, oldest source first, folded into one list. The\n * same rules as cleaning: one entry per label, later wins, newest kept when\n * the cap says something has to go.\n */\nexport function mergeCustomData(\n ...sources: (CustomDataEntry[] | undefined)[]\n): CustomDataEntry[] | undefined {\n return cleanCustomData(sources.flatMap((entries) => entries ?? []));\n}\n","\"use client\";\n\nimport {\n cleanCustomData,\n mergeCustomData,\n type CustomDataEntry,\n} from \"@median/backend/customData\";\n\n/**\n * Data the host hands over on purpose, waiting to ride the next message: a\n * crash trace from their error handler, a request id, the state of a store.\n *\n * The deliberate cousin of the diagnostics ring buffer next door, and module\n * level for the same reason: a crash handler runs wherever the crash was,\n * usually nowhere near React, and sometimes before the widget has mounted.\n * Unlike diagnostics it does not wait behind a switch, because calling\n * `attach` is the host offering it.\n *\n * Nothing is sent on its own. Entries ride the next message the visitor\n * sends, land on the conversation, and are copied onto a bug report the\n * moment one is filed.\n */\n\nlet queued: CustomDataEntry[] = [];\n\n/** True when the entry survived cleaning and is waiting for a send. */\nexport function queueCustomData(label: unknown, value: unknown): boolean {\n const cleaned = cleanCustomData([{ label, value }]);\n if (cleaned === undefined) return false;\n\n queued = mergeCustomData(queued, cleaned) ?? [];\n return true;\n}\n\n/**\n * What a send takes with it: everything attached since the last one, or\n * nothing, so a quiet page costs nothing. Drained rather than copied; a send\n * that fails hands its entries back through {@link restoreCustomData}.\n */\nexport function takeCustomData(): CustomDataEntry[] | undefined {\n if (queued.length === 0) return undefined;\n const taken = queued;\n queued = [];\n return taken;\n}\n\n/** A failed send's entries, back in the queue so the retry still has them. */\nexport function restoreCustomData(entries: CustomDataEntry[]): void {\n // The failed send's entries are the older side: anything attached since\n // the failure wins a collision.\n queued = mergeCustomData(entries, queued) ?? [];\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useSyncExternalStore } from \"react\";\n\n/**\n * Whether a panel is open, kept outside React.\n *\n * The widget is mounted once, usually in a root layout. The thing that opens\n * it is usually somewhere else entirely: a \"Contact us\" item in a nav, a\n * \"Share feedback\" row in a menu, a keyboard shortcut. Holding this in a\n * module rather than in the panel's own state is what lets those reach it\n * without a host threading state through their whole tree, or wrapping their\n * app in a provider of ours.\n *\n * Two values rather than one, because the host has the last word:\n *\n * - `requested` is what the page last asked for, including the widget's own\n * controls. Null until something asks, so `defaultOpen` still means\n * something on first paint.\n * - `effective` is what the panel is actually doing. A host driving it with\n * the `open` prop can ignore a request, so anything reading the state back\n * reads this one.\n *\n * One store per panel: the support widget and the feedback panel are two\n * things a page can open, and opening one must never open the other.\n */\n\n// The `typeof` guard is for the published bundle, where no framework has\n// promised that `process` exists. A bundler that defines it leaves this line\n// statically true or false; a page without one gets production behavior.\nexport const isDevelopment =\n typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\";\n\nexport type OpenStore = ReturnType<typeof createOpenStore>;\n\nexport function createOpenStore(component: string) {\n let requested: boolean | null = null;\n let effective = false;\n let mounted = 0;\n const listeners = new Set<() => void>();\n\n function emit() {\n for (const listener of listeners) listener();\n }\n\n return {\n /** The component a warning should name, so it reads like the host's code. */\n component,\n\n subscribe(listener: () => void) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n\n readRequested: () => requested,\n readEffective: () => effective,\n\n /**\n * The server has no page to open a panel on, and neither does the first\n * client paint, which is what keeps hydration quiet.\n */\n readServerRequested: () => null as boolean | null,\n readServerEffective: () => false,\n\n request(next: boolean) {\n requested = next;\n emit();\n },\n\n /** Told, not asked: the panel saying what it settled on. */\n settle(next: boolean) {\n if (effective === next) return;\n effective = next;\n emit();\n },\n\n countMounted() {\n mounted += 1;\n return mounted;\n },\n\n countUnmounted() {\n mounted -= 1;\n // With nothing on the page, nothing is open, whatever the last one to\n // leave was doing. What was asked for is kept, so a widget that comes\n // back on the next route comes back the way it went.\n if (mounted === 0 && effective) {\n effective = false;\n emit();\n }\n },\n\n /**\n * The likeliest way to spend an afternoon on this: call `open()`, watch\n * nothing happen, and never find out that the component is not on the\n * page. So it says so, in the console, where that afternoon is being\n * spent.\n *\n * Asked a second later rather than now, because a static button wired up\n * before React has hydrated is early, not wrong. The request is kept\n * either way, so a panel that mounts afterwards picks it up.\n */\n warnIfNothingIsMounted(did: string) {\n if (!isDevelopment || mounted > 0) return;\n\n setTimeout(() => {\n if (mounted > 0) return;\n console.warn(\n `Median: ${did}, but no <${component}> is on the page. Mount it once, near the root of your app.`,\n );\n }, 1000);\n },\n };\n}\n\n/**\n * The state a panel actually renders with, and the one place the three ways\n * of driving it are settled:\n *\n * 1. `open`, if the host passed it. Controlled wins, always.\n * 2. Whatever the page last asked for, through a trigger or the hook.\n * 3. `defaultOpen`, until anything at all has happened.\n *\n * A request is reported to `onOpenChange` either way, so a controlled host\n * hears about their own nav item pressing open just as they hear about ours.\n */\nexport function useOpenState(\n store: OpenStore,\n {\n open,\n defaultOpen = false,\n onOpenChange,\n }: {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n },\n): [boolean, (next: boolean) => void] {\n const asked = useSyncExternalStore(\n store.subscribe,\n store.readRequested,\n store.readServerRequested,\n );\n const isOpen = open ?? asked ?? defaultOpen;\n\n // So a trigger reading `isOpen` back is never a frame behind the panel it\n // opened.\n useEffect(() => {\n store.settle(isOpen);\n }, [store, isOpen]);\n\n const setOpen = useCallback(\n (next: boolean) => {\n store.request(next);\n onOpenChange?.(next);\n },\n [store, onOpenChange],\n );\n\n return [isOpen, setOpen];\n}\n\n/**\n * One of each per page. Two would share the state above and open together,\n * which is never what anyone meant, so it says so where it will be read.\n */\nexport function useRegister(store: OpenStore) {\n useEffect(() => {\n if (store.countMounted() > 1 && isDevelopment) {\n console.warn(\n `Median: more than one <${store.component}> is mounted. They share one open state and open together. Mount it once, near the root of your app.`,\n );\n }\n return () => store.countUnmounted();\n }, [store]);\n}\n","/* eslint-disable */\n/**\n * Generated `api` utility.\n *\n * THIS CODE IS AUTOMATICALLY GENERATED.\n *\n * To regenerate, run `npx convex dev`.\n * @module\n */\n\nimport { anyApi, componentsGeneric } from \"convex/server\";\n\n/**\n * A utility for referencing Convex functions in your app's API.\n *\n * Usage:\n * ```js\n * const myFunctionReference = api.myModule.myFunction;\n * ```\n */\nexport const api = anyApi;\nexport const internal = anyApi;\nexport const components = componentsGeneric();\n","import { cleanTitle } from \"./signals\";\n\n/**\n * A crash, in the vocabulary both sides share.\n *\n * A page that has fallen over is the one report nobody types: whoever was\n * using it can see that it broke and has nothing to add about why. So the\n * error describes itself, and this file is what it turns into on the Signal\n * tab.\n *\n * Deliberately pure, like `signals.ts` and `feedback.ts` next door. The SDK\n * trims a crash with this file before it sends and the mutation trims it\n * again on arrival, so neither side is trusting the other's arithmetic.\n *\n * Nothing here asks a model. A report somebody pressed a button for has to\n * land, and it has to land under the same title as the last twenty copies of\n * the same crash, which is what makes the list one row rather than twenty.\n */\n\n/** What the boundary saw, as it hands it over. */\nexport type Crash = {\n /** The error's own line, without its stack. */\n message: string;\n /** \"TypeError\", when the thrown thing had a name worth keeping. */\n name?: string;\n stack?: string;\n /** The framework's id for an error that happened on the server. */\n digest?: string;\n /** The component stack, when the boundary was handed one. */\n componentStack?: string;\n /** The route it happened on, as the app's own router writes it. */\n route?: string;\n};\n\n/** One line of error, the same cap a diagnostic message gets. */\nexport const CRASH_MESSAGE_MAX_LENGTH = 300;\n\n/** Room for a real stack, matching what one attachment may hold. */\nexport const CRASH_STACK_MAX_LENGTH = 4_000;\n\nexport const CRASH_NAME_MAX_LENGTH = 60;\nexport const CRASH_ROUTE_MAX_LENGTH = 200;\n\n/** When the thrown thing said nothing for itself. */\nconst UNNAMED = \"Unnamed error\";\n\n/**\n * Names that add nothing to a title. Every thrown thing in a browser is an\n * error, so saying so twice only costs room the message wanted.\n */\nconst GENERIC_NAMES = [\"error\", \"exception\"];\n\nfunction trim(value: unknown, limit: number): string | undefined {\n if (typeof value !== \"string\") return undefined;\n const clean = value.trim().slice(0, limit);\n return clean.length > 0 ? clean : undefined;\n}\n\n/** Whatever arrived, cut down to what may be stored. */\nexport function cleanCrash(input: unknown): Crash {\n const raw =\n typeof input === \"object\" && input !== null\n ? (input as Record<string, unknown>)\n : {};\n\n const name = trim(raw.name, CRASH_NAME_MAX_LENGTH);\n const stack = trim(raw.stack, CRASH_STACK_MAX_LENGTH);\n const digest = trim(raw.digest, CRASH_NAME_MAX_LENGTH);\n const componentStack = trim(raw.componentStack, CRASH_STACK_MAX_LENGTH);\n const route = trim(raw.route, CRASH_ROUTE_MAX_LENGTH);\n\n return {\n message: trim(raw.message, CRASH_MESSAGE_MAX_LENGTH) ?? UNNAMED,\n ...(name !== undefined ? { name } : {}),\n ...(stack !== undefined ? { stack } : {}),\n ...(digest !== undefined ? { digest } : {}),\n ...(componentStack !== undefined ? { componentStack } : {}),\n ...(route !== undefined ? { route } : {}),\n };\n}\n\n/**\n * The error on one line: \"TypeError: user.plan is not a function\".\n *\n * The name is dropped when the message already opens with it, which is what\n * a stack's first line looks like when a host passes one straight through.\n */\nexport function crashLabel(crash: Crash): string {\n const name = crash.name;\n if (name === undefined) return crash.message;\n if (GENERIC_NAMES.includes(name.toLowerCase())) return crash.message;\n if (crash.message.toLowerCase().startsWith(name.toLowerCase())) {\n return crash.message;\n }\n return `${name}: ${crash.message}`;\n}\n\n/**\n * How the row reads in the bug list.\n *\n * The route leads, because it is what makes two crashes the same crash: the\n * error's own line can run long and be cut, and what survives the cut should\n * still be the thing that groups them. The exact words matter more here than\n * anywhere else, since the filing mutation dedupes on them.\n */\nexport function crashTitle(crash: Crash): string {\n const label = crashLabel(crash);\n return cleanTitle(\n crash.route === undefined\n ? `Crash: ${label}`\n : `Crash on ${crash.route}: ${label}`,\n );\n}\n\n/** What the team reads first: what broke, and where. */\nexport function crashBody(crash: Crash): string {\n return [\n `The page stopped working${\n crash.route === undefined ? \"\" : ` on ${crash.route}`\n } and somebody reported it from the error screen.`,\n \"\",\n `**Error**: ${crashLabel(crash)}`,\n ...(crash.digest === undefined ? [] : [`**Digest**: ${crash.digest}`]),\n ].join(\"\\n\");\n}\n\n/**\n * The reporter's own line on the report. They pressed a button rather than\n * writing a sentence, so it says what the button did and what it saw.\n */\nexport function crashQuote(crash: Crash): string {\n return `Reported from the error screen: ${crashLabel(crash)}`;\n}\n\n/**\n * The long parts, as attachments rather than as body text: the stack belongs\n * to this one crash, and the body is shared with every other report of it.\n */\nexport function crashAttachments(crash: Crash): { label: string; value: string }[] {\n return [\n ...(crash.stack === undefined\n ? []\n : [{ label: \"Crash trace\", value: crash.stack }]),\n ...(crash.componentStack === undefined\n ? []\n : [{ label: \"Component stack\", value: crash.componentStack }]),\n ];\n}\n","\"use client\";\n\nimport { api } from \"@median/backend\";\nimport { cleanCrash, type Crash } from \"@median/backend/crashes\";\nimport { mergeCustomData } from \"@median/backend/customData\";\nimport { ConvexHttpClient } from \"convex/browser\";\nimport { useSyncExternalStore } from \"react\";\nimport { collectContext, collectPage } from \"./context\";\nimport { restoreCustomData, takeCustomData } from \"./custom-data\";\nimport { MEDIAN_DEPLOYMENT_URL } from \"./deployment\";\nimport { snapshotNow } from \"./diagnostics\";\nimport { hasInstall, readInstall, subscribeInstall } from \"./install\";\nimport { getOrCreateSessionId } from \"./session\";\nimport { splitIdentity, type MedianUser } from \"./use-median-thread\";\n\n/**\n * Filing the crash the visitor is looking at.\n *\n * Every other send in the SDK starts with somebody typing. This one starts\n * with a page that has stopped working, which is the report nobody writes:\n * whoever was using it can see that it broke and has nothing to add about\n * why. So the error describes itself, the browser hands over what it was\n * doing, and one press files it.\n *\n * It brings its own connection and reads its key from the last widget that\n * mounted, because by the time this runs the tree that widget lived in has\n * usually been replaced by the error screen calling it. Nothing here needs a\n * component, a provider, or a panel on the page.\n *\n * It never throws. A crash screen that crashes reporting a crash is a poor\n * apology, so everything that can go wrong comes back as a reason instead.\n */\n\nexport type MedianErrorReportOptions = {\n /**\n * The key, when no widget has mounted on this page to remember it. Both\n * panels write theirs down as they mount, so an app with either one\n * installed can leave this alone.\n */\n apiKey?: string;\n /** Who is in the chair. Defaults to whoever the mounted widget was given. */\n user?: MedianUser;\n /**\n * Where it happened, when your router names the page better than its URL\n * does: \"/orders/[id]\" rather than \"/orders/8912\". It leads the title, so\n * the same crash on the same route is one row on the list however many\n * people hit it. Defaults to the path in the address bar.\n */\n route?: string;\n /** React's component stack, when your boundary was handed one. */\n componentStack?: string;\n /** Facts to put on the report, the same shape as `appState`. */\n state?: Record<string, string | number | boolean>;\n /** Blocks to attach, the same shape and limits as `attach`. */\n attach?: Record<string, unknown>;\n /** Whether the report carries what the browser knows. On by default. */\n telemetry?: boolean;\n};\n\n/** Where the report went, or why it did not go. */\nexport type MedianErrorReportOutcome =\n | {\n reported: true;\n /** True when somebody had already reported this one. */\n joined: boolean;\n }\n | { reported: false; reason: string };\n\n/** Why a report did not land, in words the host can act on. */\nconst REASONS = {\n noKey:\n \"Median has no API key on this page, so the crash could not be reported. Mount <MedianSupport> or pass apiKey to reportError.\",\n noDeployment:\n \"The Median widget was built without a deployment URL, so the crash could not be reported.\",\n noBrowser: \"reportError only runs in a browser.\",\n off: \"This site is not taking reports right now.\",\n failed: \"The report could not be sent. Check the connection and try again.\",\n} as const;\n\nlet client: ConvexHttpClient | null = null;\n\n/**\n * Anything thrown, as the fields a report is made of.\n *\n * Hosts throw all sorts. An Error is the common case, a string is the lazy\n * one, and a framework error is an Error with an id stapled to it. All three\n * arrive here and none of them should cost the report.\n */\nfunction crashFrom(error: unknown, options: MedianErrorReportOptions): Crash {\n const raw = (\n typeof error === \"object\" && error !== null ? error : {}\n ) as Record<string, unknown>;\n\n const message =\n error instanceof Error\n ? error.message\n : typeof error === \"string\"\n ? error\n : typeof raw.message === \"string\"\n ? raw.message\n : String(error);\n\n return cleanCrash({\n message,\n name: error instanceof Error ? error.name : raw.name,\n stack: raw.stack,\n // Next puts one on every error that came from the server, and it is the\n // id in that server's own log line.\n digest: raw.digest,\n componentStack: options.componentStack ?? raw.componentStack,\n route: options.route ?? currentRoute(),\n });\n}\n\n/** The page it happened on, minus anything after the path. */\nfunction currentRoute(): string | undefined {\n if (typeof window === \"undefined\") return undefined;\n return window.location.pathname || undefined;\n}\n\n/**\n * The facts that belong beside the browser's, rather than inside the write-up.\n * Both of these read as a row on the report next to the viewport and the page.\n */\nfunction factsOf(crash: Crash): Record<string, string> {\n return {\n ...(crash.route !== undefined ? { route: crash.route } : {}),\n ...(crash.digest !== undefined ? { digest: crash.digest } : {}),\n };\n}\n\nexport async function reportError(\n error: unknown,\n options: MedianErrorReportOptions = {},\n): Promise<MedianErrorReportOutcome> {\n if (typeof window === \"undefined\") {\n return { reported: false, reason: REASONS.noBrowser };\n }\n\n const apiKey = options.apiKey ?? readInstall()?.apiKey;\n if (!apiKey) {\n console.error(REASONS.noKey);\n return { reported: false, reason: REASONS.noKey };\n }\n if (!MEDIAN_DEPLOYMENT_URL) {\n console.error(REASONS.noDeployment);\n return { reported: false, reason: REASONS.noDeployment };\n }\n\n const sessionId = getOrCreateSessionId(apiKey);\n if (sessionId === null) {\n return { reported: false, reason: REASONS.failed };\n }\n\n const crash = crashFrom(error, options);\n const telemetry = options.telemetry ?? true;\n const user = options.user ?? readInstall()?.user;\n const { facts, claim } = splitIdentity(user ?? null);\n\n // Whatever the host attached since the last send, plus whatever they handed\n // this call, drained the way a message drains it so nothing is sent twice.\n const custom = mergeCustomData(\n takeCustomData(),\n Object.entries(options.attach ?? {}).map(([label, value]) => ({\n label,\n value: typeof value === \"string\" ? value : JSON.stringify(value),\n })),\n );\n\n // Read here rather than on mount, like every other send: all of it is\n // wanted as \"what was true when it broke\".\n const context = telemetry ? collectContext() : undefined;\n const page = telemetry ? collectPage() : undefined;\n const diagnostics = snapshotNow({ ...factsOf(crash), ...options.state });\n\n try {\n client ??= new ConvexHttpClient(MEDIAN_DEPLOYMENT_URL);\n const outcome = await client.mutation(api.feedback.reportError, {\n apiKey,\n sessionId,\n error: crash,\n ...(user ? { user: facts } : {}),\n ...(claim ? { identity: claim } : {}),\n ...(context ? { context } : {}),\n ...(page ? { page } : {}),\n ...(diagnostics ? { diagnostics } : {}),\n ...(custom ? { customData: custom } : {}),\n });\n\n if (outcome === \"off\") {\n if (custom) restoreCustomData(custom);\n return { reported: false, reason: REASONS.off };\n }\n return { reported: true, joined: outcome === \"joined\" };\n } catch (caught) {\n // Back in the queue, so a second press still carries them.\n if (custom) restoreCustomData(custom);\n console.error(\"Median: sending the crash report failed\", caught);\n return { reported: false, reason: REASONS.failed };\n }\n}\n\n/**\n * Whether a report has anywhere to go: a widget has mounted on this page and\n * left its key, and this build knows which Median to send to.\n *\n * For a \"Report error\" button, which should not be on the screen at all if\n * pressing it could only ever fail. It follows the install rather than\n * reading it once, since an error screen can render before the widget does.\n */\nexport function useCanReportError(): boolean {\n const isInstalled = useSyncExternalStore(\n subscribeInstall,\n hasInstall,\n // The server renders nothing installed: it has no page to have mounted\n // on, and a button that flickered away on hydration is worse than one\n // that arrives a moment late.\n () => false,\n );\n\n return isInstalled && Boolean(MEDIAN_DEPLOYMENT_URL);\n}\n","import type {\n ConversationPage,\n DeviceKind,\n VisitorContext,\n} from \"@median/backend/telemetry\";\n\n/**\n * The handful of things the browser already knows that a support reply needs.\n *\n * Read at send time rather than watched, because all of it is only ever wanted\n * as \"what was true when they wrote\". Nothing is stored, nothing is polled,\n * and nothing leaves the page unless somebody actually gets in touch.\n *\n * The user agent is parsed here rather than sent up raw. A name and a major\n * version is what the inbox shows and all it can act on; the full string is a\n * fingerprint we would then be keeping on somebody else's customers.\n */\n\n/**\n * Browser names in the order they have to be tested.\n *\n * Every one of these lies about being the others. Chrome's string contains\n * Safari, Edge's contains Chrome and Safari, Opera's contains all three, so\n * the only thing that works is checking the most specific claim first and\n * taking the first hit.\n */\nconst BROWSERS: { name: string; token: RegExp }[] = [\n { name: \"Edge\", token: /Edg(?:e|A|iOS)?\\/(\\d+)/ },\n { name: \"Opera\", token: /OPR\\/(\\d+)/ },\n { name: \"Samsung Internet\", token: /SamsungBrowser\\/(\\d+)/ },\n { name: \"Firefox\", token: /(?:Firefox|FxiOS)\\/(\\d+)/ },\n { name: \"Chrome\", token: /(?:Chrome|CriOS)\\/(\\d+)/ },\n { name: \"Safari\", token: /Version\\/(\\d+).*Safari/ },\n];\n\nconst OPERATING_SYSTEMS: { name: string; token: RegExp }[] = [\n // Before Android, whose string also says Linux.\n { name: \"Android\", token: /Android/ },\n { name: \"iOS\", token: /iPhone|iPad|iPod/ },\n { name: \"macOS\", token: /Mac OS X|Macintosh/ },\n { name: \"Windows\", token: /Windows NT/ },\n { name: \"ChromeOS\", token: /CrOS/ },\n { name: \"Linux\", token: /Linux/ },\n];\n\nfunction browserOf(ua: string): string | undefined {\n for (const { name, token } of BROWSERS) {\n const match = ua.match(token);\n if (match) return match[1] ? `${name} ${match[1]}` : name;\n }\n return undefined;\n}\n\nfunction osOf(ua: string): string | undefined {\n return OPERATING_SYSTEMS.find(({ token }) => token.test(ua))?.name;\n}\n\n/**\n * Desktop, tablet, or phone.\n *\n * An iPad reports itself as a Mac and has done for years, so the touch check\n * is what tells the two apart. Everything else is honest enough about it.\n */\nfunction deviceOf(ua: string): DeviceKind {\n const isTouchMac =\n /Macintosh/.test(ua) && navigator.maxTouchPoints > 1;\n\n if (/iPad|Tablet/.test(ua) || isTouchMac) return \"tablet\";\n if (/Mobi|iPhone|iPod|Android.*Mobile/.test(ua)) return \"mobile\";\n if (/Android/.test(ua)) return \"tablet\";\n return \"desktop\";\n}\n\n/** What the browser will admit to, or nothing if it is not a browser at all. */\nexport function collectContext(): VisitorContext | undefined {\n if (typeof navigator === \"undefined\" || typeof window === \"undefined\") {\n return undefined;\n }\n\n const ua = navigator.userAgent ?? \"\";\n const { width, height } = window.screen ?? { width: 0, height: 0 };\n\n const context: VisitorContext = {\n // Wrapped: a browser with a broken or absent Intl is rare but real, and\n // failing to work out a time zone should not stop a message sending.\n timeZone: safely(() => Intl.DateTimeFormat().resolvedOptions().timeZone),\n locale: navigator.language || undefined,\n browser: browserOf(ua),\n os: osOf(ua),\n device: deviceOf(ua),\n // The multiplication sign rather than an x, since this is being read as a\n // measurement rather than run as one.\n screen: width && height ? `${width} × ${height}` : undefined,\n };\n\n return Object.values(context).some((one) => one !== undefined)\n ? context\n : undefined;\n}\n\n/**\n * The page they are writing from.\n *\n * The query string is dropped on the way out, before it is ever sent, and\n * again on the way in. A support agent needs to know somebody was on the\n * checkout page; the password reset token that got them there is not ours to\n * put in somebody's inbox.\n */\nexport function collectPage(): ConversationPage | undefined {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return undefined;\n }\n\n const url = withoutQuery(window.location.href);\n if (url === undefined) return undefined;\n\n return {\n url,\n title: document.title || undefined,\n referrer: withoutQuery(document.referrer),\n };\n}\n\nfunction withoutQuery(href: string): string | undefined {\n if (!href) return undefined;\n try {\n const url = new URL(href);\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") return undefined;\n return `${url.origin}${url.pathname}`;\n } catch {\n return undefined;\n }\n}\n\nfunction safely<T>(read: () => T): T | undefined {\n try {\n return read();\n } catch {\n return undefined;\n }\n}\n","/**\n * Which Median the widget talks to.\n *\n * Deliberately not a prop. A host plugs in their API key and that is the whole\n * install; our address is our business, not something they should have to know\n * or keep in sync. It reads from the env while the widget ships inside this\n * app, and the published package bakes it in at build time.\n */\nexport const MEDIAN_DEPLOYMENT_URL = process.env.NEXT_PUBLIC_CONVEX_URL;\n","/**\n * What was going wrong around a bug report, from both ends.\n *\n * The client half is collected by the widget SDK: uncaught errors, rejected\n * promises, failed requests, and whatever the host chose to tell us about\n * their own app. The server half is asked for at report time, from the same\n * endpoint the agent's tools live at, so a team that has already wired up\n * tools gets it for nothing.\n *\n * Pure on purpose. The widget cleans what it collects with this file before\n * it sends, and the backend cleans it again with the same file before it\n * stores, so neither side is trusting the other's arithmetic.\n *\n * The rule everywhere here is the one the rest of the telemetry follows: a\n * fact about a program, never a fact about a person. Nothing reads cookies,\n * nothing reads storage, and every URL loses its query string on the way.\n */\n\n/**\n * Where one entry came from. `error` is an uncaught exception, `rejection`\n * is a promise nobody caught, `console` is a console.error, and `network` is\n * a request that failed or came back unhappy.\n */\nexport const DIAGNOSTIC_KINDS = [\n \"error\",\n \"rejection\",\n \"console\",\n \"network\",\n] as const;\n\nexport type DiagnosticKind = (typeof DIAGNOSTIC_KINDS)[number];\n\nexport type DiagnosticEvent = {\n at: number;\n kind: DiagnosticKind;\n message: string;\n /** The file, or the request's method and path. Never a query string. */\n source?: string;\n /** The first frames, for an exception. */\n stack?: string;\n /** The HTTP status, on a network entry that got one. */\n status?: number;\n};\n\nexport type ClientDiagnostics = {\n /** When the snapshot was taken, by the browser's own clock. */\n at: number;\n /** The page they were on. Query string already dropped. */\n url?: string;\n /** \"1512 × 982\", already formatted, like the rest of the telemetry. */\n viewport?: string;\n /** Whatever the host declared about their own app: version, route, flags. */\n state?: Record<string, string>;\n events: DiagnosticEvent[];\n};\n\n/** One tool endpoint's answer to \"how are you\". */\nexport type ServerDiagnostics = {\n /** Which endpoint answered, so a team with two can tell them apart. */\n url: string;\n ok: boolean;\n /** What it said, as JSON text, or why it could not be asked. */\n detail: string;\n};\n\n/** The most entries one snapshot carries. Newest kept, oldest dropped. */\nexport const MAX_EVENTS = 12;\n\nexport const MESSAGE_MAX_LENGTH = 300;\nexport const SOURCE_MAX_LENGTH = 200;\nexport const STACK_MAX_LENGTH = 800;\n\n/** The host's own state, bounded the same way visitor metadata is. */\nexport const MAX_STATE_ENTRIES = 20;\nexport const STATE_KEY_MAX_LENGTH = 60;\nexport const STATE_VALUE_MAX_LENGTH = 200;\n\n/** What one endpoint may say for itself. Enough to hold a health payload. */\nexport const SERVER_DETAIL_MAX_LENGTH = 2_000;\n\n/** How long the widget waits before deciding an endpoint is not answering. */\nexport const SERVER_TIMEOUT_MS = 8_000;\n\nfunction trim(value: unknown, limit: number): string | undefined {\n if (typeof value !== \"string\") return undefined;\n const clean = value.trim().slice(0, limit);\n return clean.length > 0 ? clean : undefined;\n}\n\n/** A URL with its query string taken off, or nothing if it is not one. */\nexport function withoutQuery(href: unknown): string | undefined {\n if (typeof href !== \"string\" || href.length === 0) return undefined;\n try {\n const url = new URL(href);\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") return undefined;\n return `${url.origin}${url.pathname}`.slice(0, SOURCE_MAX_LENGTH);\n } catch {\n // Relative paths and the like arrive here. The path is the useful half\n // anyway, so it is kept as written, minus anything after a \"?\".\n return trim(href.split(\"?\")[0], SOURCE_MAX_LENGTH);\n }\n}\n\nfunction cleanEvent(input: unknown): DiagnosticEvent | null {\n if (typeof input !== \"object\" || input === null) return null;\n const raw = input as Record<string, unknown>;\n\n const kind = DIAGNOSTIC_KINDS.find((one) => one === raw.kind);\n const message = trim(raw.message, MESSAGE_MAX_LENGTH);\n if (kind === undefined || message === undefined) return null;\n\n const status =\n typeof raw.status === \"number\" && Number.isFinite(raw.status)\n ? Math.trunc(raw.status)\n : undefined;\n\n return {\n at: typeof raw.at === \"number\" && Number.isFinite(raw.at) ? raw.at : 0,\n kind,\n message,\n ...(trim(raw.source, SOURCE_MAX_LENGTH) !== undefined\n ? { source: trim(raw.source, SOURCE_MAX_LENGTH)! }\n : {}),\n ...(trim(raw.stack, STACK_MAX_LENGTH) !== undefined\n ? { stack: trim(raw.stack, STACK_MAX_LENGTH)! }\n : {}),\n ...(status !== undefined ? { status } : {}),\n };\n}\n\nfunction cleanState(input: unknown): Record<string, string> | undefined {\n if (typeof input !== \"object\" || input === null) return undefined;\n\n const state: Record<string, string> = {};\n for (const [key, value] of Object.entries(input).slice(0, MAX_STATE_ENTRIES)) {\n if (value === null || value === undefined) continue;\n const label = trim(key, STATE_KEY_MAX_LENGTH);\n // Numbers and booleans are the other two things anybody puts in here, so\n // they are written out rather than refused.\n const written =\n typeof value === \"string\"\n ? trim(value, STATE_VALUE_MAX_LENGTH)\n : typeof value === \"number\" || typeof value === \"boolean\"\n ? String(value).slice(0, STATE_VALUE_MAX_LENGTH)\n : undefined;\n if (label === undefined || written === undefined) continue;\n state[label] = written;\n }\n\n return Object.keys(state).length > 0 ? state : undefined;\n}\n\n/**\n * Whatever arrived, cut down to what may be stored. Undefined when there was\n * nothing worth keeping, so an empty snapshot never lands on a row and reads\n * later as \"we looked and the page was fine\".\n */\nexport function cleanClientDiagnostics(\n input: unknown,\n): ClientDiagnostics | undefined {\n if (typeof input !== \"object\" || input === null) return undefined;\n const raw = input as Record<string, unknown>;\n\n const events = Array.isArray(raw.events)\n ? raw.events\n .map(cleanEvent)\n .filter((one): one is DiagnosticEvent => one !== null)\n .slice(-MAX_EVENTS)\n : [];\n\n const url = withoutQuery(raw.url);\n const viewport = trim(raw.viewport, 40);\n const state = cleanState(raw.state);\n\n if (events.length === 0 && state === undefined && url === undefined) {\n return undefined;\n }\n\n return {\n at: typeof raw.at === \"number\" && Number.isFinite(raw.at) ? raw.at : 0,\n ...(url !== undefined ? { url } : {}),\n ...(viewport !== undefined ? { viewport } : {}),\n ...(state !== undefined ? { state } : {}),\n events,\n };\n}\n\n/** One endpoint's answer, trimmed to something a card can show. */\nexport function cleanServerDetail(text: string): string {\n return text.length > SERVER_DETAIL_MAX_LENGTH\n ? `${text.slice(0, SERVER_DETAIL_MAX_LENGTH)}…`\n : text;\n}\n","\"use client\";\n\nimport {\n cleanClientDiagnostics,\n MAX_EVENTS,\n MESSAGE_MAX_LENGTH,\n SOURCE_MAX_LENGTH,\n STACK_MAX_LENGTH,\n withoutQuery,\n type ClientDiagnostics,\n type DiagnosticEvent,\n} from \"@median/backend/diagnostics\";\nimport { useCallback, useEffect, useRef } from \"react\";\n\n/**\n * What has been going wrong on the page, kept ready in case somebody asks\n * for help about it.\n *\n * A support agent's first three questions are always the same: what were you\n * doing, what did it say, and what does the console show. The customer can\n * answer the first one. This answers the other two, so a bug report arrives\n * with the error already attached rather than after four messages of asking.\n *\n * Off unless a host switches it on. Everything here reads their program's\n * error stream, which is theirs to offer rather than ours to take.\n *\n * A bounded ring buffer and nothing else. Nothing is sent on its own, nothing\n * is stored, and nothing is polled: the newest snapshot rides the next message\n * the customer sends, and only when there is something new in it.\n */\n\n/** What a host can switch on. `true` is the passive half. */\nexport type MedianDiagnostics =\n | boolean\n | {\n /** Uncaught errors and rejected promises. On whenever diagnostics are. */\n errors?: boolean;\n /** Requests that failed or came back unhappy. Wraps window.fetch. */\n network?: boolean;\n /** console.error calls. Wraps console.error. */\n console?: boolean;\n };\n\ntype Settings = { errors: boolean; network: boolean; console: boolean };\n\nfunction settingsOf(option: MedianDiagnostics | undefined): Settings | null {\n if (option === undefined || option === false) return null;\n if (option === true) return { errors: true, network: false, console: false };\n return {\n errors: option.errors ?? true,\n network: option.network ?? false,\n console: option.console ?? false,\n };\n}\n\n/**\n * The buffer, and how many things have gone into it.\n *\n * Module level rather than per component: a page has one widget, and an\n * error that happened before React mounted it is exactly the kind worth\n * keeping. The count is what lets a sender ask \"anything new since last\n * time\" without comparing arrays.\n */\nconst events: DiagnosticEvent[] = [];\nlet recorded = 0;\n\n/**\n * The host's own state, as the last mounted widget was given it. Here rather\n * than only in the hook's ref because a crash report is sent from a tree\n * where that hook no longer exists, and the route a page fell over on is\n * exactly the sort of thing hosts put in `appState`.\n */\nlet latestState: Record<string, string | number | boolean> | undefined;\n\nfunction record(event: DiagnosticEvent): void {\n events.push(event);\n if (events.length > MAX_EVENTS) events.shift();\n recorded += 1;\n}\n\nfunction messageOf(value: unknown): string {\n if (value instanceof Error) return value.message.slice(0, MESSAGE_MAX_LENGTH);\n if (typeof value === \"string\") return value.slice(0, MESSAGE_MAX_LENGTH);\n try {\n return JSON.stringify(value).slice(0, MESSAGE_MAX_LENGTH);\n } catch {\n return String(value).slice(0, MESSAGE_MAX_LENGTH);\n }\n}\n\nfunction stackOf(value: unknown): string | undefined {\n return value instanceof Error && typeof value.stack === \"string\"\n ? value.stack.slice(0, STACK_MAX_LENGTH)\n : undefined;\n}\n\n/**\n * Installs whatever the host asked for, and gives back the way to take it all\n * off again. Every wrapper calls through to what it replaced first, so a page\n * behaves exactly as it did before the widget arrived.\n */\nfunction collect(settings: Settings): () => void {\n const undo: (() => void)[] = [];\n\n if (settings.errors) {\n const onError = (event: ErrorEvent) => {\n // A failed image or script fires here too, with no error on it. Those\n // are the browser's business, not a bug report's.\n if (!event.error && !event.message) return;\n record({\n at: Date.now(),\n kind: \"error\",\n message: messageOf(event.error ?? event.message),\n ...(event.filename\n ? {\n source: `${withoutQuery(event.filename) ?? \"\"}:${event.lineno}`.slice(\n 0,\n SOURCE_MAX_LENGTH,\n ),\n }\n : {}),\n ...(stackOf(event.error) !== undefined\n ? { stack: stackOf(event.error)! }\n : {}),\n });\n };\n const onRejection = (event: PromiseRejectionEvent) => {\n record({\n at: Date.now(),\n kind: \"rejection\",\n message: messageOf(event.reason),\n ...(stackOf(event.reason) !== undefined\n ? { stack: stackOf(event.reason)! }\n : {}),\n });\n };\n\n window.addEventListener(\"error\", onError);\n window.addEventListener(\"unhandledrejection\", onRejection);\n undo.push(() => {\n window.removeEventListener(\"error\", onError);\n window.removeEventListener(\"unhandledrejection\", onRejection);\n });\n }\n\n if (settings.network && typeof window.fetch === \"function\") {\n const original = window.fetch;\n window.fetch = async function medianFetch(this: unknown, ...args) {\n const [input, init] = args;\n const method = (init?.method ?? \"GET\").toUpperCase();\n const url =\n typeof input === \"string\"\n ? input\n : input instanceof URL\n ? input.href\n : input.url;\n\n try {\n const response = await original.apply(this as never, args);\n if (!response.ok) {\n record({\n at: Date.now(),\n kind: \"network\",\n message: `${method} ${response.status}`,\n source: `${method} ${withoutQuery(url) ?? \"\"}`.slice(\n 0,\n SOURCE_MAX_LENGTH,\n ),\n status: response.status,\n });\n }\n return response;\n } catch (thrown) {\n record({\n at: Date.now(),\n kind: \"network\",\n message: messageOf(thrown),\n source: `${method} ${withoutQuery(url) ?? \"\"}`.slice(\n 0,\n SOURCE_MAX_LENGTH,\n ),\n });\n // Rethrown untouched. Watching a request is not catching it.\n throw thrown;\n }\n } as typeof window.fetch;\n\n undo.push(() => {\n window.fetch = original;\n });\n }\n\n if (settings.console) {\n const original = console.error;\n console.error = function medianConsoleError(...args: unknown[]) {\n record({\n at: Date.now(),\n kind: \"console\",\n message: args.map(messageOf).join(\" \").slice(0, MESSAGE_MAX_LENGTH),\n ...(stackOf(args.find((one) => one instanceof Error)) !== undefined\n ? { stack: stackOf(args.find((one) => one instanceof Error))! }\n : {}),\n });\n original.apply(console, args);\n };\n\n undo.push(() => {\n console.error = original;\n });\n }\n\n return () => {\n for (const off of undo) off();\n };\n}\n\n/** Everything worth saying about the page right now, or nothing. */\nfunction snapshot(\n state: Record<string, string | number | boolean> | undefined,\n): ClientDiagnostics | undefined {\n if (typeof window === \"undefined\") return undefined;\n\n return cleanClientDiagnostics({\n at: Date.now(),\n url: window.location.href,\n viewport: `${window.innerWidth} × ${window.innerHeight}`,\n state,\n events,\n });\n}\n\n/**\n * Everything the page can say for itself right now, for a send that cannot\n * wait to be asked twice.\n *\n * The hook's `take` answers with nothing when nothing has been recorded since\n * the last send, which is right for a chat message and wrong for a crash\n * report: the viewport and the route are worth having whether or not the ring\n * buffer moved. So this one always answers, and takes anything the caller\n * knows that the host's own state does not.\n */\nexport function snapshotNow(\n extraState?: Record<string, string | number | boolean>,\n): ClientDiagnostics | undefined {\n return snapshot({ ...latestState, ...extraState });\n}\n\n/**\n * The collector, as a component uses it: on while the host wants it, off\n * again when they change their mind or the widget leaves the page.\n *\n * `take` is what a send calls. It answers with a snapshot the first time and\n * whenever something new has been recorded since, and with nothing the rest\n * of the time, so a long conversation on a healthy page sends the state once\n * rather than on every line.\n */\nexport function useDiagnostics(\n option: MedianDiagnostics | undefined,\n appState: Record<string, string | number | boolean> | undefined,\n) {\n const settings = settingsOf(option);\n // Serialised so a host building the object inline does not reinstall the\n // wrappers on every render. The same trick `user` gets in the thread hook.\n const key = settings === null ? null : JSON.stringify(settings);\n\n // Read at send time rather than closed over, since a route or a flag can\n // change between the widget mounting and somebody typing. Written after\n // the render rather than during it: nothing on screen depends on it, and a\n // ref written mid-render is a render that cannot be replayed.\n const stateRef = useRef(appState);\n useEffect(() => {\n stateRef.current = appState;\n latestState = appState;\n });\n\n const sentAt = useRef<number | null>(null);\n\n useEffect(() => {\n if (key === null) return;\n return collect(JSON.parse(key) as Settings);\n }, [key]);\n\n const take = useCallback((): ClientDiagnostics | undefined => {\n if (key === null) return undefined;\n if (sentAt.current !== null && sentAt.current === recorded) return undefined;\n\n sentAt.current = recorded;\n return snapshot(stateRef.current);\n }, [key]);\n\n return take;\n}\n","\"use client\";\n\nimport { useEffect } from \"react\";\nimport type { MedianUser } from \"./use-median-thread\";\n\n/**\n * What the install on this page said, kept where a crash can still reach it.\n *\n * Everything else in the SDK reads its API key and its visitor from props,\n * which is fine while there is a widget on the page to hold them. A crash is\n * the case where there is not: the boundary that catches it has replaced the\n * tree the widget was mounted in, and in the worst of them, the root layout,\n * there is nothing of the app left at all.\n *\n * Module level for the same reason the diagnostics buffer is: it outlives\n * every React tree on the page. A panel writes here as it mounts, and\n * `reportError` reads it long after that panel has been unmounted by the\n * error it is reporting.\n */\n\ntype Install = { apiKey: string; user?: MedianUser };\n\nlet install: Install | null = null;\n\nconst listeners = new Set<() => void>();\n\n/** Called by whichever widget mounted. The newest one wins. */\nexport function rememberInstall(next: Install): void {\n // Only a new key is news. The panels write here after every render, and a\n // report button that re-rendered on each of them would be a waste of a\n // subscription.\n const isNews = install?.apiKey !== next.apiKey;\n install = { apiKey: next.apiKey, ...(next.user ? { user: next.user } : {}) };\n if (!isNews) return;\n for (const listener of listeners) listener();\n}\n\n/** What the last mounted widget was given, or nothing if none ever was. */\nexport function readInstall(): Install | null {\n return install;\n}\n\n/**\n * Whether anything has been installed yet, as an external store.\n *\n * A report button rendered by an error screen can easily be on the page one\n * commit before the widget whose key it needs: a page that failed on the\n * server paints its error boundary and its layout together. Reading this\n * live is what lets that button appear the moment reporting becomes\n * possible, rather than sitting hidden until something else re-renders.\n */\nexport function subscribeInstall(listener: () => void): () => void {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n}\n\nexport function hasInstall(): boolean {\n return install !== null;\n}\n\n/**\n * Both panels call this as they mount, and again whenever the host changes\n * its mind about who is in the chair.\n *\n * Written after the render rather than during it, and on every one rather\n * than behind a dependency list, because `user` is an object a host builds\n * inline and the write is one assignment.\n */\nexport function useRememberInstall(apiKey: string, user?: MedianUser): void {\n useEffect(() => {\n rememberInstall({ apiKey, ...(user ? { user } : {}) });\n });\n}\n","/**\n * Who this browser is, as far as the widget cares: a random token minted on\n * first visit and kept in localStorage, one per API key, so coming back\n * reopens the same conversation without anyone signing in.\n *\n * A small store rather than a bare read, so `resetSessions` can tell a\n * mounted widget its token is gone and the thread re-reads through\n * `useSyncExternalStore`.\n */\n\nconst STORAGE_PREFIX = \"median:session:\";\n\n/**\n * When localStorage is blocked, the token lives here instead: gone on\n * reload, but stable within the page, which is what the reads below need.\n */\nconst inMemorySessions = new Map<string, string>();\n\nconst listeners = new Set<() => void>();\n\nexport function subscribeSession(listener: () => void) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n}\n\n/**\n * Stable across calls on purpose: this is read as an external-store snapshot,\n * so two calls in a row must agree.\n */\nexport function getOrCreateSessionId(apiKey: string): string | null {\n if (typeof window === \"undefined\") return null;\n\n const storageKey = `${STORAGE_PREFIX}${apiKey}`;\n try {\n const existing = window.localStorage.getItem(storageKey);\n if (existing && existing.length >= 8) return existing;\n\n const created = crypto.randomUUID();\n window.localStorage.setItem(storageKey, created);\n return created;\n } catch {\n // Storage can be blocked entirely. A session that lasts one page load\n // still beats no support at all.\n const remembered = inMemorySessions.get(apiKey) ?? crypto.randomUUID();\n inMemorySessions.set(apiKey, remembered);\n return remembered;\n }\n}\n\n/**\n * Forget every token this browser holds. The next read mints a fresh one, so\n * the next message starts a conversation with nothing behind it.\n *\n * This is for sign out: the conversation belongs to the person who was in the\n * chair, not to the chair. The old thread stays in the team's inbox; it just\n * stops being reachable from this browser.\n */\nexport function resetSessions() {\n inMemorySessions.clear();\n\n if (typeof window !== \"undefined\") {\n try {\n const stale: string[] = [];\n for (let i = 0; i < window.localStorage.length; i += 1) {\n const key = window.localStorage.key(i);\n if (key !== null && key.startsWith(STORAGE_PREFIX)) stale.push(key);\n }\n for (const key of stale) window.localStorage.removeItem(key);\n } catch {\n // Storage was blocked, so there was nothing durable to forget.\n }\n }\n\n for (const listener of listeners) listener();\n}\n","\"use client\";\n\nimport { api } from \"@median/backend\";\nimport { TYPING_TTL_MS } from \"@median/backend/support\";\nimport { useMutation, useQuery } from \"convex/react\";\nimport {\n useCallback,\n useEffect,\n useMemo,\n useState,\n useSyncExternalStore,\n} from \"react\";\nimport { attachmentKindOf, formatFileSize } from \"@/components/attachments\";\nimport { useNow } from \"@/hooks/use-now\";\nimport { errorMessage } from \"@/lib/errors\";\nimport { formatClockTime, formatDayLabel, isNewDay } from \"@/lib/time\";\nimport { uploadAttachments } from \"@/lib/upload\";\nimport type {\n SupportAgent,\n SupportAsk,\n SupportMessage,\n SupportPresence,\n SupportRating,\n} from \"../types\";\nimport { collectContext, collectPage } from \"./context\";\nimport { restoreCustomData, takeCustomData } from \"./custom-data\";\nimport { useDiagnostics, type MedianDiagnostics } from \"./diagnostics\";\nimport { readSkippedRatings, writeSkippedRating } from \"./rating-skips\";\nimport { readLastSeenAt, writeLastSeenAt } from \"./read-state\";\nimport { getOrCreateSessionId, subscribeSession } from \"./session\";\nimport { useVisitorEmail } from \"./visitor-email\";\n\n/** What a host can tell us about who is in the widget. All of it optional. */\nexport type MedianUser = {\n /**\n * Your own id for this person, and that id signed from MEDIAN_KEY.\n *\n * The pair is what makes a conversation follow somebody rather than a\n * browser: sign in on a phone and the thread from the laptop is already\n * there. Both or neither, and the signing belongs on your server, because\n * whoever holds the key can claim to be any of your customers.\n *\n * Without them the widget still works. It is just this browser's thread,\n * which is what it has always been.\n */\n id?: string;\n hash?: string;\n name?: string;\n email?: string;\n /**\n * Their profile picture, so the team sees who they are talking to rather\n * than a letter. Has to be an https URL; anything else is ignored.\n */\n avatarUrl?: string;\n /** Anything else worth showing the team: plan, company, whatever. */\n metadata?: Record<string, string>;\n};\n\n/**\n * Whether the host has told us somebody is in the chair.\n *\n * Anything they say about the person counts, because only they can know it: a\n * host who passes a name and an email for whoever is signed in is as sure as\n * one who passes a signed id. An empty object is not an answer, so a session\n * that is still loading does not open the door on its way past.\n */\nexport function isSignedIn(user: MedianUser | undefined): boolean {\n if (user === undefined) return false;\n\n // Every field checked as it arrives rather than as it is typed: a host\n // spreading a session that is not there yet passes `{ name: undefined }`,\n // and a widget that threw on that would be a page broken by signing out.\n const { metadata, ...facts } = user;\n return (\n Object.values(facts).some(\n (value) => typeof value === \"string\" && value.trim().length > 0,\n ) || Object.keys(metadata ?? {}).length > 0\n );\n}\n\n/**\n * The claim, split from the rest.\n *\n * Two things go up rather than one, and the difference between them is the\n * whole of the security. A name is decoration and is taken at its word; an id\n * decides whose history the widget can reach, so it travels with its signature\n * and is believed only if that checks out. Sending them as one object would\n * blur a line the backend needs to keep sharp.\n */\nexport function splitIdentity(user: MedianUser | null): {\n facts: Omit<MedianUser, \"id\" | \"hash\">;\n claim: { userId: string; userHash: string } | undefined;\n} {\n if (user === null) return { facts: {}, claim: undefined };\n\n const { id, hash, ...facts } = user;\n return {\n facts,\n claim: id && hash ? { userId: id, userHash: hash } : undefined,\n };\n}\n\n/** What the backend made of a claim, and what to say about it. */\nconst IDENTITY_COMPLAINTS: Record<string, string> = {\n unverified:\n \"Median: the user hash passed to <MedianSupport> did not match. Sign the same string you pass as `user.id` with the Median key that produced this widget id. Until it matches, this visitor gets a conversation of their own on every device.\",\n unconfigured:\n \"Median: a user hash was passed to <MedianSupport>, but its widget id and hash came from different Median keys. Derive both from the same key.\",\n};\n\n/**\n * The live conversation behind the widget: a session token for this browser,\n * the thread as Convex sees it, and a send that uploads files first. The\n * widget itself stays dumb; this is the seam the SDK promised it.\n */\nexport function useMedianThread(\n apiKey: string,\n user?: MedianUser,\n /** Whether to read the browser's own answers along with a message. */\n telemetry = true,\n /**\n * Nobody may write yet, so nothing is read either: a visitor who has to\n * sign in first is not shown a thread they cannot answer, and the widget\n * holds no conversation open behind the invitation to sign in.\n */\n isLocked = false,\n /** What to watch going wrong on the page, if the host wants any of it. */\n diagnostics?: MedianDiagnostics,\n /** The host's own state, read at send time. */\n appState?: Record<string, string | number | boolean>,\n /**\n * Whether this page asks for an email before a visitor's first message.\n * The team answers through `config.requireEmail`, and both have to agree:\n * either side can waive the question.\n */\n requireEmail = true,\n) {\n // The session token is external state (localStorage), read as a store: the\n // server snapshot is null, so SSR and the first client paint agree, and the\n // browser's token takes over from there. Subscribed so `reset()` lands\n // here, mints a new token, and the thread starts over.\n const sessionId = useSyncExternalStore(\n subscribeSession,\n useCallback(() => getOrCreateSessionId(apiKey), [apiKey]),\n () => null,\n );\n\n const config = useQuery(api.widget.config, { apiKey });\n\n // The answer to the composer's question, if this browser has given one.\n const [visitorEmail, setVisitorEmail] = useVisitorEmail(apiKey);\n\n /**\n * Whether the composer asks who they are before it takes a message. All\n * three have to say so: the page's own rule, the team's switch, and the\n * fact that nobody here knows an address already. A host who passes\n * `user.email` has answered on their visitor's behalf; the question never\n * comes up. Before the config lands there is no team answer yet, and the\n * panel is still shimmering besides, so the default holds.\n */\n const askForEmail =\n requireEmail &&\n (config?.requireEmail ?? true) &&\n !visitorEmail &&\n !(typeof user?.email === \"string\" && user.email.trim().length > 0);\n\n const thread = useQuery(\n api.widget.thread,\n sessionId === null || isLocked ? \"skip\" : { apiKey, sessionId },\n );\n const send = useMutation(api.widget.send);\n const sendTyping = useMutation(api.widget.setTyping);\n const sendPresence = useMutation(api.widget.presence);\n const rateConversation = useMutation(api.widget.rate);\n const identify = useMutation(api.widget.identify);\n const generateUploadUrl = useMutation(api.widget.generateUploadUrl);\n\n // Who they are can change without them saying a word: they sign in on the\n // host's page while the thread a teammate is reading still says nobody.\n //\n // Serialised and parsed back, which looks like a detour and is the point.\n // A host almost always builds this object inline, so it is a new one on\n // every render and a new identity to any effect watching it; the string is\n // the same until the facts in it are not.\n const identityKey = user ? JSON.stringify(user) : null;\n const identity = useMemo(\n () => (identityKey === null ? null : (JSON.parse(identityKey) as MedianUser)),\n [identityKey],\n );\n\n useEffect(() => {\n if (sessionId === null || identity === null) return;\n const { facts, claim } = splitIdentity(identity);\n\n // Best effort on the facts: they ride along with the next message anyway,\n // which is exactly where they were before this existed. A signature that\n // was offered and refused is worth saying out loud though, because the\n // host is the only one who can fix it and nothing visibly breaks.\n identify({\n apiKey,\n sessionId,\n user: facts,\n ...(claim ? { identity: claim } : {}),\n })\n .then((status) => {\n const complaint = IDENTITY_COMPLAINTS[status];\n if (complaint) console.error(complaint);\n })\n .catch(() => {});\n }, [apiKey, sessionId, identity, identify]);\n\n // A fast clock only while a teammate's dots are on screen, so they expire\n // on time without the widget re-rendering every second forever.\n const hasLiveDots =\n thread?.messages.some(\n (message) => message.pending && message.typingAt !== null,\n ) ?? false;\n const now = useNow(hasLiveDots ? 1000 : 60_000);\n\n const takeDiagnostics = useDiagnostics(diagnostics, appState);\n\n const [isSending, setIsSending] = useState(false);\n const [sendError, setSendError] = useState<string | null>(null);\n\n const agent: SupportAgent | null = useMemo(\n () =>\n config === undefined\n ? null\n : {\n id: \"median-agent\",\n name: config.agent.name,\n kind: \"ai\",\n avatarUrl: config.agent.avatarUrl,\n },\n [config],\n );\n\n const messages: SupportMessage[] = useMemo(() => {\n if (!thread || agent === null) return [];\n\n const out: SupportMessage[] = [];\n let previousAt: number | undefined;\n let previousConversationId: string | undefined;\n\n for (const message of thread.messages) {\n // A typing bubble whose teammate stopped refreshing it: the browser on\n // the other end went away, so the dots go too.\n if (\n message.pending &&\n message.typingAt !== null &&\n now - message.typingAt > TYPING_TTL_MS\n ) {\n continue;\n }\n\n out.push({\n id: message._id,\n sender: message.sender,\n body: message.body,\n time: formatClockTime(message.createdAt),\n sentAt: message.createdAt,\n dayLabel: isNewDay(previousAt, message.createdAt)\n ? formatDayLabel(message.createdAt, now)\n : undefined,\n // Not on the very first message: the history has to start somewhere,\n // and a line above the only conversation there has ever been would be\n // marking a boundary that does not exist.\n startsConversation:\n previousConversationId !== undefined &&\n previousConversationId !== message.conversationId\n ? true\n : undefined,\n agent:\n message.agent === null\n ? undefined\n : message.agent.kind === \"ai\"\n ? agent\n : {\n id: `human-${message.agent.name}`,\n name: message.agent.name,\n kind: \"human\",\n avatarUrl: message.agent.avatarUrl,\n },\n pending: message.pending || undefined,\n attachments:\n message.attachments.length > 0\n ? message.attachments.map((attachment) => {\n const kind = attachmentKindOf(attachment.type);\n return {\n id: attachment.id,\n kind,\n name: attachment.name,\n size: formatFileSize(attachment.size),\n // Only what can actually be shown small. A text file had\n // one of these too, which read as \"there is a thumbnail\n // here\" everywhere it was checked.\n previewUrl:\n kind === \"file\" ? undefined : (attachment.url ?? undefined),\n url: attachment.url ?? undefined,\n };\n })\n : undefined,\n navigateTo: message.navigateTo ?? undefined,\n highlight: message.highlight ?? undefined,\n });\n previousAt = message.createdAt;\n previousConversationId = message.conversationId;\n }\n\n return out;\n }, [thread, agent, now]);\n\n // The faces in the corner: the AI, then anyone human who has spoken.\n const presence: SupportPresence | null = useMemo(() => {\n if (config === undefined || agent === null) return null;\n\n const humans = new Map<string, SupportAgent>();\n for (const message of messages) {\n if (message.agent && message.agent.kind === \"human\") {\n humans.set(message.agent.id, message.agent);\n }\n }\n\n return {\n name: config.orgName,\n status: \"Support online\",\n team: [...[...humans.values()].slice(-2), agent],\n };\n }, [config, agent, messages]);\n\n // What they had seen last time the panel was open. Read once, from storage,\n // so a reply that landed while it was closed survives them clicking through\n // to another page on the host's site.\n const [lastSeenAt, setLastSeenAt] = useState(() => readLastSeenAt(apiKey));\n\n /**\n * Replies they have not looked at. Only the other side's, and only ones\n * that have actually been written: a bubble still holding dots is not news.\n */\n const unreadCount = useMemo(\n () =>\n messages.filter(\n (message) =>\n message.sender === \"agent\" &&\n !message.pending &&\n (message.sentAt ?? 0) > lastSeenAt,\n ).length,\n [messages, lastSeenAt],\n );\n\n // Asking how it went, once, on a conversation that is over.\n //\n // Three things decide whether the card is up, and all three are read\n // rather than remembered: the thread is resolved, nobody has answered yet,\n // and they have not waved it away. Pressing a star writes a rating, which\n // would otherwise take the card off screen mid-sentence, so a pick made\n // here keeps it open until they are finished with it.\n const [picked, setPicked] = useState<{\n conversationId: string;\n stars: number;\n } | null>(null);\n // Read from storage rather than started empty: a skip has to outlive the\n // remount that clicking a link on the host's site costs us.\n const [skipped, setSkipped] = useState<ReadonlySet<string>>(() =>\n readSkippedRatings(apiKey),\n );\n\n const conversationId = thread?.conversationId ?? null;\n const savedRating = thread?.rating ?? null;\n const isMine = picked?.conversationId === conversationId;\n\n const rating: SupportRating | null =\n thread?.status === \"resolved\" &&\n conversationId !== null &&\n !skipped.has(conversationId) &&\n (savedRating === null || isMine)\n ? {\n stars: isMine ? picked.stars : (savedRating?.stars ?? null),\n submit: async (stars, feedback) => {\n // Never null by the time a thread has been read, and a quiet\n // return here would read on screen as a rating that landed.\n if (sessionId === null) throw new Error(\"No session yet.\");\n setPicked({ conversationId, stars });\n await rateConversation({\n apiKey,\n sessionId,\n conversationId,\n stars,\n ...(feedback ? { feedback } : {}),\n });\n },\n skip: () => {\n writeSkippedRating(apiKey, conversationId);\n setSkipped((current) => new Set(current).add(conversationId));\n },\n }\n : null;\n\n /** They are looking at it, so the newest thing in it has been seen. */\n const markSeen = useCallback(() => {\n const newest = messages.reduce(\n (latest, message) => Math.max(latest, message.sentAt ?? 0),\n 0,\n );\n if (newest <= lastSeenAt) return;\n\n writeLastSeenAt(apiKey, newest);\n setLastSeenAt(newest);\n }, [apiKey, messages, lastSeenAt]);\n\n async function handleSend(body: string, files: File[]) {\n if (sessionId === null || isSending) return;\n\n setSendError(null);\n setIsSending(true);\n // Whatever the host attached since the last send rides this message.\n // Taken outside the try so a failed upload hands it back too.\n const custom = takeCustomData();\n try {\n const attachments = await uploadAttachments(\n () => generateUploadUrl({ apiKey }),\n files,\n );\n\n // Read now rather than on mount: all of it is wanted as \"what was true\n // when they wrote\", and a widget can sit closed on a page for an hour\n // before anybody says anything.\n const context = telemetry ? collectContext() : undefined;\n const page = telemetry ? collectPage() : undefined;\n\n // Nothing the first time a healthy page sends twice in a row: the\n // snapshot only travels when something new has gone wrong since.\n const collected = takeDiagnostics();\n\n // The same split as above, and this is the call that needs it most: a\n // visitor's first message is what creates them, so it is the only chance\n // to put them straight onto the account they are already signed in to.\n const { facts, claim } = splitIdentity(user ?? null);\n\n // The address typed at the composer's question rides along the same way\n // a host's facts do, but never over one the host already knows.\n const withEmail =\n facts.email || !visitorEmail ? facts : { ...facts, email: visitorEmail };\n\n await send({\n apiKey,\n sessionId,\n body,\n ...(Object.keys(withEmail).length > 0 ? { user: withEmail } : {}),\n ...(claim ? { identity: claim } : {}),\n ...(context ? { context } : {}),\n ...(page ? { page } : {}),\n ...(attachments.length > 0 ? { attachments } : {}),\n ...(collected ? { diagnostics: collected } : {}),\n ...(custom ? { customData: custom } : {}),\n });\n } catch (caught) {\n // Back in the queue, so the retry carries them like it keeps the draft.\n if (custom) restoreCustomData(custom);\n console.error(\"Sending from the support widget failed\", caught);\n setSendError(errorMessage(caught));\n // Rethrown so the composer keeps the draft: a failed send should cost\n // a retry, never a retype.\n throw caught;\n } finally {\n setIsSending(false);\n }\n }\n\n function handleTypingChange(isTyping: boolean) {\n if (sessionId === null) return;\n // Best effort: dots that fail to show are not worth an error.\n sendTyping({ apiKey, sessionId, isTyping }).catch(() => {});\n }\n\n /**\n * The panel is visible right now. Whatever renders the thread calls this\n * on open and every so often after, and it is what stands between a\n * customer and an email copy of a reply they are already reading.\n */\n const reportPresence = useCallback(() => {\n if (sessionId === null || isLocked) return;\n // Best effort, like typing: a missed heartbeat costs one stray email at\n // worst, and an error here has nobody to be shown to.\n sendPresence({ apiKey, sessionId }).catch(() => {});\n }, [apiKey, sessionId, isLocked, sendPresence]);\n\n // Nearly always null. Its own value rather than a message in the list,\n // because it belongs to a tool run and not to anything anybody said.\n const ask: SupportAsk | null = thread?.direction ?? null;\n\n return {\n presence,\n messages,\n /** Something a tool run asked of this page, with no message to ride on. */\n ask,\n /**\n * The live thread, or null before there is one. Read by whatever has to\n * tell \"the next thing in this conversation\" from \"a different\n * conversation altogether\", which is what signing in produces.\n */\n conversationId,\n /**\n * Still finding out whether this browser has a conversation already.\n * Locked, there is only the host's name to wait for, and the invitation\n * to sign in names them.\n */\n isLoading:\n config === undefined ||\n (!isLocked && (sessionId === null || thread === undefined)),\n isSending,\n /**\n * Whether the composer asks for an email before a first message. The\n * page's rule and the team's switch both have to want it, and nobody\n * here may know an address already.\n */\n askForEmail,\n /** What the composer's question does with a good answer. */\n setVisitorEmail,\n /** The agent asked for a person, and nobody has answered yet. */\n awaitingHuman: thread?.awaitingHuman ?? false,\n /** The question a finished conversation asks, while it is worth asking. */\n rating,\n /** Replies that arrived while they were not looking. */\n unreadCount,\n markSeen,\n /** Say the panel is on screen, so replies are not also emailed. */\n reportPresence,\n sendError,\n send: handleSend,\n setTyping: handleTypingChange,\n };\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\n/**\n * The current time, refreshed on an interval, so relative timestamps (\"2m\")\n * drift forward without anyone touching the page. One state per caller keeps\n * this dumb; the inbox only needs it once.\n */\nexport function useNow(intervalMs = 30_000): number {\n const [now, setNow] = useState(() => Date.now());\n\n useEffect(() => {\n const timer = setInterval(() => setNow(Date.now()), intervalMs);\n return () => clearInterval(timer);\n }, [intervalMs]);\n\n return now;\n}\n","import { ConvexError } from \"convex/values\";\n\nconst FALLBACK = \"Something went wrong on our end. Please try again.\";\n\ntype ErrorPayload = { code: string; message: string };\n\nfunction isErrorPayload(data: unknown): data is ErrorPayload {\n return (\n typeof data === \"object\" &&\n data !== null &&\n \"message\" in data &&\n typeof (data as ErrorPayload).message === \"string\"\n );\n}\n\n/**\n * Turns anything thrown by a Convex call into a sentence worth showing.\n * Only errors we raised on purpose are surfaced; everything else falls back so\n * we never paste a stack trace into the UI.\n */\nexport function errorMessage(error: unknown): string {\n if (error instanceof ConvexError) {\n if (typeof error.data === \"string\") return error.data;\n if (isErrorPayload(error.data)) return error.data.message;\n }\n return FALLBACK;\n}\n","/**\n * Timestamps, written the way the inbox and the widget say them. All of it\n * runs on the client with a real clock, so the backend only ever stores\n * numbers.\n */\n\nconst MINUTE = 60_000;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\n\n/**\n * A time of day, wherever one is printed: beside a message, and under a\n * visitor's name for the clock where they are.\n *\n * Twelve hour on purpose rather than by the reader's locale. Two clocks can\n * sit on one screen here, one for the message and one for the customer, and\n * they came from different formatters; leaving the shape to the locale meant\n * they agreed only by luck, and a reader in a country that counts to\n * twenty-four saw a screen that could not decide.\n *\n * The rest is still the reader's. Which characters mark the afternoon is a\n * question their locale answers better than we can.\n */\nexport const CLOCK_FORMAT = {\n hour: \"numeric\",\n minute: \"2-digit\",\n hour12: true,\n} as const satisfies Intl.DateTimeFormatOptions;\n\n/** \"3:58 PM\", for the line beside a message. */\nexport function formatClockTime(timestamp: number): string {\n return new Date(timestamp).toLocaleTimeString([], CLOCK_FORMAT);\n}\n\n/** \"now\", \"2m\", \"3h\", \"2d\", then a date, for a queue row. */\nexport function formatTimeAgo(timestamp: number, now: number): string {\n const elapsed = now - timestamp;\n if (elapsed < MINUTE) return \"now\";\n if (elapsed < HOUR) return `${Math.floor(elapsed / MINUTE)}m`;\n if (elapsed < DAY) return `${Math.floor(elapsed / HOUR)}h`;\n if (elapsed < 7 * DAY) return `${Math.floor(elapsed / DAY)}d`;\n return new Date(timestamp).toLocaleDateString([], {\n month: \"short\",\n day: \"numeric\",\n });\n}\n\n/**\n * \"just now\", \"2m ago\", \"Mar 3\", for a line about when something last ran.\n *\n * The queue's own shorthand reads as a column of times, which is right beside\n * a conversation and wrong in a sentence: \"synced 2m\" is not a thing anybody\n * says. Same clock, said out loud.\n */\nexport function formatSyncedAgo(timestamp: number, now: number): string {\n const ago = formatTimeAgo(timestamp, now);\n if (ago === \"now\") return \"just now\";\n return /^\\d/.test(ago) ? `${ago} ago` : ago;\n}\n\n/** Minutes since, for sorting rows the way the demo data did. */\nexport function minutesSince(timestamp: number, now: number): number {\n return Math.max(0, Math.floor((now - timestamp) / MINUTE));\n}\n\n/** \"March 2023\", for the customer since row and past conversations. */\nexport function formatMonthYear(timestamp: number): string {\n return new Date(timestamp).toLocaleDateString([], {\n month: \"long\",\n year: \"numeric\",\n });\n}\n\nfunction startOfDay(timestamp: number): number {\n const date = new Date(timestamp);\n date.setHours(0, 0, 0, 0);\n return date.getTime();\n}\n\n/** \"Today\", \"Yesterday\", \"Monday\", then a date, for a thread divider. */\nexport function formatDayLabel(timestamp: number, now: number): string {\n const days = Math.round((startOfDay(now) - startOfDay(timestamp)) / DAY);\n if (days <= 0) return \"Today\";\n if (days === 1) return \"Yesterday\";\n if (days < 7) {\n return new Date(timestamp).toLocaleDateString([], { weekday: \"long\" });\n }\n return new Date(timestamp).toLocaleDateString([], {\n month: \"short\",\n day: \"numeric\",\n });\n}\n\n/** How many whole days apart two timestamps land, by the calendar. */\nfunction daysApart(from: number, to: number): number {\n return Math.round((startOfDay(to) - startOfDay(from)) / DAY);\n}\n\n/**\n * \"9:00 AM\", \"tomorrow, 9:00 AM\", \"Mon, 9:00 AM\", \"Mar 4\": when a snooze is\n * up, as short as it can be said without leaving anyone guessing which day.\n */\nexport function formatSnoozeAt(until: number, now: number): string {\n const days = daysApart(now, until);\n if (days >= 7) {\n return new Date(until).toLocaleDateString([], {\n month: \"short\",\n day: \"numeric\",\n });\n }\n\n const time = formatClockTime(until);\n if (days <= 0) return time;\n if (days === 1) return `tomorrow, ${time}`;\n return `${new Date(until).toLocaleDateString([], { weekday: \"short\" })}, ${time}`;\n}\n\n/** Whether two timestamps land on different days, so a thread can divide. */\nexport function isNewDay(previous: number | undefined, next: number): boolean {\n if (previous === undefined) return true;\n return startOfDay(previous) !== startOfDay(next);\n}\n","import type { Id } from \"@median/backend/dataModel\";\n\n/**\n * POSTs one file to a one shot Convex upload URL and hands back its storage\n * id. The URL comes from whichever mutation guards the caller, so the same\n * helper serves the inbox, the widget, and the settings page.\n */\nexport async function uploadFile(\n getUploadUrl: () => Promise<string>,\n file: File,\n): Promise<Id<\"_storage\">> {\n const url = await getUploadUrl();\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": file.type || \"application/octet-stream\" },\n body: file,\n });\n if (!response.ok) {\n throw new Error(`Uploading ${file.name} failed with ${response.status}`);\n }\n\n const { storageId } = (await response.json()) as {\n storageId: Id<\"_storage\">;\n };\n return storageId;\n}\n\n/** The shape a message mutation wants a sent file described in. */\nexport type SentAttachment = {\n storageId: Id<\"_storage\">;\n name: string;\n size: number;\n type: string;\n};\n\n/** Uploads a batch in order and describes each one for the send mutation. */\nexport async function uploadAttachments(\n getUploadUrl: () => Promise<string>,\n files: File[],\n): Promise<SentAttachment[]> {\n const attachments: SentAttachment[] = [];\n for (const file of files) {\n attachments.push({\n storageId: await uploadFile(getUploadUrl, file),\n name: file.name,\n size: file.size,\n type: file.type || \"application/octet-stream\",\n });\n }\n return attachments;\n}\n","/**\n * Which finished conversations somebody has already waved the rating card\n * away on.\n *\n * Beside the session token and the read marker, and kept for the same\n * reason: a host's site is several pages, so the widget is remounted every\n * time somebody clicks a link. Held in memory, a skip would last until the\n * next click and the card would be back. Skipping is a no thanks, and asking\n * again is how a no thanks turns into a nuisance.\n *\n * One entry per API key, like the others, and capped: a browser that has\n * skipped a hundred conversations has no reason to carry all hundred ids\n * around, and the oldest of them are threads nobody will see again anyway.\n */\n\nconst STORAGE_PREFIX = \"median:rating-skips:\";\n\n/** How many are worth remembering. Past this, the oldest fall off. */\nconst MAX_REMEMBERED = 20;\n\n/** Where they live when localStorage is blocked. Lasts the page load. */\nconst inMemory = new Map<string, string[]>();\n\nfunction read(apiKey: string): string[] {\n if (typeof window === \"undefined\") return [];\n\n try {\n const stored = window.localStorage.getItem(`${STORAGE_PREFIX}${apiKey}`);\n if (stored === null) return [];\n const parsed: unknown = JSON.parse(stored);\n return Array.isArray(parsed)\n ? parsed.filter((one): one is string => typeof one === \"string\")\n : [];\n } catch {\n // Blocked, or somebody put something else under our key.\n return inMemory.get(apiKey) ?? [];\n }\n}\n\n/** The conversations this browser has already said no thanks to. */\nexport function readSkippedRatings(apiKey: string): ReadonlySet<string> {\n return new Set(read(apiKey));\n}\n\n/** One more no thanks, remembered across the pages of a host's site. */\nexport function writeSkippedRating(\n apiKey: string,\n conversationId: string,\n): void {\n if (typeof window === \"undefined\") return;\n\n const next = [\n ...read(apiKey).filter((one) => one !== conversationId),\n conversationId,\n ].slice(-MAX_REMEMBERED);\n\n inMemory.set(apiKey, next);\n try {\n window.localStorage.setItem(\n `${STORAGE_PREFIX}${apiKey}`,\n JSON.stringify(next),\n );\n } catch {\n // Blocked, so the in-memory copy above is all there is. It still holds\n // for as long as they are on the page they skipped it from.\n }\n}\n","/**\n * How much of the conversation this browser has already seen.\n *\n * Kept beside the session token and for the same reason: a host's site is\n * usually several pages, so the widget is remounted every time somebody\n * clicks a link. Held in memory, a reply that arrived while the panel was\n * closed would stop being new the moment they wandered to another page.\n *\n * One entry per API key, like the session, so two widgets on one browser\n * cannot mark each other's messages read.\n */\n\nconst STORAGE_PREFIX = \"median:read:\";\n\n/** Where it lives when localStorage is blocked. Lasts the page load. */\nconst inMemory = new Map<string, number>();\n\n/** When they last had the panel open, or 0 if they never have. */\nexport function readLastSeenAt(apiKey: string): number {\n if (typeof window === \"undefined\") return 0;\n\n try {\n const stored = window.localStorage.getItem(`${STORAGE_PREFIX}${apiKey}`);\n const at = stored === null ? Number.NaN : Number(stored);\n return Number.isFinite(at) ? at : 0;\n } catch {\n return inMemory.get(apiKey) ?? 0;\n }\n}\n\nexport function writeLastSeenAt(apiKey: string, at: number): void {\n if (typeof window === \"undefined\") return;\n\n inMemory.set(apiKey, at);\n try {\n window.localStorage.setItem(`${STORAGE_PREFIX}${apiKey}`, String(at));\n } catch {\n // Blocked, so the in-memory copy above is all there is. It still stops\n // the badge coming back while they are looking straight at the panel.\n }\n}\n","\"use client\";\n\n/**\n * The address a visitor typed at the composer's question, kept beside the\n * session token and for the same reason: a host's site is usually several\n * pages, so the widget is remounted every time somebody clicks a link, and\n * asking all over again on each one is not a question, it is a wall.\n *\n * It rides the visitor's first message like any other fact the host passes,\n * which is what puts it on their row in the team's inbox.\n */\n\nimport { useCallback, useSyncExternalStore } from \"react\";\n\nconst STORAGE_PREFIX = \"median:email:\";\n\n/** Where it lives when localStorage is blocked. Lasts the page load. */\nconst inMemory = new Map<string, string>();\n\nconst listeners = new Set<() => void>();\n\nexport function subscribeVisitorEmail(listener: () => void) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n}\n\n/** The address this browser gave, or null before it has. */\nexport function readVisitorEmail(apiKey: string): string | null {\n if (typeof window === \"undefined\") return null;\n\n try {\n const stored = window.localStorage.getItem(`${STORAGE_PREFIX}${apiKey}`);\n return stored && stored.length > 0 ? stored : null;\n } catch {\n return inMemory.get(apiKey) ?? null;\n }\n}\n\nfunction writeVisitorEmail(apiKey: string, email: string): void {\n inMemory.set(apiKey, email);\n try {\n window.localStorage.setItem(`${STORAGE_PREFIX}${apiKey}`, email);\n } catch {\n // Blocked, so the in-memory copy above is all there is. It still gets\n // them through this page, where the message that carries it goes out.\n }\n\n for (const listener of listeners) listener();\n}\n\n/**\n * Forget every address this browser holds. Part of `medianSupport.reset()`,\n * which has to detach a browser from its conversation completely: an email\n * that survived a sign out would greet the next person at the keyboard with\n * somebody else's name.\n */\nexport function resetVisitorEmails() {\n inMemory.clear();\n\n if (typeof window !== \"undefined\") {\n try {\n const stale: string[] = [];\n for (let i = 0; i < window.localStorage.length; i += 1) {\n const key = window.localStorage.key(i);\n if (key !== null && key.startsWith(STORAGE_PREFIX)) stale.push(key);\n }\n for (const key of stale) window.localStorage.removeItem(key);\n } catch {\n // Storage was blocked, so there was nothing durable to forget.\n }\n }\n\n for (const listener of listeners) listener();\n}\n\n/**\n * The address, live: subscribed, so a reset while the widget is mounted asks\n * again rather than trusting state that outlived its storage. The setter is\n * what the composer's question calls once the answer checks out.\n */\nexport function useVisitorEmail(\n apiKey: string,\n): [string | null, (email: string) => void] {\n const email = useSyncExternalStore(\n subscribeVisitorEmail,\n useCallback(() => readVisitorEmail(apiKey), [apiKey]),\n () => null,\n );\n\n const setEmail = useCallback(\n (next: string) => writeVisitorEmail(apiKey, next),\n [apiKey],\n );\n\n return [email, setEmail];\n}\n","\"use client\";\n\nimport { ConvexError } from \"convex/values\";\nimport { Component, type ReactNode } from \"react\";\n\n/**\n * The widget runs on somebody else's page, so whatever goes wrong in here must\n * never take the host's site down with it. The widget quietly steps off the\n * page and says why in the console, where the person installing it is already\n * looking.\n */\n\n/**\n * Name the actual problem when we can. \"Check the apiKey\" is the right advice\n * for a rejected key and a wild goose chase for everything else.\n */\nfunction adviceFor(error: unknown): string {\n if (\n error instanceof ConvexError &&\n typeof error.data === \"object\" &&\n error.data !== null &&\n (error.data as { code?: string }).code === \"invalid_api_key\"\n ) {\n return \"Median did not recognize the apiKey passed to <MedianSupport>, so the widget has been hidden. Derive it from an active MEDIAN_KEY with publicKeyFromMedianKey.\";\n }\n return \"The Median support widget hit an error and has been hidden. Your page is unaffected.\";\n}\n\nexport class MedianErrorBoundary extends Component<\n { children: ReactNode },\n { hasFailed: boolean }\n> {\n state = { hasFailed: false };\n\n static getDerivedStateFromError() {\n return { hasFailed: true };\n }\n\n componentDidCatch(error: unknown) {\n console.error(adviceFor(error), error);\n }\n\n render() {\n return this.state.hasFailed ? null : this.props.children;\n }\n}\n","/**\n * The sound palette — layer/recipe types plus the seventeen built-in recipes.\n * Each sound has its own distinct shape — a chime, an arpeggio, a pitch\n * glide, a warm pad, a breath — rather than being a volume/EQ tweak on\n * the same click. Add a new one here without touching any audio graph code.\n */\nexport const RECIPES = {\n /** A soft two-note ascending bell, like an iOS/macOS confirmation tink. */\n chime: {\n masterGain: 0.5,\n layers: [\n { kind: \"tone\", waveform: \"sine\", frequency: 1046.5, attack: 0.006, decay: 0.22, peak: 0.09 },\n { kind: \"tone\", waveform: \"sine\", frequency: 1568, offset: 0.09, attack: 0.006, decay: 0.26, peak: 0.08 },\n ],\n shimmer: { delay: 0.12, feedback: 0.25, wet: 0.18, lowpass: 4000 },\n },\n /** A quick ascending twinkle of four notes — bright and playful. */\n sparkle: {\n masterGain: 0.5,\n layers: [\n { kind: \"tone\", waveform: \"sine\", frequency: 1760, offset: 0, attack: 0.003, decay: 0.09, peak: 0.045 },\n { kind: \"tone\", waveform: \"sine\", frequency: 2217, offset: 0.045, attack: 0.003, decay: 0.09, peak: 0.04 },\n { kind: \"tone\", waveform: \"sine\", frequency: 2637, offset: 0.09, attack: 0.003, decay: 0.1, peak: 0.038 },\n { kind: \"tone\", waveform: \"sine\", frequency: 3520, offset: 0.135, attack: 0.003, decay: 0.12, peak: 0.032 },\n ],\n shimmer: { delay: 0.07, feedback: 0.35, wet: 0.22, lowpass: 6000 },\n },\n /** A single note gliding smoothly downward, like a drop of water. */\n droplet: {\n masterGain: 0.55,\n layers: [\n { kind: \"tone\", waveform: \"sine\", frequency: 1200, glideTo: 550, glideTime: 0.14, attack: 0.004, decay: 0.2, peak: 0.075 },\n ],\n shimmer: { delay: 0.09, feedback: 0.2, wet: 0.15, lowpass: 3000 },\n },\n /** A warm, slow-swelling pad from two gently detuned sines. */\n bloom: {\n masterGain: 0.5,\n layers: [\n { kind: \"tone\", waveform: \"sine\", frequency: 528, attack: 0.06, decay: 0.32, peak: 0.06 },\n { kind: \"tone\", waveform: \"sine\", frequency: 528, detune: 12, attack: 0.06, decay: 0.34, peak: 0.05 },\n ],\n shimmer: { delay: 0.15, feedback: 0.2, wet: 0.12, lowpass: 2500 },\n },\n /** A soft hush with a falling tone — for tooltips and low-priority previews. */\n whisper: {\n masterGain: 0.48,\n layers: [\n { kind: \"noise\", filterType: \"lowpass\", filterFrequency: 1600, filterQ: 0.7, attack: 0.025, decay: 0.13, peak: 0.04 },\n { kind: \"tone\", waveform: \"sine\", frequency: 880, glideTo: 660, glideTime: 0.14, offset: 0.01, attack: 0.012, decay: 0.14, peak: 0.025 },\n ],\n },\n /** A focused, bandpass-filtered tick with a bright sine ping on top — crisp and instant. */\n tick: {\n masterGain: 0.4,\n layers: [\n { kind: \"noise\", filterType: \"bandpass\", filterFrequency: 5400, filterQ: 1.8, attack: 0.001, decay: 0.018, peak: 0.14 },\n { kind: \"tone\", waveform: \"sine\", frequency: 2600, attack: 0.001, decay: 0.012, peak: 0.018 },\n ],\n },\n /** A dull, muted knock — the \"down\" half of a press/release pair, like a key bottoming out. */\n press: {\n masterGain: 0.4,\n layers: [\n { kind: \"noise\", filterType: \"bandpass\", filterFrequency: 1700, filterQ: 1.4, attack: 0.001, decay: 0.02, peak: 0.13 },\n ],\n },\n /** A brighter, springier tick — the \"up\" half of a press/release pair, like a key returning. */\n release: {\n masterGain: 0.4,\n layers: [\n { kind: \"noise\", filterType: \"bandpass\", filterFrequency: 4600, filterQ: 1.8, attack: 0.001, decay: 0.016, peak: 0.12 },\n { kind: \"tone\", waveform: \"sine\", frequency: 3200, offset: 0.006, attack: 0.001, decay: 0.05, peak: 0.02 },\n ],\n },\n /** A two-part click-clack, like a mechanical switch flipping between states. */\n toggle: {\n masterGain: 0.4,\n layers: [\n { kind: \"noise\", filterType: \"bandpass\", filterFrequency: 2200, filterQ: 1.6, attack: 0.001, decay: 0.016, peak: 0.12 },\n { kind: \"noise\", filterType: \"bandpass\", filterFrequency: 3800, filterQ: 1.6, offset: 0.024, attack: 0.001, decay: 0.02, peak: 0.1 },\n ],\n },\n /** A short, warm three-note ascending confirmation — \"done\", not a fanfare. */\n success: {\n masterGain: 0.5,\n layers: [\n { kind: \"tone\", waveform: \"sine\", frequency: 880, attack: 0.004, decay: 0.09, peak: 0.06 },\n { kind: \"tone\", waveform: \"sine\", frequency: 1108.73, offset: 0.06, attack: 0.004, decay: 0.1, peak: 0.06 },\n { kind: \"tone\", waveform: \"sine\", frequency: 1318.51, offset: 0.12, attack: 0.004, decay: 0.18, peak: 0.07 },\n ],\n shimmer: { delay: 0.1, feedback: 0.22, wet: 0.16, lowpass: 4500 },\n },\n /** A muted knock followed by two descending tones — a calm, recoverable refusal. */\n error: {\n masterGain: 0.42,\n layers: [\n { kind: \"noise\", filterType: \"bandpass\", filterFrequency: 850, filterQ: 1.1, attack: 0.001, decay: 0.035, peak: 0.13 },\n { kind: \"tone\", waveform: \"triangle\", frequency: 440, offset: 0.025, attack: 0.004, decay: 0.09, peak: 0.045 },\n { kind: \"tone\", waveform: \"triangle\", frequency: 349.23, offset: 0.1, attack: 0.004, decay: 0.14, peak: 0.04 },\n ],\n },\n /** A papery filtered flick with a tiny glass tick — for pages, galleries, and carousels. */\n page: {\n masterGain: 0.38,\n layers: [\n { kind: \"noise\", filterType: \"lowpass\", filterFrequency: 1800, filterQ: 0.7, attack: 0.006, decay: 0.08, peak: 0.11 },\n { kind: \"noise\", filterType: \"bandpass\", filterFrequency: 4200, filterQ: 1.2, offset: 0.04, attack: 0.004, decay: 0.065, peak: 0.08 },\n { kind: \"tone\", waveform: \"sine\", frequency: 2400, offset: 0.075, attack: 0.002, decay: 0.045, peak: 0.02 },\n ],\n },\n /** A brief unresolved lift — signals that user-initiated work has started. */\n loading: {\n masterGain: 0.42,\n layers: [\n { kind: \"noise\", filterType: \"lowpass\", filterFrequency: 1400, filterQ: 0.6, attack: 0.035, decay: 0.14, peak: 0.035 },\n { kind: \"tone\", waveform: \"sine\", frequency: 420, glideTo: 630, glideTime: 0.18, attack: 0.025, decay: 0.18, peak: 0.05 },\n ],\n shimmer: { delay: 0.11, feedback: 0.18, wet: 0.12, lowpass: 2800 },\n },\n /** A quick lock-on sweep resolving to a clear tone — the system is ready. */\n ready: {\n masterGain: 0.48,\n layers: [\n { kind: \"noise\", filterType: \"bandpass\", filterFrequency: 3600, filterQ: 1.8, attack: 0.001, decay: 0.02, peak: 0.11 },\n { kind: \"tone\", waveform: \"triangle\", frequency: 330, glideTo: 660, glideTime: 0.12, offset: 0.012, attack: 0.004, decay: 0.16, peak: 0.055 },\n { kind: \"tone\", waveform: \"sine\", frequency: 990, offset: 0.13, attack: 0.004, decay: 0.22, peak: 0.06 },\n ],\n shimmer: { delay: 0.1, feedback: 0.16, wet: 0.1, lowpass: 4200 },\n },\n /** A compact synthetic chirp — crisp feedback for primary buttons and controls. */\n pulse: {\n masterGain: 0.42,\n layers: [\n { kind: \"noise\", filterType: \"bandpass\", filterFrequency: 2600, filterQ: 2.4, attack: 0.001, decay: 0.022, peak: 0.08 },\n { kind: \"tone\", waveform: \"triangle\", frequency: 620, glideTo: 1240, glideTime: 0.07, attack: 0.002, decay: 0.085, peak: 0.055 },\n ],\n },\n /** A fast three-step locator signal — playful feedback for menus and secondary buttons. */\n scan: {\n masterGain: 0.4,\n layers: [\n { kind: \"tone\", waveform: \"sine\", frequency: 740, attack: 0.002, decay: 0.055, peak: 0.05 },\n { kind: \"tone\", waveform: \"sine\", frequency: 1110, offset: 0.045, attack: 0.002, decay: 0.055, peak: 0.045 },\n { kind: \"tone\", waveform: \"sine\", frequency: 1665, offset: 0.09, attack: 0.002, decay: 0.07, peak: 0.04 },\n ],\n shimmer: { delay: 0.065, feedback: 0.16, wet: 0.1, lowpass: 4200 },\n },\n /** A rising harmonic portal with a soft tail — for client-side page arrivals. */\n arrival: {\n masterGain: 0.44,\n layers: [\n { kind: \"noise\", filterType: \"lowpass\", filterFrequency: 900, filterQ: 0.8, attack: 0.05, decay: 0.24, peak: 0.035 },\n { kind: \"tone\", waveform: \"sine\", frequency: 220, glideTo: 440, glideTime: 0.32, attack: 0.04, decay: 0.34, peak: 0.055 },\n { kind: \"tone\", waveform: \"sine\", frequency: 659.25, offset: 0.12, attack: 0.045, decay: 0.32, peak: 0.04 },\n { kind: \"tone\", waveform: \"sine\", frequency: 987.77, offset: 0.19, attack: 0.045, decay: 0.34, peak: 0.032 },\n ],\n shimmer: { delay: 0.16, feedback: 0.28, wet: 0.18, lowpass: 3200 },\n },\n};\nexport function isSoundName(value) {\n return typeof value === \"string\" && Object.prototype.hasOwnProperty.call(RECIPES, value);\n}\n/** All available sound names, derived from the recipe palette. */\nexport const sounds = Object.keys(RECIPES);\n","/**\n * The audio engine — synthesizes each sound live via the Web Audio API\n * on one shared, lazily created `AudioContext`. No audio files, no\n * dependencies. Every sound carries a gentle envelope (and often a soft\n * shimmer tail) instead of a hard transient, so nothing feels harsh.\n */\nimport { RECIPES, isSoundName, } from \"../sounds/recipes.js\";\nconst SOURCE_STOP_PADDING = 0.05;\nconst CLEANUP_MARGIN = 0.05;\nconst INAUDIBLE_GAIN = 0.001;\nconst OUTPUT_GAIN = 4;\nfunction renderTone(context, destination, layer, startTime) {\n const oscillator = context.createOscillator();\n oscillator.type = layer.waveform;\n oscillator.frequency.setValueAtTime(layer.frequency, startTime);\n if (layer.detune)\n oscillator.detune.value = layer.detune;\n if (layer.glideTo !== undefined) {\n const glideTime = layer.glideTime ?? layer.attack + layer.decay;\n oscillator.frequency.exponentialRampToValueAtTime(layer.glideTo, startTime + glideTime);\n }\n const gain = context.createGain();\n gain.gain.setValueAtTime(0.0001, startTime);\n gain.gain.exponentialRampToValueAtTime(layer.peak, startTime + layer.attack);\n gain.gain.exponentialRampToValueAtTime(0.0001, startTime + layer.attack + layer.decay);\n oscillator.connect(gain).connect(destination);\n oscillator.start(startTime);\n oscillator.stop(startTime + layer.attack + layer.decay + SOURCE_STOP_PADDING);\n}\nfunction renderNoise(context, destination, layer, startTime) {\n const duration = layer.attack + layer.decay + SOURCE_STOP_PADDING;\n const length = Math.max(1, Math.floor(duration * context.sampleRate));\n const buffer = context.createBuffer(1, length, context.sampleRate);\n const data = buffer.getChannelData(0);\n for (let i = 0; i < length; i++)\n data[i] = 2 * Math.random() - 1;\n const source = context.createBufferSource();\n source.buffer = buffer;\n const filter = context.createBiquadFilter();\n filter.type = layer.filterType;\n filter.frequency.value = layer.filterFrequency;\n if (layer.filterQ !== undefined)\n filter.Q.value = layer.filterQ;\n const gain = context.createGain();\n gain.gain.setValueAtTime(0.0001, startTime);\n gain.gain.exponentialRampToValueAtTime(layer.peak, startTime + layer.attack);\n gain.gain.exponentialRampToValueAtTime(0.0001, startTime + layer.attack + layer.decay);\n source.connect(filter).connect(gain).connect(destination);\n source.start(startTime);\n source.stop(startTime + duration);\n}\n/** Wires a soft echo/shimmer send off `source`, feeding back into `destination`. */\nfunction attachShimmer(context, source, destination, shimmer) {\n const delay = context.createDelay(1);\n delay.delayTime.value = shimmer.delay;\n const feedbackFilter = context.createBiquadFilter();\n feedbackFilter.type = \"lowpass\";\n feedbackFilter.frequency.value = shimmer.lowpass;\n const feedbackGain = context.createGain();\n feedbackGain.gain.value = shimmer.feedback;\n const wetGain = context.createGain();\n wetGain.gain.value = shimmer.wet;\n source.connect(delay);\n delay.connect(feedbackFilter);\n feedbackFilter.connect(feedbackGain);\n feedbackGain.connect(delay);\n feedbackFilter.connect(wetGain);\n wetGain.connect(destination);\n return [delay, feedbackFilter, feedbackGain, wetGain];\n}\nfunction sourceEnd(recipe) {\n return Math.max(...recipe.layers.map((layer) => (layer.offset ?? 0) + layer.attack + layer.decay + SOURCE_STOP_PADDING));\n}\nfunction shimmerTail(shimmer) {\n if (!shimmer || shimmer.feedback <= 0)\n return 0;\n if (shimmer.feedback >= 1)\n return shimmer.delay;\n return shimmer.delay * (1 + Math.ceil(Math.log(INAUDIBLE_GAIN) / Math.log(shimmer.feedback)));\n}\nlet sharedOutput = null;\nfunction getOutput(context) {\n if (sharedOutput)\n return sharedOutput;\n const output = context.createGain();\n output.gain.value = OUTPUT_GAIN;\n const limiter = context.createDynamicsCompressor();\n limiter.threshold.value = -8;\n limiter.knee.value = 6;\n limiter.ratio.value = 12;\n limiter.attack.value = 0.002;\n limiter.release.value = 0.08;\n output.connect(limiter).connect(context.destination);\n sharedOutput = output;\n return output;\n}\nfunction renderRecipe(context, recipe, volume) {\n const now = context.currentTime;\n const output = getOutput(context);\n const master = context.createGain();\n master.gain.value = recipe.masterGain * volume;\n master.connect(output);\n const shimmerNodes = recipe.shimmer\n ? attachShimmer(context, master, output, recipe.shimmer)\n : [];\n for (const layer of recipe.layers) {\n const startTime = now + (layer.offset ?? 0);\n if (layer.kind === \"tone\")\n renderTone(context, master, layer, startTime);\n else\n renderNoise(context, master, layer, startTime);\n }\n const cleanupAfterMs = (sourceEnd(recipe) + shimmerTail(recipe.shimmer) + CLEANUP_MARGIN) * 1000;\n setTimeout(() => {\n master.disconnect();\n for (const node of shimmerNodes)\n node.disconnect();\n }, cleanupAfterMs);\n}\nlet sharedContext = null;\nlet enabled = true;\nlet globalVolume = 1;\nfunction normalizeVolume(value, fallback) {\n return typeof value === \"number\" && Number.isFinite(value)\n ? Math.min(1, Math.max(0, value))\n : fallback;\n}\n/** Enables or disables future playback. Preference storage stays with the app. */\nexport function setEnabled(value) {\n if (typeof value === \"boolean\")\n enabled = value;\n}\n/** Sets the volume multiplier for future playback. Preference storage stays with the app. */\nexport function setVolume(value) {\n globalVolume = normalizeVolume(value, globalVolume);\n}\nfunction getAudioContext() {\n if (sharedContext)\n return sharedContext;\n if (typeof window === \"undefined\")\n return null;\n const Ctor = window.AudioContext ??\n window.webkitAudioContext;\n if (!Ctor)\n return null;\n try {\n sharedContext = new Ctor();\n }\n catch {\n return null;\n }\n return sharedContext;\n}\n/**\n * Plays a sound immediately. Safe to call from anywhere — lazily creates\n * the shared `AudioContext` on first use, resumes it if the browser\n * started it suspended (e.g. before any user gesture), and is a no-op\n * when Web Audio is unavailable (SSR, old browsers).\n */\nexport function play(sound = \"chime\", options) {\n if (!enabled || !isSoundName(sound))\n return;\n if (typeof navigator !== \"undefined\" && navigator.userActivation?.hasBeenActive === false)\n return;\n const playVolume = globalVolume * normalizeVolume(options?.volume, 1);\n if (playVolume === 0)\n return;\n const context = getAudioContext();\n if (!context)\n return;\n const recipe = RECIPES[sound];\n if (context.state === \"running\") {\n renderRecipe(context, recipe, playVolume);\n }\n else {\n try {\n void context.resume().then(() => {\n if (enabled && context.state === \"running\")\n renderRecipe(context, recipe, playVolume);\n }, () => { });\n }\n catch {\n // Some browsers throw synchronously when audio is blocked.\n }\n }\n}\n","\"use client\";\n\nimport { play } from \"cuelume\";\nimport { useEffect, useRef } from \"react\";\nimport type { SupportMessage } from \"../types\";\n\n/**\n * Under the default, because this plays on somebody else's site while they are\n * reading it. Loud enough to catch with the panel closed, quiet enough to sit\n * behind whatever else they have on.\n */\nconst ARRIVAL_VOLUME = 0.45;\n\n/**\n * The twinkle a reply lands on, whether the panel is open or not. Closed is\n * where it earns its keep: the count on the launcher is the only other thing\n * saying anything came in, and nobody is looking at the corner.\n *\n * The same rule the ring and the navigation follow, for the same reason: the\n * first snapshot is history, however recent, and history does not ring. Without\n * it, every page of a host's site would open on a sparkle for a conversation\n * from last week. A thread being fetched again is a thread this page has not\n * read either, so whatever lands after that is history too.\n *\n * And a change of thread is a first snapshot of its own. Somebody signing in\n * hands this page an account's whole history at once, which is a great many\n * replies it has never heard and not one of them worth a sound.\n *\n * Only the other side's messages, and only once they are written. A bubble\n * holding dots keeps its id and fills in later, so waiting for the words means\n * the sound arrives with them rather than with the promise of them.\n *\n * `play` neither throws nor asks: it is a no-op without Web Audio, and stays\n * quiet until the visitor has interacted with the page at all. That last one is\n * the browser's rule about autoplay, and it is a rule worth keeping.\n */\nexport function useMessageSound({\n messages,\n conversationId = null,\n isLoading,\n}: {\n messages: SupportMessage[];\n /** The thread being watched. A different one starts the listening over. */\n conversationId?: string | null;\n /** Nothing is history until the first answer has arrived. */\n isLoading: boolean;\n}) {\n /** Every written reply this page has already heard. */\n const heard = useRef<Set<string> | null>(null);\n /** Which thread that set is about. */\n const watching = useRef<string | null>(null);\n\n useEffect(() => {\n if (isLoading) {\n heard.current = null;\n return;\n }\n\n const written = messages.filter(\n (message) => message.sender === \"agent\" && !message.pending,\n );\n\n if (heard.current === null || watching.current !== conversationId) {\n heard.current = new Set(written.map((message) => message.id));\n watching.current = conversationId;\n return;\n }\n\n // One sparkle however many arrived together: a person taking over and\n // answering in the same breath is still one thing to look up at.\n let hasArrived = false;\n for (const message of written) {\n if (heard.current.has(message.id)) continue;\n heard.current.add(message.id);\n hasArrived = true;\n }\n\n if (hasArrived) play(\"sparkle\", { volume: ARRIVAL_VOLUME });\n }, [messages, conversationId, isLoading]);\n}\n","\"use client\";\n\nimport { useLayoutEffect, useRef, useState } from \"react\";\nimport type { SupportAsk, SupportMessage } from \"../types\";\n\n/**\n * Doing what one of the team's own tools asked to be done to the page: taking\n * the reader somewhere, pointing at something there, or both.\n *\n * The instruction rides on the message that explains it, but a layout effect\n * acts before those words are painted. Everything here is about making sure\n * that ordering happens exactly once.\n *\n * The thread is a live query and the message stays in it forever, so \"act on\n * what I can see\" would move somebody every time the query re-ran, and again\n * every time they came back to the page. What actually counts as new is what\n * arrived after the widget started watching: the first snapshot is history,\n * however recent, and history is not an instruction. That also covers the\n * loop this would otherwise be, where a host who navigates with a full page\n * load remounts the widget onto the message that moved it.\n *\n * A thread can also change under a page that never stopped watching it.\n * Somebody signs in, the widget says who they are, and a query that answered\n * \"no conversation\" a second ago answers with the account's whole history\n * instead. Every word of it is new to this page and none of it is news, so a\n * change of thread starts the first look over, and an instruction has to be\n * recent as well as unseen before anything is done about it.\n *\n * Nothing navigates at all without `onNavigate`. Moving a host's page because\n * their server answered with a field is not a thing to do by default, and a\n * host who wired the tool but not the handler hears about it in the console\n * rather than by watching nothing happen. Pointing at something needs no\n * handler: the ring is ours, drawn over their page and taken away again.\n */\n\n// Guarded as in control.ts: the published bundle cannot assume `process`.\nconst isDevelopment =\n typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\";\n\n/**\n * How recently an instruction has to have been asked for to be worth acting\n * on.\n *\n * Long enough that a slow network, a reconnect, or a tab coming back from\n * sleep still lands the one that just happened. Short enough that a\n * conversation from last week cannot move anybody, whatever route it takes\n * into the query: the person reading this page did not ask for it, and\n * whoever did is long gone.\n *\n * Generous because the two ends of the comparison are two different clocks.\n * The instruction is stamped by the server and the age is worked out on a\n * machine that may be a minute out either way, so the window is minutes\n * rather than seconds. Nothing about a live exchange needs it tighter.\n */\nconst STALE_AFTER_MS = 5 * 60 * 1000;\n\n/** What a message asked for, once it is this page's business to do it. */\nexport type SupportDirection = {\n /** The message that asked, so a second ask is a new one. */\n key: string;\n /** Whether the page was actually moved, which is the only thing worth\n * announcing: a destination nobody could act on moved nothing. */\n didNavigate: boolean;\n /** What to point at once they are looking at the right page, if anything. */\n selector: string | null;\n};\n\n/**\n * The destination as somewhere on this site, or null.\n *\n * Median checks the path when the tool answers and again before it is stored,\n * and neither of those is on the machine that navigates. This one is. `//host`\n * and `/\\host` resolve to another origin rather than a path, which is the\n * whole reason this asks the URL parser instead of reading the string.\n */\nfunction pathOnThisSite(destination: string): string | null {\n if (typeof window === \"undefined\") return null;\n if (!destination.startsWith(\"/\")) return null;\n\n let url: URL;\n try {\n url = new URL(destination, window.location.origin);\n } catch {\n return null;\n }\n if (url.origin !== window.location.origin) return null;\n\n return `${url.pathname}${url.search}${url.hash}`;\n}\n\n/**\n * Everything asking for something to be done rather than only said, oldest\n * first.\n *\n * Two carriers, one list. A message carries the instruction the agent's own\n * turn produced; a standalone ask carries one from a run that never produced\n * a message, which is a teammate running a tool themselves. The loose one\n * goes last because it is the newer of the two whenever both land together:\n * a teammate reaches for a tool in a thread the agent has already answered.\n */\nfunction directed(\n messages: SupportMessage[],\n ask: SupportAsk | null,\n): SupportAsk[] {\n const asked: SupportAsk[] = messages\n .filter(\n (message) =>\n message.navigateTo !== undefined || message.highlight !== undefined,\n )\n .map((message) => ({\n key: message.id,\n // Canned content may leave the clock off, and a message with no time on\n // it reads as old here rather than as now. Nothing that moves a page\n // should be doing it on a guess.\n at: message.sentAt ?? 0,\n navigateTo: message.navigateTo ?? null,\n highlight: message.highlight ?? null,\n }));\n\n if (ask !== null) asked.push(ask);\n return asked;\n}\n\nexport function useSupportNavigation({\n messages,\n ask = null,\n conversationId = null,\n isLoading,\n onNavigate,\n}: {\n messages: SupportMessage[];\n /** The one not riding a message, when a run produced one. */\n ask?: SupportAsk | null;\n /**\n * The thread being watched. When it changes, what is on screen is somebody\n * else's history rather than this page's next line, so the first look\n * starts again.\n */\n conversationId?: string | null;\n /** Nothing is history until the first answer has arrived. */\n isLoading: boolean;\n onNavigate?: (path: string) => void;\n}): SupportDirection | null {\n /** Every message carrying an instruction that this page has already seen. */\n const seen = useRef<Set<string> | null>(null);\n /** Which thread that set is about. */\n const watching = useRef<string | null>(null);\n const [direction, setDirection] = useState<SupportDirection | null>(null);\n\n // A layout effect is deliberate: the direction and its message arrive in\n // one live-query update, so the host gets to move before the browser paints\n // a confirmation claiming that it already did.\n useLayoutEffect(() => {\n if (isLoading) return;\n\n const asked = directed(messages, ask);\n\n // The first look is the thread as it already was. Remembered, never\n // acted on: whatever is in it happened before this page existed.\n //\n // A different thread than the one this set was built for is a first look\n // as well. That is signing in: the account's history arrives whole, into\n // a page that has been watching an empty query, and none of it happened\n // here.\n if (seen.current === null || watching.current !== conversationId) {\n seen.current = new Set(asked.map((one) => one.key));\n watching.current = conversationId;\n return;\n }\n\n // Only the newest is worth showing afterwards. Two in one turn is a turn\n // that has already gone wrong, and the later of them is the one the words\n // underneath are about.\n let latest: SupportDirection | null = null;\n\n for (const one of asked) {\n if (seen.current.has(one.key)) continue;\n // Marked before it is acted on, so a handler that throws, or one that\n // navigates without unmounting, cannot be asked twice.\n seen.current.add(one.key);\n\n // Unseen and still not news. An instruction is a thing somebody is\n // doing to a page in front of a reader, so one that has been sitting in\n // a thread since yesterday is not carried out late: not the navigation,\n // and not the ring either.\n //\n // An instruction with no time on it moves nobody either. That is a\n // deployment answering from before any of this, and the safe reading of\n // \"I cannot tell how old this is\" is to leave the page alone.\n const age = Date.now() - one.at;\n if (!Number.isFinite(age) || age > STALE_AFTER_MS) continue;\n\n let didNavigate = false;\n const destination = one.navigateTo;\n\n if (destination !== null) {\n const path = pathOnThisSite(destination);\n if (onNavigate === undefined) {\n if (isDevelopment) {\n console.warn(\n `Median: a tool asked to take this visitor to ${destination}, but <MedianSupport> has no onNavigate. Pass one, such as onNavigate={router.push}, or the tool cannot move anybody.`,\n );\n }\n } else if (path === null) {\n console.error(\n `Median: refused to navigate to ${destination}, which is not a path on this site.`,\n );\n } else {\n onNavigate(path);\n didNavigate = true;\n }\n }\n\n latest = { key: one.key, didNavigate, selector: one.highlight };\n }\n\n // Said on the next frame rather than in the middle of this one. What the\n // ring and the line are is settled here, where what actually happened is\n // known; showing them is the render after, like any other arrival.\n let frame = 0;\n if (latest !== null) {\n const announced = latest;\n frame = requestAnimationFrame(() => setDirection(announced));\n }\n return () => cancelAnimationFrame(frame);\n }, [messages, ask, conversationId, isLoading, onNavigate]);\n\n return direction;\n}\n","\"use client\";\n\nimport { createRoot } from \"react-dom/client\";\nimport { MedianSupport, type MedianSupportProps } from \"./median-support\";\n\n/**\n * What a mounted widget hands back: the two things a host without React has\n * no re-render to do for them. Everything else goes through `medianSupport`,\n * same as anywhere.\n */\nexport type MedianSupportInstance = {\n /**\n * Change any option after mount. Only the keys passed change, so\n * `update({ user })` when somebody signs in leaves the rest alone.\n */\n update: (options: Partial<MedianSupportProps>) => void;\n /** Take the widget off the page: panel, launcher, connection, all of it. */\n unmount: () => void;\n};\n\n// Guarded as in control.ts: the published bundle cannot assume `process`.\nconst isDevelopment =\n typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\";\n\n/**\n * The same widget, for a page that has never heard of React: Vue, Svelte,\n * Rails, a script on plain HTML. One call puts the launcher in the corner,\n * wired to the same panel, thread and inbox as the component:\n *\n * const support = mountMedianSupport({ apiKey: \"median_pk_...\" });\n *\n * It takes the component's props, as one options object, and the rest of the\n * SDK does not know the difference: `medianSupport.open()` opens this widget\n * exactly as it opens the component.\n *\n * What would have been new props on a re-render is `update`:\n *\n * support.update({ user: { name: \"Ada\", email: \"ada@example.com\" } });\n *\n * It renders into a container of its own, appended to `<body>`, with the\n * package's copy of React. The host's page needs none and never sees it.\n */\nexport function mountMedianSupport(\n options: MedianSupportProps,\n): MedianSupportInstance {\n // A server rendering the page has nowhere to put a widget. Say so where\n // the installer is looking, and hand back an instance that is safe to\n // hold, because a broken widget must never take the page down with it.\n if (typeof document === \"undefined\") {\n console.error(\n \"Median: mountMedianSupport() was called where there is no document, so nothing was mounted. Call it in the browser, after the page exists.\",\n );\n return { update: () => {}, unmount: () => {} };\n }\n\n const container = document.createElement(\"div\");\n container.dataset.medianSupport = \"\";\n document.body.appendChild(container);\n\n const root = createRoot(container);\n let current = options;\n let mounted = true;\n\n const render = () => {\n root.render(<MedianSupport {...current} />);\n };\n render();\n\n return {\n update(next) {\n if (!mounted) {\n if (isDevelopment) {\n console.warn(\n \"Median: update() was called after unmount(), so nothing changed. Mount again with mountMedianSupport() if the widget should come back.\",\n );\n }\n return;\n }\n current = { ...current, ...next };\n render();\n },\n unmount() {\n if (!mounted) return;\n mounted = false;\n root.unmount();\n container.remove();\n },\n };\n}\n","\"use client\";\n\nimport { API_KEY_PREFIX, hasPrefix } from \"@median/backend/support\";\nimport { ConvexProvider, ConvexReactClient } from \"convex/react\";\nimport { useCallback, useEffect, useRef, useState, type ReactNode } from \"react\";\nimport { FeedbackPanel } from \"../feedback/feedback-panel\";\nimport { FeedbackPopover } from \"../feedback/feedback-popover\";\nimport { MEDIAN_DEPLOYMENT_URL } from \"./deployment\";\nimport type { MedianDiagnostics } from \"./diagnostics\";\nimport { MedianErrorBoundary } from \"./error-boundary\";\nimport {\n useMedianFeedbackOpenState,\n useRegisterMedianFeedback,\n} from \"./feedback-control\";\nimport { useRememberInstall } from \"./install\";\nimport { useFeedbackNote } from \"./use-feedback-note\";\nimport type { MedianUser } from \"./use-median-thread\";\n\n/** Wide enough for a paragraph, narrow enough to hang off a menu item. */\nconst DEFAULT_WIDTH = \"20rem\";\n\nexport type MedianFeedbackProps = {\n apiKey: string;\n /**\n * Your own trigger. Whatever you pass is rendered where you put it and the\n * panel hangs off it, the way a dropdown hangs off the thing that opens\n * it:\n *\n * <MedianFeedback apiKey=\"median_pk_...\">\n * <button>Share feedback</button>\n * </MedianFeedback>\n *\n * It is wrapped in an inline span that takes the click, so your button\n * keeps its own styles and needs to know nothing about any of this.\n *\n * Without children the panel sits in the bottom right corner instead, for\n * a host opening it from somewhere else entirely with\n * `useMedianFeedback()`.\n */\n children?: ReactNode;\n /**\n * Something already on your page for the panel to hang off, as a CSS\n * selector. For the case children cannot cover: a row inside a dropdown,\n * which closes itself opening this and takes the trigger with it.\n *\n * <MedianFeedback apiKey=\"median_pk_...\" anchor=\"#account-button\" />\n *\n * Looked up each time the panel is placed, so it works for anything that\n * comes and goes. Unlike a trigger it is only a position: pressing it does\n * not open or close the panel, and a press on it dismisses the panel like\n * a press anywhere else. Ignored when `children` are passed.\n */\n anchor?: string;\n /** Who is signed in on your site, if anyone. Shown to your team. */\n user?: MedianUser;\n /**\n * Whether a note carries what the browser already knows: time zone,\n * language, browser, OS, device, screen, and the page it was written on.\n * On by default, because the page is most of what makes a note actionable,\n * which is what the panel says out loud. Pass `false` and none of it is\n * read at all.\n */\n telemetry?: boolean;\n /**\n * Watch what goes wrong on the page, so a bug filed from a note arrives\n * with the error already attached. The same switch `<MedianSupport>`\n * takes, and the same buffer behind it: mount either one with it on.\n */\n diagnostics?: MedianDiagnostics;\n /**\n * Anything about your own app worth having next to a bug report: a build,\n * a route, a flag. Read when a note is sent.\n */\n appState?: Record<string, string | number | boolean>;\n /** Pass it, with `onOpenChange`, to hold the open state yourself. */\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Any CSS length. The panel never grows past the viewport whatever this says. */\n width?: string;\n /** The heading, for a host whose product calls this something else. */\n title?: string;\n /** The line under it. */\n description?: string;\n placeholder?: string;\n};\n\n/**\n * A feedback panel, hung off a trigger of your own.\n *\n * One box and one button. Whoever is on the page types a sentence, and a\n * fast model reads it: a bug goes on the bug list, an idea goes on the\n * suggestions list, and an advert goes nowhere. Nobody has to pick a\n * category, rank anything, or write a title, which is the point, because a\n * form that asks for those is a form nobody fills in.\n *\n * <MedianFeedback apiKey=\"median_pk_...\">\n * <MenuItem>Share feedback</MenuItem>\n * </MedianFeedback>\n *\n * The page they were on rides along on its own, which the line under the\n * title says plainly.\n *\n * It brings its own connection, so it works on pages that have never heard\n * of Convex, and it is independent of `<MedianSupport>`: mount either, both,\n * or neither. Mounted together they share a visitor, so the same person\n * writing in and leaving a note is one customer with both to their name.\n */\nexport function MedianFeedback(props: MedianFeedbackProps) {\n return (\n <MedianErrorBoundary>\n <FeedbackConnection {...props} />\n </MedianErrorBoundary>\n );\n}\n\n/**\n * A key with the wrong shape would only ever fail later, quietly, as a panel\n * that never sends. Say so now, in the console, while the person who pasted\n * it is still looking at this page.\n */\nfunction useApiKeyShapeWarning(apiKey: string) {\n useEffect(() => {\n if (hasPrefix(apiKey, API_KEY_PREFIX)) return;\n\n const shown =\n apiKey === \"\"\n ? \"an empty string\"\n : `\"${apiKey.length > 16 ? `${apiKey.slice(0, 16)}…` : apiKey}\"`;\n console.error(\n `Median: the apiKey passed to <MedianFeedback> is ${shown}, which does not look like the browser-safe id from publicKeyFromMedianKey(MEDIAN_KEY). It should start with ${API_KEY_PREFIX}.`,\n );\n }, [apiKey]);\n}\n\nfunction FeedbackConnection(props: MedianFeedbackProps) {\n // Its own client rather than the app's, so the panel is self contained on\n // a host site. Lazy so a missing URL fails at render, into the boundary.\n const [client] = useState(() => {\n if (!MEDIAN_DEPLOYMENT_URL) {\n throw new Error(\n \"The Median feedback panel was built without a deployment URL. Set NEXT_PUBLIC_CONVEX_URL.\",\n );\n }\n return new ConvexReactClient(MEDIAN_DEPLOYMENT_URL);\n });\n\n return (\n <ConvexProvider client={client}>\n <Feedback {...props} />\n </ConvexProvider>\n );\n}\n\nfunction Feedback({\n apiKey,\n children,\n anchor,\n user,\n telemetry,\n diagnostics,\n appState,\n open,\n onOpenChange,\n width = DEFAULT_WIDTH,\n title,\n description,\n placeholder,\n}: MedianFeedbackProps) {\n useRegisterMedianFeedback();\n useApiKeyShapeWarning(apiKey);\n // The support panel writes the same thing down. Either one is enough for a\n // crash screen to have a key to report with.\n useRememberInstall(apiKey, user);\n\n const triggerRef = useRef<HTMLSpanElement>(null);\n const [isOpen, setOpen] = useMedianFeedbackOpenState({\n ...(open !== undefined ? { open } : {}),\n ...(onOpenChange ? { onOpenChange } : {}),\n });\n\n const note = useFeedbackNote({\n apiKey,\n ...(user ? { user } : {}),\n ...(telemetry !== undefined ? { telemetry } : {}),\n ...(diagnostics !== undefined ? { diagnostics } : {}),\n ...(appState ? { appState } : {}),\n });\n\n const close = useCallback(() => setOpen(false), [setOpen]);\n\n // A fresh box for the next note, but not until this one is out of sight:\n // resetting as the panel closes would swap the thank-you back to an empty\n // form halfway through the fade. So the panel is remounted on the way\n // back in, and only when there is something to clear. A draft somebody\n // closed without sending is theirs, and survives.\n const [attempt, setAttempt] = useState(0);\n const hasSent = useRef(false);\n useEffect(() => {\n if (!isOpen || !hasSent.current) return;\n hasSent.current = false;\n setAttempt((count) => count + 1);\n }, [isOpen]);\n\n return (\n <>\n {children !== undefined && (\n // An inline span rather than a clone of whatever was passed: the\n // host's trigger keeps its own props, its own ref and its own\n // styles, and the click is caught on the way past. `display:\n // contents` would lose the rectangle the panel is measured against.\n <span\n ref={triggerRef}\n onClick={() => setOpen(!isOpen)}\n className=\"inline-flex\"\n >\n {children}\n </span>\n )}\n\n <FeedbackPopover\n isOpen={isOpen}\n onClose={close}\n triggerRef={triggerRef}\n {...(anchor !== undefined ? { anchor } : {})}\n width={width}\n >\n <FeedbackPanel\n key={attempt}\n onSubmit={note.submit}\n onClose={close}\n onSent={() => {\n hasSent.current = true;\n close();\n }}\n notice={note.notice}\n {...(title !== undefined ? { title } : {})}\n {...(description !== undefined ? { description } : {})}\n {...(placeholder !== undefined ? { placeholder } : {})}\n />\n </FeedbackPopover>\n </>\n );\n}\n","/**\n * The feedback panel's vocabulary: what a note may be, what it may point at,\n * and the three answers a reader can give about one.\n *\n * Deliberately pure, like `shared/signals.ts`: no Convex imports, nothing\n * that touches a database. The widget reads these limits before it sends and\n * the mutation enforces them on arrival, so neither side can drift.\n */\n\n/**\n * How much one note may be. Longer than a chat message would be worth\n * reading in a bubble and shorter than the write-up it turns into, because\n * this is a box somebody types a paragraph into, not a document.\n */\nexport const NOTE_MAX_LENGTH = 2_000;\n\n/**\n * Where a note goes.\n *\n * The first two are the Signal tab's own kinds, so a note that survives\n * reading lands on the list the team already triages. The third is the one\n * that goes nowhere: a page open to the internet collects adverts, keyboard\n * mashing, and people testing whether the box works, and none of that is\n * worth a row somebody has to close.\n */\nexport const FEEDBACK_VERDICTS = [\"bug\", \"suggestion\", \"spam\"] as const;\n\nexport type FeedbackVerdict = (typeof FEEDBACK_VERDICTS)[number];\n\n/** Trims a note, keeping its line breaks: somebody wrote it in a textarea. */\nexport function cleanNote(input: string): string {\n return input.trim().slice(0, NOTE_MAX_LENGTH);\n}\n\n/** What is wrong with this note, in a sentence, or null if nothing is. */\nexport function noteIssue(note: string): string | null {\n if (note.trim().length === 0) return \"Write something first.\";\n if (note.length > NOTE_MAX_LENGTH) {\n return `Feedback has to be ${NOTE_MAX_LENGTH} characters or fewer.`;\n }\n return null;\n}\n","\"use client\";\n\nimport { NOTE_MAX_LENGTH } from \"@median/backend/feedback\";\nimport { useEffect, useState, type KeyboardEvent } from \"react\";\nimport { ArrowsClockwise, Check, X } from \"@/components/icons\";\nimport { Collapse } from \"@/components/ui/collapse\";\nimport { TEXT_FIELD_SHELL } from \"@/components/ui/text-field\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { cn } from \"@/lib/utils\";\nimport { PoweredByMedian } from \"../widget-badge\";\nimport { WidgetButton } from \"../widget-button\";\nimport { AUTOFOCUS_ATTRIBUTE } from \"./feedback-popover\";\n\n/** How long the thank-you sits there before whoever owns the panel closes it. */\nconst THANKS_MS = 1_600;\n\n/**\n * The feedback panel: one box, one button, and no questions in front of them.\n *\n * A visitor with something to say should not first have to decide whether it\n * is a bug or an idea, rank it, or write a title. So the panel asks for a\n * sentence and nothing else, and the reader on the other side does the rest.\n * The page rides along on its own, which the line under the title says\n * plainly, because collecting it quietly would be somebody else's business\n * to be told about rather than ours to assume.\n *\n * One surface, not two. The box sits straight on the card rather than inside\n * a tray of its own: a panel this small has no room for a container that\n * contains one thing, and the extra edge only made it look like there was\n * more here than there is.\n *\n * Presentational, like `SupportWidget`: a note goes out through `onSubmit`\n * and nothing is held here but the draft.\n */\nexport function FeedbackPanel({\n onSubmit,\n onClose,\n onSent,\n notice,\n showBadge = true,\n title = \"Share feedback\",\n description = \"This page is included automatically.\",\n placeholder = \"What should change?\",\n className,\n}: {\n /**\n * Awaited. A rejection keeps the draft, so a send that fails costs a retry\n * rather than a retype.\n */\n onSubmit?: (note: string) => unknown;\n /** Omit to hide the close button, for a panel that is always on the page. */\n onClose?: () => void;\n /** The thank-you has been read. Whoever opened the panel closes it. */\n onSent?: () => void;\n /** One line under the box, for a send that went wrong. */\n notice?: string | null;\n /** The \"Powered by Median\" line. Hosts on a paid plan can turn it off. */\n showBadge?: boolean;\n title?: string;\n description?: string;\n placeholder?: string;\n className?: string;\n}) {\n const [draft, setDraft] = useState(\"\");\n const [isSending, setSending] = useState(false);\n const [isSent, setSent] = useState(false);\n\n const canSend = draft.trim().length > 0 && !isSending && !isSent;\n\n // The thank-you is read, then the panel is somebody else's problem. In an\n // effect rather than in the handler so a panel unmounted in between never\n // calls back into a host that has moved on.\n useEffect(() => {\n if (!isSent) return;\n const timer = setTimeout(() => onSent?.(), THANKS_MS);\n return () => clearTimeout(timer);\n }, [isSent, onSent]);\n\n async function send() {\n if (!canSend) return;\n setSending(true);\n try {\n await onSubmit?.(draft.trim());\n } catch {\n // The notice under the box says why. The draft stays put.\n return;\n } finally {\n setSending(false);\n }\n setSent(true);\n }\n\n function handleKeyDown(event: KeyboardEvent<HTMLTextAreaElement>) {\n // Enter is a new line here, not a send: this is a paragraph box rather\n // than a chat composer, and the button is right there. Meta and enter\n // still sends, which is what anybody who tries it expects.\n if (event.key !== \"Enter\") return;\n if (!event.metaKey && !event.ctrlKey) return;\n event.preventDefault();\n void send();\n }\n\n return (\n <section\n aria-label={title}\n className={cn(\n // The widget's own radius scale, so the app's token can climb as the\n // chrome gets rounder without this changing shape under its hosts.\n \"flex w-full flex-col gap-2 overflow-hidden rounded-xl border bg-card p-3 text-card-foreground [--radius:0.625rem]\",\n className,\n )}\n >\n <header className=\"flex items-start gap-2\">\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <h2 className=\"truncate text-sm font-semibold tracking-tight\">\n {title}\n </h2>\n <p className=\"text-xs text-muted-foreground\">{description}</p>\n </div>\n\n {onClose && (\n <WidgetButton\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={onClose}\n aria-label=\"Close feedback\"\n className=\"-mt-0.5 -mr-1 shrink-0 text-muted-foreground\"\n >\n <X />\n </WidgetButton>\n )}\n </header>\n\n {/* Two rows of one grid, one opening as the other closes, so the swap\n is the panel changing height rather than two panels. */}\n <div className=\"grid\">\n <Collapse isOpen={!isSent}>\n <div className=\"flex flex-col gap-1.5\">\n <Textarea\n rows={3}\n value={draft}\n maxLength={NOTE_MAX_LENGTH}\n onChange={(event) => setDraft(event.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n aria-label={title}\n {...{ [AUTOFOCUS_ATTRIBUTE]: \"\" }}\n className={cn(\n TEXT_FIELD_SHELL,\n \"max-h-40 min-h-18 px-2.5 py-2\",\n // 16px on phones, in pixels: any focused field smaller than\n // that makes iOS zoom the host's whole page in.\n \"max-sm:text-[16px]\",\n )}\n />\n\n {notice && (\n <p className=\"animate-in px-0.5 text-xs text-destructive fade-in duration-150\">\n {notice}\n </p>\n )}\n </div>\n </Collapse>\n\n <Collapse isOpen={isSent}>\n <div className=\"flex items-center justify-center gap-2 py-4 text-sm font-medium\">\n <span className=\"grid size-5 shrink-0 place-items-center rounded-full bg-primary text-primary-foreground\">\n <Check className=\"size-3\" />\n </span>\n Thanks, we got it.\n </div>\n </Collapse>\n </div>\n\n {/* Our name and the one action, on the same line: the foot of a panel\n this small is a row rather than two.\n\n The height is held whether or not the button is in it, so the row\n does not shrink under the thank-you while the panel above it is\n already animating. */}\n <div className=\"flex min-h-8 items-center gap-2\">\n {showBadge && <PoweredByMedian className=\"justify-start\" />}\n\n {!isSent && (\n <WidgetButton\n type=\"button\"\n disabled={!canSend}\n aria-busy={isSending}\n onClick={() => void send()}\n className=\"relative ml-auto shrink-0 rounded-full px-3\"\n >\n {/* The label stays in the box while the spinner is over it, so\n it goes on setting the width and a send never moves the\n button it is happening in. */}\n <span\n className={cn(\n \"transition-opacity duration-150 motion-reduce:transition-none\",\n isSending && \"opacity-0\",\n )}\n >\n Submit feedback\n </span>\n\n {isSending && (\n <ArrowsClockwise\n aria-hidden\n className=\"absolute inset-0 m-auto animate-spin motion-reduce:animate-none\"\n />\n )}\n </WidgetButton>\n )}\n </div>\n </section>\n );\n}\n","\"use client\";\n\nimport { useEffect, useRef, type ReactNode, type RefObject } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"@/lib/utils\";\nimport { useHydrated } from \"../use-hydrated\";\nimport { useAnchor } from \"./use-anchor\";\n\n/** Above the host's own chrome. Their z-indexes are not ours to guess at. */\nconst LAYER = 2_147_483_000;\n\n/**\n * What inside the panel takes focus when it opens. The panel says which,\n * because which field is the one somebody came to fill in is the panel's\n * business rather than the box it is drawn in.\n */\nexport const AUTOFOCUS_ATTRIBUTE = \"data-median-autofocus\";\n\n/**\n * How the panel arrives and leaves.\n *\n * A dropdown, so it comes out of the thing that opened it: a little smaller\n * and a little towards its trigger, growing into place. The spring is the\n * same one the support panel opens with, and it overshoots by a hair, which\n * is the difference between a panel that appears and one that pops.\n *\n * Leaving is quicker and has no spring. An overshoot on the way out is a\n * panel arguing about being closed.\n */\n// `scale` and `translate` by name: those are the properties Tailwind's\n// `scale-*` and `translate-y-*` set. Listed as `transform` the panel had\n// neither, and popped open on opacity alone.\nconst MOTION =\n \"transition-[opacity,scale,translate] motion-reduce:transition-none\";\nconst OPEN = \"duration-250 ease-spring\";\nconst SHUT = \"duration-150 ease-out-quint\";\n\n/**\n * The panel, in a layer of its own, under whatever opened it.\n *\n * Portalled to the body rather than rendered where the trigger is. A host's\n * trigger lives inside their layout, and a panel rendered there inherits\n * every `overflow: hidden`, stacking context and transform between it and\n * the page. Out here it answers to the window and to nothing else.\n *\n * Closed, it stays mounted and goes `inert`: the draft somebody was halfway\n * through survives a close, and nothing behind the fade can be tabbed into.\n */\nexport function FeedbackPopover({\n isOpen,\n onClose,\n triggerRef,\n anchor,\n width,\n children,\n}: {\n isOpen: boolean;\n onClose: () => void;\n /** The host's own trigger, when they wrapped one. */\n triggerRef: RefObject<HTMLElement | null>;\n /**\n * Something else on their page to hang off, as a selector. Unlike the\n * trigger it is only a position: a press on it closes the panel like a\n * press anywhere else, because it is not the thing doing the opening.\n */\n anchor?: string;\n /** Any CSS length. Never wider than the window, whatever this says. */\n width: string;\n children: ReactNode;\n}) {\n const panelRef = useRef<HTMLDivElement>(null);\n const side = useAnchor({ triggerRef, anchor, panelRef, isOpen });\n // The panel is medianled into `document.body`, which does not exist until\n // there is one. Nothing at all until then, on the server and through\n // hydration alike, so both passes agree.\n const isHydrated = useHydrated();\n\n // Whatever had focus when the panel came up, so closing can hand it back.\n const opener = useRef<HTMLElement | null>(null);\n // Focus only moves once the panel has actually changed state, or a panel\n // that started open would steal focus on page load.\n const wasOpen = useRef(isOpen);\n\n // Escape closes, wherever focus is inside the panel. The element picker\n // takes its own Escape first, in the capture phase, so backing out of\n // pointing at something never closes the whole panel with it.\n useEffect(() => {\n if (!isOpen) return;\n\n function handleKeyDown(event: KeyboardEvent) {\n if (event.key === \"Escape\") onClose();\n }\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isOpen, onClose]);\n\n // A press anywhere else closes it, the way every dropdown does. On\n // pointerdown rather than click, so it closes as the press lands rather\n // than when it is let go, and the trigger is left out: it does its own\n // toggling, and closing here first would make a second press reopen.\n useEffect(() => {\n if (!isOpen) return;\n\n function handlePointerDown(event: PointerEvent) {\n const target = event.target;\n if (!(target instanceof Node)) return;\n if (panelRef.current?.contains(target)) return;\n if (triggerRef.current?.contains(target)) return;\n onClose();\n }\n document.addEventListener(\"pointerdown\", handlePointerDown);\n return () => document.removeEventListener(\"pointerdown\", handlePointerDown);\n }, [isOpen, onClose, triggerRef]);\n\n useEffect(() => {\n if (wasOpen.current === isOpen) return;\n wasOpen.current = isOpen;\n\n if (isOpen) {\n const active = document.activeElement;\n opener.current = active instanceof HTMLElement ? active : null;\n // Straight into whatever the panel says takes focus, which is the box\n // they are here to type in. Unlike the support widget's launcher this\n // is never opened by accident: somebody chose it from a menu or a\n // button, and landing anywhere but the field would cost them a Tab.\n const field = panelRef.current?.querySelector<HTMLElement>(\n `[${AUTOFOCUS_ATTRIBUTE}]`,\n );\n (field ?? panelRef.current)?.focus();\n return;\n }\n\n const back = triggerRef.current ?? opener.current;\n opener.current = null;\n // Only somewhere focus can actually land, and only if it is still on the\n // page: a menu that closed behind the panel is not there to take it back.\n if (back && back !== document.body && back.isConnected) back.focus();\n }, [isOpen, triggerRef]);\n\n if (!isHydrated) return null;\n\n return createPortal(\n <div\n ref={panelRef}\n tabIndex={-1}\n inert={!isOpen}\n // The hook the published stylesheet scopes its resets to. On a page\n // without Tailwind there is no preflight, so the package ships one\n // that reaches no further than this box.\n data-median-widget=\"\"\n style={{\n zIndex: LAYER,\n width,\n top: 0,\n left: 0,\n // Grows out of the edge nearest its trigger rather than out of its\n // own middle, which is what makes it read as the trigger opening.\n transformOrigin: side === \"top\" ? \"bottom center\" : \"top center\",\n }}\n className={cn(\n \"fixed max-w-[calc(100vw-2rem)] outline-none\",\n // The shadow is on the box rather than inside the panel: a filter on\n // a parent of anything that scrolls makes the browser repaint it on\n // every frame, and there is nothing scrolling in here to protect.\n \"drop-shadow-xl\",\n MOTION,\n isOpen\n ? [OPEN, \"pointer-events-auto scale-100 opacity-100 translate-y-0\"]\n : [\n SHUT,\n \"pointer-events-none scale-[0.97] opacity-0\",\n // Towards its trigger, which is above it or below it.\n side === \"top\" ? \"translate-y-1\" : \"-translate-y-1\",\n ],\n )}\n >\n {children}\n </div>,\n document.body,\n );\n}\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\n\n/**\n * Whether this is running in a browser that has finished hydrating.\n *\n * For the things that cannot exist until there is a document: a median has to\n * be handed a node, and there is no `document.body` on a server. Returning\n * null for those and the real thing once mounted is a server/client branch,\n * which is the first thing React names when it reports a hydration mismatch:\n * the server sends nothing, the client's first pass renders a panel, and the\n * whole tree is thrown away and built again.\n *\n * So it is read as an external store rather than as a mounted flag. React\n * takes the server snapshot both on the server and through hydration, so both\n * passes agree on nothing, and only the commit after it moves. Same trick the\n * session token is read with, for the same reason.\n *\n * The store never changes, so nothing ever subscribes to anything.\n */\nconst subscribe = () => () => {};\nconst onClient = () => true;\nconst onServer = () => false;\n\nexport function useHydrated(): boolean {\n return useSyncExternalStore(subscribe, onClient, onServer);\n}\n","\"use client\";\n\nimport { useLayoutEffect, useState, type RefObject } from \"react\";\n\n/**\n * Keeping the panel under whatever opened it.\n *\n * The host owns the trigger: it is a nav item, a menu row, a button in a\n * toolbar, and it can be anywhere on their page. So the panel is measured\n * against it rather than pinned to a corner, and it follows it: a page that\n * scrolls or resizes under an open panel keeps the two together.\n *\n * The edges are written straight onto the node rather than held in state,\n * because scrolling fires far more often than anything worth re-rendering\n * for, and the panel's own opening animation is a transform. Position and\n * motion on two different properties is what keeps them from fighting.\n */\n\n/** Between the trigger and the panel. */\nconst GAP = 8;\n\n/** How close to the edge of the window the panel is allowed to sit. */\nconst MARGIN = 16;\n\n/** Which side of the trigger the panel ended up on, for the motion. */\nexport type AnchorSide = \"top\" | \"bottom\";\n\n/**\n * Whatever the selector finds, or nothing.\n *\n * Read every time it is placed rather than once, because the point of taking\n * a selector at all is that the thing it names may not have been on the page\n * when the panel opened. A menu item that opens this closes itself doing it;\n * the button the menu hangs off is still there, and that is what a selector\n * is for.\n */\nfunction findAnchor(selector: string | undefined): HTMLElement | null {\n if (selector === undefined || typeof document === \"undefined\") return null;\n try {\n return document.querySelector<HTMLElement>(selector);\n } catch {\n console.error(\n `Median: the anchor passed to <MedianFeedback> is ${selector}, which is not a valid CSS selector.`,\n );\n return null;\n }\n}\n\nexport function useAnchor({\n triggerRef,\n anchor,\n panelRef,\n isOpen,\n}: {\n /** The host's own trigger, when they wrapped one. */\n triggerRef: RefObject<HTMLElement | null>;\n /** Something on their page to hang off instead. Both absent is the corner. */\n anchor?: string;\n panelRef: RefObject<HTMLDivElement | null>;\n isOpen: boolean;\n}): AnchorSide {\n const [side, setSide] = useState<AnchorSide>(\"bottom\");\n\n useLayoutEffect(() => {\n if (!isOpen) return;\n\n let frame = 0;\n\n function place() {\n const panel = panelRef.current;\n const trigger = triggerRef.current ?? findAnchor(anchor);\n if (panel === null) return;\n\n const width = panel.offsetWidth;\n const height = panel.offsetHeight;\n const room = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n // Nothing to hang off, so it sits in the corner every widget sits in.\n if (trigger === null) {\n panel.style.left = `${Math.max(MARGIN, room.width - width - MARGIN)}px`;\n panel.style.top = `${Math.max(MARGIN, room.height - height - MARGIN)}px`;\n setSide(\"bottom\");\n return;\n }\n\n const rect = trigger.getBoundingClientRect();\n\n // Under the trigger, unless the panel would not fit and there is more\n // room above it. Flipping only when it actually helps: a panel that\n // jumped over its trigger the moment the page got short would move\n // for nothing most of the time.\n const below = room.height - rect.bottom - GAP - MARGIN;\n const above = rect.top - GAP - MARGIN;\n const onTop = height > below && above > below;\n setSide(onTop ? \"top\" : \"bottom\");\n\n const top = onTop ? rect.top - GAP - height : rect.bottom + GAP;\n\n // Aligned to whichever edge of the trigger keeps the panel on screen:\n // its left edge normally, its right edge when the trigger is over\n // towards the right, which is where a nav item usually is.\n const fromStart = rect.left;\n const fromEnd = rect.right - width;\n const left =\n fromStart + width + MARGIN <= room.width ? fromStart : fromEnd;\n\n panel.style.left = `${clamp(left, MARGIN, room.width - width - MARGIN)}px`;\n panel.style.top = `${clamp(top, MARGIN, room.height - height - MARGIN)}px`;\n }\n\n /** One placement per frame at most, however hard the page is scrolling. */\n function schedule() {\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(place);\n }\n\n place();\n window.addEventListener(\"scroll\", schedule, true);\n window.addEventListener(\"resize\", schedule);\n\n // The panel changes height as the box grows and as the thank-you takes\n // over, and a panel flipped above its trigger has to move when it does.\n const observer = new ResizeObserver(schedule);\n if (panelRef.current !== null) observer.observe(panelRef.current);\n\n return () => {\n cancelAnimationFrame(frame);\n window.removeEventListener(\"scroll\", schedule, true);\n window.removeEventListener(\"resize\", schedule);\n observer.disconnect();\n };\n }, [isOpen, anchor, panelRef, triggerRef]);\n\n return side;\n}\n\nfunction clamp(value: number, low: number, high: number): number {\n // High can be below low on a window shorter than the panel, and then the\n // top edge wins: the way out is up there.\n return Math.max(low, Math.min(value, Math.max(low, high)));\n}\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\nimport {\n createOpenStore,\n useOpenState,\n useRegister,\n} from \"./open-store\";\n\n/**\n * Driving the feedback panel from anywhere on the page.\n *\n * The panel usually hangs off a trigger the host wrapped it around, and for\n * that this is not needed at all. It is here for the other way of putting\n * feedback on a page: a row in a menu somewhere else entirely, a keyboard\n * shortcut, a link at the foot of an error screen. Same shape as\n * `medianSupport`, and a store of its own, so opening one never opens the\n * other.\n */\nconst store = createOpenStore(\"MedianFeedback\");\n\nexport const medianFeedback = {\n /** What the panel is doing right now. */\n get isOpen() {\n return store.readEffective();\n },\n open() {\n store.request(true);\n store.warnIfNothingIsMounted(\"the feedback panel was asked to open\");\n },\n close() {\n store.request(false);\n },\n toggle() {\n const next = !store.readEffective();\n store.request(next);\n if (next) {\n store.warnIfNothingIsMounted(\"the feedback panel was asked to open\");\n }\n },\n} satisfies MedianFeedbackControl;\n\n/** The shape of {@link medianFeedback}, and of what the hook returns. */\nexport type MedianFeedbackControl = {\n /** Whether the panel is open. */\n isOpen: boolean;\n open: () => void;\n close: () => void;\n toggle: () => void;\n};\n\n/**\n * The feedback panel, from anywhere else on the page:\n *\n * const feedback = useMedianFeedback();\n *\n * <button onClick={feedback.open}>Share feedback</button>\n *\n * `isOpen` follows the panel however it was opened, so a menu row can render\n * itself as pressed while it is up.\n */\nexport function useMedianFeedback(): MedianFeedbackControl {\n const isOpen = useSyncExternalStore(\n store.subscribe,\n store.readEffective,\n store.readServerEffective,\n );\n\n return {\n isOpen,\n open: medianFeedback.open,\n close: medianFeedback.close,\n toggle: medianFeedback.toggle,\n };\n}\n\n/** The panel's own settled open state. See {@link useOpenState}. */\nexport function useMedianFeedbackOpenState(options: {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}): [boolean, (next: boolean) => void] {\n return useOpenState(store, options);\n}\n\n/** One panel per page, and a word in the console when there are two. */\nexport function useRegisterMedianFeedback() {\n useRegister(store);\n}\n","\"use client\";\n\nimport { api } from \"@median/backend\";\nimport { useMutation } from \"convex/react\";\nimport { useCallback, useState, useSyncExternalStore } from \"react\";\nimport { errorMessage } from \"@/lib/errors\";\nimport { collectContext, collectPage } from \"./context\";\nimport { restoreCustomData, takeCustomData } from \"./custom-data\";\nimport { useDiagnostics, type MedianDiagnostics } from \"./diagnostics\";\nimport { getOrCreateSessionId, subscribeSession } from \"./session\";\nimport { splitIdentity, type MedianUser } from \"./use-median-thread\";\n\n/**\n * Sending one note, and everything that rides along with it.\n *\n * The same session token the support widget uses, so a person who has\n * written in and then left feedback is one customer with both to their name\n * rather than two strangers who happen to share a browser. The same\n * telemetry, the same diagnostics ring buffer, and the same attached data\n * too: a bug report filed off a note deserves what a bug report filed off a\n * conversation gets.\n *\n * Nothing is read here. A note is a thing you hand over, not a thread you\n * watch, so there is no subscription and nothing to keep in step.\n */\n\n/** What the panel is told about a note that could not be taken. */\nconst REFUSALS: Record<string, string> = {\n off: \"This site is not taking feedback right now.\",\n empty: \"Write something first.\",\n};\n\nexport function useFeedbackNote({\n apiKey,\n user,\n telemetry = true,\n diagnostics,\n appState,\n}: {\n apiKey: string;\n user?: MedianUser;\n telemetry?: boolean;\n diagnostics?: MedianDiagnostics;\n appState?: Record<string, string | number | boolean>;\n}) {\n // The session token is external state (localStorage), read as a store: the\n // server snapshot is null, so SSR and the first client paint agree, and\n // `reset()` on sign out lands here like it lands on the thread.\n const sessionId = useSyncExternalStore(\n subscribeSession,\n useCallback(() => getOrCreateSessionId(apiKey), [apiKey]),\n () => null,\n );\n\n const submitNote = useMutation(api.feedback.submit);\n const takeDiagnostics = useDiagnostics(diagnostics, appState);\n const [notice, setNotice] = useState<string | null>(null);\n\n /**\n * Rejects when the note did not land, which is what keeps the draft in the\n * box. The reason is in `notice` by then, where the panel shows it.\n */\n const submit = useCallback(\n async (body: string) => {\n setNotice(null);\n if (sessionId === null) {\n setNotice(\"This browser is still waking up. Try again in a moment.\");\n throw new Error(\"No session yet.\");\n }\n\n // Whatever the host attached since the last send rides this note.\n // Taken outside the try so a failed send hands it back too.\n const custom = takeCustomData();\n // Whether a refusal has already said its own piece. State cannot\n // answer that here: it is set and read inside one tick.\n let explained = false;\n try {\n // Read now rather than on mount: all of it is wanted as \"what was\n // true when they wrote\", and a panel can sit closed on a page for an\n // hour before anybody opens it.\n const context = telemetry ? collectContext() : undefined;\n const page = telemetry ? collectPage() : undefined;\n const collected = takeDiagnostics();\n const { facts, claim } = splitIdentity(user ?? null);\n\n const outcome = await submitNote({\n apiKey,\n sessionId,\n body,\n ...(user ? { user: facts } : {}),\n ...(claim ? { identity: claim } : {}),\n ...(context ? { context } : {}),\n ...(page ? { page } : {}),\n ...(collected ? { diagnostics: collected } : {}),\n ...(custom ? { customData: custom } : {}),\n });\n\n if (outcome !== \"taken\") {\n explained = true;\n setNotice(REFUSALS[outcome] ?? \"That did not send.\");\n throw new Error(outcome);\n }\n } catch (caught) {\n // Back in the queue, so the retry carries them like it keeps the draft.\n if (custom) restoreCustomData(custom);\n if (!explained) {\n console.error(\"Sending feedback from the Median panel failed\", caught);\n setNotice(errorMessage(caught));\n }\n // Rethrown so the panel keeps the draft: a failed send should cost a\n // retry, never a retype.\n throw caught;\n }\n },\n [apiKey, sessionId, user, telemetry, takeDiagnostics, submitNote],\n );\n\n return { submit, notice, clearNotice: () => setNotice(null) };\n}\n","\"use client\";\n\nimport { createRoot } from \"react-dom/client\";\nimport { isDevelopment } from \"./open-store\";\nimport { MedianFeedback, type MedianFeedbackProps } from \"./median-feedback\";\n\n/**\n * What a mounted panel hands back: the two things a host without React has\n * no re-render to do for them. Opening and closing go through\n * `medianFeedback`, same as anywhere.\n */\nexport type MedianFeedbackInstance = {\n /**\n * Change any option after mount. Only the keys passed change, so\n * `update({ user })` when somebody signs in leaves the rest alone.\n */\n update: (options: Partial<MedianFeedbackProps>) => void;\n /** Take the panel off the page. */\n unmount: () => void;\n};\n\n/**\n * The same panel, for a page that has never heard of React: Vue, Svelte,\n * Rails, a script on plain HTML.\n *\n * const feedback = mountMedianFeedback({ apiKey: \"median_pk_...\" });\n *\n * document.querySelector(\"#feedback\").onclick = () => medianFeedback.open();\n *\n * There is no trigger to wrap out here, so the panel opens in the bottom\n * right corner and your own button says when. Everything else is the\n * component's, unchanged.\n */\nexport function mountMedianFeedback(\n options: Omit<MedianFeedbackProps, \"children\">,\n): MedianFeedbackInstance {\n // A server rendering the page has nowhere to put a panel. Say so where the\n // installer is looking, and hand back an instance that is safe to hold,\n // because a broken panel must never take the page down with it.\n if (typeof document === \"undefined\") {\n console.error(\n \"Median: mountMedianFeedback() was called where there is no document, so nothing was mounted. Call it in the browser, after the page exists.\",\n );\n return { update: () => {}, unmount: () => {} };\n }\n\n const container = document.createElement(\"div\");\n container.dataset.medianFeedback = \"\";\n document.body.appendChild(container);\n\n const root = createRoot(container);\n let current = options;\n let mounted = true;\n\n const render = () => {\n root.render(<MedianFeedback {...current} />);\n };\n render();\n\n return {\n update(next) {\n if (!mounted) {\n if (isDevelopment) {\n console.warn(\n \"Median: update() was called after unmount(), so nothing changed. Mount again with mountMedianFeedback() if the panel should come back.\",\n );\n }\n return;\n }\n current = { ...current, ...next };\n render();\n },\n unmount() {\n if (!mounted) return;\n mounted = false;\n root.unmount();\n container.remove();\n },\n };\n}\n"],"mappings":"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","names":["nodeInterop","assign","searchParamsToUrlQuery","urlQueryToSearchParams","searchParams","query","key","value","entries","existing","Array","isArray","push","stringifyUrlQueryParam","param","isNaN","String","URLSearchParams","Object","item","append","set","target","searchParamsList","keys","delete","formatUrl","formatWithValidation","urlObjectKeys","slashedProtocols","urlObj","auth","hostname","protocol","pathname","hash","query","host","encodeURIComponent","replace","indexOf","port","String","querystring","urlQueryToSearchParams","search","endsWith","slashes","test","url","process","env","NODE_ENV","Object","keys","forEach","key","includes","console","warn","omit","object","keys","omitted","Object","forEach","key","includes","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","url","c","charCodeAt","isLetter","test","protocol","hostname","port","window","location","href","origin","substring","length","Component","displayName","name","res","finished","headersSent","urlParts","split","urlNoQuery","replace","slice","join","App","ctx","process","env","NODE_ENV","prototype","getInitialProps","message","Error","pageProps","props","Object","keys","console","warn","performance","every","method","constructor","page","code","error","JSON","stringify","stack","removeTrailingSlash","route","charCodeAt","length","slice","parsePath","path","hashIndex","indexOf","queryIndex","hasQuery","pathname","substring","query","undefined","hash","slice","normalizePathTrailingSlash","path","charCodeAt","process","env","__NEXT_MANUAL_TRAILING_SLASH","pathname","query","hash","parsePath","__NEXT_TRAILING_SLASH","test","removeTrailingSlash","endsWith","pathHasPrefix","path","prefix","pathname","parsePath","startsWith","hasBasePath","basePath","process","env","__NEXT_ROUTER_BASEPATH","path","pathHasPrefix","isLocalURL","url","isAbsoluteUrl","locationOrigin","getLocationOrigin","resolved","URL","origin","hasBasePath","pathname","_","getSortedRouteObjects","getSortedRoutes","UrlNode","insert","urlPath","_insert","split","filter","Boolean","smoosh","_smoosh","prefix","childrenPaths","children","keys","sort","slugName","splice","indexOf","restSlugName","optionalRestSlugName","routes","map","c","get","reduce","prev","curr","push","placeholder","r","slice","Error","unshift","urlPaths","slugNames","isCatchAll","length","nextSegment","startsWith","endsWith","handleSlug","previousSlug","nextSlug","forEach","slug","replace","segmentName","isOptional","substring","has","set","Map","normalizedPages","root","pagePath","objects","getter","indexes","pathnames","i","pathname","sorted","ensureLeadingSlash","path","startsWith","DEFAULT_SEGMENT_KEY","NOT_FOUND_SEGMENT_KEY","PAGE_SEGMENT_KEY","addSearchParamsIfPageSegment","computeSelectedLayoutSegment","getSegmentValue","getSelectedLayoutSegmentPath","isGroupSegment","isParallelRouteSegment","segment","Array","isArray","endsWith","startsWith","searchParams","isPageSegment","includes","stringifiedQuery","JSON","stringify","segments","parallelRouteKey","length","rawSegment","tree","first","segmentPath","node","parallelRoutes","children","Object","values","segmentValue","push","compareAppPaths","normalizeAppPath","normalizeRscURL","route","ensureLeadingSlash","split","reduce","pathname","segment","index","segments","isGroupSegment","length","a","b","aHasSlot","includes","bHasSlot","localeCompare","url","replace","INTERCEPTION_ROUTE_MARKERS","extractInterceptionRouteInformation","isInterceptionRouteAppPath","path","split","find","segment","m","startsWith","undefined","interceptingRoute","marker","interceptedRoute","Error","normalizeAppPath","slice","concat","join","splitInterceptingRoute","length","isDynamicRoute","TEST_ROUTE","TEST_STRICT_ROUTE","route","strict","isInterceptionRouteAppPath","extractInterceptionRouteInformation","interceptedRoute","test","getSortedRouteObjects","getSortedRoutes","isDynamicRoute","e","n","r","t","a","i","o","c","f","u","p","s","d","g","l","m","w","R","PARAM_SEPARATOR","hasAdjacentParameterIssues","normalizeAdjacentParameters","normalizeTokensForRegexp","stripNormalizedSeparators","stripParameterSeparators","route","test","normalized","replace","tokens","map","token","modifier","prefix","suffix","pathname","RegExp","params","cleaned","key","value","Object","entries","Array","isArray","item","safeCompile","safePathToRegexp","safeRegexpToFunction","safeRouteMatcher","route","keys","options","pathToRegexp","needsNormalization","hasAdjacentParameterIssues","routeToUse","normalizeAdjacentParameters","error","normalizedRoute","retryError","compiler","compile","params","stripNormalizedSeparators","regexp","originalMatcher","regexpToFunction","pathname","result","stripParameterSeparators","matcherFn","getRouteMatcher","re","groups","rawMatcher","pathname","routeMatch","exec","decode","param","decodeURIComponent","DecodeError","params","key","group","Object","entries","match","pos","undefined","repeat","split","map","entry","safeRouteMatcher","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","edge","experimentalEdge","nodejs","WEBPACK_LAYERS_NAMES","shared","reactServerComponents","serverSideRendering","actionBrowser","apiNode","apiEdge","middleware","instrument","edgeAsset","appPagesBrowser","pagesDirBrowser","pagesDirEdge","pagesDirNode","GROUP","builtinReact","serverOnly","neutralTarget","clientOnly","bundled","appPages","edgeSSREntry","metadata","metadataRoute","metadataImageMeta","escapeStringRegexp","reHasRegExp","reReplaceRegExp","str","test","replace","InvariantError","Error","constructor","message","options","endsWith","name","parseLoaderTree","tree","segment","parallelRoutes","modules","staticSiblings","layout","template","page","DEFAULT_SEGMENT_KEY","defaultPage","conventionPath","getParamProperties","getSegmentParam","isCatchAll","segment","interceptionMarker","INTERCEPTION_ROUTE_MARKERS","find","marker","startsWith","slice","length","endsWith","paramType","paramName","type","repeat","optional","isInterceptionAppRoute","isNormalizedAppRoute","parseAppRouteSegment","parseAppRouteWithSlots","parseNormalizedAppRoute","normalizeEncodedDynamicPlaceholder","segment","test","decodedSegment","decodeURIComponent","getSegmentParam","interceptionMarker","INTERCEPTION_ROUTE_MARKERS","find","m","startsWith","param","type","name","endsWith","route","normalized","undefined","interceptingRoute","interceptedRoute","OnlyRoutableSegments","AllowParallelSegments","AllowGroupSegments","parseAppRouteImpl","pathname","allowedTypes","pathnameSegments","split","filter","Boolean","segments","normalizedSegment","appSegment","InvariantError","push","parts","length","Error","dynamicSegments","interceptionPrefixFromParamType","paramType","resolveParamValue","getParamValueFromSegment","pathSegment","params","paramType","type","param","paramName","interceptionPrefix","interceptionPrefixFromParamType","interceptionMarker","name","replace","depth","route","processedSegments","index","segments","length","value","push","hasOwnProperty","undefined","paramValue","Array","isArray","InvariantError","pathname","PARAMETER_PATTERN","getDynamicParam","interpolateParallelRouteParams","parseMatchedParameter","parseParameter","getParamValue","interpolatedParams","segmentKey","fallbackRouteParams","value","has","searchValue","get","Array","isArray","map","i","encodeURIComponent","loaderTree","params","pagePath","interpolated","structuredClone","stack","tree","depth","route","parseNormalizedAppRoute","length","pop","segment","parallelRoutes","parseLoaderTree","appSegment","parseAppRouteSegment","type","hasOwnProperty","param","paramName","paramType","paramValue","resolveParamValue","undefined","InvariantError","nextDepth","parallelRoute","Object","values","push","dynamicParamType","staticSiblings","treeSegment","paramCacheKey","join","match","optional","startsWith","endsWith","slice","repeat","key","getNamedMiddlewareRegex","getNamedRouteRegex","getRouteRegex","getParametrizedRoute","route","includeSuffix","includePrefix","groups","groupIndex","segments","segment","removeTrailingSlash","slice","split","markerMatch","INTERCEPTION_ROUTE_MARKERS","find","m","startsWith","paramMatches","match","PARAMETER_PATTERN","key","optional","repeat","parseMatchedParameter","pos","push","escapeStringRegexp","s","substring","parameterizedRoute","join","normalizedRoute","excludeOptionalTrailingSlash","re","RegExp","buildGetSafeRouteKey","i","routeKey","j","String","fromCharCode","Math","floor","getSafeKeyFromSegment","interceptionMarker","getSafeRouteKey","routeKeys","keyPrefix","backreferenceDuplicateKeys","cleanedKey","replace","invalidKey","length","isNaN","parseInt","duplicateKey","interceptionPrefix","pattern","getNamedParametrizedRoute","prefixRouteKeys","reference","names","intercepted","inverseParts","structuredClone","hasInterceptionMarker","some","undefined","NEXT_INTERCEPTION_MARKER_PREFIX","NEXT_QUERY_PARAM_PREFIX","namedParameterizedRoute","pathToRegexpPattern","options","result","namedRegex","catchAll","catchAllRegex","catchAllGroupedRegex","interpolateAs","route","asPathname","query","interpolatedRoute","dynamicRegex","getRouteRegex","dynamicGroups","groups","dynamicMatches","getRouteMatcher","params","Object","keys","every","param","value","repeat","optional","replaced","Array","isArray","replace","map","segment","encodeURIComponent","join","result","resolveHref","router","href","resolveAs","base","urlAsString","formatWithValidation","urlProtoMatch","match","urlAsStringNoProto","slice","length","urlParts","split","console","error","pathname","normalizedUrl","normalizeRepeatedSlashes","isLocalURL","baseBase","startsWith","asPath","isDynamicRoute","routeRegex","getRouteRegex","getRouteMatcher","URL","_","finalUrl","normalizePathTrailingSlash","interpolatedAs","searchParams","query","searchParamsToUrlQuery","result","params","interpolateAs","hash","omit","resolvedHref","origin","addPathPrefix","path","prefix","startsWith","pathname","query","hash","parsePath","addLocale","path","locale","defaultLocale","ignorePrefix","lower","toLowerCase","pathHasPrefix","addPathPrefix","addLocale","path","args","process","env","__NEXT_I18N_SUPPORT","normalizePathTrailingSlash","require","RouterContext","React","createContext","process","env","NODE_ENV","displayName","cancelIdleCallback","requestIdleCallback","self","bind","window","cb","start","Date","now","setTimeout","didTimeout","timeRemaining","Math","max","id","clearTimeout","useIntersection","hasIntersectionObserver","IntersectionObserver","observers","Map","idList","createObserver","options","id","root","margin","rootMargin","existing","find","obj","instance","get","elements","observer","entries","forEach","entry","callback","target","isVisible","isIntersecting","intersectionRatio","push","set","observe","element","unobserve","delete","size","disconnect","index","findIndex","splice","rootRef","disabled","isDisabled","visible","setVisible","useState","elementRef","useRef","setElement","useCallback","current","useEffect","tagName","idleCallback","requestIdleCallback","cancelIdleCallback","resetVisible","normalizeLocalePath","cache","WeakMap","pathname","locales","lowercasedLocales","get","map","locale","toLowerCase","set","detectedLocale","segments","split","segment","index","indexOf","slice","length","normalizeLocalePath","pathname","locales","process","env","__NEXT_I18N_SUPPORT","require","detectedLocale","undefined","detectDomainLocale","domainItems","hostname","detectedLocale","toLowerCase","item","domainHostname","domain","split","defaultLocale","locales","some","locale","detectDomainLocale","args","process","env","__NEXT_I18N_SUPPORT","require","getDomainLocale","basePath","process","env","__NEXT_ROUTER_BASEPATH","path","locale","locales","domainLocales","__NEXT_I18N_SUPPORT","normalizeLocalePath","require","detectDomainLocale","target","detectedLocale","domain","undefined","proto","http","finalLocale","defaultLocale","normalizePathTrailingSlash","addBasePath","basePath","process","env","__NEXT_ROUTER_BASEPATH","path","required","normalizePathTrailingSlash","__NEXT_MANUAL_CLIENT_BASE_PATH","addPathPrefix","useMergedRef","refA","refB","cleanupA","useRef","cleanupB","useCallback","current","cleanupFnA","cleanupFnB","applyRef","cleanup","errorOnce","_","process","env","NODE_ENV","errors","Set","msg","has","console","error","add","useLinkStatus","prefetched","Set","prefetch","router","href","as","options","window","isLocalURL","bypassPrefetchedCheck","locale","undefined","prefetchedKey","has","add","catch","err","process","env","NODE_ENV","isModifiedEvent","event","eventTarget","currentTarget","target","getAttribute","metaKey","ctrlKey","shiftKey","altKey","nativeEvent","which","linkClicked","e","replace","shallow","scroll","onNavigate","nodeName","isAnchorNodeName","toUpperCase","hasAttribute","preventDefault","location","navigate","isDefaultPrevented","routerScroll","formatStringOrUrl","urlObjOrString","formatUrl","Link","React","forwardRef","LinkComponent","props","forwardedRef","children","hrefProp","asProp","childrenProp","prefetchProp","passHref","onClick","onMouseEnter","onMouseEnterProp","onTouchStart","onTouchStartProp","legacyBehavior","transitionTypes","restProps","a","useContext","RouterContext","prefetchEnabled","createPropError","args","Error","key","expected","actual","requiredPropsGuard","requiredProps","Object","keys","forEach","_","optionalPropsGuard","optionalProps","valType","Array","isArray","useMemo","resolvedHref","resolvedAs","resolveHref","previousHref","useRef","previousAs","child","console","warn","Children","only","type","childRef","ref","setIntersectionRef","isVisible","resetVisible","useIntersection","rootMargin","setIntersectionWithResetRef","useCallback","el","current","setRef","useMergedRef","useEffect","childProps","defaultPrevented","priority","__NEXT_LINK_NO_TOUCH_START","isAbsoluteUrl","curLocale","localeDomain","isLocaleDomain","getDomainLocale","locales","domainLocales","addBasePath","addLocale","defaultLocale","errorOnce","require","cloneElement","LinkStatusContext","createContext","pending","require_link","useEffect","useState","useCallback","useEffect","useRef","useState","l","s","r","a","t","o","i","n","c","m","e","a","m","e","e","a","e","r","o","t","e","e","e","a","r","o","t","a","o","e","a","r","e","t","a","r","a","e","o","e","t","r","e","a","o","e","t","a","o","a","e","r","e","s","r","a","e","o","e","s","r","a","e","o","t","e","o","a","e","e","t","r","o","a","e","e","r","t","o","a","e","e","r","a","a","e","e","r","o","o","e","e","r","t","e","e","a","t","r","o","a","t","e","t","e","r","o","t","e","a","e","o","a","i","e","o","e","a","e","a","l","e","e","a","o","a","i","t","a","e","o","e","r","e","a","e","r","t","o","e","e","e","a","o","r","t","a","e","e","a","r","c","o","a","e","e","t","r","o","t","e","a","e","r","o","a","e","e","e","a","r","o","a","o","e","a","e","r","t","a","o","a","e","e","r","t","o","a","e","e","r","t","o","a","e","r","t","o","a","e","e","r","t","r","a","e","e","t","o","e","e","a","o","i","r","a","e","e","a","o","r","t","a","e","e","a","o","m","p","a","e","e","a","o","r","t","a","o","e","t","e","r","t","e","a","e","o","r","t","e","o","a","e","e","r","s","e","e","l","o","n","r","l","t","e","a","o","m","i","a","e","e","t","o","m","r","t","e","a","e","a","r","o","e","e","a","e","o","r","t","e","t","a","e","o","e","r","e","a","l","o","i","m","l","t","a","e","e","s","o","e","a","l","t","o","l","e","a","e","r","s","t","e","o","a","e","e","m","r","a","a","e","o","e","r","a","e","a","s","o","i","a","o","a","e","a","e","r","e","a","e","o","a","r","e","o","a","e","r","t","e","o","e","a","e","r","t","a","o","a","e","e","t","r","o","a","e","t","e","r","e","e","a","a","r","t","e","a","e","r","o","a","e","e","a","e","o","i","m","e","o","e","a","a","e","r","e","a","l","o","t","n","l","o","e","a","e","r","s","a","o","a","e","e","t","r","e","a","e","r","o","a","e","e","e","a","r","o","a","t","a","e","o","e","r","o","a","e","r","e","t","e","a","l","r","o","a","l","e","e","a","r","o","a","r","a","l","t","o","a","l","o","a","e","e","r","t","e","e","o","a","r","o","e","a","a","e","r","e","a","e","o","t","r","e","t","e","a","e","o","a","t","a","e","e","r","o","r","a","e","o","a","e","e","e","a","r","o","t","a","o","a","e","e","a","m","e","e","a","r","o","s","a","e","e","a","r","s","o","a","r","e","a","e","o","a","e","a","e","r","o","t","e","o","e","a","e","r","t","a","e","e","a","r","o","t","a","r","e","o","a","t","s","at","buttonY","React","i","S","a","r","t","n","e","o","d","s","u","f","l","p","c","jsx","e","t","r","n","o","i","S","l","d","b","p","m","u","c","f","H","ne","s","a","ue","w","I","be","Te","Pe","Oe","X","e","t","r","n","o","i","S","l","jsx","X","d","b","p","m","u","f","H","param","React","i","Slot","__name","Slottable","child","React","jsx","useEffect","Fragment","jsx","jsxs","useCallback","useLayoutEffect","useRef","useRef","useCallback","useLayoutEffect","useEffect","useRef","useState","forwardRef","jsx","Image","jsx","jsxs","useEffect","useRef","useState","useRef","useState","jsx","jsx","useCallback","useEffect","useRef","jsx","jsx","jsxs","jsx","jsxs","useState","useRef","useEffect","useState","jsx","jsx","useState","shape","jsx","shape","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","jsx","useState","Fragment","jsx","jsxs","useState","useLayoutEffect","useRef","jsx","prefersReducedMotion","release","useRef","useLayoutEffect","jsx","jsx","Link","jsx","jsx","jsxs","Fragment","jsx","jsxs","useEffect","useRef","useState","jsx","jsx","jsxs","useState","useRef","useEffect","jsx","jsxs","jsx","jsxs","useCallback","useEffect","useLayoutEffect","useRef","useState","useSyncExternalStore","enabled","useSyncExternalStore","useState","useRef","useCallback","useLayoutEffect","useEffect","clamp","useLayoutEffect","useState","useSyncExternalStore","useEffect","SETTLE_MS","useSyncExternalStore","useState","useLayoutEffect","jsx","jsxs","useState","useRef","useCallback","useEffect","current","useEffect","useRef","useState","jsx","jsxs","prefersReducedMotion","useEffect","useState","createPortal","jsx","jsxs","LAYER","useState","useEffect","createPortal","useSyncExternalStore","useCallback","useEffect","useSyncExternalStore","listeners","store","useSyncExternalStore","read","trim","withoutQuery","events","useCallback","useEffect","useRef","withoutQuery","useEffect","listeners","listeners","i","useCallback","useEffect","useMemo","useState","useSyncExternalStore","useEffect","useState","STORAGE_PREFIX","STORAGE_PREFIX","inMemory","at","useCallback","useSyncExternalStore","STORAGE_PREFIX","inMemory","listeners","i","useSyncExternalStore","useCallback","useMemo","useEffect","useState","current","useSyncExternalStore","useSyncExternalStore","ConvexError","i","useEffect","useRef","useLayoutEffect","useRef","useState","isDevelopment","Fragment","jsx","jsxs","useEffect","client","useState","jsx","isDevelopment","current","ConvexProvider","ConvexReactClient","useCallback","useEffect","useRef","useState","useEffect","useState","useEffect","useRef","createPortal","useSyncExternalStore","useLayoutEffect","useState","MARGIN","clamp","jsx","LAYER","useRef","useEffect","createPortal","jsx","jsxs","THANKS_MS","useState","useEffect","useSyncExternalStore","store","useSyncExternalStore","useMutation","useCallback","useState","useSyncExternalStore","useSyncExternalStore","useCallback","useMutation","useState","Fragment","jsx","jsxs","DEFAULT_WIDTH","useApiKeyShapeWarning","useEffect","client","useState","ConvexReactClient","ConvexProvider","useRef","useCallback","createRoot","jsx","createRoot","current"]}