@mortenbrudvik/waveui 0.12.0 → 0.13.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/README.md +60 -11
- package/dist/components/data-display/Avatar.cjs +1 -1
- package/dist/components/data-display/Avatar.cjs.map +1 -1
- package/dist/components/data-display/Avatar.colors.cjs +2 -0
- package/dist/components/data-display/Avatar.colors.cjs.map +1 -0
- package/dist/components/data-display/Avatar.colors.mjs +45 -0
- package/dist/components/data-display/Avatar.colors.mjs.map +1 -0
- package/dist/components/data-display/Avatar.context.cjs +1 -1
- package/dist/components/data-display/Avatar.context.cjs.map +1 -1
- package/dist/components/data-display/Avatar.context.mjs +4 -2
- package/dist/components/data-display/Avatar.context.mjs.map +1 -1
- package/dist/components/data-display/Avatar.mjs +103 -96
- package/dist/components/data-display/Avatar.mjs.map +1 -1
- package/dist/components/data-display/Avatar.sizes.cjs +2 -0
- package/dist/components/data-display/Avatar.sizes.cjs.map +1 -0
- package/dist/components/data-display/Avatar.sizes.mjs +41 -0
- package/dist/components/data-display/Avatar.sizes.mjs.map +1 -0
- package/dist/components/data-display/AvatarGroup.cjs +1 -1
- package/dist/components/data-display/AvatarGroup.cjs.map +1 -1
- package/dist/components/data-display/AvatarGroup.context.cjs +2 -0
- package/dist/components/data-display/AvatarGroup.context.cjs.map +1 -0
- package/dist/components/data-display/AvatarGroup.context.mjs +9 -0
- package/dist/components/data-display/AvatarGroup.context.mjs.map +1 -0
- package/dist/components/data-display/AvatarGroup.mjs +65 -122
- package/dist/components/data-display/AvatarGroup.mjs.map +1 -1
- package/dist/components/data-display/AvatarGroup.partition.cjs +2 -0
- package/dist/components/data-display/AvatarGroup.partition.cjs.map +1 -0
- package/dist/components/data-display/AvatarGroup.partition.mjs +14 -0
- package/dist/components/data-display/AvatarGroup.partition.mjs.map +1 -0
- package/dist/components/data-display/AvatarGroup.parts.cjs +2 -0
- package/dist/components/data-display/AvatarGroup.parts.cjs.map +1 -0
- package/dist/components/data-display/AvatarGroup.parts.mjs +178 -0
- package/dist/components/data-display/AvatarGroup.parts.mjs.map +1 -0
- package/dist/components/data-display/InteractionTag.cjs +1 -1
- package/dist/components/data-display/InteractionTag.cjs.map +1 -1
- package/dist/components/data-display/InteractionTag.mjs +36 -33
- package/dist/components/data-display/InteractionTag.mjs.map +1 -1
- package/dist/components/data-display/Persona.cjs +1 -1
- package/dist/components/data-display/Persona.cjs.map +1 -1
- package/dist/components/data-display/Persona.mjs +96 -37
- package/dist/components/data-display/Persona.mjs.map +1 -1
- package/dist/components/data-display/PresenceBadge.cjs +1 -1
- package/dist/components/data-display/PresenceBadge.cjs.map +1 -1
- package/dist/components/data-display/PresenceBadge.mjs +42 -28
- package/dist/components/data-display/PresenceBadge.mjs.map +1 -1
- package/dist/components/data-display/Tag.cjs +1 -1
- package/dist/components/data-display/Tag.cjs.map +1 -1
- package/dist/components/data-display/Tag.mjs +111 -108
- package/dist/components/data-display/Tag.mjs.map +1 -1
- package/dist/components/layout/Card.cjs +1 -1
- package/dist/components/layout/Card.cjs.map +1 -1
- package/dist/components/layout/Card.context.cjs +2 -0
- package/dist/components/layout/Card.context.cjs.map +1 -0
- package/dist/components/layout/Card.context.mjs +14 -0
- package/dist/components/layout/Card.context.mjs.map +1 -0
- package/dist/components/layout/Card.mjs +138 -92
- package/dist/components/layout/Card.mjs.map +1 -1
- package/dist/components/layout/Card.preview.cjs +2 -0
- package/dist/components/layout/Card.preview.cjs.map +1 -0
- package/dist/components/layout/Card.preview.mjs +22 -0
- package/dist/components/layout/Card.preview.mjs.map +1 -0
- package/dist/components/layout/Carousel.button.cjs +2 -0
- package/dist/components/layout/Carousel.button.cjs.map +1 -0
- package/dist/components/layout/Carousel.button.mjs +34 -0
- package/dist/components/layout/Carousel.button.mjs.map +1 -0
- package/dist/components/layout/Carousel.cjs +1 -1
- package/dist/components/layout/Carousel.cjs.map +1 -1
- package/dist/components/layout/Carousel.context.cjs +2 -0
- package/dist/components/layout/Carousel.context.cjs.map +1 -0
- package/dist/components/layout/Carousel.context.mjs +24 -0
- package/dist/components/layout/Carousel.context.mjs.map +1 -0
- package/dist/components/layout/Carousel.drag.cjs +2 -0
- package/dist/components/layout/Carousel.drag.cjs.map +1 -0
- package/dist/components/layout/Carousel.drag.mjs +79 -0
- package/dist/components/layout/Carousel.drag.mjs.map +1 -0
- package/dist/components/layout/Carousel.groups.cjs +2 -0
- package/dist/components/layout/Carousel.groups.cjs.map +1 -0
- package/dist/components/layout/Carousel.groups.mjs +23 -0
- package/dist/components/layout/Carousel.groups.mjs.map +1 -0
- package/dist/components/layout/Carousel.mjs +288 -150
- package/dist/components/layout/Carousel.mjs.map +1 -1
- package/dist/components/layout/Carousel.styles.cjs +2 -0
- package/dist/components/layout/Carousel.styles.cjs.map +1 -0
- package/dist/components/layout/Carousel.styles.mjs +30 -0
- package/dist/components/layout/Carousel.styles.mjs.map +1 -0
- package/dist/components/layout/TabList.cjs +1 -1
- package/dist/components/layout/TabList.cjs.map +1 -1
- package/dist/components/layout/TabList.mjs +163 -124
- package/dist/components/layout/TabList.mjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +550 -48
- package/dist/index.d.ts +550 -48
- package/dist/index.mjs +132 -127
- package/dist/lib/classNames.cjs +1 -1
- package/dist/lib/classNames.cjs.map +1 -1
- package/dist/lib/classNames.mjs +112 -92
- package/dist/lib/classNames.mjs.map +1 -1
- package/dist/lib/initials.cjs +2 -0
- package/dist/lib/initials.cjs.map +1 -0
- package/dist/lib/initials.mjs +21 -0
- package/dist/lib/initials.mjs.map +1 -0
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/src/styles/tokens.css +102 -0
package/dist/index.d.cts
CHANGED
|
@@ -306,7 +306,7 @@ export declare type Appearance = 'primary' | 'outline' | 'subtle' | 'transparent
|
|
|
306
306
|
* <Avatar name="Jane Doe" src="/jane.jpg" badge={<PresenceBadge status="available" />} />
|
|
307
307
|
*/
|
|
308
308
|
export declare const Avatar: {
|
|
309
|
-
({ src, name, size: sizeProp, icon, image, badge, decorative, className, ref, role, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-description": ariaDescription, "aria-details": ariaDetails, ...rest }: AvatarProps): React_2.JSX.Element;
|
|
309
|
+
({ src, name, size: sizeProp, shape: shapeProp, color: colorProp, idForColor, active, activeAppearance, initials: initialsSlot, icon, image, badge, decorative, className, ref, role, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-description": ariaDescription, "aria-details": ariaDetails, ...rest }: AvatarProps): React_2.JSX.Element;
|
|
310
310
|
displayName: string;
|
|
311
311
|
};
|
|
312
312
|
|
|
@@ -325,30 +325,48 @@ export declare const avatarClassNames: {
|
|
|
325
325
|
readonly badge: "wave-avatar__badge";
|
|
326
326
|
};
|
|
327
327
|
|
|
328
|
+
/** The color of an Avatar that shows initials: a look, `colorful` (hashed), or a named color. */
|
|
329
|
+
export declare type AvatarColor = 'neutral' | 'brand' | 'colorful' | AvatarNamedColor;
|
|
330
|
+
|
|
328
331
|
/**
|
|
329
|
-
* A row of
|
|
332
|
+
* A row of avatars (`role="group"`; name it with `aria-label`), laid out as a `stack` (overlapping),
|
|
333
|
+
* `spread` or `pie` (`layout`). `size` reaches the members.
|
|
330
334
|
*
|
|
331
335
|
* With `max`, the avatars beyond the limit are replaced by an overflow `<button>` ("+3", named
|
|
332
|
-
* "3 more", see `overflowLabel`
|
|
333
|
-
*
|
|
334
|
-
*
|
|
335
|
-
*
|
|
336
|
-
*
|
|
337
|
-
*
|
|
336
|
+
* "3 more", see `overflowLabel`; `overflowIndicator="icon"` shows an icon, and a count above 99
|
|
337
|
+
* reads "99+"). It toggles a popup that lists the hidden members: an `AvatarGroup.Item` as a row
|
|
338
|
+
* with its avatar and name, an `Avatar` by its `aria-label` or `name` prop, text as it is. Other
|
|
339
|
+
* members, such as an `Avatar` inside a link or one labelled by `aria-labelledby`, are rendered as
|
|
340
|
+
* they are, and an `Avatar` or text with no accessible name is listed as `unnamedMemberLabel` with
|
|
341
|
+
* a development warning. Focus moves into the popup; Escape, a press outside or the button close
|
|
342
|
+
* it and focus returns to the button (`open`, `defaultOpen` and `onOpenChange(open, details)`
|
|
343
|
+
* control it). Tab and Shift+Tab move through the popup's own tab stops (links in rendered
|
|
338
344
|
* members); Tab from the last one closes the popup and moves on to the element after the button,
|
|
339
345
|
* Shift+Tab from the first one closes it and returns to the button. When the button is the last
|
|
340
346
|
* tab stop (of the page, or of the Wave layer the group is in, such as a dialog), Tab is left to
|
|
341
347
|
* the browser or the enclosing focus trap.
|
|
342
348
|
*
|
|
349
|
+
* To split the members yourself, render `AvatarGroup.Item`s and an `AvatarGroup.Popover` holding
|
|
350
|
+
* the overflow items (see `partitionAvatarGroupItems`).
|
|
351
|
+
*
|
|
343
352
|
* @example
|
|
344
353
|
* <AvatarGroup aria-label="Project team" max={3}>
|
|
345
|
-
* <
|
|
346
|
-
* <
|
|
354
|
+
* <AvatarGroup.Item name="Ada Lovelace" />
|
|
355
|
+
* <AvatarGroup.Item name="Alan Turing" />
|
|
347
356
|
* </AvatarGroup>
|
|
348
357
|
*/
|
|
349
358
|
export declare const AvatarGroup: {
|
|
350
|
-
({ max, size, overflowLabel, unnamedMemberLabel, className, children, ref, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, ...props }: AvatarGroupProps): React_2.JSX.Element;
|
|
359
|
+
({ max, size, layout, overflowIndicator, overflowLabel, unnamedMemberLabel, open, defaultOpen, onOpenChange, className, children, ref, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, ...props }: AvatarGroupProps): React_2.JSX.Element;
|
|
351
360
|
displayName: string;
|
|
361
|
+
} & {
|
|
362
|
+
Item: {
|
|
363
|
+
({ className, ...props }: AvatarGroupItemProps): React_2.JSX.Element;
|
|
364
|
+
displayName: string;
|
|
365
|
+
};
|
|
366
|
+
Popover: {
|
|
367
|
+
({ children, indicator, count, label: labelProp, unnamedMemberLabel, open: openProp, defaultOpen, onOpenChange, className, ref, }: AvatarGroupPopoverProps): React_2.JSX.Element;
|
|
368
|
+
displayName: string;
|
|
369
|
+
};
|
|
352
370
|
};
|
|
353
371
|
|
|
354
372
|
/**
|
|
@@ -360,24 +378,120 @@ export declare const avatarGroupClassNames: {
|
|
|
360
378
|
readonly root: "wave-avatar-group";
|
|
361
379
|
readonly item: "wave-avatar-group__item";
|
|
362
380
|
readonly overflowButton: "wave-avatar-group__overflow-button";
|
|
381
|
+
readonly pie: "wave-avatar-group__pie";
|
|
363
382
|
readonly surface: "wave-avatar-group__surface";
|
|
364
383
|
readonly list: "wave-avatar-group__list";
|
|
365
384
|
readonly listItem: "wave-avatar-group__list-item";
|
|
366
385
|
};
|
|
367
386
|
|
|
387
|
+
/**
|
|
388
|
+
* A member of an AvatarGroup. In the group it renders as an `Avatar`; in the overflow list of the
|
|
389
|
+
* popup it renders as a row with the avatar and the name. It takes the props of an `Avatar`.
|
|
390
|
+
*/
|
|
391
|
+
export declare const AvatarGroupItem: {
|
|
392
|
+
({ className, ...props }: AvatarGroupItemProps): React_2.JSX.Element;
|
|
393
|
+
displayName: string;
|
|
394
|
+
};
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* AvatarGroup.Item: `root` on the avatar it renders in the group, and on the row (avatar and name)
|
|
398
|
+
* it renders in the overflow list; `name` on the name text of that row.
|
|
399
|
+
*/
|
|
400
|
+
export declare const avatarGroupItemClassNames: {
|
|
401
|
+
readonly root: "wave-avatar-group-item";
|
|
402
|
+
readonly name: "wave-avatar-group-item__name";
|
|
403
|
+
};
|
|
404
|
+
|
|
405
|
+
/** Properties for the AvatarGroup.Item sub-component: the props of an Avatar. */
|
|
406
|
+
export declare type AvatarGroupItemProps = AvatarProps;
|
|
407
|
+
|
|
408
|
+
/** The layouts of an AvatarGroup. */
|
|
409
|
+
export declare type AvatarGroupLayout = 'stack' | 'spread' | 'pie';
|
|
410
|
+
|
|
411
|
+
/** Why the popup of an AvatarGroup opens or closes: its trigger, or a dismissal. */
|
|
412
|
+
export declare type AvatarGroupOpenChangeDetails = OpenChangeDetails<DismissReason | 'trigger'>;
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* The overflow of an AvatarGroup, written by hand: a "+N" button that opens a popup listing its
|
|
416
|
+
* children (`AvatarGroup.Item`s, `Avatar`s, text or other elements). Write it as a child of the
|
|
417
|
+
* group to replace the overflow that `max` makes; its `count`, `indicator`, `label`, `open` and
|
|
418
|
+
* `onOpenChange` take over what `max` would have derived. Tab leaves the popup from the button.
|
|
419
|
+
*/
|
|
420
|
+
export declare const AvatarGroupPopover: {
|
|
421
|
+
({ children, indicator, count, label: labelProp, unnamedMemberLabel, open: openProp, defaultOpen, onOpenChange, className, ref, }: AvatarGroupPopoverProps): React_2.JSX.Element;
|
|
422
|
+
displayName: string;
|
|
423
|
+
};
|
|
424
|
+
|
|
425
|
+
/** AvatarGroup.Popover: `root` on the overflow button (which also carries the group's button class). */
|
|
426
|
+
export declare const avatarGroupPopoverClassNames: {
|
|
427
|
+
readonly root: "wave-avatar-group-popover";
|
|
428
|
+
};
|
|
429
|
+
|
|
430
|
+
/** Properties for the AvatarGroup.Popover sub-component. */
|
|
431
|
+
export declare interface AvatarGroupPopoverProps {
|
|
432
|
+
/** The overflow members: `AvatarGroup.Item`s, `Avatar`s, text or other elements. */
|
|
433
|
+
children?: React_2.ReactNode;
|
|
434
|
+
/**
|
|
435
|
+
* What the overflow button shows: the number of hidden members (`+3`, capped at `99+`), or an
|
|
436
|
+
* icon.
|
|
437
|
+
* @default 'count'
|
|
438
|
+
*/
|
|
439
|
+
indicator?: 'count' | 'icon';
|
|
440
|
+
/** The number of hidden members. @default the number of `children` */
|
|
441
|
+
count?: number;
|
|
442
|
+
/**
|
|
443
|
+
* Accessible name of the overflow button and its popup. A function receives the number of hidden
|
|
444
|
+
* members.
|
|
445
|
+
* @default (count) => `${count} more`
|
|
446
|
+
*/
|
|
447
|
+
label?: string | ((count: number) => string);
|
|
448
|
+
/**
|
|
449
|
+
* Text listed in the overflow popup for a hidden member that has no accessible name.
|
|
450
|
+
* @default 'Unnamed member'
|
|
451
|
+
*/
|
|
452
|
+
unnamedMemberLabel?: string;
|
|
453
|
+
/** Whether the popup is open (controlled). */
|
|
454
|
+
open?: boolean;
|
|
455
|
+
/**
|
|
456
|
+
* Whether the popup starts open (uncontrolled).
|
|
457
|
+
* @default false
|
|
458
|
+
*/
|
|
459
|
+
defaultOpen?: boolean;
|
|
460
|
+
/** Called when the popup asks to open or close, with the reason (`trigger`, `escape`, …). */
|
|
461
|
+
onOpenChange?: (open: boolean, details?: AvatarGroupOpenChangeDetails) => void;
|
|
462
|
+
/** Extra classes for the overflow button. */
|
|
463
|
+
className?: string;
|
|
464
|
+
/** Ref to the overflow `<button>`. */
|
|
465
|
+
ref?: React_2.Ref<HTMLButtonElement>;
|
|
466
|
+
}
|
|
467
|
+
|
|
368
468
|
/** Properties for the AvatarGroup component. */
|
|
369
469
|
export declare interface AvatarGroupProps extends React_2.HTMLAttributes<HTMLDivElement> {
|
|
370
470
|
/**
|
|
371
471
|
* Maximum number of avatars to display. The others are replaced by an overflow button that
|
|
372
472
|
* lists their names. `0` or a negative value shows only the overflow button, a fraction is
|
|
373
473
|
* rounded down, and `NaN` shows every member (as without `max`). The members of a Fragment
|
|
374
|
-
* count one by one.
|
|
474
|
+
* count one by one. A `pie` shows at most three.
|
|
375
475
|
*/
|
|
376
476
|
max?: number;
|
|
377
|
-
/**
|
|
378
|
-
*
|
|
477
|
+
/**
|
|
478
|
+
* Size of the avatars. It reaches the members that set no `size` of their own, and the overflow
|
|
479
|
+
* button.
|
|
480
|
+
* @default 'medium' ('large' in a `pie`)
|
|
379
481
|
*/
|
|
380
|
-
size?:
|
|
482
|
+
size?: AvatarSize;
|
|
483
|
+
/**
|
|
484
|
+
* How the members are laid out: `stack` overlaps them, `spread` puts them side by side, `pie`
|
|
485
|
+
* draws up to three of them as the wedges of one circle (the group's name is then the only name).
|
|
486
|
+
* @default 'stack'
|
|
487
|
+
*/
|
|
488
|
+
layout?: AvatarGroupLayout;
|
|
489
|
+
/**
|
|
490
|
+
* What the overflow button shows: the number of hidden members (`+3`, capped at `99+`), or an
|
|
491
|
+
* icon.
|
|
492
|
+
* @default 'count'
|
|
493
|
+
*/
|
|
494
|
+
overflowIndicator?: 'count' | 'icon';
|
|
381
495
|
/**
|
|
382
496
|
* Accessible name of the overflow button (and its popup). A function receives the number of
|
|
383
497
|
* hidden members. Localise it here.
|
|
@@ -391,10 +505,31 @@ export declare interface AvatarGroupProps extends React_2.HTMLAttributes<HTMLDiv
|
|
|
391
505
|
* @default 'Unnamed member'
|
|
392
506
|
*/
|
|
393
507
|
unnamedMemberLabel?: string;
|
|
508
|
+
/** Whether the overflow popup is open (controlled). */
|
|
509
|
+
open?: boolean;
|
|
510
|
+
/**
|
|
511
|
+
* Whether the overflow popup starts open (uncontrolled).
|
|
512
|
+
* @default false
|
|
513
|
+
*/
|
|
514
|
+
defaultOpen?: boolean;
|
|
515
|
+
/**
|
|
516
|
+
* Called when the overflow popup asks to open or close, with the reason: `trigger` (the button),
|
|
517
|
+
* `escape`, `outside-press` or `focus-outside`.
|
|
518
|
+
*/
|
|
519
|
+
onOpenChange?: (open: boolean, details?: AvatarGroupOpenChangeDetails) => void;
|
|
394
520
|
/** Ref to the root `<div>`. */
|
|
395
521
|
ref?: React_2.Ref<HTMLDivElement>;
|
|
396
522
|
}
|
|
397
523
|
|
|
524
|
+
/** The named colors of an Avatar: the persona palette (`--wave-palette-<name>` tokens). */
|
|
525
|
+
export declare type AvatarNamedColor = 'red' | 'pumpkin' | 'gold' | 'forest' | 'teal' | 'blue' | 'navy' | 'lavender' | 'purple' | 'magenta' | 'brown' | 'steel';
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* The numeric sizes of an Avatar, in pixels (Fluent's 14 sizes). A literal union: Tailwind can only
|
|
529
|
+
* generate the classes of {@link avatarBoxClasses}.
|
|
530
|
+
*/
|
|
531
|
+
export declare type AvatarNumericSize = 16 | 20 | 24 | 28 | 32 | 36 | 40 | 48 | 56 | 64 | 72 | 96 | 120 | 128;
|
|
532
|
+
|
|
398
533
|
/** Properties for the Avatar component. */
|
|
399
534
|
export declare interface AvatarProps extends React_2.HTMLAttributes<HTMLSpanElement> {
|
|
400
535
|
/**
|
|
@@ -409,11 +544,49 @@ export declare interface AvatarProps extends React_2.HTMLAttributes<HTMLSpanElem
|
|
|
409
544
|
*/
|
|
410
545
|
name?: string;
|
|
411
546
|
/**
|
|
412
|
-
* Size of the avatar
|
|
413
|
-
* the
|
|
547
|
+
* Size of the avatar: a named size (`extra-small` 24px to `extra-large` 56px) or a pixel size from
|
|
548
|
+
* 16 to 128. Without it, an Avatar in the `media` of a tag (Tag, InteractionTag) takes the tag's
|
|
549
|
+
* media box instead: 24, 20 or 16px by the tag's size.
|
|
414
550
|
* @default 'medium'
|
|
415
551
|
*/
|
|
416
|
-
size?:
|
|
552
|
+
size?: AvatarSize;
|
|
553
|
+
/**
|
|
554
|
+
* Shape of the avatar. Without it, an Avatar in the `media` of a rounded tag is square.
|
|
555
|
+
* @default 'circular'
|
|
556
|
+
*/
|
|
557
|
+
shape?: 'circular' | 'square';
|
|
558
|
+
/**
|
|
559
|
+
* Color of the avatar when it shows initials: `brand` (the primary color), `neutral` (muted),
|
|
560
|
+
* `colorful` (one of the named colors, chosen from `idForColor`, else from `name`; `brand`
|
|
561
|
+
* without either) or a named color of the persona palette. An image, or an icon, keeps its own
|
|
562
|
+
* look.
|
|
563
|
+
* @default 'brand'
|
|
564
|
+
*/
|
|
565
|
+
color?: AvatarColor;
|
|
566
|
+
/**
|
|
567
|
+
* Whether the person is active: `active` draws the `activeAppearance` around the avatar, `inactive`
|
|
568
|
+
* dims it, `unset` shows neither.
|
|
569
|
+
* @default 'unset'
|
|
570
|
+
*/
|
|
571
|
+
active?: 'active' | 'inactive' | 'unset';
|
|
572
|
+
/**
|
|
573
|
+
* How an `active` avatar is marked: a `ring`, a `shadow`, both (`ring-shadow`) or a `glow` in the
|
|
574
|
+
* primary color.
|
|
575
|
+
* @default 'ring'
|
|
576
|
+
*/
|
|
577
|
+
activeAppearance?: 'ring' | 'ring-shadow' | 'shadow' | 'glow';
|
|
578
|
+
/**
|
|
579
|
+
* A stable id (a user id, say) that picks the color of `color="colorful"`, so the same person has
|
|
580
|
+
* the same color wherever they are shown, whatever their name looks like.
|
|
581
|
+
*/
|
|
582
|
+
idForColor?: string;
|
|
583
|
+
/**
|
|
584
|
+
* The initials shown when there is no image and no icon, instead of the ones computed from
|
|
585
|
+
* `name` (see `getInitials`): a string, an element or an object of `<span>` attributes. A value
|
|
586
|
+
* that renders nothing (`''`, `[]`) keeps the computed initials. Rendered in an `aria-hidden`
|
|
587
|
+
* `<span>`.
|
|
588
|
+
*/
|
|
589
|
+
initials?: Slot<'span'>;
|
|
417
590
|
/**
|
|
418
591
|
* Icon shown instead of the initials when there is no image. Rendered in an `aria-hidden`
|
|
419
592
|
* `<span>` (a slot object can override its attributes). A falsy value (`null`, `false`, `''`,
|
|
@@ -455,6 +628,9 @@ export declare interface AvatarProps extends React_2.HTMLAttributes<HTMLSpanElem
|
|
|
455
628
|
ref?: React_2.Ref<HTMLSpanElement>;
|
|
456
629
|
}
|
|
457
630
|
|
|
631
|
+
/** The size of an Avatar: a named size (24 to 56px) or one of the {@link AvatarNumericSize}s. */
|
|
632
|
+
export declare type AvatarSize = Size | AvatarNumericSize;
|
|
633
|
+
|
|
458
634
|
/** How a modal surface's backdrop paints the page: `dimmed`, or `transparent` (a modal over another). */
|
|
459
635
|
export declare type BackdropAppearance = 'dimmed' | 'transparent';
|
|
460
636
|
|
|
@@ -1071,7 +1247,8 @@ export declare interface CalendarValueChangeDetails {
|
|
|
1071
1247
|
}
|
|
1072
1248
|
|
|
1073
1249
|
/**
|
|
1074
|
-
* A surface that groups related content, with `Card.Header`, `Card.Body` and
|
|
1250
|
+
* A surface that groups related content, with `Card.Header`, `Card.Preview`, `Card.Body` and
|
|
1251
|
+
* `Card.Footer`.
|
|
1075
1252
|
*
|
|
1076
1253
|
* **Selectable cards** (`onSelect`) come in two patterns:
|
|
1077
1254
|
* - A card without interactive content is itself the control (`selectionControl="card"`, the
|
|
@@ -1088,7 +1265,7 @@ export declare interface CalendarValueChangeDetails {
|
|
|
1088
1265
|
* the selected look only; its state is not exposed to assistive technology.
|
|
1089
1266
|
*
|
|
1090
1267
|
* React Server Components cannot dot into a client module: import the flat names `CardHeader`,
|
|
1091
|
-
* `CardBody` and `CardFooter` there; `Card.Header` etc. work in client files.
|
|
1268
|
+
* `CardPreview`, `CardBody` and `CardFooter` there; `Card.Header` etc. work in client files.
|
|
1092
1269
|
*
|
|
1093
1270
|
* @example
|
|
1094
1271
|
* <Card onSelect={toggle} selected={selected}>
|
|
@@ -1102,10 +1279,14 @@ export declare interface CalendarValueChangeDetails {
|
|
|
1102
1279
|
*/
|
|
1103
1280
|
export declare const Card: PolymorphicComponent<"div", CardOwnProps> & {
|
|
1104
1281
|
Header: PolymorphicComponent<"div", CardHeaderOwnProps>;
|
|
1282
|
+
Preview: PolymorphicComponent<"div", CardPreviewOwnProps>;
|
|
1105
1283
|
Body: PolymorphicComponent<"div", CardBodyOwnProps>;
|
|
1106
1284
|
Footer: PolymorphicComponent<"div", CardFooterOwnProps>;
|
|
1107
1285
|
};
|
|
1108
1286
|
|
|
1287
|
+
/** The look of a Card: a filled surface with a shadow, a muted fill, an outline, or no surface. */
|
|
1288
|
+
export declare type CardAppearance = 'filled' | 'filled-alternative' | 'outline' | 'subtle';
|
|
1289
|
+
|
|
1109
1290
|
/**
|
|
1110
1291
|
* The main content of a {@link Card}. Flat export for React Server Components (`Card.Body` in
|
|
1111
1292
|
* client files).
|
|
@@ -1131,6 +1312,7 @@ export declare const cardClassNames: {
|
|
|
1131
1312
|
readonly root: "wave-card";
|
|
1132
1313
|
readonly checkbox: "wave-card__checkbox";
|
|
1133
1314
|
readonly checkmark: "wave-card__checkmark";
|
|
1315
|
+
readonly floatingAction: "wave-card__floating-action";
|
|
1134
1316
|
};
|
|
1135
1317
|
|
|
1136
1318
|
/**
|
|
@@ -1160,8 +1342,11 @@ export declare const CardHeader: PolymorphicComponent<'div', CardHeaderOwnProps>
|
|
|
1160
1342
|
/** Card.Header: `root` on the rendered element; `title` on the title; `subtitle` on the subtitle. */
|
|
1161
1343
|
export declare const cardHeaderClassNames: {
|
|
1162
1344
|
readonly root: "wave-card-header";
|
|
1345
|
+
readonly image: "wave-card-header__image";
|
|
1346
|
+
readonly text: "wave-card-header__text";
|
|
1163
1347
|
readonly title: "wave-card-header__title";
|
|
1164
1348
|
readonly subtitle: "wave-card-header__subtitle";
|
|
1349
|
+
readonly action: "wave-card-header__action";
|
|
1165
1350
|
};
|
|
1166
1351
|
|
|
1167
1352
|
/** The Card.Header's own props (component-specific props only). */
|
|
@@ -1174,6 +1359,16 @@ export declare interface CardHeaderOwnProps {
|
|
|
1174
1359
|
title?: React_2.ReactNode;
|
|
1175
1360
|
/** Subtitle content displayed below the title (none when it renders nothing, as `title`). */
|
|
1176
1361
|
subtitle?: React_2.ReactNode;
|
|
1362
|
+
/**
|
|
1363
|
+
* An image beside the text, at the start: an `Avatar`, an icon, a logo. A value that renders
|
|
1364
|
+
* nothing renders no element.
|
|
1365
|
+
*/
|
|
1366
|
+
image?: Slot<'span'>;
|
|
1367
|
+
/**
|
|
1368
|
+
* An action beside the text, at the end: a menu button, say. A value that renders nothing
|
|
1369
|
+
* renders no element.
|
|
1370
|
+
*/
|
|
1371
|
+
action?: Slot<'span'>;
|
|
1177
1372
|
}
|
|
1178
1373
|
|
|
1179
1374
|
/** Props of {@link CardHeader} rendered as `C` (default `'div'`), including `ref`. */
|
|
@@ -1184,6 +1379,25 @@ export declare type CardHeaderProps<C extends React_2.ElementType = 'div'> = Pol
|
|
|
1184
1379
|
* Every other prop comes from the rendered element (`as`).
|
|
1185
1380
|
*/
|
|
1186
1381
|
export declare interface CardOwnProps {
|
|
1382
|
+
/**
|
|
1383
|
+
* Look of the card: `filled` (a surface with a border and a shadow), `filled-alternative` (a
|
|
1384
|
+
* muted fill), `outline` (a border only) or `subtle` (no surface until hovered or selected). A
|
|
1385
|
+
* selectable card gets a hover and pressed look for its appearance; the selected look is the
|
|
1386
|
+
* same in every appearance.
|
|
1387
|
+
* @default 'filled'
|
|
1388
|
+
*/
|
|
1389
|
+
appearance?: CardAppearance;
|
|
1390
|
+
/**
|
|
1391
|
+
* Padding of the card's parts: `small` 0.75rem, `medium` 1rem, `large` 1.25rem.
|
|
1392
|
+
* @default 'medium'
|
|
1393
|
+
*/
|
|
1394
|
+
size?: CoreSize;
|
|
1395
|
+
/**
|
|
1396
|
+
* Layout of the card's parts: `vertical` stacks them, `horizontal` puts them in a row (put the
|
|
1397
|
+
* text parts in one wrapper element to keep them stacked beside a `Card.Preview`).
|
|
1398
|
+
* @default 'vertical'
|
|
1399
|
+
*/
|
|
1400
|
+
orientation?: Orientation;
|
|
1187
1401
|
/**
|
|
1188
1402
|
* Whether the card is selected. Shown with the selected colors plus non-color cues: a 2px primary
|
|
1189
1403
|
* border (a 1px border plus an inset 1px ring), a Highlight outline in forced-colors mode, and a
|
|
@@ -1225,8 +1439,54 @@ export declare interface CardOwnProps {
|
|
|
1225
1439
|
* `Card.Header` title, which the checkbox references with `aria-labelledby`.
|
|
1226
1440
|
*/
|
|
1227
1441
|
selectLabel?: string;
|
|
1442
|
+
/**
|
|
1443
|
+
* The built-in checkbox of `selectionControl="checkbox"`: an object of `<input>` attributes is
|
|
1444
|
+
* merged onto it (a class, `aria-describedby`, `name`; its type, checked state and change
|
|
1445
|
+
* handling stay the card's), an element replaces it (give that control its own name and call
|
|
1446
|
+
* `onSelect` from it), and `null` or `false` removes it, for a control you render elsewhere.
|
|
1447
|
+
* Ignored with the default `selectionControl`.
|
|
1448
|
+
*/
|
|
1449
|
+
checkbox?: Slot<'input'>;
|
|
1450
|
+
/**
|
|
1451
|
+
* An action over the top end corner of the card (a menu button, say). A card with one is
|
|
1452
|
+
* positioned; with `selectionControl="checkbox"` the built-in checkbox then moves to the top
|
|
1453
|
+
* start corner. Content that renders nothing renders no element.
|
|
1454
|
+
*/
|
|
1455
|
+
floatingAction?: Slot<'span'>;
|
|
1228
1456
|
}
|
|
1229
1457
|
|
|
1458
|
+
/**
|
|
1459
|
+
* Edge-to-edge media of a {@link Card} (an image, a video, a map), with an optional `logo` over its
|
|
1460
|
+
* bottom start corner. It has no padding: in a vertical card it fills the width, in a horizontal
|
|
1461
|
+
* one it is the full-height block at the start. Flat export for React Server Components
|
|
1462
|
+
* (`Card.Preview` in client files).
|
|
1463
|
+
*
|
|
1464
|
+
* @example
|
|
1465
|
+
* <Card>
|
|
1466
|
+
* <Card.Preview logo={<img alt="Contoso" src="/logo.svg" />}><img alt="" src="/cover.jpg" /></Card.Preview>
|
|
1467
|
+
* <Card.Header title="Contoso" />
|
|
1468
|
+
* </Card>
|
|
1469
|
+
*/
|
|
1470
|
+
export declare const CardPreview: PolymorphicComponent<'div', CardPreviewOwnProps>;
|
|
1471
|
+
|
|
1472
|
+
/** Card.Preview: `root` on the rendered element; `logo` on the logo over its bottom start corner. */
|
|
1473
|
+
export declare const cardPreviewClassNames: {
|
|
1474
|
+
readonly root: "wave-card-preview";
|
|
1475
|
+
readonly logo: "wave-card-preview__logo";
|
|
1476
|
+
};
|
|
1477
|
+
|
|
1478
|
+
/** The Card.Preview's own props (component-specific props only). */
|
|
1479
|
+
export declare interface CardPreviewOwnProps {
|
|
1480
|
+
/**
|
|
1481
|
+
* A logo placed over the bottom start corner of the preview: a string, an element or an object
|
|
1482
|
+
* of `<span>` attributes. A value that renders nothing renders no element.
|
|
1483
|
+
*/
|
|
1484
|
+
logo?: Slot<'span'>;
|
|
1485
|
+
}
|
|
1486
|
+
|
|
1487
|
+
/** Props of {@link CardPreview} rendered as `C` (default `'div'`), including `ref`. */
|
|
1488
|
+
export declare type CardPreviewProps<C extends React_2.ElementType = 'div'> = PolymorphicProps<C, CardPreviewOwnProps>;
|
|
1489
|
+
|
|
1230
1490
|
/**
|
|
1231
1491
|
* Props of {@link Card} rendered as `C` (default `'div'`). `CardProps` without a type argument is
|
|
1232
1492
|
* the 0.4 name: the props of a Card rendered as a `<div>`, including `ref`.
|
|
@@ -1261,19 +1521,32 @@ export declare type CardProps<C extends React_2.ElementType = 'div'> = Polymorph
|
|
|
1261
1521
|
* - The controls are layered over the slides inside the carousel's own stacking context, so they
|
|
1262
1522
|
* never paint over page headers that stay in view while the page scrolls.
|
|
1263
1523
|
*
|
|
1264
|
-
*
|
|
1265
|
-
*
|
|
1524
|
+
* - `groupSize` shows several slides per page, `draggable` lets the pointer drag them, and a
|
|
1525
|
+
* `thumbnail` on a `Carousel.Item` turns the picker into a row of thumbnails.
|
|
1526
|
+
* - `controlsLayout` places the Previous and Next buttons over the slides (`overlay`,
|
|
1527
|
+
* `overlay-wide`) or beside them (`inline`, `inline-wide`); `Carousel.Button` replaces the
|
|
1528
|
+
* built-in button of its `direction` with one of your own glyph.
|
|
1529
|
+
*
|
|
1530
|
+
* Compound access (`Carousel.Item`, `Carousel.Button`) needs a client module; React Server
|
|
1531
|
+
* Components import the flat names `CarouselItem` and `CarouselButton` instead.
|
|
1266
1532
|
*/
|
|
1267
1533
|
export declare const Carousel: {
|
|
1268
|
-
({ value: controlledValue, defaultValue, onValueChange, autoPlay, autoPlayInterval, autoPlayLabels, labels, loop, className, children, onMouseEnter, onMouseLeave, onFocus, onBlur, ref, ...rest }: CarouselProps): React_2.JSX.Element;
|
|
1534
|
+
({ value: controlledValue, defaultValue, onValueChange, autoPlay, autoPlayInterval, autoPlayLabels, labels, loop, groupSize, align, draggable, controlsLayout, appearance, className, children, onMouseEnter, onMouseLeave, onFocus, onBlur, ref, ...rest }: CarouselProps): React_2.JSX.Element;
|
|
1269
1535
|
displayName: string;
|
|
1270
1536
|
} & {
|
|
1271
1537
|
Item: {
|
|
1272
|
-
({ className, children, ref, ...rest }: CarouselItemProps): React_2.JSX.Element;
|
|
1538
|
+
({ thumbnail: _thumbnail, className, children, ref, ...rest }: CarouselItemProps): React_2.JSX.Element;
|
|
1539
|
+
displayName: string;
|
|
1540
|
+
};
|
|
1541
|
+
Button: {
|
|
1542
|
+
({ direction, onClick, className, children, ref, ...rest }: CarouselButtonProps): React_2.JSX.Element;
|
|
1273
1543
|
displayName: string;
|
|
1274
1544
|
};
|
|
1275
1545
|
};
|
|
1276
1546
|
|
|
1547
|
+
/** How a Carousel is drawn: `flat`, or `elevated` with rounded corners and a shadow. */
|
|
1548
|
+
export declare type CarouselAppearance = 'flat' | 'elevated';
|
|
1549
|
+
|
|
1277
1550
|
/** Accessible names of the rotation control shown while `autoPlay` is on. */
|
|
1278
1551
|
export declare interface CarouselAutoPlayLabels {
|
|
1279
1552
|
/** Name of the control while slides rotate (activating it stops the rotation).
|
|
@@ -1286,15 +1559,42 @@ export declare interface CarouselAutoPlayLabels {
|
|
|
1286
1559
|
play?: string;
|
|
1287
1560
|
}
|
|
1288
1561
|
|
|
1562
|
+
/**
|
|
1563
|
+
* A Previous or Next button written in a {@link Carousel}, for a glyph or look of your own.
|
|
1564
|
+
* Write it as a direct child of the Carousel: it replaces the built-in button of its
|
|
1565
|
+
* `direction`, takes its place in the layout and is named, disabled and wired to the slides the
|
|
1566
|
+
* same way (`labels.previous`/`labels.next`, `aria-controls`, `aria-disabled` at the ends
|
|
1567
|
+
* without `loop`, which keeps it focusable). Its children replace the chevron, which mirrors in
|
|
1568
|
+
* right-to-left layouts; `aria-label` replaces the name.
|
|
1569
|
+
*/
|
|
1570
|
+
export declare const CarouselButton: {
|
|
1571
|
+
({ direction, onClick, className, children, ref, ...rest }: CarouselButtonProps): React_2.JSX.Element;
|
|
1572
|
+
displayName: string;
|
|
1573
|
+
};
|
|
1574
|
+
|
|
1575
|
+
/** Carousel.Button: `root` on the button element. */
|
|
1576
|
+
export declare const carouselButtonClassNames: {
|
|
1577
|
+
readonly root: "wave-carousel-button";
|
|
1578
|
+
};
|
|
1579
|
+
|
|
1580
|
+
/** Properties for the CarouselButton sub-component. */
|
|
1581
|
+
export declare interface CarouselButtonProps extends React_2.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
1582
|
+
/** Which way the button moves the carousel. */
|
|
1583
|
+
direction: 'previous' | 'next';
|
|
1584
|
+
ref?: React_2.Ref<HTMLButtonElement>;
|
|
1585
|
+
}
|
|
1586
|
+
|
|
1289
1587
|
/**
|
|
1290
1588
|
* Carousel: `root` on the `role="region"` element; `autoPlayButton` on the pause and start
|
|
1291
|
-
* button; `
|
|
1589
|
+
* button; `viewport` on the clipping element around the track; `track` on the moving element
|
|
1590
|
+
* around the slides; `slide` on each slide wrapper;
|
|
1292
1591
|
* `previousButton` and `nextButton` on the arrow buttons; `picker` on the `role="group"` of
|
|
1293
1592
|
* picker buttons; `pickerButton` on each of them; `pickerIndicator` on each button's dot.
|
|
1294
1593
|
*/
|
|
1295
1594
|
export declare const carouselClassNames: {
|
|
1296
1595
|
readonly root: "wave-carousel";
|
|
1297
1596
|
readonly autoPlayButton: "wave-carousel__auto-play-button";
|
|
1597
|
+
readonly viewport: "wave-carousel__viewport";
|
|
1298
1598
|
readonly track: "wave-carousel__track";
|
|
1299
1599
|
readonly slide: "wave-carousel__slide";
|
|
1300
1600
|
readonly previousButton: "wave-carousel__previous-button";
|
|
@@ -1304,23 +1604,35 @@ export declare const carouselClassNames: {
|
|
|
1304
1604
|
readonly pickerIndicator: "wave-carousel__picker-indicator";
|
|
1305
1605
|
};
|
|
1306
1606
|
|
|
1607
|
+
/** Where a Carousel puts its Previous and Next buttons. */
|
|
1608
|
+
export declare type CarouselControlsLayout = 'overlay' | 'inline' | 'overlay-wide' | 'inline-wide';
|
|
1609
|
+
|
|
1307
1610
|
/**
|
|
1308
1611
|
* One slide of a {@link Carousel}. Write it in the Carousel, directly or in a Fragment: a component
|
|
1309
1612
|
* that renders `Carousel.Item` itself is not recognised as a slide (put that component inside the
|
|
1310
1613
|
* `Carousel.Item` instead).
|
|
1311
1614
|
*/
|
|
1312
1615
|
export declare const CarouselItem: {
|
|
1313
|
-
({ className, children, ref, ...rest }: CarouselItemProps): React_2.JSX.Element;
|
|
1616
|
+
({ thumbnail: _thumbnail, className, children, ref, ...rest }: CarouselItemProps): React_2.JSX.Element;
|
|
1314
1617
|
displayName: string;
|
|
1315
1618
|
};
|
|
1316
1619
|
|
|
1317
|
-
/** Carousel.Item: `root` on the item element. */
|
|
1620
|
+
/** Carousel.Item: `root` on the item element; `thumbnail` on the image in its picker button. */
|
|
1318
1621
|
export declare const carouselItemClassNames: {
|
|
1319
1622
|
readonly root: "wave-carousel-item";
|
|
1623
|
+
readonly thumbnail: "wave-carousel-item__thumbnail";
|
|
1320
1624
|
};
|
|
1321
1625
|
|
|
1322
1626
|
/** Properties for the CarouselItem sub-component. */
|
|
1323
1627
|
export declare interface CarouselItemProps extends React_2.HTMLAttributes<HTMLDivElement> {
|
|
1628
|
+
/**
|
|
1629
|
+
* An image for this slide's button in the picker, in place of the dot. A string is the image
|
|
1630
|
+
* `src`; an object sets the `<img>`'s attributes. The button keeps its slide-label name, so the
|
|
1631
|
+
* image is decorative (`alt=""`). When any slide has one, the picker becomes a row of
|
|
1632
|
+
* thumbnails below the slides; a slide without one keeps its dot. With `groupSize` above 1, a
|
|
1633
|
+
* page shows the thumbnail of its first slide.
|
|
1634
|
+
*/
|
|
1635
|
+
thumbnail?: Slot<'img'>;
|
|
1324
1636
|
ref?: React_2.Ref<HTMLDivElement>;
|
|
1325
1637
|
}
|
|
1326
1638
|
|
|
@@ -1350,6 +1662,13 @@ export declare interface CarouselLabels {
|
|
|
1350
1662
|
* @default (index, total) => `Slide ${index + 1} of ${total}`
|
|
1351
1663
|
*/
|
|
1352
1664
|
slide?: (index: number, total: number) => string;
|
|
1665
|
+
/**
|
|
1666
|
+
* Name of a page of several slides, from the one-based number of its first and last slide, out
|
|
1667
|
+
* of `total` slides (`groupSize` above 1). It names the page's picker button and is announced
|
|
1668
|
+
* by the live region when the page is shown. A page of one slide uses `slide`.
|
|
1669
|
+
* @default (start, end, total) => `Slides ${start} to ${end} of ${total}`
|
|
1670
|
+
*/
|
|
1671
|
+
slides?: (start: number, end: number, total: number) => string;
|
|
1353
1672
|
/** How assistive technology announces the carousel region (`aria-roledescription`).
|
|
1354
1673
|
* @default 'carousel'
|
|
1355
1674
|
*/
|
|
@@ -1362,14 +1681,57 @@ export declare interface CarouselLabels {
|
|
|
1362
1681
|
|
|
1363
1682
|
/** Properties for the Carousel component. */
|
|
1364
1683
|
export declare interface CarouselProps extends React_2.HTMLAttributes<HTMLDivElement> {
|
|
1365
|
-
/**
|
|
1684
|
+
/**
|
|
1685
|
+
* Controlled index of the active slide: with `groupSize` above 1, the first slide of the shown
|
|
1686
|
+
* page. A value in the middle of a page shows that page and out-of-range values show the
|
|
1687
|
+
* nearest one.
|
|
1688
|
+
*/
|
|
1366
1689
|
value?: number;
|
|
1367
1690
|
/** Default active slide index for uncontrolled usage.
|
|
1368
1691
|
* @default 0
|
|
1369
1692
|
*/
|
|
1370
1693
|
defaultValue?: number;
|
|
1371
|
-
/**
|
|
1694
|
+
/**
|
|
1695
|
+
* Called with the new index when the active slide changes (not when it stays the same): the
|
|
1696
|
+
* first slide of the new page when `groupSize` is above 1.
|
|
1697
|
+
*/
|
|
1372
1698
|
onValueChange?: (index: number) => void;
|
|
1699
|
+
/**
|
|
1700
|
+
* How many slides one page shows: a number, or `'auto'` to show as many as fit the width of the
|
|
1701
|
+
* carousel (the slides keep their own width, which must be equal). Previous, Next, the picker
|
|
1702
|
+
* (one button per page), looping and autoplay move by page, and the slides of the shown page
|
|
1703
|
+
* form one arrow-key focus group. With `1` each slide fills the width, as before.
|
|
1704
|
+
* @default 1
|
|
1705
|
+
*/
|
|
1706
|
+
groupSize?: number | 'auto';
|
|
1707
|
+
/**
|
|
1708
|
+
* With `groupSize="auto"`, where the shown page sits when its slides do not fill the width.
|
|
1709
|
+
* @default 'start'
|
|
1710
|
+
*/
|
|
1711
|
+
align?: 'start' | 'center' | 'end';
|
|
1712
|
+
/**
|
|
1713
|
+
* Lets the pointer drag the slides (mouse, touch and pen). The track follows the pointer and,
|
|
1714
|
+
* on release, the page changes when the drag passed a quarter of the width or left fast, else
|
|
1715
|
+
* it snaps back; the direction follows the carousel's. The click that ends a drag is not
|
|
1716
|
+
* delivered to the slide, and a vertical swipe still scrolls the page. Dragging pauses
|
|
1717
|
+
* autoplay like the pointer over the carousel does. The buttons and the keyboard stay the way
|
|
1718
|
+
* to operate the carousel without a pointer.
|
|
1719
|
+
* @default false
|
|
1720
|
+
*/
|
|
1721
|
+
draggable?: boolean;
|
|
1722
|
+
/**
|
|
1723
|
+
* Where the Previous and Next buttons go. `overlay` floats round buttons over the slides;
|
|
1724
|
+
* `overlay-wide` makes them full-height strips at the edges; `inline` puts them in a row with
|
|
1725
|
+
* the slides, outside them; `inline-wide` is `inline` with full-height buttons. The rotation
|
|
1726
|
+
* control stays the first focusable element at the start corner in every layout.
|
|
1727
|
+
* @default 'overlay'
|
|
1728
|
+
*/
|
|
1729
|
+
controlsLayout?: CarouselControlsLayout;
|
|
1730
|
+
/**
|
|
1731
|
+
* `elevated` rounds the corners and adds a shadow.
|
|
1732
|
+
* @default 'flat'
|
|
1733
|
+
*/
|
|
1734
|
+
appearance?: CarouselAppearance;
|
|
1373
1735
|
/**
|
|
1374
1736
|
* Rotates the slides automatically. A Pause/Start control is rendered as the first focusable
|
|
1375
1737
|
* element. Rotation pauses while focus is anywhere inside the carousel (the control included;
|
|
@@ -3387,6 +3749,12 @@ export declare interface DatePickerProps extends Omit<React_2.HTMLAttributes<HTM
|
|
|
3387
3749
|
/** A day of the week, as `Date.prototype.getDay()` numbers them: 0 is Sunday, 6 is Saturday. */
|
|
3388
3750
|
export declare type DayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
3389
3751
|
|
|
3752
|
+
/**
|
|
3753
|
+
* The 0.5 spellings of two presence statuses. They still work and warn once in development; use
|
|
3754
|
+
* `'do-not-disturb'` and `'out-of-office'` instead. Removed in 1.0.
|
|
3755
|
+
*/
|
|
3756
|
+
export declare type DeprecatedPresenceStatus = 'dnd' | 'oof';
|
|
3757
|
+
|
|
3390
3758
|
/**
|
|
3391
3759
|
* A dialog (Fluent UI v2 style), modal by default: `Dialog` holds the open state; `Dialog.Trigger`
|
|
3392
3760
|
* opens and closes it and `Dialog.Content` renders the surface in a portal while open (and, with
|
|
@@ -5258,6 +5626,38 @@ export declare function getFirstTabbable(container: Element, options?: {
|
|
|
5258
5626
|
includeContainer?: boolean;
|
|
5259
5627
|
}): HTMLElement | null;
|
|
5260
5628
|
|
|
5629
|
+
/**
|
|
5630
|
+
* The initials of a person's name, for an avatar: the first letter of the first and, with two or
|
|
5631
|
+
* more words, of the last word, upper-cased.
|
|
5632
|
+
*
|
|
5633
|
+
* Text in `()`, `[]`, `{}` and `<>` and all punctuation are ignored (`'Jane Doe (Contoso)'` gives
|
|
5634
|
+
* `'JD'`). A name with no letters (a phone number, an emoji) or with letters of a script without
|
|
5635
|
+
* letter initials (Han, Hiragana, Katakana, Hangul, Thai, Lao, Khmer, Myanmar, Tibetan) gives
|
|
5636
|
+
* `''`, so an avatar falls back to its person glyph. Server-safe.
|
|
5637
|
+
*
|
|
5638
|
+
* @example
|
|
5639
|
+
* getInitials('Jane Doe (Contoso)'); // 'JD'
|
|
5640
|
+
* getInitials('Jane Doe', { dir: 'rtl' }); // 'DJ'
|
|
5641
|
+
* getInitials('+1 (555) 010-0000'); // ''
|
|
5642
|
+
*/
|
|
5643
|
+
export declare function getInitials(name: string, options?: GetInitialsOptions): string;
|
|
5644
|
+
|
|
5645
|
+
/** Options of {@link getInitials}. */
|
|
5646
|
+
export declare interface GetInitialsOptions {
|
|
5647
|
+
/**
|
|
5648
|
+
* Text direction of the place the initials are shown. In `'rtl'` the first and last initial of a
|
|
5649
|
+
* left-to-right script swap, so they read in the order of the name on screen; a Hebrew or Arabic
|
|
5650
|
+
* name keeps its order, which the text direction already mirrors.
|
|
5651
|
+
* @default 'ltr'
|
|
5652
|
+
*/
|
|
5653
|
+
dir?: 'ltr' | 'rtl';
|
|
5654
|
+
/**
|
|
5655
|
+
* Keep only the first initial, also for a name of several words.
|
|
5656
|
+
* @default false
|
|
5657
|
+
*/
|
|
5658
|
+
firstInitialOnly?: boolean;
|
|
5659
|
+
}
|
|
5660
|
+
|
|
5261
5661
|
/** The last tabbable element inside `container`, or `null`. */
|
|
5262
5662
|
export declare function getLastTabbable(container: Element, options?: {
|
|
5263
5663
|
includeContainer?: boolean;
|
|
@@ -9157,17 +9557,53 @@ export declare interface PaginationProps extends Omit<React_2.HTMLAttributes<HTM
|
|
|
9157
9557
|
}
|
|
9158
9558
|
|
|
9159
9559
|
/**
|
|
9160
|
-
*
|
|
9161
|
-
*
|
|
9560
|
+
* Splits the items of an AvatarGroup into the ones shown inline and the ones in the overflow list.
|
|
9561
|
+
* `AvatarGroup` uses it for `max`; use it yourself to render `AvatarGroup.Item`s and
|
|
9562
|
+
* `AvatarGroup.Popover` from your own list. Server-safe: it imports nothing.
|
|
9563
|
+
*
|
|
9564
|
+
* @example
|
|
9565
|
+
* const { inlineItems, overflowItems } = partitionAvatarGroupItems({ items: people, maxInlineItems: 4 });
|
|
9566
|
+
*/
|
|
9567
|
+
export declare function partitionAvatarGroupItems<T>({ items, maxInlineItems, layout, }: PartitionAvatarGroupItemsOptions<T>): PartitionAvatarGroupItemsResult<T>;
|
|
9568
|
+
|
|
9569
|
+
/** Options of {@link partitionAvatarGroupItems}. */
|
|
9570
|
+
export declare interface PartitionAvatarGroupItemsOptions<T> {
|
|
9571
|
+
/** All the items of the group. */
|
|
9572
|
+
items: readonly T[];
|
|
9573
|
+
/**
|
|
9574
|
+
* How many items are shown inline; the rest go to the overflow. A fraction is rounded down, `0`
|
|
9575
|
+
* or a negative value shows none, and `undefined` or `NaN` shows all (up to the layout's cap).
|
|
9576
|
+
*/
|
|
9577
|
+
maxInlineItems?: number;
|
|
9578
|
+
/**
|
|
9579
|
+
* The layout of the group. A `pie` shows at most three items inline.
|
|
9580
|
+
* @default 'stack'
|
|
9581
|
+
*/
|
|
9582
|
+
layout?: AvatarGroupLayout;
|
|
9583
|
+
}
|
|
9584
|
+
|
|
9585
|
+
/** Result of {@link partitionAvatarGroupItems}. */
|
|
9586
|
+
export declare interface PartitionAvatarGroupItemsResult<T> {
|
|
9587
|
+
/** The items shown inline, in order. */
|
|
9588
|
+
inlineItems: T[];
|
|
9589
|
+
/** The items in the overflow list, in order; `undefined` when nothing overflows. */
|
|
9590
|
+
overflowItems: T[] | undefined;
|
|
9591
|
+
}
|
|
9592
|
+
|
|
9593
|
+
/**
|
|
9594
|
+
* A person's avatar next to their name and up to three more text lines (job title, location,
|
|
9595
|
+
* status), with an optional presence badge. The text can sit after, before or below the avatar
|
|
9596
|
+
* (`textPosition`), `presenceOnly` swaps the avatar for the presence badge, and the text scales with
|
|
9597
|
+
* `size` up to `huge`.
|
|
9162
9598
|
*
|
|
9163
9599
|
* The built-in avatar is decorative (`<Avatar decorative>`): the visible name is announced once,
|
|
9164
9600
|
* not a second time as the avatar's image name. The presence badge stays exposed as a named image.
|
|
9165
9601
|
*
|
|
9166
9602
|
* @example
|
|
9167
|
-
* <Persona name="Jane Doe" secondaryText="Designer" status="available" />
|
|
9603
|
+
* <Persona name="Jane Doe" secondaryText="Designer" tertiaryText="Oslo" status="available" />
|
|
9168
9604
|
*/
|
|
9169
9605
|
export declare const Persona: {
|
|
9170
|
-
({ name, secondaryText, src, size, status, avatar, badge, className, ref, ...props }: PersonaProps): React_2.JSX.Element;
|
|
9606
|
+
({ name, primaryText, secondaryText, tertiaryText, quaternaryText, textPosition, textAlignment, presenceOnly, src, size, status, avatar, badge, className, ref, ...props }: PersonaProps): React_2.JSX.Element;
|
|
9171
9607
|
displayName: string;
|
|
9172
9608
|
};
|
|
9173
9609
|
|
|
@@ -9182,20 +9618,52 @@ export declare const personaClassNames: {
|
|
|
9182
9618
|
readonly badge: "wave-persona__badge";
|
|
9183
9619
|
readonly primaryText: "wave-persona__primary-text";
|
|
9184
9620
|
readonly secondaryText: "wave-persona__secondary-text";
|
|
9621
|
+
readonly tertiaryText: "wave-persona__tertiary-text";
|
|
9622
|
+
readonly quaternaryText: "wave-persona__quaternary-text";
|
|
9185
9623
|
};
|
|
9186
9624
|
|
|
9187
9625
|
/** Properties for the Persona component. */
|
|
9188
9626
|
export declare interface PersonaProps extends React_2.HTMLAttributes<HTMLDivElement> {
|
|
9189
|
-
/**
|
|
9190
|
-
|
|
9191
|
-
|
|
9192
|
-
|
|
9627
|
+
/**
|
|
9628
|
+
* Display name of the person. It gives the avatar its initials and the first text line its text
|
|
9629
|
+
* (unless `primaryText` is given). A persona with neither `name` nor `primaryText` warns in
|
|
9630
|
+
* development.
|
|
9631
|
+
*/
|
|
9632
|
+
name?: string;
|
|
9633
|
+
/**
|
|
9634
|
+
* The first text line (the name). A string, an element or an object of `<span>` attributes.
|
|
9635
|
+
* @default the `name`
|
|
9636
|
+
*/
|
|
9637
|
+
primaryText?: Slot<'span'>;
|
|
9638
|
+
/** The second text line, such as a job title or email. */
|
|
9639
|
+
secondaryText?: Slot<'span'>;
|
|
9640
|
+
/** The third text line, such as a location. */
|
|
9641
|
+
tertiaryText?: Slot<'span'>;
|
|
9642
|
+
/** The fourth text line, such as a status message. */
|
|
9643
|
+
quaternaryText?: Slot<'span'>;
|
|
9644
|
+
/**
|
|
9645
|
+
* Where the text sits relative to the avatar, in reading order: after it, before it, or below it.
|
|
9646
|
+
* @default 'after'
|
|
9647
|
+
*/
|
|
9648
|
+
textPosition?: 'after' | 'before' | 'below';
|
|
9649
|
+
/**
|
|
9650
|
+
* How the text lines align with each other.
|
|
9651
|
+
* @default 'start' ('center' when the text is below the avatar)
|
|
9652
|
+
*/
|
|
9653
|
+
textAlignment?: 'start' | 'center';
|
|
9654
|
+
/**
|
|
9655
|
+
* Shows only the presence badge (from `status` or `badge`) in place of the avatar. The text
|
|
9656
|
+
* stays.
|
|
9657
|
+
* @default false
|
|
9658
|
+
*/
|
|
9659
|
+
presenceOnly?: boolean;
|
|
9193
9660
|
/** URL of the person's avatar image. */
|
|
9194
9661
|
src?: string;
|
|
9195
|
-
/**
|
|
9662
|
+
/**
|
|
9663
|
+
* Size of the persona: its avatar and its text.
|
|
9196
9664
|
* @default 'medium'
|
|
9197
9665
|
*/
|
|
9198
|
-
size?:
|
|
9666
|
+
size?: PersonaSize;
|
|
9199
9667
|
/** Presence status shown as a badge on the avatar. Ignored when a `badge` is given. */
|
|
9200
9668
|
status?: PresenceStatus;
|
|
9201
9669
|
/**
|
|
@@ -9215,6 +9683,9 @@ export declare interface PersonaProps extends React_2.HTMLAttributes<HTMLDivElem
|
|
|
9215
9683
|
ref?: React_2.Ref<HTMLDivElement>;
|
|
9216
9684
|
}
|
|
9217
9685
|
|
|
9686
|
+
/** The size of a Persona: the Avatar sizes, and `huge` (a 72px avatar). */
|
|
9687
|
+
export declare type PersonaSize = Size | 'huge';
|
|
9688
|
+
|
|
9218
9689
|
/** How urgently assistive technology should read a message. */
|
|
9219
9690
|
export declare type Politeness = 'polite' | 'assertive';
|
|
9220
9691
|
|
|
@@ -9737,9 +10208,10 @@ export declare interface PresenceAttributes {
|
|
|
9737
10208
|
*
|
|
9738
10209
|
* @example
|
|
9739
10210
|
* <PresenceBadge status="busy" />
|
|
10211
|
+
* <PresenceBadge status="do-not-disturb" />
|
|
9740
10212
|
*/
|
|
9741
10213
|
export declare const PresenceBadge: {
|
|
9742
|
-
({ status, size, className, ref, ...props }: PresenceBadgeProps): React_2.JSX.Element;
|
|
10214
|
+
({ status: statusProp, size: sizeProp, className, ref, ...props }: PresenceBadgeProps): React_2.JSX.Element;
|
|
9743
10215
|
displayName: string;
|
|
9744
10216
|
};
|
|
9745
10217
|
|
|
@@ -9751,9 +10223,14 @@ export declare const presenceBadgeClassNames: {
|
|
|
9751
10223
|
|
|
9752
10224
|
/** Properties for the PresenceBadge component. */
|
|
9753
10225
|
export declare interface PresenceBadgeProps extends React_2.HTMLAttributes<HTMLSpanElement> {
|
|
9754
|
-
/**
|
|
9755
|
-
|
|
9756
|
-
|
|
10226
|
+
/**
|
|
10227
|
+
* Presence status to display. `'dnd'` and `'oof'` are deprecated aliases of `'do-not-disturb'`
|
|
10228
|
+
* and `'out-of-office'`: they render the same and warn once in development (removed in 1.0).
|
|
10229
|
+
* @default 'available'
|
|
10230
|
+
*/
|
|
10231
|
+
status?: PresenceStatus;
|
|
10232
|
+
/**
|
|
10233
|
+
* Size of the presence indicator. In the `badge` slot of an Avatar it is sized from the avatar.
|
|
9757
10234
|
* @default 'medium'
|
|
9758
10235
|
*/
|
|
9759
10236
|
size?: Size;
|
|
@@ -9779,8 +10256,11 @@ export declare interface PresenceProps extends UsePresenceOptions {
|
|
|
9779
10256
|
children: React_2.ReactElement | ((presence: UsePresenceResult) => React_2.ReactNode);
|
|
9780
10257
|
}
|
|
9781
10258
|
|
|
9782
|
-
/**
|
|
9783
|
-
|
|
10259
|
+
/**
|
|
10260
|
+
* User presence status for Avatar and Persona components. `'dnd'` and `'oof'` are deprecated
|
|
10261
|
+
* aliases of `'do-not-disturb'` and `'out-of-office'` ({@link DeprecatedPresenceStatus}).
|
|
10262
|
+
*/
|
|
10263
|
+
export declare type PresenceStatus = 'available' | 'busy' | 'away' | 'offline' | 'do-not-disturb' | 'out-of-office' | DeprecatedPresenceStatus;
|
|
9784
10264
|
|
|
9785
10265
|
/**
|
|
9786
10266
|
* Shows the progress of a task, or that a task is running (indeterminate, `value` omitted).
|
|
@@ -12019,11 +12499,11 @@ export declare interface TableRowProps extends React_2.HTMLAttributes<HTMLTableR
|
|
|
12019
12499
|
* `TabListPanels`) for React Server Components, which cannot use the dotted form.
|
|
12020
12500
|
*/
|
|
12021
12501
|
export declare const TabList: {
|
|
12022
|
-
({ value: valueProp, defaultValue: defaultValueProp, onValueChange, orientation: orientationProp, selectTabOnFocus, selectedValue, defaultSelectedValue, onTabSelect, vertical, className, children, onKeyDown, onFocus, ref, ...rest }: TabListProps): React_2.JSX.Element;
|
|
12502
|
+
({ value: valueProp, defaultValue: defaultValueProp, onValueChange, orientation: orientationProp, appearance, size, selectTabOnFocus, selectedValue, defaultSelectedValue, onTabSelect, vertical, className, children, onKeyDown, onFocus, ref, ...rest }: TabListProps): React_2.JSX.Element;
|
|
12023
12503
|
displayName: string;
|
|
12024
12504
|
} & {
|
|
12025
12505
|
Tab: {
|
|
12026
|
-
({ value, id: idProp, className, children, onClick, ref, ...rest }: TabProps): React_2.JSX.Element;
|
|
12506
|
+
({ value, id: idProp, icon, className, children, onClick, ref, ...rest }: TabProps): React_2.JSX.Element;
|
|
12027
12507
|
displayName: string;
|
|
12028
12508
|
};
|
|
12029
12509
|
Panel: {
|
|
@@ -12036,6 +12516,9 @@ export declare const TabList: {
|
|
|
12036
12516
|
};
|
|
12037
12517
|
};
|
|
12038
12518
|
|
|
12519
|
+
/** The look of a TabList: an underline, subtle fills, or circular subtle or filled tabs. */
|
|
12520
|
+
export declare type TabListAppearance = 'transparent' | 'subtle' | 'subtle-circular' | 'filled-circular';
|
|
12521
|
+
|
|
12039
12522
|
/** TabList: `root` on the `role="tablist"` element. */
|
|
12040
12523
|
export declare const tabListClassNames: {
|
|
12041
12524
|
readonly root: "wave-tab-list";
|
|
@@ -12098,6 +12581,19 @@ export declare interface TabListProps extends Omit<React_2.HTMLAttributes<HTMLDi
|
|
|
12098
12581
|
* @default 'horizontal'
|
|
12099
12582
|
*/
|
|
12100
12583
|
orientation?: Orientation;
|
|
12584
|
+
/**
|
|
12585
|
+
* Look of the tabs: `transparent` underlines the selected tab, `subtle` and `subtle-circular`
|
|
12586
|
+
* fill it with a subtle color (square or fully rounded), `filled-circular` fills it with the
|
|
12587
|
+
* primary color. In forced colors the selected tab keeps a Highlight outline (or underline) in
|
|
12588
|
+
* every appearance.
|
|
12589
|
+
* @default 'transparent'
|
|
12590
|
+
*/
|
|
12591
|
+
appearance?: TabListAppearance;
|
|
12592
|
+
/**
|
|
12593
|
+
* Size of the tabs: their padding and type (`medium` is 14px text on 16 by 8px padding).
|
|
12594
|
+
* @default 'medium'
|
|
12595
|
+
*/
|
|
12596
|
+
size?: CoreSize;
|
|
12101
12597
|
/**
|
|
12102
12598
|
* Whether moving focus with the arrow keys, Home and End also selects the tab (automatic
|
|
12103
12599
|
* activation, as in 0.5). With `false`, the keys only move focus and Enter, Space or a click
|
|
@@ -12129,13 +12625,14 @@ export declare interface TabListProps extends Omit<React_2.HTMLAttributes<HTMLDi
|
|
|
12129
12625
|
* with its value is mounted.
|
|
12130
12626
|
*/
|
|
12131
12627
|
export declare const TabListTab: {
|
|
12132
|
-
({ value, id: idProp, className, children, onClick, ref, ...rest }: TabProps): React_2.JSX.Element;
|
|
12628
|
+
({ value, id: idProp, icon, className, children, onClick, ref, ...rest }: TabProps): React_2.JSX.Element;
|
|
12133
12629
|
displayName: string;
|
|
12134
12630
|
};
|
|
12135
12631
|
|
|
12136
12632
|
/** TabList.Tab: `root` on the `role="tab"` button. */
|
|
12137
12633
|
export declare const tabListTabClassNames: {
|
|
12138
12634
|
readonly root: "wave-tab-list-tab";
|
|
12635
|
+
readonly icon: "wave-tab-list-tab__icon";
|
|
12139
12636
|
};
|
|
12140
12637
|
|
|
12141
12638
|
/** Properties for the TabPanel sub-component. */
|
|
@@ -12156,6 +12653,11 @@ export declare interface TabPanelsProps extends React_2.HTMLAttributes<HTMLDivEl
|
|
|
12156
12653
|
export declare interface TabProps extends React_2.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
12157
12654
|
/** Unique value identifying this tab (and its panel). */
|
|
12158
12655
|
value: string;
|
|
12656
|
+
/**
|
|
12657
|
+
* An icon before the text, hidden from assistive technology. A tab with an icon and no text is
|
|
12658
|
+
* icon-only (a square hit area): name it with `aria-label`, or a development warning asks for it.
|
|
12659
|
+
*/
|
|
12660
|
+
icon?: Slot<'span'>;
|
|
12159
12661
|
/** Ref to the tab `<button>`. */
|
|
12160
12662
|
ref?: React_2.Ref<HTMLButtonElement>;
|
|
12161
12663
|
}
|