@zvoove/unity-ui 2.22.1 → 2.23.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.
@@ -55,7 +55,7 @@ export declare interface AccordionProps<T extends readonly AccordionItem[] = rea
55
55
  }
56
56
 
57
57
  export declare const ActionCard: {
58
- ({ header, children, footer }: ActionCardProps): JSX.Element;
58
+ ({ header, children, footer, isOpen, expandable, onExpandToggle, }: ActionCardProps): JSX.Element;
59
59
  displayName: string;
60
60
  };
61
61
 
@@ -74,6 +74,21 @@ export declare interface ActionCardProps {
74
74
  * nodes (typically action buttons).
75
75
  */
76
76
  footer?: ReactNode;
77
+ /**
78
+ * Whether the ActionCard is expandable.
79
+ * @default false
80
+ */
81
+ expandable?: boolean;
82
+ /**
83
+ * Whether the ActionCard is open or closed.
84
+ * @default true
85
+ */
86
+ isOpen?: boolean;
87
+ /**
88
+ * Called when the header is clicked in expandable mode.
89
+ * Required when using `isOpen` (controlled) so the parent can update its state.
90
+ */
91
+ onExpandToggle?: () => void;
77
92
  }
78
93
 
79
94
  export declare interface ActionConfirmation {
@@ -107,7 +122,7 @@ export declare type AlignItems = 'stretch' | 'flex-start' | 'flex-end' | 'center
107
122
  */
108
123
  export declare type AnnouncementType = 'added' | 'removed' | 'cleared' | 'component-error' | 'count-changed';
109
124
 
110
- export declare const Avatar: ({ size, type, name, image, initialsAmount, variant, }: AvatarProps) => JSX.Element;
125
+ export declare const Avatar: ({ size, type: typeProp, name, image, initialsAmount, variant, }: AvatarProps) => JSX.Element;
111
126
 
112
127
  declare const AVATAR_SIZES: {
113
128
  readonly SMALL: "small";
@@ -164,7 +179,7 @@ declare type AvatarSize = (typeof AVATAR_SIZES)[keyof typeof AVATAR_SIZES];
164
179
 
165
180
  declare type AxisVariant = 'X' | 'Y';
166
181
 
167
- export declare type BackgroundColors = 'background' | 'primary' | 'primary-hover' | 'primary-active' | 'secondary' | 'tertiary' | 'primary-container' | 'secondary-container' | 'tertiary-container' | 'tertiary-container-hover' | 'tertiary-container-active' | 'primary-fixed' | 'primary-fixed-dim' | 'secondary-fixed' | 'secondary-fixed-dim' | 'tertiary-fixed' | 'tertiary-fixed-dim' | 'surface' | 'surface-bright' | 'surface-dim' | 'surface-variant' | 'surface-container-lowest' | 'surface-container-low' | 'surface-container' | 'surface-container-high' | 'surface-container-highest' | 'error' | 'error-container' | 'inverse-surface' | 'inverse-on-surface' | 'inverse-primary' | 'scrim' | 'yellow' | 'dark-yellow' | 'yellow-container' | 'green' | 'dark-green' | 'green-container' | 'pink' | 'dark-pink' | 'pink-container' | 'steel-blue' | 'dark-steel-blue' | 'steel-blue-container';
182
+ export declare type BackgroundColors = 'background' | 'outline' | 'outline-variant' | 'outline-low' | 'primary' | 'primary-hover' | 'primary-active' | 'secondary' | 'tertiary' | 'primary-container' | 'secondary-container' | 'tertiary-container' | 'tertiary-container-hover' | 'tertiary-container-active' | 'primary-fixed' | 'primary-fixed-dim' | 'secondary-fixed' | 'secondary-fixed-dim' | 'tertiary-fixed' | 'tertiary-fixed-dim' | 'surface' | 'surface-bright' | 'surface-dim' | 'surface-variant' | 'surface-container-lowest' | 'surface-container-low' | 'surface-container' | 'surface-container-high' | 'surface-container-highest' | 'error' | 'error-container' | 'inverse-surface' | 'inverse-on-surface' | 'inverse-primary' | 'scrim' | 'yellow' | 'dark-yellow' | 'yellow-container' | 'green' | 'dark-green' | 'green-container' | 'pink' | 'dark-pink' | 'pink-container' | 'steel-blue' | 'dark-steel-blue' | 'steel-blue-container';
168
183
 
169
184
  export declare const Badge: ({ children, variant, content, dot, }: BadgeProps) => JSX.Element;
170
185
 
@@ -187,7 +202,7 @@ export declare interface BadgeProps {
187
202
  dot?: boolean;
188
203
  }
189
204
 
190
- export declare const Breadcrumbs: <T extends default_2.ElementType = "a">({ items, linkComponent: LinkComponent, }: BreadcrumbsProps<T>) => JSX.Element;
205
+ export declare const Breadcrumbs: <T extends default_2.ElementType = "a">({ items, linkComponent: LinkComponent, homeIcon, }: BreadcrumbsProps<T>) => JSX.Element;
191
206
 
192
207
  export declare type BreadcrumbsItem<T extends React.ElementType = 'a'> = {
193
208
  label: string;
@@ -205,6 +220,11 @@ export declare type BreadcrumbsProps<T extends React.ElementType = 'a'> = {
205
220
  * @default 'a'
206
221
  */
207
222
  linkComponent?: T | 'a';
223
+ /**
224
+ * The icon name for the home (first) breadcrumb item
225
+ * @default 'home'
226
+ */
227
+ homeIcon?: CommonIconNames;
208
228
  };
209
229
 
210
230
  declare const BREAKPOINTS: {
@@ -287,6 +307,11 @@ export declare interface CardProps extends React.HTMLAttributes<HTMLDivElement>
287
307
  * Only used when `header` is provided.
288
308
  */
289
309
  headerBgColor?: BackgroundColors;
310
+ /**
311
+ * Whether to hide the border-bottom separator in the header area.
312
+ * @default false
313
+ */
314
+ hideHeaderBorder?: boolean;
290
315
  /**
291
316
  * Content rendered below the body.
292
317
  * Receives no extra styling — the consumer controls its appearance.
@@ -592,6 +617,7 @@ export declare const commonIconsMap: {
592
617
  readonly archive: Icon_2;
593
618
  readonly 'arrow-back': Icon_2;
594
619
  readonly 'arrow-bend': Icon_2;
620
+ readonly 'arrow-elbow-down-left': Icon_2;
595
621
  readonly 'arrow-down': Icon_2;
596
622
  readonly 'arrow-forward': Icon_2;
597
623
  readonly 'arrow-left-right': Icon_2;
@@ -616,6 +642,8 @@ export declare const commonIconsMap: {
616
642
  readonly 'cash-money': Icon_2;
617
643
  readonly certificate: Icon_2;
618
644
  readonly 'chat-bubble': Icon_2;
645
+ readonly 'chat-dots': Icon_2;
646
+ readonly 'chat-slash': Icon_2;
619
647
  readonly chats: Icon_2;
620
648
  readonly check: Icon_2;
621
649
  readonly 'check-circle': Icon_2;
@@ -634,8 +662,13 @@ export declare const commonIconsMap: {
634
662
  readonly 'cloud-upload': Icon_2;
635
663
  readonly 'clock-countdown': Icon_2;
636
664
  readonly 'clock-person': Icon_2;
665
+ readonly command: Icon_2;
637
666
  readonly columns: Icon_2;
667
+ readonly control: Icon_2;
638
668
  readonly copy: Icon_2;
669
+ readonly 'currency-dollar': Icon_2;
670
+ readonly 'currency-dollar-circle': Icon_2;
671
+ readonly 'currency-gbp': Icon_2;
639
672
  readonly 'dark-mode': Icon_2;
640
673
  readonly deactivate: Icon_2;
641
674
  readonly delete: Icon_2;
@@ -649,12 +682,60 @@ export declare const commonIconsMap: {
649
682
  readonly expenses: Icon_2;
650
683
  readonly 'face-id': Icon_2;
651
684
  readonly file: Icon_2;
685
+ readonly 'simple-file-archive': Icon_2;
686
+ readonly 'simple-file-audio': Icon_2;
687
+ readonly 'simple-file-c': Icon_2;
688
+ readonly 'simple-file-c-sharp': Icon_2;
689
+ readonly 'simple-file-code': Icon_2;
690
+ readonly 'simple-file-cpp': Icon_2;
691
+ readonly 'simple-file-css': Icon_2;
692
+ readonly 'simple-file-csv': Icon_2;
693
+ readonly 'simple-file-doc': Icon_2;
694
+ readonly 'simple-file-html': Icon_2;
695
+ readonly 'simple-file-image': Icon_2;
696
+ readonly 'simple-file-ini': Icon_2;
697
+ readonly 'simple-file-jpg': Icon_2;
698
+ readonly 'simple-file-js': Icon_2;
699
+ readonly 'simple-file-jsx': Icon_2;
700
+ readonly 'simple-file-md': Icon_2;
701
+ readonly 'simple-file-pdf': Icon_2;
702
+ readonly 'simple-file-png': Icon_2;
703
+ readonly 'simple-file-ppt': Icon_2;
704
+ readonly 'simple-file-py': Icon_2;
705
+ readonly 'simple-file-rs': Icon_2;
706
+ readonly 'simple-file-sql': Icon_2;
707
+ readonly 'simple-file-svg': Icon_2;
708
+ readonly 'simple-file-ts': Icon_2;
709
+ readonly 'simple-file-tsx': Icon_2;
710
+ readonly 'simple-file-text': Icon_2;
711
+ readonly 'simple-file-txt': Icon_2;
712
+ readonly 'simple-file-video': Icon_2;
713
+ readonly 'simple-file-vue': Icon_2;
714
+ readonly 'simple-file-xls': Icon_2;
715
+ readonly 'simple-file-zip': Icon_2;
652
716
  readonly filter: Icon_2;
653
717
  readonly filters: Icon_2;
654
718
  readonly 'first-page': Icon_2;
719
+ readonly 'flag-de': ({ size }: {
720
+ size?: number;
721
+ }) => JSX.Element;
722
+ readonly 'flag-es': ({ size }: {
723
+ size?: number;
724
+ }) => JSX.Element;
725
+ readonly 'flag-fr': ({ size }: {
726
+ size?: number;
727
+ }) => JSX.Element;
728
+ readonly 'flag-gb': ({ size }: {
729
+ size?: number;
730
+ }) => JSX.Element;
731
+ readonly 'flag-nl': ({ size }: {
732
+ size?: number;
733
+ }) => JSX.Element;
655
734
  readonly folder: Icon_2;
735
+ readonly 'folder-open': Icon_2;
656
736
  readonly 'grid-view': Icon_2;
657
737
  readonly 'hard-hat': Icon_2;
738
+ readonly 'head-circuit': Icon_2;
658
739
  readonly help: Icon_2;
659
740
  readonly hide: Icon_2;
660
741
  readonly home: Icon_2;
@@ -662,6 +743,7 @@ export declare const commonIconsMap: {
662
743
  readonly info: Icon_2;
663
744
  readonly invoice: Icon_2;
664
745
  readonly job: Icon_2;
746
+ readonly 'key-return': Icon_2;
665
747
  readonly keyboard: Icon_2;
666
748
  readonly knowledge: Icon_2;
667
749
  readonly language: Icon_2;
@@ -671,6 +753,8 @@ export declare const commonIconsMap: {
671
753
  readonly location: Icon_2;
672
754
  readonly 'location-pin': Icon_2;
673
755
  readonly lock: Icon_2;
756
+ readonly 'lock-key': Icon_2;
757
+ readonly 'lock-key-open': Icon_2;
674
758
  readonly menu: Icon_2;
675
759
  readonly metadata: Icon_2;
676
760
  readonly code: Icon_2;
@@ -683,12 +767,17 @@ export declare const commonIconsMap: {
683
767
  readonly notifications: Icon_2;
684
768
  readonly note: Icon_2;
685
769
  readonly numpad: Icon_2;
770
+ readonly option: Icon_2;
686
771
  readonly 'open-in-new-tab': Icon_2;
687
772
  readonly order: Icon_2;
688
773
  readonly organization: Icon_2;
689
774
  readonly pause: Icon_2;
690
775
  readonly attachment: Icon_2;
691
776
  readonly phone: Icon_2;
777
+ readonly pin: Icon_2;
778
+ readonly 'pin-simple': Icon_2;
779
+ readonly 'pin-simple-slash': Icon_2;
780
+ readonly 'pin-slash': Icon_2;
692
781
  readonly 'piggy-bank': Icon_2;
693
782
  readonly plant: Icon_2;
694
783
  readonly printer: Icon_2;
@@ -696,6 +785,7 @@ export declare const commonIconsMap: {
696
785
  readonly 'qr-code': Icon_2;
697
786
  readonly refresh: Icon_2;
698
787
  readonly remark: Icon_2;
788
+ readonly robot: Icon_2;
699
789
  readonly save: Icon_2;
700
790
  readonly search: Icon_2;
701
791
  readonly 'send-message': Icon_2;
@@ -767,6 +857,17 @@ export declare interface ContentBlockProps {
767
857
  children: ReactNode;
768
858
  }
769
859
 
860
+ export declare type CustomCommonIconNames = keyof typeof customCommonIconsMap;
861
+
862
+ /**
863
+ * Custom common icons — brand/product icons not from Phosphor.
864
+ * Unlike Phosphor icons, these accept a `color` prop to switch between
865
+ * their default duotone brand colors and a single inherited color.
866
+ */
867
+ export declare const customCommonIconsMap: {
868
+ readonly zvoove: ({ size, color }: ZvoooveLogoProps) => JSX.Element;
869
+ };
870
+
770
871
  declare interface CustomIconProps {
771
872
  /**
772
873
  * The type of the icon. <br />
@@ -948,13 +1049,19 @@ declare const direction: {
948
1049
  readonly NONE: "none";
949
1050
  };
950
1051
 
951
- export declare const Divider: ({ variant }: DividerProps) => JSX.Element;
1052
+ export declare const Divider: ({ variant, color, }: DividerProps) => JSX.Element;
952
1053
 
953
1054
  export declare interface DividerProps {
954
1055
  /**
955
1056
  * The variant to use.
956
1057
  */
957
1058
  variant?: 'fullWidth' | 'inset' | 'middle';
1059
+ /**
1060
+ * The color of the divider.
1061
+ * Accepts any background color token name.
1062
+ * @default 'outline-variant'
1063
+ */
1064
+ color?: BackgroundColors;
958
1065
  }
959
1066
 
960
1067
  export declare const Expandable: {
@@ -1176,7 +1283,117 @@ export declare type FlexResponsiveStylesKeys<Attr extends string> = GenerateSimp
1176
1283
 
1177
1284
  export declare type FlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';
1178
1285
 
1179
- export declare type ForegroundColors = 'primary' | 'secondary' | 'tertiary' | 'yellow' | 'green' | 'pink' | 'steel-blue' | 'dark-yellow' | 'dark-green' | 'dark-pink' | 'dark-steel-blue' | 'inverse-on-surface' | 'on-primary' | 'on-secondary' | 'on-tertiary' | 'on-primary-container' | 'on-secondary-container' | 'on-tertiary-container' | 'on-primary-fixed' | 'on-primary-fixed-variant' | 'on-secondary-fixed' | 'on-secondary-fixed-variant' | 'on-tertiary-fixed' | 'on-tertiary-fixed-variant' | 'on-surface' | 'on-surface-variant' | 'on-error' | 'on-error-container' | 'on-yellow' | 'on-dark-yellow' | 'on-yellow-container' | 'on-green' | 'on-dark-green' | 'on-green-container' | 'on-pink' | 'on-dark-pink' | 'on-pink-container' | 'on-steel-blue' | 'on-dark-steel-blue' | 'on-steel-blue-container' | 'error' | 'on-scrim';
1286
+ export declare const FloatSearch: {
1287
+ ({ open, onClose, items, onSearch, onSelect, value, placeholder, translations: translationsProp, zIndex, loading, }: FloatSearchProps): ReactPortal | null;
1288
+ displayName: string;
1289
+ };
1290
+
1291
+ export declare interface FloatSearchItem {
1292
+ /**
1293
+ * Unique identifier for the item.
1294
+ */
1295
+ id: string;
1296
+ /**
1297
+ * Display label shown in the result row.
1298
+ */
1299
+ label: string;
1300
+ /**
1301
+ * Type of the item — determines the icon rendered on the left.
1302
+ */
1303
+ type: 'chat' | 'project';
1304
+ /**
1305
+ * Secondary metadata shown right-aligned (e.g. "Heute", "24 Chats").
1306
+ */
1307
+ meta?: string;
1308
+ }
1309
+
1310
+ export declare interface FloatSearchProps {
1311
+ /**
1312
+ * Controls whether the search overlay is visible.
1313
+ */
1314
+ open: boolean;
1315
+ /**
1316
+ * Called when the overlay should close (backdrop click, Esc, or clear button).
1317
+ */
1318
+ onClose: () => void;
1319
+ /**
1320
+ * Items to display in the result list.
1321
+ */
1322
+ items?: FloatSearchItem[];
1323
+ /**
1324
+ * Called whenever the search query changes.
1325
+ */
1326
+ onSearch?: (query: string) => void;
1327
+ /**
1328
+ * Called when the user confirms a result (Enter key or click).
1329
+ */
1330
+ onSelect?: (item: FloatSearchItem) => void;
1331
+ /**
1332
+ * Controlled search query value. When provided, the input becomes controlled.
1333
+ */
1334
+ value?: string;
1335
+ /**
1336
+ * Placeholder text for the search input.
1337
+ * @default 'Chats und Projekte durchsuchen'
1338
+ * @deprecated Use `translations.placeholder` instead.
1339
+ */
1340
+ placeholder?: string;
1341
+ /**
1342
+ * Override translatable UI strings. All keys are optional — missing keys fall back to German defaults.
1343
+ */
1344
+ translations?: FloatSearchTranslations;
1345
+ /**
1346
+ * z-index of the overlay.
1347
+ * @default 20
1348
+ */
1349
+ zIndex?: number;
1350
+ /**
1351
+ * When `true`, displays skeleton placeholders instead of the result list.
1352
+ * Use this while fetching search results asynchronously.
1353
+ * @default false
1354
+ */
1355
+ loading?: boolean;
1356
+ }
1357
+
1358
+ export declare interface FloatSearchTranslations {
1359
+ /**
1360
+ * Placeholder text for the search input.
1361
+ * @default 'Chats und Projekte durchsuchen'
1362
+ */
1363
+ placeholder?: string;
1364
+ /**
1365
+ * Aria-label for the clear-query button.
1366
+ * @default 'Suche zurücksetzen'
1367
+ */
1368
+ clearAriaLabel?: string;
1369
+ /**
1370
+ * Aria-label for the close button.
1371
+ * @default 'Suche schließen'
1372
+ */
1373
+ closeAriaLabel?: string;
1374
+ /**
1375
+ * Text shown when no results match the query.
1376
+ * @default 'Keine Ergebnisse gefunden'
1377
+ */
1378
+ noResults?: string;
1379
+ /**
1380
+ * Footer hint label for arrow-key navigation.
1381
+ * @default 'navigieren'
1382
+ */
1383
+ navigate?: string;
1384
+ /**
1385
+ * Footer hint label for the Enter key action.
1386
+ * @default 'öffnen'
1387
+ */
1388
+ open?: string;
1389
+ /**
1390
+ * Footer hint label for the Escape key action.
1391
+ * @default 'schließen'
1392
+ */
1393
+ close?: string;
1394
+ }
1395
+
1396
+ export declare type ForegroundColors = 'primary' | 'secondary' | 'tertiary' | 'yellow' | 'green' | 'pink' | 'steel-blue' | 'dark-yellow' | 'dark-green' | 'dark-pink' | 'dark-steel-blue' | 'inverse-on-surface' | 'on-primary' | 'on-secondary' | 'on-tertiary' | 'on-primary-container' | 'on-secondary-container' | 'on-tertiary-container' | 'on-primary-fixed' | 'on-primary-fixed-variant' | 'on-secondary-fixed' | 'on-secondary-fixed-variant' | 'on-tertiary-fixed' | 'on-tertiary-fixed-variant' | 'on-surface' | 'on-surface-variant' | 'on-surface-variant-lowest' | 'on-error' | 'on-error-container' | 'on-yellow' | 'on-dark-yellow' | 'on-yellow-container' | 'on-green' | 'on-dark-green' | 'on-green-container' | 'on-pink' | 'on-dark-pink' | 'on-pink-container' | 'on-steel-blue' | 'on-dark-steel-blue' | 'on-steel-blue-container' | 'error' | 'on-scrim';
1180
1397
 
1181
1398
  export declare const FormLabel: ({ value, required, htmlFor, ...props }: FormLabelProps) => JSX.Element;
1182
1399
 
@@ -1311,6 +1528,7 @@ export declare interface GridProps extends React.HTMLAttributes<HTMLDivElement>
1311
1528
  export declare const Icon: ({ name, size, weight, color, type, featured, ...props }: IconProps) => JSX.Element;
1312
1529
 
1313
1530
  declare const iconMap: {
1531
+ readonly zvoove: ({ size, color }: ZvoooveLogoProps) => JSX.Element;
1314
1532
  readonly add: Icon_2;
1315
1533
  readonly 'add-circle': Icon_2;
1316
1534
  readonly 'add-file': Icon_2;
@@ -1319,6 +1537,7 @@ declare const iconMap: {
1319
1537
  readonly archive: Icon_2;
1320
1538
  readonly 'arrow-back': Icon_2;
1321
1539
  readonly 'arrow-bend': Icon_2;
1540
+ readonly 'arrow-elbow-down-left': Icon_2;
1322
1541
  readonly 'arrow-down': Icon_2;
1323
1542
  readonly 'arrow-forward': Icon_2;
1324
1543
  readonly 'arrow-left-right': Icon_2;
@@ -1343,6 +1562,8 @@ declare const iconMap: {
1343
1562
  readonly 'cash-money': Icon_2;
1344
1563
  readonly certificate: Icon_2;
1345
1564
  readonly 'chat-bubble': Icon_2;
1565
+ readonly 'chat-dots': Icon_2;
1566
+ readonly 'chat-slash': Icon_2;
1346
1567
  readonly chats: Icon_2;
1347
1568
  readonly check: Icon_2;
1348
1569
  readonly 'check-circle': Icon_2;
@@ -1361,8 +1582,13 @@ declare const iconMap: {
1361
1582
  readonly 'cloud-upload': Icon_2;
1362
1583
  readonly 'clock-countdown': Icon_2;
1363
1584
  readonly 'clock-person': Icon_2;
1585
+ readonly command: Icon_2;
1364
1586
  readonly columns: Icon_2;
1587
+ readonly control: Icon_2;
1365
1588
  readonly copy: Icon_2;
1589
+ readonly 'currency-dollar': Icon_2;
1590
+ readonly 'currency-dollar-circle': Icon_2;
1591
+ readonly 'currency-gbp': Icon_2;
1366
1592
  readonly 'dark-mode': Icon_2;
1367
1593
  readonly deactivate: Icon_2;
1368
1594
  readonly delete: Icon_2;
@@ -1376,12 +1602,60 @@ declare const iconMap: {
1376
1602
  readonly expenses: Icon_2;
1377
1603
  readonly 'face-id': Icon_2;
1378
1604
  readonly file: Icon_2;
1605
+ readonly 'simple-file-archive': Icon_2;
1606
+ readonly 'simple-file-audio': Icon_2;
1607
+ readonly 'simple-file-c': Icon_2;
1608
+ readonly 'simple-file-c-sharp': Icon_2;
1609
+ readonly 'simple-file-code': Icon_2;
1610
+ readonly 'simple-file-cpp': Icon_2;
1611
+ readonly 'simple-file-css': Icon_2;
1612
+ readonly 'simple-file-csv': Icon_2;
1613
+ readonly 'simple-file-doc': Icon_2;
1614
+ readonly 'simple-file-html': Icon_2;
1615
+ readonly 'simple-file-image': Icon_2;
1616
+ readonly 'simple-file-ini': Icon_2;
1617
+ readonly 'simple-file-jpg': Icon_2;
1618
+ readonly 'simple-file-js': Icon_2;
1619
+ readonly 'simple-file-jsx': Icon_2;
1620
+ readonly 'simple-file-md': Icon_2;
1621
+ readonly 'simple-file-pdf': Icon_2;
1622
+ readonly 'simple-file-png': Icon_2;
1623
+ readonly 'simple-file-ppt': Icon_2;
1624
+ readonly 'simple-file-py': Icon_2;
1625
+ readonly 'simple-file-rs': Icon_2;
1626
+ readonly 'simple-file-sql': Icon_2;
1627
+ readonly 'simple-file-svg': Icon_2;
1628
+ readonly 'simple-file-ts': Icon_2;
1629
+ readonly 'simple-file-tsx': Icon_2;
1630
+ readonly 'simple-file-text': Icon_2;
1631
+ readonly 'simple-file-txt': Icon_2;
1632
+ readonly 'simple-file-video': Icon_2;
1633
+ readonly 'simple-file-vue': Icon_2;
1634
+ readonly 'simple-file-xls': Icon_2;
1635
+ readonly 'simple-file-zip': Icon_2;
1379
1636
  readonly filter: Icon_2;
1380
1637
  readonly filters: Icon_2;
1381
1638
  readonly 'first-page': Icon_2;
1639
+ readonly 'flag-de': ({ size }: {
1640
+ size?: number;
1641
+ }) => JSX.Element;
1642
+ readonly 'flag-es': ({ size }: {
1643
+ size?: number;
1644
+ }) => JSX.Element;
1645
+ readonly 'flag-fr': ({ size }: {
1646
+ size?: number;
1647
+ }) => JSX.Element;
1648
+ readonly 'flag-gb': ({ size }: {
1649
+ size?: number;
1650
+ }) => JSX.Element;
1651
+ readonly 'flag-nl': ({ size }: {
1652
+ size?: number;
1653
+ }) => JSX.Element;
1382
1654
  readonly folder: Icon_2;
1655
+ readonly 'folder-open': Icon_2;
1383
1656
  readonly 'grid-view': Icon_2;
1384
1657
  readonly 'hard-hat': Icon_2;
1658
+ readonly 'head-circuit': Icon_2;
1385
1659
  readonly help: Icon_2;
1386
1660
  readonly hide: Icon_2;
1387
1661
  readonly home: Icon_2;
@@ -1389,6 +1663,7 @@ declare const iconMap: {
1389
1663
  readonly info: Icon_2;
1390
1664
  readonly invoice: Icon_2;
1391
1665
  readonly job: Icon_2;
1666
+ readonly 'key-return': Icon_2;
1392
1667
  readonly keyboard: Icon_2;
1393
1668
  readonly knowledge: Icon_2;
1394
1669
  readonly language: Icon_2;
@@ -1398,6 +1673,8 @@ declare const iconMap: {
1398
1673
  readonly location: Icon_2;
1399
1674
  readonly 'location-pin': Icon_2;
1400
1675
  readonly lock: Icon_2;
1676
+ readonly 'lock-key': Icon_2;
1677
+ readonly 'lock-key-open': Icon_2;
1401
1678
  readonly menu: Icon_2;
1402
1679
  readonly metadata: Icon_2;
1403
1680
  readonly code: Icon_2;
@@ -1410,12 +1687,17 @@ declare const iconMap: {
1410
1687
  readonly notifications: Icon_2;
1411
1688
  readonly note: Icon_2;
1412
1689
  readonly numpad: Icon_2;
1690
+ readonly option: Icon_2;
1413
1691
  readonly 'open-in-new-tab': Icon_2;
1414
1692
  readonly order: Icon_2;
1415
1693
  readonly organization: Icon_2;
1416
1694
  readonly pause: Icon_2;
1417
1695
  readonly attachment: Icon_2;
1418
1696
  readonly phone: Icon_2;
1697
+ readonly pin: Icon_2;
1698
+ readonly 'pin-simple': Icon_2;
1699
+ readonly 'pin-simple-slash': Icon_2;
1700
+ readonly 'pin-slash': Icon_2;
1419
1701
  readonly 'piggy-bank': Icon_2;
1420
1702
  readonly plant: Icon_2;
1421
1703
  readonly printer: Icon_2;
@@ -1423,6 +1705,7 @@ declare const iconMap: {
1423
1705
  readonly 'qr-code': Icon_2;
1424
1706
  readonly refresh: Icon_2;
1425
1707
  readonly remark: Icon_2;
1708
+ readonly robot: Icon_2;
1426
1709
  readonly save: Icon_2;
1427
1710
  readonly search: Icon_2;
1428
1711
  readonly 'send-message': Icon_2;
@@ -1605,16 +1888,12 @@ declare type LabelStates = {
1605
1888
  off: string;
1606
1889
  };
1607
1890
 
1608
- export declare type Margin = SpacingKeys | {
1609
- top?: SpacingKeys;
1610
- right?: SpacingKeys;
1611
- bottom?: SpacingKeys;
1612
- left?: SpacingKeys;
1613
- x?: SpacingKeys;
1614
- y?: SpacingKeys;
1891
+ export declare const ListMenu: {
1892
+ <T extends default_2.ElementType = "a">({ items, activeItem, open, variant, linkComponent, onItemClick, }: ListMenuProps<T>): JSX.Element;
1893
+ displayName: string;
1615
1894
  };
1616
1895
 
1617
- export declare type MenuItem<T extends React.ElementType = 'a'> = {
1896
+ export declare type ListMenuItem<T extends React.ElementType = 'a'> = {
1618
1897
  /**
1619
1898
  * The label of the menu item
1620
1899
  */
@@ -1626,9 +1905,69 @@ export declare type MenuItem<T extends React.ElementType = 'a'> = {
1626
1905
  /**
1627
1906
  * The icon of the menu item
1628
1907
  */
1629
- icon: CommonIconNames | React.ReactElement;
1908
+ icon?: CommonIconNames | CustomCommonIconNames | React.ReactElement;
1909
+ /**
1910
+ * Extra content rendered at the end of the label area (e.g. a tag, badge, or action button)
1911
+ */
1912
+ endContent?: React.ReactNode;
1913
+ /**
1914
+ * When to show the end content
1915
+ * @default 'always'
1916
+ */
1917
+ endContentVisibility?: 'always' | 'hover';
1918
+ /**
1919
+ * Renders a spacer instead of a menu item.
1920
+ * @default false
1921
+ */
1922
+ isSpacer?: boolean;
1630
1923
  } & Omit<React.ComponentPropsWithoutRef<T>, 'children'>;
1631
1924
 
1925
+ export declare type ListMenuProps<T extends React.ElementType = 'a'> = {
1926
+ /**
1927
+ * The list of menu items
1928
+ */
1929
+ items: ListMenuItem<T>[];
1930
+ /**
1931
+ * The active item must match the id of the menu item
1932
+ */
1933
+ activeItem?: string;
1934
+ /**
1935
+ * Whether the menu is expanded (showing labels)
1936
+ * @default true
1937
+ */
1938
+ open?: boolean;
1939
+ /**
1940
+ * The visual variant of the menu
1941
+ * @default 'default'
1942
+ */
1943
+ variant?: ListMenuVariant;
1944
+ /**
1945
+ * The component to render for the link
1946
+ * @default 'a'
1947
+ */
1948
+ linkComponent?: T | 'a';
1949
+ /**
1950
+ * The callback to handle the item click
1951
+ */
1952
+ onItemClick?: (item: ListMenuItem<T>) => void;
1953
+ };
1954
+
1955
+ export declare type ListMenuVariant = 'default' | 'compact';
1956
+
1957
+ export declare type Margin = SpacingKeys | {
1958
+ top?: SpacingKeys;
1959
+ right?: SpacingKeys;
1960
+ bottom?: SpacingKeys;
1961
+ left?: SpacingKeys;
1962
+ x?: SpacingKeys;
1963
+ y?: SpacingKeys;
1964
+ };
1965
+
1966
+ /**
1967
+ * @deprecated Use `ListMenuItem` instead
1968
+ */
1969
+ export declare type MenuItem<T extends React.ElementType = 'a'> = ListMenuItem<T>;
1970
+
1632
1971
  export declare interface MessageAction {
1633
1972
  /**
1634
1973
  * The icon to display for this action.
@@ -1695,6 +2034,37 @@ export declare interface MessageActionsProps {
1695
2034
 
1696
2035
  export declare type MessageActionsVariant = 'sender' | 'receiver';
1697
2036
 
2037
+ export declare type MidSection<T extends React.ElementType = 'a'> = {
2038
+ /**
2039
+ * The title of the section
2040
+ */
2041
+ title?: string;
2042
+ /**
2043
+ * Whether to show a divider above the section
2044
+ * @default true
2045
+ */
2046
+ showDivider?: boolean;
2047
+ /**
2048
+ * The list of items in the section
2049
+ */
2050
+ items: ListMenuItem<T>[];
2051
+ /**
2052
+ * Whether to hide the entire section when the menu is closed
2053
+ * @default false
2054
+ */
2055
+ hideOnMenuClosed?: boolean;
2056
+ /**
2057
+ * Highlights the section with a background color and rounded corners.
2058
+ * @default false
2059
+ */
2060
+ highlight?: boolean;
2061
+ /**
2062
+ * When set, the section collapses into this icon when the menu is closed.
2063
+ * On hover, a PopUpMenu opens revealing the section items.
2064
+ */
2065
+ replaceWithIconOnClose?: CommonIconNames;
2066
+ };
2067
+
1698
2068
  declare type NonNullable_2<T> = Exclude<T, null | undefined>;
1699
2069
  export { NonNullable_2 as NonNullable }
1700
2070
 
@@ -1760,7 +2130,7 @@ declare type Panel = {
1760
2130
  children: React.ReactNode;
1761
2131
  };
1762
2132
 
1763
- export declare const PopUpMenu: ({ children, placement, disabled, trigger, density, closeOnItemClick, items, onItemClick, selectedItem, selectable, open, onClose, closeOnClickOutside, closeOnEscape, toggleOnClick, queryHighlight, showSearch, searchPlaceholder, allowClearAll, allowSelectAll, selectAllLabel, clearAllLabel, noResultsFoundMessage, onClearAllOrSelectAllClick, searchMode, onSearchChange, isLoading, wrapperWidth, onScrollEnd, isLoadingMore, ...props }: PopUpMenuProps) => JSX.Element;
2133
+ export declare const PopUpMenu: ({ children, placement, disabled, trigger, density, closeOnItemClick, items, onItemClick, selectedItem, selectable, open, onClose, closeOnClickOutside, closeOnEscape, toggleOnClick, queryHighlight, showSearch, searchPlaceholder, allowClearAll, allowSelectAll, selectAllLabel, clearAllLabel, noResultsFoundMessage, onClearAllOrSelectAllClick, searchMode, onSearchChange, isLoading, wrapperWidth, onScrollEnd, isLoadingMore, height, minHeight, maxHeight, ...props }: PopUpMenuProps) => JSX.Element;
1764
2134
 
1765
2135
  export declare type PopUpMenuItem<T extends React.ElementType = 'button'> = UnionAs_2 & {
1766
2136
  /**
@@ -1770,9 +2140,29 @@ export declare type PopUpMenuItem<T extends React.ElementType = 'button'> = Unio
1770
2140
  id: string;
1771
2141
  /**
1772
2142
  * The label of the item
1773
- * @required
2143
+ * @required (ignored when isDivider is true)
1774
2144
  */
1775
2145
  label: string;
2146
+ /**
2147
+ * Whether the item is a visual divider
2148
+ * @default false
2149
+ */
2150
+ isDivider?: boolean;
2151
+ /**
2152
+ * Props passed to the Divider component
2153
+ * Only used when `isDivider` is true
2154
+ */
2155
+ dividerProps?: DividerProps;
2156
+ /**
2157
+ * Custom ReactNode to render instead of the label.
2158
+ * When set, the item becomes non-interactive (not clickable, not focusable).
2159
+ */
2160
+ customContent?: React.ReactNode;
2161
+ /**
2162
+ * Whether the menu should stay open when this item is clicked
2163
+ * @default false
2164
+ */
2165
+ keepOpen?: boolean;
1776
2166
  /**
1777
2167
  * The callback function that is called when the item is clicked
1778
2168
  */
@@ -1787,6 +2177,11 @@ export declare type PopUpMenuItem<T extends React.ElementType = 'button'> = Unio
1787
2177
  * @default false
1788
2178
  */
1789
2179
  disabled?: boolean;
2180
+ /**
2181
+ * Sub-menu items displayed in a nested PopUpMenu when the item is hovered.
2182
+ * Opens to the right of the item (or left if no space).
2183
+ */
2184
+ subMenuItems?: PopUpMenuItem[];
1790
2185
  /**
1791
2186
  * The custom component to be used for the item <br />
1792
2187
  * `as` is ignored when `linkComponent` is set
@@ -1795,7 +2190,7 @@ export declare type PopUpMenuItem<T extends React.ElementType = 'button'> = Unio
1795
2190
  linkComponent?: T;
1796
2191
  } & Omit<React.ComponentProps<T>, 'className' | 'ref' | 'role' | 'tabIndex' | 'onClick' | 'disabled'>;
1797
2192
 
1798
- declare type PopUpMenuPlacement = 'top' | 'bottom' | 'left' | 'right' | 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right' | 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom';
2193
+ export declare type PopUpMenuPlacement = 'top' | 'bottom' | 'left' | 'right' | 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right' | 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom';
1799
2194
 
1800
2195
  export declare interface PopUpMenuProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children' | 'className'> {
1801
2196
  /**
@@ -1967,11 +2362,23 @@ export declare interface PopUpMenuProps extends Omit<React.HTMLAttributes<HTMLDi
1967
2362
  * @default false
1968
2363
  */
1969
2364
  isLoadingMore?: boolean;
2365
+ /**
2366
+ * The height of the popup menu content
2367
+ */
2368
+ height?: ResponsiveType<number | string>;
2369
+ /**
2370
+ * The min height of the popup menu content
2371
+ */
2372
+ minHeight?: ResponsiveType<number | string>;
2373
+ /**
2374
+ * The max height of the popup menu content
2375
+ */
2376
+ maxHeight?: ResponsiveType<number | string>;
1970
2377
  }
1971
2378
 
1972
2379
  export declare type PopUpMenuSelectionType = string | string[] | undefined;
1973
2380
 
1974
- export declare const ProgressIndicator: ({ value, indeterminate, variant, }: ProgressIndicatorProps) => JSX.Element;
2381
+ export declare const ProgressIndicator: ({ value, indeterminate, variant, size, foregroundColor, backgroundColor, }: ProgressIndicatorProps) => JSX.Element;
1975
2382
 
1976
2383
  export declare interface ProgressIndicatorProps {
1977
2384
  /**
@@ -1989,6 +2396,19 @@ export declare interface ProgressIndicatorProps {
1989
2396
  * @default 'linear'
1990
2397
  */
1991
2398
  variant?: 'linear' | 'circular';
2399
+ /**
2400
+ * The size of the circular progress indicator. Only applies to the circular variant.
2401
+ * @default 'md'
2402
+ */
2403
+ size?: 'sm' | 'md';
2404
+ /**
2405
+ * Custom color for the progress fill (foreground). Accepts any valid CSS color value.
2406
+ */
2407
+ foregroundColor?: BackgroundColors;
2408
+ /**
2409
+ * Custom color for the progress track (background).
2410
+ */
2411
+ backgroundColor?: BackgroundColors;
1992
2412
  }
1993
2413
 
1994
2414
  export declare const RadioButton: React.FC<RadioButtonProps>;
@@ -2409,21 +2829,54 @@ export declare type SheetProps = UnionPlacement & {
2409
2829
  showBackArrow?: boolean;
2410
2830
  };
2411
2831
 
2412
- export declare const SideNavigation: <T extends React.ElementType = "a">({ menuItems, utilityItems, open, activeItem, onToggleOpen, onItemClick, linkComponent: LinkComponent, }: SideNavigationProps<T>) => JSX.Element;
2832
+ export declare const SideNavigation: <T extends React.ElementType = "a">({ menuItems, utilityItems, midSections, userArea, hideUserAreaInMobile, logo, open, variant, activeItem, onToggleOpen, onItemClick, linkComponent: LinkComponent, }: SideNavigationProps<T>) => JSX.Element;
2413
2833
 
2414
2834
  export declare type SideNavigationProps<T extends React.ElementType = 'a'> = {
2415
2835
  /**
2416
- * The variant of the component
2836
+ * Whether the navigation is expanded
2417
2837
  */
2418
2838
  open?: boolean;
2839
+ /**
2840
+ * The visual variant of the navigation
2841
+ * @default 'default'
2842
+ */
2843
+ variant?: ListMenuVariant;
2844
+ /**
2845
+ * Logo displayed in the top area (compact variant only).
2846
+ * Shows `icon` when collapsed, `icon + name` when expanded.
2847
+ * Both have zvoove defaults if omitted.
2848
+ */
2849
+ logo?: {
2850
+ /**
2851
+ * Small logo icon shown when the sidebar is collapsed.
2852
+ */
2853
+ icon?: ReactNode;
2854
+ /**
2855
+ * Full logo name shown next to the icon when expanded.
2856
+ */
2857
+ name?: ReactNode;
2858
+ };
2419
2859
  /**
2420
2860
  * The list of menu items
2421
2861
  */
2422
- menuItems: MenuItem<T>[];
2862
+ menuItems: ListMenuItem<T>[];
2423
2863
  /**
2424
2864
  * The list of utility items to stay at the bottom of the menu
2425
2865
  */
2426
- utilityItems?: MenuItem<T>[];
2866
+ utilityItems?: ListMenuItem<T>[];
2867
+ /**
2868
+ * Additional sections rendered between menu items and utility items.
2869
+ */
2870
+ midSections?: MidSection<T>[];
2871
+ /**
2872
+ * User area rendered at the bottom of the navigation
2873
+ */
2874
+ userArea?: UserAreaProps;
2875
+ /**
2876
+ * Hide the user area on mobile (useful when it's shown elsewhere, e.g. in a top bar).
2877
+ * @default true
2878
+ */
2879
+ hideUserAreaInMobile?: boolean;
2427
2880
  /**
2428
2881
  * The active item must match the id of the menu item
2429
2882
  */
@@ -2439,9 +2892,14 @@ export declare type SideNavigationProps<T extends React.ElementType = 'a'> = {
2439
2892
  /**
2440
2893
  * The callback to handle the item click
2441
2894
  */
2442
- onItemClick?: (item: MenuItem) => void;
2895
+ onItemClick?: (item: ListMenuItem) => void;
2443
2896
  };
2444
2897
 
2898
+ /**
2899
+ * @deprecated Use `ListMenuVariant` instead
2900
+ */
2901
+ export declare type SideNavigationVariant = ListMenuVariant;
2902
+
2445
2903
  declare type SideVariant = 'Top' | 'Bottom' | 'Left' | 'Right';
2446
2904
 
2447
2905
  export declare type SimpleResponsiveStyles<Attr extends string> = {
@@ -2935,6 +3393,16 @@ export declare interface TextareaProps extends Omit<React.TextareaHTMLAttributes
2935
3393
  * The maximum length of the textarea.
2936
3394
  */
2937
3395
  maxLength?: number;
3396
+ /**
3397
+ * The border radius of the textarea.
3398
+ * @default 'sm'
3399
+ */
3400
+ borderRadius?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
3401
+ /**
3402
+ * Content rendered above the textarea input, separated by a subtle border.
3403
+ * Use to display contextual items such as attached files (e.g. `<Chip type="input" />`).
3404
+ */
3405
+ header?: React.ReactNode;
2938
3406
  /**
2939
3407
  * The actions to display below the textarea.
2940
3408
  */
@@ -3719,6 +4187,56 @@ export declare interface UseBreakpointReturn {
3719
4187
 
3720
4188
  export declare const useClickOutside: <T extends Node = HTMLElement>(refs: RefType<T> | RefType<T>[] | RefType<Node>[], callback: () => void, isOpen?: boolean) => void;
3721
4189
 
4190
+ export declare const UserArea: ForwardRefExoticComponent<UserAreaProps & RefAttributes<HTMLDivElement>>;
4191
+
4192
+ export declare interface UserAreaProps {
4193
+ /**
4194
+ * The user's display name
4195
+ */
4196
+ name: string;
4197
+ /**
4198
+ * Optional subtitle (e.g. role, company)
4199
+ */
4200
+ subtitle?: string;
4201
+ /**
4202
+ * The avatar of the user (see AvatarProps)
4203
+ */
4204
+ avatar: AvatarProps;
4205
+ /**
4206
+ * Whether to display in compact mode (small avatar)
4207
+ * @default false
4208
+ */
4209
+ compact?: boolean;
4210
+ /**
4211
+ * Whether to show the user info text (name and subtitle)
4212
+ * @default true
4213
+ */
4214
+ showInfo?: boolean;
4215
+ /**
4216
+ * Position of the info text relative to the avatar
4217
+ * @default 'right'
4218
+ */
4219
+ infoPosition?: 'left' | 'right';
4220
+ /**
4221
+ * Menu items displayed in a PopUpMenu when the user area is clicked
4222
+ */
4223
+ menuItems?: PopUpMenuItem[];
4224
+ /**
4225
+ * Callback when a menu item is clicked
4226
+ */
4227
+ onItemClick?: (item: PopUpMenuItem) => void;
4228
+ /**
4229
+ * The max height of the popup menu
4230
+ * @default '80dvh'
4231
+ */
4232
+ menuMaxHeight?: ResponsiveType<number | string>;
4233
+ /**
4234
+ * The placement of the popup menu
4235
+ * @default 'top-left'
4236
+ */
4237
+ menuPlacement?: ResponsiveType<PopUpMenuPlacement>;
4238
+ }
4239
+
3722
4240
  export declare const useSheetAnimation: (open: boolean) => {
3723
4241
  mounted: boolean;
3724
4242
  show: boolean;
@@ -3882,4 +4400,37 @@ export declare interface ValidationEvent {
3882
4400
 
3883
4401
  export declare type Viewport = keyof typeof BREAKPOINTS;
3884
4402
 
4403
+ declare interface ZvoooveLogoProps {
4404
+ size?: number;
4405
+ color?: string;
4406
+ }
4407
+
4408
+ export declare const ZvooveBrand: {
4409
+ ({ hideIcon, hideName, iconSize, nameHeight, }: ZvooveBrandProps): JSX.Element;
4410
+ displayName: string;
4411
+ };
4412
+
4413
+ export declare interface ZvooveBrandProps {
4414
+ /**
4415
+ * Hide the icon (logomark).
4416
+ * @default false
4417
+ */
4418
+ hideIcon?: boolean;
4419
+ /**
4420
+ * Hide the name (wordmark).
4421
+ * @default false
4422
+ */
4423
+ hideName?: boolean;
4424
+ /**
4425
+ * Size of the icon in pixels.
4426
+ * @default 22
4427
+ */
4428
+ iconSize?: number;
4429
+ /**
4430
+ * Height of the name in pixels.
4431
+ * @default 12
4432
+ */
4433
+ nameHeight?: number;
4434
+ }
4435
+
3885
4436
  export { }