@sofya-ds/react 1.7.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -118,6 +118,7 @@ import {
118
118
  IconChevronLeft,
119
119
  IconChevronDown,
120
120
  IconChevronUp,
121
+ IconCopy,
121
122
  IconEdit,
122
123
  IconFile,
123
124
  IconFolders,
@@ -133,6 +134,7 @@ import {
133
134
  IconSearch,
134
135
  IconSquareToggle,
135
136
  IconSparkles,
137
+ IconStar,
136
138
  IconUser,
137
139
  IconUserFilled,
138
140
  IconUserCircle,
@@ -161,6 +163,7 @@ var tablerIconRegistry = {
161
163
  IconChevronLeft,
162
164
  IconChevronDown,
163
165
  IconChevronUp,
166
+ IconCopy,
164
167
  IconEdit,
165
168
  IconFile,
166
169
  IconFolders,
@@ -176,6 +179,7 @@ var tablerIconRegistry = {
176
179
  IconSearch,
177
180
  IconSquareToggle,
178
181
  IconSparkles,
182
+ IconStar,
179
183
  IconUser,
180
184
  IconUserFilled,
181
185
  IconUserCircle,
@@ -232,7 +236,9 @@ var legacyIconToTablerNameMap = {
232
236
  "caret-up": "IconChevronUp",
233
237
  "caret-left": "IconChevronLeft",
234
238
  "caret-right": "IconChevronRight",
239
+ "copy": "IconCopy",
235
240
  "logout": "IconLogout",
241
+ "star": "IconStar",
236
242
  "users-group": "IconUsersGroup",
237
243
  "archive": "IconArchive",
238
244
  "folder": "IconFolder",
@@ -393,19 +399,49 @@ Icon.displayName = "Icon";
393
399
 
394
400
  // src/components/text.tsx
395
401
  import * as React3 from "react";
402
+ import {
403
+ sofyaTextStyleNames
404
+ } from "@sofya-ds/tokens";
396
405
  import { jsx as jsx3 } from "react/jsx-runtime";
397
- var textSizeOptions = ["h1", "h2", "h3", "h4", "h5", "body", "tiny", "extra-tiny"];
406
+ var textSizeOptions = sofyaTextStyleNames;
398
407
  var textVariantOptions = ["default", "gradient", "shiny", "split"];
399
408
  var textSplitTypeOptions = ["chars", "words", "words, chars"];
400
409
  var defaultElements = {
410
+ "display-xl": "h1",
411
+ "display-lg": "h1",
412
+ "heading-xl": "h1",
413
+ "heading-lg": "h2",
414
+ "heading-md": "h3",
401
415
  h1: "h1",
402
416
  h2: "h2",
403
417
  h3: "h3",
404
418
  h4: "h4",
405
419
  h5: "h5",
420
+ "encounter-title": "h1",
421
+ "title-md": "h3",
422
+ "title-sm": "h4",
423
+ "body-lg": "p",
424
+ "body-md": "p",
425
+ "body-sm": "p",
406
426
  body: "p",
427
+ "label-md": "span",
428
+ "section-label": "span",
429
+ "eyebrow-md": "span",
430
+ "overline-md": "span",
431
+ "sidebar-title": "span",
432
+ "sidebar-title-regular": "span",
433
+ "sidebar-title-strong": "span",
434
+ "sidebar-label": "span",
435
+ "sidebar-label-strong": "span",
436
+ "sidebar-body": "span",
437
+ "sidebar-tag": "span",
438
+ "encounter-chip": "span",
439
+ "encounter-history": "span",
440
+ caption: "span",
441
+ eyebrow: "span",
407
442
  tiny: "span",
408
- "extra-tiny": "span"
443
+ "extra-tiny": "span",
444
+ "code-sm": "code"
409
445
  };
410
446
  var textSizeStyles = Object.fromEntries(
411
447
  textSizeOptions.map((size) => [
@@ -1555,27 +1591,26 @@ Button.displayName = "Button";
1555
1591
  // src/components/surface.tsx
1556
1592
  import * as React9 from "react";
1557
1593
  import { Slot as Slot2 } from "@radix-ui/react-slot";
1594
+ import {
1595
+ sofyaSurfaceNames
1596
+ } from "@sofya-ds/tokens";
1558
1597
  import { jsx as jsx9 } from "react/jsx-runtime";
1559
- var surfaceStyles = {
1560
- card: {
1561
- backgroundColor: "hsl(var(--sofya-surface-card-background))",
1562
- borderColor: "hsl(var(--sofya-surface-card-border-color))",
1563
- borderWidth: "var(--sofya-surface-card-border-width)",
1564
- borderStyle: "solid",
1565
- borderRadius: "var(--sofya-surface-card-radius)",
1566
- "--sofya-surface-shadow-base": "var(--sofya-surface-card-shadow)",
1567
- boxShadow: "var(--sofya-surface-shadow-override, var(--sofya-surface-shadow-base))"
1568
- },
1569
- focus: {
1570
- backgroundColor: "hsl(var(--sofya-surface-focus-background))",
1571
- borderColor: "hsl(var(--sofya-surface-focus-border-color))",
1572
- borderWidth: "var(--sofya-surface-focus-border-width)",
1598
+ var surfaceVariantOptions = sofyaSurfaceNames;
1599
+ function toCssTokenName(name) {
1600
+ return name.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
1601
+ }
1602
+ function getSurfaceStyle(variant) {
1603
+ const cssName = toCssTokenName(variant);
1604
+ return {
1605
+ backgroundColor: `hsl(var(--sofya-surface-${cssName}-background))`,
1606
+ borderColor: `hsl(var(--sofya-surface-${cssName}-border-color))`,
1607
+ borderWidth: `var(--sofya-surface-${cssName}-border-width)`,
1573
1608
  borderStyle: "solid",
1574
- borderRadius: "var(--sofya-surface-card-radius)",
1575
- "--sofya-surface-shadow-base": "var(--sofya-surface-focus-shadow)",
1609
+ borderRadius: `var(--sofya-surface-${cssName}-radius)`,
1610
+ "--sofya-surface-shadow-base": `var(--sofya-surface-${cssName}-shadow)`,
1576
1611
  boxShadow: "var(--sofya-surface-shadow-override, var(--sofya-surface-shadow-base))"
1577
- }
1578
- };
1612
+ };
1613
+ }
1579
1614
  function SurfaceComponent({ as, asChild = false, variant = "card", className, style, ...props }, ref) {
1580
1615
  const Component = asChild ? Slot2 : as ?? "div";
1581
1616
  return /* @__PURE__ */ jsx9(
@@ -1584,7 +1619,7 @@ function SurfaceComponent({ as, asChild = false, variant = "card", className, st
1584
1619
  ref,
1585
1620
  "data-surface-variant": variant,
1586
1621
  className: cn("relative text-foreground", className),
1587
- style: { ...surfaceStyles[variant], ...style },
1622
+ style: { ...getSurfaceStyle(variant), ...style },
1588
1623
  ...props
1589
1624
  }
1590
1625
  );
@@ -1661,13 +1696,13 @@ var selectionControlLabelTextBaseClasses = "text-[color:var(--sofya-text-default
1661
1696
  var selectionControlDescriptionTextBaseClasses = "text-muted-foreground";
1662
1697
  var selectionControlControlBaseClasses = "border border-[color:var(--sofya-border-strong)] bg-card transition-[background-color,border-color,box-shadow,color] duration-sofya ease-sofya disabled:cursor-not-allowed disabled:opacity-50";
1663
1698
  function selectionControlContainerClasses({
1664
- alignClassName,
1699
+ alignClassName: alignClassName2,
1665
1700
  className,
1666
1701
  disabled
1667
1702
  }) {
1668
1703
  return cn(
1669
1704
  selectionControlContainerBaseClasses,
1670
- alignClassName,
1705
+ alignClassName2,
1671
1706
  disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer",
1672
1707
  className
1673
1708
  );
@@ -1691,13 +1726,13 @@ var Checkbox = React10.forwardRef(
1691
1726
  const generatedId = React10.useId();
1692
1727
  const resolvedId = id ?? generatedId;
1693
1728
  const descriptionId = description ? `${resolvedId}-description` : void 0;
1694
- const alignClassName = description ? "items-start" : "items-center";
1729
+ const alignClassName2 = description ? "items-start" : "items-center";
1695
1730
  return /* @__PURE__ */ jsxs4(
1696
1731
  "label",
1697
1732
  {
1698
1733
  htmlFor: resolvedId,
1699
1734
  className: selectionControlContainerClasses({
1700
- alignClassName,
1735
+ alignClassName: alignClassName2,
1701
1736
  className,
1702
1737
  disabled
1703
1738
  }),
@@ -3426,13 +3461,16 @@ var DialogContent = React19.forwardRef(
3426
3461
  className,
3427
3462
  children,
3428
3463
  cardClassName,
3464
+ cardStyle,
3429
3465
  overlayClassName,
3430
3466
  showCloseButton = true,
3467
+ surfaceShadow = "var(--sofya-shadow-lg)",
3431
3468
  variant = "card",
3432
3469
  ...props
3433
3470
  }, ref) => {
3434
3471
  const dialogCardStyle = {
3435
- "--sofya-surface-shadow-override": "var(--sofya-shadow-lg)"
3472
+ "--sofya-surface-shadow-override": surfaceShadow,
3473
+ ...cardStyle
3436
3474
  };
3437
3475
  return /* @__PURE__ */ jsx20(DialogInternalContext.Provider, { value: { showCloseButton }, children: /* @__PURE__ */ jsxs11(DialogPortal, { children: [
3438
3476
  /* @__PURE__ */ jsx20(DialogOverlay, { className: overlayClassName }),
@@ -3538,10 +3576,73 @@ var DialogDescription = React19.forwardRef(({ children, className, ...props }, r
3538
3576
  ));
3539
3577
  DialogDescription.displayName = DialogPrimitive.Description.displayName;
3540
3578
 
3541
- // src/components/empty.tsx
3579
+ // src/components/document-card.tsx
3542
3580
  import * as React20 from "react";
3581
+ import { jsx as jsx21, jsxs as jsxs12 } from "react/jsx-runtime";
3582
+ var DocumentCard = React20.forwardRef(
3583
+ ({
3584
+ actions,
3585
+ className,
3586
+ description,
3587
+ leading,
3588
+ meta,
3589
+ selected = false,
3590
+ title,
3591
+ ...props
3592
+ }, ref) => {
3593
+ const gridTemplateClassName = cn(
3594
+ leading && actions && "grid-cols-[auto_minmax(0,1fr)_auto]",
3595
+ leading && !actions && "grid-cols-[auto_minmax(0,1fr)]",
3596
+ !leading && actions && "grid-cols-[minmax(0,1fr)_auto]",
3597
+ !leading && !actions && "grid-cols-[minmax(0,1fr)]"
3598
+ );
3599
+ return /* @__PURE__ */ jsxs12(
3600
+ Surface,
3601
+ {
3602
+ ref,
3603
+ "aria-selected": selected,
3604
+ "data-slot": "document-card",
3605
+ "data-state": selected ? "selected" : "idle",
3606
+ variant: selected ? "documentCardSelected" : "documentCard",
3607
+ className: cn(
3608
+ "grid min-h-[var(--sofya-control-height-lg)] items-center gap-[var(--sofya-gap-default)] px-[var(--sofya-space-4)] py-[var(--sofya-space-3)]",
3609
+ gridTemplateClassName,
3610
+ className
3611
+ ),
3612
+ ...props,
3613
+ children: [
3614
+ leading ? /* @__PURE__ */ jsx21(
3615
+ "span",
3616
+ {
3617
+ "data-slot": "document-card-leading",
3618
+ className: "flex size-[var(--sofya-icon-button-size-sm)] shrink-0 items-center justify-center text-primary",
3619
+ children: leading
3620
+ }
3621
+ ) : null,
3622
+ /* @__PURE__ */ jsxs12("span", { "data-slot": "document-card-content", className: "min-w-0", children: [
3623
+ /* @__PURE__ */ jsx21(Text, { as: "span", size: "label-md", className: "block truncate text-foreground", children: title }),
3624
+ description ? /* @__PURE__ */ jsx21(Text, { as: "span", size: "caption", className: "block truncate text-muted-foreground", children: description }) : null,
3625
+ meta ? /* @__PURE__ */ jsx21(Text, { as: "span", size: "caption", className: "block truncate text-muted-foreground", children: meta }) : null
3626
+ ] }),
3627
+ actions ? /* @__PURE__ */ jsx21(
3628
+ "span",
3629
+ {
3630
+ "data-slot": "document-card-actions",
3631
+ className: "flex shrink-0 items-center gap-[var(--sofya-gap-compact)]",
3632
+ children: actions
3633
+ }
3634
+ ) : null
3635
+ ]
3636
+ }
3637
+ );
3638
+ }
3639
+ );
3640
+ DocumentCard.displayName = "DocumentCard";
3641
+
3642
+ // src/components/empty.tsx
3643
+ import * as React21 from "react";
3543
3644
  import { cva as cva5 } from "class-variance-authority";
3544
- import { Fragment as Fragment3, jsx as jsx21, jsxs as jsxs12 } from "react/jsx-runtime";
3645
+ import { Fragment as Fragment3, jsx as jsx22, jsxs as jsxs13 } from "react/jsx-runtime";
3545
3646
  var emptyMediaVariantOptions = ["default", "icon"];
3546
3647
  var emptyMediaVariants = cva5(
3547
3648
  "inline-flex shrink-0 items-center justify-center transition-[background-color,border-color,color,box-shadow] duration-sofya ease-sofya",
@@ -3557,11 +3658,11 @@ var emptyMediaVariants = cva5(
3557
3658
  }
3558
3659
  }
3559
3660
  );
3560
- var EmptyMedia = React20.forwardRef(function EmptyMedia2({ className, variant, ...props }, ref) {
3561
- return /* @__PURE__ */ jsx21("div", { ref, className: cn(emptyMediaVariants({ variant }), className), ...props });
3661
+ var EmptyMedia = React21.forwardRef(function EmptyMedia2({ className, variant, ...props }, ref) {
3662
+ return /* @__PURE__ */ jsx22("div", { ref, className: cn(emptyMediaVariants({ variant }), className), ...props });
3562
3663
  });
3563
3664
  function EmptyHeader({ className, ...props }) {
3564
- return /* @__PURE__ */ jsx21(
3665
+ return /* @__PURE__ */ jsx22(
3565
3666
  "div",
3566
3667
  {
3567
3668
  className: cn("flex max-w-[34rem] flex-col items-center gap-4 text-center", className),
@@ -3570,7 +3671,7 @@ function EmptyHeader({ className, ...props }) {
3570
3671
  );
3571
3672
  }
3572
3673
  function EmptyTitle({ children, className, ...props }) {
3573
- return /* @__PURE__ */ jsx21(
3674
+ return /* @__PURE__ */ jsx22(
3574
3675
  "h2",
3575
3676
  {
3576
3677
  className: cn("text-foreground", className),
@@ -3588,7 +3689,7 @@ function EmptyDescription({
3588
3689
  className,
3589
3690
  ...props
3590
3691
  }) {
3591
- return /* @__PURE__ */ jsx21(
3692
+ return /* @__PURE__ */ jsx22(
3592
3693
  "p",
3593
3694
  {
3594
3695
  className: cn("max-w-full text-muted-foreground whitespace-nowrap", className),
@@ -3602,7 +3703,7 @@ function EmptyDescription({
3602
3703
  );
3603
3704
  }
3604
3705
  function EmptyContent({ children, className, ...props }) {
3605
- return /* @__PURE__ */ jsx21(
3706
+ return /* @__PURE__ */ jsx22(
3606
3707
  "div",
3607
3708
  {
3608
3709
  className: cn("flex flex-wrap items-center justify-center gap-4 text-center", className),
@@ -3613,9 +3714,9 @@ function EmptyContent({ children, className, ...props }) {
3613
3714
  }
3614
3715
  );
3615
3716
  }
3616
- var Empty = React20.forwardRef(function Empty2({ children, className, content, description, media, title, ...props }, ref) {
3617
- const hasCustomChildren = React20.Children.count(children) > 0;
3618
- return /* @__PURE__ */ jsx21(
3717
+ var Empty = React21.forwardRef(function Empty2({ children, className, content, description, media, title, ...props }, ref) {
3718
+ const hasCustomChildren = React21.Children.count(children) > 0;
3719
+ return /* @__PURE__ */ jsx22(
3619
3720
  "div",
3620
3721
  {
3621
3722
  ref,
@@ -3624,13 +3725,13 @@ var Empty = React20.forwardRef(function Empty2({ children, className, content, d
3624
3725
  className
3625
3726
  ),
3626
3727
  ...props,
3627
- children: hasCustomChildren ? children : /* @__PURE__ */ jsxs12(Fragment3, { children: [
3628
- /* @__PURE__ */ jsxs12(EmptyHeader, { children: [
3629
- media ?? /* @__PURE__ */ jsx21(EmptyMedia, { variant: "icon", "aria-hidden": "true", children: /* @__PURE__ */ jsx21(Icon, { name: "folders", size: 28 }) }),
3630
- /* @__PURE__ */ jsx21(EmptyTitle, { children: title ?? "Nada por aqui" }),
3631
- /* @__PURE__ */ jsx21(EmptyDescription, { children: description ?? "Quando houver conte\xFAdo dispon\xEDvel, ele aparecer\xE1 aqui." })
3728
+ children: hasCustomChildren ? children : /* @__PURE__ */ jsxs13(Fragment3, { children: [
3729
+ /* @__PURE__ */ jsxs13(EmptyHeader, { children: [
3730
+ media ?? /* @__PURE__ */ jsx22(EmptyMedia, { variant: "icon", "aria-hidden": "true", children: /* @__PURE__ */ jsx22(Icon, { name: "folders", size: 28 }) }),
3731
+ /* @__PURE__ */ jsx22(EmptyTitle, { children: title ?? "Nada por aqui" }),
3732
+ /* @__PURE__ */ jsx22(EmptyDescription, { children: description ?? "Quando houver conte\xFAdo dispon\xEDvel, ele aparecer\xE1 aqui." })
3632
3733
  ] }),
3633
- content !== void 0 && content !== null ? /* @__PURE__ */ jsx21(EmptyContent, { children: content }) : null
3734
+ content !== void 0 && content !== null ? /* @__PURE__ */ jsx22(EmptyContent, { children: content }) : null
3634
3735
  ] })
3635
3736
  }
3636
3737
  );
@@ -3643,11 +3744,11 @@ EmptyDescription.displayName = "EmptyDescription";
3643
3744
  EmptyContent.displayName = "EmptyContent";
3644
3745
 
3645
3746
  // src/components/label.tsx
3646
- import * as React21 from "react";
3647
- import { jsx as jsx22 } from "react/jsx-runtime";
3648
- var Label = React21.forwardRef(
3747
+ import * as React22 from "react";
3748
+ import { jsx as jsx23 } from "react/jsx-runtime";
3749
+ var Label = React22.forwardRef(
3649
3750
  ({ children, className, ...props }, ref) => {
3650
- return /* @__PURE__ */ jsx22(
3751
+ return /* @__PURE__ */ jsx23(
3651
3752
  "label",
3652
3753
  {
3653
3754
  ref,
@@ -3670,11 +3771,109 @@ var Label = React21.forwardRef(
3670
3771
  );
3671
3772
  Label.displayName = "Label";
3672
3773
 
3774
+ // src/components/layout.tsx
3775
+ import * as React23 from "react";
3776
+ import { jsx as jsx24 } from "react/jsx-runtime";
3777
+ var alignClassName = {
3778
+ start: "items-start",
3779
+ center: "items-center",
3780
+ end: "items-end",
3781
+ stretch: "items-stretch"
3782
+ };
3783
+ var justifyClassName = {
3784
+ start: "justify-start",
3785
+ center: "justify-center",
3786
+ between: "justify-between",
3787
+ end: "justify-end"
3788
+ };
3789
+ function getGapStyle(gap) {
3790
+ return {
3791
+ "--sofya-layout-gap": `var(--sofya-gap-${gap})`
3792
+ };
3793
+ }
3794
+ var Stack = React23.forwardRef(
3795
+ ({ className, gap = "default", style, ...props }, ref) => /* @__PURE__ */ jsx24(
3796
+ "div",
3797
+ {
3798
+ ref,
3799
+ "data-slot": "stack",
3800
+ className: cn("flex min-w-0 flex-col gap-[var(--sofya-layout-gap)]", className),
3801
+ style: { ...getGapStyle(gap), ...style },
3802
+ ...props
3803
+ }
3804
+ )
3805
+ );
3806
+ Stack.displayName = "Stack";
3807
+ var Cluster = React23.forwardRef(
3808
+ ({
3809
+ align = "center",
3810
+ className,
3811
+ gap = "default",
3812
+ justify = "start",
3813
+ style,
3814
+ ...props
3815
+ }, ref) => /* @__PURE__ */ jsx24(
3816
+ "div",
3817
+ {
3818
+ ref,
3819
+ "data-slot": "cluster",
3820
+ className: cn(
3821
+ "flex min-w-0 flex-wrap gap-[var(--sofya-layout-gap)]",
3822
+ alignClassName[align],
3823
+ justifyClassName[justify],
3824
+ className
3825
+ ),
3826
+ style: { ...getGapStyle(gap), ...style },
3827
+ ...props
3828
+ }
3829
+ )
3830
+ );
3831
+ Cluster.displayName = "Cluster";
3832
+ var Inline = React23.forwardRef(
3833
+ ({ align = "center", className, gap = "compact", style, ...props }, ref) => /* @__PURE__ */ jsx24(
3834
+ "div",
3835
+ {
3836
+ ref,
3837
+ "data-slot": "inline",
3838
+ className: cn(
3839
+ "inline-flex min-w-0 gap-[var(--sofya-layout-gap)]",
3840
+ alignClassName[align],
3841
+ className
3842
+ ),
3843
+ style: { ...getGapStyle(gap), ...style },
3844
+ ...props
3845
+ }
3846
+ )
3847
+ );
3848
+ Inline.displayName = "Inline";
3849
+ var Container = React23.forwardRef(
3850
+ ({ className, measure = "reading", style, ...props }, ref) => {
3851
+ const measureStyle = measure === "none" ? void 0 : {
3852
+ "--sofya-layout-measure": `var(--sofya-measure-${measure})`
3853
+ };
3854
+ return /* @__PURE__ */ jsx24(
3855
+ "div",
3856
+ {
3857
+ ref,
3858
+ "data-slot": "container",
3859
+ className: cn(
3860
+ "mx-auto w-full min-w-0",
3861
+ measure !== "none" && "max-w-[var(--sofya-layout-measure)]",
3862
+ className
3863
+ ),
3864
+ style: { ...measureStyle, ...style },
3865
+ ...props
3866
+ }
3867
+ );
3868
+ }
3869
+ );
3870
+ Container.displayName = "Container";
3871
+
3673
3872
  // src/components/link.tsx
3674
- import * as React22 from "react";
3873
+ import * as React24 from "react";
3675
3874
  import { Slot as Slot3 } from "@radix-ui/react-slot";
3676
3875
  import { cva as cva6 } from "class-variance-authority";
3677
- import { jsx as jsx23 } from "react/jsx-runtime";
3876
+ import { jsx as jsx25 } from "react/jsx-runtime";
3678
3877
  var linkVariants = cva6(
3679
3878
  "inline bg-[linear-gradient(currentColor,currentColor)] bg-[position:0_100%] bg-no-repeat pb-0 text-primary no-underline transition-[color,background-size,box-shadow] duration-sofya ease-sofya hover:text-[color:var(--sofya-link-hover)] focus-visible:rounded-[4px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-visible:ring-offset-0",
3680
3879
  {
@@ -3689,9 +3888,9 @@ var linkVariants = cva6(
3689
3888
  }
3690
3889
  }
3691
3890
  );
3692
- var Link = React22.forwardRef(function Link2({ asChild = false, children, className, variant = "default", ...props }, ref) {
3891
+ var Link = React24.forwardRef(function Link2({ asChild = false, children, className, variant = "default", ...props }, ref) {
3693
3892
  const Component = asChild ? Slot3 : "a";
3694
- return /* @__PURE__ */ jsx23(
3893
+ return /* @__PURE__ */ jsx25(
3695
3894
  Component,
3696
3895
  {
3697
3896
  ref,
@@ -3709,7 +3908,7 @@ var Link = React22.forwardRef(function Link2({ asChild = false, children, classN
3709
3908
  Link.displayName = "Link";
3710
3909
 
3711
3910
  // src/components/logo.tsx
3712
- import * as React23 from "react";
3911
+ import * as React25 from "react";
3713
3912
 
3714
3913
  // src/components/logo-data.ts
3715
3914
  var logoAssets = {
@@ -3806,7 +4005,7 @@ var logoAssets = {
3806
4005
  };
3807
4006
 
3808
4007
  // src/components/logo.tsx
3809
- import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
4008
+ import { jsx as jsx26, jsxs as jsxs14 } from "react/jsx-runtime";
3810
4009
  var logoVariants = ["mono", "default", "text", "full"];
3811
4010
  var logoSizeOptions = ["sm", "md", "lg", "xl", "2xl"];
3812
4011
  var logoSizeScale = {
@@ -3842,7 +4041,7 @@ function resolveLogoDimensions(variant, size, width, height) {
3842
4041
  height: resolvedHeight
3843
4042
  };
3844
4043
  }
3845
- var Logo = React23.forwardRef(function Logo2({
4044
+ var Logo = React25.forwardRef(function Logo2({
3846
4045
  variant = "full",
3847
4046
  size = "lg",
3848
4047
  width,
@@ -3853,10 +4052,10 @@ var Logo = React23.forwardRef(function Logo2({
3853
4052
  ...props
3854
4053
  }, ref) {
3855
4054
  const asset = logoAssets[variant];
3856
- const titleId = React23.useId();
4055
+ const titleId = React25.useId();
3857
4056
  const dimensions = resolveLogoDimensions(variant, size, width, height);
3858
4057
  const monoFill = variant === "mono" ? monoColor ?? "currentColor" : void 0;
3859
- return /* @__PURE__ */ jsxs13(
4058
+ return /* @__PURE__ */ jsxs14(
3860
4059
  "svg",
3861
4060
  {
3862
4061
  ref,
@@ -3871,8 +4070,8 @@ var Logo = React23.forwardRef(function Logo2({
3871
4070
  focusable: "false",
3872
4071
  ...props,
3873
4072
  children: [
3874
- title ? /* @__PURE__ */ jsx24("title", { id: titleId, children: title }) : null,
3875
- asset.paths.map((path, index) => /* @__PURE__ */ jsx24(
4073
+ title ? /* @__PURE__ */ jsx26("title", { id: titleId, children: title }) : null,
4074
+ asset.paths.map((path, index) => /* @__PURE__ */ jsx26(
3876
4075
  "path",
3877
4076
  {
3878
4077
  d: path.d,
@@ -3904,7 +4103,7 @@ var inheritedTypographyStyle = {
3904
4103
  };
3905
4104
 
3906
4105
  // src/components/pagination.tsx
3907
- import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
4106
+ import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
3908
4107
  var paginationLinkVariants = cva7(
3909
4108
  "inline-flex h-10 min-w-10 items-center justify-center rounded-full border border-transparent px-4 [font-family:var(--sofya-text-body-font-family)] text-[length:var(--sofya-text-body-font-size)] font-medium leading-[var(--sofya-text-body-line-height)] tracking-[var(--sofya-text-body-letter-spacing)] text-[color:var(--sofya-text-soft)] no-underline transition-[transform,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-[color:var(--sofya-focus-ring-soft)] focus-visible:ring-offset-0",
3910
4109
  {
@@ -3925,7 +4124,7 @@ var paginationLinkVariants = cva7(
3925
4124
  }
3926
4125
  );
3927
4126
  function Pagination({ className, ...props }) {
3928
- return /* @__PURE__ */ jsx25(
4127
+ return /* @__PURE__ */ jsx27(
3929
4128
  "nav",
3930
4129
  {
3931
4130
  "aria-label": "Pagination",
@@ -3938,7 +4137,7 @@ function PaginationContent({
3938
4137
  className,
3939
4138
  ...props
3940
4139
  }) {
3941
- return /* @__PURE__ */ jsx25(
4140
+ return /* @__PURE__ */ jsx27(
3942
4141
  "ul",
3943
4142
  {
3944
4143
  className: cn(
@@ -3950,7 +4149,7 @@ function PaginationContent({
3950
4149
  );
3951
4150
  }
3952
4151
  function PaginationItem({ className, ...props }) {
3953
- return /* @__PURE__ */ jsx25("li", { className: cn("list-none", className), ...props });
4152
+ return /* @__PURE__ */ jsx27("li", { className: cn("list-none", className), ...props });
3954
4153
  }
3955
4154
  function PaginationLink({
3956
4155
  asChild = false,
@@ -3960,7 +4159,7 @@ function PaginationLink({
3960
4159
  ...props
3961
4160
  }) {
3962
4161
  const Component = asChild ? Slot4 : "a";
3963
- return /* @__PURE__ */ jsx25(
4162
+ return /* @__PURE__ */ jsx27(
3964
4163
  Component,
3965
4164
  {
3966
4165
  "aria-current": isActive ? "page" : void 0,
@@ -3970,25 +4169,25 @@ function PaginationLink({
3970
4169
  );
3971
4170
  }
3972
4171
  function PaginationChevronLeft() {
3973
- return /* @__PURE__ */ jsx25(IconChevronLeft2, { "aria-hidden": "true", className: "h-4 w-4", stroke: 1.75 });
4172
+ return /* @__PURE__ */ jsx27(IconChevronLeft2, { "aria-hidden": "true", className: "h-4 w-4", stroke: 1.75 });
3974
4173
  }
3975
4174
  function PaginationChevronRight() {
3976
- return /* @__PURE__ */ jsx25(IconChevronRight2, { "aria-hidden": "true", className: "h-4 w-4", stroke: 1.75 });
4175
+ return /* @__PURE__ */ jsx27(IconChevronRight2, { "aria-hidden": "true", className: "h-4 w-4", stroke: 1.75 });
3977
4176
  }
3978
4177
  function PaginationPrevious({
3979
4178
  className,
3980
4179
  text = "Previous",
3981
4180
  ...props
3982
4181
  }) {
3983
- return /* @__PURE__ */ jsxs14(
4182
+ return /* @__PURE__ */ jsxs15(
3984
4183
  PaginationLink,
3985
4184
  {
3986
4185
  "aria-label": "Go to previous page",
3987
4186
  className: cn("gap-2 px-4", className),
3988
4187
  ...props,
3989
4188
  children: [
3990
- /* @__PURE__ */ jsx25(PaginationChevronLeft, {}),
3991
- /* @__PURE__ */ jsx25("span", { className: "hidden sm:block", children: renderTextContent(text, {
4189
+ /* @__PURE__ */ jsx27(PaginationChevronLeft, {}),
4190
+ /* @__PURE__ */ jsx27("span", { className: "hidden sm:block", children: renderTextContent(text, {
3992
4191
  as: "span",
3993
4192
  className: "block text-inherit",
3994
4193
  size: "body",
@@ -4003,20 +4202,20 @@ function PaginationNext({
4003
4202
  text = "Next",
4004
4203
  ...props
4005
4204
  }) {
4006
- return /* @__PURE__ */ jsxs14(
4205
+ return /* @__PURE__ */ jsxs15(
4007
4206
  PaginationLink,
4008
4207
  {
4009
4208
  "aria-label": "Go to next page",
4010
4209
  className: cn("gap-2 px-4", className),
4011
4210
  ...props,
4012
4211
  children: [
4013
- /* @__PURE__ */ jsx25("span", { className: "hidden sm:block", children: renderTextContent(text, {
4212
+ /* @__PURE__ */ jsx27("span", { className: "hidden sm:block", children: renderTextContent(text, {
4014
4213
  as: "span",
4015
4214
  className: "block text-inherit",
4016
4215
  size: "body",
4017
4216
  style: inheritedTypographyStyle
4018
4217
  }) }),
4019
- /* @__PURE__ */ jsx25(PaginationChevronRight, {})
4218
+ /* @__PURE__ */ jsx27(PaginationChevronRight, {})
4020
4219
  ]
4021
4220
  }
4022
4221
  );
@@ -4025,7 +4224,7 @@ function PaginationEllipsis({
4025
4224
  className,
4026
4225
  ...props
4027
4226
  }) {
4028
- return /* @__PURE__ */ jsxs14(
4227
+ return /* @__PURE__ */ jsxs15(
4029
4228
  "span",
4030
4229
  {
4031
4230
  "aria-hidden": "true",
@@ -4035,22 +4234,90 @@ function PaginationEllipsis({
4035
4234
  ),
4036
4235
  ...props,
4037
4236
  children: [
4038
- /* @__PURE__ */ jsx25("span", { children: renderTextContent("...", {
4237
+ /* @__PURE__ */ jsx27("span", { children: renderTextContent("...", {
4039
4238
  as: "span",
4040
4239
  className: "block text-inherit",
4041
4240
  size: "h5",
4042
4241
  style: inheritedTypographyStyle
4043
4242
  }) }),
4044
- /* @__PURE__ */ jsx25("span", { className: "sr-only", children: "More pages" })
4243
+ /* @__PURE__ */ jsx27("span", { className: "sr-only", children: "More pages" })
4045
4244
  ]
4046
4245
  }
4047
4246
  );
4048
4247
  }
4049
4248
 
4249
+ // src/components/prose-dialog.tsx
4250
+ import * as React26 from "react";
4251
+ import { jsx as jsx28 } from "react/jsx-runtime";
4252
+ var proseDialogMaxWidth = "min(var(--sofya-layout-prose-dialog-width), calc(100vw - var(--sofya-space-8)))";
4253
+ var ProseDialogContent = React26.forwardRef(
4254
+ ({
4255
+ cardClassName,
4256
+ cardStyle: incomingCardStyle,
4257
+ className,
4258
+ style,
4259
+ surfaceShadow = "none",
4260
+ variant = "proseDialog",
4261
+ ...props
4262
+ }, ref) => {
4263
+ const dialogStyle = {
4264
+ ...style,
4265
+ maxWidth: proseDialogMaxWidth
4266
+ };
4267
+ const cardStyle = {
4268
+ ...incomingCardStyle,
4269
+ maxWidth: proseDialogMaxWidth
4270
+ };
4271
+ return /* @__PURE__ */ jsx28(
4272
+ DialogContent,
4273
+ {
4274
+ ref,
4275
+ className,
4276
+ cardClassName: [
4277
+ "gap-[var(--sofya-rhythm-section-content)] p-[var(--sofya-space-6)] sm:p-[var(--sofya-space-12)]",
4278
+ cardClassName
4279
+ ].filter(Boolean).join(" "),
4280
+ cardStyle,
4281
+ "data-slot": "prose-dialog-content",
4282
+ style: dialogStyle,
4283
+ surfaceShadow,
4284
+ variant,
4285
+ ...props
4286
+ }
4287
+ );
4288
+ }
4289
+ );
4290
+ ProseDialogContent.displayName = "ProseDialogContent";
4291
+ function ProseDialogHeader(props) {
4292
+ return /* @__PURE__ */ jsx28(DialogHeader, { "data-slot": "prose-dialog-header", ...props });
4293
+ }
4294
+ ProseDialogHeader.displayName = "ProseDialogHeader";
4295
+ var ProseDialogTitle = React26.forwardRef((props, ref) => /* @__PURE__ */ jsx28(DialogTitle, { ref, "data-slot": "prose-dialog-title", ...props }));
4296
+ ProseDialogTitle.displayName = "ProseDialogTitle";
4297
+ var ProseDialogDescription = React26.forwardRef((props, ref) => /* @__PURE__ */ jsx28(DialogDescription, { ref, "data-slot": "prose-dialog-description", ...props }));
4298
+ ProseDialogDescription.displayName = "ProseDialogDescription";
4299
+ var ProseDialogBody = React26.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx28(
4300
+ "div",
4301
+ {
4302
+ ref,
4303
+ "data-slot": "prose-dialog-body",
4304
+ className: [
4305
+ "flex flex-col",
4306
+ "max-w-[var(--sofya-measure-wide)] gap-[var(--sofya-rhythm-paragraph-flow)]",
4307
+ "[&_p]:m-0 [&_p]:text-[length:var(--sofya-text-body-md-font-size)]",
4308
+ "[&_p]:font-[var(--sofya-text-body-md-font-weight)] [&_p]:leading-[var(--sofya-text-body-md-line-height)]",
4309
+ "[&_section]:flex [&_section]:flex-col [&_section]:gap-[var(--sofya-rhythm-title-to-body)]",
4310
+ className
4311
+ ].filter(Boolean).join(" "),
4312
+ ...props
4313
+ }
4314
+ ));
4315
+ ProseDialogBody.displayName = "ProseDialogBody";
4316
+
4050
4317
  // src/components/progress.tsx
4051
- import * as React24 from "react";
4318
+ import * as React27 from "react";
4052
4319
  import * as ProgressPrimitive from "@radix-ui/react-progress";
4053
- import { jsx as jsx26 } from "react/jsx-runtime";
4320
+ import { jsx as jsx29 } from "react/jsx-runtime";
4054
4321
  var progressSizeOptions = ["sm", "default", "lg"];
4055
4322
  function clampProgressValue(value, max) {
4056
4323
  if (Number.isNaN(value)) {
@@ -4058,7 +4325,7 @@ function clampProgressValue(value, max) {
4058
4325
  }
4059
4326
  return Math.min(Math.max(value, 0), max);
4060
4327
  }
4061
- var Progress = React24.forwardRef(function Progress2({
4328
+ var Progress = React27.forwardRef(function Progress2({
4062
4329
  className,
4063
4330
  indicatorClassName,
4064
4331
  max = 100,
@@ -4069,7 +4336,7 @@ var Progress = React24.forwardRef(function Progress2({
4069
4336
  const safeMax = max > 0 ? max : 100;
4070
4337
  const resolvedValue = typeof value === "number" ? clampProgressValue(value, safeMax) : null;
4071
4338
  const progressScale = resolvedValue === null ? void 0 : Number((resolvedValue / safeMax).toFixed(4));
4072
- return /* @__PURE__ */ jsx26(
4339
+ return /* @__PURE__ */ jsx29(
4073
4340
  ProgressPrimitive.Root,
4074
4341
  {
4075
4342
  ref,
@@ -4082,7 +4349,7 @@ var Progress = React24.forwardRef(function Progress2({
4082
4349
  className
4083
4350
  ),
4084
4351
  ...props,
4085
- children: /* @__PURE__ */ jsx26(
4352
+ children: /* @__PURE__ */ jsx29(
4086
4353
  ProgressPrimitive.Indicator,
4087
4354
  {
4088
4355
  "data-slot": "progress-indicator",
@@ -4099,19 +4366,19 @@ var Progress = React24.forwardRef(function Progress2({
4099
4366
  Progress.displayName = ProgressPrimitive.Root.displayName;
4100
4367
 
4101
4368
  // src/components/radio-group.tsx
4102
- import * as React25 from "react";
4369
+ import * as React28 from "react";
4103
4370
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
4104
- import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
4371
+ import { jsx as jsx30, jsxs as jsxs16 } from "react/jsx-runtime";
4105
4372
  var radioGroupOrientationOptions = ["horizontal", "vertical"];
4106
4373
  var radioGroupVariantOptions = ["default", "pill", "option"];
4107
- var RadioGroupContext = React25.createContext({
4374
+ var RadioGroupContext = React28.createContext({
4108
4375
  variant: "default"
4109
4376
  });
4110
- var RadioGroupOptionContext = React25.createContext(
4377
+ var RadioGroupOptionContext = React28.createContext(
4111
4378
  {}
4112
4379
  );
4113
- var RadioGroupRoot = React25.forwardRef(function RadioGroup2({ className, variant = "default", ...props }, ref) {
4114
- return /* @__PURE__ */ jsx27(RadioGroupContext.Provider, { value: { variant }, children: /* @__PURE__ */ jsx27(
4380
+ var RadioGroupRoot = React28.forwardRef(function RadioGroup2({ className, variant = "default", ...props }, ref) {
4381
+ return /* @__PURE__ */ jsx30(RadioGroupContext.Provider, { value: { variant }, children: /* @__PURE__ */ jsx30(
4115
4382
  RadioGroupPrimitive.Root,
4116
4383
  {
4117
4384
  ref,
@@ -4127,7 +4394,7 @@ var RadioGroupRoot = React25.forwardRef(function RadioGroup2({ className, varian
4127
4394
  ) });
4128
4395
  });
4129
4396
  RadioGroupRoot.displayName = RadioGroupPrimitive.Root.displayName;
4130
- var RadioGroupItem = React25.forwardRef(function RadioGroupItem2({
4397
+ var RadioGroupItem = React28.forwardRef(function RadioGroupItem2({
4131
4398
  className,
4132
4399
  controlClassName,
4133
4400
  description,
@@ -4139,14 +4406,14 @@ var RadioGroupItem = React25.forwardRef(function RadioGroupItem2({
4139
4406
  labelClassName,
4140
4407
  ...props
4141
4408
  }, ref) {
4142
- const { variant } = React25.useContext(RadioGroupContext);
4143
- const generatedId = React25.useId();
4409
+ const { variant } = React28.useContext(RadioGroupContext);
4410
+ const generatedId = React28.useId();
4144
4411
  const resolvedId = id ?? generatedId;
4145
4412
  const labelId = label ? `${resolvedId}-label` : void 0;
4146
4413
  const descriptionId = description ? `${resolvedId}-description` : void 0;
4147
- const alignClassName = description ? "items-start" : "items-center";
4414
+ const alignClassName2 = description ? "items-start" : "items-center";
4148
4415
  if (variant === "pill") {
4149
- return /* @__PURE__ */ jsx27(
4416
+ return /* @__PURE__ */ jsx30(
4150
4417
  RadioGroupPrimitive.Item,
4151
4418
  {
4152
4419
  ref,
@@ -4161,8 +4428,8 @@ var RadioGroupItem = React25.forwardRef(function RadioGroupItem2({
4161
4428
  className
4162
4429
  ),
4163
4430
  ...props,
4164
- children: label || description ? /* @__PURE__ */ jsxs15("span", { className: "grid justify-items-center gap-1 text-center", children: [
4165
- label ? /* @__PURE__ */ jsx27(
4431
+ children: label || description ? /* @__PURE__ */ jsxs16("span", { className: "grid justify-items-center gap-1 text-center", children: [
4432
+ label ? /* @__PURE__ */ jsx30(
4166
4433
  "span",
4167
4434
  {
4168
4435
  id: labelId,
@@ -4177,7 +4444,7 @@ var RadioGroupItem = React25.forwardRef(function RadioGroupItem2({
4177
4444
  })
4178
4445
  }
4179
4446
  ) : null,
4180
- description ? /* @__PURE__ */ jsx27(
4447
+ description ? /* @__PURE__ */ jsx30(
4181
4448
  "span",
4182
4449
  {
4183
4450
  id: descriptionId,
@@ -4196,16 +4463,16 @@ var RadioGroupItem = React25.forwardRef(function RadioGroupItem2({
4196
4463
  }
4197
4464
  );
4198
4465
  }
4199
- return /* @__PURE__ */ jsxs15(
4466
+ return /* @__PURE__ */ jsxs16(
4200
4467
  "label",
4201
4468
  {
4202
4469
  className: selectionControlContainerClasses({
4203
- alignClassName,
4470
+ alignClassName: alignClassName2,
4204
4471
  className,
4205
4472
  disabled
4206
4473
  }),
4207
4474
  children: [
4208
- /* @__PURE__ */ jsx27(
4475
+ /* @__PURE__ */ jsx30(
4209
4476
  RadioGroupPrimitive.Item,
4210
4477
  {
4211
4478
  ref,
@@ -4221,7 +4488,7 @@ var RadioGroupItem = React25.forwardRef(function RadioGroupItem2({
4221
4488
  controlClassName
4222
4489
  ),
4223
4490
  ...props,
4224
- children: /* @__PURE__ */ jsx27(RadioGroupPrimitive.Indicator, { asChild: true, children: /* @__PURE__ */ jsx27(
4491
+ children: /* @__PURE__ */ jsx30(RadioGroupPrimitive.Indicator, { asChild: true, children: /* @__PURE__ */ jsx30(
4225
4492
  "span",
4226
4493
  {
4227
4494
  "data-slot": "radio-group-indicator",
@@ -4233,8 +4500,8 @@ var RadioGroupItem = React25.forwardRef(function RadioGroupItem2({
4233
4500
  ) })
4234
4501
  }
4235
4502
  ),
4236
- label || description ? /* @__PURE__ */ jsxs15("span", { className: selectionControlContentBaseClasses, children: [
4237
- label ? /* @__PURE__ */ jsx27(
4503
+ label || description ? /* @__PURE__ */ jsxs16("span", { className: selectionControlContentBaseClasses, children: [
4504
+ label ? /* @__PURE__ */ jsx30(
4238
4505
  "span",
4239
4506
  {
4240
4507
  id: labelId,
@@ -4249,7 +4516,7 @@ var RadioGroupItem = React25.forwardRef(function RadioGroupItem2({
4249
4516
  })
4250
4517
  }
4251
4518
  ) : null,
4252
- description ? /* @__PURE__ */ jsx27(
4519
+ description ? /* @__PURE__ */ jsx30(
4253
4520
  "span",
4254
4521
  {
4255
4522
  id: descriptionId,
@@ -4270,7 +4537,7 @@ var RadioGroupItem = React25.forwardRef(function RadioGroupItem2({
4270
4537
  );
4271
4538
  });
4272
4539
  RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
4273
- var RadioGroupOptionAvatar = React25.forwardRef(function RadioGroupOptionAvatar2({
4540
+ var RadioGroupOptionAvatar = React28.forwardRef(function RadioGroupOptionAvatar2({
4274
4541
  alt,
4275
4542
  avatarClassName,
4276
4543
  avatarProps,
@@ -4280,7 +4547,7 @@ var RadioGroupOptionAvatar = React25.forwardRef(function RadioGroupOptionAvatar2
4280
4547
  src,
4281
4548
  ...props
4282
4549
  }, ref) {
4283
- return /* @__PURE__ */ jsx27(
4550
+ return /* @__PURE__ */ jsx30(
4284
4551
  "span",
4285
4552
  {
4286
4553
  ref,
@@ -4290,7 +4557,7 @@ var RadioGroupOptionAvatar = React25.forwardRef(function RadioGroupOptionAvatar2
4290
4557
  className
4291
4558
  ),
4292
4559
  ...props,
4293
- children: children ?? /* @__PURE__ */ jsx27(
4560
+ children: children ?? /* @__PURE__ */ jsx30(
4294
4561
  Avatar,
4295
4562
  {
4296
4563
  ...avatarProps,
@@ -4307,9 +4574,9 @@ var RadioGroupOptionAvatar = React25.forwardRef(function RadioGroupOptionAvatar2
4307
4574
  );
4308
4575
  });
4309
4576
  RadioGroupOptionAvatar.displayName = "RadioGroupOptionAvatar";
4310
- var RadioGroupOptionLabel = React25.forwardRef(function RadioGroupOptionLabel2({ children, className, ...props }, ref) {
4311
- const { labelId } = React25.useContext(RadioGroupOptionContext);
4312
- return /* @__PURE__ */ jsx27(
4577
+ var RadioGroupOptionLabel = React28.forwardRef(function RadioGroupOptionLabel2({ children, className, ...props }, ref) {
4578
+ const { labelId } = React28.useContext(RadioGroupOptionContext);
4579
+ return /* @__PURE__ */ jsx30(
4313
4580
  "span",
4314
4581
  {
4315
4582
  ref,
@@ -4329,9 +4596,9 @@ var RadioGroupOptionLabel = React25.forwardRef(function RadioGroupOptionLabel2({
4329
4596
  );
4330
4597
  });
4331
4598
  RadioGroupOptionLabel.displayName = "RadioGroupOptionLabel";
4332
- var RadioGroupOptionDescription = React25.forwardRef(function RadioGroupOptionDescription2({ children, className, ...props }, ref) {
4333
- const { descriptionId } = React25.useContext(RadioGroupOptionContext);
4334
- return /* @__PURE__ */ jsx27(
4599
+ var RadioGroupOptionDescription = React28.forwardRef(function RadioGroupOptionDescription2({ children, className, ...props }, ref) {
4600
+ const { descriptionId } = React28.useContext(RadioGroupOptionContext);
4601
+ return /* @__PURE__ */ jsx30(
4335
4602
  "span",
4336
4603
  {
4337
4604
  ref,
@@ -4350,8 +4617,8 @@ var RadioGroupOptionDescription = React25.forwardRef(function RadioGroupOptionDe
4350
4617
  );
4351
4618
  });
4352
4619
  RadioGroupOptionDescription.displayName = "RadioGroupOptionDescription";
4353
- var RadioGroupOptionIndicator = React25.forwardRef(function RadioGroupOptionIndicator2({ children, className, ...props }, ref) {
4354
- return /* @__PURE__ */ jsx27(
4620
+ var RadioGroupOptionIndicator = React28.forwardRef(function RadioGroupOptionIndicator2({ children, className, ...props }, ref) {
4621
+ return /* @__PURE__ */ jsx30(
4355
4622
  "span",
4356
4623
  {
4357
4624
  ref,
@@ -4361,7 +4628,7 @@ var RadioGroupOptionIndicator = React25.forwardRef(function RadioGroupOptionIndi
4361
4628
  className
4362
4629
  ),
4363
4630
  ...props,
4364
- children: children ?? /* @__PURE__ */ jsx27(
4631
+ children: children ?? /* @__PURE__ */ jsx30(
4365
4632
  "svg",
4366
4633
  {
4367
4634
  "aria-hidden": "true",
@@ -4369,7 +4636,7 @@ var RadioGroupOptionIndicator = React25.forwardRef(function RadioGroupOptionIndi
4369
4636
  className: "h-6 w-6 opacity-0 transition-opacity duration-sofya ease-sofya group-data-[state=checked]/radio-option:opacity-100",
4370
4637
  fill: "none",
4371
4638
  xmlns: "http://www.w3.org/2000/svg",
4372
- children: /* @__PURE__ */ jsx27(
4639
+ children: /* @__PURE__ */ jsx30(
4373
4640
  "path",
4374
4641
  {
4375
4642
  d: "M9.55 17.6537L4.2155 12.3192L5.2845 11.25L9.55 15.5155L18.7155 6.35L19.7845 7.41925L9.55 17.6537Z",
@@ -4383,14 +4650,14 @@ var RadioGroupOptionIndicator = React25.forwardRef(function RadioGroupOptionIndi
4383
4650
  });
4384
4651
  RadioGroupOptionIndicator.displayName = "RadioGroupOptionIndicator";
4385
4652
  function isOptionChild(child, component) {
4386
- return React25.isValidElement(child) && child.type === component;
4653
+ return React28.isValidElement(child) && child.type === component;
4387
4654
  }
4388
- var RadioGroupOption = React25.forwardRef(function RadioGroupOption2({ children, className, disabled, id, ...props }, ref) {
4389
- const generatedId = React25.useId();
4655
+ var RadioGroupOption = React28.forwardRef(function RadioGroupOption2({ children, className, disabled, id, ...props }, ref) {
4656
+ const generatedId = React28.useId();
4390
4657
  const resolvedId = id ?? generatedId;
4391
4658
  const labelId = `${resolvedId}-label`;
4392
4659
  const descriptionId = `${resolvedId}-description`;
4393
- const childArray = React25.Children.toArray(children);
4660
+ const childArray = React28.Children.toArray(children);
4394
4661
  const leadingChildren = [];
4395
4662
  const contentChildren = [];
4396
4663
  let indicatorChild = null;
@@ -4405,7 +4672,7 @@ var RadioGroupOption = React25.forwardRef(function RadioGroupOption2({ children,
4405
4672
  }
4406
4673
  contentChildren.push(child);
4407
4674
  }
4408
- return /* @__PURE__ */ jsx27(RadioGroupOptionContext.Provider, { value: { descriptionId, labelId }, children: /* @__PURE__ */ jsxs15(
4675
+ return /* @__PURE__ */ jsx30(RadioGroupOptionContext.Provider, { value: { descriptionId, labelId }, children: /* @__PURE__ */ jsxs16(
4409
4676
  RadioGroupPrimitive.Item,
4410
4677
  {
4411
4678
  ref,
@@ -4425,7 +4692,7 @@ var RadioGroupOption = React25.forwardRef(function RadioGroupOption2({ children,
4425
4692
  ...props,
4426
4693
  children: [
4427
4694
  leadingChildren,
4428
- /* @__PURE__ */ jsx27(
4695
+ /* @__PURE__ */ jsx30(
4429
4696
  "span",
4430
4697
  {
4431
4698
  "data-slot": "radio-group-option-content",
@@ -4433,7 +4700,7 @@ var RadioGroupOption = React25.forwardRef(function RadioGroupOption2({ children,
4433
4700
  children: contentChildren
4434
4701
  }
4435
4702
  ),
4436
- indicatorChild ?? /* @__PURE__ */ jsx27(RadioGroupOptionIndicator, {})
4703
+ indicatorChild ?? /* @__PURE__ */ jsx30(RadioGroupOptionIndicator, {})
4437
4704
  ]
4438
4705
  }
4439
4706
  ) });
@@ -4449,13 +4716,37 @@ var RadioGroup3 = Object.assign(RadioGroupRoot, {
4449
4716
  OptionLabel: RadioGroupOptionLabel
4450
4717
  });
4451
4718
 
4719
+ // src/components/right-rail-action.tsx
4720
+ import * as React29 from "react";
4721
+ import { jsx as jsx31 } from "react/jsx-runtime";
4722
+ var RightRailAction = React29.forwardRef(
4723
+ ({ active = false, className, icon, ...props }, ref) => /* @__PURE__ */ jsx31(
4724
+ Button,
4725
+ {
4726
+ ref,
4727
+ active,
4728
+ "data-slot": "right-rail-action",
4729
+ leftIcon: icon,
4730
+ size: "icon",
4731
+ variant: "icon",
4732
+ className: cn(
4733
+ "size-[var(--sofya-icon-button-size-md)] rounded-[var(--sofya-radius-md)] shadow-none",
4734
+ active && "bg-[color:var(--sofya-surface-selected)]",
4735
+ className
4736
+ ),
4737
+ ...props
4738
+ }
4739
+ )
4740
+ );
4741
+ RightRailAction.displayName = "RightRailAction";
4742
+
4452
4743
  // src/components/scroll-area.tsx
4453
- import * as React26 from "react";
4744
+ import * as React30 from "react";
4454
4745
  import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
4455
- import { jsx as jsx28 } from "react/jsx-runtime";
4746
+ import { jsx as jsx32 } from "react/jsx-runtime";
4456
4747
  var scrollAreaOrientationOptions = ["horizontal", "vertical"];
4457
- var ScrollArea = React26.forwardRef(function ScrollArea2({ className, ...props }, ref) {
4458
- return /* @__PURE__ */ jsx28(
4748
+ var ScrollArea = React30.forwardRef(function ScrollArea2({ className, ...props }, ref) {
4749
+ return /* @__PURE__ */ jsx32(
4459
4750
  ScrollAreaPrimitive.Root,
4460
4751
  {
4461
4752
  ref,
@@ -4466,8 +4757,8 @@ var ScrollArea = React26.forwardRef(function ScrollArea2({ className, ...props }
4466
4757
  );
4467
4758
  });
4468
4759
  ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
4469
- var ScrollAreaViewport = React26.forwardRef(function ScrollAreaViewport2({ className, ...props }, ref) {
4470
- return /* @__PURE__ */ jsx28(
4760
+ var ScrollAreaViewport = React30.forwardRef(function ScrollAreaViewport2({ className, ...props }, ref) {
4761
+ return /* @__PURE__ */ jsx32(
4471
4762
  ScrollAreaPrimitive.Viewport,
4472
4763
  {
4473
4764
  ref,
@@ -4481,8 +4772,8 @@ var ScrollAreaViewport = React26.forwardRef(function ScrollAreaViewport2({ class
4481
4772
  );
4482
4773
  });
4483
4774
  ScrollAreaViewport.displayName = ScrollAreaPrimitive.Viewport.displayName;
4484
- var ScrollAreaScrollbar = React26.forwardRef(function ScrollAreaScrollbar2({ className, orientation = "vertical", thumbClassName, ...props }, ref) {
4485
- return /* @__PURE__ */ jsx28(
4775
+ var ScrollAreaScrollbar = React30.forwardRef(function ScrollAreaScrollbar2({ className, orientation = "vertical", thumbClassName, ...props }, ref) {
4776
+ return /* @__PURE__ */ jsx32(
4486
4777
  ScrollAreaPrimitive.Scrollbar,
4487
4778
  {
4488
4779
  ref,
@@ -4493,7 +4784,7 @@ var ScrollAreaScrollbar = React26.forwardRef(function ScrollAreaScrollbar2({ cla
4493
4784
  className
4494
4785
  ),
4495
4786
  ...props,
4496
- children: /* @__PURE__ */ jsx28(
4787
+ children: /* @__PURE__ */ jsx32(
4497
4788
  ScrollAreaPrimitive.Thumb,
4498
4789
  {
4499
4790
  "data-slot": "scroll-area-thumb",
@@ -4507,8 +4798,8 @@ var ScrollAreaScrollbar = React26.forwardRef(function ScrollAreaScrollbar2({ cla
4507
4798
  );
4508
4799
  });
4509
4800
  ScrollAreaScrollbar.displayName = ScrollAreaPrimitive.Scrollbar.displayName;
4510
- var ScrollAreaCorner = React26.forwardRef(function ScrollAreaCorner2({ className, ...props }, ref) {
4511
- return /* @__PURE__ */ jsx28(
4801
+ var ScrollAreaCorner = React30.forwardRef(function ScrollAreaCorner2({ className, ...props }, ref) {
4802
+ return /* @__PURE__ */ jsx32(
4512
4803
  ScrollAreaPrimitive.Corner,
4513
4804
  {
4514
4805
  ref,
@@ -4521,19 +4812,19 @@ var ScrollAreaCorner = React26.forwardRef(function ScrollAreaCorner2({ className
4521
4812
  ScrollAreaCorner.displayName = ScrollAreaPrimitive.Corner.displayName;
4522
4813
 
4523
4814
  // src/components/select.tsx
4524
- import * as React27 from "react";
4815
+ import * as React31 from "react";
4525
4816
  import * as SelectPrimitive from "@radix-ui/react-select";
4526
4817
 
4527
4818
  // src/lib/form-control-classes.ts
4528
4819
  var formControlBaseClasses = "flex w-full items-center justify-between gap-4 rounded-[10px] border border-[color:var(--sofya-border-strong)] bg-card px-4 text-left [font-family:var(--sofya-text-body-font-family)] text-[length:var(--sofya-text-body-font-size)] [font-weight:var(--sofya-text-body-font-weight)] leading-[var(--sofya-text-body-line-height)] tracking-[var(--sofya-text-body-letter-spacing)] text-[color:var(--sofya-text-default)] shadow-none transition-[border-color,box-shadow,background-color,color] duration-sofya ease-sofya hover:border-[color:var(--sofya-border-hover)] 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 aria-invalid:border-destructive aria-invalid:focus:ring-destructive/20 data-[placeholder]:text-[color:var(--sofya-text-placeholder)]";
4529
4820
 
4530
4821
  // src/components/select.tsx
4531
- import { jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
4822
+ import { jsx as jsx33, jsxs as jsxs17 } from "react/jsx-runtime";
4532
4823
  var selectSizeOptions = ["default", "sm"];
4533
4824
  var Select = SelectPrimitive.Root;
4534
4825
  var SelectGroup = SelectPrimitive.Group;
4535
- var SelectValue = React27.forwardRef(function SelectValue2({ className, ...props }, ref) {
4536
- return /* @__PURE__ */ jsx29(
4826
+ var SelectValue = React31.forwardRef(function SelectValue2({ className, ...props }, ref) {
4827
+ return /* @__PURE__ */ jsx33(
4537
4828
  Text,
4538
4829
  {
4539
4830
  ref,
@@ -4542,13 +4833,13 @@ var SelectValue = React27.forwardRef(function SelectValue2({ className, ...props
4542
4833
  className: cn("block truncate text-inherit", className),
4543
4834
  size: "tiny",
4544
4835
  style: inheritedTypographyStyle,
4545
- children: /* @__PURE__ */ jsx29(SelectPrimitive.Value, { className: "block truncate", ...props })
4836
+ children: /* @__PURE__ */ jsx33(SelectPrimitive.Value, { className: "block truncate", ...props })
4546
4837
  }
4547
4838
  );
4548
4839
  });
4549
4840
  SelectValue.displayName = SelectPrimitive.Value.displayName;
4550
- var SelectTrigger = React27.forwardRef(function SelectTrigger2({ className, children, size = "default", ...props }, ref) {
4551
- return /* @__PURE__ */ jsxs16(
4841
+ var SelectTrigger = React31.forwardRef(function SelectTrigger2({ className, children, size = "default", ...props }, ref) {
4842
+ return /* @__PURE__ */ jsxs17(
4552
4843
  SelectPrimitive.Trigger,
4553
4844
  {
4554
4845
  ref,
@@ -4562,7 +4853,7 @@ var SelectTrigger = React27.forwardRef(function SelectTrigger2({ className, chil
4562
4853
  ...props,
4563
4854
  children: [
4564
4855
  children,
4565
- /* @__PURE__ */ jsx29(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx29(
4856
+ /* @__PURE__ */ jsx33(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx33(
4566
4857
  Icon,
4567
4858
  {
4568
4859
  name: "caret-down",
@@ -4575,8 +4866,8 @@ var SelectTrigger = React27.forwardRef(function SelectTrigger2({ className, chil
4575
4866
  );
4576
4867
  });
4577
4868
  SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
4578
- var SelectScrollUpButton = React27.forwardRef(function SelectScrollUpButton2({ className, ...props }, ref) {
4579
- return /* @__PURE__ */ jsx29(
4869
+ var SelectScrollUpButton = React31.forwardRef(function SelectScrollUpButton2({ className, ...props }, ref) {
4870
+ return /* @__PURE__ */ jsx33(
4580
4871
  SelectPrimitive.ScrollUpButton,
4581
4872
  {
4582
4873
  ref,
@@ -4586,13 +4877,13 @@ var SelectScrollUpButton = React27.forwardRef(function SelectScrollUpButton2({ c
4586
4877
  className
4587
4878
  ),
4588
4879
  ...props,
4589
- children: /* @__PURE__ */ jsx29(Icon, { name: "caret-up", size: 12 })
4880
+ children: /* @__PURE__ */ jsx33(Icon, { name: "caret-up", size: 12 })
4590
4881
  }
4591
4882
  );
4592
4883
  });
4593
4884
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
4594
- var SelectScrollDownButton = React27.forwardRef(function SelectScrollDownButton2({ className, ...props }, ref) {
4595
- return /* @__PURE__ */ jsx29(
4885
+ var SelectScrollDownButton = React31.forwardRef(function SelectScrollDownButton2({ className, ...props }, ref) {
4886
+ return /* @__PURE__ */ jsx33(
4596
4887
  SelectPrimitive.ScrollDownButton,
4597
4888
  {
4598
4889
  ref,
@@ -4602,13 +4893,13 @@ var SelectScrollDownButton = React27.forwardRef(function SelectScrollDownButton2
4602
4893
  className
4603
4894
  ),
4604
4895
  ...props,
4605
- children: /* @__PURE__ */ jsx29(Icon, { name: "caret-down", size: 12 })
4896
+ children: /* @__PURE__ */ jsx33(Icon, { name: "caret-down", size: 12 })
4606
4897
  }
4607
4898
  );
4608
4899
  });
4609
4900
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
4610
- var SelectContent = React27.forwardRef(function SelectContent2({ className, children, position = "popper", ...props }, ref) {
4611
- return /* @__PURE__ */ jsx29(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs16(
4901
+ var SelectContent = React31.forwardRef(function SelectContent2({ className, children, position = "popper", ...props }, ref) {
4902
+ return /* @__PURE__ */ jsx33(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs17(
4612
4903
  SelectPrimitive.Content,
4613
4904
  {
4614
4905
  ref,
@@ -4621,8 +4912,8 @@ var SelectContent = React27.forwardRef(function SelectContent2({ className, chil
4621
4912
  ),
4622
4913
  ...props,
4623
4914
  children: [
4624
- /* @__PURE__ */ jsx29(SelectScrollUpButton, {}),
4625
- /* @__PURE__ */ jsx29(
4915
+ /* @__PURE__ */ jsx33(SelectScrollUpButton, {}),
4916
+ /* @__PURE__ */ jsx33(
4626
4917
  SelectPrimitive.Viewport,
4627
4918
  {
4628
4919
  "data-slot": "select-viewport",
@@ -4630,14 +4921,14 @@ var SelectContent = React27.forwardRef(function SelectContent2({ className, chil
4630
4921
  children
4631
4922
  }
4632
4923
  ),
4633
- /* @__PURE__ */ jsx29(SelectScrollDownButton, {})
4924
+ /* @__PURE__ */ jsx33(SelectScrollDownButton, {})
4634
4925
  ]
4635
4926
  }
4636
4927
  ) });
4637
4928
  });
4638
4929
  SelectContent.displayName = SelectPrimitive.Content.displayName;
4639
- var SelectLabel = React27.forwardRef(function SelectLabel2({ className, ...props }, ref) {
4640
- return /* @__PURE__ */ jsx29(
4930
+ var SelectLabel = React31.forwardRef(function SelectLabel2({ className, ...props }, ref) {
4931
+ return /* @__PURE__ */ jsx33(
4641
4932
  SelectPrimitive.Label,
4642
4933
  {
4643
4934
  ref,
@@ -4659,8 +4950,8 @@ var SelectLabel = React27.forwardRef(function SelectLabel2({ className, ...props
4659
4950
  );
4660
4951
  });
4661
4952
  SelectLabel.displayName = SelectPrimitive.Label.displayName;
4662
- var SelectItem = React27.forwardRef(function SelectItem2({ className, children, ...props }, ref) {
4663
- return /* @__PURE__ */ jsxs16(
4953
+ var SelectItem = React31.forwardRef(function SelectItem2({ className, children, ...props }, ref) {
4954
+ return /* @__PURE__ */ jsxs17(
4664
4955
  SelectPrimitive.Item,
4665
4956
  {
4666
4957
  ref,
@@ -4671,20 +4962,20 @@ var SelectItem = React27.forwardRef(function SelectItem2({ className, children,
4671
4962
  ),
4672
4963
  ...props,
4673
4964
  children: [
4674
- /* @__PURE__ */ jsx29(SelectPrimitive.ItemText, { className: "truncate", children: renderTextContent(children, {
4965
+ /* @__PURE__ */ jsx33(SelectPrimitive.ItemText, { className: "truncate", children: renderTextContent(children, {
4675
4966
  as: "span",
4676
4967
  className: "block truncate text-[color:var(--sofya-text-default)]",
4677
4968
  size: "tiny",
4678
4969
  style: inheritedTypographyStyle
4679
4970
  }) }),
4680
- /* @__PURE__ */ jsx29(SelectPrimitive.ItemIndicator, { asChild: true, children: /* @__PURE__ */ jsx29("span", { className: "absolute right-4 inline-flex h-4 w-4 items-center justify-center text-primary", children: /* @__PURE__ */ jsx29(Icon, { name: "check", size: 14 }) }) })
4971
+ /* @__PURE__ */ jsx33(SelectPrimitive.ItemIndicator, { asChild: true, children: /* @__PURE__ */ jsx33("span", { className: "absolute right-4 inline-flex h-4 w-4 items-center justify-center text-primary", children: /* @__PURE__ */ jsx33(Icon, { name: "check", size: 14 }) }) })
4681
4972
  ]
4682
4973
  }
4683
4974
  );
4684
4975
  });
4685
4976
  SelectItem.displayName = SelectPrimitive.Item.displayName;
4686
- var SelectSeparator = React27.forwardRef(function SelectSeparator2({ className, ...props }, ref) {
4687
- return /* @__PURE__ */ jsx29(
4977
+ var SelectSeparator = React31.forwardRef(function SelectSeparator2({ className, ...props }, ref) {
4978
+ return /* @__PURE__ */ jsx33(
4688
4979
  SelectPrimitive.Separator,
4689
4980
  {
4690
4981
  ref,
@@ -4697,11 +4988,11 @@ var SelectSeparator = React27.forwardRef(function SelectSeparator2({ className,
4697
4988
  SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
4698
4989
 
4699
4990
  // src/components/separator.tsx
4700
- import * as React28 from "react";
4991
+ import * as React32 from "react";
4701
4992
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
4702
- import { jsx as jsx30 } from "react/jsx-runtime";
4703
- var Separator2 = React28.forwardRef(function Separator3({ className, decorative = true, orientation = "horizontal", ...props }, ref) {
4704
- return /* @__PURE__ */ jsx30(
4993
+ import { jsx as jsx34 } from "react/jsx-runtime";
4994
+ var Separator2 = React32.forwardRef(function Separator3({ className, decorative = true, orientation = "horizontal", ...props }, ref) {
4995
+ return /* @__PURE__ */ jsx34(
4705
4996
  SeparatorPrimitive.Root,
4706
4997
  {
4707
4998
  ref,
@@ -4720,8 +5011,8 @@ var Separator2 = React28.forwardRef(function Separator3({ className, decorative
4720
5011
  Separator2.displayName = SeparatorPrimitive.Root.displayName;
4721
5012
 
4722
5013
  // src/components/slider.tsx
4723
- import * as React29 from "react";
4724
- import { jsx as jsx31, jsxs as jsxs17 } from "react/jsx-runtime";
5014
+ import * as React33 from "react";
5015
+ import { jsx as jsx35, jsxs as jsxs18 } from "react/jsx-runtime";
4725
5016
  function clampSliderValue(value, min, max) {
4726
5017
  if (Number.isNaN(value)) {
4727
5018
  return min;
@@ -4746,7 +5037,7 @@ function resolveSliderMeasurement(value, fallback) {
4746
5037
  function isTextValue(value) {
4747
5038
  return typeof value === "string" || typeof value === "number";
4748
5039
  }
4749
- var Slider = React29.forwardRef(function Slider2({
5040
+ var Slider = React33.forwardRef(function Slider2({
4750
5041
  className,
4751
5042
  defaultValue,
4752
5043
  formatValue,
@@ -4769,7 +5060,7 @@ var Slider = React29.forwardRef(function Slider2({
4769
5060
  valueClassName,
4770
5061
  ...props
4771
5062
  }, ref) {
4772
- const resolvedId = React29.useId();
5063
+ const resolvedId = React33.useId();
4773
5064
  const inputId = id ?? resolvedId;
4774
5065
  const safeMin = min;
4775
5066
  const safeMax = resolveSliderMax(safeMin, max);
@@ -4778,7 +5069,7 @@ var Slider = React29.forwardRef(function Slider2({
4778
5069
  onChange: onValueChange,
4779
5070
  value
4780
5071
  });
4781
- React29.useEffect(() => {
5072
+ React33.useEffect(() => {
4782
5073
  if (value !== void 0) {
4783
5074
  return;
4784
5075
  }
@@ -4825,14 +5116,14 @@ var Slider = React29.forwardRef(function Slider2({
4825
5116
  setControllableValue(nextValue);
4826
5117
  onChange?.(event);
4827
5118
  };
4828
- return /* @__PURE__ */ jsxs17(
5119
+ return /* @__PURE__ */ jsxs18(
4829
5120
  "div",
4830
5121
  {
4831
5122
  "data-slot": "slider",
4832
5123
  className: cn("grid w-full gap-2", className),
4833
5124
  children: [
4834
- label || showValue ? /* @__PURE__ */ jsxs17("div", { className: "flex items-center justify-between gap-4", children: [
4835
- label ? /* @__PURE__ */ jsx31(
5125
+ label || showValue ? /* @__PURE__ */ jsxs18("div", { className: "flex items-center justify-between gap-4", children: [
5126
+ label ? /* @__PURE__ */ jsx35(
4836
5127
  FieldLabel,
4837
5128
  {
4838
5129
  htmlFor: inputId,
@@ -4843,8 +5134,8 @@ var Slider = React29.forwardRef(function Slider2({
4843
5134
  textClassName: "block min-w-0 text-[color:var(--sofya-text-default)]",
4844
5135
  children: label
4845
5136
  }
4846
- ) : /* @__PURE__ */ jsx31("span", {}),
4847
- showValue ? /* @__PURE__ */ jsx31(
5137
+ ) : /* @__PURE__ */ jsx35("span", {}),
5138
+ showValue ? /* @__PURE__ */ jsx35(
4848
5139
  "div",
4849
5140
  {
4850
5141
  className: cn(
@@ -4862,7 +5153,7 @@ var Slider = React29.forwardRef(function Slider2({
4862
5153
  }
4863
5154
  ) : null
4864
5155
  ] }) : null,
4865
- /* @__PURE__ */ jsxs17(
5156
+ /* @__PURE__ */ jsxs18(
4866
5157
  "div",
4867
5158
  {
4868
5159
  "data-slot": "slider-control",
@@ -4872,7 +5163,7 @@ var Slider = React29.forwardRef(function Slider2({
4872
5163
  ),
4873
5164
  style: controlStyle,
4874
5165
  children: [
4875
- /* @__PURE__ */ jsx31(
5166
+ /* @__PURE__ */ jsx35(
4876
5167
  "input",
4877
5168
  {
4878
5169
  ...props,
@@ -4889,7 +5180,7 @@ var Slider = React29.forwardRef(function Slider2({
4889
5180
  style: inputBoundsStyle
4890
5181
  }
4891
5182
  ),
4892
- /* @__PURE__ */ jsx31(
5183
+ /* @__PURE__ */ jsx35(
4893
5184
  "div",
4894
5185
  {
4895
5186
  "data-slot": "slider-track",
@@ -4900,7 +5191,7 @@ var Slider = React29.forwardRef(function Slider2({
4900
5191
  style: trackBoundsStyle
4901
5192
  }
4902
5193
  ),
4903
- /* @__PURE__ */ jsx31(
5194
+ /* @__PURE__ */ jsx35(
4904
5195
  "div",
4905
5196
  {
4906
5197
  "data-slot": "slider-range",
@@ -4911,7 +5202,7 @@ var Slider = React29.forwardRef(function Slider2({
4911
5202
  style: rangeStyle
4912
5203
  }
4913
5204
  ),
4914
- /* @__PURE__ */ jsx31(
5205
+ /* @__PURE__ */ jsx35(
4915
5206
  "div",
4916
5207
  {
4917
5208
  "data-slot": "slider-thumb",
@@ -4932,10 +5223,10 @@ var Slider = React29.forwardRef(function Slider2({
4932
5223
  Slider.displayName = "Slider";
4933
5224
 
4934
5225
  // src/components/skeleton.tsx
4935
- import * as React30 from "react";
4936
- import { jsx as jsx32 } from "react/jsx-runtime";
4937
- var Skeleton = React30.forwardRef(function Skeleton2({ className, ...props }, ref) {
4938
- return /* @__PURE__ */ jsx32(
5226
+ import * as React34 from "react";
5227
+ import { jsx as jsx36 } from "react/jsx-runtime";
5228
+ var Skeleton = React34.forwardRef(function Skeleton2({ className, ...props }, ref) {
5229
+ return /* @__PURE__ */ jsx36(
4939
5230
  "div",
4940
5231
  {
4941
5232
  ref,
@@ -4950,18 +5241,18 @@ var Skeleton = React30.forwardRef(function Skeleton2({ className, ...props }, re
4950
5241
  Skeleton.displayName = "Skeleton";
4951
5242
 
4952
5243
  // src/components/sonner.tsx
4953
- import * as React31 from "react";
5244
+ import * as React35 from "react";
4954
5245
  import {
4955
5246
  Toaster as SonnerToaster,
4956
5247
  toast
4957
5248
  } from "sonner";
4958
- import { jsx as jsx33 } from "react/jsx-runtime";
5249
+ import { jsx as jsx37 } from "react/jsx-runtime";
4959
5250
  var notificationVariantOptions = ["default", "success", "error", "warning"];
4960
5251
  function ToastStatusIcon({
4961
5252
  iconName,
4962
5253
  className
4963
5254
  }) {
4964
- return /* @__PURE__ */ jsx33(
5255
+ return /* @__PURE__ */ jsx37(
4965
5256
  "span",
4966
5257
  {
4967
5258
  "aria-hidden": "true",
@@ -4969,7 +5260,7 @@ function ToastStatusIcon({
4969
5260
  "inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-full border shadow-sofya-sm",
4970
5261
  className
4971
5262
  ),
4972
- children: /* @__PURE__ */ jsx33(Icon, { name: iconName, size: 16 })
5263
+ children: /* @__PURE__ */ jsx37(Icon, { name: iconName, size: 16 })
4973
5264
  }
4974
5265
  );
4975
5266
  }
@@ -4990,35 +5281,35 @@ var defaultToastClassNames = {
4990
5281
  loading: "border-border bg-card text-foreground"
4991
5282
  };
4992
5283
  var defaultToastIcons = {
4993
- success: /* @__PURE__ */ jsx33(
5284
+ success: /* @__PURE__ */ jsx37(
4994
5285
  ToastStatusIcon,
4995
5286
  {
4996
5287
  iconName: "check",
4997
5288
  className: "border-success/15 bg-success/12 text-success"
4998
5289
  }
4999
5290
  ),
5000
- error: /* @__PURE__ */ jsx33(
5291
+ error: /* @__PURE__ */ jsx37(
5001
5292
  ToastStatusIcon,
5002
5293
  {
5003
5294
  iconName: "x",
5004
5295
  className: "border-destructive/15 bg-destructive/12 text-destructive"
5005
5296
  }
5006
5297
  ),
5007
- warning: /* @__PURE__ */ jsx33(
5298
+ warning: /* @__PURE__ */ jsx37(
5008
5299
  ToastStatusIcon,
5009
5300
  {
5010
5301
  iconName: "question",
5011
5302
  className: "border-warning/20 bg-warning/15 text-foreground"
5012
5303
  }
5013
5304
  ),
5014
- info: /* @__PURE__ */ jsx33(
5305
+ info: /* @__PURE__ */ jsx37(
5015
5306
  ToastStatusIcon,
5016
5307
  {
5017
5308
  iconName: "question",
5018
5309
  className: "border-primary/15 bg-primary/10 text-primary"
5019
5310
  }
5020
5311
  ),
5021
- close: /* @__PURE__ */ jsx33(Icon, { name: "x", size: 12 })
5312
+ close: /* @__PURE__ */ jsx37(Icon, { name: "x", size: 12 })
5022
5313
  };
5023
5314
  function mergeToastClassNames(overrides) {
5024
5315
  return {
@@ -5026,7 +5317,7 @@ function mergeToastClassNames(overrides) {
5026
5317
  ...overrides
5027
5318
  };
5028
5319
  }
5029
- var Toaster = React31.forwardRef(
5320
+ var Toaster = React35.forwardRef(
5030
5321
  function Toaster2({
5031
5322
  className,
5032
5323
  closeButton = true,
@@ -5038,7 +5329,7 @@ var Toaster = React31.forwardRef(
5038
5329
  visibleToasts = 5,
5039
5330
  ...props
5040
5331
  }, ref) {
5041
- return /* @__PURE__ */ jsx33(
5332
+ return /* @__PURE__ */ jsx37(
5042
5333
  SonnerToaster,
5043
5334
  {
5044
5335
  ref,
@@ -5068,9 +5359,9 @@ var Toaster = React31.forwardRef(
5068
5359
  Toaster.displayName = "Toaster";
5069
5360
 
5070
5361
  // src/components/switch.tsx
5071
- import * as React32 from "react";
5362
+ import * as React36 from "react";
5072
5363
  import * as SwitchPrimitives from "@radix-ui/react-switch";
5073
- import { jsx as jsx34, jsxs as jsxs18 } from "react/jsx-runtime";
5364
+ import { jsx as jsx38, jsxs as jsxs19 } from "react/jsx-runtime";
5074
5365
  var switchSizeOptions = ["default", "sm"];
5075
5366
  var switchRootSizeClasses = {
5076
5367
  default: "h-6 w-11",
@@ -5080,7 +5371,7 @@ var switchThumbSizeClasses = {
5080
5371
  default: "h-5 w-5 data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0",
5081
5372
  sm: "h-4 w-4 data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0"
5082
5373
  };
5083
- var Switch = React32.forwardRef(
5374
+ var Switch = React36.forwardRef(
5084
5375
  ({
5085
5376
  "aria-describedby": ariaDescribedBy,
5086
5377
  "aria-labelledby": ariaLabelledBy,
@@ -5095,16 +5386,16 @@ var Switch = React32.forwardRef(
5095
5386
  size,
5096
5387
  ...props
5097
5388
  }, ref) => {
5098
- const generatedId = React32.useId();
5389
+ const generatedId = React36.useId();
5099
5390
  const resolvedId = id ?? generatedId;
5100
5391
  const labelId = label ? `${resolvedId}-label` : void 0;
5101
5392
  const descriptionId = description ? `${resolvedId}-description` : void 0;
5102
5393
  const hasTextContent = label !== void 0 || description !== void 0;
5103
5394
  const resolvedSize = size ?? (hasTextContent ? "sm" : "default");
5104
- const alignClassName = description ? "items-start" : "items-center";
5395
+ const alignClassName2 = description ? "items-start" : "items-center";
5105
5396
  const resolvedAriaDescribedBy = [ariaDescribedBy, descriptionId].filter(Boolean).join(" ") || void 0;
5106
5397
  const resolvedAriaLabelledBy = ariaLabelledBy ?? labelId;
5107
- const switchControl = /* @__PURE__ */ jsx34(
5398
+ const switchControl = /* @__PURE__ */ jsx38(
5108
5399
  SwitchPrimitives.Root,
5109
5400
  {
5110
5401
  id: resolvedId,
@@ -5119,7 +5410,7 @@ var Switch = React32.forwardRef(
5119
5410
  "data-size": resolvedSize,
5120
5411
  ...props,
5121
5412
  ref,
5122
- children: /* @__PURE__ */ jsx34(
5413
+ children: /* @__PURE__ */ jsx38(
5123
5414
  SwitchPrimitives.Thumb,
5124
5415
  {
5125
5416
  className: cn(
@@ -5133,19 +5424,19 @@ var Switch = React32.forwardRef(
5133
5424
  if (!hasTextContent) {
5134
5425
  return switchControl;
5135
5426
  }
5136
- return /* @__PURE__ */ jsxs18(
5427
+ return /* @__PURE__ */ jsxs19(
5137
5428
  "div",
5138
5429
  {
5139
5430
  "data-slot": "switch-container",
5140
5431
  className: selectionControlContainerClasses({
5141
- alignClassName,
5432
+ alignClassName: alignClassName2,
5142
5433
  className: containerClassName,
5143
5434
  disabled
5144
5435
  }),
5145
5436
  children: [
5146
5437
  switchControl,
5147
- /* @__PURE__ */ jsxs18("span", { className: selectionControlContentBaseClasses, children: [
5148
- label ? /* @__PURE__ */ jsx34("label", { htmlFor: resolvedId, className: selectionControlLabelTextBaseClasses, children: /* @__PURE__ */ jsx34(
5438
+ /* @__PURE__ */ jsxs19("span", { className: selectionControlContentBaseClasses, children: [
5439
+ label ? /* @__PURE__ */ jsx38("label", { htmlFor: resolvedId, className: selectionControlLabelTextBaseClasses, children: /* @__PURE__ */ jsx38(
5149
5440
  "span",
5150
5441
  {
5151
5442
  id: labelId,
@@ -5160,7 +5451,7 @@ var Switch = React32.forwardRef(
5160
5451
  })
5161
5452
  }
5162
5453
  ) }) : null,
5163
- description ? /* @__PURE__ */ jsx34(
5454
+ description ? /* @__PURE__ */ jsx38(
5164
5455
  "span",
5165
5456
  {
5166
5457
  id: descriptionId,
@@ -5185,17 +5476,18 @@ Switch.displayName = SwitchPrimitives.Root.displayName;
5185
5476
 
5186
5477
  // src/components/table.tsx
5187
5478
  import { cva as cva8 } from "class-variance-authority";
5188
- import * as React33 from "react";
5189
- import { jsx as jsx35 } from "react/jsx-runtime";
5479
+ import * as React37 from "react";
5480
+ import { jsx as jsx39 } from "react/jsx-runtime";
5190
5481
  var tableCellVariantOptions = ["default", "primary", "muted"];
5191
5482
  var tableStatusToneOptions = [
5192
5483
  "active",
5193
5484
  "inactive",
5485
+ "info",
5194
5486
  "warning"
5195
5487
  ];
5196
5488
  var tableActionToneOptions = ["primary", "neutral", "danger"];
5197
5489
  var tableCellVariants = cva8(
5198
- "px-2 py-6 align-middle [font-family:var(--sofya-text-body-font-family)] text-[length:var(--sofya-text-body-font-size)] font-normal leading-[var(--sofya-text-body-line-height)] tracking-[var(--sofya-text-body-letter-spacing)]",
5490
+ "px-4 py-5 align-middle [font-family:var(--sofya-text-body-font-family)] text-[length:var(--sofya-text-body-font-size)] font-normal leading-[var(--sofya-text-body-line-height)] tracking-[var(--sofya-text-body-letter-spacing)]",
5199
5491
  {
5200
5492
  variants: {
5201
5493
  variant: {
@@ -5214,6 +5506,7 @@ var tableStatusBadgeVariants = cva8("normal-case", {
5214
5506
  tone: {
5215
5507
  active: "border-[color:var(--sofya-tone-success-border)] bg-[color:var(--sofya-tone-success-background)] text-[color:var(--sofya-tone-success-foreground)]",
5216
5508
  inactive: "border-[color:var(--sofya-tone-default-border)] bg-[color:var(--sofya-tone-default-background)] text-[color:var(--sofya-text-subtle)]",
5509
+ info: "border-transparent bg-primary/10 text-primary",
5217
5510
  warning: "border-[color:var(--sofya-tone-warning-border)] bg-[color:var(--sofya-tone-warning-background)] text-[color:var(--sofya-tone-warning-foreground)]"
5218
5511
  }
5219
5512
  },
@@ -5222,7 +5515,7 @@ var tableStatusBadgeVariants = cva8("normal-case", {
5222
5515
  }
5223
5516
  });
5224
5517
  var tableActionButtonVariants = cva8(
5225
- "text-[length:var(--sofya-text-body-font-size)] leading-[var(--sofya-text-body-line-height)] shadow-none motion-safe:active:scale-[0.97] focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-visible:ring-offset-0 disabled:opacity-40 [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
5518
+ "h-8 w-8 text-[length:var(--sofya-text-body-font-size)] leading-[var(--sofya-text-body-line-height)] shadow-none motion-safe:active:scale-[0.97] focus-visible:ring-[color:var(--sofya-focus-ring-soft)] focus-visible:ring-offset-0 disabled:opacity-40 [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
5226
5519
  {
5227
5520
  variants: {
5228
5521
  tone: {
@@ -5236,19 +5529,19 @@ var tableActionButtonVariants = cva8(
5236
5529
  }
5237
5530
  }
5238
5531
  );
5239
- var Table = React33.forwardRef(function Table2({ className, ...props }, ref) {
5240
- return /* @__PURE__ */ jsx35(
5532
+ var Table = React37.forwardRef(function Table2({ className, ...props }, ref) {
5533
+ return /* @__PURE__ */ jsx39(
5241
5534
  "div",
5242
5535
  {
5243
5536
  "data-slot": "table-container",
5244
5537
  className: "relative w-full overflow-x-auto",
5245
- children: /* @__PURE__ */ jsx35(
5538
+ children: /* @__PURE__ */ jsx39(
5246
5539
  "table",
5247
5540
  {
5248
5541
  "data-slot": "table",
5249
5542
  ref,
5250
5543
  className: cn(
5251
- "w-full min-w-[1040px] caption-bottom border-collapse bg-card",
5544
+ "w-full min-w-[1040px] caption-bottom border-separate border-spacing-0 bg-card",
5252
5545
  className
5253
5546
  ),
5254
5547
  ...props
@@ -5257,33 +5550,33 @@ var Table = React33.forwardRef(function Table2({ className, ...props }, ref) {
5257
5550
  }
5258
5551
  );
5259
5552
  });
5260
- var TableHeader = React33.forwardRef(function TableHeader2({ className, ...props }, ref) {
5261
- return /* @__PURE__ */ jsx35(
5553
+ var TableHeader = React37.forwardRef(function TableHeader2({ className, ...props }, ref) {
5554
+ return /* @__PURE__ */ jsx39(
5262
5555
  "thead",
5263
5556
  {
5264
5557
  "data-slot": "table-header",
5265
5558
  ref,
5266
5559
  className: cn(
5267
- "[&_tr]:border-b [&_tr]:border-[color:var(--sofya-border-strong)] [&_tr:hover]:bg-transparent",
5560
+ "[&_tr]:border-0 [&_tr:hover]:bg-transparent [&_th]:bg-[color:var(--sofya-tone-default-background)] [&_th:first-child]:rounded-tl-[var(--sofya-radius-md)] [&_th:last-child]:rounded-tr-[var(--sofya-radius-md)]",
5268
5561
  className
5269
5562
  ),
5270
5563
  ...props
5271
5564
  }
5272
5565
  );
5273
5566
  });
5274
- var TableBody = React33.forwardRef(function TableBody2({ className, ...props }, ref) {
5275
- return /* @__PURE__ */ jsx35(
5567
+ var TableBody = React37.forwardRef(function TableBody2({ className, ...props }, ref) {
5568
+ return /* @__PURE__ */ jsx39(
5276
5569
  "tbody",
5277
5570
  {
5278
5571
  "data-slot": "table-body",
5279
5572
  ref,
5280
- className: cn("[&_tr:last-child]:border-0", className),
5573
+ className: cn("[&_tr:last-child>td]:border-0", className),
5281
5574
  ...props
5282
5575
  }
5283
5576
  );
5284
5577
  });
5285
- var TableFooter = React33.forwardRef(function TableFooter2({ className, ...props }, ref) {
5286
- return /* @__PURE__ */ jsx35(
5578
+ var TableFooter = React37.forwardRef(function TableFooter2({ className, ...props }, ref) {
5579
+ return /* @__PURE__ */ jsx39(
5287
5580
  "tfoot",
5288
5581
  {
5289
5582
  "data-slot": "table-footer",
@@ -5296,28 +5589,28 @@ var TableFooter = React33.forwardRef(function TableFooter2({ className, ...props
5296
5589
  }
5297
5590
  );
5298
5591
  });
5299
- var TableRow = React33.forwardRef(function TableRow2({ className, ...props }, ref) {
5300
- return /* @__PURE__ */ jsx35(
5592
+ var TableRow = React37.forwardRef(function TableRow2({ className, ...props }, ref) {
5593
+ return /* @__PURE__ */ jsx39(
5301
5594
  "tr",
5302
5595
  {
5303
5596
  "data-slot": "table-row",
5304
5597
  ref,
5305
5598
  className: cn(
5306
- "border-b border-[color:var(--sofya-border-soft)] transition-colors duration-sofya ease-sofya hover:bg-[color:var(--sofya-tone-default-background)] data-[state=selected]:bg-[color:var(--sofya-tone-default-background)]",
5599
+ "border-b border-[color:var(--sofya-border-soft)] transition-colors duration-sofya ease-sofya hover:bg-[color:var(--sofya-tone-default-background)] data-[state=selected]:bg-[color:var(--sofya-tone-default-background)] [&>td]:border-b [&>td]:border-[color:var(--sofya-border-soft)]",
5307
5600
  className
5308
5601
  ),
5309
5602
  ...props
5310
5603
  }
5311
5604
  );
5312
5605
  });
5313
- var TableHead = React33.forwardRef(function TableHead2({ className, children, ...props }, ref) {
5314
- return /* @__PURE__ */ jsx35(
5606
+ var TableHead = React37.forwardRef(function TableHead2({ className, children, ...props }, ref) {
5607
+ return /* @__PURE__ */ jsx39(
5315
5608
  "th",
5316
5609
  {
5317
5610
  "data-slot": "table-head",
5318
5611
  ref,
5319
5612
  className: cn(
5320
- "whitespace-nowrap px-2 py-8 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.12em] text-[color:var(--sofya-text-default)] [&_svg]:h-[1em] [&_svg]:w-[1em] [&_svg]:shrink-0",
5613
+ "whitespace-nowrap px-4 py-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",
5321
5614
  className
5322
5615
  ),
5323
5616
  ...props,
@@ -5330,9 +5623,9 @@ var TableHead = React33.forwardRef(function TableHead2({ className, children, ..
5330
5623
  }
5331
5624
  );
5332
5625
  });
5333
- var TableCell = React33.forwardRef(
5626
+ var TableCell = React37.forwardRef(
5334
5627
  function TableCell2({ className, variant, truncate, children, ...props }, ref) {
5335
- return /* @__PURE__ */ jsx35(
5628
+ return /* @__PURE__ */ jsx39(
5336
5629
  "td",
5337
5630
  {
5338
5631
  "data-slot": "table-cell",
@@ -5356,8 +5649,8 @@ var TableCell = React33.forwardRef(
5356
5649
  );
5357
5650
  }
5358
5651
  );
5359
- var TableCaption = React33.forwardRef(function TableCaption2({ className, children, ...props }, ref) {
5360
- return /* @__PURE__ */ jsx35(
5652
+ var TableCaption = React37.forwardRef(function TableCaption2({ className, children, ...props }, ref) {
5653
+ return /* @__PURE__ */ jsx39(
5361
5654
  "caption",
5362
5655
  {
5363
5656
  "data-slot": "table-caption",
@@ -5376,13 +5669,53 @@ var TableCaption = React33.forwardRef(function TableCaption2({ className, childr
5376
5669
  }
5377
5670
  );
5378
5671
  });
5672
+ var TableCellTitle = React37.forwardRef(function TableCellTitle2({ className, children, ...props }, ref) {
5673
+ return /* @__PURE__ */ jsx39(
5674
+ "span",
5675
+ {
5676
+ "data-slot": "table-cell-title",
5677
+ ref,
5678
+ className: cn(
5679
+ "block font-medium text-[color:var(--sofya-text-default)]",
5680
+ className
5681
+ ),
5682
+ ...props,
5683
+ children: renderTextContent(children, {
5684
+ as: "span",
5685
+ className: "block text-inherit",
5686
+ size: "body",
5687
+ style: inheritedTypographyStyle
5688
+ })
5689
+ }
5690
+ );
5691
+ });
5692
+ var TableCellDescription = React37.forwardRef(function TableCellDescription2({ className, children, ...props }, ref) {
5693
+ return /* @__PURE__ */ jsx39(
5694
+ "span",
5695
+ {
5696
+ "data-slot": "table-cell-description",
5697
+ ref,
5698
+ className: cn(
5699
+ "mt-1 block text-[color:var(--sofya-text-subtle)]",
5700
+ className
5701
+ ),
5702
+ ...props,
5703
+ children: renderTextContent(children, {
5704
+ as: "span",
5705
+ className: "block text-inherit",
5706
+ size: "tiny",
5707
+ style: inheritedTypographyStyle
5708
+ })
5709
+ }
5710
+ );
5711
+ });
5379
5712
  function TableStatusBadge({
5380
5713
  className,
5381
5714
  tone,
5382
5715
  children,
5383
5716
  ...props
5384
5717
  }) {
5385
- return /* @__PURE__ */ jsx35(
5718
+ return /* @__PURE__ */ jsx39(
5386
5719
  Badge,
5387
5720
  {
5388
5721
  variant: "pill",
@@ -5397,8 +5730,8 @@ function TableStatusBadge({
5397
5730
  }
5398
5731
  );
5399
5732
  }
5400
- var TableActionButton = React33.forwardRef(function TableActionButton2({ className, tone, type = "button", children, ...props }, ref) {
5401
- return /* @__PURE__ */ jsx35(
5733
+ var TableActionButton = React37.forwardRef(function TableActionButton2({ className, tone, type = "button", children, ...props }, ref) {
5734
+ return /* @__PURE__ */ jsx39(
5402
5735
  Button,
5403
5736
  {
5404
5737
  ref,
@@ -5416,8 +5749,8 @@ var TableActionButton = React33.forwardRef(function TableActionButton2({ classNa
5416
5749
  }
5417
5750
  );
5418
5751
  });
5419
- var TableActions = React33.forwardRef(function TableActions2({ className, ...props }, ref) {
5420
- return /* @__PURE__ */ jsx35(
5752
+ var TableActions = React37.forwardRef(function TableActions2({ className, ...props }, ref) {
5753
+ return /* @__PURE__ */ jsx39(
5421
5754
  "div",
5422
5755
  {
5423
5756
  ref,
@@ -5434,14 +5767,16 @@ TableRow.displayName = "TableRow";
5434
5767
  TableHead.displayName = "TableHead";
5435
5768
  TableCell.displayName = "TableCell";
5436
5769
  TableCaption.displayName = "TableCaption";
5770
+ TableCellTitle.displayName = "TableCellTitle";
5771
+ TableCellDescription.displayName = "TableCellDescription";
5437
5772
  TableActionButton.displayName = "TableActionButton";
5438
5773
  TableActions.displayName = "TableActions";
5439
5774
 
5440
5775
  // src/components/tabs.tsx
5441
- import * as React34 from "react";
5776
+ import * as React38 from "react";
5442
5777
  import * as TabsPrimitive from "@radix-ui/react-tabs";
5443
5778
  import { motion as motion3 } from "motion/react";
5444
- import { jsx as jsx36, jsxs as jsxs19 } from "react/jsx-runtime";
5779
+ import { jsx as jsx40, jsxs as jsxs20 } from "react/jsx-runtime";
5445
5780
  function resolveDefaultValue(items, defaultValue) {
5446
5781
  if (defaultValue) {
5447
5782
  return defaultValue;
@@ -5465,13 +5800,13 @@ function Tabs({
5465
5800
  onChange: onValueChange,
5466
5801
  value
5467
5802
  });
5468
- const indicatorLayoutId = React34.useId();
5469
- React34.useEffect(() => {
5803
+ const indicatorLayoutId = React38.useId();
5804
+ React38.useEffect(() => {
5470
5805
  if (value === void 0) {
5471
5806
  setUncontrolledCurrentValue(resolvedDefaultValue);
5472
5807
  }
5473
5808
  }, [resolvedDefaultValue, setUncontrolledCurrentValue, value]);
5474
- return /* @__PURE__ */ jsxs19(
5809
+ return /* @__PURE__ */ jsxs20(
5475
5810
  TabsPrimitive.Root,
5476
5811
  {
5477
5812
  className: cn("w-full", className),
@@ -5479,7 +5814,7 @@ function Tabs({
5479
5814
  value: currentValue,
5480
5815
  ...props,
5481
5816
  children: [
5482
- /* @__PURE__ */ jsx36(
5817
+ /* @__PURE__ */ jsx40(
5483
5818
  TabsPrimitive.List,
5484
5819
  {
5485
5820
  "aria-label": "Subtelas navegaveis",
@@ -5490,7 +5825,7 @@ function Tabs({
5490
5825
  children: items.map((item) => {
5491
5826
  const isUnavailable = item.disabled || item.loading;
5492
5827
  const isActive = item.value === currentValue;
5493
- return /* @__PURE__ */ jsxs19(
5828
+ return /* @__PURE__ */ jsxs20(
5494
5829
  TabsPrimitive.Trigger,
5495
5830
  {
5496
5831
  value: item.value,
@@ -5502,7 +5837,7 @@ function Tabs({
5502
5837
  item.triggerClassName
5503
5838
  ),
5504
5839
  children: [
5505
- isActive ? /* @__PURE__ */ jsx36(
5840
+ isActive ? /* @__PURE__ */ jsx40(
5506
5841
  motion3.span,
5507
5842
  {
5508
5843
  "aria-hidden": "true",
@@ -5512,15 +5847,15 @@ function Tabs({
5512
5847
  transition: { duration: 0.25, ease: "easeInOut" }
5513
5848
  }
5514
5849
  ) : null,
5515
- /* @__PURE__ */ jsxs19("span", { className: "relative z-10 inline-flex items-center gap-2", children: [
5516
- item.loading ? /* @__PURE__ */ jsx36(
5850
+ /* @__PURE__ */ jsxs20("span", { className: "relative z-10 inline-flex items-center gap-2", children: [
5851
+ item.loading ? /* @__PURE__ */ jsx40(
5517
5852
  "span",
5518
5853
  {
5519
5854
  "aria-hidden": "true",
5520
5855
  className: "h-4 w-4 animate-spin rounded-full border-2 border-current border-r-transparent"
5521
5856
  }
5522
5857
  ) : null,
5523
- /* @__PURE__ */ jsx36("span", { children: renderTextContent(item.label, {
5858
+ /* @__PURE__ */ jsx40("span", { children: renderTextContent(item.label, {
5524
5859
  as: "span",
5525
5860
  className: "block text-inherit",
5526
5861
  size: "body"
@@ -5534,7 +5869,7 @@ function Tabs({
5534
5869
  }
5535
5870
  ),
5536
5871
  items.map(
5537
- (item) => item.content !== void 0 ? /* @__PURE__ */ jsx36(
5872
+ (item) => item.content !== void 0 ? /* @__PURE__ */ jsx40(
5538
5873
  TabsPrimitive.Content,
5539
5874
  {
5540
5875
  value: item.value,
@@ -5557,9 +5892,9 @@ function Tabs({
5557
5892
  Tabs.displayName = "Tabs";
5558
5893
 
5559
5894
  // src/components/textarea.tsx
5560
- import * as React35 from "react";
5561
- import { jsx as jsx37 } from "react/jsx-runtime";
5562
- var Textarea = React35.forwardRef(
5895
+ import * as React39 from "react";
5896
+ import { jsx as jsx41 } from "react/jsx-runtime";
5897
+ var Textarea = React39.forwardRef(
5563
5898
  ({
5564
5899
  className,
5565
5900
  containerClassName,
@@ -5569,10 +5904,10 @@ var Textarea = React35.forwardRef(
5569
5904
  rows = 5,
5570
5905
  ...props
5571
5906
  }, ref) => {
5572
- const generatedId = React35.useId();
5907
+ const generatedId = React39.useId();
5573
5908
  const resolvedId = id ?? generatedId;
5574
5909
  const ariaLabel = props["aria-label"] ?? (typeof label === "string" ? label : void 0);
5575
- const control = /* @__PURE__ */ jsx37(
5910
+ const control = /* @__PURE__ */ jsx41(
5576
5911
  "textarea",
5577
5912
  {
5578
5913
  className: cn(
@@ -5586,7 +5921,7 @@ var Textarea = React35.forwardRef(
5586
5921
  "aria-label": ariaLabel
5587
5922
  }
5588
5923
  );
5589
- return /* @__PURE__ */ jsx37(
5924
+ return /* @__PURE__ */ jsx41(
5590
5925
  FieldShell,
5591
5926
  {
5592
5927
  control,
@@ -5601,10 +5936,10 @@ var Textarea = React35.forwardRef(
5601
5936
  Textarea.displayName = "Textarea";
5602
5937
 
5603
5938
  // src/components/toggle.tsx
5604
- import * as React36 from "react";
5939
+ import * as React40 from "react";
5605
5940
  import * as SwitchPrimitives2 from "@radix-ui/react-switch";
5606
- import { jsx as jsx38, jsxs as jsxs20 } from "react/jsx-runtime";
5607
- var Toggle = React36.forwardRef(function Toggle2({
5941
+ import { jsx as jsx42, jsxs as jsxs21 } from "react/jsx-runtime";
5942
+ var Toggle = React40.forwardRef(function Toggle2({
5608
5943
  "aria-describedby": ariaDescribedBy,
5609
5944
  "aria-labelledby": ariaLabelledBy,
5610
5945
  className,
@@ -5617,15 +5952,15 @@ var Toggle = React36.forwardRef(function Toggle2({
5617
5952
  labelClassName,
5618
5953
  ...props
5619
5954
  }, ref) {
5620
- const generatedId = React36.useId();
5955
+ const generatedId = React40.useId();
5621
5956
  const resolvedId = id ?? generatedId;
5622
5957
  const labelId = label ? `${resolvedId}-label` : void 0;
5623
5958
  const descriptionId = description ? `${resolvedId}-description` : void 0;
5624
5959
  const hasTextContent = label !== void 0 || description !== void 0;
5625
- const alignClassName = description ? "items-start" : "items-center";
5960
+ const alignClassName2 = description ? "items-start" : "items-center";
5626
5961
  const resolvedAriaDescribedBy = [ariaDescribedBy, descriptionId].filter(Boolean).join(" ") || void 0;
5627
5962
  const resolvedAriaLabelledBy = ariaLabelledBy ?? labelId;
5628
- const toggleControl = /* @__PURE__ */ jsx38(
5963
+ const toggleControl = /* @__PURE__ */ jsx42(
5629
5964
  SwitchPrimitives2.Root,
5630
5965
  {
5631
5966
  id: resolvedId,
@@ -5639,7 +5974,7 @@ var Toggle = React36.forwardRef(function Toggle2({
5639
5974
  className
5640
5975
  ),
5641
5976
  ...props,
5642
- children: /* @__PURE__ */ jsx38(
5977
+ children: /* @__PURE__ */ jsx42(
5643
5978
  SwitchPrimitives2.Thumb,
5644
5979
  {
5645
5980
  "data-slot": "toggle-thumb",
@@ -5651,19 +5986,19 @@ var Toggle = React36.forwardRef(function Toggle2({
5651
5986
  if (!hasTextContent) {
5652
5987
  return toggleControl;
5653
5988
  }
5654
- return /* @__PURE__ */ jsxs20(
5989
+ return /* @__PURE__ */ jsxs21(
5655
5990
  "div",
5656
5991
  {
5657
5992
  "data-slot": "toggle-container",
5658
5993
  className: selectionControlContainerClasses({
5659
- alignClassName,
5994
+ alignClassName: alignClassName2,
5660
5995
  className: containerClassName,
5661
5996
  disabled
5662
5997
  }),
5663
5998
  children: [
5664
5999
  toggleControl,
5665
- /* @__PURE__ */ jsxs20("span", { className: selectionControlContentBaseClasses, children: [
5666
- label ? /* @__PURE__ */ jsx38("label", { htmlFor: resolvedId, className: selectionControlLabelTextBaseClasses, children: /* @__PURE__ */ jsx38(
6000
+ /* @__PURE__ */ jsxs21("span", { className: selectionControlContentBaseClasses, children: [
6001
+ label ? /* @__PURE__ */ jsx42("label", { htmlFor: resolvedId, className: selectionControlLabelTextBaseClasses, children: /* @__PURE__ */ jsx42(
5667
6002
  "span",
5668
6003
  {
5669
6004
  id: labelId,
@@ -5675,7 +6010,7 @@ var Toggle = React36.forwardRef(function Toggle2({
5675
6010
  })
5676
6011
  }
5677
6012
  ) }) : null,
5678
- description ? /* @__PURE__ */ jsx38(
6013
+ description ? /* @__PURE__ */ jsx42(
5679
6014
  "span",
5680
6015
  {
5681
6016
  id: descriptionId,
@@ -5698,14 +6033,14 @@ var Toggle = React36.forwardRef(function Toggle2({
5698
6033
  Toggle.displayName = "Toggle";
5699
6034
 
5700
6035
  // src/components/tooltip.tsx
5701
- import * as React37 from "react";
6036
+ import * as React41 from "react";
5702
6037
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
5703
- import { jsx as jsx39 } from "react/jsx-runtime";
6038
+ import { jsx as jsx43 } from "react/jsx-runtime";
5704
6039
  var TooltipProvider = TooltipPrimitive.Provider;
5705
6040
  var Tooltip = TooltipPrimitive.Root;
5706
6041
  var TooltipTrigger = TooltipPrimitive.Trigger;
5707
- var TooltipContent = React37.forwardRef(function TooltipContent2({ className, sideOffset = 8, ...props }, ref) {
5708
- return /* @__PURE__ */ jsx39(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx39(
6042
+ var TooltipContent = React41.forwardRef(function TooltipContent2({ className, sideOffset = 8, ...props }, ref) {
6043
+ return /* @__PURE__ */ jsx43(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx43(
5709
6044
  TooltipPrimitive.Content,
5710
6045
  {
5711
6046
  ref,
@@ -5729,13 +6064,13 @@ var TooltipContent = React37.forwardRef(function TooltipContent2({ className, si
5729
6064
  TooltipContent.displayName = TooltipPrimitive.Content.displayName;
5730
6065
 
5731
6066
  // src/theme/provider.tsx
5732
- import * as React38 from "react";
6067
+ import * as React42 from "react";
5733
6068
  import {
5734
6069
  createWhitelabelTheme,
5735
6070
  defaultTheme,
5736
6071
  themeToCssVariables
5737
6072
  } from "@sofya-ds/tokens";
5738
- import { jsx as jsx40 } from "react/jsx-runtime";
6073
+ import { jsx as jsx44 } from "react/jsx-runtime";
5739
6074
  var SOFYA_FONT_LINKS = [
5740
6075
  {
5741
6076
  id: "preconnect-googleapis",
@@ -5755,7 +6090,7 @@ var SOFYA_FONT_LINKS = [
5755
6090
  }
5756
6091
  ];
5757
6092
  function useSofyaFontLinks() {
5758
- React38.useEffect(() => {
6093
+ React42.useEffect(() => {
5759
6094
  if (typeof document === "undefined") {
5760
6095
  return;
5761
6096
  }
@@ -5788,7 +6123,7 @@ function SofyaProvider({
5788
6123
  useSofyaFontLinks();
5789
6124
  const theme = createWhitelabelTheme(overrides ?? {}, preset);
5790
6125
  const cssVariables = themeToCssVariables(theme);
5791
- return /* @__PURE__ */ jsx40(
6126
+ return /* @__PURE__ */ jsx44(
5792
6127
  "div",
5793
6128
  {
5794
6129
  "data-sofya-theme": theme.name,
@@ -5813,9 +6148,13 @@ import {
5813
6148
  resolveTheme,
5814
6149
  sofyaBrandPalette,
5815
6150
  sofyaColorPalette,
6151
+ sofyaGapNames,
6152
+ sofyaMeasureNames,
6153
+ sofyaRhythmNames,
5816
6154
  sofyaSemanticColorHex,
5817
- sofyaSurfaceNames,
5818
- sofyaTextStyleNames,
6155
+ sofyaSpaceNames,
6156
+ sofyaSurfaceNames as sofyaSurfaceNames2,
6157
+ sofyaTextStyleNames as sofyaTextStyleNames2,
5819
6158
  themePresetNames,
5820
6159
  themePresets,
5821
6160
  themeToCssVariables as themeToCssVariables2
@@ -5838,6 +6177,8 @@ export {
5838
6177
  CardHeader,
5839
6178
  CardTitle,
5840
6179
  Checkbox,
6180
+ Cluster,
6181
+ Container,
5841
6182
  Dialog,
5842
6183
  DialogBody,
5843
6184
  DialogCancel,
@@ -5850,6 +6191,7 @@ export {
5850
6191
  DialogPortal,
5851
6192
  DialogTitle,
5852
6193
  DialogTrigger,
6194
+ DocumentCard,
5853
6195
  Dropdown,
5854
6196
  DropdownSearch,
5855
6197
  Empty,
@@ -5859,6 +6201,7 @@ export {
5859
6201
  EmptyMedia,
5860
6202
  EmptyTitle,
5861
6203
  Icon,
6204
+ Inline,
5862
6205
  Input,
5863
6206
  InputOTP,
5864
6207
  InputOTPGroup,
@@ -5883,6 +6226,11 @@ export {
5883
6226
  PopoverTitle,
5884
6227
  PopoverTrigger,
5885
6228
  Progress,
6229
+ ProseDialogBody,
6230
+ ProseDialogContent,
6231
+ ProseDialogDescription,
6232
+ ProseDialogHeader,
6233
+ ProseDialogTitle,
5886
6234
  REGEXP_ONLY_DIGITS,
5887
6235
  RadioGroup3 as RadioGroup,
5888
6236
  RadioGroupItem,
@@ -5891,6 +6239,7 @@ export {
5891
6239
  RadioGroupOptionDescription,
5892
6240
  RadioGroupOptionIndicator,
5893
6241
  RadioGroupOptionLabel,
6242
+ RightRailAction,
5894
6243
  ScrollArea,
5895
6244
  ScrollAreaCorner,
5896
6245
  ScrollAreaScrollbar,
@@ -5910,6 +6259,7 @@ export {
5910
6259
  Slider,
5911
6260
  SofyaProvider,
5912
6261
  Spinner,
6262
+ Stack,
5913
6263
  Surface,
5914
6264
  Switch,
5915
6265
  Table,
@@ -5918,6 +6268,8 @@ export {
5918
6268
  TableBody,
5919
6269
  TableCaption,
5920
6270
  TableCell,
6271
+ TableCellDescription,
6272
+ TableCellTitle,
5921
6273
  TableFooter,
5922
6274
  TableHead,
5923
6275
  TableHeader,
@@ -5980,10 +6332,15 @@ export {
5980
6332
  selectSizeOptions,
5981
6333
  sofyaBrandPalette,
5982
6334
  sofyaColorPalette,
6335
+ sofyaGapNames,
6336
+ sofyaMeasureNames,
6337
+ sofyaRhythmNames,
5983
6338
  sofyaSemanticColorHex,
5984
- sofyaSurfaceNames,
5985
- sofyaTextStyleNames,
6339
+ sofyaSpaceNames,
6340
+ sofyaSurfaceNames2 as sofyaSurfaceNames,
6341
+ sofyaTextStyleNames2 as sofyaTextStyleNames,
5986
6342
  spinnerSizeOptions,
6343
+ surfaceVariantOptions,
5987
6344
  switchSizeOptions,
5988
6345
  tableActionToneOptions,
5989
6346
  tableCellVariantOptions,