@wallarm-org/design-system 1.29.0 → 1.30.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.
@@ -0,0 +1,32 @@
1
+ import type { ButtonHTMLAttributes, FC, HTMLAttributes, Ref } from 'react';
2
+ import { Avatar as ArkAvatar } from '@ark-ui/react/avatar';
3
+ import type { VariantProps } from 'class-variance-authority';
4
+ import { type TestableProps } from '../../utils/testId';
5
+ import { avatarVariants } from './classes';
6
+ export type AvatarStatusChangeDetails = ArkAvatar.StatusChangeDetails;
7
+ type AvatarButtonAttributes = Pick<ButtonHTMLAttributes<HTMLButtonElement>, 'disabled' | 'type' | 'name' | 'value' | 'form'>;
8
+ interface AvatarBaseProps extends HTMLAttributes<HTMLElement>, VariantProps<typeof avatarVariants>, TestableProps {
9
+ ref?: Ref<HTMLElement>;
10
+ onStatusChange?: (details: AvatarStatusChangeDetails) => void;
11
+ }
12
+ type AvatarRootProps = ({
13
+ /** Root tag. 'button' makes the avatar itself interactive (e.g. inside FileUploadTrigger asChild). */
14
+ as?: 'span';
15
+ /** Render the single child element as the root instead of `as`; takes precedence over it. */
16
+ asChild?: false;
17
+ } & {
18
+ [K in keyof AvatarButtonAttributes]?: never;
19
+ }) | ({
20
+ as: 'button';
21
+ asChild?: false;
22
+ } & AvatarButtonAttributes) | ({
23
+ as?: 'span' | 'button';
24
+ asChild: true;
25
+ } & AvatarButtonAttributes);
26
+ export type AvatarProps = AvatarBaseProps & AvatarRootProps;
27
+ /**
28
+ * A user's photo on a rounded plate, falling back to initials or an icon while the photo loads,
29
+ * when it fails, or when there is none.
30
+ */
31
+ export declare const Avatar: FC<AvatarProps>;
32
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import code_connect from "@figma/code-connect";
3
+ import { Avatar, AvatarFallback, AvatarImage } from "./index.js";
4
+ const AVATAR_URL = 'https://www.figma.com/design/VKb5gW46uSGw0rqrhZsbXT/WADS-Components?node-id=12336-5504';
5
+ code_connect.connect(Avatar, AVATAR_URL, {
6
+ variant: {
7
+ Photo: 'On'
8
+ },
9
+ example: ()=>/*#__PURE__*/ jsxs(Avatar, {
10
+ children: [
11
+ /*#__PURE__*/ jsx(AvatarImage, {
12
+ src: "/me.png"
13
+ }),
14
+ /*#__PURE__*/ jsx(AvatarFallback, {
15
+ name: "Ada Lovelace"
16
+ })
17
+ ]
18
+ })
19
+ });
20
+ code_connect.connect(Avatar, AVATAR_URL, {
21
+ variant: {
22
+ Photo: 'Off'
23
+ },
24
+ example: ()=>/*#__PURE__*/ jsx(Avatar, {
25
+ children: /*#__PURE__*/ jsx(AvatarFallback, {})
26
+ })
27
+ });
@@ -0,0 +1,42 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Avatar } from "@ark-ui/react/avatar";
3
+ import { cn } from "../../utils/cn.js";
4
+ import { TestIdProvider } from "../../utils/testId.js";
5
+ import { avatarVariants } from "./classes.js";
6
+ const Avatar_Avatar = ({ ref, id, size, as: Tag = 'span', asChild = false, disabled, type, name, value, form, onStatusChange, className, children, 'data-testid': testId, ...props })=>{
7
+ const role = props.role ?? (props['aria-label'] && !asChild && 'button' !== Tag ? 'img' : void 0);
8
+ const buttonAttributes = asChild || 'button' === Tag ? Object.fromEntries(Object.entries({
9
+ disabled,
10
+ name,
11
+ value,
12
+ form
13
+ }).filter(([, v])=>void 0 !== v)) : {};
14
+ return /*#__PURE__*/ jsx(TestIdProvider, {
15
+ value: testId,
16
+ children: /*#__PURE__*/ jsx(Avatar.Root, {
17
+ "data-slot": "avatar",
18
+ ...props,
19
+ ids: id ? {
20
+ root: id
21
+ } : void 0,
22
+ ...buttonAttributes,
23
+ ref: ref,
24
+ role: role,
25
+ ...asChild && type ? {
26
+ type
27
+ } : {},
28
+ "data-testid": testId,
29
+ onStatusChange: onStatusChange,
30
+ className: cn(avatarVariants({
31
+ size
32
+ }), className),
33
+ asChild: true,
34
+ children: asChild ? children : /*#__PURE__*/ jsx(Tag, {
35
+ type: 'button' === Tag ? type ?? 'button' : void 0,
36
+ children: children
37
+ })
38
+ })
39
+ });
40
+ };
41
+ Avatar_Avatar.displayName = 'Avatar';
42
+ export { Avatar_Avatar as Avatar };
@@ -0,0 +1,11 @@
1
+ import type { ComponentType, FC, HTMLAttributes, Ref } from 'react';
2
+ import { type SvgIconProps } from '../../icons';
3
+ export interface AvatarFallbackProps extends HTMLAttributes<HTMLSpanElement> {
4
+ ref?: Ref<HTMLSpanElement>;
5
+ /** Initials are taken from this: first letter of the first and of the last word. */
6
+ name?: string;
7
+ /** Shown when there are no children and `name` gives no initials. */
8
+ icon?: ComponentType<SvgIconProps>;
9
+ }
10
+ /** Shown while the photo loads, when it fails, and when there is none. */
11
+ export declare const AvatarFallback: FC<AvatarFallbackProps>;
@@ -0,0 +1,25 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Avatar } from "@ark-ui/react/avatar";
3
+ import { UserRound } from "../../icons/index.js";
4
+ import { cn } from "../../utils/cn.js";
5
+ import { getInitials } from "../../utils/getInitials.js";
6
+ import { useTestId } from "../../utils/testId.js";
7
+ import { avatarFallbackClassNames } from "./classes.js";
8
+ const AvatarFallback = ({ ref, name, icon: Icon = UserRound, className, children, ...props })=>{
9
+ const testId = useTestId('fallback');
10
+ const initials = name ? getInitials(name) : '';
11
+ const showsInitials = null == children && '' !== initials;
12
+ return /*#__PURE__*/ jsx(Avatar.Fallback, {
13
+ "aria-hidden": true,
14
+ ...props,
15
+ ref: ref,
16
+ "data-slot": "avatar-fallback",
17
+ "data-testid": testId,
18
+ className: cn(avatarFallbackClassNames, showsInitials && 'text-text-primary', className),
19
+ children: children ?? (initials || /*#__PURE__*/ jsx(Icon, {
20
+ size: "md"
21
+ }))
22
+ });
23
+ };
24
+ AvatarFallback.displayName = 'AvatarFallback';
25
+ export { AvatarFallback };
@@ -0,0 +1,9 @@
1
+ import type { FC, ImgHTMLAttributes, Ref } from 'react';
2
+ export interface AvatarImageProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, 'id'> {
3
+ ref?: Ref<HTMLImageElement>;
4
+ }
5
+ /**
6
+ * The photo. Always render it — Ark tracks `src` changes on the mounted element — and pass
7
+ * `src={undefined}` for "no photo". Decorative by default (`alt=''`).
8
+ */
9
+ export declare const AvatarImage: FC<AvatarImageProps>;
@@ -0,0 +1,18 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Avatar } from "@ark-ui/react/avatar";
3
+ import { cn } from "../../utils/cn.js";
4
+ import { useTestId } from "../../utils/testId.js";
5
+ import { avatarImageClassNames } from "./classes.js";
6
+ const AvatarImage = ({ ref, alt = '', className, ...props })=>{
7
+ const testId = useTestId('image');
8
+ return /*#__PURE__*/ jsx(Avatar.Image, {
9
+ ...props,
10
+ ref: ref,
11
+ alt: alt,
12
+ "data-slot": "avatar-image",
13
+ "data-testid": testId,
14
+ className: cn(avatarImageClassNames, className)
15
+ });
16
+ };
17
+ AvatarImage.displayName = 'AvatarImage';
18
+ export { AvatarImage };
@@ -0,0 +1,11 @@
1
+ import type { FC, HTMLAttributes, Ref } from 'react';
2
+ export interface AvatarOverlayProps extends HTMLAttributes<HTMLSpanElement> {
3
+ ref?: Ref<HTMLSpanElement>;
4
+ /** Keep it shown regardless of hover — e.g. a `Loader` while the new photo uploads. */
5
+ visible?: boolean;
6
+ }
7
+ /**
8
+ * The "change photo" affordance, shown on hover and keyboard focus of an interactive
9
+ * (`as='button'`) avatar. Over a photo it adds a wash; over the fallback it swaps the icon.
10
+ */
11
+ export declare const AvatarOverlay: FC<AvatarOverlayProps>;
@@ -0,0 +1,22 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { RefreshCcw } from "../../icons/index.js";
3
+ import { cn } from "../../utils/cn.js";
4
+ import { useTestId } from "../../utils/testId.js";
5
+ import { avatarOverlayClassNames } from "./classes.js";
6
+ const AvatarOverlay = ({ ref, visible = false, className, children, ...props })=>{
7
+ const testId = useTestId('overlay');
8
+ return /*#__PURE__*/ jsx("span", {
9
+ ...props,
10
+ ref: ref,
11
+ "aria-hidden": true,
12
+ "data-slot": "avatar-overlay",
13
+ "data-visible": visible ? '' : void 0,
14
+ "data-testid": testId,
15
+ className: cn(avatarOverlayClassNames, className),
16
+ children: children ?? /*#__PURE__*/ jsx(RefreshCcw, {
17
+ size: "md"
18
+ })
19
+ });
20
+ };
21
+ AvatarOverlay.displayName = 'AvatarOverlay';
22
+ export { AvatarOverlay };
@@ -0,0 +1,6 @@
1
+ export declare const avatarVariants: (props?: ({
2
+ size?: "sm" | "xs" | null | undefined;
3
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
4
+ export declare const avatarImageClassNames: string;
5
+ export declare const avatarFallbackClassNames: string;
6
+ export declare const avatarOverlayClassNames: string;
@@ -0,0 +1,17 @@
1
+ import { cva } from "class-variance-authority";
2
+ import { cn } from "../../utils/cn.js";
3
+ const avatarVariants = cva(cn('group/avatar inline-grid shrink-0 place-items-center overflow-hidden align-middle *:col-start-1 *:row-start-1', 'border border-border-primary bg-states-primary-hover text-icon-primary font-sans font-medium', 'branded:border-border-brand branded:bg-states-brand-hover branded:text-icon-brand', 'has-[>img[data-state=visible]]:border-0', 'hover:not-disabled:[&:has(>[data-slot=avatar-overlay])>[data-slot=avatar-fallback]]:invisible', 'focus-visible:[&:has(>[data-slot=avatar-overlay])>[data-slot=avatar-fallback]]:invisible', '[&:has(>[data-slot=avatar-overlay][data-visible])>[data-slot=avatar-fallback]]:invisible', 'enabled:cursor-pointer disabled:cursor-not-allowed', 'focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-focus-primary'), {
4
+ variants: {
5
+ size: {
6
+ xs: 'size-24 rounded-8 text-2xs',
7
+ sm: 'size-32 rounded-12 text-xs'
8
+ }
9
+ },
10
+ defaultVariants: {
11
+ size: 'sm'
12
+ }
13
+ });
14
+ const avatarImageClassNames = cn('size-full object-cover data-[state=hidden]:hidden');
15
+ const avatarFallbackClassNames = cn('inline-flex items-center justify-center select-none data-[state=hidden]:hidden');
16
+ const avatarOverlayClassNames = cn('hidden size-full place-items-center text-icon-primary', 'group-hover/avatar:grid group-focus-visible/avatar:grid group-disabled/avatar:not-data-[visible]:hidden', 'data-[visible]:grid', 'group-has-[>img[data-state=visible]]/avatar:bg-component-avatar-overlay');
17
+ export { avatarFallbackClassNames, avatarImageClassNames, avatarOverlayClassNames, avatarVariants };
@@ -0,0 +1,4 @@
1
+ export { Avatar, type AvatarProps, type AvatarStatusChangeDetails } from './Avatar';
2
+ export { AvatarFallback, type AvatarFallbackProps } from './AvatarFallback';
3
+ export { AvatarImage, type AvatarImageProps } from './AvatarImage';
4
+ export { AvatarOverlay, type AvatarOverlayProps } from './AvatarOverlay';
@@ -0,0 +1,4 @@
1
+ export { Avatar } from "./Avatar.js";
2
+ export { AvatarFallback } from "./AvatarFallback.js";
3
+ export { AvatarImage } from "./AvatarImage.js";
4
+ export { AvatarOverlay } from "./AvatarOverlay.js";
@@ -4,5 +4,10 @@ export type FileUploadTriggerProps = ButtonProps;
4
4
  /**
5
5
  * "Select file" button — the compact picker for when space is tight. Takes every
6
6
  * `Button` prop (defaults: primary / brand / large). Hidden (read-only) and blocked like the Area.
7
+ *
8
+ * `asChild`: no Button is rendered. The single child element (e.g. `<Avatar as='button'>`)
9
+ * becomes the trigger and receives `data-slot`, `data-testid`, `aria-describedby`, `disabled` and the
10
+ * Ark trigger props. Button-only props (`variant`, `color`, `size`, `loading`, `fullWidth`, `as`) are
11
+ * ignored. Pass `disabled` / `aria-describedby` here, not on the child — a child value wins the merge.
7
12
  */
8
13
  export declare const FileUploadTrigger: FC<FileUploadTriggerProps>;
@@ -4,7 +4,7 @@ import { Share } from "../../icons/index.js";
4
4
  import { useTestId } from "../../utils/testId.js";
5
5
  import { Button } from "../Button/index.js";
6
6
  import { useRequiredFileUploadRootContext } from "./FileUploadContext.js";
7
- const FileUploadTrigger = ({ children, disabled, 'data-testid': testIdProp, 'aria-describedby': describedByProp, ...props })=>{
7
+ const FileUploadTrigger = ({ children, disabled, asChild = false, 'data-testid': testIdProp, 'aria-describedby': describedByProp, ...props })=>{
8
8
  const ctx = useRequiredFileUploadRootContext('FileUploadTrigger');
9
9
  const testId = useTestId('trigger', testIdProp);
10
10
  if (ctx.pickerHidden) return null;
@@ -12,6 +12,22 @@ const FileUploadTrigger = ({ children, disabled, 'data-testid': testIdProp, 'ari
12
12
  describedByProp,
13
13
  ctx.rejections.length ? ctx.errorId : void 0
14
14
  ].filter(Boolean).join(' ') || void 0;
15
+ const shared = {
16
+ 'aria-describedby': describedBy,
17
+ 'data-slot': 'file-upload-trigger',
18
+ 'data-testid': testId,
19
+ disabled: disabled || ctx.pickerBlocked
20
+ };
21
+ if (asChild) {
22
+ const { variant, color, size, loading, fullWidth, as, ref, ...rest } = props;
23
+ return /*#__PURE__*/ jsx(FileUpload.Trigger, {
24
+ ...rest,
25
+ ...shared,
26
+ ref: ref,
27
+ asChild: true,
28
+ children: children
29
+ });
30
+ }
15
31
  return /*#__PURE__*/ jsx(FileUpload.Trigger, {
16
32
  asChild: true,
17
33
  children: /*#__PURE__*/ jsx(Button, {
@@ -19,10 +35,7 @@ const FileUploadTrigger = ({ children, disabled, 'data-testid': testIdProp, 'ari
19
35
  color: "brand",
20
36
  size: "large",
21
37
  ...props,
22
- "aria-describedby": describedBy,
23
- "data-slot": "file-upload-trigger",
24
- "data-testid": testId,
25
- disabled: disabled || ctx.pickerBlocked,
38
+ ...shared,
26
39
  children: children ?? /*#__PURE__*/ jsxs(Fragment, {
27
40
  children: [
28
41
  /*#__PURE__*/ jsx(Share, {}),
@@ -9,3 +9,4 @@ export { FileUploadItemGroup, type FileUploadItemGroupProps } from './FileUpload
9
9
  export { FileUploadItemReplaceTrigger, type FileUploadItemReplaceTriggerProps, } from './FileUploadItemReplaceTrigger';
10
10
  export { FileUploadTrigger, type FileUploadTriggerProps } from './FileUploadTrigger';
11
11
  export type { FileUploadErrorCode, FileUploadItemFile, FileUploadRejection } from './types';
12
+ export { useFilePreviewUrl } from './useFilePreviewUrl';
@@ -8,3 +8,4 @@ export { FileUploadItemDeleteTrigger } from "./FileUploadItemDeleteTrigger.js";
8
8
  export { FileUploadItemGroup } from "./FileUploadItemGroup.js";
9
9
  export { FileUploadItemReplaceTrigger } from "./FileUploadItemReplaceTrigger.js";
10
10
  export { FileUploadTrigger } from "./FileUploadTrigger.js";
11
+ export { useFilePreviewUrl } from "./useFilePreviewUrl.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * An object URL for previewing a picked file (e.g. in `AvatarImage`), revoked when the file
3
+ * changes or the component unmounts. The effect manages the blob URL's lifetime — an external
4
+ * resource, not derived state.
5
+ */
6
+ export declare const useFilePreviewUrl: (file?: File | null) => string | undefined;
@@ -0,0 +1,14 @@
1
+ import { useEffect, useState } from "react";
2
+ const useFilePreviewUrl = (file)=>{
3
+ const [url, setUrl] = useState();
4
+ useEffect(()=>{
5
+ if (!file) return void setUrl(void 0);
6
+ const next = URL.createObjectURL(file);
7
+ setUrl(next);
8
+ return ()=>URL.revokeObjectURL(next);
9
+ }, [
10
+ file
11
+ ]);
12
+ return url;
13
+ };
14
+ export { useFilePreviewUrl };
@@ -10,7 +10,7 @@ export interface NavRailItemProps extends AnchorHTMLAttributes<HTMLAnchorElement
10
10
  active?: boolean;
11
11
  /** Seats the icon on a soft plate, for the signed-in user's item at the foot of the rail. */
12
12
  avatar?: boolean;
13
- /** User photo for the plate (implies `avatar`). The icon stays underneath and returns if the photo fails to load. */
13
+ /** User photo for the plate (implies `avatar`). The icon shows while it loads and if it fails. */
14
14
  avatarSrc?: string;
15
15
  }
16
16
  export declare const NavRailItem: FC<NavRailItemProps>;
@@ -1,9 +1,10 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { Fragment, useRef, useState } from "react";
2
+ import { Fragment, useRef } from "react";
3
3
  import { composeRefs } from "@radix-ui/react-compose-refs";
4
4
  import { Slot, Slottable } from "@radix-ui/react-slot";
5
5
  import { cn } from "../../utils/cn.js";
6
6
  import { useTestId } from "../../utils/testId.js";
7
+ import { Avatar, AvatarFallback, AvatarImage } from "../Avatar/index.js";
7
8
  import { Kbd } from "../Kbd/index.js";
8
9
  import { Tooltip } from "../Tooltip/index.js";
9
10
  import { TooltipContent } from "../Tooltip/TooltipContent.js";
@@ -16,8 +17,6 @@ const NavRailItem = ({ ref, asChild = false, icon: Icon, label, shortcut, active
16
17
  const testId = useTestId('item', testIdProp);
17
18
  const Comp = asChild ? Slot : 'a';
18
19
  const internalRef = useRef(null);
19
- const [failedSrc, setFailedSrc] = useState();
20
- const photo = avatarSrc && avatarSrc !== failedSrc ? avatarSrc : void 0;
21
20
  const hasPlate = avatar || void 0 !== avatarSrc;
22
21
  const showsLabel = 'expanded' === mode || 'compact' === mode && !hasPlate;
23
22
  const fallbackName = showsLabel || 'string' != typeof label ? void 0 : label;
@@ -37,18 +36,16 @@ const NavRailItem = ({ ref, asChild = false, icon: Icon, label, shortcut, active
37
36
  children: [
38
37
  /*#__PURE__*/ jsx("span", {
39
38
  className: "flex shrink-0 items-center justify-center",
40
- children: hasPlate ? /*#__PURE__*/ jsxs("span", {
39
+ children: hasPlate ? /*#__PURE__*/ jsxs(Avatar, {
40
+ size: "xs",
41
41
  "data-slot": "nav-rail-item-avatar",
42
- className: cn('-m-4 grid size-24 place-items-center overflow-hidden rounded-8 bg-states-primary-hover branded:bg-states-brand-hover branded:text-icon-brand *:col-start-1 *:row-start-1', !photo && 'border border-border-primary branded:border-border-brand'),
42
+ className: "-m-4",
43
43
  children: [
44
- /*#__PURE__*/ jsx(Icon, {
45
- size: "md"
44
+ /*#__PURE__*/ jsx(AvatarImage, {
45
+ src: avatarSrc
46
46
  }),
47
- photo && /*#__PURE__*/ jsx("img", {
48
- src: photo,
49
- alt: "",
50
- className: "size-full object-cover",
51
- onError: ()=>setFailedSrc(photo)
47
+ /*#__PURE__*/ jsx(AvatarFallback, {
48
+ icon: Icon
52
49
  })
53
50
  ]
54
51
  }) : /*#__PURE__*/ jsx(Icon, {
package/dist/index.d.ts CHANGED
@@ -17,6 +17,7 @@ export { Alert, AlertClose, type AlertCloseProps, type AlertColor, AlertContent,
17
17
  export { AnimatedBackground, type AnimatedBackgroundProps, } from './components/AnimatedBackground';
18
18
  export { AppShell, AppShellHeader, type AppShellHeaderProps, type AppShellProps, AppShellRail, type AppShellRailProps, AppShellRemote, type AppShellRemoteProps, } from './components/AppShell';
19
19
  export { Attribute, AttributeActions, AttributeActionsContent, type AttributeActionsContentProps, AttributeActionsItem, type AttributeActionsItemProps, type AttributeActionsProps, AttributeActionsTarget, type AttributeActionsTargetProps, AttributeLabel, AttributeLabelDescription, type AttributeLabelDescriptionProps, AttributeLabelInfo, type AttributeLabelInfoProps, type AttributeLabelProps, type AttributeProps, AttributeValue, type AttributeValueProps, } from './components/Attribute';
20
+ export { Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, type AvatarImageProps, AvatarOverlay, type AvatarOverlayProps, type AvatarProps, type AvatarStatusChangeDetails, } from './components/Avatar';
20
21
  export { Badge, type BadgeProps } from './components/Badge';
21
22
  export { Banner, BannerClose, type BannerCloseProps, BannerContent, type BannerContentProps, BannerControls, type BannerControlsProps, BannerDescription, type BannerDescriptionProps, BannerIcon, type BannerIconProps, BannerLink, type BannerLinkProps, type BannerProps, BannerTitle, type BannerTitleProps, type BannerVariant, } from './components/Banner';
22
23
  export { Breadcrumbs, BreadcrumbsEllipsis, type BreadcrumbsEllipsisProps, BreadcrumbsItem, type BreadcrumbsItemProps, type BreadcrumbsProps, BreadcrumbsScopeSwitcher, type BreadcrumbsScopeSwitcherProps, BreadcrumbsSeparator, type BreadcrumbsSeparatorProps, type ScopeSwitcherItem, } from './components/Breadcrumbs';
@@ -35,7 +36,7 @@ export { DropdownMenu, DropdownMenuContent, DropdownMenuContextTrigger, Dropdown
35
36
  export { EmptyState, EmptyStateActions, EmptyStateDescription, EmptyStateIllustration, EmptyStateLink, EmptyStateMessage, EmptyStateTitle, } from './components/EmptyState';
36
37
  export { FeedbackPulse, type FeedbackPulseCloseReason, type FeedbackPulseProps, } from './components/FeedbackPulse';
37
38
  export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, } from './components/Field';
38
- export { FileUpload, FileUploadDropzone, type FileUploadDropzoneProps, FileUploadError, type FileUploadErrorCode, type FileUploadErrorProps, FileUploadItem, FileUploadItemAction, type FileUploadItemActionProps, FileUploadItemDeleteTrigger, type FileUploadItemDeleteTriggerProps, type FileUploadItemFile, FileUploadItemGroup, type FileUploadItemGroupProps, type FileUploadItemProps, FileUploadItemReplaceTrigger, type FileUploadItemReplaceTriggerProps, type FileUploadProps, type FileUploadRejection, FileUploadTrigger, type FileUploadTriggerProps, fileUploadDropzoneVariants, fileUploadItemVariants, fileUploadVariants, } from './components/FileUpload';
39
+ export { FileUpload, FileUploadDropzone, type FileUploadDropzoneProps, FileUploadError, type FileUploadErrorCode, type FileUploadErrorProps, FileUploadItem, FileUploadItemAction, type FileUploadItemActionProps, FileUploadItemDeleteTrigger, type FileUploadItemDeleteTriggerProps, type FileUploadItemFile, FileUploadItemGroup, type FileUploadItemGroupProps, type FileUploadItemProps, FileUploadItemReplaceTrigger, type FileUploadItemReplaceTriggerProps, type FileUploadProps, type FileUploadRejection, FileUploadTrigger, type FileUploadTriggerProps, fileUploadDropzoneVariants, fileUploadItemVariants, fileUploadVariants, useFilePreviewUrl, } from './components/FileUpload';
39
40
  export { FilterDropdown, FilterDropdownAllOption, type FilterDropdownAllOptionProps, FilterDropdownClear, type FilterDropdownClearProps, FilterDropdownContent, type FilterDropdownContentProps, FilterDropdownEmpty, type FilterDropdownEmptyProps, FilterDropdownFooter, FilterDropdownFooterClear, type FilterDropdownFooterClearProps, type FilterDropdownFooterProps, FilterDropdownGroup, FilterDropdownGroupLabel, type FilterDropdownGroupLabelProps, type FilterDropdownGroupProps, type FilterDropdownOpenChangeDetails, FilterDropdownOption, type FilterDropdownOptionProps, type FilterDropdownProps, FilterDropdownSearch, type FilterDropdownSearchProps, FilterDropdownSelected, type FilterDropdownSelectedProps, FilterDropdownTrigger, type FilterDropdownTriggerProps, type FilterDropdownValueChangeDetails, filterDropdownControlVariants, filterDropdownTriggerVariants, type UseFilterDropdownResult, useFilterDropdown, } from './components/FilterDropdown';
40
41
  export { type Condition, type ExprNode, type FieldMetadata, type FieldType, FilterInput, FilterInputChip, type FilterInputChipData, type FilterInputChipProps, type FilterInputChipVariant, FilterInputFieldMenu, type FilterInputFieldMenuProps, FilterInputOperatorMenu, type FilterInputOperatorMenuProps, type FilterInputProps, type FilterOperator, type Group, } from './components/FilterInput';
41
42
  export { Flex, type FlexProps } from './components/Flex';
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ export { Alert, AlertClose, AlertContent, AlertControls, AlertDescription, Alert
6
6
  export { AnimatedBackground } from "./components/AnimatedBackground/index.js";
7
7
  export { AppShell, AppShellHeader, AppShellRail, AppShellRemote } from "./components/AppShell/index.js";
8
8
  export { Attribute, AttributeActions, AttributeActionsContent, AttributeActionsItem, AttributeActionsTarget, AttributeLabel, AttributeLabelDescription, AttributeLabelInfo, AttributeValue } from "./components/Attribute/index.js";
9
+ export { Avatar, AvatarFallback, AvatarImage, AvatarOverlay } from "./components/Avatar/index.js";
9
10
  export { Badge } from "./components/Badge/index.js";
10
11
  export { Banner, BannerClose, BannerContent, BannerControls, BannerDescription, BannerIcon, BannerLink, BannerTitle } from "./components/Banner/index.js";
11
12
  export { Breadcrumbs, BreadcrumbsEllipsis, BreadcrumbsItem, BreadcrumbsScopeSwitcher, BreadcrumbsSeparator } from "./components/Breadcrumbs/index.js";
@@ -24,7 +25,7 @@ export { DropdownMenu, DropdownMenuContent, DropdownMenuContextTrigger, Dropdown
24
25
  export { EmptyState, EmptyStateActions, EmptyStateDescription, EmptyStateIllustration, EmptyStateLink, EmptyStateMessage, EmptyStateTitle } from "./components/EmptyState/index.js";
25
26
  export { FeedbackPulse } from "./components/FeedbackPulse/index.js";
26
27
  export { Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle } from "./components/Field/index.js";
27
- export { FileUpload, FileUploadDropzone, FileUploadError, FileUploadItem, FileUploadItemAction, FileUploadItemDeleteTrigger, FileUploadItemGroup, FileUploadItemReplaceTrigger, FileUploadTrigger, fileUploadDropzoneVariants, fileUploadItemVariants, fileUploadVariants } from "./components/FileUpload/index.js";
28
+ export { FileUpload, FileUploadDropzone, FileUploadError, FileUploadItem, FileUploadItemAction, FileUploadItemDeleteTrigger, FileUploadItemGroup, FileUploadItemReplaceTrigger, FileUploadTrigger, fileUploadDropzoneVariants, fileUploadItemVariants, fileUploadVariants, useFilePreviewUrl } from "./components/FileUpload/index.js";
28
29
  export { FilterDropdown, FilterDropdownAllOption, FilterDropdownClear, FilterDropdownContent, FilterDropdownEmpty, FilterDropdownFooter, FilterDropdownFooterClear, FilterDropdownGroup, FilterDropdownGroupLabel, FilterDropdownOption, FilterDropdownSearch, FilterDropdownSelected, FilterDropdownTrigger, filterDropdownControlVariants, filterDropdownTriggerVariants, useFilterDropdown } from "./components/FilterDropdown/index.js";
29
30
  export { FilterInput, FilterInputChip, FilterInputFieldMenu, FilterInputOperatorMenu } from "./components/FilterInput/index.js";
30
31
  export { Flex } from "./components/Flex/index.js";