feat: Complete fleet — 94 skills across 10+ domains
Pulled ALL skills from 15 source repositories: - anthropics/skills: 16 (docs, design, MCP, testing) - obra/superpowers: 14 (TDD, debugging, agents, planning) - coreyhaines31/marketingskills: 25 (marketing, CRO, SEO, growth) - better-auth/skills: 5 (auth patterns) - vercel-labs/agent-skills: 5 (React, design, Vercel) - antfu/skills: 16 (Vue, Vite, Vitest, pnpm, Turborepo) - Plus 13 individual skills from various repos Mosaic Stack is not limited to coding — the Orchestrator and subagents serve coding, business, design, marketing, writing, logistics, analysis, and more. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
171
skills/vueuse-functions/references/useColorMode.md
Normal file
171
skills/vueuse-functions/references/useColorMode.md
Normal file
@@ -0,0 +1,171 @@
|
||||
---
|
||||
category: Browser
|
||||
related:
|
||||
- useDark
|
||||
- usePreferredDark
|
||||
- useStorage
|
||||
---
|
||||
|
||||
# useColorMode
|
||||
|
||||
Reactive color mode (dark / light / customs) with auto data persistence.
|
||||
|
||||
## Basic Usage
|
||||
|
||||
```ts
|
||||
import { useColorMode } from '@vueuse/core'
|
||||
|
||||
const mode = useColorMode() // Ref<'dark' | 'light'>
|
||||
```
|
||||
|
||||
By default, it will match with users' browser preference using `usePreferredDark` (a.k.a `auto` mode). When reading the ref, it will by default return the current color mode (`dark`, `light` or your custom modes). The `auto` mode can be included in the returned modes by enabling the `emitAuto` option. When writing to the ref, it will trigger DOM updates and persist the color mode to local storage (or your custom storage). You can pass `auto` to set back to auto mode.
|
||||
|
||||
```ts
|
||||
import { useColorMode } from '@vueuse/core'
|
||||
|
||||
const mode = useColorMode()
|
||||
// ---cut---
|
||||
mode.value // 'dark' | 'light'
|
||||
|
||||
mode.value = 'dark' // change to dark mode and persist
|
||||
|
||||
mode.value = 'auto' // change to auto mode
|
||||
```
|
||||
|
||||
## Config
|
||||
|
||||
```ts
|
||||
import { useColorMode } from '@vueuse/core'
|
||||
|
||||
const mode = useColorMode({
|
||||
attribute: 'theme',
|
||||
modes: {
|
||||
// custom colors
|
||||
dim: 'dim',
|
||||
cafe: 'cafe',
|
||||
},
|
||||
}) // Ref<'dark' | 'light' | 'dim' | 'cafe'>
|
||||
```
|
||||
|
||||
## Advanced Usage
|
||||
|
||||
You can also explicit access to the system preference and storaged user override mode.
|
||||
|
||||
```ts
|
||||
import { useColorMode } from '@vueuse/core'
|
||||
|
||||
const { system, store } = useColorMode()
|
||||
|
||||
system.value // 'dark' | 'light'
|
||||
store.value // 'dark' | 'light' | 'auto'
|
||||
|
||||
const myColorMode = computed(() => store.value === 'auto' ? system.value : store.value)
|
||||
```
|
||||
|
||||
## Component Usage
|
||||
|
||||
```vue
|
||||
<template>
|
||||
<UseColorMode v-slot="color">
|
||||
<button @click="color.mode = color.mode === 'dark' ? 'light' : 'dark'">
|
||||
Mode {{ color.mode }}
|
||||
</button>
|
||||
</UseColorMode>
|
||||
</template>
|
||||
```
|
||||
|
||||
## Type Declarations
|
||||
|
||||
```ts
|
||||
export type BasicColorMode = "light" | "dark"
|
||||
export type BasicColorSchema = BasicColorMode | "auto"
|
||||
export interface UseColorModeOptions<T extends string = BasicColorMode>
|
||||
extends UseStorageOptions<T | BasicColorMode> {
|
||||
/**
|
||||
* CSS Selector for the target element applying to
|
||||
*
|
||||
* @default 'html'
|
||||
*/
|
||||
selector?: string | MaybeElementRef
|
||||
/**
|
||||
* HTML attribute applying the target element
|
||||
*
|
||||
* @default 'class'
|
||||
*/
|
||||
attribute?: string
|
||||
/**
|
||||
* The initial color mode
|
||||
*
|
||||
* @default 'auto'
|
||||
*/
|
||||
initialValue?: MaybeRefOrGetter<T | BasicColorSchema>
|
||||
/**
|
||||
* Prefix when adding value to the attribute
|
||||
*/
|
||||
modes?: Partial<Record<T | BasicColorSchema, string>>
|
||||
/**
|
||||
* A custom handler for handle the updates.
|
||||
* When specified, the default behavior will be overridden.
|
||||
*
|
||||
* @default undefined
|
||||
*/
|
||||
onChanged?: (
|
||||
mode: T | BasicColorMode,
|
||||
defaultHandler: (mode: T | BasicColorMode) => void,
|
||||
) => void
|
||||
/**
|
||||
* Custom storage ref
|
||||
*
|
||||
* When provided, `useStorage` will be skipped
|
||||
*/
|
||||
storageRef?: Ref<T | BasicColorSchema>
|
||||
/**
|
||||
* Key to persist the data into localStorage/sessionStorage.
|
||||
*
|
||||
* Pass `null` to disable persistence
|
||||
*
|
||||
* @default 'vueuse-color-scheme'
|
||||
*/
|
||||
storageKey?: string | null
|
||||
/**
|
||||
* Storage object, can be localStorage or sessionStorage
|
||||
*
|
||||
* @default localStorage
|
||||
*/
|
||||
storage?: StorageLike
|
||||
/**
|
||||
* Emit `auto` mode from state
|
||||
*
|
||||
* When set to `true`, preferred mode won't be translated into `light` or `dark`.
|
||||
* This is useful when the fact that `auto` mode was selected needs to be known.
|
||||
*
|
||||
* @default undefined
|
||||
* @deprecated use `store.value` when `auto` mode needs to be known
|
||||
* @see https://vueuse.org/core/useColorMode/#advanced-usage
|
||||
*/
|
||||
emitAuto?: boolean
|
||||
/**
|
||||
* Disable transition on switch
|
||||
*
|
||||
* @see https://paco.me/writing/disable-theme-transitions
|
||||
* @default true
|
||||
*/
|
||||
disableTransition?: boolean
|
||||
}
|
||||
export type UseColorModeReturn<T extends string = BasicColorMode> = Ref<
|
||||
T | BasicColorSchema
|
||||
> & {
|
||||
store: Ref<T | BasicColorSchema>
|
||||
system: ComputedRef<BasicColorMode>
|
||||
state: ComputedRef<T | BasicColorMode>
|
||||
}
|
||||
/**
|
||||
* Reactive color mode with auto data persistence.
|
||||
*
|
||||
* @see https://vueuse.org/useColorMode
|
||||
* @param options
|
||||
*/
|
||||
export declare function useColorMode<T extends string = BasicColorMode>(
|
||||
options?: UseColorModeOptions<T>,
|
||||
): UseColorModeReturn<T>
|
||||
```
|
||||
Reference in New Issue
Block a user