Skip to content

v6: Restyle plugin-code-exporter to v6 design tokens#4296

Draft
trevor-scheer wants to merge 2 commits into
graphiql-6from
trevor/restyle-code-exporter
Draft

v6: Restyle plugin-code-exporter to v6 design tokens#4296
trevor-scheer wants to merge 2 commits into
graphiql-6from
trevor/restyle-code-exporter

Conversation

@trevor-scheer
Copy link
Copy Markdown
Contributor

Summary

  • Migrate @graphiql/plugin-code-exporter styles to v6 OKLCH design tokens.
  • No JS or API changes; the existing plugin contract ({title, icon, content}) is preserved.
  • Drops dead v5 selectors (.docExplorerWrap, .doc-explorer-*) that no longer apply.

Test plan

  • Load the plugin in the GraphiQL dev app and confirm the code-exporter panel renders with correct colors, borders, and popover shadow.
  • Open the snippet selector dropdown and verify menu background, border, and hover states match the v6 palette.
  • Toggle light/dark mode and confirm token values update correctly.

Refs: #4219

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 17, 2026

🦋 Changeset detected

Latest commit: 3144109

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@graphiql/plugin-code-exporter Major

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@trevor-scheer trevor-scheer force-pushed the trevor/restyle-code-exporter branch from a726917 to 1f2d761 Compare May 20, 2026 21:55
Drop the runtime dependency on the unmaintained `graphiql-code-exporter`
package (and its transitive CodeMirror v5) and replace the plugin's
implementation with a first-party React component built on the v6
`DropdownMenu`, `ToolbarButton`, and `CopyIcon` primitives. The snippet
preview renders as a styled `<pre>` instead of a CodeMirror editor.

The `codeExporterPlugin({ snippets })` API is unchanged. The `Snippet`
shape stays source-compatible: `codeMirrorMode` and `options` become
optional and are ignored at runtime. The `codeMirrorTheme`, `variables`,
and `schema` props that the upstream component accepted are removed
(none were wired through to the GraphiQL surface).

Operation parsing is done with `graphql-js`'s `parse`/`print`; the
resulting `OperationData[]` matches what user snippets were already
receiving, including a `fragmentDependencies` list collected by walking
the AST for `FragmentSpread` references.

The new CSS is scoped to first-party class names (`.graphiql-code-exporter`,
`.graphiql-code-exporter-toolbar`, `.graphiql-code-exporter-select`,
`.graphiql-code-exporter-output`, `.graphiql-code-exporter-empty`) and
uses only v6 design tokens.
Pulls the plugin into the UMD `cdn.ts` bundle (so it survives the
`removeImportsFromE2EFile` strip), exposes it on the `GraphiQL` global
alongside `HISTORY_PLUGIN`, and registers it with two sample snippets
(`fetch`, `curl`) on the main demo at the root of the Netlify deploy.
@trevor-scheer trevor-scheer force-pushed the trevor/restyle-code-exporter branch from 1f2d761 to 3144109 Compare May 20, 2026 23:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant