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

প্যাকেজ

থিম

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তথ্য অবস্থার হালকা পটভূমি
codeBgকোড ব্লকের পটভূমি।
codeTextকোড ব্লকে ডিফল্ট টেক্সট রং।
codeBorderকোড ব্লকের সীমানা।
codeGutterলাইন নম্বরের গাটার রং।
codeSelectionBgকোড ব্লকে নির্বাচিত টেক্সটের পটভূমি।
codeCommentকমেন্টের সিনট্যাক্স রং।
codeKeywordকীওয়ার্ডের সিনট্যাক্স রং।
codeStringস্ট্রিংয়ের সিনট্যাক্স রং।
codeNumberসংখ্যার সিনট্যাক্স রং।
codeFunctionফাংশন নামের সিনট্যাক্স রং।
codeTypeটাইপ নামের সিনট্যাক্স রং।
codePunctuationযতিচিহ্নের সিনট্যাক্স রং।

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
--clepit-code-bg
--clepit-code-text
--clepit-code-border
--clepit-code-gutter
--clepit-code-selection-bg
--clepit-code-comment
--clepit-code-keyword
--clepit-code-string
--clepit-code-number
--clepit-code-function
--clepit-code-type
--clepit-code-punctuation
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 সরবরাহ করলে একই অ্যাপ একই পৃষ্ঠায় ভিন্নভাবে থিম করা একাধিক এডিটর পাঠাতে পারে।