@parto-system-design/ui 1.1.7 → 1.1.8

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.
Files changed (122) hide show
  1. package/dist/{chunk-HEYMLQOV.cjs → chunk-2ACKKPWA.cjs} +22 -4
  2. package/dist/chunk-2ACKKPWA.cjs.map +1 -0
  3. package/dist/{chunk-RA5KZNG5.js → chunk-3QYYPPFJ.js} +8 -8
  4. package/dist/chunk-3QYYPPFJ.js.map +1 -0
  5. package/dist/{chunk-OEVMKFFL.cjs → chunk-4WONHORR.cjs} +47 -35
  6. package/dist/chunk-4WONHORR.cjs.map +1 -0
  7. package/dist/{chunk-NEML6RCV.js → chunk-5HCXH6GS.js} +6 -2
  8. package/dist/chunk-5HCXH6GS.js.map +1 -0
  9. package/dist/{chunk-53QY4PD3.js → chunk-GCZ6YATL.js} +38 -6
  10. package/dist/chunk-GCZ6YATL.js.map +1 -0
  11. package/dist/{chunk-GDHRYKVM.js → chunk-GPYJ66CG.js} +4 -4
  12. package/dist/chunk-GPYJ66CG.js.map +1 -0
  13. package/dist/{chunk-SCGW2BH4.cjs → chunk-HS3XI3CC.cjs} +5 -5
  14. package/dist/chunk-HS3XI3CC.cjs.map +1 -0
  15. package/dist/chunk-JCJLN437.js +108 -0
  16. package/dist/chunk-JCJLN437.js.map +1 -0
  17. package/dist/{chunk-MQGQVI3W.cjs → chunk-JMKNNH63.cjs} +39 -7
  18. package/dist/chunk-JMKNNH63.cjs.map +1 -0
  19. package/dist/{chunk-34JUCX2G.cjs → chunk-K6G63EED.cjs} +2 -4
  20. package/dist/chunk-K6G63EED.cjs.map +1 -0
  21. package/dist/{chunk-3AIJKXBV.cjs → chunk-KYM7NIJO.cjs} +200 -9
  22. package/dist/chunk-KYM7NIJO.cjs.map +1 -0
  23. package/dist/{chunk-ZZFNJR2E.js → chunk-MEKWH3GS.js} +22 -4
  24. package/dist/chunk-MEKWH3GS.js.map +1 -0
  25. package/dist/{chunk-YE477L2H.cjs → chunk-MMC6M35Q.cjs} +10 -10
  26. package/dist/chunk-MMC6M35Q.cjs.map +1 -0
  27. package/dist/{chunk-LZMCMZZF.js → chunk-NMH43BDC.js} +44 -32
  28. package/dist/chunk-NMH43BDC.js.map +1 -0
  29. package/dist/chunk-NORDUD2T.cjs +135 -0
  30. package/dist/chunk-NORDUD2T.cjs.map +1 -0
  31. package/dist/{chunk-SCX6AR53.cjs → chunk-OQB6HIUL.cjs} +5 -5
  32. package/dist/{chunk-SCX6AR53.cjs.map → chunk-OQB6HIUL.cjs.map} +1 -1
  33. package/dist/{chunk-IQHKJ4SS.js → chunk-PYURPUTV.js} +195 -6
  34. package/dist/chunk-PYURPUTV.js.map +1 -0
  35. package/dist/{chunk-AXAY64KL.js → chunk-S3T2L6NA.js} +3 -4
  36. package/dist/chunk-S3T2L6NA.js.map +1 -0
  37. package/dist/{chunk-MBCTRNTG.js → chunk-SXWSOU3Y.js} +3 -3
  38. package/dist/{chunk-MBCTRNTG.js.map → chunk-SXWSOU3Y.js.map} +1 -1
  39. package/dist/chunk-TWJXOV4C.js +145 -0
  40. package/dist/chunk-TWJXOV4C.js.map +1 -0
  41. package/dist/{chunk-P5XHPNJG.cjs → chunk-U3ADRIVO.cjs} +6 -2
  42. package/dist/chunk-U3ADRIVO.cjs.map +1 -0
  43. package/dist/chunk-UOZN45G4.cjs +130 -0
  44. package/dist/chunk-UOZN45G4.cjs.map +1 -0
  45. package/dist/chunk-VHLDOG74.cjs +167 -0
  46. package/dist/chunk-VHLDOG74.cjs.map +1 -0
  47. package/dist/{chunk-VO3B75F6.cjs → chunk-YENXXYUV.cjs} +4 -4
  48. package/dist/{chunk-VO3B75F6.cjs.map → chunk-YENXXYUV.cjs.map} +1 -1
  49. package/dist/chunk-YFQWC2PW.js +113 -0
  50. package/dist/chunk-YFQWC2PW.js.map +1 -0
  51. package/dist/{chunk-YAJWTNOX.js → chunk-ZBZDR4ZC.js} +3 -3
  52. package/dist/{chunk-YAJWTNOX.js.map → chunk-ZBZDR4ZC.js.map} +1 -1
  53. package/dist/components/charts/PartoAreaChart.cjs +3 -3
  54. package/dist/components/charts/PartoAreaChart.d.cts +2 -0
  55. package/dist/components/charts/PartoAreaChart.d.ts +2 -0
  56. package/dist/components/charts/PartoAreaChart.js +2 -2
  57. package/dist/components/charts/PartoBarChart.cjs +3 -3
  58. package/dist/components/charts/PartoBarChart.d.cts +6 -0
  59. package/dist/components/charts/PartoBarChart.d.ts +6 -0
  60. package/dist/components/charts/PartoBarChart.js +2 -2
  61. package/dist/components/charts/PartoLineChart.cjs +3 -3
  62. package/dist/components/charts/PartoLineChart.d.cts +8 -0
  63. package/dist/components/charts/PartoLineChart.d.ts +8 -0
  64. package/dist/components/charts/PartoLineChart.js +2 -2
  65. package/dist/components/charts/PartoPieChart.cjs +3 -3
  66. package/dist/components/charts/PartoPieChart.d.cts +8 -0
  67. package/dist/components/charts/PartoPieChart.d.ts +8 -0
  68. package/dist/components/charts/PartoPieChart.js +2 -2
  69. package/dist/components/ui/badge.cjs +3 -3
  70. package/dist/components/ui/badge.js +1 -1
  71. package/dist/components/ui/button.cjs +4 -4
  72. package/dist/components/ui/button.js +2 -2
  73. package/dist/components/ui/calendar.cjs +4 -4
  74. package/dist/components/ui/calendar.js +3 -3
  75. package/dist/components/ui/data-table.cjs +4 -4
  76. package/dist/components/ui/data-table.js +3 -3
  77. package/dist/components/ui/input.cjs +5 -5
  78. package/dist/components/ui/input.js +2 -2
  79. package/dist/components/ui/page-card.cjs +2 -2
  80. package/dist/components/ui/page-card.d.cts +1 -1
  81. package/dist/components/ui/page-card.d.ts +1 -1
  82. package/dist/components/ui/page-card.js +1 -1
  83. package/dist/components/ui/saved-query-card.cjs +4 -4
  84. package/dist/components/ui/saved-query-card.js +3 -3
  85. package/dist/index.cjs +4470 -1927
  86. package/dist/index.cjs.map +1 -1
  87. package/dist/index.css +333 -34
  88. package/dist/index.d.cts +910 -120
  89. package/dist/index.d.ts +910 -120
  90. package/dist/index.js +4298 -1792
  91. package/dist/index.js.map +1 -1
  92. package/dist/{page-card-DOl50DqJ.d.cts → page-card-CmShVqG-.d.cts} +1 -1
  93. package/dist/{page-card-CO92oXkc.d.ts → page-card-HBn-cy4J.d.ts} +1 -1
  94. package/package.json +1 -1
  95. package/dist/chunk-34JUCX2G.cjs.map +0 -1
  96. package/dist/chunk-3AIJKXBV.cjs.map +0 -1
  97. package/dist/chunk-53QY4PD3.js.map +0 -1
  98. package/dist/chunk-7Y4V3R3Y.cjs +0 -120
  99. package/dist/chunk-7Y4V3R3Y.cjs.map +0 -1
  100. package/dist/chunk-AXAY64KL.js.map +0 -1
  101. package/dist/chunk-D5XCQDFS.js +0 -92
  102. package/dist/chunk-D5XCQDFS.js.map +0 -1
  103. package/dist/chunk-GDHRYKVM.js.map +0 -1
  104. package/dist/chunk-HEYMLQOV.cjs.map +0 -1
  105. package/dist/chunk-IQHKJ4SS.js.map +0 -1
  106. package/dist/chunk-LLJR7FV3.js +0 -135
  107. package/dist/chunk-LLJR7FV3.js.map +0 -1
  108. package/dist/chunk-LZMCMZZF.js.map +0 -1
  109. package/dist/chunk-MKYVQQBV.cjs +0 -114
  110. package/dist/chunk-MKYVQQBV.cjs.map +0 -1
  111. package/dist/chunk-MQGQVI3W.cjs.map +0 -1
  112. package/dist/chunk-NEFZJHE4.cjs +0 -157
  113. package/dist/chunk-NEFZJHE4.cjs.map +0 -1
  114. package/dist/chunk-NEML6RCV.js.map +0 -1
  115. package/dist/chunk-OEVMKFFL.cjs.map +0 -1
  116. package/dist/chunk-P5XHPNJG.cjs.map +0 -1
  117. package/dist/chunk-QJ7UB2ZQ.js +0 -98
  118. package/dist/chunk-QJ7UB2ZQ.js.map +0 -1
  119. package/dist/chunk-RA5KZNG5.js.map +0 -1
  120. package/dist/chunk-SCGW2BH4.cjs.map +0 -1
  121. package/dist/chunk-YE477L2H.cjs.map +0 -1
  122. 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, S as StageStatusKey, b as EmotionKey, F as FlowKey, c as StatusKey, d as SeverityKey } from './i18n-ArS3mqj0.js';
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-CO92oXkc.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-CO92oXkc.js';
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
 
