10 10
11Per capire come funziona il disegno, inizia da [Disegnare nell'interfaccia](/docs/it/plugins/mods/interface). Per le prop principali e per sapere quali app disegnano ciascun elemento, consulta il [riferimento degli elementi](/docs/it/plugins/mods/reference#elements). Le [dichiarazioni dei tipi](/docs/it/plugins/mods/create#get-the-types-for-your-build) elencano tutte le prop.11Per capire come funziona il disegno, inizia da [Disegnare nell'interfaccia](/docs/it/plugins/mods/interface). Per le prop principali e per sapere quali app disegnano ciascun elemento, consulta il [riferimento degli elementi](/docs/it/plugins/mods/reference#elements). Le [dichiarazioni dei tipi](/docs/it/plugins/mods/create#get-the-types-for-your-build) elencano tutte le prop.
12 12
13<h2 id="try-a-sample">13## Prova un esempio
14 Prova un esempio
15</h2>
16 14
17Gli esempi in questa pagina sono frammenti, non mod completi. Ognuno è il codice di un elemento e di tutto ciò che è annidato al suo interno.15Gli esempi in questa pagina sono frammenti, non mod completi. Ognuno è il codice di un elemento e di tutto ciò che è annidato al suo interno.
18 16
19Per vedere un esempio nel tuo terminale, crea il piccolo mod seguendo questi passaggi e incollaci l'esempio. Il mod aggiunge un comando `/gallery` che apre un riquadro e vi disegna l'esempio. Un [riquadro](/docs/it/plugins/mods/interface#pick-where-to-draw) è una barra laterale accanto alla trascrizione in un terminale a schermo intero sufficientemente largo, oppure, negli altri casi, un'area delimitata sopra il prompt.17Per vedere un esempio nel tuo terminale, crea il piccolo mod seguendo questi passaggi e incollaci l'esempio. Il mod aggiunge un comando `/gallery` che apre un riquadro e vi disegna l'esempio. Un [riquadro](/docs/it/plugins/mods/interface#pick-where-to-draw) è una barra laterale accanto alla trascrizione in un terminale a schermo intero sufficientemente largo, oppure, negli altri casi, un'area delimitata sopra il prompt.
20 18
21<Steps>19**1. Crea il mod**
22 <Step title="Crea il mod">
23 Crea una directory chiamata `gallery` con le directory `.claude-plugin` e `hooks` al suo interno. [Crea un mod](/docs/it/plugins/mods/create#write-a-mod-yourself) spiega i file.
24 20
25 Salva il manifest come `gallery/.claude-plugin/plugin.json`:21Crea una directory chiamata `gallery` con le directory `.claude-plugin` e `hooks` al suo interno. [Crea un mod](/docs/it/plugins/mods/create#write-a-mod-yourself) spiega i file.
26 22
27 ```json gallery/.claude-plugin/plugin.json theme={null}23Salva il manifest come `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 Indica il tuo punto di ingresso in `gallery/hooks/hooks.json`:34Indica il tuo punto di ingresso in `gallery/hooks/hooks.json`:
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 Salva il codice come `gallery/hooks/register.js`. Aggiunge un comando `/gallery` che apre un riquadro e disegna `Plain text` in quel riquadro:42Salva il codice come `gallery/hooks/register.js`. Aggiunge un comando `/gallery` che apre un riquadro e disegna `Plain text` in quel riquadro:
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. Esegui il mod**
79 78
80 <Step title="Esegui il mod">79Nella tua shell, avvia Claude Code dalla directory che contiene `gallery`:
81 Nella tua shell, avvia Claude Code dalla directory che contiene `gallery`:
82 80
83 ```bash theme={null}81```bash theme={null}
84 claude --plugin-dir ./gallery82claude --plugin-dir ./gallery
85 ```83```
86 84
87 Al prompt di Claude Code, esegui `/gallery`. Si apre un riquadro con `Plain text` al suo interno.85Al prompt di Claude Code, esegui `/gallery`. Si apre un riquadro con `Plain text` al suo interno.
88 </Step>
89 86
90 <Step title="Sostituisci con un esempio">87**3. Sostituisci con un esempio**
91 Copia un esempio da questa pagina. In `register.js`, incollalo al posto di `Text({ children: ['Plain text'] })`, in modo che segua `return`, e salva il file. Claude Code ricarica il modulo ogni volta che salvi, quindi esegui di nuovo `/gallery` per vedere il nuovo esempio.
92 </Step>
93</Steps>
94 88
95<h2 id="pick-an-element">89Copia un esempio da questa pagina. In `register.js`, incollalo al posto di `Text({ children: ['Plain text'] })`, in modo che segua `return`, e salva il file. Claude Code ricarica il modulo ogni volta che salvi, quindi esegui di nuovo `/gallery` per vedere il nuovo esempio.
96 Scegli un elemento90
97</h2>91## Scegli un elemento
98 92
99Gli esempi sono raggruppati in base a ciò che vuoi mostrare sullo schermo:93Gli esempi sono raggruppati in base a ciò che vuoi mostrare sullo schermo:
100 94
104* **[Ricevere input](#take-input)**: `Button`, `Input` e `Select`98* **[Ricevere input](#take-input)**: `Button`, `Input` e `Select`
105* **[Disegnare immagini](#draw-pictures)**: `Raster`, `Svg`, `Image` e `Client`99* **[Disegnare immagini](#draw-pictures)**: `Raster`, `Svg`, `Image` e `Client`
106 100
107<h2 id="show-text">101## Mostrare testo
108 Mostrare testo
109</h2>
110 102
111Tre elementi mettono parole sullo schermo: `Text` per uno stile personalizzato, `Markdown` per contenuti già formattati e `Link` per un URL.103Tre elementi mettono parole sullo schermo: `Text` per uno stile personalizzato, `Markdown` per contenuti già formattati e `Link` per un URL.
112 104
113<h3 id="text">105### `Text`
114 `Text`
115</h3>
116 106
117`Text` disegna una stringa con gli stili che gli assegni. Questo esempio mostra testo semplice e otto stili, uno per riga:107`Text` disegna una stringa con gli stili che gli assegni. Questo esempio mostra testo semplice e otto stili, uno per riga:
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="Un riquadro con nove righe di testo, ciascuna chiamata con il nome del proprio stile: plain, bold, italic, underline, strikethrough, dimColor in grigio, inverse, color red e 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="Un riquadro con nove righe di testo, ciascuna chiamata con il nome del proprio stile: plain, bold, italic, underline, strikethrough, dimColor in grigio, inverse, color red e backgroundColor blue." width="1872" height="490" data-path="images/mods-el-text-dark.png" />
139 127
140`dimColor` disegna il testo in grigio. `backgroundColor` riempie solo la larghezza del testo.128`dimColor` disegna il testo in grigio. `backgroundColor` riempie solo la larghezza del testo.
141 129
142<h3 id="markdown">130### `Markdown`
143 `Markdown`
144</h3>
145 131
146`Markdown` formatta il testo nello stesso modo in cui vengono formattate le risposte di Claude. Passa il contenuto in `text`, non in `children`:132`Markdown` formatta il testo nello stesso modo in cui vengono formattate le risposte di Claude. Passa il contenuto in `text`, non 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="Un riquadro con un titolo in grassetto, Release notes, seguito da una frase con una parola in grassetto e una parola di codice colorata, un elenco di due voci e una citazione in corsivo con una barra alla sua sinistra." 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="Un riquadro con un titolo in grassetto, Release notes, seguito da una frase con una parola in grassetto e una parola di codice colorata, un elenco di due voci e una citazione in corsivo con una barra alla sua sinistra." width="1872" height="452" data-path="images/mods-el-markdown-dark.png" />
157 141
158Un titolo viene disegnato in grassetto senza i simboli `#`. Il codice inline viene disegnato a colori senza i backtick. Una citazione viene disegnata in corsivo con una barra alla sua sinistra.142Un titolo viene disegnato in grassetto senza i simboli `#`. Il codice inline viene disegnato a colori senza i backtick. Una citazione viene disegnata in corsivo con una barra alla sua sinistra.
159 143
160<h3 id="link">144### `Link`
161 `Link`
162</h3>
163 145
164`Link` disegna un'etichetta seguita dal suo URL:146`Link` disegna un'etichetta seguita dal suo 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="Un riquadro con una riga: l'etichetta Claude Code docs, seguita dall'URL in grigio." 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="Un riquadro con una riga: l'etichetta Claude Code docs, seguita dall'URL in grigio." width="1872" height="186" data-path="images/mods-el-link-dark.png" />
173 153
174Il terminale disegna l'URL come testo dopo l'etichetta. Il fatto che un clic lo apra dipende dal terminale dell'utente.154Il terminale disegna l'URL come testo dopo l'etichetta. Il fatto che un clic lo apra dipende dal terminale dell'utente.
175 155
176<h2 id="show-code-and-changes">156## Mostrare codice e modifiche
177 Mostrare codice e modifiche
178</h2>
179 157
180`Code` disegna il testo sorgente con i colori di sintassi propri di Claude Code, oppure un diff. Nell'estensione VS Code, `Code` mostra il suo `source` come testo semplice, senza i colori, i numeri di riga o l'ombreggiatura del diff visibili in questi screenshot.158`Code` disegna il testo sorgente con i colori di sintassi propri di Claude Code, oppure un diff. Nell'estensione VS Code, `Code` mostra il suo `source` come testo semplice, senza i colori, i numeri di riga o l'ombreggiatura del diff visibili in questi screenshot.
181 159
182<h3 id="code">160### `Code`
183 `Code`
184</h3>
185 161
186Specifica il `language`, oppure passa un `path` da cui Claude Code possa dedurlo. Con `startLine`, le righe vengono numerate a partire da quel numero:162Specifica il `language`, oppure passa un `path` da cui Claude Code possa dedurlo. Con `startLine`, le righe vengono numerate a partire da quel numero:
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="Un riquadro con due righe numerate di JavaScript con i colori di sintassi." 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="Un riquadro con due righe numerate di JavaScript con i colori di sintassi." width="1872" height="224" data-path="images/mods-el-code-dark.png" />
199 173
200I colori provengono dal tema dell'utente.174I colori provengono dal tema dell'utente.
201 175
202<h3 id="code-as-a-diff">176### `Code` come diff
203 `Code` come diff
204</h3>
205 177
206Con `format: 'diff'`, `source` è costituito da uno o più hunk di diff unificato:178Con `format: 'diff'`, `source` è costituito da uno o più hunk di diff unificato:
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="Un riquadro con un diff di quattro righe. La riga rimossa è ombreggiata in rosso e quella aggiunta in verde, ciascuna con il proprio numero di riga. Nella riga aggiunta, le parole that runs code hanno un'ombreggiatura più intensa." 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="Un riquadro con un diff di quattro righe. La riga rimossa è ombreggiata in rosso e quella aggiunta in verde, ciascuna con il proprio numero di riga. Nella riga aggiunta, le parole that runs code hanno un'ombreggiatura più intensa." width="1872" height="300" data-path="images/mods-el-diff-dark.png" />
218 188
219Claude Code disegna i numeri di riga al posto della riga `@@`. Quando una riga rimossa e una riga aggiunta sono simili, le parole modificate ricevono un'ombreggiatura più intensa.189Claude Code disegna i numeri di riga al posto della riga `@@`. Quando una riga rimossa e una riga aggiunta sono simili, le parole modificate ricevono un'ombreggiatura più intensa.
220 190
221<h2 id="arrange-elements">191## Disporre gli elementi
222 Disporre gli elementi
223</h2>
224 192
225<h3 id="box">193### `Box`
226 `Box`
227</h3>
228 194
229`Box` dispone ciò che contiene in una riga o in una colonna e può disegnare un bordo. Questo esempio posiziona una riga di parole sopra un riquadro con bordo:195`Box` dispone ciò che contiene in una riga o in una colonna e può disegnare un bordo. Questo esempio posiziona una riga di parole sopra un riquadro con bordo:
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="Un pannello con tre parole in una riga, distanziate di quattro colonne, poi una riga vuota, poi un bordo arrotondato attorno a una riga di testo. Il bordo si estende per l'intera larghezza del pannello." 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="Un pannello con tre parole in una riga, distanziate di quattro colonne, poi una riga vuota, poi un bordo arrotondato attorno a una riga di testo. Il bordo si estende per l'intera larghezza del pannello." width="1872" height="338" data-path="images/mods-el-box-dark.png" />
253 217
254Il bordo si estende fino alla larghezza del pannello.218Il bordo si estende fino alla larghezza del pannello.
255 219
256<h2 id="take-input">220## Ricevere input
257 Ricevere input
258</h2>
259 221
260`Button`, `Input` e `Select` sono controlli: l'utente si sposta tra di essi con Tab e usa quello che ha il focus. [Focus della tastiera e tasti di scelta rapida](/docs/it/plugins/mods/interface#know-which-keys-your-mod-can-receive) spiega quali tasti li raggiungono.222`Button`, `Input` e `Select` sono controlli: l'utente si sposta tra di essi con Tab e usa quello che ha il focus. [Focus della tastiera e tasti di scelta rapida](/docs/it/plugins/mods/interface#know-which-keys-your-mod-can-receive) spiega quali tasti li raggiungono.
261 223
262Apri un pannello con `focus: true` per richiedere il focus della tastiera per il pannello. Le lettere digitate raggiungono un `Input` una volta che ha il focus. Per scegliere quale campo ha il focus quando il pannello si apre, consulta [Impostare un tasto di scelta rapida e il primo focus](/docs/it/plugins/mods/interface#set-a-hotkey-and-the-first-focus).224Apri un pannello con `focus: true` per richiedere il focus della tastiera per il pannello. Le lettere digitate raggiungono un `Input` una volta che ha il focus. Per scegliere quale campo ha il focus quando il pannello si apre, consulta [Impostare un tasto di scelta rapida e il primo focus](/docs/it/plugins/mods/interface#set-a-hotkey-and-the-first-focus).
263 225
264<h3 id="button">226### `Button`
265 `Button`
266</h3>
267 227
268Un pulsante esegue `onPress`. Questo esempio mostra la forma predefinita, un pulsante `plain` con un tasto di scelta rapida e uno attenuato:228Un pulsante esegue `onPress`. Questo esempio mostra la forma predefinita, un pulsante `plain` con un tasto di scelta rapida e uno attenuato:
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="Un pannello con tre pulsanti, uno per riga: Save tra parentesi quadre, n: Next senza parentesi e con la n colorata, e Skip tra parentesi quadre in grigio." 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="Un pannello con tre pulsanti, uno per riga: Save tra parentesi quadre, n: Next senza parentesi e con la n colorata, e Skip tra parentesi quadre in grigio." width="1872" height="262" data-path="images/mods-el-button-dark.png" />
284 242
285Un pulsante che ha il focus viene disegnato in video inverso. Qui l'utente ha premuto Tab due volte:243Un pulsante che ha il focus viene disegnato in video inverso. Qui l'utente ha premuto Tab due volte:
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="Gli stessi tre pulsanti, con il secondo, n: Next, disegnato in video inverso." 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="Gli stessi tre pulsanti, con il secondo, n: Next, disegnato in video inverso." 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
295Un `Input` è un campo di testo su una riga che esegue `onSubmit` quando l'utente preme Invio:249Un `Input` è un campo di testo su una riga che esegue `onSubmit` quando l'utente preme Invio:
296 250
307 261
308Senza il focus, il campo mostra la sua etichetta e il suo placeholder:262Senza il focus, il campo mostra la sua etichetta e il suo placeholder:
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="Un pannello con una riga: l'etichetta Title, poi il placeholder Type a title and press Enter in grigio." 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="Un pannello con una riga: l'etichetta Title, poi il placeholder Type a title and press Enter in grigio." width="1872" height="186" data-path="images/mods-el-input-dark.png" />
313 265
314Con il focus, l'etichetta diventa in grassetto, compare un cursore e il `submitLabel` viene mostrato dopo `⏎`:266Con il focus, l'etichetta diventa in grassetto, compare un cursore e il `submitLabel` viene mostrato dopo `⏎`:
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="Lo stesso campo con l'etichetta in grassetto, un cursore a blocco sulla prima lettera del placeholder e un simbolo di invio seguito dalla parola 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="Lo stesso campo con l'etichetta in grassetto, un cursore a blocco sulla prima lettera del placeholder e un simbolo di invio seguito dalla parola save." width="1872" height="186" data-path="images/mods-el-input-focused-dark.png" />
319 269
320La digitazione sostituisce il placeholder:270La digitazione sostituisce il placeholder:
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="Lo stesso campo contenente le lettere digitate Rel, seguite dal simbolo di invio e dalla parola 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="Lo stesso campo contenente le lettere digitate Rel, seguite dal simbolo di invio e dalla parola 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
330Un `Select` consente all'utente di scegliere una tra diverse opzioni ed esegue `onSelect` con il `value` dell'opzione:276Un `Select` consente all'utente di scegliere una tra diverse opzioni ed esegue `onSelect` con il `value` dell'opzione:
331 277
347 293
348Da chiuso, mostra la sua etichetta e l'opzione corrente:294Da chiuso, mostra la sua etichetta e l'opzione corrente:
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="Un pannello con una riga: l'etichetta Format, l'opzione corrente Markdown e una piccola freccia verso il basso." 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="Un pannello con una riga: l'etichetta Format, l'opzione corrente Markdown e una piccola freccia verso il basso." width="1872" height="186" data-path="images/mods-el-select-dark.png" />
353 297
354Da aperto, elenca le sue opzioni e ne evidenzia una:298Da aperto, elenca le sue opzioni e ne evidenzia una:
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="Il selettore aperto, con le sue tre opzioni elencate sotto l'etichetta. La seconda opzione, HTML, è disegnata in video inverso." 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="Il selettore aperto, con le sue tre opzioni elencate sotto l'etichetta. La seconda opzione, HTML, è disegnata in video inverso." width="1872" height="300" data-path="images/mods-el-select-moved-dark.png" />
359 301
360Dopo che l'utente ha scelto un'opzione, l'elenco si chiude:302Dopo che l'utente ha scelto un'opzione, l'elenco si chiude:
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="Il selettore di nuovo chiuso, che ora mostra HTML come opzione corrente." 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="Il selettore di nuovo chiuso, che ora mostra HTML come opzione corrente." width="1872" height="186" data-path="images/mods-el-select-picked-dark.png" />306## Disegnare immagini
365 307
366<h2 id="draw-pictures">308### `Raster`
367 Disegnare immagini
368</h2>
369
370<h3 id="raster">
371 `Raster`
372</h3>
373 309
374Un `Raster` è una griglia di celle di caratteri colorate, per una mappa di calore, una sparkline o una plancia di gioco. Lo disegna il terminale. Questo esempio usa la funzione `cellsOf` del modulo iniziale, che comprime le celle nella stringa accettata da un `Raster`. [Disegnare una griglia di celle colorate](/docs/it/plugins/mods/interface#draw-a-grid-of-colored-cells) la spiega:310Un `Raster` è una griglia di celle di caratteri colorate, per una mappa di calore, una sparkline o una plancia di gioco. Lo disegna il terminale. Questo esempio usa la funzione `cellsOf` del modulo iniziale, che comprime le celle nella stringa accettata da un `Raster`. [Disegnare una griglia di celle colorate](/docs/it/plugins/mods/interface#draw-a-grid-of-colored-cells) la spiega:
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="Un riquadro con una piccola griglia di blocchi colorati, due righe da tre: verde, ambra e rosso, poi verde, verde e ambra." 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="Un riquadro con una piccola griglia di blocchi colorati, due righe da tre: verde, ambra e rosso, poi verde, verde e ambra." width="1872" height="224" data-path="images/mods-el-raster-dark.png" />
391 325
392Un `Raster` arrotonda ogni colore a una tavolozza più ridotta, quindi `0x2e7d32` viene disegnato come `#337733`.326Un `Raster` arrotonda ogni colore a una tavolozza più ridotta, quindi `0x2e7d32` viene disegnato come `#337733`.
393 327
394<h3 id="svg">328### `Svg`
395 `Svg`
396</h3>
397 329
398Un `Svg` disegna un documento SVG nell'app Desktop e nell'estensione VS Code:330Un `Svg` disegna un documento SVG nell'app Desktop e nell'estensione VS Code:
399 331
409 341
410Nel terminale, un riquadro che restituisce solo un `Svg` si apre vuoto. Per disegnare qualcos'altro lì, controlla [`e.surface`](/docs/it/plugins/mods/interface#pick-where-to-draw) e restituisci un albero diverso.342Nel terminale, un riquadro che restituisce solo un `Svg` si apre vuoto. Per disegnare qualcos'altro lì, controlla [`e.surface`](/docs/it/plugins/mods/interface#pick-where-to-draw) e restituisci un albero diverso.
411 343
412<h3 id="image-and-client">344### `Image` e `Client`
413 `Image` e `Client`
414</h3>
415 345
416Altri due elementi non hanno un esempio qui. `Image` disegna un PNG o pixel grezzi nel terminale. `Client` è una regione disegnata da un tuo secondo file, per animazioni e input del puntatore. Il [riferimento degli elementi](/docs/it/plugins/mods/reference#elements) elenca le loro prop.346Altri due elementi non hanno un esempio qui. `Image` disegna un PNG o pixel grezzi nel terminale. `Client` è una regione disegnata da un tuo secondo file, per animazioni e input del puntatore. Il [riferimento degli elementi](/docs/it/plugins/mods/reference#elements) elenca le loro prop.
417 347
423 353
424Se gli utenti del tuo mod vedono il testo attenuato in un terminale che disegna effettivamente quelle immagini segnaposto, possono impostare [`CLAUDE_CODE_FORCE_TERMINAL_IMAGES`](/docs/it/env-vars) su `1`, il che salta il rilevamento. All'interno di tmux o screen questo non aiuta: il testo `alt` scompare e Claude Code invia l'immagine senza incapsularla per il passthrough di tmux o screen.354Se gli utenti del tuo mod vedono il testo attenuato in un terminale che disegna effettivamente quelle immagini segnaposto, possono impostare [`CLAUDE_CODE_FORCE_TERMINAL_IMAGES`](/docs/it/env-vars) su `1`, il che salta il rilevamento. All'interno di tmux o screen questo non aiuta: il testo `alt` scompare e Claude Code invia l'immagine senza incapsularla per il passthrough di tmux o screen.
425 355
426<h2 id="see-where-a-mod-can-draw">356## Scopri dove un mod può disegnare
427 Scopri dove un mod può disegnare
428</h2>
429 357
430Gli esempi disegnano tutti in un pannello. Un mod può anche disegnare in altri punti e chiamare Claude Code perché mostri qualcosa al posto suo:358Gli esempi disegnano tutti in un pannello. Un mod può anche disegnare in altri punti e chiamare Claude Code perché mostri qualcosa al posto suo:
431 359
434* **Toast, riga di stato e riga di log**: [Mostra qualcosa senza avviare un turno](/docs/it/plugins/mods/api#show-something-without-starting-a-turn)362* **Toast, riga di stato e riga di log**: [Mostra qualcosa senza avviare un turno](/docs/it/plugins/mods/api#show-something-without-starting-a-turn)
435* **Finestra di dialogo con domanda**: [Trattieni una chiamata a uno strumento finché l'utente non decide](/docs/it/plugins/mods/events#hold-a-tool-call-until-the-user-decides)363* **Finestra di dialogo con domanda**: [Trattieni una chiamata a uno strumento finché l'utente non decide](/docs/it/plugins/mods/events#hold-a-tool-call-until-the-user-decides)
436 364
437<h2 id="next-steps">365## Passaggi successivi
438 Passaggi successivi
439</h2>
440 366
441* [Disegna nell'interfaccia](/docs/it/plugins/mods/interface): crea un pannello con schede, passo dopo passo367* [Disegna nell'interfaccia](/docs/it/plugins/mods/interface): crea un pannello con schede, passo dopo passo
442* [Testa un disegno](/docs/it/plugins/mods/test#test-a-drawing): premi i tuoi pulsanti da un test368* [Testa un disegno](/docs/it/plugins/mods/test#test-a-drawing): premi i tuoi pulsanti da un test