@assure-one/design-system 0.7.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -151,7 +151,10 @@ declare const BreadcrumbSeparator: React$1.ForwardRefExoticComponent<BreadcrumbS
151
151
  * - accent → bg-accent (cyan CTA)
152
152
  * - dashed → full-bleed "+ Add another" CTA, transparent fill + dashed border
153
153
  *
154
- * Sizes match shadcn convention; default `md` is 8px/14px padding.
154
+ * Control text scale (shared across the button-family control primitives
155
+ * Button / MultiFilterPill / FilterChip): sm = 13px, md = 14px, lg = 16px.
156
+ * `sm` is the dense tier used in toolbars; `md` is the default. (SearchInput
157
+ * keeps its own one-step-denser inputSize scale, 12/13/14.)
155
158
  * Use `asChild` to render as a different element (e.g. an anchor / next/link).
156
159
  */
157
160
  declare const buttonVariants: (props?: ({
@@ -815,8 +818,15 @@ interface MultiFilterPillProps {
815
818
  }[];
816
819
  onToggle: (key: string) => void;
817
820
  onClear: () => void;
821
+ /**
822
+ * Control size shared with Button / FilterChip: sm = h-8 / 13px, md = h-9 /
823
+ * 14px, lg = h-10 / 16px. Defaults to the dense `sm` tier since filter pills
824
+ * are toolbar controls — a pill then sits at the same 32px height and 13px
825
+ * text as a Button sm / FilterChip sm in the same row.
826
+ */
827
+ size?: "sm" | "md" | "lg";
818
828
  }
819
- declare function MultiFilterPill({ label, icon, selected, options, onToggle, onClear, }: MultiFilterPillProps): react_jsx_runtime.JSX.Element;
829
+ declare function MultiFilterPill({ label, icon, selected, options, onToggle, onClear, size, }: MultiFilterPillProps): react_jsx_runtime.JSX.Element;
820
830
  declare namespace MultiFilterPill {
821
831
  var displayName: string;
822
832
  }
@@ -895,6 +905,22 @@ declare const PopoverPortal: React$1.FC<PopoverPrimitive.PopoverPortalProps>;
895
905
  declare const PopoverClose: React$1.ForwardRefExoticComponent<PopoverPrimitive.PopoverCloseProps & React$1.RefAttributes<HTMLButtonElement>>;
896
906
  declare const PopoverContent: React$1.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
897
907
 
908
+ /**
909
+ * PriorityIcon — priority glyph for the fixed none/low/medium/high/urgent scale.
910
+ *
911
+ * Bar COUNT carries the level (1/2/3 rising bars); color reinforces it on an
912
+ * escalating cool→warm ramp via `--color-priority-*` tokens (blue → violet →
913
+ * amber → red), so the glyph reads the same in light and dark. `none` is three
914
+ * muted dashes; `urgent` is a filled danger-red square with a white exclamation.
915
+ * Inactive bars drop to 25% opacity of the same hue.
916
+ */
917
+ type Priority = "none" | "low" | "medium" | "high" | "urgent";
918
+ interface PriorityIconProps extends Omit<React.SVGAttributes<SVGSVGElement>, "color"> {
919
+ priority: Priority;
920
+ size?: number;
921
+ }
922
+ declare function PriorityIcon({ priority, size, className, ...props }: PriorityIconProps): react_jsx_runtime.JSX.Element;
923
+
898
924
  /**
899
925
  * ProgressBar — Radix-driven determinate (or indeterminate) progress meter.
900
926
  * Track sits on `bg-3`; fills follow the status palette. Variants are an
@@ -1266,6 +1292,24 @@ interface StatProps extends React.HTMLAttributes<HTMLDivElement> {
1266
1292
  }
1267
1293
  declare const Stat: React$1.ForwardRefExoticComponent<StatProps & React$1.RefAttributes<HTMLDivElement>>;
1268
1294
 
1295
+ /**
1296
+ * StatusIcon — progress-aware state circle for arbitrary pipeline stages.
1297
+ *
1298
+ * Pass a discrete `state`, or drive it from `progress` (0..1) alone:
1299
+ * 0 -> unstarted, 1 -> completed, anything between -> a `started` ring with a
1300
+ * pie wedge filled clockwise from 12 o'clock. `color` tints the ring + fill
1301
+ * (defaults to `currentColor`) so a card can paint per-stage colors; `backlog`
1302
+ * and `canceled` fall back to a muted token when no color is given.
1303
+ */
1304
+ type StatusState = "backlog" | "unstarted" | "started" | "completed" | "canceled";
1305
+ interface StatusIconProps extends Omit<React.SVGAttributes<SVGSVGElement>, "color"> {
1306
+ state?: StatusState;
1307
+ progress?: number;
1308
+ color?: string;
1309
+ size?: number;
1310
+ }
1311
+ declare function StatusIcon({ state, progress, color, size, className, ...props }: StatusIconProps): react_jsx_runtime.JSX.Element;
1312
+
1269
1313
  /**
1270
1314
  * Stepper — custom progress indicator. No Radix equivalent.
1271
1315
  * Active step uses Pro purple; completed steps use the success palette;
@@ -2066,20 +2110,31 @@ declare const NotificationFilter: React$1.ForwardRefExoticComponent<Notification
2066
2110
  type NotificationListProps = React.HTMLAttributes<HTMLDivElement>;
2067
2111
  declare const NotificationList: React$1.ForwardRefExoticComponent<NotificationListProps & React$1.RefAttributes<HTMLDivElement>>;
2068
2112
  interface NotificationItemProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "title"> {
2113
+ /**
2114
+ * Primary headline — one scannable line (feed the human sentence here, e.g.
2115
+ * "Sara uploaded W-2.pdf", not a generic type label). Clamps to 2 lines,
2116
+ * then ellipsis.
2117
+ */
2069
2118
  title: React.ReactNode;
2119
+ /** Muted secondary line (a message snippet, etc.). Single line, truncates. */
2070
2120
  body?: React.ReactNode;
2071
- /** Small caption, joined with `client` and `time` on the meta line. */
2121
+ /** Quiet caption shown on the meta line only when there is no `body`. */
2072
2122
  typeLabel?: React.ReactNode;
2073
2123
  client?: React.ReactNode;
2074
- /** Preformatted relative time, e.g. "5m". */
2124
+ /** Preformatted relative time, e.g. "5m". Top-right, baseline with `title`. */
2075
2125
  time?: React.ReactNode;
2076
2126
  /** People-driven rows: shows the sender avatar instead of the icon tile. */
2077
2127
  sender?: {
2078
2128
  name: string;
2079
2129
  src?: string | null;
2080
2130
  };
2081
- /** System rows: icon rendered inside a neutral tile. Ignored when `sender` is set. */
2131
+ /** System rows: icon rendered inside a tile. Ignored when `sender` is set. */
2082
2132
  icon?: React.ReactNode;
2133
+ /**
2134
+ * Tint the icon tile per type, e.g. "bg-amber-bg text-amber". The consumer
2135
+ * owns the type-to-colour map. Defaults to a neutral tile.
2136
+ */
2137
+ iconClassName?: string;
2083
2138
  unread?: boolean;
2084
2139
  }
2085
2140
  declare const NotificationItem: React$1.ForwardRefExoticComponent<NotificationItemProps & React$1.RefAttributes<HTMLButtonElement>>;
@@ -2093,6 +2148,7 @@ type ToolbarProps = React.HTMLAttributes<HTMLDivElement>;
2093
2148
  declare const Toolbar: React$1.ForwardRefExoticComponent<ToolbarProps & React$1.RefAttributes<HTMLDivElement>>;
2094
2149
  declare const filterChipVariants: (props?: ({
2095
2150
  active?: boolean | null | undefined;
2151
+ size?: "sm" | "md" | "lg" | null | undefined;
2096
2152
  } & class_variance_authority_types.ClassProp) | undefined) => string;
2097
2153
  interface FilterChipProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, keyof VariantProps<typeof filterChipVariants>>, VariantProps<typeof filterChipVariants> {
2098
2154
  count?: number;
@@ -2151,4 +2207,4 @@ declare const KbdHint: React$1.ForwardRefExoticComponent<KbdHintProps & React$1.
2151
2207
 
2152
2208
  declare function cn(...inputs: ClassValue[]): string;
2153
2209
 
2154
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, type ActivityDotVariant, ActivityItem, type ActivityItemProps, ActivityList, type ActivityListProps, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, AlertTriangleIcon, AlertTriangleSolidIcon, AppHeader, AppHeaderActions, type AppHeaderActionsProps, AppHeaderBreadcrumb, type AppHeaderBreadcrumbProps, type AppHeaderProps, AppHeaderSearch, type AppHeaderSearchProps, AppHeaderTitle, type AppHeaderTitleProps, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, AtSignIcon, Avatar, Badge, type BadgeProps, BarChartIcon, BellIcon, Blockquote, BoldIcon, Breadcrumb, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbList, type BreadcrumbListProps, BreadcrumbPage, type BreadcrumbPageProps, type BreadcrumbProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, BriefcaseIcon, Building2Icon, BuildingIcon, Button, type ButtonProps, Calendar, type CalendarHighlight, type CalendarHighlightColor, CalendarIcon, type CalendarProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CardVariants, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientSelect, type ClientSelectOption, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, type ComingSoonProps, CommandIcon, type CommandItem, CommandPalette, ConfirmActionButton, type ConfirmActionButtonProps, Content, type ContentProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, type DangerActionProps, DataItem, DataTable, DataTableBody, type DataTableBodyProps, DataTableCell, DataTableCellDue, type DataTableCellDueProps, DataTableCellId, DataTableCellMono, DataTableCellName, type DataTableCellProps, DataTableCheckbox, type DataTableCheckboxProps, DataTableHead, type DataTableHeadProps, DataTableHeader, type DataTableHeaderProps, DataTablePagination, type DataTablePaginationProps, type DataTableProps, DataTableResultsCount, type DataTableResultsCountProps, DataTableRow, type DataTableRowProps, DataTableSearch, type DataTableSearchProps, DataTableSpacer, type DataTableSpacerProps, DataTableToolbar, type DataTableToolbarProps, DatePicker, DetailGrid, type DetailGridProps, DetailMain, type DetailMainProps, DetailSpine, DetailSpineHeader, type DetailSpineHeaderProps, type DetailSpineProps, DetailSpineSection, type DetailSpineSectionProps, DetailSpineStats, type DetailSpineStatsProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DocumentIcon, DollarSignIcon, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, EyeIcon, EyeOffIcon, Eyebrow, type EyebrowProps, FileIcon, FileReturnIcon, FileTextIcon, FileUpload, FilterChip, type FilterChipProps, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, type IconActionProps, InboxIcon, InfoCircleSolidIcon, InfoIcon, Input, type InputVariants, ItalicIcon, Kanban, KanbanCard, type KanbanCardProps, KanbanColumn, type KanbanColumnProps, KanbanIcon, type KanbanProps, KbdHint, type KbdHintProps, KeyIcon, type KeyboardShortcut, type KeyboardShortcutSection, KeyboardShortcutsDialog, type KeyboardShortcutsDialogProps, KpiCard, Label, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, type LinkActionProps, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, type MainProps, MapPinIcon, MenuIcon, MessageCircleIcon, MessageCircleWarningIcon, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, type MutedSpecProps, NotificationFilter, type NotificationFilterProps, type NotificationFilterValue, NotificationItem, type NotificationItemProps, NotificationList, type NotificationListProps, NotificationPanel, NotificationPanelHeader, type NotificationPanelHeaderProps, type NotificationPanelProps, Numeric, type NumericProps, OTPInput, PageHeader, type PageHeaderProps, PageHeaderSep, type PageHeaderSepProps, PageHeaderSpec, type PageHeaderSpecProps, Pagination, type PaginationProps, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PenSignIcon, PencilIcon, PhoneIcon, PhoneInput, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, type PrimaryActionProps, ProgressBar, type ProgressBarProps, ProgressRing, type ProgressRingProps, RadioGroup, RadioGroupItem, ReceiptIcon, ReplyIcon, RotateCcwIcon, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, type SearchInputVariants, SearchSelect, type SearchSelectOption, SecondaryAction, type SecondaryActionProps, Section, SectionHead, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, type SelectOption, type SelectProps, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SendIcon, Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, type ShellProps, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, type SidebarBrandProps, SidebarBrandText, type SidebarBrandTextProps, SidebarFooter, type SidebarFooterProps, SidebarLink, SidebarLinkAction, type SidebarLinkActionProps, SidebarLinkBadge, type SidebarLinkBadgeProps, type SidebarLinkBadgeVariants, SidebarLinkGroup, type SidebarLinkGroupProps, SidebarLinkLabel, type SidebarLinkLabelProps, type SidebarLinkProps, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarSection, type SidebarSectionProps, type SidebarState, SidebarTrigger, type SidebarTriggerProps, SidebarUser, type SidebarUserProps, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, type SortDirection, SparkleIcon, SparklesIcon, StarIcon, StarRating, type StarRatingProps, Stat, type Step, Stepper, type StepperProps, StrikethroughIcon, SubmitButton, SunIcon, Switch, Table, TableBody, type TableBodyProps, TableCaption, type TableCaptionProps, TableCell, type TableCellProps, TableFooter, type TableFooterProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, TableIcon, type TableProps, TableRow, type TableRowProps, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TeamIcon, TeamMemberSelect, Textarea, type TextareaVariants, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, type ToolbarProps, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, TrendingDownIcon, TrendingUpIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XCircleSolidIcon, XIcon, ZoomInIcon, ZoomOutIcon, alertVariants, badgeVariants, buttonVariants, cardVariants, cn, displayToIso, filterChipVariants, inputVariants, isoToDisplay, labelVariants, progressBarVariants, progressRingVariants, searchInputVariants, sidebarLinkBadgeVariants, starRatingVariants, textareaVariants, useSidebarState, useToast };
2210
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, type ActivityDotVariant, ActivityItem, type ActivityItemProps, ActivityList, type ActivityListProps, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertProps, AlertTitle, AlertTriangleIcon, AlertTriangleSolidIcon, AppHeader, AppHeaderActions, type AppHeaderActionsProps, AppHeaderBreadcrumb, type AppHeaderBreadcrumbProps, type AppHeaderProps, AppHeaderSearch, type AppHeaderSearchProps, AppHeaderTitle, type AppHeaderTitleProps, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, AtSignIcon, Avatar, Badge, type BadgeProps, BarChartIcon, BellIcon, Blockquote, BoldIcon, Breadcrumb, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbList, type BreadcrumbListProps, BreadcrumbPage, type BreadcrumbPageProps, type BreadcrumbProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, BriefcaseIcon, Building2Icon, BuildingIcon, Button, type ButtonProps, Calendar, type CalendarHighlight, type CalendarHighlightColor, CalendarIcon, type CalendarProps, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CardVariants, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientSelect, type ClientSelectOption, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, type ComingSoonProps, CommandIcon, type CommandItem, CommandPalette, ConfirmActionButton, type ConfirmActionButtonProps, Content, type ContentProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, type DangerActionProps, DataItem, DataTable, DataTableBody, type DataTableBodyProps, DataTableCell, DataTableCellDue, type DataTableCellDueProps, DataTableCellId, DataTableCellMono, DataTableCellName, type DataTableCellProps, DataTableCheckbox, type DataTableCheckboxProps, DataTableHead, type DataTableHeadProps, DataTableHeader, type DataTableHeaderProps, DataTablePagination, type DataTablePaginationProps, type DataTableProps, DataTableResultsCount, type DataTableResultsCountProps, DataTableRow, type DataTableRowProps, DataTableSearch, type DataTableSearchProps, DataTableSpacer, type DataTableSpacerProps, DataTableToolbar, type DataTableToolbarProps, DatePicker, DetailGrid, type DetailGridProps, DetailMain, type DetailMainProps, DetailSpine, DetailSpineHeader, type DetailSpineHeaderProps, type DetailSpineProps, DetailSpineSection, type DetailSpineSectionProps, DetailSpineStats, type DetailSpineStatsProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DocumentIcon, DollarSignIcon, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, type EmptyStateProps, EyeIcon, EyeOffIcon, Eyebrow, type EyebrowProps, FileIcon, FileReturnIcon, FileTextIcon, FileUpload, FilterChip, type FilterChipProps, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, type IconActionProps, InboxIcon, InfoCircleSolidIcon, InfoIcon, Input, type InputVariants, ItalicIcon, Kanban, KanbanCard, type KanbanCardProps, KanbanColumn, type KanbanColumnProps, KanbanIcon, type KanbanProps, KbdHint, type KbdHintProps, KeyIcon, type KeyboardShortcut, type KeyboardShortcutSection, KeyboardShortcutsDialog, type KeyboardShortcutsDialogProps, KpiCard, Label, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, type LinkActionProps, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, type MainProps, MapPinIcon, MenuIcon, MessageCircleIcon, MessageCircleWarningIcon, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, type MutedSpecProps, NotificationFilter, type NotificationFilterProps, type NotificationFilterValue, NotificationItem, type NotificationItemProps, NotificationList, type NotificationListProps, NotificationPanel, NotificationPanelHeader, type NotificationPanelHeaderProps, type NotificationPanelProps, Numeric, type NumericProps, OTPInput, PageHeader, type PageHeaderProps, PageHeaderSep, type PageHeaderSepProps, PageHeaderSpec, type PageHeaderSpecProps, Pagination, type PaginationProps, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PenSignIcon, PencilIcon, PhoneIcon, PhoneInput, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, type PrimaryActionProps, type Priority, PriorityIcon, type PriorityIconProps, ProgressBar, type ProgressBarProps, ProgressRing, type ProgressRingProps, RadioGroup, RadioGroupItem, ReceiptIcon, ReplyIcon, RotateCcwIcon, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, type SearchInputVariants, SearchSelect, type SearchSelectOption, SecondaryAction, type SecondaryActionProps, Section, SectionHead, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, type SelectOption, type SelectProps, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SendIcon, Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, type ShellProps, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, type SidebarBrandProps, SidebarBrandText, type SidebarBrandTextProps, SidebarFooter, type SidebarFooterProps, SidebarLink, SidebarLinkAction, type SidebarLinkActionProps, SidebarLinkBadge, type SidebarLinkBadgeProps, type SidebarLinkBadgeVariants, SidebarLinkGroup, type SidebarLinkGroupProps, SidebarLinkLabel, type SidebarLinkLabelProps, type SidebarLinkProps, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarSection, type SidebarSectionProps, type SidebarState, SidebarTrigger, type SidebarTriggerProps, SidebarUser, type SidebarUserProps, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, type SortDirection, SparkleIcon, SparklesIcon, StarIcon, StarRating, type StarRatingProps, Stat, StatusIcon, type StatusIconProps, type StatusState, type Step, Stepper, type StepperProps, StrikethroughIcon, SubmitButton, SunIcon, Switch, Table, TableBody, type TableBodyProps, TableCaption, type TableCaptionProps, TableCell, type TableCellProps, TableFooter, type TableFooterProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, TableIcon, type TableProps, TableRow, type TableRowProps, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TeamIcon, TeamMemberSelect, Textarea, type TextareaVariants, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, type ToolbarProps, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, TrendingDownIcon, TrendingUpIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XCircleSolidIcon, XIcon, ZoomInIcon, ZoomOutIcon, alertVariants, badgeVariants, buttonVariants, cardVariants, cn, displayToIso, filterChipVariants, inputVariants, isoToDisplay, labelVariants, progressBarVariants, progressRingVariants, searchInputVariants, sidebarLinkBadgeVariants, starRatingVariants, textareaVariants, useSidebarState, useToast };
package/dist/index.js CHANGED
@@ -2695,7 +2695,7 @@ var buttonVariants = cva(
2695
2695
  dashed: "border-2 border-dashed border-rule bg-transparent text-fg-3 hover:border-fg-4 hover:bg-bg-2 hover:text-fg"
2696
2696
  },
