@sofya-ds/react 1.13.0 → 1.13.1

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
@@ -100,12 +100,12 @@ declare function Badge({ className, variant, alert, pillTone, ...props }: BadgeP
100
100
  declare const buttonLanguageLocaleOptions: readonly ["pt-BR", "en-US", "es-ES"];
101
101
  type ButtonLanguageLocale = (typeof buttonLanguageLocaleOptions)[number];
102
102
 
103
- declare const buttonVariantOptions: readonly ["default", "gradient", "dropdown", "icon", "language", "secondary", "outline", "ghost", "destructive"];
104
- declare const buttonSizeOptions: readonly ["default", "sm", "lg", "icon"];
103
+ declare const buttonVariantOptions: readonly ["default", "gradient", "dropdown", "icon", "language", "secondary", "auth-outline", "outline", "ghost", "destructive"];
104
+ declare const buttonSizeOptions: readonly ["default", "sm", "lg", "toolbar", "auth", "icon"];
105
105
 
106
106
  declare const buttonVariants: (props?: ({
107
- variant?: "default" | "destructive" | "icon" | "secondary" | "gradient" | "dropdown" | "language" | "outline" | "ghost" | null | undefined;
108
- size?: "sm" | "default" | "lg" | "icon" | null | undefined;
107
+ variant?: "default" | "destructive" | "icon" | "secondary" | "gradient" | "dropdown" | "language" | "auth-outline" | "outline" | "ghost" | null | undefined;
108
+ size?: "sm" | "default" | "lg" | "toolbar" | "icon" | "auth" | null | undefined;
109
109
  } & class_variance_authority_types.ClassProp) | undefined) => string;
110
110
  interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
111
111
  active?: boolean;
@@ -444,7 +444,7 @@ type UploadInputProps = InputBaseProps$1 & Omit<React.InputHTMLAttributes<HTMLIn
444
444
  variant: "upload";
445
445
  };
446
446
 
447
- declare const inputVariantOptions: readonly ["default", "search", "otp", "upload"];
447
+ declare const inputVariantOptions: readonly ["default", "auth-login", "search", "otp", "upload"];
448
448
  type InputVariant = (typeof inputVariantOptions)[number];
449
449
 
