Skip to Content

Tailwind CSS ํ†ตํ•ฉ

Tailwind CSSย ์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํด๋ž˜์Šค๋กœ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜๊ณ , ๋‚ด๋ถ€์— Inkio ์—๋””ํ„ฐ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

์„ค์น˜

pnpm add tailwindcss @inkio/editor @inkio/extension

CSS ์ž„ํฌํŠธ

// Inkio ์Šคํƒ€์ผ โ€” minimal.css ์‚ฌ์šฉ (Tailwind preflight์™€ ์ถฉ๋Œํ•˜์ง€ ์•Š๋Š” minimal ๋ฒ„์ „) import '@inkio/editor/minimal.css'; import '@inkio/extension/style.css';

ํŒ: Tailwind๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” style.css ๋Œ€์‹  minimal.css๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. style.css์—๋Š” ์ž์ฒด preflight๊ฐ€ ํฌํ•จ๋˜์–ด Tailwind์˜ preflight์™€ ์ถฉ๋Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „์ฒด ์ฝ”๋“œ

import '@inkio/editor/minimal.css'; import '@inkio/extension/style.css'; import { Editor } from '@inkio/editor'; import { getDefaultInkioExtensions } from '@inkio/extension'; import { useMemo } from 'react'; export default function TailwindEditor() { const extensions = useMemo( () => getDefaultInkioExtensions({ placeholder: 'Start typing...' }), [], ); return ( <div className="min-h-[520px] rounded-2xl bg-slate-950 p-6 text-slate-100"> <h2 className="text-2xl font-semibold">My Editor</h2> <p className="mt-2 text-sm text-slate-300"> Tailwind layout with Inkio editor content. </p> <div className="mt-6 rounded-xl border border-slate-700 bg-white p-4 text-slate-900"> <Editor extensions={extensions} initialContent="<p>Hello from Tailwind!</p>" showBubbleMenu showFloatingMenu /> </div> </div> ); }

Tailwind v4 ์„ค์ •

Tailwind v4๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Vite ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

// vite.config.ts import tailwindcss from '@tailwindcss/vite'; export default defineConfig({ plugins: [react(), tailwindcss()], });
/* app.css */ @import 'tailwindcss';

๋‹คํฌ ๋ชจ๋“œ

Tailwind์˜ dark: ๋ณ€ํ˜•๊ณผ Inkio์˜ .dark ํด๋ž˜์Šค๋Š” ๋™์ผํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜(document.documentElement.classList)์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ž๋™์œผ๋กœ ์—ฐ๋™๋ฉ๋‹ˆ๋‹ค.

Last updated on