File size: 2,280 Bytes
1dd9186
cfaaa6c
 
 
1dd9186
 
 
 
 
 
cfaaa6c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
export default function NodePalette({ definitions, componentTemplates, onAddNode, onAddComponentNode, onHide }) {
  return (
    <aside className="palette">
      <div className="palette__header">
        <div className="palette__topline">
          <div className="palette__eyebrow">React Flow</div>
          <button type="button" className="palette__hide-button" onClick={onHide}>
            Hide
          </button>
        </div>
        <h2 className="palette__title">Библиотека нод</h2>
        <p className="palette__subtitle">Добавляй ноды и собирай workflow в визуальном редакторе.</p>
      </div>

      <div className="palette__section">
        <div className="palette__section-title">Основные ноды</div>
        <div className="palette__list">
          {definitions.map((definition) => (
            <button
              key={definition.type}
              type="button"
              className="palette__item"
              onClick={() => onAddNode(definition.type)}
            >
              <span className="palette__item-title">{definition.title}</span>
              <span className="palette__item-description">{definition.description}</span>
            </button>
          ))}
        </div>
      </div>

      <div className="palette__section">
        <div className="palette__section-title">Компоненты</div>

        {componentTemplates.length > 0 ? (
          <div className="palette__list">
            {componentTemplates.map((template) => (
              <button
                key={template.id}
                type="button"
                className="palette__item"
                onClick={() => onAddComponentNode(template.id)}
              >
                <span className="palette__item-title">{template.title}</span>
                <span className="palette__item-description">
                  {template.description?.trim() || 'Переиспользуемая компонентная нода'}
                </span>
              </button>
            ))}
          </div>
        ) : (
          <div className="palette__empty">Сохраненные компоненты появятся здесь.</div>
        )}
      </div>
    </aside>
  );
}