@@ -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,162 @@ 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
- * Platform sources supported by `<PostCard>`. Extends the existing `SocialPlatform`
2933
- * for Phase 1; additional sources (`facebook`, `news`, `tv`, `radio`) land in Phase 2
2934
- * together with the `SocialPlatformBadge` extension.
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 — used in PostDetailsModal sidebar. */
2992
+ /** Optional follower / subscriber count. */
2945
2993
  followers?: number;
2946
- }
2947
- interface PostMetrics {
2948
- views?: number;
2949
- likes?: number;
2950
- comments?: number;
2951
- shares?: number;
2952
- /** Estimated reach / potential audience. */
2953
- reach?: number;
2954
- /** Engagement rate as a 0..1 decimal (e.g. 0.034 = 3.4%). */
2955
- engagementRate?: number;
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
+ /** Influence score 0..100 — used to render the authority chip on the card. */
2995
+ authorityScore?: number;
2996
+ /** Categorical author tier inferred from follower count + engagement. */
2997
+ authorityTier?: PostAuthorityTier;
2962
2998
  }
2963
2999
  /**
2964
- * Flags indicate which enrichments the product has attached to this post.
2965
- * Consumers set these to show the matching chip in `<PostHeader>`.
3000
+ * Editorial / broadcast actor. Used when the post originates from press, web, tv, radio
3001
+ * instead of an individual social-platform account.
2966
3002
  */
