@smworks-cz/ui-kit 1.5.1 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,7 +1,8 @@
1
- import React from 'react';
1
+ import * as React from 'react';
2
+ import React__default from 'react';
2
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
4
 
4
- type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'danger';
5
+ type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'danger' | 'danger-outline';
5
6
  type ButtonSize = 'sm' | 'md' | 'lg';
6
7
  type ButtonIconPosition = 'left' | 'right';
7
8
  /** Sdílené props pro režim `<button>` i `<a>`. */
@@ -9,9 +10,10 @@ interface ButtonBaseProps {
9
10
  /**
10
11
  * Vizuální varianta tlačítka.
11
12
  * - `primary` — oranžové vyplnění (#FC4F00)
12
- * - `secondary` — průhledné, bez okraje
13
- * - `outline` — průhledné s bílým okrajem
13
+ * - `secondary` — jemné tónované pozadí bez okraje (viditelné i na kartě)
14
+ * - `outline` — průhledné s okrajem
14
15
  * - `danger` — červené vyplnění (#EF3838)
16
+ * - `danger-outline` — průhledné s červeným okrajem a červeným textem
15
17
  * @default 'primary'
16
18
  */
17
19
  variant?: ButtonVariant;
@@ -24,7 +26,7 @@ interface ButtonBaseProps {
24
26
  * Volitelná ikona — libovolný React uzel (SVG, komponenta…).
25
27
  * Při použití bez `children` se tlačítko vykreslí jako čtverec.
26
28
  */
27
- icon?: React.ReactNode;
29
+ icon?: React__default.ReactNode;
28
30
  /**
29
31
  * Na které straně se ikona zobrazí vzhledem k textu.
30
32
  * @default 'left'
@@ -44,14 +46,15 @@ interface ButtonBaseProps {
44
46
  */
45
47
  loadingPosition?: 'replace' | 'after-text';
46
48
  /**
47
- * Roztáhne tlačítko na celou šířku kontejneru.
49
+ * Roztáhne tlačítko na dostupnou šířku. Ve flex řádku vedle jiných prvků
50
+ * vyplní zbytek (`flex: 1 1 auto`, `min-width: 0`), nepřeteče rodiče.
48
51
  */
49
52
  fullWidth?: boolean;
50
53
  /**
51
54
  * Další inline styly aplikované na kořenový element (`<button>` nebo `<a>`).
52
55
  * Sloučeny za všechny variantní / velikostní styly — pro jednorázové přepsání.
53
56
  */
54
- style?: React.CSSProperties;
57
+ style?: React__default.CSSProperties;
55
58
  /**
56
59
  * Dodatečná CSS třída pro kořenový element.
57
60
  */
@@ -60,25 +63,25 @@ interface ButtonBaseProps {
60
63
  * Textový obsah tlačítka.
61
64
  * Při vynechání (pokud je zadána `icon`) se tlačítko vykreslí jako čtverec.
62
65
  */
63
- children?: React.ReactNode;
66
+ children?: React__default.ReactNode;
64
67
  }
65
68
  /** Vykreslení jako nativní `<button>` (výchozí). Dědí všechny standardní atributy — včetně `onClick`, `type`, `form`, `name`, `value`, `aria-*` apod. */
66
- interface ButtonAsButtonProps extends ButtonBaseProps, Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, keyof ButtonBaseProps> {
69
+ interface ButtonAsButtonProps extends ButtonBaseProps, Omit<React__default.ButtonHTMLAttributes<HTMLButtonElement>, keyof ButtonBaseProps> {
67
70
  /** Při vynechání se komponenta vykreslí jako `<button>`. */
68
71
  href?: undefined;
69
72
  }
70
73
  /** Vykreslení jako `<a>` odkaz, pokud je zadáno `href`. Vhodné pro navigační tlačítka. */
71
- interface ButtonAsAnchorProps extends ButtonBaseProps, Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof ButtonBaseProps> {
74
+ interface ButtonAsAnchorProps extends ButtonBaseProps, Omit<React__default.AnchorHTMLAttributes<HTMLAnchorElement>, keyof ButtonBaseProps> {
72
75
  href: string;
73
76
  }
74
77
  type ButtonProps = ButtonAsButtonProps | ButtonAsAnchorProps;
75
- declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
78
+ declare const Button: React__default.ForwardRefExoticComponent<ButtonProps & React__default.RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
76
79
 
77
- interface IconButtonProps {
80
+ interface IconButtonProps extends Omit<React__default.ButtonHTMLAttributes<HTMLButtonElement>, 'onClick' | 'style' | 'className'> {
78
81
  /** Ikona. */
79
- icon: React.ReactNode;
82
+ icon: React__default.ReactNode;
80
83
  /** Callback při kliknutí. */
81
- onClick?: (e: React.MouseEvent) => void;
84
+ onClick?: (e: React__default.MouseEvent<HTMLButtonElement>) => void;
82
85
  /** Povinný aria-label pro přístupnost. */
83
86
  label: string;
84
87
  /** Varianta. @default 'default' */
@@ -89,10 +92,18 @@ interface IconButtonProps {
89
92
  disabled?: boolean;
90
93
  /** Zobrazí spinner. @default false */
91
94
  loading?: boolean;
95
+ /**
96
+ * Sepnutý stav (toggle v toolbaru — tučné písmo, filtr…). Zvýrazní pozadí
97
+ * a nastaví `aria-pressed`.
98
+ * @default false
99
+ */
100
+ active?: boolean;
92
101
  /** Automaticky obalí tooltipem. */
93
102
  tooltip?: string;
103
+ /** Typ nativního tlačítka. @default 'button' */
104
+ type?: 'button' | 'submit' | 'reset';
94
105
  /** Další inline styly. */
95
- style?: React.CSSProperties;
106
+ style?: React__default.CSSProperties;
96
107
  /** Dodatečná CSS třída. */
97
108
  className?: string;
98
109
  }
@@ -100,33 +111,35 @@ interface IconButtonProps {
100
111
  * Čtvercové tlačítko pro ikonu.
101
112
  *
102
113
  * Optimalizované pro akce bez textu — klikací plocha je čtvercová,
103
- * varianta a velikost se řídí samostatně.
114
+ * varianta a velikost se řídí samostatně. Forwarduje `ref` a propouští
115
+ * nativní atributy (`type`, `title`, `aria-*`, `data-*`, `form`…).
104
116
  *
105
117
  * @example
106
118
  * ```tsx
107
119
  * <IconButton icon={<TrashIcon />} label="Smazat" variant="danger" onClick={handleDelete} />
108
120
  * <IconButton icon={<PencilIcon />} label="Upravit" tooltip="Upravit záznam" />
121
+ * <IconButton icon={<TextBIcon />} label="Tučně" active={isBold} onClick={toggleBold} />
109
122
  * ```
110
123
  */
111
- declare const IconButton: React.FC<IconButtonProps>;
124
+ declare const IconButton: React__default.ForwardRefExoticComponent<IconButtonProps & React__default.RefAttributes<HTMLButtonElement>>;
112
125
 
113
126
  interface FormFieldProps {
114
127
  /** Popisek pole. */
115
- label?: string | React.ReactNode;
128
+ label?: string | React__default.ReactNode;
116
129
  /** Povinné pole — zobrazí hvězdičku. @default false */
117
130
  required?: boolean;
118
131
  /** Nápovědný text pod polem. */
119
- helperText?: string | React.ReactNode;
132
+ helperText?: string | React__default.ReactNode;
120
133
  /** Chybová zpráva — zobrazí se červeně pod polem. */
121
- error?: string | React.ReactNode;
134
+ error?: string | React__default.ReactNode;
122
135
  /** Formulářový prvek (input, select, atd.). */
123
- children: React.ReactNode;
136
+ children: React__default.ReactNode;
124
137
  /** Vodorovný layout (label vlevo, field vpravo). @default false */
125
138
  inline?: boolean;
126
139
  /** Šířka labelu v inline režimu. @default '120px' */
127
140
  labelWidth?: number | string;
128
141
  /** Další inline styly. */
129
- style?: React.CSSProperties;
142
+ style?: React__default.CSSProperties;
130
143
  /** Dodatečná CSS třída. */
131
144
  className?: string;
132
145
  }
@@ -147,10 +160,45 @@ interface FormFieldProps {
147
160
  * </FormField>
148
161
  * ```
149
162
  */
150
- declare const FormField: React.FC<FormFieldProps>;
163
+ declare const FormField: React__default.FC<FormFieldProps>;
164
+
165
+ interface FieldLabelProps extends Omit<React__default.LabelHTMLAttributes<HTMLLabelElement>, 'children'> {
166
+ /** Text popisku. */
167
+ children: React__default.ReactNode;
168
+ /** Zobrazí hvězdičku povinného pole. @default false */
169
+ required?: boolean;
170
+ /** Vykreslit jako `<span>` místo `<label>` (pro prvky, které nejsou formulářové). @default 'label' */
171
+ as?: 'label' | 'span';
172
+ }
173
+ /**
174
+ * Samostatný popisek pole ve stylu SM-UI (Zalando Sans Expanded, 10px, verzálky).
175
+ * Stejná typografie, jakou používá `label` prop u Input / Select / Textarea,
176
+ * pro vlastní prvky konzumenta.
177
+ *
178
+ * @example
179
+ * ```tsx
180
+ * <FieldLabel htmlFor="color" required>Barva</FieldLabel>
181
+ * <FieldLabel as="span">Nastavení</FieldLabel>
182
+ * ```
183
+ */
184
+ declare const FieldLabel: React__default.FC<FieldLabelProps>;
151
185
 
152
186
  type InputSize = 'sm' | 'md' | 'lg';
153
- interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {
187
+ type InputVariant = 'default' | 'inline';
188
+ interface InputProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, 'size'> {
189
+ /**
190
+ * Vizuální varianta.
191
+ * - `'default'` — pole s pozadím a rámečkem
192
+ * - `'inline'` — bez pozadí a rámečku v klidu (vypadá jako text), rámeček až na hover / focus.
193
+ * Pro editaci přímo v buňce tabulky nebo kartě (click-to-edit).
194
+ * @default 'default'
195
+ */
196
+ variant?: InputVariant;
197
+ /**
198
+ * Voláno při potvrzení hodnoty — na blur a na Enter — jen pokud se hodnota
199
+ * od získání fokusu změnila. Vzor click-to-edit: uložení až po dopsání, ne na každý stisk.
200
+ */
201
+ onCommit?: (value: string) => void;
154
202
  /**
155
203
  * Popisek zobrazený nad vstupním polem.
156
204
  * Stylizován velkými písmeny dle SM-UI design systému.
@@ -161,7 +209,7 @@ interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, '
161
209
  * Ikona vykreslená uvnitř vstupního pole.
162
210
  * Typicky SVG nebo komponenta ikony.
163
211
  */
164
- icon?: React.ReactNode;
212
+ icon?: React__default.ReactNode;
165
213
  /**
166
214
  * Na které straně se ikona zobrazí.
167
215
  * @default 'left'
@@ -211,7 +259,7 @@ interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, '
211
259
  * Další inline styly pro **obalový** `<div>` (ne pro nativní input).
212
260
  * Pro stylování nativního `<input>` použijte `inputStyle`.
213
261
  */
214
- style?: React.CSSProperties;
262
+ style?: React__default.CSSProperties;
215
263
  /**
216
264
  * Dodatečná CSS třída pro **obalový** `<div>`.
217
265
  */
@@ -219,7 +267,7 @@ interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, '
219
267
  /**
220
268
  * Další inline styly aplikované přímo na nativní `<input>` element.
221
269
  */
222
- inputStyle?: React.CSSProperties;
270
+ inputStyle?: React__default.CSSProperties;
223
271
  }
224
272
  interface InputGroupProps {
225
273
  /**
@@ -236,9 +284,9 @@ interface InputGroupProps {
236
284
  * Vstupní element(y) vykreslené uvnitř skupiny.
237
285
  * Při vynechání se vykreslí výchozí `<Input />`.
238
286
  */
239
- children?: React.ReactNode;
287
+ children?: React__default.ReactNode;
240
288
  /** Další inline styly pro obalový `<div>`. */
241
- style?: React.CSSProperties;
289
+ style?: React__default.CSSProperties;
242
290
  /** Dodatečná CSS třída pro obalový `<div>`. */
243
291
  className?: string;
244
292
  }
@@ -257,9 +305,10 @@ interface InputGroupProps {
257
305
  * <Input icon={<SearchIcon />} placeholder="Hledat…" clearable />
258
306
  * <Input error="Toto pole je povinné" value="" />
259
307
  * <Input label="Heslo" type="password" helperText="Min. 8 znaků" />
308
+ * <Input variant="inline" value={name} onChange={...} onCommit={save} />
260
309
  * ```
261
310
  */
262
- declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
311
+ declare const Input: React__default.ForwardRefExoticComponent<InputProps & React__default.RefAttributes<HTMLInputElement>>;
263
312
  /**
264
313
  * Obalí `<Input>` (nebo jiný formulářový prvek) skupinou s popiskem.
265
314
  * Popisek je stylizován velkými písmeny dle SM-UI design systému.
@@ -275,15 +324,11 @@ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttri
275
324
  * </InputGroup>
276
325
  * ```
277
326
  */
278
- declare const InputGroup: React.FC<InputGroupProps>;
327
+ declare const InputGroup: React__default.FC<InputGroupProps>;
279
328
 
280
329
  type NumberInputSize = 'sm' | 'md' | 'lg';
281
- type NumberInputVariant = 'default' | 'compact';
282
- interface NumberInputProps {
283
- /** Aktuální numerická hodnota. */
284
- value: number;
285
- /** Callback volaný při změně hodnoty. */
286
- onChange: (value: number) => void;
330
+ type NumberInputVariant = 'default' | 'compact' | 'inline';
331
+ interface NumberInputBaseProps {
287
332
  /** Minimální povolená hodnota. */
288
333
  min?: number;
289
334
  /** Maximální povolená hodnota. */
@@ -292,8 +337,14 @@ interface NumberInputProps {
292
337
  step?: number;
293
338
  /** Popisek zobrazený nad polem. Stylizován velkými písmeny dle SM-UI design systému. */
294
339
  label?: string;
340
+ /** Označí pole jako povinné (hvězdička u popisku). */
341
+ required?: boolean;
342
+ /** Zástupný text zobrazený při prázdném poli. */
343
+ placeholder?: string;
295
344
  /** Při `true` se pole zobrazí jako nevalidní. Při zadání řetězce se zobrazí chybová zpráva. */
296
345
  error?: boolean | string;
346
+ /** Nápovědný text zobrazený pod polem. Nezobrazí se pokud je aktivní chybová zpráva. */
347
+ helperText?: string;
297
348
  /** Zakáže celé pole včetně tlačítek. */
298
349
  disabled?: boolean;
299
350
  /**
@@ -308,61 +359,80 @@ interface NumberInputProps {
308
359
  * Varianta rozložení.
309
360
  * - `'default'` -- tlačítka −/+ po stranách
310
361
  * - `'compact'` -- šipky nahoru/dolů vpravo uvnitř pole
362
+ * - `'inline'` -- bez tlačítek, bez rámečku v klidu (editace v buňce); šipky na klávesnici fungují
311
363
  * @default 'default'
312
364
  */
313
365
  variant?: NumberInputVariant;
366
+ /**
367
+ * Roztáhne pole na celou šířku kontejneru.
368
+ * @default false
369
+ */
370
+ fullWidth?: boolean;
314
371
  /** Text zobrazený před hodnotou (např. měna). */
315
372
  prefix?: string;
316
373
  /** Text zobrazený za hodnotou (např. jednotka). */
317
374
  suffix?: string;
375
+ /**
376
+ * Voláno při potvrzení hodnoty — na blur a na Enter — jen pokud se hodnota
377
+ * od získání fokusu změnila.
378
+ */
379
+ onCommit?: (value: number | null) => void;
380
+ /** `id` nativního inputu. Automaticky generováno, pokud chybí. */
381
+ id?: string;
382
+ /** Atribut `name` nativního inputu. */
383
+ name?: string;
318
384
  /** Další inline styly pro obalový `<div>`. */
319
- style?: React.CSSProperties;
385
+ style?: React__default.CSSProperties;
320
386
  /** Dodatečná CSS třída pro obalový `<div>`. */
321
387
  className?: string;
322
388
  }
323
- /**
324
- * Numerické vstupní pole s tlačítky +/− dle SM-UI design systému.
325
- *
326
- * Podržením tlačítka se hodnota plynule inkrementuje / dekrementuje.
327
- * Hodnota je automaticky omezena na rozsah `min`–`max`.
328
- *
329
- * @example
330
- * ```tsx
331
- * <NumberInput value={count} onChange={setCount} min={0} max={100} step={5} />
332
- * <NumberInput value={price} onChange={setPrice} prefix="$" suffix="USD" />
333
- * ```
334
- */
335
- declare const NumberInput: React.ForwardRefExoticComponent<NumberInputProps & React.RefAttributes<HTMLInputElement>>;
389
+ interface NumberInputStrictProps extends NumberInputBaseProps {
390
+ /** Pole nemůže být prázdné (výchozí) blur doplní poslední platnou hodnotu. */
391
+ allowEmpty?: false;
392
+ /** Aktuální numerická hodnota. */
393
+ value: number;
394
+ /** Callback volaný při změně hodnoty. */
395
+ onChange(value: number): void;
396
+ }
397
+ interface NumberInputEmptyProps extends NumberInputBaseProps {
398
+ /**
399
+ * Povolí prázdné pole ("není nastaveno"). Vymazání pole zavolá `onChange(null)`
400
+ * a blur prázdné pole nenahradí hodnotou `min`.
401
+ */
402
+ allowEmpty: true;
403
+ /** Aktuální numerická hodnota; `null` = prázdné pole. */
404
+ value: number | null;
405
+ /** Callback volaný při změně hodnoty; `null`, když uživatel pole vymaže. */
406
+ onChange(value: number | null): void;
407
+ }
408
+ type NumberInputProps = NumberInputStrictProps | NumberInputEmptyProps;
409
+ declare const NumberInput: ((props: NumberInputProps & React__default.RefAttributes<HTMLInputElement>) => React__default.ReactElement | null) & {
410
+ displayName?: string;
411
+ };
336
412
 
337
- interface SelectOption {
413
+ type SelectSize = 'sm' | 'md' | 'lg';
414
+ type SelectValue = string | number;
415
+ interface SelectOption<V = string> {
338
416
  /** Unikátní hodnota položky. */
339
- value: string;
417
+ value: V;
340
418
  /** Zobrazovaný popisek. Pokud chybí, použije se `value`. */
341
419
  label?: string;
342
420
  /** Při `true` nelze položku vybrat. */
343
421
  disabled?: boolean;
344
422
  }
345
- interface SelectProps {
346
- /** Dostupné položky k výběru. */
347
- options: SelectOption[];
348
- /**
349
- * Aktuální hodnota.
350
- * - Jednoduchý výběr: `string | null`
351
- * - Vícenásobný výběr: `string[]`
352
- */
353
- value?: string | string[] | null;
354
- /**
355
- * Voláno při změně výběru.
356
- * - Jednoduchý výběr: `(value: string | null) => void`
357
- * - Vícenásobný výběr: `(value: string[]) => void`
358
- */
359
- onChange?: (value: any) => void;
360
- /** Umožní vybrat více položek najednou. @default false */
361
- multiple?: boolean;
423
+ /** Skupina položek (optgroup) — nadpis + vlastní položky. */
424
+ interface SelectOptionGroup<V = string> {
425
+ /** Nadpis skupiny. */
426
+ label: string;
427
+ /** Položky skupiny. */
428
+ options: SelectOption<V>[];
429
+ }
430
+ type SelectOptions<V = string> = (SelectOption<V> | SelectOptionGroup<V>)[];
431
+ interface SelectBaseProps<V> {
432
+ /** Dostupné položky k výběru. Položky lze seskupit: `{ label: 'Skupina', options: [...] }`. */
433
+ options: SelectOptions<V>;
362
434
  /** Zobrazí textové pole pro filtrování položek. @default false */
363
435
  searchable?: boolean;
364
- /** Zobrazí tlačítko pro vymazání výběru. @default false */
365
- clearable?: boolean;
366
436
  /** Zakáže celý select. @default false */
367
437
  disabled?: boolean;
368
438
  /**
@@ -377,7 +447,7 @@ interface SelectProps {
377
447
  * Async vyhledávání — když zadáno, filtrace nejede client-side.
378
448
  * Voláno s textem hledání, vrací Promise s novými options.
379
449
  */
380
- onSearch?: (query: string) => Promise<SelectOption[]>;
450
+ onSearch?: (query: string) => Promise<SelectOption<V>[]>;
381
451
  /** Povolí uživateli vytvořit novou hodnotu. @default false */
382
452
  creatable?: boolean;
383
453
  /** Callback při vytvoření nové hodnoty. */
@@ -389,33 +459,77 @@ interface SelectProps {
389
459
  * @default 'inline'
390
460
  */
391
461
  chipDisplay?: 'inline' | 'count';
392
- /** Vlastní renderování položky v seznamu. */
393
- renderOption?: (option: SelectOption, selected: boolean) => React.ReactNode;
462
+ /** Vlastní renderování položky v seznamu (nahrazuje celý obsah řádku včetně fajfky). */
463
+ renderOption?: (option: SelectOption<V>, selected: boolean) => React__default.ReactNode;
394
464
  /** Vlastní renderování vybrané hodnoty v triggeru. */
395
- renderValue?: (option: SelectOption) => React.ReactNode;
465
+ renderValue?: (option: SelectOption<V>) => React__default.ReactNode;
466
+ /** Voláno při otevření / zavření dropdownu. */
467
+ onOpenChange?: (open: boolean) => void;
396
468
  /**
397
469
  * Popisek zobrazený nad selectem.
398
470
  * Stylizován velkými písmeny dle SM-UI design systému.
399
471
  */
400
472
  label?: string;
473
+ /** Označí select jako povinný (hvězdička u popisku, stejně jako `Input`). */
474
+ required?: boolean;
401
475
  /** Zástupný text zobrazený při prázdném výběru. */
402
476
  placeholder?: string;
477
+ /**
478
+ * Velikostní preset (shodný s Input / DatePicker / Combobox).
479
+ * @default 'md'
480
+ */
481
+ size?: SelectSize;
403
482
  /** Maximální výška (px) rozbalovacího seznamu před scrollováním. @default 240 */
404
483
  maxDropdownHeight?: number;
484
+ /** `id` triggeru (pro `<label htmlFor>`). Automaticky generováno, pokud chybí. */
485
+ id?: string;
405
486
  /** Další inline styly pro kořenový obal. */
406
- style?: React.CSSProperties;
487
+ style?: React__default.CSSProperties;
407
488
  /** Dodatečná CSS třída pro kořenový obal. */
408
489
  className?: string;
409
490
  }
491
+ interface SelectSingleProps<V = string> extends SelectBaseProps<V> {
492
+ /** Jednoduchý výběr (výchozí). */
493
+ multiple?: false;
494
+ /** Bez tlačítka pro vymazání (výchozí). */
495
+ clearable?: false;
496
+ /** Aktuální hodnota. */
497
+ value?: NoInfer<V> | null;
498
+ /** Voláno při změně výběru. */
499
+ onChange?(value: NoInfer<V>): void;
500
+ }
501
+ interface SelectSingleClearableProps<V = string> extends SelectBaseProps<V> {
502
+ /** Jednoduchý výběr (výchozí). */
503
+ multiple?: false;
504
+ /** Zobrazí tlačítko pro vymazání výběru — `onChange` pak může dostat `null`. */
505
+ clearable: true;
506
+ /** Aktuální hodnota. */
507
+ value?: NoInfer<V> | null;
508
+ /** Voláno při změně výběru (`null` po vymazání). */
509
+ onChange?(value: NoInfer<V> | null): void;
510
+ }
511
+ interface SelectMultipleProps<V = string> extends SelectBaseProps<V> {
512
+ /** Umožní vybrat více položek najednou. */
513
+ multiple: true;
514
+ /** Zobrazí tlačítko pro vymazání výběru. @default false */
515
+ clearable?: boolean;
516
+ /** Aktuální hodnoty. */
517
+ value?: NoInfer<V>[] | null;
518
+ /** Voláno při změně výběru. */
519
+ onChange?(value: NoInfer<V>[]): void;
520
+ }
521
+ type SelectProps<V = string> = SelectSingleProps<V> | SelectSingleClearableProps<V> | SelectMultipleProps<V>;
410
522
  interface SelectGroupProps {
411
523
  /** Text popisku nad selectem, velkými písmeny dle SM-UI design systému. */
412
524
  label: string;
525
+ /** Označí skupinu jako povinnou (hvězdička u popisku). */
526
+ required?: boolean;
413
527
  /** `htmlFor` propojující `<label>` se selectem. Automaticky generováno, pokud chybí. */
414
528
  htmlFor?: string;
415
529
  /** Select element(y) vykreslené uvnitř skupiny. */
416
- children?: React.ReactNode;
530
+ children?: React__default.ReactNode;
417
531
  /** Další inline styly pro obal. */
418
- style?: React.CSSProperties;
532
+ style?: React__default.CSSProperties;
419
533
  /** Dodatečná CSS třída pro obal. */
420
534
  className?: string;
421
535
  }
@@ -423,10 +537,13 @@ interface SelectGroupProps {
423
537
  * Vlastní rozbalovací výběr dle SM-UI design systému.
424
538
  *
425
539
  * Podporuje jednoduchý / vícenásobný výběr, fulltextové vyhledávání,
426
- * vymazání hodnoty, chybový stav a tmavý / světlý režim přes `useTheme`.
540
+ * skupiny položek (optgroup), vymazání hodnoty, chybový stav a tmavý / světlý
541
+ * režim přes `useTheme`. Hodnoty mohou být `string` i `number`; typ `onChange`
542
+ * je odvozený z `multiple`.
427
543
  *
428
544
  * Dropdown se vykresluje přes React portál, takže ho neořízne
429
- * rodičovský kontejner s `overflow: hidden`.
545
+ * rodičovský kontejner s `overflow: hidden`. Funguje i uvnitř Popoveru / Sheetu.
546
+ * Forwarduje `ref` na trigger (`ref.current.focus()`).
430
547
  *
431
548
  * @example
432
549
  * ```tsx
@@ -439,18 +556,23 @@ interface SelectGroupProps {
439
556
  * clearable
440
557
  * />
441
558
  *
442
- * // Vícenásobný výběr s vyhledáváním
559
+ * // Skupiny + číselné hodnoty
443
560
  * <Select
444
- * options={tagy}
445
- * value={vybraneTaxy}
446
- * onChange={setVybraneTaxy}
447
- * multiple
448
- * searchable
449
- * placeholder="Vyberte tagy…"
561
+ * options={[
562
+ * { label: 'Jaro', options: [{ value: 3, label: 'Březen' }, { value: 4, label: 'Duben' }] },
563
+ * { label: 'Léto', options: [{ value: 6, label: 'Červen' }] },
564
+ * ]}
565
+ * value={mesic}
566
+ * onChange={(v) => setMesic(v)}
450
567
  * />
568
+ *
569
+ * // Vícenásobný výběr s vyhledáváním
570
+ * <Select options={tagy} value={vybrane} onChange={setVybrane} multiple searchable />
451
571
  * ```
452
572
  */
453
- declare const Select: React.FC<SelectProps>;
573
+ declare const Select: (<V = string>(props: SelectProps<V> & React__default.RefAttributes<HTMLDivElement>) => React__default.ReactElement | null) & {
574
+ displayName?: string;
575
+ };
454
576
  /**
455
577
  * Obalí `<Select>` skupinou s popiskem, vizuálně odpovídá `InputGroup`.
456
578
  *
@@ -461,32 +583,37 @@ declare const Select: React.FC<SelectProps>;
461
583
  * </SelectGroup>
462
584
  * ```
463
585
  */
464
- declare const SelectGroup: React.FC<SelectGroupProps>;
586
+ declare const SelectGroup: React__default.FC<SelectGroupProps>;
465
587
 
466
588
  type ComboboxSize = 'sm' | 'md' | 'lg';
467
- interface ComboboxOption {
589
+ type ComboboxValue = string | number;
590
+ interface ComboboxOption<V = string> {
468
591
  /** Unikátní hodnota položky. */
469
- value: string;
592
+ value: V;
470
593
  /** Zobrazovaný popisek. Pokud chybí, použije se `value`. */
471
594
  label?: string;
595
+ /** Libovolná další pole pro `renderOption` / `filterOption`. */
596
+ [key: string]: unknown;
472
597
  }
473
- interface ComboboxProps {
598
+ type ComboboxFilter<V = string> = (input: string, option: ComboboxOption<V>) => boolean;
599
+ interface ComboboxBaseProps<V> {
474
600
  /** Dostupné položky k výběru. */
475
- options: ComboboxOption[];
601
+ options: ComboboxOption<V>[];
476
602
  /**
477
- * Aktuální vybraná hodnota.
478
- * - Jednoduchý výběr: `string`
479
- * - Vícenásobný výběr: `string[]`
603
+ * Callback volaný při každé změně textu v poli — jak od uživatele, tak když
604
+ * kit text sám resetuje (blur, outside-click, výběr). Vhodné pro asynchronní filtrování.
480
605
  */
481
- value: string | string[];
606
+ onInputChange?: (input: string) => void;
482
607
  /**
483
- * Callback volaný při výběru položky.
484
- * - Jednoduchý výběr: `(value: string) => void`
485
- * - Vícenásobný výběr: `(value: string[]) => void`
608
+ * Klientský filtr položek podle napsaného textu.
609
+ * - `true` filtruje podle `label` (case-insensitive `includes`), výchozí
610
+ * - `false` žádný klientský filtr (server-side search přes `onInputChange`)
611
+ * - funkce `(input, option) => boolean` — vlastní filtr
612
+ * Filtr se uplatní až po prvním reálném stisku klávesy od otevření;
613
+ * text vybrané položky předvyplněný v poli se za filtr nepovažuje.
614
+ * @default true
486
615
  */
487
- onChange: (value: any) => void;
488
- /** Callback volaný při změně textu ve vyhledávacím poli. Vhodné pro asynchronní filtrování. */
489
- onInputChange?: (input: string) => void;
616
+ filterOption?: boolean | ComboboxFilter<V>;
490
617
  /** Zástupný text zobrazený při prázdném poli. */
491
618
  placeholder?: string;
492
619
  /** Popisek zobrazený nad polem. Stylizován velkými písmeny dle SM-UI design systému. */
@@ -495,62 +622,96 @@ interface ComboboxProps {
495
622
  error?: boolean | string;
496
623
  /** Zakáže celou komponentu. */
497
624
  disabled?: boolean;
498
- /** Zobrazí spinner místo ikony vyhledávání. Vhodné při načítání položek. */
625
+ /** Zobrazí spinner místo ikony vyhledávání. Pole zůstává editovatelné. */
499
626
  loading?: boolean;
500
- /** Umožní vybrat více položek najednou. @default false */
501
- multiple?: boolean;
502
- /** Zobrazí tlačítko pro vymazání výběru. @default false */
503
- clearable?: boolean;
504
627
  /** Voláno při otevření/zavření dropdownu. */
505
628
  onOpenChange?: (open: boolean) => void;
506
629
  /** Voláno při výběru položky. */
507
- onSelect?: (value: string, option: ComboboxOption) => void;
630
+ onSelect?: (value: V, option: ComboboxOption<V>) => void;
508
631
  /** Voláno při odebrání položky (multiple). */
509
- onDeselect?: (value: string, option: ComboboxOption) => void;
632
+ onDeselect?: (value: V, option: ComboboxOption<V>) => void;
510
633
  /** Voláno při vymazání výběru (clearable). */
511
634
  onClear?: () => void;
512
635
  /** Voláno při focus. */
513
- onFocus?: (event: React.FocusEvent) => void;
636
+ onFocus?: (event: React__default.FocusEvent) => void;
514
637
  /** Voláno při blur. */
515
- onBlur?: (event: React.FocusEvent) => void;
638
+ onBlur?: (event: React__default.FocusEvent) => void;
516
639
  /** Povolí uživateli zadat vlastní hodnotu, která není v seznamu. @default false */
517
640
  allowCustom?: boolean;
518
641
  /** Callback volaný při vytvoření vlastní hodnoty (Enter při `allowCustom`). */
519
642
  onCreate?: (value: string) => void;
520
643
  /** Vlastní renderování položky v seznamu. */
521
- renderOption?: (option: {
522
- value: string;
523
- label?: string;
524
- }, highlighted: boolean) => React.ReactNode;
644
+ renderOption?: (option: ComboboxOption<V>, highlighted: boolean) => React__default.ReactNode;
525
645
  /**
526
646
  * Obsah zobrazený když žádné výsledky neodpovídají.
527
647
  * Může být ReactNode nebo funkce `(close: () => void) => ReactNode`
528
648
  * pro přístup k zavření dropdownu.
529
649
  * @default "Žádné výsledky"
530
650
  */
531
- notFoundContent?: React.ReactNode | ((close: () => void) => React.ReactNode);
651
+ notFoundContent?: React__default.ReactNode | ((close: () => void) => React__default.ReactNode);
532
652
  /**
533
653
  * Obsah zobrazený pod seznamem položek uvnitř dropdownu.
534
654
  * Může být ReactNode nebo funkce `(close: () => void) => ReactNode`
535
655
  * pro přístup k zavření dropdownu.
536
656
  */
537
- footer?: React.ReactNode | ((close: () => void) => React.ReactNode);
657
+ footer?: React__default.ReactNode | ((close: () => void) => React__default.ReactNode);
538
658
  /**
539
659
  * Velikostní preset.
540
660
  * @default 'md'
541
661
  */
542
662
  size?: ComboboxSize;
663
+ /**
664
+ * Roztáhne pole na celou šířku rodiče (kořen `display: flex; width: 100%`),
665
+ * stejně jako u `Input`. Rozbalený seznam má šířku pole.
666
+ * @default false
667
+ */
668
+ fullWidth?: boolean;
669
+ /** `id` nativního inputu. Automaticky generováno, pokud chybí. */
670
+ id?: string;
543
671
  /** Další inline styly pro obalový `<div>`. */
544
- style?: React.CSSProperties;
672
+ style?: React__default.CSSProperties;
545
673
  /** Dodatečná CSS třída pro obalový `<div>`. */
546
674
  className?: string;
547
675
  }
676
+ interface ComboboxSingleProps<V = string> extends ComboboxBaseProps<V> {
677
+ /** Jednoduchý výběr (výchozí). */
678
+ multiple?: false;
679
+ /** Bez tlačítka pro vymazání (výchozí). */
680
+ clearable?: false;
681
+ /** Aktuální vybraná hodnota. */
682
+ value: NoInfer<V> | null;
683
+ /** Callback volaný při výběru položky. */
684
+ onChange(value: NoInfer<V>): void;
685
+ }
686
+ interface ComboboxSingleClearableProps<V = string> extends ComboboxBaseProps<V> {
687
+ /** Jednoduchý výběr (výchozí). */
688
+ multiple?: false;
689
+ /** Zobrazí tlačítko pro vymazání výběru — `onChange` pak může dostat `null`. */
690
+ clearable: true;
691
+ /** Aktuální vybraná hodnota. */
692
+ value: NoInfer<V> | null;
693
+ /** Callback volaný při výběru položky (`null` po vymazání). */
694
+ onChange(value: NoInfer<V> | null): void;
695
+ }
696
+ interface ComboboxMultipleProps<V = string> extends ComboboxBaseProps<V> {
697
+ /** Umožní vybrat více položek najednou. */
698
+ multiple: true;
699
+ /** Zobrazí tlačítko pro vymazání výběru. @default false */
700
+ clearable?: boolean;
701
+ /** Aktuální vybrané hodnoty. */
702
+ value: NoInfer<V>[];
703
+ /** Callback volaný při změně výběru. */
704
+ onChange(value: NoInfer<V>[]): void;
705
+ }
706
+ type ComboboxProps<V = string> = ComboboxSingleProps<V> | ComboboxSingleClearableProps<V> | ComboboxMultipleProps<V>;
548
707
  /**
549
708
  * Kombinované vyhledávací pole se seznamem dle SM-UI design systému.
550
709
  *
551
710
  * Uživatel zadává text pro filtrování položek. Dropdown se vykresluje
552
711
  * přes React portál. Podporuje navigaci klávesami, vlastní hodnoty,
553
- * vícenásobný výběr a asynchronní filtrování přes `onInputChange`.
712
+ * vícenásobný výběr a asynchronní filtrování přes `onInputChange`
713
+ * (s `filterOption={false}` kit klientský filtr vypne). Hodnoty mohou být
714
+ * `string` i `number`; typ `onChange` je odvozený z `multiple`.
554
715
  *
555
716
  * @example
556
717
  * ```tsx
@@ -562,17 +723,16 @@ interface ComboboxProps {
562
723
  * placeholder="Hledat zemi…"
563
724
  * />
564
725
  *
726
+ * // Server-side search bez klientského filtru
727
+ * <Combobox options={results} value={op} onChange={setOp} onInputChange={search} filterOption={false} loading={loading} />
728
+ *
565
729
  * // Vícenásobný výběr
566
- * <Combobox
567
- * multiple
568
- * options={options}
569
- * value={selectedCountries}
570
- * onChange={setSelectedCountries}
571
- * placeholder="Vyberte země…"
572
- * />
730
+ * <Combobox multiple options={options} value={selected} onChange={setSelected} />
573
731
  * ```
574
732
  */
575
- declare const Combobox: React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<HTMLInputElement>>;
733
+ declare const Combobox: (<V = string>(props: ComboboxProps<V> & React__default.RefAttributes<HTMLInputElement>) => React__default.ReactElement | null) & {
734
+ displayName?: string;
735
+ };
576
736
 
577
737
  type DatePickerSize = 'sm' | 'md' | 'lg';
578
738
  interface DatePickerProps {
@@ -588,6 +748,18 @@ interface DatePickerProps {
588
748
  * @default false
589
749
  */
590
750
  showTime?: boolean;
751
+ /**
752
+ * Řízené otevření kalendářového popoveru. Pokud je zadáno, komponenta je
753
+ * "controlled" — stav otevření řídí rodič a reaguje na `onOpenChange`.
754
+ */
755
+ open?: boolean;
756
+ /**
757
+ * Výchozí stav otevření pro neřízené (uncontrolled) použití.
758
+ * @default false
759
+ */
760
+ defaultOpen?: boolean;
761
+ /** Voláno při požadavku na otevření / zavření popoveru (`true` = otevřít). */
762
+ onOpenChange?: (open: boolean) => void;
591
763
  /**
592
764
  * Aktuální hodnota.
593
765
  * - `single` režim: `Date | null`
@@ -651,7 +823,7 @@ interface DatePickerProps {
651
823
  */
652
824
  firstDayOfWeek?: number;
653
825
  /** Další inline styly pro kořenový obal. */
654
- style?: React.CSSProperties;
826
+ style?: React__default.CSSProperties;
655
827
  /** Dodatečná CSS třída pro kořenový obal. */
656
828
  className?: string;
657
829
  }
@@ -661,9 +833,9 @@ interface DatePickerGroupProps {
661
833
  /** `htmlFor` propojující `<label>` s DatePickerem. Automaticky generováno, pokud chybí. */
662
834
  htmlFor?: string;
663
835
  /** DatePicker element(y) vykreslené uvnitř skupiny. */
664
- children?: React.ReactNode;
836
+ children?: React__default.ReactNode;
665
837
  /** Další inline styly pro obal. */
666
- style?: React.CSSProperties;
838
+ style?: React__default.CSSProperties;
667
839
  /** Dodatečná CSS třída pro obal. */
668
840
  className?: string;
669
841
  }
@@ -696,7 +868,7 @@ interface DatePickerGroupProps {
696
868
  * />
697
869
  * ```
698
870
  */
699
- declare const DatePicker: React.FC<DatePickerProps>;
871
+ declare const DatePicker: React__default.FC<DatePickerProps>;
700
872
  /**
701
873
  * Obalí `<DatePicker>` skupinou s popiskem, vizuálně odpovídá `InputGroup`.
702
874
  *
@@ -707,10 +879,10 @@ declare const DatePicker: React.FC<DatePickerProps>;
707
879
  * </DatePickerGroup>
708
880
  * ```
709
881
  */
710
- declare const DatePickerGroup: React.FC<DatePickerGroupProps>;
882
+ declare const DatePickerGroup: React__default.FC<DatePickerGroupProps>;
711
883
 
712
884
  type CheckboxSize = 'sm' | 'md' | 'lg';
713
- interface CheckboxProps {
885
+ interface CheckboxProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'size' | 'checked' | 'type' | 'style' | 'className'> {
714
886
  /** Stav zaškrtnutí. */
715
887
  checked?: boolean;
716
888
  /** Callback volaný při změně stavu. */
@@ -731,22 +903,32 @@ interface CheckboxProps {
731
903
  size?: CheckboxSize;
732
904
  /** Neurčitý stav — zobrazí pomlčku místo zaškrtnutí. */
733
905
  indeterminate?: boolean;
906
+ /**
907
+ * Blokové vykreslení (`display: flex; width: fit-content`): checkboxy pod sebou
908
+ * se neslévají do řádku ani bez obalu (`space-y-*`). Výchozí je inline.
909
+ * @default false
910
+ */
911
+ block?: boolean;
912
+ /** Přístupný název bez viditelného popisku. */
913
+ 'aria-label'?: string;
914
+ /** ID prvku s přístupným názvem. */
915
+ 'aria-labelledby'?: string;
734
916
  /** Dodatečná CSS třída pro obalový element. */
735
917
  className?: string;
736
918
  /** Další inline styly pro obalový element. */
737
- style?: React.CSSProperties;
919
+ style?: React__default.CSSProperties;
738
920
  }
739
921
  interface CheckboxGroupProps {
740
922
  /** Popisek skupiny. */
741
923
  label?: string;
742
924
  /** Potomci — typicky komponenty `<Checkbox>`. */
743
- children: React.ReactNode;
925
+ children: React__default.ReactNode;
744
926
  /** Chybový stav skupiny. Při řetězci se zobrazí chybová zpráva. */
745
927
  error?: boolean | string;
746
928
  /** Dodatečná CSS třída. */
747
929
  className?: string;
748
930
  /** Další inline styly. */
749
- style?: React.CSSProperties;
931
+ style?: React__default.CSSProperties;
750
932
  }
751
933
  /**
752
934
  * Zaškrtávací pole dle SM-UI design systému.
@@ -754,13 +936,16 @@ interface CheckboxGroupProps {
754
936
  * Podporuje vlastní SVG zaškrtnutí, neurčitý stav,
755
937
  * chybový stav, velikostní presety a tmavý / světlý režim.
756
938
  *
939
+ * Nativní atributy (`name`, `value`, `aria-label`, `data-*`…) se předávají na `<input>`.
940
+ *
757
941
  * @example
758
942
  * ```tsx
759
- * <Checkbox label="Souhlasím s podmínkami" checked={agreed} onChange={setAgreed} />
943
+ * <Checkbox label="Souhlasím s podmínkami" checked={agreed} onChange={setAgreed} name="agree" />
760
944
  * <Checkbox indeterminate label="Vybrat vše" />
945
+ * <Checkbox block label="Pod sebou bez obalu" />
761
946
  * ```
762
947
  */
763
- declare const Checkbox: React.FC<CheckboxProps>;
948
+ declare const Checkbox: React__default.FC<CheckboxProps>;
764
949
  /**
765
950
  * Skupina zaškrtávacích polí s volitelným popiskem.
766
951
  *
@@ -772,10 +957,10 @@ declare const Checkbox: React.FC<CheckboxProps>;
772
957
  * </CheckboxGroup>
773
958
  * ```
774
959
  */
775
- declare const CheckboxGroup: React.FC<CheckboxGroupProps>;
960
+ declare const CheckboxGroup: React__default.FC<CheckboxGroupProps>;
776
961
 
777
962
  type RadioSize = 'sm' | 'md' | 'lg';
778
- interface RadioProps {
963
+ interface RadioProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'size' | 'checked' | 'type' | 'value' | 'style' | 'className'> {
779
964
  /** Hodnota tohoto přepínače. */
780
965
  value: string;
781
966
  /** Zda je tento přepínač vybrán. */
@@ -784,8 +969,12 @@ interface RadioProps {
784
969
  onChange?: (value: string) => void;
785
970
  /** Textový popisek. */
786
971
  label?: string;
972
+ /** Vysvětlivka zobrazená tlumeně pod popiskem. */
973
+ helperText?: string;
787
974
  /** Deaktivuje přepínač. */
788
975
  disabled?: boolean;
976
+ /** Atribut `name` — spojuje přepínače do skupiny (šipky, `FormData`). `RadioGroup` ho doplní sám. */
977
+ name?: string;
789
978
  /**
790
979
  * Velikostní preset.
791
980
  * @default 'md'
@@ -794,13 +983,15 @@ interface RadioProps {
794
983
  /** Dodatečná CSS třída. */
795
984
  className?: string;
796
985
  /** Další inline styly. */
797
- style?: React.CSSProperties;
986
+ style?: React__default.CSSProperties;
798
987
  }
799
988
  interface RadioGroupOption {
800
989
  /** Hodnota volby. */
801
990
  value: string;
802
991
  /** Zobrazený popisek. */
803
992
  label: string;
993
+ /** Vysvětlivka zobrazená tlumeně pod popiskem volby. */
994
+ helperText?: string;
804
995
  /** Deaktivuje tuto volbu. */
805
996
  disabled?: boolean;
806
997
  }
@@ -809,6 +1000,8 @@ interface RadioGroupProps {
809
1000
  value?: string;
810
1001
  /** Callback volaný při změně výběru. */
811
1002
  onChange?: (value: string) => void;
1003
+ /** Atribut `name` pro všechny přepínače ve skupině. Automaticky generováno, pokud chybí. */
1004
+ name?: string;
812
1005
  /** Popisek skupiny. */
813
1006
  label?: string;
814
1007
  /** Seznam voleb. */
@@ -832,7 +1025,7 @@ interface RadioGroupProps {
832
1025
  /** Dodatečná CSS třída. */
833
1026
  className?: string;
834
1027
  /** Další inline styly. */
835
- style?: React.CSSProperties;
1028
+ style?: React__default.CSSProperties;
836
1029
  }
837
1030
  /**
838
1031
  * Přepínací tlačítko (radio) dle SM-UI design systému.
@@ -845,7 +1038,7 @@ interface RadioGroupProps {
845
1038
  * <Radio value="a" label="Volba A" checked={selected === 'a'} onChange={setSelected} />
846
1039
  * ```
847
1040
  */
848
- declare const Radio: React.FC<RadioProps>;
1041
+ declare const Radio: React__default.FC<RadioProps>;
849
1042
  /**
850
1043
  * Skupina přepínačů s popiskem, chybovým stavem a nápovědným textem.
851
1044
  *
@@ -857,15 +1050,15 @@ declare const Radio: React.FC<RadioProps>;
857
1050
  * onChange={setGender}
858
1051
  * options={[
859
1052
  * { value: 'male', label: 'Muž' },
860
- * { value: 'female', label: 'Žena' },
1053
+ * { value: 'female', label: 'Žena', helperText: 'Vysvětlivka pod volbou' },
861
1054
  * ]}
862
1055
  * />
863
1056
  * ```
864
1057
  */
865
- declare const RadioGroup: React.FC<RadioGroupProps>;
1058
+ declare const RadioGroup: React__default.FC<RadioGroupProps>;
866
1059
 
867
1060
  type SwitchSize = 'sm' | 'md' | 'lg';
868
- interface SwitchProps {
1061
+ interface SwitchProps extends Omit<React__default.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'size' | 'checked' | 'type' | 'style' | 'className'> {
869
1062
  /** Stav přepínače. */
870
1063
  checked?: boolean;
871
1064
  /** Callback volaný při změně stavu. */
@@ -879,10 +1072,14 @@ interface SwitchProps {
879
1072
  * @default 'md'
880
1073
  */
881
1074
  size?: SwitchSize;
882
- /** Dodatečná CSS třída. */
1075
+ /** Přístupný název bez viditelného popisku (matice přepínačů apod.). */
1076
+ 'aria-label'?: string;
1077
+ /** ID prvku s přístupným názvem. */
1078
+ 'aria-labelledby'?: string;
1079
+ /** Dodatečná CSS třída pro obalový element. */
883
1080
  className?: string;
884
- /** Další inline styly. */
885
- style?: React.CSSProperties;
1081
+ /** Další inline styly pro obalový element. */
1082
+ style?: React__default.CSSProperties;
886
1083
  }
887
1084
  /**
888
1085
  * Přepínač (switch/toggle) dle SM-UI design systému.
@@ -890,16 +1087,33 @@ interface SwitchProps {
890
1087
  * Pilulkový tvar s plynulou animací posunu.
891
1088
  * Oranžový ve stavu zapnuto, jemný okraj ve stavu vypnuto.
892
1089
  *
1090
+ * Nativní atributy (`name`, `value`, `aria-label`, `data-*`…) se předávají na `<input>`.
1091
+ *
893
1092
  * @example
894
1093
  * ```tsx
895
1094
  * <Switch label="Noční režim" checked={dark} onChange={setDark} />
1095
+ * <Switch aria-label="E-mail: nové úkoly" checked={on} onChange={setOn} name="email_tasks" />
896
1096
  * ```
897
1097
  */
898
- declare const Switch: React.FC<SwitchProps>;
1098
+ declare const Switch: React__default.FC<SwitchProps>;
899
1099
 
900
1100
  type TextareaSize = 'sm' | 'md' | 'lg';
901
1101
  type TextareaResize = 'none' | 'vertical' | 'both';
902
- interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {
1102
+ type TextareaVariant = 'default' | 'inline';
1103
+ interface TextareaProps extends Omit<React__default.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {
1104
+ /**
1105
+ * Vizuální varianta.
1106
+ * - `'default'` — pole s pozadím a rámečkem
1107
+ * - `'inline'` — bez pozadí a rámečku v klidu (vypadá jako text), rámeček až na hover / focus.
1108
+ * Pro editaci přímo v buňce tabulky nebo kartě. Doporučeno s `autoHeight`.
1109
+ * @default 'default'
1110
+ */
1111
+ variant?: TextareaVariant;
1112
+ /**
1113
+ * Voláno při potvrzení hodnoty — na blur a na Ctrl/Cmd+Enter — jen pokud se hodnota
1114
+ * od získání fokusu změnila.
1115
+ */
1116
+ onCommit?: (value: string) => void;
903
1117
  /**
904
1118
  * Popisek zobrazený nad textovým polem.
905
1119
  * Stylizován velkými písmeny dle SM-UI design systému.
@@ -967,7 +1181,7 @@ interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaEl
967
1181
  /**
968
1182
  * Další inline styly pro **obalový** element.
969
1183
  */
970
- style?: React.CSSProperties;
1184
+ style?: React__default.CSSProperties;
971
1185
  }
972
1186
  /**
973
1187
  * Víceřádkové textové pole dle SM-UI design systému.
@@ -979,16 +1193,22 @@ interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaEl
979
1193
  * ```tsx
980
1194
  * <Textarea label="Poznámka" placeholder="Napište poznámku…" rows={5} />
981
1195
  * <Textarea label="Bio" maxLength={200} helperText="Krátký popis" />
1196
+ * <Textarea variant="inline" autoHeight value={note} onChange={...} onCommit={save} />
982
1197
  * ```
983
1198
  */
984
- declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
1199
+ declare const Textarea: React__default.ForwardRefExoticComponent<TextareaProps & React__default.RefAttributes<HTMLTextAreaElement>>;
985
1200
 
986
1201
  type SliderSize = 'sm' | 'md' | 'lg';
987
1202
  interface SliderProps {
988
1203
  /** Aktuální hodnota. Při `range` je to `[number, number]`. */
989
1204
  value: number | [number, number];
990
- /** Callback volaný při změně hodnoty. */
1205
+ /** Callback volaný při změně hodnoty (během tažení na každý krok). */
991
1206
  onChange?: (value: number | [number, number]) => void;
1207
+ /**
1208
+ * Voláno jednou po dokončení tažení (uvolnění myši) s finální hodnotou.
1209
+ * Vhodné pro uložení / request bez debounce.
1210
+ */
1211
+ onChangeEnd?: (value: number | [number, number]) => void;
992
1212
  /**
993
1213
  * Minimální hodnota.
994
1214
  * @default 0
@@ -1026,7 +1246,7 @@ interface SliderProps {
1026
1246
  /** Dodatečná CSS třída. */
1027
1247
  className?: string;
1028
1248
  /** Další inline styly. */
1029
- style?: React.CSSProperties;
1249
+ style?: React__default.CSSProperties;
1030
1250
  }
1031
1251
  /**
1032
1252
  * Posuvník dle SM-UI design systému.
@@ -1038,9 +1258,10 @@ interface SliderProps {
1038
1258
  * ```tsx
1039
1259
  * <Slider label="Hlasitost" value={volume} onChange={setVolume} showValue />
1040
1260
  * <Slider range value={[20, 80]} onChange={setRange} label="Cenový rozsah" />
1261
+ * <Slider value={density} onChange={setDensity} onChangeEnd={savePreference} />
1041
1262
  * ```
1042
1263
  */
1043
- declare const Slider: React.FC<SliderProps>;
1264
+ declare const Slider: React__default.FC<SliderProps>;
1044
1265
 
1045
1266
  interface UploadedFile {
1046
1267
  /** Objekt nativního souboru. */
@@ -1049,6 +1270,7 @@ interface UploadedFile {
1049
1270
  id: string;
1050
1271
  }
1051
1272
  type FileUploadVariant = 'dropzone' | 'button';
1273
+ type FileRejectReason = 'size' | 'duplicate';
1052
1274
  interface FileUploadProps {
1053
1275
  /**
1054
1276
  * Vizuální varianta.
@@ -1059,6 +1281,14 @@ interface FileUploadProps {
1059
1281
  variant?: FileUploadVariant;
1060
1282
  /** Callback volaný při přidání souborů. Vrací pole nativních `File` objektů. */
1061
1283
  onFiles?: (files: File[]) => void;
1284
+ /**
1285
+ * Voláno pro soubory, které kit odmítl (nad `maxSize`, duplicita v `multiple`).
1286
+ * Ostatní soubory z dávky se přijmou normálně.
1287
+ */
1288
+ onReject?: (rejected: {
1289
+ file: File;
1290
+ reason: FileRejectReason;
1291
+ }[]) => void;
1062
1292
  /**
1063
1293
  * Povolené typy souborů (atribut `accept`).
1064
1294
  * @example 'image/*,.pdf'
@@ -1066,8 +1296,14 @@ interface FileUploadProps {
1066
1296
  accept?: string;
1067
1297
  /** Povolit výběr více souborů najednou. */
1068
1298
  multiple?: boolean;
1069
- /** Maximální velikost souboru v bajtech. */
1299
+ /** Maximální velikost souboru v bajtech. Odmítne jen soubory nad limit, zbytek dávky projde. */
1070
1300
  maxSize?: number;
1301
+ /**
1302
+ * V režimu `multiple` přeskočit soubory, které už v seznamu jsou
1303
+ * (shoda `name` + `size` + `lastModified`).
1304
+ * @default true
1305
+ */
1306
+ dedupe?: boolean;
1071
1307
  /** Deaktivuje zónu pro nahrávání. */
1072
1308
  disabled?: boolean;
1073
1309
  /** Popisek nad zónou. */
@@ -1104,7 +1340,7 @@ interface FileUploadProps {
1104
1340
  /** Dodatečná CSS třída. */
1105
1341
  className?: string;
1106
1342
  /** Další inline styly. */
1107
- style?: React.CSSProperties;
1343
+ style?: React__default.CSSProperties;
1108
1344
  }
1109
1345
  /**
1110
1346
  * Zóna pro nahrávání souborů dle SM-UI design systému.
@@ -1123,7 +1359,7 @@ interface FileUploadProps {
1123
1359
  * />
1124
1360
  * ```
1125
1361
  */
1126
- declare const FileUpload: React.FC<FileUploadProps>;
1362
+ declare const FileUpload: React__default.FC<FileUploadProps>;
1127
1363
 
1128
1364
  type SegmentedControlSize = 'sm' | 'md' | 'lg';
1129
1365
  interface SegmentedControlItem {
@@ -1132,7 +1368,7 @@ interface SegmentedControlItem {
1132
1368
  /** Zobrazovaný text. Výchozí: `value`. */
1133
1369
  label?: string;
1134
1370
  /** Ikona zobrazená v segmentu. Může být samostatně nebo s label. */
1135
- icon?: React.ReactNode;
1371
+ icon?: React__default.ReactNode;
1136
1372
  /** Zakáže tento segment. */
1137
1373
  disabled?: boolean;
1138
1374
  }
@@ -1169,7 +1405,7 @@ interface SegmentedControlProps {
1169
1405
  /** Dodatečná CSS třída. */
1170
1406
  className?: string;
1171
1407
  /** Další inline styly. */
1172
- style?: React.CSSProperties;
1408
+ style?: React__default.CSSProperties;
1173
1409
  }
1174
1410
  /**
1175
1411
  * Segmentovaný přepínač dle SM-UI design systému.
@@ -1188,7 +1424,7 @@ interface SegmentedControlProps {
1188
1424
  * />
1189
1425
  * ```
1190
1426
  */
1191
- declare const SegmentedControl: React.FC<SegmentedControlProps>;
1427
+ declare const SegmentedControl: React__default.FC<SegmentedControlProps>;
1192
1428
 
1193
1429
  interface ColorPickerProps {
1194
1430
  /** Aktuální barva v hexadecimálním formátu (např. `#FC4F00`). */
@@ -1202,7 +1438,7 @@ interface ColorPickerProps {
1202
1438
  /** Zakáže celou komponentu. */
1203
1439
  disabled?: boolean;
1204
1440
  /** Další inline styly pro obalový `<div>`. */
1205
- style?: React.CSSProperties;
1441
+ style?: React__default.CSSProperties;
1206
1442
  /** Dodatečná CSS třída pro obalový `<div>`. */
1207
1443
  className?: string;
1208
1444
  }
@@ -1218,7 +1454,7 @@ interface ColorPickerProps {
1218
1454
  * <ColorPicker value={color} onChange={setColor} presets={['#FF0000', '#00FF00', '#0000FF']} />
1219
1455
  * ```
1220
1456
  */
1221
- declare const ColorPicker: React.FC<ColorPickerProps>;
1457
+ declare const ColorPicker: React__default.FC<ColorPickerProps>;
1222
1458
 
1223
1459
  type RatingSize = 'sm' | 'md' | 'lg';
1224
1460
  interface RatingProps {
@@ -1238,7 +1474,7 @@ interface RatingProps {
1238
1474
  /** Popisek zobrazený nad komponentou. Stylizován velkými písmeny dle SM-UI design systému. */
1239
1475
  label?: string;
1240
1476
  /** Další inline styly pro obalový `<div>`. */
1241
- style?: React.CSSProperties;
1477
+ style?: React__default.CSSProperties;
1242
1478
  /** Dodatečná CSS třída pro obalový `<div>`. */
1243
1479
  className?: string;
1244
1480
  }
@@ -1255,7 +1491,7 @@ interface RatingProps {
1255
1491
  * <Rating value={4} size="lg" label="Hodnocení" />
1256
1492
  * ```
1257
1493
  */
1258
- declare const Rating: React.FC<RatingProps>;
1494
+ declare const Rating: React__default.FC<RatingProps>;
1259
1495
 
1260
1496
  interface OTPInputProps {
1261
1497
  /** Počet polí (číslic). @default 6 */
@@ -1275,9 +1511,9 @@ interface OTPInputProps {
1275
1511
  /** Vloží oddělovač po každých N polích. Např. `separatorAfter={3}` u 6místného kódu vytvoří skupiny 3-3. */
1276
1512
  separatorAfter?: number;
1277
1513
  /** Obsah oddělovače. @default '-' */
1278
- separator?: React.ReactNode;
1514
+ separator?: React__default.ReactNode;
1279
1515
  /** Další inline styly pro obalový `<div>`. */
1280
- style?: React.CSSProperties;
1516
+ style?: React__default.CSSProperties;
1281
1517
  /** Dodatečná CSS třída pro obalový `<div>`. */
1282
1518
  className?: string;
1283
1519
  }
@@ -1294,7 +1530,7 @@ interface OTPInputProps {
1294
1530
  * <OTPInput value={otp} onChange={setOtp} length={4} error="Neplatný kód" />
1295
1531
  * ```
1296
1532
  */
1297
- declare const OTPInput: React.FC<OTPInputProps>;
1533
+ declare const OTPInput: React__default.FC<OTPInputProps>;
1298
1534
 
1299
1535
  interface Country {
1300
1536
  /** ISO 3166-1 alpha-2 kód. */
@@ -1329,7 +1565,7 @@ interface PhoneInputProps {
1329
1565
  /** Placeholder pro číslo. */
1330
1566
  placeholder?: string;
1331
1567
  /** Další inline styly. */
1332
- style?: React.CSSProperties;
1568
+ style?: React__default.CSSProperties;
1333
1569
  /** Dodatečná CSS třída. */
1334
1570
  className?: string;
1335
1571
  }
@@ -1349,7 +1585,7 @@ interface PhoneInputProps {
1349
1585
  * />
1350
1586
  * ```
1351
1587
  */
1352
- declare const PhoneInput: React.FC<PhoneInputProps>;
1588
+ declare const PhoneInput: React__default.FC<PhoneInputProps>;
1353
1589
 
1354
1590
  type CropShape = 'rect' | 'circle';
1355
1591
  interface CropArea {
@@ -1374,7 +1610,7 @@ interface ImageCropperProps {
1374
1610
  /** Tvar ořezu. @default 'rect' */
1375
1611
  shape?: CropShape;
1376
1612
  /** Další inline styly. */
1377
- style?: React.CSSProperties;
1613
+ style?: React__default.CSSProperties;
1378
1614
  /** Dodatečná CSS třída. */
1379
1615
  className?: string;
1380
1616
  }
@@ -1395,7 +1631,7 @@ interface ImageCropperProps {
1395
1631
  * />
1396
1632
  * ```
1397
1633
  */
1398
- declare const ImageCropper: React.FC<ImageCropperProps>;
1634
+ declare const ImageCropper: React__default.FC<ImageCropperProps>;
1399
1635
 
1400
1636
  interface TableColumn {
1401
1637
  /** Klíč odpovídající hodnotě v datovém objektu. */
@@ -1407,7 +1643,7 @@ interface TableColumn {
1407
1643
  /** Šířka sloupce (CSS hodnota). */
1408
1644
  width?: string | number;
1409
1645
  /** Vlastní vykreslovací funkce pro buňku. */
1410
- render?: (value: any, row: any, index: number) => React.ReactNode;
1646
+ render?: (value: any, row: any, index: number) => React__default.ReactNode;
1411
1647
  }
1412
1648
  interface TableProps {
1413
1649
  /** Definice sloupců tabulky. */
@@ -1431,11 +1667,17 @@ interface TableProps {
1431
1667
  /** Callback při kliknutí na řádek. */
1432
1668
  onRowClick?: (row: any, index: number) => void;
1433
1669
  /** Render akčních tlačítek v posledním sloupci. */
1434
- rowActions?: (row: any) => React.ReactNode;
1670
+ rowActions?: (row: any) => React__default.ReactNode;
1671
+ /**
1672
+ * Rámeček, zaoblení a pozadí tabulky. `false` = bez rámu a s průhledným
1673
+ * pozadím, vhodné do `Card` (jinak se rám i pozadí zdvojí).
1674
+ * @default true
1675
+ */
1676
+ bordered?: boolean;
1435
1677
  /** Dodatečná CSS třída. */
1436
1678
  className?: string;
1437
1679
  /** Další inline styly. */
1438
- style?: React.CSSProperties;
1680
+ style?: React__default.CSSProperties;
1439
1681
  }
1440
1682
  /**
1441
1683
  * Datová tabulka dle SM-UI design systému.
@@ -1458,7 +1700,7 @@ interface TableProps {
1458
1700
  * />
1459
1701
  * ```
1460
1702
  */
1461
- declare const Table: React.FC<TableProps>;
1703
+ declare const Table: React__default.FC<TableProps>;
1462
1704
 
1463
1705
  /** Definice sloupce pro DataGrid. */
1464
1706
  interface DataGridColumn {
@@ -1477,7 +1719,7 @@ interface DataGridColumn {
1477
1719
  /** Povolí editaci buňky (placeholder pro budoucí implementaci). @default false */
1478
1720
  editable?: boolean;
1479
1721
  /** Vlastní vykreslovací funkce pro buňku. */
1480
- render?: (value: any, row: any, index: number) => React.ReactNode;
1722
+ render?: (value: any, row: any, index: number) => React__default.ReactNode;
1481
1723
  }
1482
1724
  interface DataGridProps {
1483
1725
  /** Definice sloupců. */
@@ -1498,8 +1740,14 @@ interface DataGridProps {
1498
1740
  stickyHeader?: boolean;
1499
1741
  /** Text zobrazený při prázdných datech. @default 'Žádná data' */
1500
1742
  emptyText?: string;
1743
+ /**
1744
+ * Rámeček, zaoblení a pozadí mřížky. `false` = bez rámu a s průhledným
1745
+ * pozadím, vhodné do `Card`.
1746
+ * @default true
1747
+ */
1748
+ bordered?: boolean;
1501
1749
  /** Další inline styly. */
1502
- style?: React.CSSProperties;
1750
+ style?: React__default.CSSProperties;
1503
1751
  /** Dodatečná CSS třída. */
1504
1752
  className?: string;
1505
1753
  }
@@ -1525,7 +1773,7 @@ interface DataGridProps {
1525
1773
  * />
1526
1774
  * ```
1527
1775
  */
1528
- declare const DataGrid: React.FC<DataGridProps>;
1776
+ declare const DataGrid: React__default.FC<DataGridProps>;
1529
1777
 
1530
1778
  interface MobileDataCardColumn {
1531
1779
  /** Klíč dat v řádkovém objektu. */
@@ -1533,7 +1781,7 @@ interface MobileDataCardColumn {
1533
1781
  /** Zobrazovaný popisek. */
1534
1782
  header: string;
1535
1783
  /** Vlastní renderování hodnoty — stejný podpis jako Table/DataGrid. */
1536
- render?: (value: any, row: any, index: number) => React.ReactNode;
1784
+ render?: (value: any, row: any, index: number) => React__default.ReactNode;
1537
1785
  /** Skrýt tento sloupec z karty. */
1538
1786
  hidden?: boolean;
1539
1787
  /** Zobrazit toto pole jako titulek karty. */
@@ -1571,13 +1819,13 @@ interface MobileDataCardProps {
1571
1819
  /** Text prázdného stavu. @default 'Žádná data' */
1572
1820
  emptyText?: string;
1573
1821
  /** Vlastní obsah prázdného stavu. */
1574
- emptyContent?: React.ReactNode;
1822
+ emptyContent?: React__default.ReactNode;
1575
1823
  /** Mezera mezi kartami v px. @default 12 */
1576
1824
  gap?: number;
1577
1825
  /** Vykreslení akčních tlačítek v patičce karty. */
1578
- cardActions?: (row: any, index: number) => React.ReactNode;
1826
+ cardActions?: (row: any, index: number) => React__default.ReactNode;
1579
1827
  /** Další inline styly. */
1580
- style?: React.CSSProperties;
1828
+ style?: React__default.CSSProperties;
1581
1829
  /** Dodatečná CSS třída. */
1582
1830
  className?: string;
1583
1831
  }
@@ -1608,32 +1856,42 @@ interface MobileDataCardProps {
1608
1856
  * />
1609
1857
  * ```
1610
1858
  */
1611
- declare const MobileDataCard: React.FC<MobileDataCardProps>;
1859
+ declare const MobileDataCard: React__default.FC<MobileDataCardProps>;
1612
1860
 
1613
- interface CardProps {
1861
+ interface CardProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, 'title' | 'style' | 'className'> {
1614
1862
  /** Titulek karty. */
1615
- title?: string;
1863
+ title?: React__default.ReactNode;
1616
1864
  /** Podtitulek karty. */
1617
- subtitle?: string;
1618
- /** Vlastní obsah záhlaví — přepíše `title` a `subtitle`. */
1619
- header?: React.ReactNode;
1865
+ subtitle?: React__default.ReactNode;
1866
+ /**
1867
+ * Akce vpravo v záhlaví vedle titulku (odkaz, tlačítko, badge).
1868
+ * Zachová typografii titulku a odsazení záhlaví.
1869
+ */
1870
+ headerActions?: React__default.ReactNode;
1871
+ /**
1872
+ * Vlastní obsah celého záhlaví — nahrazuje `title`, `subtitle` i `headerActions`
1873
+ * a vykreslí se bez odsazení (odsazení dodává konzument).
1874
+ * Pro titulek + akci použijte raději `headerActions`.
1875
+ */
1876
+ header?: React__default.ReactNode;
1620
1877
  /** Obsah patičky karty. */
1621
- footer?: React.ReactNode;
1878
+ footer?: React__default.ReactNode;
1622
1879
  /** Obsah karty. */
1623
- children?: React.ReactNode;
1880
+ children?: React__default.ReactNode;
1624
1881
  /** Při `true` se karta jemně zvedne při najetí myší. @default false */
1625
1882
  hoverable?: boolean;
1626
1883
  /** Zobrazí rámeček kolem karty. @default true */
1627
1884
  bordered?: boolean;
1628
1885
  /**
1629
- * Velikost vnitřního odsazení.
1886
+ * Velikost vnitřního odsazení **těla a patičky**. Záhlaví (`title`) má vlastní
1887
+ * odsazení: při `'none'` zůstává `md` (20px), aby se titulek nepřilepil k okraji.
1630
1888
  * @default 'md'
1631
1889
  */
1632
1890
  padding?: 'none' | 'sm' | 'md' | 'lg';
1633
1891
  /** Dodatečná CSS třída. */
1634
1892
  className?: string;
1635
1893
  /** Další inline styly. */
1636
- style?: React.CSSProperties;
1894
+ style?: React__default.CSSProperties;
1637
1895
  }
1638
1896
  /**
1639
1897
  * Karta dle SM-UI design systému.
@@ -1646,15 +1904,29 @@ interface CardProps {
1646
1904
  * <Card title="Statistiky" subtitle="Přehled za poslední měsíc">
1647
1905
  * <p>Obsah karty…</p>
1648
1906
  * </Card>
1907
+ *
1908
+ * // Titulek + akce vpravo, tabulka bez odsazení
1909
+ * <Card title="Poslední změny" headerActions={<Link href="/log">Vše</Link>} padding="none">
1910
+ * <Table bordered={false} … />
1911
+ * </Card>
1649
1912
  * ```
1650
1913
  */
1651
- declare const Card: React.FC<CardProps>;
1914
+ declare const Card: React__default.FC<CardProps>;
1652
1915
 
1653
1916
  interface AccordionItemProps {
1654
- /** Titulek položky. */
1655
- title: string;
1917
+ /** Titulek položky (text nebo ReactNode, např. s Badge). */
1918
+ title: React__default.ReactNode;
1656
1919
  /** Obsah zobrazený po rozbalení. */
1657
- children: React.ReactNode;
1920
+ children: React__default.ReactNode;
1921
+ /**
1922
+ * Identifikátor položky pro řízený `Accordion` (`value` / `onChange`).
1923
+ * Bez `id` se použije index položky jako string.
1924
+ */
1925
+ id?: string;
1926
+ /** Ikona vlevo před titulkem. */
1927
+ icon?: React__default.ReactNode;
1928
+ /** Obsah vpravo v hlavičce (badge, počet, akce) — mimo klikací plochu chevronu. */
1929
+ extra?: React__default.ReactNode;
1658
1930
  /** Při `true` bude položka výchozně rozbalena. @default false */
1659
1931
  defaultOpen?: boolean;
1660
1932
  /** Zakáže interakci s položkou. @default false */
@@ -1664,25 +1936,31 @@ interface AccordionProps {
1664
1936
  /**
1665
1937
  * Potomci — typicky komponenty `<AccordionItem>`.
1666
1938
  */
1667
- children: React.ReactNode;
1939
+ children: React__default.ReactNode;
1668
1940
  /** Povolí více současně otevřených položek. @default false */
1669
1941
  multiple?: boolean;
1942
+ /** Řízený seznam otevřených položek (`id` položek). */
1943
+ value?: string[];
1944
+ /** Výchozí otevřené položky pro neřízený režim (doplňuje `defaultOpen` na položkách). */
1945
+ defaultValue?: string[];
1946
+ /** Voláno při změně otevřených položek. */
1947
+ onChange?: (open: string[]) => void;
1670
1948
  /** Dodatečná CSS třída. */
1671
1949
  className?: string;
1672
1950
  /** Další inline styly. */
1673
- style?: React.CSSProperties;
1951
+ style?: React__default.CSSProperties;
1674
1952
  }
1675
1953
  /**
1676
1954
  * Položka akordéonu. Používejte uvnitř `<Accordion>`.
1677
1955
  *
1678
1956
  * @example
1679
1957
  * ```tsx
1680
- * <AccordionItem title="Sekce 1">
1958
+ * <AccordionItem title="Sekce 1" extra={<Badge label="8 kroků" size="sm" variant="neutral" />}>
1681
1959
  * Obsah první sekce.
1682
1960
  * </AccordionItem>
1683
1961
  * ```
1684
1962
  */
1685
- declare const AccordionItem: React.FC<AccordionItemProps & {
1963
+ declare const AccordionItem: React__default.FC<AccordionItemProps & {
1686
1964
  /** @internal Řízeno rodičem Accordion. */
1687
1965
  _controlled?: boolean;
1688
1966
  /** @internal */
@@ -1696,16 +1974,23 @@ declare const AccordionItem: React.FC<AccordionItemProps & {
1696
1974
  * Obalí skupinu `<AccordionItem>` a řídí jejich otevírání.
1697
1975
  * Ve výchozím stavu se otevře vždy pouze jedna položka najednou.
1698
1976
  * Pro více současně otevřených položek nastavte `multiple`.
1977
+ * Otevřené položky lze řídit přes `value` / `onChange` (podle `id` položek).
1699
1978
  *
1700
1979
  * @example
1701
1980
  * ```tsx
1702
1981
  * <Accordion>
1703
1982
  * <AccordionItem title="Sekce 1">Obsah 1</AccordionItem>
1704
- * <AccordionItem title="Sekce 2">Obsah 2</AccordionItem>
1983
+ * <AccordionItem title="Sekce 2" defaultOpen>Obsah 2</AccordionItem>
1984
+ * </Accordion>
1985
+ *
1986
+ * // Řízený
1987
+ * <Accordion multiple value={open} onChange={setOpen}>
1988
+ * <AccordionItem id="a" title="A">…</AccordionItem>
1989
+ * <AccordionItem id="b" title="B">…</AccordionItem>
1705
1990
  * </Accordion>
1706
1991
  * ```
1707
1992
  */
1708
- declare const Accordion: React.FC<AccordionProps>;
1993
+ declare const Accordion: React__default.FC<AccordionProps>;
1709
1994
 
1710
1995
  interface TabsProps {
1711
1996
  /** Aktuální aktivní hodnota. */
@@ -1713,7 +1998,7 @@ interface TabsProps {
1713
1998
  /** Voláno při změně aktivní záložky. */
1714
1999
  onChange: (value: string) => void;
1715
2000
  /** Potomci — komponenty `<Tab>` a `<TabPanel>`. */
1716
- children: React.ReactNode;
2001
+ children: React__default.ReactNode;
1717
2002
  /**
1718
2003
  * Vizuální varianta.
1719
2004
  * - `'underline'` — spodní linka na aktivní záložce
@@ -1731,7 +2016,7 @@ interface TabsProps {
1731
2016
  /** Dodatečná CSS třída. */
1732
2017
  className?: string;
1733
2018
  /** Další inline styly. */
1734
- style?: React.CSSProperties;
2019
+ style?: React__default.CSSProperties;
1735
2020
  }
1736
2021
  interface TabProps {
1737
2022
  /** Unikátní hodnota záložky. */
@@ -1741,13 +2026,13 @@ interface TabProps {
1741
2026
  /** Zakáže záložku. @default false */
1742
2027
  disabled?: boolean;
1743
2028
  /** Ikona zobrazená před textem. */
1744
- icon?: React.ReactNode;
2029
+ icon?: React__default.ReactNode;
1745
2030
  }
1746
2031
  interface TabPanelProps {
1747
2032
  /** Hodnota odpovídající záložce — panel se zobrazí, když je aktivní. */
1748
2033
  value: string;
1749
2034
  /** Obsah panelu. */
1750
- children: React.ReactNode;
2035
+ children: React__default.ReactNode;
1751
2036
  }
1752
2037
  /**
1753
2038
  * Záložka uvnitř `<Tabs>`. Definuje jednu záložku v navigaci.
@@ -1757,7 +2042,7 @@ interface TabPanelProps {
1757
2042
  * <Tab value="general" label="Obecné" />
1758
2043
  * ```
1759
2044
  */
1760
- declare const Tab: React.FC<TabProps>;
2045
+ declare const Tab: React__default.FC<TabProps>;
1761
2046
  /**
1762
2047
  * Panel obsahu spojený s konkrétní záložkou.
1763
2048
  *
@@ -1768,7 +2053,7 @@ declare const Tab: React.FC<TabProps>;
1768
2053
  * </TabPanel>
1769
2054
  * ```
1770
2055
  */
1771
- declare const TabPanel: React.FC<TabPanelProps>;
2056
+ declare const TabPanel: React__default.FC<TabPanelProps>;
1772
2057
  /**
1773
2058
  * Záložkový komponent dle SM-UI design systému.
1774
2059
  *
@@ -1785,13 +2070,17 @@ declare const TabPanel: React.FC<TabPanelProps>;
1785
2070
  * </Tabs>
1786
2071
  * ```
1787
2072
  */
1788
- declare const Tabs: React.FC<TabsProps>;
2073
+ declare const Tabs: React__default.FC<TabsProps>;
1789
2074
 
1790
2075
  interface TooltipProps {
1791
- /** Obsah tooltipu — text nebo ReactNode. */
1792
- content: string | React.ReactNode;
2076
+ /**
2077
+ * Obsah tooltipu — text nebo ReactNode.
2078
+ * Při `undefined` / `null` / `''` / `false` se bublina nezobrazí vůbec
2079
+ * (podmíněná nápověda bez nutnosti podmíněně obalovat).
2080
+ */
2081
+ content?: string | React__default.ReactNode;
1793
2082
  /** Trigger element obalený tooltipem. */
1794
- children: React.ReactElement;
2083
+ children: React__default.ReactElement;
1795
2084
  /**
1796
2085
  * Pozice tooltipu vůči triggeru.
1797
2086
  * @default 'top'
@@ -1831,7 +2120,7 @@ interface TooltipProps {
1831
2120
  /** Dodatečná CSS třída pro tooltip. */
1832
2121
  className?: string;
1833
2122
  /** Další inline styly pro tooltip. */
1834
- style?: React.CSSProperties;
2123
+ style?: React__default.CSSProperties;
1835
2124
  }
1836
2125
  /**
1837
2126
  * Tooltip dle SM-UI design systému.
@@ -1852,43 +2141,89 @@ interface TooltipProps {
1852
2141
  * </Tooltip>
1853
2142
  * ```
1854
2143
  */
1855
- declare const Tooltip: React.FC<TooltipProps>;
2144
+ declare const Tooltip: React__default.FC<TooltipProps>;
1856
2145
 
2146
+ type PopoverPosition = 'top' | 'bottom' | 'left' | 'right';
2147
+ type PopoverAlign = 'start' | 'center' | 'end';
1857
2148
  interface PopoverProps {
1858
- /** Obsah popoveru. */
1859
- content: React.ReactNode;
2149
+ /**
2150
+ * Obsah popoveru. Může být ReactNode nebo funkce `(close) => ReactNode`
2151
+ * pro zavření z obsahu (např. po výběru položky).
2152
+ */
2153
+ content: React__default.ReactNode | ((close: () => void) => React__default.ReactNode);
1860
2154
  /** Trigger element. */
1861
- children: React.ReactElement;
2155
+ children: React__default.ReactElement;
1862
2156
  /**
1863
2157
  * Pozice popoveru vůči triggeru.
1864
2158
  * @default 'bottom'
1865
2159
  */
1866
- position?: 'top' | 'bottom' | 'left' | 'right';
2160
+ position?: PopoverPosition;
2161
+ /**
2162
+ * Zarovnání panelu podél osy triggeru (u `top` / `bottom` vodorovně,
2163
+ * u `left` / `right` svisle).
2164
+ * @default 'center'
2165
+ */
2166
+ align?: PopoverAlign;
2167
+ /**
2168
+ * Mezera mezi triggerem a panelem v px.
2169
+ * @default 8
2170
+ */
2171
+ offset?: number;
2172
+ /**
2173
+ * Když se panel na zvolené straně nevejde, otočí se na protilehlou.
2174
+ * Panel se navíc vždy posune tak, aby zůstal celý ve viewportu.
2175
+ * @default true
2176
+ */
2177
+ autoFlip?: boolean;
1867
2178
  /**
1868
2179
  * Způsob otevření.
1869
2180
  * @default 'click'
1870
2181
  */
1871
2182
  trigger?: 'click' | 'hover';
2183
+ /** Řízený stav otevření. Když zadáno, kit stav sám nemění a volá jen `onOpenChange`. */
2184
+ open?: boolean;
2185
+ /** Výchozí stav pro neřízený režim. @default false */
2186
+ defaultOpen?: boolean;
2187
+ /** Voláno při požadavku na otevření / zavření (klik, outside-click, Escape, hover). */
2188
+ onOpenChange?: (open: boolean) => void;
2189
+ /**
2190
+ * Klik kamkoli do obsahu popover zavře. Pro menu-like obsah.
2191
+ * @default false
2192
+ */
2193
+ closeOnClickInside?: boolean;
2194
+ /**
2195
+ * Vypne výchozí vnitřní padding panelu (16px). Pro obsah s vlastním layoutem.
2196
+ * @default false
2197
+ */
2198
+ disablePadding?: boolean;
2199
+ /** Vlastní padding panelu (číslo = px). Přepíše výchozích 16px. */
2200
+ padding?: number | string;
1872
2201
  /** Dodatečná CSS třída pro popover. */
1873
2202
  className?: string;
1874
2203
  /** Další inline styly pro popover. */
1875
- style?: React.CSSProperties;
2204
+ style?: React__default.CSSProperties;
1876
2205
  }
1877
2206
  /**
1878
2207
  * Popover dle SM-UI design systému.
1879
2208
  *
1880
2209
  * Podobný Tooltipu, ale větší, s kartovým stylem.
1881
2210
  * Otevírá se kliknutím nebo hoverem, zavírá kliknutím mimo nebo Escape.
1882
- * Vykresluje se přes React portál.
2211
+ * Vykresluje se přes React portál. Panel nikdy neopustí viewport —
2212
+ * když se na zvolené straně nevejde, otočí se (`autoFlip`) a posune.
1883
2213
  *
1884
2214
  * @example
1885
2215
  * ```tsx
1886
2216
  * <Popover content={<div>Obsah popoveru</div>} trigger="click">
1887
2217
  * <button>Klikni</button>
1888
2218
  * </Popover>
2219
+ *
2220
+ * // Řízený + zavření z obsahu
2221
+ * <Popover open={open} onOpenChange={setOpen} content={(close) => <Menu onPick={close} />}>
2222
+ * <Button>Vybrat</Button>
2223
+ * </Popover>
1889
2224
  * ```
1890
2225
  */
1891
- declare const Popover: React.FC<PopoverProps>;
2226
+ declare const Popover: React__default.FC<PopoverProps>;
1892
2227
 
1893
2228
  interface SkeletonProps {
1894
2229
  /**
@@ -1910,7 +2245,7 @@ interface SkeletonProps {
1910
2245
  /** Dodatečná CSS třída. */
1911
2246
  className?: string;
1912
2247
  /** Další inline styly. */
1913
- style?: React.CSSProperties;
2248
+ style?: React__default.CSSProperties;
1914
2249
  }
1915
2250
  /**
1916
2251
  * Zástupný prvek zobrazený při načítání obsahu.
@@ -1925,18 +2260,18 @@ interface SkeletonProps {
1925
2260
  * <Skeleton variant="rect" width="100%" height={200} />
1926
2261
  * ```
1927
2262
  */
1928
- declare const Skeleton: React.FC<SkeletonProps>;
2263
+ declare const Skeleton: React__default.FC<SkeletonProps>;
1929
2264
 
1930
2265
  type EmptyStatePreset = 'no-data' | 'no-results' | 'no-permission' | 'error' | 'coming-soon';
1931
2266
  interface EmptyStateProps {
1932
- /** Ikona zobrazená nad titulkem. */
1933
- icon?: React.ReactNode;
2267
+ /** Ikona zobrazená nad titulkem. Phosphor ikona bez `size` se škáluje podle `size` komponenty. */
2268
+ icon?: React__default.ReactNode;
1934
2269
  /** Hlavní titulek prázdného stavu. */
1935
2270
  title?: string;
1936
2271
  /** Doplňkový popis. */
1937
2272
  description?: string;
1938
2273
  /** Akční prvky — typicky tlačítka. */
1939
- action?: React.ReactNode;
2274
+ action?: React__default.ReactNode;
1940
2275
  /**
1941
2276
  * Přednastavený prázdný stav s ikonou, titulkem a popisem.
1942
2277
  * Vlastní `icon`, `title`, `description` přepíší preset hodnoty.
@@ -1947,7 +2282,7 @@ interface EmptyStateProps {
1947
2282
  /** Dodatečná CSS třída. */
1948
2283
  className?: string;
1949
2284
  /** Další inline styly. */
1950
- style?: React.CSSProperties;
2285
+ style?: React__default.CSSProperties;
1951
2286
  }
1952
2287
  /**
1953
2288
  * Prázdný stav dle SM-UI design systému.
@@ -1970,19 +2305,19 @@ interface EmptyStateProps {
1970
2305
  * />
1971
2306
  * ```
1972
2307
  */
1973
- declare const EmptyState: React.FC<EmptyStateProps>;
2308
+ declare const EmptyState: React__default.FC<EmptyStateProps>;
1974
2309
 
1975
2310
  interface StatProps {
1976
2311
  /** Popisek statistiky. */
1977
2312
  label: string;
1978
2313
  /** Hodnota statistiky. */
1979
- value?: string | number | React.ReactNode;
2314
+ value?: string | number | React__default.ReactNode;
1980
2315
  /** Procentuální změna (zobrazí se se znaménkem). */
1981
2316
  change?: number;
1982
2317
  /** Doplňkový text k procentuální změně. */
1983
2318
  changeLabel?: string;
1984
2319
  /** Ikona zobrazená vedle hodnoty. */
1985
- icon?: React.ReactNode;
2320
+ icon?: React__default.ReactNode;
1986
2321
  /** Směr trendu. @default 'neutral' */
1987
2322
  trend?: 'up' | 'down' | 'neutral';
1988
2323
  /** Skeleton stav. @default false */
@@ -1990,11 +2325,11 @@ interface StatProps {
1990
2325
  /** Klikatelná karta s hover efektem. */
1991
2326
  onClick?: () => void;
1992
2327
  /** Sekundární text pod hodnotou. */
1993
- helper?: string | React.ReactNode;
2328
+ helper?: string | React__default.ReactNode;
1994
2329
  /** Dodatečná CSS třída. */
1995
2330
  className?: string;
1996
2331
  /** Další inline styly. */
1997
- style?: React.CSSProperties;
2332
+ style?: React__default.CSSProperties;
1998
2333
  }
1999
2334
  /**
2000
2335
  * Statistický ukazatel dle SM-UI design systému.
@@ -2008,15 +2343,21 @@ interface StatProps {
2008
2343
  * <Stat label="Aktivní" value={loading ? undefined : 127} loading={loading} onClick={() => navigate('/tasks')} helper="z toho 12 po termínu" />
2009
2344
  * ```
2010
2345
  */
2011
- declare const Stat: React.FC<StatProps>;
2346
+ declare const Stat: React__default.FC<StatProps>;
2012
2347
 
2013
2348
  type AvatarSize = '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number;
2014
2349
  interface AvatarProps {
2015
2350
  /**
2016
2351
  * Iniciály zobrazené uvnitř avataru (např. `"DC"`, `"JN"`).
2017
2352
  * Automaticky převedeny na velká písmena.
2353
+ * Použijí se i jako fallback, když `src` chybí nebo se obrázek nenačte.
2018
2354
  */
2019
2355
  initials: string;
2356
+ /**
2357
+ * URL obrázku. Pokud je zadán a načte se, vykreslí se místo iniciál.
2358
+ * Při chybě načtení (`onError`) avatar automaticky spadne zpět na iniciály.
2359
+ */
2360
+ src?: string;
2020
2361
  /**
2021
2362
  * Velikost avataru.
2022
2363
  * - `'2xs'` — 16 px
@@ -2033,33 +2374,37 @@ interface AvatarProps {
2033
2374
  * Zaoblení rohů kontejneru avataru.
2034
2375
  * @default '8px'
2035
2376
  */
2036
- borderRadius?: React.CSSProperties['borderRadius'];
2377
+ borderRadius?: React__default.CSSProperties['borderRadius'];
2037
2378
  /**
2038
2379
  * Přístupný popisek čtený čtečkami obrazovky.
2039
2380
  * Pokud není zadán, použije se `"Avatar {initials}"`.
2040
2381
  */
2041
2382
  'aria-label'?: string;
2042
2383
  /** Další inline styly pro kořenový element. */
2043
- style?: React.CSSProperties;
2384
+ style?: React__default.CSSProperties;
2044
2385
  /** Dodatečná CSS třída pro kořenový element. */
2045
2386
  className?: string;
2046
2387
  }
2047
2388
  /**
2048
- * Kruhový / čtvercový avatar zobrazující iniciály uživatele
2049
- * na oranžovém gradientním pozadí.
2389
+ * Kruhový / čtvercový avatar. Zobrazuje obrázek (`src`), nebo iniciály uživatele
2390
+ * na oranžovém gradientním pozadí. Při selhání načtení obrázku automaticky
2391
+ * spadne zpět na iniciály.
2392
+ *
2393
+ * Předává `ref` na kořenový element, takže ho lze přímo použít jako trigger
2394
+ * pro `Tooltip` / `Popover` bez obalování do `<span>`.
2050
2395
  *
2051
2396
  * @example
2052
2397
  * ```tsx
2053
2398
  * <Avatar initials="DC" />
2054
- * <Avatar initials="JN" size="lg" />
2399
+ * <Avatar initials="JN" size="lg" src="/uploads/jana.jpg" />
2055
2400
  * <Avatar initials="AB" size={56} borderRadius="50%" />
2056
2401
  * ```
2057
2402
  */
2058
- declare const Avatar: React.FC<AvatarProps>;
2403
+ declare const Avatar: React__default.ForwardRefExoticComponent<AvatarProps & React__default.RefAttributes<HTMLDivElement>>;
2059
2404
 
2060
2405
  interface AvatarStackProps {
2061
2406
  /** Avatar elementy. Každý dostane forced consistent size a circular shape. */
2062
- children: React.ReactNode;
2407
+ children: React__default.ReactNode;
2063
2408
  /** Max viditelných avatarů. Ostatní se sbalí do „+N" badge. @default 3 */
2064
2409
  max?: number;
2065
2410
  /** Forced size pro všechny avatary uvnitř. @default 'sm' */
@@ -2071,7 +2416,7 @@ interface AvatarStackProps {
2071
2416
  /** Tooltip nad „+N" badge. String nebo funkce (hiddenCount) => string. */
2072
2417
  overflowTooltip?: string | ((hiddenCount: number) => string);
2073
2418
  /** Další inline styly. */
2074
- style?: React.CSSProperties;
2419
+ style?: React__default.CSSProperties;
2075
2420
  /** Dodatečná CSS třída. */
2076
2421
  className?: string;
2077
2422
  }
@@ -2091,7 +2436,7 @@ interface AvatarStackProps {
2091
2436
  * </AvatarStack>
2092
2437
  * ```
2093
2438
  */
2094
- declare const AvatarStack: React.FC<AvatarStackProps>;
2439
+ declare const AvatarStack: React__default.FC<AvatarStackProps>;
2095
2440
 
2096
2441
  interface TagProps {
2097
2442
  /**
@@ -2104,18 +2449,57 @@ interface TagProps {
2104
2449
  */
2105
2450
  onRemove?: () => void;
2106
2451
  /** Další inline styly pro kořenový element. */
2107
- style?: React.CSSProperties;
2452
+ style?: React__default.CSSProperties;
2108
2453
  /** Dodatečná CSS třída pro kořenový element. */
2109
2454
  className?: string;
2110
2455
  }
2111
- interface BadgeProps {
2456
+ type BadgeVariant = 'default' | 'brand' | 'neutral' | 'success' | 'info' | 'warning' | 'danger';
2457
+ type BadgeSize = 'sm' | 'md';
2458
+ /** Barva s protějškem pro tmavý režim. */
2459
+ interface ThemedColor {
2460
+ light: string;
2461
+ dark: string;
2462
+ }
2463
+ interface BadgeProps extends Omit<React__default.HTMLAttributes<HTMLDivElement>, 'color' | 'style' | 'className'> {
2112
2464
  /**
2113
2465
  * Text zobrazený uvnitř badge.
2114
- * Automaticky převeden na velká písmena dle SM-UI design systému.
2466
+ * Ve výchozím stavu převeden na velká písmena dle SM-UI design systému (viz `uppercase`).
2115
2467
  */
2116
2468
  label: string;
2469
+ /**
2470
+ * Sémantická barevná varianta.
2471
+ * - `'brand'` — oranžová (brand); pro zvýraznění, ne pro stav
2472
+ * - `'default'` — alias pro `'brand'` (zachováno kvůli kompatibilitě), výchozí
2473
+ * - `'neutral'` — tlumená šedá pro tiché stavy („interní", „archiv", „brzy")
2474
+ * - `'success'` — zelená (#00A205)
2475
+ * - `'info'` — modrá
2476
+ * - `'warning'` — žlutá / amber
2477
+ * - `'danger'` — červená (#EF3838)
2478
+ * @default 'default'
2479
+ */
2480
+ variant?: BadgeVariant;
2481
+ /**
2482
+ * Vlastní barva pozadí — přepíše `variant`. Řetězec (i CSS proměnná)
2483
+ * nebo dvojice `{ light, dark }` pro oba motivy.
2484
+ */
2485
+ color?: string | ThemedColor;
2486
+ /** Vlastní barva textu (řetězec nebo `{ light, dark }`). Výchozí podle varianty. */
2487
+ textColor?: string | ThemedColor;
2488
+ /** Ikona vlevo před textem (Phosphor, 10–12px). */
2489
+ icon?: React__default.ReactNode;
2490
+ /** Barevná tečka před textem (barva textu badge). @default false */
2491
+ dot?: boolean;
2492
+ /**
2493
+ * Velikost.
2494
+ * - `'md'` — výchozí (10px písmo, padding 2px 16px)
2495
+ * - `'sm'` — kompaktní do hustých tabulek (9px písmo, padding 1px 8px)
2496
+ * @default 'md'
2497
+ */
2498
+ size?: BadgeSize;
2499
+ /** Převádět text na verzálky. @default true */
2500
+ uppercase?: boolean;
2117
2501
  /** Další inline styly pro kořenový element. */
2118
- style?: React.CSSProperties;
2502
+ style?: React__default.CSSProperties;
2119
2503
  /** Dodatečná CSS třída pro kořenový element. */
2120
2504
  className?: string;
2121
2505
  }
@@ -2146,7 +2530,7 @@ interface TagItemProps {
2146
2530
  */
2147
2531
  showActions?: boolean;
2148
2532
  /** Další inline styly pro kořenový element. */
2149
- style?: React.CSSProperties;
2533
+ style?: React__default.CSSProperties;
2150
2534
  /** Dodatečná CSS třída pro kořenový element. */
2151
2535
  className?: string;
2152
2536
  }
@@ -2160,18 +2544,25 @@ interface TagItemProps {
2160
2544
  * <Tag label="TypeScript" onRemove={() => removeTag('ts')} />
2161
2545
  * ```
2162
2546
  */
2163
- declare const Tag: React.FC<TagProps>;
2547
+ declare const Tag: React__default.FC<TagProps>;
2164
2548
  /**
2165
- * Malý stavový badge vykreslený jako oranžová pilulka.
2166
- * Text je automaticky převeden na velká písmena.
2549
+ * Malý stavový badge vykreslený jako barevná pilulka.
2550
+ * Text je ve výchozím stavu převeden na velká písmena.
2551
+ *
2552
+ * Bez `variant` je oranžový (brand, alias `default`). Pro tiché stavy použijte
2553
+ * `variant="neutral"`; sémantické varianty nesou stavovou barvu. Stav nikdy
2554
+ * nekódujte jen barvou — přidejte `icon` nebo `dot`.
2167
2555
  *
2168
2556
  * @example
2169
2557
  * ```tsx
2170
2558
  * <Badge label="Novinka" />
2171
- * <Badge label="Beta" />
2559
+ * <Badge label="Interní" variant="neutral" />
2560
+ * <Badge label="Schváleno" variant="success" icon={<CheckIcon size={10} />} />
2561
+ * <Badge label="Zamítnuto" variant="danger" size="sm" />
2562
+ * <Badge label="Vlastní" color={{ light: '#DDF3E1', dark: '#1E7A2A66' }} textColor={{ light: '#1a1a1a', dark: '#ffffff' }} uppercase={false} />
2172
2563
  * ```
2173
2564
  */
2174
- declare const Badge: React.FC<BadgeProps>;
2565
+ declare const Badge: React__default.FC<BadgeProps>;
2175
2566
  /**
2176
2567
  * Řádek seznamu zobrazující pojmenovaný tag s volitelnými akčními tlačítky
2177
2568
  * (filtrování, úprava, smazání).
@@ -2185,7 +2576,7 @@ declare const Badge: React.FC<BadgeProps>;
2185
2576
  * <TagItem label="Blog" showActions={false} />
2186
2577
  * ```
2187
2578
  */
2188
- declare const TagItem: React.FC<TagItemProps>;
2579
+ declare const TagItem: React__default.FC<TagItemProps>;
2189
2580
 
2190
2581
  /** Událost zobrazená v kalendáři. */
2191
2582
  interface CalendarEvent {
@@ -2204,7 +2595,7 @@ interface CalendarEvent {
2204
2595
  /** Emoji zobrazené před názvem. */
2205
2596
  emoji?: string;
2206
2597
  /** Obsah tooltipu. Pokud je nastaveno, event bar se obalí tooltipem. */
2207
- tooltip?: string | React.ReactNode;
2598
+ tooltip?: string | React__default.ReactNode;
2208
2599
  }
2209
2600
  interface CalendarProps {
2210
2601
  /** Aktuálně vybraný datum. */
@@ -2235,8 +2626,15 @@ interface CalendarProps {
2235
2626
  minDate?: Date;
2236
2627
  /** Maximální povolený datum. */
2237
2628
  maxDate?: Date;
2629
+ /**
2630
+ * Velikost kompaktního kalendáře (buňky, písmo, odsazení).
2631
+ * - `'md'` — výchozí (buňka 36px)
2632
+ * - `'sm'` — do popoverů a úzkých sloupců (buňka 28px)
2633
+ * @default 'md'
2634
+ */
2635
+ size?: 'sm' | 'md';
2238
2636
  /** Další inline styly. */
2239
- style?: React.CSSProperties;
2637
+ style?: React__default.CSSProperties;
2240
2638
  /** Dodatečná CSS třída. */
2241
2639
  className?: string;
2242
2640
  }
@@ -2253,6 +2651,7 @@ interface CalendarProps {
2253
2651
  * ```tsx
2254
2652
  * // Kompaktní
2255
2653
  * <Calendar value={date} onChange={setDate} events={events} />
2654
+ * <Calendar size="sm" value={date} onChange={setDate} />
2256
2655
  *
2257
2656
  * // Plnohodnotný
2258
2657
  * <Calendar
@@ -2262,20 +2661,29 @@ interface CalendarProps {
2262
2661
  * />
2263
2662
  * ```
2264
2663
  */
2265
- declare const Calendar: React.FC<CalendarProps>;
2664
+ declare const Calendar: React__default.FC<CalendarProps>;
2266
2665
 
2267
2666
  /** Položka časové osy. */
2268
2667
  interface TimelineItem {
2269
- /** Nadpis události. */
2270
- title: string;
2271
- /** Volitelný popis události. */
2272
- description?: string;
2668
+ /** Nadpis události (text nebo ReactNode, např. s Badge). */
2669
+ title: React__default.ReactNode;
2670
+ /** Volitelný popis události (text nebo ReactNode). */
2671
+ description?: React__default.ReactNode;
2273
2672
  /** Volitelný datum / časový údaj. */
2274
2673
  date?: string;
2275
2674
  /** Vlastní ikona místo výchozí tečky. */
2276
- icon?: React.ReactNode;
2675
+ icon?: React__default.ReactNode;
2277
2676
  /** Barva tečky nebo pozadí ikony. @default '#FC4F00' */
2278
2677
  color?: string;
2678
+ /** Obsah vpravo od nadpisu (štítek, badge, počet). Vertikální osa. */
2679
+ meta?: React__default.ReactNode;
2680
+ /** Libovolný obsah pod popisem (tlačítka, seznam, vnořený blok). Vertikální osa. */
2681
+ content?: React__default.ReactNode;
2682
+ /**
2683
+ * `'section'` = nadpis skupiny bez tečky (uvozuje blok položek).
2684
+ * @default 'dot'
2685
+ */
2686
+ variant?: 'dot' | 'section';
2279
2687
  }
2280
2688
  interface TimelineProps {
2281
2689
  /** Položky časové osy. */
@@ -2283,7 +2691,7 @@ interface TimelineProps {
2283
2691
  /** Orientace časové osy. @default 'vertical' */
2284
2692
  orientation?: 'vertical' | 'horizontal';
2285
2693
  /** Další inline styly. */
2286
- style?: React.CSSProperties;
2694
+ style?: React__default.CSSProperties;
2287
2695
  /** Dodatečná CSS třída. */
2288
2696
  className?: string;
2289
2697
  }
@@ -2302,16 +2710,22 @@ interface TimelineProps {
2302
2710
  * { title: 'Doručeno', date: '14:30', color: '#00A205' },
2303
2711
  * ]}
2304
2712
  * />
2713
+ *
2714
+ * // Sekce, štítky a vlastní obsah
2715
+ * <Timeline items={[
2716
+ * { variant: 'section', title: 'Fáze 1', meta: <Badge label="8 kroků" size="sm" variant="neutral" /> },
2717
+ * { title: <>Analýza <Badge label="Vždy" variant="success" size="sm" /></>, content: <Button size="sm">Otevřít</Button> },
2718
+ * ]} />
2305
2719
  * ```
2306
2720
  */
2307
- declare const Timeline: React.FC<TimelineProps>;
2721
+ declare const Timeline: React__default.FC<TimelineProps>;
2308
2722
 
2309
2723
  /** Položka klíč-hodnota v seznamu. */
2310
2724
  interface DataListItem {
2311
2725
  /** Popisek (klíč). */
2312
2726
  label: string;
2313
2727
  /** Hodnota — řetězec nebo libovolný React uzel. */
2314
- value: React.ReactNode;
2728
+ value: React__default.ReactNode;
2315
2729
  }
2316
2730
  interface DataListProps {
2317
2731
  /** Položky k zobrazení. */
@@ -2321,7 +2735,7 @@ interface DataListProps {
2321
2735
  /** Střídání barvy řádků. @default false */
2322
2736
  striped?: boolean;
2323
2737
  /** Další inline styly. */
2324
- style?: React.CSSProperties;
2738
+ style?: React__default.CSSProperties;
2325
2739
  /** Dodatečná CSS třída. */
2326
2740
  className?: string;
2327
2741
  }
@@ -2344,7 +2758,7 @@ interface DataListProps {
2344
2758
  * />
2345
2759
  * ```
2346
2760
  */
2347
- declare const DataList: React.FC<DataListProps>;
2761
+ declare const DataList: React__default.FC<DataListProps>;
2348
2762
 
2349
2763
  /** Uzel stromové struktury. */
2350
2764
  interface TreeNode {
@@ -2353,7 +2767,7 @@ interface TreeNode {
2353
2767
  /** Zobrazený text uzlu. */
2354
2768
  label: string;
2355
2769
  /** Volitelná ikona vedle popisku. */
2356
- icon?: React.ReactNode;
2770
+ icon?: React__default.ReactNode;
2357
2771
  /** Podřízené uzly. */
2358
2772
  children?: TreeNode[];
2359
2773
  }
@@ -2367,7 +2781,7 @@ interface TreeProps {
2367
2781
  /** ID uzlů, které jsou ve výchozím stavu rozbalené. */
2368
2782
  defaultExpanded?: string[];
2369
2783
  /** Další inline styly. */
2370
- style?: React.CSSProperties;
2784
+ style?: React__default.CSSProperties;
2371
2785
  /** Dodatečná CSS třída. */
2372
2786
  className?: string;
2373
2787
  }
@@ -2391,7 +2805,7 @@ interface TreeProps {
2391
2805
  * />
2392
2806
  * ```
2393
2807
  */
2394
- declare const Tree: React.FC<TreeProps>;
2808
+ declare const Tree: React__default.FC<TreeProps>;
2395
2809
 
2396
2810
  type StatusBadgeStatus = 'online' | 'offline' | 'away' | 'busy' | (string & {});
2397
2811
  interface StatusBadgeProps {
@@ -2406,7 +2820,7 @@ interface StatusBadgeProps {
2406
2820
  /** Vlastní barva indikátoru — přepíše výchozí barvu stavu. */
2407
2821
  color?: string;
2408
2822
  /** Další inline styly. */
2409
- style?: React.CSSProperties;
2823
+ style?: React__default.CSSProperties;
2410
2824
  /** Dodatečná CSS třída. */
2411
2825
  className?: string;
2412
2826
  }
@@ -2424,28 +2838,363 @@ interface StatusBadgeProps {
2424
2838
  * <StatusBadge status="streaming" color="#9C27B0" label="Živě" pulse />
2425
2839
  * ```
2426
2840
  */
2427
- declare const StatusBadge: React.FC<StatusBadgeProps>;
2841
+ declare const StatusBadge: React__default.FC<StatusBadgeProps>;
2842
+
2843
+ /** Default series palette — brand orange first, then a distinct categorical set. */
2844
+ declare const CHART_PALETTE: readonly ["#FC4F00", "#2D7FF9", "#00A205", "#F5A623", "#9C27B0", "#00B8D9", "#EF3838", "#7C4DFF"];
2845
+ interface ChartSeries {
2846
+ /** Series name shown in legend / tooltip. */
2847
+ name: string;
2848
+ /** Values aligned 1:1 with `categories`. */
2849
+ data: number[];
2850
+ /** Series color. Defaults to the palette by position. */
2851
+ color?: string;
2852
+ }
2853
+ interface PieDatum {
2854
+ /** Slice label. */
2855
+ label: string;
2856
+ /** Slice value (must be >= 0). */
2857
+ value: number;
2858
+ /** Slice color. Defaults to the palette by position. */
2859
+ color?: string;
2860
+ }
2861
+ type LegendPosition = 'top' | 'bottom' | 'none';
2862
+
2863
+ interface LineChartProps {
2864
+ /** One or more data series, each aligned to `categories`. */
2865
+ series: ChartSeries[];
2866
+ /** X-axis category labels. */
2867
+ categories: string[];
2868
+ /** Chart height in px. @default 260 */
2869
+ height?: number;
2870
+ /** Explicit width in px. When omitted the chart fills its container (responsive). */
2871
+ width?: number;
2872
+ /** Fill the area under each line. @default false (AreaChart sets true) */
2873
+ area?: boolean;
2874
+ /** Line interpolation. @default 'smooth' */
2875
+ curve?: 'smooth' | 'linear';
2876
+ /** Show horizontal grid lines. @default true */
2877
+ showGrid?: boolean;
2878
+ /** Show the x-axis labels. @default true */
2879
+ showXAxis?: boolean;
2880
+ /** Show the y-axis labels. @default true */
2881
+ showYAxis?: boolean;
2882
+ /** Show point markers. @default true */
2883
+ showDots?: boolean;
2884
+ /** Show hover tooltip. @default true */
2885
+ showTooltip?: boolean;
2886
+ /** Legend position. @default 'top' for >1 series, jinak 'none' */
2887
+ legend?: LegendPosition;
2888
+ /** Fixed y domain `[min, max]`. Defaults to a "nice" auto range including 0. */
2889
+ yDomain?: [number, number];
2890
+ /** Approximate number of y-axis ticks. @default 5 */
2891
+ yTickCount?: number;
2892
+ /** Line thickness in px. @default 2 */
2893
+ strokeWidth?: number;
2894
+ /** Area fill opacity. @default 0.15 */
2895
+ fillOpacity?: number;
2896
+ /** Animate the draw-in on mount. @default true */
2897
+ animate?: boolean;
2898
+ /** Format y values / tooltip numbers. @default toLocaleString */
2899
+ valueFormat?: (value: number) => string;
2900
+ /** Plot margins (px). */
2901
+ margin?: {
2902
+ top?: number;
2903
+ right?: number;
2904
+ bottom?: number;
2905
+ left?: number;
2906
+ };
2907
+ /** Called when a point is clicked. */
2908
+ onPointClick?: (info: {
2909
+ category: string;
2910
+ categoryIndex: number;
2911
+ series: string;
2912
+ value: number;
2913
+ }) => void;
2914
+ /** Accessible label for the chart. */
2915
+ ariaLabel?: string;
2916
+ /** Další inline styly pro obal. */
2917
+ style?: React__default.CSSProperties;
2918
+ /** Dodatečná CSS třída pro obal. */
2919
+ className?: string;
2920
+ }
2921
+ /**
2922
+ * Čárový graf (SVG, bez závislostí) dle SM-UI design systému.
2923
+ *
2924
+ * Více sérií, hladká / linear křivka, mřížka, osy, hover tooltip s crosshairem,
2925
+ * legenda, draw-in animace a tmavý / světlý režim.
2926
+ *
2927
+ * @example
2928
+ * ```tsx
2929
+ * <LineChart
2930
+ * categories={['Po', 'Út', 'St', 'Čt', 'Pá']}
2931
+ * series={[{ name: 'Návštěvy', data: [120, 200, 150, 80, 170] }]}
2932
+ * />
2933
+ * ```
2934
+ */
2935
+ declare const LineChart: React__default.FC<LineChartProps>;
2936
+ /**
2937
+ * Plošný graf — `LineChart` s výplní pod čarou.
2938
+ *
2939
+ * @example
2940
+ * ```tsx
2941
+ * <AreaChart categories={mesice} series={[{ name: 'Tržby', data: trzby }]} />
2942
+ * ```
2943
+ */
2944
+ declare const AreaChart: React__default.FC<LineChartProps>;
2428
2945
 
2946
+ interface BarChartProps {
2947
+ /** One or more data series, each aligned to `categories`. */
2948
+ series: ChartSeries[];
2949
+ /** Category labels. */
2950
+ categories: string[];
2951
+ /** Chart height in px. @default 260 */
2952
+ height?: number;
2953
+ /** Explicit width in px. When omitted the chart fills its container (responsive). */
2954
+ width?: number;
2955
+ /** Bar direction. @default 'vertical' */
2956
+ orientation?: 'vertical' | 'horizontal';
2957
+ /** Stack series instead of grouping them side by side. @default false */
2958
+ stacked?: boolean;
2959
+ /** Show grid lines on the value axis. @default true */
2960
+ showGrid?: boolean;
2961
+ /** Show category-axis labels. @default true */
2962
+ showCategoryAxis?: boolean;
2963
+ /** Show value-axis labels. @default true */
2964
+ showValueAxis?: boolean;
2965
+ /** Show hover tooltip. @default true */
2966
+ showTooltip?: boolean;
2967
+ /** Print the value on top of each bar. @default false */
2968
+ showValues?: boolean;
2969
+ /** Legend position. @default 'top' for >1 series, jinak 'none' */
2970
+ legend?: LegendPosition;
2971
+ /** Fixed value domain `[min, max]`. Defaults to a "nice" auto range including 0. */
2972
+ valueDomain?: [number, number];
2973
+ /** Approximate number of value-axis ticks. @default 5 */
2974
+ valueTickCount?: number;
2975
+ /** Corner radius of bars. @default 4 */
2976
+ barRadius?: number;
2977
+ /** Max thickness of a single bar (group) in px. */
2978
+ maxBarSize?: number;
2979
+ /** Animate the grow-in on mount. @default true */
2980
+ animate?: boolean;
2981
+ /** Format value-axis / tooltip numbers. @default toLocaleString */
2982
+ valueFormat?: (value: number) => string;
2983
+ /** Plot margins (px). */
2984
+ margin?: {
2985
+ top?: number;
2986
+ right?: number;
2987
+ bottom?: number;
2988
+ left?: number;
2989
+ };
2990
+ /** Called when a bar is clicked. */
2991
+ onBarClick?: (info: {
2992
+ category: string;
2993
+ categoryIndex: number;
2994
+ series: string;
2995
+ value: number;
2996
+ }) => void;
2997
+ /** Accessible label for the chart. */
2998
+ ariaLabel?: string;
2999
+ /** Další inline styly pro obal. */
3000
+ style?: React__default.CSSProperties;
3001
+ /** Dodatečná CSS třída pro obal. */
3002
+ className?: string;
3003
+ }
3004
+ /**
3005
+ * Sloupcový graf (SVG, bez závislostí) dle SM-UI design systému.
3006
+ *
3007
+ * Vertikální i horizontální orientace, seskupené (grouped) i skládané (stacked)
3008
+ * série, mřížka, osy, hover tooltip, legenda, grow-in animace a tmavý / světlý režim.
3009
+ *
3010
+ * @example
3011
+ * ```tsx
3012
+ * <BarChart
3013
+ * categories={['Q1', 'Q2', 'Q3', 'Q4']}
3014
+ * series={[{ name: 'Tržby', data: [120, 200, 150, 280] }]}
3015
+ * />
3016
+ *
3017
+ * <BarChart
3018
+ * stacked
3019
+ * categories={['Po', 'Út', 'St']}
3020
+ * series={[{ name: 'Web', data: [10, 20, 15] }, { name: 'App', data: [5, 8, 12] }]}
3021
+ * />
3022
+ * ```
3023
+ */
3024
+ declare const BarChart: React__default.FC<BarChartProps>;
3025
+
3026
+ interface PieChartProps {
3027
+ /** Slices to render (values must be >= 0). */
3028
+ data: PieDatum[];
3029
+ /** Diameter of the pie in px. @default 220 */
3030
+ size?: number;
3031
+ /** Inner radius as a fraction of the outer radius (0 = pie, >0 = donut). @default 0 */
3032
+ innerRatio?: number;
3033
+ /** Legend position. @default 'right' */
3034
+ legend?: 'right' | 'bottom' | 'none';
3035
+ /** Render the percentage on each slice. @default false */
3036
+ showLabels?: boolean;
3037
+ /** Show hover tooltip. @default true */
3038
+ showTooltip?: boolean;
3039
+ /** Gap between slices in degrees. @default 0 */
3040
+ padAngle?: number;
3041
+ /** Custom content rendered in the donut center (only meaningful when innerRatio > 0). */
3042
+ centerLabel?: React__default.ReactNode;
3043
+ /** Animate the draw-in on mount. @default true */
3044
+ animate?: boolean;
3045
+ /** Format tooltip / label numbers. @default toLocaleString */
3046
+ valueFormat?: (value: number) => string;
3047
+ /** Called when a slice is clicked. */
3048
+ onSliceClick?: (info: {
3049
+ label: string;
3050
+ value: number;
3051
+ index: number;
3052
+ percent: number;
3053
+ }) => void;
3054
+ /** Accessible label for the chart. */
3055
+ ariaLabel?: string;
3056
+ /** Další inline styly pro obal. */
3057
+ style?: React__default.CSSProperties;
3058
+ /** Dodatečná CSS třída pro obal. */
3059
+ className?: string;
3060
+ }
3061
+ /**
3062
+ * Koláčový graf (SVG, bez závislostí) dle SM-UI design systému.
3063
+ *
3064
+ * Hover zvýraznění s vysunutím výseče, volitelné popisky s procenty, legenda,
3065
+ * draw-in animace a tmavý / světlý režim.
3066
+ *
3067
+ * @example
3068
+ * ```tsx
3069
+ * <PieChart data={[
3070
+ * { label: 'Chrome', value: 64 },
3071
+ * { label: 'Safari', value: 19 },
3072
+ * { label: 'Firefox', value: 9 },
3073
+ * ]} />
3074
+ * ```
3075
+ */
3076
+ declare const PieChart: React__default.FC<PieChartProps>;
3077
+ /**
3078
+ * Prstencový graf — `PieChart` s dírou uprostřed (a volitelným `centerLabel`).
3079
+ *
3080
+ * @example
3081
+ * ```tsx
3082
+ * <DonutChart
3083
+ * data={browsers}
3084
+ * centerLabel={<strong style={{ fontSize: 22 }}>92%</strong>}
3085
+ * />
3086
+ * ```
3087
+ */
3088
+ declare const DonutChart: React__default.FC<PieChartProps>;
3089
+
3090
+ interface SparklineProps {
3091
+ /** Data points. */
3092
+ data: number[];
3093
+ /** Width in px. @default 100 */
3094
+ width?: number;
3095
+ /** Height in px. @default 32 */
3096
+ height?: number;
3097
+ /** Visual type. @default 'line' */
3098
+ type?: 'line' | 'area' | 'bar';
3099
+ /** Line / bar / fill color. @default brand orange */
3100
+ color?: string;
3101
+ /** Line interpolation (line/area). @default 'smooth' */
3102
+ curve?: 'smooth' | 'linear';
3103
+ /** Line thickness. @default 1.5 */
3104
+ strokeWidth?: number;
3105
+ /** Area fill opacity. @default 0.18 */
3106
+ fillOpacity?: number;
3107
+ /** Highlight the last point with a dot. @default false */
3108
+ showLastDot?: boolean;
3109
+ /** Animate the draw-in on mount. @default true */
3110
+ animate?: boolean;
3111
+ /** Accessible label. */
3112
+ ariaLabel?: string;
3113
+ /** Další inline styly. */
3114
+ style?: React__default.CSSProperties;
3115
+ /** Dodatečná CSS třída. */
3116
+ className?: string;
3117
+ }
3118
+ /**
3119
+ * Mini graf bez os a popisků — pro vložení do `Stat` karet, tabulek a řádků.
3120
+ *
3121
+ * Měřítko se přizpůsobuje datům (ne nutně od nuly).
3122
+ *
3123
+ * @example
3124
+ * ```tsx
3125
+ * <Sparkline data={[3, 7, 4, 9, 6, 11, 8]} />
3126
+ * <Sparkline type="area" color="#00A205" data={trend} showLastDot />
3127
+ * <Sparkline type="bar" data={[4, 8, 6, 10, 7]} />
3128
+ * ```
3129
+ */
3130
+ declare const Sparkline: React__default.FC<SparklineProps>;
3131
+
3132
+ type FocusTrapInitialFocus = 'container' | 'first' | React__default.RefObject<HTMLElement | null>;
3133
+ interface UseFocusTrapOptions {
3134
+ /** Zda je past aktivní. */
3135
+ active: boolean;
3136
+ /**
3137
+ * Kam přesunout fokus po aktivaci.
3138
+ * - `'container'` — na kontejner (musí mít `tabIndex={-1}`)
3139
+ * - `'first'` — na první viditelný fokusovatelný prvek
3140
+ * - ref — na konkrétní prvek
3141
+ * @default 'container'
3142
+ */
3143
+ initialFocus?: FocusTrapInitialFocus;
3144
+ /** Po deaktivaci vrátit fokus na prvek, který byl aktivní před otevřením. @default true */
3145
+ returnFocus?: boolean;
3146
+ }
3147
+ /**
3148
+ * Uzavře Tab / Shift+Tab do kontejneru. Skryté prvky (`display: none`)
3149
+ * se přeskakují, takže wrap funguje i s responzivně schovanými taby.
3150
+ * Reaguje jen pokud je fokus uvnitř kontejneru — vnořené portály
3151
+ * (dropdown Selectu) tak nejsou násilně vraceny zpět.
3152
+ */
3153
+ declare function useFocusTrap(containerRef: React__default.RefObject<HTMLElement | null>, { active, initialFocus, returnFocus }: UseFocusTrapOptions): void;
3154
+
3155
+ /** Breakpointy pro `fullscreenBelow` (max-width v px). */
3156
+ declare const BREAKPOINTS: {
3157
+ readonly sm: 640;
3158
+ readonly md: 768;
3159
+ readonly lg: 1024;
3160
+ };
3161
+ type ModalBreakpoint = keyof typeof BREAKPOINTS;
2429
3162
  interface ModalProps {
2430
3163
  /** Řídí zobrazení modálního okna. */
2431
3164
  open: boolean;
2432
3165
  /** Voláno při zavření modálu. */
2433
3166
  onClose: () => void;
2434
3167
  /** Titulek zobrazený v záhlaví modálu. String nebo ReactNode pro vlastní hlavičku. */
2435
- title?: string | React.ReactNode;
3168
+ title?: string | React__default.ReactNode;
2436
3169
  /** Alternativní slot pro celou hlavičku (nahrazuje title + close button). */
2437
- titleSlot?: React.ReactNode;
3170
+ titleSlot?: React__default.ReactNode;
2438
3171
  /** Obsah těla modálu. */
2439
- children: React.ReactNode;
3172
+ children: React__default.ReactNode;
2440
3173
  /** Obsah patičky modálu (tlačítka apod.). */
2441
- footer?: React.ReactNode;
2442
- /** Velikostní preset modálu. @default 'md' */
2443
- size?: 'sm' | 'md' | 'lg' | 'fullscreen';
3174
+ footer?: React__default.ReactNode;
3175
+ /** Velikostní preset modálu. `xl` je velký, ale ne fullscreen (1080px / 90vh). @default 'md' */
3176
+ size?: 'sm' | 'md' | 'lg' | 'xl' | 'fullscreen';
3177
+ /**
3178
+ * Pod tímto breakpointem (šířka viewportu) se modál vykreslí jako fullscreen,
3179
+ * nad ním jako karta dle `size`. Breakpointy: sm 640px, md 768px, lg 1024px.
3180
+ */
3181
+ fullscreenBelow?: ModalBreakpoint;
2444
3182
  /**
2445
3183
  * Explicitní šířka modálu. Přepíše `size`.
2446
3184
  * Přijímá číslo (px) nebo CSS string (např. '90vw').
2447
3185
  */
2448
3186
  width?: number | string;
3187
+ /**
3188
+ * Maximální výška karty. Přepíše výšku danou `size`.
3189
+ * Obsah nad tuto výšku scrolluje v těle modálu. Číslo = px, nebo CSS string ('90vh').
3190
+ */
3191
+ maxHeight?: number | string;
3192
+ /**
3193
+ * z-index kořenového overlay kontejneru.
3194
+ * Výchozí hodnota čerpá z CSS proměnné `--sm-ui-z-overlay` (fallback 99998)
3195
+ * a u vnořených overlayů se automaticky zvedá nad rodiče. Tento prop ji přepíše pro jednu instanci.
3196
+ */
3197
+ zIndex?: number;
2449
3198
  /** Zavře modál kliknutím na překryvnou vrstvu. @default true */
2450
3199
  closeOnOverlay?: boolean;
2451
3200
  /** Zavře modál stisknutím klávesy Escape. @default true */
@@ -2460,17 +3209,33 @@ interface ModalProps {
2460
3209
  showClose?: boolean;
2461
3210
  /** Zobrazí oddělovací čáru pod hlavičkou. @default true */
2462
3211
  showHeaderDivider?: boolean;
3212
+ /**
3213
+ * Kam přesunout fokus po otevření: na kartu (`'container'`), první
3214
+ * fokusovatelný prvek (`'first'`) nebo konkrétní ref.
3215
+ * @default 'container'
3216
+ */
3217
+ initialFocus?: FocusTrapInitialFocus;
2463
3218
  /** Dodatečná CSS třída pro kartu modálu. */
2464
3219
  className?: string;
2465
3220
  /** Další inline styly pro kartu modálu. */
2466
- style?: React.CSSProperties;
3221
+ style?: React__default.CSSProperties;
3222
+ /**
3223
+ * Vypne výchozí vnitřní padding těla (`20px 24px`).
3224
+ * Vhodné pro full-bleed obsah (tabulky, taby edge-to-edge).
3225
+ * @default false
3226
+ */
3227
+ disableBodyPadding?: boolean;
3228
+ /** Dodatečná CSS třída pro tělo (scrollovací oblast). */
3229
+ bodyClassName?: string;
3230
+ /** Vlastní inline styly pro tělo (scrollovací oblast). */
3231
+ bodyStyle?: React__default.CSSProperties;
2467
3232
  }
2468
3233
  /**
2469
3234
  * Modální dialog dle SM-UI design systému.
2470
3235
  *
2471
3236
  * Vykresluje se přes React portál s překryvnou vrstvou,
2472
3237
  * podporuje animace otevření / zavření, focus trap
2473
- * a zamezení scrollu pozadí.
3238
+ * a zamezení scrollu pozadí. Escape zavře jen nejvyšší otevřený overlay.
2474
3239
  *
2475
3240
  * @example
2476
3241
  * ```tsx
@@ -2479,7 +3244,7 @@ interface ModalProps {
2479
3244
  * </Modal>
2480
3245
  * ```
2481
3246
  */
2482
- declare const Modal: React.FC<ModalProps>;
3247
+ declare const Modal: React__default.FC<ModalProps>;
2483
3248
 
2484
3249
  interface DrawerProps {
2485
3250
  /** Řídí zobrazení šuplíku. */
@@ -2488,12 +3253,29 @@ interface DrawerProps {
2488
3253
  onClose: () => void;
2489
3254
  /** Strana, ze které se šuplík vysune. @default 'right' */
2490
3255
  position?: 'left' | 'right';
3256
+ /**
3257
+ * Vzhled panelu.
3258
+ * - `'edge'` — přilepený k okraji viewportu (výchozí)
3259
+ * - `'floating'` — plovoucí karta s odsazením od okrajů a zaoblením
3260
+ * @default 'edge'
3261
+ */
3262
+ variant?: 'edge' | 'floating';
3263
+ /** Odsazení plovoucího panelu od okrajů viewportu v px (`variant="floating"`). @default 16 */
3264
+ floatingOffset?: number;
3265
+ /** Zavře šuplík stisknutím klávesy Escape. @default true */
3266
+ closeOnEscape?: boolean;
3267
+ /**
3268
+ * Kam přesunout fokus po otevření: na panel (`'container'`), první
3269
+ * fokusovatelný prvek (`'first'`) nebo konkrétní ref.
3270
+ * @default 'container'
3271
+ */
3272
+ initialFocus?: FocusTrapInitialFocus;
2491
3273
  /** Titulek zobrazený v záhlaví šuplíku. */
2492
3274
  title?: string;
2493
3275
  /** Obsah těla šuplíku. */
2494
- children: React.ReactNode;
3276
+ children: React__default.ReactNode;
2495
3277
  /** Obsah patičky šuplíku. */
2496
- footer?: React.ReactNode;
3278
+ footer?: React__default.ReactNode;
2497
3279
  /** Šířka panelu (px nebo CSS řetězec). @default 400 */
2498
3280
  width?: string | number;
2499
3281
  /** Zobrazí zavírací tlačítko (×). @default true */
@@ -2503,13 +3285,30 @@ interface DrawerProps {
2503
3285
  /** Dodatečná CSS třída pro panel šuplíku. */
2504
3286
  className?: string;
2505
3287
  /** Další inline styly pro panel šuplíku. */
2506
- style?: React.CSSProperties;
3288
+ style?: React__default.CSSProperties;
3289
+ /** Vlastní inline styly pro tělo (scrollovací oblast). */
3290
+ bodyStyle?: React__default.CSSProperties;
3291
+ /** Dodatečná CSS třída pro tělo (scrollovací oblast). */
3292
+ bodyClassName?: string;
3293
+ /**
3294
+ * Vypne výchozí vnitřní padding těla (`20px 24px`).
3295
+ * Vhodné pro panely s vlastním layoutem (např. navigace edge-to-edge).
3296
+ * @default false
3297
+ */
3298
+ disableBodyPadding?: boolean;
3299
+ /**
3300
+ * z-index kořenového overlay kontejneru.
3301
+ * Výchozí hodnota čerpá z CSS proměnné `--sm-ui-z-overlay` (fallback 99998)
3302
+ * a u vnořených overlayů se automaticky zvedá nad rodiče. Tento prop ji přepíše pro jednu instanci.
3303
+ */
3304
+ zIndex?: number;
2507
3305
  }
2508
3306
  /**
2509
3307
  * Vysuvný panel (Drawer) dle SM-UI design systému.
2510
3308
  *
2511
3309
  * Vykresluje se přes React portál, vysune se z levé nebo pravé strany
2512
- * s překryvnou vrstvou a plynulou animací.
3310
+ * s překryvnou vrstvou a plynulou animací. Focus trap, Escape zavírá jen
3311
+ * nejvyšší overlay, `variant="floating"` vykreslí plovoucí kartu.
2513
3312
  *
2514
3313
  * @example
2515
3314
  * ```tsx
@@ -2518,7 +3317,7 @@ interface DrawerProps {
2518
3317
  * </Drawer>
2519
3318
  * ```
2520
3319
  */
2521
- declare const Drawer: React.FC<DrawerProps>;
3320
+ declare const Drawer: React__default.FC<DrawerProps>;
2522
3321
 
2523
3322
  interface SheetProps {
2524
3323
  /** Řídí zobrazení sheetu. */
@@ -2526,15 +3325,37 @@ interface SheetProps {
2526
3325
  /** Voláno při zavření sheetu. */
2527
3326
  onClose: () => void;
2528
3327
  /** Obsah sheetu. */
2529
- children: React.ReactNode;
3328
+ children: React__default.ReactNode;
2530
3329
  /** Strana, ze které se sheet vysune. @default 'bottom' */
2531
3330
  side?: 'bottom' | 'right' | 'left' | 'top';
2532
3331
  /** Titulek zobrazený v záhlaví. */
2533
3332
  title?: string;
2534
3333
  /** Zobrazí zavírací tlačítko. @default true */
2535
3334
  showClose?: boolean;
3335
+ /** Zavře sheet kliknutím na překryvnou vrstvu. @default true */
3336
+ closeOnOverlay?: boolean;
3337
+ /** Zavře sheet stisknutím klávesy Escape. @default true */
3338
+ closeOnEscape?: boolean;
3339
+ /**
3340
+ * Kam přesunout fokus po otevření: na panel (`'container'`), první
3341
+ * fokusovatelný prvek (`'first'`) nebo konkrétní ref.
3342
+ * @default 'container'
3343
+ */
3344
+ initialFocus?: FocusTrapInitialFocus;
3345
+ /** Vypne výchozí vnitřní padding těla (`20px 24px`). @default false */
3346
+ disableBodyPadding?: boolean;
3347
+ /** Vlastní inline styly pro tělo (scrollovací oblast). */
3348
+ bodyStyle?: React__default.CSSProperties;
3349
+ /** Dodatečná CSS třída pro tělo (scrollovací oblast). */
3350
+ bodyClassName?: string;
3351
+ /**
3352
+ * z-index kořenového overlay kontejneru.
3353
+ * Výchozí hodnota čerpá z CSS proměnné `--sm-ui-z-overlay` (fallback 99998)
3354
+ * a u vnořených overlayů se automaticky zvedá nad rodiče.
3355
+ */
3356
+ zIndex?: number;
2536
3357
  /** Další inline styly. */
2537
- style?: React.CSSProperties;
3358
+ style?: React__default.CSSProperties;
2538
3359
  /** Dodatečná CSS třída. */
2539
3360
  className?: string;
2540
3361
  }
@@ -2551,7 +3372,7 @@ interface SheetProps {
2551
3372
  * </Sheet>
2552
3373
  * ```
2553
3374
  */
2554
- declare const Sheet: React.FC<SheetProps>;
3375
+ declare const Sheet: React__default.FC<SheetProps>;
2555
3376
 
2556
3377
  interface BreadcrumbItem {
2557
3378
  /** Zobrazovaný text položky. */
@@ -2559,19 +3380,25 @@ interface BreadcrumbItem {
2559
3380
  /** URL odkazu. Pokud chybí, položka se vykreslí jako prostý text. */
2560
3381
  href?: string;
2561
3382
  /** Voláno při kliknutí na položku. */
2562
- onClick?: (e: React.MouseEvent) => void;
3383
+ onClick?: (e: React__default.MouseEvent) => void;
2563
3384
  /** Volitelná ikona vykreslená před textem. */
2564
- icon?: React.ReactNode;
3385
+ icon?: React__default.ReactNode;
2565
3386
  }
2566
3387
  interface BreadcrumbProps {
2567
3388
  /** Seznam položek drobečkové navigace. */
2568
3389
  items: BreadcrumbItem[];
2569
3390
  /** Oddělovací znak mezi položkami. @default '/' */
2570
- separator?: React.ReactNode;
3391
+ separator?: React__default.ReactNode;
3392
+ /**
3393
+ * Komponenta pro vykreslení odkazu (položky s `href`), např. `Link` z Inertie
3394
+ * nebo react-routeru. Dostane `href`, `onClick`, `style`, `children`.
3395
+ * @default 'a'
3396
+ */
3397
+ linkComponent?: React__default.ElementType;
2571
3398
  /** Dodatečná CSS třída pro obalový element. */
2572
3399
  className?: string;
2573
3400
  /** Další inline styly pro obalový element. */
2574
- style?: React.CSSProperties;
3401
+ style?: React__default.CSSProperties;
2575
3402
  }
2576
3403
  /**
2577
3404
  * Drobečková navigace dle SM-UI design systému.
@@ -2588,9 +3415,12 @@ interface BreadcrumbProps {
2588
3415
  * { label: 'Detail' },
2589
3416
  * ]}
2590
3417
  * />
3418
+ *
3419
+ * // Klientský router (Inertia / react-router)
3420
+ * <Breadcrumb linkComponent={InertiaLink} items={items} />
2591
3421
  * ```
2592
3422
  */
2593
- declare const Breadcrumb: React.FC<BreadcrumbProps>;
3423
+ declare const Breadcrumb: React__default.FC<BreadcrumbProps>;
2594
3424
 
2595
3425
  interface PaginationProps {
2596
3426
  /** Aktuální číslo stránky (1-indexed). */
@@ -2610,7 +3440,7 @@ interface PaginationProps {
2610
3440
  /** Dodatečná CSS třída pro obalový element. */
2611
3441
  className?: string;
2612
3442
  /** Další inline styly pro obalový element. */
2613
- style?: React.CSSProperties;
3443
+ style?: React__default.CSSProperties;
2614
3444
  }
2615
3445
  /**
2616
3446
  * Stránkovací komponenta dle SM-UI design systému.
@@ -2623,7 +3453,7 @@ interface PaginationProps {
2623
3453
  * <Pagination page={3} totalPages={20} onChange={setPage} />
2624
3454
  * ```
2625
3455
  */
2626
- declare const Pagination: React.FC<PaginationProps>;
3456
+ declare const Pagination: React__default.FC<PaginationProps>;
2627
3457
 
2628
3458
  interface StepItem {
2629
3459
  /** Popisek kroku. */
@@ -2651,7 +3481,7 @@ interface StepperProps {
2651
3481
  /** Dodatečná CSS třída pro obalový element. */
2652
3482
  className?: string;
2653
3483
  /** Další inline styly pro obalový element. */
2654
- style?: React.CSSProperties;
3484
+ style?: React__default.CSSProperties;
2655
3485
  }
2656
3486
  /**
2657
3487
  * Kroková komponenta (Stepper) dle SM-UI design systému.
@@ -2678,7 +3508,7 @@ interface StepperProps {
2678
3508
  * />
2679
3509
  * ```
2680
3510
  */
2681
- declare const Stepper: React.FC<StepperProps>;
3511
+ declare const Stepper: React__default.FC<StepperProps>;
2682
3512
 
2683
3513
  interface FormWizardStep {
2684
3514
  /** Popisek kroku zobrazený ve Stepperu. */
@@ -2686,7 +3516,7 @@ interface FormWizardStep {
2686
3516
  /** Volitelný popis kroku. */
2687
3517
  description?: string;
2688
3518
  /** Obsah kroku (formulář, komponenta). */
2689
- content: React.ReactNode;
3519
+ content: React__default.ReactNode;
2690
3520
  /** Validace před pokračováním. Vrací boolean nebo Promise<boolean>. */
2691
3521
  validate?: () => boolean | Promise<boolean>;
2692
3522
  }
@@ -2708,7 +3538,7 @@ interface FormWizardProps {
2708
3538
  /** Text tlačítka Předchozí. @default 'Předchozí' */
2709
3539
  prevLabel?: string;
2710
3540
  /** Další inline styly. */
2711
- style?: React.CSSProperties;
3541
+ style?: React__default.CSSProperties;
2712
3542
  /** Dodatečná CSS třída. */
2713
3543
  className?: string;
2714
3544
  }
@@ -2731,13 +3561,14 @@ interface FormWizardProps {
2731
3561
  * />
2732
3562
  * ```
2733
3563
  */
2734
- declare const FormWizard: React.FC<FormWizardProps>;
3564
+ declare const FormWizard: React__default.FC<FormWizardProps>;
2735
3565
 
3566
+ type DropdownMenuPosition = 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';
2736
3567
  interface DropdownMenuItem {
2737
3568
  /** Zobrazovaný popisek položky. Může být text nebo ReactNode pro vlastní obsah. */
2738
- label: React.ReactNode;
3569
+ label: React__default.ReactNode;
2739
3570
  /** Volitelná ikona vykreslená před textem. */
2740
- icon?: React.ReactNode;
3571
+ icon?: React__default.ReactNode;
2741
3572
  /** Voláno při kliknutí na položku. */
2742
3573
  onClick?: () => void;
2743
3574
  /** Při `true` nelze položku vybrat. @default false */
@@ -2748,33 +3579,56 @@ interface DropdownMenuItem {
2748
3579
  divider?: boolean;
2749
3580
  /** Text kategorie — zobrazí se jako malý nadpis sekce (uppercase label). */
2750
3581
  category?: string;
2751
- /** Klávesová zkratka zobrazená vpravo (např. '⌘S', '⌘⌫'). */
2752
- shortcut?: string;
3582
+ /** Klávesová zkratka nebo jiný obsah zobrazený vpravo (např. '⌘S', badge). */
3583
+ shortcut?: React__default.ReactNode;
3584
+ /** Obsah vpravo za popiskem (badge, tečka, počet). Zobrazí se i u položek se `subItems`. */
3585
+ suffix?: React__default.ReactNode;
2753
3586
  /** Při `true` se dropdown po kliknutí nezavře. Pro toggle položky. @default false */
2754
3587
  keepOpenOnClick?: boolean;
2755
3588
  /** Kaskádové submenu. Když nastaveno, klik/hover otevře submenu místo zavření. */
2756
3589
  subItems?: DropdownMenuItem[];
3590
+ /**
3591
+ * Vykreslí `label` bez paddingu a hoveru položky (plně vlastní řádek).
3592
+ * Výchozí je ReactNode label vykreslen se stejným paddingem jako text.
3593
+ * @default false
3594
+ */
3595
+ unstyled?: boolean;
2757
3596
  }
2758
3597
  interface DropdownMenuProps {
2759
3598
  /** Spouštěcí element (tlačítko apod.). */
2760
- trigger: React.ReactNode;
3599
+ trigger: React__default.ReactNode;
2761
3600
  /** Seznam položek nabídky. */
2762
3601
  items: DropdownMenuItem[];
2763
- /** Pozice rozbalovací nabídky vůči triggeru. @default 'bottom-left' */
2764
- position?: 'bottom-left' | 'bottom-right';
3602
+ /**
3603
+ * Pozice rozbalovací nabídky vůči triggeru.
3604
+ * `bottom-*` otevírá pod trigger, `top-*` nad něj; `-left` / `-right` = zarovnání okraje.
3605
+ * @default 'bottom-left'
3606
+ */
3607
+ position?: DropdownMenuPosition;
3608
+ /**
3609
+ * Když se nabídka na zvolené straně nevejde, otočí se na protilehlou.
3610
+ * @default true
3611
+ */
3612
+ autoFlip?: boolean;
2765
3613
  /** Otevřít nabídku pravým kliknutím místo levým. @default false */
2766
3614
  triggerOnRightClick?: boolean;
3615
+ /** Řízený stav otevření. Když zadáno, kit stav sám nemění a volá jen `onOpenChange`. */
3616
+ open?: boolean;
3617
+ /** Výchozí stav pro neřízený režim. @default false */
3618
+ defaultOpen?: boolean;
3619
+ /** Voláno při požadavku na otevření / zavření. */
3620
+ onOpenChange?: (open: boolean) => void;
2767
3621
  /** Dodatečná CSS třída pro obalový element. */
2768
3622
  className?: string;
2769
3623
  /** Další inline styly pro obalový element. */
2770
- style?: React.CSSProperties;
3624
+ style?: React__default.CSSProperties;
2771
3625
  }
2772
3626
  /**
2773
3627
  * Rozbalovací nabídka dle SM-UI design systému.
2774
3628
  *
2775
3629
  * Otevírá se kliknutím na trigger element, zavírá se kliknutím
2776
3630
  * mimo nebo klávesou Escape. Používá React portál
2777
- * s chytrým pozicováním (otevře se nad triggerem, pokud pod ním není místo).
3631
+ * s chytrým pozicováním (otočí se na druhou stranu, pokud není místo).
2778
3632
  *
2779
3633
  * @example
2780
3634
  * ```tsx
@@ -2789,14 +3643,16 @@ interface DropdownMenuProps {
2789
3643
  * />
2790
3644
  * ```
2791
3645
  */
2792
- declare const DropdownMenu: React.FC<DropdownMenuProps>;
3646
+ declare const DropdownMenu: React__default.FC<DropdownMenuProps>;
2793
3647
 
2794
- type LinkVariant = 'default' | 'danger';
2795
- interface LinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'color'> {
3648
+ type LinkVariant = 'default' | 'danger' | 'primary' | 'muted';
3649
+ interface LinkProps extends Omit<React__default.AnchorHTMLAttributes<HTMLAnchorElement>, 'color'> {
2796
3650
  /**
2797
3651
  * Barevná varianta.
2798
3652
  * - `'default'` — bílá (tmavý režim) / tmavá (světlý režim)
2799
3653
  * - `'danger'` — červená `#EF3838` v obou režimech
3654
+ * - `'primary'` — brand oranžová (primární akce v textu)
3655
+ * - `'muted'` — tlumená šedá (sekundární odkazy)
2800
3656
  * @default 'default'
2801
3657
  */
2802
3658
  variant?: LinkVariant;
@@ -2804,7 +3660,7 @@ interface LinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>,
2804
3660
  * Ikona vykreslená vedle textu odkazu.
2805
3661
  * Typicky 14×14 SVG nebo komponenta ikony.
2806
3662
  */
2807
- icon?: React.ReactNode;
3663
+ icon?: React__default.ReactNode;
2808
3664
  /**
2809
3665
  * Na které straně se ikona zobrazí vzhledem k textu.
2810
3666
  * @default 'left'
@@ -2817,7 +3673,7 @@ interface LinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>,
2817
3673
  */
2818
3674
  showIcon?: boolean;
2819
3675
  /** Další inline styly pro `<a>` element. */
2820
- style?: React.CSSProperties;
3676
+ style?: React__default.CSSProperties;
2821
3677
  /** Dodatečná CSS třída pro `<a>` element. */
2822
3678
  className?: string;
2823
3679
  }
@@ -2836,7 +3692,7 @@ interface LinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>,
2836
3692
  * <Link icon={<ArrowIcon />} iconPosition="right" href="/dalsi">Další krok</Link>
2837
3693
  * ```
2838
3694
  */
2839
- declare const Link: React.FC<LinkProps>;
3695
+ declare const Link: React__default.FC<LinkProps>;
2840
3696
 
2841
3697
  interface SpotlightItem {
2842
3698
  /** Unikátní identifikátor položky. */
@@ -2848,7 +3704,7 @@ interface SpotlightItem {
2848
3704
  /** Kategorie pro vizuální seskupení (např. "Komponenty", "Hooky"). */
2849
3705
  category: string;
2850
3706
  /** Volitelná ikona vedle textu. */
2851
- icon?: React.ReactNode;
3707
+ icon?: React__default.ReactNode;
2852
3708
  /** Voláno při výběru položky (klik nebo Enter). */
2853
3709
  onSelect: () => void;
2854
3710
  }
@@ -2870,7 +3726,7 @@ interface SpotlightProps {
2870
3726
  /** Dodatečná CSS třída pro kartu spotlightu. */
2871
3727
  className?: string;
2872
3728
  /** Další inline styly pro kartu spotlightu. */
2873
- style?: React.CSSProperties;
3729
+ style?: React__default.CSSProperties;
2874
3730
  }
2875
3731
  /**
2876
3732
  * Command-palette / spotlight overlay dle SM-UI design systému.
@@ -2893,7 +3749,7 @@ interface SpotlightProps {
2893
3749
  * />
2894
3750
  * ```
2895
3751
  */
2896
- declare const Spotlight: React.FC<SpotlightProps>;
3752
+ declare const Spotlight: React__default.FC<SpotlightProps>;
2897
3753
 
2898
3754
  interface CommandItem {
2899
3755
  /** Unikátní identifikátor příkazu. */
@@ -2903,7 +3759,7 @@ interface CommandItem {
2903
3759
  /** Volitelný popis příkazu. */
2904
3760
  description?: string;
2905
3761
  /** Volitelná ikona příkazu. */
2906
- icon?: React.ReactNode;
3762
+ icon?: React__default.ReactNode;
2907
3763
  /** Klávesová zkratka (zobrazena jako badge). */
2908
3764
  shortcut?: string;
2909
3765
  /** Voláno při výběru příkazu. */
@@ -2925,7 +3781,7 @@ interface CommandMenuProps {
2925
3781
  /** Placeholder text vyhledávacího pole. @default 'Zadejte příkaz...' */
2926
3782
  placeholder?: string;
2927
3783
  /** Další inline styly pro kartu. */
2928
- style?: React.CSSProperties;
3784
+ style?: React__default.CSSProperties;
2929
3785
  /** Dodatečná CSS třída. */
2930
3786
  className?: string;
2931
3787
  }
@@ -2946,11 +3802,11 @@ interface CommandMenuProps {
2946
3802
  * />
2947
3803
  * ```
2948
3804
  */
2949
- declare const CommandMenu: React.FC<CommandMenuProps>;
3805
+ declare const CommandMenu: React__default.FC<CommandMenuProps>;
2950
3806
 
2951
3807
  interface AppSidebarProps {
2952
3808
  /** Obsah postranního panelu (navigace, menu apod.). */
2953
- children: React.ReactNode;
3809
+ children: React__default.ReactNode;
2954
3810
  /** Zda je panel sbalený. @default false */
2955
3811
  collapsed?: boolean;
2956
3812
  /** Voláno při změně stavu sbalení. */
@@ -2959,33 +3815,56 @@ interface AppSidebarProps {
2959
3815
  width?: number;
2960
3816
  /** Šířka sbalené postranní lišty v px. @default 64 */
2961
3817
  collapsedWidth?: number;
3818
+ /**
3819
+ * Vzhled panelu.
3820
+ * - `'edge'` — přilepený k okraji layoutu, jen pravý rámeček (výchozí)
3821
+ * - `'floating'` — plovoucí karta s odsazením, zaoblením a stínem
3822
+ * @default 'edge'
3823
+ */
3824
+ variant?: 'edge' | 'floating';
3825
+ /** Odsazení plovoucího panelu od okrajů v px (`variant="floating"`). @default 16 */
3826
+ floatingOffset?: number;
3827
+ /**
3828
+ * Vykreslí vestavěné tlačítko pro sbalení / rozbalení v patičce panelu.
3829
+ * Volá `onCollapse(!collapsed)`.
3830
+ * @default false
3831
+ */
3832
+ collapsible?: boolean;
3833
+ /** Přístupný popisek tlačítka sbalení. @default 'Sbalit panel' / 'Rozbalit panel' */
3834
+ collapseLabel?: {
3835
+ collapse: string;
3836
+ expand: string;
3837
+ };
3838
+ /** Obsah hlavičky nad navigací (logo). Nescrolluje. */
3839
+ header?: React__default.ReactNode;
3840
+ /** Obsah patičky pod navigací (profil). Nescrolluje. */
3841
+ footer?: React__default.ReactNode;
2962
3842
  /** Další inline styly. */
2963
- style?: React.CSSProperties;
3843
+ style?: React__default.CSSProperties;
2964
3844
  /** Dodatečná CSS třída. */
2965
3845
  className?: string;
2966
3846
  }
2967
3847
  /**
2968
3848
  * Sbaletelný postranní panel pro navigaci aplikace.
2969
3849
  *
2970
- * Používá glass efekt a plynulou animaci šířky. Tlačítko pro sbalení/rozbalení
2971
- * si řeší konzument sám komponenta je plně řízená přes `collapsed` a `onCollapse`.
3850
+ * Používá glass efekt a plynulou animaci šířky. Komponenta je řízená přes
3851
+ * `collapsed` a `onCollapse`; s `collapsible` vykreslí vlastní tlačítko sbalení.
2972
3852
  *
2973
3853
  * @example
2974
3854
  * ```tsx
2975
3855
  * const [collapsed, setCollapsed] = useState(false);
2976
- * <AppSidebar collapsed={collapsed} onCollapse={setCollapsed}>
2977
- * <button onClick={() => setCollapsed(c => !c)}>Toggle</button>
2978
- * <nav>...</nav>
3856
+ * <AppSidebar collapsed={collapsed} onCollapse={setCollapsed} collapsible variant="floating">
3857
+ * <SidebarItem label="Dashboard" icon={<HouseIcon />} collapsed={collapsed} />
2979
3858
  * </AppSidebar>
2980
3859
  * ```
2981
3860
  */
2982
- declare const AppSidebar: React.FC<AppSidebarProps>;
3861
+ declare const AppSidebar: React__default.FC<AppSidebarProps>;
2983
3862
 
2984
- interface SidebarItemProps {
3863
+ interface SidebarItemProps extends Omit<React__default.HTMLAttributes<HTMLElement>, 'onClick' | 'style' | 'className' | 'children'> {
2985
3864
  /** Textový popisek položky. */
2986
3865
  label: string;
2987
3866
  /** Volitelná ikona zobrazená před textem. */
2988
- icon?: React.ReactNode;
3867
+ icon?: React__default.ReactNode;
2989
3868
  /** Zda je položka aktivní (vybraná). @default false */
2990
3869
  active?: boolean;
2991
3870
  /** Zda je skupina výchozně rozbalená. @default false */
@@ -2995,15 +3874,34 @@ interface SidebarItemProps {
2995
3874
  /** Callback při změně rozbalení. */
2996
3875
  onExpandedChange?: (expanded: boolean) => void;
2997
3876
  /** Callback při kliknutí na položku (ne na chevron). */
2998
- onClick?: () => void;
3877
+ onClick?: (e: React__default.MouseEvent<HTMLElement>) => void;
3878
+ /**
3879
+ * URL — položka se vykreslí jako `<a href>` (middle-click, kopírování adresy).
3880
+ * S klientským routerem předejte i `as` (např. Inertia `Link`).
3881
+ */
3882
+ href?: string;
3883
+ /** Komponenta pro vykreslení položky s `href` (Inertia / react-router `Link`). @default 'a' */
3884
+ as?: React__default.ElementType;
2999
3885
  /** Potomci — vnořené SidebarItem komponenty. Přítomnost aktivuje rozbalovací režim. */
3000
- children?: React.ReactNode;
3886
+ children?: React__default.ReactNode;
3001
3887
  /** Zda je sidebar sbalený (jen ikona). @default false */
3002
3888
  collapsed?: boolean;
3889
+ /**
3890
+ * Ve sbaleném režimu zobrazit tooltip s popiskem vpravo od ikony.
3891
+ * @default true
3892
+ */
3893
+ collapsedTooltip?: boolean;
3003
3894
  /** Zakáže interakci. @default false */
3004
3895
  disabled?: boolean;
3896
+ /**
3897
+ * Velikost položky.
3898
+ * - `'sm'` — 13px písmo, výchozí
3899
+ * - `'md'` — 14px písmo, větší odsazení
3900
+ * @default 'sm'
3901
+ */
3902
+ size?: 'sm' | 'md';
3005
3903
  /** Další inline styly. */
3006
- style?: React.CSSProperties;
3904
+ style?: React__default.CSSProperties;
3007
3905
  /** Dodatečná CSS třída. */
3008
3906
  className?: string;
3009
3907
  }
@@ -3011,11 +3909,13 @@ interface SidebarItemProps {
3011
3909
  * Položka navigace pro AppSidebar.
3012
3910
  *
3013
3911
  * Podporuje ikonu, aktivní stav, hover efekt a vnořené položky
3014
- * s animovaným rozbalováním/sbalováním.
3912
+ * s animovaným rozbalováním/sbalováním. Ve sbaleném sidebaru má položka
3913
+ * přístupný název, tooltip a skupina se otevírá jako flyout vpravo.
3015
3914
  *
3016
3915
  * @example
3017
3916
  * ```tsx
3018
3917
  * <SidebarItem label="Dashboard" icon={<HouseIcon size={18} />} active onClick={...} />
3918
+ * <SidebarItem label="Projekty" icon={<FolderIcon size={18} />} href="/projekty" as={Link} />
3019
3919
  *
3020
3920
  * <SidebarItem label="Settings" icon={<GearIcon size={18} />} defaultExpanded>
3021
3921
  * <SidebarItem label="General" onClick={...} />
@@ -3024,21 +3924,21 @@ interface SidebarItemProps {
3024
3924
  * </SidebarItem>
3025
3925
  * ```
3026
3926
  */
3027
- declare const SidebarItem: React.FC<SidebarItemProps>;
3927
+ declare const SidebarItem: React__default.ForwardRefExoticComponent<SidebarItemProps & React__default.RefAttributes<HTMLElement>>;
3028
3928
 
3029
3929
  interface NavbarProps {
3030
3930
  /** Logo nebo název aplikace (vykresleno vlevo). */
3031
- logo?: React.ReactNode;
3931
+ logo?: React__default.ReactNode;
3032
3932
  /** Navigační obsah (vykresleno uprostřed). */
3033
- children?: React.ReactNode;
3933
+ children?: React__default.ReactNode;
3034
3934
  /** Akční prvky – tlačítka, avatar apod. (vykresleno vpravo). */
3035
- actions?: React.ReactNode;
3935
+ actions?: React__default.ReactNode;
3036
3936
  /** Zda je navbar přilepený k hornímu okraji. @default true */
3037
3937
  sticky?: boolean;
3038
3938
  /** Zda použít glass efekt (průhledné pozadí s rozmazáním). @default true */
3039
3939
  glass?: boolean;
3040
3940
  /** Další inline styly. */
3041
- style?: React.CSSProperties;
3941
+ style?: React__default.CSSProperties;
3042
3942
  /** Dodatečná CSS třída. */
3043
3943
  className?: string;
3044
3944
  }
@@ -3058,15 +3958,16 @@ interface NavbarProps {
3058
3958
  * </Navbar>
3059
3959
  * ```
3060
3960
  */
3061
- declare const Navbar: React.FC<NavbarProps>;
3961
+ declare const Navbar: React__default.FC<NavbarProps>;
3062
3962
 
3063
- type ToastVariant = 'info' | 'success' | 'error';
3963
+ type ToastVariant = 'info' | 'success' | 'warning' | 'error';
3064
3964
  interface ToastProps {
3065
3965
  /**
3066
- * Vizuální varianta určující barvu okraje a tón pozadí.
3067
- * - `'info'` — bílý / neutrální okraj, tmavé pozadí
3068
- * - `'success'` — zelený okraj (#00A205), tmavé nazelenalé pozadí
3069
- * - `'error'` červený okraj (#DE0000), tmavé načervenalé pozadí
3966
+ * Vizuální varianta určující barvu rámečku a ikony.
3967
+ * - `'info'` — neutrální
3968
+ * - `'success'` — zelená (#00A205)
3969
+ * - `'warning'` oranžovožlutá (#F5A623), stav „uloženo, ale…"
3970
+ * - `'error'` — červená (#EF3838)
3070
3971
  * @default 'info'
3071
3972
  */
3072
3973
  variant?: ToastVariant;
@@ -3075,14 +3976,14 @@ interface ToastProps {
3075
3976
  */
3076
3977
  title: string;
3077
3978
  /**
3078
- * Volitelný sekundární popis vykreslený pod nadpisem menším písmem.
3979
+ * Volitelný popis vykreslený pod nadpisem menším písmem.
3079
3980
  */
3080
- content?: string;
3981
+ content?: React__default.ReactNode;
3081
3982
  /**
3082
3983
  * Vlastní ikona vykreslená na levé straně.
3083
- * Pokud chybí, použije se vestavěná SVG ikona odpovídající variantě.
3984
+ * Pokud chybí, použije se vestavěná ikona odpovídající variantě.
3084
3985
  */
3085
- icon?: React.ReactNode;
3986
+ icon?: React__default.ReactNode;
3086
3987
  /**
3087
3988
  * Callback volaný při kliknutí na tlačítko zavření (✕).
3088
3989
  * Pokud není zadán, tlačítko zavření se nezobrazí.
@@ -3095,13 +3996,14 @@ interface ToastProps {
3095
3996
  */
3096
3997
  role?: 'alert' | 'status' | 'log';
3097
3998
  /** Další inline styly pro kořenový element. */
3098
- style?: React.CSSProperties;
3999
+ style?: React__default.CSSProperties;
3099
4000
  /** Dodatečná CSS třída pro kořenový element. */
3100
4001
  className?: string;
3101
4002
  }
3102
4003
  /**
3103
- * Notifikace se třemi úrovněmi závažnosti.
3104
- * Vykresluje se s efektem rozmazaného skla, vždy v tmavém režimu.
4004
+ * Kompaktní notifikace se čtyřmi úrovněmi závažnosti.
4005
+ * Glass panel jako dropdowny kitu, varianta určuje barvu rámečku
4006
+ * a ikony v tónovaném boxu.
3105
4007
  *
3106
4008
  * Tlačítko zavření se zobrazí pouze pokud je zadáno `onClose`.
3107
4009
  * Vlastní ikona může nahradit výchozí variantní ikonu přes prop `icon`.
@@ -3109,11 +4011,11 @@ interface ToastProps {
3109
4011
  * @example
3110
4012
  * ```tsx
3111
4013
  * <Toast variant="success" title="Uloženo" content="Změny byly uloženy." onClose={dismiss} />
3112
- * <Toast variant="error" title="Chyba" content="Něco se pokazilo." onClose={dismiss} />
4014
+ * <Toast variant="warning" title="Uloženo, ale nenasazeno" content="Router je nedosažitelný." />
3113
4015
  * <Toast variant="info" title="Upozornění" onClose={dismiss} />
3114
4016
  * ```
3115
4017
  */
3116
- declare const Toast: React.FC<ToastProps>;
4018
+ declare const Toast: React__default.FC<ToastProps>;
3117
4019
 
3118
4020
  type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
3119
4021
  /** Nastavení předávaná do `toast()` při vyvolání notifikace. */
@@ -3125,13 +4027,13 @@ interface ToastOptions {
3125
4027
  variant?: ToastVariant;
3126
4028
  /** Tučný nadpis notifikace. */
3127
4029
  title: string;
3128
- /** Volitelný popis vykreslený pod nadpisem. */
3129
- content?: string;
4030
+ /** Volitelný popis vykreslený pod nadpisem (text nebo ReactNode, např. s odkazem). */
4031
+ content?: React__default.ReactNode;
3130
4032
  /**
3131
4033
  * Vlastní ikona nahrazující vestavěnou variantní ikonu.
3132
4034
  * Libovolný React uzel — SVG, obrázek, komponenta…
3133
4035
  */
3134
- icon?: React.ReactNode;
4036
+ icon?: React__default.ReactNode;
3135
4037
  /**
3136
4038
  * Časový limit automatického zavření v ms.
3137
4039
  * Nastavte na `0` pro trvalou notifikaci, kterou je nutné zavřít ručně.
@@ -3167,7 +4069,7 @@ interface ToastContextValue {
3167
4069
  }
3168
4070
  /** Props pro `<ToasterProvider>`. */
3169
4071
  interface ToasterProviderProps {
3170
- children: React.ReactNode;
4072
+ children: React__default.ReactNode;
3171
4073
  /**
3172
4074
  * Pozice notifikací na obrazovce.
3173
4075
  * @default 'bottom-right'
@@ -3175,7 +4077,7 @@ interface ToasterProviderProps {
3175
4077
  position?: ToastPosition;
3176
4078
  /**
3177
4079
  * Šířka jednotlivé notifikace v px.
3178
- * @default 380
4080
+ * @default 340
3179
4081
  */
3180
4082
  toastWidth?: number;
3181
4083
  /**
@@ -3214,7 +4116,7 @@ interface ToasterProviderProps {
3214
4116
  * </ToasterProvider>
3215
4117
  * ```
3216
4118
  */
3217
- declare const ToasterProvider: React.FC<ToasterProviderProps>;
4119
+ declare const ToasterProvider: React__default.FC<ToasterProviderProps>;
3218
4120
  /**
3219
4121
  * Vrací `{ toast, dismiss }` pro vyvolání a zavření notifikací.
3220
4122
  * Musí být volán uvnitř stromu `<ToasterProvider>`.
@@ -3253,12 +4155,12 @@ interface AlertProps {
3253
4155
  /**
3254
4156
  * Volitelný popis vykreslený pod nadpisem menším písmem.
3255
4157
  */
3256
- children?: React.ReactNode;
4158
+ children?: React__default.ReactNode;
3257
4159
  /**
3258
4160
  * Vlastní ikona vykreslená na levé straně.
3259
4161
  * Pokud chybí, použije se vestavěná SVG ikona odpovídající variantě.
3260
4162
  */
3261
- icon?: React.ReactNode;
4163
+ icon?: React__default.ReactNode;
3262
4164
  /**
3263
4165
  * Zobrazí tlačítko zavření (✕).
3264
4166
  * @default false
@@ -3271,7 +4173,7 @@ interface AlertProps {
3271
4173
  /** Dodatečná CSS třída pro kořenový element. */
3272
4174
  className?: string;
3273
4175
  /** Další inline styly pro kořenový element. */
3274
- style?: React.CSSProperties;
4176
+ style?: React__default.CSSProperties;
3275
4177
  }
3276
4178
  /**
3277
4179
  * Statický banner pro zobrazení důležitých informací, varování nebo chyb.
@@ -3288,7 +4190,7 @@ interface AlertProps {
3288
4190
  * <Alert variant="warning" title="Pozor">Tato akce je nevratná.</Alert>
3289
4191
  * ```
3290
4192
  */
3291
- declare const Alert: React.FC<AlertProps>;
4193
+ declare const Alert: React__default.FC<AlertProps>;
3292
4194
 
3293
4195
  type BannerVariant = 'info' | 'success' | 'warning' | 'error';
3294
4196
  type BannerPosition = 'top' | 'bottom';
@@ -3298,15 +4200,15 @@ interface BannerProps {
3298
4200
  /** Tučný titulek. */
3299
4201
  title?: string;
3300
4202
  /** Obsah banneru. */
3301
- children?: React.ReactNode;
4203
+ children?: React__default.ReactNode;
3302
4204
  /** Zobrazí zavírací tlačítko. @default false */
3303
4205
  closable?: boolean;
3304
4206
  /** Callback při zavření. */
3305
4207
  onClose?: () => void;
3306
4208
  /** Vlastní ikona. Pokud není zadána, použije se výchozí dle varianty. */
3307
- icon?: React.ReactNode;
4209
+ icon?: React__default.ReactNode;
3308
4210
  /** Akční tlačítka na pravé straně. */
3309
- actions?: React.ReactNode;
4211
+ actions?: React__default.ReactNode;
3310
4212
  /** Persistentní dismiss přes localStorage key. */
3311
4213
  dismissKey?: string;
3312
4214
  /** Pozice akcentního proužku. @default 'top' */
@@ -3314,7 +4216,7 @@ interface BannerProps {
3314
4216
  /** Přilepí banner na pozici. @default false */
3315
4217
  sticky?: boolean;
3316
4218
  /** Další inline styly. */
3317
- style?: React.CSSProperties;
4219
+ style?: React__default.CSSProperties;
3318
4220
  /** Dodatečná CSS třída. */
3319
4221
  className?: string;
3320
4222
  }
@@ -3331,7 +4233,7 @@ interface BannerProps {
3331
4233
  * </Banner>
3332
4234
  * ```
3333
4235
  */
3334
- declare const Banner: React.FC<BannerProps>;
4236
+ declare const Banner: React__default.FC<BannerProps>;
3335
4237
 
3336
4238
  type NotificationVariant = 'info' | 'success' | 'warning' | 'error';
3337
4239
  interface NotificationProps {
@@ -3340,17 +4242,17 @@ interface NotificationProps {
3340
4242
  /** Titulek notifikace. */
3341
4243
  title: string;
3342
4244
  /** Obsah / popis notifikace. */
3343
- children?: React.ReactNode;
4245
+ children?: React__default.ReactNode;
3344
4246
  /** Zobrazí tlačítko zavření. @default false */
3345
4247
  closable?: boolean;
3346
4248
  /** Voláno při zavření notifikace. */
3347
4249
  onClose?: () => void;
3348
4250
  /** Vlastní ikona (nahradí výchozí ikonu varianty). */
3349
- icon?: React.ReactNode;
4251
+ icon?: React__default.ReactNode;
3350
4252
  /** Akční prvek zobrazený na pravé straně (tlačítko apod.). */
3351
- action?: React.ReactNode;
4253
+ action?: React__default.ReactNode;
3352
4254
  /** Další inline styly. */
3353
- style?: React.CSSProperties;
4255
+ style?: React__default.CSSProperties;
3354
4256
  /** Dodatečná CSS třída. */
3355
4257
  className?: string;
3356
4258
  }
@@ -3375,7 +4277,7 @@ interface NotificationProps {
3375
4277
  * </Notification>
3376
4278
  * ```
3377
4279
  */
3378
- declare const Notification: React.FC<NotificationProps>;
4280
+ declare const Notification: React__default.FC<NotificationProps>;
3379
4281
 
3380
4282
  type ProgressBarSize = 'xs' | 'sm' | 'md';
3381
4283
  type ProgressVariant = 'default' | 'success' | 'warning' | 'danger';
@@ -3407,7 +4309,7 @@ interface ProgressBarProps {
3407
4309
  /** Dodatečná CSS třída. */
3408
4310
  className?: string;
3409
4311
  /** Další inline styly. */
3410
- style?: React.CSSProperties;
4312
+ style?: React__default.CSSProperties;
3411
4313
  }
3412
4314
  interface ProgressCircleProps {
3413
4315
  /** Aktuální hodnota. */
@@ -3425,13 +4327,13 @@ interface ProgressCircleProps {
3425
4327
  /** Zobrazí "X%" uprostřed. @default false */
3426
4328
  showValue?: boolean;
3427
4329
  /** Custom render obsahu uprostřed (override showValue). */
3428
- valueLabel?: (value: number, max: number) => React.ReactNode;
4330
+ valueLabel?: (value: number, max: number) => React__default.ReactNode;
3429
4331
  /** Volitelný popisek pod kruhem. */
3430
4332
  label?: string;
3431
4333
  /** Dodatečná CSS třída. */
3432
4334
  className?: string;
3433
4335
  /** Další inline styly. */
3434
- style?: React.CSSProperties;
4336
+ style?: React__default.CSSProperties;
3435
4337
  }
3436
4338
  /**
3437
4339
  * Horizontální progress indikátor.
@@ -3445,7 +4347,7 @@ interface ProgressCircleProps {
3445
4347
  * <ProgressBar indeterminate />
3446
4348
  * ```
3447
4349
  */
3448
- declare const ProgressBar: React.FC<ProgressBarProps>;
4350
+ declare const ProgressBar: React__default.FC<ProgressBarProps>;
3449
4351
  /**
3450
4352
  * Kruhový progress indikátor (SVG).
3451
4353
  *
@@ -3457,7 +4359,7 @@ declare const ProgressBar: React.FC<ProgressBarProps>;
3457
4359
  * <ProgressCircle value={45} max={60} variant="warning" valueLabel={(v, m) => `${v}/${m}`} />
3458
4360
  * ```
3459
4361
  */
3460
- declare const ProgressCircle: React.FC<ProgressCircleProps>;
4362
+ declare const ProgressCircle: React__default.FC<ProgressCircleProps>;
3461
4363
 
3462
4364
  type SpinnerSize = 'sm' | 'md' | 'lg';
3463
4365
  interface SpinnerProps {
@@ -3482,7 +4384,7 @@ interface SpinnerProps {
3482
4384
  /** Dodatečná CSS třída pro kořenový element. */
3483
4385
  className?: string;
3484
4386
  /** Další inline styly pro kořenový element. */
3485
- style?: React.CSSProperties;
4387
+ style?: React__default.CSSProperties;
3486
4388
  }
3487
4389
  /**
3488
4390
  * Animovaný spinner (indikátor načítání) využívající requestAnimationFrame.
@@ -3498,8 +4400,18 @@ interface SpinnerProps {
3498
4400
  * <Spinner size={32} label="Ukládání dat" />
3499
4401
  * ```
3500
4402
  */
3501
- declare const Spinner: React.FC<SpinnerProps>;
4403
+ declare const Spinner: React__default.FC<SpinnerProps>;
3502
4404
 
4405
+ /** Kontext předaný funkci `content` — umožňuje řídit dialog z vlastního obsahu. */
4406
+ interface ConfirmContentContext {
4407
+ /** Potvrdí dialog (stejné jako klik na potvrzovací tlačítko). */
4408
+ confirm: () => void;
4409
+ /** Zruší dialog. */
4410
+ cancel: () => void;
4411
+ /** Zapne / vypne potvrzovací tlačítko (např. type-to-confirm). */
4412
+ setConfirmDisabled: (disabled: boolean) => void;
4413
+ }
4414
+ type ConfirmContent = React__default.ReactNode | ((ctx: ConfirmContentContext) => React__default.ReactNode);
3503
4415
  interface ConfirmDialogProps {
3504
4416
  /** Řídí zobrazení potvrzovacího dialogu. */
3505
4417
  open: boolean;
@@ -3509,8 +4421,15 @@ interface ConfirmDialogProps {
3509
4421
  onCancel: () => void;
3510
4422
  /** Titulek dialogu. */
3511
4423
  title: string;
3512
- /** Volitelný popis akce. */
3513
- description?: string;
4424
+ /** Volitelný popis akce. Text nebo ReactNode (seznam položek, zvýraznění…). */
4425
+ description?: React__default.ReactNode;
4426
+ /**
4427
+ * Vlastní obsah pod popisem (input pro type-to-confirm, checkbox…).
4428
+ * Funkce dostane `{ confirm, cancel, setConfirmDisabled }`.
4429
+ */
4430
+ content?: ConfirmContent;
4431
+ /** Zakáže potvrzovací tlačítko (např. dokud uživatel nepotvrdí vstup). @default false */
4432
+ confirmDisabled?: boolean;
3514
4433
  /** Text potvrzovacího tlačítka. @default 'Potvrdit' */
3515
4434
  confirmLabel?: string;
3516
4435
  /** Text zrušovacího tlačítka. @default 'Zrušit' */
@@ -3519,8 +4438,16 @@ interface ConfirmDialogProps {
3519
4438
  variant?: 'default' | 'danger';
3520
4439
  /** Stav načítání potvrzovacího tlačítka. @default false */
3521
4440
  loading?: boolean;
4441
+ /** z-index overlaye. Výchozí se počítá automaticky nad nadřazený overlay (Drawer, Modal). */
4442
+ zIndex?: number;
4443
+ /** Zavře dialog kliknutím na překryvnou vrstvu. @default true */
4444
+ closeOnOverlay?: boolean;
4445
+ /** Zavře dialog stisknutím klávesy Escape. @default true */
4446
+ closeOnEscape?: boolean;
4447
+ /** Umožní zavření dialogu jinak než tlačítky. @default true */
4448
+ dismissable?: boolean;
3522
4449
  /** Další inline styly. */
3523
- style?: React.CSSProperties;
4450
+ style?: React__default.CSSProperties;
3524
4451
  /** Dodatečná CSS třída. */
3525
4452
  className?: string;
3526
4453
  }
@@ -3528,7 +4455,7 @@ interface ConfirmDialogProps {
3528
4455
  * Předpřipravený modální dialog pro potvrzení akce.
3529
4456
  *
3530
4457
  * Interně používá komponentu `Modal`. Podporuje standardní a danger variantu
3531
- * s volitelným stavem načítání.
4458
+ * s volitelným stavem načítání. Otevřený z Draweru / Modalu se vždy vykreslí nad ním.
3532
4459
  *
3533
4460
  * @example
3534
4461
  * ```tsx
@@ -3540,15 +4467,77 @@ interface ConfirmDialogProps {
3540
4467
  * description="Tato akce je nevratná."
3541
4468
  * variant="danger"
3542
4469
  * />
4470
+ *
4471
+ * // Type-to-confirm
4472
+ * <ConfirmDialog
4473
+ * open={open}
4474
+ * title="Smazat projekt?"
4475
+ * confirmDisabled
4476
+ * content={({ setConfirmDisabled }) => (
4477
+ * <Input placeholder={slug} onChange={(e) => setConfirmDisabled(e.target.value !== slug)} />
4478
+ * )}
4479
+ * …
4480
+ * />
4481
+ * ```
4482
+ */
4483
+ declare const ConfirmDialog: React__default.FC<ConfirmDialogProps>;
4484
+ /** Nastavení předaná do imperativního `confirm()`. */
4485
+ interface ConfirmOptions {
4486
+ /** Titulek dialogu. */
4487
+ title: string;
4488
+ /** Volitelný popis akce. Text nebo ReactNode. */
4489
+ description?: React__default.ReactNode;
4490
+ /**
4491
+ * Vlastní obsah pod popisem. Funkce dostane `{ confirm, cancel, setConfirmDisabled }`,
4492
+ * takže lze potvrzení podmínit vstupem (type-to-confirm).
4493
+ */
4494
+ content?: ConfirmContent;
4495
+ /** Počáteční stav potvrzovacího tlačítka. @default false */
4496
+ confirmDisabled?: boolean;
4497
+ /** Text potvrzovacího tlačítka. @default 'Potvrdit' */
4498
+ confirmLabel?: string;
4499
+ /** Text zrušovacího tlačítka. @default 'Zrušit' */
4500
+ cancelLabel?: string;
4501
+ /** Varianta dialogu – 'danger' zvýrazní potvrzovací tlačítko červeně. @default 'default' */
4502
+ variant?: 'default' | 'danger';
4503
+ /** Umožní zavření dialogu overlay klikem / Escape (= zrušení). @default true */
4504
+ dismissable?: boolean;
4505
+ }
4506
+ /**
4507
+ * Poskytuje imperativní `confirm()` přes hook `useConfirm()`.
4508
+ * Vykresluje jeden sdílený `ConfirmDialog`. Umístěte **jednou** blízko kořene
4509
+ * aplikace (typicky vedle `ToasterProvider`).
4510
+ *
4511
+ * @example
4512
+ * ```tsx
4513
+ * <ConfirmProvider>
4514
+ * <App />
4515
+ * </ConfirmProvider>
4516
+ * ```
4517
+ */
4518
+ declare const ConfirmProvider: React__default.FC<{
4519
+ children: React__default.ReactNode;
4520
+ }>;
4521
+ /**
4522
+ * Vrací funkci `confirm(options): Promise<boolean>` pro imperativní potvrzení.
4523
+ * Musí být volán uvnitř stromu `<ConfirmProvider>`.
4524
+ *
4525
+ * @throws Při volání mimo `<ConfirmProvider>`.
4526
+ *
4527
+ * @example
4528
+ * ```tsx
4529
+ * const confirm = useConfirm();
4530
+ * const ok = await confirm({ title: 'Smazat položku?', variant: 'danger' });
4531
+ * if (ok) await deleteItem();
3543
4532
  * ```
3544
4533
  */
3545
- declare const ConfirmDialog: React.FC<ConfirmDialogProps>;
4534
+ declare const useConfirm: () => ((options: ConfirmOptions) => Promise<boolean>);
3546
4535
 
3547
4536
  interface CopyButtonProps {
3548
4537
  /** Text ke zkopírování do schránky. */
3549
4538
  text: string;
3550
4539
  /** Vlastní obsah tlačítka (nahrazuje výchozí ikonu/text). */
3551
- children?: React.ReactNode;
4540
+ children?: React__default.ReactNode;
3552
4541
  /** Velikost tlačítka. @default 'md' */
3553
4542
  size?: 'sm' | 'md' | 'lg';
3554
4543
  /** Varianta zobrazení. @default 'icon' */
@@ -3560,7 +4549,7 @@ interface CopyButtonProps {
3560
4549
  /** Callback volaný po úspěšném zkopírování do schránky. */
3561
4550
  onCopy?: () => void;
3562
4551
  /** Další inline styly. */
3563
- style?: React.CSSProperties;
4552
+ style?: React__default.CSSProperties;
3564
4553
  /** Dodatečná CSS třída. */
3565
4554
  className?: string;
3566
4555
  }
@@ -3577,7 +4566,7 @@ interface CopyButtonProps {
3577
4566
  * <CopyButton text={code} />
3578
4567
  * ```
3579
4568
  */
3580
- declare const CopyButton: React.FC<CopyButtonProps>;
4569
+ declare const CopyButton: React__default.FC<CopyButtonProps>;
3581
4570
 
3582
4571
  type DividerOrientation = 'horizontal' | 'vertical';
3583
4572
  interface DividerProps {
@@ -3596,7 +4585,7 @@ interface DividerProps {
3596
4585
  /** Dodatečná CSS třída pro kořenový element. */
3597
4586
  className?: string;
3598
4587
  /** Další inline styly pro kořenový element. */
3599
- style?: React.CSSProperties;
4588
+ style?: React__default.CSSProperties;
3600
4589
  }
3601
4590
  /**
3602
4591
  * Vizuální oddělovač obsahu — horizontální nebo vertikální čára.
@@ -3611,7 +4600,7 @@ interface DividerProps {
3611
4600
  * <Divider orientation="vertical" />
3612
4601
  * ```
3613
4602
  */
3614
- declare const Divider: React.FC<DividerProps>;
4603
+ declare const Divider: React__default.FC<DividerProps>;
3615
4604
 
3616
4605
  type StackDirection = 'row' | 'column';
3617
4606
  type StackAlign = 'start' | 'center' | 'end' | 'stretch';
@@ -3650,11 +4639,11 @@ interface StackProps {
3650
4639
  /**
3651
4640
  * Potomci rozmístění uvnitř stacku.
3652
4641
  */
3653
- children?: React.ReactNode;
4642
+ children?: React__default.ReactNode;
3654
4643
  /** Dodatečná CSS třída pro kořenový element. */
3655
4644
  className?: string;
3656
4645
  /** Další inline styly pro kořenový element. */
3657
- style?: React.CSSProperties;
4646
+ style?: React__default.CSSProperties;
3658
4647
  }
3659
4648
  /**
3660
4649
  * Jednoduchý layout helper využívající CSS flexbox.
@@ -3675,7 +4664,7 @@ interface StackProps {
3675
4664
  * </Stack>
3676
4665
  * ```
3677
4666
  */
3678
- declare const Stack: React.FC<StackProps>;
4667
+ declare const Stack: React__default.FC<StackProps>;
3679
4668
 
3680
4669
  type ContainerMaxWidth = 'sm' | 'md' | 'lg' | 'xl';
3681
4670
  interface ContainerProps {
@@ -3702,11 +4691,11 @@ interface ContainerProps {
3702
4691
  /**
3703
4692
  * Potomci vykreslení uvnitř kontejneru.
3704
4693
  */
3705
- children?: React.ReactNode;
4694
+ children?: React__default.ReactNode;
3706
4695
  /** Dodatečná CSS třída pro kořenový element. */
3707
4696
  className?: string;
3708
4697
  /** Další inline styly pro kořenový element. */
3709
- style?: React.CSSProperties;
4698
+ style?: React__default.CSSProperties;
3710
4699
  }
3711
4700
  /**
3712
4701
  * Layout kontejner s maximální šířkou a volitelným centrováním.
@@ -3727,15 +4716,16 @@ interface ContainerProps {
3727
4716
  * </Container>
3728
4717
  * ```
3729
4718
  */
3730
- declare const Container: React.FC<ContainerProps>;
4719
+ declare const Container: React__default.FC<ContainerProps>;
3731
4720
 
4721
+ type DragListSize = 'sm' | 'md';
3732
4722
  interface DragListItem {
3733
4723
  /** Unikátní identifikátor položky. */
3734
4724
  id: string;
3735
4725
  /** Textový popisek položky. */
3736
4726
  label: string;
3737
4727
  /** Volitelná ikona zobrazená před popiskem. */
3738
- icon?: React.ReactNode;
4728
+ icon?: React__default.ReactNode;
3739
4729
  /** Potomci položky (pro stromový režim). */
3740
4730
  children?: DragListItem[];
3741
4731
  /** Zda je položka rozbalena (pro stromový režim). @default false */
@@ -3747,8 +4737,8 @@ interface DragListItem {
3747
4737
  interface DragHandleProps {
3748
4738
  /** Spread na element, který má sloužit jako drag handle. */
3749
4739
  handleProps: {
3750
- onMouseDown: (e: React.MouseEvent) => void;
3751
- style: React.CSSProperties;
4740
+ onMouseDown: (e: React__default.MouseEvent) => void;
4741
+ style: React__default.CSSProperties;
3752
4742
  'aria-label': string;
3753
4743
  };
3754
4744
  /** Zda je položka právě přetahována. */
@@ -3767,6 +4757,12 @@ interface DragListProps {
3767
4757
  items: DragListItem[];
3768
4758
  /** Callback volaný při změně pořadí položek. */
3769
4759
  onReorder: (items: DragListItem[]) => void;
4760
+ /**
4761
+ * Voláno při rozbalení / sbalení uzlu (chevron i auto-expand při přetahování)
4762
+ * s celým stromem s přepnutým `expanded`. Pokud je zadáno, `onReorder` se pro
4763
+ * rozbalení nevolá, takže konzument odliší změnu dat od změny zobrazení.
4764
+ */
4765
+ onExpandedChange?: (id: string, expanded: boolean, items: DragListItem[]) => void;
3770
4766
  /**
3771
4767
  * Vlastní vykreslovací funkce pro položku.
3772
4768
  * Přijímá `item`, `dragHandleProps` a další metadata.
@@ -3782,7 +4778,7 @@ interface DragListProps {
3782
4778
  * )}
3783
4779
  * ```
3784
4780
  */
3785
- renderItem?: (item: DragListItem, props: DragHandleProps) => React.ReactNode;
4781
+ renderItem?: (item: DragListItem, props: DragHandleProps) => React__default.ReactNode;
3786
4782
  /** Povolí vnořování položek (stromový režim). @default false */
3787
4783
  allowNesting?: boolean;
3788
4784
  /** Maximální hloubka vnoření. @default 3 */
@@ -3793,10 +4789,16 @@ interface DragListProps {
3793
4789
  * @default 'full'
3794
4790
  */
3795
4791
  dragMode?: 'full' | 'handle';
4792
+ /**
4793
+ * Hustota řádků. `'sm'` = kompaktní řádky (36px, menší mezery a odsazení)
4794
+ * pro dlouhé osnovy, `'md'` = výchozí vzhled. Chování přetahování se nemění.
4795
+ * @default 'md'
4796
+ */
4797
+ size?: DragListSize;
3796
4798
  /** Dodatečná CSS třída. */
3797
4799
  className?: string;
3798
4800
  /** Další inline styly. */
3799
- style?: React.CSSProperties;
4801
+ style?: React__default.CSSProperties;
3800
4802
  }
3801
4803
  /**
3802
4804
  * Přetahovací seznam dle SM-UI design systému.
@@ -3820,7 +4822,7 @@ interface DragListProps {
3820
4822
  * />
3821
4823
  * ```
3822
4824
  */
3823
- declare const DragList: React.FC<DragListProps>;
4825
+ declare const DragList: React__default.FC<DragListProps>;
3824
4826
 
3825
4827
  interface SortableListProps<T> {
3826
4828
  /** Datové položky. */
@@ -3828,7 +4830,7 @@ interface SortableListProps<T> {
3828
4830
  /** Stable key pro React reconciliation + drag tracking. */
3829
4831
  keyExtractor: (item: T) => string | number;
3830
4832
  /** Render každé položky. dragHandle je DOM node co lze umístit kdekoli. */
3831
- renderItem: (item: T, dragHandle: React.ReactNode) => React.ReactNode;
4833
+ renderItem: (item: T, dragHandle: React__default.ReactNode) => React__default.ReactNode;
3832
4834
  /** Po dokončení dragu, nové pořadí celého arraye. */
3833
4835
  onReorder: (newOrder: T[]) => void;
3834
4836
  /** Osa řazení. @default 'vertical' */
@@ -3840,7 +4842,7 @@ interface SortableListProps<T> {
3840
4842
  /** Mezera mezi položkami. */
3841
4843
  gap?: number | string;
3842
4844
  /** Další inline styly. */
3843
- style?: React.CSSProperties;
4845
+ style?: React__default.CSSProperties;
3844
4846
  /** Dodatečná CSS třída. */
3845
4847
  className?: string;
3846
4848
  }
@@ -3872,7 +4874,7 @@ interface SplitterProps {
3872
4874
  /** Směr rozdělení. horizontal = vertikální separátor. @default 'horizontal' */
3873
4875
  orientation?: 'horizontal' | 'vertical';
3874
4876
  /** Dva nebo více panelů. */
3875
- children: React.ReactNode[];
4877
+ children: React__default.ReactNode[];
3876
4878
  /** Iniciální velikosti v procentech. @default rovnoměrně */
3877
4879
  defaultSizes?: number[];
3878
4880
  /** Min velikost per panel v px. */
@@ -3888,7 +4890,7 @@ interface SplitterProps {
3888
4890
  /** Vypne resize. @default false */
3889
4891
  disabled?: boolean;
3890
4892
  /** Další inline styly. */
3891
- style?: React.CSSProperties;
4893
+ style?: React__default.CSSProperties;
3892
4894
  /** Dodatečná CSS třída. */
3893
4895
  className?: string;
3894
4896
  }
@@ -3906,14 +4908,309 @@ interface SplitterProps {
3906
4908
  * </Splitter>
3907
4909
  * ```
3908
4910
  */
3909
- declare const Splitter: React.FC<SplitterProps>;
4911
+ declare const Splitter: React__default.FC<SplitterProps>;
3910
4912
 
3911
4913
  type Theme = 'light' | 'dark';
3912
4914
  /**
3913
4915
  * Zjistí aktuální téma aplikace.
3914
4916
  * Výchozí je 'light'. Pokud je na html/body nastaven `data-theme`, použije se.
3915
4917
  * Jinak funguje fallback na systémové preference (prefers-color-scheme).
4918
+ *
4919
+ * Hodnota je správná už při prvním vykreslení (žádné bliknutí světlého motivu)
4920
+ * a hook funguje i bez `matchMedia` (jsdom, SSR).
3916
4921
  */
3917
4922
  declare const useTheme: () => Theme;
3918
4923
 
3919
- export { Accordion, AccordionItem, type AccordionItemProps, type AccordionProps, Alert, type AlertProps, type AlertVariant, AppSidebar, type AppSidebarProps, Avatar, type AvatarProps, type AvatarSize, AvatarStack, type AvatarStackProps, Badge, type BadgeProps, Banner, type BannerPosition, type BannerProps, type BannerVariant, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, type ButtonAsAnchorProps, type ButtonAsButtonProps, type ButtonIconPosition, type ButtonProps, type ButtonSize, type ButtonVariant, Calendar, type CalendarEvent, type CalendarProps, Card, type CardProps, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, type CheckboxSize, ColorPicker, type ColorPickerProps, Combobox, type ComboboxOption, type ComboboxProps, type ComboboxSize, type CommandGroup, type CommandItem, CommandMenu, type CommandMenuProps, ConfirmDialog, type ConfirmDialogProps, Container, type ContainerMaxWidth, type ContainerProps, CopyButton, type CopyButtonProps, type Country, type CropArea, type CropShape, DataGrid, type DataGridColumn, type DataGridProps, DataList, type DataListItem, type DataListProps, DatePicker, DatePickerGroup, type DatePickerGroupProps, type DatePickerProps, type DatePickerSize, Divider, type DividerOrientation, type DividerProps, type DragHandleProps, DragList, type DragListItem, type DragListProps, Drawer, type DrawerProps, DropdownMenu, type DropdownMenuItem, type DropdownMenuProps, EmptyState, type EmptyStatePreset, type EmptyStateProps, FileUpload, type FileUploadProps, FormField, type FormFieldProps, FormWizard, type FormWizardProps, type FormWizardStep, IconButton, type IconButtonProps, ImageCropper, type ImageCropperProps, Input, InputGroup, type InputGroupProps, type InputProps, type InputSize, Link, type LinkProps, type LinkVariant, MobileDataCard, type MobileDataCardColumn, type MobileDataCardProps, Modal, type ModalProps, Navbar, type NavbarProps, Notification, type NotificationProps, type NotificationVariant, NumberInput, type NumberInputProps, type NumberInputSize, type NumberInputVariant, OTPInput, type OTPInputProps, Pagination, type PaginationProps, PhoneInput, type PhoneInputProps, type PhoneInputSize, Popover, type PopoverProps, ProgressBar, type ProgressBarProps, type ProgressBarSize, ProgressCircle, type ProgressCircleProps, type ProgressThreshold, type ProgressVariant, Radio, RadioGroup, type RadioGroupOption, type RadioGroupProps, type RadioProps, type RadioSize, Rating, type RatingProps, type RatingSize, SegmentedControl, type SegmentedControlItem, type SegmentedControlProps, type SegmentedControlSize, Select, SelectGroup, type SelectGroupProps, type SelectOption, type SelectProps, Sheet, type SheetProps, SidebarItem, type SidebarItemProps, Skeleton, type SkeletonProps, Slider, type SliderProps, type SliderSize, SortableList, type SortableListProps, Spinner, type SpinnerProps, type SpinnerSize, Splitter, type SplitterProps, Spotlight, type SpotlightItem, type SpotlightProps, Stack, type StackAlign, type StackDirection, type StackJustify, type StackProps, Stat, type StatProps, StatusBadge, type StatusBadgeProps, type StatusBadgeStatus, type StepItem, Stepper, type StepperProps, Switch, type SwitchProps, type SwitchSize, Tab, TabPanel, type TabPanelProps, type TabProps, Table, type TableColumn, type TableProps, Tabs, type TabsProps, Tag, TagItem, type TagItemProps, type TagProps, Textarea, type TextareaProps, type TextareaResize, type TextareaSize, type Theme, Timeline, type TimelineItem, type TimelineProps, Toast, type ToastContextValue, type ToastOptions, type ToastPosition, type ToastProps, type ToastVariant, ToasterProvider, type ToasterProviderProps, Tooltip, type TooltipProps, Tree, type TreeNode, type TreeProps, type UploadedFile, useTheme, useToast };
4924
+ type OverlayKind = 'modal' | 'popover';
4925
+ /**
4926
+ * Je `target` uvnitř overlaye `id` nebo uvnitř kteréhokoli overlaye,
4927
+ * který je jeho potomkem (portál Selectu v Popoveru apod.)?
4928
+ */
4929
+ declare function isInsideOverlayTree(id: string, target: EventTarget | null): boolean;
4930
+ interface OverlayContextValue {
4931
+ id: string;
4932
+ zIndex: number;
4933
+ }
4934
+ declare const OverlayContext: React.Context<OverlayContextValue | null>;
4935
+ /** Nejbližší nadřazený kit overlay (nebo `null` mimo overlay). */
4936
+ declare const useOverlayContext: () => OverlayContextValue | null;
4937
+ interface UseOverlayOptions {
4938
+ /** Zda je overlay právě otevřený (registrovaný ve stacku). */
4939
+ open: boolean;
4940
+ /** `'modal'` = Modal / Drawer / Sheet / Spotlight, `'popover'` = plovoucí prvky. */
4941
+ kind: OverlayKind;
4942
+ /**
4943
+ * Voláno při Escape, když je tento overlay nejvyšší. Předejte prázdnou
4944
+ * funkci, pokud má overlay Escape pohltit bez zavření.
4945
+ */
4946
+ onEscape?: () => void;
4947
+ /** DOM uzly, které se počítají jako "uvnitř" overlaye (trigger + panel). */
4948
+ getNodes?: () => (Element | null | undefined)[];
4949
+ /** Explicitní z-index; přepíše automatický výpočet. */
4950
+ zIndex?: number;
4951
+ /**
4952
+ * Pasivní vrstva (Tooltip): dostane z-index nad rodiče, ale nepočítá se do
4953
+ * `useOverlayState()` a nepohltí Escape.
4954
+ * @default false
4955
+ */
4956
+ passive?: boolean;
4957
+ }
4958
+ interface UseOverlayResult {
4959
+ /** Identifikátor overlaye. */
4960
+ id: string;
4961
+ /** Vypočtený z-index (nad rodičem, nad vším otevřeným u modálních). */
4962
+ zIndex: number;
4963
+ /** Hodnota pro `<OverlayContext.Provider>` kolem obsahu overlaye. */
4964
+ contextValue: OverlayContextValue;
4965
+ /** Je `target` uvnitř tohoto overlaye nebo jeho potomků? */
4966
+ contains: (target: EventTarget | null) => boolean;
4967
+ }
4968
+ /**
4969
+ * Registruje overlay do sdíleného stacku. Použitelné i pro vlastní vrstvy
4970
+ * konzumenta (např. průvodce nad modalem), aby Escape nezavřel kit dialog pod ní.
4971
+ *
4972
+ * @example
4973
+ * ```tsx
4974
+ * const { zIndex, contextValue } = useOverlay({ open, kind: 'modal', onEscape: onClose });
4975
+ * return open ? createPortal(
4976
+ * <OverlayContext.Provider value={contextValue}>
4977
+ * <div style={{ position: 'fixed', inset: 0, zIndex }}>…</div>
4978
+ * </OverlayContext.Provider>, document.body) : null;
4979
+ * ```
4980
+ */
4981
+ declare function useOverlay({ open, kind, onEscape, getNodes, zIndex: explicitZ, passive }: UseOverlayOptions): UseOverlayResult;
4982
+ interface OverlayState {
4983
+ /** Je otevřený alespoň jeden kit overlay? */
4984
+ open: boolean;
4985
+ /** Počet otevřených overlayů. */
4986
+ count: number;
4987
+ /** Druh nejvyššího overlaye. */
4988
+ topKind: OverlayKind | null;
4989
+ }
4990
+ /**
4991
+ * Stav sdíleného overlay stacku. Hodí se pro vypnutí globálních klávesových
4992
+ * zkratek, dokud je otevřený modal / dropdown.
4993
+ *
4994
+ * @example
4995
+ * ```tsx
4996
+ * const { open } = useOverlayState();
4997
+ * useHotkey('n', createTask, { enabled: !open });
4998
+ * ```
4999
+ */
5000
+ declare function useOverlayState(): OverlayState;
5001
+
5002
+ /**
5003
+ * Vrací `true`, pokud má uživatel v systému zapnuté omezení animací
5004
+ * (`prefers-reduced-motion: reduce`). Kit pak animace overlayů vynechá.
5005
+ */
5006
+ declare const useReducedMotion: () => boolean;
5007
+
5008
+ declare const colors: {
5009
+ readonly primary: "#FC4F00";
5010
+ readonly primaryHover: "#FF6D2A";
5011
+ readonly primaryAlpha: "rgba(246,84,14,0.8)";
5012
+ readonly error: "#EF3838";
5013
+ readonly success: "#00A205";
5014
+ readonly info: "#2D7FF9";
5015
+ readonly warning: "#F5A623";
5016
+ };
5017
+ declare const themeTokens: {
5018
+ readonly dark: {
5019
+ readonly background: "#1a1a1a";
5020
+ readonly surface: "rgba(24,24,24,0.95)";
5021
+ readonly surfaceGlass: "rgba(24,24,24,0.8)";
5022
+ readonly panelBg: "rgba(24,24,24,0.65)";
5023
+ readonly panelBorder: "rgba(255,255,255,0.1)";
5024
+ readonly inputBg: "rgba(3,3,3,0.75)";
5025
+ readonly inputBorder: "rgba(255,255,255,0.3)";
5026
+ readonly text: "#ffffff";
5027
+ readonly textSecondary: "#eaeaea";
5028
+ readonly textMuted: "#888888";
5029
+ readonly placeholder: "#ACACAC";
5030
+ readonly border: "rgba(255,255,255,0.1)";
5031
+ readonly divider: "rgba(255,255,255,0.08)";
5032
+ readonly hover: "rgba(255,255,255,0.06)";
5033
+ readonly overlay: "rgba(0,0,0,0.4)";
5034
+ };
5035
+ readonly light: {
5036
+ readonly background: "#ffffff";
5037
+ readonly surface: "rgba(255,255,255,0.95)";
5038
+ readonly surfaceGlass: "rgba(255,255,255,0.8)";
5039
+ readonly panelBg: "rgba(255,255,255,0.65)";
5040
+ readonly panelBorder: "rgba(0,0,0,0.08)";
5041
+ readonly inputBg: "rgba(255,255,255,0.85)";
5042
+ readonly inputBorder: "rgba(0,0,0,0.2)";
5043
+ readonly text: "#1a1a1a";
5044
+ readonly textSecondary: "#333333";
5045
+ readonly textMuted: "#999999";
5046
+ readonly placeholder: "#888888";
5047
+ readonly border: "rgba(0,0,0,0.08)";
5048
+ readonly divider: "rgba(0,0,0,0.06)";
5049
+ readonly hover: "rgba(0,0,0,0.04)";
5050
+ readonly overlay: "rgba(0,0,0,0.18)";
5051
+ };
5052
+ };
5053
+ declare const glass: {
5054
+ /** Dropdowny, popovery, tooltipy. */
5055
+ readonly blur: "blur(20px)";
5056
+ /** Modal, Drawer, Sheet, Spotlight (panely). */
5057
+ readonly panelBlur: "blur(32px) saturate(1.4)";
5058
+ /** Overlay pod panelem. */
5059
+ readonly backdropBlur: "blur(8px)";
5060
+ };
5061
+ declare const shadows: {
5062
+ readonly dark: {
5063
+ readonly elevated: "0 12px 40px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.04) inset";
5064
+ readonly high: "0 24px 60px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.04) inset";
5065
+ };
5066
+ readonly light: {
5067
+ readonly elevated: "0 12px 40px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.03) inset";
5068
+ readonly high: "0 24px 60px rgba(0,0,0,0.15), 0 0 0 1px rgba(0,0,0,0.03) inset";
5069
+ };
5070
+ };
5071
+ declare const radius: {
5072
+ readonly tag: 4;
5073
+ readonly kbd: 6;
5074
+ readonly button: 8;
5075
+ readonly input: 8;
5076
+ readonly badge: 12;
5077
+ readonly card: 12;
5078
+ readonly dropdown: 12;
5079
+ readonly modal: 16;
5080
+ };
5081
+ declare const fonts: {
5082
+ readonly body: "'Zalando Sans', sans-serif";
5083
+ readonly heading: "'Zalando Sans Expanded', sans-serif";
5084
+ };
5085
+ /** Typografie popisku formulářového pole (uppercase label nad Input / Select…). */
5086
+ declare const fieldLabel: {
5087
+ readonly fontFamily: "'Zalando Sans Expanded', sans-serif";
5088
+ readonly fontStyle: "normal";
5089
+ readonly fontWeight: 400;
5090
+ readonly fontSize: "10px";
5091
+ readonly lineHeight: "normal";
5092
+ readonly textTransform: "uppercase";
5093
+ readonly userSelect: "none";
5094
+ };
5095
+ declare const animation: {
5096
+ readonly duration: 180;
5097
+ readonly easing: "cubic-bezier(0.16, 1, 0.3, 1)";
5098
+ readonly hover: "0.12s ease";
5099
+ };
5100
+ /**
5101
+ * Výchozí z-index škála. Skutečné hodnoty čtou komponenty z CSS proměnných
5102
+ * `--sm-ui-z-overlay`, `--sm-ui-z-popover`, `--sm-ui-z-toast`; tyto konstanty
5103
+ * jsou jejich fallbacky.
5104
+ *
5105
+ * Vnořené overlaye (Modal v Draweru, Select v Modalu…) dostávají z-index
5106
+ * `rodič + 1`, takže kit může nad základ vystoupat o počet současně otevřených
5107
+ * vrstev. Vlastní vrstvy nad kitem (mimo toasty) umisťujte nad `popover + 20`.
5108
+ */
5109
+ declare const Z_INDEX: {
5110
+ readonly overlay: 99998;
5111
+ readonly popover: 99999;
5112
+ readonly toast: 100050;
5113
+ };
5114
+ type ZIndexKind = keyof typeof Z_INDEX;
5115
+ /** Přečte z-index základ z CSS proměnné (fallback `Z_INDEX`). */
5116
+ declare function getZIndexBase(kind: ZIndexKind): number;
5117
+ declare const tokens: {
5118
+ readonly colors: {
5119
+ readonly primary: "#FC4F00";
5120
+ readonly primaryHover: "#FF6D2A";
5121
+ readonly primaryAlpha: "rgba(246,84,14,0.8)";
5122
+ readonly error: "#EF3838";
5123
+ readonly success: "#00A205";
5124
+ readonly info: "#2D7FF9";
5125
+ readonly warning: "#F5A623";
5126
+ };
5127
+ readonly theme: {
5128
+ readonly dark: {
5129
+ readonly background: "#1a1a1a";
5130
+ readonly surface: "rgba(24,24,24,0.95)";
5131
+ readonly surfaceGlass: "rgba(24,24,24,0.8)";
5132
+ readonly panelBg: "rgba(24,24,24,0.65)";
5133
+ readonly panelBorder: "rgba(255,255,255,0.1)";
5134
+ readonly inputBg: "rgba(3,3,3,0.75)";
5135
+ readonly inputBorder: "rgba(255,255,255,0.3)";
5136
+ readonly text: "#ffffff";
5137
+ readonly textSecondary: "#eaeaea";
5138
+ readonly textMuted: "#888888";
5139
+ readonly placeholder: "#ACACAC";
5140
+ readonly border: "rgba(255,255,255,0.1)";
5141
+ readonly divider: "rgba(255,255,255,0.08)";
5142
+ readonly hover: "rgba(255,255,255,0.06)";
5143
+ readonly overlay: "rgba(0,0,0,0.4)";
5144
+ };
5145
+ readonly light: {
5146
+ readonly background: "#ffffff";
5147
+ readonly surface: "rgba(255,255,255,0.95)";
5148
+ readonly surfaceGlass: "rgba(255,255,255,0.8)";
5149
+ readonly panelBg: "rgba(255,255,255,0.65)";
5150
+ readonly panelBorder: "rgba(0,0,0,0.08)";
5151
+ readonly inputBg: "rgba(255,255,255,0.85)";
5152
+ readonly inputBorder: "rgba(0,0,0,0.2)";
5153
+ readonly text: "#1a1a1a";
5154
+ readonly textSecondary: "#333333";
5155
+ readonly textMuted: "#999999";
5156
+ readonly placeholder: "#888888";
5157
+ readonly border: "rgba(0,0,0,0.08)";
5158
+ readonly divider: "rgba(0,0,0,0.06)";
5159
+ readonly hover: "rgba(0,0,0,0.04)";
5160
+ readonly overlay: "rgba(0,0,0,0.18)";
5161
+ };
5162
+ };
5163
+ readonly glass: {
5164
+ /** Dropdowny, popovery, tooltipy. */
5165
+ readonly blur: "blur(20px)";
5166
+ /** Modal, Drawer, Sheet, Spotlight (panely). */
5167
+ readonly panelBlur: "blur(32px) saturate(1.4)";
5168
+ /** Overlay pod panelem. */
5169
+ readonly backdropBlur: "blur(8px)";
5170
+ };
5171
+ readonly shadows: {
5172
+ readonly dark: {
5173
+ readonly elevated: "0 12px 40px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.04) inset";
5174
+ readonly high: "0 24px 60px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.04) inset";
5175
+ };
5176
+ readonly light: {
5177
+ readonly elevated: "0 12px 40px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.03) inset";
5178
+ readonly high: "0 24px 60px rgba(0,0,0,0.15), 0 0 0 1px rgba(0,0,0,0.03) inset";
5179
+ };
5180
+ };
5181
+ readonly radius: {
5182
+ readonly tag: 4;
5183
+ readonly kbd: 6;
5184
+ readonly button: 8;
5185
+ readonly input: 8;
5186
+ readonly badge: 12;
5187
+ readonly card: 12;
5188
+ readonly dropdown: 12;
5189
+ readonly modal: 16;
5190
+ };
5191
+ readonly fonts: {
5192
+ readonly body: "'Zalando Sans', sans-serif";
5193
+ readonly heading: "'Zalando Sans Expanded', sans-serif";
5194
+ };
5195
+ readonly fieldLabel: {
5196
+ readonly fontFamily: "'Zalando Sans Expanded', sans-serif";
5197
+ readonly fontStyle: "normal";
5198
+ readonly fontWeight: 400;
5199
+ readonly fontSize: "10px";
5200
+ readonly lineHeight: "normal";
5201
+ readonly textTransform: "uppercase";
5202
+ readonly userSelect: "none";
5203
+ };
5204
+ readonly animation: {
5205
+ readonly duration: 180;
5206
+ readonly easing: "cubic-bezier(0.16, 1, 0.3, 1)";
5207
+ readonly hover: "0.12s ease";
5208
+ };
5209
+ readonly zIndex: {
5210
+ readonly overlay: 99998;
5211
+ readonly popover: 99999;
5212
+ readonly toast: 100050;
5213
+ };
5214
+ };
5215
+
5216
+ export { Accordion, AccordionItem, type AccordionItemProps, type AccordionProps, Alert, type AlertProps, type AlertVariant, AppSidebar, type AppSidebarProps, AreaChart, Avatar, type AvatarProps, type AvatarSize, AvatarStack, type AvatarStackProps, Badge, type BadgeProps, type BadgeSize, type BadgeVariant, Banner, type BannerPosition, type BannerProps, type BannerVariant, BarChart, type BarChartProps, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, type ButtonAsAnchorProps, type ButtonAsButtonProps, type ButtonIconPosition, type ButtonProps, type ButtonSize, type ButtonVariant, CHART_PALETTE, Calendar, type CalendarEvent, type CalendarProps, Card, type CardProps, type ChartSeries, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, type CheckboxSize, ColorPicker, type ColorPickerProps, Combobox, type ComboboxFilter, type ComboboxMultipleProps, type ComboboxOption, type ComboboxProps, type ComboboxSingleClearableProps, type ComboboxSingleProps, type ComboboxSize, type ComboboxValue, type CommandGroup, type CommandItem, CommandMenu, type CommandMenuProps, type ConfirmContent, type ConfirmContentContext, ConfirmDialog, type ConfirmDialogProps, type ConfirmOptions, ConfirmProvider, Container, type ContainerMaxWidth, type ContainerProps, CopyButton, type CopyButtonProps, type Country, type CropArea, type CropShape, DataGrid, type DataGridColumn, type DataGridProps, DataList, type DataListItem, type DataListProps, DatePicker, DatePickerGroup, type DatePickerGroupProps, type DatePickerProps, type DatePickerSize, Divider, type DividerOrientation, type DividerProps, DonutChart, type DragHandleProps, DragList, type DragListItem, type DragListProps, type DragListSize, Drawer, type DrawerProps, DropdownMenu, type DropdownMenuItem, type DropdownMenuPosition, type DropdownMenuProps, EmptyState, type EmptyStatePreset, type EmptyStateProps, FieldLabel, type FieldLabelProps, FileUpload, type FileUploadProps, type FocusTrapInitialFocus, FormField, type FormFieldProps, FormWizard, type FormWizardProps, type FormWizardStep, IconButton, type IconButtonProps, ImageCropper, type ImageCropperProps, Input, InputGroup, type InputGroupProps, type InputProps, type InputSize, type InputVariant, type LegendPosition, LineChart, type LineChartProps, Link, type LinkProps, type LinkVariant, MobileDataCard, type MobileDataCardColumn, type MobileDataCardProps, Modal, type ModalBreakpoint, type ModalProps, Navbar, type NavbarProps, Notification, type NotificationProps, type NotificationVariant, NumberInput, type NumberInputEmptyProps, type NumberInputProps, type NumberInputSize, type NumberInputStrictProps, type NumberInputVariant, OTPInput, type OTPInputProps, OverlayContext, type OverlayContextValue, type OverlayKind, type OverlayState, Pagination, type PaginationProps, PhoneInput, type PhoneInputProps, type PhoneInputSize, PieChart, type PieChartProps, type PieDatum, Popover, type PopoverAlign, type PopoverPosition, type PopoverProps, ProgressBar, type ProgressBarProps, type ProgressBarSize, ProgressCircle, type ProgressCircleProps, type ProgressThreshold, type ProgressVariant, Radio, RadioGroup, type RadioGroupOption, type RadioGroupProps, type RadioProps, type RadioSize, Rating, type RatingProps, type RatingSize, SegmentedControl, type SegmentedControlItem, type SegmentedControlProps, type SegmentedControlSize, Select, SelectGroup, type SelectGroupProps, type SelectMultipleProps, type SelectOption, type SelectOptionGroup, type SelectOptions, type SelectProps, type SelectSingleClearableProps, type SelectSingleProps, type SelectSize, type SelectValue, Sheet, type SheetProps, SidebarItem, type SidebarItemProps, Skeleton, type SkeletonProps, Slider, type SliderProps, type SliderSize, SortableList, type SortableListProps, Sparkline, type SparklineProps, Spinner, type SpinnerProps, type SpinnerSize, Splitter, type SplitterProps, Spotlight, type SpotlightItem, type SpotlightProps, Stack, type StackAlign, type StackDirection, type StackJustify, type StackProps, Stat, type StatProps, StatusBadge, type StatusBadgeProps, type StatusBadgeStatus, type StepItem, Stepper, type StepperProps, Switch, type SwitchProps, type SwitchSize, Tab, TabPanel, type TabPanelProps, type TabProps, Table, type TableColumn, type TableProps, Tabs, type TabsProps, Tag, TagItem, type TagItemProps, type TagProps, Textarea, type TextareaProps, type TextareaResize, type TextareaSize, type Theme, type ThemedColor, Timeline, type TimelineItem, type TimelineProps, Toast, type ToastContextValue, type ToastOptions, type ToastPosition, type ToastProps, type ToastVariant, ToasterProvider, type ToasterProviderProps, Tooltip, type TooltipProps, Tree, type TreeNode, type TreeProps, type UploadedFile, type UseFocusTrapOptions, type UseOverlayOptions, type UseOverlayResult, type ZIndexKind, Z_INDEX, animation, colors, fieldLabel, fonts, getZIndexBase, glass, isInsideOverlayTree, radius, shadows, themeTokens, tokens, useConfirm, useFocusTrap, useOverlay, useOverlayContext, useOverlayState, useReducedMotion, useTheme, useToast };