@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
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { S as SupportedLocale } from './utils-DlXWmDZ-.js';
|
|
2
2
|
export { c as cn, a as convertToLocalNumbers, e as formatAbsoluteTime, f as formatLargeNumber, b as formatNumber, d as formatRelativeTime } from './utils-DlXWmDZ-.js';
|
|
3
|
-
import { A as ActionStatusKey, a as ActionTypeKey, E as EntityHealthKey, J as JobStatusKey,
|
|
3
|
+
import { A as ActionStatusKey, a as ActionTypeKey, E as EntityHealthKey, J as JobStatusKey, b as EmotionKey, F as FlowKey, S as StageStatusKey, c as StatusKey, d as SeverityKey } from './i18n-ArS3mqj0.js';
|
|
4
4
|
export { p as ACTION_STATUS_KEYS, w as ACTION_TYPE_KEYS, f as EMOTION_KEYS, z as ENTITY_HEALTH_KEYS, h as FLOW_KEYS, m as JOB_STATUS_KEYS, L as Locale, u as STAGE_STATUS_KEYS, G as UIStringKeys, H as UIStrings, U as UI_STRINGS, q as actionStatusLabels, x as actionTypeLabels, y as actionTypeVerbs, g as emotionLabels, e as engagementUiTranslations, B as entityHealthLabels, C as entityHealthPriority, j as flowLabels, r as formatRelativeLocaleTime, t as formatTimeRemaining, I as getUIStrings, o as isActiveJobStatus, D as isCriticalEntityHealth, i as isRTL, n as jobStatusLabels, s as sentimentLabels, l as severityLabels, v as stageStatusLabels, k as statusLabels } from './i18n-ArS3mqj0.js';
|
|
5
5
|
import * as React$1 from 'react';
|
|
6
6
|
import { LucideIcon } from 'lucide-react';
|
|
@@ -45,8 +45,8 @@ export { IranProvinceCell, IranProvinceHeat, IranProvinceHeatProps, IranProvince
|
|
|
45
45
|
import { OTPInput } from 'input-otp';
|
|
46
46
|
import * as MenubarPrimitive from '@radix-ui/react-menubar';
|
|
47
47
|
import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
|
|
48
|
-
import { S as SocialPlatform } from './page-card-
|
|
49
|
-
export { f as BotDetectionData, e as BotDetectionKey, B as BotDetectionMeter, g as BotDetectionMeterProps, P as PageCard, a as PageCardContentMix, b as PageCardProps, c as SocialPlatformBadge, d as SocialPlatformBadgeProps, s as socialPlatformBadgeVariants } from './page-card-
|
|
48
|
+
import { S as SocialPlatform } from './page-card-HBn-cy4J.js';
|
|
49
|
+
export { f as BotDetectionData, e as BotDetectionKey, B as BotDetectionMeter, g as BotDetectionMeterProps, P as PageCard, a as PageCardContentMix, b as PageCardProps, c as SocialPlatformBadge, d as SocialPlatformBadgeProps, s as socialPlatformBadgeVariants } from './page-card-HBn-cy4J.js';
|
|
50
50
|
export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from './components/ui/popover.js';
|
|
51
51
|
import * as ProgressPrimitive from '@radix-ui/react-progress';
|
|
52
52
|
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
|
|
@@ -941,6 +941,12 @@ interface PartoRadarChartProps {
|
|
|
941
941
|
className?: string;
|
|
942
942
|
isLoading?: boolean;
|
|
943
943
|
ariaLabel?: string;
|
|
944
|
+
/**
|
|
945
|
+
* Render a legend below the radar that names each series. Recommended when
|
|
946
|
+
* more than one Radar fill is drawn — overlapping color-only fills are
|
|
947
|
+
* unreadable for colorblind users (WCAG 1.4.1). @default `false`
|
|
948
|
+
*/
|
|
949
|
+
legend?: boolean;
|
|
944
950
|
}
|
|
945
951
|
declare const PartoRadarChart: React$1.ForwardRefExoticComponent<PartoRadarChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
946
952
|
|
|
@@ -1643,7 +1649,7 @@ declare namespace DrawerDescription {
|
|
|
1643
1649
|
var displayName: string;
|
|
1644
1650
|
}
|
|
1645
1651
|
|
|
1646
|
-
declare function DropdownMenu({ ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
1652
|
+
declare function DropdownMenu({ dir, ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
1647
1653
|
declare namespace DropdownMenu {
|
|
1648
1654
|
var displayName: string;
|
|
1649
1655
|
}
|
|
@@ -1665,7 +1671,7 @@ declare namespace DropdownMenuGroup {
|
|
|
1665
1671
|
}
|
|
1666
1672
|
declare function DropdownMenuItem({ className, inset, variant, ...props }: React$1.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
|
|
1667
1673
|
inset?: boolean;
|
|
1668
|
-
variant?:
|
|
1674
|
+
variant?: 'default' | 'destructive';
|
|
1669
1675
|
}): react_jsx_runtime.JSX.Element;
|
|
1670
1676
|
declare namespace DropdownMenuItem {
|
|
1671
1677
|
var displayName: string;
|
|
@@ -1692,7 +1698,7 @@ declare function DropdownMenuSeparator({ className, ...props }: React$1.Componen
|
|
|
1692
1698
|
declare namespace DropdownMenuSeparator {
|
|
1693
1699
|
var displayName: string;
|
|
1694
1700
|
}
|
|
1695
|
-
declare function DropdownMenuShortcut({ className, ...props }: React$1.ComponentProps<
|
|
1701
|
+
declare function DropdownMenuShortcut({ className, ...props }: React$1.ComponentProps<'span'>): react_jsx_runtime.JSX.Element;
|
|
1696
1702
|
declare namespace DropdownMenuShortcut {
|
|
1697
1703
|
var displayName: string;
|
|
1698
1704
|
}
|
|
@@ -2025,6 +2031,10 @@ interface TagInputProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'on
|
|
|
2025
2031
|
prefix?: string;
|
|
2026
2032
|
/** Locale for sr-only remove label @default "fa" */
|
|
2027
2033
|
locale?: SupportedLocale;
|
|
2034
|
+
/** Form `name` attribute forwarded to the inner `<input>` (for React Hook Form / native forms). */
|
|
2035
|
+
name?: string;
|
|
2036
|
+
/** HTML5 `required` attribute forwarded to the inner `<input>`. */
|
|
2037
|
+
required?: boolean;
|
|
2028
2038
|
}
|
|
2029
2039
|
declare const TagInput: React$1.ForwardRefExoticComponent<TagInputProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2030
2040
|
|
|
@@ -2538,7 +2548,7 @@ interface CountryPickerProps {
|
|
|
2538
2548
|
*/
|
|
2539
2549
|
declare const CountryPicker: React$1.ForwardRefExoticComponent<CountryPickerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2540
2550
|
|
|
2541
|
-
declare function Menubar({ className, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
2551
|
+
declare function Menubar({ className, dir, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
2542
2552
|
declare namespace Menubar {
|
|
2543
2553
|
var displayName: string;
|
|
2544
2554
|
}
|
|
@@ -2682,7 +2692,7 @@ declare namespace NativeSelectOptGroup {
|
|
|
2682
2692
|
var displayName: string;
|
|
2683
2693
|
}
|
|
2684
2694
|
|
|
2685
|
-
declare function NavigationMenu({ className, children, viewport, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Root> & {
|
|
2695
|
+
declare function NavigationMenu({ className, children, viewport, dir, ...props }: React$1.ComponentProps<typeof NavigationMenuPrimitive.Root> & {
|
|
2686
2696
|
viewport?: boolean;
|
|
2687
2697
|
}): react_jsx_runtime.JSX.Element;
|
|
2688
2698
|
declare namespace NavigationMenu {
|
|
@@ -2867,6 +2877,15 @@ interface PartoHeatMapProps {
|
|
|
2867
2877
|
yAxisLabel?: string;
|
|
2868
2878
|
/** Filter which x-axis ticks to show */
|
|
2869
2879
|
xTickFilter?: (value: string | number, index: number) => boolean;
|
|
2880
|
+
/**
|
|
2881
|
+
* Render a continuous-gradient legend below the heatmap that maps the
|
|
2882
|
+
* color intensity to a [min, max] value range. The bar uses the same
|
|
2883
|
+
* `colorScale` the cells use, so the gradient matches the data exactly.
|
|
2884
|
+
* @default `false`
|
|
2885
|
+
*/
|
|
2886
|
+
legend?: boolean;
|
|
2887
|
+
/** Caption shown above the gradient bar when `legend` is on (e.g. "تراکم انتشار"). */
|
|
2888
|
+
legendCaption?: React$1.ReactNode;
|
|
2870
2889
|
}
|
|
2871
2890
|
declare const PartoHeatMap: React$1.ForwardRefExoticComponent<PartoHeatMapProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2872
2891
|
|
|
@@ -2929,64 +2948,168 @@ interface PostingFrequencyHeatmapProps extends Omit<React$1.HTMLAttributes<HTMLD
|
|
|
2929
2948
|
declare const PostingFrequencyHeatmap: React$1.ForwardRefExoticComponent<PostingFrequencyHeatmapProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2930
2949
|
|
|
2931
2950
|
/**
|
|
2932
|
-
*
|
|
2933
|
-
*
|
|
2934
|
-
*
|
|
2951
|
+
* The full set of sources a post can originate from in Parto's social-listening +
|
|
2952
|
+
* افکارسنجی pipeline. Extends `SocialPlatform` (7 social networks) with broadcast
|
|
2953
|
+
* (tv, radio) and editorial (press, web) sources.
|
|
2954
|
+
*/
|
|
2955
|
+
type PostSource = SocialPlatform | 'tv' | 'radio' | 'press' | 'web';
|
|
2956
|
+
/** High-level grouping that drives header layout and default metric ordering. */
|
|
2957
|
+
type PostSourceCategory = 'social' | 'broadcast' | 'editorial';
|
|
2958
|
+
/**
|
|
2959
|
+
* Derive the source category from a `PostSource` value.
|
|
2960
|
+
* Used internally by `<PostHeader>`, metric label helpers, and default-actions config.
|
|
2961
|
+
*/
|
|
2962
|
+
declare function sourceCategory(source: PostSource): PostSourceCategory;
|
|
2963
|
+
/**
|
|
2964
|
+
* @deprecated Use {@link PostSource} for new code. `PostPlatform` is retained with its
|
|
2965
|
+
* historical meaning (the 7 social networks only) so existing components that target
|
|
2966
|
+
* social-specific APIs (e.g. `<SocialPlatformBadge>`) keep their narrow contract.
|
|
2967
|
+
* `PostSource` is the expanded superset (adds tv / radio / press / web).
|
|
2935
2968
|
*/
|
|
2936
2969
|
type PostPlatform = SocialPlatform;
|
|
2970
|
+
/**
|
|
2971
|
+
* `view` is the canonical PostList render mode. `compact` and `comfortable` are the
|
|
2972
|
+
* pre-existing densities; `grid` is the new magazine/visual layout.
|
|
2973
|
+
*/
|
|
2974
|
+
type PostView = 'compact' | 'comfortable' | 'grid';
|
|
2975
|
+
/**
|
|
2976
|
+
* @deprecated Use {@link PostView} instead. `density` is the legacy two-value alias
|
|
2977
|
+
* (compact | comfortable) kept for backward compatibility with PostCard / PostList.
|
|
2978
|
+
*/
|
|
2937
2979
|
type PostDensity = 'compact' | 'comfortable';
|
|
2938
2980
|
type PostSentiment = 'positive' | 'negative' | 'neutral' | 'mixed';
|
|
2981
|
+
type PostEmotion = 'anger' | 'anticipation' | 'joy' | 'trust' | 'fear' | 'surprise' | 'sadness' | 'disgust' | 'neutral';
|
|
2982
|
+
/** Political flow classification — see CLAUDE.md domain concepts. */
|
|
2983
|
+
type PostFlow = 'pro-gov' | 'internal-critic' | 'internal-opponent' | 'external-opponent' | 'grey';
|
|
2984
|
+
type PostSeverity = 'low' | 'medium' | 'high' | 'critical';
|
|
2985
|
+
type PostStatus = 'normal' | 'warning' | 'critical';
|
|
2986
|
+
type PostAuthorityTier = 'nano' | 'micro' | 'macro' | 'mega';
|
|
2939
2987
|
interface PostAuthor {
|
|
2940
2988
|
name: string;
|
|
2941
2989
|
handle?: string;
|
|
2942
2990
|
avatarUrl?: string;
|
|
2943
2991
|
verified?: boolean;
|
|
2944
|
-
/** Optional follower / subscriber count
|
|
2992
|
+
/** Optional follower / subscriber count. */
|
|
2945
2993
|
followers?: number;
|
|
2946
|
-
|
|
2947
|
-
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
/**
|
|
2953
|
-
|
|
2954
|
-
/**
|
|
2955
|
-
|
|
2956
|
-
}
|
|
2957
|
-
interface PostTag {
|
|
2958
|
-
id: string;
|
|
2959
|
-
label: string;
|
|
2960
|
-
/** Optional CSS var (e.g. `--chart-1`) or hex color. Auto-assigned from label if omitted. */
|
|
2961
|
-
color?: string;
|
|
2994
|
+
/** Optional following / friends count — rendered in the author HoverCard. */
|
|
2995
|
+
following?: number;
|
|
2996
|
+
/** Optional total post count — rendered in the author HoverCard. */
|
|
2997
|
+
postCount?: number;
|
|
2998
|
+
/** Short bio / description from the author's profile (1-2 sentences). */
|
|
2999
|
+
bio?: string;
|
|
3000
|
+
/** Influence score 0..100 — used to render the authority chip on the card. */
|
|
3001
|
+
authorityScore?: number;
|
|
3002
|
+
/** Categorical author tier inferred from follower count + engagement. */
|
|
3003
|
+
authorityTier?: PostAuthorityTier;
|
|
2962
3004
|
}
|
|
2963
3005
|
/**
|
|
2964
|
-
*
|
|
2965
|
-
*
|
|
3006
|
+
* Editorial / broadcast actor. Used when the post originates from press, web, tv, radio
|
|
3007
|
+
* instead of an individual social-platform account.
|
|
2966
3008
|
*/
|
|
2967
|
-
interface
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
3009
|
+
interface PostOutlet {
|
|
3010
|
+
name: string;
|
|
3011
|
+
logoUrl?: string;
|
|
3012
|
+
/** Editorial only: web domain ("hamshahrionline.ir"). */
|
|
3013
|
+
domain?: string;
|
|
3014
|
+
/** Editorial only: 0..100 SEO/credibility signal. */
|
|
3015
|
+
domainAuthority?: number;
|
|
3016
|
+
/** Broadcast only: TV channel or radio station ("شبکه ۱", "رادیو پیام"). */
|
|
3017
|
+
channel?: string;
|
|
3018
|
+
/** Broadcast only: program / show name. */
|
|
3019
|
+
program?: string;
|
|
3020
|
+
/** Editorial only: byline / journalist name. */
|
|
3021
|
+
reporterName?: string;
|
|
2972
3022
|
}
|
|
3023
|
+
/**
|
|
3024
|
+
* Per-item ingestion status. Drives how `<PostMedia>` renders each item:
|
|
3025
|
+
* - `ready`: image/video/audio is downloaded and viewable.
|
|
3026
|
+
* - `loading`: the panel is fetching the media right now — render a shimmer.
|
|
3027
|
+
* - `failed`: download failed — render retry placeholder.
|
|
3028
|
+
* - `unavailable`: source has media but we never captured it — render "ذخیره نشده" placeholder.
|
|
3029
|
+
*/
|
|
3030
|
+
type PostMediaStatus = 'ready' | 'loading' | 'failed' | 'unavailable';
|
|
3031
|
+
/** Sensitive-content classifications. Used at media-level and post-level. */
|
|
3032
|
+
type PostMediaSensitivity = 'nsfw' | 'graphic' | 'spoiler';
|
|
2973
3033
|
interface PostMediaItem {
|
|
2974
3034
|
url: string;
|
|
2975
3035
|
thumbnailUrl?: string;
|
|
2976
|
-
/** Natural aspect ratio (width / height).
|
|
3036
|
+
/** Natural aspect ratio (width / height). Defaults to 1. */
|
|
2977
3037
|
aspectRatio?: number;
|
|
2978
3038
|
alt?: string;
|
|
2979
|
-
type?: 'image' | 'video';
|
|
2980
|
-
/** Duration in seconds for video. */
|
|
3039
|
+
type?: 'image' | 'video' | 'audio';
|
|
3040
|
+
/** Duration in seconds for video / audio. */
|
|
2981
3041
|
duration?: number;
|
|
3042
|
+
/** Ingestion status. Defaults to 'ready'. */
|
|
3043
|
+
status?: PostMediaStatus;
|
|
3044
|
+
/** Sensitivity tag — if set, the renderer blurs the media until revealed. */
|
|
3045
|
+
sensitivity?: PostMediaSensitivity;
|
|
3046
|
+
/** Audio only: URL of a waveform peaks file or a pre-rendered SVG / inline data URI. */
|
|
3047
|
+
waveformUrl?: string;
|
|
3048
|
+
}
|
|
3049
|
+
/** Open Graph–style URL preview embedded inside a text body. */
|
|
3050
|
+
interface PostUrlPreview$1 {
|
|
3051
|
+
url: string;
|
|
3052
|
+
domain: string;
|
|
3053
|
+
title?: string;
|
|
3054
|
+
description?: string;
|
|
3055
|
+
thumbnailUrl?: string;
|
|
3056
|
+
}
|
|
3057
|
+
/**
|
|
3058
|
+
* Sticker overlays found on Instagram stories (mentions, polls, location, music, etc.).
|
|
3059
|
+
* Captured to preserve story context after crawling. Coordinates are normalized 0..1.
|
|
3060
|
+
*/
|
|
3061
|
+
interface StoryStickerOverlay {
|
|
3062
|
+
/** Type of sticker — drives the icon and label in `<PostMediaStory>`. */
|
|
3063
|
+
type: 'mention' | 'location' | 'hashtag' | 'music' | 'poll' | 'question' | 'time' | 'link' | 'other';
|
|
3064
|
+
/** Human-readable label (e.g. "@digikala", "Tehran", "#خرید_آنلاین"). */
|
|
3065
|
+
label: string;
|
|
3066
|
+
/** Optional secondary text — for polls/questions, the question text. */
|
|
3067
|
+
secondaryText?: string;
|
|
3068
|
+
/** Normalized x/y position on the story canvas (0..1). */
|
|
3069
|
+
x?: number;
|
|
3070
|
+
y?: number;
|
|
3071
|
+
}
|
|
3072
|
+
/** Per-story metadata extracted at crawl time. */
|
|
3073
|
+
interface StoryItem {
|
|
3074
|
+
/** The captured media (image or video). */
|
|
3075
|
+
media: PostMediaItem;
|
|
3076
|
+
/** OCR-extracted text from the story canvas (visible Persian/English text). */
|
|
3077
|
+
ocrText?: string;
|
|
3078
|
+
/** Transcript for video stories. */
|
|
3079
|
+
transcript?: string;
|
|
3080
|
+
/** Story sticker overlays (mentions, polls, location, etc.). */
|
|
3081
|
+
stickers?: StoryStickerOverlay[];
|
|
3082
|
+
/** Story publication time — distinct from the post wrapper's timestamp. */
|
|
3083
|
+
publishedAt?: Date | string | number;
|
|
3084
|
+
/** Outbound "swipe up" / link sticker URL. */
|
|
3085
|
+
swipeUpUrl?: string;
|
|
3086
|
+
/** Story view count (Stories use viewers, not likes). */
|
|
3087
|
+
viewCount?: number;
|
|
2982
3088
|
}
|
|
3089
|
+
/**
|
|
3090
|
+
* Discriminated union of body shapes. The renderer in `<PostBody>` switches on `type`.
|
|
3091
|
+
*
|
|
3092
|
+
* Story-related variants:
|
|
3093
|
+
* - `story` — single ephemeral story (9:16, OCR text overlay, optional swipe-up link)
|
|
3094
|
+
* - `highlight` — saved-story collection under a titled cover; renders as a strip of stories
|
|
3095
|
+
* Other social media coverage:
|
|
3096
|
+
* - `media-grid`, `media-carousel`, `video`, `audio`, `text` — generic
|
|
3097
|
+
* Failure states:
|
|
3098
|
+
* - `missing-media`, `source-removed`
|
|
3099
|
+
*/
|
|
2983
3100
|
type PostBodyData = {
|
|
2984
3101
|
type: 'text';
|
|
2985
3102
|
text: string;
|
|
3103
|
+
urlPreview?: PostUrlPreview$1;
|
|
2986
3104
|
} | {
|
|
2987
3105
|
type: 'media-single';
|
|
2988
3106
|
media: PostMediaItem;
|
|
2989
3107
|
caption?: string;
|
|
3108
|
+
urlPreview?: PostUrlPreview$1;
|
|
3109
|
+
} | {
|
|
3110
|
+
type: 'media-grid';
|
|
3111
|
+
items: PostMediaItem[];
|
|
3112
|
+
caption?: string;
|
|
2990
3113
|
} | {
|
|
2991
3114
|
type: 'media-carousel';
|
|
2992
3115
|
items: PostMediaItem[];
|
|
@@ -2995,85 +3118,141 @@ type PostBodyData = {
|
|
|
2995
3118
|
type: 'video';
|
|
2996
3119
|
media: PostMediaItem;
|
|
2997
3120
|
caption?: string;
|
|
3121
|
+
} | {
|
|
3122
|
+
type: 'audio';
|
|
3123
|
+
media: PostMediaItem;
|
|
3124
|
+
caption?: string;
|
|
3125
|
+
} | {
|
|
3126
|
+
type: 'story';
|
|
3127
|
+
story: StoryItem;
|
|
3128
|
+
caption?: string;
|
|
3129
|
+
} | {
|
|
3130
|
+
type: 'highlight';
|
|
3131
|
+
title: string;
|
|
3132
|
+
coverUrl?: string;
|
|
3133
|
+
stories: StoryItem[];
|
|
3134
|
+
caption?: string;
|
|
2998
3135
|
} | {
|
|
2999
3136
|
type: 'missing-media';
|
|
3000
3137
|
caption?: string;
|
|
3001
3138
|
reason?: string;
|
|
3139
|
+
} | {
|
|
3140
|
+
type: 'source-removed';
|
|
3141
|
+
archivedAt?: Date | string | number;
|
|
3142
|
+
archiveUrl?: string;
|
|
3143
|
+
caption?: string;
|
|
3002
3144
|
};
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
/**
|
|
3014
|
-
|
|
3015
|
-
/**
|
|
3016
|
-
|
|
3017
|
-
/**
|
|
3018
|
-
|
|
3019
|
-
/**
|
|
3020
|
-
|
|
3145
|
+
/**
|
|
3146
|
+
* Unified metric envelope. Labels are platform-aware via `getMetricLabel(source, key, locale)`;
|
|
3147
|
+
* the same `views` field is rendered as "بازدید" (Instagram/YouTube), "تماشا" (TikTok),
|
|
3148
|
+
* "نمایش" (X), "بیننده" (TV), "شنونده" (Radio) depending on the post's source.
|
|
3149
|
+
*/
|
|
3150
|
+
interface PostMetrics {
|
|
3151
|
+
/** Generic "consumption" metric — viewers / impressions / plays / page-views. */
|
|
3152
|
+
views?: number;
|
|
3153
|
+
likes?: number;
|
|
3154
|
+
comments?: number;
|
|
3155
|
+
/** Generic share count. */
|
|
3156
|
+
shares?: number;
|
|
3157
|
+
/** Reposts: X retweets, Threads reposts, Telegram forwards. */
|
|
3158
|
+
reposts?: number;
|
|
3159
|
+
/** Quote-with-comment: X quote-tweets, Threads quotes. */
|
|
3160
|
+
quotes?: number;
|
|
3161
|
+
/** Saves/bookmarks: IG, TikTok, LinkedIn. */
|
|
3162
|
+
saves?: number;
|
|
3163
|
+
/** Estimated reach / potential audience. */
|
|
3164
|
+
reach?: number;
|
|
3165
|
+
/** Engagement rate as 0..1 decimal (e.g. 0.034 = 3.4%). */
|
|
3166
|
+
engagementRate?: number;
|
|
3167
|
+
/** Broadcast: TV viewers / Radio listeners. Editorial: readers. One field, label per source. */
|
|
3168
|
+
audience?: number;
|
|
3169
|
+
/** Editorial: actual page-views distinct from `views`. */
|
|
3170
|
+
reads?: number;
|
|
3171
|
+
/** Editorial: SEO domain authority signal — also surfaced via `PostOutlet.domainAuthority`. */
|
|
3172
|
+
domainAuthority?: number;
|
|
3173
|
+
/** Reaction breakdown (Telegram emoji, LinkedIn 7-type, Facebook-style). */
|
|
3174
|
+
reactions?: ReactionBreakdown;
|
|
3021
3175
|
}
|
|
3022
|
-
|
|
3176
|
+
/**
|
|
3177
|
+
* Typed reaction breakdown. Sparse — only platforms that emit a given reaction fill it.
|
|
3178
|
+
* LinkedIn fills like/celebrate/support/love/insightful/funny.
|
|
3179
|
+
* Facebook fills like/love/care/haha/wow/sad/angry.
|
|
3180
|
+
* Telegram fills `emoji` with the raw map.
|
|
3181
|
+
*/
|
|
3182
|
+
interface ReactionBreakdown {
|
|
3183
|
+
like?: number;
|
|
3184
|
+
love?: number;
|
|
3185
|
+
celebrate?: number;
|
|
3186
|
+
support?: number;
|
|
3187
|
+
insightful?: number;
|
|
3188
|
+
funny?: number;
|
|
3189
|
+
/** Facebook-only — empathy reaction. */
|
|
3190
|
+
care?: number;
|
|
3191
|
+
/** Facebook-only — laughing reaction. */
|
|
3192
|
+
haha?: number;
|
|
3193
|
+
/** Facebook-only — surprised reaction. */
|
|
3194
|
+
wow?: number;
|
|
3195
|
+
/** Facebook-only — sad reaction. */
|
|
3196
|
+
sad?: number;
|
|
3197
|
+
/** Facebook-only — anger reaction. */
|
|
3198
|
+
angry?: number;
|
|
3199
|
+
/** Raw emoji → count map (Telegram channel reactions). */
|
|
3200
|
+
emoji?: Record<string, number>;
|
|
3201
|
+
}
|
|
3202
|
+
interface PostTag {
|
|
3023
3203
|
id: string;
|
|
3024
3204
|
label: string;
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
onClick: (post: PostData) => void;
|
|
3028
|
-
disabled?: boolean;
|
|
3029
|
-
hidden?: boolean;
|
|
3205
|
+
/** Optional CSS var (e.g. `--chart-1`) or hex color. Auto-assigned from label if omitted. */
|
|
3206
|
+
color?: string;
|
|
3030
3207
|
}
|
|
3031
|
-
|
|
3032
|
-
|
|
3033
|
-
|
|
3034
|
-
|
|
3035
|
-
|
|
3208
|
+
/**
|
|
3209
|
+
* Flags indicate which enrichments the product has attached to this post.
|
|
3210
|
+
* Consumers set these to show the matching chip in `<PostHeader>`.
|
|
3211
|
+
*/
|
|
3212
|
+
interface PostEnrichmentFlags {
|
|
3213
|
+
ocr?: boolean;
|
|
3214
|
+
transcript?: boolean;
|
|
3215
|
+
aiAnalysis?: boolean;
|
|
3216
|
+
commentCount?: number;
|
|
3036
3217
|
}
|
|
3037
|
-
|
|
3038
|
-
|
|
3039
|
-
|
|
3040
|
-
|
|
3041
|
-
timestamp: Date | string | number;
|
|
3042
|
-
sentiment?: PostSentiment;
|
|
3043
|
-
likes?: number;
|
|
3044
|
-
replies?: PostComment[];
|
|
3045
|
-
/** Pinned by post author (Instagram, YouTube). */
|
|
3218
|
+
/**
|
|
3219
|
+
* Contextual flags surfaced as chips or banners on the card. Independent of media-level status.
|
|
3220
|
+
*/
|
|
3221
|
+
interface PostFlags {
|
|
3046
3222
|
pinned?: boolean;
|
|
3047
|
-
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3223
|
+
edited?: boolean;
|
|
3224
|
+
/** Optional edit count, surfaced in tooltip. */
|
|
3225
|
+
editCount?: number;
|
|
3226
|
+
sponsored?: boolean;
|
|
3227
|
+
/** Post was deleted at source after we ingested it. */
|
|
3228
|
+
deletedAtSource?: boolean;
|
|
3229
|
+
/** Snapshot URL to our archived copy. */
|
|
3230
|
+
archivedSnapshotUrl?: string;
|
|
3231
|
+
/** Post-level sensitivity (distinct from per-media `sensitivity`). */
|
|
3232
|
+
sensitive?: PostMediaSensitivity;
|
|
3233
|
+
}
|
|
3234
|
+
/** Cluster / topic membership — links the post to a parent analytical grouping. */
|
|
3235
|
+
interface PostCluster {
|
|
3236
|
+
id: string;
|
|
3237
|
+
label: string;
|
|
3238
|
+
tone?: 'brand' | 'neutral' | 'warning';
|
|
3239
|
+
}
|
|
3240
|
+
/** "X reposted at Y" wrapper info. */
|
|
3241
|
+
interface PostRepostInfo {
|
|
3242
|
+
by: PostAuthor;
|
|
3243
|
+
at: Date | string | number;
|
|
3244
|
+
/** Optional retweet-with-comment / Telegram forward note. */
|
|
3245
|
+
comment?: string;
|
|
3246
|
+
}
|
|
3247
|
+
/** Position info when a post belongs to a multi-post thread. */
|
|
3248
|
+
interface PostThreadInfo {
|
|
3249
|
+
threadId: string;
|
|
3250
|
+
/** 1-indexed position in the thread. */
|
|
3251
|
+
position: number;
|
|
3252
|
+
total: number;
|
|
3253
|
+
/** Optional id of the next thread post — used to draw the connector to the next visible card. */
|
|
3254
|
+
nextId?: string;
|
|
3075
3255
|
}
|
|
3076
|
-
/** Platform-specific metadata, discriminated by `platform` (matches `PostData.source`). */
|
|
3077
3256
|
type PlatformMetadata = {
|
|
3078
3257
|
platform: 'instagram';
|
|
3079
3258
|
postType?: 'feed' | 'reel' | 'story' | 'carousel' | 'igtv';
|
|
@@ -3084,7 +3263,6 @@ type PlatformMetadata = {
|
|
|
3084
3263
|
};
|
|
3085
3264
|
saveCount?: number;
|
|
3086
3265
|
collaborators?: string[];
|
|
3087
|
-
/** Hashtags used in the post. */
|
|
3088
3266
|
hashtags?: string[];
|
|
3089
3267
|
} | {
|
|
3090
3268
|
platform: 'twitter';
|
|
@@ -3095,7 +3273,6 @@ type PlatformMetadata = {
|
|
|
3095
3273
|
quoteCount?: number;
|
|
3096
3274
|
bookmarkCount?: number;
|
|
3097
3275
|
isThread?: boolean;
|
|
3098
|
-
/** Count of additional posts in the thread. */
|
|
3099
3276
|
threadLength?: number;
|
|
3100
3277
|
} | {
|
|
3101
3278
|
platform: 'youtube';
|
|
@@ -3140,7 +3317,184 @@ type PlatformMetadata = {
|
|
|
3140
3317
|
replyControls?: 'anyone' | 'followed' | 'mentioned';
|
|
3141
3318
|
repostCount?: number;
|
|
3142
3319
|
quoteCount?: number;
|
|
3320
|
+
} | {
|
|
3321
|
+
platform: 'facebook';
|
|
3322
|
+
postType?: 'post' | 'photo' | 'video' | 'reel' | 'story' | 'event' | 'shared';
|
|
3323
|
+
reactions?: {
|
|
3324
|
+
like?: number;
|
|
3325
|
+
love?: number;
|
|
3326
|
+
care?: number;
|
|
3327
|
+
haha?: number;
|
|
3328
|
+
wow?: number;
|
|
3329
|
+
sad?: number;
|
|
3330
|
+
angry?: number;
|
|
3331
|
+
};
|
|
3332
|
+
shareCount?: number;
|
|
3333
|
+
/** Page name if posted on behalf of a page (vs personal profile). */
|
|
3334
|
+
pageName?: string;
|
|
3335
|
+
pageFollowers?: number;
|
|
3336
|
+
} | {
|
|
3337
|
+
platform: 'tv';
|
|
3338
|
+
airDate?: Date | string | number;
|
|
3339
|
+
durationSec?: number;
|
|
3340
|
+
programType?: 'news' | 'talk-show' | 'documentary' | 'interview' | 'live' | 'other';
|
|
3341
|
+
viewers?: number;
|
|
3342
|
+
replays?: number;
|
|
3343
|
+
} | {
|
|
3344
|
+
platform: 'radio';
|
|
3345
|
+
airDate?: Date | string | number;
|
|
3346
|
+
durationSec?: number;
|
|
3347
|
+
programType?: 'news' | 'talk-show' | 'music' | 'interview' | 'live' | 'other';
|
|
3348
|
+
listeners?: number;
|
|
3349
|
+
} | {
|
|
3350
|
+
platform: 'press';
|
|
3351
|
+
printedAt?: Date | string | number;
|
|
3352
|
+
/** Print edition: issue / page reference. */
|
|
3353
|
+
issue?: string;
|
|
3354
|
+
pageNumber?: number;
|
|
3355
|
+
/** Optional AVE (Ad Value Equivalent) — common press metric. */
|
|
3356
|
+
adValueEquivalent?: number;
|
|
3357
|
+
hashtags?: string[];
|
|
3358
|
+
} | {
|
|
3359
|
+
platform: 'web';
|
|
3360
|
+
contentType?: 'blog' | 'forum' | 'news' | 'review' | 'comment' | 'other';
|
|
3361
|
+
/** Reference to a parent thread / discussion if part of one. */
|
|
3362
|
+
threadUrl?: string;
|
|
3363
|
+
hashtags?: string[];
|
|
3143
3364
|
};
|
|
3365
|
+
interface PostData {
|
|
3366
|
+
id: string;
|
|
3367
|
+
/**
|
|
3368
|
+
* Source platform — full 11-source taxonomy (social + broadcast + editorial).
|
|
3369
|
+
* Header layout and metric labels dispatch on this value via `sourceCategory(source)`.
|
|
3370
|
+
*/
|
|
3371
|
+
source: PostSource;
|
|
3372
|
+
/** Headline (editorial), program/segment (broadcast), video title (YouTube). */
|
|
3373
|
+
title?: string;
|
|
3374
|
+
/** Present for social posts; optional for editorial/broadcast where `outlet` is the actor. */
|
|
3375
|
+
author?: PostAuthor;
|
|
3376
|
+
/** Editorial/broadcast outlet — used for press, web, tv, radio header variants. */
|
|
3377
|
+
outlet?: PostOutlet;
|
|
3378
|
+
body: PostBodyData;
|
|
3379
|
+
/** Post creation / publish / air time. Accepts Date, ISO string, or unix ms. */
|
|
3380
|
+
timestamp: Date | string | number;
|
|
3381
|
+
metrics?: PostMetrics;
|
|
3382
|
+
sentiment?: PostSentiment;
|
|
3383
|
+
/** Dominant emotion (9-class) — surfaced as a chip on the card. */
|
|
3384
|
+
emotion?: PostEmotion;
|
|
3385
|
+
/** Political flow classification — surfaced as a chip on the card. */
|
|
3386
|
+
flow?: PostFlow;
|
|
3387
|
+
severity?: PostSeverity;
|
|
3388
|
+
enrichments?: PostEnrichmentFlags;
|
|
3389
|
+
flags?: PostFlags;
|
|
3390
|
+
cluster?: PostCluster;
|
|
3391
|
+
/** User-defined category tags. */
|
|
3392
|
+
tags?: PostTag[];
|
|
3393
|
+
/** @deprecated Use `author.authorityScore` instead. Kept for backward compat. */
|
|
3394
|
+
authorityScore?: number;
|
|
3395
|
+
/** ISO language code detected for the post. */
|
|
3396
|
+
language?: string;
|
|
3397
|
+
/** URL to the post at the source platform. */
|
|
3398
|
+
sourceUrl?: string;
|
|
3399
|
+
/** Quoted/embedded post (X quote-tweets, Threads quotes, Telegram forwards-with-comment). */
|
|
3400
|
+
quoted?: PostData;
|
|
3401
|
+
/** Parent post when this is a reply. */
|
|
3402
|
+
parent?: PostData;
|
|
3403
|
+
/** Repost wrapper info — when present, render "X reposted" header strip above the card. */
|
|
3404
|
+
reposted?: PostRepostInfo;
|
|
3405
|
+
/** Thread position info — when present, draw the thread-connector hairline. */
|
|
3406
|
+
thread?: PostThreadInfo;
|
|
3407
|
+
/** Platform-specific metadata block (discriminated by source). */
|
|
3408
|
+
platformMeta?: PlatformMetadata;
|
|
3409
|
+
}
|
|
3410
|
+
interface PostAction {
|
|
3411
|
+
id: string;
|
|
3412
|
+
label: string;
|
|
3413
|
+
icon: LucideIcon;
|
|
3414
|
+
variant?: 'default' | 'danger';
|
|
3415
|
+
onClick: (post: PostData) => void;
|
|
3416
|
+
disabled?: boolean;
|
|
3417
|
+
hidden?: boolean;
|
|
3418
|
+
}
|
|
3419
|
+
/** Bulk action surfaced in the floating bottom bar when posts are selected. */
|
|
3420
|
+
interface PostBulkAction {
|
|
3421
|
+
id: string;
|
|
3422
|
+
label: string;
|
|
3423
|
+
icon: LucideIcon;
|
|
3424
|
+
variant?: 'default' | 'danger' | 'brand';
|
|
3425
|
+
/** Optional sub-options — rendered as dropdown menu when present. */
|
|
3426
|
+
options?: Array<{
|
|
3427
|
+
id: string;
|
|
3428
|
+
label: string;
|
|
3429
|
+
icon?: LucideIcon;
|
|
3430
|
+
}>;
|
|
3431
|
+
onClick: (selectedIds: string[], optionId?: string) => void;
|
|
3432
|
+
disabled?: boolean;
|
|
3433
|
+
hidden?: boolean;
|
|
3434
|
+
}
|
|
3435
|
+
interface PostCommentAuthor {
|
|
3436
|
+
name: string;
|
|
3437
|
+
handle?: string;
|
|
3438
|
+
avatarUrl?: string;
|
|
3439
|
+
verified?: boolean;
|
|
3440
|
+
/** Optional badge: "Moderator", "Subscriber", "Author", etc. — surfaced as a chip next to the name. */
|
|
3441
|
+
badge?: string;
|
|
3442
|
+
}
|
|
3443
|
+
interface PostComment {
|
|
3444
|
+
id: string;
|
|
3445
|
+
author: PostCommentAuthor;
|
|
3446
|
+
text: string;
|
|
3447
|
+
timestamp: Date | string | number;
|
|
3448
|
+
sentiment?: PostSentiment;
|
|
3449
|
+
likes?: number;
|
|
3450
|
+
replies?: PostComment[];
|
|
3451
|
+
/**
|
|
3452
|
+
* Total reply count (may exceed `replies.length` if pagination caps the nested
|
|
3453
|
+
* replies). Drives the "نمایش ۲۳ پاسخ" affordance.
|
|
3454
|
+
*/
|
|
3455
|
+
replyCount?: number;
|
|
3456
|
+
/** Pinned by post author (Instagram, YouTube). */
|
|
3457
|
+
pinned?: boolean;
|
|
3458
|
+
/** Indicates this is a reply from the original post author. */
|
|
3459
|
+
authorReply?: boolean;
|
|
3460
|
+
/** Comment was edited at source — show ویرایششده chip. */
|
|
3461
|
+
edited?: boolean;
|
|
3462
|
+
/** ISO language code; enables translation toggle when different from current locale. */
|
|
3463
|
+
language?: string;
|
|
3464
|
+
/** Hidden by source moderator / shadow-banned. */
|
|
3465
|
+
hiddenByModerator?: boolean;
|
|
3466
|
+
/** Typed reaction breakdown (Facebook 7-type, LinkedIn 7-type, YouTube hearts, etc.). */
|
|
3467
|
+
reactions?: ReactionBreakdown;
|
|
3468
|
+
/** AI-detected toxicity / hate-speech / spam score (0..1). Surfaces a flag chip when set. */
|
|
3469
|
+
toxicityScore?: number;
|
|
3470
|
+
/** Pre-translated body (if cached). */
|
|
3471
|
+
translatedText?: string;
|
|
3472
|
+
}
|
|
3473
|
+
type PostIntent = 'complaint' | 'praise' | 'question' | 'announcement' | 'comparison' | 'opinion' | 'info';
|
|
3474
|
+
interface PostAiEntity {
|
|
3475
|
+
text: string;
|
|
3476
|
+
type: 'person' | 'brand' | 'place' | 'product' | 'event' | 'organization';
|
|
3477
|
+
}
|
|
3478
|
+
interface PostAiAnalysis {
|
|
3479
|
+
/** Auto-generated summary of the post. */
|
|
3480
|
+
summary?: string;
|
|
3481
|
+
/** Key topics mentioned in the post. */
|
|
3482
|
+
topics?: string[];
|
|
3483
|
+
/** Named entities detected. */
|
|
3484
|
+
entities?: PostAiEntity[];
|
|
3485
|
+
/** Primary intent classification. */
|
|
3486
|
+
intent?: PostIntent;
|
|
3487
|
+
/** 9-class emotion distribution (raw counts or normalized). */
|
|
3488
|
+
emotions?: Partial<Record<PostEmotion, number>>;
|
|
3489
|
+
/** Flagged risks / sensitive content categories. */
|
|
3490
|
+
risks?: string[];
|
|
3491
|
+
/** Influence tier estimate for the author. */
|
|
3492
|
+
influenceTier?: PostAuthorityTier;
|
|
3493
|
+
/** Model confidence 0..1 for overall analysis. */
|
|
3494
|
+
confidence?: number;
|
|
3495
|
+
/** Analysis generation timestamp. */
|
|
3496
|
+
generatedAt?: Date | string | number;
|
|
3497
|
+
}
|
|
3144
3498
|
/** Extended post details — optionally attached to PostData when fetching full view. */
|
|
3145
3499
|
interface PostDetails {
|
|
3146
3500
|
comments?: PostComment[];
|
|
@@ -3153,25 +3507,44 @@ interface PostDetails {
|
|
|
3153
3507
|
platformMeta?: PlatformMetadata;
|
|
3154
3508
|
}
|
|
3155
3509
|
|
|
3510
|
+
declare function defaultActions(handlers?: {
|
|
3511
|
+
onOpenDetails?: (post: PostData) => void;
|
|
3512
|
+
}): PostAction[];
|
|
3156
3513
|
declare const postCardVariants: (props?: ({
|
|
3157
|
-
|
|
3514
|
+
view?: "grid" | "compact" | "comfortable" | null | undefined;
|
|
3158
3515
|
selected?: boolean | null | undefined;
|
|
3516
|
+
active?: boolean | null | undefined;
|
|
3159
3517
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
3160
3518
|
interface PostCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'onSelect'>, VariantProps<typeof postCardVariants> {
|
|
3161
3519
|
post: PostData;
|
|
3520
|
+
/** Layout mode. Replaces the legacy `density` prop. */
|
|
3521
|
+
view?: PostView;
|
|
3522
|
+
/** @deprecated Use `view` instead. */
|
|
3162
3523
|
density?: PostDensity;
|
|
3163
3524
|
selected?: boolean;
|
|
3525
|
+
/** True when the card represents the post currently open in the details drawer. */
|
|
3526
|
+
active?: boolean;
|
|
3164
3527
|
read?: boolean;
|
|
3165
3528
|
actions?: PostAction[];
|
|
3529
|
+
selectable?: boolean;
|
|
3166
3530
|
onOpen?: (post: PostData) => void;
|
|
3167
3531
|
onSelect?: (post: PostData, selected: boolean) => void;
|
|
3168
|
-
selectable?: boolean;
|
|
3169
|
-
/** Fired when user clicks the details action (Maximize2 icon). Wires up the default details action. */
|
|
3170
3532
|
onOpenDetails?: (post: PostData) => void;
|
|
3533
|
+
onOpenQuoted?: (post: PostData) => void;
|
|
3534
|
+
onRetryMedia?: (item: PostMediaItem) => void;
|
|
3535
|
+
onClusterClick?: (cluster: NonNullable<PostData['cluster']>) => void;
|
|
3536
|
+
onAuthorClick?: (authorId: string | undefined) => void;
|
|
3537
|
+
/** When set, the author HoverCard surfaces a primary "مشاهده اطلاعات صفحه" button
|
|
3538
|
+
* that routes to the author's product profile page. */
|
|
3539
|
+
onAuthorProfile?: (author: NonNullable<PostData['author']>) => void;
|
|
3540
|
+
/** When set, the author HoverCard surfaces a secondary "صفحهی تحلیل پروفایل"
|
|
3541
|
+
* button that routes to the deeper analytics dashboard for the author. */
|
|
3542
|
+
onAuthorAnalytics?: (author: NonNullable<PostData['author']>) => void;
|
|
3543
|
+
/** Optional translation handler — when provided AND `post.language !== 'fa'`,
|
|
3544
|
+
* the card surfaces a "ترجمه به فارسی" button above the body. Return the
|
|
3545
|
+
* translated text (may return a Promise for async LLM calls). */
|
|
3546
|
+
onTranslate?: (post: PostData) => Promise<string> | string;
|
|
3171
3547
|
}
|
|
3172
|
-
declare function defaultActions(handlers?: {
|
|
3173
|
-
onOpenDetails?: (post: PostData) => void;
|
|
3174
|
-
}): PostAction[];
|
|
3175
3548
|
declare const PostCard: React$1.ForwardRefExoticComponent<PostCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3176
3549
|
|
|
3177
3550
|
declare const postHeaderVariants: (props?: ({
|
|
@@ -3181,14 +3554,50 @@ interface PostHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, '
|
|
|
3181
3554
|
author: PostAuthor;
|
|
3182
3555
|
platform: PostPlatform;
|
|
3183
3556
|
timestamp: Date | string | number;
|
|
3557
|
+
/**
|
|
3558
|
+
* @deprecated Sentiment is now shown only in the `PostSignals` chip row to avoid
|
|
3559
|
+
* doubling the signal. The prop is accepted for backward compatibility but no
|
|
3560
|
+
* longer rendered as a dot next to the handle.
|
|
3561
|
+
*/
|
|
3184
3562
|
sentiment?: PostSentiment;
|
|
3185
3563
|
enrichments?: PostEnrichmentFlags;
|
|
3186
3564
|
density?: PostDensity;
|
|
3187
3565
|
/** Override avatar size. */
|
|
3188
3566
|
avatarClassName?: string;
|
|
3567
|
+
/**
|
|
3568
|
+
* Optional handler — when set, the author HoverCard renders a primary action
|
|
3569
|
+
* button "مشاهده اطلاعات صفحه" that routes to the author's dedicated profile
|
|
3570
|
+
* page in your product.
|
|
3571
|
+
*/
|
|
3572
|
+
onAuthorProfile?: (author: PostAuthor) => void;
|
|
3573
|
+
/**
|
|
3574
|
+
* Optional handler — when set, the author HoverCard renders a secondary action
|
|
3575
|
+
* button "صفحهی تحلیل پروفایل" that routes to the deeper analytics dashboard
|
|
3576
|
+
* for the author (separate from their profile page).
|
|
3577
|
+
*/
|
|
3578
|
+
onAuthorAnalytics?: (author: PostAuthor) => void;
|
|
3189
3579
|
}
|
|
3190
3580
|
declare const PostHeader: React$1.ForwardRefExoticComponent<PostHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3191
3581
|
|
|
3582
|
+
interface PostHeaderBroadcastProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3583
|
+
source: 'tv' | 'radio';
|
|
3584
|
+
outlet: PostOutlet;
|
|
3585
|
+
timestamp: Date | string | number;
|
|
3586
|
+
enrichments?: PostEnrichmentFlags;
|
|
3587
|
+
density?: PostDensity;
|
|
3588
|
+
}
|
|
3589
|
+
declare const PostHeaderBroadcast: React$1.ForwardRefExoticComponent<PostHeaderBroadcastProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3590
|
+
interface PostHeaderEditorialProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3591
|
+
source: 'press' | 'web';
|
|
3592
|
+
outlet: PostOutlet;
|
|
3593
|
+
timestamp: Date | string | number;
|
|
3594
|
+
enrichments?: PostEnrichmentFlags;
|
|
3595
|
+
density?: PostDensity;
|
|
3596
|
+
/** Optional author byline (for press articles authored by an individual journalist). */
|
|
3597
|
+
byline?: PostAuthor;
|
|
3598
|
+
}
|
|
3599
|
+
declare const PostHeaderEditorial: React$1.ForwardRefExoticComponent<PostHeaderEditorialProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3600
|
+
|
|
3192
3601
|
/**
|
|
3193
3602
|
* Aspect-ratio helpers for post media.
|
|
3194
3603
|
*
|
|
@@ -3215,6 +3624,98 @@ interface PostBodyProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
3215
3624
|
}
|
|
3216
3625
|
declare const PostBody: React$1.ForwardRefExoticComponent<PostBodyProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3217
3626
|
|
|
3627
|
+
/**
|
|
3628
|
+
* Rule: never vertically center an `<img>` with `mx-auto` + `h-full`. `<img>` is
|
|
3629
|
+
* `display: inline` by default so `mx-auto` is a no-op and the image rests on the
|
|
3630
|
+
* text baseline. Use the centered-container pattern below.
|
|
3631
|
+
*/
|
|
3632
|
+
declare const CENTERED_CONTAINER_CLS = "relative w-full overflow-hidden rounded-md bg-muted flex items-center justify-center";
|
|
3633
|
+
/**
|
|
3634
|
+
* Foreground image classes. `block` removes the baseline inline behavior;
|
|
3635
|
+
* `max-*` + `w-auto h-auto` + `object-contain` fit naturally inside the container.
|
|
3636
|
+
*/
|
|
3637
|
+
declare const FOREGROUND_IMG_CLS = "relative block max-h-full max-w-full w-auto h-auto object-contain";
|
|
3638
|
+
declare const BlurBackdrop: React$1.FC<{
|
|
3639
|
+
src?: string;
|
|
3640
|
+
}>;
|
|
3641
|
+
type PostMediaPlaceholderVariant = 'loading' | 'failed' | 'unavailable';
|
|
3642
|
+
interface PostMediaPlaceholderProps {
|
|
3643
|
+
variant: PostMediaPlaceholderVariant;
|
|
3644
|
+
/** Optional reason / human note. */
|
|
3645
|
+
reason?: string;
|
|
3646
|
+
/** CSS aspect ratio for the placeholder box (e.g. `"4 / 5"`). Defaults to `"4 / 5"`. */
|
|
3647
|
+
aspectRatio?: string;
|
|
3648
|
+
/** Optional cap. */
|
|
3649
|
+
maxHeight?: string;
|
|
3650
|
+
/** Retry handler — only rendered when `variant === 'failed'`. */
|
|
3651
|
+
onRetry?: () => void;
|
|
3652
|
+
className?: string;
|
|
3653
|
+
}
|
|
3654
|
+
declare const PostMediaPlaceholder: React$1.ForwardRefExoticComponent<PostMediaPlaceholderProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3655
|
+
interface PostMediaSourceRemovedProps {
|
|
3656
|
+
/** Optional URL to our archive snapshot. */
|
|
3657
|
+
archiveUrl?: string;
|
|
3658
|
+
/** Optional date the snapshot was taken. */
|
|
3659
|
+
archivedAt?: Date | string | number;
|
|
3660
|
+
className?: string;
|
|
3661
|
+
}
|
|
3662
|
+
declare const PostMediaSourceRemoved: React$1.ForwardRefExoticComponent<PostMediaSourceRemovedProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3663
|
+
declare const SENSITIVITY_LABEL: Record<string, string>;
|
|
3664
|
+
declare const PostMediaSensitiveOverlay: React$1.FC<{
|
|
3665
|
+
sensitivity: NonNullable<PostMediaItem['sensitivity']>;
|
|
3666
|
+
onReveal: () => void;
|
|
3667
|
+
}>;
|
|
3668
|
+
declare const PostMediaSingle: React$1.FC<{
|
|
3669
|
+
item: PostMediaItem;
|
|
3670
|
+
context: AspectContext;
|
|
3671
|
+
onRetry?: (item: PostMediaItem) => void;
|
|
3672
|
+
className?: string;
|
|
3673
|
+
}>;
|
|
3674
|
+
declare const PostMediaGrid: React$1.FC<{
|
|
3675
|
+
items: PostMediaItem[];
|
|
3676
|
+
context: AspectContext;
|
|
3677
|
+
onRetry?: (item: PostMediaItem) => void;
|
|
3678
|
+
className?: string;
|
|
3679
|
+
}>;
|
|
3680
|
+
declare const PostMediaCarousel: React$1.FC<{
|
|
3681
|
+
items: PostMediaItem[];
|
|
3682
|
+
context: AspectContext;
|
|
3683
|
+
onRetry?: (item: PostMediaItem) => void;
|
|
3684
|
+
className?: string;
|
|
3685
|
+
}>;
|
|
3686
|
+
declare const PostMediaVideo: React$1.FC<{
|
|
3687
|
+
item: PostMediaItem;
|
|
3688
|
+
context: AspectContext;
|
|
3689
|
+
onRetry?: (item: PostMediaItem) => void;
|
|
3690
|
+
className?: string;
|
|
3691
|
+
}>;
|
|
3692
|
+
declare const PostMediaAudio: React$1.FC<{
|
|
3693
|
+
item: PostMediaItem;
|
|
3694
|
+
context: AspectContext;
|
|
3695
|
+
className?: string;
|
|
3696
|
+
}>;
|
|
3697
|
+
declare const PostMediaStory: React$1.FC<{
|
|
3698
|
+
story: StoryItem;
|
|
3699
|
+
context: AspectContext;
|
|
3700
|
+
/** When true, no fixed 9:16 frame — used inside Highlight strip cells. */
|
|
3701
|
+
fillCell?: boolean;
|
|
3702
|
+
className?: string;
|
|
3703
|
+
}>;
|
|
3704
|
+
declare const PostMediaHighlight: React$1.FC<{
|
|
3705
|
+
title: string;
|
|
3706
|
+
coverUrl?: string;
|
|
3707
|
+
stories: StoryItem[];
|
|
3708
|
+
context: AspectContext;
|
|
3709
|
+
className?: string;
|
|
3710
|
+
}>;
|
|
3711
|
+
interface PostMediaProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3712
|
+
body: PostBodyData;
|
|
3713
|
+
context: AspectContext;
|
|
3714
|
+
/** Retry callback for failed media items. */
|
|
3715
|
+
onRetry?: (item: PostMediaItem) => void;
|
|
3716
|
+
}
|
|
3717
|
+
declare const PostMedia: React$1.ForwardRefExoticComponent<PostMediaProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3718
|
+
|
|
3218
3719
|
interface PostActionsProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3219
3720
|
post: PostData;
|
|
3220
3721
|
actions: PostAction[];
|
|
@@ -3234,10 +3735,103 @@ interface PostMetadataProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
3234
3735
|
}
|
|
3235
3736
|
declare const PostMetadata: React$1.ForwardRefExoticComponent<PostMetadataProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3236
3737
|
|
|
3738
|
+
interface PostSignalsProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3739
|
+
sentiment?: PostSentiment;
|
|
3740
|
+
emotion?: EmotionKey;
|
|
3741
|
+
flow?: FlowKey;
|
|
3742
|
+
severity?: PostSeverity;
|
|
3743
|
+
cluster?: PostCluster;
|
|
3744
|
+
/** ISO language code (rendered as uppercase chip when not 'fa'). */
|
|
3745
|
+
language?: string;
|
|
3746
|
+
/** When true, hide emotion + flow + cluster + language to keep the row scannable in compact density. */
|
|
3747
|
+
compact?: boolean;
|
|
3748
|
+
/** Click handler on the cluster chip — typically filters the list. */
|
|
3749
|
+
onClusterClick?: (cluster: PostCluster) => void;
|
|
3750
|
+
}
|
|
3751
|
+
/**
|
|
3752
|
+
* Domain-signal chip row: sentiment, emotion, flow, severity, cluster, language.
|
|
3753
|
+
* Rendered in the `<PostCard>` footer. Designed to wrap when narrow.
|
|
3754
|
+
*/
|
|
3755
|
+
declare const PostSignals: React$1.ForwardRefExoticComponent<PostSignalsProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3756
|
+
|
|
3757
|
+
interface PostRepostHeaderProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3758
|
+
reposted: PostRepostInfo;
|
|
3759
|
+
/** Optional click handler on the reposter chip — typically opens the reposter's profile. */
|
|
3760
|
+
onAuthorClick?: (authorId: string | undefined) => void;
|
|
3761
|
+
}
|
|
3762
|
+
/**
|
|
3763
|
+
* Slim wrapper strip rendered above a `<PostCard>` when the post is surfaced through
|
|
3764
|
+
* a repost / retweet / forward. Matches the X, Threads, Telegram-channel-forward UX.
|
|
3765
|
+
*/
|
|
3766
|
+
declare const PostRepostHeader: React$1.ForwardRefExoticComponent<PostRepostHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3767
|
+
|
|
3768
|
+
interface PostQuotedEmbedProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3769
|
+
/** The post being quoted / referenced. */
|
|
3770
|
+
post: PostData;
|
|
3771
|
+
/** Click handler — typically navigates to the quoted post's details surface. */
|
|
3772
|
+
onOpen?: (post: PostData) => void;
|
|
3773
|
+
}
|
|
3774
|
+
/**
|
|
3775
|
+
* Nested compact card rendered inside a `<PostCard>` body when the post quotes,
|
|
3776
|
+
* embeds, or replies to another post. Read-only — no metrics, no action buttons,
|
|
3777
|
+
* no recursive embeds. Matches the X quote-tweet stacking pattern.
|
|
3778
|
+
*
|
|
3779
|
+
* RTL: indented from the inline-start via `ms-*` (visually right-indent in RTL).
|
|
3780
|
+
*/
|
|
3781
|
+
declare const PostQuotedEmbed: React$1.ForwardRefExoticComponent<PostQuotedEmbedProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3782
|
+
|
|
3783
|
+
interface PostThreadConnectorProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3784
|
+
thread: PostThreadInfo;
|
|
3785
|
+
/** When true, draws the connecting hairline that visually links this card to the next thread post. */
|
|
3786
|
+
showLine?: boolean;
|
|
3787
|
+
}
|
|
3788
|
+
/**
|
|
3789
|
+
* Renders the thread-position chip and the optional vertical hairline that connects
|
|
3790
|
+
* consecutive posts in the same thread. The hairline is positioned on the inline-start
|
|
3791
|
+
* edge of the card (right edge in RTL) and is purely visual — no interaction.
|
|
3792
|
+
*
|
|
3793
|
+
* The parent `<PostCard>` is responsible for rendering this in a `relative` container
|
|
3794
|
+
* so the absolute hairline can anchor to the card's full height.
|
|
3795
|
+
*/
|
|
3796
|
+
declare const PostThreadConnector: React$1.ForwardRefExoticComponent<PostThreadConnectorProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3797
|
+
|
|
3798
|
+
interface PostCrisisBannerProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3799
|
+
severity: PostSeverity;
|
|
3800
|
+
/** Optional override label — defaults to the Persian severity name. */
|
|
3801
|
+
label?: string;
|
|
3802
|
+
}
|
|
3803
|
+
/**
|
|
3804
|
+
* Slim banner strip rendered at the top of a `<PostCard>` to call attention to a
|
|
3805
|
+
* crisis / high-severity mention. Animates a pulse dot for `critical`. Subtle
|
|
3806
|
+
* by design — not a full-card red bleed, so the post stays scannable.
|
|
3807
|
+
*/
|
|
3808
|
+
declare const PostCrisisBanner: React$1.ForwardRefExoticComponent<PostCrisisBannerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3809
|
+
|
|
3810
|
+
interface PostUrlPreviewProps extends React$1.HTMLAttributes<HTMLAnchorElement> {
|
|
3811
|
+
preview: PostUrlPreview$1;
|
|
3812
|
+
/** Compact layout (no description, smaller thumbnail). */
|
|
3813
|
+
compact?: boolean;
|
|
3814
|
+
}
|
|
3815
|
+
/**
|
|
3816
|
+
* Open-Graph–style URL preview card rendered inside a `<PostBody>` when the post
|
|
3817
|
+
* text contains a notable link. Acts as an anchor — opens in a new tab.
|
|
3818
|
+
*
|
|
3819
|
+
* Layout: thumbnail (when present) on inline-end, text block on inline-start.
|
|
3820
|
+
* In RTL that lines up so the image sits to the visual right — mirrors Slack /
|
|
3821
|
+
* Discord / Twitter preview cards.
|
|
3822
|
+
*/
|
|
3823
|
+
declare const PostUrlPreview: React$1.ForwardRefExoticComponent<PostUrlPreviewProps & React$1.RefAttributes<HTMLAnchorElement>>;
|
|
3824
|
+
|
|
3825
|
+
type PostGroupBy = 'none' | 'platform' | 'sentiment' | 'date';
|
|
3826
|
+
type PostSortBy = 'newest' | 'oldest' | 'engagement' | 'authority' | 'severity';
|
|
3237
3827
|
interface PostListProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'onSelect'> {
|
|
3238
3828
|
posts: PostData[];
|
|
3239
|
-
/** Controlled
|
|
3829
|
+
/** Controlled view. If omitted, the list manages its own state (persisted to localStorage). */
|
|
3830
|
+
view?: PostView;
|
|
3831
|
+
onViewChange?: (view: PostView) => void;
|
|
3832
|
+
/** @deprecated Use `view` instead. */
|
|
3240
3833
|
density?: PostDensity;
|
|
3834
|
+
/** @deprecated Use `onViewChange` instead. */
|
|
3241
3835
|
onDensityChange?: (density: PostDensity) => void;
|
|
3242
3836
|
/** ID of the currently open/selected post (for URL deep-linking). */
|
|
3243
3837
|
activeId?: string;
|
|
@@ -3249,100 +3843,154 @@ interface PostListProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'on
|
|
|
3249
3843
|
onOpen?: (post: PostData) => void;
|
|
3250
3844
|
/** Fired when the user triggers the default "view details" action on any card. */
|
|
3251
3845
|
onOpenDetails?: (post: PostData) => void;
|
|
3846
|
+
onOpenQuoted?: (post: PostData) => void;
|
|
3847
|
+
onRetryMedia?: (item: PostMediaItem) => void;
|
|
3848
|
+
onClusterClick?: (cluster: NonNullable<PostData['cluster']>) => void;
|
|
3849
|
+
/** Forwarded to each PostCard — drives the hover-card "go to analytics page" link. */
|
|
3850
|
+
onAuthorAnalytics?: (author: NonNullable<PostData['author']>) => void;
|
|
3851
|
+
/** Forwarded to each PostCard — drives the hover-card "view profile page" link. */
|
|
3852
|
+
onAuthorProfile?: (author: NonNullable<PostData['author']>) => void;
|
|
3853
|
+
/** Forwarded to each PostCard — drives the "ترجمه به فارسی" button on non-Persian posts. */
|
|
3854
|
+
onTranslate?: (post: PostData) => Promise<string> | string;
|
|
3252
3855
|
/** Per-post action set. If omitted, each card uses its defaults. */
|
|
3253
3856
|
actions?: PostAction[];
|
|
3254
|
-
/**
|
|
3857
|
+
/** Bulk actions surfaced in the floating bar when posts are selected. */
|
|
3858
|
+
bulkActions?: PostBulkAction[];
|
|
3859
|
+
/** Group rendering: split the list into sticky-header sections. */
|
|
3860
|
+
groupBy?: PostGroupBy;
|
|
3861
|
+
/** Client-side sort applied to `posts` before render. */
|
|
3862
|
+
sortBy?: PostSortBy;
|
|
3863
|
+
/** Soft search filter — matches body text or title (case-insensitive). */
|
|
3864
|
+
searchQuery?: string;
|
|
3865
|
+
/** Render the toolbar (view toggle + extras). Defaults to true. */
|
|
3255
3866
|
showToolbar?: boolean;
|
|
3256
|
-
/** Custom toolbar content rendered next to the
|
|
3867
|
+
/** Custom toolbar content rendered next to the view toggle. */
|
|
3257
3868
|
toolbarExtra?: React$1.ReactNode;
|
|
3869
|
+
/** Loading state — replaces list with skeleton or custom node. */
|
|
3870
|
+
isLoading?: boolean;
|
|
3871
|
+
loadingState?: React$1.ReactNode;
|
|
3872
|
+
/** Error state — replaces list when set. */
|
|
3873
|
+
error?: unknown;
|
|
3874
|
+
errorState?: React$1.ReactNode;
|
|
3875
|
+
/** Empty state — shown when `posts.length === 0` after filtering. */
|
|
3876
|
+
emptyState?: React$1.ReactNode;
|
|
3877
|
+
/** Hide the floating bulk action bar even when posts are selected. */
|
|
3878
|
+
hideBulkBar?: boolean;
|
|
3258
3879
|
}
|
|
3259
3880
|
declare const PostList: React$1.ForwardRefExoticComponent<PostListProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3260
3881
|
|
|
3882
|
+
interface PostBulkActionBarProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'onClick'> {
|
|
3883
|
+
selectedCount: number;
|
|
3884
|
+
selectedIds: string[];
|
|
3885
|
+
actions?: PostBulkAction[];
|
|
3886
|
+
onClear?: () => void;
|
|
3887
|
+
}
|
|
3261
3888
|
/**
|
|
3262
|
-
*
|
|
3263
|
-
*
|
|
3264
|
-
*
|
|
3265
|
-
*/
|
|
3266
|
-
type ExtendedPlatform = SocialPlatform | 'tv' | 'radio' | 'press';
|
|
3267
|
-
/**
|
|
3268
|
-
* Metrics shape varies by platform — social posts have likes/comments,
|
|
3269
|
-
* TV/radio clips have viewers/listeners, news articles often just have
|
|
3270
|
-
* a share count or comment-thread total. All optional.
|
|
3889
|
+
* Floating bulk-action bar — appears at the bottom of the viewport when one or
|
|
3890
|
+
* more posts are selected in `<PostList>`. Matches the Gmail / Linear / Notion
|
|
3891
|
+
* selection bar pattern. Dismiss with Esc or by clicking the clear button.
|
|
3271
3892
|
*/
|
|
3272
|
-
|
|
3273
|
-
likes?: number;
|
|
3274
|
-
comments?: number;
|
|
3275
|
-
shares?: number;
|
|
3276
|
-
views?: number;
|
|
3277
|
-
/** TV viewers OR radio listeners (different display label, same number type) */
|
|
3278
|
-
audience?: number;
|
|
3279
|
-
}
|
|
3280
|
-
interface MultiPlatformPostData {
|
|
3281
|
-
/** Stable id for keys + analytics */
|
|
3282
|
-
id: string;
|
|
3283
|
-
platform: ExtendedPlatform;
|
|
3284
|
-
/** Outlet/account display name (e.g. "BBC فارسی", "@news_ir", "صدا و سیما"). */
|
|
3285
|
-
sourceName: string;
|
|
3286
|
-
/** Optional headline — typical for news + TV/radio segments, often absent on social. */
|
|
3287
|
-
title?: React$1.ReactNode;
|
|
3288
|
-
/** Body text or transcript excerpt. */
|
|
3289
|
-
body: React$1.ReactNode;
|
|
3290
|
-
/** Publication / broadcast time. Date or ISO string. */
|
|
3291
|
-
publishedAt: Date | string;
|
|
3292
|
-
/** Optional thumbnail (post image, article hero, video still). */
|
|
3293
|
-
thumbnailUrl?: string;
|
|
3294
|
-
/**
|
|
3295
|
-
* Optional clip duration in **seconds** — only meaningful for TV / radio /
|
|
3296
|
-
* video. Rendered as `MM:SS` or `HH:MM:SS`.
|
|
3297
|
-
*/
|
|
3298
|
-
durationSec?: number;
|
|
3299
|
-
metrics?: MultiPlatformMetrics;
|
|
3300
|
-
/** Optional URL to the source. When set, the card gains an "open at source" affordance. */
|
|
3301
|
-
sourceUrl?: string;
|
|
3302
|
-
/** Optional language tag for the body. Renders a small chip when set. */
|
|
3303
|
-
language?: string;
|
|
3304
|
-
}
|
|
3305
|
-
interface MultiPlatformPostCardProps extends Omit<React$1.HTMLAttributes<HTMLElement>, 'onClick'> {
|
|
3306
|
-
post: MultiPlatformPostData;
|
|
3307
|
-
/** Make the entire card clickable (opens sourceUrl in new tab if not custom) */
|
|
3308
|
-
onCardClick?: (post: MultiPlatformPostData) => void;
|
|
3309
|
-
/** Compact density hides body excerpt + thumbnail */
|
|
3310
|
-
density?: 'compact' | 'comfortable';
|
|
3311
|
-
/** Locale for labels + relative-time formatting */
|
|
3312
|
-
locale?: SupportedLocale;
|
|
3313
|
-
}
|
|
3314
|
-
declare const MultiPlatformPostCard: React$1.ForwardRefExoticComponent<MultiPlatformPostCardProps & React$1.RefAttributes<HTMLElement>>;
|
|
3893
|
+
declare const PostBulkActionBar: React$1.ForwardRefExoticComponent<PostBulkActionBarProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3315
3894
|
|
|
3316
3895
|
type PostDetailsTab = 'post' | 'comments' | 'analysis' | 'transcript';
|
|
3317
|
-
interface
|
|
3318
|
-
|
|
3319
|
-
open: boolean;
|
|
3320
|
-
|
|
3321
|
-
/** The post being viewed. If null/undefined, the modal renders nothing. */
|
|
3322
|
-
post?: PostData | null;
|
|
3323
|
-
/** Extended details — comments, AI analysis, OCR, platform metadata. */
|
|
3896
|
+
interface PostDetailsDrawerProps {
|
|
3897
|
+
open?: boolean;
|
|
3898
|
+
onOpenChange?: (open: boolean) => void;
|
|
3899
|
+
post: PostData;
|
|
3324
3900
|
details?: PostDetails;
|
|
3325
|
-
/**
|
|
3326
|
-
|
|
3327
|
-
/** Loading state — true while fetching extended details. */
|
|
3328
|
-
isLoading?: boolean;
|
|
3329
|
-
/** Error state — when set, renders an error panel with optional retry. */
|
|
3330
|
-
error?: string | Error | null;
|
|
3331
|
-
/** Fires when user clicks "retry" on the error panel. */
|
|
3332
|
-
onRetry?: () => void;
|
|
3333
|
-
/** Which tab to open first @default "post" */
|
|
3334
|
-
defaultTab?: PostDetailsTab;
|
|
3335
|
-
/** Dialog size. @default "lg" (~1024px) */
|
|
3336
|
-
size?: 'md' | 'lg' | 'xl';
|
|
3337
|
-
/** Show the bookmark toggle. When `onBookmark` is set, the button appears. */
|
|
3901
|
+
/** Details are being fetched asynchronously — show loading state in tabs. */
|
|
3902
|
+
isLoadingDetails?: boolean;
|
|
3338
3903
|
bookmarked?: boolean;
|
|
3339
3904
|
onBookmark?: (post: PostData, next: boolean) => void;
|
|
3340
|
-
/** Override default clipboard writer. */
|
|
3341
3905
|
onCopyLink?: (post: PostData, url: string) => void;
|
|
3342
|
-
|
|
3343
|
-
|
|
3906
|
+
onOpenSource?: (post: PostData) => void;
|
|
3907
|
+
onRetryMedia?: (item: PostMediaItem) => void;
|
|
3908
|
+
/** Navigate to the next post in the parent list (fires when j is pressed). */
|
|
3909
|
+
onNext?: () => void;
|
|
3910
|
+
/** Navigate to the previous post in the parent list (fires when k is pressed). */
|
|
3911
|
+
onPrevious?: () => void;
|
|
3912
|
+
defaultTab?: PostDetailsTab;
|
|
3913
|
+
/** Custom action node rendered next to the default header actions. */
|
|
3914
|
+
extraActions?: React$1.ReactNode;
|
|
3915
|
+
/** Optional translation handler. When provided, a "نمایش ترجمه" toggle appears on the post tab. */
|
|
3916
|
+
onTranslate?: (post: PostData) => Promise<string> | string;
|
|
3917
|
+
/** Optional like-comment handler. */
|
|
3918
|
+
onLikeComment?: (commentId: string) => void;
|
|
3919
|
+
/**
|
|
3920
|
+
* Optional translation handler for a comment. When provided AND the comment's
|
|
3921
|
+
* `language !== 'fa'`, an inline "ترجمه" button appears under the comment body.
|
|
3922
|
+
* If the comment already has a `translatedText` cached, the toggle uses that
|
|
3923
|
+
* cached value and never calls this handler.
|
|
3924
|
+
*/
|
|
3925
|
+
onTranslateComment?: (comment: PostComment) => Promise<string> | string;
|
|
3344
3926
|
}
|
|
3345
|
-
|
|
3927
|
+
/**
|
|
3928
|
+
* Right-aligned side panel for inspecting a post in depth. The single canonical
|
|
3929
|
+
* detail surface (Sheet handles its own mobile bottom-sheet fallback via the
|
|
3930
|
+
* `useIsMobile` hook inside Radix).
|
|
3931
|
+
*
|
|
3932
|
+
* Keyboard:
|
|
3933
|
+
* - Esc → close (handled by Sheet)
|
|
3934
|
+
* - j / ArrowDown → onNext
|
|
3935
|
+
* - k / ArrowUp → onPrevious
|
|
3936
|
+
*/
|
|
3937
|
+
declare const PostDetailsDrawer: React$1.ForwardRefExoticComponent<PostDetailsDrawerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3938
|
+
|
|
3939
|
+
type SupportedMetricLocale = 'fa' | 'en';
|
|
3940
|
+
type MetricKey = keyof PostMetrics;
|
|
3941
|
+
/**
|
|
3942
|
+
* Resolve a metric label for a given source + key + locale.
|
|
3943
|
+
*
|
|
3944
|
+
* Lookup order:
|
|
3945
|
+
* 1. Source-specific override (e.g. tiktok.views → "تماشا")
|
|
3946
|
+
* 2. Default for that locale (e.g. views → "بازدید")
|
|
3947
|
+
*
|
|
3948
|
+
* Never returns `undefined` — falls back to default labels.
|
|
3949
|
+
*/
|
|
3950
|
+
declare function getMetricLabel(source: PostSource, key: MetricKey, locale?: SupportedMetricLocale): string;
|
|
3951
|
+
|
|
3952
|
+
/**
|
|
3953
|
+
* Per-source metadata used by `<PostHeader>`, `<PostMetrics>`, badges, and the source-aware
|
|
3954
|
+
* default actions. This is the single source of truth — adding a new platform = adding
|
|
3955
|
+
* one entry here + one CSS var + one label entry in `post-metric-labels.ts`.
|
|
3956
|
+
*
|
|
3957
|
+
* Brand colors are referenced as CSS variables (`--social-platform-*`) and resolved at
|
|
3958
|
+
* runtime so the dark/light theme can adapt where needed (twitter, threads, press, web).
|
|
3959
|
+
*/
|
|
3960
|
+
type SourceIconSource =
|
|
3961
|
+
/** Icon comes from the brand-SVG set in `<SocialPlatformBadge>` (7 social platforms). */
|
|
3962
|
+
{
|
|
3963
|
+
kind: 'social-brand';
|
|
3964
|
+
}
|
|
3965
|
+
/** Icon is a generic Lucide glyph (broadcast / editorial sources). */
|
|
3966
|
+
| {
|
|
3967
|
+
kind: 'lucide';
|
|
3968
|
+
icon: LucideIcon;
|
|
3969
|
+
};
|
|
3970
|
+
interface PostSourceConfig {
|
|
3971
|
+
/** English label, displayed when `showLabel` is on. */
|
|
3972
|
+
label: string;
|
|
3973
|
+
/** Persian (fa) label, for fa-locale headers and tooltips. */
|
|
3974
|
+
labelFa: string;
|
|
3975
|
+
/** Category: drives header layout switch. */
|
|
3976
|
+
category: PostSourceCategory;
|
|
3977
|
+
/** CSS variable name (without the `var()` wrapper). */
|
|
3978
|
+
colorVar: string;
|
|
3979
|
+
/** How to render the icon for this source. */
|
|
3980
|
+
icon: SourceIconSource;
|
|
3981
|
+
/**
|
|
3982
|
+
* Default metric order — which metric keys to show by default and in what order.
|
|
3983
|
+
* Consumers can override per-card via PostMetadata's `metricsOrder` prop.
|
|
3984
|
+
*/
|
|
3985
|
+
defaultMetrics: ReadonlyArray<keyof PostMetrics>;
|
|
3986
|
+
}
|
|
3987
|
+
/** Look up the per-source config block. */
|
|
3988
|
+
declare function getPostSourceConfig(source: PostSource): PostSourceConfig;
|
|
3989
|
+
/**
|
|
3990
|
+
* Convenience: read the brand color CSS variable for a source.
|
|
3991
|
+
* Use as: `style={{ color: getSourceColorVar('instagram') }}` → `var(--social-platform-instagram)`.
|
|
3992
|
+
*/
|
|
3993
|
+
declare function getSourceColorVar(source: PostSource): string;
|
|
3346
3994
|
|
|
3347
3995
|
declare const profileCardVariants: (props?: ({
|
|
3348
3996
|
variant?: "default" | "transparent" | "dark" | null | undefined;
|
|
@@ -3710,7 +4358,10 @@ declare namespace ScrollBar {
|
|
|
3710
4358
|
var displayName: string;
|
|
3711
4359
|
}
|
|
3712
4360
|
|
|
3713
|
-
declare const Select:
|
|
4361
|
+
declare const Select: {
|
|
4362
|
+
({ dir, ...props }: React$1.ComponentProps<typeof SelectPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
4363
|
+
displayName: string;
|
|
4364
|
+
};
|
|
3714
4365
|
declare const SelectGroup: React$1.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3715
4366
|
declare const SelectValue: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectValueProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & VariantProps<(props?: ({
|
|
3716
4367
|
size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
|
|
@@ -3936,7 +4587,7 @@ declare namespace FormRowSkeleton {
|
|
|
3936
4587
|
var displayName: string;
|
|
3937
4588
|
}
|
|
3938
4589
|
|
|
3939
|
-
declare function Slider({ className, defaultValue, value, min, max, dir, ...props }: React$1.ComponentProps<typeof SliderPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
4590
|
+
declare function Slider({ className, defaultValue, value, min, max, dir, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, ...props }: React$1.ComponentProps<typeof SliderPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
3940
4591
|
declare namespace Slider {
|
|
3941
4592
|
var displayName: string;
|
|
3942
4593
|
}
|
|
@@ -4018,7 +4669,7 @@ declare namespace TableSortHeader {
|
|
|
4018
4669
|
var displayName: string;
|
|
4019
4670
|
}
|
|
4020
4671
|
|
|
4021
|
-
declare const Tabs: React$1.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4672
|
+
declare const Tabs: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
4022
4673
|
interface TabsListProps extends React$1.ComponentPropsWithoutRef<typeof TabsPrimitive.List> {
|
|
4023
4674
|
/** Visual variant */
|
|
4024
4675
|
variant?: 'default' | 'underline' | 'outline';
|
|
@@ -4469,6 +5120,16 @@ interface MultiSelectProps {
|
|
|
4469
5120
|
emptyMessage?: string;
|
|
4470
5121
|
/** Search placeholder */
|
|
4471
5122
|
searchPlaceholder?: string;
|
|
5123
|
+
/** Accessible label. Falls back to the resolved placeholder when omitted. */
|
|
5124
|
+
'aria-label'?: string;
|
|
5125
|
+
/** id of an external label element that names this control. */
|
|
5126
|
+
'aria-labelledby'?: string;
|
|
5127
|
+
/** Marks the trigger as invalid (e.g. when wired through `<FormControl>`). */
|
|
5128
|
+
'aria-invalid'?: boolean | 'true' | 'false';
|
|
5129
|
+
/** id(s) of element(s) describing the trigger (typically a `<FormMessage>`). */
|
|
5130
|
+
'aria-describedby'?: string;
|
|
5131
|
+
/** id of the trigger element — set by `<FormControl>` to wire `<FormLabel htmlFor>`. */
|
|
5132
|
+
id?: string;
|
|
4472
5133
|
}
|
|
4473
5134
|
declare const MultiSelect: React$1.ForwardRefExoticComponent<MultiSelectProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4474
5135
|
|
|
@@ -5030,8 +5691,16 @@ interface PartoWordCloudProps {
|
|
|
5030
5691
|
isLoading?: boolean;
|
|
5031
5692
|
/** Accessible label describing the chart content */
|
|
5032
5693
|
ariaLabel?: string;
|
|
5694
|
+
/** Locale for the empty-state message @default 'fa' */
|
|
5695
|
+
locale?: SupportedLocale;
|
|
5696
|
+
/**
|
|
5697
|
+
* Render a small caption below the cloud explaining that word size
|
|
5698
|
+
* encodes frequency. Helps colorblind / sighted-but-confused users —
|
|
5699
|
+
* word color is decorative (palette rotation), not semantic. @default `false`
|
|
5700
|
+
*/
|
|
5701
|
+
legend?: boolean;
|
|
5033
5702
|
}
|
|
5034
|
-
declare function PartoWordCloud({ words, width: widthProp, height: heightProp, className, minFontSize, maxFontSize, padding, spiral, rotate, random, fontWeight, onWordClick, isLoading, ariaLabel, }: PartoWordCloudProps): react_jsx_runtime.JSX.Element;
|
|
5703
|
+
declare function PartoWordCloud({ words, width: widthProp, height: heightProp, className, minFontSize, maxFontSize, padding, spiral, rotate, random, fontWeight, onWordClick, isLoading, ariaLabel, locale, legend, }: PartoWordCloudProps): react_jsx_runtime.JSX.Element;
|
|
5035
5704
|
declare namespace PartoWordCloud {
|
|
5036
5705
|
var displayName: string;
|
|
5037
5706
|
}
|
|
@@ -5094,6 +5763,11 @@ interface PartoScatterChartProps {
|
|
|
5094
5763
|
className?: string;
|
|
5095
5764
|
isLoading?: boolean;
|
|
5096
5765
|
ariaLabel?: string;
|
|
5766
|
+
/**
|
|
5767
|
+
* Render a legend below the chart. Only meaningful when `groupKey` is set —
|
|
5768
|
+
* the legend lists each group with its assigned color. @default `false`
|
|
5769
|
+
*/
|
|
5770
|
+
legend?: boolean;
|
|
5097
5771
|
}
|
|
5098
5772
|
declare const PartoScatterChart: React$1.ForwardRefExoticComponent<PartoScatterChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5099
5773
|
|
|
@@ -5148,6 +5822,12 @@ interface PartoSankeyChartProps {
|
|
|
5148
5822
|
className?: string;
|
|
5149
5823
|
isLoading?: boolean;
|
|
5150
5824
|
ariaLabel?: string;
|
|
5825
|
+
/**
|
|
5826
|
+
* Render a legend listing each node with its color. Useful for flows
|
|
5827
|
+
* where node names aren't always visible (small column widths). The
|
|
5828
|
+
* legend shows the same color the node rectangle uses. @default `false`
|
|
5829
|
+
*/
|
|
5830
|
+
legend?: boolean;
|
|
5151
5831
|
}
|
|
5152
5832
|
declare const PartoSankeyChart: React$1.ForwardRefExoticComponent<PartoSankeyChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5153
5833
|
|
|
@@ -5227,6 +5907,16 @@ interface ConceptPulseChartProps {
|
|
|
5227
5907
|
className?: string;
|
|
5228
5908
|
isLoading?: boolean;
|
|
5229
5909
|
ariaLabel?: string;
|
|
5910
|
+
/**
|
|
5911
|
+
* Render a legend below the chart that maps composition arc colors to
|
|
5912
|
+
* their category names (flow/emotion/custom). Only categories that
|
|
5913
|
+
* appear in at least one bubble's composition are listed.
|
|
5914
|
+
*
|
|
5915
|
+
* Without a legend, the arc colors are decipherable only via hover —
|
|
5916
|
+
* which fails WCAG 1.4.1 for the core "what is this composition?"
|
|
5917
|
+
* question. @default `false`
|
|
5918
|
+
*/
|
|
5919
|
+
legend?: boolean;
|
|
5230
5920
|
}
|
|
5231
5921
|
declare const ConceptPulseChart: React$1.ForwardRefExoticComponent<ConceptPulseChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5232
5922
|
|
|
@@ -5286,6 +5976,12 @@ interface PartoNetworkChartProps {
|
|
|
5286
5976
|
className?: string;
|
|
5287
5977
|
isLoading?: boolean;
|
|
5288
5978
|
ariaLabel?: string;
|
|
5979
|
+
/**
|
|
5980
|
+
* Render a legend listing each node group with its assigned color.
|
|
5981
|
+
* Pulled from the unique `group` values across `nodes`. When no node
|
|
5982
|
+
* has a `group`, the legend silently renders nothing. @default `false`
|
|
5983
|
+
*/
|
|
5984
|
+
legend?: boolean;
|
|
5289
5985
|
}
|
|
5290
5986
|
declare const PartoNetworkChart: React$1.ForwardRefExoticComponent<PartoNetworkChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5291
5987
|
|
|
@@ -5446,6 +6142,69 @@ declare function localeAwareNumberTick(locale: SupportedLocale): (value: unknown
|
|
|
5446
6142
|
* letters. Use on date/time axes whose labels carry digits.
|
|
5447
6143
|
*/
|
|
5448
6144
|
declare function localeAwareCategoryTick(locale: SupportedLocale): (value: unknown) => string;
|
|
6145
|
+
interface ChartLegendItem {
|
|
6146
|
+
/** Unique identifier — typically the dataKey or series id. */
|
|
6147
|
+
key: string;
|
|
6148
|
+
/** Display label. Strings preferred so AT can read it. */
|
|
6149
|
+
label: React$1.ReactNode;
|
|
6150
|
+
/** Marker color. Pass the resolved value (hsl, hex, or `var(--token)`). */
|
|
6151
|
+
color: string;
|
|
6152
|
+
/**
|
|
6153
|
+
* Marker shape. `dot` for categorical (Bar/Pie), `line` for series (Line/Area),
|
|
6154
|
+
* `bar` for stacked distributions. @default `dot`
|
|
6155
|
+
*/
|
|
6156
|
+
shape?: 'dot' | 'line' | 'bar';
|
|
6157
|
+
/**
|
|
6158
|
+
* Optional stroke pattern when `shape="line"`. Lets color-blind users
|
|
6159
|
+
* distinguish series by texture in addition to color. WCAG 1.4.1
|
|
6160
|
+
* (Use of Color) recommends adding a non-color signal.
|
|
6161
|
+
*/
|
|
6162
|
+
pattern?: 'solid' | 'dashed' | 'dotted' | 'dash-dot';
|
|
6163
|
+
/** Optional trailing value (count, percent, etc.). */
|
|
6164
|
+
value?: React$1.ReactNode;
|
|
6165
|
+
}
|
|
6166
|
+
interface ChartLegendProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
6167
|
+
/** Series to enumerate. */
|
|
6168
|
+
items: ChartLegendItem[];
|
|
6169
|
+
/** Layout — `horizontal` wraps, `vertical` stacks. @default `horizontal` */
|
|
6170
|
+
orientation?: 'horizontal' | 'vertical';
|
|
6171
|
+
/** Marker square/dot edge length in px. @default `10` */
|
|
6172
|
+
swatchSize?: number;
|
|
6173
|
+
}
|
|
6174
|
+
/**
|
|
6175
|
+
* Reusable chart legend. Pair with `PartoLineChart`, `PartoBarChart`, etc. by
|
|
6176
|
+
* passing `legend={[…]}` or rendering `<ChartLegend>` next to the chart. Each
|
|
6177
|
+
* line-shape entry can carry a stroke pattern so colorblind users can read
|
|
6178
|
+
* series identity without relying on color alone.
|
|
6179
|
+
*
|
|
6180
|
+
* The legend has no chart-aware behavior on its own — pass the same colors
|
|
6181
|
+
* (resolved via `useChartTheme`) you handed to the chart's `Cell`/series.
|
|
6182
|
+
*/
|
|
6183
|
+
declare const ChartLegend: React$1.ForwardRefExoticComponent<ChartLegendProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
6184
|
+
interface ChartGradientLegendProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
6185
|
+
/** Color at the low end of the scale (e.g. background-muted). */
|
|
6186
|
+
startColor: string;
|
|
6187
|
+
/** Color at the high end (e.g. brand). */
|
|
6188
|
+
endColor: string;
|
|
6189
|
+
/** Optional left/start label (typically the minimum value). */
|
|
6190
|
+
startLabel?: React$1.ReactNode;
|
|
6191
|
+
/** Optional right/end label (typically the maximum value). */
|
|
6192
|
+
endLabel?: React$1.ReactNode;
|
|
6193
|
+
/** Optional caption above the bar (e.g. "تراکم انتشار"). */
|
|
6194
|
+
caption?: React$1.ReactNode;
|
|
6195
|
+
/** Bar width in px @default 160 */
|
|
6196
|
+
width?: number;
|
|
6197
|
+
/** Bar height in px @default 8 */
|
|
6198
|
+
height?: number;
|
|
6199
|
+
}
|
|
6200
|
+
/**
|
|
6201
|
+
* Continuous-scale legend for charts whose data is encoded as color intensity
|
|
6202
|
+
* (HeatMap, choropleth, gradient density). Renders a horizontal gradient bar
|
|
6203
|
+
* with start/end labels, captioned for AT via `role="img"` + `aria-label`.
|
|
6204
|
+
*
|
|
6205
|
+
* For discrete categorical legends (Line/Bar/Pie), use `<ChartLegend>` instead.
|
|
6206
|
+
*/
|
|
6207
|
+
declare const ChartGradientLegend: React$1.ForwardRefExoticComponent<ChartGradientLegendProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5449
6208
|
/**
|
|
5450
6209
|
* Transforms Nivo line/area data format to Recharts row-oriented format.
|
|
5451
6210
|
* Useful for consumers migrating from Nivo data shape.
|
|
@@ -5710,4 +6469,4 @@ interface UseFilterPresetsReturn<T extends FilterStateShape> {
|
|
|
5710
6469
|
*/
|
|
5711
6470
|
declare function useFilterPresets<T extends FilterStateShape>(options: UseFilterPresetsOptions): UseFilterPresetsReturn<T>;
|
|
5712
6471
|
|
|
5713
|
-
export { ACTION_TYPE_META, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActionStatusKey, ActionTimeline, type ActionTimelineDensity, type ActionTimelineGroupBy, ActionTimelineItem, type ActionTimelineItemData, type ActionTimelineItemProps, type ActionTimelineProps, ActionTypeChip, type ActionTypeChipProps, ActionTypeKey, ActiveFiltersBar, type ActiveFiltersBarProps, ActiveFiltersClearAll, type ActiveFiltersClearAllProps, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AnimatedNumber, type AnimatedNumberProps, AppBar, type AppBarProps, AppLayout, AppLayoutContent, AspectRatio, type AsyncStatus, Autocomplete, type AutocompleteItem, type AutocompleteProps, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, AvatarTextSkeleton, type AvatarTextSkeletonProps, Banner, type BannerProps, type BenchmarkMarker, type BenchmarkTier, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BulletinViewer, type BulletinViewerProps, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, ButtonProps, CHART_FONT_FAMILY, COUNTRIES, CRITERION_TIER_KEYS, Callout, CalloutDescription, type CalloutProps, CalloutTitle, CardSkeleton, type CardSkeletonProps, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLoadingSkeleton, ChartSkeleton, type ChartSkeletonProps$1 as ChartSkeletonProps, ChartTooltip, Checkbox, CircularProgress, type CircularProgressProps, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandPalette, type CommandPaletteItem, type CommandPaletteProps, type CommandPaletteRecentsConfig, CommandSeparator, CommandShortcut, CommentCard, type CommentCardProps, type CommentTag, ComparisonCard, type ComparisonCardProps, type ComparisonEntity, type ComparisonMetric, ComparisonRadar, type ComparisonRadarProps, type ComparisonWinner, type CompositionScale, type ConceptComposition, type ConceptPoint, ConceptPulseChart, type ConceptPulseChartProps, ConfirmDialog, type ConfirmDialogProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, type CopyButtonProps, type Country, type CountryCode, CountryPicker, type CountryPickerProps, type CriterionInputSpec, CriterionScoreCard, type CriterionScoreCardProps, type CriterionTierKey, type CriterionTierThresholds, type CriterionTrend, DEFAULT_CRITERION_THRESHOLDS, DEFAULT_PERIODS, DEFAULT_THRESHOLDS, DataTableColumn, DataTableColumnVisibility, DataTableColumnVisibilityToggle, type DataTableColumnVisibilityToggleProps, DataTableExportButton, type DataTableExportButtonProps, DatePicker, type DatePickerProps, DateRangePicker, DateRangePickerInline, type DateRangePickerProps, Dialog, type Direction, DirectionalBox, type DirectionalBoxProps, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENGAGEMENT_RANGES, EmotionBadge, type EmotionBadgeProps, type EmotionData, EmotionDistribution, type EmotionDistributionProps, EmotionKey, Empty, EmptyAction, EmptyChart, type EmptyChartProps, type EmptyChartShape, EmptyDescription, EmptyIcon, EmptyTitle, type EngagementRange, type EngagementRangeWithDisplay, EngagementRate, EngagementRateBar, type EngagementRateBarProps, EngagementRateBenchmark, type EngagementRateBenchmarkProps, type EngagementRateProps, type EngagementTier, EntityHealthCard, EntityHealthCardActions, EntityHealthCardFooter, EntityHealthCardHeader, EntityHealthCardHeaderEnd, EntityHealthCardHeaderText, EntityHealthCardMeta, EntityHealthCardMetric, type EntityHealthCardMetricProps, EntityHealthCardMetrics, type EntityHealthCardMetricsProps, EntityHealthCardNarrative, EntityHealthCardPhase, type EntityHealthCardPhaseProps, type EntityHealthCardProps, EntityHealthCardScore, type EntityHealthCardScoreProps, EntityHealthCardSeverityBadge, type EntityHealthCardSeverityBadgeProps, EntityHealthCardSubtitle, EntityHealthCardTitle, type EntityHealthCardTitleProps, EntityHealthCardTrust, type EntityHealthCardTrustProps, EntityHealthKey, ErrorBoundary, type ErrorBoundaryProps, ErrorIllustration, ErrorState, type ErrorStateProps, type ExecutiveSummaryMetric, ExecutiveSummarySection, type ExecutiveSummarySectionProps, type ExportableColumn, type ExtendedPlatform, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FilterBar, FilterBarActions, type FilterBarActionsProps, FilterBarActiveFilters, type FilterBarActiveFiltersProps, FilterBarClear, type FilterBarClearProps, type FilterBarProps, FilterBarRow, type FilterBarRowProps, FilterChip, FilterChipGroup, type FilterChipProps, FilterPanel, FilterPanelBody, FilterPanelClearAll, type FilterPanelClearAllProps, FilterPanelFooter, FilterPanelHeader, type FilterPanelProps, FilterPanelTitle, type FilterPanelTitleProps, FilterPanelTrigger, type FilterPanelTriggerProps, type FilterPreset, FilterSection, type FilterSectionProps, FilterStateShape, FirstRunIllustration, FlowBadge, type FlowBadgeProps, FlowCell, type FlowCellProps, FlowData, FlowDistributionSection, type FlowDistributionSectionProps, FlowKey, type FollowerGroup, ForbiddenIllustration, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, FormRowSkeleton, type FormRowSkeletonProps, GROUP_LABELS, HashtagInput, type TagInputProps as HashtagInputProps, type HashtagPerformanceData, HashtagPerformanceRow, type HashtagPerformanceRowProps, type HeatMapDatum, type HeatMapRow, HotkeyCombo, HoverCard, HoverCardContent, HoverCardTrigger, IRAN_PROVINCES, type Icon, Icons, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputProps, InputVariants, InputWithIcon, type InputWithIconProps, type IranProvince, type IranProvinceSlug, JobCard, JobCardActions, JobCardError, JobCardHeader, JobCardHeaderActions, JobCardHeaderText, JobCardMeta, JobCardMetaItem, type JobCardMetaItemProps, JobCardProgress, type JobCardProgressProps, type JobCardProps, JobCardStat, type JobCardStatProps, JobCardStats, type JobCardStatsProps, JobCardStatusBadge, type JobCardStatusBadgeProps, JobCardSubtitle, JobCardThumbnail, type JobCardThumbnailProps, JobCardTitle, type JobCardTitleProps, JobStatusKey, JobWizard, type JobWizardApi, JobWizardBack, type JobWizardBackProps, JobWizardBody, JobWizardCancel, type JobWizardCancelProps, JobWizardError, JobWizardFooter, JobWizardHeader, type JobWizardHeaderProps, JobWizardNext, type JobWizardNextProps, type JobWizardProps, JobWizardSkip, type JobWizardSkipProps, JobWizardSpacer, type JobWizardStep, JobWizardStepper, type JobWizardStepperProps, type JobWizardSubmitState, JobWizardSuccess, type JobWizardSuccessProps, type JobWizardValidationResult, Kbd, KbdGroup, Label, LabelChip, type LabelChipProps, LabelEditDialog, type LabelEditDialogProps, type LegacySize, MarkdownRenderer, type MarkdownRendererProps, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricCard, MetricCardContent, MetricCardDifferential, MetricCardHeader, MetricCardLabel, MetricCardSkeleton, type MetricCardSkeletonProps, MetricCardSparkline, MetricCardValue, type MultiPlatformMetrics, MultiPlatformPostCard, type MultiPlatformPostCardProps, type MultiPlatformPostData, MultiSelect, type MultiSelectOption, type MultiSelectProps, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavGroup, type NavGroupProps, NavItem, type NavItemBaseProps, type NavItemProps, type NavMatchStrategy, NavPanel, NavPanelContent, NavPanelFooter, NavPanelHeader, NavRail, NavRailContent, NavRailFooter, NavRailHeader, NavRailItem, NavRailProvider, NavRailSeparator, NavRailTrigger, NavSeparator, NavTree, type NavTreeContextValue, NavTreeProvider, type NavTreeProviderProps, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, type NetworkLink, type NetworkNode, NoDataIllustration, NoResultsIllustration, NotificationCenter, type NotificationCenterProps, type NotificationFilter, type NotificationItem, type NotificationSeverity, NumberInputLocale, type NumberInputLocaleProps, PERSIAN_MONTHS, PERSIAN_MONTHS_SHORT, PERSIAN_WEEKDAYS, PERSIAN_WEEKDAYS_SHORT, PageHeader, type PageHeaderProps, PageLoader, type PageLoaderProps, Pagination, PaginationContent, PaginationControlled, type PaginationControlledProps, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PartoHeatMap, type PartoHeatMapProps, PartoNetworkChart, type PartoNetworkChartProps, PartoRadarChart, type PartoRadarChartProps, PartoSankeyChart, type PartoSankeyChartProps, PartoScatterChart, type PartoScatterChartProps, type PartoToasterProps, PartoWordCloud, type PartoWordCloudProps, type PeriodOption, PeriodSelector, type PeriodSelectorProps, type PlatformMetadata, type PostAction, PostActions, type PostActionsProps, type PostAiAnalysis, type PostAiEntity, type PostAuthor, PostBody, type PostBodyData, type PostBodyProps, PostCard, type PostCardProps, type PostComment, type PostCommentAuthor, type PostData, type PostDensity, type PostDetails, PostDetailsModal, type PostDetailsModalProps, type PostDetailsTab, type PostEmotion, type PostEnrichmentFlags, PostHeader, type PostHeaderProps, type PostIntent, PostList, type PostListProps, type PostMediaItem, PostMetadata, type PostMetadataProps, type PostMetrics, type PostPlatform, type PostSentiment, type PostingFrequencyCell, PostingFrequencyHeatmap, type PostingFrequencyHeatmapProps, type PostingFrequencySummary, type PostingWeekStart, ProfileCard, type ProfileCardProps, ProfileInfo, type ProfileInfoProps, Progress, ProgressCell, type ProgressCellProps, type ProgressProps, type QuotaLevel, QuotaProgressBar, type QuotaProgressBarProps, type QuotaThresholds, RadioCardDescription, RadioCardItem, RadioCardTitle, RadioCards, RadioGroup, RadioGroupItem, RateLimitBanner, type RateLimitBannerProps, RegionPicker, type RegionPickerKey, type RegionPickerProps, RegisteredHotkey, ReportComposer, type ReportComposerProps, ReportSection, type ReportSectionProps, ResizableHandle, ResizablePanel, ResizablePanelGroup, RouteProgress, type RouteProgressHandle, type RouteProgressProps, SONNER_DEFAULT_DURATION, SafeImage, type SafeImageProps, type SankeyLink, type SankeyNode, ScrollArea, ScrollBar, SearchInput, type SearchInputProps, type SectionItem, SectionNavigator, type SectionNavigatorProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectTriggerVariants, SelectValue, SentimentBadge, type SentimentBadgeProps, SentimentBreakdownSection, type SentimentBreakdownSectionProps, SentimentCell, type SentimentCellProps, SentimentData, Separator, SeverityBadge, type SeverityBadgeProps, SeverityKey, ShortcutsCheatsheet, type ShortcutsCheatsheetProps, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SiteHeader, SiteHeaderActions, SiteHeaderEnd, type SiteHeaderProps, SiteHeaderSeparator, SiteHeaderStart, SiteHeaderSubtitle, SiteHeaderTitle, SiteHeaderTitleGroup, type SizeWithLegacy, Skeleton, type SkeletonProps, Slider, SocialPlatform, type SourceBreakdownEntry, SourceBreakdownSection, type SourceBreakdownSectionProps, SparklineCell, type SparklineCellProps, Spinner, type SpinnerProps, StageStatusKey, type StandardSize, StatDeltaCell, type StatDeltaCellProps, StatDisplay, type StatDisplayProps, StatusBadge, type StatusBadgeProps, StatusFlow, type StatusFlowOrientation, type StatusFlowProps, type StatusFlowSize, StatusFlowStage, type StatusFlowStageData, type StatusFlowStageProps, StatusKey, StatusPulseCell, type StatusPulseCellProps, Step, type StepProps, Stepper, type StepperProps, SupportedLocale, Switch, type SwitchProps, TIER_LABELS, Table, TableBody, TableCaption, TableCell, TableComparisonView, type TableComparisonViewProps, TableFooter, TableHead, TableHeader, TableRow, TableRowSkeleton, type TableRowSkeletonProps, TableSkeleton, type TableSkeletonProps, TableSortHeader, Tabs, TabsContent, TabsList, TabsTrigger, TagInput, type TagInputProps, TaskList, type TaskListGroup, type TaskListProps, Textarea, TimelineSection, type TimelineSectionProps, Toaster, Toggle, ToggleGroup, ToggleGroupItem, TooltipContent, TopPostsSection, type TopPostsSectionProps, TrendCell, type TrendCellProps, TrendIndicator, type TrendIndicatorProps, type UseAsyncReturn, type UseClipboardOptions, type UseClipboardReturn, type UseFilterParamsOptions, type UseFilterPresetsOptions, type UseFilterPresetsReturn, type UseInfiniteScrollOptions, type UseInfiniteScrollReturn, type UseJobWizardOptions, UserAutocomplete, type UserAutocompleteProps, type UserItem, UserMenu, type UserMenuItem, type UserMenuProps, type UserMenuUser, type ViewMode, ViewToggle, type ViewToggleProps, type WordData, actionTypeChipVariants, appBarVariants, avatarGroupVariants, bannerVariants, buildCsv, buildPostingFrequencyRows, buildTsv, buttonGroupVariants, calloutVariants, computeComparisonWinners, countComparisonWins, countryFlag, defaultActions as defaultPostActions, downloadFile, findCountry, findProvince, findTierIndex, formatJalaliDate, formatPersianDateRange, getCountryLabel, getCriterionTier, getCurrentRangeIndex, getEngagementRanges, getEngagementRateBenchmarkTiers, getFollowerGroup, getPersianDay, getPersianMonth, getPersianMonthName, getPersianMonthNameShort, getPersianMonthsForDropdown, getPersianWeekdayName, getPersianYear, getPersianYearsForDropdown, getProvinceLabel, getScoreBenchmarkTiers, tagInputVariants as hashtagInputVariants, jalaliToGregorian, labelChipVariants, localeAwareCategoryTick, localeAwareNumberTick, navItemVariants, navigationMenuTriggerStyle, normalizeSize, normalizeUrlDigits, pageLoaderVariants, postCardVariants, postHeaderVariants, profileCardVariants, resolveLevel, siteHeaderVariants, spinnerVariants, statDisplayVariants, tagInputVariants, toEnglishDigits, toPersianDigits, toggleVariants, transformNivoLineData, useAsync, useBreakpoint, useChartTheme, useClipboard, useDebounce, useDocumentDirection, useFilterParams, useFilterPresets, useFormField, useInfiniteScroll, useIsMobile, useJobWizard, useJobWizardState, useLocalStorage, useMediaQuery, useNavRail, useNavTree, useOutsideClick, usePrevious, useRootStyles, useScrollLock, useSidebar };
|
|
6472
|
+
export { ACTION_TYPE_META, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActionStatusKey, ActionTimeline, type ActionTimelineDensity, type ActionTimelineGroupBy, ActionTimelineItem, type ActionTimelineItemData, type ActionTimelineItemProps, type ActionTimelineProps, ActionTypeChip, type ActionTypeChipProps, ActionTypeKey, ActiveFiltersBar, type ActiveFiltersBarProps, ActiveFiltersClearAll, type ActiveFiltersClearAllProps, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AnimatedNumber, type AnimatedNumberProps, AppBar, type AppBarProps, AppLayout, AppLayoutContent, AspectRatio, type AsyncStatus, Autocomplete, type AutocompleteItem, type AutocompleteProps, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, AvatarTextSkeleton, type AvatarTextSkeletonProps, Banner, type BannerProps, type BenchmarkMarker, type BenchmarkTier, BlurBackdrop, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BulletinViewer, type BulletinViewerProps, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, ButtonProps, CENTERED_CONTAINER_CLS, CHART_FONT_FAMILY, COUNTRIES, CRITERION_TIER_KEYS, Callout, CalloutDescription, type CalloutProps, CalloutTitle, CardSkeleton, type CardSkeletonProps, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartGradientLegend, type ChartGradientLegendProps, ChartLegend, type ChartLegendItem, type ChartLegendProps, ChartLoadingSkeleton, ChartSkeleton, type ChartSkeletonProps$1 as ChartSkeletonProps, ChartTooltip, Checkbox, CircularProgress, type CircularProgressProps, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandPalette, type CommandPaletteItem, type CommandPaletteProps, type CommandPaletteRecentsConfig, CommandSeparator, CommandShortcut, CommentCard, type CommentCardProps, type CommentTag, ComparisonCard, type ComparisonCardProps, type ComparisonEntity, type ComparisonMetric, ComparisonRadar, type ComparisonRadarProps, type ComparisonWinner, type CompositionScale, type ConceptComposition, type ConceptPoint, ConceptPulseChart, type ConceptPulseChartProps, ConfirmDialog, type ConfirmDialogProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, type CopyButtonProps, type Country, type CountryCode, CountryPicker, type CountryPickerProps, type CriterionInputSpec, CriterionScoreCard, type CriterionScoreCardProps, type CriterionTierKey, type CriterionTierThresholds, type CriterionTrend, DEFAULT_CRITERION_THRESHOLDS, DEFAULT_PERIODS, DEFAULT_THRESHOLDS, DataTableColumn, DataTableColumnVisibility, DataTableColumnVisibilityToggle, type DataTableColumnVisibilityToggleProps, DataTableExportButton, type DataTableExportButtonProps, DatePicker, type DatePickerProps, DateRangePicker, DateRangePickerInline, type DateRangePickerProps, Dialog, type Direction, DirectionalBox, type DirectionalBoxProps, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENGAGEMENT_RANGES, EmotionBadge, type EmotionBadgeProps, type EmotionData, EmotionDistribution, type EmotionDistributionProps, EmotionKey, Empty, EmptyAction, EmptyChart, type EmptyChartProps, type EmptyChartShape, EmptyDescription, EmptyIcon, EmptyTitle, type EngagementRange, type EngagementRangeWithDisplay, EngagementRate, EngagementRateBar, type EngagementRateBarProps, EngagementRateBenchmark, type EngagementRateBenchmarkProps, type EngagementRateProps, type EngagementTier, EntityHealthCard, EntityHealthCardActions, EntityHealthCardFooter, EntityHealthCardHeader, EntityHealthCardHeaderEnd, EntityHealthCardHeaderText, EntityHealthCardMeta, EntityHealthCardMetric, type EntityHealthCardMetricProps, EntityHealthCardMetrics, type EntityHealthCardMetricsProps, EntityHealthCardNarrative, EntityHealthCardPhase, type EntityHealthCardPhaseProps, type EntityHealthCardProps, EntityHealthCardScore, type EntityHealthCardScoreProps, EntityHealthCardSeverityBadge, type EntityHealthCardSeverityBadgeProps, EntityHealthCardSubtitle, EntityHealthCardTitle, type EntityHealthCardTitleProps, EntityHealthCardTrust, type EntityHealthCardTrustProps, EntityHealthKey, ErrorBoundary, type ErrorBoundaryProps, ErrorIllustration, ErrorState, type ErrorStateProps, type ExecutiveSummaryMetric, ExecutiveSummarySection, type ExecutiveSummarySectionProps, type ExportableColumn, FOREGROUND_IMG_CLS, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FilterBar, FilterBarActions, type FilterBarActionsProps, FilterBarActiveFilters, type FilterBarActiveFiltersProps, FilterBarClear, type FilterBarClearProps, type FilterBarProps, FilterBarRow, type FilterBarRowProps, FilterChip, FilterChipGroup, type FilterChipProps, FilterPanel, FilterPanelBody, FilterPanelClearAll, type FilterPanelClearAllProps, FilterPanelFooter, FilterPanelHeader, type FilterPanelProps, FilterPanelTitle, type FilterPanelTitleProps, FilterPanelTrigger, type FilterPanelTriggerProps, type FilterPreset, FilterSection, type FilterSectionProps, FilterStateShape, FirstRunIllustration, FlowBadge, type FlowBadgeProps, FlowCell, type FlowCellProps, FlowData, FlowDistributionSection, type FlowDistributionSectionProps, FlowKey, type FollowerGroup, ForbiddenIllustration, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, FormRowSkeleton, type FormRowSkeletonProps, GROUP_LABELS, HashtagInput, type TagInputProps as HashtagInputProps, type HashtagPerformanceData, HashtagPerformanceRow, type HashtagPerformanceRowProps, type HeatMapDatum, type HeatMapRow, HotkeyCombo, HoverCard, HoverCardContent, HoverCardTrigger, IRAN_PROVINCES, type Icon, Icons, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputProps, InputVariants, InputWithIcon, type InputWithIconProps, type IranProvince, type IranProvinceSlug, JobCard, JobCardActions, JobCardError, JobCardHeader, JobCardHeaderActions, JobCardHeaderText, JobCardMeta, JobCardMetaItem, type JobCardMetaItemProps, JobCardProgress, type JobCardProgressProps, type JobCardProps, JobCardStat, type JobCardStatProps, JobCardStats, type JobCardStatsProps, JobCardStatusBadge, type JobCardStatusBadgeProps, JobCardSubtitle, JobCardThumbnail, type JobCardThumbnailProps, JobCardTitle, type JobCardTitleProps, JobStatusKey, JobWizard, type JobWizardApi, JobWizardBack, type JobWizardBackProps, JobWizardBody, JobWizardCancel, type JobWizardCancelProps, JobWizardError, JobWizardFooter, JobWizardHeader, type JobWizardHeaderProps, JobWizardNext, type JobWizardNextProps, type JobWizardProps, JobWizardSkip, type JobWizardSkipProps, JobWizardSpacer, type JobWizardStep, JobWizardStepper, type JobWizardStepperProps, type JobWizardSubmitState, JobWizardSuccess, type JobWizardSuccessProps, type JobWizardValidationResult, Kbd, KbdGroup, Label, LabelChip, type LabelChipProps, LabelEditDialog, type LabelEditDialogProps, type LegacySize, MarkdownRenderer, type MarkdownRendererProps, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricCard, MetricCardContent, MetricCardDifferential, MetricCardHeader, MetricCardLabel, MetricCardSkeleton, type MetricCardSkeletonProps, MetricCardSparkline, MetricCardValue, MultiSelect, type MultiSelectOption, type MultiSelectProps, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavGroup, type NavGroupProps, NavItem, type NavItemBaseProps, type NavItemProps, type NavMatchStrategy, NavPanel, NavPanelContent, NavPanelFooter, NavPanelHeader, NavRail, NavRailContent, NavRailFooter, NavRailHeader, NavRailItem, NavRailProvider, NavRailSeparator, NavRailTrigger, NavSeparator, NavTree, type NavTreeContextValue, NavTreeProvider, type NavTreeProviderProps, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, type NetworkLink, type NetworkNode, NoDataIllustration, NoResultsIllustration, NotificationCenter, type NotificationCenterProps, type NotificationFilter, type NotificationItem, type NotificationSeverity, NumberInputLocale, type NumberInputLocaleProps, PERSIAN_MONTHS, PERSIAN_MONTHS_SHORT, PERSIAN_WEEKDAYS, PERSIAN_WEEKDAYS_SHORT, PageHeader, type PageHeaderProps, PageLoader, type PageLoaderProps, Pagination, PaginationContent, PaginationControlled, type PaginationControlledProps, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PartoHeatMap, type PartoHeatMapProps, PartoNetworkChart, type PartoNetworkChartProps, PartoRadarChart, type PartoRadarChartProps, PartoSankeyChart, type PartoSankeyChartProps, PartoScatterChart, type PartoScatterChartProps, type PartoToasterProps, PartoWordCloud, type PartoWordCloudProps, type PeriodOption, PeriodSelector, type PeriodSelectorProps, type PlatformMetadata, type PostAction, PostActions, type PostActionsProps, type PostAiAnalysis, type PostAiEntity, type PostAuthor, type PostAuthorityTier, PostBody, type PostBodyData, type PostBodyProps, type PostBulkAction, PostBulkActionBar, type PostBulkActionBarProps, PostCard, type PostCardProps, type PostCluster, type PostComment, type PostCommentAuthor, PostCrisisBanner, type PostCrisisBannerProps, type PostData, type PostDensity, type PostDetails, PostDetailsDrawer, type PostDetailsDrawerProps, type PostDetailsTab, type PostEmotion, type PostEnrichmentFlags, type PostFlags, type PostFlow, type PostGroupBy, PostHeader, PostHeaderBroadcast, type PostHeaderBroadcastProps, PostHeaderEditorial, type PostHeaderEditorialProps, type PostHeaderProps, type PostIntent, PostList, type PostListProps, PostMedia, PostMediaAudio, PostMediaCarousel, PostMediaGrid, PostMediaHighlight, type PostMediaItem, PostMediaPlaceholder, type PostMediaPlaceholderProps, type PostMediaPlaceholderVariant, type PostMediaProps, PostMediaSensitiveOverlay, type PostMediaSensitivity, PostMediaSingle, PostMediaSourceRemoved, type PostMediaSourceRemovedProps, type PostMediaStatus, PostMediaStory, PostMediaVideo, PostMetadata, type PostMetadataProps, type PostMetrics, type PostOutlet, type PostPlatform, PostQuotedEmbed, type PostQuotedEmbedProps, PostRepostHeader, type PostRepostHeaderProps, type PostRepostInfo, type PostSentiment, type PostSeverity, PostSignals, type PostSignalsProps, type PostSortBy, type PostSource, type PostSourceCategory, type PostStatus, PostThreadConnector, type PostThreadConnectorProps, type PostThreadInfo, PostUrlPreview, type PostUrlPreview$1 as PostUrlPreviewData, type PostUrlPreviewProps, type PostUrlPreview$1 as PostUrlPreviewSnapshot, type PostView, type PostingFrequencyCell, PostingFrequencyHeatmap, type PostingFrequencyHeatmapProps, type PostingFrequencySummary, type PostingWeekStart, ProfileCard, type ProfileCardProps, ProfileInfo, type ProfileInfoProps, Progress, ProgressCell, type ProgressCellProps, type ProgressProps, type QuotaLevel, QuotaProgressBar, type QuotaProgressBarProps, type QuotaThresholds, RadioCardDescription, RadioCardItem, RadioCardTitle, RadioCards, RadioGroup, RadioGroupItem, RateLimitBanner, type RateLimitBannerProps, type ReactionBreakdown, RegionPicker, type RegionPickerKey, type RegionPickerProps, RegisteredHotkey, ReportComposer, type ReportComposerProps, ReportSection, type ReportSectionProps, ResizableHandle, ResizablePanel, ResizablePanelGroup, RouteProgress, type RouteProgressHandle, type RouteProgressProps, SENSITIVITY_LABEL, SONNER_DEFAULT_DURATION, SafeImage, type SafeImageProps, type SankeyLink, type SankeyNode, ScrollArea, ScrollBar, SearchInput, type SearchInputProps, type SectionItem, SectionNavigator, type SectionNavigatorProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectTriggerVariants, SelectValue, SentimentBadge, type SentimentBadgeProps, SentimentBreakdownSection, type SentimentBreakdownSectionProps, SentimentCell, type SentimentCellProps, SentimentData, Separator, SeverityBadge, type SeverityBadgeProps, SeverityKey, ShortcutsCheatsheet, type ShortcutsCheatsheetProps, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SiteHeader, SiteHeaderActions, SiteHeaderEnd, type SiteHeaderProps, SiteHeaderSeparator, SiteHeaderStart, SiteHeaderSubtitle, SiteHeaderTitle, SiteHeaderTitleGroup, type SizeWithLegacy, Skeleton, type SkeletonProps, Slider, SocialPlatform, type SourceBreakdownEntry, SourceBreakdownSection, type SourceBreakdownSectionProps, SparklineCell, type SparklineCellProps, Spinner, type SpinnerProps, StageStatusKey, type StandardSize, StatDeltaCell, type StatDeltaCellProps, StatDisplay, type StatDisplayProps, StatusBadge, type StatusBadgeProps, StatusFlow, type StatusFlowOrientation, type StatusFlowProps, type StatusFlowSize, StatusFlowStage, type StatusFlowStageData, type StatusFlowStageProps, StatusKey, StatusPulseCell, type StatusPulseCellProps, Step, type StepProps, Stepper, type StepperProps, SupportedLocale, Switch, type SwitchProps, TIER_LABELS, Table, TableBody, TableCaption, TableCell, TableComparisonView, type TableComparisonViewProps, TableFooter, TableHead, TableHeader, TableRow, TableRowSkeleton, type TableRowSkeletonProps, TableSkeleton, type TableSkeletonProps, TableSortHeader, Tabs, TabsContent, TabsList, TabsTrigger, TagInput, type TagInputProps, TaskList, type TaskListGroup, type TaskListProps, Textarea, TimelineSection, type TimelineSectionProps, Toaster, Toggle, ToggleGroup, ToggleGroupItem, TooltipContent, TopPostsSection, type TopPostsSectionProps, TrendCell, type TrendCellProps, TrendIndicator, type TrendIndicatorProps, type UseAsyncReturn, type UseClipboardOptions, type UseClipboardReturn, type UseFilterParamsOptions, type UseFilterPresetsOptions, type UseFilterPresetsReturn, type UseInfiniteScrollOptions, type UseInfiniteScrollReturn, type UseJobWizardOptions, UserAutocomplete, type UserAutocompleteProps, type UserItem, UserMenu, type UserMenuItem, type UserMenuProps, type UserMenuUser, type ViewMode, ViewToggle, type ViewToggleProps, type WordData, actionTypeChipVariants, appBarVariants, avatarGroupVariants, bannerVariants, buildCsv, buildPostingFrequencyRows, buildTsv, buttonGroupVariants, calloutVariants, computeComparisonWinners, countComparisonWins, countryFlag, defaultActions as defaultPostActions, downloadFile, findCountry, findProvince, findTierIndex, formatJalaliDate, formatPersianDateRange, getCountryLabel, getCriterionTier, getCurrentRangeIndex, getEngagementRanges, getEngagementRateBenchmarkTiers, getFollowerGroup, getMetricLabel, getPersianDay, getPersianMonth, getPersianMonthName, getPersianMonthNameShort, getPersianMonthsForDropdown, getPersianWeekdayName, getPersianYear, getPersianYearsForDropdown, getPostSourceConfig, getProvinceLabel, getScoreBenchmarkTiers, getSourceColorVar, tagInputVariants as hashtagInputVariants, jalaliToGregorian, labelChipVariants, localeAwareCategoryTick, localeAwareNumberTick, navItemVariants, navigationMenuTriggerStyle, normalizeSize, normalizeUrlDigits, pageLoaderVariants, postCardVariants, postHeaderVariants, profileCardVariants, resolveLevel, siteHeaderVariants, sourceCategory, spinnerVariants, statDisplayVariants, tagInputVariants, toEnglishDigits, toPersianDigits, toggleVariants, transformNivoLineData, useAsync, useBreakpoint, useChartTheme, useClipboard, useDebounce, useDocumentDirection, useFilterParams, useFilterPresets, useFormField, useInfiniteScroll, useIsMobile, useJobWizard, useJobWizardState, useLocalStorage, useMediaQuery, useNavRail, useNavTree, useOutsideClick, usePrevious, useRootStyles, useScrollLock, useSidebar };
|