{"version":3,"file":"AppDownloadScreen-C_yHY9sd.mjs","names":["AppDownloadScreen","AppDownloadScreenUI"],"sources":["../../app-download-ui/src/translation-api-context.ts","../../app-download-ui/src/components/AppStoreButtons.tsx","../../app-download-ui/src/components/QrCodeSection.tsx","../../app-download-ui/src/lib/cn.ts","../../app-download-ui/src/components/AppDownloadScreen.tsx","../src/providers/AppDownloadTranslationBridge.tsx","../src/screens/AppDownloadScreen.tsx"],"sourcesContent":["import { createTranslationContext } from \"@fluid-app/i18n/translation-api-context-factory\";\nimport type { AppDownloadDict } from \"./translation-dictionary\";\n\nconst { Provider, useTranslation } =\n  createTranslationContext<AppDownloadDict>(\"AppDownload\");\n\nexport const AppDownloadTranslationProvider = Provider;\nexport const useAppDownloadTranslation = useTranslation;\n","import { ExternalLink } from \"lucide-react\";\nimport { useAppDownloadTranslation } from \"../translation-api-context\";\n\nexport interface AppStoreButtonsProps {\n  appstoreUrl: string;\n  playstoreUrl?: string;\n}\n\nfunction AppleIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 384 512\"\n      fill=\"currentColor\"\n      className=\"size-5\"\n    >\n      <path d=\"M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-62.1 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z\" />\n    </svg>\n  );\n}\n\nfunction GooglePlayIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 512 512\"\n      fill=\"currentColor\"\n      className=\"size-5\"\n    >\n      <path d=\"M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z\" />\n    </svg>\n  );\n}\n\nexport function AppStoreButtons({\n  appstoreUrl,\n  playstoreUrl,\n}: AppStoreButtonsProps) {\n  const { t } = useAppDownloadTranslation();\n\n  return (\n    <div\n      className={`grid gap-4 ${playstoreUrl ? \"grid-cols-1 sm:grid-cols-2\" : \"grid-cols-1\"}`}\n    >\n      <a\n        href={appstoreUrl}\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n        className=\"block cursor-pointer rounded-sm border bg-white p-4 text-gray-900 transition-colors hover:bg-gray-50\"\n      >\n        <div className=\"flex justify-between\">\n          <div className=\"flex flex-col items-baseline\">\n            <AppleIcon />\n            <div className=\"mt-1 text-left text-xs font-semibold\">\n              {t(\"open_app_store\")}\n            </div>\n          </div>\n          <div className=\"flex items-start\">\n            <ExternalLink className=\"size-4\" />\n          </div>\n        </div>\n      </a>\n\n      {playstoreUrl && (\n        <a\n          href={playstoreUrl}\n          target=\"_blank\"\n          rel=\"noopener noreferrer\"\n          className=\"block cursor-pointer rounded-sm border bg-white p-4 text-gray-900 transition-colors hover:bg-gray-50\"\n        >\n          <div className=\"flex justify-between\">\n            <div className=\"flex flex-col items-baseline\">\n              <GooglePlayIcon />\n              <div className=\"mt-1 text-left text-xs font-semibold\">\n                {t(\"open_play_store\")}\n              </div>\n            </div>\n            <div className=\"flex items-start\">\n              <ExternalLink className=\"size-4\" />\n            </div>\n          </div>\n        </a>\n      )}\n    </div>\n  );\n}\n","import { useAppDownloadTranslation } from \"../translation-api-context\";\n\nexport interface QrCodeSectionProps {\n  companyId: number;\n}\n\nexport function QrCodeSection({ companyId }: QrCodeSectionProps) {\n  const { t } = useAppDownloadTranslation();\n  const redirectUrl = `https://api.fluid.app/mobile_app_download/${companyId}`;\n  const qrCodeUrl = `https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(redirectUrl)}`;\n\n  return (\n    <a\n      href={redirectUrl}\n      target=\"_blank\"\n      rel=\"noopener noreferrer\"\n      className=\"block cursor-pointer rounded-sm border bg-white p-4 text-gray-900 transition-colors hover:bg-gray-50\"\n    >\n      <div className=\"flex items-end justify-between\">\n        <div className=\"flex flex-col items-baseline\">\n          <div className=\"mt-1 text-left text-xs font-semibold\">\n            {t(\"scan_to_download\")}\n          </div>\n        </div>\n        <div className=\"flex\">\n          <img\n            src={qrCodeUrl}\n            alt={t(\"qr_code_alt\")}\n            className=\"size-16\"\n            loading=\"lazy\"\n          />\n        </div>\n      </div>\n    </a>\n  );\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","import { AppStoreButtons } from \"./AppStoreButtons\";\nimport { QrCodeSection } from \"./QrCodeSection\";\nimport { cn } from \"../lib/cn\";\nimport { useAppDownloadTranslation } from \"../translation-api-context\";\n\nconst DEFAULT_APPSTORE_URL =\n  \"https://apps.apple.com/app/wecommerce/id1564463740\";\nconst DEFAULT_PLAYSTORE_URL =\n  \"https://play.google.com/store/apps/details?id=com.fluid.crm\";\n\nexport interface AppDownloadScreenProps {\n  companyId: number;\n  appstoreUrl?: string | null;\n  playstoreUrl?: string | null;\n  className?: string;\n}\n\nexport function AppDownloadScreen({\n  companyId,\n  appstoreUrl,\n  playstoreUrl,\n  className,\n}: AppDownloadScreenProps) {\n  const { t } = useAppDownloadTranslation();\n  const resolvedAppstoreUrl = appstoreUrl?.trim() || DEFAULT_APPSTORE_URL;\n  const resolvedPlaystoreUrl = playstoreUrl?.trim() || DEFAULT_PLAYSTORE_URL;\n\n  return (\n    <div\n      className={cn(\"flex h-full items-center justify-center p-4\", className)}\n    >\n      <div className=\"w-full max-w-xl space-y-2 pt-8 pb-8\">\n        <h1 className=\"mt-12 text-left text-[32px] leading-tight font-black text-gray-900\">\n          {t(\"heading_line_1\")}\n        </h1>\n        <h1 className=\"-mt-2 text-left text-[32px] leading-tight font-black text-gray-900\">\n          {t(\"heading_line_2\")}\n        </h1>\n        <p className=\"-mt-1 text-left text-[14px] leading-relaxed text-gray-600\">\n          {t(\"description\")}\n        </p>\n\n        <h3 className=\"mt-16 text-left text-[12px] font-bold text-gray-900\">\n          {t(\"download_the_app\")}\n        </h3>\n\n        <AppStoreButtons\n          appstoreUrl={resolvedAppstoreUrl}\n          playstoreUrl={resolvedPlaystoreUrl}\n        />\n\n        <QrCodeSection companyId={companyId} />\n      </div>\n    </div>\n  );\n}\n","import { useMemo, type ReactNode } from \"react\";\nimport { useActiveLocale } from \"@fluid-app/i18n/locale-context\";\nimport { useDomainDict } from \"@fluid-app/i18n/use-domain-dict\";\nimport {\n  appDownloadDomain,\n  createAppDownloadTranslationAdapter,\n} from \"@fluid-app/portal-app-download-ui/translation-adapter\";\nimport { AppDownloadTranslationProvider } from \"@fluid-app/portal-app-download-ui/translation-api-context\";\n\nexport function AppDownloadTranslationBridge({\n  children,\n}: {\n  children: ReactNode;\n}): React.JSX.Element {\n  const { locale } = useActiveLocale();\n  const dict = useDomainDict(appDownloadDomain, locale);\n  const api = useMemo(\n    () => createAppDownloadTranslationAdapter(locale, dict),\n    [locale, dict],\n  );\n  return (\n    <AppDownloadTranslationProvider value={api}>\n      {children}\n    </AppDownloadTranslationProvider>\n  );\n}\n","import type { WidgetPropertySchema } from \"../registries/property-schema-types\";\nimport { AppDownloadScreen as AppDownloadScreenUI } from \"@fluid-app/portal-app-download-ui\";\nimport { useStore } from \"../hooks/use-store\";\nimport { AppDownloadTranslationBridge } from \"../providers/AppDownloadTranslationBridge\";\n\nexport const appDownloadScreenPropertySchema = {\n  widgetType: \"AppDownloadScreen\",\n  displayName: \"App Download Screen\",\n  fields: [],\n} as const satisfies WidgetPropertySchema;\n\nexport function AppDownloadScreen(): React.JSX.Element {\n  const { data: store } = useStore();\n\n  return (\n    <AppDownloadTranslationBridge>\n      <AppDownloadScreenUI\n        companyId={store?.id ?? 0}\n        appstoreUrl={store?.appstore_url ?? undefined}\n        playstoreUrl={store?.playstore_url ?? undefined}\n      />\n    </AppDownloadTranslationBridge>\n  );\n}\n"],"mappings":"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"}