@borisj74/bv-ds 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -5093,18 +5093,18 @@ function AdvancedFilterBar({
5093
5093
  ] });
5094
5094
  }
5095
5095
  var hierarchyClasses = {
5096
- Primary: "bg-brand-solid text-white border-2 border-white/[0.12] hover:bg-bg-brand-solid-hover",
5097
- Secondary: "bg-bg-primary text-text-secondary border border-border-primary",
5098
- Tertiary: "bg-transparent text-text-tertiary border-0",
5099
- "Link color": "bg-transparent text-text-brand-secondary border-0 p-0",
5100
- "Link gray": "bg-transparent text-text-tertiary border-0 p-0"
5096
+ Primary: "bg-bg-brand-solid text-text-white border-2 border-white/[0.12] shadow-skeuomorphic hover:bg-bg-brand-solid-hover",
5097
+ Secondary: "bg-bg-primary text-text-secondary border border-border-border-primary shadow-skeuomorphic hover:bg-bg-primary-hover",
5098
+ Tertiary: "bg-transparent text-text-tertiary border-0 hover:bg-bg-secondary",
5099
+ "Link color": "bg-transparent text-text-brand-secondary border-0 p-0 hover:text-text-brand-secondary-hover",
5100
+ "Link gray": "bg-transparent text-text-tertiary border-0 p-0 hover:text-text-tertiary-hover"
5101
5101
  };
5102
5102
  var sizeClasses = {
5103
- xs: "px-[10px] py-sm text-xs",
5104
- sm: "px-lg py-md text-xs",
5105
- md: "px-[14px] py-[10px] text-sm",
5106
- lg: "px-xl py-[10px] text-md",
5107
- xl: "px-[18px] py-lg text-md"
5103
+ xs: "px-[10px] py-sm gap-xs text-xs font-semibold",
5104
+ sm: "px-lg py-md gap-xs text-xs font-semibold",
5105
+ md: "px-[14px] py-[10px] gap-xs text-sm font-semibold",
5106
+ lg: "px-xl py-[10px] gap-sm text-md font-semibold",
5107
+ xl: "px-[18px] py-lg gap-sm text-md font-semibold"
5108
5108
  };
