@pactor-app/ui 1.8.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -71,7 +71,7 @@ import {
71
71
  createComponentRegistry,
72
72
  registerBuiltinComponents,
73
73
  useFormContext
74
- } from "./chunk-7YOIAVV6.js";
74
+ } from "./chunk-M4PHRT2N.js";
75
75
  import {
76
76
  InteractionProvider,
77
77
  OVERLAY_CANCEL_PAYLOAD,
@@ -79,7 +79,7 @@ import {
79
79
  OverlayManager,
80
80
  createUiBridge,
81
81
  registerInteractionActions
82
- } from "./chunk-7KC6DMKH.js";
82
+ } from "./chunk-VRAVO5LE.js";
83
83
  import {
84
84
  AdminLayout,
85
85
  BlankLayout,
@@ -101,8 +101,8 @@ import {
101
101
  normalizeIconName,
102
102
  useSidebarDrawer
103
103
  } from "./chunk-PECP7DJB.js";
104
- import "./chunk-XUIXZJDQ.js";
105
- import "./chunk-F42SGQNW.js";
104
+ import "./chunk-VT5XP4U4.js";
105
+ import "./chunk-XUHJ5YSG.js";
106
106
  import "./chunk-VM4FESQB.js";
107
107
  import "./chunk-WKJUCGV4.js";
108
108
  export {
@@ -310,7 +310,7 @@ function DialogOverlay({
310
310
  {
311
311
  "data-slot": "dialog-overlay",
312
312
  className: cn(
313
- "fixed inset-0 z-50 bg-(--overlay-background) data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
313
+ "fixed inset-0 z-50 bg-(--overlay-background) data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 data-closed:fill-mode-forwards",
314
314
  className
315
315
  ),
316
316
  ...props
@@ -330,7 +330,7 @@ function DialogContent({
330
330
  {
331
331
  "data-slot": "dialog-content",
332
332
  className: cn(
333
- "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border border-border bg-popover p-6 shadow-lg shadow-(color:--shadow-color) duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 sm:max-w-lg",
333
+ "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border border-border bg-popover p-6 shadow-lg shadow-(color:--shadow-color) duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-closed:fill-mode-forwards sm:max-w-lg",
334
334
  className
335
335
  ),
336
336
  ...props,
@@ -422,6 +422,7 @@ function InteractionProvider({
422
422
  children
423
423
  }) {
424
424
  const [confirmState, setConfirmState] = (0, import_react.useState)(null);
425
+ const [confirmOpen, setConfirmOpen] = (0, import_react.useState)(false);
425
426
  const [toasts, setToasts] = (0, import_react.useState)([]);
426
427
  const { t } = (0, import_runtime2.useI18n)();
427
428
  const { modal, message } = (0, import_react.useMemo)(() => {
@@ -435,6 +436,7 @@ function InteractionProvider({
435
436
  const modalImpl = {
436
437
  confirm(config) {
437
438
  setConfirmState({ ...config });
439
+ setConfirmOpen(true);
438
440
  }
439
441
  };
440
442
  const messageImpl = {
@@ -455,12 +457,12 @@ function InteractionProvider({
455
457
  }, [bridge, modal, message]);
456
458
  const handleOk = () => {
457
459
  const state = confirmState;
458
- setConfirmState(null);
460
+ setConfirmOpen(false);
459
461
  state?.onOk?.();
460
462
  };
461
463
  const handleCancel = () => {
462
464
  const state = confirmState;
463
- setConfirmState(null);
465
+ setConfirmOpen(false);
464
466
  state?.onCancel?.();
465
467
  };
466
468
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
@@ -470,12 +472,17 @@ function InteractionProvider({
470
472
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
471
473
  Dialog,
472
474
  {
473
- open: confirmState !== null,
475
+ open: confirmOpen,
474
476
  onOpenChange: (open) => {
475
477
  if (!open) {
476
478
  handleCancel();
477
479
  }
478
480
  },
481
+ onOpenChangeComplete: (open) => {
482
+ if (!open) {
483
+ setConfirmState(null);
484
+ }
485
+ },
479
486
  children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(DialogContent, { "data-slot": "confirm-dialog", className: "sm:max-w-sm", children: [
480
487
  /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(DialogHeader, { children: [
481
488
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(DialogTitle, { children: confirmState?.title ?? "" }),
@@ -142,7 +142,9 @@ interface InteractionProviderProps {
142
142
  * InteractionProvider:mount 时向 UiBridge 注入自绘实现:
143
143
  *
144
144
  * - `modal.confirm({ title, content, onOk, onCancel })`:vendored shadcn
145
- * Dialog 渲染确认框,确定/取消回调后关闭(先关闭再回调);
145
+ * Dialog 渲染确认框,确定/取消时先关闭再回调(与 antd Modal.confirm
146
+ * 时序一致);内容状态与 open 标志分离,待关闭动画结束才清空,
147
+ * 避免退出动画期间渲染空内容导致闪烁;
146
148
  * - `message.{success,error,info,warning}`:toast 栈(容器固定右上角,
147
149
  * 自动约 3s 消失,类型色条读语义令牌)。
148
150
  *
@@ -142,7 +142,9 @@ interface InteractionProviderProps {
142
142
  * InteractionProvider:mount 时向 UiBridge 注入自绘实现:
143
143
  *
144
144
  * - `modal.confirm({ title, content, onOk, onCancel })`:vendored shadcn
145
- * Dialog 渲染确认框,确定/取消回调后关闭(先关闭再回调);
145
+ * Dialog 渲染确认框,确定/取消时先关闭再回调(与 antd Modal.confirm
146
+ * 时序一致);内容状态与 open 标志分离,待关闭动画结束才清空,
147
+ * 避免退出动画期间渲染空内容导致闪烁;
146
148
  * - `message.{success,error,info,warning}`:toast 栈(容器固定右上角,
147
149
  * 自动约 3s 消失,类型色条读语义令牌)。
148
150
  *
@@ -5,8 +5,8 @@ import {
5
5
  OverlayManager,
6
6
  createUiBridge,
7
7
  registerInteractionActions
8
- } from "../chunk-7KC6DMKH.js";
9
- import "../chunk-F42SGQNW.js";
8
+ } from "../chunk-VRAVO5LE.js";
9
+ import "../chunk-XUHJ5YSG.js";
10
10
  import "../chunk-WKJUCGV4.js";
11
11
  export {
12
12
  InteractionProvider,
package/dist/ui/index.cjs CHANGED
@@ -2775,7 +2775,7 @@ function DialogOverlay({
2775
2775
  {
2776
2776
  "data-slot": "dialog-overlay",
2777
2777
  className: cn(
2778
- "fixed inset-0 z-50 bg-(--overlay-background) data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
2778
+ "fixed inset-0 z-50 bg-(--overlay-background) data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 data-closed:fill-mode-forwards",
2779
2779
  className
2780
2780
  ),
2781
2781
  ...props
@@ -2795,7 +2795,7 @@ function DialogContent({
2795
2795
  {
2796
2796
  "data-slot": "dialog-content",
2797
2797
  className: cn(
2798
- "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border border-border bg-popover p-6 shadow-lg shadow-(color:--shadow-color) duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 sm:max-w-lg",
2798
+ "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border border-border bg-popover p-6 shadow-lg shadow-(color:--shadow-color) duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-closed:fill-mode-forwards sm:max-w-lg",
2799
2799
  className
2800
2800
  ),
2801
2801
  ...props,
@@ -4554,6 +4554,7 @@ function TableCaption({
4554
4554
 
4555
4555
  // src/ui/tabs.tsx
4556
4556
  var import_tabs = require("@base-ui/react/tabs");
4557
+ var import_class_variance_authority9 = require("class-variance-authority");
4557
4558
  var import_jsx_runtime53 = require("react/jsx-runtime");
4558
4559
  function Tabs({
4559
4560
  className,
@@ -4568,18 +4569,31 @@ function Tabs({
4568
4569
  }
4569
4570
  );
4570
4571
  }
4572
+ var tabsListVariants = (0, import_class_variance_authority9.cva)(
4573
+ "group/tabs-list inline-flex w-fit items-center justify-center text-muted-foreground",
4574
+ {
4575
+ variants: {
4576
+ variant: {
4577
+ default: "h-9 rounded-lg bg-muted p-[3px]",
4578
+ line: "h-auto gap-1 rounded-none border-b border-border bg-transparent p-0"
4579
+ }
4580
+ },
4581
+ defaultVariants: {
4582
+ variant: "default"
4583
+ }
4584
+ }
4585
+ );
4571
4586
  function TabsList({
4572
4587
  className,
4588
+ variant,
4573
4589
  ...props
4574
4590
  }) {
4575
4591
  return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
4576
4592
  import_tabs.Tabs.List,
4577
4593
  {
4578
4594
  "data-slot": "tabs-list",
4579
- className: cn(
4580
- "inline-flex h-9 w-fit items-center justify-center rounded-lg bg-muted p-[3px] text-muted-foreground",
4581
- className
4582
- ),
4595
+ "data-variant": variant ?? "default",
4596
+ className: cn(tabsListVariants({ variant }), className),
4583
4597
  ...props
4584
4598
  }
4585
4599
  );
@@ -4593,7 +4607,12 @@ function TabsTrigger({
4593
4607
  {
4594
4608
  "data-slot": "tabs-trigger",
4595
4609
  className: cn(
4596
- "inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground transition-colors focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-active:border-border data-active:bg-card data-active:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
4610
+ "inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground transition-colors focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
4611
+ // default 变体:激活态胶囊(边框 + 卡片底 + 阴影)
4612
+ "group-data-[variant=default]/tabs-list:data-active:border-border group-data-[variant=default]/tabs-list:data-active:bg-card group-data-[variant=default]/tabs-list:data-active:shadow-sm",
4613
+ // line 变体:下划线指示——弱化未激活文字,激活态底部 2px 主色线
4614
+ //(叠在 List 的底边轨道上),无底色/圆角/阴影
4615
+ "group-data-[variant=line]/tabs-list:-mb-px group-data-[variant=line]/tabs-list:h-9 group-data-[variant=line]/tabs-list:rounded-none group-data-[variant=line]/tabs-list:border-x-0 group-data-[variant=line]/tabs-list:border-t-0 group-data-[variant=line]/tabs-list:border-b-2 group-data-[variant=line]/tabs-list:py-1.5 group-data-[variant=line]/tabs-list:text-muted-foreground group-data-[variant=line]/tabs-list:data-active:border-b-primary group-data-[variant=line]/tabs-list:data-active:text-foreground",
4597
4616
  className
4598
4617
  ),
4599
4618
  ...props
@@ -4635,9 +4654,9 @@ function Textarea({
4635
4654
 
4636
4655
  // src/ui/toggle.tsx
4637
4656
  var import_toggle = require("@base-ui/react/toggle");
4638
- var import_class_variance_authority9 = require("class-variance-authority");
4657
+ var import_class_variance_authority10 = require("class-variance-authority");
4639
4658
  var import_jsx_runtime55 = require("react/jsx-runtime");
4640
- var toggleVariants = (0, import_class_variance_authority9.cva)(
4659
+ var toggleVariants = (0, import_class_variance_authority10.cva)(
4641
4660
  "inline-flex cursor-pointer items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-colors outline-none hover:bg-muted hover:text-muted-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 data-pressed:bg-accent data-pressed:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
4642
4661
  {
4643
4662
  variants: {
@@ -4733,9 +4752,9 @@ function ToggleGroupItem({
4733
4752
  }
4734
4753
 
4735
4754
  // src/ui/typography.tsx
4736
- var import_class_variance_authority10 = require("class-variance-authority");
4755
+ var import_class_variance_authority11 = require("class-variance-authority");
4737
4756
  var import_jsx_runtime57 = require("react/jsx-runtime");
4738
- var typographyVariants = (0, import_class_variance_authority10.cva)("", {
4757
+ var typographyVariants = (0, import_class_variance_authority11.cva)("", {
4739
4758
  variants: {
4740
4759
  variant: {
4741
4760
  h1: "scroll-m-20 text-4xl font-extrabold tracking-tight text-balance",
@@ -72,7 +72,7 @@ declare function AlertDescription({ className, ...props }: React.ComponentProps<
72
72
  */
73
73
  declare const buttonVariants: (props?: ({
74
74
  variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
75
- size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
75
+ size?: "default" | "sm" | "lg" | "icon" | "xs" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
76
76
  } & class_variance_authority_types.ClassProp) | undefined) => string;
77
77
  declare function Button({ className, variant, size, asChild, children, ...props }: React.ComponentProps<'button'> & VariantProps<typeof buttonVariants> & {
78
78
  asChild?: boolean;
@@ -658,9 +658,14 @@ declare function TableCaption({ className, ...props }: React.ComponentProps<'cap
658
658
  * 官方源码:https://ui.shadcn.com/r/styles/base-nova/tabs.json
659
659
  * Root/List/Tab/Panel 对应原 Radix Root/List/Trigger/Content;激活态属性
660
660
  * 由 `data-[state=active]` 换成官方 `data-active` 自定义变体。
661
+ * List 支持 `variant`(default 胶囊 / line 下划线);激活态装饰按
662
+ * `group-data-[variant=*]/tabs-list` 分别限定,两种变体互不污染。
661
663
  */
662
664
  declare function Tabs({ className, ...props }: Tabs$1.Root.Props): React.JSX.Element;
663
- declare function TabsList({ className, ...props }: Tabs$1.List.Props): React.JSX.Element;
665
+ declare const tabsListVariants: (props?: ({
666
+ variant?: "line" | "default" | null | undefined;
667
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
668
+ declare function TabsList({ className, variant, ...props }: Tabs$1.List.Props & VariantProps<typeof tabsListVariants>): React.JSX.Element;
664
669
  declare function TabsTrigger({ className, ...props }: Tabs$1.Tab.Props): React.JSX.Element;
665
670
  declare function TabsContent({ className, ...props }: Tabs$1.Panel.Props): React.JSX.Element;
666
671
 
@@ -72,7 +72,7 @@ declare function AlertDescription({ className, ...props }: React.ComponentProps<
72
72
  */
73
73
  declare const buttonVariants: (props?: ({
74
74
  variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
75
- size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
75
+ size?: "default" | "sm" | "lg" | "icon" | "xs" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
76
76
  } & class_variance_authority_types.ClassProp) | undefined) => string;
77
77
  declare function Button({ className, variant, size, asChild, children, ...props }: React.ComponentProps<'button'> & VariantProps<typeof buttonVariants> & {
78
78
  asChild?: boolean;
@@ -658,9 +658,14 @@ declare function TableCaption({ className, ...props }: React.ComponentProps<'cap
658
658
  * 官方源码:https://ui.shadcn.com/r/styles/base-nova/tabs.json
659
659
  * Root/List/Tab/Panel 对应原 Radix Root/List/Trigger/Content;激活态属性
660
660
  * 由 `data-[state=active]` 换成官方 `data-active` 自定义变体。
661
+ * List 支持 `variant`(default 胶囊 / line 下划线);激活态装饰按
662
+ * `group-data-[variant=*]/tabs-list` 分别限定,两种变体互不污染。
661
663
  */
662
664
  declare function Tabs({ className, ...props }: Tabs$1.Root.Props): React.JSX.Element;
663
- declare function TabsList({ className, ...props }: Tabs$1.List.Props): React.JSX.Element;
665
+ declare const tabsListVariants: (props?: ({
666
+ variant?: "line" | "default" | null | undefined;
667
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
668
+ declare function TabsList({ className, variant, ...props }: Tabs$1.List.Props & VariantProps<typeof tabsListVariants>): React.JSX.Element;
664
669
  declare function TabsTrigger({ className, ...props }: Tabs$1.Tab.Props): React.JSX.Element;
665
670
  declare function TabsContent({ className, ...props }: Tabs$1.Panel.Props): React.JSX.Element;
666
671
 
package/dist/ui/index.js CHANGED
@@ -160,7 +160,7 @@ import {
160
160
  toggleVariants,
161
161
  typographyVariants,
162
162
  useCarousel
163
- } from "../chunk-XUIXZJDQ.js";
163
+ } from "../chunk-VT5XP4U4.js";
164
164
  import {
165
165
  Dialog,
166
166
  DialogClose,
@@ -182,7 +182,7 @@ import {
182
182
  DrawerPortal,
183
183
  DrawerTitle,
184
184
  DrawerTrigger
185
- } from "../chunk-F42SGQNW.js";
185
+ } from "../chunk-XUHJ5YSG.js";
186
186
  import {
187
187
  Accordion,
188
188
  AccordionContent,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pactor-app/ui",
3
- "version": "1.8.0",
3
+ "version": "1.10.0",
4
4
  "description": "Pactor UI kit (shadcn): the single built-in UI kit — vendored shadcn/ui components (Base UI primitives + cva + tailwind-merge + lucide-react), props contracts, interaction core (OverlayManager / UiBridge) and layouts, with build-time Tailwind v4 prebuilt styles.css (zero consumer-side Tailwind config)",
5
5
  "keywords": [
6
6
  "pactor",
@@ -105,10 +105,10 @@
105
105
  "recharts": "^3.10.1",
106
106
  "tailwind-merge": "^3.6.0",
107
107
  "vaul": "^1.1.2",
108
- "@pactor-app/core": "1.8.0",
109
- "@pactor-app/runtime": "1.8.0",
110
- "@pactor-app/permission": "1.8.0",
111
- "@pactor-app/router": "1.8.0"
108
+ "@pactor-app/core": "1.10.0",
109
+ "@pactor-app/permission": "1.10.0",
110
+ "@pactor-app/router": "1.10.0",
111
+ "@pactor-app/runtime": "1.10.0"
112
112
  },
113
113
  "peerDependencies": {
114
114
  "react": ">=18",
package/styles.css CHANGED
@@ -967,9 +967,15 @@
967
967
  margin-block-start: calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));
968
968
  margin-block-end: calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)));
969
969
  }
970
+ .gap-x-6 {
971
+ column-gap: calc(var(--spacing) * 6);
972
+ }
970
973
  .gap-y-0\.5 {
971
974
  row-gap: calc(var(--spacing) * 0.5);
972
975
  }
976
+ .gap-y-2 {
977
+ row-gap: calc(var(--spacing) * 2);
978
+ }
973
979
  .self-end {
974
980
  align-self: flex-end;
975
981
  }
@@ -1882,6 +1888,33 @@
1882
1888
  --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
1883
1889
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1884
1890
  }
1891
+ .group-data-\[variant\=line\]\/tabs-list\:-mb-px:is(:where(.group\/tabs-list)[data-variant="line"] *) {
1892
+ margin-bottom: -1px;
1893
+ }
1894
+ .group-data-\[variant\=line\]\/tabs-list\:h-9:is(:where(.group\/tabs-list)[data-variant="line"] *) {
1895
+ height: calc(var(--spacing) * 9);
1896
+ }
1897
+ .group-data-\[variant\=line\]\/tabs-list\:rounded-none:is(:where(.group\/tabs-list)[data-variant="line"] *) {
1898
+ border-radius: 0;
1899
+ }
1900
+ .group-data-\[variant\=line\]\/tabs-list\:border-x-0:is(:where(.group\/tabs-list)[data-variant="line"] *) {
1901
+ border-inline-style: var(--tw-border-style);
1902
+ border-inline-width: 0px;
1903
+ }
1904
+ .group-data-\[variant\=line\]\/tabs-list\:border-t-0:is(:where(.group\/tabs-list)[data-variant="line"] *) {
1905
+ border-top-style: var(--tw-border-style);
1906
+ border-top-width: 0px;
1907
+ }
1908
+ .group-data-\[variant\=line\]\/tabs-list\:border-b-2:is(:where(.group\/tabs-list)[data-variant="line"] *) {
1909
+ border-bottom-style: var(--tw-border-style);
1910
+ border-bottom-width: 2px;
1911
+ }
1912
+ .group-data-\[variant\=line\]\/tabs-list\:py-1\.5:is(:where(.group\/tabs-list)[data-variant="line"] *) {
1913
+ padding-block: calc(var(--spacing) * 1.5);
1914
+ }
1915
+ .group-data-\[variant\=line\]\/tabs-list\:text-muted-foreground:is(:where(.group\/tabs-list)[data-variant="line"] *) {
1916
+ color: var(--muted-foreground);
1917
+ }
1885
1918
  .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:block:is(:where(.group\/drawer-content)[data-vaul-drawer-direction="bottom"] *) {
1886
1919
  display: block;
1887
1920
  }
@@ -2728,6 +2761,10 @@
2728
2761
  --tw-exit-opacity: calc(0/100);
2729
2762
  --tw-exit-opacity: 0;
2730
2763
  }
2764
+ .data-closed\:fill-mode-forwards:where([data-closed]:not([data-closed='false'])) {
2765
+ animation-fill-mode: forwards;
2766
+ --tw-animation-fill-mode: forwards;
2767
+ }
2731
2768
  .data-closed\:zoom-out-95:where([data-closed]:not([data-closed='false'])) {
2732
2769
  --tw-exit-scale: calc(95*1%);
2733
2770
  --tw-exit-scale: .95;
@@ -2744,25 +2781,31 @@
2744
2781
  .data-closed\:slide-out-to-top:where([data-closed]:not([data-closed='false'])) {
2745
2782
  --tw-exit-translate-y: -100%;
2746
2783
  }
2747
- .data-active\:border-border:where([data-active]:not([data-active='false'])) {
2748
- border-color: var(--border);
2749
- }
2750
2784
  .data-active\:bg-\(--menu-active-background\)\/50:where([data-active]:not([data-active='false'])) {
2751
2785
  background-color: var(--menu-active-background);
2752
2786
  @supports (color: color-mix(in lab, red, red)) {
2753
2787
  background-color: color-mix(in oklab, var(--menu-active-background) 50%, transparent);
2754
2788
  }
2755
2789
  }
2756
- .data-active\:bg-card:where([data-active]:not([data-active='false'])) {
2757
- background-color: var(--card);
2758
- }
2759
2790
  .data-active\:text-\(--menu-active-foreground\):where([data-active]:not([data-active='false'])) {
2760
2791
  color: var(--menu-active-foreground);
2761
2792
  }
2762
- .data-active\:shadow-sm:where([data-active]:not([data-active='false'])) {
2793
+ .group-data-\[variant\=default\]\/tabs-list\:data-active\:border-border:is(:where(.group\/tabs-list)[data-variant="default"] *):where([data-active]:not([data-active='false'])) {
2794
+ border-color: var(--border);
2795
+ }
2796
+ .group-data-\[variant\=default\]\/tabs-list\:data-active\:bg-card:is(:where(.group\/tabs-list)[data-variant="default"] *):where([data-active]:not([data-active='false'])) {
2797
+ background-color: var(--card);
2798
+ }
2799
+ .group-data-\[variant\=default\]\/tabs-list\:data-active\:shadow-sm:is(:where(.group\/tabs-list)[data-variant="default"] *):where([data-active]:not([data-active='false'])) {
2763
2800
  --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
2764
2801
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2765
2802
  }
2803
+ .group-data-\[variant\=line\]\/tabs-list\:data-active\:border-b-primary:is(:where(.group\/tabs-list)[data-variant="line"] *):where([data-active]:not([data-active='false'])) {
2804
+ border-bottom-color: var(--primary);
2805
+ }
2806
+ .group-data-\[variant\=line\]\/tabs-list\:data-active\:text-foreground:is(:where(.group\/tabs-list)[data-variant="line"] *):where([data-active]:not([data-active='false'])) {
2807
+ color: var(--foreground);
2808
+ }
2766
2809
  .data-disabled\:pointer-events-none:where([data-disabled]:not([data-disabled='false'])) {
2767
2810
  pointer-events: none;
2768
2811
  }