মূল কন্টেন্টে যান

থিম

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

সমস্ত ২২টি টোকেন ঐচ্ছিক। আপনি যা বাদ দেবেন তা নির্বাচিত প্রিসেটে ফিরে যায়।

টোকেনযা নিয়ন্ত্রণ করে
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

টোকেনের যেকোনো উপসেট ওভাররাইড করুন। এডিটর সেগুলোকে তার কন্টেইনারে স্কোপ করা 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 কাস্টম প্রপার্টি

প্রতিটি টোকেন এডিটর কন্টেইনারে স্কোপ করা একটি --clepit-* ভেরিয়েবলের সাথে ম্যাপ করে। আপনি নিজের স্টাইলশিট থেকে সেগুলো পড়তে বা সম্প্রসারিত করতে পারেন।

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

রানটাইম টোকেন পরিবর্তনে সাবস্ক্রাইব করুন। এডিটর থিম স্যুইচের সাথে আশেপাশের 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 সরবরাহ করলে একই অ্যাপ একই পৃষ্ঠায় ভিন্নভাবে থিম করা একাধিক এডিটর পাঠাতে পারে।