@flamingo-stack/openframe-frontend-core 0.0.234 → 0.0.235
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.
- package/dist/{chunk-DHCGJW3G.js → chunk-2MHQE5ET.js} +8 -6
- package/dist/chunk-2MHQE5ET.js.map +1 -0
- package/dist/{chunk-E6B4B7GM.cjs → chunk-4Y7427BF.cjs} +49 -49
- package/dist/{chunk-E6B4B7GM.cjs.map → chunk-4Y7427BF.cjs.map} +1 -1
- package/dist/chunk-76NMNINV.js +162 -0
- package/dist/chunk-76NMNINV.js.map +1 -0
- package/dist/{chunk-Z46NRJWW.js → chunk-ABSGXVGP.js} +2 -2
- package/dist/chunk-CG6AZ2MC.cjs +162 -0
- package/dist/chunk-CG6AZ2MC.cjs.map +1 -0
- package/dist/{chunk-GSD52WAS.js → chunk-EI36Q3EC.js} +4 -4
- package/dist/{chunk-UYWJM2LS.cjs → chunk-ETFVD7QU.cjs} +12 -12
- package/dist/{chunk-UYWJM2LS.cjs.map → chunk-ETFVD7QU.cjs.map} +1 -1
- package/dist/{chunk-YZDUOUMB.js → chunk-FWYMYXL7.js} +2 -2
- package/dist/{chunk-F6F525T7.js → chunk-GW6J7IPD.js} +2 -2
- package/dist/{chunk-52PRKXK4.cjs → chunk-HJRWBA7M.cjs} +32 -32
- package/dist/{chunk-52PRKXK4.cjs.map → chunk-HJRWBA7M.cjs.map} +1 -1
- package/dist/{chunk-IBSZ27Y7.cjs → chunk-M4CWPAIB.cjs} +7 -7
- package/dist/{chunk-IBSZ27Y7.cjs.map → chunk-M4CWPAIB.cjs.map} +1 -1
- package/dist/{chunk-EO3RG6II.cjs → chunk-MDWFPCHN.cjs} +16 -16
- package/dist/{chunk-EO3RG6II.cjs.map → chunk-MDWFPCHN.cjs.map} +1 -1
- package/dist/{chunk-BOF5MSRY.js → chunk-VO3K4EEG.js} +3 -3
- package/dist/{chunk-MWW7LKDN.cjs → chunk-W4NBBPQL.cjs} +8 -8
- package/dist/{chunk-MWW7LKDN.cjs.map → chunk-W4NBBPQL.cjs.map} +1 -1
- package/dist/{chunk-W7P7RH2X.cjs → chunk-X4SQ2S7Z.cjs} +1275 -1273
- package/dist/chunk-X4SQ2S7Z.cjs.map +1 -0
- package/dist/{chunk-GYRRSOTR.cjs → chunk-X6WUWOL5.cjs} +38 -38
- package/dist/{chunk-GYRRSOTR.cjs.map → chunk-X6WUWOL5.cjs.map} +1 -1
- package/dist/{chunk-LLTUSEHF.js → chunk-Z6FT2JDQ.js} +3 -3
- package/dist/{chunk-D3S2ODUI.js → chunk-ZLQT3T4F.js} +4 -4
- package/dist/components/chat/index.cjs +6 -6
- package/dist/components/chat/index.js +5 -5
- package/dist/components/contact/index.cjs +7 -7
- package/dist/components/contact/index.js +6 -6
- package/dist/components/features/index.cjs +6 -6
- package/dist/components/features/index.js +5 -5
- package/dist/components/icons/index.cjs +3 -3
- package/dist/components/icons/index.js +2 -2
- package/dist/components/index.cjs +236 -236
- package/dist/components/index.js +8 -8
- package/dist/components/navigation/index.cjs +6 -6
- package/dist/components/navigation/index.js +5 -5
- package/dist/components/onboarding-guides/index.cjs +30 -30
- package/dist/components/onboarding-guides/index.js +7 -7
- package/dist/components/resizable.d.ts +1 -1
- package/dist/components/tickets/index.cjs +89 -89
- package/dist/components/tickets/index.js +8 -8
- package/dist/components/ui/file-manager/index.cjs +69 -69
- package/dist/components/ui/file-manager/index.js +2 -2
- package/dist/components/ui/index.cjs +6 -6
- package/dist/components/ui/index.js +5 -5
- package/dist/hooks/index.cjs +4 -4
- package/dist/hooks/index.js +3 -3
- package/dist/index.cjs +6 -6
- package/dist/index.js +5 -5
- package/dist/platform-domains.cjs +127 -0
- package/dist/platform-domains.cjs.map +1 -0
- package/dist/platform-domains.d.ts +75 -0
- package/dist/platform-domains.d.ts.map +1 -0
- package/dist/platform-domains.js +115 -0
- package/dist/platform-domains.js.map +1 -0
- package/dist/types/index.cjs +80 -0
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.js +80 -0
- package/dist/types/index.js.map +1 -1
- package/dist/utils/cn.d.ts +8 -43
- package/dist/utils/cn.d.ts.map +1 -1
- package/dist/utils/index.cjs +106 -72
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +3 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +106 -72
- package/dist/utils/index.js.map +1 -1
- package/package.json +7 -1
- package/src/__tests__/platform-domains.test.ts +137 -0
- package/src/platform-domains.ts +238 -0
- package/src/utils/cn.ts +18 -134
- package/src/utils/index.ts +7 -2
- package/dist/chunk-2TBN53KY.cjs +0 -122
- package/dist/chunk-2TBN53KY.cjs.map +0 -1
- package/dist/chunk-DHCGJW3G.js.map +0 -1
- package/dist/chunk-W7P7RH2X.cjs.map +0 -1
- package/dist/chunk-YICWWZ3Z.js +0 -122
- package/dist/chunk-YICWWZ3Z.js.map +0 -1
- /package/dist/{chunk-Z46NRJWW.js.map → chunk-ABSGXVGP.js.map} +0 -0
- /package/dist/{chunk-GSD52WAS.js.map → chunk-EI36Q3EC.js.map} +0 -0
- /package/dist/{chunk-YZDUOUMB.js.map → chunk-FWYMYXL7.js.map} +0 -0
- /package/dist/{chunk-F6F525T7.js.map → chunk-GW6J7IPD.js.map} +0 -0
- /package/dist/{chunk-BOF5MSRY.js.map → chunk-VO3K4EEG.js.map} +0 -0
- /package/dist/{chunk-LLTUSEHF.js.map → chunk-Z6FT2JDQ.js.map} +0 -0
- /package/dist/{chunk-D3S2ODUI.js.map → chunk-ZLQT3T4F.js.map} +0 -0
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
export { cn
|
|
1
|
+
export { cn } from './cn';
|
|
2
|
+
export { getPlatformProductionUrl, getAllPlatformBaseDomains } from '../platform-domains';
|
|
2
3
|
export { formatDate, formatNumber, formatPrice, formatBytes } from './format';
|
|
3
4
|
export { PLAY_ICON_PATH } from '../components/icons-v2-generated/media-playback/play-icon';
|
|
4
5
|
export { getPlatformAccentColor, getCurrentPlatform, type ColorCategory, HEX_PATTERN } from './ods-color-utils';
|
|
5
6
|
export { delay, generateRandomString, truncateString, deepClone, getSlackCommunityJoinUrl } from './common';
|
|
6
|
-
export { getBaseUrl
|
|
7
|
+
export { getBaseUrl } from '../utils/cn';
|
|
7
8
|
export * from './platform-config';
|
|
8
9
|
export * from './os-platforms';
|
|
9
10
|
export * from './access-code-client';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,yBAAyB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/index.js
CHANGED
|
@@ -6,52 +6,86 @@ import { Youtube, Video, Users, Twitter, TrendingUp, TableProperties, Star, Shie
|
|
|
6
6
|
import { isValidPhoneNumber, parsePhoneNumber, getCountryCallingCode, getCountries } from 'libphonenumber-js';
|
|
7
7
|
|
|
8
8
|
// src/utils/cn.ts
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
|
|
10
|
+
// src/platform-domains.ts
|
|
11
|
+
var PLATFORM_DOMAINS = [
|
|
12
|
+
{ key: "marketing-hub", defaultUrl: "https://marketing-hub.flamingo.so", envVar: "NEXT_PUBLIC_MARKETING_HUB_URL" },
|
|
13
|
+
{ key: "company-hub", defaultUrl: "https://company-hub.flamingo.so", envVar: "NEXT_PUBLIC_COMPANY_HUB_URL" },
|
|
14
|
+
{ key: "product-hub", defaultUrl: "https://product-hub.flamingo.so", envVar: "NEXT_PUBLIC_PRODUCT_HUB_URL" },
|
|
15
|
+
{ key: "revenue-hub", defaultUrl: "https://revenue-hub.flamingo.so", envVar: "NEXT_PUBLIC_REVENUE_HUB_URL" },
|
|
16
|
+
{ key: "people-hub", defaultUrl: "https://people-hub.flamingo.so", envVar: "NEXT_PUBLIC_PEOPLE_HUB_URL" },
|
|
17
|
+
{ key: "openmsp", defaultUrl: "https://www.openmsp.ai", envVar: "NEXT_PUBLIC_OPENMSP_URL" },
|
|
18
|
+
// ORDERING INVARIANT (first-wins, load-bearing): `flamingo` MUST precede `flamingo-teaser` + `universal`.
|
|
19
|
+
// All three resolve to www.flamingo.run; the reverse index is first-wins → flamingo claims the shared host,
|
|
20
|
+
// teaser keeps only its unique flamingo.cx aliases, universal contributes no unique host.
|
|
21
|
+
// ⚠️ DO NOT REORDER — enforced by the module-load self-check at the bottom of this file.
|
|
22
|
+
{ key: "flamingo", defaultUrl: "https://www.flamingo.run", envVar: "NEXT_PUBLIC_FLAMINGO_URL" },
|
|
23
|
+
{ key: "tmcg", defaultUrl: "https://www.tmcg.miami", envVar: "NEXT_PUBLIC_TMCG_URL" },
|
|
24
|
+
{ key: "flamingo-teaser", defaultUrl: "https://www.flamingo.run", envVar: "NEXT_PUBLIC_FLAMINGO_URL", aliasHostnames: ["flamingo.cx", "www.flamingo.cx"] },
|
|
25
|
+
{ key: "openframe", defaultUrl: "https://openframe.ai", envVar: "NEXT_PUBLIC_OPENFRAME_URL", aliasHostnames: ["openframe.ai", "www.openframe.ai", "hub.openframe.ai"] },
|
|
26
|
+
{ key: "openframe-dashboard", defaultUrl: "https://openframe.ai", envVar: "NEXT_PUBLIC_OPENFRAME_DASHBOARD_URL", pseudo: true },
|
|
27
|
+
{ key: "universal", defaultUrl: "https://www.flamingo.run", envVar: "NEXT_PUBLIC_FLAMINGO_URL" }
|
|
28
|
+
];
|
|
29
|
+
var ENV_OVERRIDES = {
|
|
30
|
+
NEXT_PUBLIC_MARKETING_HUB_URL: process.env.NEXT_PUBLIC_MARKETING_HUB_URL,
|
|
31
|
+
NEXT_PUBLIC_COMPANY_HUB_URL: process.env.NEXT_PUBLIC_COMPANY_HUB_URL,
|
|
32
|
+
NEXT_PUBLIC_PRODUCT_HUB_URL: process.env.NEXT_PUBLIC_PRODUCT_HUB_URL,
|
|
33
|
+
NEXT_PUBLIC_REVENUE_HUB_URL: process.env.NEXT_PUBLIC_REVENUE_HUB_URL,
|
|
34
|
+
NEXT_PUBLIC_PEOPLE_HUB_URL: process.env.NEXT_PUBLIC_PEOPLE_HUB_URL,
|
|
35
|
+
NEXT_PUBLIC_OPENMSP_URL: process.env.NEXT_PUBLIC_OPENMSP_URL,
|
|
36
|
+
NEXT_PUBLIC_FLAMINGO_URL: process.env.NEXT_PUBLIC_FLAMINGO_URL,
|
|
37
|
+
NEXT_PUBLIC_TMCG_URL: process.env.NEXT_PUBLIC_TMCG_URL,
|
|
38
|
+
NEXT_PUBLIC_OPENFRAME_URL: process.env.NEXT_PUBLIC_OPENFRAME_URL,
|
|
39
|
+
NEXT_PUBLIC_OPENFRAME_DASHBOARD_URL: process.env.NEXT_PUBLIC_OPENFRAME_DASHBOARD_URL
|
|
40
|
+
};
|
|
41
|
+
function byKey(key) {
|
|
42
|
+
return PLATFORM_DOMAINS.find((e) => e.key === key);
|
|
43
|
+
}
|
|
44
|
+
function envOverrideFor(key) {
|
|
45
|
+
const envVar = byKey(key)?.envVar;
|
|
46
|
+
if (!envVar) return null;
|
|
47
|
+
return ENV_OVERRIDES[envVar] || null;
|
|
18
48
|
}
|
|
19
49
|
function getPlatformProductionUrl(platform) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
return envOverrideFor(platform) ?? byKey(platform)?.defaultUrl ?? envOverrideFor("flamingo") ?? "https://www.flamingo.run";
|
|
51
|
+
}
|
|
52
|
+
function hostOf(value) {
|
|
53
|
+
if (!value) return null;
|
|
54
|
+
try {
|
|
55
|
+
return new URL(value).hostname.toLowerCase();
|
|
56
|
+
} catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function expandWwwApex(host) {
|
|
61
|
+
if (host.startsWith("www.")) return [host, host.slice(4)];
|
|
62
|
+
if (host.split(".").length === 2) return [host, `www.${host}`];
|
|
63
|
+
return [host];
|
|
64
|
+
}
|
|
65
|
+
function toRegistrableBaseDomain(host) {
|
|
66
|
+
const parts = host.split(".");
|
|
67
|
+
if (parts.length >= 2) return parts.slice(-2).join(".");
|
|
68
|
+
return void 0;
|
|
69
|
+
}
|
|
70
|
+
function aliasHostsOf(key) {
|
|
71
|
+
return byKey(key)?.aliasHostnames ?? [];
|
|
72
|
+
}
|
|
73
|
+
function hostsForEntry(entry, opts) {
|
|
74
|
+
const resolved = hostOf(getPlatformProductionUrl(entry.key));
|
|
75
|
+
const hosts = resolved ? expandWwwApex(resolved) : [];
|
|
76
|
+
hosts.push(...aliasHostsOf(entry.key));
|
|
77
|
+
return hosts;
|
|
78
|
+
}
|
|
79
|
+
function getPlatformByHostname(hostname) {
|
|
80
|
+
const host = hostname.toLowerCase();
|
|
81
|
+
for (const entry of PLATFORM_DOMAINS) {
|
|
82
|
+
if (entry.pseudo) continue;
|
|
83
|
+
if (hostsForEntry(entry).includes(host)) return entry.key;
|
|
54
84
|
}
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
function isPreviewHost(hostname) {
|
|
88
|
+
return hostname.endsWith(".vercel.app");
|
|
55
89
|
}
|
|
56
90
|
function getAllPlatformBaseDomains() {
|
|
57
91
|
if (typeof window === "undefined") return [];
|
|
@@ -59,40 +93,40 @@ function getAllPlatformBaseDomains() {
|
|
|
59
93
|
if (hostname === "localhost" || hostname === "127.0.0.1" || hostname.startsWith("127.")) {
|
|
60
94
|
return [];
|
|
61
95
|
}
|
|
62
|
-
const
|
|
63
|
-
if (
|
|
96
|
+
const previewEnv = process.env.VERCEL_ENV === "preview" || process.env.NEXT_PUBLIC_VERCEL_ENV === "preview" || isPreviewHost(hostname);
|
|
97
|
+
if (previewEnv) {
|
|
64
98
|
return [".vercel.app", "vercel.app"];
|
|
65
99
|
}
|
|
66
|
-
const platformIdentifiers = [
|
|
67
|
-
"marketing-hub",
|
|
68
|
-
"company-hub",
|
|
69
|
-
"product-hub",
|
|
70
|
-
"revenue-hub",
|
|
71
|
-
"people-hub",
|
|
72
|
-
"openmsp",
|
|
73
|
-
"flamingo",
|
|
74
|
-
"tmcg",
|
|
75
|
-
"flamingo-teaser",
|
|
76
|
-
"openframe",
|
|
77
|
-
"universal"
|
|
78
|
-
];
|
|
79
100
|
const baseDomains = /* @__PURE__ */ new Set();
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
baseDomains.add(baseDomain);
|
|
89
|
-
}
|
|
90
|
-
} catch (error) {
|
|
91
|
-
console.warn("[Platform Domains] Failed to parse URL for platform:", platform, error);
|
|
101
|
+
for (const entry of PLATFORM_DOMAINS) {
|
|
102
|
+
if (entry.pseudo) continue;
|
|
103
|
+
const host = hostOf(getPlatformProductionUrl(entry.key));
|
|
104
|
+
if (!host) continue;
|
|
105
|
+
const base = toRegistrableBaseDomain(host);
|
|
106
|
+
if (base) {
|
|
107
|
+
baseDomains.add(`.${base}`);
|
|
108
|
+
baseDomains.add(base);
|
|
92
109
|
}
|
|
93
|
-
}
|
|
110
|
+
}
|
|
94
111
|
return Array.from(baseDomains);
|
|
95
112
|
}
|
|
113
|
+
if (getPlatformByHostname("www.flamingo.run") !== "flamingo" || getPlatformByHostname("flamingo.cx") !== "flamingo-teaser" || getPlatformByHostname("hub.openframe.ai") !== "openframe") {
|
|
114
|
+
console.error(
|
|
115
|
+
"[platform-domains] \u26A0\uFE0F PLATFORM_DOMAINS ordering invariant violated \u2014 `flamingo` must precede `flamingo-teaser`/`universal`, and the openframe aliases must be intact. Do not reorder the table."
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// src/utils/cn.ts
|
|
120
|
+
var twMerge = extendTailwindMerge({
|
|
121
|
+
extend: {
|
|
122
|
+
classGroups: {
|
|
123
|
+
"ods-typography": ["text-h1", "text-h2", "text-h3", "text-h4", "text-h5", "text-h6"]
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
function cn(...inputs) {
|
|
128
|
+
return twMerge(clsx(inputs));
|
|
129
|
+
}
|
|
96
130
|
function getBaseUrl(platform) {
|
|
97
131
|
if (process.env.NODE_ENV !== "production") {
|
|
98
132
|
return process.env.NEXT_PUBLIC_DEV_URL || "http://localhost:3000";
|
|
@@ -103,7 +137,7 @@ function getBaseUrl(platform) {
|
|
|
103
137
|
if (process.env.VERCEL_PROJECT_PRODUCTION_URL) {
|
|
104
138
|
return `https://${process.env.VERCEL_PROJECT_PRODUCTION_URL}`;
|
|
105
139
|
}
|
|
106
|
-
return
|
|
140
|
+
return getPlatformProductionUrl(process.env.NEXT_PUBLIC_APP_TYPE || "openmsp");
|
|
107
141
|
}
|
|
108
142
|
|
|
109
143
|
// src/utils/format.ts
|