10 10
11Um zu erfahren, wie das Zeichnen funktioniert, beginnen Sie mit [In der Oberfläche zeichnen](/docs/de/plugins/mods/interface). Die wichtigsten Props und welche Apps die einzelnen Elemente zeichnen, finden Sie in der [Elementreferenz](/docs/de/plugins/mods/reference#elements). Die [Typdeklarationen](/docs/de/plugins/mods/create#get-the-types-for-your-build) führen alle Props auf.11Um zu erfahren, wie das Zeichnen funktioniert, beginnen Sie mit [In der Oberfläche zeichnen](/docs/de/plugins/mods/interface). Die wichtigsten Props und welche Apps die einzelnen Elemente zeichnen, finden Sie in der [Elementreferenz](/docs/de/plugins/mods/reference#elements). Die [Typdeklarationen](/docs/de/plugins/mods/create#get-the-types-for-your-build) führen alle Props auf.
12 12
13<h2 id="try-a-sample">13## Ein Beispiel ausprobieren
14 Ein Beispiel ausprobieren
15</h2>
16 14
17Die Beispiele auf dieser Seite sind Codeausschnitte, keine vollständigen Mods. Jedes Beispiel enthält den Code für ein Element und alles, was darin verschachtelt ist.15Die Beispiele auf dieser Seite sind Codeausschnitte, keine vollständigen Mods. Jedes Beispiel enthält den Code für ein Element und alles, was darin verschachtelt ist.
18 16
19Um ein Beispiel in Ihrem eigenen Terminal zu sehen, erstellen Sie mit den folgenden Schritten den kleinen Mod und fügen das Beispiel darin ein. Der Mod fügt einen Befehl `/gallery` hinzu, der einen Bereich öffnet und das Beispiel dort zeichnet. Ein [Bereich](/docs/de/plugins/mods/interface#pick-where-to-draw) ist in einem breiten Vollbild-Terminal eine Seitenleiste neben dem Transkript, andernfalls ein umrahmter Bereich oberhalb des Prompts.17Um ein Beispiel in Ihrem eigenen Terminal zu sehen, erstellen Sie mit den folgenden Schritten den kleinen Mod und fügen das Beispiel darin ein. Der Mod fügt einen Befehl `/gallery` hinzu, der einen Bereich öffnet und das Beispiel dort zeichnet. Ein [Bereich](/docs/de/plugins/mods/interface#pick-where-to-draw) ist in einem breiten Vollbild-Terminal eine Seitenleiste neben dem Transkript, andernfalls ein umrahmter Bereich oberhalb des Prompts.
20 18
21<Steps>19**1. Den Mod erstellen**
22 <Step title="Den Mod erstellen">
23 Erstellen Sie ein Verzeichnis namens `gallery` mit den Verzeichnissen `.claude-plugin` und `hooks` darin. [Einen Mod erstellen](/docs/de/plugins/mods/create#write-a-mod-yourself) erläutert die Dateien.
24 20
25 Speichern Sie das Manifest als `gallery/.claude-plugin/plugin.json`:21Erstellen Sie ein Verzeichnis namens `gallery` mit den Verzeichnissen `.claude-plugin` und `hooks` darin. [Einen Mod erstellen](/docs/de/plugins/mods/create#write-a-mod-yourself) erläutert die Dateien.
26 22
27 ```json gallery/.claude-plugin/plugin.json theme={null}23Speichern Sie das Manifest als `gallery/.claude-plugin/plugin.json`:
28 {24
25```json gallery/.claude-plugin/plugin.json theme={null}
26{
29 "name": "gallery",27 "name": "gallery",
30 "version": "0.1.0",28 "version": "0.1.0",
31 "description": "Opens a pane that draws one sample",29 "description": "Opens a pane that draws one sample",
32 "author": { "name": "Your Name" }30 "author": { "name": "Your Name" }
33 }31}
34 ```32```
35 33
36 Geben Sie Ihren Einstiegspunkt in `gallery/hooks/hooks.json` an:34Geben Sie Ihren Einstiegspunkt in `gallery/hooks/hooks.json` an:
37 35
38 ```json gallery/hooks/hooks.json theme={null}36```json gallery/hooks/hooks.json theme={null}
39 {37{
40 "modules": ["./register.js"]38 "modules": ["./register.js"]
41 }39}
42 ```40```
43 41
44 Speichern Sie den Code als `gallery/hooks/register.js`. Er fügt einen Befehl `/gallery` hinzu, der einen Bereich öffnet, und zeichnet `Plain text` in diesem Bereich:42Speichern Sie den Code als `gallery/hooks/register.js`. Er fügt einen Befehl `/gallery` hinzu, der einen Bereich öffnet, und zeichnet `Plain text` in diesem Bereich:
45 43
46 ```javascript gallery/hooks/register.js theme={null}44```javascript gallery/hooks/register.js theme={null}
47 // Stands in for your own callback in the samples that take one45// Stands in for your own callback in the samples that take one
48 const noop = () => {}46const noop = () => {}
49 // The Select sample keeps its choice here47// The Select sample keeps its choice here
50 let picked = 'md'48let picked = 'md'
51 49
52 // The Raster sample packs its cells with this function50// The Raster sample packs its cells with this function
53 const DEFAULT_COLOR = 0x0100000051const DEFAULT_COLOR = 0x01000000
54 function cellsOf(rows) {52function cellsOf(rows) {
55 const numbers = rows.flat().flatMap(([char, color]) => [char.codePointAt(0), color, DEFAULT_COLOR])53 const numbers = rows.flat().flatMap(([char, color]) => [char.codePointAt(0), color, DEFAULT_COLOR])
56 return new Uint8Array(Uint32Array.from(numbers).buffer).toBase64()54 return new Uint8Array(Uint32Array.from(numbers).buffer).toBase64()
57 }55}
58 56
59 export function register(on) {57export function register(on) {
60 on('session.start', async ($, e, next) => {58 on('session.start', async ($, e, next) => {
61 await $.command.register({ name: 'gallery', description: 'Open the sample pane' })59 await $.command.register({ name: 'gallery', description: 'Open the sample pane' })
62 return next(e)60 return next(e)
73 // Replace the element after return with a sample71 // Replace the element after return with a sample
74 return Text({ children: ['Plain text'] })72 return Text({ children: ['Plain text'] })
75 })73 })
76 }74}
77 ```75```
78 </Step>76
77**2. Den Mod ausführen**
79 78
80 <Step title="Den Mod ausführen">79Starten Sie Claude Code in Ihrer Shell aus dem Verzeichnis, das `gallery` enthält:
81 Starten Sie Claude Code in Ihrer Shell aus dem Verzeichnis, das `gallery` enthält:
82 80
83 ```bash theme={null}81```bash theme={null}
84 claude --plugin-dir ./gallery82claude --plugin-dir ./gallery
85 ```83```
86 84
87 Führen Sie am Prompt von Claude Code `/gallery` aus. Ein Bereich mit `Plain text` darin öffnet sich.85Führen Sie am Prompt von Claude Code `/gallery` aus. Ein Bereich mit `Plain text` darin öffnet sich.
88 </Step>
89 86
90 <Step title="Ein Beispiel einsetzen">87**3. Ein Beispiel einsetzen**
91 Kopieren Sie ein Beispiel von dieser Seite. Fügen Sie es in `register.js` anstelle von `Text({ children: ['Plain text'] })` ein, sodass es auf `return` folgt, und speichern Sie die Datei. Claude Code lädt das Modul bei jedem Speichern neu. Führen Sie daher `/gallery` erneut aus, um das neue Beispiel zu sehen.
92 </Step>
93</Steps>
94 88
95<h2 id="pick-an-element">89Kopieren Sie ein Beispiel von dieser Seite. Fügen Sie es in `register.js` anstelle von `Text({ children: ['Plain text'] })` ein, sodass es auf `return` folgt, und speichern Sie die Datei. Claude Code lädt das Modul bei jedem Speichern neu. Führen Sie daher `/gallery` erneut aus, um das neue Beispiel zu sehen.
96 Ein Element auswählen90
97</h2>91## Ein Element auswählen
98 92
99Die Beispiele sind danach gruppiert, was Sie auf dem Bildschirm darstellen möchten:93Die Beispiele sind danach gruppiert, was Sie auf dem Bildschirm darstellen möchten:
100 94
104* **[Eingaben entgegennehmen](#take-input)**: `Button`, `Input` und `Select`98* **[Eingaben entgegennehmen](#take-input)**: `Button`, `Input` und `Select`
105* **[Bilder zeichnen](#draw-pictures)**: `Raster`, `Svg`, `Image` und `Client`99* **[Bilder zeichnen](#draw-pictures)**: `Raster`, `Svg`, `Image` und `Client`
106 100
107<h2 id="show-text">101## Text anzeigen
108 Text anzeigen
109</h2>
110 102
111Drei Elemente bringen Wörter auf den Bildschirm: `Text` für Ihre eigene Formatierung, `Markdown` für Inhalte, die bereits formatiert sind, und `Link` für eine URL.103Drei Elemente bringen Wörter auf den Bildschirm: `Text` für Ihre eigene Formatierung, `Markdown` für Inhalte, die bereits formatiert sind, und `Link` für eine URL.
112 104
113<h3 id="text">105### `Text`
114 `Text`
115</h3>
116 106
117`Text` zeichnet eine Zeichenkette mit den Stilen, die Sie angeben. Dieses Beispiel zeigt einfachen Text und acht Stile, jeweils einen pro Zeile:107`Text` zeichnet eine Zeichenkette mit den Stilen, die Sie angeben. Dieses Beispiel zeigt einfachen Text und acht Stile, jeweils einen pro Zeile:
118 108
133})123})
134```124```
135 125
136<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-text-light.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=90724ce3953d9347b61b6a9266fda451" className="dark:hidden" alt="Ein Bereich mit neun Textzeilen, jeweils nach ihrem Stil benannt: plain, bold, italic, underline, strikethrough, dimColor in Grau, inverse, color red und backgroundColor blue." width="1872" height="490" data-path="images/mods-el-text-light.png" />126
137
138<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-text-dark.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=790dd3465e06db0842639d0d8fcbbc96" className="hidden dark:block" alt="Ein Bereich mit neun Textzeilen, jeweils nach ihrem Stil benannt: plain, bold, italic, underline, strikethrough, dimColor in Grau, inverse, color red und backgroundColor blue." width="1872" height="490" data-path="images/mods-el-text-dark.png" />
139 127
140`dimColor` zeichnet den Text in Grau. `backgroundColor` füllt nur so weit, wie der Text breit ist.128`dimColor` zeichnet den Text in Grau. `backgroundColor` füllt nur so weit, wie der Text breit ist.
141 129
142<h3 id="markdown">130### `Markdown`
143 `Markdown`
144</h3>
145 131
146`Markdown` formatiert Text so, wie die Antworten von Claude formatiert werden. Übergeben Sie den Inhalt in `text`, nicht in `children`:132`Markdown` formatiert Text so, wie die Antworten von Claude formatiert werden. Übergeben Sie den Inhalt in `text`, nicht in `children`:
147 133
151})137})
152```138```
153 139
154<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-markdown-light.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=e40eacc4e3fbe06eb003f4463f552ec1" className="dark:hidden" alt="Ein Bereich mit einer fetten Überschrift, Release notes, dann ein Satz mit einem fetten Wort und einem farbigen Code-Wort, eine Liste mit zwei Einträgen und ein Zitat in Kursivschrift mit einem Balken auf der linken Seite." width="1872" height="452" data-path="images/mods-el-markdown-light.png" />140
155
156<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-markdown-dark.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=2cc342ed0c58e752c425fff3c95a33a6" className="hidden dark:block" alt="Ein Bereich mit einer fetten Überschrift, Release notes, dann ein Satz mit einem fetten Wort und einem farbigen Code-Wort, eine Liste mit zwei Einträgen und ein Zitat in Kursivschrift mit einem Balken auf der linken Seite." width="1872" height="452" data-path="images/mods-el-markdown-dark.png" />
157 141
158Eine Überschrift wird fett ohne ihre `#`-Zeichen gezeichnet. Inline-Code wird farbig ohne seine Backticks gezeichnet. Ein Zitat wird kursiv mit einem Balken auf der linken Seite gezeichnet.142Eine Überschrift wird fett ohne ihre `#`-Zeichen gezeichnet. Inline-Code wird farbig ohne seine Backticks gezeichnet. Ein Zitat wird kursiv mit einem Balken auf der linken Seite gezeichnet.
159 143
160<h3 id="link">144### `Link`
161 `Link`
162</h3>
163 145
164`Link` zeichnet eine Beschriftung, gefolgt von ihrer URL:146`Link` zeichnet eine Beschriftung, gefolgt von ihrer URL:
165 147
167Link({ href: 'https://code.claude.com/docs', label: 'Claude Code docs' })149Link({ href: 'https://code.claude.com/docs', label: 'Claude Code docs' })
168```150```
169 151
170<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-link-light.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=8217bd2dfb561a8ba57023c6d89ea977" className="dark:hidden" alt="Ein Bereich mit einer Zeile: die Beschriftung Claude Code docs, dann die URL in Grau." width="1872" height="186" data-path="images/mods-el-link-light.png" />152
171
172<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-link-dark.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=cd32f222a7d3530b070f58f5f189a1f8" className="hidden dark:block" alt="Ein Bereich mit einer Zeile: die Beschriftung Claude Code docs, dann die URL in Grau." width="1872" height="186" data-path="images/mods-el-link-dark.png" />
173 153
174Das Terminal zeichnet die URL als Text nach der Beschriftung. Ob ein Klick sie öffnet, hängt vom Terminal des Benutzers ab.154Das Terminal zeichnet die URL als Text nach der Beschriftung. Ob ein Klick sie öffnet, hängt vom Terminal des Benutzers ab.
175 155
176<h2 id="show-code-and-changes">156## Code und Änderungen anzeigen
177 Code und Änderungen anzeigen
178</h2>
179 157
180`Code` stellt Quelltext mit den eigenen Syntaxfarben von Claude Code dar oder zeigt einen Diff an. In der VS Code-Erweiterung zeigt `Code` seine `source` als reinen Text an, ohne die Farben, Zeilennummern oder Diff-Schattierungen aus diesen Screenshots.158`Code` stellt Quelltext mit den eigenen Syntaxfarben von Claude Code dar oder zeigt einen Diff an. In der VS Code-Erweiterung zeigt `Code` seine `source` als reinen Text an, ohne die Farben, Zeilennummern oder Diff-Schattierungen aus diesen Screenshots.
181 159
182<h3 id="code">160### `Code`
183 `Code`
184</h3>
185 161
186Geben Sie die `language` an oder übergeben Sie einen `path`, aus dem Claude Code sie ableitet. Mit `startLine` werden die Zeilen ab dieser Zahl nummeriert:162Geben Sie die `language` an oder übergeben Sie einen `path`, aus dem Claude Code sie ableitet. Mit `startLine` werden die Zeilen ab dieser Zahl nummeriert:
187 163
193})169})
194```170```
195 171
196<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-code-light.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=4e13f5d506d3fdcc59d6d9524f48d2a9" className="dark:hidden" alt="Ein Bereich mit zwei nummerierten Zeilen JavaScript in Syntaxfarben." width="1872" height="224" data-path="images/mods-el-code-light.png" />172
197
198<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-code-dark.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=59f797371dd91b16b874a382b784b668" className="hidden dark:block" alt="Ein Bereich mit zwei nummerierten Zeilen JavaScript in Syntaxfarben." width="1872" height="224" data-path="images/mods-el-code-dark.png" />
199 173
200Die Farben stammen aus dem Theme des Benutzers.174Die Farben stammen aus dem Theme des Benutzers.
201 175
202<h3 id="code-as-a-diff">176### `Code` als Diff
203 `Code` als Diff
204</h3>
205 177
206Mit `format: 'diff'` besteht `source` aus einem oder mehreren Unified-Diff-Hunks:178Mit `format: 'diff'` besteht `source` aus einem oder mehreren Unified-Diff-Hunks:
207 179
212})184})
213```185```
214 186
215<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-diff-light.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=4f12c9f7229ceccd9b4f47479a7235dd" className="dark:hidden" alt="Ein Bereich mit einem vierzeiligen Diff. Die entfernte Zeile ist rot und die hinzugefügte Zeile grün hinterlegt, jeweils mit ihrer Zeilennummer. In der hinzugefügten Zeile sind die Wörter that runs code stärker hervorgehoben." width="1872" height="300" data-path="images/mods-el-diff-light.png" />187
216
217<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-diff-dark.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=9db96f34381bac8bebc32d41859b8808" className="hidden dark:block" alt="Ein Bereich mit einem vierzeiligen Diff. Die entfernte Zeile ist rot und die hinzugefügte Zeile grün hinterlegt, jeweils mit ihrer Zeilennummer. In der hinzugefügten Zeile sind die Wörter that runs code stärker hervorgehoben." width="1872" height="300" data-path="images/mods-el-diff-dark.png" />
218 188
219Claude Code zeigt anstelle der `@@`-Zeile Zeilennummern an. Wo sich eine entfernte und eine hinzugefügte Zeile ähneln, werden die geänderten Wörter stärker hervorgehoben.189Claude Code zeigt anstelle der `@@`-Zeile Zeilennummern an. Wo sich eine entfernte und eine hinzugefügte Zeile ähneln, werden die geänderten Wörter stärker hervorgehoben.
220 190
221<h2 id="arrange-elements">191## Elemente anordnen
222 Elemente anordnen
223</h2>
224 192
225<h3 id="box">193### `Box`
226 `Box`
227</h3>
228 194
229`Box` ordnet seinen Inhalt in einer Zeile oder einer Spalte an und kann einen Rahmen zeichnen. Dieses Beispiel platziert eine Reihe von Wörtern über einer umrandeten Box:195`Box` ordnet seinen Inhalt in einer Zeile oder einer Spalte an und kann einen Rahmen zeichnen. Dieses Beispiel platziert eine Reihe von Wörtern über einer umrandeten Box:
230 196
247})213})
248```214```
249 215
250<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-box-light.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=cb9263bb02f5c8afb6e5b8450e0cdadc" className="dark:hidden" alt="Ein Bereich mit drei Wörtern in einer Zeile, vier Spalten voneinander entfernt, dann eine leere Zeile, dann ein abgerundeter Rahmen um eine Textzeile. Der Rahmen erstreckt sich über die gesamte Breite des Bereichs." width="1872" height="338" data-path="images/mods-el-box-light.png" />216
251
252<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-box-dark.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=dae83407af4d667a58717f68f13848e2" className="hidden dark:block" alt="Ein Bereich mit drei Wörtern in einer Zeile, vier Spalten voneinander entfernt, dann eine leere Zeile, dann ein abgerundeter Rahmen um eine Textzeile. Der Rahmen erstreckt sich über die gesamte Breite des Bereichs." width="1872" height="338" data-path="images/mods-el-box-dark.png" />
253 217
254Der Rahmen erstreckt sich über die Breite des Bereichs.218Der Rahmen erstreckt sich über die Breite des Bereichs.
255 219
256<h2 id="take-input">220## Eingaben entgegennehmen
257 Eingaben entgegennehmen
258</h2>
259 221
260`Button`, `Input` und `Select` sind Steuerelemente: Der Benutzer wechselt mit Tab zwischen ihnen und bedient dasjenige, das den Fokus hat. Unter [Tastaturfokus und Hotkeys](/docs/de/plugins/mods/interface#know-which-keys-your-mod-can-receive) erfahren Sie, welche Tasten sie erreichen.222`Button`, `Input` und `Select` sind Steuerelemente: Der Benutzer wechselt mit Tab zwischen ihnen und bedient dasjenige, das den Fokus hat. Unter [Tastaturfokus und Hotkeys](/docs/de/plugins/mods/interface#know-which-keys-your-mod-can-receive) erfahren Sie, welche Tasten sie erreichen.
261 223
262Öffnen Sie einen Bereich mit `focus: true`, um den Tastaturfokus für ihn anzufordern. Eingegebene Buchstaben erreichen ein `Input`, sobald es den Fokus hat. Wie Sie festlegen, welches Feld beim Öffnen des Bereichs den Fokus hat, erfahren Sie unter [Einen Hotkey und den ersten Fokus festlegen](/docs/de/plugins/mods/interface#set-a-hotkey-and-the-first-focus).224Öffnen Sie einen Bereich mit `focus: true`, um den Tastaturfokus für ihn anzufordern. Eingegebene Buchstaben erreichen ein `Input`, sobald es den Fokus hat. Wie Sie festlegen, welches Feld beim Öffnen des Bereichs den Fokus hat, erfahren Sie unter [Einen Hotkey und den ersten Fokus festlegen](/docs/de/plugins/mods/interface#set-a-hotkey-and-the-first-focus).
263 225
264<h3 id="button">226### `Button`
265 `Button`
266</h3>
267 227
268Ein Button führt `onPress` aus. Dieses Beispiel zeigt die Standardform, einen `plain`-Button mit einem Hotkey und einen abgeblendeten Button:228Ein Button führt `onPress` aus. Dieses Beispiel zeigt die Standardform, einen `plain`-Button mit einem Hotkey und einen abgeblendeten Button:
269 229
278})238})
279```239```
280 240
281<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-button-light.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=8c638c15e12d9736f327dfcaa797b512" className="dark:hidden" alt="Ein Bereich mit drei Buttons, einer pro Zeile: Save in eckigen Klammern, n: Next ohne Klammern und mit farbigem n sowie Skip in eckigen Klammern in Grau." width="1872" height="262" data-path="images/mods-el-button-light.png" />241
282
283<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-button-dark.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=6a88a1fe18ba63b050366dcfab14be45" className="hidden dark:block" alt="Ein Bereich mit drei Buttons, einer pro Zeile: Save in eckigen Klammern, n: Next ohne Klammern und mit farbigem n sowie Skip in eckigen Klammern in Grau." width="1872" height="262" data-path="images/mods-el-button-dark.png" />
284 242
285Ein Button, der den Fokus hat, wird invertiert dargestellt. Hier hat der Benutzer zweimal Tab gedrückt:243Ein Button, der den Fokus hat, wird invertiert dargestellt. Hier hat der Benutzer zweimal Tab gedrückt:
286 244
287<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-button-plain-focused-light.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=a6224e58d10752a894615047d9824ad9" className="dark:hidden" alt="Dieselben drei Buttons, wobei der zweite, n: Next, invertiert dargestellt wird." width="1872" height="262" data-path="images/mods-el-button-plain-focused-light.png" />245
288 246
289<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-button-plain-focused-dark.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=9aeb7145615e77c84e7436180ed69e86" className="hidden dark:block" alt="Dieselben drei Buttons, wobei der zweite, n: Next, invertiert dargestellt wird." width="1872" height="262" data-path="images/mods-el-button-plain-focused-dark.png" />247### `Input`
290
291<h3 id="input">
292 `Input`
293</h3>
294 248
295Ein `Input` ist ein einzeiliges Textfeld, das `onSubmit` ausführt, wenn der Benutzer die Eingabetaste drückt:249Ein `Input` ist ein einzeiliges Textfeld, das `onSubmit` ausführt, wenn der Benutzer die Eingabetaste drückt:
296 250
307 261
308Ohne Fokus zeigt das Feld seine Beschriftung und seinen Platzhalter:262Ohne Fokus zeigt das Feld seine Beschriftung und seinen Platzhalter:
309 263
310<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-input-light.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=7d580be1aaf5507032e1962b9167d725" className="dark:hidden" alt="Ein Bereich mit einer Zeile: die Beschriftung Title, dann der Platzhalter Type a title and press Enter in Grau." width="1872" height="186" data-path="images/mods-el-input-light.png" />264
311
312<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-input-dark.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=9d254a8adc5959ba173717fb45eabd52" className="hidden dark:block" alt="Ein Bereich mit einer Zeile: die Beschriftung Title, dann der Platzhalter Type a title and press Enter in Grau." width="1872" height="186" data-path="images/mods-el-input-dark.png" />
313 265
314Mit Fokus wird die Beschriftung fett dargestellt, ein Cursor erscheint und das `submitLabel` wird nach `⏎` angezeigt:266Mit Fokus wird die Beschriftung fett dargestellt, ein Cursor erscheint und das `submitLabel` wird nach `⏎` angezeigt:
315 267
316<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-input-focused-light.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=dcfcce0174480cc624d06c8521734fe7" className="dark:hidden" alt="Dasselbe Feld mit fett dargestellter Beschriftung, einem Block-Cursor auf dem ersten Buchstaben des Platzhalters und einem Return-Zeichen, gefolgt vom Wort save." width="1872" height="186" data-path="images/mods-el-input-focused-light.png" />268
317
318<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-input-focused-dark.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=2f5cf7d0e5f813983070e883009f528e" className="hidden dark:block" alt="Dasselbe Feld mit fett dargestellter Beschriftung, einem Block-Cursor auf dem ersten Buchstaben des Platzhalters und einem Return-Zeichen, gefolgt vom Wort save." width="1872" height="186" data-path="images/mods-el-input-focused-dark.png" />
319 269
320Durch Tippen wird der Platzhalter ersetzt:270Durch Tippen wird der Platzhalter ersetzt:
321 271
322<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-input-typed-light.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=4eb6d4443763a21415dad4e426bc747a" className="dark:hidden" alt="Dasselbe Feld mit den eingegebenen Buchstaben Rel, gefolgt vom Return-Zeichen und dem Wort save." width="1872" height="186" data-path="images/mods-el-input-typed-light.png" />272
323 273
324<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-input-typed-dark.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=90fbac3c7a47ab26a4fb71401975eac6" className="hidden dark:block" alt="Dasselbe Feld mit den eingegebenen Buchstaben Rel, gefolgt vom Return-Zeichen und dem Wort save." width="1872" height="186" data-path="images/mods-el-input-typed-dark.png" />274### `Select`
325
326<h3 id="select">
327 `Select`
328</h3>
329 275
330Mit einem `Select` kann der Benutzer eine von mehreren Optionen auswählen; es führt `onSelect` mit dem `value` der Option aus:276Mit einem `Select` kann der Benutzer eine von mehreren Optionen auswählen; es führt `onSelect` mit dem `value` der Option aus:
331 277
347 293
348Geschlossen zeigt es seine Beschriftung und die aktuelle Option:294Geschlossen zeigt es seine Beschriftung und die aktuelle Option:
349 295
350<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-select-light.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=4e3b18268ffd87d2cad06442e6d661a9" className="dark:hidden" alt="Ein Bereich mit einer Zeile: die Beschriftung Format, die aktuelle Option Markdown und ein kleiner Pfeil nach unten." width="1872" height="186" data-path="images/mods-el-select-light.png" />296
351
352<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-select-dark.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=1e329e6aee748c2dd70e92dbe4960de0" className="hidden dark:block" alt="Ein Bereich mit einer Zeile: die Beschriftung Format, die aktuelle Option Markdown und ein kleiner Pfeil nach unten." width="1872" height="186" data-path="images/mods-el-select-dark.png" />
353 297
354Geöffnet listet es seine Optionen auf und markiert eine davon:298Geöffnet listet es seine Optionen auf und markiert eine davon:
355 299
356<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-select-moved-light.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=deb6ce0a49d213235feedaa79ac658c0" className="dark:hidden" alt="Die geöffnete Auswahl mit ihren drei Optionen, die unter der Beschriftung aufgelistet sind. Die zweite Option, HTML, wird invertiert dargestellt." width="1872" height="300" data-path="images/mods-el-select-moved-light.png" />300
357
358<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-select-moved-dark.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=d69edeecd4f97dad4bdb39b908e3d98e" className="hidden dark:block" alt="Die geöffnete Auswahl mit ihren drei Optionen, die unter der Beschriftung aufgelistet sind. Die zweite Option, HTML, wird invertiert dargestellt." width="1872" height="300" data-path="images/mods-el-select-moved-dark.png" />
359 301
360Nachdem der Benutzer eine Option ausgewählt hat, schließt sich die Liste:302Nachdem der Benutzer eine Option ausgewählt hat, schließt sich die Liste:
361 303
362<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-select-picked-light.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=f065ab5bc479868f03088dc736f17097" className="dark:hidden" alt="Die wieder geschlossene Auswahl, die nun HTML als aktuelle Option anzeigt." width="1872" height="186" data-path="images/mods-el-select-picked-light.png" />304
363 305
364<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-select-picked-dark.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=f084630e325825f3831219215a6a595e" className="hidden dark:block" alt="Die wieder geschlossene Auswahl, die nun HTML als aktuelle Option anzeigt." width="1872" height="186" data-path="images/mods-el-select-picked-dark.png" />306## Bilder zeichnen
365 307
366<h2 id="draw-pictures">308### `Raster`
367 Bilder zeichnen
368</h2>
369
370<h3 id="raster">
371 `Raster`
372</h3>
373 309
374Ein `Raster` ist ein Gitter aus farbigen Zeichenzellen, etwa für eine Heatmap, eine Sparkline oder ein Spielbrett. Das Terminal zeichnet es. Dieses Beispiel verwendet die Funktion `cellsOf` im Startermodul, die die Zellen in den String packt, den ein `Raster` erwartet. [Ein Gitter aus farbigen Zellen zeichnen](/docs/de/plugins/mods/interface#draw-a-grid-of-colored-cells) erklärt sie:310Ein `Raster` ist ein Gitter aus farbigen Zeichenzellen, etwa für eine Heatmap, eine Sparkline oder ein Spielbrett. Das Terminal zeichnet es. Dieses Beispiel verwendet die Funktion `cellsOf` im Startermodul, die die Zellen in den String packt, den ein `Raster` erwartet. [Ein Gitter aus farbigen Zellen zeichnen](/docs/de/plugins/mods/interface#draw-a-grid-of-colored-cells) erklärt sie:
375 311
385})321})
386```322```
387 323
388<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-raster-light.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=5ed719481d3dd45b568bab696e57bf16" className="dark:hidden" alt="Ein Bereich mit einem kleinen Gitter aus farbigen Blöcken, zwei Reihen zu je drei: Grün, Bernstein und Rot, dann Grün, Grün und Bernstein." width="1872" height="224" data-path="images/mods-el-raster-light.png" />324
389
390<img src="https://mintcdn.com/claude-code/EXkwf0kKMewZsyod/images/mods-el-raster-dark.png?fit=max&auto=format&n=EXkwf0kKMewZsyod&q=85&s=b381f05d4cc99e2abfacb505c77b17f5" className="hidden dark:block" alt="Ein Bereich mit einem kleinen Gitter aus farbigen Blöcken, zwei Reihen zu je drei: Grün, Bernstein und Rot, dann Grün, Grün und Bernstein." width="1872" height="224" data-path="images/mods-el-raster-dark.png" />
391 325
392Ein `Raster` rundet jede Farbe auf eine kleinere Palette, sodass `0x2e7d32` als `#337733` gezeichnet wird.326Ein `Raster` rundet jede Farbe auf eine kleinere Palette, sodass `0x2e7d32` als `#337733` gezeichnet wird.
393 327
394<h3 id="svg">328### `Svg`
395 `Svg`
396</h3>
397 329
398Ein `Svg` zeichnet ein SVG-Dokument in der Desktop-App und der VS Code-Erweiterung:330Ein `Svg` zeichnet ein SVG-Dokument in der Desktop-App und der VS Code-Erweiterung:
399 331
409 341
410Im Terminal wird ein Bereich, der nur ein `Svg` zurückgibt, leer geöffnet. Um dort etwas anderes zu zeichnen, prüfen Sie [`e.surface`](/docs/de/plugins/mods/interface#pick-where-to-draw) und geben Sie einen anderen Baum zurück.342Im Terminal wird ein Bereich, der nur ein `Svg` zurückgibt, leer geöffnet. Um dort etwas anderes zu zeichnen, prüfen Sie [`e.surface`](/docs/de/plugins/mods/interface#pick-where-to-draw) und geben Sie einen anderen Baum zurück.
411 343
412<h3 id="image-and-client">344### `Image` und `Client`
413 `Image` und `Client`
414</h3>
415 345
416Zwei weitere Elemente haben hier kein Beispiel. `Image` zeichnet ein PNG oder Rohpixel im Terminal. `Client` ist ein Bereich, den eine zweite Datei von Ihnen zeichnet, für Animationen und Zeigereingaben. Die [Elementreferenz](/docs/de/plugins/mods/reference#elements) listet ihre Props auf.346Zwei weitere Elemente haben hier kein Beispiel. `Image` zeichnet ein PNG oder Rohpixel im Terminal. `Client` ist ein Bereich, den eine zweite Datei von Ihnen zeichnet, für Animationen und Zeigereingaben. Die [Elementreferenz](/docs/de/plugins/mods/reference#elements) listet ihre Props auf.
417 347
423 353
424Wenn die Benutzer Ihres Mods den abgeblendeten Text in einem Terminal sehen, das diese Platzhalterbilder tatsächlich zeichnet, können sie [`CLAUDE_CODE_FORCE_TERMINAL_IMAGES`](/docs/de/env-vars) auf `1` setzen, wodurch die Erkennung übersprungen wird. Innerhalb von tmux oder screen hilft das nicht: Der `alt`-Text verschwindet, und Claude Code sendet das Bild, ohne es für das Passthrough von tmux oder screen zu verpacken.354Wenn die Benutzer Ihres Mods den abgeblendeten Text in einem Terminal sehen, das diese Platzhalterbilder tatsächlich zeichnet, können sie [`CLAUDE_CODE_FORCE_TERMINAL_IMAGES`](/docs/de/env-vars) auf `1` setzen, wodurch die Erkennung übersprungen wird. Innerhalb von tmux oder screen hilft das nicht: Der `alt`-Text verschwindet, und Claude Code sendet das Bild, ohne es für das Passthrough von tmux oder screen zu verpacken.
425 355
426<h2 id="see-where-a-mod-can-draw">356## Sehen, wo ein Mod zeichnen kann
427 Sehen, wo ein Mod zeichnen kann
428</h2>
429 357
430Die Beispiele zeichnen alle in einem Bereich. Ein Mod kann auch an anderen Stellen zeichnen und Claude Code aufrufen, damit es etwas für ihn anzeigt:358Die Beispiele zeichnen alle in einem Bereich. Ein Mod kann auch an anderen Stellen zeichnen und Claude Code aufrufen, damit es etwas für ihn anzeigt:
431 359
434* **Toast, Statuszeile und Log-Zeile**: [Etwas anzeigen, ohne einen Turn zu starten](/docs/de/plugins/mods/api#show-something-without-starting-a-turn)362* **Toast, Statuszeile und Log-Zeile**: [Etwas anzeigen, ohne einen Turn zu starten](/docs/de/plugins/mods/api#show-something-without-starting-a-turn)
435* **Fragedialog**: [Einen Tool-Aufruf zurückhalten, bis der Benutzer entscheidet](/docs/de/plugins/mods/events#hold-a-tool-call-until-the-user-decides)363* **Fragedialog**: [Einen Tool-Aufruf zurückhalten, bis der Benutzer entscheidet](/docs/de/plugins/mods/events#hold-a-tool-call-until-the-user-decides)
436 364
437<h2 id="next-steps">365## Nächste Schritte
438 Nächste Schritte
439</h2>
440 366
441* [In der Oberfläche zeichnen](/docs/de/plugins/mods/interface): Erstellen Sie Schritt für Schritt einen Bereich mit Tabs367* [In der Oberfläche zeichnen](/docs/de/plugins/mods/interface): Erstellen Sie Schritt für Schritt einen Bereich mit Tabs
442* [Eine Zeichnung testen](/docs/de/plugins/mods/test#test-a-drawing): Drücken Sie Ihre Schaltflächen aus einem Test heraus368* [Eine Zeichnung testen](/docs/de/plugins/mods/test#test-a-drawing): Drücken Sie Ihre Schaltflächen aus einem Test heraus