2697
2697
  size: {
2698
- sm: "h-8 px-3 text-sm gap-1.5",
2698
+ sm: "h-8 px-3 text-[13px] gap-1.5",
2699
2699
  md: "h-10 px-4 text-sm gap-2",
2700
2700
  lg: "h-12 px-6 text-base gap-2",
2701
2701
  // Icon-only sizes. Hit target ≥ 24px (WCAG 2.5.5 floor).
@@ -3624,20 +3624,27 @@ var ContextMenuSubTrigger = React36.forwardRef(({ className, inset, children, ..
3624
3624
  }
3625
3625
  ));
3626
3626
  ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
3627
- var ContextMenuSubContent = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
3628
- ContextMenuPrimitive.SubContent,
3629
- {
3630
- ref,
3631
- className: cn(
3632
- "rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] min-w-[8rem] overflow-hidden border p-1",
3633
- "transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
3634
- "data-[state=closed]:scale-95 data-[state=closed]:opacity-0",
3635
- "data-[state=open]:scale-100 data-[state=open]:opacity-100",
3636
- "motion-reduce:transition-none",
3637
- className
3638
- ),
3639
- ...props
3640
- }
3627
+ var ContextMenuSubContent = React36.forwardRef(({ className, ...props }, ref) => (
3628
+ // Portal the sub-content to the body. The parent Content keeps a persistent
3629
+ // `scale-100` transform (its open-state animation), which makes it the
3630
+ // containing block for `position: fixed` descendants — and its
3631
+ // `overflow-hidden` would then clip this Popper-positioned flyout to nothing.
3632
+ // Portaling escapes both the transformed ancestor and the clip.
3633
+ /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
3634
+ ContextMenuPrimitive.SubContent,
3635
+ {
3636
+ ref,
3637
+ className: cn(
3638
+ "rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] min-w-[8rem] overflow-hidden border p-1",
3639
+ "transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
3640
+ "data-[state=closed]:scale-95 data-[state=closed]:opacity-0",
3641
+ "data-[state=open]:scale-100 data-[state=open]:opacity-100",
3642
+ "motion-reduce:transition-none",
3643
+ className
3644
+ ),
3645
+ ...props
3646
+ }
3647
+ ) })
3641
3648
  ));
