@sofya-ds/react 1.12.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/README.md +45 -45
- package/dist/index.cjs +159 -27
- package/dist/index.css +3 -3
- package/dist/index.d.cts +27 -10
- package/dist/index.d.ts +27 -10
- package/dist/index.js +155 -27
- package/package.json +2 -2
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
|
*
|
|
@@ -990,8 +1007,8 @@ interface TagProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<t
|
|
|
990
1007
|
}
|
|
991
1008
|
/**
|
|
992
1009
|
* Compact semantic label. Variants: `neutral`, `organization`, `brand`,
|
|
993
|
-
* `privacy` and `status` (with a `tone`). `brand`
|
|
994
|
-
* primary
|
|
1010
|
+
* `privacy` and `status` (with a `tone`). `brand` is a soft secondary-tinted
|
|
1011
|
+
* pill with primary text for generic content labels. Text is not truncated by
|
|
995
1012
|
* default.
|
|
996
1013
|
*/
|
|
997
1014
|
declare const Tag: React.ForwardRefExoticComponent<TagProps & React.RefAttributes<HTMLSpanElement>>;
|
|
@@ -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:
|
|
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
|
|
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({
|
|
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)]
|
|
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
|
-
"
|
|
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-[
|
|
5291
|
-
|
|
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(
|
|
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:
|
|
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-
|
|
6308
|
+
headerDensity === "compact" ? "h-[45px] py-0" : "py-4",
|
|
6201
6309
|
className
|
|
6202
6310
|
),
|
|
6203
6311
|
...props,
|
|
@@ -6403,10 +6511,11 @@ var tagVariants = cva9(
|
|
|
6403
6511
|
variant: {
|
|
6404
6512
|
neutral: "border-[color:var(--sofya-tone-default-border)] bg-[color:var(--sofya-tone-default-background)] text-[color:var(--sofya-tone-default-foreground)]",
|
|
6405
6513
|
organization: "border-[color:var(--sofya-tone-info-border)] bg-[color:var(--sofya-tone-info-background)] text-[color:var(--sofya-tone-info-foreground)]",
|
|
6406
|
-
// Brand/content label
|
|
6407
|
-
//
|
|
6408
|
-
//
|
|
6409
|
-
|
|
6514
|
+
// Brand/content label (e.g. a clinical-domain pill): a soft
|
|
6515
|
+
// secondary-tinted fill (`--sofya-secondary` @ 10%) with primary text.
|
|
6516
|
+
// Distinct from `organization`'s primary-tinted info look, and roomier
|
|
6517
|
+
// padding (16/4) to match the content-label spec. Borderless filled pill.
|
|
6518
|
+
brand: "border-[color:var(--sofya-tone-brand-border)] bg-[color:var(--sofya-tone-brand-background)] text-[color:var(--sofya-tone-brand-foreground)] px-[var(--sofya-space-4)] py-[var(--sofya-space-1)]",
|
|
6410
6519
|
privacy: "border-transparent bg-[color:var(--sofya-surface-muted)] text-[color:var(--sofya-text-subtle)]",
|
|
6411
6520
|
status: ""
|
|
6412
6521
|
}
|
|
@@ -6549,7 +6658,11 @@ var TemplateCard = React45.forwardRef(
|
|
|
6549
6658
|
const titleNode = renderTextContent(title, {
|
|
6550
6659
|
as: "span",
|
|
6551
6660
|
className: "block min-w-0 truncate font-semibold text-[color:var(--sofya-text-default)]",
|
|
6552
|
-
size: "title-sm"
|
|
6661
|
+
size: "title-sm",
|
|
6662
|
+
// Selectable rows use the exact picker-title ramp (15/26, semibold). The
|
|
6663
|
+
// size tokens are applied via inline style by `Text`, so the precise
|
|
6664
|
+
// values must be passed as `style` to win over the `title-sm` defaults.
|
|
6665
|
+
style: selectable ? { fontSize: "15px", lineHeight: "26px", fontWeight: 600 } : void 0
|
|
6553
6666
|
});
|
|
6554
6667
|
const hasInlineTitleExtras = showInlineStar || showInlineMeta;
|
|
6555
6668
|
const titleRow = hasInlineTitleExtras ? /* @__PURE__ */ jsxs24("div", { className: "flex min-w-0 items-center gap-[var(--sofya-gap-tight)]", children: [
|
|
@@ -6569,10 +6682,17 @@ var TemplateCard = React45.forwardRef(
|
|
|
6569
6682
|
description ? renderTextContent(description, {
|
|
6570
6683
|
as: "span",
|
|
6571
6684
|
className: cn(
|
|
6572
|
-
"block min-w-0
|
|
6685
|
+
"block min-w-0",
|
|
6686
|
+
// Selectable rows use the full foreground tone (not the softer
|
|
6687
|
+
// ramp) to match the picker spec.
|
|
6688
|
+
selectable ? "text-[color:var(--sofya-text-default)]" : "text-[color:var(--sofya-text-soft)]",
|
|
6573
6689
|
(isList || selectable) && "truncate"
|
|
6574
6690
|
),
|
|
6575
|
-
size: descriptionSize
|
|
6691
|
+
size: descriptionSize,
|
|
6692
|
+
// Exact picker-description ramp (14/18, regular). Passed as inline
|
|
6693
|
+
// style so it wins over the line-height/weight applied by `Text`,
|
|
6694
|
+
// independent of which size ramp `descriptionSize` resolves to.
|
|
6695
|
+
style: selectable ? { fontSize: "14px", lineHeight: "18px", fontWeight: 400 } : void 0
|
|
6576
6696
|
}) : null
|
|
6577
6697
|
] });
|
|
6578
6698
|
const blockMeta = showBlockMeta ? /* @__PURE__ */ jsx47(
|
|
@@ -6616,8 +6736,12 @@ var TemplateCard = React45.forwardRef(
|
|
|
6616
6736
|
className: cn(
|
|
6617
6737
|
"group rounded-[var(--sofya-radius-md)] border border-[color:var(--sofya-border-soft)] bg-card transition-colors duration-sofya ease-sofya",
|
|
6618
6738
|
"hover:border-[color:var(--sofya-border-strong)] hover:bg-[color:var(--sofya-surface-hover)]",
|
|
6619
|
-
"data-[selected=true]:
|
|
6620
|
-
|
|
6739
|
+
"data-[selected=true]:bg-[color:var(--sofya-surface-selected)]",
|
|
6740
|
+
// In card/list usage the selected state also strengthens the border.
|
|
6741
|
+
// Selectable picker rows are distinguished by the fill alone and keep
|
|
6742
|
+
// the same soft border in every state.
|
|
6743
|
+
!selectable && "data-[selected=true]:border-primary",
|
|
6744
|
+
selectable ? "flex cursor-pointer items-center gap-[var(--sofya-space-6)] rounded-[var(--sofya-radius-sm)] p-[var(--sofya-space-4)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-visible:ring-offset-0" : isList ? "flex items-center gap-[var(--sofya-gap-default)] px-[var(--sofya-space-4)] py-[var(--sofya-space-3)]" : "flex flex-col gap-[var(--sofya-space-3)] p-[var(--sofya-space-4)]",
|
|
6621
6745
|
className
|
|
6622
6746
|
),
|
|
6623
6747
|
...props,
|
|
@@ -7122,7 +7246,11 @@ export {
|
|
|
7122
7246
|
SelectValue,
|
|
7123
7247
|
Separator2 as Separator,
|
|
7124
7248
|
SettingsNavItem,
|
|
7249
|
+
SidebarNav,
|
|
7125
7250
|
SidebarNavItem,
|
|
7251
|
+
SidebarNavSection,
|
|
7252
|
+
SidebarNavSectionItems,
|
|
7253
|
+
SidebarNavSectionLabel,
|
|
7126
7254
|
Skeleton,
|
|
7127
7255
|
Slider,
|
|
7128
7256
|
SofyaProvider,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sofya-ds/react",
|
|
3
|
-
"version": "1.
|
|
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.
|
|
62
|
+
"@sofya-ds/tokens": "1.13.1"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"@testing-library/jest-dom": "^6.9.1",
|