---
url: /conventions/web-components.md
---
# `@pantoken/web-components`
Shadow-DOM custom elements built over the `@pantoken/components` CSS. A `wrapper(tag, css, render,
display)` covers pure-presentational elements; behavioral elements are bespoke classes.
## Runtime graph must stay Node-free
This package ships to the browser (the docs client registers it). Anything in the runtime graph is
bundled into the client. A **value** import of a postcss-based `@cssdoc/*` package makes rolldown
inject a `createRequire`/`node:module` shim into `dist/index.mjs`, which throws `createRequire is not
a function` at app init and kills all client JS. Keep `@cssdoc/*` value imports out of `src/` —
type-only imports are fine (erased at build); value imports belong in build scripts and tests.
## Shadow CSS is co-located `.css` → `?inline`
* Shadow CSS lives in co-located `src/**/*.css` files — the lint, format, and docs source of truth.
* Elements import their co-located CSS with `?inline`; Vite+ bundles `@tsdown/css`, which returns the
processed stylesheet as a tree-shakeable string for the shadow `` + markup from `render(host)`.
`invoker: true` forwards the host's `popovertarget`/`command` to the inner `` (IDL).
#### Parameters
##### tag
`string`
##### css
`string`
##### render
(`host`) => `string`
##### options?
###### display?
`string`
###### invoker?
`boolean`
#### Returns
`void`
***
### variantClass
> **variantClass**: (`name`, `host`) => `string`
Alpha
Build a `.instui-` class with an optional `-color-` modifier from `variant`.
#### Parameters
##### name
`string`
##### host
`HTMLElement`
#### Returns
`string`
***
### iconSvg
> **iconSvg**: (`name`) => `string`
Alpha
Resolve an icon name to inline SVG (empty string when unknown).
#### Parameters
##### name
`string`
#### Returns
`string`
***
### locale
> **locale**: `string`
Alpha
BCP47 locale tag used for `toLocaleDateString` and `Intl` formatting.
***
### dir
> **dir**: `"ltr"` | `"rtl"`
Alpha
Text direction derived from the active locale bundle.
***
### firstDay
> **firstDay**: `number`
Alpha
First day of week as JS `Date.getDay()` index (0=Sunday … 6=Saturday).
***
### strings
> **strings**: [`WebComponentStrings`](WebComponentStrings.md)
Alpha
Translated UI strings for all behavioral elements.
---
---
url: /api/renderers/web-components/src/interfaces/RegisterContextOptions.md
---
[pantoken-root](../../../../index.md) / [renderers/web-components/src](../index.md) / RegisterContextOptions
# Interface: RegisterContextOptions
Alpha
The options `register()` and [buildRegisterContext](../functions/buildRegisterContext.md) share (everything but `only`, which only
makes sense at the `register()` call site — `buildRegisterContext`'s callers decide their own
element subset directly).
## Properties
### prefix?
> `optional` **prefix?**: `string` | `null`
Alpha
***
### locale?
> `optional` **locale?**: `string`
Alpha
***
### strings?
> `optional` **strings?**: `Partial`<[`WebComponentStrings`](WebComponentStrings.md)>
Alpha
***
### dir?
> `optional` **dir?**: `"ltr"` | `"rtl"`
Alpha
---
---
url: /api/packages/core/src/interfaces/RehypeHookContext.md
---
[pantoken-root](../../../../index.md) / [packages/core/src](../index.md) / RehypeHookContext
# Interface: RehypeHookContext
Beta
Context passed to a plugin's `rehype` hook.
## Properties
### resolve
> **resolve**: [`IconResolver`](../type-aliases/IconResolver.md)
Beta
---
---
url: /api/packages/model/src/interfaces/RehypeHookContext.md
---
[pantoken-root](../../../../index.md) / [packages/model/src](../index.md) / RehypeHookContext
# Interface: RehypeHookContext
Beta
Context passed to a plugin's `rehype` hook.
## Properties
### resolve
> **resolve**: [`IconResolver`](../type-aliases/IconResolver.md)
Beta
---
---
url: /api/renderers/rehype/src/interfaces/RehypeOptions.md
---
[pantoken-root](../../../../index.md) / [renderers/rehype/src](../index.md) / RehypeOptions
# Interface: RehypeOptions
Experimental
Options for [rehypePantokenIcons](../functions/rehypePantokenIcons.md).
## Properties
### resolve?
> `optional` **resolve?**: [`IconResolver`](../../../../packages/core/src/type-aliases/IconResolver.md)
Experimental
An explicit resolver, tried before the built-in pantoken icon set.
***
### plugins?
> `optional` **plugins?**: readonly [`PantokenPlugin`](../../../../packages/core/src/interfaces/PantokenPlugin.md)\[]
Experimental
Plugins whose `rehype` hooks contribute resolvers (tried last, after the built-in set).
***
### className?
> `optional` **className?**: `string`
Experimental
The class name applied to the emitted wrapper (default: `pantoken-icon`).
---
---
url: /api/formats/interactions/src/interfaces/RemoveHandle.md
---
[pantoken-root](../../../../index.md) / [formats/interactions/src](../index.md) / RemoveHandle
# Interface: RemoveHandle
Handle returned by [initRemove](../functions/initRemove.md).
## Methods
### cleanup()
> **cleanup**(): `void`
Cancel pending dismissal and removal work.
#### Returns
`void`
***
### dismiss()
> **dismiss**(): `void`
Dismiss immediately, without waiting for the configured timeout.
#### Returns
`void`
---
---
url: /api/formats/interactions/src/interfaces/RemoveOptions.md
---
[pantoken-root](../../../../index.md) / [formats/interactions/src](../index.md) / RemoveOptions
# Interface: RemoveOptions
Options for a timeout-based removal.
## Properties
### timeout?
> `optional` **timeout?**: `number`
Milliseconds before dismissal. Defaults to the target's computed `--timeout`.
***
### transition?
> `optional` **transition?**: `"fade"` | `"none"`
Exit treatment. Defaults to `"fade"`, matching InstUI Alert.
---
---
url: /api/tools/demo/src/interfaces/ResolvedDemo.md
---
[pantoken-root](../../../../index.md) / [tools/demo/src](../index.md) / ResolvedDemo
# Interface: ResolvedDemo
A resolved demo: iframe attributes plus the provider that produced them.
## Properties
### provider
> **provider**: `string`
The provider that produced the embed (`url`, `self`, `stackblitz`, …).
***
### src
> **src**: `string`
The iframe `src`.
***
### sandbox
> **sandbox**: `string`
The iframe `sandbox` attribute.
---
---
url: /api/formats/scope/src/interfaces/ResolvedScope.md
---
[pantoken-root](../../../../index.md) / [formats/scope/src](../index.md) / ResolvedScope
# Interface: ResolvedScope
Beta
A [ScopeConfig](ScopeConfig.md) resolved against the DOM, plus where each part came from.
## Extends
* [`ScopeConfig`](ScopeConfig.md)
## Properties
### theme?
> `optional` **theme?**: `string`
Beta
Theme key, e.g. `"rebrand"`. Matched by `[data-pantoken-theme="…"]`.
#### Inherited from
[`ScopeConfig`](ScopeConfig.md).[`theme`](ScopeConfig.md#theme)
***
### scheme?
> `optional` **scheme?**: [`Scheme`](../type-aliases/Scheme.md)
Beta
Pinned color scheme. Omit to follow the OS preference.
#### Inherited from
[`ScopeConfig`](ScopeConfig.md).[`scheme`](ScopeConfig.md#scheme)
***
### color?
> `optional` **color?**: `string`
Beta
Custom brand color key.
#### Inherited from
[`ScopeConfig`](ScopeConfig.md).[`color`](ScopeConfig.md#color)
***
### instanceId?
> `optional` **instanceId?**: `string`
Beta
Identifier of the pantoken instance that owns this scope.
#### Inherited from
[`ScopeConfig`](ScopeConfig.md).[`instanceId`](ScopeConfig.md#instanceid)
***
### element
> **element**: `Element` | `null`
Beta
The nearest element that declared any scope attribute, or `null` when none did.
***
### bounded
> **bounded**: `boolean`
Beta
True when resolution stopped at a `data-pantoken-boundary` element.
---
---
url: /api/packages/plugin-kit/src/interfaces/ResolveOptions.md
---
[pantoken-root](../../../../index.md) / [packages/plugin-kit/src](../index.md) / ResolveOptions
# Interface: ResolveOptions
Beta
Options for [makeResolver](../functions/makeResolver.md).
## Properties
### mode?
> `optional` **mode?**: [`Mode`](../../../core/src/type-aliases/Mode.md)
Beta
Collapse `light-dark()` to this branch; omit to keep `light-dark()` intact.
***
### overrides?
> `optional` **overrides?**: readonly [`Token`](../../../core/src/interfaces/Token.md)\[]
Beta
Tokens that override the base set (win on name collisions, e.g. a caller's IR over a theme).
---
---
url: /api/packages/utils/src/interfaces/ResolveOptions.md
---
[pantoken-root](../../../../index.md) / [packages/utils/src](../index.md) / ResolveOptions
# Interface: ResolveOptions
Beta
Options for [makeResolver](../functions/makeResolver.md).
## Properties
### mode?
> `optional` **mode?**: [`Mode`](../type-aliases/Mode.md)
Beta
Collapse `light-dark()` to this branch; omit to keep `light-dark()` intact.
***
### overrides?
> `optional` **overrides?**: readonly [`Token`](../../../core/src/interfaces/Token.md)\[]
Beta
Tokens that override the base set (win on name collisions, e.g. a caller's IR over a theme).
---
---
url: /api/tools/demo/src/interfaces/ResolveOptions.md
---
[pantoken-root](../../../../index.md) / [tools/demo/src](../index.md) / ResolveOptions
# Interface: ResolveOptions
Options for resolving a demo spec. Only the `self` provider uses the runner/demos/css fields.
## Extended by
* [`DemoMarkdownItOptions`](DemoMarkdownItOptions.md)
## Properties
### base?
> `optional` **base?**: `string`
Site base path, e.g. `/pantoken/` (default `/`).
***
### runnerPath?
> `optional` **runnerPath?**: `string`
Runner page path, relative to `base` (default `play/index.html`).
***
### demosPath?
> `optional` **demosPath?**: `string`
Self-hosted demo-source dir, relative to `base` (default `demos/`).
***
### cssUrls?
> `optional` **cssUrls?**: readonly `string`\[]
Stylesheet URLs the runner injects (into its chrome and every rendered result): the component
sheets, the multi-theme token sheet, and the plugin/surface sheets. The runner themes by toggling
the `data-pantoken-theme` attribute, so one token sheet covers every theme.
***
### labels?
> `optional` **labels?**: [`RunnerLabels`](RunnerLabels.md)
Localized [RunnerLabels](RunnerLabels.md) for the runner's view tabs, forwarded in the runner URL.
---
---
url: /api/design/swatches/src/interfaces/Rgb.md
---
[pantoken-root](../../../../index.md) / [design/swatches/src](../index.md) / Rgb
# Interface: Rgb
Experimental
RGB channels, 0–255.
## Properties
### r
> **r**: `number`
Experimental
***
### g
> **g**: `number`
Experimental
***
### b
> **b**: `number`
Experimental
---
---
url: /api/packages/utils/src/interfaces/Rgba.md
---
[pantoken-root](../../../../index.md) / [packages/utils/src](../index.md) / Rgba
# Interface: Rgba
Beta
An RGBA colour: `r`/`g`/`b` are 0–255 integers, `a` is 0–1 (defaults to 1).
## Properties
### r
> **r**: `number`
Beta
***
### g
> **g**: `number`
Beta
***
### b
> **b**: `number`
Beta
***
### a
> **a**: `number`
Beta
---
---
url: /api/tools/demo/src/interfaces/RunnerLabels.md
---
[pantoken-root](../../../../index.md) / [tools/demo/src](../index.md) / RunnerLabels
# Interface: RunnerLabels
The runner's view-tab labels. Omitted keys fall back to the runner's English defaults.
## Properties
### result?
> `optional` **result?**: `string`
The rendered-demo tab (English `Result`).
***
### html?
> `optional` **html?**: `string`
The HTML source tab.
***
### css?
> `optional` **css?**: `string`
The CSS source tab.
***
### js?
> `optional` **js?**: `string`
The JavaScript source tab.
---
---
url: /api/platforms/rust/src/interfaces/RustOptions.md
---
[pantoken-root](../../../../index.md) / [platforms/rust/src](../index.md) / RustOptions
# Interface: RustOptions
Experimental
Options for [toRust](../functions/toRust.md) / [generateRust](../functions/generateRust.md).
## Properties
### format?
> `optional` **format?**: [`RustFormat`](../type-aliases/RustFormat.md)
Experimental
The Rust GUI to target (default `"egui"`).
***
### mode?
> `optional` **mode?**: [`Mode`](../../../../packages/core/src/type-aliases/Mode.md)
Experimental
Which `light-dark()` mode to resolve (default `"light"`).
---
---
url: /api/formats/scope/src/interfaces/ScopeConfig.md
---
[pantoken-root](../../../../index.md) / [formats/scope/src](../index.md) / ScopeConfig
# Interface: ScopeConfig
Beta
The resolvable state of a scope. Every field is optional — an unset field inherits.
## Extended by
* [`ResolvedScope`](ResolvedScope.md)
* [`CreateScopeOptions`](CreateScopeOptions.md)
* [`ScopeMessage`](ScopeMessage.md)
## Properties
### theme?
> `optional` **theme?**: `string`
Beta
Theme key, e.g. `"rebrand"`. Matched by `[data-pantoken-theme="…"]`.
***
### scheme?
> `optional` **scheme?**: [`Scheme`](../type-aliases/Scheme.md)
Beta
Pinned color scheme. Omit to follow the OS preference.
***
### color?
> `optional` **color?**: `string`
Beta
Custom brand color key.
***
### instanceId?
> `optional` **instanceId?**: `string`
Beta
Identifier of the pantoken instance that owns this scope.
---
---
url: /api/formats/css/src/interfaces/ScopedCssOptions.md
---
[pantoken-root](../../../../index.md) / [formats/css/src](../index.md) / ScopedCssOptions
# Interface: ScopedCssOptions
Beta
Options shared by the scoped emitters.
## Extended by
* [`MultiScopeCssOptions`](MultiScopeCssOptions.md)
## Properties
### includeIcons?
> `optional` **includeIcons?**: `boolean`
Beta
Drop the `--instui-icon-*` glyph tokens (default `false`).
***
### plugins?
> `optional` **plugins?**: readonly [`PantokenPlugin`](../../../../packages/core/src/interfaces/PantokenPlugin.md)\[]
Beta
Plugins whose `css` hooks run after the base CSS is built.
---
---
url: /api/formats/scope/src/interfaces/ScopeMessage.md
---
[pantoken-root](../../../../index.md) / [formats/scope/src](../index.md) / ScopeMessage
# Interface: ScopeMessage
Beta
The message envelope exchanged between a scope and its attached frames.
## Extends
* [`ScopeConfig`](ScopeConfig.md)
## Properties
### theme?
> `optional` **theme?**: `string`
Beta
Theme key, e.g. `"rebrand"`. Matched by `[data-pantoken-theme="…"]`.
#### Inherited from
[`ScopeConfig`](ScopeConfig.md).[`theme`](ScopeConfig.md#theme)
***
### scheme?
> `optional` **scheme?**: [`Scheme`](../type-aliases/Scheme.md)
Beta
Pinned color scheme. Omit to follow the OS preference.
#### Inherited from
[`ScopeConfig`](ScopeConfig.md).[`scheme`](ScopeConfig.md#scheme)
***
### color?
> `optional` **color?**: `string`
Beta
Custom brand color key.
#### Inherited from
[`ScopeConfig`](ScopeConfig.md).[`color`](ScopeConfig.md#color)
***
### type
> **type**: `"pantoken-scope"` | `"pantoken-scope-request"`
Beta
***
### instanceId
> **instanceId**: `string`
Beta
Identifier of the pantoken instance that owns this scope.
#### Overrides
[`ScopeConfig`](ScopeConfig.md).[`instanceId`](ScopeConfig.md#instanceid)
---
---
url: /api/packages/core/src/interfaces/SdLeaf.md
---
[pantoken-root](../../../../index.md) / [packages/core/src](../index.md) / SdLeaf
# Interface: SdLeaf
Beta
A Style Dictionary leaf.
## Properties
### value
> **value**: `string`
Beta
***
### type
> **type**: `string`
Beta
---
---
url: /api/formats/interactions/src/interfaces/SegmentedControlHandle.md
---
[pantoken-root](../../../../index.md) / [formats/interactions/src](../index.md) / SegmentedControlHandle
# Interface: SegmentedControlHandle
Detach the segmented-control listeners and observers.
## Methods
### cleanup()
> **cleanup**(): `void`
#### Returns
`void`
***
### refresh()
> **refresh**(): `void`
#### Returns
`void`
---
---
url: /api/formats/interactions/src/interfaces/SegmentedControlOptions.md
---
[pantoken-root](../../../../index.md) / [formats/interactions/src](../index.md) / SegmentedControlOptions
# Interface: SegmentedControlOptions
Segmented control options; the medium size is the CSS default.
## Properties
### size?
> `optional` **size?**: `"sm"` | `"md"` | `"lg"`
***
### isOverflown?
> `optional` **isOverflown?**: `boolean`
---
---
url: /api/plugins/pantoken/simple-icons/src/interfaces/SimpleIcon.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/simple-icons/src](../index.md) / SimpleIcon
# Interface: SimpleIcon
Beta
The shape of a Simple Icons entry (a subset of the published icon object).
## Properties
### title
> **title**: `string`
Beta
***
### slug
> **slug**: `string`
Beta
***
### path
> **path**: `string`
Beta
***
### hex?
> `optional` **hex?**: `string`
Beta
---
---
url: /api/plugins/pantoken/simple-icons/src/interfaces/SimpleIconsOptions.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/simple-icons/src](../index.md) / SimpleIconsOptions
# Interface: SimpleIconsOptions
Beta
Options for the [simpleIcons](../functions/simpleIcons.md) plugin.
## Properties
### slugs?
> `optional` **slugs?**: `string`\[]
Beta
Brand slugs to emit as `` tokens at the token layer (default: none).
***
### registry?
> `optional` **registry?**: [`SimpleIconsRegistry`](../type-aliases/SimpleIconsRegistry.md)
Beta
The Simple Icons registry (default: the `simple-icons` package, loaded lazily).
***
### prefix?
> `optional` **prefix?**: `string`
Beta
The token-name prefix (default: `--instui-icon-`).
---
---
url: /api/formats/interactions/src/interfaces/SkeletonLoadingHandle.md
---
[pantoken-root](../../../../index.md) / [formats/interactions/src](../index.md) / SkeletonLoadingHandle
# Interface: SkeletonLoadingHandle
Control parent-level loading semantics without touching decorative skeleton shapes.
## Methods
### setLoading()
> **setLoading**(`message`): `void`
#### Parameters
##### message
`string`
#### Returns
`void`
***
### setLoaded()
> **setLoaded**(`message`): `void`
#### Parameters
##### message
`string`
#### Returns
`void`
***
### setEmpty()
> **setEmpty**(`message`): `void`
#### Parameters
##### message
`string`
#### Returns
`void`
***
### setError()
> **setError**(`message`): `void`
#### Parameters
##### message
`string`
#### Returns
`void`
***
### cleanup()
> **cleanup**(): `void`
#### Returns
`void`
---
---
url: /api/formats/interactions/src/interfaces/SkeletonLoadingOptions.md
---
[pantoken-root](../../../../index.md) / [formats/interactions/src](../index.md) / SkeletonLoadingOptions
# Interface: SkeletonLoadingOptions
Pre-rendered announcement elements must be outside the busy content region.
## Properties
### status
> **status**: `HTMLElement`
***
### error
> **error**: `HTMLElement`
***
### announceDelayMs?
> `optional` **announceDelayMs?**: `number`
---
---
url: /api/formats/interactions/src/interfaces/SkeletonLoadingState.md
---
[pantoken-root](../../../../index.md) / [formats/interactions/src](../index.md) / SkeletonLoadingState
# Interface: SkeletonLoadingState
State update sent to an auto-registered skeleton loading region.
## Properties
### state
> **state**: `"loading"` | `"loaded"` | `"empty"` | `"error"`
***
### message
> **message**: `string`
---
---
url: /api/design/swatches/src/interfaces/SketchPalette.md
---
[pantoken-root](../../../../index.md) / [design/swatches/src](../index.md) / SketchPalette
# Interface: SketchPalette
Experimental
A `.sketchpalette` document.
## Properties
### compatibleVersion
> **compatibleVersion**: `string`
Experimental
***
### pluginVersion
> **pluginVersion**: `string`
Experimental
***
### colors
> **colors**: `object`\[]
Experimental
#### name
> **name**: `string`
#### red
> **red**: `number`
#### green
> **green**: `number`
#### blue
> **blue**: `number`
#### alpha
> **alpha**: `number`
---
---
url: /api/packages/utils/src/interfaces/SpacingStep.md
---
[pantoken-root](../../../../index.md) / [packages/utils/src](../index.md) / SpacingStep
# Interface: SpacingStep
Beta
One entry of the pantoken spacing scale: the short key, the long (word) key, and the shared CSS value.
## Properties
### short
> **short**: `string`
Beta
The short scale key, e.g. `"sm"` (the zero step's short key is `"0"`).
***
### long
> **long**: `string`
Beta
The long, word-spelled key, e.g. `"small"` (the zero step's long key is `"none"`).
***
### value
> **value**: `string`
Beta
The CSS value — a token reference, or a plain `"0"`/`"auto"`.
---
---
url: /api/plugins/pantoken/stacking/src/interfaces/StackingOptions.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/stacking/src](../index.md) / StackingOptions
# Interface: StackingOptions
Beta
Options for the [stacking](../functions/stacking.md) plugin.
## Properties
### theme?
> `optional` **theme?**: [`Theme`](../../../../../packages/core/src/type-aliases/Theme.md)
Beta
The theme whose shipped IR seeds reference resolution (default `"rebrand"`).
---
---
url: /api/renderers/astro/src/interfaces/StarlightPluginLike.md
---
[pantoken-root](../../../../index.md) / [renderers/astro/src](../index.md) / StarlightPluginLike
# Interface: StarlightPluginLike
Alpha
A minimal structural type for a Starlight plugin.
## Properties
### name
> **name**: `string`
Alpha
***
### hooks
> **hooks**: `object`
Alpha
#### config:setup()
> **config:setup**(`context`): `void`
##### Parameters
###### context
###### config
{ `head?`: [`HeadEntry`](HeadEntry.md)\[]; }
###### config.head?
[`HeadEntry`](HeadEntry.md)\[]
###### updateConfig
(`patch`) => `void`
###### logger?
{ `info`(`msg`): `void`; }
###### logger.info
(`msg`) => `void`
##### Returns
`void`
---
---
url: /api/design/swatches/src/interfaces/Swatch.md
---
[pantoken-root](../../../../index.md) / [design/swatches/src](../index.md) / Swatch
# Interface: Swatch
Experimental
A single palette entry.
## Properties
### name
> **name**: `string`
Experimental
***
### hex
> **hex**: `string`
Experimental
---
---
url: /api/formats/interactions/src/interfaces/TabsHandle.md
---
[pantoken-root](../../../../index.md) / [formats/interactions/src](../index.md) / TabsHandle
# Interface: TabsHandle
Controls the listeners installed by [initTabs](../functions/initTabs.md).
## Methods
### cleanup()
> **cleanup**(): `void`
#### Returns
`void`
---
---
url: /api/renderers/tinymce/src/interfaces/TaggedIcon.md
---
[pantoken-root](../../../../index.md) / [renderers/tinymce/src](../index.md) / TaggedIcon
# Interface: TaggedIcon
Icon with source attribution for tracking which package it comes from.
## Properties
### name
> **name**: `string`
***
### source
> **source**: `"components"` | `"simple-icons"` | `"lucide-lab"` | `"custom-icons"`
***
### description?
> `optional` **description?**: `string`
---
---
url: /api/bundlers/tailwind/src/interfaces/TailwindPreset.md
---
[pantoken-root](../../../../index.md) / [bundlers/tailwind/src](../index.md) / TailwindPreset
# Interface: TailwindPreset
Experimental
A minimal shape for the slice of Tailwind config this preset contributes.
## Properties
### theme
> **theme**: `object`
Experimental
#### extend
> **extend**: `object`
##### extend.colors
> **colors**: `Record`<`string`, `string`>
##### extend.spacing
> **spacing**: `Record`<`string`, `string`>
##### extend.fontFamily
> **fontFamily**: `Record`<`string`, `string`>
---
---
url: /api/tools/aggregate/src/interfaces/Target.md
---
[pantoken-root](../../../../index.md) / [tools/aggregate/src](../index.md) / Target
# Interface: Target
Beta
A target discovered by its `pantoken` field.
## Properties
### pkg
> **pkg**: `string`
Beta
The package name, e.g. `@pantoken/astro`.
***
### key
> **key**: `string`
Beta
The aggregation key / export name, e.g. `astro`.
***
### kind
> **kind**: `"namespace"` | `"sideEffect"` | `"subpath"`
Beta
How the target is exposed:
* `namespace` — re-exported into the eager barrel *and* as a subpath.
* `sideEffect` — subpath imports the package's `/inject` entry; also in the barrel.
* `subpath` — subpath only, kept OUT of the eager barrel (for heavy peers like React, so
`import "pantoken"` never loads them).
---
---
url: >-
/api/plugins/postcss/theme-custom-media/src/interfaces/ThemeCustomMediaOptions.md
---
[pantoken-root](../../../../../index.md) / [plugins/postcss/theme-custom-media/src](../index.md) / ThemeCustomMediaOptions
# Interface: ThemeCustomMediaOptions
Beta
Options for the theme custom-media plugin.
## Properties
### theme?
> `optional` **theme?**: [`Theme`](../type-aliases/Theme.md)
Beta
Target theme to emit (default `"rebrand"`).
---
---
url: /api/platforms/wordpress/src/interfaces/ThemeJson.md
---
[pantoken-root](../../../../index.md) / [platforms/wordpress/src](../index.md) / ThemeJson
# Interface: ThemeJson
Experimental
A WordPress `theme.json` document (the slice pantoken populates).
## Properties
### $schema
> **$schema**: `string`
Experimental
***
### version
> **version**: `number`
Experimental
***
### settings
> **settings**: `object`
Experimental
#### color
> **color**: `object`
##### color.palette
> **palette**: `object`\[]
#### spacing
> **spacing**: `object`
##### spacing.spacingSizes
> **spacingSizes**: `object`\[]
#### typography
> **typography**: `object`
##### typography.fontFamilies
> **fontFamilies**: `object`\[]
---
---
url: /api/platforms/canvas-theme-editor/src/interfaces/ThemeStrings.md
---
[pantoken-root](../../../../index.md) / [platforms/canvas-theme-editor/src](../index.md) / ThemeStrings
# Interface: ThemeStrings
Alpha
The translatable strings baked into theme.css/theme.js's comments.
## Properties
### cssHeaderTitle
> **cssHeaderTitle**: `string`
Alpha
***
### cssHeaderUpload
> **cssHeaderUpload**: `string`
Alpha
***
### cssHeaderRequirement
> **cssHeaderRequirement**: `string`
Alpha
***
### cssDocsNote
> **cssDocsNote**: `string`
Alpha
***
### jsHeaderTitle
> **jsHeaderTitle**: `string`
Alpha
***
### jsHeaderUpload
> **jsHeaderUpload**: `string`
Alpha
***
### jsHeaderRequirement
> **jsHeaderRequirement**: `string`
Alpha
***
### jsDocsNote
> **jsDocsNote**: `string`
Alpha
***
### sectionComponentStyles
> **sectionComponentStyles**: `string`
Alpha
***
### sectionFonts
> **sectionFonts**: `string`
Alpha
***
### sectionAdditional
> **sectionAdditional**: `string`
Alpha
***
### additionalHintIntro
> **additionalHintIntro**: `string`
Alpha
***
### additionalHintExample
> **additionalHintExample**: `string`
Alpha
***
### overridesCssNote1
> **overridesCssNote1**: `string`
Alpha
***
### overridesCssNote2
> **overridesCssNote2**: `string`
Alpha
***
### overridesJsNote1
> **overridesJsNote1**: `string`
Alpha
***
### overridesJsNote2
> **overridesJsNote2**: `string`
Alpha
---
---
url: /api/renderers/tinymce/src/interfaces/TinymceStrings.md
---
[pantoken-root](../../../../index.md) / [renderers/tinymce/src](../index.md) / TinymceStrings
# Interface: TinymceStrings
All user-visible strings emitted by the TinyMCE integration.
## Properties
### autocompleteModifierDetail
> **autocompleteModifierDetail**: `string`
***
### classValidationIncompleteComponent
> **classValidationIncompleteComponent**: `string`
***
### classValidationTokenPrefix
> **classValidationTokenPrefix**: `string`
***
### classValidationUnknownComponent
> **classValidationUnknownComponent**: `string`
***
### componentsDialogTitle
> **componentsDialogTitle**: `string`
***
### componentsListLabel
> **componentsListLabel**: `string`
***
### componentsMenuText
> **componentsMenuText**: `string`
***
### componentsToolbarText
> **componentsToolbarText**: `string`
***
### componentsToolbarTooltip
> **componentsToolbarTooltip**: `string`
***
### componentModifiersDefault
> **componentModifiersDefault**: `string`
***
### componentModifiersOptions
> **componentModifiersOptions**: `string`
***
### componentModifiersTooltip
> **componentModifiersTooltip**: `string`
***
### componentModifiersUtilities
> **componentModifiersUtilities**: `string`
***
### iconLabelDialogTitle
> **iconLabelDialogTitle**: `string`
***
### iconLabelInputLabel
> **iconLabelInputLabel**: `string`
***
### iconsMenuText
> **iconsMenuText**: `string`
***
### iconsDialogTitle
> **iconsDialogTitle**: `string`
***
### iconsSearchPlaceholder
> **iconsSearchPlaceholder**: `string`
***
### iconsSearchLabel
> **iconsSearchLabel**: `string`
***
### iconsAllSources
> **iconsAllSources**: `string`
***
### iconsResultCount
> **iconsResultCount**: `string`
***
### iconsNoResults
> **iconsNoResults**: `string`
***
### iconsToolbarText
> **iconsToolbarText**: `string`
***
### iconsToolbarTooltip
> **iconsToolbarTooltip**: `string`
***
### iconContextColorTooltip
> **iconContextColorTooltip**: `string`
***
### iconContextSizeTooltip
> **iconContextSizeTooltip**: `string`
***
### iconContextSizeSmall
> **iconContextSizeSmall**: `string`
***
### iconContextSizeMedium
> **iconContextSizeMedium**: `string`
***
### iconContextSizeLarge
> **iconContextSizeLarge**: `string`
***
### iconContextSizeExtraLarge
> **iconContextSizeExtraLarge**: `string`
***
### iconContextDeleteTooltip
> **iconContextDeleteTooltip**: `string`
***
### layoutsConfirmReplace
> **layoutsConfirmReplace**: `string`
***
### layoutsDialogTitle
> **layoutsDialogTitle**: `string`
***
### layoutsMenuText
> **layoutsMenuText**: `string`
***
### layoutsSelectLabel
> **layoutsSelectLabel**: `string`
***
### layoutsToolbarText
> **layoutsToolbarText**: `string`
***
### layoutsToolbarTooltip
> **layoutsToolbarTooltip**: `string`
***
### logosToolbarText
> **logosToolbarText**: `string`
***
### logosToolbarTooltip
> **logosToolbarTooltip**: `string`
***
### logosMenuText
> **logosMenuText**: `string`
***
### logosDialogTitle
> **logosDialogTitle**: `string`
***
### logosSearchPlaceholder
> **logosSearchPlaceholder**: `string`
***
### logosSearchLabel
> **logosSearchLabel**: `string`
***
### logosAllProducts
> **logosAllProducts**: `string`
***
### logosResultCount
> **logosResultCount**: `string`
***
### logosNoResults
> **logosNoResults**: `string`
***
### insertButton
> **insertButton**: `string`
***
### replaceButton
> **replaceButton**: `string`
***
### cancelButton
> **cancelButton**: `string`
***
### logoAltSuffix
> **logoAltSuffix**: `string`
***
### templatesConfirmReplace
> **templatesConfirmReplace**: `string`
***
### templatesDialogTitle
> **templatesDialogTitle**: `string`
***
### templatesMenuText
> **templatesMenuText**: `string`
***
### templatesSelectLabel
> **templatesSelectLabel**: `string`
***
### templatesToolbarText
> **templatesToolbarText**: `string`
---
---
url: /api/renderers/bootstrap/src/interfaces/ToBootstrapCssOptions.md
---
[pantoken-root](../../../../index.md) / [renderers/bootstrap/src](../index.md) / ToBootstrapCssOptions
# Interface: ToBootstrapCssOptions
Experimental
Options for [toBootstrapCss](../functions/toBootstrapCss.md).
## Properties
### selector?
> `optional` **selector?**: `string`
Experimental
The selector the variables are emitted under (default `":root"`).
---
---
url: /api/formats/css/src/interfaces/ToCssOptions.md
---
[pantoken-root](../../../../index.md) / [formats/css/src](../index.md) / ToCssOptions
# Interface: ToCssOptions
Beta
Options for [toCss](../functions/toCss.md).
## Properties
### scope?
> `optional` **scope?**: `string`
Beta
The selector scoped declarations are emitted under (default `":root"`).
***
### layer?
> `optional` **layer?**: `string`
Beta
Plain cascade layer name wrapping the declarations (no `@` prefix). Omit to skip the wrapper.
***
### emit?
> `optional` **emit?**: [`CssEmitTarget`](../type-aliases/CssEmitTarget.md)
Beta
Which half of the sheet to emit (default `"all"`).
***
### declareAll?
> `optional` **declareAll?**: `boolean`
Beta
Emit every token as a declaration rather than routing concrete tokens to `@property`. Required
for a theme block that can nest inside another theme's subtree: an incomplete block would
inherit the enclosing theme's values for the tokens it omits.
***
### plugins?
> `optional` **plugins?**: readonly [`PantokenPlugin`](../../../../packages/core/src/interfaces/PantokenPlugin.md)\[]
Beta
Plugins whose `css` hooks run after the base CSS is built (default: none).
---
---
url: /api/renderers/docusaurus/src/interfaces/ToDocusaurusCssOptions.md
---
[pantoken-root](../../../../index.md) / [renderers/docusaurus/src](../index.md) / ToDocusaurusCssOptions
# Interface: ToDocusaurusCssOptions
Experimental
Options for [toDocusaurusCss](../functions/toDocusaurusCss.md).
## Properties
### selector?
> `optional` **selector?**: `string`
Experimental
The selector the variables are emitted under (default `":root"`).
---
---
url: /api/platforms/drupal/src/interfaces/ToDrupalThemeOptions.md
---
[pantoken-root](../../../../index.md) / [platforms/drupal/src](../index.md) / ToDrupalThemeOptions
# Interface: ToDrupalThemeOptions
Experimental
Options for [toDrupalTheme](../functions/toDrupalTheme.md).
## Properties
### name?
> `optional` **name?**: `string`
Experimental
The theme's human-readable name (default `"Instructure"`).
***
### baseTheme?
> `optional` **baseTheme?**: `string` | `false`
Experimental
The base theme (default `false` — a standalone theme).
---
---
url: /api/design/figma/src/interfaces/ToFigmaOptions.md
---
[pantoken-root](../../../../index.md) / [design/figma/src](../index.md) / ToFigmaOptions
# Interface: ToFigmaOptions
Experimental
Options for [toFigmaVariables](../functions/toFigmaVariables.md).
## Properties
### collection?
> `optional` **collection?**: `string`
Experimental
The collection name (default `"Instructure"`).
***
### modes?
> `optional` **modes?**: \[`string`, `string`]
Experimental
The mode names, mapped to `light-dark()` sides (default `["light", "dark"]`).
---
---
url: /api/renderers/foundation/src/interfaces/ToFoundationCssOptions.md
---
[pantoken-root](../../../../index.md) / [renderers/foundation/src](../index.md) / ToFoundationCssOptions
# Interface: ToFoundationCssOptions
Experimental
Options for [toFoundationCss](../functions/toFoundationCss.md).
## Properties
### scope?
> `optional` **scope?**: `string`
Experimental
A selector prefix to scope the overlay under (e.g. `.instui`); default: unscoped.
---
---
url: /api/renderers/foundation/src/interfaces/ToFoundationSettingsOptions.md
---
[pantoken-root](../../../../index.md) / [renderers/foundation/src](../index.md) / ToFoundationSettingsOptions
# Interface: ToFoundationSettingsOptions
Experimental
Options for [toFoundationSettings](../functions/toFoundationSettings.md).
## Properties
### useDefault?
> `optional` **useDefault?**: `boolean`
Experimental
Append `!default` to each assignment, so consumer overrides still win (default `false`).
---
---
url: /api/design/swatches/src/interfaces/ToGplOptions.md
---
[pantoken-root](../../../../index.md) / [design/swatches/src](../index.md) / ToGplOptions
# Interface: ToGplOptions
Experimental
Options for [toGpl](../functions/toGpl.md).
## Properties
### name?
> `optional` **name?**: `string`
Experimental
The palette name (default `"Instructure"`).
---
---
url: /api/packages/core/src/interfaces/Token.md
---
[pantoken-root](../../../../index.md) / [packages/core/src](../index.md) / Token
# Interface: Token
Beta
A single design token in the canonical `@property`-aligned IR.
## Properties
### name
> **name**: `string`
The custom-property name, e.g. `--instui-color-background-base`.
***
### syntax
> **syntax**: `string`
The `@property` `syntax` descriptor (`""`, `""`,
`""`, …) or `"*"` for contextual values.
***
### inherits
> **inherits**: `boolean`
The `@property` `inherits` flag.
***
### value
> **value**: `string`
A concrete value, a `var(...)` reference, or a `light-dark(a, b)` pair.
***
### flatValue?
> `optional` **flatValue?**: `string`
Beta
The fully-flattened literal, present only when `value` is a reference-preserving CSS
expression (a Tokens Studio `modify` rendered as `color-mix()` / `hsl(from …)`). Emitters that
need a real colour rather than a CSS expression — the native lineage, Figma, swatches — read
this instead; the shared resolver in `@pantoken/utils` prefers it automatically.
***
### themed?
> `optional` **themed?**: `boolean`
Beta
True when the light and dark resolutions differ (value is a `light-dark()`).
***
### refersTo?
> `optional` **refersTo?**: `string`
Beta
The token this one references, when `value` is a single `var(...)`.
***
### meta?
> `optional` **meta?**: [`TokenMeta`](TokenMeta.md)
Beta
Non-value metadata.
---
---
url: /api/packages/model/src/interfaces/Token.md
---
[pantoken-root](../../../../index.md) / [packages/model/src](../index.md) / Token
# Interface: Token
Beta
A single design token in the canonical `@property`-aligned IR.
## Properties
### name
> **name**: `string`
The custom-property name, e.g. `--instui-color-background-base`.
***
### syntax
> **syntax**: `string`
The `@property` `syntax` descriptor (`""`, `""`,
`""`, …) or `"*"` for contextual values.
***
### inherits
> **inherits**: `boolean`
The `@property` `inherits` flag.
***
### value
> **value**: `string`
A concrete value, a `var(...)` reference, or a `light-dark(a, b)` pair.
***
### flatValue?
> `optional` **flatValue?**: `string`
Beta
The fully-flattened literal, present only when `value` is a reference-preserving CSS
expression (a Tokens Studio `modify` rendered as `color-mix()` / `hsl(from …)`). Emitters that
need a real colour rather than a CSS expression — the native lineage, Figma, swatches — read
this instead; the shared resolver in `@pantoken/utils` prefers it automatically.
***
### themed?
> `optional` **themed?**: `boolean`
Beta
True when the light and dark resolutions differ (value is a `light-dark()`).
***
### refersTo?
> `optional` **refersTo?**: `string`
Beta
The token this one references, when `value` is a single `var(...)`.
***
### meta?
> `optional` **meta?**: [`TokenMeta`](TokenMeta.md)
Beta
Non-value metadata.
---
---
url: /api/packages/core/src/interfaces/TokenHookContext.md
---
[pantoken-root](../../../../index.md) / [packages/core/src](../index.md) / TokenHookContext
# Interface: TokenHookContext
Beta
Context passed to a plugin's `tokens` hook.
## Properties
### tokens
> **tokens**: [`Token`](Token.md)\[]
Beta
***
### theme
> **theme**: [`Theme`](../type-aliases/Theme.md)
Beta
---
---
url: /api/packages/model/src/interfaces/TokenHookContext.md
---
[pantoken-root](../../../../index.md) / [packages/model/src](../index.md) / TokenHookContext
# Interface: TokenHookContext
Beta
Context passed to a plugin's `tokens` hook.
## Properties
### tokens
> **tokens**: [`Token`](Token.md)\[]
Beta
***
### theme
> **theme**: [`Theme`](../type-aliases/Theme.md)
Beta
---
---
url: /api/packages/core/src/interfaces/TokenInput.md
---
[pantoken-root](../../../../index.md) / [packages/core/src](../index.md) / TokenInput
# Interface: TokenInput
Beta
The shape accepted by the `define()` helper; `inherits` defaults to `true`.
## Properties
### name
> **name**: `string`
Beta
***
### value
> **value**: `string`
Beta
***
### syntax?
> `optional` **syntax?**: `string`
Beta
***
### inherits?
> `optional` **inherits?**: `boolean`
Beta
***
### flatValue?
> `optional` **flatValue?**: `string`
Beta
***
### themed?
> `optional` **themed?**: `boolean`
Beta
***
### refersTo?
> `optional` **refersTo?**: `string`
Beta
***
### meta?
> `optional` **meta?**: [`TokenMeta`](TokenMeta.md)
Beta
---
---
url: /api/packages/model/src/interfaces/TokenInput.md
---
[pantoken-root](../../../../index.md) / [packages/model/src](../index.md) / TokenInput
# Interface: TokenInput
Beta
The shape accepted by the `define()` helper; `inherits` defaults to `true`.
## Properties
### name
> **name**: `string`
Beta
***
### value
> **value**: `string`
Beta
***
### syntax?
> `optional` **syntax?**: `string`
Beta
***
### inherits?
> `optional` **inherits?**: `boolean`
Beta
***
### flatValue?
> `optional` **flatValue?**: `string`
Beta
***
### themed?
> `optional` **themed?**: `boolean`
Beta
***
### refersTo?
> `optional` **refersTo?**: `string`
Beta
***
### meta?
> `optional` **meta?**: [`TokenMeta`](TokenMeta.md)
Beta
---
---
url: /api/packages/core/src/interfaces/TokenMeta.md
---
[pantoken-root](../../../../index.md) / [packages/core/src](../index.md) / TokenMeta
# Interface: TokenMeta
Beta
Non-value metadata attached to a [Token](Token.md).
## Properties
### kind?
> `optional` **kind?**: `"icon"`
Beta
Marks an icon token (its `syntax` is `""`).
***
### style?
> `optional` **style?**: `"Custom"` | `"Line"` | `"Solid"`
Beta
The source style of an icon glyph.
***
### viewBox?
> `optional` **viewBox?**: `string`
Beta
The SVG `viewBox` of an icon glyph.
***
### bidirectional?
> `optional` **bidirectional?**: `boolean`
Beta
Whether an icon flips horizontally in right-to-left contexts.
***
### source?
> `optional` **source?**: `"custom"` | `"lucide"`
Beta
The origin of an icon glyph.
***
### deprecated?
> `optional` **deprecated?**: `object`
Beta
Present on a compatibility-shim token (from a `DeprecationEntry`).
#### replacement?
> `optional` **replacement?**: `string`
#### deprecatedIn?
> `optional` **deprecatedIn?**: `string`
#### removeIn?
> `optional` **removeIn?**: `string`
#### note?
> `optional` **note?**: `string`
---
---
url: /api/packages/model/src/interfaces/TokenMeta.md
---
[pantoken-root](../../../../index.md) / [packages/model/src](../index.md) / TokenMeta
# Interface: TokenMeta
Beta
Non-value metadata attached to a [Token](Token.md).
## Properties
### kind?
> `optional` **kind?**: `"icon"`
Beta
Marks an icon token (its `syntax` is `""`).
***
### style?
> `optional` **style?**: `"Custom"` | `"Line"` | `"Solid"`
Beta
The source style of an icon glyph.
***
### viewBox?
> `optional` **viewBox?**: `string`
Beta
The SVG `viewBox` of an icon glyph.
***
### bidirectional?
> `optional` **bidirectional?**: `boolean`
Beta
Whether an icon flips horizontally in right-to-left contexts.
***
### source?
> `optional` **source?**: `"custom"` | `"lucide"`
Beta
The origin of an icon glyph.
***
### deprecated?
> `optional` **deprecated?**: `object`
Beta
Present on a compatibility-shim token (from a `DeprecationEntry`).
#### replacement?
> `optional` **replacement?**: `string`
#### deprecatedIn?
> `optional` **deprecatedIn?**: `string`
#### removeIn?
> `optional` **removeIn?**: `string`
#### note?
> `optional` **note?**: `string`
---
---
url: /api/packages/core/src/interfaces/TokenModify.md
---
[pantoken-root](../../../../index.md) / [packages/core/src](../index.md) / TokenModify
# Interface: TokenModify
Beta
A Tokens Studio colour modifier (`$extensions."studio.tokens".modify`).
## Properties
### type
> **type**: `"darken"` | `"lighten"` | `"alpha"`
Beta
The modification applied to the resolved colour.
***
### value
> **value**: `number`
Beta
The modifier amount, `0`–`1`.
***
### space
> **space**: `"hsl"` | `"lch"`
Beta
The colour space the modifier operates in.
---
---
url: /api/packages/model/src/interfaces/TokenModify.md
---
[pantoken-root](../../../../index.md) / [packages/model/src](../index.md) / TokenModify
# Interface: TokenModify
Beta
A Tokens Studio colour modifier (`$extensions."studio.tokens".modify`).
## Properties
### type
> **type**: `"darken"` | `"lighten"` | `"alpha"`
Beta
The modification applied to the resolved colour.
***
### value
> **value**: `number`
Beta
The modifier amount, `0`–`1`.
***
### space
> **space**: `"hsl"` | `"lch"`
Beta
The colour space the modifier operates in.
---
---
url: /api/renderers/react/src/interfaces/TokenProviderProps.md
---
[pantoken-root](../../../../index.md) / [renderers/react/src](../index.md) / TokenProviderProps
# Interface: TokenProviderProps
Experimental
Props for [TokenProvider](../functions/TokenProvider.md).
## Properties
### children?
> `optional` **children?**: `ReactNode`
Experimental
***
### locale?
> `optional` **locale?**: `string` | [`LocaleBundle`](#)
Experimental
BCP47 locale tag or a pre-built [LocaleBundle](#). When set, uses `registerLocalized`.
---
---
url: /api/packages/utils/src/interfaces/TokenUtilityGroup.md
---
[pantoken-root](../../../../index.md) / [packages/utils/src](../index.md) / TokenUtilityGroup
# Interface: TokenUtilityGroup
Beta
A set of tokens that all map to one CSS property (e.g. every `--instui-font-weight-*` → `font-weight`).
## Properties
### property
> **property**: `string`
Beta
The CSS property the tokens set (e.g. `"font-weight"`, `"border-radius"`, `"box-shadow"`).
***
### tokens
> **tokens**: readonly `string`\[]
Beta
Full token names (e.g. `"--instui-font-weight-body-strong"`); the `--instui-` tail becomes the class.
---
---
url: /api/formats/less/src/interfaces/ToLessOptions.md
---
[pantoken-root](../../../../index.md) / [formats/less/src](../index.md) / ToLessOptions
# Interface: ToLessOptions
Experimental
Options for [toLess](../functions/toLess.md).
## Properties
### mode?
> `optional` **mode?**: [`Mode`](../../../../packages/core/src/type-aliases/Mode.md)
Experimental
Which colour mode to resolve (default `"light"`).
---
---
url: /api/formats/interactions/src/interfaces/TooltipHandle.md
---
[pantoken-root](../../../../index.md) / [formats/interactions/src](../index.md) / TooltipHandle
# Interface: TooltipHandle
Handle returned by [initTooltip](../functions/initTooltip.md).
## Methods
### cleanup()
> **cleanup**(): `void`
Remove all event listeners and cancel any pending timer.
#### Returns
`void`
***
### cancelAndHide()
> **cancelAndHide**(): `void`
Immediately cancel any pending show timer and remove `-show`.
#### Returns
`void`
---
---
url: /api/formats/interactions/src/interfaces/TooltipOptions.md
---
[pantoken-root](../../../../index.md) / [formats/interactions/src](../index.md) / TooltipOptions
# Interface: TooltipOptions
Options for show/hide timing.
## Properties
### showDelay?
> `optional` **showDelay?**: `number`
***
### hideDelay?
> `optional` **hideDelay?**: `number`
---
---
url: /api/formats/scss/src/interfaces/ToScssOptions.md
---
[pantoken-root](../../../../index.md) / [formats/scss/src](../index.md) / ToScssOptions
# Interface: ToScssOptions
Experimental
Options for [toScss](../functions/toScss.md).
## Properties
### mode?
> `optional` **mode?**: [`Mode`](../../../../packages/core/src/type-aliases/Mode.md)
Experimental
Which colour mode to resolve (default `"light"`).
---
---
url: /api/renderers/shadcn/src/interfaces/ToShadcnCssOptions.md
---
[pantoken-root](../../../../index.md) / [renderers/shadcn/src](../index.md) / ToShadcnCssOptions
# Interface: ToShadcnCssOptions
Experimental
Options for [toShadcnCss](../functions/toShadcnCss.md).
## Properties
### selector?
> `optional` **selector?**: `string`
Experimental
The selector the variables are emitted under (default `":root"`).
---
---
url: /api/renderers/css-in-js/src/interfaces/ToStyledThemeOptions.md
---
[pantoken-root](../../../../index.md) / [renderers/css-in-js/src](../index.md) / ToStyledThemeOptions
# Interface: ToStyledThemeOptions
Experimental
Options for [toStyledTheme](../functions/toStyledTheme.md).
## Properties
### resolve?
> `optional` **resolve?**: [`Mode`](../../../../packages/core/src/type-aliases/Mode.md)
Experimental
Bake concrete values for this colour mode instead of `var(--instui-*)` references. Omit to keep
the theme var()-backed (the default — lets `@pantoken/css` drive runtime theme switching).
---
---
url: /api/formats/stylus/src/interfaces/ToStylusOptions.md
---
[pantoken-root](../../../../index.md) / [formats/stylus/src](../index.md) / ToStylusOptions
# Interface: ToStylusOptions
Experimental
Options for [toStylus](../functions/toStylus.md).
## Properties
### mode?
> `optional` **mode?**: [`Mode`](../../../../packages/core/src/type-aliases/Mode.md)
Experimental
Which colour mode to resolve (default `"light"`).
---
---
url: /api/design/swatches/src/interfaces/ToSvgOptions.md
---
[pantoken-root](../../../../index.md) / [design/swatches/src](../index.md) / ToSvgOptions
# Interface: ToSvgOptions
Experimental
Options for [toSvg](../functions/toSvg.md).
## Properties
### title?
> `optional` **title?**: `string`
Experimental
The sheet title (default `"Instructure color tokens"`).
***
### columns?
> `optional` **columns?**: `number`
Experimental
Chips per row within a section (default `6`).
---
---
url: /api/platforms/wordpress/src/interfaces/ToThemeJsonOptions.md
---
[pantoken-root](../../../../index.md) / [platforms/wordpress/src](../index.md) / ToThemeJsonOptions
# Interface: ToThemeJsonOptions
Experimental
Options for [toThemeJson](../functions/toThemeJson.md).
## Properties
### mode?
> `optional` **mode?**: [`Mode`](../type-aliases/Mode.md)
Experimental
Which colour mode to resolve (default `"light"`).
---
---
url: /api/platforms/vanilla/src/interfaces/ToVanillaOptions.md
---
[pantoken-root](../../../../index.md) / [platforms/vanilla/src](../index.md) / ToVanillaOptions
# Interface: ToVanillaOptions
Experimental
Options for [toVanillaVariables](../functions/toVanillaVariables.md).
## Properties
### mode?
> `optional` **mode?**: [`Mode`](../type-aliases/Mode.md)
Experimental
Which colour mode to resolve (default `"light"`).
---
---
url: /api/renderers/vitepress/src/interfaces/ToVitePressCssOptions.md
---
[pantoken-root](../../../../index.md) / [renderers/vitepress/src](../index.md) / ToVitePressCssOptions
# Interface: ToVitePressCssOptions
Beta
Options for `toVitePressCss`.
## Properties
### selector?
> `optional` **selector?**: `string`
Beta
The selector the variables are emitted under (default `":root"`).
---
---
url: /api/plugins/pantoken/transition/src/interfaces/TransitionOptions.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/transition/src](../index.md) / TransitionOptions
# Interface: TransitionOptions
Beta
Options for the [transition](../functions/transition.md) plugin.
## Properties
### duration?
> `optional` **duration?**: `string`
Beta
Animation duration (default: InstUI's `300ms`).
***
### timing?
> `optional` **timing?**: `string`
Beta
Timing function (default: InstUI's `ease-in-out`).
---
---
url: /api/formats/interactions/src/interfaces/TruncateAutoHandle.md
---
[pantoken-root](../../../../index.md) / [formats/interactions/src](../index.md) / TruncateAutoHandle
# Interface: TruncateAutoHandle
Handle returned by [initTruncateAuto](../functions/initTruncateAuto.md).
## Methods
### sync()
> **sync**(): `void`
Force a recompute of the derived `--lines` value.
#### Returns
`void`
***
### cleanup()
> **cleanup**(): `void`
Remove observers/listeners created by init.
#### Returns
`void`
---
---
url: /api/formats/interactions/src/interfaces/TruncateAutoOptions.md
---
[pantoken-root](../../../../index.md) / [formats/interactions/src](../index.md) / TruncateAutoOptions
# Interface: TruncateAutoOptions
Optional knobs for [initTruncateAuto](../functions/initTruncateAuto.md).
## Properties
### observeParent?
> `optional` **observeParent?**: `boolean`
Observe the host's parent size (default true).
***
### slot?
> `optional` **slot?**: `HTMLSlotElement` | `null`
Optional slot to watch for `slotchange` re-syncs in shadow DOM usage.
---
---
url: /api/plugins/vite/workspace-orchestrator/src/interfaces/UpstreamNode.md
---
[pantoken-root](../../../../../index.md) / [plugins/vite/workspace-orchestrator/src](../index.md) / UpstreamNode
# Interface: UpstreamNode
Experimental
One upstream workspace package to watch and rebuild.
## Properties
### name
> **name**: `string`
Experimental
Display name for log messages.
***
### dir
> **dir**: `string`
Experimental
Package root directory (the cwd for the build command).
***
### watchPaths
> **watchPaths**: `string`\[]
Experimental
Paths (files or directories) to watch — directories are watched recursively.
***
### build
> **build**: readonly \[`string`, `string`]
Experimental
Build command: first element is the executable, the rest are arguments.
***
### dependents
> **dependents**: readonly `string`\[]
Experimental
Names of other upstream nodes to rebuild after this one succeeds.
***
### include?
> `optional` **include?**: readonly `string`\[]
Experimental
Glob patterns for files to include. When set, only changes to files matching at least one
pattern trigger a rebuild. Omit to include everything.
***
### ignore?
> `optional` **ignore?**: readonly `string`\[]
Experimental
Glob patterns for files to ignore. Changes to matching files are silently skipped. Omit to
ignore nothing.
---
---
url: /api/plugins/pantoken/deprecations/src/interfaces/UpstreamVersions.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/deprecations/src](../index.md) / UpstreamVersions
# Interface: UpstreamVersions
Beta
The current resolved version of each upstream tier (from `@pantoken/tokens` provenance).
## Properties
### ui
> **ui**: `string`
Beta
`@instructure/ui-*` resolved version, e.g. `"11.7.4"`.
***
### designTokens
> **designTokens**: `string`
Beta
`@instructure/instructure-design-tokens` pinned ref, e.g. `"v1.5.0"`.
---
---
url: /api/packages/utils/src/interfaces/UtilityOptions.md
---
[pantoken-root](../../../../index.md) / [packages/utils/src](../index.md) / UtilityOptions
# Interface: UtilityOptions
Beta
Options shared by the utility-class emitters.
## Properties
### prefix?
> `optional` **prefix?**: `string` | `null`
Beta
The class prefix. Any truthy string namespaces every class (`"instui"` → `.instui-bg-…`); any
falsy value (`null`/`undefined`/`""`) drops the prefix entirely (`.bg-…`).
---
---
url: /api/packages/core/src/interfaces/VectorDrawableOptions.md
---
[pantoken-root](../../../../index.md) / [packages/core/src](../index.md) / VectorDrawableOptions
# Interface: VectorDrawableOptions
Beta
Options for [toVectorDrawable](../functions/toVectorDrawable.md).
## Properties
### color?
> `optional` **color?**: `string`
Beta
The colour applied to the drawable (default `#FF000000`; tint at usage).
---
---
url: /api/plugins/pantoken/visual-debug/src/interfaces/VisualDebugOptions.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/visual-debug/src](../index.md) / VisualDebugOptions
# Interface: VisualDebugOptions
Beta
Options for the [visualDebug](../functions/visualDebug.md) plugin.
## Properties
### color?
> `optional` **color?**: `string`
Beta
The debug outline colour (default: a bright magenta via `--pantoken-visual-debug-color`).
***
### position?
> `optional` **position?**: `"append"` | `"prepend"`
Beta
Where the rules land relative to the stylesheet: `"append"` (default) or `"prepend"`.
---
---
url: /api/renderers/web-components/src/interfaces/WebComponentStrings.md
---
[pantoken-root](../../../../index.md) / [renderers/web-components/src](../index.md) / WebComponentStrings
# Interface: WebComponentStrings
Alpha
All user-visible strings emitted by the web-component element set.
## Properties
### prevMonth
> **prevMonth**: `string`
Alpha
`aria-label` for the calendar's "previous month" button.
***
### nextMonth
> **nextMonth**: `string`
Alpha
`aria-label` for the calendar's "next month" button.
***
### weekdays
> **weekdays**: readonly \[`string`, `string`, `string`, `string`, `string`, `string`, `string`]
Alpha
Weekday column headers in locale-appropriate first-day-of-week order.
***
### dateLabel
> **dateLabel**: `string`
Alpha
Default `aria-label` for `` when the `label` attribute is absent.
***
### datePlaceholder
> **datePlaceholder**: `string`
Alpha
Default placeholder for the ISO date text field.
***
### openCalendar
> **openCalendar**: `string`
Alpha
`aria-label` for the calendar-open trigger inside ``.
***
### timeLabel
> **timeLabel**: `string`
Alpha
`aria-label` for the native time ` ` inside ``.
***
### back
> **back**: `string`
Alpha
Text for the synthesized Back row in ``.
---
---
url: /api/bundlers/next/src/interfaces/WithPantokenOptions.md
---
[pantoken-root](../../../../index.md) / [bundlers/next/src](../index.md) / WithPantokenOptions
# Interface: WithPantokenOptions
Experimental
Options for [withPantoken](../functions/withPantoken.md).
## Properties
### transpile?
> `optional` **transpile?**: `string`\[]
Experimental
Extra package names to add to `transpilePackages`.
---
---
url: /api/platforms/jekyll/src.md
---
[pantoken-root](../../../index.md) / jekyll
# jekyll
## Compatibility
Target: Jekyll. Current format: `Jekyll builds the generated Sass partial into site CSS`. Minimum host version: `4.4.1`. Tested through `4.4.1`. Newer releases require review.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/jekyll` — emit the Instructure token stylesheet for a Jekyll site.
Jekyll has no standard theming-variable contract, so this delivers the tokens as drop-in assets:
a Sass partial for `_sass/` (import it from your main stylesheet) and a plain CSS file for
`assets/css/` (from `@pantoken/scss` and `@pantoken/css`), plus an InstUI-look prose stylesheet
(from `@pantoken/components`) that styles content in a `.pantoken-prose` region.
## Interfaces
* [JekyllFile](interfaces/JekyllFile.md)
## Functions
* [toJekyllAssets](functions/toJekyllAssets.md)
---
---
url: /api/plugins/pantoken/layouts/src.md
---
[pantoken-root](../../../../index.md) / layouts
# layouts
Beta
`@pantoken/plugin-layouts` — layout composition records for downstream consumers.
## Example
```ts
import { toCss } from "@pantoken/css";
import { byTheme } from "@pantoken/tokens";
import { layouts } from "@pantoken/plugin-layouts";
const css = toCss(byTheme("rebrand"), { plugins: [layouts()] });
// appends all layout rules to the token sheet
```
## Interfaces
* [LayoutsOptions](interfaces/LayoutsOptions.md)
* [PageLayoutImagePlaceholder](interfaces/PageLayoutImagePlaceholder.md)
* [PageLayout](interfaces/PageLayout.md)
## Variables
* [pageLayoutTemplates](variables/pageLayoutTemplates.md)
* [pageLayouts](variables/pageLayouts.md)
## Functions
* [layouts](functions/layouts.md)
* [calloutRules](functions/calloutRules.md)
* [calloutTemplate](functions/calloutTemplate.md)
* [heroRules](functions/heroRules.md)
* [heroTemplate](functions/heroTemplate.md)
* [pageLayoutRules](functions/pageLayoutRules.md)
* [pageLayoutTemplate](functions/pageLayoutTemplate.md)
* [rubricNoteRules](functions/rubricNoteRules.md)
* [rubricNoteTemplate](functions/rubricNoteTemplate.md)
* [testimonialRules](functions/testimonialRules.md)
* [testimonialTemplate](functions/testimonialTemplate.md)
* [twoColumnRules](functions/twoColumnRules.md)
* [twoColumnTemplate](functions/twoColumnTemplate.md)
* [wrapperRules](functions/wrapperRules.md)
* [wrapperTemplate](functions/wrapperTemplate.md)
* [renderPageLayout](functions/renderPageLayout.md)
---
---
url: /api/formats/less/src.md
---
[pantoken-root](../../../index.md) / less
# less
Experimental
`@pantoken/less` — Instructure design tokens as Less variables.
[toLess](functions/toLess.md) converts any IR; [less](variables/less.md) is the ready-made `rebrand` variable set. A static
file is published at `@pantoken/less/tokens.less`.
## Interfaces
* [ToLessOptions](interfaces/ToLessOptions.md)
## Variables
* [less](variables/less.md)
## Functions
* [toLess](functions/toLess.md)
## References
### Mode
Re-exports [Mode](../../../packages/core/src/type-aliases/Mode.md)
***
### default
Renames and re-exports [less](variables/less.md)
---
---
url: /api/plugins/pantoken/logos/src.md
---
[pantoken-root](../../../../index.md) / logos
# logos
Beta
`@pantoken/plugin-logos` — Instructure product logos as SVGs, data URIs, and image tokens.
It vendors the SVG logos from Instructure's UX guidelines for Canvas, Mastery, Parchment,
Instructure, LearnPlatform, and Ignite AI, in the standard layouts (horizontal, stacked, icon)
and color modes (full-color, color, dark, reversed, and so on). Each logo is available three ways:
the raw SVG ([getLogoSvg](functions/getLogoSvg.md)), a data URI ([getLogoDataUri](functions/getLogoDataUri.md)), and a
`--instui-logo---` image token plus a `.-logo---`
mask-glyph class (sized by that logo's own aspect ratio) in `@pantoken/plugin-logos/logos.css`.
As a pantoken plugin, the `css` hook contributes those image tokens.
## Interfaces
* [LogoMeta](interfaces/LogoMeta.md)
* [LogosOptions](interfaces/LogosOptions.md)
## Type Aliases
* [Product](type-aliases/Product.md)
* [LogoLayout](type-aliases/LogoLayout.md)
* [LogoColorMode](type-aliases/LogoColorMode.md)
* [LogoLang](type-aliases/LogoLang.md)
## Variables
* [logos](variables/logos.md)
* [products](variables/products.md)
* [logosCss](variables/logosCss.md)
## Functions
* [getLogoSvg](functions/getLogoSvg.md)
* [getLogoDataUri](functions/getLogoDataUri.md)
* [getLogoMeta](functions/getLogoMeta.md)
* [logosPlugin](functions/logosPlugin.md)
## References
### default
Renames and re-exports [logosPlugin](functions/logosPlugin.md)
---
---
url: /api/plugins/pantoken/lucide-lab/src.md
---
[pantoken-root](../../../../index.md) / lucide-lab
# lucide-lab
## Interfaces
* [LucideLabOptions](interfaces/LucideLabOptions.md)
## Type Aliases
* [LucideLabNode](type-aliases/LucideLabNode.md)
* [LucideLabRegistry](type-aliases/LucideLabRegistry.md)
## Functions
* [toKebab](functions/toKebab.md)
* [svgOf](functions/svgOf.md)
* [defaultRegistry](functions/defaultRegistry.md)
* [lucideLab](functions/lucideLab.md)
## References
### default
Renames and re-exports [lucideLab](functions/lucideLab.md)
---
---
url: /api/plugins/postcss/mangle-custom-props/src.md
---
[pantoken-root](../../../../index.md) / mangle-custom-props
# mangle-custom-props
Beta
`@pantoken/plugin-mangle-custom-props` — rename long custom property names to minimal sequential
identifiers.
Token names like `--instui-component-alert-border-top-style` are human-readable but expensive in
minified bundles: the name itself is 40+ bytes, repeated in the definition, every `var()` call,
and every `@property` registration. This plugin replaces every matching name — across definitions,
`var()` references, and `@property` params — with a minimal identifier (`--a`, `--b`, …, `--aa`,
…), cutting name overhead by ~90%.
Names are collected from the full stylesheet, sorted alphabetically for a deterministic mapping,
then assigned sequentially. A [MangleCustomPropsOptions.sharedManifest](interfaces/MangleCustomPropsOptions.md#sharedmanifest) option lets multiple
separate PostCSS passes share one consistent mapping, so separately processed CSS files that will
be loaded together can safely be mangled with the same names.
## Example
```ts
import postcss from "postcss";
import { mangleCustomProps } from "@pantoken/plugin-mangle-custom-props";
const out = postcss([mangleCustomProps()]).process(css, { from: undefined }).css;
```
## Interfaces
* [MangleCustomPropsOptions](interfaces/MangleCustomPropsOptions.md)
## Type Aliases
* [MangleMethod](type-aliases/MangleMethod.md)
## Variables
* [mangleCustomProps](variables/mangleCustomProps.md)
---
---
url: /api/renderers/markdown-it/src.md
---
[pantoken-root](../../../index.md) / markdown-it
# markdown-it
## Compatibility
Target: markdown-it. Minimum host version: `14.0.0`. Tested through `15.0.2`. Newer releases require review.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/markdown-it` — a markdown-it plugin that renders `:icon:` codes as inline SVG and
standalone color values (`#03893D`, `rgb(…)`, `oklch(…)`) as swatches, using the pantoken icon
set.
It ports the `@pantoken/rehype` and `@pantoken/react-markdown` pipelines onto markdown-it: a
single core rule walks each inline token's text children, splits them on the icon and color
patterns, and swaps the matches for `html_inline` tokens. Icon codes resolve through a chain —
plugin `rehype` resolvers first, then an explicit [MarkdownItOptions.resolve](interfaces/MarkdownItOptions.md#resolve), then the
built-in `@pantoken/icons` set — so brand-icon plugins compose the same way they do elsewhere.
The emitted markup uses the same class names as the other renderers (`pantoken-icon`,
`pantoken-color-swatch`), so loading `@pantoken/components` styles it. Wrap the rendered HTML in a
`.pantoken-prose` container (see [PROSE_CLASS](variables/PROSE_CLASS.md)) to pick up the prose layer too.
## Example
```ts
import MarkdownIt from "markdown-it";
import { pantokenMarkdownIt } from "@pantoken/markdown-it";
const md = new MarkdownIt().use(pantokenMarkdownIt);
md.render("Save :check: to lock in #03893D.");
```
## Interfaces
* [MarkdownItOptions](interfaces/MarkdownItOptions.md)
## Variables
* [PROSE_CLASS](variables/PROSE_CLASS.md)
## Functions
* [pantokenMarkdownIt](functions/pantokenMarkdownIt.md)
## References
### default
Renames and re-exports [pantokenMarkdownIt](functions/pantokenMarkdownIt.md)
---
---
url: /api/renderers/mintlify/src.md
---
[pantoken-root](../../../index.md) / mintlify
# mintlify
## Compatibility
Target: Mintlify docs.json. Current format: `Official CLI validates generated colors and background theme config`. Minimum host version: `4.0.1555`. Tested through `4.0.1614`. Newer releases require review.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/mintlify` — theme a Mintlify docs site with Instructure tokens.
[toMintlifyConfig](functions/toMintlifyConfig.md) maps any IR onto the `colors` + `background` keys of a Mintlify
`docs.json`; [docsJson](variables/docsJson.md) is the ready-made `rebrand` fragment. Merge it into your `docs.json`.
## Example
```jsonc
// docs.json
{
"name": "My docs",
"theme": "mint",
"colors": { "primary": "#1D354F", "light": "#EEF4FD", "dark": "#1D354F" },
"background": { "color": { "light": "#F2F4F5", "dark": "#10141A" } }
}
```
## Interfaces
* [MintlifyColors](interfaces/MintlifyColors.md)
* [MintlifyBackground](interfaces/MintlifyBackground.md)
* [MintlifyTheme](interfaces/MintlifyTheme.md)
## Variables
* [docsJson](variables/docsJson.md)
## Functions
* [toMintlifyConfig](functions/toMintlifyConfig.md)
## References
### default
Renames and re-exports [docsJson](variables/docsJson.md)
---
---
url: /api/packages/model/src.md
---
[pantoken-root](../../../index.md) / model
# model
Beta
`@pantoken/model` — the zero-dependency type contracts for the pantoken token IR.
A [Token](interfaces/Token.md) is aligned to the CSS `@property` schema (`name`/`syntax`/`inherits`/
initial-`value`) and extended into a superset that also carries themed and reference values,
plus non-value [TokenMeta](interfaces/TokenMeta.md) (icons, provenance). Icons are rolled in as `` tokens.
Every pantoken package depends on this package for the type, so no consumer needs the
(GitHub-only) upstream token package just to type the IR.
## Interfaces
* [TokenModify](interfaces/TokenModify.md)
* [TokenMeta](interfaces/TokenMeta.md)
* [DeprecationEntry](interfaces/DeprecationEntry.md)
* [DeprecationLedger](interfaces/DeprecationLedger.md)
* [Token](interfaces/Token.md)
* [TokenInput](interfaces/TokenInput.md)
* [IconEntry](interfaces/IconEntry.md)
* [PropertyRule](interfaces/PropertyRule.md)
* [CssContribution](interfaces/CssContribution.md)
* [TokenHookContext](interfaces/TokenHookContext.md)
* [IconHookContext](interfaces/IconHookContext.md)
* [CssHookContext](interfaces/CssHookContext.md)
* [RehypeHookContext](interfaces/RehypeHookContext.md)
* [PantokenPlugin](interfaces/PantokenPlugin.md)
## Type Aliases
* [Theme](type-aliases/Theme.md)
* [UpstreamRef](type-aliases/UpstreamRef.md)
* [IconResolver](type-aliases/IconResolver.md)
## Functions
* [defineToken](functions/defineToken.md)
---
---
url: /api/renderers/mui/src.md
---
[pantoken-root](../../../index.md) / mui
# mui
## Compatibility
Target: Material UI. Current format: `Concrete createTheme palettes (MUI 5, 6, 7, 9)`. Minimum host version: `5.0.0`. Tested through `9.5.0`. Newer releases require review.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/mui` — theme MUI (Material UI) with Instructure tokens.
[toMuiTheme](functions/toMuiTheme.md) maps any IR onto MUI theme options; [lightTheme](variables/lightTheme.md) and [darkTheme](variables/darkTheme.md)
are the ready-made `rebrand` options. Pass them to MUI's `createTheme`.
## Example
```tsx
import { createTheme, ThemeProvider } from "@mui/material/styles";
import { lightTheme } from "@pantoken/mui";
const theme = createTheme(lightTheme);
... ;
```
## Interfaces
* [MuiPaletteColor](interfaces/MuiPaletteColor.md)
* [PantokenThemeOptions](interfaces/PantokenThemeOptions.md)
## Variables
* [lightTheme](variables/lightTheme.md)
* [darkTheme](variables/darkTheme.md)
## Functions
* [toMuiTheme](functions/toMuiTheme.md)
## References
### Mode
Re-exports [Mode](../../../packages/core/src/type-aliases/Mode.md)
***
### default
Renames and re-exports [lightTheme](variables/lightTheme.md)
---
---
url: /api/bundlers/next/src.md
---
[pantoken-root](../../../index.md) / next
# next
## Compatibility
Target: Next.js. Current format: `Production build transpiling and rendering Instructure UI 11.7.10 with React 19.3.0`. Minimum host version: `16.0.0`. Tested through `16.4.0`. Newer releases require review.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/next` — a Next.js config adapter.
Instructure UI ships ESM packages that Next must transpile (`transpilePackages`), the #1 papercut
when running InstUI on Next. `withPantoken` merges the InstUI packages into that list. Wrap your
`next.config`, then import `@pantoken/css` in your root layout for the tokens.
## Interfaces
* [NextConfigLike](interfaces/NextConfigLike.md)
* [WithPantokenOptions](interfaces/WithPantokenOptions.md)
## Variables
* [INSTUI_TRANSPILE_PACKAGES](variables/INSTUI_TRANSPILE_PACKAGES.md)
## Functions
* [withPantoken](functions/withPantoken.md)
## References
### default
Renames and re-exports [withPantoken](functions/withPantoken.md)
---
---
url: /api/bundlers/panda/src.md
---
[pantoken-root](../../../index.md) / panda
# panda
## Compatibility
Target: Panda CSS. Current format: `Panda token utility extraction from the Pantoken preset`. Minimum host version: `1.12.1`. Tested through `2.2.0`. Newer releases require review.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/panda` — an Instructure design-token preset for Panda CSS.
[toPandaPreset](functions/toPandaPreset.md) converts any IR; [pantokenPreset](variables/pantokenPreset.md) is the ready-made `rebrand` preset.
Spread it into your `panda.config.ts` `presets`, and the `_dark` condition tracks pantoken's
`light-dark()` tokens automatically.
## Example
**panda.config.ts**
```ts
import { defineConfig } from "@pandacss/dev";
import { pantokenPreset } from "@pantoken/panda";
export default defineConfig({ presets: [pantokenPreset] });
// then: css({ color: "token(colors.color-text-base)" })
```
## Interfaces
* [PandaToken](interfaces/PandaToken.md)
* [PandaSemanticToken](interfaces/PandaSemanticToken.md)
* [PandaPreset](interfaces/PandaPreset.md)
## Type Aliases
* [PandaCategory](type-aliases/PandaCategory.md)
## Variables
* [pantokenPreset](variables/pantokenPreset.md)
## Functions
* [toPandaPreset](functions/toPandaPreset.md)
## References
### default
Renames and re-exports [pantokenPreset](variables/pantokenPreset.md)
---
---
url: /api/ai/pantoken-ai/src.md
---
[pantoken-root](../../../index.md) / pantoken-ai
# pantoken-ai
Alpha
`@pantoken/ai` — consumer-facing agent assets for projects that *use* pantoken (not for
developing pantoken itself).
It ships an `AGENTS.md`, an `llms.txt`, editor/agent rule files (Cursor, Copilot, Windsurf), and
Claude Code skills (`init-pantoken`, `create-pantoken-app`, `create-pantoken-mockup`,
`use-pantoken-registry`), plus
[installAgentAssets](functions/installAgentAssets.md) / [scaffoldAndInit](functions/scaffoldAndInit.md) / the `pantoken-ai` CLI to drop them into a
consumer repo at the conventional paths.
Asset content and the writer function now live in `@pantoken/scaffold` (so the base scaffold
flow can offer them without a circular dependency); re-exported here for back-compat.
## Type Aliases
* [AgentTool](type-aliases/AgentTool.md)
* [ScaffoldPlatform](type-aliases/ScaffoldPlatform.md)
## Variables
* [AGENTS_MD](variables/AGENTS_MD.md)
* [LLMS_TXT](variables/LLMS_TXT.md)
* [AGENT_TOOLS](variables/AGENT_TOOLS.md)
* [SCAFFOLD_PLATFORMS](variables/SCAFFOLD_PLATFORMS.md)
## Functions
* [scaffoldAndInit](functions/scaffoldAndInit.md)
* [installAgentAssets](functions/installAgentAssets.md)
* [isScaffoldPlatform](functions/isScaffoldPlatform.md)
* [scaffoldProject](functions/scaffoldProject.md)
---
---
url: /api/renderers/pendo/src.md
---
[pantoken-root](../../../index.md) / pendo
# pendo
## Compatibility
Target: Pendo. Host compatibility has not yet been verified.
[Full compatibility matrix](../../../../compatibility)
Beta
`@pantoken/pendo` — an Instructure-styled global stylesheet for Pendo guides.
Pendo injects guide HTML into a host page; this renders that guide DOM (`._pendo-*`) to match
Instructure UI, using pantoken's `--instui-*` token layer for alignment. It includes responsive
violet and sea banner guide treatments alongside alerts, popovers, surveys, and controls. The
component CSS is ported from `@instructure/pendo-global-css`; pantoken supplies the tokens and the
assembly. A single theme class containing `instui` activates the scoped stylesheet; compact
suffixes on that class select banner colors and glyphs, and an `instui-banner` prefix extends the
banner surface to popovers and surveys while keeping their overlay elevation.
[buildPendoCss](functions/buildPendoCss.md) composes the stylesheet; [pendoCss](variables/pendoCss.md) is the ready-made `rebrand` build
(scoped, `!important`). A static file is published at `@pantoken/pendo/global.css`.
```demo
self:pendo
```
## Example
```ts
import { pendoCss } from "@pantoken/pendo";
// or a variant: buildPendoCss({ theme: "canvas", scope: false })
```
## Interfaces
* [BuildPendoCssOptions](interfaces/BuildPendoCssOptions.md)
* [AddScopeOptions](interfaces/AddScopeOptions.md)
## Variables
* [pendoCss](variables/pendoCss.md)
* [LAYER_ORDER](variables/LAYER_ORDER.md)
* [COMPONENTS](variables/COMPONENTS.md)
* [addImportant](variables/addImportant.md)
* [addScope](variables/addScope.md)
## Functions
* [buildPendoCss](functions/buildPendoCss.md)
## References
### default
Renames and re-exports [pendoCss](variables/pendoCss.md)
---
---
url: /api/packages/plugin-kit/src.md
---
[pantoken-root](../../../index.md) / plugin-kit
# plugin-kit
Beta
`@pantoken/plugin-kit` — build and compose pantoken plugins, with capability-aware registration.
[definePlugin](functions/definePlugin.md) is the modern factory: pass the hooks you implement and it returns a normal
`PantokenPlugin` branded with the capabilities inferred from those hooks. Consumers
(`buildTokens`, `toCss`) run [checkPlugins](functions/checkPlugins.md) to warn — never error — when a plugin is
registered where it has no effect: a non-factoried plugin (capability checks unavailable) or a
factoried plugin at a stage it doesn't implement (e.g. a token-only plugin passed to `toCss`).
The transform stages a `plugins:` array actually drives are `tokens`, `icons`, and `css`; `rehype`
(a render-time icon resolver) and `native` (Style Dictionary) are recorded as capabilities but are
downstream consumers, not guarded here.
## Example
```ts
const brand = definePlugin({ name: "brand", tokens: (c) => [...c.tokens], css: () => ({ ... }) });
// capabilitiesOf(brand) → ["tokens", "css"]
```
## Interfaces
* [ResolveOptions](interfaces/ResolveOptions.md)
## Type Aliases
* [Stage](type-aliases/Stage.md)
## Functions
* [definePlugin](functions/definePlugin.md)
* [isFactoried](functions/isFactoried.md)
* [validatePlugin](functions/validatePlugin.md)
* [capabilitiesOf](functions/capabilitiesOf.md)
* [checkPlugins](functions/checkPlugins.md)
* [extendPlugin](functions/extendPlugin.md)
* [mergePlugin](functions/mergePlugin.md)
* [makeResolver](functions/makeResolver.md)
* [resolveTokens](functions/resolveTokens.md)
## References
### Mode
Re-exports [Mode](../../core/src/type-aliases/Mode.md)
---
---
url: /guide/plugins.md
---
# Plugins
A pantoken plugin extends the token or CSS output without forking a package. You build one with
`definePlugin` from `@pantoken/plugin-kit`, then pass it to `buildTokens` or `toCss`.
## Author a plugin
Give `definePlugin` the hooks you implement. It returns a normal plugin, branded with the
capabilities inferred from those hooks. A plugin can extend the IR (`tokens`, `icons`), the CSS
output (`css`), or both.
```ts
import { definePlugin } from "@pantoken/plugin-kit";
export const brand = () =>
definePlugin({
name: "@acme/brand",
tokens: (ctx) => [...ctx.tokens /* add records */],
css: () => ({ append: ":root { /* … */ }" }),
});
```
## Capability-aware registration
`buildTokens` and `toCss` run `checkPlugins` over the plugins you pass. It warns — it never throws —
when a plugin has no matching hook for the stage it's registered in, so a token-only plugin passed
to `toCss` is skipped with a note rather than silently doing nothing.
## Compose plugins
Build on top of another plugin with `extendPlugin`, or combine peers with `mergePlugin`:
```ts
import { extendPlugin, mergePlugin } from "@pantoken/plugin-kit";
const themed = extendPlugin(brand(), { css: () => ({ append: "/* extra */" }) });
const both = mergePlugin(brand(), icons());
```
Same-stage hooks compose: `tokens` runs the base then the addition, `css` merges the two
contributions, and `icons` runs both.
## Validate your plugin's output
Run the shared drift checks from `@pantoken/utils` over your plugin's own output in its test, so a
typo or a renamed token fails fast and locally:
```ts
import { danglingReferences, unknownReferences } from "@pantoken/utils";
import { tokens } from "@pantoken/tokens";
// A self-contained contribution defines what it references, so nothing should dangle.
expect(danglingReferences(myPlugin().css!({ tokens, css: "" }).append ?? "")).toEqual([]);
// A contribution that only references tokens defined elsewhere: every target must be a real token.
expect(unknownReferences(myBridgeCss, tokens)).toEqual([]);
```
## The bundled plugins
* `@pantoken/plugin-simple-icons` — brand icons from simple-icons, registered as icon tokens.
* `@pantoken/plugin-lucide-lab` — Lucide Lab icons, registered as `--instui-icon-*` image tokens.
* `@pantoken/plugin-logos` — Instructure product logos as SVGs, data URIs, and `--instui-logo-*`
image tokens.
* `@pantoken/plugin-prune-custom-props` — a PostCSS plugin (not a pantoken plugin) that drops
unused custom properties from a stylesheet.
* `@pantoken/plugin-custom-theme-colors` — rebrands a page by setting one attribute
(`data-pantoken-color`) to one of 13 palettes, or to `custom` for any brand hex. See
[Theme colors](#theme-colors).
* `@pantoken/plugin-custom-components` — token-backed custom controls including SegmentedControl
and SkeletonLoader.
### Segmented control
Use a segmented control for two to five related views or filters. Each option is a labelled native
radio in one named group; mark one checked initially. Use tabs or a dropdown if the options won't fit
comfortably, and use button groups for actions rather than choices. The `-size-md` style is the
default, with `-size-sm` and `-size-lg` for tighter and more prominent contexts.
Import `@pantoken/plugin-custom-components/segmented-control.css` for the control and its overflow
buttons. Use a `-icon-*` class on a segment label when the segment needs a glyph; the interaction
helper also promotes a `-icon-*` class from its native input to the label painter.
Give the fieldset a descriptive `aria-label` or a visible legend. The helper preserves the native
radio announcement, adds keyboard navigation, and optionally reveals one clipped segment per arrow
press. Use logical start/end controls and accessible button labels in both directions:
```html
```
Import `@pantoken/interactions/segmented-control.iife.js` for DOM-ready registration, or call
`initSegmentedControl(fieldset, { size: "md", isOverflown: true })` from `@pantoken/interactions`
and call `cleanup()` when removing it. The CSS and native radio choices work without JS; overflow
arrows need the behavior. The selected item uses the two-layer design shadow from the semantic
drop-shadow colors; it is a distinct active-item shadow rather than an existing
`--instui-elevation-*` composite. Overflow buttons use the upstream elevation3 component tokens
through `--pantoken-segmented-overflow-shadow`.
### Skeleton loading
The `skeleton-loader.css` subpath styles one decorative Text, Avatar, or Image shape. Text accepts
`-size-xxs` through `-size-xxl`; Avatar and Image are medium-sized. Each optional `.skeleton-row`
adds one text line without changing the size. The CSS shimmer stops after three 1.5-second sweeps and
stays static when the user prefers reduced motion. It works before JavaScript loads.
Place shapes only where query-dependent content will appear, not over server-known navigation,
filters, headings, or controls. A skeleton is not a progress meter or an action-busy state. Keep
existing content visible during background refreshes; use a spinner or button busy state for actions.
The parent application owns loading, loaded, empty, and error markup. Provide one empty status region
per page and a separate empty alert in the server HTML, both **outside** the busy content region:
```html
```
Call the parent-level behavior when the request state changes. It updates `aria-busy` and the two
pre-existing announcements, but it never replaces content or moves focus:
```ts
import { initSkeletonLoading } from "@pantoken/interactions";
const wrapper = document.querySelector(".instui-skeleton-loading")!;
const loading = initSkeletonLoading(wrapper.querySelector("[data-skeleton-region]")!, {
status: wrapper.querySelector("[data-skeleton-status]")!,
error: wrapper.querySelector("[data-skeleton-error]")!,
});
loading.setLoading("Loading courses"); // announces after 400ms, unless loading finishes first
loading.setLoaded("24 courses"); // swap in the real content separately
// For an empty result, use setEmpty("No courses found"); for failure, setError("Couldn't load courses. Retry").
loading.cleanup(); // when the owning region is removed
```
If using the per-component interactions bundle instead of the direct import, dispatch a
`pantoken:skeleton-state` event on the `[data-skeleton-region]` element with
`detail: { state: "loading" | "loaded" | "empty" | "error", message: string }`. Delay *showing*
placeholders by 200–500ms for fast requests; the behavior independently delays the loading
announcement by 400ms. On passive page loads, leave focus where it is. Only move focus to a newly
loaded result when the user's own action requested it. The status node announces results and empty
states; the alert node announces failures. Do not combine `aria-busy`, `role="status"`, and
`role="alert"` on one element.
Lucide Lab's registry can be loaded lazily, then passed to the synchronous token hook:
```ts
import { buildTokens } from "@pantoken/core/build";
import { defaultRegistry, lucideLab } from "@pantoken/plugin-lucide-lab";
const registry = await defaultRegistry();
buildTokens({
theme: "rebrand",
plugins: [lucideLab({ registry, names: ["burger", "at-sign-circle"] })],
});
```
A few things that used to be plugins now ship in `@pantoken/components`, since so many components need
them out of the box: elevation shadows (`--instui-elevation-*`, in `components.css`), the focus-outline
ring (in `base.css` — every focusable gets it when pantoken owns the page), and the Instructure brand
fonts (Atkinson Hyperlegible Next: `base.css` applies `--instui-font-family-base`; the opt-in
`@pantoken/components/fonts.css` loads the `@font-face` woff2s).
## Theme colors
`@pantoken/plugin-custom-theme-colors` emits one `[data-pantoken-color="…"]` block per palette
(`navy`, `blue`, `green`, `red`, `orange`, `grey`, `plum`, `violet`, `stone`, `sky`, `honey`, `sea`,
`aurora`). Each block points the brand primitives (`--instui-primitive-color-navy-*` and `-blue-*`)
at the chosen palette. It also re-derives the brand surfaces that upstream flattened to literal hex,
keeping their baked alpha through `color-mix()`. Semantic status colors, explicit blue accents, and
elevation shadows stay put. Try it in the
[swatch-based theming demo](https://stackblitz.com/edit/vitejs-vite-sg9oy7ln?file=index.html).
```html
```
### Custom brand color
Set `data-pantoken-color="custom"` to rebrand from any hex, such as the primary color a Canvas admin
types into the Theme Editor. pantoken derives a full 10–200 `--instui-primitive-color-custom-*`
scale from it:
1. **Reference curve.** Each step's target lightness is the average OKLCH lightness of the 13
palettes at that step, with 0 fixed at white and 210 at black. So the custom scale's spacing
matches the shipped palettes'.
2. **Anchor.** The input lands on the step whose target lightness is nearest its own, then snaps to
that exact lightness. `#cccccc` becomes `custom-40` at `#c9c9c9`: close to the input, but not
always identical. "Nearest" means nearest step on the curve, not the closest existing palette
color.
3. **Fill.** Every other step keeps the input's hue. Its saturation follows the palettes' average
saturation curve relative to the anchor, and is reduced only where a color falls outside sRGB.
Only `#rgb` and `#rrggbb` are accepted; anything else throws a `TypeError`, so a hex from a form
can't inject CSS.
At build time, emit the whole rule with the derived primitives already declared:
```ts
import { customColorCss, customThemeColors } from "@pantoken/plugin-custom-theme-colors";
customThemeColors({ custom: "#e62429" }); // as a plugin, alongside the 13 palettes
customColorCss("#e62429"); // or the custom rule on its own
```
To pick the color at runtime without shipping the token set, precompute the curve and the remap
rule at build time. Then use the dependency-free `/scale` entry in the browser, and set only the 20
derived primitives:
```ts
// Build time
import {
customColorReferenceCurve,
customColorRemapCss,
} from "@pantoken/plugin-custom-theme-colors";
const curve = customColorReferenceCurve(); // JSON-safe
const remapCss = customColorRemapCss(); // ship alongside the palette stylesheet
```
```ts
// Browser
import { deriveScale } from "@pantoken/plugin-custom-theme-colors/scale";
const { anchorStep, steps } = deriveScale(input.value, curve);
style.textContent = `:root[data-pantoken-color="custom"] { ${[...steps]
.map(([step, hex]) => `--instui-primitive-color-custom-custom${step}: ${hex};`)
.join(" ")} }`;
document.documentElement.dataset.pantokenColor = "custom";
```
The docs site's theme picker, the Canvas theme editor, and the demo above all work this way.
See the [API reference](/api/) for each plugin's exports.
---
---
url: /api/bundlers/postcss/src.md
---
[pantoken-root](../../../index.md) / postcss
# postcss
## Compatibility
Target: PostCSS. Minimum host version: `8.0.0`. Tested through `8.5.29`. Newer releases require review.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/postcss` — a PostCSS plugin that expands an `@pantoken;` at-rule into the full
Instructure token stylesheet (`@property` registrations + declarations). Write `@pantoken;` where
you want the tokens defined, and the plugin replaces it at build time.
## Interfaces
* [PantokenPostcssOptions](interfaces/PantokenPostcssOptions.md)
## Variables
* [pantoken](variables/pantoken.md)
## References
### default
Renames and re-exports [pantoken](variables/pantoken.md)
---
---
url: /api/plugins/pantoken/primitives/src.md
---
[pantoken-root](../../../../index.md) / primitives
# primitives
Beta
Opt-in utility classes for the raw pantoken primitive palette (`--instui-primitive-*`).
The semantic utilities in `@pantoken/components` deliberately expose only semantic tokens — a color
override there is always a role (`bg-brand`), never a raw swatch. This package is the escape hatch:
one class per primitive token for the rare case a developer needs the palette directly. Load it on
its own (`@pantoken/plugin-primitives/primitives.css`), separate from the semantic layer.
## Example
**Build the primitive stylesheet**
```ts
import { primitivesCss } from "@pantoken/plugin-primitives";
import { tokens } from "@pantoken/tokens";
const names = (p: string) => tokens.filter((t) => t.name.startsWith(p)).map((t) => t.name);
const css = primitivesCss({
color: names("--instui-primitive-color-"),
fontFamily: names("--instui-primitive-font-family-"),
fontWeight: names("--instui-primitive-font-weight-"),
});
// .instui-bg-primitive-color-white { background: var(--instui-primitive-color-white); }
```
## Interfaces
* [PrimitiveTokenNames](interfaces/PrimitiveTokenNames.md)
* [PrimitivesOptions](interfaces/PrimitivesOptions.md)
## Functions
* [primitivesCss](functions/primitivesCss.md)
## References
### default
Renames and re-exports [primitivesCss](functions/primitivesCss.md)
---
---
url: /api/plugins/postcss/props-minify/src.md
---
[pantoken-root](../../../../index.md) / props-minify
# props-minify
Beta
`@pantoken/plugin-props-minify` — compose prune, flatten, and mangle transforms for
`--instui-*` custom properties via a single [applyMinify](functions/applyMinify.md) utility.
Each CSS-emitting pipeline (generate scripts, renderers) uses `applyMinify` for a consistent
minification surface without taking a direct PostCSS dependency.
**Prune + mangle are only safe for self-contained bundles** where all `var(--instui-*)` references
and their definitions live in the same output. For separate-file consumers (`@pantoken/css` +
`@pantoken/components` loaded independently), apply `{ flatten: true }` only.
**Mangle across file boundaries:** pass the same `Map` instance as
`mangle.sharedManifest` to every `applyMinify` call that processes CSS files loaded together.
Process the token sheet first (it seeds the manifest), then component sheets.
## Examples
**Apply all three transforms to a self-contained bundle**
```ts
import { applyMinify } from "@pantoken/plugin-props-minify";
const out = applyMinify(css, { prune: true, flatten: true, mangle: true });
```
**Flatten only (safe for separate-file consumers)**
```ts
import { applyMinify } from "@pantoken/plugin-props-minify";
const out = applyMinify(css, { flatten: true });
```
**Mangle two files with the same mapping**
```ts
import { applyMinify } from "@pantoken/plugin-props-minify";
const manifest = new Map();
const tokenCss = applyMinify(rawTokens, { mangle: { sharedManifest: manifest } });
const componentCss = applyMinify(rawComponents, { mangle: { sharedManifest: manifest } });
```
## Interfaces
* [FlattenPropertyOptions](interfaces/FlattenPropertyOptions.md)
* [MangleCustomPropsOptions](interfaces/MangleCustomPropsOptions.md)
* [PropsMinifyOptions](interfaces/PropsMinifyOptions.md)
## Type Aliases
* [MangleMethod](type-aliases/MangleMethod.md)
## Variables
* [flattenProperty](variables/flattenProperty.md)
* [mangleCustomProps](variables/mangleCustomProps.md)
* [pruneCustomProps](variables/pruneCustomProps.md)
## Functions
* [applyMinify](functions/applyMinify.md)
---
---
url: /api/plugins/postcss/prune-custom-props/src.md
---
[pantoken-root](../../../../index.md) / prune-custom-props
# prune-custom-props
Beta
`@pantoken/plugin-prune-custom-props` — tree-shake unused custom properties from a composed
stylesheet.
pantoken's `@pantoken/css` emits the whole `--instui-*` token set (≈1,800 icon data-URIs
included). A renderer that builds on that layer but only styles a slice of the system would
otherwise ship the entire set — so any such renderer wants this. Starting from the `var()`
references in real (non-custom-property) declarations, it transitively keeps only the custom
properties actually reachable, and drops the matching unused `@property` registrations.
It's a standalone PostCSS plugin (run it in your own PostCSS pipeline). The factory returns a
plain plugin object, so importing this module pulls in no runtime dependency — `postcss` is only
a type.
## Example
```ts
import postcss from "postcss";
import { pruneCustomProps } from "@pantoken/plugin-prune-custom-props";
const out = postcss([pruneCustomProps()]).process(css, { from: undefined }).css;
```
## Variables
* [pruneCustomProps](variables/pruneCustomProps.md)
## References
### default
Renames and re-exports [pruneCustomProps](variables/pruneCustomProps.md)
---
---
url: /api/renderers/react/src.md
---
[pantoken-root](../../../index.md) / react
# react
## Compatibility
Target: React. Current format: `SSR-rendered Icon custom element and token fallback`. Minimum host version: `19.3.0`. Tested through `19.3.0`. Newer releases require review.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/react` — thin React helpers over `@pantoken/web-components` and the token CSS.
* `` renders the `` custom element (React 19 passes props to custom elements).
* `useToken` reads a resolved `--instui-*` value at runtime (SSR-safe: returns the fallback on
the server).
* `` registers the elements and is where an app can inject the stylesheet.
## Interfaces
* [IconProps](interfaces/IconProps.md)
* [TokenProviderProps](interfaces/TokenProviderProps.md)
## Functions
* [readToken](functions/readToken.md)
* [useToken](functions/useToken.md)
* [Icon](functions/Icon.md)
* [TokenProvider](functions/TokenProvider.md)
## References
### register
Re-exports [register](../../angular/src/functions/register.md)
***
### registerLocalized
Re-exports [registerLocalized](../../svelte/src/functions/registerLocalized.md)
---
---
url: /api/renderers/react-markdown/src.md
---
[pantoken-root](../../../index.md) / react-markdown
# react-markdown
## Compatibility
Target: react-markdown. Current format: `SSR-rendered InstUI heading, icon, and color swatch with React 19.3.0`. Minimum host version: `10.1.0`. Tested through `10.1.0`. Newer releases require review.
[Full compatibility matrix](../../../../compatibility)
Beta
`@pantoken/react-markdown` — render Markdown with Instructure UI components and pantoken icons.
The default entry renders GitHub-Flavored Markdown, inline `:icon:` tokens (via
`@pantoken/rehype` + `@pantoken/icons`), color-code swatches, and GitHub-style alerts. The MDX
provider lives at `@pantoken/react-markdown/mdx`.
## Interfaces
* [InstuiMarkdownRenderOptions](interfaces/InstuiMarkdownRenderOptions.md)
* [InstuiMarkdownProps](interfaces/InstuiMarkdownProps.md)
## Type Aliases
* [AlertMarker](type-aliases/AlertMarker.md)
## Variables
* [instuiMarkdownComponents](variables/instuiMarkdownComponents.md)
## Functions
* [createInstuiMarkdownComponents](functions/createInstuiMarkdownComponents.md)
* [buildIconResolver](functions/buildIconResolver.md)
* [parseAlertMarker](functions/parseAlertMarker.md)
* [isColorValue](functions/isColorValue.md)
* [rehypeColorCodes](functions/rehypeColorCodes.md)
* [rehypeGithubAlerts](functions/rehypeGithubAlerts.md)
* [InstuiMarkdown](functions/InstuiMarkdown.md)
---
---
url: /api/renderers/react-native/src.md
---
[pantoken-root](../../../index.md) / react-native
# react-native
## Compatibility
Target: React Native. Host compatibility has not yet been verified.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/react-native` — Instructure design tokens as React Native `StyleSheet`-friendly
objects. React Native has no CSS variables, so tokens are fully resolved to concrete values:
colours stay hex strings, dimensions become numbers (dp), and icons are excluded.
## Type Aliases
* [RNTokenValue](type-aliases/RNTokenValue.md)
## Variables
* [light](variables/light.md)
* [dark](variables/dark.md)
## Functions
* [tokensForScheme](functions/tokensForScheme.md)
---
---
url: /r.md
---
---
---
url: /api/renderers/rehype/src.md
---
[pantoken-root](../../../index.md) / rehype
# rehype
## Compatibility
Target: rehype. Current format: `HAST + raw SVG`. Minimum host version: `13.0.0`. Tested through `13.0.2`. Newer releases require review.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/rehype` — render `:icon:` codes as inline SVG.
The plugin walks hast text nodes and replaces `:code:` tokens with an inline SVG element,
resolving each code through a chain: any explicit `resolve`, then the built-in
`@pantoken/icons` set, then plugin `rehype` resolvers. It ports `rehype-instui-markdown` onto
the shared icon manifest.
## Interfaces
* [RehypeOptions](interfaces/RehypeOptions.md)
## Functions
* [rehypePantokenIcons](functions/rehypePantokenIcons.md)
## References
### default
Renames and re-exports [rehypePantokenIcons](functions/rehypePantokenIcons.md)
---
---
url: /api/platforms/rust/src.md
---
[pantoken-root](../../../index.md) / rust
# rust
## Compatibility
Target: Rust GUI frameworks. Current format: `Generated egui Color32 accessors and iced_core Color constants compile with the Rust toolchain`. Minimum host version: `1.95.0`. Tested through `1.95.0`. Newer releases require review.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/rust` — emit Instructure design tokens as Rust constants for the two mainstream native
Rust GUIs: **egui** (`Color32`) and **iced** (`Color`). Colours become the framework's colour
type; dimensions become `f32` (px). Web-rendered Rust UIs (Tauri, Dioxus-web, Leptos, Yew) should
use `@pantoken/css` instead.
## Interfaces
* [RustOptions](interfaces/RustOptions.md)
## Type Aliases
* [RustFormat](type-aliases/RustFormat.md)
## Functions
* [toRust](functions/toRust.md)
* [generateRust](functions/generateRust.md)
## References
### default
Renames and re-exports [generateRust](functions/generateRust.md)
---
---
url: /public/create-pantoken-app.md
description: >-
Scaffold a maintained application, or add Instructure design tokens and icons
(pantoken) to an existing project with a package manager. Use for web,
framework, native, and CMS projects that need dependencies and builds. Do not
use for a standalone HTML mockup or sendable email; use
create-pantoken-mockup.
---
# Scaffold pantoken
Set up [pantoken](https://www.npmjs.com/package/@pantoken/pantoken) — a design tokens and icons
library for Instructure UI — in the current project. Work through these steps.
If the user wants one standalone HTML file, a quick browser prototype, a customer email mockup, or
sendable email HTML, stop and use the `create-pantoken-mockup` skill instead.
## About pantoken
pantoken is built and used internally at Instructure, then open-sourced; Instructure doesn't
provide official warranty or support for it as a product, which is why it's published from
[`thedannywahl`](https://github.com/thedannywahl/pantoken) on GitHub and npm
([`@pantoken`](https://www.npmjs.com/org/pantoken)) rather than the `instructure` org/scope — it may
move there later. Check either link yourself before proceeding if you want to verify this.
## 1. New project or existing repo?
* **Empty directory, or no repo yet** — scaffold a starter with the CLI, then stop (steps 2-3 are
already done for you by the template).
The CLI has its own interactive prompts, but those only work at a real terminal, so ask the user
the questions below the same way you normally would, then pass their answers as flags (plus
`--yes`) so the command runs without needing its own prompts:
1. **Platform** — ask the user, offering the supported list: `components` (plain HTML/CSS;
`html` is an accepted alias), `react`, `vue`, `svelte`, `web-components`, `angular`,
`canvas-theme-editor` (Canvas LMS Theme Editor uploads + an RCE content page template
starter; `theme-editor` is an accepted alias). Skip asking only if it's unambiguous from the
conversation — route requests like "use pantoken with my Canvas theme editor" or "build RCE
page templates" straight to `canvas-theme-editor`. More platforms land over time; if the
desired one isn't yet supported by the scaffold CLI, skip the CLI entirely and proceed
directly to step 2 to manually install and wire pantoken instead.
For `canvas-theme-editor`, after scaffolding, tell the user to: (1) upload the generated
`theme.css`/`theme.js` under Canvas's Theme Editor → Advanced, and (2) run `npm run dev` to
author RCE page templates in the local TinyMCE editor, using the **Layouts** toolbar button to
start from a bundled starter layout before copying the result into Canvas.
If the CLI fails for any reason (non-zero exit, unsupported platform, network error), fall
through to step 2 and treat the project as an existing repo, preserving any files already
written by the CLI.
2. **Package manager** — if a lockfile already exists in the target directory, use it (see the
detection table in step 2); a genuinely empty directory has no lockfile to detect from, so
ask the user (npm/pnpm/yarn/bun/deno).
3. **Directory** — ask where to scaffold (default `.` for the current directory; confirm before
defaulting to `.` if you're not sure that's what they want).
Then run the fully-resolved command, substituting the chosen package manager's "run a package's
CLI" form from step 2's table for `npx`, and passing `--yes` so the CLI never falls back to its
own interactive prompts:
```sh
npx @pantoken/ai scaffold --dir --yes
```
This writes a minimal starter (`package.json`, entry file(s), README) for the chosen platform
with pantoken already installed and wired in, and also installs pantoken's agent assets
(AGENTS.md, editor/agent rules, skills) into the same directory. If you only want the starter
project without the agent assets, run `npx create-pantoken-app --dir --yes`
(or `npx @pantoken/scaffold --dir --yes`) directly instead — substituting the
chosen package manager's launcher for `npx` on either command. Run `npm install` (or the chosen
package manager's install) in the target directory afterward.
* **Existing repo you want to add pantoken to** — continue to step 2.
## 2. Determine the target
Ask the user what kind of project they're building, unless it's unambiguous from the repo. Offer:
* **Native web (plain HTML/CSS, no framework) — default** → `@pantoken/components`
* A JS framework (React, Vue, Svelte, Angular, React Native, Next.js)
* A build tool only, styling from raw tokens (Tailwind, PostCSS, Vite, Webpack, or plain `@pantoken/css`)
* A native/CMS ecosystem (Swift, Android, Compose, Flutter, Rust, WordPress, Drupal, Vanilla, Jekyll, Hugo)
If the user doesn't answer or has no preference, default to native web (`@pantoken/components`).
Corroborate with the repo when possible, and prefer the user's answer if it conflicts with detection:
* `package.json` dependencies → web framework (react, vue, svelte, @angular/core, react-native,
next, vite, tailwindcss, webpack, postcss).
* If no `package.json` is found and the user wants a web project, run `npm init -y` first, then
proceed with the native web default (or the chosen framework) — this applies even if the user
describes the project as "existing"; trust their named framework and proceed rather than asking
for clarification.
* Native project files → iOS (`Package.swift`, `*.xcodeproj`), Android (`build.gradle`), Flutter
(`pubspec.yaml`), WordPress/Drupal/Vanilla theme dirs.
Also detect the package manager from the lockfile present in the repo, and use its equivalent
command for every install/run step below instead of assuming npm:
| Lockfile found | Package manager | Add package(s) | Run a package's CLI |
| -------------------------- | --------------- | -------------------- | -------------------- |
| `pnpm-lock.yaml` | pnpm | `pnpm add ` | `pnpm dlx ` |
| `yarn.lock` | yarn | `yarn add ` | `yarn dlx ` |
| `bun.lock`/`bun.lockb` | bun | `bun add ` | `bunx ` |
| `deno.lock` | deno | `deno add npm:` | `deno run npm:` |
| `package-lock.json` / none | npm | `npm i ` | `npx ` |
If no lockfile exists yet, default to npm (or whatever the user prefers).
## 3. Install
If `components.json` exists or the user explicitly requests shadcn, use the indexed registry to
discover and install Pantoken CSS styles:
```sh
npx shadcn@latest search @pantoken --query
npx shadcn@latest view @pantoken/-
npx shadcn@latest add @pantoken/
-
```
Registry items provide CSS and usage metadata, not React components. Use `@instructure/ui-*` when
the user needs full React components. Continue with direct package installation for non-shadcn
projects.
Use the package manager detected in step 2 for every command below (the examples use `npm i`;
substitute `pnpm add`, `yarn add`, or `bun add` as appropriate).
Follow this decision checklist in order, then run one install command with all collected packages:
1. **Is it native web** (plain HTML/CSS, no framework and no build tool detected)? Install only
`@pantoken/components` — it ships the token CSS baked in, so no separate `@pantoken/css` install
is needed — and stop:
```sh
npm i @pantoken/components
```
2. **Is it Next.js?** Collect `@pantoken/css` plus `@pantoken/next` (do NOT also add
`@pantoken/react` — `@pantoken/next` includes the React integration), then add any matching tool
packages (Tailwind, Vite, etc.) from the table below.
3. **Otherwise**, collect `@pantoken/css` first, then add the framework package and every matching
tool row's package from the table. Framework rows (React, Vue, etc.) and tool rows (Tailwind,
PostCSS, Vite, Webpack) are all additive — collect every matching row's package alongside
`@pantoken/css`.
4. If the user wants to use `
` in any web framework project (React, Vue, Vite, etc.),
also collect `@pantoken/web-components` — regardless of which framework rows already matched.
For example:
* A Next.js project also using Tailwind installs `@pantoken/css @pantoken/next @pantoken/tailwind`.
* A React project also using Vite installs `@pantoken/css @pantoken/react @pantoken/vite`.
| Detected | Install |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Native web (default) | `@pantoken/components` |
| React | `@pantoken/react`; if the user also wants full InstUI components (buttons, modals, etc.), additionally install the specific `@instructure/ui-*` packages needed, e.g. `@instructure/ui-buttons @instructure/ui-modal` (see for the full package list) |
| Vue / Svelte / Angular | `@pantoken/vue` / `@pantoken/svelte` / `@pantoken/angular` + `@pantoken/web-components` (always install `@pantoken/web-components` alongside the framework package here — it's required for icon support in these three, not optional) |
| React Native | `@pantoken/react-native` |
| Next.js | `@pantoken/next` — Next.js projects do NOT also need `@pantoken/react`; `@pantoken/next` includes the React integration. Do not install both. |
| Vite | `@pantoken/vite` |
| Tailwind | `@pantoken/tailwind` |
| PostCSS / Webpack | `@pantoken/postcss` / `@pantoken/webpack` |
| shadcn / Bootstrap | `@pantoken/shadcn` / `@pantoken/bootstrap` |
| markdown-it / css-in-js | `@pantoken/markdown-it` / `@pantoken/css-in-js` |
| Icons anywhere | `@pantoken/web-components` — for React, Next.js, React Native, and tool-only setups, only add this if the user explicitly wants icon support (`` elements); for Vue, Svelte, and Angular it's always required (see that row) |
For native / CMS targets, no install — run the CLI (step 5). If the project contains both a
`package.json` and native/CMS files, treat it as a web project and follow the web install steps
above; only skip to step 5 if there is no `package.json` and no JS framework detected.
## 4. Wire it up
* Native web (default): import `base.css` + `components.css` from `@pantoken/components` (e.g.
`import "@pantoken/components/base.css"; import "@pantoken/components/components.css";`), then
apply classes like `class="instui-button"` to markup.
* Other web entry: add `import "@pantoken/css/inject";` (or `@import "@pantoken/css/style.css";`).
* Next: wrap the config with `withPantoken(...)` and import the CSS in the root layout.
* Vite: add the `pantoken()` plugin. Tailwind: add `pantokenPreset()` to `presets`.
* Web components: `import "@pantoken/web-components";` then use ``.
* Verify the app renders and `getComputedStyle(document.documentElement).getPropertyValue('--instui-color-background-brand')` is non-empty.
If the property is empty, check that the token CSS import (`@pantoken/components/base.css` or
`@pantoken/css/inject`) appears before any component imports in the entry file, and that the dev
server was restarted after install. Report the specific failure to the user with corrective steps.
## 5. Native / other ecosystems
```sh
npx @pantoken/cli generate --out [--icons a,b] [--theme rebrand]
```
Substitute `pnpm dlx`, `yarn dlx`, `bunx`, or `deno run npm:` for `npx` per the package manager
detected in step 2 (or from the choice made in step 1 if you're still inside the new-project flow).
## Conventions to follow afterward
* Style with `var(--instui-*)` references, not hard-coded colours, so light/dark and high-contrast
theming keeps working.
* Resolve real token names from `@pantoken/tokens`; never invent them.
---
---
url: /api/formats/scope/src.md
---
[pantoken-root](../../../index.md) / scope
# scope
Beta
`@pantoken/scope` — run several pantoken themes and color schemes in one document.
Pantoken's CSS keys themes to a `data-pantoken-theme` attribute that matches *any* element, not
just `:root`, so theming is a property of a subtree rather than of the page. This package is the
runtime half of that contract:
* [resolveScope](functions/resolveScope.md) walks up from an element to find the theme, scheme, and color in effect —
the auto-detection half.
* [createScope](functions/createScope.md) declares a scope explicitly, with its own persisted state and its own frame
message channel — the manual-configuration half that stops two instances colliding.
* [ensureProperties](functions/ensureProperties.md) injects the document-global `@property` registrations once, however
many instances ask for them.
Node-free by design: this ships to the browser.
## Interfaces
* [ScopeConfig](interfaces/ScopeConfig.md)
* [ResolvedScope](interfaces/ResolvedScope.md)
* [ScopeMessage](interfaces/ScopeMessage.md)
* [CreateScopeOptions](interfaces/CreateScopeOptions.md)
* [PantokenScope](interfaces/PantokenScope.md)
* [ConnectScopeOptions](interfaces/ConnectScopeOptions.md)
## Type Aliases
* [Scheme](type-aliases/Scheme.md)
## Variables
* [DEFAULT_INSTANCE](variables/DEFAULT_INSTANCE.md)
* [INSTANCE_ATTR](variables/INSTANCE_ATTR.md)
* [SCOPE_ATTRS](variables/SCOPE_ATTRS.md)
## Functions
* [ensureProperties](functions/ensureProperties.md)
* [hasProperties](functions/hasProperties.md)
* [observeScope](functions/observeScope.md)
* [resolveScope](functions/resolveScope.md)
* [resolveInstance](functions/resolveInstance.md)
* [resolveScheme](functions/resolveScheme.md)
* [getScope](functions/getScope.md)
* [frameTargetOrigin](functions/frameTargetOrigin.md)
* [createScope](functions/createScope.md)
* [connectScope](functions/connectScope.md)
* [isScheme](functions/isScheme.md)
## References
### BOUNDARY_ATTR
Re-exports [BOUNDARY_ATTR](../../css/src/variables/BOUNDARY_ATTR.md)
***
### BOUNDARY_CLASS
Re-exports [BOUNDARY_CLASS](../../css/src/variables/BOUNDARY_CLASS.md)
***
### COLOR_ATTR
Re-exports [COLOR_ATTR](../../css/src/variables/COLOR_ATTR.md)
***
### SCHEME_ATTR
Re-exports [SCHEME_ATTR](../../css/src/variables/SCHEME_ATTR.md)
***
### THEME_ATTR
Re-exports [THEME_ATTR](../../css/src/variables/THEME_ATTR.md)
***
### colorClass
Re-exports [colorClass](../../css/src/variables/colorClass.md)
***
### schemeClass
Re-exports [schemeClass](../../css/src/variables/schemeClass.md)
***
### themeClass
Re-exports [themeClass](../../css/src/variables/themeClass.md)
---
---
url: /conventions/scoping.md
---
# Scoping: several pantokens on one page
Pantoken used to assume it owned the document. Themes were `:root[data-pantoken-theme="…"]`,
`@property` registrations were global, `color-scheme` was set on ``, storage keys were
unnamespaced, and theme broadcasts swept every iframe on the page. Two pantoken instances on one page
— the docs site and the canvas-theme-editor preview, say — therefore fought, and whichever wrote last
won.
Theming is now a property of a **subtree**, not of the page.
## The contract
Five attributes, defined once in `packages/utils/src/scope.ts` and exposed at the dependency-free
`@pantoken/utils/scope` entry. `@pantoken/css` selects on them; `@pantoken/scope` writes them.
| Attribute | Class twin | Meaning |
| ------------------------ | -------------------------- | ---------------------------------------------------------- |
| `data-pantoken-theme` | `.--pantoken-theme-` | Roots a theme scope. Matches **any** element, not `:root`. |
| `data-pantoken-scheme` | `.--pantoken-scheme-` | Pins the subtree to `light` or `dark`. |
| `data-pantoken-color` | `.--pantoken-color-` | Selects a custom brand color. |
| `data-pantoken-boundary` | `.--pantoken-boundary` | Ancestor resolution stops here. |
| `data-pantoken-instance` | — | Names the owning instance. |
Every selector is emitted in both forms, because some hosts sanitize `data-*` out of authored
content but leave `class` alone — Canvas RCE being the one that forced it. The class twin follows the
repo's global-modifier convention and is repeated three times for (0,3,0) specificity, so a scope
class outranks any component-modifier compound that sets tokens.
The attribute wins when both sit on one element. `resolveScope` reads both, so the runtime and the
stylesheet never disagree about what is in effect.
Declarations land in four cascade layers, lowest first:
```css
@layer pantoken.base, pantoken.theme, pantoken.scheme, pantoken.color;
```
The layers only matter when several attributes sit on the *same* element — scheme must beat theme
there. Between different elements, plain inheritance decides: the nearest ancestor that declares a
token wins for its subtree.
## The sheets
Load these two instead of a single `style.*.css` when more than one theme must be active:
* `@pantoken/css/properties.css` — the `@property` registrations. **Load once per document.**
Registrations are document-global: a second copy silently redefines every token's initial value for
the whole page. `ensureProperties()` makes a repeat call a no-op.
* `@pantoken/css/scope.css` — a shared base block plus one complete token block per theme. Includes
the scheme pins below.
* `@pantoken/css/schemes.css` — just the scheme pins (343 bytes), for layering onto a sheet that
didn't bundle them.
A single-theme page should keep using `style.lean.css`; it is much smaller.
### Why theme blocks are complete, not diffs
The docs sheet used to emit non-default themes as *only the tokens that differ* from rebrand. That is
correct when exactly one theme block can ever apply. Under subtree scoping it is wrong: a `canvas`
scope nested inside a `canvasHighContrast` scope would inherit high-contrast values for every token
the canvas block omitted.
So `multiScopeCss` partitions tokens by whether they actually vary across the emitted theme set.
Invariant tokens go in the shared base once. **Varying tokens are repeated in full in every theme
block.** A test asserts the blocks declare identical token sets — that parity is the nesting-safety
invariant, and breaking it reintroduces the bug silently.
## Color schemes
`color-scheme` is an ordinary inherited CSS property, so one rule keyed to the scope selector
resolves `light-dark()` for everything below it:
```css
@layer pantoken.scheme {
[data-pantoken-scheme="dark"],
:where(*).--pantoken-scheme-dark... {
color-scheme: dark;
}
}
```
That is the entire mechanism, and it is why a light subtree and a dark subtree can coexist. Nothing
needs an inline style, so a host that can only add a class or an attribute still gets per-subtree
schemes.
An earlier version of this sheet re-declared every themed token flattened to one branch — 87 kb to do
what the browser already does from a single declaration. If you find yourself generating a per-token
override table for a scheme, that's the mistake.
The behaviour this rests on — that `light-dark()` inside a custom property resolves against the
*consuming descendant's* inherited `color-scheme`, not the element the token was declared on — is
browser-verified by `formats/css/tests/manual/scope-test.html`. Re-run that page after any change to
the scoped emitters; unit tests can only check the emitted strings, not the cascade.
## Sizing
Measured over the three shipped themes, lean (no icons):
| | bytes | gzip |
| ------------------------------------------------------- | ----: | ---: |
| `style.lean.css` (one theme) | 285 K | 25 K |
| `properties.lean.css` + `scope.lean.css` (three themes) | 572 K | 47 K |
| `schemes.css` | 343 | 143 |
Of 2,921 tokens, only **786 vary across themes** — the other 73% are emitted once, in the shared base
block and the `@property` registrations. The repetition that remains is irreducible: custom
properties resolve by inheritance, not by lookup, so values that differ per subtree must physically
exist on each subtree's root.
Emitting complete theme blocks rather than diffs is close to free, and the reason is worth knowing:
`canvas` already differs from `rebrand` in 764 of those 786 tokens, and `canvasHighContrast` in 785.
The diff *is* the full set. Completeness buys nesting safety for 1–3%.
## The runtime
```ts
import { createScope, resolveScope } from "@pantoken/scope";
// Manual configuration — the way to avoid a collision in the first place.
createScope(appEl, { instanceId: "app", theme: "rebrand", scheme: "dark" });
createScope(previewEl, {
instanceId: "preview",
theme: "canvas",
scheme: "light",
boundary: true, // nothing outside can theme what is inside
});
// Auto-detection — what is in effect here?
resolveScope(someDescendant); // { theme, scheme, color, instanceId, element, bounded }
```
Each field resolves independently, so a subtree can override the scheme while still inheriting the
theme. Resolution reads the boundary element's own attributes and then stops.
The registry is keyed per **document**, so an iframe gets its own. Storage keys are
`pantoken::`. Frames opt in with `scope.attachFrame(iframe)` rather than being
found by a document-wide sweep, and messages carry `instanceId` so a receiver can reject another
instance's.
## Rules
* Never read `document.documentElement` to decide what theme or scheme applies. Use `resolveScope` /
`resolveScheme` from the element you actually care about. That global read is what desynchronises
two instances.
* Never write a bare `pantoken-theme` storage key. Namespace it by instance.
* Never `querySelectorAll` the whole document for frames to broadcast to. Scope the query to your own
scope element and skip frames owned by another instance.
* Don't run `applyMinify(css, { flatten: true })` over a scoped sheet. Flattening turns `@property`
into **unlayered** `:root` declarations, which outrank `@layer pantoken.theme` and break scoping.
* Use a hard boundary (`boundary: true`, a shadow root, or an iframe) when a subtree must be immune
to its surroundings rather than merely override them.
## Instances in this repo
| Instance | Owner |
| ----------------------------- | -------------------------------------------- |
| `docs` | the VitePress site (`docs/.vitepress/theme`) |
| `canvas-theme-editor` | the scaffold app's chrome |
| `canvas-theme-editor-preview` | its preview iframe (a boundary) |
---
---
url: /api/formats/scss/src.md
---
[pantoken-root](../../../index.md) / scss
# scss
Experimental
`@pantoken/scss` — Instructure design tokens as SCSS variables.
[toScss](functions/toScss.md) converts any IR; [scss](variables/scss.md) is the ready-made `rebrand` variable set. A static
file is published at `@pantoken/scss/tokens.scss`.
## Interfaces
* [ToScssOptions](interfaces/ToScssOptions.md)
## Variables
* [scss](variables/scss.md)
## Functions
* [toScss](functions/toScss.md)
## References
### Mode
Re-exports [Mode](../../../packages/core/src/type-aliases/Mode.md)
***
### default
Renames and re-exports [scss](variables/scss.md)
---
---
url: /api/renderers/shadcn/src.md
---
[pantoken-root](../../../index.md) / shadcn
# shadcn
## Compatibility
Target: shadcn/ui CSS variables. Current format: `Tailwind 4.3.3 compiles the Pantoken primary theme alias`. Minimum host version: `4.3.3`. Tested through `4.3.3`. Newer releases require review.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/shadcn` — theme shadcn/ui with Instructure tokens.
[toShadcnCss](functions/toShadcnCss.md) emits a `:root` block pointing shadcn's CSS variables at `var(--instui-*)`.
Drop it in alongside `@pantoken/css` (which defines the custom properties) and shadcn components
adopt the Instructure look. Icons align for free — shadcn and Instructure both use Lucide.
## Interfaces
* [ToShadcnCssOptions](interfaces/ToShadcnCssOptions.md)
## Variables
* [shadcnCss](variables/shadcnCss.md)
* [shadcnTailwindV4Css](variables/shadcnTailwindV4Css.md)
* [SHADCN_TO_INSTUI](variables/SHADCN_TO_INSTUI.md)
## Functions
* [toShadcnCss](functions/toShadcnCss.md)
* [toShadcnTailwindV4Css](functions/toShadcnTailwindV4Css.md)
## References
### default
Renames and re-exports [shadcnCss](variables/shadcnCss.md)
---
---
url: /api/plugins/pantoken/simple-icons/src.md
---
[pantoken-root](../../../../index.md) / simple-icons
# simple-icons
Beta
`@pantoken/plugin-simple-icons` — bring Simple Icons brand glyphs into pantoken.
The plugin defines a `tokens` hook (emit selected brand glyphs as `` tokens, so they flow
to CSS and native too) *and* a `rehype` hook (resolve `:brand:` codes at render). Same plugin,
either layer — the generalized form of the `mcp-stack/portal` icon factory.
## Interfaces
* [SimpleIcon](interfaces/SimpleIcon.md)
* [SimpleIconsOptions](interfaces/SimpleIconsOptions.md)
## Type Aliases
* [SimpleIconsRegistry](type-aliases/SimpleIconsRegistry.md)
## Functions
* [toExportName](functions/toExportName.md)
* [defaultRegistry](functions/defaultRegistry.md)
* [simpleIcons](functions/simpleIcons.md)
## References
### default
Renames and re-exports [simpleIcons](functions/simpleIcons.md)
---
---
url: /api/plugins/pantoken/stacking/src.md
---
[pantoken-root](../../../../index.md) / stacking
# stacking
Beta
`@pantoken/plugin-stacking` — named z-index depths.
InstUI's `View` exposes a stacking scale (`deepest`, `below`, `above`, `topmost`) so layers stack
predictably instead of by hand-tuned magic numbers. This plugin emits `--instui-stacking-`
tokens, resolved to concrete z-index values from the shipped `--instui-component-view-stacking-*`
tokens, for consumers using the lower-level `@pantoken/css`/`@pantoken/tokens` pipeline directly.
The matching `.instui-stack-` utility classes now live in `@pantoken/components`' own
`stacking` utility.
## Example
```ts
import { buildTokens } from "@pantoken/core/build";
import { stacking } from "@pantoken/plugin-stacking";
const tokens = buildTokens({ theme: "rebrand", plugins: [stacking()] });
// → includes --instui-stacking-topmost: …
```
## Interfaces
* [StackingOptions](interfaces/StackingOptions.md)
## Variables
* [STACKING_LEVELS](variables/STACKING_LEVELS.md)
## Functions
* [stacking](functions/stacking.md)
## References
### default
Renames and re-exports [stacking](functions/stacking.md)
---
---
url: /api/renderers/storybook/src.md
---
[pantoken-root](../../../index.md) / storybook
# storybook
## Compatibility
Target: Storybook theming. Current format: `Storybook ThemeVars constructor accepts light and dark Pantoken themes`. Minimum host version: `8.6.14`. Tested through `8.6.14`. Newer releases require review.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/storybook` — a Storybook theme built from Instructure tokens.
[pantokenStorybookTheme](functions/pantokenStorybookTheme.md) returns a plain `ThemeVars`-shaped object (so `@storybook/theming`
stays an optional peer) with colours resolved concretely from the IR. Pass it to Storybook's
`manager`/`preview` theme.
## Type Aliases
* [StorybookTheme](type-aliases/StorybookTheme.md)
## Functions
* [pantokenStorybookTheme](functions/pantokenStorybookTheme.md)
## References
### default
Renames and re-exports [pantokenStorybookTheme](functions/pantokenStorybookTheme.md)
---
---
url: /api/formats/stylus/src.md
---
[pantoken-root](../../../index.md) / stylus
# stylus
Experimental
`@pantoken/stylus` — Instructure design tokens as Stylus variables.
[toStylus](functions/toStylus.md) converts any IR; [stylus](variables/stylus.md) is the ready-made `rebrand` variable set. A static
file is published at `@pantoken/stylus/tokens.styl`.
## Interfaces
* [ToStylusOptions](interfaces/ToStylusOptions.md)
## Variables
* [stylus](variables/stylus.md)
## Functions
* [toStylus](functions/toStylus.md)
## References
### Mode
Re-exports [Mode](../../../packages/core/src/type-aliases/Mode.md)
***
### default
Renames and re-exports [stylus](variables/stylus.md)
---
---
url: /api/renderers/svelte/src.md
---
[pantoken-root](../../../index.md) / svelte
# svelte
## Compatibility
Target: Svelte. Current format: `Icon action component compiles and SSR renders on Svelte 4 and 5`. Minimum host version: `4.2.20`. Tested through `5.57.2`. Newer releases require review.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/svelte` — Svelte helpers over `@pantoken/web-components`.
`icon` is a Svelte action that renders an Instructure glyph into an element. `readToken` reads a
resolved `--instui-*` value (SSR-safe). The custom elements also work directly once `register()`
has run.
## Interfaces
* [ActionResult](interfaces/ActionResult.md)
## Functions
* [readToken](functions/readToken.md)
* [icon](functions/icon.md)
* [registerLocalized](functions/registerLocalized.md)
## References
### register
Re-exports [register](../../angular/src/functions/register.md)
---
---
url: /api/design/swatches/src.md
---
[pantoken-root](../../../index.md) / swatches
# swatches
Experimental
`@pantoken/swatches` — export Instructure colours as designer swatch palettes.
Swatches are a flat reduction of the tokens to named colours, delivered *directly to a designer*
to import into their tool. This is not an interchange format (use `@pantoken/dtcg` or
`@pantoken/figma` for that) — it's a terminal palette file: Adobe ASE, GIMP `.gpl`, or Sketch
`.sketchpalette`.
## Interfaces
* [ToGplOptions](interfaces/ToGplOptions.md)
* [Swatch](interfaces/Swatch.md)
* [Rgb](interfaces/Rgb.md)
* [SketchPalette](interfaces/SketchPalette.md)
* [ToSvgOptions](interfaces/ToSvgOptions.md)
## Type Aliases
* [Mode](type-aliases/Mode.md)
## Variables
* [swatches](variables/swatches.md)
## Functions
* [toAse](functions/toAse.md)
* [toGpl](functions/toGpl.md)
* [hexToRgb](functions/hexToRgb.md)
* [toSwatches](functions/toSwatches.md)
* [toSketchPalette](functions/toSketchPalette.md)
* [toSvg](functions/toSvg.md)
---
---
url: /api/platforms/swift/src.md
---
[pantoken-root](../../../index.md) / swift
# swift
## Compatibility
Target: Swift iOS. Current format: `UIKit SwiftPM module, runtime token check, and compiled Icons.xcassets`. Tested environment: `Xcode 27.0 (27A266a), Swift 6.4, iOS Simulator SDK/runtime 27.0, iPhone 18 Pro, arm64 iOS 15 deployment target`. Runtime tested only on iOS Simulator 27.0; this does not establish an iOS 15 runtime floor. No watchOS or tvOS claim.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/swift` — emit Instructure design tokens as Swift via Style Dictionary.
This is pantoken's native proof: it flattens the IR to concrete, single-mode values
(`@pantoken/core`'s `toStyleDictionary`), keeps the natively-typed tokens (colours, dimensions,
numbers), and hands them to `@pantoken/sd-config`. Swapping `platform` to `flutter`/`compose`
reuses the same path.
The generated Swift uses UIKit and targets iOS. `mise run verify:swift:syntax` only parses its
source; `mise run verify:swift:host` needs full Xcode and the iOS Simulator SDK to type-check it.
## Interfaces
* [GenerateSwiftOptions](interfaces/GenerateSwiftOptions.md)
## Functions
* [toSwift](functions/toSwift.md)
* [generateSwift](functions/generateSwift.md)
## References
### default
Renames and re-exports [generateSwift](functions/generateSwift.md)
---
---
url: /api/bundlers/tailwind/src.md
---
[pantoken-root](../../../index.md) / tailwind
# tailwind
## Compatibility
Target: Tailwind CSS. Minimum host version: `4.0.17`. Tested through `4.3.3`. Newer releases require review.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/tailwind` — a Tailwind CSS preset that maps Instructure design tokens into the theme.
Every token is exposed as a `var(--instui-*)` reference (not a concrete value), so Tailwind
utilities like `bg-background-base` theme through the same CSS custom properties that
`@pantoken/css` emits — light/dark and high-contrast all keep working.
## Interfaces
* [TailwindPreset](interfaces/TailwindPreset.md)
* [PantokenPresetOptions](interfaces/PantokenPresetOptions.md)
## Functions
* [pantokenPreset](functions/pantokenPreset.md)
## References
### default
Renames and re-exports [pantokenPreset](functions/pantokenPreset.md)
---
---
url: /guide/cli.md
---
# The pantoken CLI
`@pantoken/cli` provides `pantoken generate `, which writes token source into a target repo,
and `pantoken add - `, a convenience wrapper around the shadcn registry. Reach for `generate`
when a platform needs generated code rather than a runtime dependency — native apps, CMS themes,
and static-site generators.
```sh
npx pantoken generate
--out [--theme ] [--icons a,b,c]
```
For a project configured with shadcn, this delegates to `shadcn add @pantoken/- ` and registers
the indexed namespace when necessary:
```sh
npx pantoken add button
```
Use the official shadcn `list`, `search`, and `view` commands for discovery. Registry items install
Pantoken CSS styles and metadata, not React components.
## Targets
| Target | Output |
| ----------- | --------------------------------------------------------------------------------- |
| `swift` | Swift source under `Sources/
` plus a `Package.swift` SwiftPM manifest stub. |
| `android` | Android XML resource files. |
| `compose` | A Jetpack Compose Kotlin file. |
| `flutter` | A Flutter Dart file. |
| `rust` | A `tokens.rs` for egui (default) or iced (`--format iced`). |
| `wordpress` | A block-theme `theme.json`. |
| `vanilla` | A Vanilla Forums `variables.json`. |
| `drupal` | Drupal theme assets. |
| `jekyll` | Jekyll site data. |
| `hugo` | Hugo site data. |
| `swatches` | Color swatches — `ase` (default), `gpl`, `sketch`, or `svg` via `--format`. |
| `icon-font` | An icon web font (TTF, WOFF2), its CSS, and a codepoints map. |
| `pendo` | The Instructure-styled `global.css` for Pendo guides. |
## Common flags
* `--out ` — where to write (default `./pantoken-out`).
* `--theme ` — `rebrand` (default), `canvas`, or `canvasHighContrast`.
* `--icons a,b,c` — icon names to emit as native assets, for targets that support them.
* `--class ` — the generated type or package name, for targets that need one.
* `--format ` — the output format, for `swatches` and `rust`.
## Examples
```sh
# iOS tokens plus two icons, in the Canvas theme.
npx pantoken generate swift --out ./ios/Tokens --theme canvas --icons arrow-left,check-mark
# A WordPress block theme's theme.json.
npx pantoken generate wordpress --out ./wp-content/themes/mytheme
# An egui palette for a Rust app.
npx pantoken generate rust --out ./src/tokens.rs --format egui
```
Several targets also expose a plain function, so you can call them from your own build instead of
the CLI. See the [API reference](/api/) for each platform package.
---
---
url: /api/plugins/postcss/theme-custom-media/src.md
---
[pantoken-root](../../../../index.md) / theme-custom-media
# theme-custom-media
Beta
`@pantoken/plugin-theme-custom-media` — author with theme custom-idents
(`@media (theme: )`) and/or `@media (--theme-*)` aliases, then emit concrete CSS for a
chosen target theme.
The plugin expands built-in `--theme-*` and `--breakpoint-*` aliases, prunes non-target theme
branches, strips matching `theme:*` clauses from kept queries, unwraps always-true theme-only media
wrappers, and removes `@custom-media --theme-*`/`--breakpoint-*` declarations from emitted CSS.
## Interfaces
* [ThemeCustomMediaOptions](interfaces/ThemeCustomMediaOptions.md)
## Type Aliases
* [Theme](type-aliases/Theme.md)
## Variables
* [themeCustomMedia](variables/themeCustomMedia.md)
## References
### default
Renames and re-exports [themeCustomMedia](variables/themeCustomMedia.md)
---
---
url: /api/renderers/tinymce/src.md
---
[pantoken-root](../../../index.md) / tinymce
# tinymce
## Compatibility
Target: TinyMCE PluginManager. Current format: `Pantoken plugin registration and callback initialization`. Minimum host version: `8.9.2`. Tested through `8.9.3`. Newer releases require review.
[Full compatibility matrix](../../../../compatibility)
## Interfaces
* [CssDocEntry](interfaces/CssDocEntry.md)
* [PageLayoutImagePlaceholder](interfaces/PageLayoutImagePlaceholder.md)
* [PageLayout](interfaces/PageLayout.md)
* [LogoMeta](interfaces/LogoMeta.md)
* [TaggedIcon](interfaces/TaggedIcon.md)
* [GlyphSyncTarget](interfaces/GlyphSyncTarget.md)
* [ContentClassesPluginOptions](interfaces/ContentClassesPluginOptions.md)
* [LayoutsPluginOptions](interfaces/LayoutsPluginOptions.md)
* [LayoutImageAttributes](interfaces/LayoutImageAttributes.md)
* [PantokenPluginOptions](interfaces/PantokenPluginOptions.md)
* [TinymceStrings](interfaces/TinymceStrings.md)
## Type Aliases
* [Product](type-aliases/Product.md)
* [PantokenFontSize](type-aliases/PantokenFontSize.md)
* [LayoutImageResolver](type-aliases/LayoutImageResolver.md)
## Variables
* [pageLayouts](variables/pageLayouts.md)
* [logos](variables/logos.md)
* [products](variables/products.md)
* [PANTOKEN_ICON_PACK_NAME](variables/PANTOKEN_ICON_PACK_NAME.md)
* [ICON_SOURCES](variables/ICON_SOURCES.md)
* [SOURCE_LABELS](variables/SOURCE_LABELS.md)
* [PRODUCT_LABELS](variables/PRODUCT_LABELS.md)
* [CONTENT_CLASSES_PLUGIN_NAME](variables/CONTENT_CLASSES_PLUGIN_NAME.md)
* [PANTOKEN_COMMANDS](variables/PANTOKEN_COMMANDS.md)
* [FULLSCREEN_FOOTER_PLUGIN_NAME](variables/FULLSCREEN_FOOTER_PLUGIN_NAME.md)
* [FULLSCREEN_FOOTER_STATUSBAR_NAME](variables/FULLSCREEN_FOOTER_STATUSBAR_NAME.md)
* [ICONS_COMMAND](variables/ICONS_COMMAND.md)
* [DEFAULT_ICON_TRIGGER](variables/DEFAULT_ICON_TRIGGER.md)
* [LAYOUTS_PLUGIN_NAME](variables/LAYOUTS_PLUGIN_NAME.md)
* [LAYOUTS_TOOLBAR_NAME](variables/LAYOUTS_TOOLBAR_NAME.md)
* [PANTOKEN_PLUGIN_NAME](variables/PANTOKEN_PLUGIN_NAME.md)
* [PANTOKEN_TOOLBAR_NAME](variables/PANTOKEN_TOOLBAR_NAME.md)
* [PANTOKEN_ICON](variables/PANTOKEN_ICON.md)
* [SEARCHREPLACE_FOOTER_PLUGIN_NAME](variables/SEARCHREPLACE_FOOTER_PLUGIN_NAME.md)
* [SEARCHREPLACE_FOOTER_STATUSBAR_NAME](variables/SEARCHREPLACE_FOOTER_STATUSBAR_NAME.md)
* [SUP_SUB_PLUGIN_NAME](variables/SUP_SUB_PLUGIN_NAME.md)
* [SUP_SUB_TOOLBAR_NAME](variables/SUP_SUB_TOOLBAR_NAME.md)
* [pageTemplates](variables/pageTemplates.md)
* [VISUALBLOCKS_FOOTER_PLUGIN_NAME](variables/VISUALBLOCKS_FOOTER_PLUGIN_NAME.md)
* [VISUALBLOCKS_FOOTER_STATUSBAR_NAME](variables/VISUALBLOCKS_FOOTER_STATUSBAR_NAME.md)
* [TINYMCE_STRINGS](variables/TINYMCE_STRINGS.md)
## Functions
* [pantokenHtmlCompletion](functions/pantokenHtmlCompletion.md)
* [pantokenHtmlLinter](functions/pantokenHtmlLinter.md)
* [pantokenContentCssUrls](functions/pantokenContentCssUrls.md)
* [injectContentStylesheet](functions/injectContentStylesheet.md)
* [retargetContentStylesheets](functions/retargetContentStylesheets.md)
* [findEntry](functions/findEntry.md)
* [listComponents](functions/listComponents.md)
* [listUtilities](functions/listUtilities.md)
* [getModifierSuggestions](functions/getModifierSuggestions.md)
* [validateClassToken](functions/validateClassToken.md)
* [registerPantokenIconPack](functions/registerPantokenIconPack.md)
* [loadAllIcons](functions/loadAllIcons.md)
* [getIconCdnFile](functions/getIconCdnFile.md)
* [getUsedIconCdnFiles](functions/getUsedIconCdnFiles.md)
* [humanizeIconName](functions/humanizeIconName.md)
* [buildIconMarkup](functions/buildIconMarkup.md)
* [getIconImageSrc](functions/getIconImageSrc.md)
* [filterIcons](functions/filterIcons.md)
* [normalizeGlyphHtml](functions/normalizeGlyphHtml.md)
* [injectUsedGlyphAssets](functions/injectUsedGlyphAssets.md)
* [registerGlyphSync](functions/registerGlyphSync.md)
* [logoVariantLabel](functions/logoVariantLabel.md)
* [filterLogos](functions/filterLogos.md)
* [getLogoCdnFile](functions/getLogoCdnFile.md)
* [buildLogoMarkup](functions/buildLogoMarkup.md)
* [getUsedLogoCdnFiles](functions/getUsedLogoCdnFiles.md)
* [createComponentsPlugin](functions/createComponentsPlugin.md)
* [createContentClassesPlugin](functions/createContentClassesPlugin.md)
* [createFullscreenFooterPlugin](functions/createFullscreenFooterPlugin.md)
* [createIconsPlugin](functions/createIconsPlugin.md)
* [materializeLayout](functions/materializeLayout.md)
* [createLayoutsPlugin](functions/createLayoutsPlugin.md)
* [createLogosPlugin](functions/createLogosPlugin.md)
* [createPantokenPlugin](functions/createPantokenPlugin.md)
* [createSearchReplaceFooterPlugin](functions/createSearchReplaceFooterPlugin.md)
* [createSupSubPlugin](functions/createSupSubPlugin.md)
* [createTemplatesPlugin](functions/createTemplatesPlugin.md)
* [createVisualBlocksFooterPlugin](functions/createVisualBlocksFooterPlugin.md)
---
---
url: /api/formats/tokens/src.md
---
[pantoken-root](../../../index.md) / tokens
# tokens
Beta
`@pantoken/tokens` — the canonical resolved token IR, vendored as static JSON.
The default export is the `rebrand` theme; every theme is available by name and via
[byTheme](functions/byTheme.md). Raw Tokens Studio JSON lives at `@pantoken/tokens/raw`.
## Variables
* [tokens](variables/tokens.md)
* [rebrandTokens](variables/rebrandTokens.md)
* [canvasTokens](variables/canvasTokens.md)
* [canvasHighContrastTokens](variables/canvasHighContrastTokens.md)
* [themes](variables/themes.md)
## Functions
* [byTheme](functions/byTheme.md)
## References
### Theme
Re-exports [Theme](../../../packages/core/src/type-aliases/Theme.md)
***
### Token
Re-exports [Token](../../../packages/core/src/interfaces/Token.md)
***
### TokenMeta
Re-exports [TokenMeta](../../../packages/core/src/interfaces/TokenMeta.md)
***
### TokenModify
Re-exports [TokenModify](../../../packages/core/src/interfaces/TokenModify.md)
---
---
url: /api/plugins/pantoken/transition/src.md
---
[pantoken-root](../../../../index.md) / transition
# transition
Beta
`@pantoken/plugin-transition` — the `--instui-transition-duration`/`--instui-transition-timing`
tokens behind InstUI's `Transition` utility.
The CSS itself (the `.instui-transition` base rule plus the `fade`/`scale`/`slide-*` state classes)
lives in `@pantoken/components`' own `transition` utility now; this plugin only bakes the two
duration/timing tokens into a token IR for consumers using the lower-level `@pantoken/css` +
`@pantoken/tokens` pipeline directly.
## Example
```ts
import { buildTokens } from "@pantoken/core/build";
import { transition } from "@pantoken/plugin-transition";
const tokens = buildTokens({ theme: "rebrand", plugins: [transition()] });
// → includes --instui-transition-duration: 300ms, --instui-transition-timing: ease-in-out
```
## Interfaces
* [TransitionOptions](interfaces/TransitionOptions.md)
## Functions
* [transition](functions/transition.md)
## References
### default
Renames and re-exports [transition](functions/transition.md)
---
---
url: /api/ai/pantoken-ai/src/type-aliases/AgentTool.md
---
[pantoken-root](../../../../index.md) / [ai/pantoken-ai/src](../index.md) / AgentTool
# Type Alias: AgentTool
> **AgentTool** = `"agents"` | `"llms"` | `"cursor"` | `"copilot"` | `"windsurf"` | `"claude"`
Alpha
An agent/editor tool pantoken can install assets for.
---
---
url: /api/renderers/react-markdown/src/type-aliases/AlertMarker.md
---
[pantoken-root](../../../../index.md) / [renderers/react-markdown/src](../index.md) / AlertMarker
# Type Alias: AlertMarker
> **AlertMarker** = `"NOTE"` | `"TIP"` | `"IMPORTANT"` | `"WARNING"` | `"CAUTION"`
Beta
GitHub-style blockquote alert markers (`> [!NOTE]`).
---
---
url: /api/packages/utils/src/type-aliases/ColorUtilityEntry.md
---
[pantoken-root](../../../../index.md) / [packages/utils/src](../index.md) / ColorUtilityEntry
# Type Alias: ColorUtilityEntry
> **ColorUtilityEntry** = `string` | readonly \[`name`: `string`, `value`: `string`]
Beta
One semantic colour family entry: a bare name (resolved against `--instui-color--`)
or an explicit `[name, value]` pair — the second element is `var()`-wrapped if it's a `--custom-prop`
name, or used verbatim otherwise (a `light-dark(…)` expression, a raw keyword like `transparent`).
---
---
url: /api/formats/interactions/src/type-aliases/CommandHandler.md
---
[pantoken-root](../../../../index.md) / [formats/interactions/src](../index.md) / CommandHandler
# Type Alias: CommandHandler
> **CommandHandler** = (`command`, `source`) => `void`
Callback invoked when a `command` event (or fallback click) resolves to a target.
## Parameters
### command
`string`
### source
`Element` | `null`
## Returns
`void`
---
---
url: /api/plugins/pantoken/colors/src/type-aliases/CssColor.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/colors/src](../index.md) / CssColor
# Type Alias: CssColor
> **CssColor** = `string`
Beta
A CSS color: a literal (`#1d354f`, `rebeccapurple`), a `var(--token)`, or a nested helper result.
---
---
url: /api/formats/css/src/type-aliases/CssEmitTarget.md
---
[pantoken-root](../../../../index.md) / [formats/css/src](../index.md) / CssEmitTarget
# Type Alias: CssEmitTarget
> **CssEmitTarget** = `"all"` | `"properties"` | `"declarations"`
Beta
Which half of the sheet to emit.
`@property` registrations are document-global — the last registration of a given name wins for the
whole document — so two full sheets on one page fight over every concrete token. Emitting
registrations once (`"properties"`) and each theme as declarations only (`"declarations"`) lets
several themes coexist.
---
---
url: /api/formats/dtcg/src/type-aliases/DtcgNode.md
---
[pantoken-root](../../../../index.md) / [formats/dtcg/src](../index.md) / DtcgNode
# Type Alias: DtcgNode
> **DtcgNode** = { `$value`: `string`; `$type?`: `string`; } | {\[`key`: `string`]: `DtcgNode`; }
Beta
A DTCG token leaf or group.
---
---
url: /api/platforms/email/src/type-aliases/EmailClient.md
---
[pantoken-root](../../../../index.md) / [platforms/email/src](../index.md) / EmailClient
# Type Alias: EmailClient
> **EmailClient** = `"generic"` | `"outlook"` | `"gmail"` | `"webkit"`
Experimental
Supported email client capability profiles.
---
---
url: /api/packages/core/src/type-aliases/IconResolver.md
---
[pantoken-root](../../../../index.md) / [packages/core/src](../index.md) / IconResolver
# Type Alias: IconResolver
> **IconResolver** = (`code`) => [`IconEntry`](../interfaces/IconEntry.md) | `undefined`
Beta
Maps an icon code to an [IconEntry](../interfaces/IconEntry.md), or `undefined` when it has no match.
## Parameters
### code
`string`
## Returns
[`IconEntry`](../interfaces/IconEntry.md) | `undefined`
---
---
url: /api/packages/model/src/type-aliases/IconResolver.md
---
[pantoken-root](../../../../index.md) / [packages/model/src](../index.md) / IconResolver
# Type Alias: IconResolver
> **IconResolver** = (`code`) => [`IconEntry`](../interfaces/IconEntry.md) | `undefined`
Beta
Maps an icon code to an [IconEntry](../interfaces/IconEntry.md), or `undefined` when it has no match.
## Parameters
### code
`string`
## Returns
[`IconEntry`](../interfaces/IconEntry.md) | `undefined`
---
---
url: /api/formats/interactions/src/type-aliases/InPlaceEditInputType.md
---
[pantoken-root](../../../../index.md) / [formats/interactions/src](../index.md) / InPlaceEditInputType
# Type Alias: InPlaceEditInputType
> **InPlaceEditInputType** = `"text"` | `"number"` | `"email"` | `"url"` | `"tel"` | `"search"`
Text-like input types that can be meaningfully hinted on a contenteditable field.
---
---
url: /api/renderers/tinymce/src/type-aliases/LayoutImageResolver.md
---
[pantoken-root](../../../../index.md) / [renderers/tinymce/src](../index.md) / LayoutImageResolver
# Type Alias: LayoutImageResolver
> **LayoutImageResolver** = (`placeholder`, `layout`) => [`LayoutImageAttributes`](../interfaces/LayoutImageAttributes.md) | `undefined`
Resolves a provider-neutral layout image slot for a particular consumer.
## Parameters
### placeholder
[`PageLayoutImagePlaceholder`](../interfaces/PageLayoutImagePlaceholder.md)
### layout
[`PageLayout`](../interfaces/PageLayout.md)
## Returns
[`LayoutImageAttributes`](../interfaces/LayoutImageAttributes.md) | `undefined`
---
---
url: /api/plugins/pantoken/logos/src/type-aliases/LogoColorMode.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/logos/src](../index.md) / LogoColorMode
# Type Alias: LogoColorMode
> **LogoColorMode** = `"color"` | `"current-color"` | `"dark"` | `"full-color"` | `"full-color-bg"` | `"full-color-reversed"` | `"light"` | `"reversed"` | `"reversed-bg"`
Beta
A logo color treatment.
---
---
url: /api/plugins/pantoken/logos/src/type-aliases/LogoLang.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/logos/src](../index.md) / LogoLang
# Type Alias: LogoLang
> **LogoLang** = `"ar"` | `"el"` | `"fa"` | `"he"` | `"hi"` | `"hy"` | `"jp"` | `"ko"` | `"ru"` | `"th"` | `"uk"` | `"zh"`
Beta
A trailing language code on a localized wordmark variant, e.g. `"horizontal-full-color-ar"`.
---
---
url: /api/plugins/pantoken/logos/src/type-aliases/LogoLayout.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/logos/src](../index.md) / LogoLayout
# Type Alias: LogoLayout
> **LogoLayout** = `"horizontal"` | `"icon"` | `"icon-single-dot"` | `"icon-three-dot"` | `"stacked"`
Beta
A logo layout — the arrangement of mark and wordmark.
---
---
url: /api/plugins/pantoken/lucide-lab/src/type-aliases/LucideLabNode.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/lucide-lab/src](../index.md) / LucideLabNode
# Type Alias: LucideLabNode
> **LucideLabNode** = \[`tag`: `string`, `attrs`: `Record`<`string`, `string` | `number`>]
One SVG element in a Lucide icon-node array.
---
---
url: /api/plugins/pantoken/lucide-lab/src/type-aliases/LucideLabRegistry.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/lucide-lab/src](../index.md) / LucideLabRegistry
# Type Alias: LucideLabRegistry
> **LucideLabRegistry** = `Record`<`string`, `unknown`>
A registry of named Lucide Lab icon-node arrays.
---
---
url: /api/plugins/postcss/mangle-custom-props/src/type-aliases/MangleMethod.md
---
[pantoken-root](../../../../../index.md) / [plugins/postcss/mangle-custom-props/src](../index.md) / MangleMethod
# Type Alias: MangleMethod
> **MangleMethod** = `"base26"` | `"base36"` | `"numeric"`
Beta
Short-name generation strategy for [mangleCustomProps](../variables/mangleCustomProps.md).
---
---
url: /api/plugins/postcss/props-minify/src/type-aliases/MangleMethod.md
---
[pantoken-root](../../../../../index.md) / [plugins/postcss/props-minify/src](../index.md) / MangleMethod
# Type Alias: MangleMethod
> **MangleMethod** = `"base26"` | `"base36"` | `"numeric"`
Beta
Short-name generation strategy for [mangleCustomProps](../variables/mangleCustomProps.md).
---
---
url: /api/design/swatches/src/type-aliases/Mode.md
---
[pantoken-root](../../../../index.md) / [design/swatches/src](../index.md) / Mode
# Type Alias: Mode
> **Mode** = `"light"` | `"dark"`
Experimental
The colour mode to resolve when flattening `light-dark()` values.
---
---
url: /api/formats/dtcg/src/type-aliases/Mode.md
---
[pantoken-root](../../../../index.md) / [formats/dtcg/src](../index.md) / Mode
# Type Alias: Mode
> **Mode** = `"light"` | `"dark"`
Beta
The colour mode to resolve when flattening `light-dark()` values.
---
---
url: /api/platforms/vanilla/src/type-aliases/Mode.md
---
[pantoken-root](../../../../index.md) / [platforms/vanilla/src](../index.md) / Mode
# Type Alias: Mode
> **Mode** = `"light"` | `"dark"`
Experimental
The colour mode to resolve when flattening `light-dark()` values.
---
---
url: /api/platforms/wordpress/src/type-aliases/Mode.md
---
[pantoken-root](../../../../index.md) / [platforms/wordpress/src](../index.md) / Mode
# Type Alias: Mode
> **Mode** = `"light"` | `"dark"`
Experimental
The colour mode to resolve when flattening `light-dark()` values.
---
---
url: /api/packages/core/src/type-aliases/Mode.md
---
[pantoken-root](../../../../index.md) / [packages/core/src](../index.md) / Mode
# Type Alias: Mode
> **Mode** = `"light"` | `"dark"`
Beta
The colour mode to collapse `light-dark()` to.
---
---
url: /api/packages/utils/src/type-aliases/Mode.md
---
[pantoken-root](../../../../index.md) / [packages/utils/src](../index.md) / Mode
# Type Alias: Mode
> **Mode** = `"light"` | `"dark"`
Beta
The colour mode to collapse `light-dark()` to.
---
---
url: /api/formats/interactions/src/type-aliases/OnCommand.md
---
[pantoken-root](../../../../index.md) / [formats/interactions/src](../index.md) / OnCommand
# Type Alias: OnCommand
> **OnCommand** = (`target`, `handler`) => `void`
Command-event wiring function: bind one target to a handler, with click fallback when needed.
## Parameters
### target
`HTMLElement`
### handler
[`CommandHandler`](CommandHandler.md)
## Returns
`void`
---
---
url: /api/bundlers/panda/src/type-aliases/PandaCategory.md
---
[pantoken-root](../../../../index.md) / [bundlers/panda/src](../index.md) / PandaCategory
# Type Alias: PandaCategory
> **PandaCategory** = `"colors"` | `"spacing"` | `"sizes"` | `"radii"` | `"fontSizes"` | `"fontWeights"` | `"lineHeights"` | `"durations"` | `"shadows"`
Experimental
The Panda token categories this preset populates.
---
---
url: >-
/api/plugins/pantoken/custom-theme-colors/src/type-aliases/PantokenColorNamespace.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/custom-theme-colors/src](../index.md) / PantokenColorNamespace
# Type Alias: PantokenColorNamespace
> **PantokenColorNamespace** = *typeof* [`COLOR_KEYS`](../variables/COLOR_KEYS.md)\[`number`] | *typeof* [`CUSTOM_COLOR_KEY`](../variables/CUSTOM_COLOR_KEY.md)
Beta
A supported custom theme color namespace.
---
---
url: /api/renderers/tinymce/src/type-aliases/PantokenFontSize.md
---
[pantoken-root](../../../../index.md) / [renderers/tinymce/src](../index.md) / PantokenFontSize
# Type Alias: PantokenFontSize
> **PantokenFontSize** = `"xs"` | `"sm"` | `"md"` | `"lg"` | `"xl"`
Semantic text sizes accepted by the pantoken font-size command.
---
---
url: /api/renderers/tinymce/src/type-aliases/Product.md
---
[pantoken-root](../../../../index.md) / [renderers/tinymce/src](../index.md) / Product
# Type Alias: Product
> **Product** = `"canvas"` | `"igniteai"` | `"instructure"` | `"learnplatform"` | `"mastery"` | `"pantoken"` | `"parchment"`
An Instructure product with a logo.
---
---
url: /api/plugins/pantoken/logos/src/type-aliases/Product.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/logos/src](../index.md) / Product
# Type Alias: Product
> **Product** = `"canvas"` | `"igniteai"` | `"instructure"` | `"learnplatform"` | `"mastery"` | `"pantoken"` | `"parchment"`
Beta
An Instructure product with a logo.
---
---
url: /api/renderers/react-native/src/type-aliases/RNTokenValue.md
---
[pantoken-root](../../../../index.md) / [renderers/react-native/src](../index.md) / RNTokenValue
# Type Alias: RNTokenValue
> **RNTokenValue** = `string` | `number`
Experimental
A React Native token value: a colour/string or a numeric dimension.
---
---
url: /api/platforms/rust/src/type-aliases/RustFormat.md
---
[pantoken-root](../../../../index.md) / [platforms/rust/src](../index.md) / RustFormat
# Type Alias: RustFormat
> **RustFormat** = `"egui"` | `"iced"`
Experimental
The Rust GUI framework to target.
---
---
url: /api/ai/pantoken-ai/src/type-aliases/ScaffoldPlatform.md
---
[pantoken-root](../../../../index.md) / [ai/pantoken-ai/src](../index.md) / ScaffoldPlatform
# Type Alias: ScaffoldPlatform
> **ScaffoldPlatform** = keyof *typeof* `SCAFFOLDS`
Alpha
A platform pantoken can scaffold a starter project for.
---
---
url: /api/formats/css/src/type-aliases/Scheme.md
---
[pantoken-root](../../../../index.md) / [formats/css/src](../index.md) / Scheme
# Type Alias: Scheme
> **Scheme** = `"light"` | `"dark"`
Beta
A color scheme a scope can be pinned to.
---
---
url: /api/formats/scope/src/type-aliases/Scheme.md
---
[pantoken-root](../../../../index.md) / [formats/scope/src](../index.md) / Scheme
# Type Alias: Scheme
> **Scheme** = `"light"` | `"dark"`
Beta
A color scheme a scope can be pinned to.
---
---
url: /api/packages/utils/src/type-aliases/Scheme.md
---
[pantoken-root](../../../../index.md) / [packages/utils/src](../index.md) / Scheme
# Type Alias: Scheme
> **Scheme** = `"light"` | `"dark"`
Beta
A color scheme a scope can be pinned to.
---
---
url: /api/plugins/pantoken/simple-icons/src/type-aliases/SimpleIconsRegistry.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/simple-icons/src](../index.md) / SimpleIconsRegistry
# Type Alias: SimpleIconsRegistry
> **SimpleIconsRegistry** = `Record`<`string`, `unknown`>
Beta
A Simple Icons registry: the module's named `si*` exports, or any compatible map.
---
---
url: /api/packages/plugin-kit/src/type-aliases/Stage.md
---
[pantoken-root](../../../../index.md) / [packages/plugin-kit/src](../index.md) / Stage
# Type Alias: Stage
> **Stage** = `"tokens"` | `"icons"` | `"css"` | `"rehype"` | `"native"`
Beta
The plugin hook stages, recorded as capabilities.
---
---
url: /api/renderers/storybook/src/type-aliases/StorybookTheme.md
---
[pantoken-root](../../../../index.md) / [renderers/storybook/src](../index.md) / StorybookTheme
# Type Alias: StorybookTheme
> **StorybookTheme** = `object` & `Record`<`string`, `string`>
Experimental
A Storybook theme object (a subset of `ThemeVars`).
## Type Declaration
### base
> **base**: [`Mode`](../../../../packages/core/src/type-aliases/Mode.md)
---
---
url: /api/renderers/css-in-js/src/type-aliases/StyledTheme.md
---
[pantoken-root](../../../../index.md) / [renderers/css-in-js/src](../index.md) / StyledTheme
# Type Alias: StyledTheme
> **StyledTheme** = `Record`<`string`, `string`>
Experimental
A CSS-in-JS theme object: camelCased token key → value.
---
---
url: /api/packages/core/src/type-aliases/Theme.md
---
[pantoken-root](../../../../index.md) / [packages/core/src](../index.md) / Theme
# Type Alias: Theme
> **Theme** = `"rebrand"` | `"canvas"` | `"canvasHighContrast"`
Beta
A colour theme available in `@instructure/instructure-design-tokens`.
---
---
url: /api/packages/model/src/type-aliases/Theme.md
---
[pantoken-root](../../../../index.md) / [packages/model/src](../index.md) / Theme
# Type Alias: Theme
> **Theme** = `"rebrand"` | `"canvas"` | `"canvasHighContrast"`
Beta
A colour theme available in `@instructure/instructure-design-tokens`.
---
---
url: /api/plugins/postcss/theme-custom-media/src/type-aliases/Theme.md
---
[pantoken-root](../../../../../index.md) / [plugins/postcss/theme-custom-media/src](../index.md) / Theme
# Type Alias: Theme
> **Theme** = `"rebrand"` | `"canvas"` | `"canvasHighContrast"`
Beta
A theme the plugin can target when emitting concrete CSS.
---
---
url: /api/platforms/canvas-theme-editor/src/type-aliases/ThemeMode.md
---
[pantoken-root](../../../../index.md) / [platforms/canvas-theme-editor/src](../index.md) / ThemeMode
# Type Alias: ThemeMode
> **ThemeMode** = `"adaptive"` | `"light"`
Alpha
Rebrand token mode — ignored for the `canvas`/`canvasHighContrast` variants.
---
---
url: /api/platforms/canvas-theme-editor/src/type-aliases/ThemeVariant.md
---
[pantoken-root](../../../../index.md) / [platforms/canvas-theme-editor/src](../index.md) / ThemeVariant
# Type Alias: ThemeVariant
> **ThemeVariant** = `"rebrand"` | `"canvas"` | `"canvasHighContrast"`
Alpha
A pantoken token theme variant.
---
---
url: /api/packages/model/src/type-aliases/UpstreamRef.md
---
[pantoken-root](../../../../index.md) / [packages/model/src](../index.md) / UpstreamRef
# Type Alias: UpstreamRef
> **UpstreamRef** = `string`
Beta
An upstream reference in `@` form, e.g. `"ui@11.7.4"` or `"design-tokens@v1.5.0"`.
---
---
url: /api/packages/utils/src.md
---
[pantoken-root](../../../index.md) / utils
# utils
Beta
`@pantoken/utils` — shared, upstream-free helpers used across the pantoken packages: the token
reference resolver (with `light-dark()` handling), the two token regexes (typed via `arkregex`),
kebab→camel case, hex-colour parsing, SVG sanitization, the pantoken spacing scale, reference-drift
validation, and the generic token→utility-class emitters that both `@pantoken/components`
(semantic tier) and `@pantoken/plugin-primitives` (raw-palette tier) build on. Depends only on
`@pantoken/model` (types) + `arkregex`, so any package can use it without pulling the GitHub-only
upstream.
The css-tree-backed token syntax validator lives at the separate `@pantoken/utils/token-syntax`
entry, not this barrel — `css-tree` bundles a runtime `createRequire()` JSON load that breaks when
pulled into a browser/SSR bundle, and this barrel is imported by browser-facing packages (e.g.
`@pantoken/components`) for the Node-free helpers above.
A pure barrel — every implementation lives in its own discrete module; add new helpers there and
re-export them here, don't grow this file.
## Interfaces
* [Rgba](interfaces/Rgba.md)
* [ResolveOptions](interfaces/ResolveOptions.md)
* [SpacingStep](interfaces/SpacingStep.md)
* [UtilityOptions](interfaces/UtilityOptions.md)
* [ColorUtilityNames](interfaces/ColorUtilityNames.md)
* [TokenUtilityGroup](interfaces/TokenUtilityGroup.md)
## Type Aliases
* [Mode](type-aliases/Mode.md)
* [Scheme](type-aliases/Scheme.md)
* [ColorUtilityEntry](type-aliases/ColorUtilityEntry.md)
## Variables
* [ELEVATION_NAMES](variables/ELEVATION_NAMES.md)
* [FOCUSABLE_SELECTOR](variables/FOCUSABLE_SELECTOR.md)
* [VAR_RE](variables/VAR_RE.md)
* [LIGHT_DARK_RE](variables/LIGHT_DARK_RE.md)
* [THEME_ATTR](variables/THEME_ATTR.md)
* [SCHEME_ATTR](variables/SCHEME_ATTR.md)
* [COLOR_ATTR](variables/COLOR_ATTR.md)
* [BOUNDARY_ATTR](variables/BOUNDARY_ATTR.md)
* [INSTANCE_ATTR](variables/INSTANCE_ATTR.md)
* [SCOPE_ATTRS](variables/SCOPE_ATTRS.md)
* [SCOPE_LAYERS](variables/SCOPE_LAYERS.md)
* [BOUNDARY_CLASS](variables/BOUNDARY_CLASS.md)
* [SPACING_STEPS](variables/SPACING_STEPS.md)
* [SPACING_AUTO_STEP](variables/SPACING_AUTO_STEP.md)
## Functions
* [camelCase](functions/camelCase.md)
* [parseHexColor](functions/parseHexColor.md)
* [elevationDeclarations](functions/elevationDeclarations.md)
* [focusOutlineDeclarations](functions/focusOutlineDeclarations.md)
* [focusOutlineRules](functions/focusOutlineRules.md)
* [extractInstuiRefs](functions/extractInstuiRefs.md)
* [tokenNames](functions/tokenNames.md)
* [unknownReferences](functions/unknownReferences.md)
* [danglingReferences](functions/danglingReferences.md)
* [makeResolver](functions/makeResolver.md)
* [resolveTokens](functions/resolveTokens.md)
* [isScheme](functions/isScheme.md)
* [themeClass](functions/themeClass.md)
* [schemeClass](functions/schemeClass.md)
* [colorClass](functions/colorClass.md)
* [themeScopeSelector](functions/themeScopeSelector.md)
* [schemeScopeSelector](functions/schemeScopeSelector.md)
* [colorScopeSelector](functions/colorScopeSelector.md)
* [themeScopeSelectors](functions/themeScopeSelectors.md)
* [schemeScopeSelectors](functions/schemeScopeSelectors.md)
* [colorScopeSelectors](functions/colorScopeSelectors.md)
* [sanitizeSvg](functions/sanitizeSvg.md)
* [globalModifierSelector](functions/globalModifierSelector.md)
* [colorUtilitiesCss](functions/colorUtilitiesCss.md)
* [tokenUtilitiesCss](functions/tokenUtilitiesCss.md)
---
---
url: /api/platforms/vanilla/src.md
---
[pantoken-root](../../../index.md) / vanilla
# vanilla
## Compatibility
Target: Vanilla Forums. Host compatibility has not yet been verified.
[Full compatibility matrix](../../../../compatibility)
Experimental
`@pantoken/vanilla` — Instructure design tokens as a Vanilla Forums Foundation `variables.json`.
[toVanillaVariables](functions/toVanillaVariables.md) converts any IR; [variables](variables/variables.md) is the ready-made `rebrand` object.
Push it to a theme with the Vanilla API: `PUT /themes/{themeID}/assets/variables.json`.
## Interfaces
* [ToVanillaOptions](interfaces/ToVanillaOptions.md)
## Type Aliases
* [Mode](type-aliases/Mode.md)
## Variables
* [variables](variables/variables.md)
* [VANILLA_TO_INSTUI](variables/VANILLA_TO_INSTUI.md)
## Functions
* [toVanillaVariables](functions/toVanillaVariables.md)
## References
### default
Renames and re-exports [variables](variables/variables.md)
---
---
url: /api/renderers/pendo/src/variables/addImportant.md
---
[pantoken-root](../../../../index.md) / [renderers/pendo/src](../index.md) / addImportant
# Variable: addImportant
> `const` **addImportant**: {(): [`Plugin`](https://postcss.org/api/#plugin); `postcss`: `true`; }
Beta
Create the add-`!important` plugin.
## Type Declaration
## Returns
[`Plugin`](https://postcss.org/api/#plugin)
### postcss
> **postcss**: `true`
Required PostCSS plugin marker.
## Example
```ts
import postcss from "postcss";
import { addImportant } from "@pantoken/pendo";
const { css } = postcss([addImportant()]).process(".x{color:red}", { from: undefined });
// ".x{color:red !important}"
```
---
---
url: /api/renderers/pendo/src/variables/addScope.md
---
[pantoken-root](../../../../index.md) / [renderers/pendo/src](../index.md) / addScope
# Variable: addScope
> `const` **addScope**: {(`options?`): [`Plugin`](https://postcss.org/api/#plugin); `postcss`: `true`; }
Beta
Create the `@scope` wrapping plugin.
## Type Declaration
## Parameters
### options?
[`AddScopeOptions`](../interfaces/AddScopeOptions.md)
## Returns
[`Plugin`](https://postcss.org/api/#plugin)
### postcss
> **postcss**: `true`
Required PostCSS plugin marker.
## Example
```ts
import postcss from "postcss";
import { addScope } from "@pantoken/pendo";
const { css } = postcss([addScope({ selector: "._pendo-step-container" })])
.process(".x{color:red}", { from: undefined });
// "@scope ([class*=\"instui\"]._pendo-step-container) { .x{color:red} }"
```
---
---
url: /api/ai/pantoken-ai/src/variables/AGENT_TOOLS.md
---
[pantoken-root](../../../../index.md) / [ai/pantoken-ai/src](../index.md) / AGENT_TOOLS
# Variable: AGENT_TOOLS
> `const` **AGENT_TOOLS**: readonly [`AgentTool`](../type-aliases/AgentTool.md)\[]
Alpha
Every installable tool key.
---
---
url: /api/ai/pantoken-ai/src/variables/AGENTS_MD.md
---
[pantoken-root](../../../../index.md) / [ai/pantoken-ai/src](../index.md) / AGENTS_MD
# Variable: AGENTS_MD
> `const` **AGENTS_MD**: `string` = `ASSETS.agents`
Alpha
The `AGENTS.md` content (consumer usage guide).
## Example
**Serve the guide from an app route**
```ts
import { AGENTS_MD } from "@pantoken/ai";
export function GET() {
return new Response(AGENTS_MD, { headers: { "Content-Type": "text/markdown" } });
}
```
---
---
url: /api/formats/components/src/variables/aiGradientCss.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / aiGradientCss
# Variable: aiGradientCss
> `const` **aiGradientCss**: `Definition`\[`"css"`] = `aiGradient.css`
Beta
The AI gradient utility as a standalone, header-wrapped stylesheet.
---
---
url: /api/renderers/web-components/src/variables/alert.md
---
[pantoken-root](../../../../index.md) / [renderers/web-components/src](../index.md) / alert
# Variable: alert
> `const` **alert**: [`ElementDefinition`](../interfaces/ElementDefinition.md)
Alpha
`` — an inline status message with `role="alert"`. The `variant` attribute maps to the
`-color-` modifier (`info`, `success`, `warning`, `danger`). Alerts are elevated by default;
set `has-shadow="false"` to flatten one (→ `-without-shadow`, mirroring InstUI's `hasShadow={false}`).
The `timeout` attribute (milliseconds) auto-dismisses the alert after that delay — it fades out,
removes itself from the DOM, and fires a cancelable bubbling `dismiss` event (call `preventDefault()`
on it to keep the alert mounted). The fade states use `@pantoken/components`' `transition` utility;
load its stylesheet when using timeout dismissal. Slotted content is the message body.
## Example
```html
Your changes were saved.
A flat, inline notice.
```
---
---
url: /api/formats/components/src/variables/alertCss.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / alertCss
# Variable: alertCss
> `const` **alertCss**: `Definition`\[`"css"`] = `alert.css`
Beta
Standalone `alert` stylesheet — the prefixed CSS for the status message, ready to ship as a `.css` file.
---
---
url: /api/renderers/web-components/src/variables/ar.md
---
[pantoken-root](../../../../index.md) / [renderers/web-components/src](../index.md) / ar
# Variable: ar
> `const` **ar**: [`LocaleBundle`](../interfaces/LocaleBundle.md)
Alpha
Arabic (العربية) locale bundle.
---
---
url: /api/renderers/web-components/src/variables/avatar.md
---
[pantoken-root](../../../../index.md) / [renderers/web-components/src](../index.md) / avatar
# Variable: avatar
> `const` **avatar**: [`ElementDefinition`](../interfaces/ElementDefinition.md)
Alpha
`` — a circular (or rectangular) avatar. `variant` maps to `-color-`,
`size` to `-size-`, and `shape="rectangle"` to `-shape-rectangle`; slotted content is the
initials, or an ` ` (use an absolute/CDN `src`) to show a photo.
## Example
```html
JS
AB
```
---
---
url: /api/formats/components/src/variables/avatarCss.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / avatarCss
# Variable: avatarCss
> `const` **avatarCss**: `Definition`\[`"css"`] = `avatar.css`
Beta
Standalone `avatar` stylesheet — the prefixed CSS for the avatar, ready to ship as a `.css` file.
---
---
url: /api/renderers/web-components/src/variables/badge.md
---
[pantoken-root](../../../../index.md) / [renderers/web-components/src](../index.md) / badge
# Variable: badge
> `const` **badge**: [`ElementDefinition`](../interfaces/ElementDefinition.md)
Alpha
`` — a small count/status badge. The `variant` attribute maps to the
`-color-` modifier; slotted content is the count or label.
## Example
```html
9
```
---
---
url: /api/formats/components/src/variables/badgeCss.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / badgeCss
# Variable: badgeCss
> `const` **badgeCss**: `Definition`\[`"css"`] = `badge.css`
Beta
Standalone `badge` stylesheet — the prefixed CSS for the count-and-status badge, ready to ship as a `.css` file.
---
---
url: /api/formats/components/src/variables/billboardCss.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / billboardCss
# Variable: billboardCss
> `const` **billboardCss**: `Definition`\[`"css"`] = `billboard.css`
Beta
Standalone `billboard` stylesheet — the prefixed CSS for the empty-state block, ready to ship as a `.css` file.
---
---
url: /api/renderers/bootstrap/src/variables/BOOTSTRAP_TO_INSTUI.md
---
[pantoken-root](../../../../index.md) / [renderers/bootstrap/src](../index.md) / BOOTSTRAP_TO_INSTUI
# Variable: BOOTSTRAP_TO_INSTUI
> `const` **BOOTSTRAP_TO_INSTUI**: `Readonly`<`Record`<`string`, `string`>>
Experimental
Bootstrap 5 CSS variable → the Instructure token it resolves to.
---
---
url: /api/renderers/bootstrap/src/variables/bootstrapCss.md
---
[pantoken-root](../../../../index.md) / [renderers/bootstrap/src](../index.md) / bootstrapCss
# Variable: bootstrapCss
> `const` **bootstrapCss**: `string`
Experimental
The ready-made bridge stylesheet.
---
---
url: /api/formats/css/src/variables/BOUNDARY_ATTR.md
---
[pantoken-root](../../../../index.md) / [formats/css/src](../index.md) / BOUNDARY_ATTR
# Variable: BOUNDARY_ATTR
> `const` **BOUNDARY_ATTR**: `"data-pantoken-boundary"` = `"data-pantoken-boundary"`
Beta
Attribute marking a scope that ancestor resolution must not cross.
---
---
url: /api/packages/utils/src/variables/BOUNDARY_ATTR.md
---
[pantoken-root](../../../../index.md) / [packages/utils/src](../index.md) / BOUNDARY_ATTR
# Variable: BOUNDARY_ATTR
> `const` **BOUNDARY_ATTR**: `"data-pantoken-boundary"` = `"data-pantoken-boundary"`
Beta
Attribute marking a scope that ancestor resolution must not cross.
---
---
url: /api/formats/css/src/variables/BOUNDARY_CLASS.md
---
[pantoken-root](../../../../index.md) / [formats/css/src](../index.md) / BOUNDARY_CLASS
# Variable: BOUNDARY_CLASS
> `const` **BOUNDARY_CLASS**: `"--pantoken-boundary"` = `"--pantoken-boundary"`
Beta
Class equivalent of `data-pantoken-boundary`.
---
---
url: /api/packages/utils/src/variables/BOUNDARY_CLASS.md
---
[pantoken-root](../../../../index.md) / [packages/utils/src](../index.md) / BOUNDARY_CLASS
# Variable: BOUNDARY_CLASS
> `const` **BOUNDARY_CLASS**: `"--pantoken-boundary"` = `"--pantoken-boundary"`
Beta
Class equivalent of `data-pantoken-boundary`.
---
---
url: /api/formats/components/src/variables/breadcrumbCss.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / breadcrumbCss
# Variable: breadcrumbCss
> `const` **breadcrumbCss**: `Definition`\[`"css"`] = `breadcrumb.css`
Beta
Standalone `breadcrumb` stylesheet — the prefixed CSS for the breadcrumb trail, ready to ship as a `.css` file.
---
---
url: /api/formats/components/src/variables/breadcrumbLinkCss.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / breadcrumbLinkCss
# Variable: breadcrumbLinkCss
> `const` **breadcrumbLinkCss**: `Definition`\[`"css"`] = `breadcrumbLink.css`
Beta
Standalone `breadcrumb.link` stylesheet.
---
---
url: /api/renderers/web-components/src/variables/button.md
---
[pantoken-root](../../../../index.md) / [renderers/web-components/src](../index.md) / button
# Variable: button
> `const` **button**: [`ElementDefinition`](../interfaces/ElementDefinition.md)
Alpha
`` — a token-styled ``. The `variant` attribute maps to the `-color-`
modifier (`secondary`, `tertiary`, `success`, `danger`, `ai`, …); `margin` adds spacing around the
host (InstUI keywords like `small` / `medium large`); slotted content is the label.
It is also a native invoker: `popovertarget` (with optional `popovertargetaction`) toggles any
light-DOM `[popover]` such as ``, ``, or ``, and
`command`/`commandfor` drives the command-based components (`` with `--show`/`--close`,
etc.). The id is forwarded to the inner button via the invoker IDL, so it resolves across the shadow
boundary and may point forward to an element declared later in the document.
## Example
```html
Save changes
Delete
Details
More about this item.
```
---
---
url: /api/formats/components/src/variables/buttonCss.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / buttonCss
# Variable: buttonCss
> `const` **buttonCss**: `Definition`\[`"css"`] = `button.css`
Beta
Standalone `button` stylesheet — the prefixed CSS for the action button, ready to ship as a `.css` file.
---
---
url: /api/formats/components/src/variables/bylineCss.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / bylineCss
# Variable: bylineCss
> `const` **bylineCss**: `Definition`\[`"css"`] = `byline.css`
Beta
Standalone `byline` stylesheet — the prefixed CSS for the media object, ready to ship as a `.css` file.
---
---
url: /api/renderers/web-components/src/variables/ca.md
---
[pantoken-root](../../../../index.md) / [renderers/web-components/src](../index.md) / ca
# Variable: ca
> `const` **ca**: [`LocaleBundle`](../interfaces/LocaleBundle.md)
Alpha
Catalan (Catalá) locale bundle.
---
---
url: /api/renderers/web-components/src/variables/calendar.md
---
[pantoken-root](../../../../index.md) / [renderers/web-components/src](../index.md) / calendar
# Variable: calendar
> `const` **calendar**: [`ElementDefinition`](../interfaces/ElementDefinition.md)
Alpha
`` — an interactive month grid. `value` (`yyyy-mm-dd`) is the selected day and
`view` (`yyyy-mm-dd`, optional) the visible month. The prev/next chevrons and every day are
``s driving the Invoker Commands API (`--calendar-prev`, `--calendar-next`,
`--calendar-select`) at the grid; selecting a day updates `value`/`view` and dispatches a composed,
bubbling `change` event (`detail.value` is the ISO date). Renders its own grid (no slot), so it
works standalone or nested inside a date picker.
## Example
```html
```
---
---
url: /api/formats/components/src/variables/calendarCss.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / calendarCss
# Variable: calendarCss
> `const` **calendarCss**: `Definition`\[`"css"`] = `calendar.css`
Beta
Standalone `calendar` stylesheet — the prefixed CSS for the month grid, ready to ship as a `.css` file.
---
---
url: /api/formats/components/src/variables/calendarDayCss.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / calendarDayCss
# Variable: calendarDayCss
> `const` **calendarDayCss**: `Definition`\[`"css"`] = `calendarDay.css`
Beta
Standalone `calendar.day` stylesheet.
---
---
url: /api/formats/tokens/src/variables/canvasHighContrastTokens.md
---
[pantoken-root](../../../../index.md) / [formats/tokens/src](../index.md) / canvasHighContrastTokens
# Variable: canvasHighContrastTokens
> `const` **canvasHighContrastTokens**: [`Token`](../../../../packages/core/src/interfaces/Token.md)\[]
Beta
The `canvasHighContrast` theme IR.
## Example
```ts
import { canvasHighContrastTokens } from "@pantoken/tokens";
import { toCss } from "@pantoken/css";
const stylesheet = toCss(canvasHighContrastTokens);
```
---
---
url: /api/formats/tokens/src/variables/canvasTokens.md
---
[pantoken-root](../../../../index.md) / [formats/tokens/src](../index.md) / canvasTokens
# Variable: canvasTokens
> `const` **canvasTokens**: [`Token`](../../../../packages/core/src/interfaces/Token.md)\[]
Beta
The `canvas` theme IR.
## Example
```ts
import { canvasTokens } from "@pantoken/tokens";
import { toCss } from "@pantoken/css";
const stylesheet = toCss(canvasTokens);
```
---
---
url: /api/formats/components/src/variables/cardCss.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / cardCss
# Variable: cardCss
> `const` **cardCss**: `Definition`\[`"css"`] = `card.css`
Beta
Standalone Card stylesheet with support for a custom class prefix.
---
---
url: /api/platforms/canvas-theme-editor/src/variables/CDN_PROVIDERS.md
---
[pantoken-root](../../../../index.md) / [platforms/canvas-theme-editor/src](../index.md) / CDN_PROVIDERS
# Variable: CDN_PROVIDERS
> `const` **CDN_PROVIDERS**: `Readonly`<`Record`<`string`, [`CdnProvider`](../interfaces/CdnProvider.md)>>
Alpha
Providers available out of the box, keyed by [CdnProvider.id](../interfaces/CdnProvider.md#id).
---
---
url: /api/formats/components/src/variables/checkboxCss.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / checkboxCss
# Variable: checkboxCss
> `const` **checkboxCss**: `Definition`\[`"css"`] = `checkbox.css`
Beta
Standalone `checkbox` stylesheet — the prefixed CSS for the checkbox and switch, ready to ship as a `.css` file.
---
---
url: /api/formats/components/src/variables/closeButtonCss.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / closeButtonCss
# Variable: closeButtonCss
> `const` **closeButtonCss**: `Definition`\[`"css"`] = `closeButton.css`
Beta
Standalone `closeButton` stylesheet — the prefixed CSS for the close button, ready to ship as a `.css` file.
---
---
url: /api/formats/css/src/variables/COLOR_ATTR.md
---
[pantoken-root](../../../../index.md) / [formats/css/src](../index.md) / COLOR_ATTR
# Variable: COLOR_ATTR
> `const` **COLOR_ATTR**: `"data-pantoken-color"` = `"data-pantoken-color"`
Beta
Attribute that selects a custom brand color.
---
---
url: /api/packages/utils/src/variables/COLOR_ATTR.md
---
[pantoken-root](../../../../index.md) / [packages/utils/src](../index.md) / COLOR_ATTR
# Variable: COLOR_ATTR
> `const` **COLOR_ATTR**: `"data-pantoken-color"` = `"data-pantoken-color"`
Beta
Attribute that selects a custom brand color.
---
---
url: /api/plugins/pantoken/custom-theme-colors/src/variables/COLOR_KEYS.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/custom-theme-colors/src](../index.md) / COLOR_KEYS
# Variable: COLOR_KEYS
> `const` **COLOR_KEYS**: readonly \[`"navy"`, `"blue"`, `"green"`, `"red"`, `"orange"`, `"grey"`, `"plum"`, `"violet"`, `"stone"`, `"sky"`, `"honey"`, `"sea"`, `"aurora"`]
Beta
The 13 available color namespaces for site theme color selection.
---
---
url: /api/formats/css/src/variables/colorClass.md
---
[pantoken-root](../../../../index.md) / [formats/css/src](../index.md) / colorClass
# Variable: colorClass
> `const` **colorClass**: (`color`) => `string`
Beta
Class equivalent of `data-pantoken-color`.
## Parameters
### color
`string`
## Returns
`string`
---
---
url: /api/renderers/pendo/src/variables/COMPONENTS.md
---
[pantoken-root](../../../../index.md) / [renderers/pendo/src](../index.md) / COMPONENTS
# Variable: COMPONENTS
> `const` **COMPONENTS**: readonly `ComponentLayer`\[]
Beta
The component CSS in cascade order (the `tokens` and `vars` layers are handled separately).
---
---
url: /api/renderers/tinymce/src/variables/CONTENT_CLASSES_PLUGIN_NAME.md
---
[pantoken-root](../../../../index.md) / [renderers/tinymce/src](../index.md) / CONTENT_CLASSES_PLUGIN_NAME
# Variable: CONTENT_CLASSES_PLUGIN_NAME
> `const` **CONTENT_CLASSES_PLUGIN_NAME**: `"pantoken_content_classes"` = `"pantoken_content_classes"`
Plugin name to pass in TinyMCE's `plugins` option.
---
---
url: /api/renderers/web-components/src/variables/contextView.md
---
[pantoken-root](../../../../index.md) / [renderers/web-components/src](../index.md) / contextView
# Variable: contextView
> `const` **contextView**: [`ElementDefinition`](../interfaces/ElementDefinition.md)
Alpha
`` — a callout surface with a caret. The host itself is a native `[popover]`
(top layer + light-dismiss), so a light-DOM `popovertarget`/`command` button can toggle it by id.
Position it near its trigger with CSS anchor positioning where supported; otherwise it centres in
the top layer. Content goes in the default slot.
## Example
```html
Details
More about this item.
```
---
---
url: /api/formats/components/src/variables/contextViewCss.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / contextViewCss
# Variable: contextViewCss
> `const` **contextViewCss**: `Definition`\[`"css"`] = `contextView.css`
Beta
Standalone `contextView` stylesheet — the prefixed CSS for the caret callout, ready to ship as a `.css` file.
---
---
url: /api/formats/css/src/variables/css.md
---
[pantoken-root](../../../../index.md) / [formats/css/src](../index.md) / css
# Variable: css
> `const` **css**: `string`
Beta
The ready-made `rebrand` stylesheet string (typed: concrete tokens as `@property` registrations).
## Example
```ts
import { css } from "@pantoken/css";
document.head.insertAdjacentHTML("beforeend", ``);
```
---
---
url: /api/formats/components/src/variables/cursorUtilitiesCss.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / cursorUtilitiesCss
# Variable: cursorUtilitiesCss
> `const` **cursorUtilitiesCss**: `Definition`\[`"css"`] = `cursor.css`
Beta
The cursor utility as a standalone, header-wrapped stylesheet.
---
---
url: /api/plugins/pantoken/custom-theme-colors/src/variables/CUSTOM_COLOR_KEY.md
---
[pantoken-root](../../../../../index.md) / [plugins/pantoken/custom-theme-colors/src](../index.md) / CUSTOM_COLOR_KEY
# Variable: CUSTOM_COLOR_KEY
> `const` **CUSTOM_COLOR_KEY**: `"custom"` = `"custom"`
Beta
The color namespace whose scale is derived from an arbitrary hex rather than shipped.
---
---
url: /api/formats/icons/src/variables/customIcons.md
---
[pantoken-root](../../../../index.md) / [formats/icons/src](../index.md) / customIcons
# Variable: customIcons
> `const` **customIcons**: [`PantokenIcon`](../interfaces/PantokenIcon.md)\[]
Beta
Every Instructure-authored custom icon.
---
---
url: /api/renderers/web-components/src/variables/cy.md
---
[pantoken-root](../../../../index.md) / [renderers/web-components/src](../index.md) / cy
# Variable: cy
> `const` **cy**: [`LocaleBundle`](../interfaces/LocaleBundle.md)
Alpha
Welsh (Cymraeg) locale bundle.
---
---
url: /api/renderers/web-components/src/variables/da.md
---
[pantoken-root](../../../../index.md) / [renderers/web-components/src](../index.md) / da
# Variable: da
> `const` **da**: [`LocaleBundle`](../interfaces/LocaleBundle.md)
Alpha
Danish (Dansk) locale bundle.
---
---
url: /api/platforms/email/src/variables/dark.md
---
[pantoken-root](../../../../index.md) / [platforms/email/src](../index.md) / dark
# Variable: dark
> `const` **dark**: `Record`<`string`, `string`>
Experimental
Concrete `dark`-mode token values.
## Example
```ts
import { dark } from "@pantoken/email";
const bg = dark.colorBackgroundBrand;
```
---
---
url: /api/renderers/react-native/src/variables/dark.md
---
[pantoken-root](../../../../index.md) / [renderers/react-native/src](../index.md) / dark
# Variable: dark
> `const` **dark**: `Record`<`string`, [`RNTokenValue`](../type-aliases/RNTokenValue.md)>
Experimental
The `dark`-mode token object.
---
---
url: /api/renderers/mui/src/variables/darkTheme.md
---
[pantoken-root](../../../../index.md) / [renderers/mui/src](../index.md) / darkTheme
# Variable: darkTheme
> `const` **darkTheme**: [`PantokenThemeOptions`](../interfaces/PantokenThemeOptions.md)
Experimental
Ready-made `rebrand` MUI options in dark mode.
---
---
url: /api/renderers/web-components/src/variables/dateInput.md
---
[pantoken-root](../../../../index.md) / [renderers/web-components/src](../index.md) / dateInput
# Variable: dateInput
> `const` **dateInput**: [`ElementDefinition`](../interfaces/ElementDefinition.md)
Alpha
`` — a text field plus a calendar dropdown. The trigger toggles a `[popover]`
through the built-in `toggle-popover` Invoker Command (a click fallback covers browsers without the
API); picking a day in the nested `` fills the field (ISO `yyyy-mm-dd`), closes the
popover, and emits a composed, bubbling `change` (`detail.value`). Typing a valid `yyyy-mm-dd` (or
clearing it) and committing on the input's `change` works too. `value` is the ISO date, `label` the
accessible name (default `Date`), and `placeholder` the hint (default `yyyy-mm-dd`).
## Example
```html
```
---
---
url: /api/renderers/web-components/src/variables/dateTimeInput.md
---
[pantoken-root](../../../../index.md) / [renderers/web-components/src](../index.md) / dateTimeInput
# Variable: dateTimeInput
> `const` **dateTimeInput**: [`ElementDefinition`](../interfaces/ElementDefinition.md)
Alpha
`` — a nested `` plus a native time field. A change to
either recomputes a combined `value` (`yyyy-mm-ddThh:mm`, or just the date when no time) and emits
a composed, bubbling `change` (`detail.value`). Setting `value` splits it back across the two
fields.
## Example
```html
```
---
---
url: /api/renderers/web-components/src/variables/de.md
---
[pantoken-root](../../../../index.md) / [renderers/web-components/src](../index.md) / de
# Variable: de
> `const` **de**: [`LocaleBundle`](../interfaces/LocaleBundle.md)
Alpha
German (Deutsch) locale bundle.
---
---
url: /api/platforms/canvas-theme-editor/src/variables/DEFAULT_CDN_PROVIDER_ID.md
---
[pantoken-root](../../../../index.md) / [platforms/canvas-theme-editor/src](../index.md) / DEFAULT_CDN_PROVIDER_ID
# Variable: DEFAULT_CDN_PROVIDER_ID
> `const` **DEFAULT_CDN_PROVIDER_ID**: `string`
Alpha
The provider used when none is specified.
---
---
url: /api/renderers/tinymce/src/variables/DEFAULT_ICON_TRIGGER.md
---
[pantoken-root](../../../../index.md) / [renderers/tinymce/src](../index.md) / DEFAULT_ICON_TRIGGER
# Variable: DEFAULT_ICON_TRIGGER
> `const` **DEFAULT_ICON_TRIGGER**: `"::"` = `"::"`
Autocompleter trigger. Two colons rather than one so the stock `emoticons` plugin — which claims
`:` and would otherwise have several thousand icons merged into its results — keeps working.
---
---
url: /api/formats/scope/src/variables/DEFAULT_INSTANCE.md
---
[pantoken-root](../../../../index.md) / [formats/scope/src](../index.md) / DEFAULT_INSTANCE
# Variable: DEFAULT_INSTANCE
> `const` **DEFAULT_INSTANCE**: `"pantoken"` = `"pantoken"`
Beta
The default instance id, used when a scope does not name one.
---
---
url: /api/formats/components/src/variables/DEFAULT_PREFIX.md
---
[pantoken-root](../../../../index.md) / [formats/components/src](../index.md) / DEFAULT_PREFIX
# Variable: DEFAULT_PREFIX
> `const` **DEFAULT_PREFIX**: `"instui"` = `"instui"`
Beta
The default class prefix (`instui` → `.instui-button`).
---
---
url: /api/renderers/web-components/src/variables/DEFAULT_PREFIX.md
---
[pantoken-root](../../../../index.md) / [renderers/web-components/src](../index.md) / DEFAULT_PREFIX
# Variable: DEFAULT_PREFIX
> `const` **DEFAULT_PREFIX**: `"instui"` = `"instui"`
Alpha
The default tag prefix, mirroring the CSS layer — ``, `.instui-button`, etc.
---
---
url: /api/platforms/canvas-theme-editor/src/variables/DEFAULT_THEME_CSS_ASSETS.md
---
[pantoken-root](../../../../index.md) / [platforms/canvas-theme-editor/src](../index.md) / DEFAULT_THEME_CSS_ASSETS
# Variable: DEFAULT_THEME_CSS_ASSETS
> `const` **DEFAULT_THEME_CSS_ASSETS**: readonly [`CdnFile`](../interfaces/CdnFile.md)\[]
Alpha
Component-style sheets, combined into theme.css's first `@import` where the provider allows it.
---
---
url: /api/platforms/canvas-theme-editor/src/variables/DEFAULT_THEME_FONT_ASSETS.md
---
[pantoken-root](../../../../index.md) / [platforms/canvas-theme-editor/src](../index.md) / DEFAULT_THEME_FONT_ASSETS
# Variable: DEFAULT_THEME_FONT_ASSETS
> `const` **DEFAULT_THEME_FONT_ASSETS**: readonly [`CdnFile`](../interfaces/CdnFile.md)\[]
Alpha
Font sheet(s) — always loaded as their own `@import`(s), separate from the component styles.
---
---
url: /api/platforms/canvas-theme-editor/src/variables/DEFAULT_THEME_JS_ASSETS.md
---
[pantoken-root](../../../../index.md) / [platforms/canvas-theme-editor/src](../index.md) / DEFAULT_THEME_JS_ASSETS
# Variable: DEFAULT_THEME_JS_ASSETS
> `const` **DEFAULT_THEME_JS_ASSETS**: readonly [`CdnFile`](../interfaces/CdnFile.md)\[]
Alpha
Script(s) theme.js injects via `