Types

Full TypeScript type reference for @codecanon/next-presets.

All types are exported directly from @codecanon/next-presets.

import type {
  PresetKeys,
  PresetTuple,
  ColorScheme,
  Theme,
  ThemeProviderProps,
  PresetProviderProps,
} from "@codecanon/next-presets";

PresetKeys

A union of all valid built-in preset IDs, derived from the PRESETS constant.

type PresetKeys =
  | "nuteral"
  | "nuteral-accent"
  | "codecanon"
  | "anew"
  | "red"
  | "rose"
  | "orange"
  | "green"
  | "blue"
  | "yellow"
  | "violet"
  | "modern-minimal"
  | "violet-bloom"
  | "t3-chat"
  | "twitter"
  | "mocha-mousse"
  | "bubblegum"
  | "amethyst-haze"
  | "notebook"
  | "doom-64"
  | "catppuccin"
  | "graphite"
  | "perpetuity"
  | "kodama-grove"
  | "cosmic-night"
  | "tangerine"
  | "quantum-rose"
  | "nature"
  | "bold-tech"
  | "elegant-luxury"
  | "amber-minimal"
  | "supabase"
  | "neo-brutalism"
  | "solar-dusk"
  | "claymorphism"
  | "cyberpunk"
  | "pastel-dreams"
  | "clean-slate"
  | "caffeine"
  | "ocean-breeze"
  | "retro-arcade"
  | "midnight-bloom"
  | "candyland"
  | "northern-lights"
  | "vintage-paper"
  | "sunset-horizon"
  | "starry-night"
  | "claude"
  | "vercel"
  | "darkmatter"
  | "mono"
  | "soft-pop"
  | "sage-garden";

PresetTuple

A single [id, label] pair describing one preset. Used when passing custom entries to PresetPickerContent.

type PresetTuple = readonly [string, string];

ColorScheme

The resolved color mode — never includes "system".

type ColorScheme = "light" | "dark";

Theme

All theme values a user can select, including the "system" option.

type Theme = "light" | "dark" | "system";

ThemeProviderProps

Props accepted by <ThemeProvider>.

type ThemeProviderProps = {
  children: React.ReactNode;
  defaultTheme?: Theme;       // default: "system"
  storageKey?: string;          // default: "theme"
  attribute?: string | string[];
  // + all next-themes ThemeProviderProps
};

PresetProviderProps

Props accepted by <PresetProvider>.

type PresetProviderProps = {
  children: React.ReactNode;
  storageKey?: string;            // default: "preset"
  attributes?: `data-${string}`;  // default: "data-preset"
};

PresetState

Returned by usePreset().

type PresetState = {
  /** The currently active preset ID, or undefined when none is set. */
  preset?: string | undefined;
  /** Switch to any preset by ID — built-in or custom. */
  setPreset: React.Dispatch<React.SetStateAction<string | undefined>>;
  /** Clears the active preset and removes the data-preset attribute. */
  resetPreset: () => void;
};

PresetPickerState

Returned by usePresetPicker().

type PresetPickerState = {
  open: boolean;
  setOpen: React.Dispatch<React.SetStateAction<boolean>>;
  toggleOpen: () => void;
};

PRESETS (constant)

The full preset registry — a readonly array of [id, label] tuples exported from @codecanon/next-presets.

const PRESETS: readonly [PresetKeys, string][];

Example:

import { PRESETS } from "@codecanon/next-presets";

PRESETS[0]; // ["nuteral", "Nuteral"]
PRESETS.find(([id]) => id === "violet-bloom"); // ["violet-bloom", "Violet Bloom"]

On this page