@assure-one/design-system 0.8.0 → 0.10.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
  }
@@ -1496,6 +1506,20 @@ interface SidebarContextValue {
1496
1506
  setState: (next: SidebarState) => void;
1497
1507
  toggle: () => void;
1498
1508
  collapsible: boolean;
1509
+ /**
1510
+ * Refcount of "hold the column visually expanded" requests from external
1511
+ * consumers (dropdowns, popovers, command palettes). Read by <Sidebar> to
1512
+ * trigger overlay rendering without mutating the persistent `state`.
1513
+ * See `useSidebarPeekLock` for the canonical consumer API.
1514
+ */
1515
+ peekLockCount: number;
1516
+ /**
1517
+ * Increment the peek-lock refcount. Returns an idempotent release function
1518
+ * that decrements once when called and is safe to call twice. Prefer the
1519
+ * `useSidebarPeekLock` hook over calling this directly — it handles the
1520
+ * acquire/release lifecycle via useEffect cleanup.
1521
+ */
1522
+ acquirePeekLock: () => () => void;
1499
1523
  }
1500
1524
  declare function useSidebarState(): SidebarContextValue;
1501
1525
  interface SidebarProviderProps {
@@ -1528,6 +1552,14 @@ interface SidebarTriggerProps extends React$1.ButtonHTMLAttributes<HTMLButtonEle
1528
1552
  collapseLabel?: string;
1529
1553
  }
1530
1554
  declare const SidebarTrigger: React$1.ForwardRefExoticComponent<SidebarTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
1555
+ declare function useSidebarPeekLock(active: boolean): void;
1556
+ interface SidebarPinButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
1557
+ /** aria-label when state="rail" (default: "Pin sidebar"). */
1558
+ pinLabel?: string;
1559
+ /** aria-label when state="expanded" (default: "Unpin sidebar"). */
1560
+ unpinLabel?: string;
1561
+ }
1562
+ declare const SidebarPinButton: React$1.ForwardRefExoticComponent<SidebarPinButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
1531
1563
  type SidebarBrandProps = React$1.HTMLAttributes<HTMLDivElement>;
1532
1564
  declare const SidebarBrand: React$1.ForwardRefExoticComponent<SidebarBrandProps & React$1.RefAttributes<HTMLDivElement>>;
1533
1565
  /**
@@ -2100,20 +2132,31 @@ declare const NotificationFilter: React$1.ForwardRefExoticComponent<Notification
2100
2132
  type NotificationListProps = React.HTMLAttributes<HTMLDivElement>;
2101
2133
  declare const NotificationList: React$1.ForwardRefExoticComponent<NotificationListProps & React$1.RefAttributes<HTMLDivElement>>;
2102
2134
  interface NotificationItemProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "title"> {
2135
+ /**
2136
+ * Primary headline — one scannable line (feed the human sentence here, e.g.
2137
+ * "Sara uploaded W-2.pdf", not a generic type label). Clamps to 2 lines,
2138
+ * then ellipsis.
2139
+ */
2103
2140
  title: React.ReactNode;
2141
+ /** Muted secondary line (a message snippet, etc.). Single line, truncates. */
2104
2142
  body?: React.ReactNode;
2105
- /** Small caption, joined with `client` and `time` on the meta line. */
2143
+ /** Quiet caption shown on the meta line only when there is no `body`. */
2106
2144
  typeLabel?: React.ReactNode;
2107
2145
  client?: React.ReactNode;
2108
- /** Preformatted relative time, e.g. "5m". */
2146
+ /** Preformatted relative time, e.g. "5m". Top-right, baseline with `title`. */
2109
2147
  time?: React.ReactNode;
2110
2148
  /** People-driven rows: shows the sender avatar instead of the icon tile. */
2111
2149
  sender?: {
2112
2150
  name: string;
2113
2151
  src?: string | null;
2114
2152
  };
2115
- /** System rows: icon rendered inside a neutral tile. Ignored when `sender` is set. */
2153
+ /** System rows: icon rendered inside a tile. Ignored when `sender` is set. */
2116
2154
  icon?: React.ReactNode;
2155
+ /**
2156
+ * Tint the icon tile per type, e.g. "bg-amber-bg text-amber". The consumer
2157
+ * owns the type-to-colour map. Defaults to a neutral tile.
2158
+ */
2159
+ iconClassName?: string;
2117
2160
  unread?: boolean;
2118
2161
  }
