@parto-system-design/ui 1.1.7 → 1.1.9
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/{chunk-HEYMLQOV.cjs → chunk-2ACKKPWA.cjs} +22 -4
- package/dist/chunk-2ACKKPWA.cjs.map +1 -0
- package/dist/{chunk-RA5KZNG5.js → chunk-3QYYPPFJ.js} +8 -8
- package/dist/chunk-3QYYPPFJ.js.map +1 -0
- package/dist/{chunk-OEVMKFFL.cjs → chunk-4WONHORR.cjs} +47 -35
- package/dist/chunk-4WONHORR.cjs.map +1 -0
- package/dist/{chunk-NEML6RCV.js → chunk-5HCXH6GS.js} +6 -2
- package/dist/chunk-5HCXH6GS.js.map +1 -0
- package/dist/{chunk-53QY4PD3.js → chunk-GCZ6YATL.js} +38 -6
- package/dist/chunk-GCZ6YATL.js.map +1 -0
- package/dist/{chunk-GDHRYKVM.js → chunk-GPYJ66CG.js} +4 -4
- package/dist/chunk-GPYJ66CG.js.map +1 -0
- package/dist/{chunk-SCGW2BH4.cjs → chunk-HS3XI3CC.cjs} +5 -5
- package/dist/chunk-HS3XI3CC.cjs.map +1 -0
- package/dist/chunk-JCJLN437.js +108 -0
- package/dist/chunk-JCJLN437.js.map +1 -0
- package/dist/{chunk-MQGQVI3W.cjs → chunk-JMKNNH63.cjs} +39 -7
- package/dist/chunk-JMKNNH63.cjs.map +1 -0
- package/dist/{chunk-34JUCX2G.cjs → chunk-K6G63EED.cjs} +2 -4
- package/dist/chunk-K6G63EED.cjs.map +1 -0
- package/dist/{chunk-3AIJKXBV.cjs → chunk-KYM7NIJO.cjs} +200 -9
- package/dist/chunk-KYM7NIJO.cjs.map +1 -0
- package/dist/{chunk-ZZFNJR2E.js → chunk-MEKWH3GS.js} +22 -4
- package/dist/chunk-MEKWH3GS.js.map +1 -0
- package/dist/{chunk-YE477L2H.cjs → chunk-MMC6M35Q.cjs} +10 -10
- package/dist/chunk-MMC6M35Q.cjs.map +1 -0
- package/dist/{chunk-LZMCMZZF.js → chunk-NMH43BDC.js} +44 -32
- package/dist/chunk-NMH43BDC.js.map +1 -0
- package/dist/chunk-NORDUD2T.cjs +135 -0
- package/dist/chunk-NORDUD2T.cjs.map +1 -0
- package/dist/{chunk-SCX6AR53.cjs → chunk-OQB6HIUL.cjs} +5 -5
- package/dist/{chunk-SCX6AR53.cjs.map → chunk-OQB6HIUL.cjs.map} +1 -1
- package/dist/{chunk-IQHKJ4SS.js → chunk-PYURPUTV.js} +195 -6
- package/dist/chunk-PYURPUTV.js.map +1 -0
- package/dist/{chunk-AXAY64KL.js → chunk-S3T2L6NA.js} +3 -4
- package/dist/chunk-S3T2L6NA.js.map +1 -0
- package/dist/{chunk-MBCTRNTG.js → chunk-SXWSOU3Y.js} +3 -3
- package/dist/{chunk-MBCTRNTG.js.map → chunk-SXWSOU3Y.js.map} +1 -1
- package/dist/chunk-TWJXOV4C.js +145 -0
- package/dist/chunk-TWJXOV4C.js.map +1 -0
- package/dist/{chunk-P5XHPNJG.cjs → chunk-U3ADRIVO.cjs} +6 -2
- package/dist/chunk-U3ADRIVO.cjs.map +1 -0
- package/dist/chunk-UOZN45G4.cjs +130 -0
- package/dist/chunk-UOZN45G4.cjs.map +1 -0
- package/dist/chunk-VHLDOG74.cjs +167 -0
- package/dist/chunk-VHLDOG74.cjs.map +1 -0
- package/dist/{chunk-VO3B75F6.cjs → chunk-YENXXYUV.cjs} +4 -4
- package/dist/{chunk-VO3B75F6.cjs.map → chunk-YENXXYUV.cjs.map} +1 -1
- package/dist/chunk-YFQWC2PW.js +113 -0
- package/dist/chunk-YFQWC2PW.js.map +1 -0
- package/dist/{chunk-YAJWTNOX.js → chunk-ZBZDR4ZC.js} +3 -3
- package/dist/{chunk-YAJWTNOX.js.map → chunk-ZBZDR4ZC.js.map} +1 -1
- package/dist/components/charts/PartoAreaChart.cjs +3 -3
- package/dist/components/charts/PartoAreaChart.d.cts +2 -0
- package/dist/components/charts/PartoAreaChart.d.ts +2 -0
- package/dist/components/charts/PartoAreaChart.js +2 -2
- package/dist/components/charts/PartoBarChart.cjs +3 -3
- package/dist/components/charts/PartoBarChart.d.cts +6 -0
- package/dist/components/charts/PartoBarChart.d.ts +6 -0
- package/dist/components/charts/PartoBarChart.js +2 -2
- package/dist/components/charts/PartoLineChart.cjs +3 -3
- package/dist/components/charts/PartoLineChart.d.cts +8 -0
- package/dist/components/charts/PartoLineChart.d.ts +8 -0
- package/dist/components/charts/PartoLineChart.js +2 -2
- package/dist/components/charts/PartoPieChart.cjs +3 -3
- package/dist/components/charts/PartoPieChart.d.cts +8 -0
- package/dist/components/charts/PartoPieChart.d.ts +8 -0
- package/dist/components/charts/PartoPieChart.js +2 -2
- package/dist/components/ui/badge.cjs +3 -3
- package/dist/components/ui/badge.js +1 -1
- package/dist/components/ui/button.cjs +4 -4
- package/dist/components/ui/button.js +2 -2
- package/dist/components/ui/calendar.cjs +4 -4
- package/dist/components/ui/calendar.js +3 -3
- package/dist/components/ui/data-table.cjs +4 -4
- package/dist/components/ui/data-table.js +3 -3
- package/dist/components/ui/input.cjs +5 -5
- package/dist/components/ui/input.js +2 -2
- package/dist/components/ui/page-card.cjs +2 -2
- package/dist/components/ui/page-card.d.cts +1 -1
- package/dist/components/ui/page-card.d.ts +1 -1
- package/dist/components/ui/page-card.js +1 -1
- package/dist/components/ui/saved-query-card.cjs +4 -4
- package/dist/components/ui/saved-query-card.js +3 -3
- package/dist/index.cjs +5349 -3558
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +357 -92
- package/dist/index.d.cts +956 -197
- package/dist/index.d.ts +956 -197
- package/dist/index.js +5165 -3409
- package/dist/index.js.map +1 -1
- package/dist/{page-card-DOl50DqJ.d.cts → page-card-CmShVqG-.d.cts} +1 -1
- package/dist/{page-card-CO92oXkc.d.ts → page-card-HBn-cy4J.d.ts} +1 -1
- package/package.json +1 -1
- package/dist/chunk-34JUCX2G.cjs.map +0 -1
- package/dist/chunk-3AIJKXBV.cjs.map +0 -1
- package/dist/chunk-53QY4PD3.js.map +0 -1
- package/dist/chunk-7Y4V3R3Y.cjs +0 -120
- package/dist/chunk-7Y4V3R3Y.cjs.map +0 -1
- package/dist/chunk-AXAY64KL.js.map +0 -1
- package/dist/chunk-D5XCQDFS.js +0 -92
- package/dist/chunk-D5XCQDFS.js.map +0 -1
- package/dist/chunk-GDHRYKVM.js.map +0 -1
- package/dist/chunk-HEYMLQOV.cjs.map +0 -1
- package/dist/chunk-IQHKJ4SS.js.map +0 -1
- package/dist/chunk-LLJR7FV3.js +0 -135
- package/dist/chunk-LLJR7FV3.js.map +0 -1
- package/dist/chunk-LZMCMZZF.js.map +0 -1
- package/dist/chunk-MKYVQQBV.cjs +0 -114
- package/dist/chunk-MKYVQQBV.cjs.map +0 -1
- package/dist/chunk-MQGQVI3W.cjs.map +0 -1
- package/dist/chunk-NEFZJHE4.cjs +0 -157
- package/dist/chunk-NEFZJHE4.cjs.map +0 -1
- package/dist/chunk-NEML6RCV.js.map +0 -1
- package/dist/chunk-OEVMKFFL.cjs.map +0 -1
- package/dist/chunk-P5XHPNJG.cjs.map +0 -1
- package/dist/chunk-QJ7UB2ZQ.js +0 -98
- package/dist/chunk-QJ7UB2ZQ.js.map +0 -1
- package/dist/chunk-RA5KZNG5.js.map +0 -1
- package/dist/chunk-SCGW2BH4.cjs.map +0 -1
- package/dist/chunk-YE477L2H.cjs.map +0 -1
- package/dist/chunk-ZZFNJR2E.js.map +0 -1
|
@@ -80,9 +80,27 @@ var Badge = React__namespace.forwardRef(
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
return /* @__PURE__ */ jsxRuntime.jsxs("span", { ref, "data-slot": "badge", className: chunkNV4JOKWL_cjs.cn(badgeVariants({ variant, size }), className), ...props, children: [
|
|
83
|
-
dot && dotPosition === "start" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
83
|
+
dot && dotPosition === "start" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
84
|
+
"svg",
|
|
85
|
+
{
|
|
86
|
+
"aria-hidden": "true",
|
|
87
|
+
className: chunkNV4JOKWL_cjs.cn(dotVariants({ position: "start" })),
|
|
88
|
+
fill: "currentColor",
|
|
89
|
+
viewBox: "0 0 8 8",
|
|
90
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "4", cy: "4", r: "3" })
|
|
91
|
+
}
|
|
92
|
+
),
|
|
84
93
|
children,
|
|
85
|
-
dot && dotPosition === "end" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
94
|
+
dot && dotPosition === "end" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
95
|
+
"svg",
|
|
96
|
+
{
|
|
97
|
+
"aria-hidden": "true",
|
|
98
|
+
className: chunkNV4JOKWL_cjs.cn(dotVariants({ position: "end" })),
|
|
99
|
+
fill: "currentColor",
|
|
100
|
+
viewBox: "0 0 8 8",
|
|
101
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "4", cy: "4", r: "3" })
|
|
102
|
+
}
|
|
103
|
+
)
|
|
86
104
|
] });
|
|
87
105
|
}
|
|
88
106
|
);
|
|
@@ -90,5 +108,5 @@ Badge.displayName = "Badge";
|
|
|
90
108
|
|
|
91
109
|
exports.Badge = Badge;
|
|
92
110
|
exports.badgeVariants = badgeVariants;
|
|
93
|
-
//# sourceMappingURL=chunk-
|
|
94
|
-
//# sourceMappingURL=chunk-
|
|
111
|
+
//# sourceMappingURL=chunk-2ACKKPWA.cjs.map
|
|
112
|
+
//# sourceMappingURL=chunk-2ACKKPWA.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/badge.tsx"],"names":["cva","React","cn","jsx"],"mappings":"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","file":"chunk-2ACKKPWA.cjs","sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nimport { cn } from '@/lib/utils'\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-full font-normal whitespace-nowrap transition-colors duration-150',\n {\n variants: {\n variant: {\n default: 'bg-surface-75 text-foreground-light border border-strong',\n secondary:\n 'bg-[hsl(var(--secondary-default)/0.1)] border border-[hsl(var(--secondary-default)/0.4)] text-[hsl(var(--secondary-default))]',\n success: 'bg-brand bg-opacity-10 text-brand-600 border border-brand-500',\n warning: 'bg-warning bg-opacity-10 text-warning border border-warning-500',\n destructive: 'bg-destructive bg-opacity-10 text-destructive-600 border border-destructive-500',\n brand: 'bg-brand bg-opacity-10 text-brand-600 border border-brand-500',\n outline: 'bg-transparent text-foreground border border-foreground-muted',\n },\n size: {\n xs: 'px-1.5 py-[3px] text-2xs leading-none tracking-wide uppercase',\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2 py-0.5 text-xs',\n lg: 'px-3 py-0.5 text-sm',\n /** @deprecated Use xs */ tiny: 'px-1.5 py-[3px] text-2xs leading-none tracking-wide uppercase',\n /** @deprecated Use sm */ small: 'px-2 py-0.5 text-xs',\n /** @deprecated Use lg */ large: 'px-3 py-0.5 text-sm',\n },\n dot: {\n true: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'sm',\n },\n }\n)\n\nconst dotVariants = cva('size-2 rounded-full', {\n variants: {\n position: {\n start: '-ms-0.5 me-1.5',\n end: 'ms-1.5 -me-0.5',\n },\n },\n defaultVariants: {\n position: 'start',\n },\n})\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {\n dot?: boolean\n dotPosition?: 'start' | 'end'\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, size, dot, dotPosition = 'end', children, ...props }, ref) => {\n if (process.env.NODE_ENV !== 'production') {\n const deprecatedSizes = ['tiny', 'small', 'large']\n if (size && deprecatedSizes.includes(size as string)) {\n console.warn(`[Parto UI] Badge: size=\"${size}\" is deprecated. Use xs|sm|md|lg instead.`)\n }\n }\n\n return (\n <span ref={ref} data-slot=\"badge\" className={cn(badgeVariants({ variant, size }), className)} {...props}>\n {dot && dotPosition === 'start' && (\n <svg\n aria-hidden=\"true\"\n className={cn(dotVariants({ position: 'start' }))}\n fill=\"currentColor\"\n viewBox=\"0 0 8 8\"\n >\n <circle cx=\"4\" cy=\"4\" r=\"3\" />\n </svg>\n )}\n {children}\n {dot && dotPosition === 'end' && (\n <svg\n aria-hidden=\"true\"\n className={cn(dotVariants({ position: 'end' }))}\n fill=\"currentColor\"\n viewBox=\"0 0 8 8\"\n >\n <circle cx=\"4\" cy=\"4\" r=\"3\" />\n </svg>\n )}\n </span>\n )\n }\n)\n\nBadge.displayName = 'Badge'\n\nexport { Badge, badgeVariants }\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SIZE_VARIANTS } from './chunk-S3T2L6NA.js';
|
|
2
2
|
import { cn } from './chunk-4SVQNEVH.js';
|
|
3
3
|
import { Slot } from '@radix-ui/react-slot';
|
|
4
4
|
import { cva } from 'class-variance-authority';
|
|
@@ -8,7 +8,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
8
8
|
|
|
9
9
|
var DESTRUCTIVE_VARIANT = `
|
|
10
10
|
text-foreground
|
|
11
|
-
bg-destructive-300 dark:bg-destructive-400 hover:bg-destructive-400 dark:hover:bg-destructive-
|
|
11
|
+
bg-destructive-300 dark:bg-destructive-400 hover:bg-destructive-400 dark:hover:bg-destructive-400/80
|
|
12
12
|
border-destructive-500 hover:border-destructive
|
|
13
13
|
hover:text-hi-contrast
|
|
14
14
|
data-[state=open]:border-destructive
|
|
@@ -41,7 +41,7 @@ var buttonVariants = cva(
|
|
|
41
41
|
variant: {
|
|
42
42
|
primary: `
|
|
43
43
|
bg-brand-400 dark:bg-brand-500
|
|
44
|
-
hover:bg-brand-300 dark:hover:bg-brand-
|
|
44
|
+
hover:bg-brand-300 dark:hover:bg-brand-500/80
|
|
45
45
|
text-foreground
|
|
46
46
|
border-brand-500/75 dark:border-brand/30
|
|
47
47
|
hover:border-brand-600 dark:hover:border-brand-500
|
|
@@ -95,7 +95,7 @@ var buttonVariants = cva(
|
|
|
95
95
|
danger: DESTRUCTIVE_VARIANT,
|
|
96
96
|
warning: `
|
|
97
97
|
text-foreground
|
|
98
|
-
bg-warning-300 dark:bg-warning-400 hover:bg-warning-400 dark:hover:bg-warning-
|
|
98
|
+
bg-warning-300 dark:bg-warning-400 hover:bg-warning-400 dark:hover:bg-warning-400/80
|
|
99
99
|
border-warning-500 hover:border-warning
|
|
100
100
|
hover:text-hi-contrast
|
|
101
101
|
data-[state=open]:border-warning
|
|
@@ -125,7 +125,7 @@ var buttonVariants = cva(
|
|
|
125
125
|
},
|
|
126
126
|
defaultVariants: {
|
|
127
127
|
variant: "default",
|
|
128
|
-
size:
|
|
128
|
+
size: "sm"
|
|
129
129
|
}
|
|
130
130
|
}
|
|
131
131
|
);
|
|
@@ -191,7 +191,7 @@ var Button = forwardRef(
|
|
|
191
191
|
asChild = false,
|
|
192
192
|
variant,
|
|
193
193
|
type,
|
|
194
|
-
size =
|
|
194
|
+
size = "sm",
|
|
195
195
|
children,
|
|
196
196
|
isLoading,
|
|
197
197
|
loading,
|
|
@@ -265,5 +265,5 @@ var Button = forwardRef(
|
|
|
265
265
|
Button.displayName = "Button";
|
|
266
266
|
|
|
267
267
|
export { Button, buttonVariants };
|
|
268
|
-
//# sourceMappingURL=chunk-
|
|
269
|
-
//# sourceMappingURL=chunk-
|
|
268
|
+
//# sourceMappingURL=chunk-3QYYPPFJ.js.map
|
|
269
|
+
//# sourceMappingURL=chunk-3QYYPPFJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/button.tsx"],"names":[],"mappings":"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","file":"chunk-3QYYPPFJ.js","sourcesContent":["'use client'\n\nimport { Slot } from '@radix-ui/react-slot'\nimport { VariantProps, cva } from 'class-variance-authority'\nimport { Loader2 } from 'lucide-react'\nimport { cloneElement, forwardRef, isValidElement } from 'react'\nimport { SIZE_VARIANTS, type StandardSize } from '@/lib/constants'\nimport { cn } from '@/lib/utils'\n\nexport type ButtonVariantProps = VariantProps<typeof buttonVariants>\n\nconst DESTRUCTIVE_VARIANT = `\n text-foreground\n bg-destructive-300 dark:bg-destructive-400 hover:bg-destructive-400 dark:hover:bg-destructive-400/80\n border-destructive-500 hover:border-destructive\n hover:text-hi-contrast\n data-[state=open]:border-destructive\n data-[state=open]:bg-destructive-400 dark:data-[state=open]:bg-destructive-600/80\n`\n\nconst buttonVariants = cva(\n `inline-flex items-center justify-center\n relative\n cursor-pointer\n gap-2\n text-center\n font-normal\n ease-out\n duration-200\n rounded-md\n outline-none\n transition-all\n active:scale-[0.98]\n focus-visible:ring-2\n focus-visible:ring-ring\n focus-visible:ring-offset-2\n border\n disabled:pointer-events-none\n disabled:opacity-50\n [&_svg]:pointer-events-none\n [&_svg]:shrink-0\n `,\n {\n variants: {\n variant: {\n primary: `\n bg-brand-400 dark:bg-brand-500\n hover:bg-brand-300 dark:hover:bg-brand-500/80\n text-foreground\n border-brand-500/75 dark:border-brand/30\n hover:border-brand-600 dark:hover:border-brand-500\n data-[state=open]:bg-brand-400/80 dark:data-[state=open]:bg-brand-600/80\n `,\n default: `\n text-foreground\n bg-alternative dark:bg-muted hover:bg-selection\n border-strong hover:border-stronger\n data-[state=open]:bg-selection\n data-[state=open]:border-button-hover\n `,\n secondary: `\n bg-foreground\n text-background hover:text-border-stronger\n focus-visible:text-border-control\n border-foreground-light hover:border-foreground-lighter\n data-[state=open]:border-foreground-lighter\n `,\n outline: `\n text-foreground\n bg-transparent\n border-strong hover:border-foreground-muted\n data-[state=open]:border-stronger\n `,\n dashed: `\n text-foreground\n border\n border-dashed\n border-strong hover:border-stronger\n bg-transparent\n data-[state=open]:border-stronger\n `,\n link: `\n text-brand-600\n border\n border-transparent\n hover:bg-brand-400\n border-opacity-0\n bg-opacity-0\n shadow-none\n data-[state=open]:bg-brand-400\n `,\n text: `\n text-foreground\n hover:bg-surface-300\n shadow-none\n data-[state=open]:bg-surface-300\n border-transparent\n `,\n danger: DESTRUCTIVE_VARIANT,\n warning: `\n text-foreground\n bg-warning-300 dark:bg-warning-400 hover:bg-warning-400 dark:hover:bg-warning-400/80\n border-warning-500 hover:border-warning\n hover:text-hi-contrast\n data-[state=open]:border-warning\n data-[state=open]:bg-warning-400 dark:data-[state=open]:bg-warning-600/80\n `,\n destructive: DESTRUCTIVE_VARIANT,\n ghost: `\n text-foreground\n hover:bg-surface-100 dark:hover:bg-surface-200\n border-transparent\n `,\n },\n block: {\n true: 'w-full flex items-center justify-center',\n },\n size: {\n ...SIZE_VARIANTS,\n default: SIZE_VARIANTS.sm,\n icon: 'size-9',\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed pointer-events-none',\n },\n rounded: {\n true: 'rounded-full',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'sm',\n },\n }\n)\n\nconst IconContainerVariants = cva('inline-flex items-center justify-center', {\n variants: {\n size: {\n xs: '[&_svg]:size-[14px]',\n sm: '[&_svg]:size-[18px]',\n md: '[&_svg]:size-[20px]',\n lg: '[&_svg]:size-[20px]',\n xl: '[&_svg]:size-[24px]',\n /** @deprecated */ tiny: '[&_svg]:size-[14px]',\n /** @deprecated */ small: '[&_svg]:size-[18px]',\n /** @deprecated */ medium: '[&_svg]:size-[20px]',\n /** @deprecated */ large: '[&_svg]:size-[20px]',\n /** @deprecated */ xlarge: '[&_svg]:size-[24px]',\n default: '[&_svg]:size-[18px]',\n icon: '[&_svg]:size-[18px]',\n },\n variant: {\n primary: 'text-brand-600',\n default: 'text-foreground-lighter',\n secondary: 'text-border-muted',\n outline: 'text-foreground-lighter',\n dashed: 'text-foreground-lighter',\n link: 'text-brand-600',\n text: 'text-foreground-lighter',\n danger: 'text-destructive-600',\n warning: 'text-warning',\n destructive: 'text-destructive-600',\n ghost: 'text-foreground-lighter',\n },\n },\n})\n\nexport type LoadingVariantProps = VariantProps<typeof loadingVariants>\nconst loadingVariants = cva('', {\n variants: {\n variant: {\n primary: 'text-brand-600',\n default: 'text-foreground-lighter',\n secondary: 'text-border-muted',\n outline: 'text-foreground-lighter',\n dashed: 'text-foreground-lighter',\n link: 'text-brand-600',\n text: 'text-foreground-muted',\n danger: 'text-destructive-600',\n warning: 'text-warning',\n destructive: 'text-destructive-600',\n ghost: 'text-foreground-lighter',\n },\n loading: {\n default: '',\n true: `animate-spin`,\n },\n },\n})\n\nexport interface ButtonProps\n extends\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'>,\n Omit<ButtonVariantProps, 'disabled'>,\n Omit<LoadingVariantProps, 'variant'> {\n asChild?: boolean\n type?: ButtonVariantProps['variant'] | React.ButtonHTMLAttributes<HTMLButtonElement>['type']\n htmlType?: React.ButtonHTMLAttributes<HTMLButtonElement>['type']\n icon?: React.ReactNode\n iconStart?: React.ReactNode\n iconEnd?: React.ReactNode\n /** @deprecated Use iconStart instead */\n iconLeft?: React.ReactNode\n /** @deprecated Use iconEnd instead */\n iconRight?: React.ReactNode\n isLoading?: boolean\n /** @deprecated Use `isLoading` instead */\n loading?: boolean\n block?: boolean\n rounded?: boolean\n}\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n asChild = false,\n variant,\n type,\n size = 'sm',\n children,\n isLoading,\n loading,\n block,\n icon,\n iconEnd,\n iconStart,\n iconRight,\n iconLeft,\n htmlType = 'button',\n rounded,\n className,\n ...props\n },\n ref\n ) => {\n if (process.env.NODE_ENV !== 'production') {\n const deprecatedSizes = ['tiny', 'small', 'medium', 'large', 'xlarge']\n if (size && deprecatedSizes.includes(size as string)) {\n console.warn(`[Parto UI] Button: size=\"${size}\" is deprecated. Use xs|sm|md|lg|xl instead.`)\n }\n }\n\n const Comp = asChild ? Slot : 'button'\n const { tabIndex } = props\n\n // Support both 'type' (Supabase style) and 'variant' (shadcn style)\n // If type is provided and it's not a button HTML type, use it as variant\n const buttonVariant =\n type && typeof type === 'string' && !['button', 'submit', 'reset'].includes(type)\n ? (type as ButtonVariantProps['variant'])\n : variant || 'default'\n\n const _loading = isLoading ?? loading\n // Support deprecated iconLeft/iconRight alongside new iconStart/iconEnd\n const resolvedIconStart = icon ?? iconStart ?? iconLeft\n const resolvedIconEnd = iconEnd ?? iconRight\n const showIcon = _loading || resolvedIconStart\n const disabled = _loading === true || props.disabled\n\n // Set default tabIndex for proper Safari focus handling\n // - Explicit tabIndex prop takes precedence\n // - If disabled, default to -1 (unless explicitly set)\n // - Otherwise, default to 0 for keyboard accessibility\n const computedTabIndex = tabIndex !== undefined ? tabIndex : disabled ? -1 : 0\n\n // Normalize size for IconContainerVariants\n const iconSize: StandardSize | 'default' | 'icon' =\n size === 'default' ? 'sm' : size === 'icon' ? 'sm' : (size ?? 'sm')\n\n return (\n <Comp\n ref={ref}\n data-slot=\"button\"\n data-size={size}\n type={htmlType}\n disabled={disabled}\n aria-busy={_loading || undefined}\n tabIndex={computedTabIndex}\n className={cn(buttonVariants({ variant: buttonVariant, size, disabled, block, rounded }), className)}\n onClick={(e) => {\n // Prevents redirecting if Button is used with a link-based child element\n if (disabled) return e.preventDefault()\n else props?.onClick?.(e)\n }}\n {...props}\n >\n {asChild ? (\n isValidElement(children) ? (\n cloneElement(\n children,\n undefined,\n showIcon &&\n (_loading ? (\n <div className={cn(IconContainerVariants({ size: iconSize, variant: buttonVariant }))}>\n <Loader2 className={cn(loadingVariants({ loading: _loading, variant: buttonVariant }))} />\n </div>\n ) : resolvedIconStart ? (\n <div className={cn(IconContainerVariants({ size: iconSize, variant: buttonVariant }))}>\n {resolvedIconStart}\n </div>\n ) : null),\n (children.props as { children?: React.ReactNode })?.children && (\n <span className=\"inline-flex items-center gap-2 truncate\">\n {(children.props as { children?: React.ReactNode }).children}\n </span>\n ),\n resolvedIconEnd && !_loading && (\n <div className={cn(IconContainerVariants({ size: iconSize, variant: buttonVariant }))}>\n {resolvedIconEnd}\n </div>\n )\n )\n ) : null\n ) : (\n <>\n {showIcon &&\n (_loading ? (\n <div className={cn(IconContainerVariants({ size: iconSize, variant: buttonVariant }))}>\n <Loader2\n aria-hidden=\"true\"\n className={cn(loadingVariants({ loading: _loading, variant: buttonVariant }))}\n />\n <span className=\"sr-only\">در حال بارگذاری...</span>\n </div>\n ) : resolvedIconStart ? (\n <div className={cn(IconContainerVariants({ size: iconSize, variant: buttonVariant }))}>\n {resolvedIconStart}\n </div>\n ) : null)}\n {children && <span className=\"inline-flex items-center gap-2 truncate\">{children}</span>}\n {resolvedIconEnd && !_loading && (\n <div className={cn(IconContainerVariants({ size: iconSize, variant: buttonVariant }))}>\n {resolvedIconEnd}\n </div>\n )}\n </>\n )}\n </Comp>\n )\n }\n)\n\nButton.displayName = 'Button'\n\nexport { Button, buttonVariants }\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkKYM7NIJO_cjs = require('./chunk-KYM7NIJO.cjs');
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var recharts = require('recharts');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -78,7 +78,7 @@ function renderArcLinkLabel(props, labelSkipAngle, textColor) {
|
|
|
78
78
|
textAnchor,
|
|
79
79
|
dominantBaseline: "central",
|
|
80
80
|
fill: textColor,
|
|
81
|
-
fontFamily:
|
|
81
|
+
fontFamily: chunkKYM7NIJO_cjs.CHART_FONT_FAMILY,
|
|
82
82
|
fontSize: 11,
|
|
83
83
|
children: name
|
|
84
84
|
}
|
|
@@ -98,43 +98,55 @@ var PartoPieChart = React__namespace.forwardRef(function PartoPieChart2({
|
|
|
98
98
|
locale = "fa",
|
|
99
99
|
className,
|
|
100
100
|
isLoading = false,
|
|
101
|
-
ariaLabel
|
|
101
|
+
ariaLabel,
|
|
102
|
+
legend = false,
|
|
103
|
+
legendValues = true
|
|
102
104
|
}, ref) {
|
|
103
|
-
const { chartColors, tooltipStyle, axisTickStyle } =
|
|
105
|
+
const { chartColors, tooltipStyle, axisTickStyle } = chunkKYM7NIJO_cjs.useChartTheme();
|
|
104
106
|
if (isLoading) {
|
|
105
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
107
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkKYM7NIJO_cjs.ChartLoadingSkeleton, { className, shape: "circle" });
|
|
106
108
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
109
|
+
const legendItems = legend ? data.map((row, i) => ({
|
|
110
|
+
key: String(row.name),
|
|
111
|
+
label: row.name,
|
|
112
|
+
color: chartColors[i % chartColors.length],
|
|
113
|
+
shape: "dot",
|
|
114
|
+
value: legendValues ? row.value : void 0
|
|
115
|
+
})) : [];
|
|
116
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkKYM7NIJO_cjs.ChartContainer, { ref, className, dataSlot: "pie-chart", ariaLabel, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", width: "100%", height: "100%" }, children: [
|
|
117
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { style: { flex: 1, minHeight: 0 }, children: /* @__PURE__ */ jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height: "100%", children: /* @__PURE__ */ jsxRuntime.jsxs(recharts.PieChart, { margin, children: [
|
|
118
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
119
|
+
recharts.Pie,
|
|
120
|
+
{
|
|
121
|
+
data,
|
|
122
|
+
dataKey: "value",
|
|
123
|
+
nameKey: "name",
|
|
124
|
+
cx: "50%",
|
|
125
|
+
cy: "50%",
|
|
126
|
+
innerRadius,
|
|
127
|
+
outerRadius,
|
|
128
|
+
paddingAngle,
|
|
129
|
+
cornerRadius,
|
|
130
|
+
activeShape: renderActiveShape,
|
|
131
|
+
label: showLabels ? (props) => renderArcLinkLabel(props, labelSkipAngle, axisTickStyle.fill) : false,
|
|
132
|
+
labelLine: false,
|
|
133
|
+
animationDuration: 800,
|
|
134
|
+
animationEasing: "ease-out",
|
|
135
|
+
children: data.map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(recharts.Cell, { fill: chartColors[i % chartColors.length], stroke: "none" }, i))
|
|
136
|
+
}
|
|
137
|
+
),
|
|
138
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
139
|
+
recharts.Tooltip,
|
|
140
|
+
{
|
|
141
|
+
content: /* @__PURE__ */ jsxRuntime.jsx(chunkKYM7NIJO_cjs.ChartTooltip, { tooltipStyle, formatter: tooltipFormatter, locale })
|
|
142
|
+
}
|
|
143
|
+
)
|
|
144
|
+
] }) }) }),
|
|
145
|
+
legend && /* @__PURE__ */ jsxRuntime.jsx(chunkKYM7NIJO_cjs.ChartLegend, { items: legendItems, style: { paddingTop: 12 } })
|
|
146
|
+
] }) });
|
|
135
147
|
});
|
|
136
148
|
PartoPieChart.displayName = "PartoPieChart";
|
|
137
149
|
|
|
138
150
|
exports.PartoPieChart = PartoPieChart;
|
|
139
|
-
//# sourceMappingURL=chunk-
|
|
140
|
-
//# sourceMappingURL=chunk-
|
|
151
|
+
//# sourceMappingURL=chunk-4WONHORR.cjs.map
|
|
152
|
+
//# sourceMappingURL=chunk-4WONHORR.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/charts/PartoPieChart.tsx"],"names":["jsx","Sector","CHART_FONT_FAMILY","React","PartoPieChart","useChartTheme","ChartLoadingSkeleton","ChartContainer","jsxs","ResponsiveContainer","PieChart","Pie","Cell","Tooltip","ChartTooltip","ChartLegend"],"mappings":"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","file":"chunk-4WONHORR.cjs","sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { PieChart, Pie, Cell, Tooltip, ResponsiveContainer, Sector } from 'recharts'\n\nimport { useChartTheme, CHART_FONT_FAMILY } from '@/hooks/use-chart-theme'\nimport { type SupportedLocale } from '@/lib/utils'\nimport { ChartContainer, ChartLegend, ChartLoadingSkeleton, ChartTooltip, type ChartLegendItem } from './chart-utils'\n\nexport interface PartoPieChartProps {\n /** Data: [{ name: \"محصول A\", value: 40 }] */\n data: Array<{ name: string; value: number; [key: string]: any }>\n /** Inner radius — 0 for full pie, \"60%\" for donut */\n innerRadius?: number | string\n /** Outer radius */\n outerRadius?: number | string\n /** Angle between slices in degrees */\n paddingAngle?: number\n /** Corner radius of arc segments */\n cornerRadius?: number\n /** Show arc link labels (lines from slices to text) */\n showLabels?: boolean\n /** Skip labels for slices smaller than this angle */\n labelSkipAngle?: number\n /** Chart margins */\n margin?: { top?: number; right?: number; bottom?: number; left?: number }\n /** Custom tooltip formatter */\n tooltipFormatter?: (name: string, value: number) => React.ReactNode\n /**\n * Locale for digit formatting in tooltips. fa/ar render Persian/Arabic digits;\n * en uses Latin. Default: 'fa'.\n */\n locale?: SupportedLocale\n className?: string\n isLoading?: boolean\n ariaLabel?: string\n /**\n * Render a legend listing each slice with its color and (optionally)\n * its value. Recommended for pies with many slices where arc-link\n * labels get suppressed by `labelSkipAngle`. @default `false`\n */\n legend?: boolean\n /** Show each slice's value in the legend. @default `true` when legend is on */\n legendValues?: boolean\n}\n\n// Active shape with expanded radius for hover effect\nfunction renderActiveShape(props: any) {\n const { cx, cy, innerRadius, outerRadius, startAngle, endAngle, fill, cornerRadius } = props\n\n return (\n <Sector\n cx={cx}\n cy={cy}\n innerRadius={innerRadius - 3}\n outerRadius={outerRadius + 5}\n startAngle={startAngle}\n endAngle={endAngle}\n fill={fill}\n cornerRadius={cornerRadius}\n forceCornerRadius\n />\n )\n}\n\n// Custom label renderer with arc link lines\nfunction renderArcLinkLabel(props: any, labelSkipAngle: number, textColor: string) {\n const { cx, cy, midAngle, outerRadius, name, percent } = props\n\n // Skip labels for small slices\n const angle = percent * 360\n if (angle < labelSkipAngle) return null\n\n const RADIAN = Math.PI / 180\n const sin = Math.sin(-RADIAN * midAngle)\n const cos = Math.cos(-RADIAN * midAngle)\n\n // Point on arc edge\n const arcX = cx + (outerRadius + 4) * cos\n const arcY = cy + (outerRadius + 4) * sin\n\n // Diagonal endpoint\n const diagLen = 10\n const diagX = arcX + diagLen * cos\n const diagY = arcY + diagLen * sin\n\n // Horizontal endpoint\n const straightLen = 14\n const endX = diagX + (cos >= 0 ? straightLen : -straightLen)\n const endY = diagY\n\n const textAnchor = cos >= 0 ? 'start' : 'end'\n const textX = endX + (cos >= 0 ? 4 : -4)\n\n return (\n <g>\n <path\n d={`M ${arcX},${arcY} L ${diagX},${diagY} L ${endX},${endY}`}\n fill=\"none\"\n stroke={textColor}\n strokeWidth={1}\n strokeOpacity={0.4}\n />\n <text\n x={textX}\n y={endY}\n textAnchor={textAnchor}\n dominantBaseline=\"central\"\n fill={textColor}\n fontFamily={CHART_FONT_FAMILY}\n fontSize={11}\n >\n {name}\n </text>\n </g>\n )\n}\n\nexport const PartoPieChart = React.forwardRef<HTMLDivElement, PartoPieChartProps>(function PartoPieChart(\n {\n data,\n innerRadius = '60%',\n outerRadius = '80%',\n paddingAngle = 1.2,\n cornerRadius = 4,\n showLabels = true,\n labelSkipAngle = 14,\n margin = { top: 20, right: 20, bottom: 20, left: 20 },\n tooltipFormatter,\n locale = 'fa',\n className,\n isLoading = false,\n ariaLabel,\n legend = false,\n legendValues = true,\n },\n ref\n) {\n const { chartColors, tooltipStyle, axisTickStyle } = useChartTheme()\n\n if (isLoading) {\n return <ChartLoadingSkeleton className={className} shape=\"circle\" />\n }\n\n const legendItems: ChartLegendItem[] = legend\n ? data.map((row, i) => ({\n key: String(row.name),\n label: row.name,\n color: chartColors[i % chartColors.length],\n shape: 'dot',\n value: legendValues ? row.value : undefined,\n }))\n : []\n\n return (\n <ChartContainer ref={ref} className={className} dataSlot=\"pie-chart\" ariaLabel={ariaLabel}>\n <div style={{ display: 'flex', flexDirection: 'column', width: '100%', height: '100%' }}>\n <div style={{ flex: 1, minHeight: 0 }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <PieChart margin={margin}>\n <Pie\n data={data}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={innerRadius}\n outerRadius={outerRadius}\n paddingAngle={paddingAngle}\n cornerRadius={cornerRadius}\n activeShape={renderActiveShape as any}\n label={\n showLabels ? (props: any) => renderArcLinkLabel(props, labelSkipAngle, axisTickStyle.fill) : false\n }\n labelLine={false}\n animationDuration={800}\n animationEasing=\"ease-out\"\n >\n {data.map((_, i) => (\n <Cell key={i} fill={chartColors[i % chartColors.length]} stroke=\"none\" />\n ))}\n </Pie>\n\n <Tooltip\n content={<ChartTooltip tooltipStyle={tooltipStyle} formatter={tooltipFormatter} locale={locale} />}\n />\n </PieChart>\n </ResponsiveContainer>\n </div>\n {legend && <ChartLegend items={legendItems} style={{ paddingTop: 12 }} />}\n </div>\n </ChartContainer>\n )\n})\nPartoPieChart.displayName = 'PartoPieChart'\n"]}
|
|
@@ -33,6 +33,10 @@ var PLATFORM_META = {
|
|
|
33
33
|
threads: {
|
|
34
34
|
label: "Threads",
|
|
35
35
|
icon: ({ className }) => /* @__PURE__ */ jsx("svg", { className, viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M12.186 24h-.007c-3.581-.024-6.334-1.205-8.184-3.509C2.35 18.44 1.5 15.586 1.472 12.01v-.017c.03-3.579.879-6.43 2.525-8.482C5.868 1.205 8.617.024 12.18 0h.014c2.746.02 5.043.725 6.826 2.098 1.677 1.29 2.858 3.13 3.509 5.467l-2.04.569c-1.104-3.96-3.898-5.984-8.304-6.015-2.91.022-5.11.936-6.54 2.717C4.307 6.504 3.616 8.914 3.589 12c.027 3.086.718 5.496 2.057 7.164 1.43 1.783 3.631 2.698 6.54 2.717 2.623-.02 4.358-.631 5.8-2.045 1.647-1.613 1.618-3.593 1.09-4.798-.31-.71-.873-1.3-1.634-1.75-.192 1.352-.622 2.446-1.284 3.272-.886 1.102-2.14 1.704-3.73 1.79-1.202.065-2.361-.218-3.259-.801-1.063-.689-1.685-1.749-1.752-2.98-.065-1.19.388-2.285 1.277-3.086.84-.754 2.02-1.164 3.43-1.19.954-.018 1.858.09 2.695.322-.082-.858-.372-1.502-.861-1.903-.529-.434-1.32-.658-2.332-.67-.884.01-1.63.23-2.22.65l-1.11-1.75c.97-.625 2.18-.95 3.6-.97h.022c1.63.02 2.976.497 3.898 1.385.955.92 1.444 2.25 1.51 3.95.23.073.46.149.682.232 1.69.64 2.847 1.635 3.406 2.946.859 2.002.86 5.139-1.773 7.674-1.797 1.742-3.993 2.525-6.935 2.545zm.098-10.02c-.745.01-1.377.186-1.882.523-.443.298-.706.733-.67 1.215.03.564.342 1.017.876 1.275.516.25 1.087.299 1.58.127.684-.24 1.34-.93 1.614-2.366a9.68 9.68 0 00-1.518-.774z" }) })
|
|
36
|
+
},
|
|
37
|
+
facebook: {
|
|
38
|
+
label: "Facebook",
|
|
39
|
+
icon: ({ className }) => /* @__PURE__ */ jsx("svg", { className, viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.875v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z" }) })
|
|
36
40
|
}
|
|
37
41
|
};
|
|
38
42
|
var socialPlatformBadgeVariants = cva("inline-flex items-center font-medium transition-colors duration-150", {
|
|
@@ -401,5 +405,5 @@ var PageCard = React.forwardRef(
|
|
|
401
405
|
PageCard.displayName = "PageCard";
|
|
402
406
|
|
|
403
407
|
export { BotDetectionMeter, PageCard, SocialPlatformBadge, socialPlatformBadgeVariants };
|
|
404
|
-
//# sourceMappingURL=chunk-
|
|
405
|
-
//# sourceMappingURL=chunk-
|
|
408
|
+
//# sourceMappingURL=chunk-5HCXH6GS.js.map
|
|
409
|
+
//# sourceMappingURL=chunk-5HCXH6GS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/social-platform-badge.tsx","../src/components/ui/bot-detection-meter.tsx","../src/components/ui/page-card.tsx"],"names":["React2","jsx","jsxs","React3"],"mappings":"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","file":"chunk-5HCXH6GS.js","sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { cva } from 'class-variance-authority'\nimport { cn } from '@/lib/utils'\n\nexport type SocialPlatform =\n | 'instagram'\n | 'twitter'\n | 'tiktok'\n | 'youtube'\n | 'linkedin'\n | 'telegram'\n | 'threads'\n | 'facebook'\n\nexport interface SocialPlatformBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** The social media platform to display */\n platform: SocialPlatform\n /** Size of the badge */\n size?: 'xs' | 'sm' | 'md' | 'lg'\n /** Show the platform name label */\n showLabel?: boolean\n /** Visual style of the badge */\n variant?: 'flat' | 'badge'\n}\n\nconst PLATFORM_META: Record<\n SocialPlatform,\n { label: string; icon: React.FC<{ className?: string; style?: React.CSSProperties }> }\n> = {\n instagram: {\n label: 'Instagram',\n icon: ({ className }) => (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z\" />\n </svg>\n ),\n },\n twitter: {\n label: 'X',\n icon: ({ className }) => (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.744l7.737-8.835L1.254 2.25H8.08l4.259 5.63 5.905-5.63zm-1.161 17.52h1.833L7.084 4.126H5.117z\" />\n </svg>\n ),\n },\n tiktok: {\n label: 'TikTok',\n icon: ({ className }) => (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M19.59 6.69a4.83 4.83 0 01-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 01-2.88 2.5 2.89 2.89 0 01-2.89-2.89 2.89 2.89 0 012.89-2.89c.28 0 .54.04.79.1V9.01a6.33 6.33 0 00-.79-.05 6.34 6.34 0 00-6.34 6.34 6.34 6.34 0 006.34 6.34 6.34 6.34 0 006.33-6.34V8.69a8.16 8.16 0 004.77 1.52V6.75a4.85 4.85 0 01-1-.06z\" />\n </svg>\n ),\n },\n youtube: {\n label: 'YouTube',\n icon: ({ className }) => (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M23.498 6.186a3.016 3.016 0 00-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 00.502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 002.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 002.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z\" />\n </svg>\n ),\n },\n linkedin: {\n label: 'LinkedIn',\n icon: ({ className }) => (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\" />\n </svg>\n ),\n },\n telegram: {\n label: 'Telegram',\n icon: ({ className }) => (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M11.944 0A12 12 0 000 12a12 12 0 0012 12 12 12 0 0012-12A12 12 0 0012 0a12 12 0 00-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 01.171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z\" />\n </svg>\n ),\n },\n threads: {\n label: 'Threads',\n icon: ({ className }) => (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M12.186 24h-.007c-3.581-.024-6.334-1.205-8.184-3.509C2.35 18.44 1.5 15.586 1.472 12.01v-.017c.03-3.579.879-6.43 2.525-8.482C5.868 1.205 8.617.024 12.18 0h.014c2.746.02 5.043.725 6.826 2.098 1.677 1.29 2.858 3.13 3.509 5.467l-2.04.569c-1.104-3.96-3.898-5.984-8.304-6.015-2.91.022-5.11.936-6.54 2.717C4.307 6.504 3.616 8.914 3.589 12c.027 3.086.718 5.496 2.057 7.164 1.43 1.783 3.631 2.698 6.54 2.717 2.623-.02 4.358-.631 5.8-2.045 1.647-1.613 1.618-3.593 1.09-4.798-.31-.71-.873-1.3-1.634-1.75-.192 1.352-.622 2.446-1.284 3.272-.886 1.102-2.14 1.704-3.73 1.79-1.202.065-2.361-.218-3.259-.801-1.063-.689-1.685-1.749-1.752-2.98-.065-1.19.388-2.285 1.277-3.086.84-.754 2.02-1.164 3.43-1.19.954-.018 1.858.09 2.695.322-.082-.858-.372-1.502-.861-1.903-.529-.434-1.32-.658-2.332-.67-.884.01-1.63.23-2.22.65l-1.11-1.75c.97-.625 2.18-.95 3.6-.97h.022c1.63.02 2.976.497 3.898 1.385.955.92 1.444 2.25 1.51 3.95.23.073.46.149.682.232 1.69.64 2.847 1.635 3.406 2.946.859 2.002.86 5.139-1.773 7.674-1.797 1.742-3.993 2.525-6.935 2.545zm.098-10.02c-.745.01-1.377.186-1.882.523-.443.298-.706.733-.67 1.215.03.564.342 1.017.876 1.275.516.25 1.087.299 1.58.127.684-.24 1.34-.93 1.614-2.366a9.68 9.68 0 00-1.518-.774z\" />\n </svg>\n ),\n },\n facebook: {\n label: 'Facebook',\n icon: ({ className }) => (\n <svg className={className} viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.875v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z\" />\n </svg>\n ),\n },\n}\n\nconst socialPlatformBadgeVariants = cva('inline-flex items-center font-medium transition-colors duration-150', {\n variants: {\n size: {\n xs: 'gap-1',\n sm: 'gap-1.5',\n md: 'gap-1.5',\n lg: 'gap-2',\n },\n variant: {\n flat: '',\n badge: 'border border-border bg-surface-100',\n },\n },\n compoundVariants: [\n { variant: 'badge', size: 'xs', className: 'px-1.5 py-0.5 rounded' },\n { variant: 'badge', size: 'sm', className: 'px-2 py-1 rounded' },\n { variant: 'badge', size: 'md', className: 'px-2.5 py-1 rounded-md' },\n { variant: 'badge', size: 'lg', className: 'px-3 py-1.5 rounded-md' },\n ],\n defaultVariants: { size: 'sm', variant: 'flat' },\n})\n\n/** Size-specific classes for child elements (icon, text) */\nconst SIZE_CHILD_CLASSES = {\n xs: { icon: 'size-3', text: 'text-xs' },\n sm: { icon: 'size-4', text: 'text-xs' },\n md: { icon: 'size-5', text: 'text-sm' },\n lg: { icon: 'size-6', text: 'text-base' },\n}\n\nconst SocialPlatformBadge = React.forwardRef<HTMLSpanElement, SocialPlatformBadgeProps>(\n ({ className, platform, size = 'sm', showLabel = false, variant = 'flat', style, ...props }, ref) => {\n const meta = PLATFORM_META[platform]\n const Icon = meta.icon\n const sizeClasses = SIZE_CHILD_CLASSES[size]\n\n return (\n <span\n ref={ref}\n data-slot=\"social-platform-badge\"\n className={cn(socialPlatformBadgeVariants({ size, variant }), className)}\n style={style}\n {...props}\n >\n <Icon className={cn(sizeClasses.icon, 'shrink-0')} style={{ color: `var(--social-platform-${platform})` }} />\n {showLabel && <span className={cn(sizeClasses.text, 'text-foreground-light')}>{meta.label}</span>}\n </span>\n )\n }\n)\n\nSocialPlatformBadge.displayName = 'SocialPlatformBadge'\n\nexport { SocialPlatformBadge, socialPlatformBadgeVariants }\n","'use client'\n\nimport * as React from 'react'\nimport { cn, convertToLocalNumbers, type SupportedLocale } from '@/lib/utils'\n\nexport type BotDetectionKey = 'real' | 'suspicious' | 'bot'\n\nexport interface BotDetectionData {\n /** Confirmed real / human accounts */\n real: number\n /** Suspicious — insufficient signal, possibly bot */\n suspicious: number\n /** Confirmed bot / automated */\n bot: number\n}\n\nexport interface BotDetectionMeterProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Counts — auto-normalised to percentages that sum to exactly 100 */\n data: BotDetectionData\n /** Display mode @default \"stacked\" */\n variant?: 'stacked' | 'bars' | 'compact'\n /** Show numeric count labels */\n showCounts?: boolean\n /** Show percentage labels @default true */\n showPercent?: boolean\n /** Show the top \"Real-account rate\" summary line (stacked variant only) @default true */\n showSummary?: boolean\n /** Size of the stacked bar or individual bars */\n size?: 'sm' | 'md' | 'lg'\n /** Locale for digits + default labels @default \"fa\" */\n locale?: SupportedLocale\n}\n\nconst LABELS: Record<SupportedLocale, Record<BotDetectionKey | 'summary', string>> = {\n fa: { real: 'واقعی', suspicious: 'مشکوک', bot: 'بات', summary: 'نرخ حسابهای واقعی' },\n ar: { real: 'حقيقي', suspicious: 'مشبوه', bot: 'روبوت', summary: 'معدل الحسابات الحقيقية' },\n en: { real: 'Real', suspicious: 'Suspicious', bot: 'Bot', summary: 'Real-account rate' },\n}\n\nconst SEGMENT_STYLES: Record<BotDetectionKey, { bar: string; text: string; bg: string; dot: string }> = {\n real: {\n bar: 'bg-[hsl(var(--sentiment-positive))]',\n text: 'text-[hsl(var(--sentiment-positive))]',\n bg: 'bg-[hsl(var(--sentiment-positive)/0.12)]',\n dot: 'bg-[hsl(var(--sentiment-positive))]',\n },\n suspicious: {\n bar: 'bg-[hsl(var(--warning-default))]',\n text: 'text-[hsl(var(--warning-default))]',\n bg: 'bg-[hsl(var(--warning-default)/0.12)]',\n dot: 'bg-[hsl(var(--warning-default))]',\n },\n bot: {\n bar: 'bg-[hsl(var(--destructive-default))]',\n text: 'text-[hsl(var(--destructive-default))]',\n bg: 'bg-[hsl(var(--destructive-default)/0.12)]',\n dot: 'bg-[hsl(var(--destructive-default))]',\n },\n}\n\nconst SEGMENT_ORDER: BotDetectionKey[] = ['real', 'suspicious', 'bot']\n\nfunction calcPercents(data: BotDetectionData): Record<BotDetectionKey, number> {\n const total = SEGMENT_ORDER.reduce((sum, k) => sum + (data[k] ?? 0), 0)\n if (total === 0) return { real: 0, suspicious: 0, bot: 0 }\n\n // Largest remainder method — guarantees percentages sum to exactly 100\n const floats = SEGMENT_ORDER.map((k) => ({ k, v: ((data[k] ?? 0) / total) * 100 }))\n const floors = floats.map(({ k, v }) => ({ k, floor: Math.floor(v), rem: v - Math.floor(v) }))\n const remaining = 100 - floors.reduce((s, f) => s + f.floor, 0)\n const sorted = [...floors].sort((a, b) => b.rem - a.rem)\n sorted.slice(0, remaining).forEach((f) => f.floor++)\n\n const result: Record<BotDetectionKey, number> = { real: 0, suspicious: 0, bot: 0 }\n sorted.forEach(({ k, floor }) => (result[k] = floor))\n return result\n}\n\nconst BAR_HEIGHT: Record<'sm' | 'md' | 'lg', string> = {\n sm: 'h-1.5',\n md: 'h-2',\n lg: 'h-3',\n}\n\nconst BotDetectionMeter = React.forwardRef<HTMLDivElement, BotDetectionMeterProps>(\n (\n {\n className,\n data,\n variant = 'stacked',\n showCounts = false,\n showPercent = true,\n showSummary = true,\n size = 'md',\n locale = 'fa',\n ...props\n },\n ref\n ) => {\n const labels = LABELS[locale]\n const percents = calcPercents(data)\n const total = SEGMENT_ORDER.reduce((sum, k) => sum + (data[k] ?? 0), 0)\n\n const fmt = (n: number) => convertToLocalNumbers(n, locale)\n\n if (variant === 'compact') {\n return (\n <div\n ref={ref}\n data-slot=\"bot-detection-meter\"\n data-variant=\"compact\"\n className={cn('flex items-center gap-2 text-xs', className)}\n {...props}\n >\n {SEGMENT_ORDER.map((k) => {\n const value = showCounts ? (data[k] ?? 0) : percents[k]\n return (\n <span key={k} className=\"inline-flex items-center gap-1\">\n <span className={cn('size-2 rounded-full', SEGMENT_STYLES[k].dot)} aria-hidden=\"true\" />\n <span className=\"text-foreground-lighter\">{labels[k]}</span>\n <span className={cn('font-semibold tabular-nums', SEGMENT_STYLES[k].text)}>\n {fmt(value)}\n {!showCounts && showPercent && '٪'}\n </span>\n </span>\n )\n })}\n </div>\n )\n }\n\n if (variant === 'bars') {\n return (\n <div\n ref={ref}\n data-slot=\"bot-detection-meter\"\n data-variant=\"bars\"\n className={cn('flex flex-col gap-2', className)}\n {...props}\n >\n {SEGMENT_ORDER.map((k) => (\n <div key={k} className=\"flex flex-col gap-1\">\n <div className=\"flex items-center justify-between text-xs\">\n <span className=\"inline-flex items-center gap-1.5 text-foreground\">\n <span className={cn('size-2 rounded-full', SEGMENT_STYLES[k].dot)} aria-hidden=\"true\" />\n {labels[k]}\n </span>\n <span className=\"tabular-nums text-foreground-lighter\">\n {showCounts && <span className=\"me-2\">{fmt(data[k] ?? 0)}</span>}\n {showPercent && (\n <span className={cn('font-semibold', SEGMENT_STYLES[k].text)}>{fmt(percents[k])}٪</span>\n )}\n </span>\n </div>\n <div className={cn('w-full rounded-full overflow-hidden', SEGMENT_STYLES[k].bg, BAR_HEIGHT[size])}>\n <div\n className={cn('h-full rounded-full transition-[width] duration-300', SEGMENT_STYLES[k].bar)}\n style={{ width: `${percents[k]}%` }}\n role=\"progressbar\"\n aria-valuenow={percents[k]}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={`${labels[k]}: ${fmt(percents[k])}٪`}\n />\n </div>\n </div>\n ))}\n </div>\n )\n }\n\n // stacked (default)\n return (\n <div\n ref={ref}\n data-slot=\"bot-detection-meter\"\n data-variant=\"stacked\"\n className={cn('flex flex-col gap-2', className)}\n {...props}\n >\n {showSummary && (\n <div className=\"flex items-center justify-between text-xs\">\n <span className=\"text-foreground-lighter\">{labels.summary}</span>\n <span className={cn('font-semibold tabular-nums', SEGMENT_STYLES.real.text)}>\n {fmt(percents.real)}٪\n {showCounts && total > 0 && (\n <span className=\"ms-1 font-normal text-foreground-lighter\">\n ({fmt(data.real)} / {fmt(total)})\n </span>\n )}\n </span>\n </div>\n )}\n <div\n className={cn('w-full rounded-full overflow-hidden bg-surface-200 flex', BAR_HEIGHT[size])}\n role=\"group\"\n aria-label={labels.summary}\n >\n {SEGMENT_ORDER.map((k) => {\n if (percents[k] === 0) return null\n return (\n <div\n key={k}\n className={cn('h-full transition-[width] duration-300', SEGMENT_STYLES[k].bar)}\n style={{ width: `${percents[k]}%` }}\n role=\"progressbar\"\n aria-valuenow={percents[k]}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={`${labels[k]}: ${fmt(percents[k])}٪`}\n />\n )\n })}\n </div>\n <div className=\"flex items-center gap-4 text-xs\">\n {SEGMENT_ORDER.map((k) => (\n <span key={k} className=\"inline-flex items-center gap-1.5\">\n <span className={cn('size-2 rounded-full', SEGMENT_STYLES[k].dot)} aria-hidden=\"true\" />\n <span className=\"text-foreground-lighter\">{labels[k]}</span>\n <span className={cn('font-semibold tabular-nums', SEGMENT_STYLES[k].text)}>\n {showCounts ? fmt(data[k] ?? 0) : `${fmt(percents[k])}٪`}\n </span>\n </span>\n ))}\n </div>\n </div>\n )\n }\n)\nBotDetectionMeter.displayName = 'BotDetectionMeter'\n\nexport { BotDetectionMeter }\n","'use client'\n\nimport * as React from 'react'\nimport { cn, convertToLocalNumbers, type SupportedLocale } from '@/lib/utils'\nimport { StatusBadge } from './status-badge'\nimport { SocialPlatformBadge, type SocialPlatform } from './social-platform-badge'\nimport { Sparkline } from './sparkline'\nimport { BotDetectionMeter, type BotDetectionData } from './bot-detection-meter'\nimport type { StatusKey } from '@/lib/i18n'\n\n/**\n * PageCard (government-flavor) — tracked-account tile for افکارسنجی pages\n * dashboards. Composes: avatar + handle + platform badge, status (healthy/\n * degrading/at-risk via StatusKey), follower trend sparkline, engagement\n * stats, content-type mix, bot-detection percentages.\n *\n * Distinct from `ProfileCard` which is influencer-flavored (focus on\n * engagement tier, follower count, avatar). PageCard is for **tracked\n * accounts** in monitoring — health and trust signals matter most.\n */\n\nexport interface PageCardContentMix {\n /** Photo posts in window (count or %) */\n photo?: number\n /** Video posts in window */\n video?: number\n /** Carousel posts */\n carousel?: number\n /** Story / reel count */\n story?: number\n}\n\nexport interface PageCardProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Account handle / display name (e.g., \"@news_agency\") */\n handle: React.ReactNode\n /** Optional secondary subtitle (e.g., page category) */\n subtitle?: React.ReactNode\n /** Avatar URL */\n avatarSrc?: string\n /** Platform — drives the platform badge */\n platform?: SocialPlatform\n /** Operational status (healthy/degrading/at-risk) — uses StatusKey */\n status?: StatusKey\n /** Total followers (current snapshot) */\n followers?: number\n /** Follower-trend sparkline values */\n followerTrend?: number[]\n /** Engagement rate (%) */\n engagementRate?: number\n /** Posts per week (recent average) */\n postsPerWeek?: number\n /** Content-type mix (counts or percents) */\n contentMix?: PageCardContentMix\n /** Bot-detection breakdown (real / suspicious / bot) */\n botDetection?: BotDetectionData\n /** Make the entire card clickable */\n interactive?: boolean\n /** Locale @default 'fa' */\n locale?: SupportedLocale\n}\n\nfunction formatBig(n: number, locale: SupportedLocale): string {\n if (n >= 1_000_000) return `${convertToLocalNumbers((n / 1_000_000).toFixed(1), locale)}M`\n if (n >= 1_000) return `${convertToLocalNumbers((n / 1_000).toFixed(1), locale)}K`\n return convertToLocalNumbers(n, locale)\n}\n\nconst PageCard = React.forwardRef<HTMLDivElement, PageCardProps>(\n (\n {\n className,\n handle,\n subtitle,\n avatarSrc,\n platform,\n status,\n followers,\n followerTrend,\n engagementRate,\n postsPerWeek,\n contentMix,\n botDetection,\n interactive = false,\n locale = 'fa',\n onClick,\n ...props\n },\n ref\n ) => {\n const isClickable = interactive || !!onClick\n const totalContent =\n contentMix &&\n (contentMix.photo ?? 0) + (contentMix.video ?? 0) + (contentMix.carousel ?? 0) + (contentMix.story ?? 0)\n\n return (\n <div\n ref={ref}\n data-slot=\"page-card\"\n data-status={status}\n role={isClickable ? 'button' : 'article'}\n tabIndex={isClickable ? 0 : undefined}\n onClick={onClick}\n onKeyDown={\n isClickable\n ? (e) => {\n if ((e.key === 'Enter' || e.key === ' ') && e.target === e.currentTarget) {\n e.preventDefault()\n ;(e.currentTarget as HTMLDivElement).click()\n }\n }\n : undefined\n }\n className={cn(\n 'flex flex-col gap-3 rounded-lg border border-border bg-background p-4 transition-colors',\n isClickable &&\n 'cursor-pointer hover:border-strong hover:bg-surface-100/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n className\n )}\n {...props}\n >\n {/* Identity row */}\n <div className=\"flex items-center gap-3\">\n {avatarSrc ? (\n <img\n src={avatarSrc}\n alt=\"\"\n className=\"size-10 rounded-full object-cover object-center shrink-0 border border-border\"\n />\n ) : (\n <div className=\"size-10 rounded-full bg-surface-200 shrink-0\" aria-hidden=\"true\" />\n )}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <span className=\"text-sm font-semibold text-foreground truncate\">{handle}</span>\n {platform && <SocialPlatformBadge platform={platform} size=\"xs\" />}\n {status && <StatusBadge status={status} size=\"sm\" animated locale={locale} />}\n </div>\n {subtitle && <p className=\"text-xs text-foreground-lighter truncate\">{subtitle}</p>}\n </div>\n </div>\n\n {/* Stats row — followers + trend + engagement */}\n {(typeof followers === 'number' || followerTrend || typeof engagementRate === 'number') && (\n <div className=\"grid grid-cols-3 gap-3 text-xs\">\n {typeof followers === 'number' && (\n <div>\n <div className=\"text-foreground-lighter\">\n {locale === 'fa' ? 'فالوور' : locale === 'ar' ? 'متابعون' : 'Followers'}\n </div>\n <div className=\"text-base font-semibold tabular-nums text-foreground\">\n {formatBig(followers, locale)}\n </div>\n </div>\n )}\n {followerTrend && followerTrend.length > 0 && (\n <div className=\"flex flex-col\">\n <div className=\"text-foreground-lighter\">\n {locale === 'fa' ? 'روند' : locale === 'ar' ? 'الاتجاه' : 'Trend'}\n </div>\n <div className=\"mt-1\">\n <Sparkline data={followerTrend} variant=\"line\" width={80} height={24} />\n </div>\n </div>\n )}\n {typeof engagementRate === 'number' && (\n <div>\n <div className=\"text-foreground-lighter\">\n {locale === 'fa' ? 'نرخ تعامل' : locale === 'ar' ? 'معدل التفاعل' : 'Engagement'}\n </div>\n <div className=\"text-base font-semibold tabular-nums text-foreground\">\n {convertToLocalNumbers(engagementRate.toFixed(1), locale)}\n {locale === 'en' ? '%' : '٪'}\n </div>\n </div>\n )}\n </div>\n )}\n\n {/* Content mix bar (photo/video/carousel/story) */}\n {contentMix && totalContent && totalContent > 0 && (\n <div className=\"space-y-1\">\n <div className=\"text-2xs text-foreground-lighter\">\n {locale === 'fa' ? 'ترکیب محتوا' : locale === 'ar' ? 'مزيج المحتوى' : 'Content mix'}\n </div>\n <div className=\"flex h-1.5 w-full overflow-hidden rounded-full bg-surface-200\">\n {contentMix.photo ? (\n <span\n style={{\n width: `${(contentMix.photo / totalContent) * 100}%`,\n backgroundColor: 'hsl(var(--chart-1))',\n }}\n aria-label={`photo ${contentMix.photo}`}\n />\n ) : null}\n {contentMix.video ? (\n <span\n style={{\n width: `${(contentMix.video / totalContent) * 100}%`,\n backgroundColor: 'hsl(var(--chart-2))',\n }}\n aria-label={`video ${contentMix.video}`}\n />\n ) : null}\n {contentMix.carousel ? (\n <span\n style={{\n width: `${(contentMix.carousel / totalContent) * 100}%`,\n backgroundColor: 'hsl(var(--chart-3))',\n }}\n aria-label={`carousel ${contentMix.carousel}`}\n />\n ) : null}\n {contentMix.story ? (\n <span\n style={{\n width: `${(contentMix.story / totalContent) * 100}%`,\n backgroundColor: 'hsl(var(--chart-4))',\n }}\n aria-label={`story ${contentMix.story}`}\n />\n ) : null}\n </div>\n </div>\n )}\n\n {/* Bot detection */}\n {botDetection && (\n <div data-slot=\"page-card-bot\">\n <BotDetectionMeter data={botDetection} variant=\"compact\" size=\"sm\" locale={locale} />\n </div>\n )}\n\n {typeof postsPerWeek === 'number' && (\n <div className=\"text-2xs text-foreground-lighter pt-1 border-t border-border\">\n {locale === 'fa'\n ? `میانگین ${convertToLocalNumbers(postsPerWeek.toFixed(1), 'fa')} پست در هفته`\n : locale === 'ar'\n ? `متوسط ${convertToLocalNumbers(postsPerWeek.toFixed(1), 'ar')} منشور في الأسبوع`\n : `Avg ${postsPerWeek.toFixed(1)} posts/week`}\n </div>\n )}\n </div>\n )\n }\n)\nPageCard.displayName = 'PageCard'\n\nexport { PageCard }\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { buttonVariants } from './chunk-
|
|
1
|
+
import { buttonVariants } from './chunk-3QYYPPFJ.js';
|
|
2
2
|
import { Checkbox } from './chunk-5JJSRGJD.js';
|
|
3
3
|
import { Skeleton } from './chunk-SB5DSYR5.js';
|
|
4
4
|
import { getUIStrings, isRTL } from './chunk-CV3N3HVK.js';
|
|
@@ -673,6 +673,30 @@ function DataTableInner({
|
|
|
673
673
|
const getColumnWidth = (col) => {
|
|
674
674
|
return resizeWidths[col.id] ?? col.width;
|
|
675
675
|
};
|
|
676
|
+
const handleResizeKeyDown = React5.useCallback(
|
|
677
|
+
(columnId, e) => {
|
|
678
|
+
const isArrowGrow = rtl ? e.key === "ArrowLeft" : e.key === "ArrowRight";
|
|
679
|
+
const isArrowShrink = rtl ? e.key === "ArrowRight" : e.key === "ArrowLeft";
|
|
680
|
+
if (!isArrowGrow && !isArrowShrink && e.key !== "Home" && e.key !== "End") return;
|
|
681
|
+
const col = columns.find((c) => c.id === columnId);
|
|
682
|
+
if (!col) return;
|
|
683
|
+
const headerCell = e.currentTarget.closest("th");
|
|
684
|
+
const measured = headerCell?.getBoundingClientRect().width || 0;
|
|
685
|
+
const minWidth = col.minWidth ?? 60;
|
|
686
|
+
const maxWidth = col.maxWidth ?? 800;
|
|
687
|
+
const current = resizeWidths[columnId] ?? (typeof col.width === "number" ? col.width : measured > 0 ? measured : 120);
|
|
688
|
+
const step = e.shiftKey ? 32 : 8;
|
|
689
|
+
let next;
|
|
690
|
+
if (e.key === "Home") next = minWidth;
|
|
691
|
+
else if (e.key === "End") next = maxWidth;
|
|
692
|
+
else if (isArrowGrow) next = Math.min(maxWidth, current + step);
|
|
693
|
+
else next = Math.max(minWidth, current - step);
|
|
694
|
+
e.preventDefault();
|
|
695
|
+
setResizeWidths((prev) => prev[columnId] === next ? prev : { ...prev, [columnId]: next });
|
|
696
|
+
onColumnResize?.(columnId, next);
|
|
697
|
+
},
|
|
698
|
+
[columns, resizeWidths, rtl, onColumnResize]
|
|
699
|
+
);
|
|
676
700
|
const { sentinelRef } = useInfiniteScroll({
|
|
677
701
|
onLoadMore: infiniteScroll?.onLoadMore ?? noop,
|
|
678
702
|
hasMore: !!infiniteScroll?.hasMore,
|
|
@@ -753,13 +777,21 @@ function DataTableInner({
|
|
|
753
777
|
] })
|
|
754
778
|
}
|
|
755
779
|
) : col.header,
|
|
756
|
-
col.resizable &&
|
|
780
|
+
col.resizable && // role="separator" + tabIndex + ArrowKey handler is the
|
|
781
|
+
// WAI-ARIA windowsplitter pattern (resizable separator).
|
|
782
|
+
// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
|
|
783
|
+
/* @__PURE__ */ jsx(
|
|
757
784
|
"div",
|
|
758
785
|
{
|
|
759
786
|
"data-slot": "data-table-resize-handle",
|
|
760
787
|
role: "separator",
|
|
761
788
|
"aria-orientation": "vertical",
|
|
762
789
|
"aria-label": "\u062A\u063A\u06CC\u06CC\u0631 \u0627\u0646\u062F\u0627\u0632\u0647 \u0633\u062A\u0648\u0646",
|
|
790
|
+
tabIndex: 0,
|
|
791
|
+
"aria-valuenow": getColumnWidth(col),
|
|
792
|
+
"aria-valuemin": col.minWidth ?? 60,
|
|
793
|
+
"aria-valuemax": col.maxWidth ?? 800,
|
|
794
|
+
onKeyDown: (e) => handleResizeKeyDown(col.id, e),
|
|
763
795
|
onPointerDown: (e) => startResize(col.id, e),
|
|
764
796
|
onPointerMove: onResizePointerMove,
|
|
765
797
|
onPointerUp: endResize,
|
|
@@ -767,7 +799,7 @@ function DataTableInner({
|
|
|
767
799
|
className: cn(
|
|
768
800
|
"absolute inset-block-0 inset-inline-end-0 w-1.5 cursor-col-resize select-none touch-none",
|
|
769
801
|
"before:absolute before:inset-block-2 before:inset-inline-1/2 before:w-px before:-translate-x-1/2 before:bg-border-default before:opacity-0 before:transition-opacity",
|
|
770
|
-
"hover:before:opacity-100 focus:before:opacity-100",
|
|
802
|
+
"hover:before:opacity-100 focus:before:opacity-100 focus-visible:outline-none focus-visible:before:!bg-brand focus-visible:before:opacity-100",
|
|
771
803
|
dragRef.current?.columnId === col.id && "before:!bg-brand before:opacity-100"
|
|
772
804
|
)
|
|
773
805
|
}
|
|
@@ -800,7 +832,7 @@ function DataTableInner({
|
|
|
800
832
|
const rowKey = getRowKey(row, rowIdx);
|
|
801
833
|
const isSelected = hasSelection && selection.selectedRows.has(rowKey);
|
|
802
834
|
const isExpanded = hasExpansion && expansion.expandedRows.has(rowKey);
|
|
803
|
-
const ChevronIcon =
|
|
835
|
+
const ChevronIcon = ChevronRight;
|
|
804
836
|
return /* @__PURE__ */ jsxs(React5.Fragment, { children: [
|
|
805
837
|
/* @__PURE__ */ jsxs(TableRow, { "data-state": isSelected ? "selected" : void 0, children: [
|
|
806
838
|
hasSelection && /* @__PURE__ */ jsx(TableCell, { className: pinClass("start"), children: /* @__PURE__ */ jsx(
|
|
@@ -904,5 +936,5 @@ var DataTable = React5.forwardRef(DataTableInner);
|
|
|
904
936
|
DataTable.displayName = "DataTable";
|
|
905
937
|
|
|
906
938
|
export { DataTable, Pagination, PaginationContent, PaginationControlled, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Spinner, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, TableSortHeader, spinnerVariants, useInfiniteScroll };
|
|
907
|
-
//# sourceMappingURL=chunk-
|
|
908
|
-
//# sourceMappingURL=chunk-
|
|
939
|
+
//# sourceMappingURL=chunk-GCZ6YATL.js.map
|
|
940
|
+
//# sourceMappingURL=chunk-GCZ6YATL.js.map
|