2967
- interface PostEnrichmentFlags {
2968
- ocr?: boolean;
2969
- transcript?: boolean;
2970
- aiAnalysis?: boolean;
2971
- commentCount?: number;
3003
+ interface PostOutlet {
3004
+ name: string;
3005
+ logoUrl?: string;
3006
+ /** Editorial only: web domain ("hamshahrionline.ir"). */
3007
+ domain?: string;
3008
+ /** Editorial only: 0..100 SEO/credibility signal. */
3009
+ domainAuthority?: number;
3010
+ /** Broadcast only: TV channel or radio station ("شبکه ۱", "رادیو پیام"). */
3011
+ channel?: string;
3012
+ /** Broadcast only: program / show name. */
3013
+ program?: string;
3014
+ /** Editorial only: byline / journalist name. */
3015
+ reporterName?: string;
2972
3016
  }
3017
+ /**
3018
+ * Per-item ingestion status. Drives how `<PostMedia>` renders each item:
3019
+ * - `ready`: image/video/audio is downloaded and viewable.
3020
+ * - `loading`: the panel is fetching the media right now — render a shimmer.
3021
+ * - `failed`: download failed — render retry placeholder.
3022
+ * - `unavailable`: source has media but we never captured it — render "ذخیره نشده" placeholder.
3023
+ */
3024
+ type PostMediaStatus = 'ready' | 'loading' | 'failed' | 'unavailable';
3025
+ /** Sensitive-content classifications. Used at media-level and post-level. */
3026
+ type PostMediaSensitivity = 'nsfw' | 'graphic' | 'spoiler';
2973
3027
  interface PostMediaItem {
2974
3028
  url: string;
2975
3029
  thumbnailUrl?: string;
2976
- /** Natural aspect ratio (width / height). If omitted, defaults to 1. */
3030
+ /** Natural aspect ratio (width / height). Defaults to 1. */
2977
3031
  aspectRatio?: number;
2978
3032
  alt?: string;
2979
- type?: 'image' | 'video';
2980
- /** Duration in seconds for video. */
3033
+ type?: 'image' | 'video' | 'audio';
3034
+ /** Duration in seconds for video / audio. */
2981
3035
  duration?: number;
3036
+ /** Ingestion status. Defaults to 'ready'. */
3037
+ status?: PostMediaStatus;
3038
+ /** Sensitivity tag — if set, the renderer blurs the media until revealed. */
3039
+ sensitivity?: PostMediaSensitivity;
3040
+ /** Audio only: URL of a waveform peaks file or a pre-rendered SVG / inline data URI. */
3041
+ waveformUrl?: string;
3042
+ }
3043
+ /** Open Graph–style URL preview embedded inside a text body. */
3044
+ interface PostUrlPreview {
3045
+ url: string;
3046
+ domain: string;
3047
+ title?: string;
3048
+ description?: string;
3049
+ thumbnailUrl?: string;
2982
3050
  }
3051
+ /**
3052
+ * Sticker overlays found on Instagram stories (mentions, polls, location, music, etc.).
3053
+ * Captured to preserve story context after crawling. Coordinates are normalized 0..1.
3054
+ */
3055
+ interface StoryStickerOverlay {
3056
+ /** Type of sticker — drives the icon and label in `<PostMediaStory>`. */
3057
+ type: 'mention' | 'location' | 'hashtag' | 'music' | 'poll' | 'question' | 'time' | 'link' | 'other';
3058
+ /** Human-readable label (e.g. "@digikala", "Tehran", "#خرید_آنلاین"). */
3059
+ label: string;
3060
+ /** Optional secondary text — for polls/questions, the question text. */
3061
+ secondaryText?: string;
3062
+ /** Normalized x/y position on the story canvas (0..1). */
3063
+ x?: number;
3064
+ y?: number;
3065
+ }
3066
+ /** Per-story metadata extracted at crawl time. */
3067
+ interface StoryItem {
3068
+ /** The captured media (image or video). */
3069
+ media: PostMediaItem;
3070
+ /** OCR-extracted text from the story canvas (visible Persian/English text). */
3071
+ ocrText?: string;
3072
+ /** Transcript for video stories. */
3073
+ transcript?: string;
3074
+ /** Story sticker overlays (mentions, polls, location, etc.). */
3075
+ stickers?: StoryStickerOverlay[];
3076
+ /** Story publication time — distinct from the post wrapper's timestamp. */
3077
+ publishedAt?: Date | string | number;
3078
+ /** Outbound "swipe up" / link sticker URL. */
3079
+ swipeUpUrl?: string;
3080
+ /** Story view count (Stories use viewers, not likes). */
3081
+ viewCount?: number;
3082
+ }
3083
+ /**
3084
+ * Discriminated union of body shapes. The renderer in `<PostBody>` switches on `type`.
3085
+ *
3086
+ * Story-related variants:
3087
+ * - `story` — single ephemeral story (9:16, OCR text overlay, optional swipe-up link)
3088
+ * - `highlight` — saved-story collection under a titled cover; renders as a strip of stories
3089
+ * Other social media coverage:
3090
+ * - `media-grid`, `media-carousel`, `video`, `audio`, `text` — generic
3091
+ * Failure states:
3092
+ * - `missing-media`, `source-removed`
3093
+ */
2983
3094
  type PostBodyData = {
2984
3095
  type: 'text';
2985
3096
  text: string;
3097
+ urlPreview?: PostUrlPreview;
2986
3098
  } | {
2987
3099
  type: 'media-single';
2988
3100
  media: PostMediaItem;
2989
3101
  caption?: string;
3102
+ urlPreview?: PostUrlPreview;
3103
+ } | {
3104
+ type: 'media-grid';
3105
+ items: PostMediaItem[];
3106
+ caption?: string;
2990
3107
  } | {
2991
3108
  type: 'media-carousel';
2992
3109
  items: PostMediaItem[];
@@ -2995,85 +3112,141 @@ type PostBodyData = {
2995
3112
  type: 'video';
2996
3113
  media: PostMediaItem;
2997
3114
  caption?: string;
3115
+ } | {
3116
+ type: 'audio';
3117
+ media: PostMediaItem;
3118
+ caption?: string;
3119
+ } | {
3120
+ type: 'story';
3121
+ story: StoryItem;
3122
+ caption?: string;
3123
+ } | {
3124
+ type: 'highlight';
3125
+ title: string;
3126
+ coverUrl?: string;
3127
+ stories: StoryItem[];
3128
+ caption?: string;
2998
3129
  } | {
2999
3130
  type: 'missing-media';
3000
3131
  caption?: string;
3001
3132
  reason?: string;
3133
+ } | {
3134
+ type: 'source-removed';
3135
+ archivedAt?: Date | string | number;
3136
+ archiveUrl?: string;
3137
+ caption?: string;
3002
3138
  };
3003
- interface PostData {
3004
- id: string;
3005
- source: PostPlatform;
3006
- author: PostAuthor;
3007
- /** Post creation time. Accepts Date, ISO string, or unix ms. */
3008
- timestamp: Date | string | number;
3009
- body: PostBodyData;
3010
- metrics?: PostMetrics;
3011
- sentiment?: PostSentiment;
3012
- enrichments?: PostEnrichmentFlags;
3013
- /** User-defined category tags (topic, campaign, issue type). */
3014
- tags?: PostTag[];
3015
- /** Authority / influence score 0..100 used to flag high-impact mentions. */
3016
- authorityScore?: number;
3017
- /** ISO language code detected for the post. */
3018
- language?: string;
3019
- /** URL to the post at the source platform (used by default "view at source" action). */
3020
- sourceUrl?: string;
3139
+ /**
3140
+ * Unified metric envelope. Labels are platform-aware via `getMetricLabel(source, key, locale)`;
3141
+ * the same `views` field is rendered as "بازدید" (Instagram/YouTube), "تماشا" (TikTok),
3142
+ * "نمایش" (X), "بیننده" (TV), "شنونده" (Radio) depending on the post's source.
3143
+ */
3144
+ interface PostMetrics {
3145
+ /** Generic "consumption" metric — viewers / impressions / plays / page-views. */
3146
+ views?: number;
3147
+ likes?: number;
3148
+ comments?: number;
3149
+ /** Generic share count. */
3150
+ shares?: number;
3151
+ /** Reposts: X retweets, Threads reposts, Telegram forwards. */
3152
+ reposts?: number;
3153
+ /** Quote-with-comment: X quote-tweets, Threads quotes. */
3154
+ quotes?: number;
3155
+ /** Saves/bookmarks: IG, TikTok, LinkedIn. */
3156
+ saves?: number;
3157
+ /** Estimated reach / potential audience. */
3158
+ reach?: number;
3159
+ /** Engagement rate as 0..1 decimal (e.g. 0.034 = 3.4%). */
3160
+ engagementRate?: number;
3161
+ /** Broadcast: TV viewers / Radio listeners. Editorial: readers. One field, label per source. */
3162
+ audience?: number;
3163
+ /** Editorial: actual page-views distinct from `views`. */
3164
+ reads?: number;
3165
+ /** Editorial: SEO domain authority signal — also surfaced via `PostOutlet.domainAuthority`. */
3166
+ domainAuthority?: number;
3167
+ /** Reaction breakdown (Telegram emoji, LinkedIn 7-type, Facebook-style). */
3168
+ reactions?: ReactionBreakdown;
3021
3169
  }
3022
- interface PostAction {
3170
+ /**
3171
+ * Typed reaction breakdown. Sparse — only platforms that emit a given reaction fill it.
3172
+ * LinkedIn fills like/celebrate/support/love/insightful/funny.
3173
+ * Facebook fills like/love/care/haha/wow/sad/angry.
3174
+ * Telegram fills `emoji` with the raw map.
3175
+ */
3176
+ interface ReactionBreakdown {
3177
+ like?: number;
3178
+ love?: number;
3179
+ celebrate?: number;
3180
+ support?: number;
3181
+ insightful?: number;
3182
+ funny?: number;
3183
+ /** Facebook-only — empathy reaction. */
3184
+ care?: number;
3185
+ /** Facebook-only — laughing reaction. */
3186
+ haha?: number;
3187
+ /** Facebook-only — surprised reaction. */
3188
+ wow?: number;
3189
+ /** Facebook-only — sad reaction. */
3190
+ sad?: number;
3191
+ /** Facebook-only — anger reaction. */
3192
+ angry?: number;
3193
+ /** Raw emoji → count map (Telegram channel reactions). */
3194
+ emoji?: Record<string, number>;
3195
+ }
3196
+ interface PostTag {
3023
3197
  id: string;
3024
3198
  label: string;
3025
- icon: LucideIcon;
3026
- variant?: 'default' | 'danger';
3027
- onClick: (post: PostData) => void;
3028
- disabled?: boolean;
3029
- hidden?: boolean;
3199
+ /** Optional CSS var (e.g. `--chart-1`) or hex color. Auto-assigned from label if omitted. */
3200
+ color?: string;
3030
3201
  }
3031
- interface PostCommentAuthor {
3032
- name: string;
3033
- handle?: string;
3034
- avatarUrl?: string;
3035
- verified?: boolean;
3202
+ /**
3203
+ * Flags indicate which enrichments the product has attached to this post.
3204
+ * Consumers set these to show the matching chip in `<PostHeader>`.
3205
+ */
3206
+ interface PostEnrichmentFlags {
3207
+ ocr?: boolean;
3208
+ transcript?: boolean;
3209
+ aiAnalysis?: boolean;
3210
+ commentCount?: number;
3036
3211
  }
3037
- interface PostComment {
3038
- id: string;
3039
- author: PostCommentAuthor;
3040
- text: string;
3041
- timestamp: Date | string | number;
3042
- sentiment?: PostSentiment;
3043
- likes?: number;
3044
- replies?: PostComment[];
3045
- /** Pinned by post author (Instagram, YouTube). */
3212
+ /**
3213
+ * Contextual flags surfaced as chips or banners on the card. Independent of media-level status.
3214
+ */
3215
+ interface PostFlags {
3046
3216
  pinned?: boolean;
3047
- /** Indicates this is a reply from the original post author. */
3048
- authorReply?: boolean;
3049
- }
3050
- type PostEmotion = 'anger' | 'anticipation' | 'joy' | 'trust' | 'fear' | 'surprise' | 'sadness' | 'disgust' | 'neutral';
3051
- type PostIntent = 'complaint' | 'praise' | 'question' | 'announcement' | 'comparison' | 'opinion' | 'info';
3052
- interface PostAiEntity {
3053
- text: string;
3054
- type: 'person' | 'brand' | 'place' | 'product' | 'event' | 'organization';
3055
- }
3056
- interface PostAiAnalysis {
3057
- /** Auto-generated summary of the post. */
3058
- summary?: string;
3059
- /** Key topics mentioned in the post. */
3060
- topics?: string[];
3061
- /** Named entities detected. */
3062
- entities?: PostAiEntity[];
3063
- /** Primary intent classification. */
3064
- intent?: PostIntent;
3065
- /** 9-class emotion distribution (raw counts or normalized). */
3066
- emotions?: Partial<Record<PostEmotion, number>>;
3067
- /** Flagged risks / sensitive content categories. */
3068
- risks?: string[];
3069
- /** Influence tier estimate for the author. */
3070
- influenceTier?: 'nano' | 'micro' | 'macro' | 'mega';
3071
- /** Model confidence 0..1 for overall analysis. */
3072
- confidence?: number;
3073
- /** Analysis generation timestamp. */
3074
- generatedAt?: Date | string | number;
3217
+ edited?: boolean;
3218
+ /** Optional edit count, surfaced in tooltip. */
3219
+ editCount?: number;
3220
+ sponsored?: boolean;
3221
+ /** Post was deleted at source after we ingested it. */
3222
+ deletedAtSource?: boolean;
3223
+ /** Snapshot URL to our archived copy. */
3224
+ archivedSnapshotUrl?: string;
3225
+ /** Post-level sensitivity (distinct from per-media `sensitivity`). */
3226
+ sensitive?: PostMediaSensitivity;
3227
+ }
3228
+ /** Cluster / topic membership — links the post to a parent analytical grouping. */
3229
+ interface PostCluster {
3230
+ id: string;
3231
+ label: string;
3232
+ tone?: 'brand' | 'neutral' | 'warning';
3233
+ }
3234
+ /** "X reposted at Y" wrapper info. */
3235
+ interface PostRepostInfo {
3236
+ by: PostAuthor;
3237
+ at: Date | string | number;
3238
+ /** Optional retweet-with-comment / Telegram forward note. */
3239
+ comment?: string;
3240
+ }
3241
+ /** Position info when a post belongs to a multi-post thread. */
3242
+ interface PostThreadInfo {
3243
+ threadId: string;
3244
+ /** 1-indexed position in the thread. */
3245
+ position: number;
3246
+ total: number;
3247
+ /** Optional id of the next thread post — used to draw the connector to the next visible card. */
3248
+ nextId?: string;
3075
3249
  }
3076
- /** Platform-specific metadata, discriminated by `platform` (matches `PostData.source`). */
3077
3250
  type PlatformMetadata = {
3078
3251
  platform: 'instagram';
3079
3252
  postType?: 'feed' | 'reel' | 'story' | 'carousel' | 'igtv';
@@ -3084,7 +3257,6 @@ type PlatformMetadata = {
3084
3257
  };
3085
3258
  saveCount?: number;
3086
3259
  collaborators?: string[];
3087
- /** Hashtags used in the post. */
3088
3260
  hashtags?: string[];
3089
3261
  } | {
3090
3262
  platform: 'twitter';
@@ -3095,7 +3267,6 @@ type PlatformMetadata = {
3095
3267
  quoteCount?: number;
3096
3268
  bookmarkCount?: number;
3097
3269
  isThread?: boolean;
3098
- /** Count of additional posts in the thread. */
3099
3270
  threadLength?: number;
3100
3271
  } | {
3101
3272
  platform: 'youtube';
@@ -3140,7 +3311,184 @@ type PlatformMetadata = {
3140
3311
  replyControls?: 'anyone' | 'followed' | 'mentioned';
3141
3312
  repostCount?: number;
3142
3313
  quoteCount?: number;
3314
+ } | {
3315
+ platform: 'facebook';
3316
+ postType?: 'post' | 'photo' | 'video' | 'reel' | 'story' | 'event' | 'shared';
3317
+ reactions?: {
3318
+ like?: number;
3319
+ love?: number;
3320
+ care?: number;
3321
+ haha?: number;
3322
+ wow?: number;
3323
+ sad?: number;
3324
+ angry?: number;
3325
+ };
3326
+ shareCount?: number;
3327
+ /** Page name if posted on behalf of a page (vs personal profile). */
3328
+ pageName?: string;
3329
+ pageFollowers?: number;
3330
+ } | {
3331
+ platform: 'tv';
3332
+ airDate?: Date | string | number;
3333
+ durationSec?: number;
3334
+ programType?: 'news' | 'talk-show' | 'documentary' | 'interview' | 'live' | 'other';
3335
+ viewers?: number;
3336
+ replays?: number;
3337
+ } | {
3338
+ platform: 'radio';
3339
+ airDate?: Date | string | number;
3340
+ durationSec?: number;
3341
+ programType?: 'news' | 'talk-show' | 'music' | 'interview' | 'live' | 'other';
3342
+ listeners?: number;
3343
+ } | {
3344
+ platform: 'press';
3345
+ printedAt?: Date | string | number;
3346
+ /** Print edition: issue / page reference. */
3347
+ issue?: string;
3348
+ pageNumber?: number;
3349
+ /** Optional AVE (Ad Value Equivalent) — common press metric. */
3350
+ adValueEquivalent?: number;
3351
+ hashtags?: string[];
3352
+ } | {
3353
+ platform: 'web';
3354
+ contentType?: 'blog' | 'forum' | 'news' | 'review' | 'comment' | 'other';
3355
+ /** Reference to a parent thread / discussion if part of one. */
3356
+ threadUrl?: string;
3357
+ hashtags?: string[];
3143
3358
  };
3359
+ interface PostData {
3360
+ id: string;
3361
+ /**
3362
+ * Source platform — full 11-source taxonomy (social + broadcast + editorial).
3363
+ * Header layout and metric labels dispatch on this value via `sourceCategory(source)`.
3364
+ */
3365
+ source: PostSource;
3366
+ /** Headline (editorial), program/segment (broadcast), video title (YouTube). */
3367
+ title?: string;
3368
+ /** Present for social posts; optional for editorial/broadcast where `outlet` is the actor. */
3369
+ author?: PostAuthor;
3370
+ /** Editorial/broadcast outlet — used for press, web, tv, radio header variants. */
3371
+ outlet?: PostOutlet;
3372
+ body: PostBodyData;
3373
+ /** Post creation / publish / air time. Accepts Date, ISO string, or unix ms. */
3374
+ timestamp: Date | string | number;
3375
+ metrics?: PostMetrics;
3376
+ sentiment?: PostSentiment;
3377
+ /** Dominant emotion (9-class) — surfaced as a chip on the card. */
3378
+ emotion?: PostEmotion;
3379
+ /** Political flow classification — surfaced as a chip on the card. */
3380
+ flow?: PostFlow;
3381
+ severity?: PostSeverity;
3382
+ enrichments?: PostEnrichmentFlags;
3383
+ flags?: PostFlags;
3384
+ cluster?: PostCluster;
3385
+ /** User-defined category tags. */
3386
+ tags?: PostTag[];
3387
+ /** @deprecated Use `author.authorityScore` instead. Kept for backward compat. */
3388
+ authorityScore?: number;
3389
+ /** ISO language code detected for the post. */
3390
+ language?: string;
3391
+ /** URL to the post at the source platform. */
3392
+ sourceUrl?: string;
3393
+ /** Quoted/embedded post (X quote-tweets, Threads quotes, Telegram forwards-with-comment). */
3394
+ quoted?: PostData;
3395
+ /** Parent post when this is a reply. */
3396
+ parent?: PostData;
3397
+ /** Repost wrapper info — when present, render "X reposted" header strip above the card. */
3398
+ reposted?: PostRepostInfo;
3399
+ /** Thread position info — when present, draw the thread-connector hairline. */
3400
+ thread?: PostThreadInfo;
3401
+ /** Platform-specific metadata block (discriminated by source). */
3402
+ platformMeta?: PlatformMetadata;
3403
+ }
3404
+ interface PostAction {
3405
+ id: string;
3406
+ label: string;
3407
+ icon: LucideIcon;
3408
+ variant?: 'default' | 'danger';
3409
+ onClick: (post: PostData) => void;
3410
+ disabled?: boolean;
3411
+ hidden?: boolean;
3412
+ }
3413
+ /** Bulk action surfaced in the floating bottom bar when posts are selected. */
3414
+ interface PostBulkAction {
3415
+ id: string;
3416
+ label: string;
3417
+ icon: LucideIcon;
3418
+ variant?: 'default' | 'danger' | 'brand';
3419
+ /** Optional sub-options — rendered as dropdown menu when present. */
3420
+ options?: Array<{
3421
+ id: string;
3422
+ label: string;
3423
+ icon?: LucideIcon;
3424
+ }>;
3425
+ onClick: (selectedIds: string[], optionId?: string) => void;
3426
+ disabled?: boolean;
3427
+ hidden?: boolean;
3428
+ }
3429
+ interface PostCommentAuthor {
3430
+ name: string;
3431
+ handle?: string;
3432
+ avatarUrl?: string;
3433
+ verified?: boolean;
3434
+ /** Optional badge: "Moderator", "Subscriber", "Author", etc. — surfaced as a chip next to the name. */
3435
+ badge?: string;
3436
+ }
3437
+ interface PostComment {
3438
+ id: string;
3439
+ author: PostCommentAuthor;
3440
+ text: string;
3441
+ timestamp: Date | string | number;
3442
+ sentiment?: PostSentiment;
3443
+ likes?: number;
3444
+ replies?: PostComment[];
3445
+ /**
3446
+ * Total reply count (may exceed `replies.length` if pagination caps the nested
3447
+ * replies). Drives the "نمایش ۲۳ پاسخ" affordance.
3448
+ */
3449
+ replyCount?: number;
3450
+ /** Pinned by post author (Instagram, YouTube). */
3451
+ pinned?: boolean;
3452
+ /** Indicates this is a reply from the original post author. */
3453
+ authorReply?: boolean;
3454
+ /** Comment was edited at source — show ویرایش‌شده chip. */
3455
+ edited?: boolean;
3456
+ /** ISO language code; enables translation toggle when different from current locale. */
3457
+ language?: string;
3458
+ /** Hidden by source moderator / shadow-banned. */
3459
+ hiddenByModerator?: boolean;
3460
+ /** Typed reaction breakdown (Facebook 7-type, LinkedIn 7-type, YouTube hearts, etc.). */
3461
+ reactions?: ReactionBreakdown;
3462
+ /** AI-detected toxicity / hate-speech / spam score (0..1). Surfaces a flag chip when set. */
3463
+ toxicityScore?: number;
3464
+ /** Pre-translated body (if cached). */
3465
+ translatedText?: string;
3466
+ }
3467
+ type PostIntent = 'complaint' | 'praise' | 'question' | 'announcement' | 'comparison' | 'opinion' | 'info';
3468
+ interface PostAiEntity {
3469
+ text: string;
3470
+ type: 'person' | 'brand' | 'place' | 'product' | 'event' | 'organization';
3471
+ }
3472
+ interface PostAiAnalysis {
3473
+ /** Auto-generated summary of the post. */
3474
+ summary?: string;
3475
+ /** Key topics mentioned in the post. */
3476
+ topics?: string[];
3477
+ /** Named entities detected. */
3478
+ entities?: PostAiEntity[];
3479
+ /** Primary intent classification. */
3480
+ intent?: PostIntent;
3481
+ /** 9-class emotion distribution (raw counts or normalized). */
3482
+ emotions?: Partial<Record<PostEmotion, number>>;
3483
+ /** Flagged risks / sensitive content categories. */
3484
+ risks?: string[];
3485
+ /** Influence tier estimate for the author. */
3486
+ influenceTier?: PostAuthorityTier;
3487
+ /** Model confidence 0..1 for overall analysis. */
3488
+ confidence?: number;
3489
+ /** Analysis generation timestamp. */
3490
+ generatedAt?: Date | string | number;
3491
+ }
3144
3492
  /** Extended post details — optionally attached to PostData when fetching full view. */
3145
3493
  interface PostDetails {
3146
3494
  comments?: PostComment[];
@@ -3153,25 +3501,34 @@ interface PostDetails {
3153
3501
  platformMeta?: PlatformMetadata;
3154
3502
  }
3155
3503
 
3504
+ declare function defaultActions(handlers?: {
3505
+ onOpenDetails?: (post: PostData) => void;
3506
+ }): PostAction[];
3156
3507
  declare const postCardVariants: (props?: ({
3157
- density?: "compact" | "comfortable" | null | undefined;
3508
+ view?: "grid" | "compact" | "comfortable" | null | undefined;
3158
3509
  selected?: boolean | null | undefined;
3510
+ active?: boolean | null | undefined;
3159
3511
  } & class_variance_authority_types.ClassProp) | undefined) => string;
3160
3512
  interface PostCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'onSelect'>, VariantProps<typeof postCardVariants> {
3161
3513
  post: PostData;
3514
+ /** Layout mode. Replaces the legacy `density` prop. */
3515
+ view?: PostView;
3516
+ /** @deprecated Use `view` instead. */
3162
3517
  density?: PostDensity;
3163
3518
  selected?: boolean;
3519
+ /** True when the card represents the post currently open in the details drawer. */
3520
+ active?: boolean;
3164
3521
  read?: boolean;
3165
3522
  actions?: PostAction[];
3523
+ selectable?: boolean;
3166
3524
  onOpen?: (post: PostData) => void;
3167
3525
  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
3526
  onOpenDetails?: (post: PostData) => void;
3527
+ onOpenQuoted?: (post: PostData) => void;
3528
+ onRetryMedia?: (item: PostMediaItem) => void;
3529
+ onClusterClick?: (cluster: NonNullable<PostData['cluster']>) => void;
3530
+ onAuthorClick?: (authorId: string | undefined) => void;
3171
3531
  }
3172
- declare function defaultActions(handlers?: {
3173
- onOpenDetails?: (post: PostData) => void;
3174
- }): PostAction[];
3175
3532
  declare const PostCard: React$1.ForwardRefExoticComponent<PostCardProps & React$1.RefAttributes<HTMLDivElement>>;
3176
3533
 
3177
3534
  declare const postHeaderVariants: (props?: ({
@@ -3189,6 +3546,25 @@ interface PostHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, '
3189
3546
  }
3190
3547
  declare const PostHeader: React$1.ForwardRefExoticComponent<PostHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
3191
3548
 
3549
+ interface PostHeaderBroadcastProps extends React$1.HTMLAttributes<HTMLDivElement> {
3550
+ source: 'tv' | 'radio';
3551
+ outlet: PostOutlet;
3552
+ timestamp: Date | string | number;
3553
+ enrichments?: PostEnrichmentFlags;
3554
+ density?: PostDensity;
3555
+ }
3556
+ declare const PostHeaderBroadcast: React$1.ForwardRefExoticComponent<PostHeaderBroadcastProps & React$1.RefAttributes<HTMLDivElement>>;
3557
+ interface PostHeaderEditorialProps extends React$1.HTMLAttributes<HTMLDivElement> {
3558
+ source: 'press' | 'web';
3559
+ outlet: PostOutlet;
3560
+ timestamp: Date | string | number;
3561
+ enrichments?: PostEnrichmentFlags;
3562
+ density?: PostDensity;
3563
+ /** Optional author byline (for press articles authored by an individual journalist). */
3564
+ byline?: PostAuthor;
3565
+ }
3566
+ declare const PostHeaderEditorial: React$1.ForwardRefExoticComponent<PostHeaderEditorialProps & React$1.RefAttributes<HTMLDivElement>>;
3567
+
3192
3568
  /**
3193
3569
  * Aspect-ratio helpers for post media.
3194
3570
  *
@@ -3215,6 +3591,98 @@ interface PostBodyProps extends React$1.HTMLAttributes<HTMLDivElement> {
3215
3591
  }
3216
3592
  declare const PostBody: React$1.ForwardRefExoticComponent<PostBodyProps & React$1.RefAttributes<HTMLDivElement>>;
3217
3593
 
3594
+ /**
3595
+ * Rule: never vertically center an `<img>` with `mx-auto` + `h-full`. `<img>` is
3596
+ * `display: inline` by default so `mx-auto` is a no-op and the image rests on the
3597
+ * text baseline. Use the centered-container pattern below.
3598
+ */
3599
+ declare const CENTERED_CONTAINER_CLS = "relative w-full overflow-hidden rounded-md bg-muted flex items-center justify-center";
3600
+ /**
3601
+ * Foreground image classes. `block` removes the baseline inline behavior;
3602
+ * `max-*` + `w-auto h-auto` + `object-contain` fit naturally inside the container.
3603
+ */
3604
+ declare const FOREGROUND_IMG_CLS = "relative block max-h-full max-w-full w-auto h-auto object-contain";
3605
+ declare const BlurBackdrop: React$1.FC<{
3606
+ src?: string;
3607
+ }>;
3608
+ type PostMediaPlaceholderVariant = 'loading' | 'failed' | 'unavailable';
3609
+ interface PostMediaPlaceholderProps {
3610
+ variant: PostMediaPlaceholderVariant;
3611
+ /** Optional reason / human note. */
3612
+ reason?: string;
3613
+ /** CSS aspect ratio for the placeholder box (e.g. `"4 / 5"`). Defaults to `"4 / 5"`. */
3614
+ aspectRatio?: string;
3615
+ /** Optional cap. */
3616
+ maxHeight?: string;
3617
+ /** Retry handler — only rendered when `variant === 'failed'`. */
3618
+ onRetry?: () => void;
3619
+ className?: string;
3620
+ }
3621
+ declare const PostMediaPlaceholder: React$1.ForwardRefExoticComponent<PostMediaPlaceholderProps & React$1.RefAttributes<HTMLDivElement>>;
3622
+ interface PostMediaSourceRemovedProps {
3623
+ /** Optional URL to our archive snapshot. */
3624
+ archiveUrl?: string;
3625
+ /** Optional date the snapshot was taken. */
3626
+ archivedAt?: Date | string | number;
3627
+ className?: string;
3628
+ }
3629
+ declare const PostMediaSourceRemoved: React$1.ForwardRefExoticComponent<PostMediaSourceRemovedProps & React$1.RefAttributes<HTMLDivElement>>;
3630
+ declare const SENSITIVITY_LABEL: Record<string, string>;
3631
+ declare const PostMediaSensitiveOverlay: React$1.FC<{
3632
+ sensitivity: NonNullable<PostMediaItem['sensitivity']>;
3633
+ onReveal: () => void;
3634
+ }>;
3635
+ declare const PostMediaSingle: React$1.FC<{
3636
+ item: PostMediaItem;
3637
+ context: AspectContext;
3638
+ onRetry?: (item: PostMediaItem) => void;
3639
+ className?: string;
3640
+ }>;
3641
+ declare const PostMediaGrid: React$1.FC<{
3642
+ items: PostMediaItem[];
3643
+ context: AspectContext;
3644
+ onRetry?: (item: PostMediaItem) => void;
3645
+ className?: string;
3646
+ }>;
3647
+ declare const PostMediaCarousel: React$1.FC<{
3648
+ items: PostMediaItem[];
3649
+ context: AspectContext;
3650
+ onRetry?: (item: PostMediaItem) => void;
3651
+ className?: string;
3652
+ }>;
3653
+ declare const PostMediaVideo: React$1.FC<{
3654
+ item: PostMediaItem;
3655
+ context: AspectContext;
3656
+ onRetry?: (item: PostMediaItem) => void;
3657
+ className?: string;
3658
+ }>;
3659
+ declare const PostMediaAudio: React$1.FC<{
3660
+ item: PostMediaItem;
3661
+ context: AspectContext;
3662
+ className?: string;
3663
+ }>;
3664
+ declare const PostMediaStory: React$1.FC<{
3665
+ story: StoryItem;
3666
+ context: AspectContext;
3667
+ /** When true, no fixed 9:16 frame — used inside Highlight strip cells. */
3668
+ fillCell?: boolean;
3669
+ className?: string;
3670
+ }>;
3671
+ declare const PostMediaHighlight: React$1.FC<{
3672
+ title: string;
3673
+ coverUrl?: string;
3674
+ stories: StoryItem[];
3675
+ context: AspectContext;
3676
+ className?: string;
3677
+ }>;
3678
+ interface PostMediaProps extends React$1.HTMLAttributes<HTMLDivElement> {
3679
+ body: PostBodyData;
3680
+ context: AspectContext;
3681
+ /** Retry callback for failed media items. */
3682
+ onRetry?: (item: PostMediaItem) => void;
3683
+ }
3684
+ declare const PostMedia: React$1.ForwardRefExoticComponent<PostMediaProps & React$1.RefAttributes<HTMLDivElement>>;
3685
+
3218
3686
  interface PostActionsProps extends React$1.HTMLAttributes<HTMLDivElement> {
3219
3687
  post: PostData;
3220
3688
  actions: PostAction[];
@@ -3234,10 +3702,94 @@ interface PostMetadataProps extends React$1.HTMLAttributes<HTMLDivElement> {
3234
3702
  }
3235
3703
  declare const PostMetadata: React$1.ForwardRefExoticComponent<PostMetadataProps & React$1.RefAttributes<HTMLDivElement>>;
3236
3704
 
3705
+ interface PostSignalsProps extends React$1.HTMLAttributes<HTMLDivElement> {
3706
+ sentiment?: PostSentiment;
3707
+ emotion?: EmotionKey;
3708
+ flow?: FlowKey;
3709
+ severity?: PostSeverity;
3710
+ cluster?: PostCluster;
3711
+ /** ISO language code (rendered as uppercase chip when not 'fa'). */
3712
+ language?: string;
3713
+ /** When true, hide emotion + flow + cluster + language to keep the row scannable in compact density. */
3714
+ compact?: boolean;
3715
+ /** Click handler on the cluster chip — typically filters the list. */
3716
+ onClusterClick?: (cluster: PostCluster) => void;
3717
+ }
3718
+ /**
3719
+ * Domain-signal chip row: sentiment, emotion, flow, severity, cluster, language.
3720
+ * Rendered in the `<PostCard>` footer. Designed to wrap when narrow.
3721
+ */
3722
+ declare const PostSignals: React$1.ForwardRefExoticComponent<PostSignalsProps & React$1.RefAttributes<HTMLDivElement>>;
3723
+
3724
+ interface PostRepostHeaderProps extends React$1.HTMLAttributes<HTMLDivElement> {
3725
+ reposted: PostRepostInfo;
3726
+ /** Optional click handler on the reposter chip — typically opens the reposter's profile. */
3727
+ onAuthorClick?: (authorId: string | undefined) => void;
3728
+ }
3729
+ /**
3730
+ * Slim wrapper strip rendered above a `<PostCard>` when the post is surfaced through
3731
+ * a repost / retweet / forward. Matches the X, Threads, Telegram-channel-forward UX.
3732
+ */
3733
+ declare const PostRepostHeader: React$1.ForwardRefExoticComponent<PostRepostHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
3734
+
3735
+ interface PostQuotedEmbedProps extends React$1.HTMLAttributes<HTMLDivElement> {
3736
+ /** The post being quoted / referenced. */
3737
+ post: PostData;
3738
+ /** Click handler — typically navigates to the quoted post's details surface. */
3739
+ onOpen?: (post: PostData) => void;
3740
+ }
3741
+ /**
3742
+ * Nested compact card rendered inside a `<PostCard>` body when the post quotes,
3743
+ * embeds, or replies to another post. Read-only — no metrics, no action buttons,
3744
+ * no recursive embeds. Matches the X quote-tweet stacking pattern.
3745
+ *
3746
+ * RTL: indented from the inline-start via `ms-*` (visually right-indent in RTL).
3747
+ */
3748
+ declare const PostQuotedEmbed: React$1.ForwardRefExoticComponent<PostQuotedEmbedProps & React$1.RefAttributes<HTMLDivElement>>;
3749
+
3750
+ interface PostThreadConnectorProps extends React$1.HTMLAttributes<HTMLDivElement> {
3751
+ thread: PostThreadInfo;
3752
+ /** When true, draws the connecting hairline that visually links this card to the next thread post. */
3753
+ showLine?: boolean;
3754
+ }
3755
+ /**
3756
+ * Renders the thread-position chip and the optional vertical hairline that connects
3757
+ * consecutive posts in the same thread. The hairline is positioned on the inline-start
3758
+ * edge of the card (right edge in RTL) and is purely visual — no interaction.
3759
+ *
3760
+ * The parent `<PostCard>` is responsible for rendering this in a `relative` container
3761
+ * so the absolute hairline can anchor to the card's full height.
3762
+ */
3763
+ declare const PostThreadConnector: React$1.ForwardRefExoticComponent<PostThreadConnectorProps & React$1.RefAttributes<HTMLDivElement>>;
3764
+
3765
+ interface PostCrisisBannerProps extends React$1.HTMLAttributes<HTMLDivElement> {
3766
+ severity: PostSeverity;
3767
+ /** Optional override label — defaults to the Persian severity name. */
3768
+ label?: string;
3769
+ }
3770
+ /**
3771
+ * Slim banner strip rendered at the top of a `<PostCard>` to call attention to a
3772
+ * crisis / high-severity mention. Animates a pulse dot for `critical`. Subtle
3773
+ * by design — not a full-card red bleed, so the post stays scannable.
3774
+ */
3775
+ declare const PostCrisisBanner: React$1.ForwardRefExoticComponent<PostCrisisBannerProps & React$1.RefAttributes<HTMLDivElement>>;
3776
+
3777
+ interface PostUrlPreviewProps extends React$1.HTMLAttributes<HTMLAnchorElement> {
3778
+ preview: PostUrlPreview;
3779
+ /** Compact layout (no description, smaller thumbnail). */
3780
+ compact?: boolean;
3781
+ }
3782
+
3783
+ type PostGroupBy = 'none' | 'platform' | 'sentiment' | 'date';
3784
+ type PostSortBy = 'newest' | 'oldest' | 'engagement' | 'authority' | 'severity';
3237
3785
  interface PostListProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'onSelect'> {
3238
3786
  posts: PostData[];
3239
- /** Controlled density. If omitted, the list manages its own state (persisted to localStorage). */
3787
+ /** Controlled view. If omitted, the list manages its own state (persisted to localStorage). */
3788
+ view?: PostView;
3789
+ onViewChange?: (view: PostView) => void;
3790
+ /** @deprecated Use `view` instead. */
3240
3791
  density?: PostDensity;
3792
+ /** @deprecated Use `onViewChange` instead. */
3241
3793
  onDensityChange?: (density: PostDensity) => void;
3242
3794
  /** ID of the currently open/selected post (for URL deep-linking). */
3243
3795
  activeId?: string;
@@ -3249,15 +3801,49 @@ interface PostListProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'on
3249
3801
  onOpen?: (post: PostData) => void;
3250
3802
  /** Fired when the user triggers the default "view details" action on any card. */
3251
3803
  onOpenDetails?: (post: PostData) => void;
3804
+ onOpenQuoted?: (post: PostData) => void;
3805
+ onRetryMedia?: (item: PostMediaItem) => void;
3806
+ onClusterClick?: (cluster: NonNullable<PostData['cluster']>) => void;
3252
3807
  /** Per-post action set. If omitted, each card uses its defaults. */
3253
3808
  actions?: PostAction[];
3254
- /** Render the density toggle in the toolbar. Defaults to true. */
3809
+ /** Bulk actions surfaced in the floating bar when posts are selected. */
3810
+ bulkActions?: PostBulkAction[];
3811
+ /** Group rendering: split the list into sticky-header sections. */
3812
+ groupBy?: PostGroupBy;
3813
+ /** Client-side sort applied to `posts` before render. */
3814
+ sortBy?: PostSortBy;
3815
+ /** Soft search filter — matches body text or title (case-insensitive). */
3816
+ searchQuery?: string;
3817
+ /** Render the toolbar (view toggle + extras). Defaults to true. */
3255
3818
  showToolbar?: boolean;
3256
- /** Custom toolbar content rendered next to the density toggle. */
3819
+ /** Custom toolbar content rendered next to the view toggle. */
3257
3820
  toolbarExtra?: React$1.ReactNode;
3821
+ /** Loading state — replaces list with skeleton or custom node. */
3822
+ isLoading?: boolean;
3823
+ loadingState?: React$1.ReactNode;
3824
+ /** Error state — replaces list when set. */
3825
+ error?: unknown;
3826
+ errorState?: React$1.ReactNode;
3827
+ /** Empty state — shown when `posts.length === 0` after filtering. */
3828
+ emptyState?: React$1.ReactNode;
3829
+ /** Hide the floating bulk action bar even when posts are selected. */
3830
+ hideBulkBar?: boolean;
3258
3831
  }
3259
3832
  declare const PostList: React$1.ForwardRefExoticComponent<PostListProps & React$1.RefAttributes<HTMLDivElement>>;
3260
3833
 
3834
+ interface PostBulkActionBarProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'onClick'> {
3835
+ selectedCount: number;
3836
+ selectedIds: string[];
3837
+ actions?: PostBulkAction[];
3838
+ onClear?: () => void;
3839
+ }
3840
+ /**
3841
+ * Floating bulk-action bar — appears at the bottom of the viewport when one or
3842
+ * more posts are selected in `<PostList>`. Matches the Gmail / Linear / Notion
3843
+ * selection bar pattern. Dismiss with Esc or by clicking the clear button.
3844
+ */
3845
+ declare const PostBulkActionBar: React$1.ForwardRefExoticComponent<PostBulkActionBarProps & React$1.RefAttributes<HTMLDivElement>>;
3846
+
3261
3847
  /**
3262
3848
  * Extended platform set: social media + government broadcast/print sources
3263
3849
  * (TV, Radio, Press). Use this for cross-platform feeds where a tracked
@@ -3313,7 +3899,7 @@ interface MultiPlatformPostCardProps extends Omit<React$1.HTMLAttributes<HTMLEle
3313
3899
  }
3314
3900
  declare const MultiPlatformPostCard: React$1.ForwardRefExoticComponent<MultiPlatformPostCardProps & React$1.RefAttributes<HTMLElement>>;
3315
3901
 
3316
- type PostDetailsTab = 'post' | 'comments' | 'analysis' | 'transcript';
3902
+ type PostDetailsTab$1 = 'post' | 'comments' | 'analysis' | 'transcript';
3317
3903
  interface PostDetailsModalProps {
3318
3904
  /** Controls modal open state. */
3319
3905
  open: boolean;
@@ -3331,7 +3917,7 @@ interface PostDetailsModalProps {
3331
3917
  /** Fires when user clicks "retry" on the error panel. */
3332
3918
  onRetry?: () => void;
3333
3919
  /** Which tab to open first @default "post" */
3334
- defaultTab?: PostDetailsTab;
3920
+ defaultTab?: PostDetailsTab$1;
3335
3921
  /** Dialog size. @default "lg" (~1024px) */
3336
3922
  size?: 'md' | 'lg' | 'xl';
3337
3923
  /** Show the bookmark toggle. When `onBookmark` is set, the button appears. */
@@ -3344,6 +3930,99 @@ interface PostDetailsModalProps {
3344
3930
  }
3345
3931
  declare const PostDetailsModal: React$1.FC<PostDetailsModalProps>;
3346
3932
 
3933
+ type PostDetailsTab = 'post' | 'comments' | 'analysis' | 'transcript';
3934
+ interface PostDetailsDrawerProps {
3935
+ open?: boolean;
3936
+ onOpenChange?: (open: boolean) => void;
3937
+ post: PostData;
3938
+ details?: PostDetails;
3939
+ /** Details are being fetched asynchronously — show loading state in tabs. */
3940
+ isLoadingDetails?: boolean;
3941
+ bookmarked?: boolean;
3942
+ onBookmark?: (post: PostData, next: boolean) => void;
3943
+ onCopyLink?: (post: PostData, url: string) => void;
3944
+ onOpenSource?: (post: PostData) => void;
3945
+ onRetryMedia?: (item: PostMediaItem) => void;
3946
+ /** Navigate to the next post in the parent list (fires when j is pressed). */
3947
+ onNext?: () => void;
3948
+ /** Navigate to the previous post in the parent list (fires when k is pressed). */
3949
+ onPrevious?: () => void;
3950
+ defaultTab?: PostDetailsTab;
3951
+ /** Custom action node rendered next to the default header actions. */
3952
+ extraActions?: React$1.ReactNode;
3953
+ /** Optional translation handler. When provided, a "نمایش ترجمه" toggle appears on the post tab. */
3954
+ onTranslate?: (post: PostData) => Promise<string> | string;
3955
+ /** Optional like-comment handler. */
3956
+ onLikeComment?: (commentId: string) => void;
3957
+ }
3958
+ /**
3959
+ * Right-aligned side panel for inspecting a post in depth. Replaces the legacy
3960
+ * `<PostDetailsModal>` as the canonical detail surface on desktop. The modal
3961
+ * stays as a mobile-only fallback.
3962
+ *
3963
+ * Keyboard:
3964
+ * - Esc → close (handled by Sheet)
3965
+ * - j / ArrowDown → onNext
3966
+ * - k / ArrowUp → onPrevious
3967
+ */
3968
+ declare const PostDetailsDrawer: React$1.ForwardRefExoticComponent<PostDetailsDrawerProps & React$1.RefAttributes<HTMLDivElement>>;
3969
+
3970
+ type SupportedMetricLocale = 'fa' | 'en';
3971
+ type MetricKey = keyof PostMetrics;
3972
+ /**
3973
+ * Resolve a metric label for a given source + key + locale.
3974
+ *
3975
+ * Lookup order:
3976
+ * 1. Source-specific override (e.g. tiktok.views → "تماشا")
3977
+ * 2. Default for that locale (e.g. views → "بازدید")
3978
+ *
3979
+ * Never returns `undefined` — falls back to default labels.
3980
+ */
3981
+ declare function getMetricLabel(source: PostSource, key: MetricKey, locale?: SupportedMetricLocale): string;
3982
+
3983
+ /**
3984
+ * Per-source metadata used by `<PostHeader>`, `<PostMetrics>`, badges, and the source-aware
3985
+ * default actions. This is the single source of truth — adding a new platform = adding
3986
+ * one entry here + one CSS var + one label entry in `post-metric-labels.ts`.
3987
+ *
3988
+ * Brand colors are referenced as CSS variables (`--social-platform-*`) and resolved at
3989
+ * runtime so the dark/light theme can adapt where needed (twitter, threads, press, web).
3990
+ */
3991
+ type SourceIconSource =
3992
+ /** Icon comes from the brand-SVG set in `<SocialPlatformBadge>` (7 social platforms). */
3993
+ {
3994
+ kind: 'social-brand';
3995
+ }
3996
+ /** Icon is a generic Lucide glyph (broadcast / editorial sources). */
3997
+ | {
3998
+ kind: 'lucide';
3999
+ icon: LucideIcon;
4000
+ };
4001
+ interface PostSourceConfig {
4002
+ /** English label, displayed when `showLabel` is on. */
4003
+ label: string;
4004
+ /** Persian (fa) label, for fa-locale headers and tooltips. */
4005
+ labelFa: string;
4006
+ /** Category: drives header layout switch. */
4007
+ category: PostSourceCategory;
4008
+ /** CSS variable name (without the `var()` wrapper). */
4009
+ colorVar: string;
4010
+ /** How to render the icon for this source. */
4011
+ icon: SourceIconSource;
4012
+ /**
4013
+ * Default metric order — which metric keys to show by default and in what order.
4014
+ * Consumers can override per-card via PostMetadata's `metricsOrder` prop.
4015
+ */
4016
+ defaultMetrics: ReadonlyArray<keyof PostMetrics>;
4017
+ }
4018
+ /** Look up the per-source config block. */
4019
+ declare function getPostSourceConfig(source: PostSource): PostSourceConfig;
4020
+ /**
4021
+ * Convenience: read the brand color CSS variable for a source.
4022
+ * Use as: `style={{ color: getSourceColorVar('instagram') }}` → `var(--social-platform-instagram)`.
4023
+ */
4024
+ declare function getSourceColorVar(source: PostSource): string;
4025
+
3347
4026
  declare const profileCardVariants: (props?: ({
3348
4027
  variant?: "default" | "transparent" | "dark" | null | undefined;
3349
4028
  size?: "sm" | "md" | "lg" | null | undefined;
@@ -3710,7 +4389,10 @@ declare namespace ScrollBar {
3710
4389
  var displayName: string;
3711
4390
  }
3712
4391
 
3713
- declare const Select: React$1.FC<SelectPrimitive.SelectProps>;
4392
+ declare const Select: {
4393
+ ({ dir, ...props }: React$1.ComponentProps<typeof SelectPrimitive.Root>): react_jsx_runtime.JSX.Element;
4394
+ displayName: string;
4395
+ };
3714
4396
  declare const SelectGroup: React$1.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React$1.RefAttributes<HTMLDivElement>>;
3715
4397
  declare const SelectValue: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectValueProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & VariantProps<(props?: ({
3716
4398
  size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
@@ -3936,7 +4618,7 @@ declare namespace FormRowSkeleton {
3936
4618
  var displayName: string;
3937
4619
  }
3938
4620
 
3939
- declare function Slider({ className, defaultValue, value, min, max, dir, ...props }: React$1.ComponentProps<typeof SliderPrimitive.Root>): react_jsx_runtime.JSX.Element;
4621
+ 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
4622
  declare namespace Slider {
3941
4623
  var displayName: string;
3942
4624
  }
@@ -4018,7 +4700,7 @@ declare namespace TableSortHeader {
4018
4700
  var displayName: string;
4019
4701
  }
4020
4702
 
4021
- declare const Tabs: React$1.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React$1.RefAttributes<HTMLDivElement>>;
4703
+ declare const Tabs: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
4022
4704
  interface TabsListProps extends React$1.ComponentPropsWithoutRef<typeof TabsPrimitive.List> {
4023
4705
  /** Visual variant */
4024
4706
  variant?: 'default' | 'underline' | 'outline';
@@ -4469,6 +5151,16 @@ interface MultiSelectProps {
4469
5151
  emptyMessage?: string;
4470
5152
  /** Search placeholder */
4471
5153
  searchPlaceholder?: string;
5154
+ /** Accessible label. Falls back to the resolved placeholder when omitted. */
5155
+ 'aria-label'?: string;
5156
+ /** id of an external label element that names this control. */
5157
+ 'aria-labelledby'?: string;
5158
+ /** Marks the trigger as invalid (e.g. when wired through `<FormControl>`). */
5159
+ 'aria-invalid'?: boolean | 'true' | 'false';
5160
+ /** id(s) of element(s) describing the trigger (typically a `<FormMessage>`). */
5161
+ 'aria-describedby'?: string;
5162
+ /** id of the trigger element — set by `<FormControl>` to wire `<FormLabel htmlFor>`. */
5163
+ id?: string;
4472
5164
  }
4473
5165
  declare const MultiSelect: React$1.ForwardRefExoticComponent<MultiSelectProps & React$1.RefAttributes<HTMLDivElement>>;
4474
5166
 
@@ -5030,8 +5722,16 @@ interface PartoWordCloudProps {
5030
5722
  isLoading?: boolean;
5031
5723
  /** Accessible label describing the chart content */
5032
5724
  ariaLabel?: string;
5725
+ /** Locale for the empty-state message @default 'fa' */
5726
+ locale?: SupportedLocale;
5727
+ /**
5728
+ * Render a small caption below the cloud explaining that word size
5729
+ * encodes frequency. Helps colorblind / sighted-but-confused users —
5730
+ * word color is decorative (palette rotation), not semantic. @default `false`
5731
+ */
5732
+ legend?: boolean;
5033
5733
  }
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;
5734
+ 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
5735
  declare namespace PartoWordCloud {
5036
5736
  var displayName: string;
5037
5737
  }
@@ -5094,6 +5794,11 @@ interface PartoScatterChartProps {
5094
5794
  className?: string;
5095
5795
  isLoading?: boolean;
5096
5796
  ariaLabel?: string;
5797
+ /**
5798
+ * Render a legend below the chart. Only meaningful when `groupKey` is set —
5799
+ * the legend lists each group with its assigned color. @default `false`
5800
+ */
5801
+ legend?: boolean;
5097
5802
  }
5098
5803
  declare const PartoScatterChart: React$1.ForwardRefExoticComponent<PartoScatterChartProps & React$1.RefAttributes<HTMLDivElement>>;
5099
5804
 
@@ -5148,6 +5853,12 @@ interface PartoSankeyChartProps {
5148
5853
  className?: string;
5149
5854
  isLoading?: boolean;
5150
5855
  ariaLabel?: string;
5856
+ /**
5857
+ * Render a legend listing each node with its color. Useful for flows
5858
+ * where node names aren't always visible (small column widths). The
5859
+ * legend shows the same color the node rectangle uses. @default `false`
5860
+ */
5861
+ legend?: boolean;
5151
5862
  }
5152
5863
  declare const PartoSankeyChart: React$1.ForwardRefExoticComponent<PartoSankeyChartProps & React$1.RefAttributes<HTMLDivElement>>;
5153
5864
 
@@ -5227,6 +5938,16 @@ interface ConceptPulseChartProps {
5227
5938
  className?: string;
5228
5939
  isLoading?: boolean;
5229
5940
  ariaLabel?: string;
5941
+ /**
5942
+ * Render a legend below the chart that maps composition arc colors to
5943
+ * their category names (flow/emotion/custom). Only categories that
5944
+ * appear in at least one bubble's composition are listed.
5945
+ *
5946
+ * Without a legend, the arc colors are decipherable only via hover —
5947
+ * which fails WCAG 1.4.1 for the core "what is this composition?"
5948
+ * question. @default `false`
5949
+ */
5950
+ legend?: boolean;
5230
5951
  }
5231
5952
  declare const ConceptPulseChart: React$1.ForwardRefExoticComponent<ConceptPulseChartProps & React$1.RefAttributes<HTMLDivElement>>;
5232
5953
 
@@ -5286,6 +6007,12 @@ interface PartoNetworkChartProps {
5286
6007
  className?: string;
5287
6008
  isLoading?: boolean;
5288
6009
  ariaLabel?: string;
6010
+ /**
6011
+ * Render a legend listing each node group with its assigned color.
6012
+ * Pulled from the unique `group` values across `nodes`. When no node
6013
+ * has a `group`, the legend silently renders nothing. @default `false`
6014
+ */
6015
+ legend?: boolean;
5289
6016
  }
5290
6017
  declare const PartoNetworkChart: React$1.ForwardRefExoticComponent<PartoNetworkChartProps & React$1.RefAttributes<HTMLDivElement>>;
5291
6018
 
@@ -5446,6 +6173,69 @@ declare function localeAwareNumberTick(locale: SupportedLocale): (value: unknown
5446
6173
  * letters. Use on date/time axes whose labels carry digits.
5447
6174
  */
5448
6175
  declare function localeAwareCategoryTick(locale: SupportedLocale): (value: unknown) => string;
6176
+ interface ChartLegendItem {
6177
+ /** Unique identifier — typically the dataKey or series id. */
6178
+ key: string;
6179
+ /** Display label. Strings preferred so AT can read it. */
6180
+ label: React$1.ReactNode;
6181
+ /** Marker color. Pass the resolved value (hsl, hex, or `var(--token)`). */
6182
+ color: string;
6183
+ /**
6184
+ * Marker shape. `dot` for categorical (Bar/Pie), `line` for series (Line/Area),
6185
+ * `bar` for stacked distributions. @default `dot`
6186
+ */
6187
+ shape?: 'dot' | 'line' | 'bar';
6188
+ /**
6189
+ * Optional stroke pattern when `shape="line"`. Lets color-blind users
6190
+ * distinguish series by texture in addition to color. WCAG 1.4.1
6191
+ * (Use of Color) recommends adding a non-color signal.
6192
+ */
6193
+ pattern?: 'solid' | 'dashed' | 'dotted' | 'dash-dot';
6194
+ /** Optional trailing value (count, percent, etc.). */
6195
+ value?: React$1.ReactNode;
6196
+ }
6197
+ interface ChartLegendProps extends React$1.HTMLAttributes<HTMLDivElement> {
6198
+ /** Series to enumerate. */
6199
+ items: ChartLegendItem[];
6200
+ /** Layout — `horizontal` wraps, `vertical` stacks. @default `horizontal` */
6201
+ orientation?: 'horizontal' | 'vertical';
6202
+ /** Marker square/dot edge length in px. @default `10` */
6203
+ swatchSize?: number;
6204
+ }
6205
+ /**
6206
+ * Reusable chart legend. Pair with `PartoLineChart`, `PartoBarChart`, etc. by
6207
+ * passing `legend={[…]}` or rendering `<ChartLegend>` next to the chart. Each
6208
+ * line-shape entry can carry a stroke pattern so colorblind users can read
6209
+ * series identity without relying on color alone.
6210
+ *
6211
+ * The legend has no chart-aware behavior on its own — pass the same colors
6212
+ * (resolved via `useChartTheme`) you handed to the chart's `Cell`/series.
6213
+ */
6214
+ declare const ChartLegend: React$1.ForwardRefExoticComponent<ChartLegendProps & React$1.RefAttributes<HTMLDivElement>>;
6215
+ interface ChartGradientLegendProps extends React$1.HTMLAttributes<HTMLDivElement> {
6216
+ /** Color at the low end of the scale (e.g. background-muted). */
6217
+ startColor: string;
6218
+ /** Color at the high end (e.g. brand). */
6219
+ endColor: string;
6220
+ /** Optional left/start label (typically the minimum value). */
6221
+ startLabel?: React$1.ReactNode;
6222
+ /** Optional right/end label (typically the maximum value). */
6223
+ endLabel?: React$1.ReactNode;
6224
+ /** Optional caption above the bar (e.g. "تراکم انتشار"). */
6225
+ caption?: React$1.ReactNode;
6226
+ /** Bar width in px @default 160 */
6227
+ width?: number;
6228
+ /** Bar height in px @default 8 */
6229
+ height?: number;
6230
+ }
6231
+ /**
6232
+ * Continuous-scale legend for charts whose data is encoded as color intensity
6233
+ * (HeatMap, choropleth, gradient density). Renders a horizontal gradient bar
6234
+ * with start/end labels, captioned for AT via `role="img"` + `aria-label`.
6235
+ *
6236
+ * For discrete categorical legends (Line/Bar/Pie), use `<ChartLegend>` instead.
6237
+ */
6238
+ declare const ChartGradientLegend: React$1.ForwardRefExoticComponent<ChartGradientLegendProps & React$1.RefAttributes<HTMLDivElement>>;
5449
6239
  /**
5450
6240
  * Transforms Nivo line/area data format to Recharts row-oriented format.
5451
6241
  * Useful for consumers migrating from Nivo data shape.
@@ -5710,4 +6500,4 @@ interface UseFilterPresetsReturn<T extends FilterStateShape> {
5710
6500
  */
5711
6501
  declare function useFilterPresets<T extends FilterStateShape>(options: UseFilterPresetsOptions): UseFilterPresetsReturn<T>;
5712
6502
 
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 };
6503
+ 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, type ExtendedPlatform, 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, 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, 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, PostDetailsModal, type PostDetailsModalProps, type PostDetailsTab$1 as 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, type PostUrlPreview, type PostUrlPreview as PostUrlPreviewData, type PostUrlPreviewProps, 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 };