@smworks-cz/ui-kit 1.2.1 → 1.3.1

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
@@ -370,10 +370,18 @@ interface ComboboxOption {
370
370
  interface ComboboxProps {
371
371
  /** Dostupné položky k výběru. */
372
372
  options: ComboboxOption[];
373
- /** Aktuální vybraná hodnota. */
374
- value: string;
375
- /** Callback volaný při výběru položky. */
376
- onChange: (value: string) => void;
373
+ /**
374
+ * Aktuální vybraná hodnota.
375
+ * - Jednoduchý výběr: `string`
376
+ * - Vícenásobný výběr: `string[]`
377
+ */
378
+ value: string | string[];
379
+ /**
380
+ * Callback volaný při výběru položky.
381
+ * - Jednoduchý výběr: `(value: string) => void`
382
+ * - Vícenásobný výběr: `(value: string[]) => void`
383
+ */
384
+ onChange: (value: any) => void;
377
385
  /** Callback volaný při změně textu ve vyhledávacím poli. Vhodné pro asynchronní filtrování. */
378
386
  onInputChange?: (input: string) => void;
379
387
  /** Zástupný text zobrazený při prázdném poli. */
@@ -386,6 +394,22 @@ interface ComboboxProps {
386
394
  disabled?: boolean;
387
395
  /** Zobrazí spinner místo ikony vyhledávání. Vhodné při načítání položek. */
388
396
  loading?: boolean;
397
+ /** Umožní vybrat více položek najednou. @default false */
398
+ multiple?: boolean;
399
+ /** Zobrazí tlačítko pro vymazání výběru. @default false */
400
+ clearable?: boolean;
401
+ /** Voláno při otevření/zavření dropdownu. */
402
+ onOpenChange?: (open: boolean) => void;
403
+ /** Voláno při výběru položky. */
404
+ onSelect?: (value: string, option: ComboboxOption) => void;
405
+ /** Voláno při odebrání položky (multiple). */
406
+ onDeselect?: (value: string, option: ComboboxOption) => void;
407
+ /** Voláno při vymazání výběru (clearable). */
408
+ onClear?: () => void;
409
+ /** Voláno při focus. */
410
+ onFocus?: (event: React.FocusEvent) => void;
411
+ /** Voláno při blur. */
412
+ onBlur?: (event: React.FocusEvent) => void;
389
413
  /** Povolí uživateli zadat vlastní hodnotu, která není v seznamu. @default false */
390
414
  allowCustom?: boolean;
391
415
  /** Callback volaný při vytvoření vlastní hodnoty (Enter při `allowCustom`). */
@@ -395,10 +419,19 @@ interface ComboboxProps {
395
419
  value: string;
396
420
  label?: string;
397
421
  }, highlighted: boolean) => React.ReactNode;
398
- /** Obsah zobrazený když žádné výsledky neodpovídají. @default "Žádné výsledky" */
399
- notFoundContent?: React.ReactNode;
400
- /** Obsah zobrazený pod seznamem položek uvnitř dropdownu. */
401
- footer?: React.ReactNode;
422
+ /**
423
+ * Obsah zobrazený když žádné výsledky neodpovídají.
424
+ * Může být ReactNode nebo funkce `(close: () => void) => ReactNode`
425
+ * pro přístup k zavření dropdownu.
426
+ * @default "Žádné výsledky"
427
+ */
428
+ notFoundContent?: React.ReactNode | ((close: () => void) => React.ReactNode);
429
+ /**
430
+ * Obsah zobrazený pod seznamem položek uvnitř dropdownu.
431
+ * Může být ReactNode nebo funkce `(close: () => void) => ReactNode`
432
+ * pro přístup k zavření dropdownu.
433
+ */
434
+ footer?: React.ReactNode | ((close: () => void) => React.ReactNode);
402
435
  /**
403
436
  * Velikostní preset.
404
437
  * @default 'md'
@@ -413,17 +446,27 @@ interface ComboboxProps {
413
446
  * Kombinované vyhledávací pole se seznamem dle SM-UI design systému.
414
447
  *
415
448
  * Uživatel zadává text pro filtrování položek. Dropdown se vykresluje
416
- * přes React portál. Podporuje navigaci klávesami, vlastní hodnoty
417
- * a asynchronní filtrování přes `onInputChange`.
449
+ * přes React portál. Podporuje navigaci klávesami, vlastní hodnoty,
450
+ * vícenásobný výběr a asynchronní filtrování přes `onInputChange`.
418
451
  *
419
452
  * @example
420
453
  * ```tsx
454
+ * // Jednoduchý výběr
421
455
  * <Combobox
422
456
  * options={[{ value: 'cz', label: 'Česko' }, { value: 'sk', label: 'Slovensko' }]}
423
457
  * value={zeme}
424
458
  * onChange={setZeme}
425
459
  * placeholder="Hledat zemi…"
426
460
  * />
461
+ *
462
+ * // Vícenásobný výběr
463
+ * <Combobox
464
+ * multiple
465
+ * options={options}
466
+ * value={selectedCountries}
467
+ * onChange={setSelectedCountries}
468
+ * placeholder="Vyberte země…"
469
+ * />
427
470
  * ```
428
471
  */
429
472
  declare const Combobox: React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<HTMLInputElement>>;
@@ -930,6 +973,12 @@ interface FileUploadProps {
930
973
  * @default 'default'
931
974
  */
932
975
  buttonStyle?: 'default' | 'primary';
976
+ /**
977
+ * Řízená hodnota — pole souborů. Pokud je nastaveno, komponenta je plně
978
+ * řízená a interní stav se nepoužívá. Předejte prázdné pole `[]`
979
+ * pro reset / skrytí souborů.
980
+ */
981
+ value?: File[];
933
982
  /**
934
983
  * Zda zobrazit seznam nahraných souborů pod komponentou.
935
984
  * @default true
@@ -1261,6 +1310,89 @@ interface DataGridProps {
1261
1310
  */
1262
1311
  declare const DataGrid: React.FC<DataGridProps>;
1263
1312
 
1313
+ interface MobileDataCardColumn {
1314
+ /** Klíč dat v řádkovém objektu. */
1315
+ key: string;
1316
+ /** Zobrazovaný popisek. */
1317
+ header: string;
1318
+ /** Vlastní renderování hodnoty — stejný podpis jako Table/DataGrid. */
1319
+ render?: (value: any, row: any, index: number) => React.ReactNode;
1320
+ /** Skrýt tento sloupec z karty. */
1321
+ hidden?: boolean;
1322
+ /** Zobrazit toto pole jako titulek karty. */
1323
+ primary?: boolean;
1324
+ /** Povolit řazení podle tohoto sloupce. */
1325
+ sortable?: boolean;
1326
+ }
1327
+ interface MobileDataCardProps {
1328
+ /** Definice sloupců — stejný tvar jako Table/DataGrid. */
1329
+ columns: MobileDataCardColumn[];
1330
+ /** Pole dat. */
1331
+ data: any[];
1332
+ /** Klíč v řádkovém objektu pro titulek karty. Alternativa k `primary` na sloupci. */
1333
+ primaryKey?: string;
1334
+ /** Klíč identifikátoru řádku. @default 'id' */
1335
+ rowKey?: string;
1336
+ /** Povolit výběr karet. @default false */
1337
+ selectable?: boolean;
1338
+ /** Řízené vybrané ID. */
1339
+ selectedIds?: string[];
1340
+ /** Callback při změně výběru. */
1341
+ onSelectionChange?: (ids: string[]) => void;
1342
+ /** Callback při kliknutí na kartu. */
1343
+ onCardClick?: (row: any) => void;
1344
+ /** Callback při řazení. */
1345
+ onSort?: (key: string, direction: 'asc' | 'desc') => void;
1346
+ /** Aktuální klíč řazení. */
1347
+ sortKey?: string;
1348
+ /** Aktuální směr řazení. */
1349
+ sortDirection?: 'asc' | 'desc';
1350
+ /** Zobrazit skeleton karty. @default false */
1351
+ loading?: boolean;
1352
+ /** Počet skeleton karet. @default 3 */
1353
+ skeletonCount?: number;
1354
+ /** Text prázdného stavu. @default 'Žádná data' */
1355
+ emptyText?: string;
1356
+ /** Vlastní obsah prázdného stavu. */
1357
+ emptyContent?: React.ReactNode;
1358
+ /** Mezera mezi kartami v px. @default 12 */
1359
+ gap?: number;
1360
+ /** Vykreslení akčních tlačítek v patičce karty. */
1361
+ cardActions?: (row: any, index: number) => React.ReactNode;
1362
+ /** Další inline styly. */
1363
+ style?: React.CSSProperties;
1364
+ /** Dodatečná CSS třída. */
1365
+ className?: string;
1366
+ }
1367
+ /**
1368
+ * Mobilní zobrazení dat ve formě karet.
1369
+ *
1370
+ * Každý datový řádek se zobrazí jako karta s páry popisek-hodnota.
1371
+ * Kombinuje funkce Table (řazení, custom render) a DataGrid
1372
+ * (výběr, kliknutí na řádek, skeleton).
1373
+ *
1374
+ * @example
1375
+ * ```tsx
1376
+ * <MobileDataCard
1377
+ * columns={[
1378
+ * { key: 'name', header: 'Jméno', primary: true },
1379
+ * { key: 'email', header: 'Email' },
1380
+ * { key: 'role', header: 'Role' },
1381
+ * ]}
1382
+ * data={users}
1383
+ * selectable
1384
+ * onCardClick={(row) => openDetail(row)}
1385
+ * cardActions={(row) => (
1386
+ * <>
1387
+ * <Button size="sm" variant="outline" onClick={() => edit(row)}>Upravit</Button>
1388
+ * <Button size="sm" variant="destructive" onClick={() => del(row)}>Smazat</Button>
1389
+ * </>
1390
+ * )}
1391
+ * />
1392
+ * ```
1393
+ */
1394
+ declare const MobileDataCard: React.FC<MobileDataCardProps>;
1395
+
1264
1396
  interface CardProps {
1265
1397
  /** Titulek karty. */
1266
1398
  title?: string;
@@ -1753,12 +1885,22 @@ declare const TagItem: React.FC<TagItemProps>;
1753
1885
 
1754
1886
  /** Událost zobrazená v kalendáři. */
1755
1887
  interface CalendarEvent {
1756
- /** Datum události. */
1888
+ /** Unikátní ID události. */
1889
+ id?: string;
1890
+ /** Datum události (začátek). */
1757
1891
  date: Date;
1892
+ /** Konec události (pro vícedenní). Pokud není zadáno, rovná se `date`. */
1893
+ endDate?: Date;
1758
1894
  /** Název události. */
1759
1895
  title: string;
1760
- /** Barva tečky/indikátoru. @default '#FC4F00' */
1896
+ /** Barva pozadí baru/tečky. @default '#FC4F00' */
1761
1897
  color?: string;
1898
+ /** Barva textu na baru. @default '#ffffff' */
1899
+ textColor?: string;
1900
+ /** Emoji zobrazené před názvem. */
1901
+ emoji?: string;
1902
+ /** Obsah tooltipu. Pokud je nastaveno, event bar se obalí tooltipem. */
1903
+ tooltip?: string | React.ReactNode;
1762
1904
  }
1763
1905
  interface CalendarProps {
1764
1906
  /** Aktuálně vybraný datum. */
@@ -1767,8 +1909,24 @@ interface CalendarProps {
1767
1909
  onChange?: (date: Date) => void;
1768
1910
  /** Režim zobrazení. @default 'month' */
1769
1911
  view?: 'month' | 'week';
1770
- /** Události k zobrazení (vizuální indikátory — barevné tečky). */
1912
+ /** Události k zobrazení. */
1771
1913
  events?: CalendarEvent[];
1914
+ /** Callback při kliknutí na událost (fullSize mode). */
1915
+ onEventClick?: (event: CalendarEvent) => void;
1916
+ /** Plnohodnotný kalendář s event bary místo teček. @default false */
1917
+ fullSize?: boolean;
1918
+ /** První den v týdnu: 0 = neděle, 1 = pondělí. @default 1 */
1919
+ firstDay?: 0 | 1;
1920
+ /** Jazyk. @default 'cs' */
1921
+ locale?: 'cs' | 'en';
1922
+ /** Max viditelných událostí v buňce (fullSize). @default 3 */
1923
+ maxEventsPerDay?: number;
1924
+ /** Zobrazit navigační hlavičku (měsíc + šipky). @default true */
1925
+ showHeader?: boolean;
1926
+ /** Callback při změně zobrazeného měsíce/týdne. Vrací první den zobrazeného období. */
1927
+ onNavigate?: (date: Date) => void;
1928
+ /** Počáteční datum pro navigaci (neřízený). @default new Date() */
1929
+ initialDate?: Date;
1772
1930
  /** Minimální povolený datum. */
1773
1931
  minDate?: Date;
1774
1932
  /** Maximální povolený datum. */
@@ -1781,15 +1939,22 @@ interface CalendarProps {
1781
1939
  /**
1782
1940
  * Kalendářní komponenta s měsíčním a týdenním zobrazením.
1783
1941
  *
1784
- * Podporuje výběr data, zobrazení událostí (barevné tečky),
1785
- * navigaci mezi měsíci/týdny a omezení rozsahu dat.
1942
+ * V kompaktním režimu (`fullSize={false}`) zobrazuje malý datepicker
1943
+ * s barevnými tečkami pro události.
1944
+ *
1945
+ * V plnohodnotném režimu (`fullSize={true}`) zobrazuje velký měsíční
1946
+ * kalendář s event bary, které mohou přesahovat přes více dní.
1786
1947
  *
1787
1948
  * @example
1788
1949
  * ```tsx
1950
+ * // Kompaktní
1951
+ * <Calendar value={date} onChange={setDate} events={events} />
1952
+ *
1953
+ * // Plnohodnotný
1789
1954
  * <Calendar
1790
- * value={selectedDate}
1791
- * onChange={setSelectedDate}
1792
- * events={[{ date: new Date(), title: 'Meeting', color: '#00A205' }]}
1955
+ * fullSize
1956
+ * events={events}
1957
+ * onEventClick={(ev) => console.log(ev)}
1793
1958
  * />
1794
1959
  * ```
1795
1960
  */
@@ -3261,4 +3426,4 @@ type Theme = 'light' | 'dark';
3261
3426
  */
3262
3427
  declare const useTheme: () => Theme;
3263
3428
 
3264
- export { Accordion, AccordionItem, type AccordionItemProps, type AccordionProps, Alert, type AlertProps, type AlertVariant, AppSidebar, type AppSidebarProps, Avatar, type AvatarProps, type AvatarSize, Badge, type BadgeProps, 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, 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 EmptyStateProps, FileUpload, type FileUploadProps, Input, InputGroup, type InputGroupProps, type InputProps, type InputSize, Link, type LinkProps, type LinkVariant, Modal, type ModalProps, Navbar, type NavbarProps, Notification, type NotificationProps, type NotificationVariant, NumberInput, type NumberInputProps, type NumberInputSize, type NumberInputVariant, OTPInput, type OTPInputProps, Pagination, type PaginationProps, Popover, type PopoverProps, ProgressBar, type ProgressBarProps, type ProgressBarSize, ProgressCircle, type ProgressCircleProps, 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, Spinner, type SpinnerProps, type SpinnerSize, 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 };
3429
+ export { Accordion, AccordionItem, type AccordionItemProps, type AccordionProps, Alert, type AlertProps, type AlertVariant, AppSidebar, type AppSidebarProps, Avatar, type AvatarProps, type AvatarSize, Badge, type BadgeProps, 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, 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 EmptyStateProps, FileUpload, type FileUploadProps, 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, Popover, type PopoverProps, ProgressBar, type ProgressBarProps, type ProgressBarSize, ProgressCircle, type ProgressCircleProps, 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, Spinner, type SpinnerProps, type SpinnerSize, 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 };
package/dist/index.d.ts CHANGED
@@ -370,10 +370,18 @@ interface ComboboxOption {
370
370
  interface ComboboxProps {
371
371
  /** Dostupné položky k výběru. */
372
372
  options: ComboboxOption[];
373
- /** Aktuální vybraná hodnota. */
374
- value: string;
375
- /** Callback volaný při výběru položky. */
376
- onChange: (value: string) => void;
373
+ /**
374
+ * Aktuální vybraná hodnota.
375
+ * - Jednoduchý výběr: `string`
376
+ * - Vícenásobný výběr: `string[]`
377
+ */
378
+ value: string | string[];
379
+ /**
380
+ * Callback volaný při výběru položky.
381
+ * - Jednoduchý výběr: `(value: string) => void`
382
+ * - Vícenásobný výběr: `(value: string[]) => void`
383
+ */
384
+ onChange: (value: any) => void;
377
385
  /** Callback volaný při změně textu ve vyhledávacím poli. Vhodné pro asynchronní filtrování. */
378
386
  onInputChange?: (input: string) => void;
379
387
  /** Zástupný text zobrazený při prázdném poli. */
@@ -386,6 +394,22 @@ interface ComboboxProps {
386
394
  disabled?: boolean;
387
395
  /** Zobrazí spinner místo ikony vyhledávání. Vhodné při načítání položek. */
388
396
  loading?: boolean;
397
+ /** Umožní vybrat více položek najednou. @default false */
398
+ multiple?: boolean;
399
+ /** Zobrazí tlačítko pro vymazání výběru. @default false */
400
+ clearable?: boolean;
401
+ /** Voláno při otevření/zavření dropdownu. */
402
+ onOpenChange?: (open: boolean) => void;
403
+ /** Voláno při výběru položky. */
404
+ onSelect?: (value: string, option: ComboboxOption) => void;
405
+ /** Voláno při odebrání položky (multiple). */
406
+ onDeselect?: (value: string, option: ComboboxOption) => void;
407
+ /** Voláno při vymazání výběru (clearable). */
408
+ onClear?: () => void;
409
+ /** Voláno při focus. */
410
+ onFocus?: (event: React.FocusEvent) => void;
411
+ /** Voláno při blur. */
412
+ onBlur?: (event: React.FocusEvent) => void;
389
413
  /** Povolí uživateli zadat vlastní hodnotu, která není v seznamu. @default false */
390
414
  allowCustom?: boolean;
391
415
  /** Callback volaný při vytvoření vlastní hodnoty (Enter při `allowCustom`). */
@@ -395,10 +419,19 @@ interface ComboboxProps {
395
419
  value: string;
396
420
  label?: string;
397
421
  }, highlighted: boolean) => React.ReactNode;
398
- /** Obsah zobrazený když žádné výsledky neodpovídají. @default "Žádné výsledky" */
399
- notFoundContent?: React.ReactNode;
400
- /** Obsah zobrazený pod seznamem položek uvnitř dropdownu. */
401
- footer?: React.ReactNode;
422
+ /**
423
+ * Obsah zobrazený když žádné výsledky neodpovídají.
424
+ * Může být ReactNode nebo funkce `(close: () => void) => ReactNode`
425
+ * pro přístup k zavření dropdownu.
426
+ * @default "Žádné výsledky"
427
+ */
428
+ notFoundContent?: React.ReactNode | ((close: () => void) => React.ReactNode);
429
+ /**
430
+ * Obsah zobrazený pod seznamem položek uvnitř dropdownu.
431
+ * Může být ReactNode nebo funkce `(close: () => void) => ReactNode`
432
+ * pro přístup k zavření dropdownu.
433
+ */
434
+ footer?: React.ReactNode | ((close: () => void) => React.ReactNode);
402
435
  /**
403
436
  * Velikostní preset.
404
437
  * @default 'md'
@@ -413,17 +446,27 @@ interface ComboboxProps {
413
446
  * Kombinované vyhledávací pole se seznamem dle SM-UI design systému.
414
447
  *
415
448
  * Uživatel zadává text pro filtrování položek. Dropdown se vykresluje
416
- * přes React portál. Podporuje navigaci klávesami, vlastní hodnoty
417
- * a asynchronní filtrování přes `onInputChange`.
449
+ * přes React portál. Podporuje navigaci klávesami, vlastní hodnoty,
450
+ * vícenásobný výběr a asynchronní filtrování přes `onInputChange`.
418
451
  *
419
452
  * @example
420
453
  * ```tsx
454
+ * // Jednoduchý výběr
421
455
  * <Combobox
422
456
  * options={[{ value: 'cz', label: 'Česko' }, { value: 'sk', label: 'Slovensko' }]}
423
457
  * value={zeme}
424
458
  * onChange={setZeme}
425
459
  * placeholder="Hledat zemi…"
426
460
  * />
461
+ *
462
+ * // Vícenásobný výběr
463
+ * <Combobox
464
+ * multiple
465
+ * options={options}
466
+ * value={selectedCountries}
467
+ * onChange={setSelectedCountries}
468
+ * placeholder="Vyberte země…"
469
+ * />
427
470
  * ```
428
471
  */
429
472
  declare const Combobox: React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<HTMLInputElement>>;
@@ -930,6 +973,12 @@ interface FileUploadProps {
930
973
  * @default 'default'
931
974
  */
932
975
  buttonStyle?: 'default' | 'primary';
976
+ /**
977
+ * Řízená hodnota — pole souborů. Pokud je nastaveno, komponenta je plně
978
+ * řízená a interní stav se nepoužívá. Předejte prázdné pole `[]`
979
+ * pro reset / skrytí souborů.
980
+ */
981
+ value?: File[];
933
982
  /**
934
983
  * Zda zobrazit seznam nahraných souborů pod komponentou.
935
984
  * @default true
@@ -1261,6 +1310,89 @@ interface DataGridProps {
1261
1310
  */
1262
1311
  declare const DataGrid: React.FC<DataGridProps>;
1263
1312
 
1313
+ interface MobileDataCardColumn {
1314
+ /** Klíč dat v řádkovém objektu. */
1315
+ key: string;
1316
+ /** Zobrazovaný popisek. */
1317
+ header: string;
1318
+ /** Vlastní renderování hodnoty — stejný podpis jako Table/DataGrid. */
1319
+ render?: (value: any, row: any, index: number) => React.ReactNode;
1320
+ /** Skrýt tento sloupec z karty. */
1321
+ hidden?: boolean;
1322
+ /** Zobrazit toto pole jako titulek karty. */
1323
+ primary?: boolean;
1324
+ /** Povolit řazení podle tohoto sloupce. */
1325
+ sortable?: boolean;
1326
+ }
1327
+ interface MobileDataCardProps {
1328
+ /** Definice sloupců — stejný tvar jako Table/DataGrid. */
1329
+ columns: MobileDataCardColumn[];
1330
+ /** Pole dat. */
1331
+ data: any[];
1332
+ /** Klíč v řádkovém objektu pro titulek karty. Alternativa k `primary` na sloupci. */
1333
+ primaryKey?: string;
1334
+ /** Klíč identifikátoru řádku. @default 'id' */
1335
+ rowKey?: string;
1336
+ /** Povolit výběr karet. @default false */
1337
+ selectable?: boolean;
1338
+ /** Řízené vybrané ID. */
1339
+ selectedIds?: string[];
1340
+ /** Callback při změně výběru. */
1341
+ onSelectionChange?: (ids: string[]) => void;
1342
+ /** Callback při kliknutí na kartu. */
1343
+ onCardClick?: (row: any) => void;
1344
+ /** Callback při řazení. */
1345
+ onSort?: (key: string, direction: 'asc' | 'desc') => void;
1346
+ /** Aktuální klíč řazení. */
1347
+ sortKey?: string;
1348
+ /** Aktuální směr řazení. */
1349
+ sortDirection?: 'asc' | 'desc';
1350
+ /** Zobrazit skeleton karty. @default false */
1351
+ loading?: boolean;
1352
+ /** Počet skeleton karet. @default 3 */
1353
+ skeletonCount?: number;
1354
+ /** Text prázdného stavu. @default 'Žádná data' */
1355
+ emptyText?: string;
1356
+ /** Vlastní obsah prázdného stavu. */
1357
+ emptyContent?: React.ReactNode;
1358
+ /** Mezera mezi kartami v px. @default 12 */
1359
+ gap?: number;
1360
+ /** Vykreslení akčních tlačítek v patičce karty. */
1361
+ cardActions?: (row: any, index: number) => React.ReactNode;
1362
+ /** Další inline styly. */
1363
+ style?: React.CSSProperties;
1364
+ /** Dodatečná CSS třída. */
1365
+ className?: string;
1366
+ }
1367
+ /**
1368
+ * Mobilní zobrazení dat ve formě karet.
1369
+ *
1370
+ * Každý datový řádek se zobrazí jako karta s páry popisek-hodnota.
1371
+ * Kombinuje funkce Table (řazení, custom render) a DataGrid
1372
+ * (výběr, kliknutí na řádek, skeleton).
1373
+ *
1374
+ * @example
1375
+ * ```tsx
1376
+ * <MobileDataCard
1377
+ * columns={[
1378
+ * { key: 'name', header: 'Jméno', primary: true },
1379
+ * { key: 'email', header: 'Email' },
1380
+ * { key: 'role', header: 'Role' },
1381
+ * ]}
1382
+ * data={users}
1383
+ * selectable
1384
+ * onCardClick={(row) => openDetail(row)}
1385
+ * cardActions={(row) => (
1386
+ * <>
1387
+ * <Button size="sm" variant="outline" onClick={() => edit(row)}>Upravit</Button>
1388
+ * <Button size="sm" variant="destructive" onClick={() => del(row)}>Smazat</Button>
1389
+ * </>
1390
+ * )}
1391
+ * />
1392
+ * ```
1393
+ */
1394
+ declare const MobileDataCard: React.FC<MobileDataCardProps>;
1395
+
1264
1396
  interface CardProps {
1265
1397
  /** Titulek karty. */
1266
1398
  title?: string;
@@ -1753,12 +1885,22 @@ declare const TagItem: React.FC<TagItemProps>;
1753
1885
 
1754
1886
  /** Událost zobrazená v kalendáři. */
1755
1887
  interface CalendarEvent {
1756
- /** Datum události. */
1888
+ /** Unikátní ID události. */
1889
+ id?: string;
1890
+ /** Datum události (začátek). */
1757
1891
  date: Date;
1892
+ /** Konec události (pro vícedenní). Pokud není zadáno, rovná se `date`. */
1893
+ endDate?: Date;
1758
1894
  /** Název události. */
1759
1895
  title: string;
1760
- /** Barva tečky/indikátoru. @default '#FC4F00' */
1896
+ /** Barva pozadí baru/tečky. @default '#FC4F00' */
1761
1897
  color?: string;
1898
+ /** Barva textu na baru. @default '#ffffff' */
1899
+ textColor?: string;
1900
+ /** Emoji zobrazené před názvem. */
1901
+ emoji?: string;
1902
+ /** Obsah tooltipu. Pokud je nastaveno, event bar se obalí tooltipem. */
1903
+ tooltip?: string | React.ReactNode;
1762
1904
  }
1763
1905
  interface CalendarProps {
1764
1906
  /** Aktuálně vybraný datum. */
@@ -1767,8 +1909,24 @@ interface CalendarProps {
1767
1909
  onChange?: (date: Date) => void;
1768
1910
  /** Režim zobrazení. @default 'month' */
1769
1911
  view?: 'month' | 'week';
1770
- /** Události k zobrazení (vizuální indikátory — barevné tečky). */
1912
+ /** Události k zobrazení. */
1771
1913
  events?: CalendarEvent[];
1914
+ /** Callback při kliknutí na událost (fullSize mode). */
1915
+ onEventClick?: (event: CalendarEvent) => void;
1916
+ /** Plnohodnotný kalendář s event bary místo teček. @default false */
1917
+ fullSize?: boolean;
1918
+ /** První den v týdnu: 0 = neděle, 1 = pondělí. @default 1 */
1919
+ firstDay?: 0 | 1;
1920
+ /** Jazyk. @default 'cs' */
1921
+ locale?: 'cs' | 'en';
1922
+ /** Max viditelných událostí v buňce (fullSize). @default 3 */
1923
+ maxEventsPerDay?: number;
1924
+ /** Zobrazit navigační hlavičku (měsíc + šipky). @default true */
1925
+ showHeader?: boolean;
1926
+ /** Callback při změně zobrazeného měsíce/týdne. Vrací první den zobrazeného období. */
1927
+ onNavigate?: (date: Date) => void;
1928
+ /** Počáteční datum pro navigaci (neřízený). @default new Date() */
1929
+ initialDate?: Date;
1772
1930
  /** Minimální povolený datum. */
1773
1931
  minDate?: Date;
1774
1932
  /** Maximální povolený datum. */
@@ -1781,15 +1939,22 @@ interface CalendarProps {
1781
1939
  /**
1782
1940
  * Kalendářní komponenta s měsíčním a týdenním zobrazením.
1783
1941
  *
1784
- * Podporuje výběr data, zobrazení událostí (barevné tečky),
1785
- * navigaci mezi měsíci/týdny a omezení rozsahu dat.
1942
+ * V kompaktním režimu (`fullSize={false}`) zobrazuje malý datepicker
1943
+ * s barevnými tečkami pro události.
1944
+ *
1945
+ * V plnohodnotném režimu (`fullSize={true}`) zobrazuje velký měsíční
1946
+ * kalendář s event bary, které mohou přesahovat přes více dní.
1786
1947
  *
1787
1948
  * @example
1788
1949
  * ```tsx
1950
+ * // Kompaktní
1951
+ * <Calendar value={date} onChange={setDate} events={events} />
1952
+ *
1953
+ * // Plnohodnotný
1789
1954
  * <Calendar
1790
- * value={selectedDate}
1791
- * onChange={setSelectedDate}
1792
- * events={[{ date: new Date(), title: 'Meeting', color: '#00A205' }]}
1955
+ * fullSize
1956
+ * events={events}
1957
+ * onEventClick={(ev) => console.log(ev)}
1793
1958
  * />
1794
1959
  * ```
1795
1960
  */
@@ -3261,4 +3426,4 @@ type Theme = 'light' | 'dark';
3261
3426
  */
3262
3427
  declare const useTheme: () => Theme;
3263
3428
 
3264
- export { Accordion, AccordionItem, type AccordionItemProps, type AccordionProps, Alert, type AlertProps, type AlertVariant, AppSidebar, type AppSidebarProps, Avatar, type AvatarProps, type AvatarSize, Badge, type BadgeProps, 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, 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 EmptyStateProps, FileUpload, type FileUploadProps, Input, InputGroup, type InputGroupProps, type InputProps, type InputSize, Link, type LinkProps, type LinkVariant, Modal, type ModalProps, Navbar, type NavbarProps, Notification, type NotificationProps, type NotificationVariant, NumberInput, type NumberInputProps, type NumberInputSize, type NumberInputVariant, OTPInput, type OTPInputProps, Pagination, type PaginationProps, Popover, type PopoverProps, ProgressBar, type ProgressBarProps, type ProgressBarSize, ProgressCircle, type ProgressCircleProps, 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, Spinner, type SpinnerProps, type SpinnerSize, 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 };
3429
+ export { Accordion, AccordionItem, type AccordionItemProps, type AccordionProps, Alert, type AlertProps, type AlertVariant, AppSidebar, type AppSidebarProps, Avatar, type AvatarProps, type AvatarSize, Badge, type BadgeProps, 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, 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 EmptyStateProps, FileUpload, type FileUploadProps, 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, Popover, type PopoverProps, ProgressBar, type ProgressBarProps, type ProgressBarSize, ProgressCircle, type ProgressCircleProps, 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, Spinner, type SpinnerProps, type SpinnerSize, 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 };