450
450
  type InputBaseProps = {
@@ -454,7 +454,7 @@ type InputBaseProps = {
454
454
  type DefaultInputProps = InputBaseProps & Omit<React.InputHTMLAttributes<HTMLInputElement>, "className"> & {
455
455
  label?: React.ReactNode;
456
456
  labelClassName?: string;
457
- variant?: "default";
457
+ variant?: "default" | "auth-login";
458
458
  };
459
459
  type SearchInputProps = InputBaseProps & Omit<React.InputHTMLAttributes<HTMLInputElement>, "className"> & {
460
460
  label?: never;
@@ -742,9 +742,22 @@ declare const SelectSeparator: React.ForwardRefExoticComponent<Omit<SelectPrimit
742
742
 
743
743
  declare const Separator: React.ForwardRefExoticComponent<Omit<SeparatorPrimitive.SeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
744
744
 
745
+ type SidebarNavItemAppearance = "settings" | "workspace";
746
+ interface SidebarNavProps extends React.HTMLAttributes<HTMLElement> {
747
+ /** Render as a different element/component. Defaults to nav. */
748
+ as?: React.ElementType;
749
+ }
750
+ type SidebarNavSectionProps = React.HTMLAttributes<HTMLDivElement>;
751
+ interface SidebarNavSectionLabelProps extends React.HTMLAttributes<HTMLElement> {
752
+ /** Semantic heading element for the section label. Defaults to h5. */
753
+ as?: React.ElementType;
754
+ }
755
+ type SidebarNavSectionItemsProps = React.HTMLAttributes<HTMLDivElement>;
745
756
  interface SidebarNavItemProps extends React.HTMLAttributes<HTMLElement> {
746
757
  /** Render as a different element/component (e.g. a router Link). */
747
758
  as?: React.ElementType;
759
+ /** Visual treatment. `settings` keeps the legacy selected surface. */
760
+ appearance?: SidebarNavItemAppearance;
748
761
  /** Marks the item as the current/selected destination. */
749
762
  active?: boolean;
750
763
  disabled?: boolean;
@@ -752,6 +765,10 @@ interface SidebarNavItemProps extends React.HTMLAttributes<HTMLElement> {
752
765
  icon?: React.ReactNode;
753
766
  href?: string;
754
767
  }
768
+ declare const SidebarNav: React.ForwardRefExoticComponent<SidebarNavProps & React.RefAttributes<HTMLElement>>;
769
+ declare const SidebarNavSection: React.ForwardRefExoticComponent<SidebarNavSectionProps & React.RefAttributes<HTMLDivElement>>;
770
+ declare const SidebarNavSectionLabel: React.ForwardRefExoticComponent<SidebarNavSectionLabelProps & React.RefAttributes<HTMLElement>>;
771
+ declare const SidebarNavSectionItems: React.ForwardRefExoticComponent<SidebarNavSectionItemsProps & React.RefAttributes<HTMLDivElement>>;
755
772
  /**
756
773
  * Lateral navigation item (settings / left sidebar).
757
774
  *
@@ -1100,7 +1117,7 @@ type TextWeight = React.CSSProperties["fontWeight"];
1100
1117
  type TextVariant = "default" | "gradient" | "shiny" | "split";
1101
1118
  type TextTone = "default" | "soft" | "subtle";
1102
1119
  type TextSplitType = "chars" | "words" | "words, chars";
1103
- declare const textSizeOptions: readonly ["display-xl", "display-lg", "heading-xl", "heading-lg", "heading-md", "h1", "h2", "h3", "h4", "h5", "encounter-title", "title-md", "title-sm", "body-lg", "body-md", "body-sm", "body", "label-md", "section-label", "eyebrow-md", "overline-md", "sidebar-title", "sidebar-title-regular", "sidebar-title-strong", "sidebar-label", "sidebar-label-strong", "sidebar-body", "sidebar-tag", "encounter-chip", "encounter-history", "caption", "eyebrow", "tiny", "extra-tiny", "code-sm"];
1120
+ declare const textSizeOptions: readonly ["display-xl", "display-lg", "heading-xl", "heading-lg", "heading-md", "settings-page-title", "home-inline-encounter-title", "home-inline-encounter-action", "h1", "h2", "h3", "h4", "h5", "encounter-title", "title-md", "title-sm", "body-lg", "body-md", "body-sm", "body", "label-md", "settings-section-title", "section-label", "eyebrow-md", "overline-md", "sidebar-title", "sidebar-title-regular", "sidebar-title-strong", "sidebar-label", "sidebar-label-strong", "sidebar-body", "sidebar-tag", "encounter-chip", "encounter-history", "caption", "eyebrow", "tiny", "extra-tiny", "code-sm"];
1104
1121
  declare const textVariantOptions: readonly ["default", "gradient", "shiny", "split"];
1105
1122
  declare const textToneOptions: readonly ["default", "soft", "subtle"];
1106
1123
  declare const textSplitTypeOptions: readonly ["chars", "words", "words, chars"];
@@ -1136,4 +1153,4 @@ interface SofyaProviderProps extends React.HTMLAttributes<HTMLDivElement> {
1136
1153
  }
1137
1154
  declare function SofyaProvider({ preset, overrides, className, style, children, ...props }: SofyaProviderProps): react_jsx_runtime.JSX.Element;
1138
1155
 
1139
- export { Accordion, type AccordionAppearance, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, Alert, AlertDescription, type AlertProps, type AlertSize, AlertTitle, type AlertTone, Avatar, type AvatarProps, Badge, type BadgeAlert, type BadgePillTone, type BadgeProps, type BadgeVariant, Button, type ButtonLanguageLocale, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, Checkbox, type CheckboxProps, CloseButton, type CloseButtonProps, Cluster, type ClusterProps, Container, type ContainerProps, Dialog, DialogBody, DialogCancel, DialogClose, DialogContent, type DialogContentProps, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DocumentCard, type DocumentCardProps, Dropdown, type DropdownAppearance, type DropdownItem, type DropdownProps, DropdownSearch, type DropdownSearchOption, type DropdownSearchProps, type DropdownSubItem, type DropdownTriggerSize, type DropdownVariant, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, type EmptyMediaProps, type EmptyProps, EmptyTitle, Icon, IconButton, type IconButtonProps, type IconButtonSize, type IconButtonVariant, type IconColor, type IconName, type IconProps, type IconSize, Inline, type InlineProps, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputProps, type InputVariant, Label, Link, type LinkProps, Logo, type LogoProps, type LogoSize, type LogoVariant, type NotificationVariant, type NotifyOptions, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverClose, PopoverCloseButton, PopoverContent, PopoverDescription, PopoverPortal, PopoverTitle, PopoverTrigger, PrivacyLabel, type PrivacyLabelProps, type PrivacyLevel, Progress, type ProgressProps, type ProgressSize, ProseDialogBody, ProseDialogContent, type ProseDialogContentProps, ProseDialogDescription, ProseDialogHeader, ProseDialogTitle, RadioGroup, RadioGroupItem, type RadioGroupItemProps, RadioGroupOption, RadioGroupOptionAvatar, type RadioGroupOptionAvatarProps, RadioGroupOptionDescription, type RadioGroupOptionDescriptionProps, RadioGroupOptionIndicator, type RadioGroupOptionIndicatorProps, RadioGroupOptionLabel, type RadioGroupOptionLabelProps, type RadioGroupOptionProps, type RadioGroupOrientation, type RadioGroupProps, type RadioGroupVariant, RichTextToolbar, RichTextToolbarButton, type RichTextToolbarButtonProps, RichTextToolbarGroup, type RichTextToolbarProps, RichTextToolbarSeparator, RightRailAction, type RightRailActionProps, ScrollArea, ScrollAreaCorner, type ScrollAreaOrientation, ScrollAreaScrollbar, type ScrollAreaScrollbarProps, ScrollAreaViewport, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, type SelectSize, SelectTrigger, SelectValue, Separator, SettingsNavItem, SidebarNavItem, type SidebarNavItemProps, Skeleton, type SkeletonProps, Slider, type SliderProps, SofyaProvider, type SofyaProviderProps, Spinner, type SpinnerProps, type SpinnerSize, Stack, type StackProps, StatusIndicator, type StatusIndicatorProps, StatusTooltip, type StatusTooltipProps, Surface, type SurfaceVariant, Switch, type SwitchProps, type SwitchSize, Table, TableActionButton, type TableActionButtonProps, TableActions, TableBody, TableCaption, TableCell, TableCellDescription, type TableCellDescriptionProps, type TableCellProps, TableCellTitle, type TableCellTitleProps, type TableDensity, TableFooter, TableHead, TableHeader, type TableHeaderProps, type TableProps, TableRow, type TableRowProps, TableStatusBadge, type TableStatusBadgeProps, type TableTextSize, Tabs, type TabsItem, type TabsProps, Tag, type TagProps, type TagStatusTone, type TagVariant, TemplateCard, type TemplateCardFavoriteDisplay, type TemplateCardLayout, type TemplateCardMetaPlacement, type TemplateCardProps, TemplateListItem, Text, type TextProps, type TextSize, type TextSplitType, type TextTone, type TextVariant, type TextWeight, Textarea, type TextareaProps, Toaster, type ToasterProps, Toggle, type ToggleProps, Tooltip, TooltipContent, type TooltipContentProps, TooltipProvider, type TooltipTone, TooltipTrigger, type UploadKind, type WorkflowStatus, type WorkflowStatusDescriptor, accordionAppearanceOptions, alertSizeOptions, alertToneOptions, avatarSizeOptions, avatarVariants, badgeAlertOptions, badgeAlertVariants, badgePillToneOptions, badgePillVariants, badgeVariantOptions, badgeVariants, buttonLanguageLocaleOptions, buttonSizeOptions, buttonVariantOptions, buttonVariants, cardVariants, dropdownAppearanceOptions, dropdownLanguageItems, dropdownTriggerSizeOptions, dropdownVariantOptions, emptyMediaVariantOptions, iconButtonSizeOptions, iconButtonVariantOptions, iconColorOptions, iconNames, iconSizeMap, iconSizeOptions, inputVariantOptions, isTextContent, logoSizeOptions, logoVariants, notificationVariantOptions, notify, paginationLinkVariants, privacyLevelOptions, progressSizeOptions, radioGroupOrientationOptions, radioGroupVariantOptions, renderTextContent, resolveWorkflowStatus, scrollAreaOrientationOptions, selectSizeOptions, spinnerSizeOptions, surfaceVariantOptions, switchSizeOptions, tableActionToneOptions, tableCellVariantOptions, tableDensityOptions, tableStatusToneOptions, tagStatusToneOptions, tagVariantOptions, templateCardFavoriteDisplayOptions, templateCardLayoutOptions, templateCardMetaPlacementOptions, textSizeOptions, textSplitTypeOptions, textToneOptions, textVariantOptions, tooltipToneOptions, uploadKindOptions, workflowStatusOptions };
1156
+ export { Accordion, type AccordionAppearance, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, Alert, AlertDescription, type AlertProps, type AlertSize, AlertTitle, type AlertTone, Avatar, type AvatarProps, Badge, type BadgeAlert, type BadgePillTone, type BadgeProps, type BadgeVariant, Button, type ButtonLanguageLocale, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardTitle, Checkbox, type CheckboxProps, CloseButton, type CloseButtonProps, Cluster, type ClusterProps, Container, type ContainerProps, Dialog, DialogBody, DialogCancel, DialogClose, DialogContent, type DialogContentProps, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DocumentCard, type DocumentCardProps, Dropdown, type DropdownAppearance, type DropdownItem, type DropdownProps, DropdownSearch, type DropdownSearchOption, type DropdownSearchProps, type DropdownSubItem, type DropdownTriggerSize, type DropdownVariant, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, type EmptyMediaProps, type EmptyProps, EmptyTitle, Icon, IconButton, type IconButtonProps, type IconButtonSize, type IconButtonVariant, type IconColor, type IconName, type IconProps, type IconSize, Inline, type InlineProps, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputProps, type InputVariant, Label, Link, type LinkProps, Logo, type LogoProps, type LogoSize, type LogoVariant, type NotificationVariant, type NotifyOptions, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverClose, PopoverCloseButton, PopoverContent, PopoverDescription, PopoverPortal, PopoverTitle, PopoverTrigger, PrivacyLabel, type PrivacyLabelProps, type PrivacyLevel, Progress, type ProgressProps, type ProgressSize, ProseDialogBody, ProseDialogContent, type ProseDialogContentProps, ProseDialogDescription, ProseDialogHeader, ProseDialogTitle, RadioGroup, RadioGroupItem, type RadioGroupItemProps, RadioGroupOption, RadioGroupOptionAvatar, type RadioGroupOptionAvatarProps, RadioGroupOptionDescription, type RadioGroupOptionDescriptionProps, RadioGroupOptionIndicator, type RadioGroupOptionIndicatorProps, RadioGroupOptionLabel, type RadioGroupOptionLabelProps, type RadioGroupOptionProps, type RadioGroupOrientation, type RadioGroupProps, type RadioGroupVariant, RichTextToolbar, RichTextToolbarButton, type RichTextToolbarButtonProps, RichTextToolbarGroup, type RichTextToolbarProps, RichTextToolbarSeparator, RightRailAction, type RightRailActionProps, ScrollArea, ScrollAreaCorner, type ScrollAreaOrientation, ScrollAreaScrollbar, type ScrollAreaScrollbarProps, ScrollAreaViewport, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, type SelectSize, SelectTrigger, SelectValue, Separator, SettingsNavItem, SidebarNav, SidebarNavItem, type SidebarNavItemAppearance, type SidebarNavItemProps, type SidebarNavProps, SidebarNavSection, SidebarNavSectionItems, SidebarNavSectionLabel, type SidebarNavSectionLabelProps, Skeleton, type SkeletonProps, Slider, type SliderProps, SofyaProvider, type SofyaProviderProps, Spinner, type SpinnerProps, type SpinnerSize, Stack, type StackProps, StatusIndicator, type StatusIndicatorProps, StatusTooltip, type StatusTooltipProps, Surface, type SurfaceVariant, Switch, type SwitchProps, type SwitchSize, Table, TableActionButton, type TableActionButtonProps, TableActions, TableBody, TableCaption, TableCell, TableCellDescription, type TableCellDescriptionProps, type TableCellProps, TableCellTitle, type TableCellTitleProps, type TableDensity, TableFooter, TableHead, TableHeader, type TableHeaderProps, type TableProps, TableRow, type TableRowProps, TableStatusBadge, type TableStatusBadgeProps, type TableTextSize, Tabs, type TabsItem, type TabsProps, Tag, type TagProps, type TagStatusTone, type TagVariant, TemplateCard, type TemplateCardFavoriteDisplay, type TemplateCardLayout, type TemplateCardMetaPlacement, type TemplateCardProps, TemplateListItem, Text, type TextProps, type TextSize, type TextSplitType, type TextTone, type TextVariant, type TextWeight, Textarea, type TextareaProps, Toaster, type ToasterProps, Toggle, type ToggleProps, Tooltip, TooltipContent, type TooltipContentProps, TooltipProvider, type TooltipTone, TooltipTrigger, type UploadKind, type WorkflowStatus, type WorkflowStatusDescriptor, accordionAppearanceOptions, alertSizeOptions, alertToneOptions, avatarSizeOptions, avatarVariants, badgeAlertOptions, badgeAlertVariants, badgePillToneOptions, badgePillVariants, badgeVariantOptions, badgeVariants, buttonLanguageLocaleOptions, buttonSizeOptions, buttonVariantOptions, buttonVariants, cardVariants, dropdownAppearanceOptions, dropdownLanguageItems, dropdownTriggerSizeOptions, dropdownVariantOptions, emptyMediaVariantOptions, iconButtonSizeOptions, iconButtonVariantOptions, iconColorOptions, iconNames, iconSizeMap, iconSizeOptions, inputVariantOptions, isTextContent, logoSizeOptions, logoVariants, notificationVariantOptions, notify, paginationLinkVariants, privacyLevelOptions, progressSizeOptions, radioGroupOrientationOptions, radioGroupVariantOptions, renderTextContent, resolveWorkflowStatus, scrollAreaOrientationOptions, selectSizeOptions, spinnerSizeOptions, surfaceVariantOptions, switchSizeOptions, tableActionToneOptions, tableCellVariantOptions, tableDensityOptions, tableStatusToneOptions, tagStatusToneOptions, tagVariantOptions, templateCardFavoriteDisplayOptions, templateCardLayoutOptions, templateCardMetaPlacementOptions, textSizeOptions, textSplitTypeOptions, textToneOptions, textVariantOptions, tooltipToneOptions, uploadKindOptions, workflowStatusOptions };
package/dist/index.js CHANGED
@@ -460,6 +460,9 @@ var defaultElements = {
460
460
  "heading-xl": "h1",
461
461
  "heading-lg": "h2",
462
462
  "heading-md": "h3",
463
+ "settings-page-title": "h1",
464
+ "home-inline-encounter-title": "h1",
465
+ "home-inline-encounter-action": "span",
463
466
  h1: "h1",
464
467
  h2: "h2",
465
468
  h3: "h3",
@@ -473,6 +476,7 @@ var defaultElements = {
473
476
  "body-sm": "p",
474
477
  body: "p",
475
478
  "label-md": "span",
479
+ "settings-section-title": "span",
476
480
  "section-label": "span",
477
481
  "eyebrow-md": "span",
478
482
  "overline-md": "span",
@@ -499,7 +503,8 @@ var textSizeStyles = Object.fromEntries(
499
503
  fontSize: `var(--sofya-text-${size}-font-size)`,
500
504
  fontWeight: `var(--sofya-text-${size}-font-weight)`,
501
505
  lineHeight: `var(--sofya-text-${size}-line-height)`,
502
- letterSpacing: `var(--sofya-text-${size}-letter-spacing)`
506
+ letterSpacing: `var(--sofya-text-${size}-letter-spacing)`,
507
+ ...size === "settings-section-title" ? { textTransform: "uppercase" } : {}
503
508
  }
504
509
  ])
505
510
  );
@@ -993,6 +998,7 @@ var buttonRippleVariantClasses = {
993
998
  icon: "bg-[hsl(var(--sofya-primary)/0.34)]",
994
999
  language: "bg-[hsl(var(--sofya-background)/0.76)] mix-blend-screen",
995
1000
  secondary: "bg-[hsl(var(--sofya-primary)/0.30)]",
1001
+ "auth-outline": "bg-[hsl(var(--sofya-primary)/0.24)]",
996
1002
  outline: "bg-[hsl(var(--sofya-primary)/0.32)]",
997
1003
  ghost: "bg-[hsl(var(--sofya-primary)/0.28)]",
998
1004
  destructive: "bg-[hsl(var(--sofya-destructive-foreground)/0.78)] mix-blend-screen"
@@ -1001,6 +1007,8 @@ var buttonRippleBaseSize = {
1001
1007
  default: 20,
1002
1008
  sm: 18,
1003
1009
  lg: 22,
1010
+ toolbar: 20,
1011
+ auth: 22,
1004
1012
  icon: 18
1005
1013
  };
1006
1014
  function useButtonRippleState({
@@ -1253,11 +1261,12 @@ var buttonVariantOptions = [
1253
1261
  "icon",
1254
1262
  "language",
1255
1263
  "secondary",
1264
+ "auth-outline",
1256
1265
  "outline",
1257
1266
  "ghost",
1258
1267
  "destructive"
1259
1268
  ];
1260
- var buttonSizeOptions = ["default", "sm", "lg", "icon"];
1269
+ var buttonSizeOptions = ["default", "sm", "lg", "toolbar", "auth", "icon"];
1261
1270
  var buttonVariants = cva2(
1262
1271
  "relative isolate inline-flex items-center justify-center gap-2 overflow-hidden whitespace-nowrap rounded-full font-medium tracking-[0.025em] transform-gpu transition-[width,transform,filter,background-color,border-color,color,box-shadow] duration-sofya ease-sofya motion-safe:active:scale-[0.985] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none data-[disabled=true]:cursor-not-allowed",
1263
1272
  {
@@ -1271,6 +1280,7 @@ var buttonVariants = cva2(
1271
1280
  icon: "border-0 bg-transparent text-[color:var(--sofya-text-soft)] shadow-none hover:bg-[color:var(--sofya-surface-hover)] hover:text-[color:var(--sofya-text-default)] data-[disabled=true]:bg-transparent data-[disabled=true]:text-[color:var(--sofya-text-subtle)] data-[disabled=true]:shadow-none",
1272
1281
  language: "border-0 bg-muted bg-cover bg-center bg-no-repeat text-primary-foreground shadow-none hover:brightness-[1.03]",
1273
1282
  secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/85 data-[disabled=true]:bg-muted data-[disabled=true]:text-[color:var(--sofya-text-subtle)]",
1283
+ "auth-outline": "rounded-[10px] border border-[color:var(--sofya-border-strong)] bg-card text-[color:var(--sofya-text-default)] shadow-none hover:border-[color:var(--sofya-border-strong)] hover:bg-card active:bg-card data-[disabled=true]:border-[color:var(--sofya-border-soft)] data-[disabled=true]:text-[color:var(--sofya-text-subtle)]",
1274
1284
  outline: "border border-primary/15 bg-background text-foreground hover:border-primary/30 hover:bg-background active:bg-background data-[disabled=true]:border-[color:var(--sofya-border-soft)] data-[disabled=true]:text-[color:var(--sofya-text-subtle)]",
1275
1285
  ghost: "bg-transparent text-foreground hover:bg-muted data-[disabled=true]:text-[color:var(--sofya-text-subtle)]",
1276
1286
  destructive: "bg-destructive text-destructive-foreground hover:brightness-[1.04] data-[disabled=true]:bg-muted data-[disabled=true]:text-[color:var(--sofya-text-subtle)]"
@@ -1279,6 +1289,8 @@ var buttonVariants = cva2(
1279
1289
  default: "h-11 px-10",
1280
1290
  sm: "h-10 px-6",
1281
1291
  lg: "h-12 px-12",
1292
+ toolbar: "h-[42px] px-7",
1293
+ auth: "h-[46px] px-6",
1282
1294
  icon: "h-11 w-11"
1283
1295
  }
1284
1296
  },
@@ -1292,12 +1304,16 @@ var loadingSpinnerSizeClasses = {
1292
1304
  default: "h-4 w-4",
1293
1305
  sm: "h-3.5 w-3.5",
1294
1306
  lg: "h-[18px] w-[18px]",
1307
+ toolbar: "h-4 w-4",
1308
+ auth: "h-4 w-4",
1295
1309
  icon: "h-4 w-4"
1296
1310
  };
1297
1311
  var languageButtonSizeClasses = {
1298
1312
  default: "h-11 w-11 rounded-full p-0",
1299
1313
  sm: "h-10 w-10 rounded-full p-0",
1300
1314
  lg: "h-12 w-12 rounded-full p-0",
1315
+ toolbar: "h-[42px] w-[42px] rounded-full p-0",
1316
+ auth: "h-[46px] w-[46px] rounded-full p-0",
1301
1317
  icon: "h-11 w-11 rounded-full p-0"
1302
1318
  };
1303
1319
  function ButtonSpinner({
@@ -1341,6 +1357,7 @@ var Button = React7.forwardRef(
1341
1357
  const resolvedSize = size ?? (isIconOnly ? "icon" : "default");
1342
1358
  const resolvedVariant = variant ?? "default";
1343
1359
  const isLanguageButton = variant === "language";
1360
+ const textSize = resolvedVariant === "auth-outline" ? "body-md" : "tiny";
1344
1361
  const resolvedLanguageLocale = isLanguageButton ? languageLocale ?? "en-US" : void 0;
1345
1362
  const resolvedLanguageFlagSrc = resolvedLanguageLocale ? buttonLanguageFlagSrc[resolvedLanguageLocale] : void 0;
1346
1363
  const resolvedLanguageLabel = resolvedLanguageLocale ? buttonLanguageLabels[resolvedLanguageLocale] : void 0;
@@ -1399,7 +1416,7 @@ var Button = React7.forwardRef(
1399
1416
  hasChildren ? renderTextContent(children, {
1400
1417
  as: "span",
1401
1418
  className: "inline-flex items-center text-current",
1402
- size: "tiny",
1419
+ size: textSize,
1403
1420
  style: {
1404
1421
  fontWeight: "inherit",
1405
1422
  letterSpacing: "inherit"
@@ -3078,6 +3095,7 @@ InputOTPSeparator.displayName = "InputOTPSeparator";
3078
3095
  import { Fragment as Fragment2, jsx as jsx17, jsxs as jsxs9 } from "react/jsx-runtime";
3079
3096
  var inputVariantOptions = [
3080
3097
  "default",
3098
+ "auth-login",
3081
3099
  "search",
3082
3100
  "otp",
3083
3101
  "upload"
@@ -3210,6 +3228,7 @@ var Input = React16.forwardRef((props, ref) => {
3210
3228
  ...nativeProps
3211
3229
  } = props;
3212
3230
  const isSearch = variant === "search";
3231
+ const isAuthLogin = variant === "auth-login";
3213
3232
  const resolvedType = type ?? (isSearch ? "search" : void 0);
3214
3233
  const ariaLabel = nativeProps["aria-label"] ?? (typeof label === "string" ? label : isSearch ? "Search" : void 0);
3215
3234
  const nativeControl = isSearch ? /* @__PURE__ */ jsxs9("div", { className: "flex h-[88px] w-full items-center gap-6 rounded-full border border-[color:var(--sofya-border-strong)] bg-card px-8 shadow-none transition-[border-color,box-shadow,background-color] duration-sofya ease-sofya hover:border-[color:var(--sofya-border-hover)] hover:ring-2 hover:ring-[color:var(--sofya-focus-ring-soft)] focus-within:border-transparent focus-within:ring-2 focus-within:ring-[color:var(--sofya-focus-ring-soft)] has-[:active]:border-transparent has-[:active]:ring-2 has-[:active]:ring-[color:var(--sofya-focus-ring-soft)]", children: [
@@ -3245,7 +3264,8 @@ var Input = React16.forwardRef((props, ref) => {
3245
3264
  ref,
3246
3265
  type: resolvedType,
3247
3266
  className: cn(
3248
- "flex h-10 w-full rounded-[10px] border border-[color:var(--sofya-border-strong)] bg-card px-4 py-2 [font-family:var(--sofya-text-tiny-font-family)] text-[length:var(--sofya-text-tiny-font-size)] [font-weight:var(--sofya-text-tiny-font-weight)] leading-[var(--sofya-text-tiny-line-height)] tracking-[var(--sofya-text-tiny-letter-spacing)] text-[color:var(--sofya-text-default)] shadow-none transition-[border-color,box-shadow,background-color,color] duration-sofya ease-sofya placeholder:text-[color:var(--sofya-text-placeholder)] hover:border-[color:var(--sofya-border-hover)] focus:border-transparent focus:outline-none focus:ring-2 focus:ring-[color:var(--sofya-focus-ring-soft)] focus:ring-offset-0 active:border-transparent active:ring-2 active:ring-[color:var(--sofya-focus-ring-soft)] disabled:cursor-not-allowed disabled:bg-muted disabled:opacity-50",
3267
+ "flex w-full rounded-[10px] border border-[color:var(--sofya-border-strong)] bg-card text-[color:var(--sofya-text-default)] shadow-none transition-[border-color,box-shadow,background-color,color] duration-sofya ease-sofya placeholder:text-[color:var(--sofya-text-placeholder)] hover:border-[color:var(--sofya-border-hover)] focus:border-transparent focus:outline-none focus:ring-2 focus:ring-[color:var(--sofya-focus-ring-soft)] focus:ring-offset-0 active:border-transparent active:ring-2 active:ring-[color:var(--sofya-focus-ring-soft)] disabled:cursor-not-allowed disabled:bg-muted disabled:opacity-50",
3268
+ isAuthLogin ? "h-[46px] px-6 py-3 [font-family:var(--sofya-text-tiny-font-family)] text-[14px] [font-weight:500] leading-[24px] tracking-[var(--sofya-text-tiny-letter-spacing)] placeholder:font-medium" : "h-10 px-4 py-2 [font-family:var(--sofya-text-tiny-font-family)] text-[length:var(--sofya-text-tiny-font-size)] [font-weight:var(--sofya-text-tiny-font-weight)] leading-[var(--sofya-text-tiny-line-height)] tracking-[var(--sofya-text-tiny-letter-spacing)]",
3249
3269
  className
3250
3270
  ),
3251
3271
  ...nativeProps,
@@ -3255,10 +3275,12 @@ var Input = React16.forwardRef((props, ref) => {
3255
3275
  return /* @__PURE__ */ jsx17(
3256
3276
  FieldShell,
3257
3277
  {
3258
- containerClassName,
3278
+ containerClassName: cn(isAuthLogin ? "gap-2.5" : void 0, containerClassName),
3259
3279
  control: nativeControl,
3260
3280
  label: isSearch ? void 0 : label,
3261
3281
  labelClassName: isSearch ? void 0 : labelClassName,
3282
+ labelTextSize: isAuthLogin ? "body-md" : void 0,
3283
+ labelTextStyle: isAuthLogin ? { fontWeight: 500 } : void 0,
3262
3284
  labelHtmlFor: isSearch ? void 0 : resolvedId
3263
3285
  }
3264
3286
  );
@@ -5267,8 +5289,88 @@ Separator2.displayName = SeparatorPrimitive.Root.displayName;
5267
5289
  // src/components/sidebar-nav-item.tsx
5268
5290
  import * as React36 from "react";
5269
5291
  import { jsx as jsx38, jsxs as jsxs18 } from "react/jsx-runtime";
5292
+ var sidebarNavItemAppearanceClassNames = {
5293
+ settings: "rounded-[var(--sofya-radius-md)] py-[var(--sofya-space-2)] pl-[var(--sofya-space-3)] pr-[var(--sofya-space-3)] text-[color:var(--sofya-text-soft)] hover:bg-[color:var(--sofya-surface-hover)] hover:text-[color:var(--sofya-text-default)] data-[active=true]:bg-[color:var(--sofya-surface-selected)] data-[active=true]:text-[color:var(--sofya-text-default)] data-[active=true]:hover:bg-[color:var(--sofya-surface-selected-strong)] data-[disabled=true]:text-[color:var(--sofya-text-subtle)] data-[disabled=true]:hover:bg-transparent",
5294
+ workspace: "rounded-[var(--sofya-radius-sm)] bg-transparent px-0 py-0 text-[color:var(--sofya-text-subtle)] hover:bg-transparent hover:text-[color:var(--sofya-text-default)] data-[active=true]:bg-transparent data-[active=true]:text-primary data-[active=true]:hover:bg-transparent data-[active=true]:hover:text-primary data-[disabled=true]:text-[color:var(--sofya-text-subtle)] data-[disabled=true]:hover:bg-transparent"
5295
+ };
5296
+ var sidebarNavItemIconClassNames = {
5297
+ settings: "flex h-5 w-5 shrink-0 items-center justify-center [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
5298
+ workspace: "flex h-[var(--sofya-text-sidebar-title-font-size)] w-[var(--sofya-text-sidebar-title-font-size)] shrink-0 items-center justify-center [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0"
5299
+ };
5300
+ var sidebarNavItemTextSize = {
5301
+ settings: "sidebar-title",
5302
+ workspace: "sidebar-title-regular"
5303
+ };
5304
+ var SidebarNav = React36.forwardRef(
5305
+ ({ as, className, ...props }, ref) => {
5306
+ const Comp = as ?? "nav";
5307
+ return /* @__PURE__ */ jsx38(
5308
+ Comp,
5309
+ {
5310
+ ref,
5311
+ "data-slot": "sidebar-nav",
5312
+ className: cn("flex w-full min-w-0 flex-col gap-[var(--sofya-rhythm-group)]", className),
5313
+ ...props
5314
+ }
5315
+ );
5316
+ }
5317
+ );
5318
+ SidebarNav.displayName = "SidebarNav";
5319
+ var SidebarNavSection = React36.forwardRef(
5320
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
5321
+ "div",
5322
+ {
5323
+ ref,
5324
+ "data-slot": "sidebar-nav-section",
5325
+ className: cn("flex min-w-0 flex-col gap-[var(--sofya-rhythm-group)]", className),
5326
+ ...props
5327
+ }
5328
+ )
5329
+ );
5330
+ SidebarNavSection.displayName = "SidebarNavSection";
5331
+ var SidebarNavSectionLabel = React36.forwardRef(
5332
+ ({ as, className, children, ...props }, ref) => {
5333
+ const Comp = as ?? "h5";
5334
+ return /* @__PURE__ */ jsx38(
5335
+ Comp,
5336
+ {
5337
+ ref,
5338
+ "data-slot": "sidebar-nav-section-label",
5339
+ className: cn("m-0 min-w-0 text-muted-foreground uppercase", className),
5340
+ ...props,
5341
+ children: renderTextContent(children, {
5342
+ as: "span",
5343
+ className: "block min-w-0 truncate text-inherit",
5344
+ size: "sidebar-title"
5345
+ })
5346
+ }
5347
+ );
5348
+ }
5349
+ );
5350
+ SidebarNavSectionLabel.displayName = "SidebarNavSectionLabel";
5351
+ var SidebarNavSectionItems = React36.forwardRef(
5352
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
5353
+ "div",
5354
+ {
5355
+ ref,
5356
+ "data-slot": "sidebar-nav-section-items",
5357
+ className: cn("flex min-w-0 flex-col gap-[var(--sofya-gap-comfortable)]", className),
5358
+ ...props
5359
+ }
5360
+ )
5361
+ );
5362
+ SidebarNavSectionItems.displayName = "SidebarNavSectionItems";
5270
5363
  var SidebarNavItem = React36.forwardRef(
5271
- function SidebarNavItem2({ as, active = false, disabled = false, icon, className, children, ...props }, ref) {
5364
+ function SidebarNavItem2({
5365
+ as,
5366
+ active = false,
5367
+ appearance = "settings",
5368
+ disabled = false,
5369
+ icon,
5370
+ className,
5371
+ children,
5372
+ ...props
5373
+ }, ref) {
5272
5374
  const Comp = as ?? (props.href ? "a" : "button");
5273
5375
  const isNativeButton = Comp === "button";
5274
5376
  return /* @__PURE__ */ jsxs18(
@@ -5282,19 +5384,17 @@ var SidebarNavItem = React36.forwardRef(
5282
5384
  "aria-disabled": disabled || void 0,
5283
5385
  ...isNativeButton ? { type: "button", disabled } : {},
5284
5386
  className: cn(
5285
- "group relative flex w-full items-center gap-[var(--sofya-gap-compact)] rounded-[var(--sofya-radius-md)] py-[var(--sofya-space-2)] pl-[var(--sofya-space-3)] pr-[var(--sofya-space-3)] text-left no-underline outline-none",
5387
+ "group relative flex w-full items-center gap-[var(--sofya-gap-compact)] text-left no-underline outline-none",
5286
5388
  "[font-family:var(--sofya-text-sidebar-title-font-family)] text-[length:var(--sofya-text-sidebar-title-font-size)] [font-weight:var(--sofya-text-sidebar-title-font-weight)] leading-[var(--sofya-text-sidebar-title-line-height)] tracking-[var(--sofya-text-sidebar-title-letter-spacing)]",
5287
- "text-[color:var(--sofya-text-soft)] transition-colors duration-sofya ease-sofya",
5288
- "hover:bg-[color:var(--sofya-surface-hover)] hover:text-[color:var(--sofya-text-default)]",
5389
+ "transition-colors duration-sofya ease-sofya",
5289
5390
  "focus-visible:ring-2 focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-visible:ring-offset-0",
5290
- "data-[active=true]:bg-[color:var(--sofya-surface-selected)] data-[active=true]:text-[color:var(--sofya-text-default)]",
5291
- "data-[active=true]:hover:bg-[color:var(--sofya-surface-selected-strong)]",
5292
- "data-[disabled=true]:pointer-events-none data-[disabled=true]:cursor-not-allowed data-[disabled=true]:text-[color:var(--sofya-text-subtle)] data-[disabled=true]:hover:bg-transparent",
5391
+ "data-[disabled=true]:pointer-events-none data-[disabled=true]:cursor-not-allowed",
5392
+ sidebarNavItemAppearanceClassNames[appearance],
5293
5393
  className
5294
5394
  ),
5295
5395
  ...props,
5296
5396
  children: [
5297
- /* @__PURE__ */ jsx38(
5397
+ appearance === "settings" ? /* @__PURE__ */ jsx38(
5298
5398
  "span",
5299
5399
  {
5300
5400
  "aria-hidden": "true",
@@ -5304,12 +5404,19 @@ var SidebarNavItem = React36.forwardRef(
5304
5404
  active ? "opacity-100" : "opacity-0"
5305
5405
  )
5306
5406
  }
5307
- ),
5308
- icon ? /* @__PURE__ */ jsx38("span", { className: "flex h-5 w-5 shrink-0 items-center justify-center [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0", children: icon }) : null,
5407
+ ) : null,
5408
+ icon ? /* @__PURE__ */ jsx38(
5409
+ "span",
5410
+ {
5411
+ "data-slot": "sidebar-nav-item-icon",
5412
+ className: sidebarNavItemIconClassNames[appearance],
5413
+ children: icon
5414
+ }
5415
+ ) : null,
5309
5416
  /* @__PURE__ */ jsx38("span", { className: "min-w-0 flex-1 truncate", children: renderTextContent(children, {
5310
5417
  as: "span",
5311
5418
  className: "block min-w-0 truncate text-inherit",
5312
- size: "sidebar-title"
5419
+ size: sidebarNavItemTextSize[appearance]
5313
5420
  }) })
5314
5421
  ]
5315
5422
  }
@@ -6117,7 +6224,8 @@ var Table = React43.forwardRef(function Table2({ className, density = "default",
6117
6224
  "data-slot": "table",
6118
6225
  ref,
6119
6226
  className: cn(
6120
- "w-full min-w-[1040px] caption-bottom border-separate border-spacing-0 bg-card",
6227
+ "w-full min-w-[1040px] caption-bottom border-separate border-spacing-x-0 bg-card",
6228
+ density === "compact" ? "border-spacing-y-2" : "border-spacing-y-0",
6121
6229
  className
6122
6230
  ),
6123
6231
  ...props
@@ -6197,7 +6305,7 @@ var TableHead = React43.forwardRef(function TableHead2({ className, children, ..
6197
6305
  ref,
6198
6306
  className: cn(
6199
6307
  "whitespace-nowrap px-4 text-left align-middle [font-family:var(--sofya-text-tiny-font-family)] text-[length:var(--sofya-text-tiny-font-size)] font-medium uppercase leading-4 tracking-[0.08em] text-[color:var(--sofya-text-default)] [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
6200
- headerDensity === "compact" ? "py-2.5" : "py-4",
6308
+ headerDensity === "compact" ? "h-[45px] py-0" : "py-4",
6201
6309
  className
6202
6310
  ),
6203
6311
  ...props,
@@ -7138,7 +7246,11 @@ export {
7138
7246
  SelectValue,
7139
7247
  Separator2 as Separator,
7140
7248
  SettingsNavItem,
7249
+ SidebarNav,
7141
7250
  SidebarNavItem,
7251
+ SidebarNavSection,
7252
+ SidebarNavSectionItems,
7253
+ SidebarNavSectionLabel,
7142
7254
  Skeleton,
7143
7255
  Slider,
7144
7256
  SofyaProvider,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sofya-ds/react",
3
- "version": "1.13.0",
3
+ "version": "1.13.1",
4
4
  "description": "Sofya React design system with official brand tokens, provider and UI components.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -59,7 +59,7 @@
59
59
  "motion": "^12.38.0",
60
60
  "sonner": "^2.0.7",
61
61
  "tailwind-merge": "^3.5.0",
62
- "@sofya-ds/tokens": "1.13.0"
62
+ "@sofya-ds/tokens": "1.13.1"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@testing-library/jest-dom": "^6.9.1",