diff --git a/apps/docs/src/App.vue b/apps/docs/src/App.vue index c456d1439..5ebfb74ff 100644 --- a/apps/docs/src/App.vue +++ b/apps/docs/src/App.vue @@ -142,6 +142,7 @@
- // Composables - import { useThemeToggle } from '@/composables/useThemeToggle' - - // Utilities - import { computed } from 'vue' + // Framework + import { GnDotGrid, type GnDotGridProps } from '@paper/genesis' - const { - coverage = 15, - density = 20, - origin = 'bottom left', - } = defineProps<{ - coverage?: number - density?: number - origin?: string - }>() + // Composables + import { useSettings } from '@/composables/useSettings' - const { isDark } = useThemeToggle() + // Docs adapter for the canonical GnDotGrid primitive in @paper/genesis. + // Kept as a thin local component so the docs auto-import keeps resolving + // . The connecting-line intensity defaults to the user's + // "Line intensity" setting (shared with the app-shell grid); the genesis + // primitive itself stays neutral (lines=0). Any usage can override :lines. + const { lines, ...props } = defineProps() - const maskStyle = computed(() => { - const fadeEnd = coverage + 20 - const gradient = `radial-gradient(ellipse at ${origin}, transparent 0%, transparent ${coverage}%, black ${fadeEnd}%)` - return { - maskImage: gradient, - WebkitMaskImage: gradient, - backgroundSize: `${density}px ${density}px`, - } - }) + const settings = useSettings() - - diff --git a/apps/docs/src/components/app/settings/AppSettingsSlider.vue b/apps/docs/src/components/app/settings/AppSettingsSlider.vue new file mode 100644 index 000000000..346e70864 --- /dev/null +++ b/apps/docs/src/components/app/settings/AppSettingsSlider.vue @@ -0,0 +1,82 @@ + + + diff --git a/apps/docs/src/components/app/settings/AppSettingsTheme.vue b/apps/docs/src/components/app/settings/AppSettingsTheme.vue index 06fb89741..9f9def2f9 100644 --- a/apps/docs/src/components/app/settings/AppSettingsTheme.vue +++ b/apps/docs/src/components/app/settings/AppSettingsTheme.vue @@ -126,6 +126,25 @@ label="Dot grid pattern" /> + + + + collapsibleNav: ShallowRef showDotGrid: ShallowRef + dotGridIntensity: ShallowRef showMeshGrid: ShallowRef showMeshTransition: ShallowRef @@ -65,6 +67,7 @@ const DEFAULTS: DocSettings = { showSocialLinks: true, collapsibleNav: true, showDotGrid: true, + dotGridIntensity: 0.85, showMeshGrid: true, showMeshTransition: true, @@ -123,6 +126,7 @@ export function createSettingsContext (): SettingsContext { const showSocialLinks = shallowRef(DEFAULTS.showSocialLinks) const collapsibleNav = shallowRef(DEFAULTS.collapsibleNav) const showDotGrid = shallowRef(DEFAULTS.showDotGrid) + const dotGridIntensity = shallowRef(DEFAULTS.dotGridIntensity) const showMeshGrid = shallowRef(DEFAULTS.showMeshGrid) const showMeshTransition = shallowRef(DEFAULTS.showMeshTransition) @@ -138,13 +142,14 @@ export function createSettingsContext (): SettingsContext { loadSetting(storage, 'showSocialLinks', showSocialLinks) loadSetting(storage, 'collapsibleNav', collapsibleNav) loadSetting(storage, 'showDotGrid', showDotGrid) + loadSetting(storage, 'dotGridIntensity', dotGridIntensity) loadSetting(storage, 'showMeshGrid', showMeshGrid) loadSetting(storage, 'showMeshTransition', showMeshTransition) loadSetting(storage, 'showBgGlass', showBgGlass) // Persist on change - const settings = { lineWrap, reduceMotion, packageManager, showInlineApi, showSkillFilter, showThemeToggle, showSocialLinks, collapsibleNav, showDotGrid, showMeshGrid, showMeshTransition, showBgGlass } + const settings = { lineWrap, reduceMotion, packageManager, showInlineApi, showSkillFilter, showThemeToggle, showSocialLinks, collapsibleNav, showDotGrid, dotGridIntensity, showMeshGrid, showMeshTransition, showBgGlass } for (const [key, ref] of Object.entries(settings)) { watch(ref, val => storage.set(key, val)) } @@ -172,6 +177,7 @@ export function createSettingsContext (): SettingsContext { showSocialLinks.value !== DEFAULTS.showSocialLinks || collapsibleNav.value !== DEFAULTS.collapsibleNav || showDotGrid.value !== DEFAULTS.showDotGrid || + dotGridIntensity.value !== DEFAULTS.dotGridIntensity || showMeshGrid.value !== DEFAULTS.showMeshGrid || showMeshTransition.value !== DEFAULTS.showMeshTransition || showBgGlass.value !== DEFAULTS.showBgGlass @@ -213,6 +219,7 @@ export function createSettingsContext (): SettingsContext { showSocialLinks.value = DEFAULTS.showSocialLinks collapsibleNav.value = DEFAULTS.collapsibleNav showDotGrid.value = DEFAULTS.showDotGrid + dotGridIntensity.value = DEFAULTS.dotGridIntensity showMeshGrid.value = DEFAULTS.showMeshGrid showMeshTransition.value = DEFAULTS.showMeshTransition showBgGlass.value = DEFAULTS.showBgGlass @@ -232,6 +239,7 @@ export function createSettingsContext (): SettingsContext { showSocialLinks, collapsibleNav, showDotGrid, + dotGridIntensity, showMeshGrid, showMeshTransition, showBgGlass, diff --git a/packages/genesis/src/components/GnDotGrid/GnDotGrid.vue b/packages/genesis/src/components/GnDotGrid/GnDotGrid.vue new file mode 100644 index 000000000..aeeb28431 --- /dev/null +++ b/packages/genesis/src/components/GnDotGrid/GnDotGrid.vue @@ -0,0 +1,74 @@ + + + + + + + diff --git a/packages/genesis/src/components/GnDotGrid/index.ts b/packages/genesis/src/components/GnDotGrid/index.ts new file mode 100644 index 000000000..72b500ad2 --- /dev/null +++ b/packages/genesis/src/components/GnDotGrid/index.ts @@ -0,0 +1,2 @@ +export type { GnDotGridProps } from './GnDotGrid.vue' +export { default as GnDotGrid } from './GnDotGrid.vue' diff --git a/packages/genesis/src/components/index.ts b/packages/genesis/src/components/index.ts index 05b05803e..adba37c63 100644 --- a/packages/genesis/src/components/index.ts +++ b/packages/genesis/src/components/index.ts @@ -1 +1,2 @@ export * from './GnDocsExample' +export * from './GnDotGrid'