Skip to content

Commit 9e90103

Browse files
feat: update iframe capabilities for dojo (2) (#731)
* Add `chatDefaultOpen` parameter to close chat sidebar by default * chore: remove unused imports * feat: pass `chatDefaultOpen` to all uses of `CopilotSidebar` in Dojo No instances of `CopilotPopup` are currently being used, and `CopilotChat` does not support `defaultOpen` prop * fix: hide mobile header when `sidebarHidden=true` (`sidebar=false`) * chore: consolidate redundant base styles * fix: enforce body background/foreground colors (currently broken on 404) * fix: support dark mode on code tabs * chore: untrack and remove .DS_Store * feat: improve dark mode styles * feat: allow overriding theme via url `theme` param * fix: match background to chat background color * feat: finesse iframe'd styling for dojo examples * fix: remove content rounded corners when used in iframe * fix: use `neutral` color instead of `gray` when in iframe * feat: add light and dark mode support for Monaco code editor * feat: remove shadow from active tab in code editor tabs * fix: use copilotkit docs bg color for code editor on dark mode * feat: lighten code tabs active tab on light mode * feat: offset tabs bg-color on dark mode * feat: offset tabs bg-color on dark mode from 10% to 5% * feat: round corners on code viewer contents to show as visually nested * feat: refine how we mix background color * feat: change bg mix opacity from 10% to 8% for light mode * feat: change bg mix opacity from 8% to 3% for light mode * fix(code-viewer): remove bottom border * feat(code-viewer): refine CodeEditor wrapper border color * fix(code-viewer): collapse redundant x-axis borders * feat(code-viewer): refine border colors * feat: add hook check for if the dojo is iframed from cpk docs * fix: dojo sidebar collapsing, add theme color when in cpk iframe * feat: remove override forcing primary color * fix: don't round corners on FileTree, even when in iframe * fix: fix e2e test error * chore: update files.json * fix: add `console.log` statements for troubleshooting * fix: fix dojo startup error when running `run-everything` script * chore: wrap `IFRAME_DETECTION` console.log statements in console.group * fix: fix `chatDefaultOpen` parameter value logic * chore: generate files.json and uv.lock files * chore: re-run `pnpm run generate-content-json`
1 parent 0a92b10 commit 9e90103

File tree

6 files changed

+1631
-683
lines changed

6 files changed

+1631
-683
lines changed

apps/dojo/scripts/prep-dojo-everything.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ const ALL_TARGETS = {
118118
cwd: path.join(integrationsRoot, "microsoft-agent-framework/python/examples"),
119119
},
120120
"microsoft-agent-framework-dotnet": {
121-
command: "dotnet restore AGUIDojoServer/AGUIDojoServer.csproj",
121+
command: "dotnet restore AGUIDojoServer/AGUIDojoServer.csproj && dotnet build AGUIDojoServer/AGUIDojoServer.csproj",
122122
name: "Microsoft Agent Framework (.NET)",
123123
cwd: path.join(integrationsRoot, "microsoft-agent-framework/dotnet/examples"),
124124
},

apps/dojo/src/app/globals.css

Lines changed: 10 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -307,33 +307,15 @@
307307
}
308308

309309
@utility mix-from-* {
310-
--tw-mix-from-color: --value(--color-*);
310+
--tw-mix-from-color: --value(--color-*, color, [color]);
311311
--tw-mix-from-opacity: --modifier(--opacity-*, [percentage]);
312312
--tw-mix-from-opacity: calc(--modifier(number) * 1%);
313313
--tw-mix-from-opacity: calc(--modifier([number]) * 100%);
314-
--tw-mix-from: --alpha(
315-
var(--tw-mix-from-color) / var(--tw-mix-from-opacity, 100%)
316-
);
314+
--tw-mix-from: --alpha(var(--tw-mix-from-color) / var(--tw-mix-from-opacity, 100%));
317315
/* calculate the final color-mix result */
318-
--tw-mix: color-mix(
319-
color-mix(
320-
in srgb,
321-
var(--color-mix-from),
322-
var(--color-mix-to) var(--tw-mix-percent, 50%)
323-
)
324-
var(--tw-mix-opacity, 100%),
325-
transparent
326-
);
316+
--tw-mix: color-mix(color-mix(in srgb, var(--color-mix-from), var(--color-mix-to) var(--tw-mix-percent, 50%)) var(--tw-mix-opacity, 100%), transparent);
327317
@supports (color: color-mix(in lab, red, red)) {
328-
--tw-mix: color-mix(
329-
color-mix(
330-
in oklab,
331-
var(--color-mix-from),
332-
var(--color-mix-to) var(--tw-mix-percent, 50%)
333-
)
334-
var(--tw-mix-opacity, 100%),
335-
transparent
336-
);
318+
--tw-mix: color-mix(color-mix(in oklab, var(--color-mix-from), var(--color-mix-to) var(--tw-mix-percent, 50%)) var(--tw-mix-opacity, 100%), transparent);
337319
}
338320
/* redefining the color variables here to ensure they receive the latest values */
339321
--color-mix-from: var(--tw-mix-from);
@@ -342,31 +324,15 @@
342324
}
343325

