@flamingo-stack/openframe-frontend-core 0.0.191 → 0.0.192

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.
Files changed (52) hide show
  1. package/dist/{chunk-EWIC26TW.cjs → chunk-4CWSZPXH.cjs} +8 -8
  2. package/dist/{chunk-EWIC26TW.cjs.map → chunk-4CWSZPXH.cjs.map} +1 -1
  3. package/dist/{chunk-QAXTP73H.js → chunk-CDR4RZ5N.js} +17 -8
  4. package/dist/chunk-CDR4RZ5N.js.map +1 -0
  5. package/dist/{chunk-HIMEIPED.cjs → chunk-CVMSC7M4.cjs} +38 -38
  6. package/dist/{chunk-HIMEIPED.cjs.map → chunk-CVMSC7M4.cjs.map} +1 -1
  7. package/dist/{chunk-F7ETWH2M.js → chunk-N57KWHDB.js} +2 -2
  8. package/dist/{chunk-6XYXWVYY.js → chunk-PJ5KFD2V.js} +3 -3
  9. package/dist/{chunk-DV5GLSYR.js → chunk-SZPJ5R5B.js} +2 -1
  10. package/dist/{chunk-LVBPFEK2.cjs → chunk-TANAJ7YD.cjs} +1249 -1240
  11. package/dist/chunk-TANAJ7YD.cjs.map +1 -0
  12. package/dist/{chunk-HSTU7Y4R.js → chunk-TMD44IKJ.js} +2 -2
  13. package/dist/{chunk-OFAYLG6D.cjs → chunk-UC43NICZ.cjs} +3 -2
  14. package/dist/chunk-UC43NICZ.cjs.map +1 -0
  15. package/dist/{chunk-BJTOSUT4.cjs → chunk-V2FNIPZJ.cjs} +49 -49
  16. package/dist/{chunk-BJTOSUT4.cjs.map → chunk-V2FNIPZJ.cjs.map} +1 -1
  17. package/dist/components/chat/chat-ref.types.d.ts +7 -0
  18. package/dist/components/chat/chat-ref.types.d.ts.map +1 -1
  19. package/dist/components/features/index.cjs +6 -6
  20. package/dist/components/features/index.js +5 -5
  21. package/dist/components/icons/index.cjs +3 -3
  22. package/dist/components/icons/index.js +2 -2
  23. package/dist/components/index.cjs +6 -6
  24. package/dist/components/index.js +5 -5
  25. package/dist/components/navigation/index.cjs +6 -6
  26. package/dist/components/navigation/index.js +5 -5
  27. package/dist/components/ui/file-manager/index.cjs +69 -69
  28. package/dist/components/ui/file-manager/index.js +2 -2
  29. package/dist/components/ui/index.cjs +6 -6
  30. package/dist/components/ui/index.js +5 -5
  31. package/dist/components/ui/search-input.d.ts +15 -2
  32. package/dist/components/ui/search-input.d.ts.map +1 -1
  33. package/dist/hooks/index.cjs +4 -4
  34. package/dist/hooks/index.js +3 -3
  35. package/dist/index.cjs +8 -6
  36. package/dist/index.cjs.map +1 -1
  37. package/dist/index.js +8 -6
  38. package/dist/utils/index.cjs +1 -0
  39. package/dist/utils/index.d.ts +1 -1
  40. package/dist/utils/index.d.ts.map +1 -1
  41. package/dist/utils/index.js +1 -1
  42. package/package.json +1 -1
  43. package/src/components/chat/chat-ref.types.ts +7 -0
  44. package/src/components/ui/search-input.tsx +29 -5
  45. package/src/utils/index.ts +1 -1
  46. package/dist/chunk-LVBPFEK2.cjs.map +0 -1
  47. package/dist/chunk-OFAYLG6D.cjs.map +0 -1
  48. package/dist/chunk-QAXTP73H.js.map +0 -1
  49. /package/dist/{chunk-F7ETWH2M.js.map → chunk-N57KWHDB.js.map} +0 -0
  50. /package/dist/{chunk-6XYXWVYY.js.map → chunk-PJ5KFD2V.js.map} +0 -0
  51. /package/dist/{chunk-DV5GLSYR.js.map → chunk-SZPJ5R5B.js.map} +0 -0
  52. /package/dist/{chunk-HSTU7Y4R.js.map → chunk-TMD44IKJ.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-OFAYLG6D.cjs","../src/utils/cn.ts"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACF,wDAA6B;AAC7B;AACA;ACLA,4BAAsC;AACtC,+CAAoC;AAa7B,SAAS,EAAA,CAAA,GAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,wBAAA,MAAW,CAAC,CAAA;AAC7B;AAQO,SAAS,UAAA,CACd,IAAA,EACA,QAAA,EAAsC;AAAA,EACpC,IAAA,EAAM,SAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,GAAA,EAAK;AACP,CAAA,EACQ;AACR,EAAA,MAAM,QAAA,EAAU,OAAO,KAAA,IAAS,SAAA,EAAW,IAAI,IAAA,CAAK,IAAI,EAAA,EAAI,IAAA;AAG5D,EAAA,GAAA,CAAI,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ,CAAC,CAAA,EAAG;AAC5B,IAAA,OAAA,CAAQ,IAAA,CAAK,sCAAA,EAAwC,IAAI,CAAA;AACzD,IAAA,OAAO,cAAA;AAAA,EACT;AAEA,EAAA,OAAO,OAAA,CAAQ,kBAAA,CAAmB,OAAA,EAAS,OAAO,CAAA;AACpD;AAOO,SAAS,YAAA,CAAa,GAAA,EAAqB;AAChD,EAAA,OAAO,GAAA,CAAI,cAAA,CAAe,CAAA;AAC5B;AAQO,SAAS,WAAA,CAAY,KAAA,EAAe,SAAA,EAAW,KAAA,EAAe;AACnE,EAAA,OAAO,IAAI,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS;AAAA,IACpC,KAAA,EAAO,UAAA;AAAA,IACP;AAAA,EACF,CAAC,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA;AACjB;AAQO,SAAS,WAAA,CAAY,KAAA,EAAe,SAAA,EAAW,CAAA,EAAW;AAC/D,EAAA,GAAA,CAAI,MAAA,IAAU,CAAA,EAAG,OAAO,SAAA;AAExB,EAAA,MAAM,EAAA,EAAI,IAAA;AACV,EAAA,MAAM,GAAA,EAAK,SAAA,EAAW,EAAA,EAAI,EAAA,EAAI,QAAA;AAC9B,EAAA,MAAM,MAAA,EAAQ,CAAC,OAAA,EAAS,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAEtE,EAAA,MAAM,EAAA,EAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,KAAK,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAC,CAAA;AAElD,EAAA,OAAO,MAAA,CAAO,UAAA,CAAA,CAAY,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,CAAC,CAAA,CAAA,CAAG,OAAA,CAAQ,EAAE,CAAC,EAAA,EAAI,IAAA,EAAM,KAAA,CAAM,CAAC,CAAA;AAChF;AAKO,SAAS,wBAAA,CAAyB,QAAA,EAA0B;AACjE,EAAA,OAAA,CAAQ,QAAA,EAAU;AAAA;AAAA,IAEhB,KAAK,eAAA;AACH,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,8BAAA,GAAiC,mCAAA;AAAA,IACtD,KAAK,aAAA;AACH,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,4BAAA,GAA+B,iCAAA;AAAA,IACpD,KAAK,aAAA;AACH,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,4BAAA,GAA+B,iCAAA;AAAA,IACpD,KAAK,aAAA;AACH,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,4BAAA,GAA+B,iCAAA;AAAA,IACpD,KAAK,YAAA;AACH,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,2BAAA,GAA8B,gCAAA;AAAA;AAAA,IAEnD,KAAK,SAAA;AACH,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,wBAAA,GAA2B,wBAAA;AAAA,IAChD,KAAK,UAAA;AACH,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,yBAAA,GAA4B,0BAAA;AAAA,IACjD,KAAK,MAAA;AACH,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,qBAAA,GAAwB,wBAAA;AAAA,IAC7C,KAAK,iBAAA;AACH,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,yBAAA,GAA4B,0BAAA;AAAA,IACjD,KAAK,WAAA;AACH,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,0BAAA,GAA6B,sBAAA;AAAA,IAClD,KAAK,WAAA;AACH,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,yBAAA,GAA4B,0BAAA;AAAA,IACjD,OAAA;AACE,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,yBAAA,GAA4B,0BAAA;AAAA,EACnD;AACF;AAeO,SAAS,yBAAA,CAAA,EAAsC;AACpD,EAAA,GAAA,CAAI,OAAO,OAAA,IAAW,WAAA,EAAa,OAAO,CAAC,CAAA;AAE3C,EAAA,MAAM,SAAA,EAAW,MAAA,CAAO,QAAA,CAAS,QAAA;AAGjC,EAAA,GAAA,CAAI,SAAA,IAAa,YAAA,GACb,SAAA,IAAa,YAAA,GACb,QAAA,CAAS,UAAA,CAAW,MAAM,CAAA,EAAG;AAC/B,IAAA,OAAO,CAAC,CAAA;AAAA,EACV;AAGA,EAAA,MAAM,gBAAA,EAAkB,OAAA,CAAQ,GAAA,CAAI,WAAA,IAAe,UAAA,GAC5B,OAAA,CAAQ,GAAA,CAAI,uBAAA,IAA2B,UAAA,GACvC,QAAA,CAAS,QAAA,CAAS,aAAa,CAAA;AAEtD,EAAA,GAAA,CAAI,eAAA,EAAiB;AACnB,IAAA,OAAO,CAAC,aAAA,EAAe,YAAY,CAAA;AAAA,EACrC;AAKA,EAAA,MAAM,oBAAA,EAAsB;AAAA,IAC1B,eAAA;AAAA,IAAiB,aAAA;AAAA,IAAe,aAAA;AAAA,IAAe,aAAA;AAAA,IAAe,YAAA;AAAA,IAC9D,SAAA;AAAA,IAAW,UAAA;AAAA,IAAY,MAAA;AAAA,IAAQ,iBAAA;AAAA,IAAmB,WAAA;AAAA,IAAa;AAAA,EACjE,CAAA;AAEA,EAAA,MAAM,YAAA,kBAAc,IAAI,GAAA,CAAY,CAAA;AAEpC,EAAA,mBAAA,CAAoB,OAAA,CAAQ,CAAA,QAAA,EAAA,GAAY;AACtC,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,EAAM,wBAAA,CAAyB,QAAQ,CAAA;AAC7C,MAAA,MAAM,YAAA,EAAc,IAAI,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA;AACjC,MAAA,MAAM,MAAA,EAAQ,WAAA,CAAY,KAAA,CAAM,GAAG,CAAA;AAEnC,MAAA,GAAA,CAAI,KAAA,CAAM,OAAA,GAAU,CAAA,EAAG;AACrB,QAAA,MAAM,WAAA,EAAa,KAAA,CAAM,KAAA,CAAM,CAAA,CAAE,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAC3C,QAAA,WAAA,CAAY,GAAA,CAAI,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA;AACJ,QAAA;AAC5B,MAAA;AACc,IAAA;AACD,MAAA;AACf,IAAA;AACD,EAAA;AAE4B,EAAA;AAC/B;AAqCsD;AAEvB,EAAA;AACR,IAAA;AACrB,EAAA;AAGc,EAAA;AACoB,IAAA;AAClC,EAAA;AAGgB,EAAA;AACgB,IAAA;AAChC,EAAA;AAKO,EAAA;AACT;AAxOM;AAHN;AAAA,EAAA;AAAA,IAAA;AAGsD,IAAA;AAC5C,MAAA;AACO,QAAA;AACQ,UAAA;AACrB,QAAA;AACF,MAAA;AACD,IAAA;AAAA,EAAA;AAAA;AD8HsC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-OFAYLG6D.cjs","sourcesContent":[null,"import { clsx, type ClassValue } from \"clsx\"\nimport { extendTailwindMerge } from \"tailwind-merge\"\n\nconst twMerge = extendTailwindMerge<'ods-typography'>({\n extend: {\n classGroups: {\n 'ods-typography': ['text-h1', 'text-h2', 'text-h3', 'text-h4', 'text-h5', 'text-h6'],\n },\n },\n})\n\n/**\n * Combine class names with Tailwind's merge utility\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\n/**\n * Format a date to a human-readable string\n * @param date - The date to format (Date object or ISO string)\n * @param options - Formatting options\n * @returns Formatted date string\n */\nexport function formatDate(\n date: Date | string,\n options: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n },\n): string {\n const dateObj = typeof date === \"string\" ? new Date(date) : date\n \n // Check if the date is valid\n if (isNaN(dateObj.getTime())) {\n console.warn(\"Invalid date provided to formatDate:\", date)\n return \"Invalid Date\"\n }\n \n return dateObj.toLocaleDateString(\"en-US\", options)\n}\n\n/**\n * Format a number with thousands separators\n * @param num - The number to format\n * @returns Formatted number string\n */\nexport function formatNumber(num: number): string {\n return num.toLocaleString()\n}\n\n/**\n * Format a price with currency symbol\n * @param price - The price to format\n * @param currency - The currency code\n * @returns Formatted price string\n */\nexport function formatPrice(price: number, currency = \"USD\"): string {\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency,\n }).format(price)\n}\n\n/**\n * Format bytes to a human-readable string (KB, MB, GB, etc.)\n * @param bytes - The number of bytes\n * @param decimals - Number of decimal places\n * @returns Formatted bytes string\n */\nexport function formatBytes(bytes: number, decimals = 2): string {\n if (bytes === 0) return \"0 Bytes\"\n\n const k = 1024\n const dm = decimals < 0 ? 0 : decimals\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"]\n\n const i = Math.floor(Math.log(bytes) / Math.log(k))\n\n return Number.parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i]\n}\n\n/**\n * Platform URL mappings for production (with environment variable overrides)\n */\nexport function getPlatformProductionUrl(platform: string): string {\n switch (platform) {\n // *-hub platforms — env var convention: NEXT_PUBLIC_<NAME>_HUB_URL\n case 'marketing-hub':\n return process.env.NEXT_PUBLIC_MARKETING_HUB_URL || 'https://marketing-hub.flamingo.so';\n case 'company-hub':\n return process.env.NEXT_PUBLIC_COMPANY_HUB_URL || 'https://company-hub.flamingo.so';\n case 'product-hub':\n return process.env.NEXT_PUBLIC_PRODUCT_HUB_URL || 'https://product-hub.flamingo.so';\n case 'revenue-hub':\n return process.env.NEXT_PUBLIC_REVENUE_HUB_URL || 'https://revenue-hub.flamingo.so';\n case 'people-hub':\n return process.env.NEXT_PUBLIC_PEOPLE_HUB_URL || 'https://people-hub.flamingo.so';\n // Standalone platforms — env var convention: NEXT_PUBLIC_<NAME>_URL\n case 'openmsp':\n return process.env.NEXT_PUBLIC_OPENMSP_URL || 'https://www.openmsp.ai';\n case 'flamingo':\n return process.env.NEXT_PUBLIC_FLAMINGO_URL || 'https://www.flamingo.run';\n case 'tmcg':\n return process.env.NEXT_PUBLIC_TMCG_URL || 'https://www.tmcg.miami';\n case 'flamingo-teaser':\n return process.env.NEXT_PUBLIC_FLAMINGO_URL || 'https://www.flamingo.run';\n case 'openframe':\n return process.env.NEXT_PUBLIC_OPENFRAME_URL || 'https://openframe.ai';\n case 'universal':\n return process.env.NEXT_PUBLIC_FLAMINGO_URL || 'https://www.flamingo.run';\n default:\n return process.env.NEXT_PUBLIC_FLAMINGO_URL || 'https://www.flamingo.run';\n }\n}\n\n/**\n * Get ALL unique base domains from getPlatformProductionUrl\n *\n * Extracts domains by calling getPlatformProductionUrl for each platform identifier.\n * Platform identifiers match the switch cases in getPlatformProductionUrl.\n *\n * Handles 3 cases:\n * 1. LOCALHOST DEBUG - No domain (hostname-specific cookies)\n * 2. VERCEL PREVIEW (*.vercel.app) - Use vercel.app domain\n * 3. PRODUCTION - Extract from ALL platform URLs via getPlatformProductionUrl\n *\n * @returns Array of all unique base domains (with and without wildcard)\n */\nexport function getAllPlatformBaseDomains(): string[] {\n if (typeof window === 'undefined') return []\n\n const hostname = window.location.hostname\n\n // Case 1: LOCALHOST DEBUG - no domains needed\n if (hostname === 'localhost' ||\n hostname === '127.0.0.1' ||\n hostname.startsWith('127.')) {\n return []\n }\n\n // Case 2: VERCEL PREVIEW - use vercel.app domain\n const isVercelPreview = process.env.VERCEL_ENV === 'preview' ||\n process.env.NEXT_PUBLIC_VERCEL_ENV === 'preview' ||\n hostname.includes('.vercel.app')\n\n if (isVercelPreview) {\n return ['.vercel.app', 'vercel.app']\n }\n\n // Case 3: PRODUCTION - extract from ALL platforms using getPlatformProductionUrl\n // Platform identifiers MUST match switch cases in getPlatformProductionUrl —\n // otherwise the corresponding domain is omitted from cookie scope.\n const platformIdentifiers = [\n 'marketing-hub', 'company-hub', 'product-hub', 'revenue-hub', 'people-hub',\n 'openmsp', 'flamingo', 'tmcg', 'flamingo-teaser', 'openframe', 'universal'\n ]\n\n const baseDomains = new Set<string>()\n\n platformIdentifiers.forEach(platform => {\n try {\n const url = getPlatformProductionUrl(platform)\n const urlHostname = new URL(url).hostname\n const parts = urlHostname.split('.')\n\n if (parts.length >= 2) {\n const baseDomain = parts.slice(-2).join('.')\n baseDomains.add(`.${baseDomain}`) // Wildcard\n baseDomains.add(baseDomain) // Non-wildcard\n }\n } catch (error) {\n console.warn('[Platform Domains] Failed to parse URL for platform:', platform, error)\n }\n })\n\n return Array.from(baseDomains)\n}\n\n/**\n * Get the application base URL for the current environment\n *\n * @param platform - Optional platform name (openmsp, flamingo, tmcg, openframe, etc.)\n * @returns The base URL with protocol (https:// or http://)\n *\n * Priority order:\n * 1. Environment variable override (NEXT_PUBLIC_*_URL)\n * 2. Platform-specific URL (if platform parameter provided)\n * 3. VERCEL_PROJECT_PRODUCTION_URL (Vercel production domain)\n * 4. Production fallback (current app or openmsp)\n * 5. Development (http://localhost:3000)\n *\n * Environment Variables (optional overrides — only set when production domain\n * differs from the hardcoded default):\n *\n * Hub deployments (NEXT_PUBLIC_<NAME>_HUB_URL):\n * - NEXT_PUBLIC_MARKETING_HUB_URL -> marketing-hub.flamingo.so\n * - NEXT_PUBLIC_COMPANY_HUB_URL -> company-hub.flamingo.so\n * - NEXT_PUBLIC_PRODUCT_HUB_URL -> product-hub.flamingo.so\n * - NEXT_PUBLIC_REVENUE_HUB_URL -> revenue-hub.flamingo.so\n * - NEXT_PUBLIC_PEOPLE_HUB_URL -> people-hub.flamingo.so\n *\n * Standalone platforms (NEXT_PUBLIC_<NAME>_URL):\n * - NEXT_PUBLIC_OPENMSP_URL -> www.openmsp.ai\n * - NEXT_PUBLIC_FLAMINGO_URL -> www.flamingo.run\n * - NEXT_PUBLIC_TMCG_URL -> www.tmcg.miami\n * - NEXT_PUBLIC_FLAMINGO_TEASER_URL -> www.flamingo.cx\n * - NEXT_PUBLIC_OPENFRAME_URL -> openframe.ai\n *\n * @example\n * getBaseUrl() // Current app URL\n * getBaseUrl('flamingo') // https://www.flamingo.run (production) or http://localhost:3000 (dev)\n * getBaseUrl('openmsp') // https://www.openmsp.ai (or NEXT_PUBLIC_OPENMSP_URL if set)\n */\nexport function getBaseUrl(platform?: string): string {\n // In development, always use localhost (regardless of platform)\n if (process.env.NODE_ENV !== 'production') {\n return process.env.NEXT_PUBLIC_DEV_URL || 'http://localhost:3000'\n }\n\n // If platform is specified, return its production URL with env variable override support\n if (platform) {\n return getPlatformProductionUrl(platform)\n }\n\n // Production: Use Vercel domain if available\n if (process.env.VERCEL_PROJECT_PRODUCTION_URL) {\n return `https://${process.env.VERCEL_PROJECT_PRODUCTION_URL}`\n }\n\n // Production fallback: Use canonical www domain to avoid Google \"Page with redirect\" issue.\n // openmsp.ai redirects to www.openmsp.ai, so we set the base URL to the\n // final destination to ensure canonical URLs do not require a redirect.\n return 'https://www.openmsp.ai'\n}\n"]}