3642
3649
  ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
3643
3650
  var ContextMenuContent = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
@@ -4049,20 +4056,27 @@ var DropdownMenuSubTrigger = React36.forwardRef(({ className, inset, children, .
4049
4056
  }
4050
4057
  ));
4051
4058
  DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
4052
- var DropdownMenuSubContent = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
4053
- DropdownMenuPrimitive.SubContent,
4054
- {
4055
- ref,
4056
- className: cn(
4057
- "rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] min-w-[8rem] overflow-hidden border p-1",
4058
- "transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
4059
- "data-[state=closed]:scale-95 data-[state=closed]:opacity-0",
4060
- "data-[state=open]:scale-100 data-[state=open]:opacity-100",
4061
- "motion-reduce:transition-none",
4062
- className
4063
- ),
4064
- ...props
4065
- }
4059
+ var DropdownMenuSubContent = React36.forwardRef(({ className, ...props }, ref) => (
4060
+ // Portal the sub-content to the body. The parent Content keeps a persistent
4061
+ // `scale-100` transform (its open-state animation), which makes it the
4062
+ // containing block for `position: fixed` descendants — and its
4063
+ // `overflow-hidden` would then clip this Popper-positioned flyout to nothing.
4064
+ // Portaling escapes both the transformed ancestor and the clip.
4065
+ /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
4066
+ DropdownMenuPrimitive.SubContent,
4067
+ {
4068
+ ref,
4069
+ className: cn(
4070
+ "rounded-card border-rule bg-surface text-fg shadow-pop z-[var(--z-dropdown)] min-w-[8rem] overflow-hidden border p-1",
4071
+ "transition-[opacity,transform] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
4072
+ "data-[state=closed]:scale-95 data-[state=closed]:opacity-0",
4073
+ "data-[state=open]:scale-100 data-[state=open]:opacity-100",
4074
+ "motion-reduce:transition-none",
4075
+ className
4076
+ ),
4077
+ ...props
4078
+ }
4079
+ ) })
4066
4080
  ));
