@flamingo-stack/openframe-frontend-core 0.0.719 → 0.0.721
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/assets/index.cjs +6 -0
- package/dist/assets/index.d.ts +1 -0
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js +5 -1
- package/dist/assets/mobile-app-qr.d.ts +17 -0
- package/dist/assets/mobile-app-qr.d.ts.map +1 -0
- package/dist/{chunk-2JLP2X2M.js → chunk-2P2M27EW.js} +2396 -2369
- package/dist/{chunk-IWCPXJEE.js → chunk-2TXGR7IK.js} +138 -63
- package/dist/{chunk-FVQJBII6.js → chunk-3LY7V3RF.js} +3 -3
- package/dist/{chunk-HCFNEKO3.cjs → chunk-3R32ZNA2.cjs} +46 -46
- package/dist/{chunk-WSDT7LYL.js → chunk-3UBWDR65.js} +1 -1
- package/dist/{chunk-NZ5BHDFZ.js → chunk-44Q6MV7C.js} +2 -2
- package/dist/{chunk-CMZ3QTFQ.js → chunk-4I3K6LEH.js} +24 -0
- package/dist/{chunk-ZXCZYMN4.cjs → chunk-4LY6R4TN.cjs} +137 -62
- package/dist/{chunk-EAHOB64X.js → chunk-57UTI7ZH.js} +106 -42
- package/dist/{chunk-XGHGGBM3.js → chunk-5QXE5HMV.js} +4 -4
- package/dist/{chunk-NYWESHOQ.cjs → chunk-6AJIOW3S.cjs} +57 -57
- package/dist/{chunk-4QFWGLZO.js → chunk-6YBUQAOH.js} +1 -1
- package/dist/{chunk-JHQ334WS.js → chunk-742BGXNX.js} +2 -0
- package/dist/{chunk-D6PMVWDI.js → chunk-74N742ZG.js} +6 -6
- package/dist/{chunk-AECTRMGQ.cjs → chunk-7GRPR7XA.cjs} +13 -1
- package/dist/{chunk-4HJRHEXD.cjs → chunk-7Z5FMQYR.cjs} +22 -22
- package/dist/chunk-AFTRPEXO.js +13 -0
- package/dist/{chunk-WBNAEYTQ.cjs → chunk-BYUIFT7Q.cjs} +6 -6
- package/dist/{chunk-LCLDFMDF.cjs → chunk-BYVVE7HP.cjs} +58 -58
- package/dist/{chunk-JPD4NXH6.js → chunk-CO3FOZIH.js} +1 -1
- package/dist/{chunk-E7YCPY7K.cjs → chunk-D2DH6VZL.cjs} +3 -3
- package/dist/{chunk-HWVUR735.cjs → chunk-DFM572VH.cjs} +2 -2
- package/dist/{chunk-YDPKUAP4.js → chunk-DJ4IFQNQ.js} +2 -0
- package/dist/{chunk-5U3KWQXP.js → chunk-E6SMMMKV.js} +13 -13
- package/dist/chunk-EWPR7662.cjs +13 -0
- package/dist/{chunk-SWAVO7BB.cjs → chunk-F7ORKKEF.cjs} +108 -108
- package/dist/{chunk-AGVXKD4K.js → chunk-FSQQZFVG.js} +12 -0
- package/dist/{chunk-ETYLOZOB.cjs → chunk-GCK75D7F.cjs} +109 -22
- package/dist/{chunk-ZKNZ2CXW.cjs → chunk-GGBYZKMS.cjs} +11 -11
- package/dist/{chunk-Y4MB25KW.js → chunk-GYAXV3MZ.js} +3 -3
- package/dist/{chunk-UWQWMGJ7.cjs → chunk-HJMSNOBT.cjs} +1040 -696
- package/dist/{chunk-DFQYAYBH.cjs → chunk-HQIOMFJH.cjs} +2 -0
- package/dist/{chunk-JH2SIWPQ.js → chunk-HXB7SEYG.js} +1611 -1267
- package/dist/{chunk-LE5WKGJV.cjs → chunk-I2254QN6.cjs} +16 -16
- package/dist/{chunk-PSVSEN4J.cjs → chunk-IMTY3GRR.cjs} +2 -0
- package/dist/{chunk-ILNN6QRW.js → chunk-JDBZ4ZHU.js} +3 -3
- package/dist/{chunk-GQ7JJUIT.cjs → chunk-K2JUJ37D.cjs} +25 -1
- package/dist/{chunk-6YPTUHM7.js → chunk-K76ACBR3.js} +3 -3
- package/dist/{chunk-2NASBO7O.js → chunk-KFOAV77K.js} +2 -2
- package/dist/{chunk-CU6NWO2M.js → chunk-LAXKEBDD.js} +14 -18
- package/dist/{chunk-5YAGX5DY.js → chunk-LGKMR7NZ.js} +7 -7
- package/dist/{chunk-E2V2EH2G.cjs → chunk-LODMNSQY.cjs} +16 -16
- package/dist/{chunk-4D6NMPOO.js → chunk-NJ5TBTJG.js} +7 -7
- package/dist/{chunk-TDZ76NCB.cjs → chunk-NMPVK53I.cjs} +29 -29
- package/dist/{chunk-TTVOLEUS.js → chunk-NPSJE7J3.js} +90 -3
- package/dist/{chunk-H5VIMBRN.cjs → chunk-O5EHOJZD.cjs} +4 -4
- package/dist/{chunk-KT3U3ZRP.cjs → chunk-OKE5BIQH.cjs} +8 -8
- package/dist/{chunk-DC4RTYWK.cjs → chunk-QLTXT562.cjs} +5 -5
- package/dist/{chunk-H5V7GRN5.js → chunk-QQCFPMAA.js} +5 -7
- package/dist/{chunk-7BREFV7G.cjs → chunk-QYS4YVEP.cjs} +34 -36
- package/dist/{chunk-7BCY77W6.js → chunk-RCI3PALX.js} +8 -10
- package/dist/{chunk-P3JMAMHP.js → chunk-REETLEL5.js} +1 -1
- package/dist/{chunk-4JIGEK7C.cjs → chunk-RJMWJAJO.cjs} +97 -33
- package/dist/{chunk-WS7WRR5Z.cjs → chunk-RQZQHLNS.cjs} +86 -90
- package/dist/{chunk-FFT56TYB.cjs → chunk-RUZIICXT.cjs} +2 -2
- package/dist/{chunk-AJHSQ5XK.js → chunk-S63QBBT7.js} +6 -6
- package/dist/{chunk-TELAANY6.js → chunk-UXU7Y5BH.js} +2 -2
- package/dist/{chunk-NQVS4G7G.cjs → chunk-UZTOI6FJ.cjs} +773 -746
- package/dist/{chunk-DFEPUYTF.cjs → chunk-VFICDEYJ.cjs} +45 -47
- package/dist/{chunk-LOZLHG2U.cjs → chunk-XE2K53GH.cjs} +20 -20
- package/dist/{chunk-QBCDSTLE.cjs → chunk-XXO52RZR.cjs} +26 -26
- package/dist/{chunk-TTEFN6VO.js → chunk-ZLUFEWZZ.js} +10 -10
- package/dist/{chunk-MA4Q5RBP.cjs → chunk-ZSOFLPQN.cjs} +9 -9
- package/dist/{chunk-KBJJQFYU.js → chunk-ZZEKXGFS.js} +2 -2
- package/dist/{cloud-tenants-FBUO66GW.cjs → cloud-tenants-HZHKRUIW.cjs} +16 -16
- package/dist/{cloud-tenants-DNBPNQNP.js → cloud-tenants-Q4TCJS5Y.js} +15 -15
- package/dist/components/calendar.cjs +4 -4
- package/dist/components/calendar.js +1 -1
- package/dist/components/case-studies/index.cjs +30 -30
- package/dist/components/case-studies/index.js +16 -16
- package/dist/components/chat/ask-prompts.d.ts +10 -2
- package/dist/components/chat/ask-prompts.d.ts.map +1 -1
- package/dist/components/chat/assistant-ask-prompts.d.ts +27 -0
- package/dist/components/chat/assistant-ask-prompts.d.ts.map +1 -0
- package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
- package/dist/components/chat/hooks/index.d.ts +1 -0
- package/dist/components/chat/hooks/index.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-ask-prompts.d.ts +63 -0
- package/dist/components/chat/hooks/use-ask-prompts.d.ts.map +1 -0
- package/dist/components/chat/index.cjs +27 -10
- package/dist/components/chat/index.d.ts +1 -0
- package/dist/components/chat/index.d.ts.map +1 -1
- package/dist/components/chat/index.js +26 -9
- package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +17 -17
- package/dist/components/contact/index.js +16 -16
- package/dist/components/docs/index.cjs +20 -20
- package/dist/components/docs/index.js +19 -19
- package/dist/components/embeds/index.cjs +17 -17
- package/dist/components/embeds/index.js +16 -16
- package/dist/components/faq/faq-ask-card.d.ts +44 -0
- package/dist/components/faq/faq-ask-card.d.ts.map +1 -0
- package/dist/components/faq/faq-document-page.d.ts +5 -1
- package/dist/components/faq/faq-document-page.d.ts.map +1 -1
- package/dist/components/faq/faq-section.d.ts +18 -5
- package/dist/components/faq/faq-section.d.ts.map +1 -1
- package/dist/components/faq/index.cjs +19 -18
- package/dist/components/faq/index.d.ts +1 -0
- package/dist/components/faq/index.d.ts.map +1 -1
- package/dist/components/faq/index.js +18 -17
- package/dist/components/features/auth/auth-benefits-panel.d.ts.map +1 -1
- package/dist/components/features/index.cjs +16 -16
- package/dist/components/features/index.js +15 -15
- package/dist/components/help-center-pages/download-apps-page.d.ts +55 -0
- package/dist/components/help-center-pages/download-apps-page.d.ts.map +1 -0
- package/dist/components/help-center-pages/index.cjs +333 -119
- package/dist/components/help-center-pages/index.d.ts +1 -0
- package/dist/components/help-center-pages/index.d.ts.map +1 -1
- package/dist/components/help-center-pages/index.js +251 -37
- package/dist/components/help-center-pages/trust-center-page.d.ts +4 -1
- package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
- package/dist/components/index.cjs +131 -217
- package/dist/components/index.js +236 -322
- package/dist/components/meeting-scheduler/index.cjs +61 -62
- package/dist/components/meeting-scheduler/index.js +18 -19
- package/dist/components/navigation/index.cjs +19 -19
- package/dist/components/navigation/index.js +18 -18
- package/dist/components/navigation/mingo-ai-button.d.ts +1 -1
- package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
- package/dist/components/onboarding-guides/index.cjs +19 -20
- package/dist/components/onboarding-guides/index.js +18 -19
- package/dist/components/product-demo/index.cjs +8 -8
- package/dist/components/product-demo/index.js +8 -8
- package/dist/components/related-content/index.cjs +7 -9
- package/dist/components/related-content/index.js +6 -8
- package/dist/components/tickets/index.cjs +21 -21
- package/dist/components/tickets/index.js +20 -20
- package/dist/components/ui/button/button.d.ts.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +11 -11
- package/dist/components/ui/file-manager/index.js +1 -1
- package/dist/components/ui/index.cjs +34 -16
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +33 -15
- package/dist/components/ui/mobile-app-qr.d.ts +23 -0
- package/dist/components/ui/mobile-app-qr.d.ts.map +1 -0
- package/dist/components/ui/store-badges.d.ts +7 -4
- package/dist/components/ui/store-badges.d.ts.map +1 -1
- package/dist/contexts/assistant-runtime-context.d.ts +74 -0
- package/dist/contexts/assistant-runtime-context.d.ts.map +1 -0
- package/dist/contexts/index.cjs +7 -1
- package/dist/contexts/index.d.ts +1 -0
- package/dist/contexts/index.d.ts.map +1 -1
- package/dist/contexts/index.js +6 -0
- package/dist/{devices-5A5TY4JD.cjs → devices-6XHUFIC6.cjs} +17 -17
- package/dist/{devices-PLDAEUSL.js → devices-NOUGVTES.js} +15 -15
- package/dist/hooks/index.cjs +10 -5
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +9 -4
- package/dist/hooks/use-downloads.d.ts +41 -0
- package/dist/hooks/use-downloads.d.ts.map +1 -0
- package/dist/index.cjs +80 -20
- package/dist/index.js +79 -19
- package/dist/{knowledge-G6Q5KRWV.js → knowledge-2YTUXQ2Z.js} +15 -15
- package/dist/{knowledge-FKTJ723Z.cjs → knowledge-ANEKPMO2.cjs} +17 -17
- package/dist/{logs-CJCXUBU6.cjs → logs-U3IB3HUM.cjs} +25 -25
- package/dist/{logs-QMV6XIC4.js → logs-WVQIONUT.js} +15 -15
- package/dist/{policies-G6D7AX6F.js → policies-66EGDW2H.js} +15 -15
- package/dist/{policies-QMRTK3CY.cjs → policies-UFRN2EQF.cjs} +20 -20
- package/dist/{remote-session-DBD6OSTX.js → remote-session-6WEUJZDC.js} +5 -5
- package/dist/{remote-session-2JVI7RVA.cjs → remote-session-A75X5NPC.cjs} +7 -7
- package/dist/{software-update-PNZMRDBT.cjs → software-update-2MHKL76D.cjs} +20 -20
- package/dist/{software-update-6BQM6BKH.js → software-update-3ZD3MXF3.js} +15 -15
- package/dist/{tickets-board-BHLPAVNJ.cjs → tickets-board-IFWMIZ35.cjs} +9 -9
- package/dist/{tickets-board-PYDNELSK.js → tickets-board-MYXG3V72.js} +4 -4
- package/dist/types/downloads.d.ts +67 -0
- package/dist/types/downloads.d.ts.map +1 -0
- package/dist/types/index.cjs +24 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +16 -1
- package/dist/utils/index.cjs +46 -2
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +40 -3
- package/dist/utils/list-url.d.ts.map +1 -1
- package/dist/utils/mobile-app.cjs +46 -0
- package/dist/utils/mobile-app.d.ts +40 -0
- package/dist/utils/mobile-app.d.ts.map +1 -0
- package/dist/utils/mobile-app.js +40 -0
- package/dist/utils/source-icons.d.ts.map +1 -1
- package/dist/utils/trial.d.ts +18 -0
- package/dist/utils/trial.d.ts.map +1 -0
- package/package.json +7 -1
- package/src/assets/index.ts +1 -0
- package/src/assets/mobile-app-qr.ts +19 -0
- package/src/components/chat/ask-prompts.tsx +25 -3
- package/src/components/chat/assistant-ask-prompts.tsx +78 -0
- package/src/components/chat/entity-cards/dispatch.tsx +38 -4
- package/src/components/chat/hooks/index.ts +12 -0
- package/src/components/chat/hooks/use-ask-prompts.ts +188 -0
- package/src/components/chat/index.ts +1 -0
- package/src/components/chat/utils/icon-library.tsx +6 -0
- package/src/components/faq/faq-ask-card.tsx +115 -0
- package/src/components/faq/faq-document-page.tsx +6 -1
- package/src/components/faq/faq-section.tsx +27 -5
- package/src/components/faq/index.ts +1 -0
- package/src/components/features/auth/auth-benefits-panel.tsx +5 -4
- package/src/components/help-center-pages/download-apps-page.tsx +364 -0
- package/src/components/help-center-pages/index.ts +1 -0
- package/src/components/help-center-pages/trust-center-page.tsx +5 -2
- package/src/components/navigation/mingo-ai-button.tsx +27 -6
- package/src/components/ui/button/button.tsx +3 -0
- package/src/components/ui/index.ts +1 -0
- package/src/components/ui/mobile-app-qr.tsx +40 -0
- package/src/components/ui/store-badges.tsx +17 -9
- package/src/contexts/assistant-runtime-context.tsx +84 -0
- package/src/contexts/index.ts +9 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/use-downloads.ts +138 -0
- package/src/types/downloads.ts +82 -0
- package/src/types/index.ts +1 -0
- package/src/utils/index.ts +3 -0
- package/src/utils/list-url.ts +4 -0
- package/src/utils/mobile-app.ts +57 -0
- package/src/utils/source-icons.ts +10 -2
- package/src/utils/trial.ts +19 -0
- package/dist/chunk-6X3O67OL.cjs +0 -89
- package/dist/chunk-AUMKE74M.cjs +0 -16
- package/dist/chunk-G3GRYDMS.js +0 -16
- package/dist/chunk-RR6PY34K.js +0 -89
package/dist/types/index.js
CHANGED
|
@@ -138,6 +138,21 @@ function trustCenterControlsUrl(endpoint, params = {}) {
|
|
|
138
138
|
return `${path}/controls${qs ? `?${qs}` : ""}`;
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
+
// src/types/downloads.ts
|
|
142
|
+
var DOWNLOADS_API_PATH = "/api/downloads";
|
|
143
|
+
var DOWNLOADS_CACHE_SECONDS = 300;
|
|
144
|
+
var DOWNLOADS_TITLE = "Download OpenFrame";
|
|
145
|
+
var DOWNLOADS_TAGLINE = "Install it on the computer you manage IT from, and on your phone. One account everywhere.";
|
|
146
|
+
var DOWNLOADS_MOBILE_TITLE = "Get the OpenFrame app";
|
|
147
|
+
var DOWNLOADS_MOBILE_TAGLINE = "Alerts and tickets on your phone, signed in with the account you already have.";
|
|
148
|
+
var APP_DOWNLOAD_KINDS = ["binary", "command"];
|
|
149
|
+
var DESKTOP_OS_LABELS = { mac: "Mac", windows: "Windows", linux: "Linux" };
|
|
150
|
+
var DOWNLOAD_ARCHITECTURE_LABELS = {
|
|
151
|
+
universal: "Apple Silicon and Intel",
|
|
152
|
+
x64: "x64",
|
|
153
|
+
arm64: "ARM"
|
|
154
|
+
};
|
|
155
|
+
|
|
141
156
|
// src/types/tool.types.ts
|
|
142
157
|
var ToolTypeValues = {
|
|
143
158
|
FLEET_MDM: "FLEET_MDM",
|
|
@@ -511,4 +526,4 @@ var TMCG_ROLE_DISPLAY_NAMES = {
|
|
|
511
526
|
[TMCG_ROLES.MENTOR]: "Mentor"
|
|
512
527
|
};
|
|
513
528
|
|
|
514
|
-
export { ANNOUNCEMENT_CTA_DEFAULTS, AVAILABLE_SVG_ICONS, ENTITY_QUOTES_TITLE, OSTypeValues, OS_TYPES, SEMVER_REGEX, SHELL_TYPES, ShellTypeValues, TASK_TYPE_LABELS, TASK_TYPE_TEXT_COLORS, TMCG_ROLES, TMCG_ROLE_DISPLAY_NAMES, TRUST_CENTER_API_PATH, TRUST_CENTER_CACHE_SECONDS, TRUST_CENTER_CARD_ID, TRUST_CENTER_DOCUMENT_CACHE_SECONDS, TRUST_CENTER_DOCUMENT_TYPE, TRUST_CENTER_DOMAIN_PARAM, TRUST_CENTER_PAGE_PATH, TRUST_CENTER_SEARCH_DEBOUNCE_MS, TRUST_CENTER_SEARCH_MAX_CHARS, TRUST_CENTER_SEARCH_PARAM, TRUST_CENTER_SECTIONS, TRUST_CENTER_TAGLINE, TRUST_CENTER_TITLE, TRUST_FRAMEWORK_MONITORING, ToolTypeValues, changelogLabels, filterTrustControlDomains, isTrustCenterMonitored, normalizeTrustControlQuery, osLabels, releaseStatusOptions, releaseTypeOptions, shellLabels, toolLabels, trustCenterControlsUrl, trustCenterDocumentUrl, trustControlQueryMatcher, trustFrameworkBadge, trustFrameworkMonitoringEntry, trustFrameworksSummary };
|
|
529
|
+
export { ANNOUNCEMENT_CTA_DEFAULTS, APP_DOWNLOAD_KINDS, AVAILABLE_SVG_ICONS, DESKTOP_OS_LABELS, DOWNLOADS_API_PATH, DOWNLOADS_CACHE_SECONDS, DOWNLOADS_MOBILE_TAGLINE, DOWNLOADS_MOBILE_TITLE, DOWNLOADS_TAGLINE, DOWNLOADS_TITLE, DOWNLOAD_ARCHITECTURE_LABELS, ENTITY_QUOTES_TITLE, OSTypeValues, OS_TYPES, SEMVER_REGEX, SHELL_TYPES, ShellTypeValues, TASK_TYPE_LABELS, TASK_TYPE_TEXT_COLORS, TMCG_ROLES, TMCG_ROLE_DISPLAY_NAMES, TRUST_CENTER_API_PATH, TRUST_CENTER_CACHE_SECONDS, TRUST_CENTER_CARD_ID, TRUST_CENTER_DOCUMENT_CACHE_SECONDS, TRUST_CENTER_DOCUMENT_TYPE, TRUST_CENTER_DOMAIN_PARAM, TRUST_CENTER_PAGE_PATH, TRUST_CENTER_SEARCH_DEBOUNCE_MS, TRUST_CENTER_SEARCH_MAX_CHARS, TRUST_CENTER_SEARCH_PARAM, TRUST_CENTER_SECTIONS, TRUST_CENTER_TAGLINE, TRUST_CENTER_TITLE, TRUST_FRAMEWORK_MONITORING, ToolTypeValues, changelogLabels, filterTrustControlDomains, isTrustCenterMonitored, normalizeTrustControlQuery, osLabels, releaseStatusOptions, releaseTypeOptions, shellLabels, toolLabels, trustCenterControlsUrl, trustCenterDocumentUrl, trustControlQueryMatcher, trustFrameworkBadge, trustFrameworkMonitoringEntry, trustFrameworksSummary };
|
package/dist/utils/index.cjs
CHANGED
|
@@ -654,6 +654,16 @@ function formatWebinarTimeMeta(at, opts) {
|
|
|
654
654
|
const time = formatProgramTimeRange(at, { startAt: opts.startAt, withZoneLabel: opts.withZoneLabel });
|
|
655
655
|
return [time, duration].filter(Boolean).join(" \xB7 ");
|
|
656
656
|
}
|
|
657
|
+
|
|
658
|
+
// src/utils/trial.ts
|
|
659
|
+
var TRIAL_DAYS = 14;
|
|
660
|
+
var TRIAL_LABELS = {
|
|
661
|
+
/** "14 day free trial" */
|
|
662
|
+
length: `${TRIAL_DAYS} day free trial`,
|
|
663
|
+
noCard: "No card required",
|
|
664
|
+
cancel: "Cancel Anytime",
|
|
665
|
+
noContract: "No Contract"
|
|
666
|
+
};
|
|
657
667
|
var PLAY_ICON_PATH = "M4.875 5.006c0-2.501 2.793-3.989 4.87-2.592l9.78 6.578c2.135 1.437 2.135 4.58 0 6.016l-9.78 6.579c-2.077 1.396-4.87-.091-4.87-2.593zm2.25 13.988c0 .7.783 1.118 1.364.727l9.78-6.58c.81-.545.81-1.738 0-2.283L8.488 4.28a.875.875 0 0 0-1.364.726v13.988Z";
|
|
658
668
|
|
|
659
669
|
// src/utils/color-analysis.ts
|
|
@@ -2870,6 +2880,21 @@ function usesCommandKey(os) {
|
|
|
2870
2880
|
function shortcutLabel(os, key) {
|
|
2871
2881
|
return usesCommandKey(os) ? `\u2318${key}` : `Ctrl ${key}`;
|
|
2872
2882
|
}
|
|
2883
|
+
|
|
2884
|
+
// src/utils/mobile-app.ts
|
|
2885
|
+
var DOWNLOAD_PAGE_PATH = "/download";
|
|
2886
|
+
var DOWNLOAD_PAGE_STORE_PARAM = "store";
|
|
2887
|
+
var MOBILE_APP_INSTALL_URL = `https://www.flamingo.run${DOWNLOAD_PAGE_PATH}?${DOWNLOAD_PAGE_STORE_PARAM}=1`;
|
|
2888
|
+
var MOBILE_APP_INSTALL_HOST_PATH = MOBILE_APP_INSTALL_URL.replace(/^https:\/\/(www\.)?/, "").replace(
|
|
2889
|
+
/\?.*$/,
|
|
2890
|
+
""
|
|
2891
|
+
);
|
|
2892
|
+
function resolveMobileStoreUrl(links, userAgent, maxTouchPoints) {
|
|
2893
|
+
const os = detectVisitorOs(userAgent, { maxTouchPoints });
|
|
2894
|
+
if (os === "ios") return links.appStoreUrl;
|
|
2895
|
+
if (os === "android") return links.googlePlayUrl;
|
|
2896
|
+
return null;
|
|
2897
|
+
}
|
|
2873
2898
|
var PRIORITY_CODES = ["US", "CA", "GB", "AU"];
|
|
2874
2899
|
var COUNTRY_NAME_ALIASES = {
|
|
2875
2900
|
// United States
|
|
@@ -3487,8 +3512,12 @@ var SOURCE_ICON_NAMES = {
|
|
|
3487
3512
|
"audience-msp": "hierarchy-02",
|
|
3488
3513
|
"audience-mssp": "shield-lock",
|
|
3489
3514
|
"audience-it-team": "buildings",
|
|
3490
|
-
// Trust (single-record live source over the public Vanta projection)
|
|
3491
|
-
"trust-center": "shield",
|
|
3515
|
+
// Trust (single-record live source over the public Vanta projection): the icon its menu entry draws
|
|
3516
|
+
"trust-center": "shield-check",
|
|
3517
|
+
// The public website's own pages (live source): the site's own mark, as a glyph in the slot's colour
|
|
3518
|
+
"website-pages": "flamingo-logo-grey",
|
|
3519
|
+
// The OpenMSP vendor directory: the icon the site menu's "Tool directory" entry draws (it reads this one)
|
|
3520
|
+
vendors: "package-search",
|
|
3492
3521
|
// Financials
|
|
3493
3522
|
"investor-updates": "mail",
|
|
3494
3523
|
"financial-kpis": "activity",
|
|
@@ -3551,6 +3580,8 @@ var SOURCE_LABELS_BY_TABLE = {
|
|
|
3551
3580
|
faqs: "FAQs",
|
|
3552
3581
|
// Trust
|
|
3553
3582
|
"trust-center": "Trust Center",
|
|
3583
|
+
"website-pages": "Website",
|
|
3584
|
+
vendors: "Vendor Directory",
|
|
3554
3585
|
// Financials
|
|
3555
3586
|
"investor-updates": "Investor Updates",
|
|
3556
3587
|
"financial-kpis": "Financial KPIs",
|
|
@@ -3618,6 +3649,8 @@ var DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = {
|
|
|
3618
3649
|
faq: "faqs",
|
|
3619
3650
|
// Trust
|
|
3620
3651
|
trust_center: "trust-center",
|
|
3652
|
+
site_page: "website-pages",
|
|
3653
|
+
vendor: "vendors",
|
|
3621
3654
|
// Financials
|
|
3622
3655
|
investor_update: "investor-updates",
|
|
3623
3656
|
financial_kpi: "financial-kpis",
|
|
@@ -5169,6 +5202,10 @@ var BUILDERS = {
|
|
|
5169
5202
|
design_doc: (ids, b) => `${b}/api/design-docs?ids=${ids.join(",")}`,
|
|
5170
5203
|
openframe_tenant: (ids, b) => `${b}/api/openframe-tenants?ids=${ids.join(",")}`,
|
|
5171
5204
|
prospect_call: (ids, b) => `${b}/api/prospect-calls?ids=${ids.join(",")}`,
|
|
5205
|
+
// The public website's own pages (live source; ChatRef-shaped items like the objects above).
|
|
5206
|
+
site_page: (ids, b) => `${b}/api/site-pages?ids=${ids.join(",")}`,
|
|
5207
|
+
// The OpenMSP vendor directory (indexed source).
|
|
5208
|
+
vendor: (ids, b) => `${b}/api/vendors/cards?ids=${ids.join(",")}`,
|
|
5172
5209
|
// Code intelligence — per-object card hydration, same `handleEntityCardList`
|
|
5173
5210
|
// shape as the internal objects above.
|
|
5174
5211
|
code_rule: (ids, b) => `${b}/api/code-rules/cards?ids=${ids.join(",")}`,
|
|
@@ -6461,6 +6498,8 @@ exports.DESIGN_PALETTE = DESIGN_PALETTE;
|
|
|
6461
6498
|
exports.DESKTOP_OSES = DESKTOP_OSES;
|
|
6462
6499
|
exports.DEV_SECTION_PARAM_KEYS = DEV_SECTION_PARAM_KEYS;
|
|
6463
6500
|
exports.DOC_TABLE_TYPES = DOC_TABLE_TYPES;
|
|
6501
|
+
exports.DOWNLOAD_PAGE_PATH = DOWNLOAD_PAGE_PATH;
|
|
6502
|
+
exports.DOWNLOAD_PAGE_STORE_PARAM = DOWNLOAD_PAGE_STORE_PARAM;
|
|
6464
6503
|
exports.ELAPSED_MS_FIELD = ELAPSED_MS_FIELD;
|
|
6465
6504
|
exports.EMBED_PROXY_OPTIONAL_HEADERS = EMBED_PROXY_OPTIONAL_HEADERS;
|
|
6466
6505
|
exports.FIRST_TOUCH_ATTRIBUTION_KEY = FIRST_TOUCH_ATTRIBUTION_KEY;
|
|
@@ -6489,6 +6528,8 @@ exports.LOCATION_HASH_SYNC_EVENT = LOCATION_HASH_SYNC_EVENT;
|
|
|
6489
6528
|
exports.MAX_MONTH_OFFSET = MAX_MONTH_OFFSET;
|
|
6490
6529
|
exports.MEDIA_FILE_ACCEPT = MEDIA_FILE_ACCEPT;
|
|
6491
6530
|
exports.MEDIA_TYPE = MEDIA_TYPE;
|
|
6531
|
+
exports.MOBILE_APP_INSTALL_HOST_PATH = MOBILE_APP_INSTALL_HOST_PATH;
|
|
6532
|
+
exports.MOBILE_APP_INSTALL_URL = MOBILE_APP_INSTALL_URL;
|
|
6492
6533
|
exports.NO_CLIENT_CACHE = NO_CLIENT_CACHE;
|
|
6493
6534
|
exports.ODS_SPACING_PROPS = ODS_SPACING_PROPS;
|
|
6494
6535
|
exports.ODS_SPACING_TOKENS = ODS_SPACING_TOKENS;
|
|
@@ -6520,6 +6561,8 @@ exports.STICKY_HEADER_OFFSET_PX = STICKY_HEADER_OFFSET_PX;
|
|
|
6520
6561
|
exports.TAILWIND_STEP_TO_ODS_TOKEN = TAILWIND_STEP_TO_ODS_TOKEN;
|
|
6521
6562
|
exports.TICKET_OPEN_PARAM = TICKET_OPEN_PARAM;
|
|
6522
6563
|
exports.TICKET_STATUS_OPTIONS = TICKET_STATUS_OPTIONS;
|
|
6564
|
+
exports.TRIAL_DAYS = TRIAL_DAYS;
|
|
6565
|
+
exports.TRIAL_LABELS = TRIAL_LABELS;
|
|
6523
6566
|
exports.VENDOR_CLASSIFICATIONS = VENDOR_CLASSIFICATIONS;
|
|
6524
6567
|
exports.VIEWER_TIMEZONE = VIEWER_TIMEZONE;
|
|
6525
6568
|
exports.WALKTHROUGH_OPEN_QUERY_PARAM = WALKTHROUGH_OPEN_QUERY_PARAM;
|
|
@@ -6815,6 +6858,7 @@ exports.releaseTypeToBadgeColor = releaseTypeToBadgeColor;
|
|
|
6815
6858
|
exports.replaceLocationHash = replaceLocationHash;
|
|
6816
6859
|
exports.rescueCompletionPct = rescueCompletionPct;
|
|
6817
6860
|
exports.resolveContentFetchPath = resolveContentFetchPath;
|
|
6861
|
+
exports.resolveMobileStoreUrl = resolveMobileStoreUrl;
|
|
6818
6862
|
exports.resolveRedirectTarget = resolveRedirectTarget;
|
|
6819
6863
|
exports.resolveReleaseCover = resolveReleaseCover;
|
|
6820
6864
|
exports.rgbToHex = rgbToHex;
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { cn } from './cn';
|
|
2
2
|
export { getPlatformUrl, getPlatformProductionUrl, getAllPlatformBaseDomains, getDeploymentUrl, getRequestOrigin, isLocalUrl, resolveRedirectTarget, } from '../platform-domains';
|
|
3
3
|
export { formatDate, formatNumber, formatPrice, formatBytes } from './format';
|
|
4
|
+
export { TRIAL_DAYS, TRIAL_LABELS } from './trial';
|
|
4
5
|
export { VENDOR_CLASSIFICATIONS, OPENFRAME_CLASSIFICATIONS, isVendorClassification, isOpenFrameClassification, type VendorClassificationValue, type OpenFrameClassification, type OpenFrameClassificationCopy, } from './vendor-classification';
|
|
5
6
|
export { PLAY_ICON_PATH } from '../components/icons-v2-generated/media-playback/play-icon';
|
|
6
7
|
export { getPlatformAccentColor, getCurrentPlatform, getPlatformConfig, usePlatformColors, switchPlatformTheme, getSemanticColor, type ColorCategory, HEX_PATTERN, getReadableTextColor, hexToRgb, rgbToHex, deriveHoverColor, deriveActiveColor, } from './ods-color-utils';
|
|
@@ -27,6 +28,7 @@ export * from './shell-utils';
|
|
|
27
28
|
export * from './video-bite-id';
|
|
28
29
|
export * from './os-utils';
|
|
29
30
|
export * from './visitor-os';
|
|
31
|
+
export * from './mobile-app';
|
|
30
32
|
export * from './country-phone-utils';
|
|
31
33
|
export * from './compliance-standards';
|
|
32
34
|
export * from './generic-domain-utils';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
|
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
|
@@ -648,6 +648,16 @@ function formatWebinarTimeMeta(at, opts) {
|
|
|
648
648
|
const time = formatProgramTimeRange(at, { startAt: opts.startAt, withZoneLabel: opts.withZoneLabel });
|
|
649
649
|
return [time, duration].filter(Boolean).join(" \xB7 ");
|
|
650
650
|
}
|
|
651
|
+
|
|
652
|
+
// src/utils/trial.ts
|
|
653
|
+
var TRIAL_DAYS = 14;
|
|
654
|
+
var TRIAL_LABELS = {
|
|
655
|
+
/** "14 day free trial" */
|
|
656
|
+
length: `${TRIAL_DAYS} day free trial`,
|
|
657
|
+
noCard: "No card required",
|
|
658
|
+
cancel: "Cancel Anytime",
|
|
659
|
+
noContract: "No Contract"
|
|
660
|
+
};
|
|
651
661
|
var PLAY_ICON_PATH = "M4.875 5.006c0-2.501 2.793-3.989 4.87-2.592l9.78 6.578c2.135 1.437 2.135 4.58 0 6.016l-9.78 6.579c-2.077 1.396-4.87-.091-4.87-2.593zm2.25 13.988c0 .7.783 1.118 1.364.727l9.78-6.58c.81-.545.81-1.738 0-2.283L8.488 4.28a.875.875 0 0 0-1.364.726v13.988Z";
|
|
652
662
|
|
|
653
663
|
// src/utils/color-analysis.ts
|
|
@@ -2864,6 +2874,21 @@ function usesCommandKey(os) {
|
|
|
2864
2874
|
function shortcutLabel(os, key) {
|
|
2865
2875
|
return usesCommandKey(os) ? `\u2318${key}` : `Ctrl ${key}`;
|
|
2866
2876
|
}
|
|
2877
|
+
|
|
2878
|
+
// src/utils/mobile-app.ts
|
|
2879
|
+
var DOWNLOAD_PAGE_PATH = "/download";
|
|
2880
|
+
var DOWNLOAD_PAGE_STORE_PARAM = "store";
|
|
2881
|
+
var MOBILE_APP_INSTALL_URL = `https://www.flamingo.run${DOWNLOAD_PAGE_PATH}?${DOWNLOAD_PAGE_STORE_PARAM}=1`;
|
|
2882
|
+
var MOBILE_APP_INSTALL_HOST_PATH = MOBILE_APP_INSTALL_URL.replace(/^https:\/\/(www\.)?/, "").replace(
|
|
2883
|
+
/\?.*$/,
|
|
2884
|
+
""
|
|
2885
|
+
);
|
|
2886
|
+
function resolveMobileStoreUrl(links, userAgent, maxTouchPoints) {
|
|
2887
|
+
const os = detectVisitorOs(userAgent, { maxTouchPoints });
|
|
2888
|
+
if (os === "ios") return links.appStoreUrl;
|
|
2889
|
+
if (os === "android") return links.googlePlayUrl;
|
|
2890
|
+
return null;
|
|
2891
|
+
}
|
|
2867
2892
|
var PRIORITY_CODES = ["US", "CA", "GB", "AU"];
|
|
2868
2893
|
var COUNTRY_NAME_ALIASES = {
|
|
2869
2894
|
// United States
|
|
@@ -3481,8 +3506,12 @@ var SOURCE_ICON_NAMES = {
|
|
|
3481
3506
|
"audience-msp": "hierarchy-02",
|
|
3482
3507
|
"audience-mssp": "shield-lock",
|
|
3483
3508
|
"audience-it-team": "buildings",
|
|
3484
|
-
// Trust (single-record live source over the public Vanta projection)
|
|
3485
|
-
"trust-center": "shield",
|
|
3509
|
+
// Trust (single-record live source over the public Vanta projection): the icon its menu entry draws
|
|
3510
|
+
"trust-center": "shield-check",
|
|
3511
|
+
// The public website's own pages (live source): the site's own mark, as a glyph in the slot's colour
|
|
3512
|
+
"website-pages": "flamingo-logo-grey",
|
|
3513
|
+
// The OpenMSP vendor directory: the icon the site menu's "Tool directory" entry draws (it reads this one)
|
|
3514
|
+
vendors: "package-search",
|
|
3486
3515
|
// Financials
|
|
3487
3516
|
"investor-updates": "mail",
|
|
3488
3517
|
"financial-kpis": "activity",
|
|
@@ -3545,6 +3574,8 @@ var SOURCE_LABELS_BY_TABLE = {
|
|
|
3545
3574
|
faqs: "FAQs",
|
|
3546
3575
|
// Trust
|
|
3547
3576
|
"trust-center": "Trust Center",
|
|
3577
|
+
"website-pages": "Website",
|
|
3578
|
+
vendors: "Vendor Directory",
|
|
3548
3579
|
// Financials
|
|
3549
3580
|
"investor-updates": "Investor Updates",
|
|
3550
3581
|
"financial-kpis": "Financial KPIs",
|
|
@@ -3612,6 +3643,8 @@ var DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = {
|
|
|
3612
3643
|
faq: "faqs",
|
|
3613
3644
|
// Trust
|
|
3614
3645
|
trust_center: "trust-center",
|
|
3646
|
+
site_page: "website-pages",
|
|
3647
|
+
vendor: "vendors",
|
|
3615
3648
|
// Financials
|
|
3616
3649
|
investor_update: "investor-updates",
|
|
3617
3650
|
financial_kpi: "financial-kpis",
|
|
@@ -5163,6 +5196,10 @@ var BUILDERS = {
|
|
|
5163
5196
|
design_doc: (ids, b) => `${b}/api/design-docs?ids=${ids.join(",")}`,
|
|
5164
5197
|
openframe_tenant: (ids, b) => `${b}/api/openframe-tenants?ids=${ids.join(",")}`,
|
|
5165
5198
|
prospect_call: (ids, b) => `${b}/api/prospect-calls?ids=${ids.join(",")}`,
|
|
5199
|
+
// The public website's own pages (live source; ChatRef-shaped items like the objects above).
|
|
5200
|
+
site_page: (ids, b) => `${b}/api/site-pages?ids=${ids.join(",")}`,
|
|
5201
|
+
// The OpenMSP vendor directory (indexed source).
|
|
5202
|
+
vendor: (ids, b) => `${b}/api/vendors/cards?ids=${ids.join(",")}`,
|
|
5166
5203
|
// Code intelligence — per-object card hydration, same `handleEntityCardList`
|
|
5167
5204
|
// shape as the internal objects above.
|
|
5168
5205
|
code_rule: (ids, b) => `${b}/api/code-rules/cards?ids=${ids.join(",")}`,
|
|
@@ -6430,4 +6467,4 @@ function pathMatchesAny(pathname, patterns) {
|
|
|
6430
6467
|
return (patterns ?? []).some((pattern) => matchesPathPattern(pathname, pattern));
|
|
6431
6468
|
}
|
|
6432
6469
|
|
|
6433
|
-
export { ACTIVE_ANCHOR_ATTRIBUTE, ANTHROPIC_SUPPORTED_IMAGE_MIME, AUTO_CONTINUATION_DIRECTIVE_PREFIX, BADGE_PALETTE, BITE_ID_RE, BRAND_MARK_SVGS, CHAT_ATTACHMENT_MARKDOWN_PATTERN, CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM, CHAT_ATTACHMENT_VIEW_URL_PREFIX, CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED, COMPLIANCE_STANDARDS, CONTENT_REF_GROUPS, CSV_CONTENT_TYPE, CUSTOM_ITEM_ID, DEFAULT_CONTENT_SUFFIXES, DEFAULT_FOLDER_INDEX_FILE, DEFAULT_MIN_FILL_MS, DEFAULT_OS_PLATFORM, DELIVERY_TASK_TYPE_OPTIONS, DESIGN_DOC_READINESS, DESIGN_DOC_READINESS_DISPLAY, DESIGN_PALETTE, DESKTOP_OSES, DEV_SECTION_PARAM_KEYS, DOC_TABLE_TYPES, ELAPSED_MS_FIELD, EMBED_PROXY_OPTIONAL_HEADERS, FIRST_TOUCH_ATTRIBUTION_KEY, FORM_DRAFT_STATUSES, FORM_RESCUE_ATTEMPT_FIELD, FORM_RESCUE_DEBOUNCE_MS, FORM_RESCUE_EVENTS, FORM_RESCUE_MAX_FIELDS, FORM_RESCUE_MAX_VALUE_CHARS, FORM_RESCUE_RESUME_FIELD, FORM_RESCUE_RESUME_PARAM, FORM_RESCUE_SKIP_REASONS, FORM_RESCUE_SUBMIT_KEYS, FORM_RESCUE_VALUE_FIELDS, FullscreenSwitchController, GENERIC_EMAIL_DOMAINS, HEADING_EMOJI_RE, HEX_PATTERN, HONEYPOT_FIELD, HUBSPOT_DO_NOT_COLLECT_FORM_PROPS, HUB_HEADER_OFFSET_PX, HUMANITY_SIGNAL_KEYS, ICON_REGISTRY, IMAGE_FILE_ACCEPT, LOCATION_HASH_SYNC_EVENT, MAX_MONTH_OFFSET, MEDIA_FILE_ACCEPT, MEDIA_TYPE, NO_CLIENT_CACHE, ODS_SPACING_PROPS, ODS_SPACING_TOKENS, ODS_SPACING_TOKEN_PATTERN, ODS_STEM_CLASSES, ODS_STEM_TOKENS, OPENFRAME_CLASSIFICATIONS, OPENFRAME_DEV_SECTIONS, OS_PLATFORMS, PAGE_PARAM_LIMITS, PLATFORM_BRAND, PLATFORM_SURFACE, PLATFORM_THEME, PLAY_ICON_PATH, PROGRAM_META_RENDERERS, RESCUE_FORMS, ROADMAP_STATUS_OPTIONS, SCHEDULING_SLUG_SHAPE, SCROLL_ANCHOR, SCROLL_ANCHOR_WIRE_KEY, SECTION_HERO_ICON_CLASS, SEO_DESCRIPTION_MAX_LENGTH, SEO_TITLE_MAX_LENGTH, SOCIAL_PLATFORM_ALIASES, SOCIAL_PLATFORM_ALT_HOSTS, SOURCE_ICON_NAMES, SOURCE_LABELS_BY_TABLE, STICKY_HEADER_OFFSET_PX, TAILWIND_STEP_TO_ODS_TOKEN, TICKET_OPEN_PARAM, TICKET_STATUS_OPTIONS, VENDOR_CLASSIFICATIONS, VIEWER_TIMEZONE, WALKTHROUGH_OPEN_QUERY_PARAM, WALKTHROUGH_VIDEO_DISMISS_KEY, analyzeImageColor, announcementDismissCookieName, applyProxyAuth, brandMarkDataUri, buildAutoContinuationDirective, buildChatAttachmentViewUrl, buildDefaultHref, buildDiscussAddendum, buildDocumentTree, buildGroupedSource, buildListUrl, buildOgPlaceholderUrl, buildSuggestionUrl, buildTicketOpenHref, canonicalContentRefType, captureFirstTouchAttribution, captureFormRescueEvent, clamp, clampPageToTotal, classifySocialHost, cleanEmailDomain, clearAnnouncementDismissals, clearDismissCookie, clearEmbedProxyAuth, clearFirstTouchAttribution, clearLegacyAnnouncementCache, clearWalkthroughDismissal, clickupTaskUrl, cn, complianceStandardForName, consumeAccessCode, copyrightLine, createFenceTracker, createHeadingIdDeduper, createSearchParams, createSseSubscription, createUTCTimestamp, csvEscape, deepClone, defineParamSchema, defineRescueForm, delay, deriveActiveColor, deriveHoverColor, designDocReadiness, desktopOsOf, detectDesktopOs, detectVisitorOs, devSectionAnchorId, dismissAnnouncement, dismissWalkthrough, embedAuthedFetch, ensureBiteIds, errorMessage, escapeMarkdownInline, escapeRegExp, evaluateHumanitySignals, eventAudience, extractCardItems, extractDomainFromEmail, extractDominantColor, extractEntityIdFilter, extractHumanitySignals, extractImageEdgeColorAsync, extractItemId, extractItems, extractSections, faqItemAnchor, faqSectionSlug, fetchPriorityProp, fileContentKey, fileMediaType, filledRescueFields, findAnchorElementByNormalizedId, findDocNodeByPath, findHoneypotCopySource, firstParamValue, flattenAssistantContent, formatAbbreviatedNumber, formatAbsoluteDate, formatBioText, formatBytes, formatBytesShort, formatChatAttachmentMarkdownForBubble, formatCitationIndices, formatClassification, formatCompactMetric, formatCompletionLabel, formatCompletionLabelWithBlockers, formatCurrency, formatDate, formatDateRange, formatDateShort, formatDateSlashUTC, formatDateTime, formatDateTimeAt, formatDateTimeYmd, formatDateUTC, formatDateWithTimezone, formatDocName, formatDuration, formatDurationCompact, formatDurationFromMs, formatDurationFromRange, formatDurationMMSS, formatEntryMonthUTC, formatFileSize, formatLargeNumber, formatLegalDate, formatNumber, formatPercent, formatPhoneE164, formatPrice, formatPricingModel, formatProgramDate, formatProgramDateRange, formatProgramTimeRange, formatRelativeTime, formatReleaseDate, formatSingularLookupInvocation, formatTicketFullTimestamp, formatTicketRelativeTime, formatTimeWithTimezone, formatUnderscoreText, formatWebinarTimeMeta, formatWholeDollars, fromKeys, generateBiteId, generateImageSizes, generateRandomString, getAllPlatformBaseDomains, getBestContrastColor, getConfidenceBgClass, getConfidenceBorderClass, getConfidenceColorClass, getConfidenceLabel, getConfidenceLevel, getConfidenceTextClass, getContentRefLabel, getContentRefLabelOrTitleCase, getContrastRatio, getCountryByCode, getCountryByName, getCountryPhoneData, getCurrentPlatform, getDefaultColorForPlatform, getDefaultIconForPlatform, getDeploymentUrl, getDetailedTimeDifference, getDocAncestorNodeIds, getDocSourceDefaultPath, getDynamicIcon, getEmbedProxyAuth, getFirstTouchAttribution, getFlagFromCountryName, getIconComponent, getInitialExpandedNodeIds, getOSIcon, getOSLabel, getOSPlatformId, getOSTypeDefinition, getPersistedProxyEmail, getPlatformAccentColor, getPlatformBackgroundVarName, getPlatformBrand, getPlatformBrandClasses, getPlatformColor, getPlatformConfig, getPlatformDescription, getPlatformDisplayName, getPlatformIcon, getPlatformIconComponent, getPlatformIconComponent as getPlatformLogo, getPlatformProductionUrl, getPlatformSecondaryColor, getPlatformShortName, getPlatformSlogan, getPlatformTextVarName, getPlatformUrl, getProxiedImageUrl, getReadableTextColor, getRequestOrigin, getRescueForm, getSemanticColor, getShellIcon, getShellLabel, getSlackCommunityJoinUrl, getSmallPlatformIcon, getSourceIconName, getSourceLabel, getStatusColorScheme, getTaskTypeLabel, getToolLabel, getToolTypeAliases, getTrendColors, groupSourcesByTable, groupsByTable, hasGenericEmailDomain, hexToRgb2 as hexToRgb, hostMatches, isAnnouncementDismissed, isBadgePaletteKey, isBlankLine, isCrossOriginUrl, isDismissedCookieValue, isExcludedRescueField, isFigmaSlidesUrl, isFormAttemptId, isGenericDomain, isGenericWebsiteDomain, isHumanitySignalKey, isImageMedia, isListedSchedulingName, isLocalUrl, isOSPlatform, isOpenFrameClassification, isOrderedRange, isPublishableMediaType, isRescueEmail, isResumeToken, isScrollSyncedHash, isToday, isValidEmailDomain, isValidPathPattern, isValidSchedulingSlug, isValidToolType, isVendorClassification, isVideoMedia, isWalkthroughDismissed, isWithinMinutes, listRescueForms, makeComposeContentUrl, markdownToPlainText, matchBiteElement, matchesPathPattern, mediaNameKey, nameInitials, navigateSamePageHash, normalizeAnchorId, normalizeDocPath, normalizeDomain, normalizeHashFragment, normalizeIconKey, normalizeOSType, normalizeSchedulingSlug, normalizeSocialPlatform, normalizeToolType, normalizeToolTypeWithFallback, openInNewTab, orderContentRefTypes, pageCount, parseAttributionFromUrl, parseFaqHash, parseFormDraftSaveRequest, parseSchedulingLinkName, parseSchemaParams, parseScrollAnchor, parseWireCommandOverride, partitionMediaByType, pathMatchesAny, pathToNodeId, personFirstName, personInitials, pick, pickBadgePaletteColor, pickReadableTextColor, pickSocialLink, platformAccentToken, platformAccentVarName, platformColors, platformDescriptions, platformDisplayNames, platformHexColors, platformIconNames, platformIcons, platformSecondaryToken, platformSecondaryVarName, platformShortNames, platformSlogans, positiveInt, programDateInstant, programMetaFormatters, programMetaLine, programStr, readDismissCookie, readLeadingDecisionFrame, recordCountLabel, releaseTypeToBadgeColor, replaceLocationHash, rescueCompletionPct, resolveContentFetchPath, resolveRedirectTarget, resolveReleaseCover, rgbToHex, sanitizeLandingUrl, sanitizeRescueFieldName, sanitizeRescueValues, sanitizeTitleForChat, scanHeadings, schedulingAudienceKey, scrollElementIntoView, serializeJsonLd, serializeSchemaParams, setEmbedAuthAdapter, setEmbedProxyAuth, shortcutLabel, shouldIncludeInUrl, shouldProxyImage, singleInitial, skipsImageOptimizer, slugifyHeadingBase, slugifyHeadingText, socialPlatformHosts, sortTreeChildren, splitCsvEnv, stripChatAttachmentMarkdown, stripFolderIndexFromPath, stripHeadingEmojis, stripHtml, stripInlineMarkdown, switchPlatformTheme, titleCaseFromSlug, toClaudeEmbedUrl, toClaudeMirrorPath, toCsv, toDocSlug, toFigmaEmbedUrl, toFigmaOriginalUrl, toGoogleSheetsEmbedUrl, toGoogleSheetsOriginalUrl, toToolLabel, transformPlatformConfigsToOptions, truncateString, urlPathLooksLikeSvg, usePlatformColors, usesCommandKey, validateAccessCode, validateAndConsumeAccessCode, validateEmailDomain, validateEmailDomainList, validatePhoneNumber, walkthroughDismissCookieName, webinarTiming, withFirstTouchAttribution, withQuery, withWalkthroughOpenParam, writeDismissCookie };
|
|
6470
|
+
export { ACTIVE_ANCHOR_ATTRIBUTE, ANTHROPIC_SUPPORTED_IMAGE_MIME, AUTO_CONTINUATION_DIRECTIVE_PREFIX, BADGE_PALETTE, BITE_ID_RE, BRAND_MARK_SVGS, CHAT_ATTACHMENT_MARKDOWN_PATTERN, CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM, CHAT_ATTACHMENT_VIEW_URL_PREFIX, CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED, COMPLIANCE_STANDARDS, CONTENT_REF_GROUPS, CSV_CONTENT_TYPE, CUSTOM_ITEM_ID, DEFAULT_CONTENT_SUFFIXES, DEFAULT_FOLDER_INDEX_FILE, DEFAULT_MIN_FILL_MS, DEFAULT_OS_PLATFORM, DELIVERY_TASK_TYPE_OPTIONS, DESIGN_DOC_READINESS, DESIGN_DOC_READINESS_DISPLAY, DESIGN_PALETTE, DESKTOP_OSES, DEV_SECTION_PARAM_KEYS, DOC_TABLE_TYPES, DOWNLOAD_PAGE_PATH, DOWNLOAD_PAGE_STORE_PARAM, ELAPSED_MS_FIELD, EMBED_PROXY_OPTIONAL_HEADERS, FIRST_TOUCH_ATTRIBUTION_KEY, FORM_DRAFT_STATUSES, FORM_RESCUE_ATTEMPT_FIELD, FORM_RESCUE_DEBOUNCE_MS, FORM_RESCUE_EVENTS, FORM_RESCUE_MAX_FIELDS, FORM_RESCUE_MAX_VALUE_CHARS, FORM_RESCUE_RESUME_FIELD, FORM_RESCUE_RESUME_PARAM, FORM_RESCUE_SKIP_REASONS, FORM_RESCUE_SUBMIT_KEYS, FORM_RESCUE_VALUE_FIELDS, FullscreenSwitchController, GENERIC_EMAIL_DOMAINS, HEADING_EMOJI_RE, HEX_PATTERN, HONEYPOT_FIELD, HUBSPOT_DO_NOT_COLLECT_FORM_PROPS, HUB_HEADER_OFFSET_PX, HUMANITY_SIGNAL_KEYS, ICON_REGISTRY, IMAGE_FILE_ACCEPT, LOCATION_HASH_SYNC_EVENT, MAX_MONTH_OFFSET, MEDIA_FILE_ACCEPT, MEDIA_TYPE, MOBILE_APP_INSTALL_HOST_PATH, MOBILE_APP_INSTALL_URL, NO_CLIENT_CACHE, ODS_SPACING_PROPS, ODS_SPACING_TOKENS, ODS_SPACING_TOKEN_PATTERN, ODS_STEM_CLASSES, ODS_STEM_TOKENS, OPENFRAME_CLASSIFICATIONS, OPENFRAME_DEV_SECTIONS, OS_PLATFORMS, PAGE_PARAM_LIMITS, PLATFORM_BRAND, PLATFORM_SURFACE, PLATFORM_THEME, PLAY_ICON_PATH, PROGRAM_META_RENDERERS, RESCUE_FORMS, ROADMAP_STATUS_OPTIONS, SCHEDULING_SLUG_SHAPE, SCROLL_ANCHOR, SCROLL_ANCHOR_WIRE_KEY, SECTION_HERO_ICON_CLASS, SEO_DESCRIPTION_MAX_LENGTH, SEO_TITLE_MAX_LENGTH, SOCIAL_PLATFORM_ALIASES, SOCIAL_PLATFORM_ALT_HOSTS, SOURCE_ICON_NAMES, SOURCE_LABELS_BY_TABLE, STICKY_HEADER_OFFSET_PX, TAILWIND_STEP_TO_ODS_TOKEN, TICKET_OPEN_PARAM, TICKET_STATUS_OPTIONS, TRIAL_DAYS, TRIAL_LABELS, VENDOR_CLASSIFICATIONS, VIEWER_TIMEZONE, WALKTHROUGH_OPEN_QUERY_PARAM, WALKTHROUGH_VIDEO_DISMISS_KEY, analyzeImageColor, announcementDismissCookieName, applyProxyAuth, brandMarkDataUri, buildAutoContinuationDirective, buildChatAttachmentViewUrl, buildDefaultHref, buildDiscussAddendum, buildDocumentTree, buildGroupedSource, buildListUrl, buildOgPlaceholderUrl, buildSuggestionUrl, buildTicketOpenHref, canonicalContentRefType, captureFirstTouchAttribution, captureFormRescueEvent, clamp, clampPageToTotal, classifySocialHost, cleanEmailDomain, clearAnnouncementDismissals, clearDismissCookie, clearEmbedProxyAuth, clearFirstTouchAttribution, clearLegacyAnnouncementCache, clearWalkthroughDismissal, clickupTaskUrl, cn, complianceStandardForName, consumeAccessCode, copyrightLine, createFenceTracker, createHeadingIdDeduper, createSearchParams, createSseSubscription, createUTCTimestamp, csvEscape, deepClone, defineParamSchema, defineRescueForm, delay, deriveActiveColor, deriveHoverColor, designDocReadiness, desktopOsOf, detectDesktopOs, detectVisitorOs, devSectionAnchorId, dismissAnnouncement, dismissWalkthrough, embedAuthedFetch, ensureBiteIds, errorMessage, escapeMarkdownInline, escapeRegExp, evaluateHumanitySignals, eventAudience, extractCardItems, extractDomainFromEmail, extractDominantColor, extractEntityIdFilter, extractHumanitySignals, extractImageEdgeColorAsync, extractItemId, extractItems, extractSections, faqItemAnchor, faqSectionSlug, fetchPriorityProp, fileContentKey, fileMediaType, filledRescueFields, findAnchorElementByNormalizedId, findDocNodeByPath, findHoneypotCopySource, firstParamValue, flattenAssistantContent, formatAbbreviatedNumber, formatAbsoluteDate, formatBioText, formatBytes, formatBytesShort, formatChatAttachmentMarkdownForBubble, formatCitationIndices, formatClassification, formatCompactMetric, formatCompletionLabel, formatCompletionLabelWithBlockers, formatCurrency, formatDate, formatDateRange, formatDateShort, formatDateSlashUTC, formatDateTime, formatDateTimeAt, formatDateTimeYmd, formatDateUTC, formatDateWithTimezone, formatDocName, formatDuration, formatDurationCompact, formatDurationFromMs, formatDurationFromRange, formatDurationMMSS, formatEntryMonthUTC, formatFileSize, formatLargeNumber, formatLegalDate, formatNumber, formatPercent, formatPhoneE164, formatPrice, formatPricingModel, formatProgramDate, formatProgramDateRange, formatProgramTimeRange, formatRelativeTime, formatReleaseDate, formatSingularLookupInvocation, formatTicketFullTimestamp, formatTicketRelativeTime, formatTimeWithTimezone, formatUnderscoreText, formatWebinarTimeMeta, formatWholeDollars, fromKeys, generateBiteId, generateImageSizes, generateRandomString, getAllPlatformBaseDomains, getBestContrastColor, getConfidenceBgClass, getConfidenceBorderClass, getConfidenceColorClass, getConfidenceLabel, getConfidenceLevel, getConfidenceTextClass, getContentRefLabel, getContentRefLabelOrTitleCase, getContrastRatio, getCountryByCode, getCountryByName, getCountryPhoneData, getCurrentPlatform, getDefaultColorForPlatform, getDefaultIconForPlatform, getDeploymentUrl, getDetailedTimeDifference, getDocAncestorNodeIds, getDocSourceDefaultPath, getDynamicIcon, getEmbedProxyAuth, getFirstTouchAttribution, getFlagFromCountryName, getIconComponent, getInitialExpandedNodeIds, getOSIcon, getOSLabel, getOSPlatformId, getOSTypeDefinition, getPersistedProxyEmail, getPlatformAccentColor, getPlatformBackgroundVarName, getPlatformBrand, getPlatformBrandClasses, getPlatformColor, getPlatformConfig, getPlatformDescription, getPlatformDisplayName, getPlatformIcon, getPlatformIconComponent, getPlatformIconComponent as getPlatformLogo, getPlatformProductionUrl, getPlatformSecondaryColor, getPlatformShortName, getPlatformSlogan, getPlatformTextVarName, getPlatformUrl, getProxiedImageUrl, getReadableTextColor, getRequestOrigin, getRescueForm, getSemanticColor, getShellIcon, getShellLabel, getSlackCommunityJoinUrl, getSmallPlatformIcon, getSourceIconName, getSourceLabel, getStatusColorScheme, getTaskTypeLabel, getToolLabel, getToolTypeAliases, getTrendColors, groupSourcesByTable, groupsByTable, hasGenericEmailDomain, hexToRgb2 as hexToRgb, hostMatches, isAnnouncementDismissed, isBadgePaletteKey, isBlankLine, isCrossOriginUrl, isDismissedCookieValue, isExcludedRescueField, isFigmaSlidesUrl, isFormAttemptId, isGenericDomain, isGenericWebsiteDomain, isHumanitySignalKey, isImageMedia, isListedSchedulingName, isLocalUrl, isOSPlatform, isOpenFrameClassification, isOrderedRange, isPublishableMediaType, isRescueEmail, isResumeToken, isScrollSyncedHash, isToday, isValidEmailDomain, isValidPathPattern, isValidSchedulingSlug, isValidToolType, isVendorClassification, isVideoMedia, isWalkthroughDismissed, isWithinMinutes, listRescueForms, makeComposeContentUrl, markdownToPlainText, matchBiteElement, matchesPathPattern, mediaNameKey, nameInitials, navigateSamePageHash, normalizeAnchorId, normalizeDocPath, normalizeDomain, normalizeHashFragment, normalizeIconKey, normalizeOSType, normalizeSchedulingSlug, normalizeSocialPlatform, normalizeToolType, normalizeToolTypeWithFallback, openInNewTab, orderContentRefTypes, pageCount, parseAttributionFromUrl, parseFaqHash, parseFormDraftSaveRequest, parseSchedulingLinkName, parseSchemaParams, parseScrollAnchor, parseWireCommandOverride, partitionMediaByType, pathMatchesAny, pathToNodeId, personFirstName, personInitials, pick, pickBadgePaletteColor, pickReadableTextColor, pickSocialLink, platformAccentToken, platformAccentVarName, platformColors, platformDescriptions, platformDisplayNames, platformHexColors, platformIconNames, platformIcons, platformSecondaryToken, platformSecondaryVarName, platformShortNames, platformSlogans, positiveInt, programDateInstant, programMetaFormatters, programMetaLine, programStr, readDismissCookie, readLeadingDecisionFrame, recordCountLabel, releaseTypeToBadgeColor, replaceLocationHash, rescueCompletionPct, resolveContentFetchPath, resolveMobileStoreUrl, resolveRedirectTarget, resolveReleaseCover, rgbToHex, sanitizeLandingUrl, sanitizeRescueFieldName, sanitizeRescueValues, sanitizeTitleForChat, scanHeadings, schedulingAudienceKey, scrollElementIntoView, serializeJsonLd, serializeSchemaParams, setEmbedAuthAdapter, setEmbedProxyAuth, shortcutLabel, shouldIncludeInUrl, shouldProxyImage, singleInitial, skipsImageOptimizer, slugifyHeadingBase, slugifyHeadingText, socialPlatformHosts, sortTreeChildren, splitCsvEnv, stripChatAttachmentMarkdown, stripFolderIndexFromPath, stripHeadingEmojis, stripHtml, stripInlineMarkdown, switchPlatformTheme, titleCaseFromSlug, toClaudeEmbedUrl, toClaudeMirrorPath, toCsv, toDocSlug, toFigmaEmbedUrl, toFigmaOriginalUrl, toGoogleSheetsEmbedUrl, toGoogleSheetsOriginalUrl, toToolLabel, transformPlatformConfigsToOptions, truncateString, urlPathLooksLikeSvg, usePlatformColors, usesCommandKey, validateAccessCode, validateAndConsumeAccessCode, validateEmailDomain, validateEmailDomainList, validatePhoneNumber, walkthroughDismissCookieName, webinarTiming, withFirstTouchAttribution, withQuery, withWalkthroughOpenParam, writeDismissCookie };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-url.d.ts","sourceRoot":"","sources":["../../src/utils/list-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAaH;;;;iEAIiE;AACjE,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAKtE;
|
|
1
|
+
{"version":3,"file":"list-url.d.ts","sourceRoot":"","sources":["../../src/utils/list-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAaH;;;;iEAIiE;AACjE,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAKtE;AA0FD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,SAAK,GAAG,MAAM,GAAG,IAAI,CAa5F"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/utils/visitor-os.ts
|
|
4
|
+
var HINT_PLATFORMS = {
|
|
5
|
+
macos: "mac",
|
|
6
|
+
windows: "windows",
|
|
7
|
+
linux: "linux",
|
|
8
|
+
"chrome os": "linux",
|
|
9
|
+
"chromium os": "linux",
|
|
10
|
+
android: "android",
|
|
11
|
+
ios: "ios"
|
|
12
|
+
};
|
|
13
|
+
function detectVisitorOs(userAgent, hints = {}) {
|
|
14
|
+
const touchMac = (os) => os === "mac" && (hints.maxTouchPoints ?? 0) > 1 ? "ios" : os;
|
|
15
|
+
const hinted = HINT_PLATFORMS[(hints.platform ?? "").replace(/"/g, "").trim().toLowerCase()];
|
|
16
|
+
if (hinted) return touchMac(hinted);
|
|
17
|
+
const ua = userAgent ?? "";
|
|
18
|
+
if (!ua) return null;
|
|
19
|
+
if (/iPhone|iPad|iPod/i.test(ua)) return "ios";
|
|
20
|
+
if (/Android/i.test(ua)) return "android";
|
|
21
|
+
if (/Windows NT|Win64|Win32/i.test(ua)) return "windows";
|
|
22
|
+
if (/Macintosh|Mac OS X/i.test(ua)) return touchMac("mac");
|
|
23
|
+
if (/Linux|X11|CrOS/i.test(ua)) return "linux";
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// src/utils/mobile-app.ts
|
|
28
|
+
var DOWNLOAD_PAGE_PATH = "/download";
|
|
29
|
+
var DOWNLOAD_PAGE_STORE_PARAM = "store";
|
|
30
|
+
var MOBILE_APP_INSTALL_URL = `https://www.flamingo.run${DOWNLOAD_PAGE_PATH}?${DOWNLOAD_PAGE_STORE_PARAM}=1`;
|
|
31
|
+
var MOBILE_APP_INSTALL_HOST_PATH = MOBILE_APP_INSTALL_URL.replace(/^https:\/\/(www\.)?/, "").replace(
|
|
32
|
+
/\?.*$/,
|
|
33
|
+
""
|
|
34
|
+
);
|
|
35
|
+
function resolveMobileStoreUrl(links, userAgent, maxTouchPoints) {
|
|
36
|
+
const os = detectVisitorOs(userAgent, { maxTouchPoints });
|
|
37
|
+
if (os === "ios") return links.appStoreUrl;
|
|
38
|
+
if (os === "android") return links.googlePlayUrl;
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
exports.DOWNLOAD_PAGE_PATH = DOWNLOAD_PAGE_PATH;
|
|
43
|
+
exports.DOWNLOAD_PAGE_STORE_PARAM = DOWNLOAD_PAGE_STORE_PARAM;
|
|
44
|
+
exports.MOBILE_APP_INSTALL_HOST_PATH = MOBILE_APP_INSTALL_HOST_PATH;
|
|
45
|
+
exports.MOBILE_APP_INSTALL_URL = MOBILE_APP_INSTALL_URL;
|
|
46
|
+
exports.resolveMobileStoreUrl = resolveMobileStoreUrl;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The download page's own addresses: where it lives, the parameter that sends a
|
|
3
|
+
* phone on to its store, and the URL the install QR code encodes. The store
|
|
4
|
+
* listings and installer links are NOT here: they are the server's
|
|
5
|
+
* (`DownloadsPublic`, read through `useDownloads`).
|
|
6
|
+
*
|
|
7
|
+
* Pure and server-safe; also published as the granular subpath
|
|
8
|
+
* `./utils/mobile-app`, for an Edge proxy and other server-only consumers.
|
|
9
|
+
*/
|
|
10
|
+
import type { MobileAppLinks } from '../types/downloads';
|
|
11
|
+
/** The website's download page: every installer and the mobile app. */
|
|
12
|
+
export declare const DOWNLOAD_PAGE_PATH = "/download";
|
|
13
|
+
/**
|
|
14
|
+
* On the download page: "send a phone or a tablet on to its store". The install
|
|
15
|
+
* QR code carries it, because whoever scans a code is holding the phone the app
|
|
16
|
+
* goes on. Anyone who opens the page without it reads the page.
|
|
17
|
+
*/
|
|
18
|
+
export declare const DOWNLOAD_PAGE_STORE_PARAM = "store";
|
|
19
|
+
/**
|
|
20
|
+
* The one URL the install QR code encodes: the website's download page, asking
|
|
21
|
+
* it to send a phone on to its store.
|
|
22
|
+
*
|
|
23
|
+
* Absolute and on the production host on purpose: a code must point at
|
|
24
|
+
* production whichever deployment rendered the page it came from. `MobileAppQr`
|
|
25
|
+
* draws this value as committed path data, so the two change together: see the
|
|
26
|
+
* regeneration note on that component.
|
|
27
|
+
*/
|
|
28
|
+
export declare const MOBILE_APP_INSTALL_URL = "https://www.flamingo.run/download?store=1";
|
|
29
|
+
/** The download page as it is printed for a human to read or type: no scheme, no `www`, no query. */
|
|
30
|
+
export declare const MOBILE_APP_INSTALL_HOST_PATH: string;
|
|
31
|
+
/**
|
|
32
|
+
* The store for a phone or tablet, or `null` for every other system and for a
|
|
33
|
+
* store the server names no listing for (`links` is the server's answer).
|
|
34
|
+
*
|
|
35
|
+
* The server passes the request's User-Agent; a browser also passes
|
|
36
|
+
* `navigator.maxTouchPoints`, the only signal that tells an iPad asking for the
|
|
37
|
+
* desktop site (it calls itself a Macintosh) from a real Mac.
|
|
38
|
+
*/
|
|
39
|
+
export declare function resolveMobileStoreUrl(links: MobileAppLinks, userAgent: string | null | undefined, maxTouchPoints?: number): string | null;
|
|
40
|
+
//# sourceMappingURL=mobile-app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobile-app.d.ts","sourceRoot":"","sources":["../../src/utils/mobile-app.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,UAAU,CAAC;AAEjD;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,8CAAiF,CAAC;AAErH,qGAAqG;AACrG,eAAO,MAAM,4BAA4B,QAGxC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACpC,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,GAAG,IAAI,CAKf"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// src/utils/visitor-os.ts
|
|
2
|
+
var HINT_PLATFORMS = {
|
|
3
|
+
macos: "mac",
|
|
4
|
+
windows: "windows",
|
|
5
|
+
linux: "linux",
|
|
6
|
+
"chrome os": "linux",
|
|
7
|
+
"chromium os": "linux",
|
|
8
|
+
android: "android",
|
|
9
|
+
ios: "ios"
|
|
10
|
+
};
|
|
11
|
+
function detectVisitorOs(userAgent, hints = {}) {
|
|
12
|
+
const touchMac = (os) => os === "mac" && (hints.maxTouchPoints ?? 0) > 1 ? "ios" : os;
|
|
13
|
+
const hinted = HINT_PLATFORMS[(hints.platform ?? "").replace(/"/g, "").trim().toLowerCase()];
|
|
14
|
+
if (hinted) return touchMac(hinted);
|
|
15
|
+
const ua = userAgent ?? "";
|
|
16
|
+
if (!ua) return null;
|
|
17
|
+
if (/iPhone|iPad|iPod/i.test(ua)) return "ios";
|
|
18
|
+
if (/Android/i.test(ua)) return "android";
|
|
19
|
+
if (/Windows NT|Win64|Win32/i.test(ua)) return "windows";
|
|
20
|
+
if (/Macintosh|Mac OS X/i.test(ua)) return touchMac("mac");
|
|
21
|
+
if (/Linux|X11|CrOS/i.test(ua)) return "linux";
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// src/utils/mobile-app.ts
|
|
26
|
+
var DOWNLOAD_PAGE_PATH = "/download";
|
|
27
|
+
var DOWNLOAD_PAGE_STORE_PARAM = "store";
|
|
28
|
+
var MOBILE_APP_INSTALL_URL = `https://www.flamingo.run${DOWNLOAD_PAGE_PATH}?${DOWNLOAD_PAGE_STORE_PARAM}=1`;
|
|
29
|
+
var MOBILE_APP_INSTALL_HOST_PATH = MOBILE_APP_INSTALL_URL.replace(/^https:\/\/(www\.)?/, "").replace(
|
|
30
|
+
/\?.*$/,
|
|
31
|
+
""
|
|
32
|
+
);
|
|
33
|
+
function resolveMobileStoreUrl(links, userAgent, maxTouchPoints) {
|
|
34
|
+
const os = detectVisitorOs(userAgent, { maxTouchPoints });
|
|
35
|
+
if (os === "ios") return links.appStoreUrl;
|
|
36
|
+
if (os === "android") return links.googlePlayUrl;
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export { DOWNLOAD_PAGE_PATH, DOWNLOAD_PAGE_STORE_PARAM, MOBILE_APP_INSTALL_HOST_PATH, MOBILE_APP_INSTALL_URL, resolveMobileStoreUrl };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-icons.d.ts","sourceRoot":"","sources":["../../src/utils/source-icons.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"source-icons.d.ts","sourceRoot":"","sources":["../../src/utils/source-icons.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoFpD,CAAC;AAEF;;6DAE6D;AAC7D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGxF;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA2EzD,CAAC;AAEF;;kEAEkE;AAClE,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAqEpE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEjF;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK5E"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The free trial's facts and the words every surface says them with: the
|
|
3
|
+
* sign-up panel here, and the host site's trial buttons, trust rows and pricing
|
|
4
|
+
* copy. Stated once, so a trial that changes length changes everywhere.
|
|
5
|
+
*
|
|
6
|
+
* Server-safe (no React, no DOM).
|
|
7
|
+
*/
|
|
8
|
+
/** How long the free trial runs, in days. */
|
|
9
|
+
export declare const TRIAL_DAYS = 14;
|
|
10
|
+
/** The reassurance labels shown beside a trial button. */
|
|
11
|
+
export declare const TRIAL_LABELS: {
|
|
12
|
+
/** "14 day free trial" */
|
|
13
|
+
readonly length: "14 day free trial";
|
|
14
|
+
readonly noCard: "No card required";
|
|
15
|
+
readonly cancel: "Cancel Anytime";
|
|
16
|
+
readonly noContract: "No Contract";
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=trial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trial.d.ts","sourceRoot":"","sources":["../../src/utils/trial.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,6CAA6C;AAC7C,eAAO,MAAM,UAAU,KAAK,CAAC;AAE7B,0DAA0D;AAC1D,eAAO,MAAM,YAAY;IACvB,0BAA0B;;;;;CAKlB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flamingo-stack/openframe-frontend-core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.721",
|
|
4
4
|
"description": "Shared design system and components for all Flamingo platforms",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -255,6 +255,12 @@
|
|
|
255
255
|
"require": "./dist/utils/form-rescue.cjs",
|
|
256
256
|
"default": "./dist/utils/form-rescue.js"
|
|
257
257
|
},
|
|
258
|
+
"./utils/mobile-app": {
|
|
259
|
+
"types": "./dist/utils/mobile-app.d.ts",
|
|
260
|
+
"import": "./dist/utils/mobile-app.js",
|
|
261
|
+
"require": "./dist/utils/mobile-app.cjs",
|
|
262
|
+
"default": "./dist/utils/mobile-app.js"
|
|
263
|
+
},
|
|
258
264
|
"./utils/platform-identity": {
|
|
259
265
|
"types": "./dist/utils/platform-identity.d.ts",
|
|
260
266
|
"import": "./dist/utils/platform-identity.js",
|
package/src/assets/index.ts
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The install QR code's artwork: the modules of `MOBILE_APP_INSTALL_URL`
|
|
3
|
+
* (`utils/mobile-app`) at version 3, ECC level M, as one SVG path. Packaged with
|
|
4
|
+
* the library like the other assets, so every consumer draws the same code with
|
|
5
|
+
* no host-asset serving. `MobileAppQr` (components/ui) is the component that
|
|
6
|
+
* renders it.
|
|
7
|
+
*
|
|
8
|
+
* It changes WITH that URL. To regenerate: with the `qrcode` package,
|
|
9
|
+
* `QRCode.create(url, { errorCorrectionLevel: 'M' })` gives the modules; each
|
|
10
|
+
* row is one `M{x+4} {y+4}.5h{run}` followed by `m{gap} 0h{run}` per further
|
|
11
|
+
* run (the 4 is the quiet zone), and the viewBox side is `size + 8`.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/** The side of the artwork's square viewBox: 29 modules plus a 4-module quiet zone on each side. */
|
|
15
|
+
export const MOBILE_APP_QR_VIEWBOX_SIZE = 37;
|
|
16
|
+
|
|
17
|
+
/** The dark modules, as horizontal strokes one module tall (`stroke` draws them). */
|
|
18
|
+
export const MOBILE_APP_QR_PATH =
|
|
19
|
+
'M4 4.5h7m2 0h2m2 0h1m2 0h1m2 0h2m1 0h7M4 5.5h1m5 0h1m2 0h2m2 0h3m6 0h1m5 0h1M4 6.5h1m1 0h3m1 0h1m1 0h3m1 0h1m1 0h3m2 0h1m2 0h1m1 0h3m1 0h1M4 7.5h1m1 0h3m1 0h1m1 0h1m1 0h1m1 0h6m2 0h1m1 0h1m1 0h3m1 0h1M4 8.5h1m1 0h3m1 0h1m1 0h3m1 0h1m1 0h1m1 0h5m1 0h1m1 0h3m1 0h1M4 9.5h1m5 0h1m1 0h1m1 0h2m1 0h1m1 0h3m4 0h1m5 0h1M4 10.5h7m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h7M12 11.5h1m2 0h2m5 0h3M4 12.5h1m1 0h5m3 0h1m1 0h8m2 0h5M4 13.5h4m4 0h2m2 0h1m3 0h4m1 0h4m3 0h1M6 14.5h1m3 0h3m1 0h1m3 0h4m2 0h1M4 15.5h1m2 0h3m2 0h2m1 0h2m1 0h1m1 0h1m2 0h5m1 0h1m1 0h1M4 16.5h1m4 0h2m1 0h2m1 0h1m1 0h1m2 0h2m1 0h1m5 0h2M16 17.5h3m3 0h5m1 0h1m3 0h1M5 18.5h1m3 0h2m1 0h1m5 0h2m4 0h1m1 0h2m1 0h2M4 19.5h6m1 0h1m3 0h1m2 0h3m1 0h4m1 0h2m2 0h1M8 20.5h1m1 0h1m2 0h2m1 0h2m1 0h1m1 0h1m5 0h1m1 0h2M4 21.5h1m1 0h2m7 0h1m2 0h1m1 0h9m1 0h1m1 0h1M4 22.5h1m3 0h3m2 0h1m1 0h2m2 0h3m3 0h1m1 0h1m2 0h1M4 23.5h1m6 0h4m3 0h2m3 0h2m2 0h2m2 0h1M4 24.5h1m2 0h4m4 0h1m3 0h1m1 0h1m1 0h6m1 0h3M12 25.5h6m2 0h1m3 0h1m3 0h5M4 26.5h7m3 0h8m1 0h2m1 0h1m1 0h3M4 27.5h1m5 0h1m1 0h2m1 0h3m2 0h1m2 0h2m3 0h1M4 28.5h1m1 0h3m1 0h1m1 0h2m2 0h1m1 0h1m2 0h1m2 0h5m1 0h3M4 29.5h1m1 0h3m1 0h1m1 0h2m1 0h2m3 0h4m3 0h1m1 0h4M4 30.5h1m1 0h3m1 0h1m1 0h1m3 0h4m1 0h1m2 0h8M4 31.5h1m5 0h1m4 0h1m1 0h1m1 0h2m1 0h1m1 0h1m1 0h2m1 0h1m1 0h1M4 32.5h7m1 0h1m2 0h2m4 0h1m1 0h1m3 0h4';
|
|
@@ -35,6 +35,12 @@ export interface AskPromptsProps {
|
|
|
35
35
|
label?: string;
|
|
36
36
|
/** The assistant's configured glyph. Absent: the packaged Mingo mark. */
|
|
37
37
|
icon?: ReactNode;
|
|
38
|
+
/**
|
|
39
|
+
* How a question opens the chat and asks it. Absent: the `ask-ai:open`
|
|
40
|
+
* event of `source` (`openAskAi`). The launcher beside the questions takes
|
|
41
|
+
* its opener from the assistant runtime, never from here.
|
|
42
|
+
*/
|
|
43
|
+
onOpen?: (request: { prompt?: string }) => void;
|
|
38
44
|
/** After the chat was asked (analytics). */
|
|
39
45
|
onAsk?: (prompt: AskPrompt) => void;
|
|
40
46
|
/** The surface the row sits on, as a CSS colour: what its edge fade dissolves into. Default: the page background. */
|
|
@@ -86,9 +92,13 @@ function QuestionChips({
|
|
|
86
92
|
count,
|
|
87
93
|
loading,
|
|
88
94
|
source,
|
|
95
|
+
onOpen,
|
|
89
96
|
onAsk,
|
|
90
97
|
slotClassName,
|
|
91
|
-
}: Pick<AskPromptsProps, 'prompts' | 'loading' | 'source' | 'onAsk'> & {
|
|
98
|
+
}: Pick<AskPromptsProps, 'prompts' | 'loading' | 'source' | 'onOpen' | 'onAsk'> & {
|
|
99
|
+
count: number;
|
|
100
|
+
slotClassName?: string;
|
|
101
|
+
}) {
|
|
92
102
|
return (
|
|
93
103
|
<>
|
|
94
104
|
{Array.from({ length: count }, (_, slot) => {
|
|
@@ -106,7 +116,9 @@ function QuestionChips({
|
|
|
106
116
|
label={prompt.label}
|
|
107
117
|
icon={prompt.icon}
|
|
108
118
|
onSelect={() => {
|
|
109
|
-
|
|
119
|
+
const request = { prompt: prompt.prompt ?? prompt.label };
|
|
120
|
+
if (onOpen) onOpen(request);
|
|
121
|
+
else openAskAi(source, request);
|
|
110
122
|
onAsk?.(prompt);
|
|
111
123
|
}}
|
|
112
124
|
/>
|
|
@@ -137,6 +149,7 @@ export function AskPrompts({
|
|
|
137
149
|
source,
|
|
138
150
|
label,
|
|
139
151
|
icon,
|
|
152
|
+
onOpen,
|
|
140
153
|
onAsk,
|
|
141
154
|
fadeColor,
|
|
142
155
|
className,
|
|
@@ -157,6 +170,7 @@ export function AskPrompts({
|
|
|
157
170
|
count={count}
|
|
158
171
|
loading={loading}
|
|
159
172
|
source={source}
|
|
173
|
+
onOpen={onOpen}
|
|
160
174
|
onAsk={onAsk}
|
|
161
175
|
slotClassName={cn(ROW_CHIP_SLOT_CLASS, end && 'content-md:justify-end')}
|
|
162
176
|
/>
|
|
@@ -189,6 +203,7 @@ export function AskCard({
|
|
|
189
203
|
source,
|
|
190
204
|
label,
|
|
191
205
|
icon,
|
|
206
|
+
onOpen,
|
|
192
207
|
onAsk,
|
|
193
208
|
shortcutHint = true,
|
|
194
209
|
className,
|
|
@@ -210,7 +225,14 @@ export function AskCard({
|
|
|
210
225
|
</div>
|
|
211
226
|
{(loading || prompts.length > 0) && (
|
|
212
227
|
<div className="flex min-w-0 flex-col items-start gap-2">
|
|
213
|
-
<QuestionChips
|
|
228
|
+
<QuestionChips
|
|
229
|
+
prompts={prompts}
|
|
230
|
+
count={count}
|
|
231
|
+
loading={loading}
|
|
232
|
+
source={source}
|
|
233
|
+
onOpen={onOpen}
|
|
234
|
+
onAsk={onAsk}
|
|
235
|
+
/>
|
|
214
236
|
</div>
|
|
215
237
|
)}
|
|
216
238
|
<MingoAiButton
|