@pactor-app/ui 1.11.0 → 1.13.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.
@@ -82,8 +82,68 @@ function AccordionContent({
82
82
  );
83
83
  }
84
84
 
85
+ // src/ui/tooltip.tsx
86
+ import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
87
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
88
+ function TooltipProvider({
89
+ delay = 0,
90
+ ...props
91
+ }) {
92
+ return /* @__PURE__ */ jsx2(
93
+ TooltipPrimitive.Provider,
94
+ {
95
+ "data-slot": "tooltip-provider",
96
+ delay,
97
+ ...props
98
+ }
99
+ );
100
+ }
101
+ function Tooltip({
102
+ ...props
103
+ }) {
104
+ return /* @__PURE__ */ jsx2(TooltipProvider, { children: /* @__PURE__ */ jsx2(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
105
+ }
106
+ function TooltipTrigger({
107
+ ...props
108
+ }) {
109
+ return /* @__PURE__ */ jsx2(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
110
+ }
111
+ function TooltipContent({
112
+ className,
113
+ side = "top",
114
+ sideOffset = 4,
115
+ align = "center",
116
+ children,
117
+ ...props
118
+ }) {
119
+ return /* @__PURE__ */ jsx2(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx2(
120
+ TooltipPrimitive.Positioner,
121
+ {
122
+ align,
123
+ side,
124
+ sideOffset,
125
+ className: "isolate z-50",
126
+ children: /* @__PURE__ */ jsxs2(
127
+ TooltipPrimitive.Popup,
128
+ {
129
+ "data-slot": "tooltip-content",
130
+ className: cn(
131
+ "z-50 w-fit origin-(--transform-origin) rounded-md bg-primary px-3 py-1.5 text-xs text-balance text-primary-foreground 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",
132
+ className
133
+ ),
134
+ ...props,
135
+ children: [
136
+ children,
137
+ /* @__PURE__ */ jsx2(TooltipPrimitive.Arrow, { className: "z-50 size-2.5 rotate-45 rounded-[2px] bg-primary fill-primary data-[side=top]:-bottom-1 data-[side=bottom]:-top-1 data-[side=left]:-right-1 data-[side=right]:-left-1" })
138
+ ]
139
+ }
140
+ )
141
+ }
142
+ ) });
143
+ }
144
+
85
145
  // src/ui/card.tsx
86
- import { jsx as jsx2 } from "react/jsx-runtime";
146
+ import { jsx as jsx3 } from "react/jsx-runtime";
87
147
  var cardRoundedClasses = {
88
148
  none: "rounded-none",
89
149
  sm: "rounded-sm",
@@ -98,7 +158,7 @@ function Card({
98
158
  rounded = "lg",
99
159
  ...props
100
160
  }) {
101
- return /* @__PURE__ */ jsx2(
161
+ return /* @__PURE__ */ jsx3(
102
162
  "div",
103
163
  {
104
164
  "data-slot": "card",
@@ -112,7 +172,7 @@ function Card({
112
172
  );
113
173
  }
114
174
  function CardHeader({ className, ...props }) {
115
- return /* @__PURE__ */ jsx2(
175
+ return /* @__PURE__ */ jsx3(
116
176
  "div",
117
177
  {
118
178
  "data-slot": "card-header",
@@ -125,7 +185,7 @@ function CardHeader({ className, ...props }) {
125
185
  );
126
186
  }
127
187
  function CardTitle({ className, ...props }) {
128
- return /* @__PURE__ */ jsx2(
188
+ return /* @__PURE__ */ jsx3(
129
189
  "div",
130
190
  {
131
191
  "data-slot": "card-title",
@@ -135,7 +195,7 @@ function CardTitle({ className, ...props }) {
135
195
  );
136
196
  }
137
197
  function CardDescription({ className, ...props }) {
138
- return /* @__PURE__ */ jsx2(
198
+ return /* @__PURE__ */ jsx3(
139
199
  "div",
140
200
  {
141
201
  "data-slot": "card-description",
@@ -145,7 +205,7 @@ function CardDescription({ className, ...props }) {
145
205
  );
146
206
  }
147
207
  function CardAction({ className, ...props }) {
148
- return /* @__PURE__ */ jsx2(
208
+ return /* @__PURE__ */ jsx3(
149
209
  "div",
150
210
  {
151
211
  "data-slot": "card-action",
@@ -158,7 +218,7 @@ function CardAction({ className, ...props }) {
158
218
  );
159
219
  }
160
220
  function CardContent({ className, ...props }) {
161
- return /* @__PURE__ */ jsx2(
221
+ return /* @__PURE__ */ jsx3(
162
222
  "div",
163
223
  {
164
224
  "data-slot": "card-content",
@@ -168,7 +228,7 @@ function CardContent({ className, ...props }) {
168
228
  );
169
229
  }
170
230
  function CardFooter({ className, ...props }) {
171
- return /* @__PURE__ */ jsx2(
231
+ return /* @__PURE__ */ jsx3(
172
232
  "div",
173
233
  {
174
234
  "data-slot": "card-footer",
@@ -180,16 +240,16 @@ function CardFooter({ className, ...props }) {
180
240
 
181
241
  // src/ui/popover.tsx
182
242
  import { Popover as PopoverPrimitive } from "@base-ui/react/popover";
183
- import { jsx as jsx3 } from "react/jsx-runtime";
243
+ import { jsx as jsx4 } from "react/jsx-runtime";
184
244
  function Popover({
185
245
  ...props
186
246
  }) {
187
- return /* @__PURE__ */ jsx3(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
247
+ return /* @__PURE__ */ jsx4(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
188
248
  }
189
249
  function PopoverTrigger({
190
250
  ...props
191
251
  }) {
192
- return /* @__PURE__ */ jsx3(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
252
+ return /* @__PURE__ */ jsx4(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
193
253
  }
194
254
  function PopoverContent({
195
255
  className,
@@ -199,7 +259,7 @@ function PopoverContent({
199
259
  anchor,
200
260
  ...props
201
261
  }) {
202
- return /* @__PURE__ */ jsx3(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx3(
262
+ return /* @__PURE__ */ jsx4(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx4(
203
263
  PopoverPrimitive.Positioner,
204
264
  {
205
265
  align,
@@ -207,7 +267,7 @@ function PopoverContent({
207
267
  sideOffset,
208
268
  anchor,
209
269
  className: "isolate z-50",
210
- children: /* @__PURE__ */ jsx3(
270
+ children: /* @__PURE__ */ jsx4(
211
271
  PopoverPrimitive.Popup,
212
272
  {
213
273
  "data-slot": "popover-content",
@@ -223,9 +283,9 @@ function PopoverContent({
223
283
  }
224
284
 
225
285
  // src/ui/input.tsx
226
- import { jsx as jsx4 } from "react/jsx-runtime";
286
+ import { jsx as jsx5 } from "react/jsx-runtime";
227
287
  function Input({ className, type, ...props }) {
228
- return /* @__PURE__ */ jsx4(
288
+ return /* @__PURE__ */ jsx5(
229
289
  "input",
230
290
  {
231
291
  type,
@@ -239,66 +299,6 @@ function Input({ className, type, ...props }) {
239
299
  );
240
300
  }
241
301
 
242
- // src/ui/tooltip.tsx
243
- import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
244
- import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
245
- function TooltipProvider({
246
- delay = 0,
247
- ...props
248
- }) {
249
- return /* @__PURE__ */ jsx5(
250
- TooltipPrimitive.Provider,
251
- {
252
- "data-slot": "tooltip-provider",
253
- delay,
254
- ...props
255
- }
256
- );
257
- }
258
- function Tooltip({
259
- ...props
260
- }) {
261
- return /* @__PURE__ */ jsx5(TooltipProvider, { children: /* @__PURE__ */ jsx5(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
262
- }
263
- function TooltipTrigger({
264
- ...props
265
- }) {
266
- return /* @__PURE__ */ jsx5(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
267
- }
268
- function TooltipContent({
269
- className,
270
- side = "top",
271
- sideOffset = 4,
272
- align = "center",
273
- children,
274
- ...props
275
- }) {
276
- return /* @__PURE__ */ jsx5(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx5(
277
- TooltipPrimitive.Positioner,
278
- {
279
- align,
280
- side,
281
- sideOffset,
282
- className: "isolate z-50",
283
- children: /* @__PURE__ */ jsxs2(
284
- TooltipPrimitive.Popup,
285
- {
286
- "data-slot": "tooltip-content",
287
- className: cn(
288
- "z-50 w-fit origin-(--transform-origin) rounded-md bg-primary px-3 py-1.5 text-xs text-balance text-primary-foreground 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",
289
- className
290
- ),
291
- ...props,
292
- children: [
293
- children,
294
- /* @__PURE__ */ jsx5(TooltipPrimitive.Arrow, { className: "z-50 size-2.5 rotate-45 rounded-[2px] bg-primary fill-primary data-[side=top]:-bottom-1 data-[side=bottom]:-top-1 data-[side=left]:-right-1 data-[side=right]:-left-1" })
295
- ]
296
- }
297
- )
298
- }
299
- ) });
300
- }
301
-
302
302
  // src/ui/separator.tsx
303
303
  import { Separator as SeparatorPrimitive } from "@base-ui/react/separator";
304
304
  import { jsx as jsx6 } from "react/jsx-runtime";
@@ -1156,6 +1156,10 @@ export {
1156
1156
  AccordionItem,
1157
1157
  AccordionTrigger,
1158
1158
  AccordionContent,
1159
+ TooltipProvider,
1160
+ Tooltip,
1161
+ TooltipTrigger,
1162
+ TooltipContent,
1159
1163
  Card,
1160
1164
  CardHeader,
1161
1165
  CardTitle,
@@ -1167,10 +1171,6 @@ export {
1167
1171
  PopoverTrigger,
1168
1172
  PopoverContent,
1169
1173
  Input,
1170
- TooltipProvider,
1171
- Tooltip,
1172
- TooltipTrigger,
1173
- TooltipContent,
1174
1174
  useIsMobile,
1175
1175
  Separator,
1176
1176
  Sheet,
@@ -2,7 +2,7 @@ import {
2
2
  Icon,
3
3
  Menu,
4
4
  Sidebar
5
- } from "./chunk-PECP7DJB.js";
5
+ } from "./chunk-GQE62HDV.js";
6
6
  import {
7
7
  Alert,
8
8
  AlertDescription,
@@ -141,7 +141,7 @@ import {
141
141
  chartColor,
142
142
  navigationMenuTriggerStyle,
143
143
  toast
144
- } from "./chunk-NVORKHWX.js";
144
+ } from "./chunk-NQQAPB7Q.js";
145
145
  import {
146
146
  Dialog,
147
147
  DialogContent,
@@ -176,7 +176,7 @@ import {
176
176
  Tooltip,
177
177
  TooltipContent,
178
178
  TooltipTrigger
179
- } from "./chunk-VM4FESQB.js";
179
+ } from "./chunk-AUSWAD26.js";
180
180
  import {
181
181
  Button,
182
182
  cn
@@ -379,6 +379,7 @@ var sizeMap = {
379
379
  function Button2({
380
380
  text,
381
381
  icon,
382
+ tooltip,
382
383
  variant = "default",
383
384
  danger,
384
385
  size = "middle",
@@ -391,7 +392,7 @@ function Button2({
391
392
  children
392
393
  }) {
393
394
  const textual = variant === "link" || variant === "text";
394
- return /* @__PURE__ */ jsxs6(
395
+ const button = /* @__PURE__ */ jsxs6(
395
396
  Button,
396
397
  {
397
398
  type: submit ? "submit" : "button",
@@ -412,6 +413,13 @@ function Button2({
412
413
  ]
413
414
  }
414
415
  );
416
+ if (tooltip) {
417
+ return /* @__PURE__ */ jsxs6(Tooltip, { children: [
418
+ /* @__PURE__ */ jsx9(TooltipTrigger, { render: button }),
419
+ /* @__PURE__ */ jsx9(TooltipContent, { children: tooltip })
420
+ ] });
421
+ }
422
+ return button;
415
423
  }
416
424
 
417
425
  // src/components/components/ButtonGroup/index.tsx
@@ -2721,7 +2729,8 @@ function Select2({
2721
2729
  "span",
2722
2730
  {
2723
2731
  className: cn(
2724
- "inline-flex items-center gap-1",
2732
+ // Form / Field(Form 上下文)内控件占满整行宽度;独立渲染保持内容自然宽度
2733
+ inFormRoot ? "flex w-full items-center gap-1" : "inline-flex items-center gap-1",
2725
2734
  !inFormRoot && className,
2726
2735
  controlClassName
2727
2736
  ),
@@ -2736,7 +2745,7 @@ function Select2({
2736
2745
  disabled,
2737
2746
  name: inForm ? name : void 0,
2738
2747
  children: [
2739
- /* @__PURE__ */ jsx53(SelectTrigger, { id: controlId, children: /* @__PURE__ */ jsx53(SelectValue, { placeholder }) }),
2748
+ /* @__PURE__ */ jsx53(SelectTrigger, { id: controlId, className: inFormRoot ? "w-full" : void 0, children: /* @__PURE__ */ jsx53(SelectValue, { placeholder }) }),
2740
2749
  /* @__PURE__ */ jsx53(SelectContent, { children: options.map((option) => /* @__PURE__ */ jsx53(
2741
2750
  SelectItem,
2742
2751
  {
@@ -3168,7 +3177,16 @@ function Table2({
3168
3177
  // src/components/components/Tabs/index.tsx
3169
3178
  import { useRenderer as useRenderer16 } from "@pactor-app/runtime";
3170
3179
  import { jsx as jsx64, jsxs as jsxs44 } from "react/jsx-runtime";
3171
- function Tabs2({ items = [], activeKey, variant, onChange, className, style }) {
3180
+ function Tabs2({
3181
+ items = [],
3182
+ activeKey,
3183
+ variant,
3184
+ onChange,
3185
+ contentClassName,
3186
+ contentStyle,
3187
+ className,
3188
+ style
3189
+ }) {
3172
3190
  const { renderChildren } = useRenderer16();
3173
3191
  return /* @__PURE__ */ jsxs44(
3174
3192
  Tabs,
@@ -3180,7 +3198,16 @@ function Tabs2({ items = [], activeKey, variant, onChange, className, style }) {
3180
3198
  style,
3181
3199
  children: [
3182
3200
  /* @__PURE__ */ jsx64(TabsList, { variant, children: items.map((item) => /* @__PURE__ */ jsx64(TabsTrigger, { value: item.key, children: item.label }, item.key)) }),
3183
- items.map((item) => /* @__PURE__ */ jsx64(TabsContent, { value: item.key, children: renderChildren(item.children) }, item.key))
3201
+ items.map((item) => /* @__PURE__ */ jsx64(
3202
+ TabsContent,
3203
+ {
3204
+ value: item.key,
3205
+ className: cn(contentClassName, item.className),
3206
+ style: { ...contentStyle, ...item.style },
3207
+ children: renderChildren(item.children)
3208
+ },
3209
+ item.key
3210
+ ))
3184
3211
  ]
3185
3212
  }
3186
3213
  );
@@ -3195,9 +3222,15 @@ var typeClassMap = {
3195
3222
  warning: "text-warning",
3196
3223
  danger: "text-destructive"
3197
3224
  };
3225
+ var sizeClassMap = {
3226
+ small: "text-xs",
3227
+ middle: "",
3228
+ large: "text-lg"
3229
+ };
3198
3230
  function Text({
3199
3231
  text,
3200
3232
  type = "default",
3233
+ size = "middle",
3201
3234
  strong,
3202
3235
  delete: del,
3203
3236
  underline,
@@ -3213,6 +3246,7 @@ function Text({
3213
3246
  "data-type": type,
3214
3247
  className: cn(
3215
3248
  typeClassMap[type],
3249
+ sizeClassMap[size],
3216
3250
  strong && "font-semibold",
3217
3251
  del && "line-through",
3218
3252
  underline && "underline",
@@ -16,7 +16,7 @@ import {
16
16
  TooltipTrigger,
17
17
  useIsMobile,
18
18
  useSidebar
19
- } from "./chunk-VM4FESQB.js";
19
+ } from "./chunk-AUSWAD26.js";
20
20
  import {
21
21
  cn
22
22
  } from "./chunk-WKJUCGV4.js";
@@ -219,7 +219,28 @@ var ICONS = {
219
219
  "rotate-ccw": RotateCcw,
220
220
  quote: Quote,
221
221
  chat: MessageSquare,
222
- brain: Brain
222
+ brain: Brain,
223
+ // lucide 规范名别名(kebab-case 原名直通;上方短别名保留兼容)——
224
+ // 白名单文档承诺 kebab-case 键,缺别名时规范名(如 trash-2)会落入未知占位
225
+ "trash-2": Trash2,
226
+ "share-2": Share2,
227
+ "building-2": Building2,
228
+ house: House,
229
+ "triangle-alert": TriangleAlert,
230
+ "circle-alert": CircleAlert,
231
+ "circle-check": CircleCheck,
232
+ "circle-x": CircleX,
233
+ "circle-question-mark": CircleQuestionMark,
234
+ "square-pen": SquarePen,
235
+ "refresh-ccw": RefreshCcw,
236
+ "chart-column": ChartColumn,
237
+ "layout-grid": LayoutGrid,
238
+ funnel: Funnel,
239
+ "loader-circle": LoaderCircle,
240
+ ellipsis: Ellipsis,
241
+ "ellipsis-vertical": EllipsisVertical,
242
+ "message-circle": MessageCircle,
243
+ "lock-open": LockOpen
223
244
  };
224
245
  function normalizeIconName(name) {
225
246
  return name.replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/[_\s]+/g, "-").toLowerCase();
@@ -249,7 +270,7 @@ function Icon({
249
270
  size: px,
250
271
  color,
251
272
  strokeWidth,
252
- className: cn("shrink-0 text-muted-foreground", className),
273
+ className: cn("shrink-0", className),
253
274
  style,
254
275
  "aria-hidden": "true"
255
276
  }
@@ -2,7 +2,7 @@ import {
2
2
  Popover,
3
3
  PopoverContent,
4
4
  PopoverTrigger
5
- } from "./chunk-VM4FESQB.js";
5
+ } from "./chunk-AUSWAD26.js";
6
6
  import {
7
7
  Button,
8
8
  buttonVariants,
@@ -2476,7 +2476,8 @@ var tabsListVariants = cva4(
2476
2476
  variants: {
2477
2477
  variant: {
2478
2478
  default: "h-9 rounded-lg bg-muted p-[3px]",
2479
- line: "h-auto gap-1 rounded-none border-b border-border bg-transparent p-0"
2479
+ // line:页签栏通栏(下划线轨道占满容器宽),触发器自然宽度靠左排列
2480
+ line: "h-auto w-full justify-start gap-1 rounded-none border-b border-border bg-transparent p-0"
2480
2481
  }
2481
2482
  },
2482
2483
  defaultVariants: {
@@ -2512,8 +2513,9 @@ function TabsTrigger({
2512
2513
  // default 变体:激活态胶囊(边框 + 卡片底 + 阴影)
2513
2514
  "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",
2514
2515
  // line 变体:下划线指示——弱化未激活文字,激活态底部 2px 主色线
2515
- //(叠在 List 的底边轨道上),无底色/圆角/阴影
2516
- "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",
2516
+ //(叠在 List 的底边轨道上),无底色/圆角/阴影;通栏 List 下取消
2517
+ // flex-1 拉伸,触发器保持自然宽度
2518
+ "group-data-[variant=line]/tabs-list:-mb-px group-data-[variant=line]/tabs-list:h-9 group-data-[variant=line]/tabs-list:flex-none 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",
2517
2519
  className
2518
2520
  ),
2519
2521
  ...props
@@ -2,7 +2,7 @@ import {
2
2
  Icon,
3
3
  Menu,
4
4
  Sidebar
5
- } from "./chunk-PECP7DJB.js";
5
+ } from "./chunk-GQE62HDV.js";
6
6
  import {
7
7
  Accordion,
8
8
  AccordionContent,
@@ -15,7 +15,7 @@ import {
15
15
  Popover,
16
16
  PopoverContent,
17
17
  PopoverTrigger
18
- } from "./chunk-VM4FESQB.js";
18
+ } from "./chunk-AUSWAD26.js";
19
19
  import {
20
20
  cn
21
21
  } from "./chunk-WKJUCGV4.js";