{"version":3,"sources":["../../../../src/lib/i18n/use-translation.ts"],"sourcesContent":["\"use client\";\n\nimport { useIntl, type MessageDescriptor } from \"./intl-context.js\";\n\ntype TranslationParams = MessageDescriptor & {\n  values?: Record<string, string>;\n};\n\n/**\n * Translation hook that gracefully degrades when no I18nProvider is present.\n *\n * - With I18nProvider: Uses react-intl's formatMessage for full i18n support (react-intl will be bundled)\n * - Without I18nProvider: Returns the defaultMessage with simple string interpolation (no react-intl bundled)\n */\nexport function useTranslation() {\n  const i18n = useIntl();\n\n  return (params: TranslationParams): string => {\n    const { defaultMessage, description, id, values } = params;\n\n    // If I18nProvider is present, use react-intl's formatMessage\n    if (i18n) {\n      // TODO: Do we really want to cast this to a string?\n      return String(\n        i18n.formatMessage({ id, defaultMessage, description }, values),\n      );\n    }\n\n    // If no I18nProvider is present, return defaultMessage with simple interpolation\n    if (!values) {\n      return defaultMessage;\n    }\n\n    // Simple string interpolation for values\n    return defaultMessage.replace(/\\{(\\w+)\\}/g, (match, key) => {\n      return key in values ? String(values[key]) : match;\n    });\n  };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAAgD;AAYzC,SAAS,iBAAiB;AAC/B,QAAM,WAAO,6BAAQ;AAErB,SAAO,CAAC,WAAsC;AAC5C,UAAM,EAAE,gBAAgB,aAAa,IAAI,OAAO,IAAI;AAGpD,QAAI,MAAM;AAER,aAAO;AAAA,QACL,KAAK,cAAc,EAAE,IAAI,gBAAgB,YAAY,GAAG,MAAM;AAAA,MAChE;AAAA,IACF;AAGA,QAAI,CAAC,QAAQ;AACX,aAAO;AAAA,IACT;AAGA,WAAO,eAAe,QAAQ,cAAc,CAAC,OAAO,QAAQ;AAC1D,aAAO,OAAO,SAAS,OAAO,OAAO,GAAG,CAAC,IAAI;AAAA,IAC/C,CAAC;AAAA,EACH;AACF;","names":[]}