5109
5109
  function Button({
5110
5110
  hierarchy = "Primary",
@@ -5119,8 +5119,10 @@ function Button({
5119
5119
  "button",
5120
5120
  {
5121
5121
  className: clsx_default(
5122
- "font-body font-semibold rounded-md cursor-pointer transition-colors",
5123
- "disabled:opacity-50 disabled:cursor-not-allowed",
5122
+ "inline-flex items-center justify-center font-body rounded-md",
5123
+ "cursor-pointer transition-colors",
5124
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-brand focus-visible:ring-offset-2",
5125
+ "disabled:opacity-50 disabled:cursor-not-allowed disabled:shadow-none",
5124
5126
  hierarchyClasses[hierarchy],
5125
5127
  sizeClasses[size],
5126
5128
  className
@@ -5128,7 +5130,7 @@ function Button({
5128
5130
  disabled: disabled || loading,
5129
5131
  "aria-disabled": disabled || loading,
5130
5132
  ...rest,
5131
- children: loading ? "Loading\u2026" : children
5133
+ children: loading ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "opacity-70", children: "Loading\u2026" }) : children
5132
5134
  }
5133
5135
  );
5134
5136
  }
@@ -5979,8 +5981,8 @@ function ButtonCloseX({
5979
5981
  );
5980
5982
  }
5981
5983
  var hierarchyClasses2 = {
5982
- Primary: "bg-error-solid text-white border-2 border-white/[0.12] shadow-skeuomorphic hover:bg-error-solid-hover",
5983
- Secondary: "bg-bg-primary text-text-error-primary border border-border-error-subtle shadow-skeuomorphic hover:bg-bg-error-primary",
5984
+ Primary: "bg-bg-error-solid text-text-white border-2 border-white/[0.12] shadow-skeuomorphic hover:bg-bg-error-solid-hover",
5985
+ Secondary: "bg-bg-primary text-text-error-primary border border-border-border-error-subtle shadow-skeuomorphic hover:bg-bg-error-primary",
5984
5986
  Tertiary: "bg-transparent text-text-error-primary border-0 hover:bg-bg-error-primary",
5985
5987
  Link: "bg-transparent text-text-error-primary border-0 p-0 hover:text-text-error-primary"
5986
5988
  };
@@ -6005,7 +6007,7 @@ function ButtonDestructive({
6005
6007
  {
6006
6008
  className: clsx_default(
6007
6009
  "font-body font-semibold rounded-md cursor-pointer transition-colors",
6008
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-error focus-visible:ring-offset-2 focus-visible:ring-offset-bg-primary",
6010
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-border-error focus-visible:ring-offset-2 focus-visible:ring-offset-bg-bg-primary",
6009
6011
  "disabled:opacity-50 disabled:cursor-not-allowed",
6010
6012
  hierarchyClasses2[hierarchy],
6011
6013
  hierarchy === "Link" ? "" : sizeClasses4[size],
@@ -31769,6 +31771,18 @@ var LogOut = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 16 16",
31769
31771
  strokeLinejoin: "round"
31770
31772
  }
31771
31773
  ) });
31774
+ var LayeredAvatar = ({ src, online }) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative inline-flex size-10 shrink-0 rounded-full border-[0.75px] border-border-secondary-alt bg-bg-primary p-[1px] shadow-xs", children: [
31775
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-full overflow-hidden rounded-full border-[0.5px] border-[rgba(0,0,0,0.16)]", children: /* @__PURE__ */ jsxRuntime.jsx("img", { src, alt: "", className: "size-full rounded-full object-cover" }) }),
31776
+ online !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(
31777
+ "span",
31778
+ {
31779
+ className: clsx_default(
31780
+ "absolute bottom-[-2px] right-[-2px] size-[14px] rounded-full border-[1.5px] border-bg-primary",
31781
+ online ? "bg-fg-success-secondary" : "bg-utility-neutral-300"
31782
+ )
31783
+ }
31784
+ )
31785
+ ] });
31772
31786
  var AvatarLabel = ({ avatar, name, email }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-md", children: [
31773
31787
  avatar && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0", children: avatar }),
31774
31788
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col text-left", children: [
@@ -31779,7 +31793,10 @@ var AvatarLabel = ({ avatar, name, email }) => /* @__PURE__ */ jsxRuntime.jsxs("
31779
31793
  function NavAccountCard({
31780
31794
  variant = "card",
31781
31795
  open = false,
31796
+ breakpoint = "desktop",
31782
31797
  avatar,
31798
+ src,
31799
+ online,
31783
31800
  name,
31784
31801
  email,
31785
31802
  onToggle,
@@ -31788,17 +31805,20 @@ function NavAccountCard({
31788
31805
  className,
31789
31806
  ...rest
31790
31807
  }) {
31808
+ const widthClass = breakpoint === "mobile" ? "w-[256px]" : "w-[280px]";
31809
+ const avatarNode = avatar ?? (src !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx(LayeredAvatar, { src, online }) : void 0);
31791
31810
  if (variant === "simple") {
31792
31811
  return /* @__PURE__ */ jsxRuntime.jsxs(
31793
31812
  "div",
31794
31813
  {
31795
31814
  className: clsx_default(
31796
- "relative flex w-[280px] items-start gap-xl border-t border-border-secondary px-md pt-2xl",
31815
+ "relative flex items-start gap-xl border-t border-border-secondary px-md pt-2xl",
31816
+ widthClass,
31797
31817
  className
31798
31818
  ),
31799
31819
  ...rest,
31800
31820
  children: [
31801
- /* @__PURE__ */ jsxRuntime.jsx(AvatarLabel, { avatar, name, email }),
31821
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarLabel, { avatar: avatarNode, name, email }),
31802
31822
  /* @__PURE__ */ jsxRuntime.jsx(
31803
31823
  "button",
31804
31824
  {
@@ -31813,7 +31833,7 @@ function NavAccountCard({
31813
31833
  }
31814
31834
  );
31815
31835
  }
31816
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx_default("relative w-[280px]", className), ...rest, children: [
31836
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx_default("relative", widthClass, className), ...rest, children: [
31817
31837
  /* @__PURE__ */ jsxRuntime.jsxs(
31818
31838
  "button",
31819
31839
  {
@@ -31821,7 +31841,7 @@ function NavAccountCard({
31821
31841
  onClick: onToggle,
31822
31842
  className: "relative flex w-full items-start gap-xl rounded-xl border border-border-secondary bg-bg-primary-alt p-lg text-left shadow-xs",
31823
31843
  children: [
31824
- /* @__PURE__ */ jsxRuntime.jsx(AvatarLabel, { avatar, name, email }),
31844
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarLabel, { avatar: avatarNode, name, email }),
31825
31845
  /* @__PURE__ */ jsxRuntime.jsx(
31826
31846
  "span",
31827
31847
  {
@@ -32937,7 +32957,7 @@ function SidebarNavigation({
32937
32957
  }
32938
32958
  );
32939
32959
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
32940
- /* @__PURE__ */ jsxRuntime.jsx("aside", { className: "hidden h-full md:block", children: rail }),
32960
+ /* @__PURE__ */ jsxRuntime.jsx("aside", { className: "hidden h-full md:flex", children: rail }),
32941
32961
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "md:hidden", children: [
32942
32962
  /* @__PURE__ */ jsxRuntime.jsx(NavMenuButton, { opened: isOpen, onClick: () => setOpen(!isOpen) }),
32943
32963
  isOpen && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fixed inset-0 z-50 flex", children: [
package/dist/index.d.cts CHANGED
@@ -1689,12 +1689,20 @@ interface MultiSelectProps {
1689
1689
  declare function MultiSelect({ options, value, onChange, open, onToggle, label, hint, placeholder, searchable, disabled, invalid, className, }: MultiSelectProps): react.JSX.Element;
1690
1690
 
1691
1691
  type NavAccountCardVariant = "simple" | "card";
1692
+ type NavAccountCardBreakpoint = "desktop" | "mobile";
1692
1693
  interface NavAccountCardProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
1693
1694
  /** `simple` = inline row + sign-out button · `card` = boxed trigger that opens a menu. */
1694
1695
  variant?: NavAccountCardVariant;
1695
1696
  /** card only — whether the dropdown menu is shown. */
1696
1697
  open?: boolean;
1698
+ /** Width: `desktop` = 280px · `mobile` = 256px. */
1699
+ breakpoint?: NavAccountCardBreakpoint;
1700
+ /** Custom avatar node — takes precedence over the built-in `src` treatment. */
1697
1701
  avatar?: ReactNode;
1702
+ /** Image URL for the built-in layered avatar (used when `avatar` is not supplied). */
1703
+ src?: string;
1704
+ /** Status dot on the built-in avatar — `true` online (green) · `false` offline (gray) · omit for none. */
1705
+ online?: boolean;
1698
1706
  name?: ReactNode;
1699
1707
  email?: ReactNode;
1700
1708
  /** card only — toggles the dropdown (fires on trigger click). */
@@ -1718,7 +1726,7 @@ interface NavAccountCardProps extends Omit<HTMLAttributes<HTMLDivElement>, "titl
1718
1726
  * simplification (see figma-map). Width defaults to 280px; override via
1719
1727
  * `className` for mobile (256px).
1720
1728
  */
1721
- declare function NavAccountCard({ variant, open, avatar, name, email, onToggle, onSignOut, menu, className, ...rest }: NavAccountCardProps): react.JSX.Element;
1729
+ declare function NavAccountCard({ variant, open, breakpoint, avatar, src, online, name, email, onToggle, onSignOut, menu, className, ...rest }: NavAccountCardProps): react.JSX.Element;
1722
1730
 
1723
1731
  type NavAccountCardMenuItemType = "menu-item" | "account";
1724
1732
  interface NavAccountCardMenuItemProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "name" | "type"> {
@@ -2759,4 +2767,4 @@ declare namespace index {
2759
2767
  export { index_BoxIllustration as BoxIllustration, index_CloudIllustration as CloudIllustration, index_CreditCardIllustration as CreditCardIllustration, index_DocumentsIllustration as DocumentsIllustration };
2760
2768
  }
2761
2769
 
2762
- export { ActivityFeed, type ActivityFeedDivider, type ActivityFeedProps, ActivityGauge, type ActivityGaugeLegend, type ActivityGaugeProps, type ActivityGaugeSeries, type ActivityGaugeSize, AdvancedFilterBar, type AdvancedFilterBarProps, Alert, type AlertAction, type AlertColor, type AlertProps, type AlertSize, Avatar, AvatarAddButton, type AvatarAddButtonProps, type AvatarAddButtonSize, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarGroupSize, AvatarLabelGroup, type AvatarLabelGroupProps, type AvatarLabelGroupSize, AvatarProfilePhoto, type AvatarProfilePhotoProps, type AvatarProfilePhotoSize, type AvatarProps, type AvatarSize, BadgeCloseX, type BadgeCloseXProps, type BadgeCloseXShape, type BadgeColor, type BadgeCommonProps, BadgeGroup, type BadgeGroupBadgePosition, type BadgeGroupProps, type BadgeGroupSize, type BadgeGroupType, type BadgeSize, BreadcrumbButtonBase, type BreadcrumbButtonBaseProps, type BreadcrumbButtonType, Breadcrumbs, type BreadcrumbsDivider, type BreadcrumbsProps, Button, ButtonCloseX, type ButtonCloseXProps, type ButtonCloseXSize, ButtonDestructive, type ButtonDestructiveHierarchy, type ButtonDestructiveProps, type ButtonDestructiveSize, ButtonGroup, type ButtonGroupProps, ButtonGroupSegment, type ButtonGroupSegmentProps, type ButtonGroupSegmentSize, type ButtonProps, ButtonUtility, type ButtonUtilityProps, type ButtonUtilitySize, type ButtonUtilityVariant, CalendarCell, CalendarCellDayWeekView, type CalendarCellDayWeekViewProps, type CalendarCellProps, CalendarColumnHeader, type CalendarColumnHeaderOrientation, type CalendarColumnHeaderProps, CalendarDateIcon, type CalendarDateIconProps, CalendarEvent, type CalendarEventColor, CalendarEventDayWeekView, type CalendarEventDayWeekViewProps, type CalendarEventProps, CalendarHeader, type CalendarHeaderProps, CalendarRowLabel, type CalendarRowLabelProps, CalendarTimemarker, type CalendarTimemarkerAlign, type CalendarTimemarkerProps, type CalendarView, CalendarViewDropdown, type CalendarViewDropdownProps, type CalendarViewOption, CardHeader, type CardHeaderProps, CarouselArrow, type CarouselArrowDirection, type CarouselArrowProps, type CarouselArrowSize, CarouselImage, type CarouselImageProps, Change, type ChangeProps, type ChangeTrend, type ChangeType, ChartLegend, type ChartLegendItem, type ChartLegendPosition, type ChartLegendProps, ChartMarker, type ChartMarkerLine, type ChartMarkerProps, ChartMini, type ChartMiniDatum, type ChartMiniProps, type ChartMiniTrend, type ChartSeries, type ChartStyle, ChartTooltip, type ChartTooltipPayloadItem, type ChartTooltipProps, type CheckControlSize, Checkbox, type CheckboxProps, CodeSnippet, type CodeSnippetProps, CodeSnippetTabs, type CodeSnippetTabsProps, ColorBadge, type ColorBadgeProps, CommandBar, CommandBarFooter, type CommandBarFooterHint, type CommandBarFooterProps, CommandBarMenuSection, type CommandBarMenuSectionProps, CommandBarNavigationIcon, type CommandBarNavigationIconProps, type CommandBarProps, CommandDropdownMenuItem, type CommandDropdownMenuItemProps, CommandInput, type CommandInputProps, CommandShortcut, type CommandShortcutProps, ContentDivider, type ContentDividerProps, type ContentDividerStyle, type ContentDividerType, ContentFeatureText, type ContentFeatureTextProps, type ContentFeatureTextSize, ContentHeading, type ContentHeadingProps, type ContentHeadingSize, ContentParagraph, type ContentParagraphProps, type ContentParagraphSize, ContentQuote, type ContentQuoteAlign, type ContentQuoteProps, type ContentQuoteSize, ContentRule, type ContentRuleProps, type ContentRuleSize, ContextMenu, type ContextMenuProps, type ContextMenuState, DatePickerCell, type DatePickerCellProps, type DatePickerCellType, DatePickerListItem, type DatePickerListItemProps, DatePickerMenu, type DatePickerMenuProps, DropdownAccountListItem, type DropdownAccountListItemProps, DropdownMenuFooter, type DropdownMenuFooterProps, type DropdownMenuFooterType, DropdownMenuHeader, type DropdownMenuHeaderProps, type DropdownMenuHeaderType, DropdownMenuItemInsetIcon, type DropdownMenuItemInsetIconProps, type DropdownMenuItemInsetIconType, DropdownMenuListItem, type DropdownMenuListItemProps, EmptyState, type EmptyStateProps, type EmptyStateSize, FeedItemBase, type FeedItemBaseProps, type FeedItemSize, FileUpload, FileUploadBase, type FileUploadBaseProps, FileUploadItemBase, type FileUploadItemBaseProps, type FileUploadItemIconType, type FileUploadItemStatus, type FileUploadItemType, type FileUploadProps, FilterBar, type FilterBarProps, FilterTabs, type FilterTabsProps, FiltersDropdownMenu, type FiltersDropdownMenuProps, FiltersSlideoutMenu, type FiltersSlideoutMenuProps, type HeaderNavItem, HeaderNavigation, type HeaderNavigationProps, type HeaderNavigationType, HelpIcon, type HelpIconProps, InputField, type InputFieldProps, type InputFieldSize, type InputFieldType, LeadingInputField, type LeadingInputFieldProps, LineAndBarChart, type LineAndBarChartProps, LinkMessage, type LinkMessageProps, type LinkMessageType, LoadingIndicator, type LoadingIndicatorProps, type LoadingIndicatorSize, type LoadingIndicatorStyle, MediaMessage, type MediaMessageProps, type MediaMessageType, MegaInputFieldBase, type MegaInputFieldBaseProps, type MegaInputFieldBaseSize, Message, MessageAction, MessageActionButton, type MessageActionButtonProps, MessageActionPanel, type MessageActionPanelProps, type MessageActionProps, type MessageActionType, type MessageBubbleTone, type MessageProps, MessageReaction, type MessageReactionProps, type MessageStatus, MessageStatusIcon, type MessageStatusIconProps, type MessageType, MetricItem, type MetricItemProps, Modal, ModalActions, type ModalActionsProps, type ModalActionsType, ModalHeader, type ModalHeaderProps, type ModalHeaderType, type ModalProps, type ModalSize, ModernBadge, type ModernBadgeProps, MultiSelect, type MultiSelectOption, type MultiSelectProps, NavAccountCard, NavAccountCardMenuItem, type NavAccountCardMenuItemProps, type NavAccountCardMenuItemType, type NavAccountCardProps, type NavAccountCardVariant, NavButton, type NavButtonProps, NavFeaturedCard, type NavFeaturedCardProps, NavItemBase, type NavItemBaseProps, NavItemDropdownBase, type NavItemDropdownBaseProps, NavMenuButton, type NavMenuButtonProps, Notification, type NotificationProps, type NotificationVariant, NumberInput, type NumberInputLayout, type NumberInputProps, PageHeader, type PageHeaderProps, type PageHeaderStyle, Pagination, PaginationButtonGroupBase, type PaginationButtonGroupBaseProps, type PaginationButtonGroupType, PaginationCards, type PaginationCardsProps, type PaginationCardsVariant, PaginationDotGroup, type PaginationDotGroupProps, PaginationDotIndicator, type PaginationDotIndicatorProps, type PaginationDotSize, type PaginationDotVariant, PaginationNumberBase, type PaginationNumberBaseProps, type PaginationNumberShape, type PaginationProps, type PaginationType, PieChart, type PieChartProps, type PieChartSize, type PieSlice, PillBadge, type PillBadgeProps, ProgressBar, type ProgressBarLabel, type ProgressBarProps, ProgressCircle, type ProgressCircleProps, type ProgressCircleShape, type ProgressCircleSize, RadarChart, type RadarChartProps, type RadarLegendPosition, Radio, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupItemSize, type RadioGroupItemType, type RadioGroupProps, type RadioProps, SectionFooter, type SectionFooterProps, type SectionFooterType, SectionHeader, type SectionHeaderProps, SectionLabel, type SectionLabelProps, type SectionLabelSize, Select, SelectMenuItem, type SelectMenuItemProps, type SelectMenuItemSize, type SelectProps, type SelectSize, type SelectType, SidebarNavigation, type SidebarNavigationProps, type SidebarNavigationType, SlideOutMenuHeader, type SlideOutMenuHeaderProps, SlideoutMenu, type SlideoutMenuProps, type SlideoutMenuSide, type SlideoutMenuSize, Slider, type SliderLabel, type SliderProps, type SocialBrand, SocialButton, type SocialButtonProps, type SocialButtonSize, type SocialButtonTheme, StatusIcon, type StatusIconProps, type StatusIconType, StepBase, type StepBaseProps, StepIconBase, type StepIconBaseProps, type StepIconSize, type StepIconType, type StepOrientation, type StepStatus, TabButtonBase, type TabButtonBaseProps, type TabButtonSize, type TabButtonType, type TabItem, TableCell, type TableCellProps, type TableCellSize, TableHeaderCell, type TableHeaderCellProps, type TableHeaderCellSize, TableHeaderLabel, type TableHeaderLabelArrow, type TableHeaderLabelProps, Tabs, type TabsOrientation, type TabsProps, Tag, type TagProps, type TagSize, TagsInputField, type TagsInputFieldProps, type TagsInputVariant, TextEditorToolbar, TextEditorToolbarDivider, type TextEditorToolbarProps, TextEditorTooltip, type TextEditorTooltipProps, TextareaInputField, type TextareaInputFieldProps, Toggle, type ToggleProps, type ToggleSize, type ToggleType, Tooltip, type TooltipArrow, type TooltipProps, TrailingInputField, type TrailingInputFieldProps, type TreeNode, TreeView, TreeViewConnector, type TreeViewConnectorProps, type TreeViewConnectorSize, type TreeViewConnectorType, TreeViewItem, type TreeViewItemProps, type TreeViewItemSize, type TreeViewProps, type UseContextMenuReturn, type VerificationCodeDigits, VerificationCodeInput, type VerificationCodeInputProps, type VerificationCodeSize, index as illustrations, useContextMenu };
2770
+ export { ActivityFeed, type ActivityFeedDivider, type ActivityFeedProps, ActivityGauge, type ActivityGaugeLegend, type ActivityGaugeProps, type ActivityGaugeSeries, type ActivityGaugeSize, AdvancedFilterBar, type AdvancedFilterBarProps, Alert, type AlertAction, type AlertColor, type AlertProps, type AlertSize, Avatar, AvatarAddButton, type AvatarAddButtonProps, type AvatarAddButtonSize, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarGroupSize, AvatarLabelGroup, type AvatarLabelGroupProps, type AvatarLabelGroupSize, AvatarProfilePhoto, type AvatarProfilePhotoProps, type AvatarProfilePhotoSize, type AvatarProps, type AvatarSize, BadgeCloseX, type BadgeCloseXProps, type BadgeCloseXShape, type BadgeColor, type BadgeCommonProps, BadgeGroup, type BadgeGroupBadgePosition, type BadgeGroupProps, type BadgeGroupSize, type BadgeGroupType, type BadgeSize, BreadcrumbButtonBase, type BreadcrumbButtonBaseProps, type BreadcrumbButtonType, Breadcrumbs, type BreadcrumbsDivider, type BreadcrumbsProps, Button, ButtonCloseX, type ButtonCloseXProps, type ButtonCloseXSize, ButtonDestructive, type ButtonDestructiveHierarchy, type ButtonDestructiveProps, type ButtonDestructiveSize, ButtonGroup, type ButtonGroupProps, ButtonGroupSegment, type ButtonGroupSegmentProps, type ButtonGroupSegmentSize, type ButtonProps, ButtonUtility, type ButtonUtilityProps, type ButtonUtilitySize, type ButtonUtilityVariant, CalendarCell, CalendarCellDayWeekView, type CalendarCellDayWeekViewProps, type CalendarCellProps, CalendarColumnHeader, type CalendarColumnHeaderOrientation, type CalendarColumnHeaderProps, CalendarDateIcon, type CalendarDateIconProps, CalendarEvent, type CalendarEventColor, CalendarEventDayWeekView, type CalendarEventDayWeekViewProps, type CalendarEventProps, CalendarHeader, type CalendarHeaderProps, CalendarRowLabel, type CalendarRowLabelProps, CalendarTimemarker, type CalendarTimemarkerAlign, type CalendarTimemarkerProps, type CalendarView, CalendarViewDropdown, type CalendarViewDropdownProps, type CalendarViewOption, CardHeader, type CardHeaderProps, CarouselArrow, type CarouselArrowDirection, type CarouselArrowProps, type CarouselArrowSize, CarouselImage, type CarouselImageProps, Change, type ChangeProps, type ChangeTrend, type ChangeType, ChartLegend, type ChartLegendItem, type ChartLegendPosition, type ChartLegendProps, ChartMarker, type ChartMarkerLine, type ChartMarkerProps, ChartMini, type ChartMiniDatum, type ChartMiniProps, type ChartMiniTrend, type ChartSeries, type ChartStyle, ChartTooltip, type ChartTooltipPayloadItem, type ChartTooltipProps, type CheckControlSize, Checkbox, type CheckboxProps, CodeSnippet, type CodeSnippetProps, CodeSnippetTabs, type CodeSnippetTabsProps, ColorBadge, type ColorBadgeProps, CommandBar, CommandBarFooter, type CommandBarFooterHint, type CommandBarFooterProps, CommandBarMenuSection, type CommandBarMenuSectionProps, CommandBarNavigationIcon, type CommandBarNavigationIconProps, type CommandBarProps, CommandDropdownMenuItem, type CommandDropdownMenuItemProps, CommandInput, type CommandInputProps, CommandShortcut, type CommandShortcutProps, ContentDivider, type ContentDividerProps, type ContentDividerStyle, type ContentDividerType, ContentFeatureText, type ContentFeatureTextProps, type ContentFeatureTextSize, ContentHeading, type ContentHeadingProps, type ContentHeadingSize, ContentParagraph, type ContentParagraphProps, type ContentParagraphSize, ContentQuote, type ContentQuoteAlign, type ContentQuoteProps, type ContentQuoteSize, ContentRule, type ContentRuleProps, type ContentRuleSize, ContextMenu, type ContextMenuProps, type ContextMenuState, DatePickerCell, type DatePickerCellProps, type DatePickerCellType, DatePickerListItem, type DatePickerListItemProps, DatePickerMenu, type DatePickerMenuProps, DropdownAccountListItem, type DropdownAccountListItemProps, DropdownMenuFooter, type DropdownMenuFooterProps, type DropdownMenuFooterType, DropdownMenuHeader, type DropdownMenuHeaderProps, type DropdownMenuHeaderType, DropdownMenuItemInsetIcon, type DropdownMenuItemInsetIconProps, type DropdownMenuItemInsetIconType, DropdownMenuListItem, type DropdownMenuListItemProps, EmptyState, type EmptyStateProps, type EmptyStateSize, FeedItemBase, type FeedItemBaseProps, type FeedItemSize, FileUpload, FileUploadBase, type FileUploadBaseProps, FileUploadItemBase, type FileUploadItemBaseProps, type FileUploadItemIconType, type FileUploadItemStatus, type FileUploadItemType, type FileUploadProps, FilterBar, type FilterBarProps, FilterTabs, type FilterTabsProps, FiltersDropdownMenu, type FiltersDropdownMenuProps, FiltersSlideoutMenu, type FiltersSlideoutMenuProps, type HeaderNavItem, HeaderNavigation, type HeaderNavigationProps, type HeaderNavigationType, HelpIcon, type HelpIconProps, InputField, type InputFieldProps, type InputFieldSize, type InputFieldType, LeadingInputField, type LeadingInputFieldProps, LineAndBarChart, type LineAndBarChartProps, LinkMessage, type LinkMessageProps, type LinkMessageType, LoadingIndicator, type LoadingIndicatorProps, type LoadingIndicatorSize, type LoadingIndicatorStyle, MediaMessage, type MediaMessageProps, type MediaMessageType, MegaInputFieldBase, type MegaInputFieldBaseProps, type MegaInputFieldBaseSize, Message, MessageAction, MessageActionButton, type MessageActionButtonProps, MessageActionPanel, type MessageActionPanelProps, type MessageActionProps, type MessageActionType, type MessageBubbleTone, type MessageProps, MessageReaction, type MessageReactionProps, type MessageStatus, MessageStatusIcon, type MessageStatusIconProps, type MessageType, MetricItem, type MetricItemProps, Modal, ModalActions, type ModalActionsProps, type ModalActionsType, ModalHeader, type ModalHeaderProps, type ModalHeaderType, type ModalProps, type ModalSize, ModernBadge, type ModernBadgeProps, MultiSelect, type MultiSelectOption, type MultiSelectProps, NavAccountCard, type NavAccountCardBreakpoint, NavAccountCardMenuItem, type NavAccountCardMenuItemProps, type NavAccountCardMenuItemType, type NavAccountCardProps, type NavAccountCardVariant, NavButton, type NavButtonProps, NavFeaturedCard, type NavFeaturedCardProps, NavItemBase, type NavItemBaseProps, NavItemDropdownBase, type NavItemDropdownBaseProps, NavMenuButton, type NavMenuButtonProps, Notification, type NotificationProps, type NotificationVariant, NumberInput, type NumberInputLayout, type NumberInputProps, PageHeader, type PageHeaderProps, type PageHeaderStyle, Pagination, PaginationButtonGroupBase, type PaginationButtonGroupBaseProps, type PaginationButtonGroupType, PaginationCards, type PaginationCardsProps, type PaginationCardsVariant, PaginationDotGroup, type PaginationDotGroupProps, PaginationDotIndicator, type PaginationDotIndicatorProps, type PaginationDotSize, type PaginationDotVariant, PaginationNumberBase, type PaginationNumberBaseProps, type PaginationNumberShape, type PaginationProps, type PaginationType, PieChart, type PieChartProps, type PieChartSize, type PieSlice, PillBadge, type PillBadgeProps, ProgressBar, type ProgressBarLabel, type ProgressBarProps, ProgressCircle, type ProgressCircleProps, type ProgressCircleShape, type ProgressCircleSize, RadarChart, type RadarChartProps, type RadarLegendPosition, Radio, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupItemSize, type RadioGroupItemType, type RadioGroupProps, type RadioProps, SectionFooter, type SectionFooterProps, type SectionFooterType, SectionHeader, type SectionHeaderProps, SectionLabel, type SectionLabelProps, type SectionLabelSize, Select, SelectMenuItem, type SelectMenuItemProps, type SelectMenuItemSize, type SelectProps, type SelectSize, type SelectType, SidebarNavigation, type SidebarNavigationProps, type SidebarNavigationType, SlideOutMenuHeader, type SlideOutMenuHeaderProps, SlideoutMenu, type SlideoutMenuProps, type SlideoutMenuSide, type SlideoutMenuSize, Slider, type SliderLabel, type SliderProps, type SocialBrand, SocialButton, type SocialButtonProps, type SocialButtonSize, type SocialButtonTheme, StatusIcon, type StatusIconProps, type StatusIconType, StepBase, type StepBaseProps, StepIconBase, type StepIconBaseProps, type StepIconSize, type StepIconType, type StepOrientation, type StepStatus, TabButtonBase, type TabButtonBaseProps, type TabButtonSize, type TabButtonType, type TabItem, TableCell, type TableCellProps, type TableCellSize, TableHeaderCell, type TableHeaderCellProps, type TableHeaderCellSize, TableHeaderLabel, type TableHeaderLabelArrow, type TableHeaderLabelProps, Tabs, type TabsOrientation, type TabsProps, Tag, type TagProps, type TagSize, TagsInputField, type TagsInputFieldProps, type TagsInputVariant, TextEditorToolbar, TextEditorToolbarDivider, type TextEditorToolbarProps, TextEditorTooltip, type TextEditorTooltipProps, TextareaInputField, type TextareaInputFieldProps, Toggle, type ToggleProps, type ToggleSize, type ToggleType, Tooltip, type TooltipArrow, type TooltipProps, TrailingInputField, type TrailingInputFieldProps, type TreeNode, TreeView, TreeViewConnector, type TreeViewConnectorProps, type TreeViewConnectorSize, type TreeViewConnectorType, TreeViewItem, type TreeViewItemProps, type TreeViewItemSize, type TreeViewProps, type UseContextMenuReturn, type VerificationCodeDigits, VerificationCodeInput, type VerificationCodeInputProps, type VerificationCodeSize, index as illustrations, useContextMenu };
package/dist/index.d.ts CHANGED
@@ -1689,12 +1689,20 @@ interface MultiSelectProps {
1689
1689
  declare function MultiSelect({ options, value, onChange, open, onToggle, label, hint, placeholder, searchable, disabled, invalid, className, }: MultiSelectProps): react.JSX.Element;
1690
1690
 
1691
1691
  type NavAccountCardVariant = "simple" | "card";
1692
+ type NavAccountCardBreakpoint = "desktop" | "mobile";
1692
1693
  interface NavAccountCardProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
1693
1694
  /** `simple` = inline row + sign-out button · `card` = boxed trigger that opens a menu. */
1694
1695
  variant?: NavAccountCardVariant;
1695
1696
  /** card only — whether the dropdown menu is shown. */
1696
1697
  open?: boolean;
1698
+ /** Width: `desktop` = 280px · `mobile` = 256px. */
1699
+ breakpoint?: NavAccountCardBreakpoint;
1700
+ /** Custom avatar node — takes precedence over the built-in `src` treatment. */
1697
1701
  avatar?: ReactNode;
1702
+ /** Image URL for the built-in layered avatar (used when `avatar` is not supplied). */
1703
+ src?: string;
1704
+ /** Status dot on the built-in avatar — `true` online (green) · `false` offline (gray) · omit for none. */
1705
+ online?: boolean;
1698
1706
  name?: ReactNode;
1699
1707
  email?: ReactNode;
1700
1708
  /** card only — toggles the dropdown (fires on trigger click). */
@@ -1718,7 +1726,7 @@ interface NavAccountCardProps extends Omit<HTMLAttributes<HTMLDivElement>, "titl
1718
1726
  * simplification (see figma-map). Width defaults to 280px; override via
1719
1727
  * `className` for mobile (256px).
1720
1728
  */
1721
- declare function NavAccountCard({ variant, open, avatar, name, email, onToggle, onSignOut, menu, className, ...rest }: NavAccountCardProps): react.JSX.Element;
1729
+ declare function NavAccountCard({ variant, open, breakpoint, avatar, src, online, name, email, onToggle, onSignOut, menu, className, ...rest }: NavAccountCardProps): react.JSX.Element;
1722
1730
 
1723
1731
  type NavAccountCardMenuItemType = "menu-item" | "account";
1724
1732
  interface NavAccountCardMenuItemProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "name" | "type"> {
@@ -2759,4 +2767,4 @@ declare namespace index {
2759
2767
  export { index_BoxIllustration as BoxIllustration, index_CloudIllustration as CloudIllustration, index_CreditCardIllustration as CreditCardIllustration, index_DocumentsIllustration as DocumentsIllustration };
2760
2768
  }
2761
2769
 
2762
- export { ActivityFeed, type ActivityFeedDivider, type ActivityFeedProps, ActivityGauge, type ActivityGaugeLegend, type ActivityGaugeProps, type ActivityGaugeSeries, type ActivityGaugeSize, AdvancedFilterBar, type AdvancedFilterBarProps, Alert, type AlertAction, type AlertColor, type AlertProps, type AlertSize, Avatar, AvatarAddButton, type AvatarAddButtonProps, type AvatarAddButtonSize, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarGroupSize, AvatarLabelGroup, type AvatarLabelGroupProps, type AvatarLabelGroupSize, AvatarProfilePhoto, type AvatarProfilePhotoProps, type AvatarProfilePhotoSize, type AvatarProps, type AvatarSize, BadgeCloseX, type BadgeCloseXProps, type BadgeCloseXShape, type BadgeColor, type BadgeCommonProps, BadgeGroup, type BadgeGroupBadgePosition, type BadgeGroupProps, type BadgeGroupSize, type BadgeGroupType, type BadgeSize, BreadcrumbButtonBase, type BreadcrumbButtonBaseProps, type BreadcrumbButtonType, Breadcrumbs, type BreadcrumbsDivider, type BreadcrumbsProps, Button, ButtonCloseX, type ButtonCloseXProps, type ButtonCloseXSize, ButtonDestructive, type ButtonDestructiveHierarchy, type ButtonDestructiveProps, type ButtonDestructiveSize, ButtonGroup, type ButtonGroupProps, ButtonGroupSegment, type ButtonGroupSegmentProps, type ButtonGroupSegmentSize, type ButtonProps, ButtonUtility, type ButtonUtilityProps, type ButtonUtilitySize, type ButtonUtilityVariant, CalendarCell, CalendarCellDayWeekView, type CalendarCellDayWeekViewProps, type CalendarCellProps, CalendarColumnHeader, type CalendarColumnHeaderOrientation, type CalendarColumnHeaderProps, CalendarDateIcon, type CalendarDateIconProps, CalendarEvent, type CalendarEventColor, CalendarEventDayWeekView, type CalendarEventDayWeekViewProps, type CalendarEventProps, CalendarHeader, type CalendarHeaderProps, CalendarRowLabel, type CalendarRowLabelProps, CalendarTimemarker, type CalendarTimemarkerAlign, type CalendarTimemarkerProps, type CalendarView, CalendarViewDropdown, type CalendarViewDropdownProps, type CalendarViewOption, CardHeader, type CardHeaderProps, CarouselArrow, type CarouselArrowDirection, type CarouselArrowProps, type CarouselArrowSize, CarouselImage, type CarouselImageProps, Change, type ChangeProps, type ChangeTrend, type ChangeType, ChartLegend, type ChartLegendItem, type ChartLegendPosition, type ChartLegendProps, ChartMarker, type ChartMarkerLine, type ChartMarkerProps, ChartMini, type ChartMiniDatum, type ChartMiniProps, type ChartMiniTrend, type ChartSeries, type ChartStyle, ChartTooltip, type ChartTooltipPayloadItem, type ChartTooltipProps, type CheckControlSize, Checkbox, type CheckboxProps, CodeSnippet, type CodeSnippetProps, CodeSnippetTabs, type CodeSnippetTabsProps, ColorBadge, type ColorBadgeProps, CommandBar, CommandBarFooter, type CommandBarFooterHint, type CommandBarFooterProps, CommandBarMenuSection, type CommandBarMenuSectionProps, CommandBarNavigationIcon, type CommandBarNavigationIconProps, type CommandBarProps, CommandDropdownMenuItem, type CommandDropdownMenuItemProps, CommandInput, type CommandInputProps, CommandShortcut, type CommandShortcutProps, ContentDivider, type ContentDividerProps, type ContentDividerStyle, type ContentDividerType, ContentFeatureText, type ContentFeatureTextProps, type ContentFeatureTextSize, ContentHeading, type ContentHeadingProps, type ContentHeadingSize, ContentParagraph, type ContentParagraphProps, type ContentParagraphSize, ContentQuote, type ContentQuoteAlign, type ContentQuoteProps, type ContentQuoteSize, ContentRule, type ContentRuleProps, type ContentRuleSize, ContextMenu, type ContextMenuProps, type ContextMenuState, DatePickerCell, type DatePickerCellProps, type DatePickerCellType, DatePickerListItem, type DatePickerListItemProps, DatePickerMenu, type DatePickerMenuProps, DropdownAccountListItem, type DropdownAccountListItemProps, DropdownMenuFooter, type DropdownMenuFooterProps, type DropdownMenuFooterType, DropdownMenuHeader, type DropdownMenuHeaderProps, type DropdownMenuHeaderType, DropdownMenuItemInsetIcon, type DropdownMenuItemInsetIconProps, type DropdownMenuItemInsetIconType, DropdownMenuListItem, type DropdownMenuListItemProps, EmptyState, type EmptyStateProps, type EmptyStateSize, FeedItemBase, type FeedItemBaseProps, type FeedItemSize, FileUpload, FileUploadBase, type FileUploadBaseProps, FileUploadItemBase, type FileUploadItemBaseProps, type FileUploadItemIconType, type FileUploadItemStatus, type FileUploadItemType, type FileUploadProps, FilterBar, type FilterBarProps, FilterTabs, type FilterTabsProps, FiltersDropdownMenu, type FiltersDropdownMenuProps, FiltersSlideoutMenu, type FiltersSlideoutMenuProps, type HeaderNavItem, HeaderNavigation, type HeaderNavigationProps, type HeaderNavigationType, HelpIcon, type HelpIconProps, InputField, type InputFieldProps, type InputFieldSize, type InputFieldType, LeadingInputField, type LeadingInputFieldProps, LineAndBarChart, type LineAndBarChartProps, LinkMessage, type LinkMessageProps, type LinkMessageType, LoadingIndicator, type LoadingIndicatorProps, type LoadingIndicatorSize, type LoadingIndicatorStyle, MediaMessage, type MediaMessageProps, type MediaMessageType, MegaInputFieldBase, type MegaInputFieldBaseProps, type MegaInputFieldBaseSize, Message, MessageAction, MessageActionButton, type MessageActionButtonProps, MessageActionPanel, type MessageActionPanelProps, type MessageActionProps, type MessageActionType, type MessageBubbleTone, type MessageProps, MessageReaction, type MessageReactionProps, type MessageStatus, MessageStatusIcon, type MessageStatusIconProps, type MessageType, MetricItem, type MetricItemProps, Modal, ModalActions, type ModalActionsProps, type ModalActionsType, ModalHeader, type ModalHeaderProps, type ModalHeaderType, type ModalProps, type ModalSize, ModernBadge, type ModernBadgeProps, MultiSelect, type MultiSelectOption, type MultiSelectProps, NavAccountCard, NavAccountCardMenuItem, type NavAccountCardMenuItemProps, type NavAccountCardMenuItemType, type NavAccountCardProps, type NavAccountCardVariant, NavButton, type NavButtonProps, NavFeaturedCard, type NavFeaturedCardProps, NavItemBase, type NavItemBaseProps, NavItemDropdownBase, type NavItemDropdownBaseProps, NavMenuButton, type NavMenuButtonProps, Notification, type NotificationProps, type NotificationVariant, NumberInput, type NumberInputLayout, type NumberInputProps, PageHeader, type PageHeaderProps, type PageHeaderStyle, Pagination, PaginationButtonGroupBase, type PaginationButtonGroupBaseProps, type PaginationButtonGroupType, PaginationCards, type PaginationCardsProps, type PaginationCardsVariant, PaginationDotGroup, type PaginationDotGroupProps, PaginationDotIndicator, type PaginationDotIndicatorProps, type PaginationDotSize, type PaginationDotVariant, PaginationNumberBase, type PaginationNumberBaseProps, type PaginationNumberShape, type PaginationProps, type PaginationType, PieChart, type PieChartProps, type PieChartSize, type PieSlice, PillBadge, type PillBadgeProps, ProgressBar, type ProgressBarLabel, type ProgressBarProps, ProgressCircle, type ProgressCircleProps, type ProgressCircleShape, type ProgressCircleSize, RadarChart, type RadarChartProps, type RadarLegendPosition, Radio, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupItemSize, type RadioGroupItemType, type RadioGroupProps, type RadioProps, SectionFooter, type SectionFooterProps, type SectionFooterType, SectionHeader, type SectionHeaderProps, SectionLabel, type SectionLabelProps, type SectionLabelSize, Select, SelectMenuItem, type SelectMenuItemProps, type SelectMenuItemSize, type SelectProps, type SelectSize, type SelectType, SidebarNavigation, type SidebarNavigationProps, type SidebarNavigationType, SlideOutMenuHeader, type SlideOutMenuHeaderProps, SlideoutMenu, type SlideoutMenuProps, type SlideoutMenuSide, type SlideoutMenuSize, Slider, type SliderLabel, type SliderProps, type SocialBrand, SocialButton, type SocialButtonProps, type SocialButtonSize, type SocialButtonTheme, StatusIcon, type StatusIconProps, type StatusIconType, StepBase, type StepBaseProps, StepIconBase, type StepIconBaseProps, type StepIconSize, type StepIconType, type StepOrientation, type StepStatus, TabButtonBase, type TabButtonBaseProps, type TabButtonSize, type TabButtonType, type TabItem, TableCell, type TableCellProps, type TableCellSize, TableHeaderCell, type TableHeaderCellProps, type TableHeaderCellSize, TableHeaderLabel, type TableHeaderLabelArrow, type TableHeaderLabelProps, Tabs, type TabsOrientation, type TabsProps, Tag, type TagProps, type TagSize, TagsInputField, type TagsInputFieldProps, type TagsInputVariant, TextEditorToolbar, TextEditorToolbarDivider, type TextEditorToolbarProps, TextEditorTooltip, type TextEditorTooltipProps, TextareaInputField, type TextareaInputFieldProps, Toggle, type ToggleProps, type ToggleSize, type ToggleType, Tooltip, type TooltipArrow, type TooltipProps, TrailingInputField, type TrailingInputFieldProps, type TreeNode, TreeView, TreeViewConnector, type TreeViewConnectorProps, type TreeViewConnectorSize, type TreeViewConnectorType, TreeViewItem, type TreeViewItemProps, type TreeViewItemSize, type TreeViewProps, type UseContextMenuReturn, type VerificationCodeDigits, VerificationCodeInput, type VerificationCodeInputProps, type VerificationCodeSize, index as illustrations, useContextMenu };
2770
+ export { ActivityFeed, type ActivityFeedDivider, type ActivityFeedProps, ActivityGauge, type ActivityGaugeLegend, type ActivityGaugeProps, type ActivityGaugeSeries, type ActivityGaugeSize, AdvancedFilterBar, type AdvancedFilterBarProps, Alert, type AlertAction, type AlertColor, type AlertProps, type AlertSize, Avatar, AvatarAddButton, type AvatarAddButtonProps, type AvatarAddButtonSize, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarGroupSize, AvatarLabelGroup, type AvatarLabelGroupProps, type AvatarLabelGroupSize, AvatarProfilePhoto, type AvatarProfilePhotoProps, type AvatarProfilePhotoSize, type AvatarProps, type AvatarSize, BadgeCloseX, type BadgeCloseXProps, type BadgeCloseXShape, type BadgeColor, type BadgeCommonProps, BadgeGroup, type BadgeGroupBadgePosition, type BadgeGroupProps, type BadgeGroupSize, type BadgeGroupType, type BadgeSize, BreadcrumbButtonBase, type BreadcrumbButtonBaseProps, type BreadcrumbButtonType, Breadcrumbs, type BreadcrumbsDivider, type BreadcrumbsProps, Button, ButtonCloseX, type ButtonCloseXProps, type ButtonCloseXSize, ButtonDestructive, type ButtonDestructiveHierarchy, type ButtonDestructiveProps, type ButtonDestructiveSize, ButtonGroup, type ButtonGroupProps, ButtonGroupSegment, type ButtonGroupSegmentProps, type ButtonGroupSegmentSize, type ButtonProps, ButtonUtility, type ButtonUtilityProps, type ButtonUtilitySize, type ButtonUtilityVariant, CalendarCell, CalendarCellDayWeekView, type CalendarCellDayWeekViewProps, type CalendarCellProps, CalendarColumnHeader, type CalendarColumnHeaderOrientation, type CalendarColumnHeaderProps, CalendarDateIcon, type CalendarDateIconProps, CalendarEvent, type CalendarEventColor, CalendarEventDayWeekView, type CalendarEventDayWeekViewProps, type CalendarEventProps, CalendarHeader, type CalendarHeaderProps, CalendarRowLabel, type CalendarRowLabelProps, CalendarTimemarker, type CalendarTimemarkerAlign, type CalendarTimemarkerProps, type CalendarView, CalendarViewDropdown, type CalendarViewDropdownProps, type CalendarViewOption, CardHeader, type CardHeaderProps, CarouselArrow, type CarouselArrowDirection, type CarouselArrowProps, type CarouselArrowSize, CarouselImage, type CarouselImageProps, Change, type ChangeProps, type ChangeTrend, type ChangeType, ChartLegend, type ChartLegendItem, type ChartLegendPosition, type ChartLegendProps, ChartMarker, type ChartMarkerLine, type ChartMarkerProps, ChartMini, type ChartMiniDatum, type ChartMiniProps, type ChartMiniTrend, type ChartSeries, type ChartStyle, ChartTooltip, type ChartTooltipPayloadItem, type ChartTooltipProps, type CheckControlSize, Checkbox, type CheckboxProps, CodeSnippet, type CodeSnippetProps, CodeSnippetTabs, type CodeSnippetTabsProps, ColorBadge, type ColorBadgeProps, CommandBar, CommandBarFooter, type CommandBarFooterHint, type CommandBarFooterProps, CommandBarMenuSection, type CommandBarMenuSectionProps, CommandBarNavigationIcon, type CommandBarNavigationIconProps, type CommandBarProps, CommandDropdownMenuItem, type CommandDropdownMenuItemProps, CommandInput, type CommandInputProps, CommandShortcut, type CommandShortcutProps, ContentDivider, type ContentDividerProps, type ContentDividerStyle, type ContentDividerType, ContentFeatureText, type ContentFeatureTextProps, type ContentFeatureTextSize, ContentHeading, type ContentHeadingProps, type ContentHeadingSize, ContentParagraph, type ContentParagraphProps, type ContentParagraphSize, ContentQuote, type ContentQuoteAlign, type ContentQuoteProps, type ContentQuoteSize, ContentRule, type ContentRuleProps, type ContentRuleSize, ContextMenu, type ContextMenuProps, type ContextMenuState, DatePickerCell, type DatePickerCellProps, type DatePickerCellType, DatePickerListItem, type DatePickerListItemProps, DatePickerMenu, type DatePickerMenuProps, DropdownAccountListItem, type DropdownAccountListItemProps, DropdownMenuFooter, type DropdownMenuFooterProps, type DropdownMenuFooterType, DropdownMenuHeader, type DropdownMenuHeaderProps, type DropdownMenuHeaderType, DropdownMenuItemInsetIcon, type DropdownMenuItemInsetIconProps, type DropdownMenuItemInsetIconType, DropdownMenuListItem, type DropdownMenuListItemProps, EmptyState, type EmptyStateProps, type EmptyStateSize, FeedItemBase, type FeedItemBaseProps, type FeedItemSize, FileUpload, FileUploadBase, type FileUploadBaseProps, FileUploadItemBase, type FileUploadItemBaseProps, type FileUploadItemIconType, type FileUploadItemStatus, type FileUploadItemType, type FileUploadProps, FilterBar, type FilterBarProps, FilterTabs, type FilterTabsProps, FiltersDropdownMenu, type FiltersDropdownMenuProps, FiltersSlideoutMenu, type FiltersSlideoutMenuProps, type HeaderNavItem, HeaderNavigation, type HeaderNavigationProps, type HeaderNavigationType, HelpIcon, type HelpIconProps, InputField, type InputFieldProps, type InputFieldSize, type InputFieldType, LeadingInputField, type LeadingInputFieldProps, LineAndBarChart, type LineAndBarChartProps, LinkMessage, type LinkMessageProps, type LinkMessageType, LoadingIndicator, type LoadingIndicatorProps, type LoadingIndicatorSize, type LoadingIndicatorStyle, MediaMessage, type MediaMessageProps, type MediaMessageType, MegaInputFieldBase, type MegaInputFieldBaseProps, type MegaInputFieldBaseSize, Message, MessageAction, MessageActionButton, type MessageActionButtonProps, MessageActionPanel, type MessageActionPanelProps, type MessageActionProps, type MessageActionType, type MessageBubbleTone, type MessageProps, MessageReaction, type MessageReactionProps, type MessageStatus, MessageStatusIcon, type MessageStatusIconProps, type MessageType, MetricItem, type MetricItemProps, Modal, ModalActions, type ModalActionsProps, type ModalActionsType, ModalHeader, type ModalHeaderProps, type ModalHeaderType, type ModalProps, type ModalSize, ModernBadge, type ModernBadgeProps, MultiSelect, type MultiSelectOption, type MultiSelectProps, NavAccountCard, type NavAccountCardBreakpoint, NavAccountCardMenuItem, type NavAccountCardMenuItemProps, type NavAccountCardMenuItemType, type NavAccountCardProps, type NavAccountCardVariant, NavButton, type NavButtonProps, NavFeaturedCard, type NavFeaturedCardProps, NavItemBase, type NavItemBaseProps, NavItemDropdownBase, type NavItemDropdownBaseProps, NavMenuButton, type NavMenuButtonProps, Notification, type NotificationProps, type NotificationVariant, NumberInput, type NumberInputLayout, type NumberInputProps, PageHeader, type PageHeaderProps, type PageHeaderStyle, Pagination, PaginationButtonGroupBase, type PaginationButtonGroupBaseProps, type PaginationButtonGroupType, PaginationCards, type PaginationCardsProps, type PaginationCardsVariant, PaginationDotGroup, type PaginationDotGroupProps, PaginationDotIndicator, type PaginationDotIndicatorProps, type PaginationDotSize, type PaginationDotVariant, PaginationNumberBase, type PaginationNumberBaseProps, type PaginationNumberShape, type PaginationProps, type PaginationType, PieChart, type PieChartProps, type PieChartSize, type PieSlice, PillBadge, type PillBadgeProps, ProgressBar, type ProgressBarLabel, type ProgressBarProps, ProgressCircle, type ProgressCircleProps, type ProgressCircleShape, type ProgressCircleSize, RadarChart, type RadarChartProps, type RadarLegendPosition, Radio, RadioGroup, RadioGroupItem, type RadioGroupItemProps, type RadioGroupItemSize, type RadioGroupItemType, type RadioGroupProps, type RadioProps, SectionFooter, type SectionFooterProps, type SectionFooterType, SectionHeader, type SectionHeaderProps, SectionLabel, type SectionLabelProps, type SectionLabelSize, Select, SelectMenuItem, type SelectMenuItemProps, type SelectMenuItemSize, type SelectProps, type SelectSize, type SelectType, SidebarNavigation, type SidebarNavigationProps, type SidebarNavigationType, SlideOutMenuHeader, type SlideOutMenuHeaderProps, SlideoutMenu, type SlideoutMenuProps, type SlideoutMenuSide, type SlideoutMenuSize, Slider, type SliderLabel, type SliderProps, type SocialBrand, SocialButton, type SocialButtonProps, type SocialButtonSize, type SocialButtonTheme, StatusIcon, type StatusIconProps, type StatusIconType, StepBase, type StepBaseProps, StepIconBase, type StepIconBaseProps, type StepIconSize, type StepIconType, type StepOrientation, type StepStatus, TabButtonBase, type TabButtonBaseProps, type TabButtonSize, type TabButtonType, type TabItem, TableCell, type TableCellProps, type TableCellSize, TableHeaderCell, type TableHeaderCellProps, type TableHeaderCellSize, TableHeaderLabel, type TableHeaderLabelArrow, type TableHeaderLabelProps, Tabs, type TabsOrientation, type TabsProps, Tag, type TagProps, type TagSize, TagsInputField, type TagsInputFieldProps, type TagsInputVariant, TextEditorToolbar, TextEditorToolbarDivider, type TextEditorToolbarProps, TextEditorTooltip, type TextEditorTooltipProps, TextareaInputField, type TextareaInputFieldProps, Toggle, type ToggleProps, type ToggleSize, type ToggleType, Tooltip, type TooltipArrow, type TooltipProps, TrailingInputField, type TrailingInputFieldProps, type TreeNode, TreeView, TreeViewConnector, type TreeViewConnectorProps, type TreeViewConnectorSize, type TreeViewConnectorType, TreeViewItem, type TreeViewItemProps, type TreeViewItemSize, type TreeViewProps, type UseContextMenuReturn, type VerificationCodeDigits, VerificationCodeInput, type VerificationCodeInputProps, type VerificationCodeSize, index as illustrations, useContextMenu };
package/dist/index.js CHANGED
@@ -5072,18 +5072,18 @@ function AdvancedFilterBar({
5072
5072
  ] });
5073
5073
  }
5074
5074
  var hierarchyClasses = {
5075
- Primary: "bg-brand-solid text-white border-2 border-white/[0.12] hover:bg-bg-brand-solid-hover",
5076
- Secondary: "bg-bg-primary text-text-secondary border border-border-primary",
5077
- Tertiary: "bg-transparent text-text-tertiary border-0",
5078
- "Link color": "bg-transparent text-text-brand-secondary border-0 p-0",
5079
- "Link gray": "bg-transparent text-text-tertiary border-0 p-0"
5075
+ Primary: "bg-bg-brand-solid text-text-white border-2 border-white/[0.12] shadow-skeuomorphic hover:bg-bg-brand-solid-hover",
5076
+ Secondary: "bg-bg-primary text-text-secondary border border-border-border-primary shadow-skeuomorphic hover:bg-bg-primary-hover",
5077
+ Tertiary: "bg-transparent text-text-tertiary border-0 hover:bg-bg-secondary",
5078
+ "Link color": "bg-transparent text-text-brand-secondary border-0 p-0 hover:text-text-brand-secondary-hover",
5079
+ "Link gray": "bg-transparent text-text-tertiary border-0 p-0 hover:text-text-tertiary-hover"
5080
5080
  };
5081
5081
  var sizeClasses = {
5082
- xs: "px-[10px] py-sm text-xs",
5083
- sm: "px-lg py-md text-xs",
5084
- md: "px-[14px] py-[10px] text-sm",
5085
- lg: "px-xl py-[10px] text-md",
5086
- xl: "px-[18px] py-lg text-md"
5082
+ xs: "px-[10px] py-sm gap-xs text-xs font-semibold",
5083
+ sm: "px-lg py-md gap-xs text-xs font-semibold",
5084
+ md: "px-[14px] py-[10px] gap-xs text-sm font-semibold",
5085
+ lg: "px-xl py-[10px] gap-sm text-md font-semibold",
5086
+ xl: "px-[18px] py-lg gap-sm text-md font-semibold"
5087
5087
  };
5088
5088
  function Button({
5089
5089
  hierarchy = "Primary",
@@ -5098,8 +5098,10 @@ function Button({
5098
5098
  "button",
5099
5099
  {
5100
5100
  className: clsx_default(
5101
- "font-body font-semibold rounded-md cursor-pointer transition-colors",
5102
- "disabled:opacity-50 disabled:cursor-not-allowed",
5101
+ "inline-flex items-center justify-center font-body rounded-md",
5102
+ "cursor-pointer transition-colors",
5103
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-brand focus-visible:ring-offset-2",
5104
+ "disabled:opacity-50 disabled:cursor-not-allowed disabled:shadow-none",
5103
5105
  hierarchyClasses[hierarchy],
5104
5106
  sizeClasses[size],
5105
5107
  className
@@ -5107,7 +5109,7 @@ function Button({
5107
5109
  disabled: disabled || loading,
5108
5110
  "aria-disabled": disabled || loading,
5109
5111
  ...rest,
5110
- children: loading ? "Loading\u2026" : children
5112
+ children: loading ? /* @__PURE__ */ jsx("span", { className: "opacity-70", children: "Loading\u2026" }) : children
5111
5113
  }
5112
5114
  );
5113
5115
  }
@@ -5958,8 +5960,8 @@ function ButtonCloseX({
5958
5960
  );
5959
5961
  }
5960
5962
  var hierarchyClasses2 = {
5961
- Primary: "bg-error-solid text-white border-2 border-white/[0.12] shadow-skeuomorphic hover:bg-error-solid-hover",
5962
- Secondary: "bg-bg-primary text-text-error-primary border border-border-error-subtle shadow-skeuomorphic hover:bg-bg-error-primary",
5963
+ Primary: "bg-bg-error-solid text-text-white border-2 border-white/[0.12] shadow-skeuomorphic hover:bg-bg-error-solid-hover",
5964
+ Secondary: "bg-bg-primary text-text-error-primary border border-border-border-error-subtle shadow-skeuomorphic hover:bg-bg-error-primary",
5963
5965
  Tertiary: "bg-transparent text-text-error-primary border-0 hover:bg-bg-error-primary",
5964
5966
  Link: "bg-transparent text-text-error-primary border-0 p-0 hover:text-text-error-primary"
5965
5967
  };
@@ -5984,7 +5986,7 @@ function ButtonDestructive({
5984
5986
  {
5985
5987
  className: clsx_default(
5986
5988
  "font-body font-semibold rounded-md cursor-pointer transition-colors",
5987
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-error focus-visible:ring-offset-2 focus-visible:ring-offset-bg-primary",
5989
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-border-error focus-visible:ring-offset-2 focus-visible:ring-offset-bg-bg-primary",
5988
5990
  "disabled:opacity-50 disabled:cursor-not-allowed",
5989
5991
  hierarchyClasses2[hierarchy],
5990
5992
  hierarchy === "Link" ? "" : sizeClasses4[size],
@@ -31748,6 +31750,18 @@ var LogOut = () => /* @__PURE__ */ jsx("svg", { viewBox: "0 0 16 16", fill: "non
31748
31750
  strokeLinejoin: "round"
31749
31751
  }
31750
31752
  ) });
31753
+ var LayeredAvatar = ({ src, online }) => /* @__PURE__ */ jsxs("span", { className: "relative inline-flex size-10 shrink-0 rounded-full border-[0.75px] border-border-secondary-alt bg-bg-primary p-[1px] shadow-xs", children: [
31754
+ /* @__PURE__ */ jsx("span", { className: "flex size-full overflow-hidden rounded-full border-[0.5px] border-[rgba(0,0,0,0.16)]", children: /* @__PURE__ */ jsx("img", { src, alt: "", className: "size-full rounded-full object-cover" }) }),
31755
+ online !== void 0 && /* @__PURE__ */ jsx(
31756
+ "span",
31757
+ {
31758
+ className: clsx_default(
31759
+ "absolute bottom-[-2px] right-[-2px] size-[14px] rounded-full border-[1.5px] border-bg-primary",
31760
+ online ? "bg-fg-success-secondary" : "bg-utility-neutral-300"
31761
+ )
31762
+ }
31763
+ )
31764
+ ] });
31751
31765
  var AvatarLabel = ({ avatar, name, email }) => /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-md", children: [
31752
31766
  avatar && /* @__PURE__ */ jsx("span", { className: "shrink-0", children: avatar }),
31753
31767
  /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col text-left", children: [
@@ -31758,7 +31772,10 @@ var AvatarLabel = ({ avatar, name, email }) => /* @__PURE__ */ jsxs("div", { cla
31758
31772
  function NavAccountCard({
31759
31773
  variant = "card",
31760
31774
  open = false,
31775
+ breakpoint = "desktop",
31761
31776
  avatar,
31777
+ src,
31778
+ online,
31762
31779
  name,
31763
31780
  email,
31764
31781
  onToggle,
@@ -31767,17 +31784,20 @@ function NavAccountCard({
31767
31784
  className,
31768
31785
  ...rest
31769
31786
  }) {
31787
+ const widthClass = breakpoint === "mobile" ? "w-[256px]" : "w-[280px]";
31788
+ const avatarNode = avatar ?? (src !== void 0 ? /* @__PURE__ */ jsx(LayeredAvatar, { src, online }) : void 0);
31770
31789
  if (variant === "simple") {
31771
31790
  return /* @__PURE__ */ jsxs(
31772
31791
  "div",
31773
31792
  {
31774
31793
  className: clsx_default(
31775
- "relative flex w-[280px] items-start gap-xl border-t border-border-secondary px-md pt-2xl",
31794
+ "relative flex items-start gap-xl border-t border-border-secondary px-md pt-2xl",
31795
+ widthClass,
31776
31796
  className
31777
31797
  ),
31778
31798
  ...rest,
31779
31799
  children: [
31780
- /* @__PURE__ */ jsx(AvatarLabel, { avatar, name, email }),
31800
+ /* @__PURE__ */ jsx(AvatarLabel, { avatar: avatarNode, name, email }),
31781
31801
  /* @__PURE__ */ jsx(
31782
31802
  "button",
31783
31803
  {
@@ -31792,7 +31812,7 @@ function NavAccountCard({
31792
31812
  }
31793
31813
  );
31794
31814
  }
31795
- return /* @__PURE__ */ jsxs("div", { className: clsx_default("relative w-[280px]", className), ...rest, children: [
31815
+ return /* @__PURE__ */ jsxs("div", { className: clsx_default("relative", widthClass, className), ...rest, children: [
31796
31816
  /* @__PURE__ */ jsxs(
31797
31817
  "button",
31798
31818
  {
@@ -31800,7 +31820,7 @@ function NavAccountCard({
31800
31820
  onClick: onToggle,
31801
31821
  className: "relative flex w-full items-start gap-xl rounded-xl border border-border-secondary bg-bg-primary-alt p-lg text-left shadow-xs",
31802
31822
  children: [
31803
- /* @__PURE__ */ jsx(AvatarLabel, { avatar, name, email }),
31823
+ /* @__PURE__ */ jsx(AvatarLabel, { avatar: avatarNode, name, email }),
31804
31824
  /* @__PURE__ */ jsx(
31805
31825
  "span",
31806
31826
  {
@@ -32916,7 +32936,7 @@ function SidebarNavigation({
32916
32936
  }
32917
32937
  );
32918
32938
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
32919
- /* @__PURE__ */ jsx("aside", { className: "hidden h-full md:block", children: rail }),
32939
+ /* @__PURE__ */ jsx("aside", { className: "hidden h-full md:flex", children: rail }),
32920
32940
  /* @__PURE__ */ jsxs("div", { className: "md:hidden", children: [
32921
32941
  /* @__PURE__ */ jsx(NavMenuButton, { opened: isOpen, onClick: () => setOpen(!isOpen) }),
32922
32942
  isOpen && /* @__PURE__ */ jsxs("div", { className: "fixed inset-0 z-50 flex", children: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@borisj74/bv-ds",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "bv-ds — React component library synced from Figma (Untitled UI v8.0), built on Tailwind CSS",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -15,32 +15,44 @@ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
15
15
  loading?: boolean;
16
16
  }
17
17
 
18
- // NOTE: this is a placeholder implementation to verify the build/Storybook
19
- // pipeline end-to-end. The figma-to-react skill should overwrite this with
20
- // the full per-hierarchy/per-size token mapping from design.md §3 (all 5
21
- // sizes, all 5 hierarchies, skeuomorphic shadow stack on Primary/Secondary).
18
+ // Token class names use the doubled-prefix form that matches the nested
19
+ // tailwind-preset.js color groups (v0.1.2+):
20
+ // colors.bg["brand-solid"] → bg-bg-brand-solid
21
+ // colors.text["secondary"] → text-text-secondary
22
+ // colors.border["primary"] → border-border-primary
22
23
  //
23
- // Padding values below use Tailwind arbitrary values ([14px], [10px], etc)
24
- // rather than the spacing-* scale on purpose — design.md §3 confirms the
25
- // real Figma component uses raw px at md/lg/xl, not the nearest token.
26
- // Don't "fix" these to spacing-md/spacing-lg; that would silently diverge
27
- // from the source design.
24
+ // Padding values use Tailwind arbitrary values ([14px], [10px], etc) rather
25
+ // than the spacing-* scale — design.md §3 confirms the real Figma component
26
+ // uses raw px at certain sizes. Don't "fix" these to spacing tokens; that
27
+ // would silently diverge from the source design.
28
+ //
29
+ // Primary/Secondary use the skeuomorphic shadow stack confirmed in design.md:
30
+ // shadow-xs outer + inner border highlight + inner bottom shading.
28
31
 
29
32
  const hierarchyClasses: Record<ButtonHierarchy, string> = {
30
33
  Primary:
31
- "bg-brand-solid text-white border-2 border-white/[0.12] hover:bg-bg-brand-solid-hover",
32
- Secondary: "bg-bg-primary text-text-secondary border border-border-primary",
33
- Tertiary: "bg-transparent text-text-tertiary border-0",
34
- "Link color": "bg-transparent text-text-brand-secondary border-0 p-0",
35
- "Link gray": "bg-transparent text-text-tertiary border-0 p-0",
34
+ "bg-bg-brand-solid text-text-white border-2 border-white/[0.12] shadow-skeuomorphic " +
35
+ "hover:bg-bg-brand-solid-hover",
36
+ Secondary:
37
+ "bg-bg-primary text-text-secondary border border-border-border-primary shadow-skeuomorphic " +
38
+ "hover:bg-bg-primary-hover",
39
+ Tertiary:
40
+ "bg-transparent text-text-tertiary border-0 " +
41
+ "hover:bg-bg-secondary",
42
+ "Link color":
43
+ "bg-transparent text-text-brand-secondary border-0 p-0 " +
44
+ "hover:text-text-brand-secondary-hover",
45
+ "Link gray":
46
+ "bg-transparent text-text-tertiary border-0 p-0 " +
47
+ "hover:text-text-tertiary-hover",
36
48
  };
37
49
 
38
50
  const sizeClasses: Record<ButtonSize, string> = {
39
- xs: "px-[10px] py-sm text-xs",
40
- sm: "px-lg py-md text-xs",
41
- md: "px-[14px] py-[10px] text-sm",
42
- lg: "px-xl py-[10px] text-md",
43
- xl: "px-[18px] py-lg text-md",
51
+ xs: "px-[10px] py-sm gap-xs text-xs font-semibold",
52
+ sm: "px-lg py-md gap-xs text-xs font-semibold",
53
+ md: "px-[14px] py-[10px] gap-xs text-sm font-semibold",
54
+ lg: "px-xl py-[10px] gap-sm text-md font-semibold",
55
+ xl: "px-[18px] py-lg gap-sm text-md font-semibold",
44
56
  };
45
57
 
46
58
  export function Button({
@@ -55,8 +67,10 @@ export function Button({
55
67
  return (
56
68
  <button
57
69
  className={clsx(
58
- "font-body font-semibold rounded-md cursor-pointer transition-colors",
59
- "disabled:opacity-50 disabled:cursor-not-allowed",
70
+ "inline-flex items-center justify-center font-body rounded-md",
71
+ "cursor-pointer transition-colors",
72
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-brand focus-visible:ring-offset-2",
73
+ "disabled:opacity-50 disabled:cursor-not-allowed disabled:shadow-none",
60
74
  hierarchyClasses[hierarchy],
61
75
  sizeClasses[size],
62
76
  className,
@@ -65,7 +79,13 @@ export function Button({
65
79
  aria-disabled={disabled || loading}
66
80
  {...rest}
67
81
  >
68
- {loading ? "Loading…" : children}
82
+ {loading ? (
83
+ <span className="opacity-70">Loading…</span>
84
+ ) : (
85
+ children
86
+ )}
69
87
  </button>
70
88
  );
71
89
  }
90
+
91
+ export default Button;
@@ -20,9 +20,9 @@ export interface ButtonDestructiveProps
20
20
  // error ring (border-error).
21
21
  const hierarchyClasses: Record<ButtonDestructiveHierarchy, string> = {
22
22
  Primary:
23
- "bg-error-solid text-white border-2 border-white/[0.12] shadow-skeuomorphic hover:bg-error-solid-hover",
23
+ "bg-bg-error-solid text-text-white border-2 border-white/[0.12] shadow-skeuomorphic hover:bg-bg-error-solid-hover",
24
24
  Secondary:
25
- "bg-bg-primary text-text-error-primary border border-border-error-subtle shadow-skeuomorphic hover:bg-bg-error-primary",
25
+ "bg-bg-primary text-text-error-primary border border-border-border-error-subtle shadow-skeuomorphic hover:bg-bg-error-primary",
26
26
  Tertiary:
27
27
  "bg-transparent text-text-error-primary border-0 hover:bg-bg-error-primary",
28
28
  Link: "bg-transparent text-text-error-primary border-0 p-0 hover:text-text-error-primary",
@@ -51,7 +51,7 @@ export function ButtonDestructive({
51
51
  <button
52
52
  className={clsx(
53
53
  "font-body font-semibold rounded-md cursor-pointer transition-colors",
54
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-error focus-visible:ring-offset-2 focus-visible:ring-offset-bg-primary",
54
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-border-error focus-visible:ring-offset-2 focus-visible:ring-offset-bg-bg-primary",
55
55
  "disabled:opacity-50 disabled:cursor-not-allowed",
56
56
  hierarchyClasses[hierarchy],
57
57
  hierarchy === "Link" ? "" : sizeClasses[size],
@@ -2,6 +2,7 @@ import { type HTMLAttributes, type ReactNode } from "react";
2
2
  import clsx from "clsx";
3
3
 
4
4
  export type NavAccountCardVariant = "simple" | "card";
5
+ export type NavAccountCardBreakpoint = "desktop" | "mobile";
5
6
 
6
7
  export interface NavAccountCardProps
7
8
  extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
@@ -9,7 +10,14 @@ export interface NavAccountCardProps
9
10
  variant?: NavAccountCardVariant;
10
11
  /** card only — whether the dropdown menu is shown. */
11
12
  open?: boolean;
13
+ /** Width: `desktop` = 280px · `mobile` = 256px. */
14
+ breakpoint?: NavAccountCardBreakpoint;
15
+ /** Custom avatar node — takes precedence over the built-in `src` treatment. */
12
16
  avatar?: ReactNode;
17
+ /** Image URL for the built-in layered avatar (used when `avatar` is not supplied). */
18
+ src?: string;
19
+ /** Status dot on the built-in avatar — `true` online (green) · `false` offline (gray) · omit for none. */
20
+ online?: boolean;
13
21
  name?: ReactNode;
14
22
  email?: ReactNode;
15
23
  /** card only — toggles the dropdown (fires on trigger click). */
@@ -41,6 +49,28 @@ const LogOut = () => (
41
49
  </svg>
42
50
  );
43
51
 
52
+ /**
53
+ * Layered avatar treatment from Figma (node 7891:87996): white outer ring +
54
+ * inner hairline border + status dot. `border-[rgba(0,0,0,0.16)]` is a one-off
55
+ * value (no matching token) per the Figma spec. Used when `src` is supplied and
56
+ * no `avatar` slot is given.
57
+ */
58
+ const LayeredAvatar = ({ src, online }: { src?: string; online?: boolean }) => (
59
+ <span className="relative inline-flex size-10 shrink-0 rounded-full border-[0.75px] border-border-secondary-alt bg-bg-primary p-[1px] shadow-xs">
60
+ <span className="flex size-full overflow-hidden rounded-full border-[0.5px] border-[rgba(0,0,0,0.16)]">
61
+ <img src={src} alt="" className="size-full rounded-full object-cover" />
62
+ </span>
63
+ {online !== undefined && (
64
+ <span
65
+ className={clsx(
66
+ "absolute bottom-[-2px] right-[-2px] size-[14px] rounded-full border-[1.5px] border-bg-primary",
67
+ online ? "bg-fg-success-secondary" : "bg-utility-neutral-300",
68
+ )}
69
+ />
70
+ )}
71
+ </span>
72
+ );
73
+
44
74
  const AvatarLabel = ({ avatar, name, email }: { avatar?: ReactNode; name?: ReactNode; email?: ReactNode }) => (
45
75
  <div className="flex min-w-0 flex-1 items-center gap-md">
46
76
  {avatar && <span className="shrink-0">{avatar}</span>}
@@ -65,7 +95,10 @@ const AvatarLabel = ({ avatar, name, email }: { avatar?: ReactNode; name?: React
65
95
  export function NavAccountCard({
66
96
  variant = "card",
67
97
  open = false,
98
+ breakpoint = "desktop",
68
99
  avatar,
100
+ src,
101
+ online,
69
102
  name,
70
103
  email,
71
104
  onToggle,
@@ -74,16 +107,20 @@ export function NavAccountCard({
74
107
  className,
75
108
  ...rest
76
109
  }: NavAccountCardProps) {
110
+ const widthClass = breakpoint === "mobile" ? "w-[256px]" : "w-[280px]";
111
+ const avatarNode = avatar ?? (src !== undefined ? <LayeredAvatar src={src} online={online} /> : undefined);
112
+
77
113
  if (variant === "simple") {
78
114
  return (
79
115
  <div
80
116
  className={clsx(
81
- "relative flex w-[280px] items-start gap-xl border-t border-border-secondary px-md pt-2xl",
117
+ "relative flex items-start gap-xl border-t border-border-secondary px-md pt-2xl",
118
+ widthClass,
82
119
  className,
83
120
  )}
84
121
  {...rest}
85
122
  >
86
- <AvatarLabel avatar={avatar} name={name} email={email} />
123
+ <AvatarLabel avatar={avatarNode} name={name} email={email} />
87
124
  <button
88
125
  type="button"
89
126
  onClick={onSignOut}
@@ -97,13 +134,13 @@ export function NavAccountCard({
97
134
  }
98
135
 
99
136
  return (
100
- <div className={clsx("relative w-[280px]", className)} {...rest}>
137
+ <div className={clsx("relative", widthClass, className)} {...rest}>
101
138
  <button
102
139
  type="button"
103
140
  onClick={onToggle}
104
141
  className="relative flex w-full items-start gap-xl rounded-xl border border-border-secondary bg-bg-primary-alt p-lg text-left shadow-xs"
105
142
  >
106
- <AvatarLabel avatar={avatar} name={name} email={email} />
143
+ <AvatarLabel avatar={avatarNode} name={name} email={email} />
107
144
  <span
108
145
  className={clsx(
109
146
  "absolute right-[7px] top-[7px] flex items-center justify-center rounded-sm p-sm text-fg-quaternary",
@@ -1,2 +1,6 @@
1
1
  export { NavAccountCard } from "./NavAccountCard";
2
- export type { NavAccountCardProps, NavAccountCardVariant } from "./NavAccountCard";
2
+ export type {
3
+ NavAccountCardProps,
4
+ NavAccountCardVariant,
5
+ NavAccountCardBreakpoint,
6
+ } from "./NavAccountCard";
@@ -79,7 +79,7 @@ export function SidebarNavigation({
79
79
  return (
80
80
  <>
81
81
  {/* Desktop rail */}
82
- <aside className="hidden h-full md:block">{rail}</aside>
82
+ <aside className="hidden h-full md:flex">{rail}</aside>
83
83
 
84
84
  {/* Mobile trigger + drawer */}
85
85
  <div className="md:hidden">
@@ -1,227 +1,238 @@
1
1
  // Shareable Tailwind preset — token names traced from design.md, confirmed
2
2
  // against the live Figma file via figma-map.md token pulls. Consumers extend
3
3
  // their own tailwind.config.js with this preset so generated class names
4
- // (bg-brand-solid, text-secondary, p-md, etc.) match the design tokens
5
- // directly rather than arbitrary values.
4
+ // match the design tokens directly.
6
5
  //
7
6
  // Usage in a consuming app's tailwind.config.js:
8
7
  // const dsPreset = require("@borisj74/bv-ds/tailwind-preset");
9
8
  // module.exports = { presets: [dsPreset], content: [...] };
10
9
  //
11
- // PEER DEPENDENCYRecharts: chart components (_ChartMini, and the deferred
12
- // Line/bar/Pie/Radar wrappers) require `recharts` (>=2) installed in the
13
- // consuming app. Optional peer dependency: install it only if you use the chart
14
- // components. Recharts color props take hex strings, so those components read
15
- // token hex values from this preset directly (not Tailwind class names).
10
+ // KEY NAMINGv0.1.2 fix:
11
+ // Colors are nested under their category group (bg, text, border, fg).
12
+ // Tailwind joins group + key with a hyphen at class-generation time:
13
+ // colors.bg["brand-solid"] → bg-bg-brand-solid ✓
14
+ // colors.text["secondary"] → text-text-secondary ✓
15
+ // colors.border["primary"] → border-border-primary ✓
16
+ // This prevents cross-category collisions (text-secondary #404040 vs
17
+ // bg-secondary #fafafa) that caused the doubled-prefix bug in v0.1.1.
18
+ //
19
+ // Components must use the doubled-prefix form in className:
20
+ // bg-bg-brand-solid, text-text-secondary, border-border-primary, etc.
21
+ //
22
+ // PEER DEPENDENCY — Recharts requires `recharts` (>=2) in consuming app.
16
23
 
17
24
  /** @type {import('tailwindcss').Config} */
18
25
  module.exports = {
19
26
  theme: {
20
27
  extend: {
21
28
  colors: {
22
- // Text — design.md §2 "Color — Text"
23
- "text-primary": "#171717",
24
- "text-primary-on-brand": "#ffffff",
25
- "text-secondary": "#404040",
26
- "text-secondary-hover": "#262626",
27
- "text-secondary-on-brand": "#e9d7fe",
28
- "text-tertiary": "#525252",
29
- "text-tertiary-hover": "#404040",
30
- "text-tertiary-on-brand": "#e9d7fe",
31
- "text-quaternary": "#737373",
32
- "text-quaternary-on-brand": "#d6bbfb",
33
- "text-white": "#ffffff",
34
- "text-placeholder": "#737373",
35
- "text-brand-primary": "#42307d",
36
- "text-brand-secondary": "#6941c6",
37
- "text-brand-secondary-hover": "#53389e",
38
- "text-brand-tertiary": "#7f56d9",
39
- "text-brand-tertiary-alt": "#7f56d9",
40
- "text-error-primary": "#dc2626",
41
- "text-warning-primary": "#ca8a04",
42
- "text-success-primary": "#16a34a",
43
29
 
44
- // Background design.md §2 "Color — Background"
45
- "bg-primary": "#ffffff",
46
- "bg-primary-alt": "#ffffff",
47
- "bg-primary-hover": "#fafafa",
48
- "bg-primary-solid": "#0a0a0a",
49
- "bg-secondary": "#fafafa",
50
- "bg-secondary-alt": "#fafafa",
51
- "bg-secondary-hover": "#f5f5f5",
52
- "bg-secondary-solid": "#525252",
53
- "bg-tertiary": "#f5f5f5",
54
- "bg-quaternary": "#e5e5e5",
55
- "bg-overlay": "#0a0a0a",
56
- "bg-brand-primary": "#f9f5ff",
57
- "bg-brand-primary-alt": "#f9f5ff",
58
- "bg-brand-secondary": "#f4ebff",
59
- "bg-brand-solid": "#7f56d9",
60
- "bg-brand-solid-hover": "#6941c6",
61
- "bg-error-primary": "#fef2f2",
62
- "bg-error-secondary": "#fee2e2",
63
- "bg-error-solid": "#dc2626",
64
- "bg-error-solid-hover": "#b91c1c",
65
- "bg-warning-primary": "#fefce8",
66
- "bg-warning-secondary": "#fef9c3",
67
- "bg-warning-solid": "#ca8a04",
68
- "bg-success-primary": "#f0fdf4",
69
- "bg-success-secondary": "#dcfce7",
70
- "bg-success-solid": "#16a34a",
30
+ // ── Background tokens ─────────────────────────────────────────────
31
+ // Usage: bg-bg-primary, bg-bg-brand-solid, bg-bg-error-solid, etc.
32
+ bg: {
33
+ "primary": "#ffffff",
34
+ "primary-alt": "#ffffff",
35
+ "primary-hover": "#fafafa",
36
+ "primary-solid": "#0a0a0a",
37
+ "secondary": "#fafafa",
38
+ "secondary-alt": "#fafafa",
39
+ "secondary-hover": "#f5f5f5",
40
+ "secondary-solid": "#525252",
41
+ "tertiary": "#f5f5f5",
42
+ "quaternary": "#e5e5e5",
43
+ "overlay": "#0a0a0a",
44
+ "brand-primary": "#f9f5ff",
45
+ "brand-primary-alt": "#f9f5ff",
46
+ "brand-secondary": "#f4ebff",
47
+ "brand-solid": "#7f56d9",
48
+ "brand-solid-hover": "#6941c6",
49
+ "brand-section": "#53389e",
50
+ "brand-section-subtle": "#6941c6",
51
+ "error-primary": "#fef2f2",
52
+ "error-secondary": "#fee2e2",
53
+ "error-solid": "#dc2626",
54
+ "error-solid-hover": "#b91c1c",
55
+ "warning-primary": "#fefce8",
56
+ "warning-secondary": "#fef9c3",
57
+ "warning-solid": "#ca8a04",
58
+ "success-primary": "#f0fdf4",
59
+ "success-secondary": "#dcfce7",
60
+ "success-solid": "#16a34a",
61
+ },
62
+
63
+ // ── Text tokens ───────────────────────────────────────────────────
64
+ // Usage: text-text-primary, text-text-secondary, text-text-brand-secondary, etc.
65
+ text: {
66
+ "primary": "#171717",
67
+ "primary-on-brand": "#ffffff",
68
+ "secondary": "#404040",
69
+ "secondary-hover": "#262626",
70
+ "secondary-on-brand": "#e9d7fe",
71
+ "tertiary": "#525252",
72
+ "tertiary-hover": "#404040",
73
+ "tertiary-on-brand": "#e9d7fe",
74
+ "quaternary": "#737373",
75
+ "quaternary-on-brand": "#d6bbfb",
76
+ "white": "#ffffff",
77
+ "placeholder": "#737373",
78
+ "brand-primary": "#42307d",
79
+ "brand-secondary": "#6941c6",
80
+ "brand-secondary-hover": "#53389e",
81
+ "brand-tertiary": "#7f56d9",
82
+ "brand-tertiary-alt": "#7f56d9",
83
+ "error-primary": "#dc2626",
84
+ "warning-primary": "#ca8a04",
85
+ "success-primary": "#16a34a",
86
+ },
71
87
 
72
- // Border design.md §2 "Color — Border"
73
- "border-primary": "#d4d4d4",
74
- "border-secondary": "#e5e5e5",
75
- "border-secondary-alt": "rgba(0,0,0,0.1)",
76
- "border-tertiary": "#f5f5f5",
77
- "border-brand": "#9e77ed",
78
- "border-brand-alt": "#7f56d9",
79
- "border-error": "#ef4444",
80
- "border-error-subtle": "#fca5a5",
88
+ // ── Border tokens ─────────────────────────────────────────────────
89
+ // Usage: border-border-primary, border-border-brand, etc.
90
+ border: {
91
+ "primary": "#d4d4d4",
92
+ "secondary": "#e5e5e5",
93
+ "secondary-alt": "rgba(0,0,0,0.1)",
94
+ "tertiary": "#f5f5f5",
95
+ "brand": "#9e77ed",
96
+ "brand-alt": "#7f56d9",
97
+ "error": "#ef4444",
98
+ "error-subtle": "#fca5a5",
99
+ },
81
100
 
82
- // Foreground (icons) design.md §2 "Color — Foreground"
83
- "fg-primary": "#171717",
84
- "fg-secondary": "#404040",
85
- "fg-secondary-hover": "#262626",
86
- "fg-tertiary": "#525252",
87
- "fg-tertiary-hover": "#404040",
88
- "fg-quaternary": "#a3a3a3",
89
- "fg-quaternary-hover": "#737373",
90
- "fg-white": "#ffffff",
91
- "fg-brand-primary": "#7f56d9",
92
- "fg-brand-primary-alt": "#7f56d9",
93
- "fg-brand-secondary": "#9e77ed",
94
- "fg-brand-secondary-alt": "#9e77ed",
95
- "fg-error-primary": "#dc2626",
96
- "fg-error-secondary": "#ef4444",
97
- "fg-warning-primary": "#ca8a04",
98
- "fg-warning-secondary": "#eab308",
99
- "fg-success-primary": "#16a34a",
100
- "fg-success-secondary": "#22c55e",
101
+ // ── Foreground / icon tokens ──────────────────────────────────────
102
+ // Usage: text-fg-primary, bg-fg-brand-primary, etc.
103
+ fg: {
104
+ "primary": "#171717",
105
+ "secondary": "#404040",
106
+ "secondary-hover": "#262626",
107
+ "tertiary": "#525252",
108
+ "tertiary-hover": "#404040",
109
+ "quaternary": "#a3a3a3",
110
+ "quaternary-hover": "#737373",
111
+ "white": "#ffffff",
112
+ "brand-primary": "#7f56d9",
113
+ "brand-primary-alt": "#7f56d9",
114
+ "brand-secondary": "#9e77ed",
115
+ "brand-secondary-alt": "#9e77ed",
116
+ "error-primary": "#dc2626",
117
+ "error-secondary": "#ef4444",
118
+ "warning-primary": "#ca8a04",
119
+ "warning-secondary": "#eab308",
120
+ "success-primary": "#16a34a",
121
+ "success-secondary": "#22c55e",
122
+ },
101
123
 
102
- // Utility colors — Component colors/Utility/<Family>/utility-<family>-<shade>
103
- // Harvested live from Figma (Badge node 1046:3819 + Calendar event
104
- // 7991:78181). NOTE: Figma's actual family names are color names
105
- // (yellow/green/red/neutral), NOT the semantic Warning/Success/Error/Gray
106
- // aliases — using the real names so utility-* classes round-trip to the
107
- // file. Shades included are those Figma actually defines per family — a
108
- // superset of the requested 50/200/400/500/700 (also 100/600 and
109
- // neutral-300) because Charts/Calendar consume them. Emerald/Amber have
110
- // no -400 in the source; omitted rather than invented. The full -100
111
- // ramp is now filled for all 14 families; slate-100 (#f1f5f9) and
112
- // sky-100 (#e0f2fe) were derived from Tailwind's palette (every other
113
- // slate/sky shade matched Tailwind exactly) since they weren't in a
114
- // Figma var dump — all other -100s came straight from Figma.
115
- "utility-brand-50": "#f9f5ff",
116
- "utility-brand-100": "#f4ebff",
117
- "utility-brand-200": "#e9d7fe",
118
- "utility-brand-400": "#b692f6",
119
- "utility-brand-500": "#9e77ed",
120
- "utility-brand-600": "#7f56d9",
121
- "utility-brand-700": "#6941c6",
122
- "utility-yellow-50": "#fefce8",
123
- "utility-yellow-100": "#fef9c3",
124
- "utility-yellow-200": "#fef08a",
125
- "utility-yellow-400": "#facc15",
126
- "utility-yellow-500": "#eab308",
127
- "utility-yellow-600": "#ca8a04",
128
- "utility-yellow-700": "#a16207",
129
- // NOTE: Figma's `utility-success-*` naming maps to `utility-green-*` here —
130
- // use `utility-green-*` consistently (no `utility-success-*` keys exist).
131
- "utility-green-50": "#f0fdf4",
132
- "utility-green-100": "#dcfce7",
133
- "utility-green-200": "#bbf7d0",
134
- "utility-green-400": "#4ade80",
135
- "utility-green-500": "#22c55e",
136
- "utility-green-600": "#16a34a",
137
- "utility-green-700": "#15803d",
138
- "utility-slate-50": "#f8fafc",
139
- "utility-slate-100": "#f1f5f9",
140
- "utility-slate-200": "#e2e8f0",
141
- "utility-slate-400": "#94a3b8",
142
- "utility-slate-500": "#64748b",
143
- "utility-slate-700": "#334155",
144
- "utility-sky-50": "#f0f9ff",
145
- "utility-sky-100": "#e0f2fe",
146
- "utility-sky-200": "#bae6fd",
147
- "utility-sky-400": "#38bdf8",
148
- "utility-sky-500": "#0ea5e9",
149
- "utility-sky-700": "#0369a1",
150
- "utility-indigo-50": "#eef2ff",
151
- "utility-indigo-100": "#e0e7ff",
152
- "utility-indigo-200": "#c7d2fe",
153
- "utility-indigo-400": "#818cf8",
154
- "utility-indigo-500": "#6366f1",
155
- "utility-indigo-600": "#4f46e5",
156
- "utility-indigo-700": "#4338ca",
157
- "utility-purple-50": "#faf5ff",
158
- "utility-purple-100": "#f3e8ff",
159
- "utility-purple-200": "#e9d5ff",
160
- "utility-purple-400": "#c084fc",
161
- "utility-purple-500": "#a855f7",
162
- "utility-purple-600": "#9333ea",
163
- "utility-purple-700": "#7e22ce",
164
- "utility-blue-50": "#eff6ff",
165
- "utility-blue-100": "#dbeafe",
166
- "utility-blue-200": "#bfdbfe",
167
- "utility-blue-400": "#60a5fa",
168
- "utility-blue-500": "#3b82f6",
169
- "utility-blue-600": "#2563eb",
170
- "utility-blue-700": "#1d4ed8",
171
- "utility-pink-50": "#fdf2f8",
172
- "utility-pink-100": "#fce7f3",
173
- "utility-pink-200": "#fbcfe8",
174
- "utility-pink-400": "#f472b6",
175
- "utility-pink-500": "#ec4899",
176
- "utility-pink-600": "#db2777",
177
- "utility-pink-700": "#be185d",
178
- "utility-orange-50": "#fff7ed",
179
- "utility-orange-100": "#ffedd5",
180
- "utility-orange-200": "#fed7aa",
181
- "utility-orange-400": "#fb923c",
182
- "utility-orange-500": "#f97316",
183
- "utility-orange-600": "#ea580c",
184
- "utility-orange-700": "#c2410c",
185
- "utility-red-50": "#fef2f2",
186
- "utility-red-100": "#fee2e2",
187
- "utility-red-200": "#fecaca",
188
- "utility-red-400": "#f87171",
189
- "utility-red-500": "#ef4444",
190
- "utility-red-600": "#dc2626",
191
- "utility-red-700": "#b91c1c",
192
- "utility-neutral-50": "#fafafa",
193
- "utility-neutral-100": "#f5f5f5",
194
- "utility-neutral-200": "#e5e5e5",
195
- "utility-neutral-300": "#d4d4d4",
196
- "utility-neutral-400": "#a3a3a3",
197
- "utility-neutral-500": "#737373",
198
- "utility-neutral-600": "#525252",
199
- "utility-neutral-700": "#404040",
200
- "utility-emerald-50": "#ecfdf5",
201
- "utility-emerald-100": "#d1fae5",
202
- "utility-emerald-200": "#a7f3d0",
203
- "utility-emerald-500": "#10b981",
204
- "utility-emerald-600": "#059669",
205
- "utility-emerald-700": "#047857",
206
- "utility-amber-50": "#fffbeb",
207
- "utility-amber-100": "#fef3c7",
208
- "utility-amber-200": "#fde68a",
209
- "utility-amber-500": "#f59e0b",
210
- "utility-amber-600": "#d97706",
211
- "utility-amber-700": "#b45309",
212
- // Alpha overlays (Component colors/Alpha) — confirmed values
213
- "alpha-white-10": "rgba(255,255,255,0.10)",
214
- "alpha-white-90": "rgba(255,255,255,0.90)",
215
- "alpha-black-10": "rgba(0,0,0,0.10)",
216
- "alpha-black-100": "rgba(0,0,0,1.00)",
217
- // Component colors/Components/Sliders — confirmed via get_variable_defs (node 1086:534)
218
- "slider-handle-bg": "#ffffff",
219
- "slider-handle-border": "#7f56d9",
220
- // Component colors/Components/Toggles — confirmed via get_variable_defs (node 1102:4208).
221
- // Slim toggle pressed track border; Default toggle uses bg-brand-solid/-hover.
222
- "toggle-slim-border-pressed": "#7f56d9",
124
+ // ── Utility palette ───────────────────────────────────────────────
125
+ // Usage: bg-utility-brand-50, text-utility-neutral-700, etc.
126
+ // Flat no collision risk since all keys share the "utility-" prefix.
127
+ "utility-brand-50": "#f9f5ff",
128
+ "utility-brand-100": "#f4ebff",
129
+ "utility-brand-200": "#e9d7fe",
130
+ "utility-brand-400": "#b692f6",
131
+ "utility-brand-500": "#9e77ed",
132
+ "utility-brand-600": "#7f56d9",
133
+ "utility-brand-700": "#6941c6",
134
+ "utility-yellow-50": "#fefce8",
135
+ "utility-yellow-100": "#fef9c3",
136
+ "utility-yellow-200": "#fef08a",
137
+ "utility-yellow-400": "#facc15",
138
+ "utility-yellow-500": "#eab308",
139
+ "utility-yellow-600": "#ca8a04",
140
+ "utility-yellow-700": "#a16207",
141
+ "utility-green-50": "#f0fdf4",
142
+ "utility-green-100": "#dcfce7",
143
+ "utility-green-200": "#bbf7d0",
144
+ "utility-green-400": "#4ade80",
145
+ "utility-green-500": "#22c55e",
146
+ "utility-green-600": "#16a34a",
147
+ "utility-green-700": "#15803d",
148
+ "utility-slate-50": "#f8fafc",
149
+ "utility-slate-100": "#f1f5f9",
150
+ "utility-slate-200": "#e2e8f0",
151
+ "utility-slate-400": "#94a3b8",
152
+ "utility-slate-500": "#64748b",
153
+ "utility-slate-700": "#334155",
154
+ "utility-sky-50": "#f0f9ff",
155
+ "utility-sky-100": "#e0f2fe",
156
+ "utility-sky-200": "#bae6fd",
157
+ "utility-sky-400": "#38bdf8",
158
+ "utility-sky-500": "#0ea5e9",
159
+ "utility-sky-700": "#0369a1",
160
+ "utility-indigo-50": "#eef2ff",
161
+ "utility-indigo-100": "#e0e7ff",
162
+ "utility-indigo-200": "#c7d2fe",
163
+ "utility-indigo-400": "#818cf8",
164
+ "utility-indigo-500": "#6366f1",
165
+ "utility-indigo-600": "#4f46e5",
166
+ "utility-indigo-700": "#4338ca",
167
+ "utility-purple-50": "#faf5ff",
168
+ "utility-purple-100": "#f3e8ff",
169
+ "utility-purple-200": "#e9d5ff",
170
+ "utility-purple-400": "#c084fc",
171
+ "utility-purple-500": "#a855f7",
172
+ "utility-purple-600": "#9333ea",
173
+ "utility-purple-700": "#7e22ce",
174
+ "utility-blue-50": "#eff6ff",
175
+ "utility-blue-100": "#dbeafe",
176
+ "utility-blue-200": "#bfdbfe",
177
+ "utility-blue-400": "#60a5fa",
178
+ "utility-blue-500": "#3b82f6",
179
+ "utility-blue-600": "#2563eb",
180
+ "utility-blue-700": "#1d4ed8",
181
+ "utility-pink-50": "#fdf2f8",
182
+ "utility-pink-100": "#fce7f3",
183
+ "utility-pink-200": "#fbcfe8",
184
+ "utility-pink-400": "#f472b6",
185
+ "utility-pink-500": "#ec4899",
186
+ "utility-pink-600": "#db2777",
187
+ "utility-pink-700": "#be185d",
188
+ "utility-orange-50": "#fff7ed",
189
+ "utility-orange-100": "#ffedd5",
190
+ "utility-orange-200": "#fed7aa",
191
+ "utility-orange-400": "#fb923c",
192
+ "utility-orange-500": "#f97316",
193
+ "utility-orange-600": "#ea580c",
194
+ "utility-orange-700": "#c2410c",
195
+ "utility-red-50": "#fef2f2",
196
+ "utility-red-100": "#fee2e2",
197
+ "utility-red-200": "#fecaca",
198
+ "utility-red-400": "#f87171",
199
+ "utility-red-500": "#ef4444",
200
+ "utility-red-600": "#dc2626",
201
+ "utility-red-700": "#b91c1c",
202
+ "utility-neutral-50": "#fafafa",
203
+ "utility-neutral-100": "#f5f5f5",
204
+ "utility-neutral-200": "#e5e5e5",
205
+ "utility-neutral-300": "#d4d4d4",
206
+ "utility-neutral-400": "#a3a3a3",
207
+ "utility-neutral-500": "#737373",
208
+ "utility-neutral-600": "#525252",
209
+ "utility-neutral-700": "#404040",
210
+ "utility-emerald-50": "#ecfdf5",
211
+ "utility-emerald-100": "#d1fae5",
212
+ "utility-emerald-200": "#a7f3d0",
213
+ "utility-emerald-500": "#10b981",
214
+ "utility-emerald-600": "#059669",
215
+ "utility-emerald-700": "#047857",
216
+ "utility-amber-50": "#fffbeb",
217
+ "utility-amber-100": "#fef3c7",
218
+ "utility-amber-200": "#fde68a",
219
+ "utility-amber-500": "#f59e0b",
220
+ "utility-amber-600": "#d97706",
221
+ "utility-amber-700": "#b45309",
222
+
223
+ // ── Alpha overlays ────────────────────────────────────────────────
224
+ "alpha-white-10": "rgba(255,255,255,0.10)",
225
+ "alpha-white-90": "rgba(255,255,255,0.90)",
226
+ "alpha-black-10": "rgba(0,0,0,0.10)",
227
+ "alpha-black-100": "rgba(0,0,0,1.00)",
228
+
229
+ // ── Component-specific tokens ─────────────────────────────────────
230
+ "slider-handle-bg": "#ffffff",
231
+ "slider-handle-border": "#7f56d9",
232
+ "toggle-slim-border-pressed": "#7f56d9",
223
233
  "toggle-slim-border-pressed-hover": "#6941c6",
224
234
  },
235
+
225
236
  spacing: {
226
237
  none: "0px",
227
238
  xxs: "2px",
@@ -240,21 +251,23 @@ module.exports = {
240
251
  "9xl": "96px",
241
252
  "10xl": "128px",
242
253
  "11xl": "160px",
243
- // Layout container tokens (Alert / Header navigation / Page header)
244
254
  "container-padding-desktop": "32px",
245
255
  "container-padding-mobile": "16px",
246
256
  },
257
+
247
258
  maxWidth: {
248
259
  "container-max-width-desktop": "1280px",
249
260
  "width-lg": "640px",
250
261
  },
262
+
251
263
  boxShadow: {
252
- // design.md §2 — base outer drop + the three-layer skeuomorphic stack
253
- // (Shadows/shadow-xs-skeuomorphic).
254
264
  xs: "0px 1px 2px 0px rgba(0,0,0,0.05)",
255
265
  skeuomorphic:
256
266
  "0px 1px 2px 0px rgba(0,0,0,0.05), inset 0px -2px 0px 0px rgba(0,0,0,0.05), inset 0px 0px 0px 1px rgba(0,0,0,0.18)",
267
+ lg: "0px 12px 16px -4px rgba(0,0,0,0.08), 0px 4px 6px -2px rgba(0,0,0,0.03), 0px 2px 2px -1px rgba(0,0,0,0.04)",
268
+ xl: "0px 20px 24px -4px rgba(0,0,0,0.08), 0px 8px 8px -4px rgba(0,0,0,0.03), 0px 3px 1.5px -1.5px rgba(0,0,0,0.04)",
257
269
  },
270
+
258
271
  borderRadius: {
259
272
  none: "0px",
260
273
  xxs: "2px",
@@ -268,10 +281,12 @@ module.exports = {
268
281
  "4xl": "24px",
269
282
  full: "9999px",
270
283
  },
284
+
271
285
  fontFamily: {
272
286
  body: ["Inter", "sans-serif"],
273
287
  display: ["Inter", "sans-serif"],
274
288
  },
289
+
275
290
  fontSize: {
276
291
  xs: ["12px", { lineHeight: "18px" }],
277
292
  sm: ["14px", { lineHeight: "20px" }],
@@ -284,9 +299,7 @@ module.exports = {
284
299
  "display-lg": ["48px", { lineHeight: "60px", letterSpacing: "-2px" }],
285
300
  "display-xl": ["60px", { lineHeight: "72px", letterSpacing: "-2px" }],
286
301
  },
287
- // Figma "Backdrop blurs/backdrop-blur-md" = radius 16 (Tailwind's default
288
- // backdrop-blur-md is 12px). backdrop-blur-* are Tailwind v3 core utilities
289
- // (enabled by default); this just aligns the md value to the design token.
302
+
290
303
  backdropBlur: {
291
304
  md: "16px",
292
305
  },