@flamingo-stack/openframe-frontend-core 0.0.737 → 0.0.738
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/build/export-map.json +1 -1
- package/dist/{chunk-AZL332TK.cjs → chunk-2QMBXGMQ.cjs} +15 -2
- package/dist/{chunk-DA4VS6TS.cjs → chunk-2SBHPHLS.cjs} +4 -4
- package/dist/{chunk-XPP7VCNY.cjs → chunk-2UZS3ZH7.cjs} +8 -8
- package/dist/{chunk-MGW5DO6P.cjs → chunk-3BBOAMWJ.cjs} +7 -7
- package/dist/{chunk-HZJRERJW.cjs → chunk-3RFQPQ7Z.cjs} +3 -3
- package/dist/{chunk-4FJZ7RJD.cjs → chunk-4T6ETBL4.cjs} +150 -82
- package/dist/{chunk-TJQYX3QC.cjs → chunk-4YQNJJWM.cjs} +95 -95
- package/dist/{chunk-FA2LATDM.cjs → chunk-5BKAUXLR.cjs} +4 -4
- package/dist/{chunk-YADG5Q7C.cjs → chunk-63N4FN5V.cjs} +3 -3
- package/dist/{chunk-4ISP3XP4.cjs → chunk-66R4NGGU.cjs} +72 -72
- package/dist/{chunk-EJOXXJJB.cjs → chunk-7F3V45AH.cjs} +29 -29
- package/dist/{chunk-VYODTHMR.cjs → chunk-7GETNFZ5.cjs} +49 -49
- package/dist/{chunk-L4ZNR5V7.cjs → chunk-7LTG6CJ3.cjs} +67 -67
- package/dist/{chunk-MJGX357L.cjs → chunk-B27QEHYR.cjs} +2 -2
- package/dist/{chunk-VL4JKXU2.cjs → chunk-BRKTN6UR.cjs} +216 -216
- package/dist/{chunk-VRNNIV5Y.cjs → chunk-EG545WGV.cjs} +4 -4
- package/dist/{chunk-ZJNYWNCB.cjs → chunk-FG7HTGT3.cjs} +24 -24
- package/dist/{chunk-77SD7RXY.cjs → chunk-GAF4L3JW.cjs} +7 -7
- package/dist/{chunk-KVGBDWYV.cjs → chunk-GQZOUVXC.cjs} +34 -34
- package/dist/{chunk-URIJ6YUG.cjs → chunk-HNYLTEIS.cjs} +22 -17
- package/dist/{chunk-FCGLSWKR.cjs → chunk-IFS4AH77.cjs} +19 -1
- package/dist/{chunk-L535OD7V.cjs → chunk-JZNESLJX.cjs} +2 -2
- package/dist/{chunk-CM35DLKS.cjs → chunk-KQ4IKALJ.cjs} +35 -35
- package/dist/{chunk-EX2GYIGW.cjs → chunk-LY5VOKV7.cjs} +6 -6
- package/dist/{chunk-XLSVQJBA.cjs → chunk-MLKL2YVE.cjs} +44 -44
- package/dist/{chunk-4RMLAHU2.cjs → chunk-MTNNYSP3.cjs} +18 -18
- package/dist/{chunk-ZRYKDN2J.cjs → chunk-N2CISBJJ.cjs} +15 -15
- package/dist/{chunk-O4MG7FXW.cjs → chunk-N5NDPULP.cjs} +6 -6
- package/dist/{chunk-SGVQO5J6.cjs → chunk-R36NZTUJ.cjs} +26 -26
- package/dist/{chunk-E2JCZU36.cjs → chunk-U5BRSRXA.cjs} +923 -759
- package/dist/{chunk-DUXLZPMJ.cjs → chunk-UMO55S55.cjs} +2 -2
- package/dist/{chunk-LW3QSP47.cjs → chunk-XGHZIYQN.cjs} +24 -24
- package/dist/{chunk-N6YOOGCD.cjs → chunk-XMNLPQ75.cjs} +12 -12
- package/dist/{cloud-tenants-IWQ5FFLY.cjs → cloud-tenants-FTQGWXHS.cjs} +16 -16
- package/dist/components/agent-identity.d.ts +8 -1
- package/dist/components/agent-identity.d.ts.map +1 -1
- package/dist/components/agent-identity.js +6 -1
- package/dist/components/calendar.cjs +4 -4
- package/dist/components/case-studies/index.cjs +28 -28
- package/dist/components/chat/chat-turn.d.ts +23 -0
- package/dist/components/chat/chat-turn.d.ts.map +1 -0
- package/dist/components/chat/chat-turn.js +30 -0
- package/dist/components/chat/index.cjs +14 -12
- 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 +1 -0
- package/dist/components/contact/index.cjs +17 -17
- package/dist/components/docs/index.cjs +20 -20
- package/dist/components/embeds/index.cjs +17 -17
- package/dist/components/faq/faq-section.d.ts.map +1 -1
- package/dist/components/faq/faq-section.js +9 -4
- package/dist/components/faq/index.cjs +18 -18
- package/dist/components/features/auth/auth-benefits-panel.d.ts +3 -5
- package/dist/components/features/auth/auth-benefits-panel.d.ts.map +1 -1
- package/dist/components/features/auth/auth-benefits-panel.js +3 -19
- package/dist/components/features/conversation-card.d.ts +12 -4
- package/dist/components/features/conversation-card.d.ts.map +1 -1
- package/dist/components/features/conversation-card.js +30 -38
- package/dist/components/features/index.cjs +16 -16
- package/dist/components/help-center-pages/index.cjs +122 -122
- package/dist/components/index.cjs +96 -80
- package/dist/components/meeting-scheduler/index.cjs +49 -49
- package/dist/components/navigation/index.cjs +19 -19
- package/dist/components/onboarding-guides/index.cjs +19 -19
- package/dist/components/platform/ToolBadge.d.ts.map +1 -1
- package/dist/components/platform/ToolBadge.js +4 -3
- package/dist/components/product-demo/index.cjs +8 -8
- package/dist/components/related-content/index.cjs +8 -8
- package/dist/components/tickets/index.cjs +22 -22
- package/dist/components/ui/app-window-frame.d.ts +7 -1
- package/dist/components/ui/app-window-frame.d.ts.map +1 -1
- package/dist/components/ui/app-window-frame.js +10 -2
- package/dist/components/ui/benefit-list.d.ts +42 -0
- package/dist/components/ui/benefit-list.d.ts.map +1 -0
- package/dist/components/ui/benefit-list.js +62 -0
- package/dist/components/ui/button/button.d.ts +1 -0
- package/dist/components/ui/button/button.d.ts.map +1 -1
- package/dist/components/ui/button/button.js +15 -2
- package/dist/components/ui/dropdown-button.d.ts +20 -2
- package/dist/components/ui/dropdown-button.d.ts.map +1 -1
- package/dist/components/ui/dropdown-button.js +57 -1
- package/dist/components/ui/file-manager/index.cjs +11 -11
- package/dist/components/ui/index.cjs +30 -16
- package/dist/components/ui/index.d.ts +3 -0
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +3 -0
- package/dist/components/ui/leader-row.d.ts +17 -0
- package/dist/components/ui/leader-row.d.ts.map +1 -0
- package/dist/components/ui/leader-row.js +14 -0
- package/dist/components/ui/strip-card.d.ts +23 -0
- package/dist/components/ui/strip-card.d.ts.map +1 -0
- package/dist/components/ui/strip-card.js +56 -0
- package/dist/{devices-OUHGWA6Y.cjs → devices-MPI5HUQS.cjs} +17 -17
- package/dist/{embeddable-chat-U3C4WWB7.cjs → embeddable-chat-7WLUDBGK.cjs} +84 -84
- package/dist/index.cjs +40 -20
- package/dist/{knowledge-3ZASPWMF.cjs → knowledge-BS663XXL.cjs} +17 -17
- package/dist/{logs-E6Y54P6K.cjs → logs-KS2A2VN5.cjs} +25 -25
- package/dist/{policies-LAV75B5B.cjs → policies-H3OK6H4Q.cjs} +20 -20
- package/dist/{remote-session-Z4YZFG5E.cjs → remote-session-EHKXU4HI.cjs} +7 -7
- package/dist/{software-update-2CAL3AMJ.cjs → software-update-HMMMWIL3.cjs} +20 -20
- package/dist/{tickets-board-JOSYLOS7.cjs → tickets-board-3YJKOOZE.cjs} +10 -10
- package/dist/utils/demo-clock.d.ts +22 -0
- package/dist/utils/demo-clock.d.ts.map +1 -0
- package/dist/utils/demo-clock.js +40 -0
- package/dist/utils/identity-tint.d.ts +13 -0
- package/dist/utils/identity-tint.d.ts.map +1 -0
- package/dist/utils/identity-tint.js +14 -0
- package/dist/utils/index.cjs +54 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/{video-file-player-6NWGXZ3W.cjs → video-file-player-ZH2ILAPO.cjs} +12 -12
- package/package.json +1 -1
- package/src/components/agent-identity.tsx +12 -1
- package/src/components/chat/chat-turn.tsx +52 -0
- package/src/components/chat/index.ts +1 -0
- package/src/components/faq/faq-section.tsx +4 -1
- package/src/components/features/auth/auth-benefits-panel.tsx +5 -32
- package/src/components/features/conversation-card.tsx +48 -46
- package/src/components/platform/ToolBadge.tsx +4 -3
- package/src/components/ui/app-window-frame.tsx +18 -2
- package/src/components/ui/benefit-list.tsx +97 -0
- package/src/components/ui/button/button.tsx +14 -1
- package/src/components/ui/dropdown-button.tsx +73 -1
- package/src/components/ui/index.ts +3 -0
- package/src/components/ui/leader-row.tsx +28 -0
- package/src/components/ui/strip-card.tsx +68 -0
- package/src/utils/demo-clock.ts +62 -0
- package/src/utils/identity-tint.ts +23 -0
- package/src/utils/index.ts +2 -0
package/dist/utils/index.cjs
CHANGED
|
@@ -85851,6 +85851,57 @@ function pathMatchesAny(pathname, patterns) {
|
|
|
85851
85851
|
return (patterns ?? []).some((pattern) => matchesPathPattern(pathname, pattern));
|
|
85852
85852
|
}
|
|
85853
85853
|
|
|
85854
|
+
// src/utils/demo-clock.ts
|
|
85855
|
+
function hashSeed(seed) {
|
|
85856
|
+
let hash = 2166136261;
|
|
85857
|
+
for (let i = 0; i < seed.length; i++) {
|
|
85858
|
+
hash ^= seed.charCodeAt(i);
|
|
85859
|
+
hash = Math.imul(hash, 16777619);
|
|
85860
|
+
}
|
|
85861
|
+
return hash >>> 0;
|
|
85862
|
+
}
|
|
85863
|
+
function seededRandom(seed) {
|
|
85864
|
+
let state = hashSeed(seed);
|
|
85865
|
+
return () => {
|
|
85866
|
+
state = state + 1831565813 >>> 0;
|
|
85867
|
+
let t = state;
|
|
85868
|
+
t = Math.imul(t ^ t >>> 15, t | 1);
|
|
85869
|
+
t ^= t + Math.imul(t ^ t >>> 7, t | 61);
|
|
85870
|
+
return ((t ^ t >>> 14) >>> 0) / 4294967296;
|
|
85871
|
+
};
|
|
85872
|
+
}
|
|
85873
|
+
function formatDemoClock(minutesOfDay) {
|
|
85874
|
+
const minutes = (Math.floor(minutesOfDay) % 1440 + 1440) % 1440;
|
|
85875
|
+
const hour24 = Math.floor(minutes / 60);
|
|
85876
|
+
const hour12 = hour24 % 12 === 0 ? 12 : hour24 % 12;
|
|
85877
|
+
return `${hour12}:${String(minutes % 60).padStart(2, "0")} ${hour24 < 12 ? "AM" : "PM"}`;
|
|
85878
|
+
}
|
|
85879
|
+
function demoClockTimes(seed, options = {}) {
|
|
85880
|
+
const { count = 2, fromHour = 8, toHour = 18, maxGapMinutes = 3 } = options;
|
|
85881
|
+
const random = seededRandom(seed);
|
|
85882
|
+
const span = Math.max(1, (toHour - fromHour) * 60);
|
|
85883
|
+
let minutes = fromHour * 60 + Math.floor(random() * span);
|
|
85884
|
+
const times = [];
|
|
85885
|
+
for (let i = 0; i < Math.max(0, count); i++) {
|
|
85886
|
+
if (i > 0) minutes += Math.floor(random() * (maxGapMinutes + 1));
|
|
85887
|
+
times.push(formatDemoClock(minutes));
|
|
85888
|
+
}
|
|
85889
|
+
return times;
|
|
85890
|
+
}
|
|
85891
|
+
|
|
85892
|
+
// src/utils/identity-tint.ts
|
|
85893
|
+
function identityTint(accent) {
|
|
85894
|
+
if (!accent) return void 0;
|
|
85895
|
+
const wash = `color-mix(in srgb, ${accent} 2%, transparent)`;
|
|
85896
|
+
return {
|
|
85897
|
+
borderColor: `color-mix(in srgb, ${accent} 30%, transparent)`,
|
|
85898
|
+
backgroundImage: [
|
|
85899
|
+
`radial-gradient(120% 120% at 100% 100%, color-mix(in srgb, ${accent} 4%, transparent), transparent 70%)`,
|
|
85900
|
+
`linear-gradient(${wash}, ${wash})`
|
|
85901
|
+
].join(", ")
|
|
85902
|
+
};
|
|
85903
|
+
}
|
|
85904
|
+
|
|
85854
85905
|
exports.ACTIVE_ANCHOR_ATTRIBUTE = ACTIVE_ANCHOR_ATTRIBUTE;
|
|
85855
85906
|
exports.AI_PROVIDERS = AI_PROVIDERS;
|
|
85856
85907
|
exports.ANTHROPIC_SUPPORTED_IMAGE_MIME = ANTHROPIC_SUPPORTED_IMAGE_MIME;
|
|
@@ -85985,6 +86036,7 @@ exports.deepClone = deepClone;
|
|
|
85985
86036
|
exports.defineParamSchema = defineParamSchema;
|
|
85986
86037
|
exports.defineRescueForm = defineRescueForm;
|
|
85987
86038
|
exports.delay = delay;
|
|
86039
|
+
exports.demoClockTimes = demoClockTimes;
|
|
85988
86040
|
exports.deriveActiveColor = deriveActiveColor;
|
|
85989
86041
|
exports.deriveHoverColor = deriveHoverColor;
|
|
85990
86042
|
exports.designDocReadiness = designDocReadiness;
|
|
@@ -86042,6 +86094,7 @@ exports.formatDateTimeAt = formatDateTimeAt;
|
|
|
86042
86094
|
exports.formatDateTimeYmd = formatDateTimeYmd;
|
|
86043
86095
|
exports.formatDateUTC = formatDateUTC;
|
|
86044
86096
|
exports.formatDateWithTimezone = formatDateWithTimezone;
|
|
86097
|
+
exports.formatDemoClock = formatDemoClock;
|
|
86045
86098
|
exports.formatDocName = formatDocName;
|
|
86046
86099
|
exports.formatDuration = formatDuration;
|
|
86047
86100
|
exports.formatDurationCompact = formatDurationCompact;
|
|
@@ -86146,6 +86199,7 @@ exports.groupsByTable = groupsByTable;
|
|
|
86146
86199
|
exports.hasGenericEmailDomain = hasGenericEmailDomain;
|
|
86147
86200
|
exports.hexToRgb = hexToRgb2;
|
|
86148
86201
|
exports.hostMatches = hostMatches;
|
|
86202
|
+
exports.identityTint = identityTint;
|
|
86149
86203
|
exports.isAnnouncementDismissed = isAnnouncementDismissed;
|
|
86150
86204
|
exports.isBadgePaletteKey = isBadgePaletteKey;
|
|
86151
86205
|
exports.isBlankLine = isBlankLine;
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -97,4 +97,6 @@ export type { ProgramDateFields, ProgramInstant, ProgramMetaRenderers } from './
|
|
|
97
97
|
export { copyrightLine } from './copyright-line';
|
|
98
98
|
export * from './path-pattern';
|
|
99
99
|
export * from './random-id';
|
|
100
|
+
export * from './demo-clock';
|
|
101
|
+
export * from './identity-tint';
|
|
100
102
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAK1B,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACnG,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,GACjC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,2DAA2D,CAAC;AAC3F,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,aAAa,EAClB,WAAW,EAGX,oBAAoB,EACpB,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,KAAK,EACL,oBAAoB,EACpB,cAAc,EACd,SAAS,EACT,wBAAwB,EACxB,eAAe,EACf,KAAK,EACL,IAAI,EACJ,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAI/D,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AAErC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,sBAAsB,CAAC;AAErC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAIhC,cAAc,kBAAkB,CAAC;AAIjC,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,uCAAuC,CAAC;AAK/C,OAAO,EACL,cAAc,EACd,KAAK,eAAe,EACpB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,wBAAwB,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEhF,cAAc,cAAc,CAAC;AAE7B,cAAc,eAAe,CAAC;AAG9B,cAAc,iBAAiB,CAAC;AAEhC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAE7B,cAAc,cAAc,CAAC;AAE7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AAEvC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,wBAAwB,CAAC;AAEvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AAEpC,cAAc,yBAAyB,CAAC;AAGxC,OAAO,EACL,KAAK,yBAAyB,EAC9B,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAOvB,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,cAAc,EACnB,uBAAuB,EACvB,cAAc,EACd,KAAK,oBAAoB,EACzB,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,yBAAyB,EACzB,OAAO,EACP,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAKtB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAG9G,OAAO,EACL,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC;AAW3B,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAOpG,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,4BAA4B,EAC5B,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,GACf,MAAM,4BAA4B,CAAC;AAKpC,OAAO,EAAE,wBAAwB,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAO5F,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACnB,0BAA0B,EAC1B,qCAAqC,EACrC,+BAA+B,EAC/B,sCAAsC,EACtC,8BAA8B,EAC9B,6CAA6C,EAC7C,gCAAgC,EAChC,2BAA2B,GAC5B,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EACL,kCAAkC,EAClC,8BAA8B,EAC9B,KAAK,4BAA4B,GAClC,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAC7F,OAAO,EACL,aAAa,EACb,KAAK,YAAY,EACjB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,KAAK,mBAAmB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,8BAA8B,EAC9B,KAAK,eAAe,EACpB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,+CAA+C,CAAC;AAMvD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AAGpG,OAAO,EAAE,KAAK,WAAW,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAI5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAKhF,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAK9E,cAAc,gBAAgB,CAAC;AAS/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,KAAK,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAM9F,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,KAAK,2BAA2B,GACjC,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOjF,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAMnE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC3E,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAKlD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,6BAA6B,EAC7B,oBAAoB,EACpB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,0BAA0B,EAAE,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAKjF,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAC;AAMxB,cAAc,oBAAoB,CAAC;AAKnC,cAAc,eAAe,CAAC;AAK9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AAIvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,cAAc,CAAC;AAK7B,cAAc,qBAAqB,CAAC;AAEpC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,eAAe,CAAC;AAE9B,cAAc,OAAO,CAAC;AAEtB,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAMhH,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,UAAU,EACV,aAAa,GACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGjG,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -261,6 +261,8 @@ import { PROGRAM_META_RENDERERS } from "./program-meta-renderers.js";
|
|
|
261
261
|
import { copyrightLine } from "./copyright-line.js";
|
|
262
262
|
export * from "./path-pattern.js";
|
|
263
263
|
export * from "./random-id.js";
|
|
264
|
+
export * from "./demo-clock.js";
|
|
265
|
+
export * from "./identity-tint.js";
|
|
264
266
|
export {
|
|
265
267
|
ACTIVE_ANCHOR_ATTRIBUTE,
|
|
266
268
|
ANTHROPIC_SUPPORTED_IMAGE_MIME,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"use client";
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunk3RFQPQ7Zcjs = require('./chunk-3RFQPQ7Z.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
var _chunkJKX2C3I2cjs = require('./chunk-JKX2C3I2.cjs');
|
|
@@ -13,7 +13,7 @@ var _chunkJKX2C3I2cjs = require('./chunk-JKX2C3I2.cjs');
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _chunk63N4FN5Vcjs = require('./chunk-63N4FN5V.cjs');
|
|
17
17
|
require('./chunk-S5C3OZCO.cjs');
|
|
18
18
|
require('./chunk-4IYNDV3G.cjs');
|
|
19
19
|
require('./chunk-CW3ML76U.cjs');
|
|
@@ -23,7 +23,7 @@ var _chunkVOX4E6AXcjs = require('./chunk-VOX4E6AX.cjs');
|
|
|
23
23
|
require('./chunk-UJ7AXHRZ.cjs');
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
var
|
|
26
|
+
var _chunk2QMBXGMQcjs = require('./chunk-2QMBXGMQ.cjs');
|
|
27
27
|
require('./chunk-V45KLJQP.cjs');
|
|
28
28
|
require('./chunk-3ATAYP36.cjs');
|
|
29
29
|
|
|
@@ -244,7 +244,7 @@ function useHoverPlayback(mediaRef, sound, { playOnHover, playWhenHovered, muted
|
|
|
244
244
|
onLiveElement(() => {
|
|
245
245
|
element.volume = SOUND_VOLUME;
|
|
246
246
|
});
|
|
247
|
-
if (
|
|
247
|
+
if (_chunk63N4FN5Vcjs.hasUserInteracted.call(void 0, )) {
|
|
248
248
|
void playWithSound(element, hostMutedRef.current, wanted);
|
|
249
249
|
return;
|
|
250
250
|
}
|
|
@@ -257,8 +257,8 @@ function useHoverPlayback(mediaRef, sound, { playOnHover, playWhenHovered, muted
|
|
|
257
257
|
});
|
|
258
258
|
endMutedFallback();
|
|
259
259
|
};
|
|
260
|
-
|
|
261
|
-
cleanups.push(() =>
|
|
260
|
+
_chunk63N4FN5Vcjs.activationWaiters.add(onFirstGesture);
|
|
261
|
+
cleanups.push(() => _chunk63N4FN5Vcjs.activationWaiters.delete(onFirstGesture));
|
|
262
262
|
}, [mediaRef, hostMutedRef, playWithSound, playMuted, endMutedFallback]);
|
|
263
263
|
_react.useEffect.call(void 0, () => () => _optionalChain([endHoverRef, 'access', _41 => _41.current, 'optionalCall', _42 => _42()]), []);
|
|
264
264
|
const controlled = typeof playWhenHovered === "boolean";
|
|
@@ -284,7 +284,7 @@ function usePlaybackHealth(mediaRef, url, monitored) {
|
|
|
284
284
|
if (!monitored) return;
|
|
285
285
|
clearStallTimer();
|
|
286
286
|
setFailed(true);
|
|
287
|
-
|
|
287
|
+
_chunk63N4FN5Vcjs.reportPlaybackFailure.call(void 0, { kind: "file", src: url, reason });
|
|
288
288
|
},
|
|
289
289
|
[monitored, clearStallTimer, url]
|
|
290
290
|
);
|
|
@@ -294,7 +294,7 @@ function usePlaybackHealth(mediaRef, url, monitored) {
|
|
|
294
294
|
stallTimerRef.current = setTimeout(() => {
|
|
295
295
|
stallTimerRef.current = null;
|
|
296
296
|
fail("stall");
|
|
297
|
-
},
|
|
297
|
+
}, _chunk63N4FN5Vcjs.VIDEO_STALL_TIMEOUT_MS);
|
|
298
298
|
}, [mediaRef, monitored, fail]);
|
|
299
299
|
const alive = _react.useCallback.call(void 0, () => {
|
|
300
300
|
clearStallTimer();
|
|
@@ -415,7 +415,7 @@ function FilePlayer({
|
|
|
415
415
|
src: url,
|
|
416
416
|
poster: poster || void 0,
|
|
417
417
|
streamType: "on-demand",
|
|
418
|
-
preload: _nullishCoalesce(preload, () => ( (
|
|
418
|
+
preload: _nullishCoalesce(preload, () => ( (_chunk3RFQPQ7Zcjs.saveDataEnabled.call(void 0, ) ? "none" : "metadata"))),
|
|
419
419
|
playsInline: true,
|
|
420
420
|
muted,
|
|
421
421
|
preferCmcd: "header",
|
|
@@ -433,7 +433,7 @@ function FilePlayer({
|
|
|
433
433
|
const unmute = sound.mutedFallback && !hideMutedBadge ? (
|
|
434
434
|
// The common Button's bare media glyph: white at rest, the accent while hovered.
|
|
435
435
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
436
|
-
|
|
436
|
+
_chunk2QMBXGMQcjs.Button,
|
|
437
437
|
{
|
|
438
438
|
type: "button",
|
|
439
439
|
variant: "glyph",
|
|
@@ -442,11 +442,11 @@ function FilePlayer({
|
|
|
442
442
|
title: "Unmute",
|
|
443
443
|
onClick: sound.unmute,
|
|
444
444
|
className: "absolute inset-0 z-10 m-auto",
|
|
445
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
445
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk63N4FN5Vcjs.VideoUnmuteGlyph, {})
|
|
446
446
|
}
|
|
447
447
|
)
|
|
448
448
|
) : null;
|
|
449
|
-
const failure = health.failed ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
449
|
+
const failure = health.failed ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk63N4FN5Vcjs.VideoErrorOverlay, { onRetry: health.retry }) : null;
|
|
450
450
|
const boxed = Boolean(playOnHover) || hover.controlled || Boolean(autoPlayUnmuted) || Boolean(startMuted) || !chromeless;
|
|
451
451
|
if (!boxed) return player;
|
|
452
452
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative h-full w-full", ...hover.pointerHandlers, children: [
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { createContext, useCallback, useContext, useEffect, useMemo, type ReactNode } from 'react';
|
|
3
|
+
import { createContext, useCallback, useContext, useEffect, useMemo, type CSSProperties, type ReactNode } from 'react';
|
|
4
4
|
import {
|
|
5
5
|
AGENT_IDENTITIES_API_PATH,
|
|
6
6
|
useAgentIdentities,
|
|
7
7
|
type AgentIdentityIcon,
|
|
8
8
|
type AgentIdentityIcons,
|
|
9
9
|
} from '../hooks/use-agent-identities';
|
|
10
|
+
import { identityTint } from '../utils/identity-tint';
|
|
10
11
|
import { HEX_PATTERN } from '../utils/ods-color-utils';
|
|
11
12
|
|
|
12
13
|
export { AGENT_IDENTITIES_API_PATH, type AgentIdentityIcon, type AgentIdentityIcons };
|
|
@@ -126,3 +127,13 @@ export function useAgentAccents(): (slug: string | null | undefined) => string |
|
|
|
126
127
|
[identities],
|
|
127
128
|
);
|
|
128
129
|
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* The tint of a surface that belongs to an agent (a card of its answer, the
|
|
133
|
+
* window it works in), from the agent's own identity colour. THE way a surface
|
|
134
|
+
* is tinted for an agent: a component names the agent, never a colour. With no
|
|
135
|
+
* agent, or one whose identity names no colour, there is no tint.
|
|
136
|
+
*/
|
|
137
|
+
export function useAgentTint(slug: string | null | undefined): CSSProperties | undefined {
|
|
138
|
+
return identityTint(useAgentAccents()(slug));
|
|
139
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { cn } from '../../utils/cn';
|
|
3
|
+
|
|
4
|
+
export interface ChatTurnProps {
|
|
5
|
+
/** Rendered as given, at the size the caller draws it (a person's picture, an agent's mark). */
|
|
6
|
+
avatar?: ReactNode;
|
|
7
|
+
name: string;
|
|
8
|
+
/** A quieter word after the name ("on her laptop"). */
|
|
9
|
+
meta?: string;
|
|
10
|
+
/** `quiet` steps the name back to the caption size and colour (a turn inside a denser card). */
|
|
11
|
+
nameSize?: 'default' | 'quiet';
|
|
12
|
+
/** Shown as given, at the far end of the name row ("2:47 PM"). */
|
|
13
|
+
time?: string | null;
|
|
14
|
+
/** What was said. A string is drawn as the message text; a node is drawn as given. */
|
|
15
|
+
children?: ReactNode;
|
|
16
|
+
className?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* THE turn of a scripted conversation (an example card, a step of a demo): the
|
|
21
|
+
* speaker's picture, then beside it their name, the time at the far end, and
|
|
22
|
+
* what was said under them. Names read as they do everywhere else: the body
|
|
23
|
+
* face, the text colour.
|
|
24
|
+
*/
|
|
25
|
+
export function ChatTurn({ avatar, name, meta, nameSize = 'default', time, children, className }: ChatTurnProps) {
|
|
26
|
+
return (
|
|
27
|
+
<div className={cn('flex min-w-0 items-start gap-[var(--spacing-system-sf)]', className)}>
|
|
28
|
+
{avatar && <span className="shrink-0">{avatar}</span>}
|
|
29
|
+
<div className="flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-xxs)]">
|
|
30
|
+
<div className="flex min-w-0 items-baseline gap-[var(--spacing-system-xsf)]">
|
|
31
|
+
<span className="flex min-w-0 flex-1 items-baseline gap-[var(--spacing-system-xsf)]">
|
|
32
|
+
<span
|
|
33
|
+
className={cn(
|
|
34
|
+
'min-w-0 truncate',
|
|
35
|
+
nameSize === 'quiet' ? 'text-ods-text-secondary text-h6' : 'text-ods-text-primary text-h4',
|
|
36
|
+
)}
|
|
37
|
+
>
|
|
38
|
+
{name}
|
|
39
|
+
</span>
|
|
40
|
+
{meta && <span className="min-w-0 truncate text-ods-text-secondary text-h6">{meta}</span>}
|
|
41
|
+
</span>
|
|
42
|
+
{time && <span className="shrink-0 text-ods-text-secondary text-h6">{time}</span>}
|
|
43
|
+
</div>
|
|
44
|
+
{typeof children === 'string' ? (
|
|
45
|
+
<p className="m-0 whitespace-pre-wrap text-ods-text-primary text-h4">{children}</p>
|
|
46
|
+
) : (
|
|
47
|
+
children
|
|
48
|
+
)}
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
@@ -23,6 +23,7 @@ export * from './slash-command-suggestions';
|
|
|
23
23
|
export * from './chat-message-enhanced';
|
|
24
24
|
export * from './chat-message-list';
|
|
25
25
|
export * from './chat-message-row';
|
|
26
|
+
export * from './chat-turn';
|
|
26
27
|
export * from './chat-message-skeleton';
|
|
27
28
|
|
|
28
29
|
export * from './quick-action-chip';
|
|
@@ -498,8 +498,11 @@ export function FaqSection({
|
|
|
498
498
|
const titleNode = heading === undefined ? <h2 className={SECTION_HEADING_CLASS}>{DEFAULT_HEADING_TEXT}</h2> : heading;
|
|
499
499
|
const headingNode =
|
|
500
500
|
showTopic && topic ? (
|
|
501
|
+
// The host's heading may arrive from a server component, still streaming: React cannot check such a
|
|
502
|
+
// node when it sits in a list of siblings and warns about a missing key. So it is the ONLY child of its
|
|
503
|
+
// own wrapper, and the two siblings here are this component's own elements.
|
|
501
504
|
<div className="space-y-1">
|
|
502
|
-
{titleNode}
|
|
505
|
+
<div>{titleNode}</div>
|
|
503
506
|
<p className="text-ods-text-muted text-h6">{topic}</p>
|
|
504
507
|
</div>
|
|
505
508
|
) : (
|
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import type { ReactNode } from 'react';
|
|
4
3
|
import { cn } from '../../../utils/cn';
|
|
5
|
-
import { trialLabels } from '../../../utils/trial';
|
|
6
|
-
import { FileOffIcon } from '../../icons-v2-generated/documents/file-off-icon';
|
|
7
|
-
import { CreditCardXmarkIcon } from '../../icons-v2-generated/finance/credit-card-xmark-icon';
|
|
8
4
|
import { OpenframeLogoIcon } from '../../icons-v2-generated/logos/openframe-logo-icon';
|
|
9
|
-
import {
|
|
10
|
-
import { XmarkAltIcon } from '../../icons-v2-generated/signs-and-symbols/xmark-alt-icon';
|
|
5
|
+
import { BenefitList, trialBenefits, type BenefitItem } from '../../ui/benefit-list';
|
|
11
6
|
import { Button } from '../../ui/button';
|
|
12
7
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
label: string;
|
|
16
|
-
}
|
|
8
|
+
/** One benefit of the panel: the lib's benefit item. */
|
|
9
|
+
export type AuthBenefit = BenefitItem;
|
|
17
10
|
|
|
18
11
|
export interface AuthBenefitsPanelProps {
|
|
19
12
|
title?: string;
|
|
@@ -31,17 +24,6 @@ const DEFAULT_TITLE = 'The All-in-One Open Platform for MSPs';
|
|
|
31
24
|
const DEFAULT_DESCRIPTION =
|
|
32
25
|
'All your core ops in one place - built for MSPs who are done duct-taping tools together. Unified stack, AI-ready, no vendor tax. Just solid software that lets you run lean and fast.';
|
|
33
26
|
|
|
34
|
-
/** The default chips: the trial's terms, and its length when the host knows it. */
|
|
35
|
-
function defaultBenefits(trialDays: number | null | undefined): AuthBenefit[] {
|
|
36
|
-
const labels = trialLabels(trialDays);
|
|
37
|
-
return [
|
|
38
|
-
{ icon: <CreditCardXmarkIcon />, label: labels.noCard },
|
|
39
|
-
{ icon: <XmarkAltIcon />, label: labels.cancel },
|
|
40
|
-
...(labels.length ? [{ icon: <FlaskVialIcon />, label: labels.length }] : []),
|
|
41
|
-
{ icon: <FileOffIcon />, label: labels.noContract },
|
|
42
|
-
];
|
|
43
|
-
}
|
|
44
|
-
|
|
45
27
|
/**
|
|
46
28
|
* Marketing panel shown alongside the auth forms — title, blurb, benefit chips
|
|
47
29
|
* and a "learn more" link. Presentational; content is overridable via props.
|
|
@@ -50,7 +32,7 @@ export function AuthBenefitsPanel({
|
|
|
50
32
|
title = DEFAULT_TITLE,
|
|
51
33
|
description = DEFAULT_DESCRIPTION,
|
|
52
34
|
trialDays,
|
|
53
|
-
benefits =
|
|
35
|
+
benefits = trialBenefits(trialDays),
|
|
54
36
|
learnMoreLabel = 'Learn More About OpenFrame',
|
|
55
37
|
learnMoreUrl = 'https://www.flamingo.run/',
|
|
56
38
|
className,
|
|
@@ -65,16 +47,7 @@ export function AuthBenefitsPanel({
|
|
|
65
47
|
<h2 className="tracking-[-0.64px] text-ods-text-primary text-h2">{title}</h2>
|
|
66
48
|
<p className="text-ods-text-primary text-h4">{description}</p>
|
|
67
49
|
|
|
68
|
-
<
|
|
69
|
-
{benefits.map(benefit => (
|
|
70
|
-
<div key={benefit.label} className="flex items-center gap-[var(--spacing-system-xs)]">
|
|
71
|
-
<span className="flex size-4 shrink-0 items-center justify-center text-ods-text-secondary [&_svg]:size-4">
|
|
72
|
-
{benefit.icon}
|
|
73
|
-
</span>
|
|
74
|
-
<span className="whitespace-nowrap text-ods-text-primary text-h4">{benefit.label}</span>
|
|
75
|
-
</div>
|
|
76
|
-
))}
|
|
77
|
-
</div>
|
|
50
|
+
<BenefitList items={benefits} />
|
|
78
51
|
|
|
79
52
|
<Button
|
|
80
53
|
variant="outline"
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import type { ReactNode } from 'react';
|
|
2
4
|
import { cn } from '../../utils/cn';
|
|
5
|
+
import { useAgentTint } from '../agent-identity';
|
|
6
|
+
import { ChatTurn } from '../chat/chat-turn';
|
|
3
7
|
import { CheckCircleIcon } from '../icons-v2-generated/signs-and-symbols/check-circle-icon';
|
|
8
|
+
import { Tag } from '../ui/tag';
|
|
4
9
|
|
|
5
10
|
export interface ConversationCardSpeaker {
|
|
6
11
|
/** Rendered as given (an avatar, an agent mark). */
|
|
@@ -8,11 +13,13 @@ export interface ConversationCardSpeaker {
|
|
|
8
13
|
name: string;
|
|
9
14
|
/** A quieter word after the name ("on her laptop", "this computer"). */
|
|
10
15
|
meta?: string;
|
|
16
|
+
/** When they spoke, as shown ("2:47 PM"). */
|
|
17
|
+
time?: string;
|
|
11
18
|
}
|
|
12
19
|
|
|
13
20
|
export interface ConversationCardProps {
|
|
14
21
|
requester: ConversationCardSpeaker;
|
|
15
|
-
/** What they said
|
|
22
|
+
/** What they said. */
|
|
16
23
|
request: string;
|
|
17
24
|
responder: ConversationCardSpeaker;
|
|
18
25
|
/** What was done about it. */
|
|
@@ -25,22 +32,19 @@ export interface ConversationCardProps {
|
|
|
25
32
|
footerValue: string;
|
|
26
33
|
/** `attention` paints the answer in the warning colour: it needs a person. */
|
|
27
34
|
footerTone?: 'default' | 'attention';
|
|
35
|
+
/**
|
|
36
|
+
* The slug of the agent that answered. The card takes that agent's tint from
|
|
37
|
+
* its identity, so it reads as that agent's at a glance. A card names its
|
|
38
|
+
* agent, never a colour.
|
|
39
|
+
*/
|
|
40
|
+
agent?: string | null;
|
|
28
41
|
className?: string;
|
|
29
42
|
}
|
|
30
43
|
|
|
31
|
-
function Who({ speaker }: { speaker: ConversationCardSpeaker }) {
|
|
32
|
-
return (
|
|
33
|
-
<div className="flex items-baseline gap-2 text-ods-text-primary text-h4">
|
|
34
|
-
{speaker.name}
|
|
35
|
-
{speaker.meta && <span className="text-ods-text-secondary text-h6">{speaker.meta}</span>}
|
|
36
|
-
</div>
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
44
|
/**
|
|
41
45
|
* A request and what was done about it, as two turns and a footer: who asked
|
|
42
|
-
* and what they said, who answered and the result
|
|
43
|
-
* the reader's own part in it.
|
|
46
|
+
* and what they said, who answered and the result (a command block with its
|
|
47
|
+
* check), then one line that sums up the reader's own part in it.
|
|
44
48
|
*/
|
|
45
49
|
export function ConversationCard({
|
|
46
50
|
requester,
|
|
@@ -51,47 +55,45 @@ export function ConversationCard({
|
|
|
51
55
|
footerLabel,
|
|
52
56
|
footerValue,
|
|
53
57
|
footerTone = 'default',
|
|
58
|
+
agent,
|
|
54
59
|
className,
|
|
55
60
|
}: ConversationCardProps) {
|
|
61
|
+
const tint = useAgentTint(agent);
|
|
56
62
|
return (
|
|
57
63
|
<div
|
|
58
|
-
className={cn(
|
|
64
|
+
className={cn(
|
|
65
|
+
'flex h-full flex-col gap-[var(--spacing-system-mf)] overflow-hidden rounded-md border border-ods-border bg-ods-bg p-[var(--spacing-system-mf)]',
|
|
66
|
+
className,
|
|
67
|
+
)}
|
|
68
|
+
style={tint}
|
|
59
69
|
>
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
<
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
70
|
+
{/* Every part keeps a fixed number of lines, so cards in a row or a carousel line up part by part. */}
|
|
71
|
+
<ChatTurn avatar={requester.avatar} name={requester.name} meta={requester.meta} time={requester.time}>
|
|
72
|
+
<p className="m-0 line-clamp-2 min-h-[2lh] text-ods-text-primary text-h3" title={request}>
|
|
73
|
+
“{request}”
|
|
74
|
+
</p>
|
|
75
|
+
</ChatTurn>
|
|
76
|
+
{/* The answer is a command block: who did it, what was done, and its check. */}
|
|
77
|
+
<ChatTurn
|
|
78
|
+
avatar={responder.avatar}
|
|
79
|
+
name={responder.name}
|
|
80
|
+
meta={responder.meta}
|
|
81
|
+
time={responder.time}
|
|
82
|
+
className="rounded-md border border-ods-border bg-ods-card p-[var(--spacing-system-sf)]"
|
|
83
|
+
>
|
|
84
|
+
<div className="flex items-start gap-[var(--spacing-system-xsf)] text-ods-text-secondary text-h4">
|
|
85
|
+
<span className="line-clamp-3 min-h-[3lh] min-w-0 flex-1" title={outcome}>
|
|
86
|
+
{outcome}
|
|
87
|
+
</span>
|
|
88
|
+
{outcomeAside}
|
|
89
|
+
<span className="flex h-[1lh] shrink-0 items-center">
|
|
90
|
+
<CheckCircleIcon size={16} className="text-ods-success" aria-hidden />
|
|
91
|
+
</span>
|
|
81
92
|
</div>
|
|
82
|
-
</
|
|
83
|
-
<div className="mt-auto flex items-center justify-between gap-
|
|
93
|
+
</ChatTurn>
|
|
94
|
+
<div className="mt-auto flex items-center justify-between gap-[var(--spacing-system-sf)] text-ods-text-secondary text-h6">
|
|
84
95
|
<span>{footerLabel}</span>
|
|
85
|
-
<span
|
|
86
|
-
className={cn(
|
|
87
|
-
'inline-flex whitespace-nowrap rounded-full border px-3 py-1',
|
|
88
|
-
footerTone === 'attention'
|
|
89
|
-
? 'border-ods-warning text-ods-warning'
|
|
90
|
-
: 'border-ods-border text-ods-text-secondary',
|
|
91
|
-
)}
|
|
92
|
-
>
|
|
93
|
-
{footerValue}
|
|
94
|
-
</span>
|
|
96
|
+
<Tag as="span" label={footerValue} variant={footerTone === 'attention' ? 'warning' : 'badge'} />
|
|
95
97
|
</div>
|
|
96
98
|
</div>
|
|
97
99
|
);
|
|
@@ -85,13 +85,14 @@ export const ToolBadge: React.FC<ToolBadgeProps> = ({
|
|
|
85
85
|
return linked(
|
|
86
86
|
<span
|
|
87
87
|
className={cn(
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
// The house tag (Figma `tag`): 32px, on the card surface, the caption face.
|
|
89
|
+
'inline-flex h-8 items-center gap-[var(--spacing-system-xs)] rounded-md border border-ods-border bg-ods-card p-[var(--spacing-system-xsf)] text-ods-text-primary text-h5',
|
|
90
|
+
href && 'transition-colors hover:border-ods-border-hover',
|
|
90
91
|
className,
|
|
91
92
|
)}
|
|
92
93
|
>
|
|
93
94
|
{mark && (
|
|
94
|
-
<span className="flex h-
|
|
95
|
+
<span className="flex h-4 w-4 shrink-0 items-center justify-center [&_img]:h-full [&_img]:w-full [&_img]:rounded-sm [&_img]:object-contain [&_svg]:h-full [&_svg]:w-full">
|
|
95
96
|
{mark}
|
|
96
97
|
</span>
|
|
97
98
|
)}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import type { ReactNode } from 'react';
|
|
2
4
|
import { cn } from '../../utils/cn';
|
|
5
|
+
import { useAgentTint } from '../agent-identity';
|
|
3
6
|
|
|
4
7
|
export interface AppWindowFrameProps {
|
|
5
8
|
/** Centered in the title bar. */
|
|
@@ -7,6 +10,12 @@ export interface AppWindowFrameProps {
|
|
|
7
10
|
children: ReactNode;
|
|
8
11
|
/** A bar pinned under the body (a status line, an action). */
|
|
9
12
|
footer?: ReactNode;
|
|
13
|
+
/**
|
|
14
|
+
* The slug of the agent whose window this is. The window takes that agent's
|
|
15
|
+
* tint from its identity, like every card of the agent's. A window names its
|
|
16
|
+
* agent, never a colour.
|
|
17
|
+
*/
|
|
18
|
+
agent?: string | null;
|
|
10
19
|
className?: string;
|
|
11
20
|
/** The scrolling body between the title bar and the footer. */
|
|
12
21
|
bodyClassName?: string;
|
|
@@ -19,10 +28,17 @@ export interface AppWindowFrameProps {
|
|
|
19
28
|
*
|
|
20
29
|
* The frame is a column, so give it a height and the body fills what is left.
|
|
21
30
|
*/
|
|
22
|
-
export function AppWindowFrame({ title, children, footer, className, bodyClassName }: AppWindowFrameProps) {
|
|
31
|
+
export function AppWindowFrame({ title, children, footer, agent, className, bodyClassName }: AppWindowFrameProps) {
|
|
32
|
+
const tint = useAgentTint(agent);
|
|
23
33
|
return (
|
|
24
34
|
<div
|
|
25
|
-
className={cn(
|
|
35
|
+
className={cn(
|
|
36
|
+
'flex min-w-0 flex-col overflow-hidden rounded-xl border border-ods-border',
|
|
37
|
+
// An agent's window sits on the page surface under that agent's tint.
|
|
38
|
+
tint ? 'bg-ods-bg' : 'bg-ods-card',
|
|
39
|
+
className,
|
|
40
|
+
)}
|
|
41
|
+
style={tint}
|
|
26
42
|
>
|
|
27
43
|
<div className="relative flex h-10 shrink-0 items-center gap-2 border-b border-ods-border px-4" aria-hidden>
|
|
28
44
|
<span className="h-2.5 w-2.5 rounded-full bg-ods-border" />
|