diff --git a/apps/roadmap/package.json b/apps/roadmap/package.json index 653f6844..cab641e1 100644 --- a/apps/roadmap/package.json +++ b/apps/roadmap/package.json @@ -1,7 +1,7 @@ { "dependencies": { "@instructure/ui": "^11.2.0", - "@instructure/ui-color-utils": "^10.2.0", + "@instructure/ui-color-utils": "^11.2.0", "react": "^19.2.0", "react-dom": "^19.2.0" }, @@ -24,5 +24,5 @@ "typecheck": "tsgo --noEmit" }, "type": "module", - "version": "1.0.3" + "version": "1.0.4" } \ No newline at end of file diff --git a/apps/roadmap/public/themeEditor.js b/apps/roadmap/public/themeEditor.js index 204f5ca9..31773ade 100644 --- a/apps/roadmap/public/themeEditor.js +++ b/apps/roadmap/public/themeEditor.js @@ -13,7 +13,7 @@ * * Only runs on the "/pages/instructure-roadmap" path. * - * @version 2025.10.29.00 + * @version 2025.12.02.00 * */ @@ -178,14 +178,14 @@ if (matchesRoadmap || matchesCourse || matchesCourseWiki) { } }; - const _pushState = history.pushState; + const _pushState = history.pushState.bind(history); history.pushState = function pushState(...args) { const ret = _pushState.apply(this, args); window.dispatchEvent(new Event("locationchange")); return ret; }; - const _replaceState = history.replaceState; + const _replaceState = history.replaceState.bind(history); history.replaceState = function replaceState(...args) { const ret = _replaceState.apply(this, args); window.dispatchEvent(new Event("locationchange")); diff --git a/apps/roadmap/src/App.tsx b/apps/roadmap/src/App.tsx index 1935b639..0ee49c19 100644 --- a/apps/roadmap/src/App.tsx +++ b/apps/roadmap/src/App.tsx @@ -2,6 +2,7 @@ import { Flex, InstUISettingsProvider, canvas } from "@instructure/ui"; import type { FC } from "react"; import { useEffect, useMemo, useState } from "react"; import { Card, CardOverlay, Loading } from "./components"; +import type { Theme } from "@instructure/ui"; import { getBrandConfig, getColor, @@ -11,14 +12,19 @@ import { } from "./utils"; import "./App.css"; +type ThemeOrOverride = Theme | Record; + const App: FC = () => { const [overlayOpen, setOverlayOpen] = useState(false); - const [selectedEntry, setSelectedEntry] = useState( + const [selectedEntry, setSelectedEntry] = useState< + PendoAPIFeature | undefined + >(undefined); + const [brandConfig, setBrandConfig] = useState(); + const [roadmap, setRoadmap] = useState( undefined, ); - const [brandConfig, setBrandConfig] = useState({}); - const [roadmap, setRoadmap] = useState(undefined); const [isDark, setIsDark] = useState(false); + const [showLoading, setShowLoading] = useState(false); useEffect(() => { const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)"); @@ -31,13 +37,13 @@ const App: FC = () => { }, []); useEffect(() => { - getRoadmap().then((data) => { - setRoadmap(data); + void getRoadmap().then((data) => { + setRoadmap(data ?? undefined); }); }, []); useEffect(() => { - getBrandConfig().then((config) => { + void getBrandConfig().then((config) => { setBrandConfig(config); }); }, []); @@ -72,10 +78,9 @@ const App: FC = () => { })); }, [roadmap]); - // Debounce loading state - const [showLoading, setShowLoading] = useState(false); useEffect(() => { if (!roadmap) { + setShowLoading(false); const timeout = setTimeout(() => setShowLoading(true), 1000); return () => clearTimeout(timeout); } else { @@ -87,7 +92,7 @@ const App: FC = () => { { /> )} - ) : showLoading ? ( + ) : (showLoading ? ( - ) : null} + ) : null)} ); }; diff --git a/apps/roadmap/src/components/card.tsx b/apps/roadmap/src/components/card.tsx index f4ea8fb1..687291b3 100644 --- a/apps/roadmap/src/components/card.tsx +++ b/apps/roadmap/src/components/card.tsx @@ -16,7 +16,7 @@ import Logos, { Colors } from "./logos"; const Card: FC<{ entry: PendoAPIFeature; setSelectedEntry: React.Dispatch< - React.SetStateAction + React.SetStateAction >; setOverlayOpen: React.Dispatch>; isDark: boolean; diff --git a/apps/roadmap/src/components/logos.tsx b/apps/roadmap/src/components/logos.tsx index 7439ab41..b713cce6 100644 --- a/apps/roadmap/src/components/logos.tsx +++ b/apps/roadmap/src/components/logos.tsx @@ -1,27 +1,6 @@ import { InlineSVG } from "@instructure/ui"; import { darken, lighten } from "@instructure/ui-color-utils"; -import type { FC, ReactNode } from "react"; - -interface SVGInfo { - color: string; - SVG: ReactNode; - title: string; - viewBox: string; -} - -interface SVGProps { - height?: string; - width?: string; - inline?: boolean; - color?: string; - valign?: "top" | "middle" | "bottom" | "unset"; -} - -type ColorSVGProps = SVGProps & { - children: ReactNode; - title: string; - viewBox: string; -}; +import type { FC } from "react"; const ColorSVG: FC = ({ color = "currentColor", diff --git a/apps/roadmap/src/index.d.ts b/apps/roadmap/src/index.d.ts index 9f1222e1..89386dc4 100644 --- a/apps/roadmap/src/index.d.ts +++ b/apps/roadmap/src/index.d.ts @@ -1,5 +1,28 @@ /// +type FC

= import("react").FC

; + +interface SVGInfo { + color: string; + SVG: ReactNode; + title: string; + viewBox: string; +} + +interface SVGProps { + height?: string; + width?: string; + inline?: boolean; + color?: string; + valign?: "top" | "middle" | "bottom" | "unset"; +} + +type ColorSVGProps = SVGProps & { + children: ReactNode; + title: string; + viewBox: string; +}; + interface PendoAPI { results: PendoAPIFeature[]; } @@ -20,7 +43,7 @@ interface PendoAPIFeature { product: { area: string | null; name: string; - logo: SVGIconProps | undefined; + logo: FC> | undefined; color: string | undefined; }; } diff --git a/apps/roadmap/src/utils/getBrandConfig.ts b/apps/roadmap/src/utils/getBrandConfig.ts index db455f12..7150f085 100644 --- a/apps/roadmap/src/utils/getBrandConfig.ts +++ b/apps/roadmap/src/utils/getBrandConfig.ts @@ -49,7 +49,7 @@ const getBrandConfig = (): Promise => { }; window.addEventListener("message", handler); }); - brandConfigPromise.finally(() => { + void brandConfigPromise.finally(() => { brandConfigPromise = undefined; }); return brandConfigPromise; diff --git a/apps/roadmap/src/utils/getRoadmap.ts b/apps/roadmap/src/utils/getRoadmap.ts index cc4a2456..0b8997c4 100644 --- a/apps/roadmap/src/utils/getRoadmap.ts +++ b/apps/roadmap/src/utils/getRoadmap.ts @@ -1,19 +1,18 @@ import paramsToPendo from "./paramsToPendo"; -let roadmapPromise: Promise | null; -let cachedRoadmap: RoadmapFeatures | null; +let roadmapPromise: Promise | undefined; +let cachedRoadmap: RoadmapFeatures | null | undefined; type RoadmapRequestEvent = MessageEvent<{ value?: string }>; const getRoadmap = (): Promise => { console.debug("getRoadmap called"); - if (cachedRoadmap !== null) { + if (cachedRoadmap !== undefined && cachedRoadmap !== null) { console.debug("Returning cached roadmap"); return Promise.resolve(cachedRoadmap); } - if (roadmapPromise) { + if (roadmapPromise !== undefined) { console.debug("Returning existing roadmap promise"); - console.log(roadmapPromise); return roadmapPromise; } window.parent.postMessage({ type: "getRoadmap" }, "*"); @@ -32,7 +31,6 @@ const getRoadmap = (): Promise => { roadmapPromise = undefined; resolve(result); } - // Ignore unrelated events }; window.addEventListener("message", handler); }); diff --git a/apps/roadmap/src/utils/paramsToPendo.ts b/apps/roadmap/src/utils/paramsToPendo.ts index ab45fe73..305d4d9a 100644 --- a/apps/roadmap/src/utils/paramsToPendo.ts +++ b/apps/roadmap/src/utils/paramsToPendo.ts @@ -33,9 +33,9 @@ const isPendoAPI = (obj: unknown): obj is PendoAPI => { ); }; -const paramsToPendo = (params: string | null): RoadmapFeatures | null => { +const paramsToPendo = (params: string | null): RoadmapFeatures | undefined => { if (!params) { - return null; + return; } let p: unknown; @@ -50,20 +50,18 @@ const paramsToPendo = (params: string | null): RoadmapFeatures | null => { } const stages = [ - ...new Set((p as PendoAPI).results.map((result) => result.feature.stage)), + ...new Set(p.results.map((result) => result.feature.stage)), ].filter(Boolean) as string[]; const products = [ - ...new Set((p as PendoAPI).results.map((result) => result.product.name)), + ...new Set(p.results.map((result) => result.product.name)), ].filter(Boolean) as string[]; const productAreas = [ - ...new Set((p as PendoAPI).results.map((result) => result.product.area)), + ...new Set(p.results.map((result) => result.product.area)), ].filter(Boolean) as string[]; const labels = [ - ...new Set( - (p as PendoAPI).results.flatMap((result) => result.feature.labels), - ), + ...new Set(p.results.flatMap((result) => result.feature.labels)), ].filter(Boolean) as string[]; - const features = (p as PendoAPI).results; + const features = p.results; const roadmap: RoadmapFeatures = { features, diff --git a/package.json b/package.json index 025d9b90..18bdae85 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ }, "version": "3.0.0", "name": "@instructure.ai/shared-configs", - "packageManager": "pnpm@10.23.0", + "packageManager": "pnpm@10.24.0", "private": true, "type": "module", "scripts": { @@ -57,4 +57,4 @@ "type": "git", "url": "https://github.com/instructure/instructure.ai" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 260d9ed1..11664fad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,7 +22,7 @@ importers: version: 19.2.3(@types/react@19.2.6) '@typescript/native-preview': specifier: latest - version: 7.0.0-dev.20251121.1 + version: 7.0.0-dev.20251202.1 '@vitejs/plugin-react': specifier: ^5.1.1 version: 5.1.1(rolldown-vite@7.2.7(@types/node@24.9.1)(esbuild@0.25.12)(terser@5.44.1)(yaml@2.8.1)) @@ -64,7 +64,7 @@ importers: version: 1.0.0(react@19.2.0) tsdown: specifier: ^0.16.6 - version: 0.16.6(@typescript/native-preview@7.0.0-dev.20251121.1)(typescript@5.9.3) + version: 0.16.6(@typescript/native-preview@7.0.0-dev.20251202.1)(typescript@5.9.3) vite: specifier: npm:rolldown-vite@^7.2.7 version: rolldown-vite@7.2.7(@types/node@24.9.1)(esbuild@0.25.12)(terser@5.44.1)(yaml@2.8.1) @@ -103,8 +103,8 @@ importers: specifier: ^11.2.0 version: 11.2.0(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@instructure/ui-color-utils': - specifier: ^10.2.0 - version: 10.26.2 + specifier: ^11.2.0 + version: 11.2.0 react: specifier: ^19.2.0 version: 19.2.0 @@ -252,11 +252,11 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} - '@codemirror/autocomplete@6.19.0': - resolution: {integrity: sha512-61Hfv3cF07XvUxNeC3E7jhG8XNi1Yom1G0lRC936oLnlF+jrbrv8rc/J98XlYzcsAoTVupfsf5fLej1aI8kyIg==} + '@codemirror/autocomplete@6.20.0': + resolution: {integrity: sha512-bOwvTOIJcG5FVo5gUUupiwYh8MioPLQ4UcqbcRf7UQ98X90tCa9E1kZ3Z7tqwpZxYyOvh1YTYbmZE9RTfTp5hg==} - '@codemirror/commands@6.9.0': - resolution: {integrity: sha512-454TVgjhO6cMufsyyGN70rGIfJxJEjcqjBG2x2Y03Y/+Fm99d3O/Kv1QDYWuG6hvxsgmjXmBuATikIIYvERX+w==} + '@codemirror/commands@6.10.0': + resolution: {integrity: sha512-2xUIc5mHXQzT16JnyOFkh8PvfeXuIut3pslWGfsGOhxP/lpgRm9HOl/mpzLErgt5mXDovqA0d11P21gofRLb9w==} '@codemirror/lang-css@6.3.1': resolution: {integrity: sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==} @@ -270,8 +270,8 @@ packages: '@codemirror/lang-json@6.0.2': resolution: {integrity: sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ==} - '@codemirror/lang-markdown@6.4.0': - resolution: {integrity: sha512-ZeArR54seh4laFbUTVy0ZmQgO+C/cxxlW4jEoQMhL3HALScBpZBeZcLzrQmJsTEx4is9GzOe0bFAke2B1KZqeA==} + '@codemirror/lang-markdown@6.5.0': + resolution: {integrity: sha512-0K40bZ35jpHya6FriukbgaleaqzBLZfOh7HuzqbMxBXkbYMJDxfF39c23xOgxFezR+3G+tR2/Mup+Xk865OMvw==} '@codemirror/language@6.11.3': resolution: {integrity: sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA==} @@ -279,8 +279,8 @@ packages: '@codemirror/legacy-modes@6.5.2': resolution: {integrity: sha512-/jJbwSTazlQEDOQw2FJ8LEEKVS72pU0lx6oM54kGpL8t/NJ2Jda3CZ4pcltiKTdqYSRk3ug1B3pil1gsjA6+8Q==} - '@codemirror/lint@6.9.0': - resolution: {integrity: sha512-wZxW+9XDytH3SKvS8cQzMyQCaaazH8XL1EMHleHe00wVzsv7NBQKVW2yzEHrRhmM7ZOhVdItPbvlRBvMp9ej7A==} + '@codemirror/lint@6.9.2': + resolution: {integrity: sha512-sv3DylBiIyi+xKwRCJAAsBZZZWo82shJ/RTMymLabAdtbkV5cSKwWDeCgtUq3v8flTaXS2y1kKkICuRYtUswyQ==} '@codemirror/search@6.5.11': resolution: {integrity: sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==} @@ -288,8 +288,8 @@ packages: '@codemirror/state@6.5.2': resolution: {integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==} - '@codemirror/view@6.38.6': - resolution: {integrity: sha512-qiS0z1bKs5WOvHIAC0Cybmv4AJSkAXgX5aD6Mqd2epSLlVJsQl8NG23jCVouIgkh4All/mrbdsf2UOLFnJw0tw==} + '@codemirror/view@6.38.8': + resolution: {integrity: sha512-XcE9fcnkHCbWkjeKyi0lllwXmBLtyYb5dt89dJyx23I9+LSh5vZDIuk7OLG4VM1lgrXZQcY6cxyZyk5WVPRv/A==} '@csstools/color-helpers@5.1.0': resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} @@ -614,9 +614,6 @@ packages: peerDependencies: react: '>=18 <=19' - '@instructure/ui-color-utils@10.26.2': - resolution: {integrity: sha512-HaZF1jm21evOdAKbZX+2Q+H1Ejnpaj+B398VGoooj4lRYkl6aLjI6gqbNuUlSNMuVR6dF3vIQF31XXkENNVxfw==} - '@instructure/ui-color-utils@11.2.0': resolution: {integrity: sha512-g9a457MUmCawtvP5BaxoMmfEp5OP9HjWmgEy/1Zh4xmQ1DBjf6Ev5sQ+UGJj6IbmV6mzDMekRasxoC1ao2EvkA==} @@ -983,8 +980,8 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@lezer/common@1.3.0': - resolution: {integrity: sha512-L9X8uHCYU310o99L3/MpJKYxPzXPOS7S0NmBaM7UO/x2Kb2WbmMLSkfvdr1KxRIFYOpbY0Jhn7CfLSUDzL8arQ==} + '@lezer/common@1.4.0': + resolution: {integrity: sha512-DVeMRoGrgn/k45oQNu189BoW4SZwgZFzJ1+1TV5j2NJ/KFC83oa/enRqZSGshyeMk5cPWMhsKs9nx+8o0unwGg==} '@lezer/css@1.3.0': resolution: {integrity: sha512-pBL7hup88KbI7hXnZV3PQsn43DHy6TWyzuyk2AO9UyoXcDltvIdqWKE1dLL/45JVZ+YZkHe1WVHqO6wugZZWcw==} @@ -1001,11 +998,11 @@ packages: '@lezer/json@1.0.3': resolution: {integrity: sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==} - '@lezer/lr@1.4.2': - resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==} + '@lezer/lr@1.4.4': + resolution: {integrity: sha512-LHL17Mq0OcFXm1pGQssuGTQFPPdxARjKM8f7GA5+sGtHi0K3R84YaSbmche0+RKWHnCsx9asEe5OWOI4FHfe4A==} - '@lezer/markdown@1.5.1': - resolution: {integrity: sha512-F3ZFnIfNAOy/jPSk6Q0e3bs7e9grfK/n5zerkKoc5COH6Guy3Zb0vrJwXzdck79K16goBhYBRAvhf+ksqe0cMg==} + '@lezer/markdown@1.6.0': + resolution: {integrity: sha512-AXb98u3M6BEzTnreBnGtQaF7xFTiMA92Dsy5tqEjpacbjRxDSFdN4bKJo9uvU4cEEOS7D2B9MT7kvDgOEIzJSw==} '@marijn/find-cluster-break@1.0.2': resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==} @@ -1406,43 +1403,43 @@ packages: '@types/ua-parser-js@0.7.39': resolution: {integrity: sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==} - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20251121.1': - resolution: {integrity: sha512-EAJ7kC/K+11aRgQ1XpMNvffpwTlLgj+YgCfYB/PbwvhpQaRu39rg2LoOSBhcUjyOqo+n8uwHRzjBJxaLGLghlQ==} + '@typescript/native-preview-darwin-arm64@7.0.0-dev.20251202.1': + resolution: {integrity: sha512-zcyBNJm0PW4H/yE6Q67/8iKn0iHH1PPV/Wm0MaermgLFgvDc684RFrC7QDRaykxD8+GnrKii+94fq22wCXwNYw==} cpu: [arm64] os: [darwin] - '@typescript/native-preview-darwin-x64@7.0.0-dev.20251121.1': - resolution: {integrity: sha512-4J2O1JIv1Ayi6iFrZE3+T443gqKKf7zJ/D0j2iDvVijcc6ZxFsvuWBTKOZjmF4Di7GDt41Yc4LEtzYyAd4vjfQ==} + '@typescript/native-preview-darwin-x64@7.0.0-dev.20251202.1': + resolution: {integrity: sha512-IEFRJYm+ZzAsq0lMWZP7M5uI0b0vw0Tq1bZcN7SlXFDDKqTSNFrNVNS6WFpfvOBvws1H1TJ+5c6yUtmqqHbR0g==} cpu: [x64] os: [darwin] - '@typescript/native-preview-linux-arm64@7.0.0-dev.20251121.1': - resolution: {integrity: sha512-VyPxDx0T8ERHzAfxlS0CKgATRoJ9DJhIjWCbd40AMXPP8ICD5lWEECM5G2c1sNDlTU48h9kzTHjRpjY9S922Lw==} + '@typescript/native-preview-linux-arm64@7.0.0-dev.20251202.1': + resolution: {integrity: sha512-khT67uO5GAdCWFQDgLKJknA3lUtqYfdO2BWH6YTLQErBWN6eDOnCoV0xnGSqBVxW+yJ1IxdqGpWp2m7JFv1a/A==} cpu: [arm64] os: [linux] - '@typescript/native-preview-linux-arm@7.0.0-dev.20251121.1': - resolution: {integrity: sha512-IwSOUu8oz7mptrrmaHH1lMj/YsnGR+Q9RtueA9n8W56YpI6PuoiEPPQzdbwzXUEPiYnDtLMJ+u8c/DAUBT0hrw==} + '@typescript/native-preview-linux-arm@7.0.0-dev.20251202.1': + resolution: {integrity: sha512-5aCzozErbkfZp0jx257uvk0QIfBQ9a55kAoO+KgfQCJdNCdy3mnxh/4YX/eA3oNdHb6ECde+a45dvLj5wyei9g==} cpu: [arm] os: [linux] - '@typescript/native-preview-linux-x64@7.0.0-dev.20251121.1': - resolution: {integrity: sha512-r+t9WcYm6YKL18YVNsuC/E6rYK7hLSQzNkljkHcGUtmcmkcwvsTpus+vJJHT7vhUyUAfRlvBxkma47eQ5PCwSg==} + '@typescript/native-preview-linux-x64@7.0.0-dev.20251202.1': + resolution: {integrity: sha512-r1EH0LKn/Coa1bge+a+KgwmEApoCJsK1oieTu+sZrCH5dsOed4rNGrcOyliAygb720dc5dRTxkADj2/lceqFrQ==} cpu: [x64] os: [linux] - '@typescript/native-preview-win32-arm64@7.0.0-dev.20251121.1': - resolution: {integrity: sha512-3W/5Q5ysY68/gzgsbUm4lAPq0l2/mhCGPB+yml6eOgLqSyZ0rknlyH2iGVfohxHHMiHHTBLPpVyw8jKF4DiiGw==} + '@typescript/native-preview-win32-arm64@7.0.0-dev.20251202.1': + resolution: {integrity: sha512-lLlRtKbrUpLqzcSQs7NeRZKlQpPnEgiD+cNHfwpLmJ5KEKeNJAhapDEX4UoauhcgUcwe7CtyQ9EO9osvbLb35w==} cpu: [arm64] os: [win32] - '@typescript/native-preview-win32-x64@7.0.0-dev.20251121.1': - resolution: {integrity: sha512-mGGpTd1uZmNyTu0NWI3a/hMFYmIDP5QoWOFXqAFLvsH2pc3khzkOY4b+tuAEmXx3ewXgXxObynakO8LUgfraBQ==} + '@typescript/native-preview-win32-x64@7.0.0-dev.20251202.1': + resolution: {integrity: sha512-RM5Oud26RBWiaH/4uSy/Xi3jIXIaOqytXl7UrjNv8C+ygcxB4SDYehHtyS0pE1L+zSqBerdLhv0mxn0UHIIbHA==} cpu: [x64] os: [win32] - '@typescript/native-preview@7.0.0-dev.20251121.1': - resolution: {integrity: sha512-FwmJc6WcpkLJjyoUKk/ED0IBR0b/ePj9My76n8epZj/qvibCdf27J/vWWtJJtu2VFWI/3EIJcDW0mxevwa/+Bg==} + '@typescript/native-preview@7.0.0-dev.20251202.1': + resolution: {integrity: sha512-BCElj1bPWsjf9SFfVl7DemGFj0/jlUeX1cIDjGCkwSwBF+vwm9JvVkYJ8+UEzbhaecWvsCVmsYrjZCTRSa31+g==} hasBin: true '@vitejs/plugin-react@5.1.1': @@ -2767,48 +2764,48 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} - '@codemirror/autocomplete@6.19.0': + '@codemirror/autocomplete@6.20.0': dependencies: '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.6 - '@lezer/common': 1.3.0 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.4.0 - '@codemirror/commands@6.9.0': + '@codemirror/commands@6.10.0': dependencies: '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.6 - '@lezer/common': 1.3.0 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.4.0 '@codemirror/lang-css@6.3.1': dependencies: - '@codemirror/autocomplete': 6.19.0 + '@codemirror/autocomplete': 6.20.0 '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@lezer/common': 1.3.0 + '@lezer/common': 1.4.0 '@lezer/css': 1.3.0 '@codemirror/lang-html@6.4.11': dependencies: - '@codemirror/autocomplete': 6.19.0 + '@codemirror/autocomplete': 6.20.0 '@codemirror/lang-css': 6.3.1 '@codemirror/lang-javascript': 6.2.4 '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.6 - '@lezer/common': 1.3.0 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.4.0 '@lezer/css': 1.3.0 '@lezer/html': 1.3.12 '@codemirror/lang-javascript@6.2.4': dependencies: - '@codemirror/autocomplete': 6.19.0 + '@codemirror/autocomplete': 6.20.0 '@codemirror/language': 6.11.3 - '@codemirror/lint': 6.9.0 + '@codemirror/lint': 6.9.2 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.6 - '@lezer/common': 1.3.0 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.4.0 '@lezer/javascript': 1.5.4 '@codemirror/lang-json@6.0.2': @@ -2816,46 +2813,46 @@ snapshots: '@codemirror/language': 6.11.3 '@lezer/json': 1.0.3 - '@codemirror/lang-markdown@6.4.0': + '@codemirror/lang-markdown@6.5.0': dependencies: - '@codemirror/autocomplete': 6.19.0 + '@codemirror/autocomplete': 6.20.0 '@codemirror/lang-html': 6.4.11 '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.6 - '@lezer/common': 1.3.0 - '@lezer/markdown': 1.5.1 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.4.0 + '@lezer/markdown': 1.6.0 '@codemirror/language@6.11.3': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.6 - '@lezer/common': 1.3.0 + '@codemirror/view': 6.38.8 + '@lezer/common': 1.4.0 '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/lr': 1.4.4 style-mod: 4.1.3 '@codemirror/legacy-modes@6.5.2': dependencies: '@codemirror/language': 6.11.3 - '@codemirror/lint@6.9.0': + '@codemirror/lint@6.9.2': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.6 + '@codemirror/view': 6.38.8 crelt: 1.0.6 '@codemirror/search@6.5.11': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.6 + '@codemirror/view': 6.38.8 crelt: 1.0.6 '@codemirror/state@6.5.2': dependencies: '@marijn/find-cluster-break': 1.0.2 - '@codemirror/view@6.38.6': + '@codemirror/view@6.38.8': dependencies: '@codemirror/state': 6.5.2 crelt: 1.0.6 @@ -3294,11 +3291,6 @@ snapshots: - react-dom - supports-color - '@instructure/ui-color-utils@10.26.2': - dependencies: - '@babel/runtime': 7.28.4 - tinycolor2: 1.6.0 - '@instructure/ui-color-utils@11.2.0': dependencies: '@babel/runtime': 7.28.4 @@ -4065,19 +4057,19 @@ snapshots: '@instructure/ui-source-code-editor@11.2.0(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@babel/runtime': 7.28.4 - '@codemirror/autocomplete': 6.19.0 - '@codemirror/commands': 6.9.0 + '@codemirror/autocomplete': 6.20.0 + '@codemirror/commands': 6.10.0 '@codemirror/lang-css': 6.3.1 '@codemirror/lang-html': 6.4.11 '@codemirror/lang-javascript': 6.2.4 '@codemirror/lang-json': 6.0.2 - '@codemirror/lang-markdown': 6.4.0 + '@codemirror/lang-markdown': 6.5.0 '@codemirror/language': 6.11.3 '@codemirror/legacy-modes': 6.5.2 - '@codemirror/lint': 6.9.0 + '@codemirror/lint': 6.9.2 '@codemirror/search': 6.5.11 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.6 + '@codemirror/view': 6.38.8 '@instructure/emotion': 11.2.0(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@instructure/shared-types': 11.2.0(react@19.2.0) '@instructure/ui-a11y-content': 11.2.0(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) @@ -4541,43 +4533,43 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@lezer/common@1.3.0': {} + '@lezer/common@1.4.0': {} '@lezer/css@1.3.0': dependencies: - '@lezer/common': 1.3.0 + '@lezer/common': 1.4.0 '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/lr': 1.4.4 '@lezer/highlight@1.2.1': dependencies: - '@lezer/common': 1.3.0 + '@lezer/common': 1.4.0 '@lezer/html@1.3.12': dependencies: - '@lezer/common': 1.3.0 + '@lezer/common': 1.4.0 '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/lr': 1.4.4 '@lezer/javascript@1.5.4': dependencies: - '@lezer/common': 1.3.0 + '@lezer/common': 1.4.0 '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/lr': 1.4.4 '@lezer/json@1.0.3': dependencies: - '@lezer/common': 1.3.0 + '@lezer/common': 1.4.0 '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 + '@lezer/lr': 1.4.4 - '@lezer/lr@1.4.2': + '@lezer/lr@1.4.4': dependencies: - '@lezer/common': 1.3.0 + '@lezer/common': 1.4.0 - '@lezer/markdown@1.5.1': + '@lezer/markdown@1.6.0': dependencies: - '@lezer/common': 1.3.0 + '@lezer/common': 1.4.0 '@lezer/highlight': 1.2.1 '@marijn/find-cluster-break@1.0.2': {} @@ -4860,36 +4852,36 @@ snapshots: '@types/ua-parser-js@0.7.39': {} - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20251121.1': + '@typescript/native-preview-darwin-arm64@7.0.0-dev.20251202.1': optional: true - '@typescript/native-preview-darwin-x64@7.0.0-dev.20251121.1': + '@typescript/native-preview-darwin-x64@7.0.0-dev.20251202.1': optional: true - '@typescript/native-preview-linux-arm64@7.0.0-dev.20251121.1': + '@typescript/native-preview-linux-arm64@7.0.0-dev.20251202.1': optional: true - '@typescript/native-preview-linux-arm@7.0.0-dev.20251121.1': + '@typescript/native-preview-linux-arm@7.0.0-dev.20251202.1': optional: true - '@typescript/native-preview-linux-x64@7.0.0-dev.20251121.1': + '@typescript/native-preview-linux-x64@7.0.0-dev.20251202.1': optional: true - '@typescript/native-preview-win32-arm64@7.0.0-dev.20251121.1': + '@typescript/native-preview-win32-arm64@7.0.0-dev.20251202.1': optional: true - '@typescript/native-preview-win32-x64@7.0.0-dev.20251121.1': + '@typescript/native-preview-win32-x64@7.0.0-dev.20251202.1': optional: true - '@typescript/native-preview@7.0.0-dev.20251121.1': + '@typescript/native-preview@7.0.0-dev.20251202.1': optionalDependencies: - '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20251121.1 - '@typescript/native-preview-darwin-x64': 7.0.0-dev.20251121.1 - '@typescript/native-preview-linux-arm': 7.0.0-dev.20251121.1 - '@typescript/native-preview-linux-arm64': 7.0.0-dev.20251121.1 - '@typescript/native-preview-linux-x64': 7.0.0-dev.20251121.1 - '@typescript/native-preview-win32-arm64': 7.0.0-dev.20251121.1 - '@typescript/native-preview-win32-x64': 7.0.0-dev.20251121.1 + '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20251202.1 + '@typescript/native-preview-darwin-x64': 7.0.0-dev.20251202.1 + '@typescript/native-preview-linux-arm': 7.0.0-dev.20251202.1 + '@typescript/native-preview-linux-arm64': 7.0.0-dev.20251202.1 + '@typescript/native-preview-linux-x64': 7.0.0-dev.20251202.1 + '@typescript/native-preview-win32-arm64': 7.0.0-dev.20251202.1 + '@typescript/native-preview-win32-x64': 7.0.0-dev.20251202.1 '@vitejs/plugin-react@5.1.1(rolldown-vite@7.2.7(@types/node@24.9.1)(esbuild@0.25.12)(terser@5.44.1)(yaml@2.8.1))': dependencies: @@ -5654,7 +5646,7 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - rolldown-plugin-dts@0.18.0(@typescript/native-preview@7.0.0-dev.20251121.1)(rolldown@1.0.0-beta.51)(typescript@5.9.3): + rolldown-plugin-dts@0.18.0(@typescript/native-preview@7.0.0-dev.20251202.1)(rolldown@1.0.0-beta.51)(typescript@5.9.3): dependencies: '@babel/generator': 7.28.5 '@babel/parser': 7.28.5 @@ -5667,7 +5659,7 @@ snapshots: obug: 2.1.0 rolldown: 1.0.0-beta.51 optionalDependencies: - '@typescript/native-preview': 7.0.0-dev.20251121.1 + '@typescript/native-preview': 7.0.0-dev.20251202.1 typescript: 5.9.3 transitivePeerDependencies: - oxc-resolver @@ -5869,7 +5861,7 @@ snapshots: tree-kill@1.2.2: {} - tsdown@0.16.6(@typescript/native-preview@7.0.0-dev.20251121.1)(typescript@5.9.3): + tsdown@0.16.6(@typescript/native-preview@7.0.0-dev.20251202.1)(typescript@5.9.3): dependencies: ansis: 4.2.0 cac: 6.7.14 @@ -5879,7 +5871,7 @@ snapshots: hookable: 5.5.3 obug: 2.1.0 rolldown: 1.0.0-beta.51 - rolldown-plugin-dts: 0.18.0(@typescript/native-preview@7.0.0-dev.20251121.1)(rolldown@1.0.0-beta.51)(typescript@5.9.3) + rolldown-plugin-dts: 0.18.0(@typescript/native-preview@7.0.0-dev.20251202.1)(rolldown@1.0.0-beta.51)(typescript@5.9.3) semver: 7.7.3 tinyexec: 1.0.2 tinyglobby: 0.2.15