@flamingo-stack/openframe-frontend-core 0.0.730 → 0.0.732
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/aicpa-soc2-logo-icon-MLDYZA5S.cjs +7 -0
- package/dist/build/export-map.json +1 -1
- package/dist/{chunk-SKDQ2SLJ.cjs → chunk-22ZK7BA3.cjs} +1345 -1127
- package/dist/{chunk-5RMCAY6Y.cjs → chunk-27TMRMOM.cjs} +6 -4
- package/dist/{chunk-P4YHBHP4.cjs → chunk-3BLBWZ6A.cjs} +7 -7
- package/dist/{chunk-2T2TH5DF.cjs → chunk-52HFGZCI.cjs} +14 -12
- package/dist/{chunk-L7Y7KDTM.cjs → chunk-5HMGK3N6.cjs} +20 -20
- package/dist/{chunk-66QTEDJL.cjs → chunk-5HSMTSHU.cjs} +28 -28
- package/dist/{chunk-WTURHKM2.cjs → chunk-6HHUU56Y.cjs} +16 -16
- package/dist/{chunk-AIW4KZQT.cjs → chunk-6KDGIOLP.cjs} +89 -89
- package/dist/{chunk-4XQXTQUK.cjs → chunk-6N5NQRQA.cjs} +8 -6
- package/dist/{chunk-5KLNEFZZ.cjs → chunk-7DUXR4HL.cjs} +3 -3
- package/dist/chunk-AEVGCB3Y.cjs +417 -0
- package/dist/{chunk-A7T3P5Q5.cjs → chunk-BDTX2OEE.cjs} +32 -32
- package/dist/{chunk-Q5GR7LKV.cjs → chunk-BS4EZZCN.cjs} +15 -15
- package/dist/{chunk-JNDR5N3T.cjs → chunk-C5NERNE6.cjs} +93 -93
- package/dist/{chunk-UHJG2BDI.cjs → chunk-CC3LINHF.cjs} +98 -50
- package/dist/{chunk-FRET5WH3.cjs → chunk-CKR42OBK.cjs} +4 -2
- package/dist/{chunk-GJPAS4RJ.cjs → chunk-CT342EJU.cjs} +6 -4
- package/dist/{chunk-PGFR4CDB.cjs → chunk-CUF3IYIB.cjs} +40 -40
- package/dist/{chunk-YHFXQ5OR.cjs → chunk-E3N24573.cjs} +9 -9
- package/dist/{chunk-24KWUFWA.cjs → chunk-G37LT2ID.cjs} +43 -39
- package/dist/{chunk-UG7Q3HQH.cjs → chunk-GID62YEN.cjs} +3 -3
- package/dist/{chunk-NDHQ7JLZ.cjs → chunk-GKHWXI25.cjs} +11 -15
- package/dist/chunk-HELVKMRG.cjs +28 -0
- package/dist/{chunk-KMMV562E.cjs → chunk-HH4BMYDX.cjs} +32 -379
- package/dist/{chunk-FGA6T2XT.cjs → chunk-I46MQ4R5.cjs} +82 -82
- package/dist/{chunk-YJXUJWHN.cjs → chunk-J7SZOZOS.cjs} +28 -26
- package/dist/{chunk-NXCV35RR.cjs → chunk-KLXHCNDC.cjs} +3 -3
- package/dist/{chunk-6KD2XUQZ.cjs → chunk-LRQITIEC.cjs} +28 -26
- package/dist/chunk-MANNIJ42.cjs +967 -0
- package/dist/{chunk-2V62Y67F.cjs → chunk-MEDDKM3A.cjs} +4 -4
- package/dist/{chunk-CLA3UGKT.cjs → chunk-MVZ6XFPK.cjs} +12 -12
- package/dist/{chunk-TI2IFCZG.cjs → chunk-N466AJGN.cjs} +17 -17
- package/dist/{chunk-TW2SES5W.cjs → chunk-NCGAP3U4.cjs} +4 -2
- package/dist/{chunk-DINGZJ37.cjs → chunk-NYY25425.cjs} +2 -2
- package/dist/{chunk-HVZBIXCZ.cjs → chunk-O2RPIGSG.cjs} +6 -4
- package/dist/{chunk-YRZB4BMZ.cjs → chunk-OI7VCXYU.cjs} +48 -50
- package/dist/{chunk-XA436AER.cjs → chunk-OJ3XU3YZ.cjs} +4 -4
- package/dist/{chunk-UYKL2AXE.cjs → chunk-OKW5OAFJ.cjs} +8 -6
- package/dist/{chunk-6NKLR5QN.cjs → chunk-PRWBVIWW.cjs} +59 -59
- package/dist/chunk-PX7FY655.cjs +114 -0
- package/dist/{chunk-CD5YBUJK.cjs → chunk-QMTC3BK3.cjs} +23 -21
- package/dist/{chunk-VQMWBQUJ.cjs → chunk-R4QMR6S4.cjs} +14 -12
- package/dist/{chunk-NB5BYOTM.cjs → chunk-RC32WBPL.cjs} +6 -4
- package/dist/{chunk-CDLDAQBA.cjs → chunk-RIXGLS5Y.cjs} +7 -7
- package/dist/{chunk-2I3XU2IB.cjs → chunk-SJRR745G.cjs} +63 -60
- package/dist/{chunk-XSPL7RXL.cjs → chunk-TLDCSTTQ.cjs} +12 -12
- package/dist/{chunk-3YHVQ34L.cjs → chunk-XOQ2UUVS.cjs} +93 -95
- package/dist/{chunk-YPM3ALIW.cjs → chunk-YGKVHSNQ.cjs} +42 -42
- package/dist/{chunk-4NFVFTD6.cjs → chunk-ZWMPAFGB.cjs} +238 -238
- package/dist/{chunk-GVTCHXW2.cjs → chunk-ZWUIRQNY.cjs} +28 -26
- package/dist/clickup-icon-3SETH2MM.cjs +7 -0
- package/dist/clickup-logo-icon-DJKBEFMR.cjs +7 -0
- package/dist/{cloud-tenants-VV6UQE7J.cjs → cloud-tenants-ILRE74JY.cjs} +36 -36
- package/dist/components/agent-identity.d.ts +8 -0
- package/dist/components/agent-identity.d.ts.map +1 -1
- package/dist/components/agent-identity.js +13 -1
- package/dist/components/case-studies/index.cjs +49 -49
- package/dist/components/chat/entity-cards/entity-portrait-card.js +1 -1
- package/dist/components/chat/index.cjs +30 -30
- package/dist/components/chat/types/entities/program-types.d.ts +1 -23
- package/dist/components/chat/types/entities/program-types.d.ts.map +1 -1
- package/dist/components/chat/types/entities/program-types.js +1 -9
- package/dist/components/chat/utils/icon-loading.d.ts +35 -2
- package/dist/components/chat/utils/icon-loading.d.ts.map +1 -1
- package/dist/components/chat/utils/icon-loading.js +31 -9
- package/dist/components/contact/index.cjs +37 -37
- package/dist/components/docs/index.cjs +40 -40
- package/dist/components/embeds/index.cjs +37 -37
- package/dist/components/faq/index.cjs +37 -37
- package/dist/components/features/index.cjs +38 -36
- package/dist/components/features/video-bites-shared.cjs +8 -0
- package/dist/components/features/video-bites-shared.d.ts +25 -0
- package/dist/components/features/video-bites-shared.d.ts.map +1 -1
- package/dist/components/features/video-bites-shared.js +8 -0
- package/dist/components/help-center-pages/index.cjs +152 -152
- package/dist/components/icons-v2-generated/brand-logos/clickup-icon.d.ts +1 -1
- package/dist/components/icons-v2-generated/brand-logos/clickup-icon.d.ts.map +1 -1
- package/dist/components/icons-v2-generated/brand-logos/clickup-icon.js +6 -4
- package/dist/components/icons-v2-generated/brand-logos/clickup-logo-icon.d.ts +1 -1
- package/dist/components/icons-v2-generated/brand-logos/clickup-logo-icon.d.ts.map +1 -1
- package/dist/components/icons-v2-generated/brand-logos/clickup-logo-icon.js +6 -4
- package/dist/components/icons-v2-generated/brand-logos/elestio-logo-grey-icon.d.ts +1 -1
- package/dist/components/icons-v2-generated/brand-logos/elestio-logo-grey-icon.d.ts.map +1 -1
- package/dist/components/icons-v2-generated/brand-logos/elestio-logo-grey-icon.js +4 -2
- package/dist/components/icons-v2-generated/brand-logos/elestio-logo-icon.d.ts +1 -1
- package/dist/components/icons-v2-generated/brand-logos/elestio-logo-icon.d.ts.map +1 -1
- package/dist/components/icons-v2-generated/brand-logos/elestio-logo-icon.js +14 -12
- package/dist/components/icons-v2-generated/brand-logos/gemini-logo-icon.d.ts +1 -1
- package/dist/components/icons-v2-generated/brand-logos/gemini-logo-icon.d.ts.map +1 -1
- package/dist/components/icons-v2-generated/brand-logos/gemini-logo-icon.js +28 -26
- package/dist/components/icons-v2-generated/brand-logos/google-gemini-icon.d.ts +1 -1
- package/dist/components/icons-v2-generated/brand-logos/google-gemini-icon.d.ts.map +1 -1
- package/dist/components/icons-v2-generated/brand-logos/google-gemini-icon.js +28 -26
- package/dist/components/icons-v2-generated/brand-logos/google-gemini-logo-icon.d.ts +1 -1
- package/dist/components/icons-v2-generated/brand-logos/google-gemini-logo-icon.d.ts.map +1 -1
- package/dist/components/icons-v2-generated/brand-logos/google-gemini-logo-icon.js +28 -26
- package/dist/components/icons-v2-generated/brand-logos/google-sheets-icon.d.ts +1 -1
- package/dist/components/icons-v2-generated/brand-logos/google-sheets-icon.d.ts.map +1 -1
- package/dist/components/icons-v2-generated/brand-logos/google-sheets-icon.js +4 -2
- package/dist/components/icons-v2-generated/brand-logos/meshcentral-logo-grey-icon.d.ts +1 -1
- package/dist/components/icons-v2-generated/brand-logos/meshcentral-logo-grey-icon.d.ts.map +1 -1
- package/dist/components/icons-v2-generated/brand-logos/meshcentral-logo-grey-icon.js +8 -6
- package/dist/components/icons-v2-generated/brand-logos/meshcentral-logo-icon.d.ts +1 -1
- package/dist/components/icons-v2-generated/brand-logos/meshcentral-logo-icon.d.ts.map +1 -1
- package/dist/components/icons-v2-generated/brand-logos/meshcentral-logo-icon.js +8 -6
- package/dist/components/icons-v2-generated/brand-logos/winget-logo-icon.d.ts +1 -1
- package/dist/components/icons-v2-generated/brand-logos/winget-logo-icon.d.ts.map +1 -1
- package/dist/components/icons-v2-generated/brand-logos/winget-logo-icon.js +14 -12
- package/dist/components/icons-v2-generated/compliance-logos/aicpa-soc2-logo-icon.d.ts +1 -1
- package/dist/components/icons-v2-generated/compliance-logos/aicpa-soc2-logo-icon.d.ts.map +1 -1
- package/dist/components/icons-v2-generated/compliance-logos/aicpa-soc2-logo-icon.js +6 -4
- package/dist/components/icons-v2-generated/compliance-logos/eu-logo-icon.d.ts +1 -1
- package/dist/components/icons-v2-generated/compliance-logos/eu-logo-icon.d.ts.map +1 -1
- package/dist/components/icons-v2-generated/compliance-logos/eu-logo-icon.js +11 -15
- package/dist/components/icons-v2-generated/icon-names.d.ts +5 -0
- package/dist/components/icons-v2-generated/icon-names.d.ts.map +1 -0
- package/dist/components/icons-v2-generated/icon-names.js +10 -0
- package/dist/components/icons-v2-generated/index.cjs +15 -15
- package/dist/components/icons-v2-generated/interface/empty-vendor-icon.d.ts +1 -1
- package/dist/components/icons-v2-generated/interface/empty-vendor-icon.d.ts.map +1 -1
- package/dist/components/icons-v2-generated/interface/empty-vendor-icon.js +6 -4
- package/dist/components/index.cjs +103 -96
- package/dist/components/meeting-scheduler/index.cjs +98 -98
- package/dist/components/navigation/index.cjs +39 -39
- package/dist/components/onboarding-guides/index.cjs +39 -39
- package/dist/components/product-demo/index.cjs +8 -8
- package/dist/components/product-demo/screens/remote-desktop-picture.d.ts.map +1 -1
- package/dist/components/product-demo/screens/remote-desktop-picture.js +2 -1
- package/dist/components/related-content/index.cjs +10 -10
- package/dist/components/shared/product-release/product-release-card.js +1 -1
- package/dist/components/tickets/index.cjs +40 -40
- package/dist/components/ui/device-wallpaper.d.ts +7 -0
- package/dist/components/ui/device-wallpaper.d.ts.map +1 -0
- package/dist/components/ui/device-wallpaper.js +5 -0
- package/dist/components/ui/feature-list.d.ts +9 -4
- package/dist/components/ui/feature-list.d.ts.map +1 -1
- package/dist/components/ui/feature-list.js +26 -35
- package/dist/components/ui/index.cjs +42 -36
- package/dist/components/ui/index.d.ts +3 -1
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +3 -1
- package/dist/components/ui/notification-stack.d.ts +33 -0
- package/dist/components/ui/notification-stack.d.ts.map +1 -0
- package/dist/components/ui/notification-stack.js +78 -0
- package/dist/components/ui/numbered-step.d.ts +29 -0
- package/dist/components/ui/numbered-step.d.ts.map +1 -0
- package/dist/components/ui/numbered-step.js +57 -0
- package/dist/components/ui/phone-frame.d.ts +14 -9
- package/dist/components/ui/phone-frame.d.ts.map +1 -1
- package/dist/components/ui/phone-frame.js +50 -6
- package/dist/components/ui/phone-glyphs/lock-camera-glyph.d.ts +5 -0
- package/dist/components/ui/phone-glyphs/lock-camera-glyph.d.ts.map +1 -0
- package/dist/components/ui/phone-glyphs/lock-camera-glyph.js +14 -0
- package/dist/components/ui/phone-glyphs/lock-flashlight-glyph.d.ts +5 -0
- package/dist/components/ui/phone-glyphs/lock-flashlight-glyph.d.ts.map +1 -0
- package/dist/components/ui/phone-glyphs/lock-flashlight-glyph.js +14 -0
- package/dist/components/ui/phone-glyphs/status-bar-glyphs.d.ts +5 -0
- package/dist/components/ui/phone-glyphs/status-bar-glyphs.d.ts.map +1 -0
- package/dist/components/ui/phone-glyphs/status-bar-glyphs.js +68 -0
- package/dist/components/ui/photo-wall.d.ts.map +1 -1
- package/dist/components/ui/photo-wall.js +4 -1
- package/dist/components/ui/snap-carousel.d.ts +5 -8
- package/dist/components/ui/snap-carousel.d.ts.map +1 -1
- package/dist/components/ui/snap-carousel.js +2 -27
- package/dist/components/ui/tab-navigation.d.ts +8 -1
- package/dist/components/ui/tab-navigation.d.ts.map +1 -1
- package/dist/components/ui/tab-navigation.js +30 -20
- package/dist/{devices-X72Z4QMT.cjs → devices-A6SFNGE4.cjs} +37 -37
- package/dist/elestio-logo-grey-icon-DV7P3JLT.cjs +7 -0
- package/dist/elestio-logo-icon-34ILAIDI.cjs +7 -0
- package/dist/{embeddable-chat-TETIRLQD.cjs → embeddable-chat-BKPYNOIM.cjs} +105 -105
- package/dist/empty-vendor-icon-XZYOZ4EP.cjs +7 -0
- package/dist/eu-logo-icon-EYOX3UC7.cjs +7 -0
- package/dist/gemini-logo-icon-DNACTHIK.cjs +7 -0
- package/dist/google-gemini-icon-TZHJZ4IQ.cjs +7 -0
- package/dist/google-gemini-logo-icon-4XQVV5NN.cjs +7 -0
- package/dist/google-sheets-icon-UAAEBTR7.cjs +7 -0
- package/dist/hooks/index.cjs +9 -9
- package/dist/hooks/ui/use-autoplay.d.ts +50 -13
- package/dist/hooks/ui/use-autoplay.d.ts.map +1 -1
- package/dist/hooks/ui/use-autoplay.js +76 -13
- package/dist/hooks/ui/use-in-view.d.ts +8 -0
- package/dist/hooks/ui/use-in-view.d.ts.map +1 -1
- package/dist/hooks/ui/use-in-view.js +21 -36
- package/dist/hooks/use-agent-identities.d.ts +6 -0
- package/dist/hooks/use-agent-identities.d.ts.map +1 -1
- package/dist/hooks/use-scenario-player.d.ts +26 -9
- package/dist/hooks/use-scenario-player.d.ts.map +1 -1
- package/dist/hooks/use-scenario-player.js +12 -9
- package/dist/{chunk-SI24RMI5.cjs → icon-loaders-OLGJZGRP.cjs} +16 -950
- package/dist/index.cjs +72 -65
- package/dist/{knowledge-HWBSPQ7M.cjs → knowledge-5ZCVKUYV.cjs} +37 -37
- package/dist/{logs-IZ4QTHPI.cjs → logs-CL4OJASB.cjs} +44 -44
- package/dist/meshcentral-logo-grey-icon-UCRYV3IC.cjs +7 -0
- package/dist/meshcentral-logo-icon-76NSLOXF.cjs +7 -0
- package/dist/{policies-VHQR7JR5.cjs → policies-7D44ZVS5.cjs} +40 -40
- package/dist/{remote-session-IR3YCXSR.cjs → remote-session-QB3CIZRM.cjs} +24 -23
- package/dist/schemas/contact-schema.cjs +31 -11
- package/dist/schemas/contact-schema.d.ts +1 -1
- package/dist/schemas/contact-schema.d.ts.map +1 -1
- package/dist/schemas/contact-schema.js +1 -1
- package/dist/schemas/meeting-booking-schema.cjs +34 -14
- package/dist/schemas/meeting-booking-schema.d.ts +1 -1
- package/dist/schemas/meeting-booking-schema.d.ts.map +1 -1
- package/dist/schemas/meeting-booking-schema.js +1 -1
- package/dist/{software-update-QLOVC6EX.cjs → software-update-AX6TZL26.cjs} +40 -40
- package/dist/{tickets-board-YONLQB6F.cjs → tickets-board-7FAV2YWF.cjs} +27 -27
- package/dist/utils/index.cjs +2004 -1959
- package/dist/winget-logo-icon-GBS342G4.cjs +7 -0
- package/package.json +1 -1
- package/src/components/agent-identity.tsx +20 -1
- package/src/components/chat/entity-cards/entity-portrait-card.tsx +1 -1
- package/src/components/chat/types/entities/program-types.ts +4 -30
- package/src/components/chat/utils/icon-loading.tsx +50 -9
- package/src/components/features/video-bites-shared.ts +30 -0
- package/src/components/icons-v2-generated/brand-logos/clickup-icon.tsx +7 -5
- package/src/components/icons-v2-generated/brand-logos/clickup-logo-icon.tsx +7 -5
- package/src/components/icons-v2-generated/brand-logos/elestio-logo-grey-icon.tsx +5 -3
- package/src/components/icons-v2-generated/brand-logos/elestio-logo-icon.tsx +15 -13
- package/src/components/icons-v2-generated/brand-logos/gemini-logo-icon.tsx +29 -27
- package/src/components/icons-v2-generated/brand-logos/google-gemini-icon.tsx +29 -27
- package/src/components/icons-v2-generated/brand-logos/google-gemini-logo-icon.tsx +29 -27
- package/src/components/icons-v2-generated/brand-logos/google-sheets-icon.tsx +5 -3
- package/src/components/icons-v2-generated/brand-logos/meshcentral-logo-grey-icon.tsx +9 -7
- package/src/components/icons-v2-generated/brand-logos/meshcentral-logo-icon.tsx +9 -7
- package/src/components/icons-v2-generated/brand-logos/winget-logo-icon.tsx +15 -13
- package/src/components/icons-v2-generated/compliance-logos/aicpa-soc2-logo-icon.tsx +92 -90
- package/src/components/icons-v2-generated/compliance-logos/eu-logo-icon.tsx +51 -52
- package/src/components/icons-v2-generated/icon-names.ts +11 -0
- package/src/components/icons-v2-generated/interface/empty-vendor-icon.tsx +7 -5
- package/src/components/product-demo/screens/remote-desktop-picture.tsx +2 -1
- package/src/components/shared/product-release/product-release-card.tsx +1 -1
- package/src/components/ui/device-wallpaper.ts +7 -0
- package/src/components/ui/feature-list.tsx +24 -30
- package/src/components/ui/index.ts +3 -1
- package/src/components/ui/notification-stack.tsx +133 -0
- package/src/components/ui/numbered-step.tsx +81 -0
- package/src/components/ui/phone-frame.tsx +83 -19
- package/src/components/ui/phone-glyphs/lock-camera-glyph.tsx +14 -0
- package/src/components/ui/phone-glyphs/lock-flashlight-glyph.tsx +14 -0
- package/src/components/ui/phone-glyphs/status-bar-glyphs.tsx +45 -0
- package/src/components/ui/photo-wall.tsx +6 -0
- package/src/components/ui/snap-carousel.tsx +6 -38
- package/src/components/ui/tab-navigation.tsx +49 -21
- package/src/hooks/ui/use-autoplay.ts +144 -27
- package/src/hooks/ui/use-in-view.ts +31 -38
- package/src/hooks/use-agent-identities.ts +6 -0
- package/src/hooks/use-scenario-player.ts +44 -20
- package/src/schemas/contact-schema.ts +1 -1
- package/src/schemas/meeting-booking-schema.ts +1 -1
- package/src/styles/fonts.css +26 -0
- package/src/styles/ods-design-tokens.css +4 -2
- package/dist/aicpa-soc2-logo-icon-CJ5JRV6J.cjs +0 -7
- package/dist/chunk-73MDSN5A.cjs +0 -99
- package/dist/chunk-BE2WAMG5.cjs +0 -54
- package/dist/chunk-LCTDHLDL.cjs +0 -43
- package/dist/clickup-icon-CBBUZUVQ.cjs +0 -7
- package/dist/clickup-logo-icon-CGDKKISS.cjs +0 -7
- package/dist/components/ui/playback-toggle.d.ts +0 -24
- package/dist/components/ui/playback-toggle.d.ts.map +0 -1
- package/dist/components/ui/playback-toggle.js +0 -32
- package/dist/elestio-logo-grey-icon-Y5OFW4OO.cjs +0 -7
- package/dist/elestio-logo-icon-X7TTQAYP.cjs +0 -7
- package/dist/empty-vendor-icon-3RKCZUUR.cjs +0 -7
- package/dist/eu-logo-icon-N7QVPGG3.cjs +0 -7
- package/dist/gemini-logo-icon-QOPGATSZ.cjs +0 -7
- package/dist/google-gemini-icon-7GWWF6O6.cjs +0 -7
- package/dist/google-gemini-logo-icon-Z3GHPMVN.cjs +0 -7
- package/dist/google-sheets-icon-7MJ3LV4P.cjs +0 -7
- package/dist/meshcentral-logo-grey-icon-3VFJQMV2.cjs +0 -7
- package/dist/meshcentral-logo-icon-MDVBWMP5.cjs +0 -7
- package/dist/winget-logo-icon-XVZJ4QDM.cjs +0 -7
- package/src/components/ui/playback-toggle.tsx +0 -53
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkPX7FY655cjs = require('./chunk-PX7FY655.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
var _chunkMANNIJ42cjs = require('./chunk-MANNIJ42.cjs');
|
|
12
|
+
|
|
13
|
+
// src/utils/color-analysis.ts
|
|
14
|
+
var DESIGN_PALETTE = [
|
|
15
|
+
{ name: "yellow", hex: "#FFC008", rgb: [255, 192, 8] },
|
|
16
|
+
{ name: "black", hex: "#161616", rgb: [22, 22, 22] },
|
|
17
|
+
{ name: "gray", hex: "#888888", rgb: [136, 136, 136] }
|
|
18
|
+
];
|
|
19
|
+
function hexToRgb(hex) {
|
|
20
|
+
const normalized = hex.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, (_, r, g, b) => `${r}${r}${g}${g}${b}${b}`);
|
|
21
|
+
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(normalized);
|
|
22
|
+
return result ? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)] : [0, 0, 0];
|
|
23
|
+
}
|
|
24
|
+
function getLuminance(rgb) {
|
|
25
|
+
const [r, g, b] = rgb.map((channel) => {
|
|
26
|
+
const c = channel / 255;
|
|
27
|
+
return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
|
|
28
|
+
});
|
|
29
|
+
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
|
30
|
+
}
|
|
31
|
+
function getContrastRatio(color1, color2) {
|
|
32
|
+
const lum1 = getLuminance(color1);
|
|
33
|
+
const lum2 = getLuminance(color2);
|
|
34
|
+
const brightest = Math.max(lum1, lum2);
|
|
35
|
+
const darkest = Math.min(lum1, lum2);
|
|
36
|
+
return (brightest + 0.05) / (darkest + 0.05);
|
|
37
|
+
}
|
|
38
|
+
function pickReadableTextColor(bgHex) {
|
|
39
|
+
const bg = hexToRgb(bgHex);
|
|
40
|
+
const darkContrast = getContrastRatio(bg, [26, 26, 26]);
|
|
41
|
+
const lightContrast = getContrastRatio(bg, [250, 250, 250]);
|
|
42
|
+
return darkContrast >= lightContrast ? "dark" : "light";
|
|
43
|
+
}
|
|
44
|
+
function extractDominantColor(canvas) {
|
|
45
|
+
const ctx = canvas.getContext("2d");
|
|
46
|
+
if (!ctx) return [128, 128, 128];
|
|
47
|
+
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
|
48
|
+
const data = imageData.data;
|
|
49
|
+
const sampleSize = Math.max(1, Math.floor(data.length / (4 * 1e3)));
|
|
50
|
+
const colorCounts = {};
|
|
51
|
+
for (let i = 0; i < data.length; i += 4 * sampleSize) {
|
|
52
|
+
const r = data[i];
|
|
53
|
+
const g = data[i + 1];
|
|
54
|
+
const b = data[i + 2];
|
|
55
|
+
const alpha = data[i + 3];
|
|
56
|
+
if (alpha < 128) continue;
|
|
57
|
+
const bucketR = Math.round(r / 32) * 32;
|
|
58
|
+
const bucketG = Math.round(g / 32) * 32;
|
|
59
|
+
const bucketB = Math.round(b / 32) * 32;
|
|
60
|
+
const key = `${bucketR},${bucketG},${bucketB}`;
|
|
61
|
+
colorCounts[key] = (colorCounts[key] || 0) + 1;
|
|
62
|
+
}
|
|
63
|
+
let maxCount = 0;
|
|
64
|
+
let dominantColor = [128, 128, 128];
|
|
65
|
+
for (const [colorKey, count] of Object.entries(colorCounts)) {
|
|
66
|
+
if (count > maxCount) {
|
|
67
|
+
maxCount = count;
|
|
68
|
+
const [r, g, b] = colorKey.split(",").map(Number);
|
|
69
|
+
dominantColor = [r, g, b];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return dominantColor;
|
|
73
|
+
}
|
|
74
|
+
function getBestContrastColor(imageColor) {
|
|
75
|
+
let bestColor = DESIGN_PALETTE[0];
|
|
76
|
+
let bestContrast = 0;
|
|
77
|
+
for (const color of DESIGN_PALETTE) {
|
|
78
|
+
const contrast = getContrastRatio(imageColor, color.rgb);
|
|
79
|
+
if (contrast > bestContrast) {
|
|
80
|
+
bestContrast = contrast;
|
|
81
|
+
bestColor = color;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return bestContrast >= 3 ? bestColor : DESIGN_PALETTE.find((c) => c.name === "black") || bestColor;
|
|
85
|
+
}
|
|
86
|
+
function analyzeImageColor(imageSrc) {
|
|
87
|
+
return new Promise((resolve, reject) => {
|
|
88
|
+
const img = new Image();
|
|
89
|
+
img.crossOrigin = "anonymous";
|
|
90
|
+
img.onload = () => {
|
|
91
|
+
try {
|
|
92
|
+
const canvas = document.createElement("canvas");
|
|
93
|
+
const ctx = canvas.getContext("2d");
|
|
94
|
+
if (!ctx) {
|
|
95
|
+
reject(new Error("Could not get canvas context"));
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const maxSize = 100;
|
|
99
|
+
const scale = Math.min(maxSize / img.width, maxSize / img.height);
|
|
100
|
+
canvas.width = img.width * scale;
|
|
101
|
+
canvas.height = img.height * scale;
|
|
102
|
+
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
|
|
103
|
+
const dominantColor = extractDominantColor(canvas);
|
|
104
|
+
const bestContrastColor = getBestContrastColor(dominantColor);
|
|
105
|
+
resolve(bestContrastColor);
|
|
106
|
+
} catch (error) {
|
|
107
|
+
reject(error);
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
img.onerror = () => reject(new Error("Failed to load image"));
|
|
111
|
+
img.src = imageSrc;
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
async function extractImageEdgeColorAsync(imageUrl) {
|
|
115
|
+
return new Promise((resolve) => {
|
|
116
|
+
if (typeof window === "undefined") {
|
|
117
|
+
resolve("#000000");
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const img = new Image();
|
|
121
|
+
img.crossOrigin = "anonymous";
|
|
122
|
+
img.onload = () => {
|
|
123
|
+
try {
|
|
124
|
+
const canvas = document.createElement("canvas");
|
|
125
|
+
const ctx = canvas.getContext("2d");
|
|
126
|
+
if (!ctx) {
|
|
127
|
+
resolve("#000000");
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const maxSize = 50;
|
|
131
|
+
const scale = Math.min(maxSize / img.naturalWidth, maxSize / img.naturalHeight);
|
|
132
|
+
const w = Math.round(img.naturalWidth * scale);
|
|
133
|
+
const h = Math.round(img.naturalHeight * scale);
|
|
134
|
+
canvas.width = w;
|
|
135
|
+
canvas.height = h;
|
|
136
|
+
ctx.drawImage(img, 0, 0, w, h);
|
|
137
|
+
const data = ctx.getImageData(0, 0, w, h).data;
|
|
138
|
+
const edgeW = Math.max(2, Math.round(w * 0.15));
|
|
139
|
+
const edgeH = Math.max(2, Math.round(h * 0.15));
|
|
140
|
+
const bucketSize = 32;
|
|
141
|
+
const buckets = /* @__PURE__ */ new Map();
|
|
142
|
+
for (let y = 0; y < h; y++) {
|
|
143
|
+
for (let x = 0; x < w; x++) {
|
|
144
|
+
if (!(x < edgeW || x >= w - edgeW || y < edgeH || y >= h - edgeH)) continue;
|
|
145
|
+
const i = (y * w + x) * 4;
|
|
146
|
+
if (data[i + 3] < 128) continue;
|
|
147
|
+
const br = Math.floor(data[i] / bucketSize) * bucketSize;
|
|
148
|
+
const bg = Math.floor(data[i + 1] / bucketSize) * bucketSize;
|
|
149
|
+
const bb = Math.floor(data[i + 2] / bucketSize) * bucketSize;
|
|
150
|
+
const key = `${br},${bg},${bb}`;
|
|
151
|
+
const existing = buckets.get(key);
|
|
152
|
+
if (existing) {
|
|
153
|
+
existing.r += data[i];
|
|
154
|
+
existing.g += data[i + 1];
|
|
155
|
+
existing.b += data[i + 2];
|
|
156
|
+
existing.count++;
|
|
157
|
+
} else {
|
|
158
|
+
buckets.set(key, { r: data[i], g: data[i + 1], b: data[i + 2], count: 1 });
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
let best = { r: 0, g: 0, b: 0, count: 0 };
|
|
163
|
+
for (const b2 of buckets.values()) {
|
|
164
|
+
if (b2.count > best.count) best = b2;
|
|
165
|
+
}
|
|
166
|
+
if (best.count === 0) {
|
|
167
|
+
resolve("#000000");
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
const r = Math.round(best.r / best.count), g = Math.round(best.g / best.count), b = Math.round(best.b / best.count);
|
|
171
|
+
resolve(
|
|
172
|
+
`#${r.toString(16).padStart(2, "0")}${g.toString(16).padStart(2, "0")}${b.toString(16).padStart(2, "0")}`
|
|
173
|
+
);
|
|
174
|
+
} catch (e) {
|
|
175
|
+
resolve("#000000");
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
img.onerror = () => resolve("#000000");
|
|
179
|
+
img.src = imageUrl;
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// src/utils/ods-color-tokens-stub.ts
|
|
184
|
+
var colorTokens = {
|
|
185
|
+
primary: "#FFC008",
|
|
186
|
+
secondary: "#161616",
|
|
187
|
+
background: "#FAFAFA",
|
|
188
|
+
surface: "#FFFFFF",
|
|
189
|
+
text: {
|
|
190
|
+
primary: "#161616",
|
|
191
|
+
secondary: "#666666",
|
|
192
|
+
inverse: "#FFFFFF"
|
|
193
|
+
},
|
|
194
|
+
border: "#E5E5E5"
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
// src/utils/ods-color-utils.ts
|
|
198
|
+
var TOKEN_MAP = colorTokens;
|
|
199
|
+
function lookupToken(tokenKey) {
|
|
200
|
+
const value = TOKEN_MAP[tokenKey];
|
|
201
|
+
return typeof value === "string" ? value : void 0;
|
|
202
|
+
}
|
|
203
|
+
function getODSToken(category, color, variant = "base") {
|
|
204
|
+
const tokenKey = `${category}-${color}-${variant}`;
|
|
205
|
+
return lookupToken(tokenKey);
|
|
206
|
+
}
|
|
207
|
+
function getCurrentPlatform() {
|
|
208
|
+
if (typeof window === "undefined") {
|
|
209
|
+
return process.env.NEXT_PUBLIC_APP_TYPE || "openmsp";
|
|
210
|
+
}
|
|
211
|
+
const domPlatform = document.documentElement.getAttribute("data-app-type");
|
|
212
|
+
if (domPlatform) {
|
|
213
|
+
return domPlatform;
|
|
214
|
+
}
|
|
215
|
+
return process.env.NEXT_PUBLIC_APP_TYPE || "openmsp";
|
|
216
|
+
}
|
|
217
|
+
function switchPlatformTheme(platform) {
|
|
218
|
+
if (typeof window === "undefined") return;
|
|
219
|
+
const root = document.documentElement;
|
|
220
|
+
root.setAttribute("data-app-type", platform);
|
|
221
|
+
window.dispatchEvent(
|
|
222
|
+
new CustomEvent("platformThemeChanged", {
|
|
223
|
+
detail: { platform }
|
|
224
|
+
})
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
function getSemanticColor(semanticName, platform) {
|
|
228
|
+
if (typeof window === "undefined") return void 0;
|
|
229
|
+
const currentPlatform = platform || getCurrentPlatform();
|
|
230
|
+
const originalPlatform = getCurrentPlatform();
|
|
231
|
+
if (currentPlatform !== originalPlatform) {
|
|
232
|
+
switchPlatformTheme(currentPlatform);
|
|
233
|
+
}
|
|
234
|
+
const testElement = document.createElement("div");
|
|
235
|
+
document.body.appendChild(testElement);
|
|
236
|
+
const computedStyle = getComputedStyle(testElement);
|
|
237
|
+
const colorValue = computedStyle.getPropertyValue(`--color-${semanticName}`);
|
|
238
|
+
document.body.removeChild(testElement);
|
|
239
|
+
if (currentPlatform !== originalPlatform) {
|
|
240
|
+
switchPlatformTheme(originalPlatform);
|
|
241
|
+
}
|
|
242
|
+
return colorValue.trim() || void 0;
|
|
243
|
+
}
|
|
244
|
+
function getPlatformConfig(platform) {
|
|
245
|
+
const currentPlatform = platform || getCurrentPlatform();
|
|
246
|
+
const isDarkTheme = _chunkMANNIJ42cjs.PLATFORM_THEME === "dark";
|
|
247
|
+
return {
|
|
248
|
+
platform: currentPlatform,
|
|
249
|
+
accentColor: _chunkMANNIJ42cjs.getPlatformAccentColor.call(void 0, currentPlatform),
|
|
250
|
+
isDarkTheme,
|
|
251
|
+
isLightTheme: !isDarkTheme,
|
|
252
|
+
brandName: _chunkMANNIJ42cjs.getPlatformDisplayName.call(void 0, currentPlatform)
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
function usePlatformColors(platform) {
|
|
256
|
+
const currentPlatform = platform || getCurrentPlatform();
|
|
257
|
+
const config = getPlatformConfig(currentPlatform);
|
|
258
|
+
return {
|
|
259
|
+
platform: currentPlatform,
|
|
260
|
+
accentColor: config.accentColor,
|
|
261
|
+
isDarkTheme: config.isDarkTheme,
|
|
262
|
+
isLightTheme: config.isLightTheme,
|
|
263
|
+
brandName: config.brandName,
|
|
264
|
+
getToken: (category, color, variant) => getODSToken(category, color, variant),
|
|
265
|
+
switchTheme: (newPlatform) => switchPlatformTheme(newPlatform),
|
|
266
|
+
getSemanticColor: (semanticName) => getSemanticColor(semanticName, currentPlatform)
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
function getReadableTextColor(hex) {
|
|
270
|
+
return pickReadableTextColor(hex) === "dark" ? "#212121" : "#fafafa";
|
|
271
|
+
}
|
|
272
|
+
var HEX_PATTERN = /^#[0-9a-fA-F]{6}$/;
|
|
273
|
+
function hexToRgb2(hex) {
|
|
274
|
+
if (!HEX_PATTERN.test(hex)) return null;
|
|
275
|
+
const n = Number.parseInt(hex.slice(1), 16);
|
|
276
|
+
return { r: n >> 16 & 255, g: n >> 8 & 255, b: n & 255 };
|
|
277
|
+
}
|
|
278
|
+
function rgbToHex(r, g, b) {
|
|
279
|
+
const to = (n) => _chunkPX7FY655cjs.clamp.call(void 0, Math.round(n), 0, 255).toString(16).padStart(2, "0");
|
|
280
|
+
return `#${to(r)}${to(g)}${to(b)}`;
|
|
281
|
+
}
|
|
282
|
+
var HOVER_DARKEN_STEP = 10;
|
|
283
|
+
var ACTIVE_DARKEN_STEP = 20;
|
|
284
|
+
function darkenByStep(hex, step) {
|
|
285
|
+
const rgb = hexToRgb2(hex);
|
|
286
|
+
if (!rgb) return hex;
|
|
287
|
+
return rgbToHex(rgb.r - step, rgb.g - step, rgb.b - step);
|
|
288
|
+
}
|
|
289
|
+
function deriveHoverColor(hex) {
|
|
290
|
+
return darkenByStep(hex, HOVER_DARKEN_STEP);
|
|
291
|
+
}
|
|
292
|
+
function deriveActiveColor(hex) {
|
|
293
|
+
return darkenByStep(hex, ACTIVE_DARKEN_STEP);
|
|
294
|
+
}
|
|
295
|
+
function rgbToHsl(r, g, b) {
|
|
296
|
+
const rn = r / 255;
|
|
297
|
+
const gn = g / 255;
|
|
298
|
+
const bn = b / 255;
|
|
299
|
+
const max = Math.max(rn, gn, bn);
|
|
300
|
+
const min = Math.min(rn, gn, bn);
|
|
301
|
+
const l = (max + min) / 2;
|
|
302
|
+
if (max === min) return { h: 0, s: 0, l: Math.round(l * 100) };
|
|
303
|
+
const d = max - min;
|
|
304
|
+
const s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
305
|
+
let h;
|
|
306
|
+
if (max === rn) h = (gn - bn) / d + (gn < bn ? 6 : 0);
|
|
307
|
+
else if (max === gn) h = (bn - rn) / d + 2;
|
|
308
|
+
else h = (rn - gn) / d + 4;
|
|
309
|
+
h *= 60;
|
|
310
|
+
return { h: Math.round(h), s: Math.round(s * 100), l: Math.round(l * 100) };
|
|
311
|
+
}
|
|
312
|
+
function hslToRgb(h, s, l) {
|
|
313
|
+
const sn = _chunkPX7FY655cjs.clamp.call(void 0, s, 0, 100) / 100;
|
|
314
|
+
const ln = _chunkPX7FY655cjs.clamp.call(void 0, l, 0, 100) / 100;
|
|
315
|
+
const hn = (h % 360 + 360) % 360;
|
|
316
|
+
if (sn === 0) {
|
|
317
|
+
const v = Math.round(ln * 255);
|
|
318
|
+
return { r: v, g: v, b: v };
|
|
319
|
+
}
|
|
320
|
+
const q = ln < 0.5 ? ln * (1 + sn) : ln + sn - ln * sn;
|
|
321
|
+
const p = 2 * ln - q;
|
|
322
|
+
const hue2rgb = (t) => {
|
|
323
|
+
let tn = t;
|
|
324
|
+
if (tn < 0) tn += 1;
|
|
325
|
+
if (tn > 1) tn -= 1;
|
|
326
|
+
if (tn < 1 / 6) return p + (q - p) * 6 * tn;
|
|
327
|
+
if (tn < 1 / 2) return q;
|
|
328
|
+
if (tn < 2 / 3) return p + (q - p) * (2 / 3 - tn) * 6;
|
|
329
|
+
return p;
|
|
330
|
+
};
|
|
331
|
+
const hk = hn / 360;
|
|
332
|
+
return {
|
|
333
|
+
r: Math.round(hue2rgb(hk + 1 / 3) * 255),
|
|
334
|
+
g: Math.round(hue2rgb(hk) * 255),
|
|
335
|
+
b: Math.round(hue2rgb(hk - 1 / 3) * 255)
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
// src/components/agent-identity.tsx
|
|
340
|
+
var _react = require('react');
|
|
341
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
342
|
+
var AGENT_GLYPH_COLOR = "var(--color-text-primary)";
|
|
343
|
+
var AGENT_PICTURE_CLASS = "rounded-full object-cover";
|
|
344
|
+
var AgentIdentityContext = _react.createContext.call(void 0, null);
|
|
345
|
+
function Provide({ icons, children }) {
|
|
346
|
+
const bySlug = _react.useMemo.call(void 0, () => {
|
|
347
|
+
const map = /* @__PURE__ */ new Map();
|
|
348
|
+
for (const [slug, icon] of Object.entries(_nullishCoalesce(icons, () => ( {})))) if (icon) map.set(slug, icon);
|
|
349
|
+
return map;
|
|
350
|
+
}, [icons]);
|
|
351
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AgentIdentityContext.Provider, { value: bySlug, children });
|
|
352
|
+
}
|
|
353
|
+
function ProvideFromServer({
|
|
354
|
+
endpoint,
|
|
355
|
+
enabled,
|
|
356
|
+
children
|
|
357
|
+
}) {
|
|
358
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Provide, { icons: _chunkPX7FY655cjs.useAgentIdentities.call(void 0, endpoint, enabled), children });
|
|
359
|
+
}
|
|
360
|
+
function AgentIdentityProvider({
|
|
361
|
+
icons,
|
|
362
|
+
endpoint = _chunkPX7FY655cjs.AGENT_IDENTITIES_API_PATH,
|
|
363
|
+
enabled = true,
|
|
364
|
+
children
|
|
365
|
+
}) {
|
|
366
|
+
if (icons) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Provide, { icons, children });
|
|
367
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ProvideFromServer, { endpoint, enabled, children });
|
|
368
|
+
}
|
|
369
|
+
function useAgentIdentityIcon(slug) {
|
|
370
|
+
const identities = _react.useContext.call(void 0, AgentIdentityContext);
|
|
371
|
+
const unprovided = !identities && Boolean(slug);
|
|
372
|
+
_react.useEffect.call(void 0, () => {
|
|
373
|
+
if (!unprovided || process.env.NODE_ENV === "production") return;
|
|
374
|
+
console.error(
|
|
375
|
+
`[AgentIdentity] the mark of "${slug}" was asked for with no <AgentIdentityProvider> above it: agents are drawn from their server identities only, so mount the provider once at the root.`
|
|
376
|
+
);
|
|
377
|
+
}, [unprovided, slug]);
|
|
378
|
+
return _optionalChain([identities, 'optionalAccess', _2 => _2.get, 'call', _3 => _3(_nullishCoalesce(slug, () => ( "")))]);
|
|
379
|
+
}
|
|
380
|
+
function useAgentAccents() {
|
|
381
|
+
const identities = _react.useContext.call(void 0, AgentIdentityContext);
|
|
382
|
+
return _react.useCallback.call(void 0,
|
|
383
|
+
(slug) => {
|
|
384
|
+
const accent = _optionalChain([identities, 'optionalAccess', _4 => _4.get, 'call', _5 => _5(_nullishCoalesce(slug, () => ( ""))), 'optionalAccess', _6 => _6.accent]);
|
|
385
|
+
return typeof accent === "string" && HEX_PATTERN.test(accent) ? accent : void 0;
|
|
386
|
+
},
|
|
387
|
+
[identities]
|
|
388
|
+
);
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
exports.DESIGN_PALETTE = DESIGN_PALETTE; exports.getContrastRatio = getContrastRatio; exports.pickReadableTextColor = pickReadableTextColor; exports.extractDominantColor = extractDominantColor; exports.getBestContrastColor = getBestContrastColor; exports.analyzeImageColor = analyzeImageColor; exports.extractImageEdgeColorAsync = extractImageEdgeColorAsync; exports.getCurrentPlatform = getCurrentPlatform; exports.switchPlatformTheme = switchPlatformTheme; exports.getSemanticColor = getSemanticColor; exports.getPlatformConfig = getPlatformConfig; exports.usePlatformColors = usePlatformColors; exports.getReadableTextColor = getReadableTextColor; exports.HEX_PATTERN = HEX_PATTERN; exports.hexToRgb = hexToRgb2; exports.rgbToHex = rgbToHex; exports.deriveHoverColor = deriveHoverColor; exports.deriveActiveColor = deriveActiveColor; exports.rgbToHsl = rgbToHsl; exports.hslToRgb = hslToRgb; exports.AGENT_GLYPH_COLOR = AGENT_GLYPH_COLOR; exports.AGENT_PICTURE_CLASS = AGENT_PICTURE_CLASS; exports.AgentIdentityProvider = AgentIdentityProvider; exports.useAgentIdentityIcon = useAgentIdentityIcon; exports.useAgentAccents = useAgentAccents;
|
|
@@ -2,29 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunk3BLBWZ6Acjs = require('./chunk-3BLBWZ6A.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunk6HHUU56Ycjs = require('./chunk-6HHUU56Y.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _chunk22ZK7BA3cjs = require('./chunk-22ZK7BA3.cjs');
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
var
|
|
19
|
+
var _chunkG37LT2IDcjs = require('./chunk-G37LT2ID.cjs');
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _chunk6KDGIOLPcjs = require('./chunk-6KDGIOLP.cjs');
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
var
|
|
27
|
+
var _chunkZWMPAFGBcjs = require('./chunk-ZWMPAFGB.cjs');
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
var _chunkHZJRERJWcjs = require('./chunk-HZJRERJW.cjs');
|
|
@@ -34,13 +34,13 @@ var _chunkHZJRERJWcjs = require('./chunk-HZJRERJW.cjs');
|
|
|
34
34
|
var _chunk7DNL734Scjs = require('./chunk-7DNL734S.cjs');
|
|
35
35
|
|
|
36
36
|
|
|
37
|
-
var
|
|
37
|
+
var _chunkTLDCSTTQcjs = require('./chunk-TLDCSTTQ.cjs');
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
|
|
43
|
-
var
|
|
43
|
+
var _chunkXOQ2UUVScjs = require('./chunk-XOQ2UUVS.cjs');
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
var _chunkEAY6ZUEScjs = require('./chunk-EAY6ZUES.cjs');
|
|
@@ -68,7 +68,7 @@ function OnboardingGuidesCatalogSkeleton() {
|
|
|
68
68
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "h-6 w-40 rounded bg-ods-border/70" }),
|
|
69
69
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "h-5 w-8 rounded-full bg-ods-text-secondary/20" })
|
|
70
70
|
] }),
|
|
71
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "ul", { className: "flex flex-col gap-4", children: Array.from({ length: cardCount }).map((_, cardIdx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "li", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
71
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "ul", { className: "flex flex-col gap-4", children: Array.from({ length: cardCount }).map((_, cardIdx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "li", { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXOQ2UUVScjs.OnboardingGuideCardSkeleton, { size: "catalog" }) }, cardIdx)) })
|
|
72
72
|
] }, sectionIdx)) })
|
|
73
73
|
] });
|
|
74
74
|
}
|
|
@@ -92,10 +92,10 @@ function OnboardingGuidesCatalogView({
|
|
|
92
92
|
const sectionValue = selfFetch ? _nullishCoalesce(searchParams.get("section"), () => ( "")) : initialSection;
|
|
93
93
|
const activeSection = sectionValue || "all";
|
|
94
94
|
const guidesQs = sectionValue ? `?section=${encodeURIComponent(sectionValue)}` : "";
|
|
95
|
-
const guidesRes =
|
|
95
|
+
const guidesRes = _chunkTLDCSTTQcjs.useSelfFetch.call(void 0,
|
|
96
96
|
selfFetch && guidesEndpoint ? `${guidesEndpoint}${guidesQs}` : null
|
|
97
97
|
);
|
|
98
|
-
const sectionsRes =
|
|
98
|
+
const sectionsRes = _chunkTLDCSTTQcjs.useSelfFetch.call(void 0, selfFetch && sectionsEndpoint ? sectionsEndpoint : null);
|
|
99
99
|
const guides = _react.useMemo.call(void 0, () => _nullishCoalesce(_nullishCoalesce(initialGuides, () => ( _optionalChain([guidesRes, 'access', _2 => _2.data, 'optionalAccess', _3 => _3.data]))), () => ( [])), [initialGuides, _optionalChain([guidesRes, 'access', _4 => _4.data, 'optionalAccess', _5 => _5.data])]);
|
|
100
100
|
const sections = _react.useMemo.call(void 0,
|
|
101
101
|
() => _nullishCoalesce(initialSections, () => ( (Array.isArray(sectionsRes.data) ? sectionsRes.data : []))),
|
|
@@ -138,25 +138,25 @@ function OnboardingGuidesCatalogView({
|
|
|
138
138
|
});
|
|
139
139
|
};
|
|
140
140
|
const source = _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _6 => _6.source]), () => ( "openframe"));
|
|
141
|
-
const docSearch =
|
|
141
|
+
const docSearch = _chunk6HHUU56Ycjs.useDocSearch.call(void 0, {
|
|
142
142
|
source,
|
|
143
143
|
baseRoute: basePath,
|
|
144
144
|
onNavigate: (path) => router.push(path),
|
|
145
145
|
tableIds: ["onboarding-guides"]
|
|
146
146
|
});
|
|
147
147
|
const defaultRenderCard = (guide) => {
|
|
148
|
-
const cta =
|
|
148
|
+
const cta = _chunk6KDGIOLPcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _7 => _7.composeContentUrl]), {
|
|
149
149
|
type: "onboarding_guide",
|
|
150
150
|
slug: guide.slug,
|
|
151
151
|
basePath,
|
|
152
152
|
platforms: guide.onboarding_guide_platforms
|
|
153
153
|
});
|
|
154
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
154
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXOQ2UUVScjs.OnboardingGuideCard, { guide, href: cta.href, targetPlatform: cta.targetPlatform, size: "catalog" });
|
|
155
155
|
};
|
|
156
156
|
const renderCardFn = _nullishCoalesce(renderCard, () => ( defaultRenderCard));
|
|
157
157
|
const preControls = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
|
|
158
158
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
159
|
-
|
|
159
|
+
_chunk6HHUU56Ycjs.DocSearchBar,
|
|
160
160
|
{
|
|
161
161
|
placeholder: "Search onboarding guides, releases, case studies\u2026",
|
|
162
162
|
query: docSearch.query,
|
|
@@ -168,7 +168,7 @@ function OnboardingGuidesCatalogView({
|
|
|
168
168
|
}
|
|
169
169
|
),
|
|
170
170
|
sections.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
171
|
-
|
|
171
|
+
_chunk22ZK7BA3cjs.FilterPillRow,
|
|
172
172
|
{
|
|
173
173
|
label: "Section",
|
|
174
174
|
selectedValue: activeSection,
|
|
@@ -178,7 +178,7 @@ function OnboardingGuidesCatalogView({
|
|
|
178
178
|
)
|
|
179
179
|
] });
|
|
180
180
|
if (selfFetch && guidesRes.error) {
|
|
181
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
181
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk22ZK7BA3cjs.LoadError, { message: "Failed to load onboarding guides.", onRetry: guidesRes.reload });
|
|
182
182
|
}
|
|
183
183
|
if (selfFetch && guidesRes.data == null && isLoading) {
|
|
184
184
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OnboardingGuidesCatalogSkeleton, {});
|
|
@@ -210,7 +210,7 @@ function OnboardingGuideDetailView({
|
|
|
210
210
|
slug,
|
|
211
211
|
guideEndpoint,
|
|
212
212
|
related = [],
|
|
213
|
-
MarkdownRenderer =
|
|
213
|
+
MarkdownRenderer = _chunk22ZK7BA3cjs.RichMarkdownRenderer,
|
|
214
214
|
renderRelatedCard,
|
|
215
215
|
backHref,
|
|
216
216
|
backLabel = "Back to Getting Started",
|
|
@@ -220,23 +220,23 @@ function OnboardingGuideDetailView({
|
|
|
220
220
|
}) {
|
|
221
221
|
const resolvedBackHref = _nullishCoalesce(backHref, () => ( basePath));
|
|
222
222
|
const runtime = _chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, );
|
|
223
|
-
const captions =
|
|
223
|
+
const captions = _chunkZWMPAFGBcjs.useCaptions.call(void 0, );
|
|
224
224
|
const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
|
|
225
|
-
const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
225
|
+
const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk22ZK7BA3cjs.PageShell, { children: node }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: node });
|
|
226
226
|
const url = initialData ? null : slug && guideEndpoint ? guideEndpoint(slug) : null;
|
|
227
|
-
const { data: guide, isLoading, error, reload } =
|
|
227
|
+
const { data: guide, isLoading, error, reload } = _chunkTLDCSTTQcjs.useSelfFetch.call(void 0, url, { initialData });
|
|
228
228
|
const { ref: videoWarmupRef } = _chunkHZJRERJWcjs.useVideoWarmup.call(void 0, {
|
|
229
229
|
videoUrl: _optionalChain([guide, 'optionalAccess', _8 => _8.main_video_url]),
|
|
230
230
|
supabaseStorageOrigin: _optionalChain([runtime, 'optionalAccess', _9 => _9.endpoints, 'access', _10 => _10.supabaseStorageOrigin])
|
|
231
231
|
});
|
|
232
232
|
if (error || !guide && !isLoading) {
|
|
233
|
-
return renderShell(/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
233
|
+
return renderShell(/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk22ZK7BA3cjs.LoadError, { message: "Guide not found.", onRetry: reload }));
|
|
234
234
|
}
|
|
235
235
|
if (!guide) {
|
|
236
236
|
return renderShell(
|
|
237
237
|
// Match the loaded page's top offset (TitleBlock's
|
|
238
238
|
// `pt-[var(--spacing-system-l)]`) so content doesn't jump on load.
|
|
239
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
239
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3BLBWZ6Acjs.DetailPageSkeleton, { bare: true, showImageGallery: false }) })
|
|
240
240
|
);
|
|
241
241
|
}
|
|
242
242
|
const { captionsUrl, highlightCaptionsUrl } = captions.forEntity("onboarding_guide", guide);
|
|
@@ -244,27 +244,27 @@ function OnboardingGuideDetailView({
|
|
|
244
244
|
// worst), so it's the terminal fallback — no trailing `|| undefined` needed.
|
|
245
245
|
_chunkEAY6ZUEScjs.buildOgPlaceholderUrl.call(void 0, _optionalChain([runtime, 'optionalAccess', _11 => _11.endpoints]), guide.title, { aspect: "wide" });
|
|
246
246
|
const defaultRenderRelatedCard = (g) => {
|
|
247
|
-
const cta =
|
|
247
|
+
const cta = _chunk6KDGIOLPcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _12 => _12.composeContentUrl]), {
|
|
248
248
|
type: "onboarding_guide",
|
|
249
249
|
slug: g.slug,
|
|
250
250
|
basePath,
|
|
251
251
|
platforms: g.onboarding_guide_platforms
|
|
252
252
|
});
|
|
253
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
253
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXOQ2UUVScjs.OnboardingGuideCard, { guide: g, href: cta.href, targetPlatform: cta.targetPlatform });
|
|
254
254
|
};
|
|
255
255
|
const renderRelatedCardFn = _nullishCoalesce(renderRelatedCard, () => ( defaultRenderRelatedCard));
|
|
256
256
|
return renderShell(
|
|
257
257
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
258
|
-
|
|
258
|
+
_chunkG37LT2IDcjs.PageLayout,
|
|
259
259
|
{
|
|
260
260
|
title: guide.title,
|
|
261
261
|
titleSize: "h1",
|
|
262
262
|
titleWrap: true,
|
|
263
263
|
backButton: { label: backLabel, onClick: () => router.push(resolvedBackHref) },
|
|
264
264
|
children: [
|
|
265
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
265
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk22ZK7BA3cjs.EntityTagBadges, { tags: guide.onboarding_guide_tags }),
|
|
266
266
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
267
|
-
|
|
267
|
+
_chunkXOQ2UUVScjs.EntityAuthorCard,
|
|
268
268
|
{
|
|
269
269
|
author: guide.author,
|
|
270
270
|
authorHref,
|
|
@@ -279,7 +279,7 @@ function OnboardingGuideDetailView({
|
|
|
279
279
|
}
|
|
280
280
|
),
|
|
281
281
|
(guide.main_video_url || guide.youtube_url) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: videoWarmupRef, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
282
|
-
|
|
282
|
+
_chunkZWMPAFGBcjs.EntityVideoSection,
|
|
283
283
|
{
|
|
284
284
|
mainVideoUrl: guide.main_video_url,
|
|
285
285
|
youtubeUrl: guide.youtube_url || void 0,
|
|
@@ -296,17 +296,17 @@ function OnboardingGuideDetailView({
|
|
|
296
296
|
) }),
|
|
297
297
|
guide.content && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "space-y-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownRenderer, { content: guide.content }) }),
|
|
298
298
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
299
|
-
|
|
299
|
+
_chunkZWMPAFGBcjs.VideoBitesStrip,
|
|
300
300
|
{
|
|
301
301
|
bites: _nullishCoalesce(guide.video_bites, () => ( [])),
|
|
302
302
|
filterPublished: true,
|
|
303
303
|
showTitle: false,
|
|
304
|
-
profile:
|
|
304
|
+
profile: _chunkXOQ2UUVScjs.toStripProfile.call(void 0, guide.author),
|
|
305
305
|
href: `/onboarding-guides/${guide.slug}`
|
|
306
306
|
}
|
|
307
307
|
),
|
|
308
308
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
309
|
-
|
|
309
|
+
_chunk3BLBWZ6Acjs.ArticleAuthorByline,
|
|
310
310
|
{
|
|
311
311
|
author: _nullishCoalesce(_optionalChain([guide, 'access', _13 => _13.author, 'optionalAccess', _14 => _14.full_name]), () => ( null)),
|
|
312
312
|
avatar: _optionalChain([guide, 'access', _15 => _15.author, 'optionalAccess', _16 => _16.avatar_url]),
|