Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📦 Bundle Stats —
|
| Metric | Value | vs cody/ve-lite2-06-studio-screens-scheduling-0ee6 (aea264f) | vs v6.16.0 |
|---|---|---|---|
| Internal (raw) | 4.46 MB | -241 B, -0.0% | +30.7 KB, +0.7% |
| Internal (gzip) | 1.11 MB | -8 B, -0.0% | +9.6 KB, +0.9% |
| Bundled (raw) | 13.29 MB | -265 B, -0.0% | +28.8 KB, +0.2% |
| Bundled (gzip) | 3.14 MB | -168 B, -0.0% | +8.2 KB, +0.3% |
| Import time | 1.82s | -6ms, -0.3% | +86ms, +5.0% |
bin:sanity
| Metric | Value | vs cody/ve-lite2-06-studio-screens-scheduling-0ee6 (aea264f) | vs v6.16.0 |
|---|---|---|---|
| Internal (raw) | 7.1 KB | - | - |
| Internal (gzip) | 2.9 KB | - | - |
| Bundled (raw) | 7.1 KB | - | - |
| Bundled (gzip) | 2.8 KB | - | - |
| Import time | 5ms | -0ms, -1.3% | +0ms, +7.1% |
🗺️ View treemap · Artifacts
Details
- Import time regressions over 10% are flagged with
⚠️ - Sizes shown as raw / gzip 🗜️. Internal bytes = own code only. Total bytes = with all dependencies. Import time = Node.js cold-start median.
📚 TypeDoc Generation Result✅ TypeDoc generated successfully!
The TypeDoc JSON file has been generated and validated. All documentation scripts completed successfully. |
❌ E2E Tests🟢 169 passed • 🔴 2 failed • 🟡 47 flaky • (⚪ 92 skipped) • view full report • view run 🤖 Share with an AI agent: Debug failing tests locallySANITY_E2E_PROJECT_ID=ittbm412 \
SANITY_E2E_BASE_URL=https://e2e-studio-453h9m9fv.sanity.dev \
SANITY_E2E_DATASET=pr-14994-chromium-36111985279 \
SANITY_E2E_DATASET_CHROMIUM=pr-14994-chromium-36111985279 \
SANITY_E2E_DATASET_FIREFOX=pr-14994-firefox-36111985279 \
pnpm test:e2e --headed \
e2e/tests/expanded-document/expanded.spec.ts \
e2e/tests/tasks/tasks.spec.ts |
Visual regression coverage130 changed UI files: 28 covered, 4 pending, 98 uncovered. Per-file coverage (130)
covered: a committed |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix prepared a fix for the issue found in the latest run.
- ✅ Fixed: Navbar grid columns may not apply
- Both navGrid column templates are now wrapped in
&&so they sit at (0,2,0) like the sibling ui5 Grid migrations (CalendarMonth, ImageListView) and can no longer lose an order-dependent cascade tie, though the impact is latent rather than currently visible since ui5's Grid only emits its own grid-template-columns when the gridTemplateColumns prop is passed and the navbar passes none.
- Both navGrid column templates are now wrapped in
Or push these changes by commenting:
@cursor push 981ba62287
Preview (981ba62287)
diff --git a/packages/sanity/src/core/studio/components/navbar/StudioNavbar.css.ts b/packages/sanity/src/core/studio/components/navbar/StudioNavbar.css.ts
--- a/packages/sanity/src/core/studio/components/navbar/StudioNavbar.css.ts
+++ b/packages/sanity/src/core/studio/components/navbar/StudioNavbar.css.ts
@@ -22,12 +22,17 @@
})
export const navGrid = style({
- // Allow the tools column to shrink below its content so CollapseTabList can collapse into the overflow menu.
- 'gridTemplateColumns': 'auto minmax(0, 1fr) auto',
- '@media': {
- // media[4]
- 'screen and (min-width: 1800px)': {
- gridTemplateColumns: '1fr auto 1fr',
+ selectors: {
+ // `&&` beats ui5 Grid's own column template regardless of stylesheet order
+ '&&': {
+ // Allow the tools column to shrink below its content so CollapseTabList can collapse into the overflow menu.
+ 'gridTemplateColumns': 'auto minmax(0, 1fr) auto',
+ '@media': {
+ // media[4]
+ 'screen and (min-width: 1800px)': {
+ gridTemplateColumns: '1fr auto 1fr',
+ },
+ },
},
},
})You can send follow-ups to the cloud agent here.
Reviewed by Cursor Bugbot for commit e4f0fda. Configure here.
e4f0fda to
252202e
Compare
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Two extracted styles need stronger specificity to preserve minimum sizing against runtime @sanity/ui styles.
Get a fresh assessment by requesting another Copilot review.
Review effort: Balanced
Findings: 2
Open (2)
What changed in this PR
Migrates navbar-related styling from styled-components to vanilla-extract while preserving existing behavior.
Changes:
- Migrates navbar, drawer, search, resources, and workspace preview styles.
- Replaces dynamic styles with variants, CSS variables, and keyframes.
- Uses
useTheme_v2for default workspace icons.
| File | Description |
|---|---|
WorkspacePreview.tsx |
Applies extracted preview styles. |
WorkspacePreview.css.ts |
Defines icon sizing and SVG styles. |
StudioNavbar.tsx |
Replaces styled navbar wrappers. |
StudioNavbar.css.ts |
Defines navbar layout and responsive grid. |
SearchHeader.tsx |
Migrates spinner and filter wrapper. |
SearchHeader.css.ts |
Defines spinner animation and layout. |
ImageReferencePreview.tsx |
Applies extracted image preview styles. |
ImageReferencePreview.css.ts |
Defines square preview and image positioning. |
FilterLabel.tsx |
Bridges dynamic flex shrink through a CSS variable. |
FilterLabel.css.ts |
Defines the flex-shrink variable. |
StudioInfoDialog.tsx |
Replaces styled dialog elements. |
StudioInfoDialog.css.ts |
Defines monogram and badge truncation styles. |
ResourcesButton.tsx |
Applies extracted menu sizing. |
ResourcesButton.css.ts |
Defines menu width constraints. |
NavDrawer.tsx |
Replaces styled motion cards and layer. |
NavDrawer.css.ts |
Defines drawer, backdrop, and panel layout. |
createDefaultIcon.tsx |
Reads font values through useTheme_v2. |
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
…ews to vanilla-extract Layer 7/10 of the second low-risk cherry-pick series from the styled-components to vanilla-extract migration in #14566. Files are taken from the tip of that stack.
252202e to
4aca2d5
Compare



Description
Layer 7/10 of a second low-risk cherry-pick stack from the styled-components to vanilla-extract migration in #14566 (the 12-PR
ve-stackseries, #14616 to #14627). The first stack (#14905 to #14914) took the purely static rules and has merged; this one takes the lowest-risk tier that is left, in the same shape: at most 20 files per layer, one commit each, every file copied verbatim from the reference tip, whose merge base withmainis455717e. On top of static rules and&&overrides, this tier allows attribute and pseudo selectors,keyframes,globalStylescoped under a local class, closed-setstyleVariants, a few prop- or theme-driven values (createVarwithassignInlineVars, oruseTheme_v2) and a few media or container queries with default-theme literal breakpoints. Layers are ordered by risk, lowest first, so the stack can be merged bottom-up and stopped at any layer. Based on #14992.This layer covers the rest of the navbar: the root navbar layer and grid, nav drawer, resources button and studio info dialog, the search header spinner, filter labels, image reference previews, workspace previews and the default workspace icon.
What to review
StudioNavbar: thetheme.sanity.media[4]breakpoint becomes a literal 1800px (the default theme value) andline-heightgets&&.FilterLabelpasses$flexShrinkthroughcreateVarandassignInlineVars, mergingstyleandclassName;WorkspacePreviewturns its$sizeintostyleVariants.createDefaultIconreads the font fromuseTheme_v2()instead of styled-components'useTheme(), using the same keys in the v2 theme;StudioInfoDialog's.attrs({overflow, radius})become props onCard.NavDrawer's inner card hadmin-width: 200pxat single-class specificity, which loses to v4Box's own flex-itemmin-width: 0(measured in Chromium, it computed0px; the styled original won that tie by injection order). It now sits under the existing&&withheight, which computes200px.StudioNavbar.tsxalso carries feat(core): read every selected variant from perspective #14918 (read every selected variant), whichmainadded in a separate hunk; the rebase kept both.sanity(core/studio/components/navbar,core/config).Testing
Each layer passes
oxfmt --checkand a type-awareoxlint --type-checkof its files plus every file importing them, on its own commit. At the stack tippnpm check:oxlintpasses, the packages build with the migrated rules inlib/bundle.css, andpnpm vitest run --project=sanity --changed origin/mainpasses (227 files, 1885 tests, rebased onmainat4cebde0), as does the exports snapshot test, so no public export changes shape. Every Storybook story that renders a file from this stack (17 stories) was screenshotted onmainand at the tip and compared pixel by pixel: all 17 are identical, while a one-value negative control produced 42,739 changed pixels. For this layer, the WorkspacePreview and WorkspaceAuthLayout stories are pixel-identical.Notes for release
N/A – Internal styling migration.