ወደ ዋናው ይዘት ዝለል

ጭብጦች

የClepit ጭብጦች በCSS ተለዋዋጮች ይነዳሉ። theme: "auto" | "light" | "dark" ያቀናብሩ ወይም ግልጽ themeOverrides ያስተላልፉ።

theme

TypeScript
// EditorConfig / RendererConfig
theme?: 'auto' | 'light' | 'dark'

የauto ቅድመ-ቅንብር በprefers-color-scheme በኩል የስርዓተ-ክወናውን የቀለም ዘዴ ይከተላል እና ሲቀየር በቀጥታ ይቀያየራል።

TypeScript
import { Editor } from '@clepit/core';

Editor.create({ containerId: 'editor', theme: 'auto' });

ThemeTokens

ሁሉም 22 tokens አማራጭ ናቸው። የተዉት ማንኛውም ነገር ወደ ተመረጠው ቅድመ-ቅንብር ይመለሳል።

ቶከንምን ይቆጣጠራል
bgየአርታኢ/ሪንደረር ዋና የዳራ ቀለም
surfaceሁለተኛ ደረጃ ወለል፦ ትዕዛዝ ፓነሎች፣ ሁነታ ምሪት ላዕላዮቹ
surface2ሦስተኛ ደረጃ ወለል፦ የሚደሰቁ ምናሌ ዳራዎች
textዋና የጽሑፍ ቀለም
textMutedሁለተኛ ደረጃ ጽሑፍ፦ ምልክቶች፣ አናቅጽ
textSubtleደብዛዛ ጽሑፍ፦ ረቂቅ ፍርሃ፣ የቀን ምልክቶች
borderዋና የወለል-ድልድይ ቀለም
borderSubtleደብዛዛ የወለል-ድልድይ፦ መለያ-ያልሆኑ ክፍሎች
primaryዋና ብራንድ ቀለም፦ ቁልፎች፣ ማጣቀሻ ሊንኮች
primaryHoverዋና ቀለም ሲደሰቅ፦ ቁልፍ hover/focus ሁኔታ
primaryBgዋና ቀለም ቀጭን ዳራ፦ ፎከስ ሁነታ ዙሪያ
markerየሃይላይት ምልክት ቀለም፦ ምልክት ባህሪ
selectionBgየጽሑፍ ምርጫ ጀርባ
blockHighlightBgየሚነቃነቅ ብሎክ ጀርባ
successስኬት ሁነታ ጽሑፍ/አዶ ቀለም
successBgስኬት ሁነታ ቀጭን ዳራ፦ ማሳወቂያ ሳጥኖች
warningማስጠንቀቂያ ሁነታ ጽሑፍ/አዶ ቀለም
warningBgማስጠንቀቂያ ሁነታ ቀጭን ዳራ
errorስህተት ሁነታ ጽሑፍ/አዶ ቀለም
errorBgስህተት ሁነታ ቀጭን ዳራ
infoመረጃ ሁነታ ጽሑፍ/አዶ ቀለም
infoBgመረጃ ሁነታ ቀጭን ዳራ

themeOverrides

ማንኛውንም የtokens ንዑስ ስብስብ ይሻሩ። አርታኢው ከመያዣው ጋር በተወሰነ መልኩ እንደ CSS ተለዋዋጮች ያስገባቸዋል።

TypeScript
// themeOverrides accepts separate light and dark token sets.
// Both keys are optional — omit one to use the preset for that mode.
Editor.create({
  containerId: 'editor',
  theme: 'auto',
  themeOverrides: {
    light: {
      primary: '#5b5bff',
      primaryHover: '#4747e6',
      bg: '#ffffff',
      text: '#0a0a0a',
    },
    dark: {
      primary: '#7c7cff',
      primaryHover: '#9494ff',
      bg: '#161b22',
      text: 'rgba(240, 246, 252, 0.92)',
    },
  },
});

ብጁ የCSS ባህሪያት

እያንዳንዱ token ከአርታኢ መያዣው ጋር በተወሰነ --clepit-* ተለዋዋጭ ይዛመዳል። ከራስዎ stylesheet ሊያነቧቸው ወይም ሊያስፋፏቸው ይችላሉ።

CSS
/* Every ThemeToken maps to a --clepit-* CSS variable.
   Variables are scoped to .clepit-editor, .clepit-renderer-content, and body[data-clepit-theme]. */

--clepit-bg
--clepit-surface
--clepit-surface-2
--clepit-text
--clepit-text-muted
--clepit-text-subtle
--clepit-border
--clepit-border-subtle
--clepit-primary
--clepit-primary-hover
--clepit-primary-bg
--clepit-marker
--clepit-selection-bg
--clepit-block-highlight-bg
--clepit-success
--clepit-success-bg
--clepit-warning
--clepit-warning-bg
--clepit-error
--clepit-error-bg
--clepit-info
--clepit-info-bg
CSS
#editor {
  color: var(--clepit-text);
  background: var(--clepit-bg);
  --my-surface: var(--clepit-surface-2);
  border: 1px solid var(--clepit-border);
}

ለብሎክ styles እና classNames

RendererConfig.styles ወደ ኮምፖነንቱ ስር ፈሳሽ ዘዴ-ነፃ CSS ባህሪያት ያስፋፋሉ። RendererConfig.classNames ምንም ጊዜ ፈሳሽ ዘዴ ሳይነካ ተጨማሪ CSS ክፍሎችን ያፈቅዳሉ። ሁለቱ ሊዋሃዱ ይችላሉ።

TypeScript
import { Renderer } from '@clepit/core';
import type { BlockStyles, BlockClassNames } from '@clepit/core';

const styles: BlockStyles = {
  // alert block — keyed by variant
  alert: {
    error: { borderRadius: '8px', padding: '12px 16px' },
    info: { borderRadius: '8px', padding: '12px 16px' },
  },
  // header block — keyed by level
  header: {
    h1: { fontFamily: 'Georgia, serif' },
    h2: { fontFamily: 'Georgia, serif' },
  },
  // paragraph block — flat CSSProperties
  paragraph: { lineHeight: '1.75' },
  // table block — sub-element keys
  table: { cell: { padding: '8px 12px' } },
  // code block — sub-element keys
  code: { container: { borderRadius: '6px' } },
};

const classNames: BlockClassNames = {
  paragraph: 'prose-paragraph',
  header: { h1: 'prose-h1', h2: 'prose-h2' },
  alert: { info: 'alert-info', error: 'alert-error' },
};

Renderer.create({ containerId: 'output', data, styles, classNames });

StyleManager.subscribe

ለሩጫ-ጊዜ የtoken ለውጦች ይመዝገቡ። በዙሪያ ያለውን UI ከአርታኢ ገጽታ መቀያየር ጋር ለማመሳሰል ጠቃሚ ነው።

TypeScript
import { StyleManager } from '@clepit/core';

const unsubscribe = StyleManager.subscribe(theme => {
  // theme is 'light' | 'dark' — sync surrounding UI
  document.documentElement.setAttribute('data-theme', theme);
});

// later — clean up when the component unmounts
unsubscribe();
በእያንዳንዱ mount ላይ themeOverrides ን ማቅረብ ተመሳሳዩ መተግበሪያ በተመሳሳይ ገጽ ላይ በተለያየ ገጽታ ያላቸውን በርካታ አርታኢዎችን እንዲያቀርብ ያስችለዋል።