344326
@utility mix-to-* {
345-
--tw-mix-to-color: --value(--color-*);
327+
--tw-mix-to-color: --value(--color-*, color, [color]);
346328
--tw-mix-to-opacity: --modifier(--opacity-*, [percentage]);
347329
--tw-mix-to-opacity: calc(--modifier(number) * 1%);
348330
--tw-mix-to-opacity: calc(--modifier([number]) * 100%);
349331
--tw-mix-to: --alpha(var(--tw-mix-to-color) / var(--tw-mix-to-opacity, 100%));
350332
/* calculate the final color-mix result */
351-
--tw-mix: color-mix(
352-
color-mix(
353-
in srgb,
354-
var(--color-mix-from),
355-
var(--color-mix-to) var(--tw-mix-percent, 50%)
356-
)
357-
var(--tw-mix-opacity, 100%),
358-
transparent
359-
);
333+
--tw-mix: color-mix(color-mix(in srgb, var(--color-mix-from), var(--color-mix-to) var(--tw-mix-percent, 50%)) var(--tw-mix-opacity, 100%), transparent);
360334
@supports (color: color-mix(in lab, red, red)) {
361-
--tw-mix: color-mix(
362-
color-mix(
363-
in oklab,
364-
var(--color-mix-from),
365-
var(--color-mix-to) var(--tw-mix-percent, 50%)
366-
)
367-
var(--tw-mix-opacity, 100%),
368-
transparent
369-
);
335+
--tw-mix: color-mix(color-mix(in oklab, var(--color-mix-from), var(--color-mix-to) var(--tw-mix-percent, 50%)) var(--tw-mix-opacity, 100%), transparent);
370336
}
371337
/* redefining the color variables here to ensure they receive the latest values */
372338
--color-mix-from: var(--tw-mix-from);
@@ -382,30 +348,12 @@
382348
--tw-mix-opacity: calc(--modifier(number) * 1%);
383349
--tw-mix-opacity: calc(--modifier([number]) * 100%);
384350
/* calculate the final color-mix result */
385-
--tw-mix: color-mix(
386-
in srgb,
387-
color-mix(
388-
in srgb,
389-
var(--color-mix-from),
390-
var(--color-mix-to) var(--tw-mix-percent, 50%)
391-
)
392-
var(--tw-mix-opacity, 100%),
393-
transparent
394-
);
351+
--tw-mix: color-mix(in srgb, color-mix(in srgb, var(--color-mix-from), var(--color-mix-to) var(--tw-mix-percent, 50%)) var(--tw-mix-opacity, 100%), transparent);
395352
@supports (color: color-mix(in lab, red, red)) {
396-
--tw-mix: color-mix(
397-
in oklab,
398-
color-mix(
399-
in oklab,
400-
var(--color-mix-from),
401-
var(--color-mix-to) var(--tw-mix-percent, 50%)
402-
)
403-
var(--tw-mix-opacity, 100%),
404-
transparent
405-
);
353+
--tw-mix: color-mix(in oklab, color-mix(in oklab, var(--color-mix-from), var(--color-mix-to) var(--tw-mix-percent, 50%)) var(--tw-mix-opacity, 100%), transparent);
406354
}
407355
/* redefining the color variables here to ensure they receive the latest values */
408356
--color-mix-from: var(--tw-mix-from);
409357
--color-mix-to: var(--tw-mix-to);
410358
--color-mix: var(--tw-mix);
411-
}
359+
}

apps/dojo/src/contexts/url-params-context.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ export function URLParamsProvider({ children }: URLParamsProviderProps) {
140140
const newState: URLParamsState = {
141141
view: (searchParams.get("view") as View) || "preview",
142142
sidebarHidden: searchParams.get("sidebar") === "false",
143-
chatDefaultOpen: searchParams.get("chatDefaultOpen") === "true",
143+
chatDefaultOpen: searchParams.get("chatDefaultOpen") !== "false",
144144
frameworkPickerHidden: searchParams.get("frameworkPicker") === "false",
145145
viewPickerHidden: searchParams.get("viewPicker") === "false",
146146
featurePickerHidden: searchParams.get("featurePicker") === "false",

apps/dojo/src/utils/use-is-inside-iframe.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,14 @@ export function useIsInsideIframe() {
1616
// returns true if the iframe is inside a copilotkit.com or localhost (for local internal development)
1717
export function useIsInsideCpkFrame(): boolean {
1818
const isInsideIframe = useIsInsideIframe();
19+
console.group("IFRAME_DETECTION");
20+
console.log("isInsideIframe", isInsideIframe);
1921
if (!isInsideIframe || typeof document === "undefined") return false;
2022
const referrer = document.referrer ?? "";
2123
const isInsideCpkFrame =
2224
referrer.includes("copilotkit.com") || referrer.includes("localhost");
25+
console.log("isInsideCpkFrame", isInsideCpkFrame);
26+
console.log("referrer", referrer);
27+
console.groupEnd();
2328
return isInsideCpkFrame;
2429
}

0 commit comments

Comments
 (0)