4067
4081
  DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
4068
4082
  var DropdownMenuContent = React36.forwardRef(({ className, sideOffset = 6, align = "start", ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(
@@ -4730,13 +4744,19 @@ function Logo({
4730
4744
  }
4731
4745
  );
4732
4746
  }
4747
+ var TRIGGER_SIZE = {
4748
+ sm: "h-8 gap-1.5 px-2.5 text-[13px]",
4749
+ md: "h-9 gap-2 px-3 text-sm",
4750
+ lg: "h-10 gap-2 px-3.5 text-base"
4751
+ };
4733
4752
  function MultiFilterPill({
4734
4753
  label,
4735
4754
  icon,
4736
4755
  selected,
4737
4756
  options,
4738
4757
  onToggle,
4739
- onClear
4758
+ onClear,
4759
+ size = "sm"
4740
4760
  }) {
4741
4761
  const active = selected.size > 0;
4742
4762
  const displayLabel = active ? selected.size === 1 ? options.find((o) => o.key === [...selected][0])?.label ?? label : `${label} \xB7 ${selected.size}` : label;
@@ -4745,7 +4765,8 @@ function MultiFilterPill({
4745
4765
  PopoverTrigger,
4746
4766
  {
4747
4767
  className: cn(
4748
- "rounded-pill font-body inline-flex items-center gap-1.5 border px-2.5 py-1 text-xs font-medium",
4768
+ "rounded-pill font-body inline-flex items-center border font-medium",
4769
+ TRIGGER_SIZE[size],
4749
4770
  "transition-[color,background-color,border-color,box-shadow] duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
4750
4771
  "motion-reduce:transition-none",
4751
4772
  "focus-visible:[box-shadow:var(--shadow-focus-ring)] focus-visible:outline-none",
@@ -5165,6 +5186,64 @@ var PhoneInput = forwardRef(function PhoneInput2({ value, defaultValue, onChange
5165
5186
  ] });
5166
5187
  });
5167
5188
  PhoneInput.displayName = "PhoneInput";
5189
+ var BARS = [
5190
+ { x: 1.5, y: 9, height: 5 },
5191
+ // bar 1 (shortest)
5192
+ { x: 6.5, y: 5, height: 9 },
5193
+ // bar 2
5194
+ { x: 11.5, y: 1, height: 13 }
5195
+ // bar 3 (tallest)
5196
+ ];
5197
+ var ACTIVE_BAR_COUNT = {
5198
+ low: 1,
5199
+ medium: 2,
5200
+ high: 3
5201
+ };
5202
+ var PRIORITY_COLOR = {
5203
+ low: "var(--color-priority-low)",
5204
+ medium: "var(--color-priority-medium)",
5205
+ high: "var(--color-priority-high)",
5206
+ urgent: "var(--color-priority-urgent)"
5207
+ };
5208
+ function PriorityIcon({ priority, size = 16, className, ...props }) {
5209
+ return /* @__PURE__ */ jsxs(
5210
+ "svg",
5211
+ {
5212
+ width: size,
5213
+ height: size,
5214
+ viewBox: "0 0 16 16",
5215
+ fill: "none",
5216
+ className: cn("shrink-0", className),
5217
+ "aria-hidden": "true",
5218
+ ...props,
5219
+ children: [
5220
+ priority === "none" && /* @__PURE__ */ jsxs("g", { className: "text-fg-3", fill: "currentColor", children: [
5221
+ /* @__PURE__ */ jsx("rect", { x: "2", y: "4", width: "12", height: "1.6", rx: "0.8", opacity: "0.9" }),
5222
+ /* @__PURE__ */ jsx("rect", { x: "2", y: "7.2", width: "12", height: "1.6", rx: "0.8", opacity: "0.9" }),
5223
+ /* @__PURE__ */ jsx("rect", { x: "2", y: "10.4", width: "12", height: "1.6", rx: "0.8", opacity: "0.9" })
5224
+ ] }),
5225
+ (priority === "low" || priority === "medium" || priority === "high") && BARS.map((bar, i) => /* @__PURE__ */ jsx(
5226
+ "rect",
5227
+ {
5228
+ x: bar.x,
5229
+ y: bar.y,
5230
+ width: "3",
5231
+ height: bar.height,
5232
+ rx: "1",
5233
+ fill: PRIORITY_COLOR[priority],
5234
+ fillOpacity: i < ACTIVE_BAR_COUNT[priority] ? 1 : 0.25
5235
+ },
5236
+ i
5237
+ )),
5238
+ priority === "urgent" && /* @__PURE__ */ jsxs(Fragment, { children: [
5239
+ /* @__PURE__ */ jsx("rect", { x: "2", y: "2", width: "12", height: "12", rx: "3", fill: "var(--color-priority-urgent)" }),
5240
+ /* @__PURE__ */ jsx("rect", { x: "7.25", y: "3.75", width: "1.5", height: "5", rx: "0.75", fill: "#fff" }),
5241
+ /* @__PURE__ */ jsx("circle", { cx: "8", cy: "11.25", r: "1", fill: "#fff" })
5242
+ ] })
5243
+ ]
5244
+ }
5245
+ );
5246
+ }
5168
5247
  var progressBarVariants = cva(
5169
5248
  "h-full rounded-full transition-[width,background-color] duration-[var(--duration-slow)] ease-[var(--ease-out-quart)]",
5170
5249
  {
@@ -5402,7 +5481,10 @@ var searchInputVariants = cva(
5402
5481
  {
5403
5482
  variants: {
5404
5483
  inputSize: {
5405
- sm: "h-8 pl-8 pr-8 text-xs",
5484
+ // `sm` is the dense control tier: h-8 + 13px, so a search box lines up
5485
+ // pixel-for-pixel (height AND text) with Button / MultiFilterPill /
5486
+ // FilterChip at their `sm` tier in a toolbar row.
5487
+ sm: "h-8 pl-8 pr-8 text-[13px]",
5406
5488
  md: "h-9 pl-9 pr-9 text-[13px]",
5407
5489
  lg: "h-11 pl-10 pr-10 text-sm"
5408
5490
  }
@@ -6336,6 +6418,126 @@ var Stat = forwardRef(function Stat2({ value, label, className, ...props }, ref)
6336
6418
  ] });
6337
6419
  });
6338
6420
  Stat.displayName = "Stat";
6421
+ var CENTER = 8;
6422
+ var RING_RADIUS = 6;
6423
+ var STROKE_WIDTH = 2;
6424
+ var PIE_RADIUS = 3;
6425
+ var MUTED = "var(--color-fg-3)";
6426
+ function resolveState(state, progress) {
6427
+ if (state) return state;
6428
+ if (progress === void 0 || !Number.isFinite(progress)) return "unstarted";
6429
+ if (progress <= 0) return "unstarted";
6430
+ if (progress >= 1) return "completed";
6431
+ return "started";
6432
+ }
6433
+ function wedgePath(fraction) {
6434
+ const f = Math.min(1, Math.max(0, fraction));
6435
+ const angle = f * 2 * Math.PI;
6436
+ const endX = CENTER + PIE_RADIUS * Math.sin(angle);
6437
+ const endY = CENTER - PIE_RADIUS * Math.cos(angle);
6438
+ const largeArc = f > 0.5 ? 1 : 0;
6439
+ return `M ${CENTER} ${CENTER} L ${CENTER} ${CENTER - PIE_RADIUS} A ${PIE_RADIUS} ${PIE_RADIUS} 0 ${largeArc} 1 ${endX} ${endY} Z`;
6440
+ }
6441
+ function StatusIcon({
6442
+ state,
6443
+ progress,
6444
+ color,
6445
+ size = 16,
6446
+ className,
6447
+ ...props
6448
+ }) {
6449
+ const resolved = resolveState(state, progress);
6450
+ const tint = color ?? "currentColor";
6451
+ const mutedTint = color ?? MUTED;
6452
+ const fraction = progress !== void 0 && Number.isFinite(progress) ? progress : 0.5;
6453
+ return /* @__PURE__ */ jsxs(
6454
+ "svg",
6455
+ {
6456
+ width: size,
6457
+ height: size,
6458
+ viewBox: "0 0 16 16",
6459
+ fill: "none",
6460
+ className: cn("shrink-0", className),
6461
+ "aria-hidden": "true",
6462
+ ...props,
6463
+ children: [
6464
+ resolved === "backlog" && /* @__PURE__ */ jsx(
6465
+ "circle",
6466
+ {
6467
+ cx: CENTER,
6468
+ cy: CENTER,
6469
+ r: RING_RADIUS,
6470
+ fill: "none",
6471
+ stroke: mutedTint,
6472
+ strokeWidth: STROKE_WIDTH,
6473
+ strokeDasharray: "1.5 1.5"
6474
+ }
6475
+ ),
6476
+ resolved === "unstarted" && /* @__PURE__ */ jsx(
6477
+ "circle",
6478
+ {
6479
+ cx: CENTER,
6480
+ cy: CENTER,
6481
+ r: RING_RADIUS,
6482
+ fill: "none",
6483
+ stroke: tint,
6484
+ strokeWidth: STROKE_WIDTH
6485
+ }
6486
+ ),
6487
+ resolved === "started" && /* @__PURE__ */ jsxs(Fragment, { children: [
6488
+ /* @__PURE__ */ jsx(
6489
+ "circle",
6490
+ {
6491
+ cx: CENTER,
6492
+ cy: CENTER,
6493
+ r: RING_RADIUS,
6494
+ fill: "none",
6495
+ stroke: tint,
6496
+ strokeWidth: STROKE_WIDTH
6497
+ }
6498
+ ),
6499
+ fraction >= 1 ? /* @__PURE__ */ jsx("circle", { cx: CENTER, cy: CENTER, r: PIE_RADIUS, fill: tint }) : fraction > 0 ? /* @__PURE__ */ jsx("path", { d: wedgePath(fraction), fill: tint }) : null
6500
+ ] }),
6501
+ resolved === "completed" && /* @__PURE__ */ jsxs(Fragment, { children: [
6502
+ /* @__PURE__ */ jsx("circle", { cx: CENTER, cy: CENTER, r: RING_RADIUS + STROKE_WIDTH / 2, fill: tint }),
6503
+ /* @__PURE__ */ jsx(
6504
+ "path",
6505
+ {
6506
+ d: "M5 8.2 7 10.2 11 5.8",
6507
+ fill: "none",
6508
+ stroke: "#fff",
6509
+ strokeWidth: "1.6",
6510
+ strokeLinecap: "round",
6511
+ strokeLinejoin: "round"
6512
+ }
6513
+ )
6514
+ ] }),
6515
+ resolved === "canceled" && /* @__PURE__ */ jsxs(Fragment, { children: [
6516
+ /* @__PURE__ */ jsx(
6517
+ "circle",
6518
+ {
6519
+ cx: CENTER,
6520
+ cy: CENTER,
6521
+ r: RING_RADIUS,
6522
+ fill: "none",
6523
+ stroke: mutedTint,
6524
+ strokeWidth: STROKE_WIDTH
6525
+ }
6526
+ ),
6527
+ /* @__PURE__ */ jsx(
6528
+ "path",
6529
+ {
6530
+ d: "M5.75 5.75 10.25 10.25 M10.25 5.75 5.75 10.25",
6531
+ stroke: mutedTint,
6532
+ strokeWidth: "1.6",
6533
+ strokeLinecap: "round"
6534
+ }
6535
+ )
6536
+ ] })
6537
+ ]
6538
+ }
6539
+ );
6540
+ }
6339
6541
  var Stepper = forwardRef(function Stepper2({ steps, currentStep, orientation = "horizontal", className, ...props }, ref) {
6340
6542
  const isVertical = orientation === "vertical";
6341
6543
  return /* @__PURE__ */ jsx(
@@ -8579,16 +8781,16 @@ var NotificationFilter = forwardRef(
8579
8781
  ),
8580
8782
  ...props,
8581
8783
  children: [
8582
- /* @__PURE__ */ jsx("div", { className: "bg-bg-2 inline-flex rounded-md p-0.5 text-xs font-medium", children: FILTER_OPTIONS.map((option) => /* @__PURE__ */ jsx(
8784
+ /* @__PURE__ */ jsx("div", { className: "bg-bg-2 inline-flex rounded-lg p-0.5 text-xs font-medium", children: FILTER_OPTIONS.map((option) => /* @__PURE__ */ jsx(
8583
8785
  "button",
8584
8786
  {
8585
8787
  type: "button",
8586
8788
  onClick: () => onValueChange(option),
8587
8789
  "aria-pressed": value === option,
8588
8790
  className: cn(
8589
- "rounded-[6px] px-2.5 py-1 capitalize transition-colors",
8791
+ "rounded-md px-2.5 py-1 capitalize transition-colors",
8590
8792
  "focus-visible:ring-accent outline-none focus-visible:ring-2",
8591
- value === option ? "bg-surface text-fg shadow-quiet" : "text-fg-3 hover:text-fg"
8793
+ value === option ? "bg-surface text-fg shadow-quiet ring-rule-soft ring-1" : "text-fg-3 hover:text-fg"
8592
8794
  ),
8593
8795
  children: option
8594
8796
  },
@@ -8616,45 +8818,51 @@ var NotificationList = forwardRef(
8616
8818
  );
8617
8819
  NotificationList.displayName = "NotificationList";
8618
8820
  var NotificationItem = forwardRef(
8619
- function NotificationItem2({ title, body, typeLabel, client, time, sender, icon, unread, className, ...props }, ref) {
8620
- const meta = [typeLabel, client, time].filter(Boolean);
8821
+ function NotificationItem2({ title, body, typeLabel, client, time, sender, icon, iconClassName, unread, className, ...props }, ref) {
8822
+ const meta = body ? [] : [typeLabel, client].filter(Boolean);
8621
8823
  return /* @__PURE__ */ jsxs(
8622
8824
  "button",
8623
8825
  {
8624
8826
  ref,
8625
8827
  type: "button",
8626
8828
  className: cn(
8627
- "flex w-full gap-3 px-4 py-3 text-left outline-none",
8829
+ "flex w-full gap-3 px-4 py-2.5 text-left outline-none",
8628
8830
  "transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
8629
- "hover:bg-bg-2/60 focus-visible:bg-bg-2/60",
8630
- unread && "bg-accent/[0.06]",
8831
+ unread ? "bg-pro-bg hover:bg-pro-bg-hover focus-visible:bg-pro-bg-hover" : "hover:bg-bg-2/60 focus-visible:bg-bg-2/60",
8631
8832
  className
8632
8833
  ),
8633
8834
  ...props,
8634
8835
  children: [
8836
+ /* @__PURE__ */ jsx("span", { className: "flex w-1.5 shrink-0 justify-center", "aria-hidden": "true", children: unread && /* @__PURE__ */ jsx("span", { className: "bg-pro-fg mt-[13px] size-1.5 rounded-full" }) }),
8635
8837
  sender ? /* @__PURE__ */ jsx(Avatar, { size: "sm", name: sender.name, src: sender.src, className: "mt-0.5" }) : /* @__PURE__ */ jsx(
8636
8838
  "div",
8637
8839
  {
8638
8840
  "aria-hidden": "true",
8639
- className: "bg-bg-2 text-fg-3 mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-full [&_svg]:size-3.5",
8841
+ className: cn(
8842
+ "mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-lg [&_svg]:size-3.5",
8843
+ iconClassName ?? "bg-bg-2 text-fg-3"
8844
+ ),
8640
8845
  children: icon
8641
8846
  }
8642
8847
  ),
8643
8848
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
8644
8849
  unread && /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Unread. " }),
8645
- /* @__PURE__ */ jsx("p", { className: cn("text-fg text-sm leading-snug", unread ? "font-semibold" : "font-medium"), children: title }),
8646
- body && /* @__PURE__ */ jsx("p", { className: "text-fg-3 mt-0.5 truncate text-xs", children: body }),
8647
- meta.length > 0 && /* @__PURE__ */ jsx("div", { className: "text-fg-4 mt-1 flex flex-wrap items-center gap-1.5 text-[11px]", children: meta.map((part, i) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
8648
- i > 0 && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\xB7" }),
8850
+ /* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-2", children: [
8649
8851
  /* @__PURE__ */ jsx(
8650
- "span",
8852
+ "p",
8651
8853
  {
8652
8854
  className: cn(
8653
- i === 0 && typeLabel ? "font-medium tracking-wide uppercase" : "tabular-nums"
8855
+ "line-clamp-2 min-w-0 flex-1 text-[13.5px] leading-snug font-medium",
8856
+ unread ? "text-fg" : "text-fg-2"
8654
8857
  ),
8655
- children: part
8858
+ children: title
8656
8859
  }
8657
- )
8860
+ ),
8861
+ time && /* @__PURE__ */ jsx("span", { className: "text-fg-4 shrink-0 text-xs whitespace-nowrap tabular-nums", children: time })
8862
+ ] }),
8863
+ body ? /* @__PURE__ */ jsx("p", { className: "text-fg-3 mt-0.5 truncate text-xs", children: body }) : meta.length > 0 && /* @__PURE__ */ jsx("p", { className: "text-fg-4 mt-0.5 truncate text-[11.5px]", children: meta.map((part, i) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
8864
+ i > 0 && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: " \xB7 " }),
8865
+ part
8658
8866
  ] }, i)) })
8659
8867
  ] })
8660
8868
  ]
@@ -8669,7 +8877,7 @@ var Toolbar = forwardRef(function Toolbar2({ className, children, ...props }, re
8669
8877
  Toolbar.displayName = "Toolbar";
8670
8878
  var filterChipVariants = cva(
8671
8879
  cn(
8672
- "inline-flex items-center gap-1.5 h-8 px-3 rounded-pill text-xs font-medium border",
8880
+ "inline-flex items-center gap-1.5 rounded-pill font-medium border",
8673
8881
  "transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
8674
8882
  "motion-reduce:transition-none",
8675
8883
  "focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]",
@@ -8680,21 +8888,29 @@ var filterChipVariants = cva(
8680
8888
  active: {
8681
8889
  true: "bg-pro-bg text-pro-fg border-pro-fg/30 hover:bg-pro-bg-hover",
8682
8890
  false: "bg-bg-2 text-fg-2 border-rule hover:bg-bg-3"
8891
+ },
8892
+ // Control text scale shared with Button / MultiFilterPill: sm = 13px,
8893
+ // md = 14px, lg = 16px. Defaults to the dense `sm` tier (toolbar control).
8894
+ size: {
8895
+ sm: "h-8 px-3 text-[13px]",
8896
+ md: "h-9 px-3.5 text-sm",
8897
+ lg: "h-10 px-4 text-base"
8683
8898
  }
8684
8899
  },
8685
8900
  defaultVariants: {
8686
- active: false
8901
+ active: false,
8902
+ size: "sm"
8687
8903
  }
8688
8904
  }
8689
8905
  );
8690
- var FilterChip = forwardRef(function FilterChip2({ active = false, count, className, children, type, ...props }, ref) {
8906
+ var FilterChip = forwardRef(function FilterChip2({ active = false, size, count, className, children, type, ...props }, ref) {
8691
8907
  return /* @__PURE__ */ jsxs(
8692
8908
  "button",
8693
8909
  {
8694
8910
  ref,
8695
8911
  type: type ?? "button",
8696
8912
  "aria-pressed": active ?? false,
8697
- className: cn(filterChipVariants({ active }), className),
8913
+ className: cn(filterChipVariants({ active, size }), className),
8698
8914
  ...props,
8699
8915
  children: [
8700
8916
  children,
@@ -8790,6 +9006,6 @@ var KbdHint = forwardRef(function KbdHint2({ className, children, ...props }, re
8790
9006
  });
8791
9007
  KbdHint.displayName = "KbdHint";
8792
9008
 
8793
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityItem, ActivityList, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AlertTriangleSolidIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, AtSignIcon, Avatar, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, Button, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content15 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, DataItem, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DatePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DocumentIcon, DollarSignIcon, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EyeIcon, EyeOffIcon, Eyebrow, FileIcon, FileReturnIcon, FileTextIcon, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, InboxIcon, InfoCircleSolidIcon, InfoIcon, Input, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label4 as Label, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MenuIcon, MessageCircleIcon, MessageCircleWarningIcon, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, NotificationFilter, NotificationItem, NotificationList, NotificationPanel, NotificationPanelHeader, Numeric, OTPInput, PageHeader, PageHeaderSep, PageHeaderSpec, Pagination, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PenSignIcon, PencilIcon, PhoneIcon, PhoneInput, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, ProgressBar, ProgressRing, RadioGroup3 as RadioGroup, RadioGroupItem, ReceiptIcon, ReplyIcon, RotateCcwIcon, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, SearchSelect, SecondaryAction, Section, SectionHead, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SendIcon, Separator4 as Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, SidebarBrandText, SidebarFooter, SidebarLink, SidebarLinkAction, SidebarLinkBadge, SidebarLinkGroup, SidebarLinkLabel, SidebarProvider, SidebarSection, SidebarTrigger, SidebarUser, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, StarIcon, StarRating, Stat, Stepper, StrikethroughIcon, SubmitButton, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TeamIcon, TeamMemberSelect, Textarea, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, TrendingDownIcon, TrendingUpIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XCircleSolidIcon, XIcon, ZoomInIcon, ZoomOutIcon, alertVariants, badgeVariants, buttonVariants, cardVariants, cn, colors, displayToIso, filterChipVariants, inputVariants, isoToDisplay, labelVariants, progressBarVariants, progressRingVariants, radii, reference, searchInputVariants, shadows, sidebarLinkBadgeVariants, spacing, starRatingVariants, surfaces, systemTokens, textareaVariants, typography, useSidebarState, useToast };
9009
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityItem, ActivityList, Alert, AlertCircleIcon, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AlertTriangleIcon, AlertTriangleSolidIcon, AppHeader, AppHeaderActions, AppHeaderBreadcrumb, AppHeaderSearch, AppHeaderTitle, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowRightSmallIcon, ArrowUpIcon, AspectRatio, AtSignIcon, Avatar, Badge, BarChartIcon, BellIcon, Blockquote, BoldIcon, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BriefcaseIcon, Building2Icon, BuildingIcon, Button, Calendar, CalendarIcon, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatBubbleIcon, CheckCircle2Icon, CheckCircleSolidIcon, CheckIcon, Checkbox, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ChevronsUpDownIcon, CircleDotIcon, CircleIcon, ClientSelect, ClipboardCheckIcon, ClockIcon, CloseIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, ComingSoon, CommandIcon, CommandPalette, ConfirmActionButton, Content15 as Content, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyIcon, CornerDownLeftIcon, CreditCardIcon, DATE_DISPLAY_PLACEHOLDER, DangerAction, DataItem, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DatePicker, DetailGrid, DetailMain, DetailSpine, DetailSpineHeader, DetailSpineSection, DetailSpineStats, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DismissibleChip, DocumentIcon, DollarSignIcon, DownloadIcon, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EyeIcon, EyeOffIcon, Eyebrow, FileIcon, FileReturnIcon, FileTextIcon, FileUpload, FilterChip, FilterIcon, FlagIcon, FolderClosedIcon, FolderOpenIcon, FolderPlusIcon, FormError, FormSection, FormSuccess, GlobeIcon, GoogleBrandIcon, HelpCircleIcon, HistoryIcon, HomeIcon, HoverCard, HoverCardContent, HoverCardPortal, HoverCardTrigger, IconAction, InboxIcon, InfoCircleSolidIcon, InfoIcon, Input, ItalicIcon, Kanban, KanbanCard, KanbanColumn, KanbanIcon, KbdHint, KeyIcon, KeyboardShortcutsDialog, KpiCard, Label4 as Label, LayoutDashboardIcon, LayoutGridIcon, LayoutListIcon, LightningIcon, Link2Icon, LinkAction, LinkButton, LinkIcon, ListChecksIcon, ListIcon, ListOrderedIcon, LoaderIcon, LoadingRows, LockIcon, LockKeyholeIcon, LockOpenIcon, LogOutIcon, Logo, MailIcon, Main, MapPinIcon, MenuIcon, MessageCircleIcon, MessageCircleWarningIcon, MetadataGrid, MicrosoftBrandIcon, MinusIcon, MonitorIcon, MoonIcon, MoreHorizontalIcon, MoveIcon, MultiFilterPill, MultiSelectField, MutedSpec, NotificationFilter, NotificationItem, NotificationList, NotificationPanel, NotificationPanelHeader, Numeric, OTPInput, PageHeader, PageHeaderSep, PageHeaderSpec, Pagination, PaletteIcon, PanelLeftCloseIcon, PanelLeftIcon, PaperclipIcon, PenSignIcon, PencilIcon, PhoneIcon, PhoneInput, PlusIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPortal, PopoverTrigger, PrimaryAction, PriorityIcon, ProgressBar, ProgressRing, RadioGroup3 as RadioGroup, RadioGroupItem, ReceiptIcon, ReplyIcon, RotateCcwIcon, SaveIcon, ScrollArea, ScrollBar, SearchIcon, SearchInput, SearchSelect, SecondaryAction, Section, SectionHead, SectionHeader, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectRoot, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SendIcon, Separator4 as Separator, SettingsIcon, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Shell, ShieldIcon, SideDrawer, Sidebar, SidebarBrand, SidebarBrandText, SidebarFooter, SidebarLink, SidebarLinkAction, SidebarLinkBadge, SidebarLinkGroup, SidebarLinkLabel, SidebarProvider, SidebarSection, SidebarTrigger, SidebarUser, Skeleton, SkeletonCircle, SkeletonText, SlashIcon, Slider, SmartphoneIcon, SparkleIcon, SparklesIcon, StarIcon, StarRating, Stat, StatusIcon, Stepper, StrikethroughIcon, SubmitButton, SunIcon, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableIcon, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagIcon, TeamIcon, TeamMemberSelect, Textarea, ToastProvider, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Trash2Icon, TrashIcon, TrendingDownIcon, TrendingUpIcon, UnderlineIcon, UploadIcon, UserCircleIcon, UserIcon, UsersIcon, VisuallyHidden, WorkflowIcon, XCircleSolidIcon, XIcon, ZoomInIcon, ZoomOutIcon, alertVariants, badgeVariants, buttonVariants, cardVariants, cn, colors, displayToIso, filterChipVariants, inputVariants, isoToDisplay, labelVariants, progressBarVariants, progressRingVariants, radii, reference, searchInputVariants, shadows, sidebarLinkBadgeVariants, spacing, starRatingVariants, surfaces, systemTokens, textareaVariants, typography, useSidebarState, useToast };
8794
9010
  //# sourceMappingURL=index.js.map
8795
9011
  //# sourceMappingURL=index.js.map