2119
2162
  declare const NotificationItem: React$1.ForwardRefExoticComponent<NotificationItemProps & React$1.RefAttributes<HTMLButtonElement>>;
@@ -2127,6 +2170,7 @@ type ToolbarProps = React.HTMLAttributes<HTMLDivElement>;
2127
2170
  declare const Toolbar: React$1.ForwardRefExoticComponent<ToolbarProps & React$1.RefAttributes<HTMLDivElement>>;
2128
2171
  declare const filterChipVariants: (props?: ({
2129
2172
  active?: boolean | null | undefined;
2173
+ size?: "sm" | "md" | "lg" | null | undefined;
2130
2174
  } & class_variance_authority_types.ClassProp) | undefined) => string;
2131
2175
  interface FilterChipProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, keyof VariantProps<typeof filterChipVariants>>, VariantProps<typeof filterChipVariants> {
2132
2176
  count?: number;
@@ -2185,4 +2229,4 @@ declare const KbdHint: React$1.ForwardRefExoticComponent<KbdHintProps & React$1.
2185
2229
 
2186
2230
  declare function cn(...inputs: ClassValue[]): string;
2187
2231
 
2188
- 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 };
2232
+ 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, SidebarPinButton, type SidebarPinButtonProps, 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, useSidebarPeekLock, 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",
@@ -5460,7 +5481,10 @@ var searchInputVariants = cva(
5460
5481
  {
5461
5482
  variants: {
5462
5483
  inputSize: {
5463
- 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]",
5464
5488
  md: "h-9 pl-9 pr-9 text-[13px]",
5465
5489
  lg: "h-11 pl-10 pr-10 text-sm"
5466
5490
  }
@@ -7314,7 +7338,10 @@ var NOOP_CONTEXT = {
7314
7338
  },
7315
7339
  toggle: () => {
7316
7340
  },
7317
- collapsible: false
7341
+ collapsible: false,
7342
+ peekLockCount: 0,
7343
+ acquirePeekLock: () => () => {
7344
+ }
7318
7345
  };
7319
7346
  function useSidebarState() {
7320
7347
  return React36.useContext(SidebarContext) ?? NOOP_CONTEXT;
@@ -7362,6 +7389,16 @@ function SidebarProvider({
7362
7389
  const toggle = React36.useCallback(() => {
7363
7390
  setState(state === "expanded" ? "rail" : "expanded");
7364
7391
  }, [state, setState]);
7392
+ const [peekLockCount, setPeekLockCount] = React36.useState(0);
7393
+ const acquirePeekLock = React36.useCallback(() => {
7394
+ setPeekLockCount((n) => n + 1);
7395
+ let released = false;
7396
+ return () => {
7397
+ if (released) return;
7398
+ released = true;
7399
+ setPeekLockCount((n) => Math.max(0, n - 1));
7400
+ };
7401
+ }, []);
7365
7402
  React36.useEffect(() => {
7366
7403
  if (!shortcut) return;
7367
7404
  const parts = shortcut.split("+");
@@ -7383,8 +7420,8 @@ function SidebarProvider({
7383
7420
  return () => window.removeEventListener("keydown", onKey);
7384
7421
  }, [shortcut, toggle]);
7385
7422
  const value = React36.useMemo(
7386
- () => ({ state, setState, toggle, collapsible: true }),
7387
- [state, setState, toggle]
7423
+ () => ({ state, setState, toggle, collapsible: true, peekLockCount, acquirePeekLock }),
7424
+ [state, setState, toggle, peekLockCount, acquirePeekLock]
7388
7425
  );
7389
7426
  return /* @__PURE__ */ jsx(SidebarContext.Provider, { value, children });
7390
7427
  }
@@ -7394,6 +7431,7 @@ var PEEK_LEAVE_DELAY_MS = 200;
7394
7431
  var Sidebar = React36.forwardRef(function Sidebar2({ className, collapsible = false, onMouseEnter, onMouseLeave, style, ...props }, ref) {
7395
7432
  const ctx = React36.useContext(SidebarContext);
7396
7433
  const state = collapsible && ctx ? ctx.state : "expanded";
7434
+ const peekLockCount = collapsible && ctx ? ctx.peekLockCount : 0;
7397
7435
  const [peek, setPeek] = React36.useState(false);
7398
7436
  const enterTimer = React36.useRef(null);
7399
7437
  const leaveTimer = React36.useRef(null);
@@ -7434,7 +7472,8 @@ var Sidebar = React36.forwardRef(function Sidebar2({ className, collapsible = fa
7434
7472
  if (!peek) return;
7435
7473
  leaveTimer.current = window.setTimeout(() => setPeek(false), PEEK_LEAVE_DELAY_MS);
7436
7474
  };
7437
- const labelsHidden = state === "rail" && !peek;
7475
+ const overlay = state === "rail" && (peek || peekLockCount > 0);
7476
+ const labelsHidden = state === "rail" && !peek && peekLockCount === 0;
7438
7477
  const effectiveWidth = labelsHidden ? "var(--shell-sidebar-w-rail)" : "var(--shell-sidebar-w)";
7439
7478
  return (
7440
7479
  // Hover-peek is *enhancement only*: the canonical way to toggle the
@@ -7449,6 +7488,7 @@ var Sidebar = React36.forwardRef(function Sidebar2({ className, collapsible = fa
7449
7488
  ref,
7450
7489
  "data-state": state,
7451
7490
  "data-peek": peek ? "true" : void 0,
7491
+ "data-overlay": overlay ? "true" : void 0,
7452
7492
  "data-labels": labelsHidden ? "hide" : "show",
7453
7493
  "data-collapsible": collapsible ? "true" : void 0,
7454
7494
  onMouseEnter: handleEnter,
@@ -7464,9 +7504,11 @@ var Sidebar = React36.forwardRef(function Sidebar2({ className, collapsible = fa
7464
7504
  // doesn't repaint every frame mid-transition.
7465
7505
  "transition-[width,box-shadow] duration-[220ms] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
7466
7506
  "[will-change:width]",
7467
- // Peek overlay: float above the canvas without reflowing layout.
7468
- "data-[peek=true]:fixed data-[peek=true]:top-0 data-[peek=true]:left-0",
7469
- "data-[peek=true]:z-[var(--z-overlay)] data-[peek=true]:shadow-pop",
7507
+ // Overlay (hover-peek OR programmatic peek-lock): float above the
7508
+ // canvas without reflowing layout. Driven by `data-overlay` so a
7509
+ // single rule handles both transient sources.
7510
+ "data-[overlay=true]:fixed data-[overlay=true]:top-0 data-[overlay=true]:left-0",
7511
+ "data-[overlay=true]:z-[var(--z-overlay)] data-[overlay=true]:shadow-pop",
7470
7512
  // Padding is held constant across states so icons keep their
7471
7513
  // horizontal anchor when the column widens — peek expands the
7472
7514
  // labels rightward rather than shifting the icons leftward.
@@ -7516,6 +7558,87 @@ var SidebarTrigger = React36.forwardRef(
7516
7558
  }
7517
7559
  );
7518
7560
  SidebarTrigger.displayName = "SidebarTrigger";
7561
+ function useSidebarPeekLock(active) {
7562
+ const ctx = React36.useContext(SidebarContext);
7563
+ React36.useEffect(() => {
7564
+ if (!active || !ctx) return;
7565
+ const release = ctx.acquirePeekLock();
7566
+ return release;
7567
+ }, [active, ctx]);
7568
+ }
7569
+ var SidebarPinButton = React36.forwardRef(
7570
+ function SidebarPinButton2({
7571
+ pinLabel = "Pin sidebar",
7572
+ unpinLabel = "Unpin sidebar",
7573
+ className,
7574
+ onClick,
7575
+ ...props
7576
+ }, ref) {
7577
+ const ctx = React36.useContext(SidebarContext);
7578
+ if (!ctx || !ctx.collapsible) return null;
7579
+ const { state, setState } = ctx;
7580
+ const isPinned = state === "expanded";
7581
+ return /* @__PURE__ */ jsx(
7582
+ "button",
7583
+ {
7584
+ ref,
7585
+ type: "button",
7586
+ "aria-label": isPinned ? unpinLabel : pinLabel,
7587
+ "aria-pressed": isPinned,
7588
+ onClick: (e) => {
7589
+ onClick?.(e);
7590
+ if (!e.defaultPrevented) setState(isPinned ? "rail" : "expanded");
7591
+ },
7592
+ className: cn(
7593
+ "inline-flex size-7 shrink-0 items-center justify-center rounded-md",
7594
+ "text-fg-4 hover:bg-bg-3 hover:text-fg aria-pressed:text-fg",
7595
+ "transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
7596
+ "focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]",
7597
+ // Hidden when labels are hidden (rail-no-peek-no-lock). Visible
7598
+ // in every overlay state so users can pin during hover or while
7599
+ // a dropdown holds the column open.
7600
+ "group-data-[labels=hide]/sidebar:hidden",
7601
+ className
7602
+ ),
7603
+ ...props,
7604
+ children: /* @__PURE__ */ jsx(PinGlyph, { size: 14, filled: isPinned, className: "rotate-45" })
7605
+ }
7606
+ );
7607
+ }
7608
+ );
7609
+ SidebarPinButton.displayName = "SidebarPinButton";
7610
+ function PinGlyph({
7611
+ size = 16,
7612
+ filled = false,
7613
+ className
7614
+ }) {
7615
+ return /* @__PURE__ */ jsxs(
7616
+ "svg",
7617
+ {
7618
+ xmlns: "http://www.w3.org/2000/svg",
7619
+ width: size,
7620
+ height: size,
7621
+ viewBox: "0 0 24 24",
7622
+ fill: "none",
7623
+ stroke: "currentColor",
7624
+ strokeWidth: 2,
7625
+ strokeLinecap: "round",
7626
+ strokeLinejoin: "round",
7627
+ "aria-hidden": "true",
7628
+ className,
7629
+ children: [
7630
+ /* @__PURE__ */ jsx("path", { d: "M12 17v5" }),
7631
+ /* @__PURE__ */ jsx(
7632
+ "path",
7633
+ {
7634
+ d: "M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",
7635
+ fill: filled ? "currentColor" : "none"
7636
+ }
7637
+ )
7638
+ ]
7639
+ }
7640
+ );
7641
+ }
7519
7642
  var SidebarBrand = React36.forwardRef(
7520
7643
  function SidebarBrand2({ className, ...props }, ref) {
7521
7644
  return /* @__PURE__ */ jsx(
@@ -8757,16 +8880,16 @@ var NotificationFilter = forwardRef(
8757
8880
  ),
8758
8881
  ...props,
8759
8882
  children: [
8760
- /* @__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(
8883
+ /* @__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(
8761
8884
  "button",
8762
8885
  {
8763
8886
  type: "button",
8764
8887
  onClick: () => onValueChange(option),
8765
8888
  "aria-pressed": value === option,
8766
8889
  className: cn(
8767
- "rounded-[6px] px-2.5 py-1 capitalize transition-colors",
8890
+ "rounded-md px-2.5 py-1 capitalize transition-colors",
8768
8891
  "focus-visible:ring-accent outline-none focus-visible:ring-2",
8769
- value === option ? "bg-surface text-fg shadow-quiet" : "text-fg-3 hover:text-fg"
8892
+ value === option ? "bg-surface text-fg shadow-quiet ring-rule-soft ring-1" : "text-fg-3 hover:text-fg"
8770
8893
  ),
8771
8894
  children: option
8772
8895
  },
@@ -8794,45 +8917,51 @@ var NotificationList = forwardRef(
8794
8917
  );
8795
8918
  NotificationList.displayName = "NotificationList";
8796
8919
  var NotificationItem = forwardRef(
8797
- function NotificationItem2({ title, body, typeLabel, client, time, sender, icon, unread, className, ...props }, ref) {
8798
- const meta = [typeLabel, client, time].filter(Boolean);
8920
+ function NotificationItem2({ title, body, typeLabel, client, time, sender, icon, iconClassName, unread, className, ...props }, ref) {
8921
+ const meta = body ? [] : [typeLabel, client].filter(Boolean);
8799
8922
  return /* @__PURE__ */ jsxs(
8800
8923
  "button",
8801
8924
  {
8802
8925
  ref,
8803
8926
  type: "button",
8804
8927
  className: cn(
8805
- "flex w-full gap-3 px-4 py-3 text-left outline-none",
8928
+ "flex w-full gap-3 px-4 py-2.5 text-left outline-none",
8806
8929
  "transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)] motion-reduce:transition-none",
8807
- "hover:bg-bg-2/60 focus-visible:bg-bg-2/60",
8808
- unread && "bg-accent/[0.06]",
8930
+ 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",
8809
8931
  className
8810
8932
  ),
8811
8933
  ...props,
8812
8934
  children: [
8935
+ /* @__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" }) }),
8813
8936
  sender ? /* @__PURE__ */ jsx(Avatar, { size: "sm", name: sender.name, src: sender.src, className: "mt-0.5" }) : /* @__PURE__ */ jsx(
8814
8937
  "div",
8815
8938
  {
8816
8939
  "aria-hidden": "true",
8817
- 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",
8940
+ className: cn(
8941
+ "mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-lg [&_svg]:size-3.5",
8942
+ iconClassName ?? "bg-bg-2 text-fg-3"
8943
+ ),
8818
8944
  children: icon
8819
8945
  }
8820
8946
  ),
8821
8947
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
8822
8948
  unread && /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Unread. " }),
8823
- /* @__PURE__ */ jsx("p", { className: cn("text-fg text-sm leading-snug", unread ? "font-semibold" : "font-medium"), children: title }),
8824
- body && /* @__PURE__ */ jsx("p", { className: "text-fg-3 mt-0.5 truncate text-xs", children: body }),
8825
- 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: [
8826
- i > 0 && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\xB7" }),
8949
+ /* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-2", children: [
8827
8950
  /* @__PURE__ */ jsx(
8828
- "span",
8951
+ "p",
8829
8952
  {
8830
8953
  className: cn(
8831
- i === 0 && typeLabel ? "font-medium tracking-wide uppercase" : "tabular-nums"
8954
+ "line-clamp-2 min-w-0 flex-1 text-[13.5px] leading-snug font-medium",
8955
+ unread ? "text-fg" : "text-fg-2"
8832
8956
  ),
8833
- children: part
8957
+ children: title
8834
8958
  }
8835
- )
8959
+ ),
8960
+ time && /* @__PURE__ */ jsx("span", { className: "text-fg-4 shrink-0 text-xs whitespace-nowrap tabular-nums", children: time })
8961
+ ] }),
8962
+ 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: [
8963
+ i > 0 && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: " \xB7 " }),
8964
+ part
8836
8965
  ] }, i)) })
8837
8966
  ] })
8838
8967
  ]
@@ -8847,7 +8976,7 @@ var Toolbar = forwardRef(function Toolbar2({ className, children, ...props }, re
8847
8976
  Toolbar.displayName = "Toolbar";
8848
8977
  var filterChipVariants = cva(
8849
8978
  cn(
8850
- "inline-flex items-center gap-1.5 h-8 px-3 rounded-pill text-xs font-medium border",
8979
+ "inline-flex items-center gap-1.5 rounded-pill font-medium border",
8851
8980
  "transition-colors duration-[var(--duration-fast)] ease-[var(--ease-out-quart)]",
8852
8981
  "motion-reduce:transition-none",
8853
8982
  "focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-focus-ring)]",
@@ -8858,21 +8987,29 @@ var filterChipVariants = cva(
8858
8987
  active: {
8859
8988
  true: "bg-pro-bg text-pro-fg border-pro-fg/30 hover:bg-pro-bg-hover",
8860
8989
  false: "bg-bg-2 text-fg-2 border-rule hover:bg-bg-3"
8990
+ },
8991
+ // Control text scale shared with Button / MultiFilterPill: sm = 13px,
8992
+ // md = 14px, lg = 16px. Defaults to the dense `sm` tier (toolbar control).
8993
+ size: {
8994
+ sm: "h-8 px-3 text-[13px]",
8995
+ md: "h-9 px-3.5 text-sm",
8996
+ lg: "h-10 px-4 text-base"
8861
8997
  }
8862
8998
  },
8863
8999
  defaultVariants: {
8864
- active: false
9000
+ active: false,
9001
+ size: "sm"
8865
9002
  }
8866
9003
  }
8867
9004
  );
8868
- var FilterChip = forwardRef(function FilterChip2({ active = false, count, className, children, type, ...props }, ref) {
9005
+ var FilterChip = forwardRef(function FilterChip2({ active = false, size, count, className, children, type, ...props }, ref) {
8869
9006
  return /* @__PURE__ */ jsxs(
8870
9007
  "button",
8871
9008
  {
8872
9009
  ref,
8873
9010
  type: type ?? "button",
8874
9011
  "aria-pressed": active ?? false,
8875
- className: cn(filterChipVariants({ active }), className),
9012
+ className: cn(filterChipVariants({ active, size }), className),
8876
9013
  ...props,
8877
9014
  children: [
8878
9015
  children,
@@ -8968,6 +9105,6 @@ var KbdHint = forwardRef(function KbdHint2({ className, children, ...props }, re
8968
9105
  });
8969
9106
  KbdHint.displayName = "KbdHint";
8970
9107
 
8971
- 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 };
9108
+ 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, SidebarPinButton, 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, useSidebarPeekLock, useSidebarState, useToast };
8972
9109
  //# sourceMappingURL=index.js.map
8973
9110
  //# sourceMappingURL=index.js.map