Obsidian API의 μ—¬λŸ¬ UI ꡬ성 μš”μ†Œλ₯Ό μ‚¬μš©ν•˜λ©΄ ν•¨κ»˜ μ œκ³΅λ˜λŠ” μ•„μ΄μ½˜μ„ ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€. λ‚΄μž₯된 μ•„μ΄μ½˜ 쀑 ν•˜λ‚˜λ₯Ό μ„ νƒν•˜κ±°λ‚˜ 직접 μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš© κ°€λŠ₯ν•œ μ•„μ΄μ½˜ 찾아보기

lucide.dev둜 μ΄λ™ν•˜μ—¬ μ‚¬μš© κ°€λŠ₯ν•œ λͺ¨λ“  μ•„μ΄μ½˜κ³Ό ν•΄λ‹Ή 이름을 ν™•μΈν•˜μ„Έμš”.

μ°Έκ³ : ν˜„μž¬ v0.446.0κΉŒμ§€μ˜ μ•„μ΄μ½˜λ§Œ μ§€μ›λ©λ‹ˆλ‹€.

μ•„μ΄μ½˜ μ‚¬μš©ν•˜κΈ°

μ‚¬μš©μž μ •μ˜ μΈν„°νŽ˜μ΄μŠ€μ—μ„œ μ•„μ΄μ½˜μ„ μ‚¬μš©ν•˜λ €λ©΄ setIcon() μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ HTML μš”μ†Œμ— μ•„μ΄μ½˜μ„ μΆ”κ°€ν•˜μ„Έμš”. λ‹€μŒ μ˜ˆμ œλŠ” μƒνƒœ ν‘œμ‹œμ€„μ— μ•„μ΄μ½˜μ„ μΆ”κ°€ν•©λ‹ˆλ‹€:

import { Plugin, setIcon } from 'obsidian';
 
export default class ExamplePlugin extends Plugin {
  async onload() {
    const item = this.addStatusBarItem();
    setIcon(item, 'info');
  }
}

μ•„μ΄μ½˜ 크기λ₯Ό λ³€κ²½ν•˜λ €λ©΄ μ•„μ΄μ½˜μ„ ν¬ν•¨ν•˜λŠ” μš”μ†Œμ— 사전 μ„€μ •λœ 크기λ₯Ό μ‚¬μš©ν•˜μ—¬ --icon-size CSS λ³€μˆ˜λ₯Ό μ„€μ •ν•˜μ„Έμš”:

div {
  --icon-size: var(--icon-size-m);
}

λ‚˜λ§Œμ˜ μ•„μ΄μ½˜ μΆ”κ°€ν•˜κΈ°

ν”ŒλŸ¬κ·ΈμΈμ— μ‚¬μš©μž μ •μ˜ μ•„μ΄μ½˜μ„ μΆ”κ°€ν•˜λ €λ©΄ addIcon() μœ ν‹Έλ¦¬ν‹°λ₯Ό μ‚¬μš©ν•˜μ„Έμš”:

import { addIcon, Plugin } from 'obsidian';
 
export default class ExamplePlugin extends Plugin {
  async onload() {
    addIcon('circle', `<circle cx="50" cy="50" r="50" fill="currentColor" />`);
 
    this.addRibbonIcon('circle', 'Click me', () => {
      console.log('Hello, you!');
    });
  }
}

addIcon은 두 개의 인수λ₯Ό λ°›μŠ΅λ‹ˆλ‹€:

  1. μ•„μ΄μ½˜μ„ κ³ μœ ν•˜κ²Œ 식별할 이름.
  2. μ£Όλ³€ <svg> νƒœκ·Έλ₯Ό μ œμ™Έν•œ μ•„μ΄μ½˜μ˜ SVG λ‚΄μš©.

μ•„μ΄μ½˜μ΄ μ œλŒ€λ‘œ κ·Έλ €μ§€λ €λ©΄ 0 0 100 100 λ·° λ°•μŠ€ μ•ˆμ— λ§žμ•„μ•Ό ν•©λ‹ˆλ‹€.

addIcon을 ν˜ΈμΆœν•œ ν›„μ—λŠ” λ‚΄μž₯된 μ•„μ΄μ½˜μ²˜λŸΌ μ•„μ΄μ½˜μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ•„μ΄μ½˜ λ””μžμΈ κ°€μ΄λ“œλΌμΈ

Obsidian μΈν„°νŽ˜μ΄μŠ€μ™€μ˜ ν˜Έν™˜μ„± 및 톡일성을 μœ„ν•΄ μ•„μ΄μ½˜μ€ Lucide의 κ°€μ΄λ“œλΌμΈμ„ 따라야 ν•©λ‹ˆλ‹€:

  • μ•„μ΄μ½˜μ€ 24x24 ν”½μ…€ μΊ”λ²„μŠ€μ—μ„œ λ””μžμΈλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • μ•„μ΄μ½˜μ€ μΊ”λ²„μŠ€ 내에 μ΅œμ†Œ 1ν”½μ…€μ˜ 여백이 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • μ•„μ΄μ½˜μ€ 2ν”½μ…€μ˜ 획 λ‘κ»˜λ₯Ό κ°€μ Έμ•Ό ν•©λ‹ˆλ‹€.
  • μ•„μ΄μ½˜μ€ λ‘₯κ·Ό 쑰인을 μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • μ•„μ΄μ½˜μ€ λ‘₯κ·Ό 캑을 μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • μ•„μ΄μ½˜μ€ 쀑앙 μ •λ ¬λœ νšμ„ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • μ•„μ΄μ½˜μ˜ λ„ν˜•(예: μ‚¬κ°ν˜•)은 2ν”½μ…€μ˜ ν…Œλ‘λ¦¬ λ°˜κ²½μ„ κ°€μ Έμ•Ό ν•©λ‹ˆλ‹€.
  • κ°œλ³„ μš”μ†ŒλŠ” μ„œλ‘œ 2ν”½μ…€μ˜ 간격이 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

LucideλŠ” λ˜ν•œ Illustrator, Figma, Inkscape와 같은 벑터 νŽΈμ§‘κΈ°λ₯Ό μœ„ν•œ ν…œν”Œλ¦Ώκ³Ό κ°€μ΄λ“œλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.