@parto-system-design/ui 1.1.4 → 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +15603 -5727
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +753 -119
- package/dist/index.d.cts +2980 -229
- package/dist/index.d.ts +2980 -229
- package/dist/index.js +15609 -5870
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/tailwind.config.ts +61 -2
package/dist/index.d.ts
CHANGED
|
@@ -230,6 +230,118 @@ declare const sentimentLabels: Record<SupportedLocale, {
|
|
|
230
230
|
neutral: string;
|
|
231
231
|
mixed: string;
|
|
232
232
|
}>;
|
|
233
|
+
/**
|
|
234
|
+
* Canonical emotion keys — 9-class advanced sentiment scale used in افکارسنجی
|
|
235
|
+
* deep analysis. Coexists with the simple 3-class `Sentiment` above; they are
|
|
236
|
+
* NOT interchangeable. Choose the scale based on view density.
|
|
237
|
+
*/
|
|
238
|
+
type EmotionKey = 'anger' | 'anticipation' | 'joy' | 'trust' | 'fear' | 'surprise' | 'sadness' | 'disgust' | 'neutral';
|
|
239
|
+
declare const EMOTION_KEYS: readonly EmotionKey[];
|
|
240
|
+
/** Emotion label translations used by EmotionBadge / EmotionDistribution. */
|
|
241
|
+
declare const emotionLabels: Record<SupportedLocale, Record<EmotionKey, string>>;
|
|
242
|
+
/**
|
|
243
|
+
* Political flow keys — 5-class classification used in افکارسنجی clustering.
|
|
244
|
+
* A concept / post / page belongs to exactly one flow (primary) but usually
|
|
245
|
+
* also has secondary flow composition expressed as percentages.
|
|
246
|
+
*/
|
|
247
|
+
type FlowKey = 'pro-gov' | 'internal-critic' | 'internal-opponent' | 'external-opponent' | 'grey';
|
|
248
|
+
declare const FLOW_KEYS: readonly FlowKey[];
|
|
249
|
+
declare const flowLabels: Record<SupportedLocale, Record<FlowKey, string>>;
|
|
250
|
+
/** Operational status — visual state of a tracked entity. */
|
|
251
|
+
type StatusKey = 'critical' | 'warning' | 'normal';
|
|
252
|
+
declare const statusLabels: Record<SupportedLocale, Record<StatusKey, string>>;
|
|
253
|
+
/** Severity — urgency level. Independent from status. */
|
|
254
|
+
type SeverityKey = 'urgent' | 'high' | 'medium' | 'low';
|
|
255
|
+
declare const severityLabels: Record<SupportedLocale, Record<SeverityKey, string>>;
|
|
256
|
+
/**
|
|
257
|
+
* Job lifecycle — canonical states for async work (analyses, campaigns,
|
|
258
|
+
* evaluation runs, imports, exports, report generation).
|
|
259
|
+
*
|
|
260
|
+
* Terminal states: completed / failed / cancelled.
|
|
261
|
+
* Active states: queued / running / paused.
|
|
262
|
+
*/
|
|
263
|
+
type JobStatusKey = 'queued' | 'running' | 'paused' | 'completed' | 'failed' | 'cancelled';
|
|
264
|
+
declare const JOB_STATUS_KEYS: readonly JobStatusKey[];
|
|
265
|
+
declare const jobStatusLabels: Record<SupportedLocale, Record<JobStatusKey, string>>;
|
|
266
|
+
/** True iff a job is still active (not in a terminal state). */
|
|
267
|
+
declare function isActiveJobStatus(s: JobStatusKey): boolean;
|
|
268
|
+
/**
|
|
269
|
+
* Action status — discrete outcome for a single completed (or in-flight)
|
|
270
|
+
* action in an activity feed / audit timeline. Distinct from the richer
|
|
271
|
+
* job/stage lifecycles above: each event is atomic, so no "paused" here.
|
|
272
|
+
*/
|
|
273
|
+
type ActionStatusKey = 'success' | 'failed' | 'pending' | 'warning' | 'info';
|
|
274
|
+
declare const ACTION_STATUS_KEYS: readonly ActionStatusKey[];
|
|
275
|
+
declare const actionStatusLabels: Record<SupportedLocale, Record<ActionStatusKey, string>>;
|
|
276
|
+
/**
|
|
277
|
+
* Locale-aware relative time label producer. Used by ActionTimeline and any
|
|
278
|
+
* other component that wants trilingual "n minutes ago" strings. For absolute
|
|
279
|
+
* formatting see `formatAbsoluteTime`/`formatJalaliDate` in lib/utils.ts.
|
|
280
|
+
*/
|
|
281
|
+
declare function formatRelativeLocaleTime(date: Date | string | number, locale: SupportedLocale): string;
|
|
282
|
+
/**
|
|
283
|
+
* Locale-aware "time remaining" label — forward-looking companion to
|
|
284
|
+
* `formatRelativeLocaleTime`. Used by RateLimitBanner and any countdown UI.
|
|
285
|
+
*
|
|
286
|
+
* Input can be a Date, ISO string, or epoch ms. Past/zero remaining returns
|
|
287
|
+
* the locale-specific "now" / "any moment" marker.
|
|
288
|
+
*/
|
|
289
|
+
declare function formatTimeRemaining(target: Date | string | number, locale: SupportedLocale): string;
|
|
290
|
+
/**
|
|
291
|
+
* Stage status — for multi-stage pipeline visualizations (StatusFlow).
|
|
292
|
+
*
|
|
293
|
+
* Distinct from `JobStatusKey`: a job has ONE status; a pipeline of stages has
|
|
294
|
+
* a status PER stage. A `running` stage means that stage is currently active;
|
|
295
|
+
* a `warning` stage completed but with caveats; `skipped` means it was bypassed.
|
|
296
|
+
*/
|
|
297
|
+
type StageStatusKey = 'pending' | 'running' | 'completed' | 'failed' | 'skipped' | 'warning' | 'paused';
|
|
298
|
+
declare const STAGE_STATUS_KEYS: readonly StageStatusKey[];
|
|
299
|
+
declare const stageStatusLabels: Record<SupportedLocale, Record<StageStatusKey, string>>;
|
|
300
|
+
/**
|
|
301
|
+
* Action type — canonical set of social-media actions a worker/user can
|
|
302
|
+
* execute. Maps 1:1 to a CSS token family (`--action-type-*`) so each action
|
|
303
|
+
* has a distinct recognizable colour + icon across activity feeds, audit
|
|
304
|
+
* timelines, and rate-limit dashboards.
|
|
305
|
+
*
|
|
306
|
+
* The 7 canonical keys cover current افکارسنجی + Booster + future SRR use:
|
|
307
|
+
* - `like` / `comment` / `save` / `follow` / `unfollow` — Booster OPERATION_TYPES
|
|
308
|
+
* - `dm` — direct message (future bulk-DM, notification replies)
|
|
309
|
+
* - `share` — cross-post / retweet (future multi-platform)
|
|
310
|
+
*/
|
|
311
|
+
type ActionTypeKey = 'like' | 'comment' | 'save' | 'follow' | 'unfollow' | 'dm' | 'share';
|
|
312
|
+
declare const ACTION_TYPE_KEYS: readonly ActionTypeKey[];
|
|
313
|
+
declare const actionTypeLabels: Record<SupportedLocale, Record<ActionTypeKey, string>>;
|
|
314
|
+
/**
|
|
315
|
+
* Short-form verb labels for past-tense activity phrasing ("worker X پسندید Y").
|
|
316
|
+
* When composing "subject action object" sentences in ActivityFeed / ActionTimeline,
|
|
317
|
+
* prefer these over `actionTypeLabels` which are noun-form.
|
|
318
|
+
*/
|
|
319
|
+
declare const actionTypeVerbs: Record<SupportedLocale, Record<ActionTypeKey, string>>;
|
|
320
|
+
/**
|
|
321
|
+
* Entity health — 6-tier severity narrative for long-lived entities like
|
|
322
|
+
* workers, tracked pages, data sources, monitored feeds. Ordered most-critical
|
|
323
|
+
* to most-positive so components can sort "worst first" deterministically.
|
|
324
|
+
*
|
|
325
|
+
* `banned` — entity is permanently disabled / blocked upstream.
|
|
326
|
+
* `pending` — not yet evaluated (new, awaiting verification, in setup).
|
|
327
|
+
* `at-risk` — immediate intervention needed (failed checks, violations).
|
|
328
|
+
* `warning` — degrading signals, needs monitoring.
|
|
329
|
+
* `growing` — improving trajectory but not yet healthy.
|
|
330
|
+
* `healthy` — stable, all checks pass.
|
|
331
|
+
*
|
|
332
|
+
* Distinct from `StatusKey` (critical/warning/normal — short-lived operational)
|
|
333
|
+
* and `SeverityKey` (urgent/high/medium/low — urgency of an action item).
|
|
334
|
+
*/
|
|
335
|
+
type EntityHealthKey = 'banned' | 'pending' | 'at-risk' | 'warning' | 'growing' | 'healthy';
|
|
336
|
+
declare const ENTITY_HEALTH_KEYS: readonly EntityHealthKey[];
|
|
337
|
+
declare const entityHealthLabels: Record<SupportedLocale, Record<EntityHealthKey, string>>;
|
|
338
|
+
/**
|
|
339
|
+
* Priority rank of each entity health state — higher number = more severe.
|
|
340
|
+
* Use to sort entity lists "worst first" without ad-hoc comparisons.
|
|
341
|
+
*/
|
|
342
|
+
declare const entityHealthPriority: Record<EntityHealthKey, number>;
|
|
343
|
+
/** True iff the entity needs immediate human attention. */
|
|
344
|
+
declare function isCriticalEntityHealth(s: EntityHealthKey): boolean;
|
|
233
345
|
/**
|
|
234
346
|
* Default UI strings for components that need localized text.
|
|
235
347
|
* Persian (fa) is the default locale for backward compatibility.
|
|
@@ -264,6 +376,11 @@ declare const UI_STRINGS: {
|
|
|
264
376
|
readonly stepPending: "در انتظار";
|
|
265
377
|
readonly clearFilters: "پاک کردن فیلترها";
|
|
266
378
|
readonly activeFilters: "فیلترهای فعال";
|
|
379
|
+
readonly filters: "فیلترها";
|
|
380
|
+
readonly applyFilters: "اعمال";
|
|
381
|
+
readonly resetFilters: "پیشفرض";
|
|
382
|
+
readonly noFiltersActive: "فیلتر فعالی نیست";
|
|
383
|
+
readonly clearSection: "پاک کردن این بخش";
|
|
267
384
|
readonly goBack: "بازگشت";
|
|
268
385
|
readonly gridView: "نمای شبکهای";
|
|
269
386
|
readonly listView: "نمای لیستی";
|
|
@@ -321,6 +438,11 @@ declare const UI_STRINGS: {
|
|
|
321
438
|
readonly stepPending: "قيد الانتظار";
|
|
322
439
|
readonly clearFilters: "مسح الفلاتر";
|
|
323
440
|
readonly activeFilters: "الفلاتر النشطة";
|
|
441
|
+
readonly filters: "الفلاتر";
|
|
442
|
+
readonly applyFilters: "تطبيق";
|
|
443
|
+
readonly resetFilters: "الافتراضي";
|
|
444
|
+
readonly noFiltersActive: "لا توجد فلاتر نشطة";
|
|
445
|
+
readonly clearSection: "مسح هذا القسم";
|
|
324
446
|
readonly goBack: "رجوع";
|
|
325
447
|
readonly gridView: "عرض شبكي";
|
|
326
448
|
readonly listView: "عرض قائمة";
|
|
@@ -378,6 +500,11 @@ declare const UI_STRINGS: {
|
|
|
378
500
|
readonly stepPending: "Pending";
|
|
379
501
|
readonly clearFilters: "Clear filters";
|
|
380
502
|
readonly activeFilters: "Active filters";
|
|
503
|
+
readonly filters: "Filters";
|
|
504
|
+
readonly applyFilters: "Apply";
|
|
505
|
+
readonly resetFilters: "Reset";
|
|
506
|
+
readonly noFiltersActive: "No active filters";
|
|
507
|
+
readonly clearSection: "Clear this section";
|
|
381
508
|
readonly goBack: "Go back";
|
|
382
509
|
readonly gridView: "Grid view";
|
|
383
510
|
readonly listView: "List view";
|
|
@@ -465,8 +592,87 @@ declare namespace AccordionContent {
|
|
|
465
592
|
var displayName: string;
|
|
466
593
|
}
|
|
467
594
|
|
|
595
|
+
interface ActionTimelineItemData {
|
|
596
|
+
/** Stable identifier */
|
|
597
|
+
id: string;
|
|
598
|
+
/** Outcome of the action. Drives the marker colour/icon when `leading` isn't set. @default "info" */
|
|
599
|
+
status?: ActionStatusKey;
|
|
600
|
+
/** Primary text — actor + verb + target. */
|
|
601
|
+
title: React$1.ReactNode;
|
|
602
|
+
/** Optional one-line description under the title. */
|
|
603
|
+
description?: React$1.ReactNode;
|
|
604
|
+
/** Optional preview (comment text, error message, diff snippet). Rendered in a muted box. */
|
|
605
|
+
preview?: React$1.ReactNode;
|
|
606
|
+
/** Optional small tag next to the timestamp (e.g. "Instagram", "AI", "System"). */
|
|
607
|
+
tag?: React$1.ReactNode;
|
|
608
|
+
/** Optional trailing actions (buttons, dropdown). */
|
|
609
|
+
actions?: React$1.ReactNode;
|
|
610
|
+
/** When this action happened. Accepts Date | ISO string | epoch ms. */
|
|
611
|
+
timestamp: Date | string | number;
|
|
612
|
+
/** Override the leading marker — pass an `<Avatar />`, custom icon, etc. */
|
|
613
|
+
leading?: React$1.ReactNode;
|
|
614
|
+
}
|
|
615
|
+
type ActionTimelineDensity = 'compact' | 'default' | 'spacious';
|
|
616
|
+
type ActionTimelineGroupBy = 'none' | 'day';
|
|
617
|
+
interface ActionTimelineProps extends Omit<React$1.OlHTMLAttributes<HTMLOListElement>, 'children'> {
|
|
618
|
+
/** Data-driven item list. Mutually exclusive with `children`. */
|
|
619
|
+
items?: ActionTimelineItemData[];
|
|
620
|
+
/** Composition API — pass `<ActionTimelineItem>` children. */
|
|
621
|
+
children?: React$1.ReactNode;
|
|
622
|
+
/** Visual density @default "default" */
|
|
623
|
+
density?: ActionTimelineDensity;
|
|
624
|
+
/** Group adjacent items under sticky day headers */
|
|
625
|
+
groupBy?: ActionTimelineGroupBy;
|
|
626
|
+
/** Locale for timestamp formatting + status aria-labels @default "fa" */
|
|
627
|
+
locale?: SupportedLocale;
|
|
628
|
+
/** Hide the vertical connector line between items @default false */
|
|
629
|
+
hideConnector?: boolean;
|
|
630
|
+
/** Maximum items to render. When set and exceeded, caller is responsible for pagination UI. */
|
|
631
|
+
limit?: number;
|
|
632
|
+
/** Fires when an item is clicked (anywhere outside the `actions` slot) */
|
|
633
|
+
onItemSelect?: (item: ActionTimelineItemData, index: number) => void;
|
|
634
|
+
/** Empty state when items is empty / undefined and no children provided */
|
|
635
|
+
emptyState?: React$1.ReactNode;
|
|
636
|
+
}
|
|
637
|
+
interface ActionTimelineItemProps extends ActionTimelineItemData {
|
|
638
|
+
}
|
|
639
|
+
/**
|
|
640
|
+
* Optional composition wrapper. Use inside `<ActionTimeline>` instead of the
|
|
641
|
+
* `items` prop — ActionTimeline injects the position metadata automatically.
|
|
642
|
+
* Throws if rendered outside <ActionTimeline>.
|
|
643
|
+
*/
|
|
644
|
+
declare function ActionTimelineItem(props: ActionTimelineItemProps): React$1.ReactElement;
|
|
645
|
+
declare const ActionTimeline: React$1.ForwardRefExoticComponent<ActionTimelineProps & React$1.RefAttributes<HTMLOListElement>>;
|
|
646
|
+
|
|
647
|
+
interface ActionTypeMeta {
|
|
648
|
+
/** CSS var fragment — read as `hsl(var(--action-type-foo))` */
|
|
649
|
+
token: string;
|
|
650
|
+
/** Lucide icon for the action */
|
|
651
|
+
icon: React$1.ComponentType<{
|
|
652
|
+
className?: string;
|
|
653
|
+
}>;
|
|
654
|
+
}
|
|
655
|
+
declare const ACTION_TYPE_META: Record<ActionTypeKey, ActionTypeMeta>;
|
|
656
|
+
declare const actionTypeChipVariants: (props?: ({
|
|
657
|
+
size?: "xs" | "sm" | "md" | "lg" | null | undefined;
|
|
658
|
+
variant?: "flat" | "soft" | "solid" | "outline" | null | undefined;
|
|
659
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
660
|
+
interface ActionTypeChipProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, 'children'>, VariantProps<typeof actionTypeChipVariants> {
|
|
661
|
+
/** Which action the chip represents */
|
|
662
|
+
type: ActionTypeKey;
|
|
663
|
+
/** Show the localized label after the icon @default true */
|
|
664
|
+
showLabel?: boolean;
|
|
665
|
+
/** Show a counter next to the label (e.g., "Like ۴۲۵") */
|
|
666
|
+
count?: number;
|
|
667
|
+
/** Locale for default label + digit formatting @default "fa" */
|
|
668
|
+
locale?: SupportedLocale;
|
|
669
|
+
/** Override the label (otherwise uses `actionTypeLabels[locale][type]`) */
|
|
670
|
+
label?: React$1.ReactNode;
|
|
671
|
+
}
|
|
672
|
+
declare const ActionTypeChip: React$1.ForwardRefExoticComponent<ActionTypeChipProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
673
|
+
|
|
468
674
|
declare const Alert: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
|
|
469
|
-
variant?: "
|
|
675
|
+
variant?: "warning" | "success" | "info" | "default" | "destructive" | null | undefined;
|
|
470
676
|
} & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLDivElement>>;
|
|
471
677
|
declare const AlertTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
472
678
|
declare const AlertDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
@@ -483,6 +689,38 @@ declare function AlertDialogDescription({ className, ...props }: React$1.Compone
|
|
|
483
689
|
declare const AlertDialogAction: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogActionProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
484
690
|
declare const AlertDialogCancel: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogCancelProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
485
691
|
|
|
692
|
+
/**
|
|
693
|
+
* AlertRuleCard — saved alert-rule definition. Shows trigger summary,
|
|
694
|
+
* threshold, severity tag, target channels, and an active/inactive toggle.
|
|
695
|
+
*
|
|
696
|
+
* Designed for "Alert Rules" management pages — a list of these cards lets
|
|
697
|
+
* an analyst quickly scan + tweak which alerts are running.
|
|
698
|
+
*/
|
|
699
|
+
type AlertChannel = 'email' | 'sms' | 'telegram' | 'in-app' | 'webhook';
|
|
700
|
+
interface AlertRuleCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
701
|
+
/** Rule name (e.g., "افزایش ناگهانی منفی") */
|
|
702
|
+
name: React$1.ReactNode;
|
|
703
|
+
/** Trigger description in plain language (e.g., "هرگاه نرخ منفی > ۲۰٪ شد") */
|
|
704
|
+
trigger: React$1.ReactNode;
|
|
705
|
+
/** Threshold value display (e.g., "≥ ۲۰٪", "> ۱۰۰۰ mentions") */
|
|
706
|
+
threshold?: React$1.ReactNode;
|
|
707
|
+
/** Severity that this alert raises */
|
|
708
|
+
severity?: SeverityKey;
|
|
709
|
+
/** Channels this rule fires through */
|
|
710
|
+
channels?: AlertChannel[];
|
|
711
|
+
/** Active state (master switch) */
|
|
712
|
+
active: boolean;
|
|
713
|
+
/** Called when the user toggles the switch */
|
|
714
|
+
onActiveChange: (next: boolean) => void;
|
|
715
|
+
/** Last-fired timestamp display (e.g., "۲ ساعت پیش") */
|
|
716
|
+
lastFired?: React$1.ReactNode;
|
|
717
|
+
/** Optional total fire count */
|
|
718
|
+
fireCount?: number;
|
|
719
|
+
/** Locale @default 'fa' */
|
|
720
|
+
locale?: SupportedLocale;
|
|
721
|
+
}
|
|
722
|
+
declare const AlertRuleCard: React$1.ForwardRefExoticComponent<AlertRuleCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
723
|
+
|
|
486
724
|
interface AutocompleteItem {
|
|
487
725
|
value: string;
|
|
488
726
|
label: string;
|
|
@@ -748,8 +986,8 @@ interface AvatarGroupProps extends React$1.HTMLAttributes<HTMLDivElement>, Varia
|
|
|
748
986
|
declare const AvatarGroup: React$1.ForwardRefExoticComponent<AvatarGroupProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
749
987
|
|
|
750
988
|
declare const badgeVariants: (props?: ({
|
|
751
|
-
variant?: "
|
|
752
|
-
size?: "xs" | "sm" | "md" | "lg" | "small" | "
|
|
989
|
+
variant?: "warning" | "success" | "default" | "outline" | "destructive" | "secondary" | "brand" | null | undefined;
|
|
990
|
+
size?: "xs" | "sm" | "md" | "lg" | "small" | "large" | "tiny" | null | undefined;
|
|
753
991
|
dot?: boolean | null | undefined;
|
|
754
992
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
755
993
|
interface BadgeProps extends React$1.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {
|
|
@@ -759,7 +997,7 @@ interface BadgeProps extends React$1.HTMLAttributes<HTMLSpanElement>, VariantPro
|
|
|
759
997
|
declare const Badge: React$1.ForwardRefExoticComponent<BadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
760
998
|
|
|
761
999
|
declare const bannerVariants: (props?: ({
|
|
762
|
-
variant?: "
|
|
1000
|
+
variant?: "neutral" | "warning" | "success" | "info" | "destructive" | null | undefined;
|
|
763
1001
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
764
1002
|
interface BannerProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof bannerVariants> {
|
|
765
1003
|
/** Whether the banner can be dismissed */
|
|
@@ -806,7 +1044,7 @@ declare namespace BreadcrumbEllipsis {
|
|
|
806
1044
|
|
|
807
1045
|
type ButtonVariantProps = VariantProps<typeof buttonVariants>;
|
|
808
1046
|
declare const buttonVariants: (props?: ({
|
|
809
|
-
variant?: "
|
|
1047
|
+
variant?: "warning" | "link" | "text" | "default" | "outline" | "dashed" | "destructive" | "primary" | "secondary" | "danger" | "ghost" | null | undefined;
|
|
810
1048
|
block?: boolean | null | undefined;
|
|
811
1049
|
size?: "xs" | "sm" | "md" | "lg" | "xl" | "default" | "icon" | null | undefined;
|
|
812
1050
|
disabled?: boolean | null | undefined;
|
|
@@ -814,7 +1052,7 @@ declare const buttonVariants: (props?: ({
|
|
|
814
1052
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
815
1053
|
type LoadingVariantProps = VariantProps<typeof loadingVariants>;
|
|
816
1054
|
declare const loadingVariants: (props?: ({
|
|
817
|
-
variant?: "
|
|
1055
|
+
variant?: "warning" | "link" | "text" | "default" | "outline" | "dashed" | "destructive" | "primary" | "secondary" | "danger" | "ghost" | null | undefined;
|
|
818
1056
|
loading?: boolean | "default" | null | undefined;
|
|
819
1057
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
820
1058
|
interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'>, Omit<ButtonVariantProps, 'disabled'>, Omit<LoadingVariantProps, 'variant'> {
|
|
@@ -1007,6 +1245,515 @@ declare namespace CommandShortcut {
|
|
|
1007
1245
|
var displayName: string;
|
|
1008
1246
|
}
|
|
1009
1247
|
|
|
1248
|
+
/**
|
|
1249
|
+
* Hotkey string grammar:
|
|
1250
|
+
*
|
|
1251
|
+
* <part>[+<part>]*
|
|
1252
|
+
*
|
|
1253
|
+
* where each <part> is one of:
|
|
1254
|
+
* mod — Cmd on macOS, Ctrl on everything else (recommended)
|
|
1255
|
+
* ctrl / cmd — explicit, cross-platform tokens
|
|
1256
|
+
* shift | alt | meta
|
|
1257
|
+
* <single key> — lowercase character, 'space', 'enter', 'escape', 'tab',
|
|
1258
|
+
* arrow{up,down,left,right}, 'slash', 'backspace', etc.
|
|
1259
|
+
*
|
|
1260
|
+
* Examples:
|
|
1261
|
+
* 'mod+k' — ⌘K on macOS, CtrlK elsewhere
|
|
1262
|
+
* 'mod+shift+p'
|
|
1263
|
+
* 'escape'
|
|
1264
|
+
* 'ctrl+k' — explicit Ctrl (no Cmd fallback on macOS)
|
|
1265
|
+
*
|
|
1266
|
+
* Passing an array of strings is treated as an OR — any combo fires the handler.
|
|
1267
|
+
*/
|
|
1268
|
+
type HotkeyCombo = string | readonly string[];
|
|
1269
|
+
interface UseHotkeysOptions {
|
|
1270
|
+
/**
|
|
1271
|
+
* When true, `event.preventDefault()` is called on matched combos.
|
|
1272
|
+
* Default: true. Useful to allow the browser's native 'mod+k' (address bar)
|
|
1273
|
+
* to keep working — set to false if the handler only does something conditionally.
|
|
1274
|
+
*/
|
|
1275
|
+
preventDefault?: boolean;
|
|
1276
|
+
/**
|
|
1277
|
+
* Skip the handler when focus is inside an editable control (input, textarea,
|
|
1278
|
+
* contenteditable). The exception: combos that include a modifier (mod/ctrl/
|
|
1279
|
+
* cmd/alt) still fire — they are unambiguous shortcuts, not typing.
|
|
1280
|
+
* Default: true.
|
|
1281
|
+
*/
|
|
1282
|
+
ignoreWhenTyping?: boolean;
|
|
1283
|
+
/**
|
|
1284
|
+
* When false, the hook unregisters its listener. Useful for conditionally
|
|
1285
|
+
* enabling shortcuts (e.g., only while a panel is open).
|
|
1286
|
+
* Default: true.
|
|
1287
|
+
*/
|
|
1288
|
+
enabled?: boolean;
|
|
1289
|
+
/**
|
|
1290
|
+
* DOM target. Defaults to `document`. Pass a ref for scoped shortcuts (e.g.,
|
|
1291
|
+
* only when a specific panel has focus within).
|
|
1292
|
+
*/
|
|
1293
|
+
target?: React$1.RefObject<HTMLElement | null> | HTMLElement | Document | null;
|
|
1294
|
+
}
|
|
1295
|
+
/**
|
|
1296
|
+
* Register a keyboard shortcut. Handler fires when the combo matches, respecting
|
|
1297
|
+
* `ignoreWhenTyping` (default true) — except when a modifier is part of the combo,
|
|
1298
|
+
* which always wins. Returns nothing; cleanup is automatic.
|
|
1299
|
+
*
|
|
1300
|
+
* @example
|
|
1301
|
+
* useHotkeys('mod+k', () => setOpen((v) => !v))
|
|
1302
|
+
* useHotkeys(['escape', 'mod+w'], close, { enabled: open })
|
|
1303
|
+
*/
|
|
1304
|
+
declare function useHotkeys(combo: HotkeyCombo, handler: (event: KeyboardEvent) => void, options?: UseHotkeysOptions): void;
|
|
1305
|
+
/**
|
|
1306
|
+
* Render-helper: returns a platform-appropriate display string for a combo.
|
|
1307
|
+
* 'mod+k' → '⌘K' on macOS, 'Ctrl+K' elsewhere. Useful for `<CommandShortcut>`.
|
|
1308
|
+
*/
|
|
1309
|
+
declare function formatHotkey(combo: string): string;
|
|
1310
|
+
|
|
1311
|
+
interface CommandPaletteItem {
|
|
1312
|
+
/** Stable identifier. Used as the cmdk value and the recents key — MUST be unique across the whole items list. */
|
|
1313
|
+
id: string;
|
|
1314
|
+
/** Visible label. */
|
|
1315
|
+
label: string;
|
|
1316
|
+
/** Dimmer description shown under the label. */
|
|
1317
|
+
description?: string;
|
|
1318
|
+
/** Icon displayed at the start of the row. */
|
|
1319
|
+
icon?: LucideIcon | React$1.ComponentType<{
|
|
1320
|
+
className?: string;
|
|
1321
|
+
}>;
|
|
1322
|
+
/** Group heading under which this item appears. Items without a group are rendered in the root group. */
|
|
1323
|
+
group?: string;
|
|
1324
|
+
/**
|
|
1325
|
+
* Keyboard-shortcut display, using the same grammar as {@link HotkeyCombo}
|
|
1326
|
+
* (e.g. 'mod+d'). The palette only displays it — binding the global shortcut
|
|
1327
|
+
* is the caller's responsibility via {@link useHotkeys} at the host component.
|
|
1328
|
+
*/
|
|
1329
|
+
shortcut?: string;
|
|
1330
|
+
/** Extra search tokens not visible in the label (e.g., English aliases, acronyms, tag words). */
|
|
1331
|
+
keywords?: string[];
|
|
1332
|
+
/** Callback when item is selected. Palette closes automatically afterwards. */
|
|
1333
|
+
onSelect: () => void;
|
|
1334
|
+
/** Prevents selection + dims the row. */
|
|
1335
|
+
disabled?: boolean;
|
|
1336
|
+
}
|
|
1337
|
+
interface CommandPaletteRecentsConfig {
|
|
1338
|
+
/** Persistence key. Default: `'parto:cmdk:recents'`. Namespace by app if you mount multiple palettes. */
|
|
1339
|
+
key?: string;
|
|
1340
|
+
/** Max items to remember. Default: 5. */
|
|
1341
|
+
max?: number;
|
|
1342
|
+
/** Header label for the recents group. Default: locale-appropriate ('اخیر'/'Recent'). */
|
|
1343
|
+
label?: string;
|
|
1344
|
+
}
|
|
1345
|
+
interface CommandPaletteProps {
|
|
1346
|
+
/** Controlled open state. If omitted, palette manages its own state. */
|
|
1347
|
+
open?: boolean;
|
|
1348
|
+
/** Fires on both open and close. */
|
|
1349
|
+
onOpenChange?: (open: boolean) => void;
|
|
1350
|
+
/** Items to display. Grouped by `item.group` in insertion order. */
|
|
1351
|
+
items: CommandPaletteItem[];
|
|
1352
|
+
/**
|
|
1353
|
+
* Global keyboard shortcut to toggle the palette. Default: `'mod+k'`.
|
|
1354
|
+
* Pass `false` to disable the global listener (useful when wiring your own).
|
|
1355
|
+
*/
|
|
1356
|
+
shortcut?: HotkeyCombo | false;
|
|
1357
|
+
/** Placeholder for the input. Defaults to a locale-appropriate string. */
|
|
1358
|
+
placeholder?: string;
|
|
1359
|
+
/** Shown inside `<CommandEmpty>` when there are no matches. */
|
|
1360
|
+
emptyMessage?: string;
|
|
1361
|
+
/** Screen-reader title (visually hidden). */
|
|
1362
|
+
title?: string;
|
|
1363
|
+
/** Screen-reader description (visually hidden). */
|
|
1364
|
+
description?: string;
|
|
1365
|
+
/** Locale for default strings + Persian-aware fuzzy matching. */
|
|
1366
|
+
locale?: SupportedLocale;
|
|
1367
|
+
/**
|
|
1368
|
+
* Remember recently-selected items in localStorage and surface them as a top
|
|
1369
|
+
* group when the search input is empty. Pass `false` to disable. Default: on.
|
|
1370
|
+
*/
|
|
1371
|
+
recents?: CommandPaletteRecentsConfig | false;
|
|
1372
|
+
/** Extra class for the dialog content. */
|
|
1373
|
+
className?: string;
|
|
1374
|
+
}
|
|
1375
|
+
declare function CommandPalette({ open: controlledOpen, onOpenChange, items, shortcut, placeholder, emptyMessage, title, description, locale, recents: recentsConfig, className, }: CommandPaletteProps): react_jsx_runtime.JSX.Element;
|
|
1376
|
+
declare namespace CommandPalette {
|
|
1377
|
+
var displayName: string;
|
|
1378
|
+
}
|
|
1379
|
+
|
|
1380
|
+
interface PartoRadarChartProps {
|
|
1381
|
+
/** Data: [{ subject: "سرعت", series1: 80, series2: 60 }] */
|
|
1382
|
+
data: Array<Record<string, any>>;
|
|
1383
|
+
/** Keys for each radar series */
|
|
1384
|
+
dataKeys: string[];
|
|
1385
|
+
/** Field name used for angle axis labels (default: 'subject') */
|
|
1386
|
+
indexBy?: string;
|
|
1387
|
+
/** Radar fill opacity */
|
|
1388
|
+
fillOpacity?: number;
|
|
1389
|
+
/** Radar stroke width */
|
|
1390
|
+
strokeWidth?: number;
|
|
1391
|
+
/** Show dots on vertices */
|
|
1392
|
+
showDots?: boolean;
|
|
1393
|
+
/** Dot radius */
|
|
1394
|
+
dotRadius?: number;
|
|
1395
|
+
/** Grid shape */
|
|
1396
|
+
gridType?: 'polygon' | 'circle';
|
|
1397
|
+
/** Chart margins */
|
|
1398
|
+
margin?: {
|
|
1399
|
+
top?: number;
|
|
1400
|
+
right?: number;
|
|
1401
|
+
bottom?: number;
|
|
1402
|
+
left?: number;
|
|
1403
|
+
};
|
|
1404
|
+
/** Custom tooltip formatter */
|
|
1405
|
+
tooltipFormatter?: (name: string, value: number) => React$1.ReactNode;
|
|
1406
|
+
className?: string;
|
|
1407
|
+
isLoading?: boolean;
|
|
1408
|
+
ariaLabel?: string;
|
|
1409
|
+
}
|
|
1410
|
+
declare const PartoRadarChart: React$1.ForwardRefExoticComponent<PartoRadarChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1411
|
+
|
|
1412
|
+
interface ComparisonMetric {
|
|
1413
|
+
/** Unique key — used to look up values in each entity. */
|
|
1414
|
+
key: string;
|
|
1415
|
+
/** Human-readable label shown on the radar axis + tooltip. */
|
|
1416
|
+
label: string;
|
|
1417
|
+
/**
|
|
1418
|
+
* True means a higher value is better (the default for most scores).
|
|
1419
|
+
* Set to false for inverted metrics like error rate or response time.
|
|
1420
|
+
* @default true
|
|
1421
|
+
*/
|
|
1422
|
+
higherIsBetter?: boolean;
|
|
1423
|
+
/**
|
|
1424
|
+
* Informational — maximum expected value for this metric. Not used by the
|
|
1425
|
+
* radar geometry (auto-scaled); used by the tooltip for "x / max" display.
|
|
1426
|
+
*/
|
|
1427
|
+
max?: number;
|
|
1428
|
+
}
|
|
1429
|
+
interface ComparisonEntity {
|
|
1430
|
+
/** Unique id — used as the `dataKey` for the radar series. */
|
|
1431
|
+
key: string;
|
|
1432
|
+
/** Display name in the legend. */
|
|
1433
|
+
label: string;
|
|
1434
|
+
/** Metric key → numeric value. Missing keys are treated as 0. */
|
|
1435
|
+
values: Record<string, number>;
|
|
1436
|
+
/** Optional custom color — defaults to the chart palette. */
|
|
1437
|
+
color?: string;
|
|
1438
|
+
}
|
|
1439
|
+
interface ComparisonWinner {
|
|
1440
|
+
/** Entity key (or null for a tie). */
|
|
1441
|
+
winnerKey: string | null;
|
|
1442
|
+
/** All entity keys tied at the top. Length >=1 when there is data; empty if no entities. */
|
|
1443
|
+
topKeys: string[];
|
|
1444
|
+
/** Top value for this metric (after higherIsBetter direction). */
|
|
1445
|
+
topValue: number;
|
|
1446
|
+
}
|
|
1447
|
+
/**
|
|
1448
|
+
* For each metric, compute the entity that "wins" (highest value, or lowest
|
|
1449
|
+
* if `higherIsBetter: false`). Ties return winnerKey=null.
|
|
1450
|
+
*/
|
|
1451
|
+
declare function computeComparisonWinners(metrics: ComparisonMetric[], entities: ComparisonEntity[]): Record<string, ComparisonWinner>;
|
|
1452
|
+
/** Count outright wins (no ties) per entity. */
|
|
1453
|
+
declare function countComparisonWins(winners: Record<string, ComparisonWinner>): Record<string, number>;
|
|
1454
|
+
interface ComparisonRadarProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
1455
|
+
/** Metric axes of the radar. Order matters — these render clockwise from the top. */
|
|
1456
|
+
metrics: ComparisonMetric[];
|
|
1457
|
+
/** Entities being compared (typically 2-5). */
|
|
1458
|
+
entities: ComparisonEntity[];
|
|
1459
|
+
/** Annotate axis labels with a crown for the winner @default true */
|
|
1460
|
+
showWinnerMarkers?: boolean;
|
|
1461
|
+
/** Show the rich legend with win counts above the chart @default true */
|
|
1462
|
+
showLegend?: boolean;
|
|
1463
|
+
/** Card title */
|
|
1464
|
+
title?: React$1.ReactNode;
|
|
1465
|
+
/** Short description below title */
|
|
1466
|
+
description?: React$1.ReactNode;
|
|
1467
|
+
/** Chart height in pixels @default 340 */
|
|
1468
|
+
chartHeight?: number;
|
|
1469
|
+
/** Loading state */
|
|
1470
|
+
isLoading?: boolean;
|
|
1471
|
+
/** Locale @default "fa" */
|
|
1472
|
+
locale?: SupportedLocale;
|
|
1473
|
+
/**
|
|
1474
|
+
* Custom radar props — pass-through to PartoRadarChart (margin, fillOpacity,
|
|
1475
|
+
* gridType, …). Avoid setting `data` / `dataKeys` / `indexBy` / `isLoading`.
|
|
1476
|
+
*/
|
|
1477
|
+
radarProps?: Omit<React$1.ComponentProps<typeof PartoRadarChart>, 'data' | 'dataKeys' | 'indexBy' | 'isLoading'>;
|
|
1478
|
+
}
|
|
1479
|
+
declare const ComparisonRadar: React$1.ForwardRefExoticComponent<ComparisonRadarProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1480
|
+
|
|
1481
|
+
type NotificationSeverity = 'info' | 'warning' | 'destructive' | 'success' | 'critical';
|
|
1482
|
+
interface NotificationItem {
|
|
1483
|
+
/** Stable id — required for `onMarkRead` / `onDismiss` to target a specific item. */
|
|
1484
|
+
id: string;
|
|
1485
|
+
/** Short headline. Keep under ~60 chars to avoid wrapping beyond two lines. */
|
|
1486
|
+
title: string;
|
|
1487
|
+
/** Longer body text. Truncated to 3 lines by default. */
|
|
1488
|
+
body?: string;
|
|
1489
|
+
/** ISO date string, Date instance, or epoch ms. */
|
|
1490
|
+
timestamp: string | number | Date;
|
|
1491
|
+
/** Severity drives the side-border + dot color. Defaults to `'info'`. */
|
|
1492
|
+
severity?: NotificationSeverity;
|
|
1493
|
+
/** Optional icon — replaces the severity dot when supplied. */
|
|
1494
|
+
icon?: LucideIcon;
|
|
1495
|
+
/** `true` renders the item in a read/dim state (no unread dot, lower contrast). */
|
|
1496
|
+
read?: boolean;
|
|
1497
|
+
/**
|
|
1498
|
+
* Row-level callback — fires when the item body is clicked. Typical use:
|
|
1499
|
+
* navigate to the source. The palette closes afterwards.
|
|
1500
|
+
*/
|
|
1501
|
+
onSelect?: () => void;
|
|
1502
|
+
/** Inline action button rendered inside the row (e.g., "Approve", "Open"). */
|
|
1503
|
+
action?: {
|
|
1504
|
+
label: string;
|
|
1505
|
+
onClick: () => void;
|
|
1506
|
+
};
|
|
1507
|
+
}
|
|
1508
|
+
interface NotificationFilter {
|
|
1509
|
+
/** Stable key for the tab. */
|
|
1510
|
+
key: string;
|
|
1511
|
+
/** Visible label. */
|
|
1512
|
+
label: string;
|
|
1513
|
+
/** Predicate — items returning `true` are shown when this filter is active. */
|
|
1514
|
+
predicate: (item: NotificationItem) => boolean;
|
|
1515
|
+
}
|
|
1516
|
+
interface NotificationCenterProps {
|
|
1517
|
+
/** Items to render. Consumer owns the array (mark-as-read / dismiss happen in your store). */
|
|
1518
|
+
items: NotificationItem[];
|
|
1519
|
+
/** Fires when user clicks an unread item, or the "mark read" action on it. */
|
|
1520
|
+
onMarkRead?: (id: string) => void;
|
|
1521
|
+
/** Fires when user clicks "mark all read". */
|
|
1522
|
+
onMarkAllRead?: () => void;
|
|
1523
|
+
/** Fires when user clicks the × on an item. If absent, dismiss is hidden. */
|
|
1524
|
+
onDismiss?: (id: string) => void;
|
|
1525
|
+
/** Optional tabs. First filter is active by default unless `defaultFilter` supplied. */
|
|
1526
|
+
filters?: NotificationFilter[];
|
|
1527
|
+
/** Key of the filter active on first render. */
|
|
1528
|
+
defaultFilter?: string;
|
|
1529
|
+
/** Optional per-filter active control. When set, tabs become controlled. */
|
|
1530
|
+
activeFilter?: string;
|
|
1531
|
+
onFilterChange?: (key: string) => void;
|
|
1532
|
+
/** Max CSS height of the scrollable list. Default `'420px'`. */
|
|
1533
|
+
maxHeight?: string;
|
|
1534
|
+
/** Locale for label strings + digit formatting. */
|
|
1535
|
+
locale?: SupportedLocale;
|
|
1536
|
+
/** Controlled open. */
|
|
1537
|
+
open?: boolean;
|
|
1538
|
+
onOpenChange?: (open: boolean) => void;
|
|
1539
|
+
/** Custom empty message. */
|
|
1540
|
+
emptyMessage?: string;
|
|
1541
|
+
/** Aria-label on the bell trigger. */
|
|
1542
|
+
triggerLabel?: string;
|
|
1543
|
+
/** Extra class on the trigger button. */
|
|
1544
|
+
triggerClassName?: string;
|
|
1545
|
+
/** Extra class on the popover content. */
|
|
1546
|
+
className?: string;
|
|
1547
|
+
/** Override relative-time formatter (default uses `formatRelativeTime` — Persian-biased). */
|
|
1548
|
+
formatTime?: (date: Date) => string;
|
|
1549
|
+
}
|
|
1550
|
+
declare function NotificationCenter({ items, onMarkRead, onMarkAllRead, onDismiss, filters, defaultFilter, activeFilter: controlledFilter, onFilterChange, maxHeight, locale, open: controlledOpen, onOpenChange, emptyMessage, triggerLabel, triggerClassName, className, formatTime, }: NotificationCenterProps): react_jsx_runtime.JSX.Element;
|
|
1551
|
+
declare namespace NotificationCenter {
|
|
1552
|
+
var displayName: string;
|
|
1553
|
+
}
|
|
1554
|
+
|
|
1555
|
+
declare const siteHeaderVariants: (props?: ({
|
|
1556
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
1557
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1558
|
+
interface SiteHeaderProps extends React$1.HTMLAttributes<HTMLElement>, VariantProps<typeof siteHeaderVariants> {
|
|
1559
|
+
}
|
|
1560
|
+
/**
|
|
1561
|
+
* Opinionated app-shell header for multi-screen dashboards. Compose with the
|
|
1562
|
+
* sub-components: `<SiteHeaderStart>` / `<SiteHeaderEnd>` plus the small
|
|
1563
|
+
* primitives (`Breadcrumb`, `SiteHeaderTitle`, `SiteHeaderSubtitle`,
|
|
1564
|
+
* `SiteHeaderActions`, `SiteHeaderSeparator`).
|
|
1565
|
+
*
|
|
1566
|
+
* For a low-level prop-based layout use {@link AppBar} instead.
|
|
1567
|
+
*/
|
|
1568
|
+
declare const SiteHeader: React$1.ForwardRefExoticComponent<SiteHeaderProps & React$1.RefAttributes<HTMLElement>>;
|
|
1569
|
+
/** Inline-start slot. Holds breadcrumb + title stack. Grows to fill space. */
|
|
1570
|
+
declare const SiteHeaderStart: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1571
|
+
/** Inline-end slot. Holds actions + notifications + user menu. Shrinks to content. */
|
|
1572
|
+
declare const SiteHeaderEnd: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1573
|
+
/** Main page title. Single line, truncates. */
|
|
1574
|
+
declare const SiteHeaderTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
1575
|
+
/** Optional tagline under the title. Single line, truncates. */
|
|
1576
|
+
declare const SiteHeaderSubtitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
1577
|
+
/**
|
|
1578
|
+
* Stack helper — wraps breadcrumb / title / subtitle vertically. Use inside
|
|
1579
|
+
* `SiteHeaderStart` when you want a conventional "breadcrumb-above-title" layout.
|
|
1580
|
+
*/
|
|
1581
|
+
declare const SiteHeaderTitleGroup: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1582
|
+
/** Group container for icon-only action buttons. */
|
|
1583
|
+
declare const SiteHeaderActions: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1584
|
+
/** Vertical separator between action clusters. */
|
|
1585
|
+
declare const SiteHeaderSeparator: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLSpanElement> & React$1.RefAttributes<HTMLSpanElement>>;
|
|
1586
|
+
|
|
1587
|
+
interface UserMenuUser {
|
|
1588
|
+
name: string;
|
|
1589
|
+
email?: string;
|
|
1590
|
+
avatar?: string;
|
|
1591
|
+
/** Fallback initials when the avatar image is missing or fails to load. */
|
|
1592
|
+
avatarFallback?: string;
|
|
1593
|
+
/** Optional role / org label shown under the name. */
|
|
1594
|
+
role?: string;
|
|
1595
|
+
}
|
|
1596
|
+
/** Discriminated item union for the dropdown body. */
|
|
1597
|
+
type UserMenuItem = {
|
|
1598
|
+
type?: 'item';
|
|
1599
|
+
label: string;
|
|
1600
|
+
icon?: React$1.ComponentType<{
|
|
1601
|
+
className?: string;
|
|
1602
|
+
}>;
|
|
1603
|
+
/** Hotkey string passed to `formatHotkey`, e.g. `'mod+,'`. */
|
|
1604
|
+
shortcut?: string;
|
|
1605
|
+
onSelect: () => void;
|
|
1606
|
+
destructive?: boolean;
|
|
1607
|
+
disabled?: boolean;
|
|
1608
|
+
} | {
|
|
1609
|
+
type: 'separator';
|
|
1610
|
+
} | {
|
|
1611
|
+
type: 'label';
|
|
1612
|
+
label: string;
|
|
1613
|
+
} | {
|
|
1614
|
+
type: 'submenu';
|
|
1615
|
+
label: string;
|
|
1616
|
+
icon?: React$1.ComponentType<{
|
|
1617
|
+
className?: string;
|
|
1618
|
+
}>;
|
|
1619
|
+
items: UserMenuItem[];
|
|
1620
|
+
};
|
|
1621
|
+
interface UserMenuProps {
|
|
1622
|
+
/** The current user shown in the dropdown header + trigger avatar. */
|
|
1623
|
+
user: UserMenuUser;
|
|
1624
|
+
/** Dropdown rows. Use the discriminated union for item / separator / label / submenu. */
|
|
1625
|
+
items: UserMenuItem[];
|
|
1626
|
+
/** Controlled open. */
|
|
1627
|
+
open?: boolean;
|
|
1628
|
+
onOpenChange?: (open: boolean) => void;
|
|
1629
|
+
/** Locale for default labels. Defaults to `'fa'`. */
|
|
1630
|
+
locale?: SupportedLocale;
|
|
1631
|
+
/** Show email + role block in the dropdown header. Default `true`. */
|
|
1632
|
+
showUserHeader?: boolean;
|
|
1633
|
+
/** Show the name next to the avatar on the trigger (hidden on mobile by default). Default `false`. */
|
|
1634
|
+
showNameInTrigger?: boolean;
|
|
1635
|
+
/** Trigger size. */
|
|
1636
|
+
size?: 'sm' | 'md';
|
|
1637
|
+
/** Extra class on the trigger button. */
|
|
1638
|
+
triggerClassName?: string;
|
|
1639
|
+
/** Extra class on the dropdown content. */
|
|
1640
|
+
className?: string;
|
|
1641
|
+
/** `data-slot` override (useful when nesting inside another component's analytics tree). */
|
|
1642
|
+
'data-slot'?: string;
|
|
1643
|
+
}
|
|
1644
|
+
declare const UserMenu: React$1.ForwardRefExoticComponent<UserMenuProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1645
|
+
|
|
1646
|
+
interface RouteProgressProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
1647
|
+
/**
|
|
1648
|
+
* Controlled visibility. If omitted, the component stays mounted but hidden —
|
|
1649
|
+
* fire the `start`/`finish` methods on the ref instead.
|
|
1650
|
+
*/
|
|
1651
|
+
active?: boolean;
|
|
1652
|
+
/** Progress value (0–1). Default: auto-trickle while active. */
|
|
1653
|
+
value?: number;
|
|
1654
|
+
/**
|
|
1655
|
+
* How long to trickle before the bar caps out near the end (matches
|
|
1656
|
+
* NProgress-style UX). Default: 800ms per step.
|
|
1657
|
+
*/
|
|
1658
|
+
trickleInterval?: number;
|
|
1659
|
+
/**
|
|
1660
|
+
* Value the bar tops out at while waiting for `active=false` (so the page
|
|
1661
|
+
* change still feels snappy). Default: 0.9 — never completes automatically.
|
|
1662
|
+
*/
|
|
1663
|
+
trickleCap?: number;
|
|
1664
|
+
/** Height in pixels. Default: 2. */
|
|
1665
|
+
height?: number;
|
|
1666
|
+
/** Position. `'top'` (default) sticks to the top edge; `'bottom'` for e.g. drawers. */
|
|
1667
|
+
position?: 'top' | 'bottom';
|
|
1668
|
+
}
|
|
1669
|
+
interface RouteProgressHandle {
|
|
1670
|
+
/** Reset + show the bar. */
|
|
1671
|
+
start: () => void;
|
|
1672
|
+
/** Snap to 100% then hide after a short fade-out. */
|
|
1673
|
+
finish: () => void;
|
|
1674
|
+
}
|
|
1675
|
+
/**
|
|
1676
|
+
* Thin gradient progress bar for route/page transitions. Three usage modes:
|
|
1677
|
+
*
|
|
1678
|
+
* 1. **Controlled** — pass `active={true/false}` and let the component trickle
|
|
1679
|
+
* automatically while `active` is true:
|
|
1680
|
+
* ```tsx
|
|
1681
|
+
* <RouteProgress active={isNavigating} />
|
|
1682
|
+
* ```
|
|
1683
|
+
*
|
|
1684
|
+
* 2. **Imperative** — call `start()` / `finish()` on the ref:
|
|
1685
|
+
* ```tsx
|
|
1686
|
+
* const ref = useRef<RouteProgressHandle>(null)
|
|
1687
|
+
* ref.current?.start()
|
|
1688
|
+
* // ... navigate ...
|
|
1689
|
+
* ref.current?.finish()
|
|
1690
|
+
* ```
|
|
1691
|
+
*
|
|
1692
|
+
* 3. **Fully controlled value** — pass a numeric `value` in `[0, 1]` and skip
|
|
1693
|
+
* `active` entirely. Useful for file uploads or long-running jobs.
|
|
1694
|
+
*/
|
|
1695
|
+
declare const RouteProgress: React$1.ForwardRefExoticComponent<RouteProgressProps & React$1.RefAttributes<RouteProgressHandle>>;
|
|
1696
|
+
|
|
1697
|
+
type NavMatchStrategy = 'exact' | 'prefix';
|
|
1698
|
+
interface NavTreeContextValue {
|
|
1699
|
+
/** Current pathname — used to decide which `NavItem.href` is active. */
|
|
1700
|
+
activePath: string;
|
|
1701
|
+
/** Match strategy. Default `'prefix'` matches `/clusters` for both `/clusters` and `/clusters/42`. */
|
|
1702
|
+
matchStrategy: NavMatchStrategy;
|
|
1703
|
+
}
|
|
1704
|
+
declare function useNavTree(): NavTreeContextValue;
|
|
1705
|
+
interface NavTreeProviderProps {
|
|
1706
|
+
/** Current pathname. For Next.js, pass `usePathname()`. */
|
|
1707
|
+
activePath: string;
|
|
1708
|
+
/** How NavItem `href` matches `activePath`. Default: `'prefix'`. */
|
|
1709
|
+
matchStrategy?: NavMatchStrategy;
|
|
1710
|
+
children: React$1.ReactNode;
|
|
1711
|
+
}
|
|
1712
|
+
declare function NavTreeProvider({ activePath, matchStrategy, children }: NavTreeProviderProps): react_jsx_runtime.JSX.Element;
|
|
1713
|
+
/** Outer container. Mostly a semantic `<nav>` wrapper — accepts any children. */
|
|
1714
|
+
declare const NavTree: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLElement> & React$1.RefAttributes<HTMLElement>>;
|
|
1715
|
+
interface NavGroupProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'role'> {
|
|
1716
|
+
/** Visible group heading. Clickable if `collapsible` (default true). */
|
|
1717
|
+
heading?: React$1.ReactNode;
|
|
1718
|
+
/** Whether the header toggles visibility of children. Default `true` if `heading` is set. */
|
|
1719
|
+
collapsible?: boolean;
|
|
1720
|
+
/** Initial open state (uncontrolled). Default `true`. */
|
|
1721
|
+
defaultOpen?: boolean;
|
|
1722
|
+
/** Controlled open state. */
|
|
1723
|
+
open?: boolean;
|
|
1724
|
+
onOpenChange?: (open: boolean) => void;
|
|
1725
|
+
}
|
|
1726
|
+
declare const NavGroup: React$1.ForwardRefExoticComponent<NavGroupProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1727
|
+
declare const NavSeparator: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHRElement> & React$1.RefAttributes<HTMLHRElement>>;
|
|
1728
|
+
declare const navItemVariants: (props?: ({
|
|
1729
|
+
size?: "sm" | "md" | null | undefined;
|
|
1730
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1731
|
+
interface NavItemBaseProps extends VariantProps<typeof navItemVariants> {
|
|
1732
|
+
/** Link target. If set, NavItem renders as `<a>`. */
|
|
1733
|
+
href?: string;
|
|
1734
|
+
/** Click handler. If set (and `href` not set), NavItem renders as `<button>`. */
|
|
1735
|
+
onClick?: React$1.MouseEventHandler<HTMLElement>;
|
|
1736
|
+
/** Leading icon. */
|
|
1737
|
+
icon?: React$1.ComponentType<{
|
|
1738
|
+
className?: string;
|
|
1739
|
+
}>;
|
|
1740
|
+
/** Optional trailing badge (count, "new", etc.). */
|
|
1741
|
+
badge?: React$1.ReactNode;
|
|
1742
|
+
/** Custom `data-active` override. Use to short-circuit path matching. */
|
|
1743
|
+
active?: boolean;
|
|
1744
|
+
/** Skip the active-cascade report to parent (useful for informational items). */
|
|
1745
|
+
skipActiveReport?: boolean;
|
|
1746
|
+
/** Render-as override — passes all props to the given component. */
|
|
1747
|
+
asChild?: boolean;
|
|
1748
|
+
/** Disables interaction + dims the row. */
|
|
1749
|
+
disabled?: boolean;
|
|
1750
|
+
/** External link hint — opens in a new tab with `rel="noopener noreferrer"`. */
|
|
1751
|
+
external?: boolean;
|
|
1752
|
+
}
|
|
1753
|
+
interface NavItemProps extends NavItemBaseProps, Omit<React$1.HTMLAttributes<HTMLElement>, 'onClick'> {
|
|
1754
|
+
}
|
|
1755
|
+
declare const NavItem: React$1.ForwardRefExoticComponent<NavItemProps & React$1.RefAttributes<HTMLElement>>;
|
|
1756
|
+
|
|
1010
1757
|
interface CommentTag {
|
|
1011
1758
|
title: string;
|
|
1012
1759
|
probability: number;
|
|
@@ -1127,29 +1874,179 @@ declare namespace ContextMenuShortcut {
|
|
|
1127
1874
|
var displayName: string;
|
|
1128
1875
|
}
|
|
1129
1876
|
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1877
|
+
type FlowData = Partial<Record<FlowKey, number>>;
|
|
1878
|
+
interface FlowDistributionProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
1879
|
+
/** Flow counts (auto-normalized). Missing keys treated as 0. */
|
|
1880
|
+
data: FlowData;
|
|
1881
|
+
/** Display mode */
|
|
1882
|
+
variant?: 'bars' | 'stacked' | 'compact';
|
|
1883
|
+
/** Show numeric counts alongside percent */
|
|
1884
|
+
showCounts?: boolean;
|
|
1885
|
+
/** Show percentages */
|
|
1886
|
+
showPercent?: boolean;
|
|
1887
|
+
/** Locale */
|
|
1136
1888
|
locale?: SupportedLocale;
|
|
1137
|
-
/**
|
|
1138
|
-
|
|
1889
|
+
/** Loading skeleton */
|
|
1890
|
+
isLoading?: boolean;
|
|
1139
1891
|
}
|
|
1140
|
-
declare const
|
|
1892
|
+
declare const FlowDistribution: React$1.ForwardRefExoticComponent<FlowDistributionProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1141
1893
|
|
|
1142
|
-
interface
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
/**
|
|
1152
|
-
|
|
1894
|
+
interface SentimentData {
|
|
1895
|
+
positive: number;
|
|
1896
|
+
negative: number;
|
|
1897
|
+
neutral: number;
|
|
1898
|
+
mixed?: number;
|
|
1899
|
+
}
|
|
1900
|
+
interface SentimentDistributionProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
1901
|
+
/** Sentiment counts (will be auto-normalized to 100%) */
|
|
1902
|
+
data: SentimentData;
|
|
1903
|
+
/** Display mode */
|
|
1904
|
+
variant?: 'bars' | 'stacked' | 'compact';
|
|
1905
|
+
/** Show numeric count labels */
|
|
1906
|
+
showCounts?: boolean;
|
|
1907
|
+
/** Show percentage labels */
|
|
1908
|
+
showPercent?: boolean;
|
|
1909
|
+
/** Locale for number/label formatting */
|
|
1910
|
+
locale?: SupportedLocale;
|
|
1911
|
+
/** Show loading skeleton */
|
|
1912
|
+
isLoading?: boolean;
|
|
1913
|
+
}
|
|
1914
|
+
declare const SentimentDistribution: React$1.ForwardRefExoticComponent<SentimentDistributionProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1915
|
+
|
|
1916
|
+
/**
|
|
1917
|
+
* ConceptCard — افکارسنجی-flavored headline tile for clustering dashboards.
|
|
1918
|
+
* Composes: status badge, severity badge, flow composition bar, sentiment
|
|
1919
|
+
* distribution, sparkline trend, AI summary snippet, optional comparison
|
|
1920
|
+
* checkbox. Built for government dashboards where each "concept" needs
|
|
1921
|
+
* to fit in a card grid with rich, comparable signals.
|
|
1922
|
+
*/
|
|
1923
|
+
interface ConceptCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
1924
|
+
/** Concept name (e.g., "افزایش قیمت بنزین") */
|
|
1925
|
+
title: React$1.ReactNode;
|
|
1926
|
+
/** Short subtitle (e.g., "خوشه ۴ — ۱۲۰ پست") */
|
|
1927
|
+
subtitle?: React$1.ReactNode;
|
|
1928
|
+
/** Operational status */
|
|
1929
|
+
status?: StatusKey;
|
|
1930
|
+
/** Criticality of the concept (urgent/high/medium/low) */
|
|
1931
|
+
severity?: SeverityKey;
|
|
1932
|
+
/** Flow composition breakdown (5-class political) */
|
|
1933
|
+
flow?: FlowData;
|
|
1934
|
+
/** Sentiment composition (3-class) */
|
|
1935
|
+
sentiment?: SentimentData;
|
|
1936
|
+
/** Trend sparkline values (e.g., last 14 days mention volume) */
|
|
1937
|
+
trend?: number[];
|
|
1938
|
+
/** AI-generated short summary (1-2 sentences) */
|
|
1939
|
+
aiSummary?: React$1.ReactNode;
|
|
1940
|
+
/** Total mentions / size — shown as a stat */
|
|
1941
|
+
totalCount?: number;
|
|
1942
|
+
/** Comparison checkbox state. When provided, renders the checkbox in the header */
|
|
1943
|
+
comparison?: {
|
|
1944
|
+
selected: boolean;
|
|
1945
|
+
onSelectionChange: (next: boolean) => void;
|
|
1946
|
+
label?: React$1.ReactNode;
|
|
1947
|
+
};
|
|
1948
|
+
/** Make the entire card clickable (cursor + hover/focus ring) */
|
|
1949
|
+
interactive?: boolean;
|
|
1950
|
+
/** Locale @default 'fa' */
|
|
1951
|
+
locale?: SupportedLocale;
|
|
1952
|
+
}
|
|
1953
|
+
declare const ConceptCard: React$1.ForwardRefExoticComponent<ConceptCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1954
|
+
|
|
1955
|
+
interface CopyButtonProps extends Omit<ButtonProps, 'onClick'> {
|
|
1956
|
+
/** The text value to copy to clipboard */
|
|
1957
|
+
value: string;
|
|
1958
|
+
/** Duration in ms to show the "copied" state @default 2000 */
|
|
1959
|
+
feedbackDuration?: number;
|
|
1960
|
+
/** Locale for aria-label and tooltip text @default "fa" */
|
|
1961
|
+
locale?: SupportedLocale;
|
|
1962
|
+
/** Called after successful copy */
|
|
1963
|
+
onCopy?: () => void;
|
|
1964
|
+
}
|
|
1965
|
+
declare const CopyButton: React$1.ForwardRefExoticComponent<CopyButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1966
|
+
|
|
1967
|
+
type CriterionTierKey = 'excellent' | 'good' | 'moderate' | 'poor' | 'critical';
|
|
1968
|
+
declare const CRITERION_TIER_KEYS: readonly CriterionTierKey[];
|
|
1969
|
+
interface CriterionTierThresholds {
|
|
1970
|
+
/** Minimum score for "excellent" @default 80 */
|
|
1971
|
+
excellent: number;
|
|
1972
|
+
/** Minimum score for "good" @default 60 */
|
|
1973
|
+
good: number;
|
|
1974
|
+
/** Minimum score for "moderate" @default 40 */
|
|
1975
|
+
moderate: number;
|
|
1976
|
+
/** Minimum score for "poor" @default 20 (below → "critical") */
|
|
1977
|
+
poor: number;
|
|
1978
|
+
}
|
|
1979
|
+
declare const DEFAULT_CRITERION_THRESHOLDS: CriterionTierThresholds;
|
|
1980
|
+
/**
|
|
1981
|
+
* Auto-classify a score into one of the 5 canonical tiers based on thresholds.
|
|
1982
|
+
* Assumes score is normalized to [0, max]; will return a tier even if score
|
|
1983
|
+
* is out of range (clamped behaviour).
|
|
1984
|
+
*/
|
|
1985
|
+
declare function getCriterionTier(score: number, max?: number, thresholds?: CriterionTierThresholds): CriterionTierKey;
|
|
1986
|
+
interface CriterionInputSpec {
|
|
1987
|
+
/** Short label for the input (e.g., "نرخ تعامل") */
|
|
1988
|
+
label?: React$1.ReactNode;
|
|
1989
|
+
/** Displayed value (e.g., "۳.۲٪", "+۱۲۰ فالوور", "۵۰۰ کلمه") */
|
|
1990
|
+
value: React$1.ReactNode;
|
|
1991
|
+
}
|
|
1992
|
+
interface CriterionTrend {
|
|
1993
|
+
/** Delta in points (not percent). Positive = higher score than baseline. */
|
|
1994
|
+
delta: number;
|
|
1995
|
+
/** Optional label describing the baseline (e.g., "نسبت به ماه قبل") */
|
|
1996
|
+
label?: React$1.ReactNode;
|
|
1997
|
+
}
|
|
1998
|
+
interface CriterionScoreCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
1999
|
+
/** Name of the criterion (e.g., "نرخ تعامل") */
|
|
2000
|
+
name: React$1.ReactNode;
|
|
2001
|
+
/** Short description of how the score is computed */
|
|
2002
|
+
description?: React$1.ReactNode;
|
|
2003
|
+
/** Computed score */
|
|
2004
|
+
score: number;
|
|
2005
|
+
/** Max of the score scale @default 100 */
|
|
2006
|
+
max?: number;
|
|
2007
|
+
/**
|
|
2008
|
+
* Weight in a composite score (0..1). Rendered as "۶۰٪" badge in the header.
|
|
2009
|
+
* When weight=0, the badge still renders — pass `undefined` to hide it.
|
|
2010
|
+
*/
|
|
2011
|
+
weight?: number;
|
|
2012
|
+
/** Raw input that produced the score (for transparency) */
|
|
2013
|
+
input?: CriterionInputSpec;
|
|
2014
|
+
/** Change vs a baseline, shown next to the score */
|
|
2015
|
+
trend?: CriterionTrend;
|
|
2016
|
+
/**
|
|
2017
|
+
* Tier override. When omitted, auto-computed from `score` + `max` + thresholds.
|
|
2018
|
+
*/
|
|
2019
|
+
tier?: CriterionTierKey;
|
|
2020
|
+
/** Show a small "≥80 عالی · ≥60 خوب · ..." hint row @default false */
|
|
2021
|
+
showThresholdHint?: boolean;
|
|
2022
|
+
/** Custom tier thresholds (expressed for 0-100; scaled to `max` internally) */
|
|
2023
|
+
tierThresholds?: CriterionTierThresholds;
|
|
2024
|
+
/** Visual size @default "md" */
|
|
2025
|
+
size?: 'sm' | 'md' | 'lg';
|
|
2026
|
+
/**
|
|
2027
|
+
* Layout orientation:
|
|
2028
|
+
* - `default` — header with name+weight, big score + trend, input/description/hint rows
|
|
2029
|
+
* - `compact` — single row name + score, for list/table usage
|
|
2030
|
+
*/
|
|
2031
|
+
layout?: 'default' | 'compact';
|
|
2032
|
+
/** Locale for default strings + digits @default "fa" */
|
|
2033
|
+
locale?: SupportedLocale;
|
|
2034
|
+
/** Hide the horizontal progress bar @default false */
|
|
2035
|
+
hideBar?: boolean;
|
|
2036
|
+
}
|
|
2037
|
+
declare const CriterionScoreCard: React$1.ForwardRefExoticComponent<CriterionScoreCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2038
|
+
|
|
2039
|
+
interface DatePickerProps {
|
|
2040
|
+
/**
|
|
2041
|
+
* The selected date range
|
|
2042
|
+
*/
|
|
2043
|
+
value?: DateRange;
|
|
2044
|
+
/**
|
|
2045
|
+
* Callback when date range changes
|
|
2046
|
+
*/
|
|
2047
|
+
onChange?: (date: DateRange | undefined) => void;
|
|
2048
|
+
/**
|
|
2049
|
+
* Use Persian/Jalali calendar
|
|
1153
2050
|
*/
|
|
1154
2051
|
usePersianCalendar?: boolean;
|
|
1155
2052
|
/**
|
|
@@ -1448,6 +2345,85 @@ interface FilterBarActiveFiltersProps extends React$1.HTMLAttributes<HTMLDivElem
|
|
|
1448
2345
|
}
|
|
1449
2346
|
declare const FilterBarActiveFilters: React$1.ForwardRefExoticComponent<FilterBarActiveFiltersProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1450
2347
|
|
|
2348
|
+
interface FilterPanelProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2349
|
+
/** Locale for default strings and digit formatting @default "fa" */
|
|
2350
|
+
locale?: SupportedLocale;
|
|
2351
|
+
}
|
|
2352
|
+
declare const FilterPanel: React$1.ForwardRefExoticComponent<FilterPanelProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2353
|
+
declare const FilterPanelHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2354
|
+
interface FilterPanelTitleProps extends React$1.HTMLAttributes<HTMLHeadingElement> {
|
|
2355
|
+
/** Active filter count — when > 0, a pill is rendered next to the label */
|
|
2356
|
+
activeCount?: number;
|
|
2357
|
+
}
|
|
2358
|
+
declare const FilterPanelTitle: React$1.ForwardRefExoticComponent<FilterPanelTitleProps & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
2359
|
+
interface FilterPanelClearAllProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'> {
|
|
2360
|
+
/** Callback when clear-all is clicked */
|
|
2361
|
+
onClear?: () => void;
|
|
2362
|
+
/** Also allow onClick (alias of onClear) to match native HTML semantics */
|
|
2363
|
+
onClick?: React$1.MouseEventHandler<HTMLButtonElement>;
|
|
2364
|
+
}
|
|
2365
|
+
declare const FilterPanelClearAll: React$1.ForwardRefExoticComponent<FilterPanelClearAllProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
2366
|
+
declare const FilterPanelBody: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2367
|
+
declare const FilterPanelFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2368
|
+
interface FilterSectionProps {
|
|
2369
|
+
/** Visible section title */
|
|
2370
|
+
title: React$1.ReactNode;
|
|
2371
|
+
/** Extra descriptive text below the title */
|
|
2372
|
+
description?: React$1.ReactNode;
|
|
2373
|
+
/** Number of active filters inside this section — shown as a pill next to the title */
|
|
2374
|
+
activeCount?: number;
|
|
2375
|
+
/** Initial open state for uncontrolled mode @default true */
|
|
2376
|
+
defaultOpen?: boolean;
|
|
2377
|
+
/** Controlled open state */
|
|
2378
|
+
open?: boolean;
|
|
2379
|
+
/** onOpenChange for controlled mode */
|
|
2380
|
+
onOpenChange?: (open: boolean) => void;
|
|
2381
|
+
/** When set, a "×" clear button appears in the header */
|
|
2382
|
+
onClear?: () => void;
|
|
2383
|
+
/** When true, the trigger is static (non-collapsible) — useful for single-field sections */
|
|
2384
|
+
collapsible?: boolean;
|
|
2385
|
+
/** Content (form fields) */
|
|
2386
|
+
children?: React$1.ReactNode;
|
|
2387
|
+
className?: string;
|
|
2388
|
+
/** Extra class for the inner content container */
|
|
2389
|
+
contentClassName?: string;
|
|
2390
|
+
/** Optional id for testing / aria */
|
|
2391
|
+
id?: string;
|
|
2392
|
+
}
|
|
2393
|
+
declare const FilterSection: React$1.ForwardRefExoticComponent<FilterSectionProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2394
|
+
interface FilterPanelTriggerProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
2395
|
+
/** Active filter count — renders a pill badge next to the label */
|
|
2396
|
+
activeCount?: number;
|
|
2397
|
+
/** Locale for digit formatting and default label @default inherited from FilterPanel context; falls back to "fa" */
|
|
2398
|
+
locale?: SupportedLocale;
|
|
2399
|
+
/** Custom icon element (defaults to SlidersHorizontal) */
|
|
2400
|
+
icon?: React$1.ReactNode;
|
|
2401
|
+
/** Render without icon */
|
|
2402
|
+
hideIcon?: boolean;
|
|
2403
|
+
/** Visual variant — passthrough to Button */
|
|
2404
|
+
variant?: React$1.ComponentProps<typeof Button>['variant'];
|
|
2405
|
+
/** Size — passthrough to Button */
|
|
2406
|
+
size?: React$1.ComponentProps<typeof Button>['size'];
|
|
2407
|
+
}
|
|
2408
|
+
declare const FilterPanelTrigger: React$1.ForwardRefExoticComponent<FilterPanelTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
2409
|
+
interface ActiveFiltersBarProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2410
|
+
/** Locale for default empty text */
|
|
2411
|
+
locale?: SupportedLocale;
|
|
2412
|
+
/** Label rendered before chips ("فیلترهای فعال:"). Pass `false` to hide it. */
|
|
2413
|
+
label?: React$1.ReactNode;
|
|
2414
|
+
/** Text when no children are provided */
|
|
2415
|
+
emptyText?: React$1.ReactNode;
|
|
2416
|
+
/** Hide the whole bar when there are no children (instead of showing emptyText) */
|
|
2417
|
+
hideWhenEmpty?: boolean;
|
|
2418
|
+
}
|
|
2419
|
+
declare const ActiveFiltersBar: React$1.ForwardRefExoticComponent<ActiveFiltersBarProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2420
|
+
interface ActiveFiltersClearAllProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'> {
|
|
2421
|
+
onClear?: () => void;
|
|
2422
|
+
onClick?: React$1.MouseEventHandler<HTMLButtonElement>;
|
|
2423
|
+
locale?: SupportedLocale;
|
|
2424
|
+
}
|
|
2425
|
+
declare const ActiveFiltersClearAll: React$1.ForwardRefExoticComponent<ActiveFiltersClearAllProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
2426
|
+
|
|
1451
2427
|
declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: react_hook_form.FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React$1.JSX.Element;
|
|
1452
2428
|
declare const FormField: {
|
|
1453
2429
|
<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>): react_jsx_runtime.JSX.Element;
|
|
@@ -1539,6 +2515,102 @@ declare const TagInput: React$1.ForwardRefExoticComponent<TagInputProps & React$
|
|
|
1539
2515
|
|
|
1540
2516
|
declare const HashtagInput: React$1.ForwardRefExoticComponent<TagInputProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1541
2517
|
|
|
2518
|
+
type CardSize = 'sm' | 'md' | 'lg';
|
|
2519
|
+
interface EntityHealthCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2520
|
+
/** Current health state — drives colour, icon, and default narrative framing */
|
|
2521
|
+
severity: EntityHealthKey;
|
|
2522
|
+
/** Compact row layout for list views @default "md" */
|
|
2523
|
+
size?: CardSize;
|
|
2524
|
+
/** Render as a clickable element (`role="button"` + focus ring). */
|
|
2525
|
+
interactive?: boolean;
|
|
2526
|
+
/** Locale for default strings + digit formatting @default "fa" */
|
|
2527
|
+
locale?: SupportedLocale;
|
|
2528
|
+
/** Render an accent-coloured left (logical-start) border tied to severity @default true */
|
|
2529
|
+
accentBorder?: boolean;
|
|
2530
|
+
}
|
|
2531
|
+
declare const EntityHealthCard: React$1.ForwardRefExoticComponent<EntityHealthCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2532
|
+
declare const EntityHealthCardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2533
|
+
declare const EntityHealthCardHeaderText: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2534
|
+
interface EntityHealthCardTitleProps extends React$1.HTMLAttributes<HTMLHeadingElement> {
|
|
2535
|
+
/** Semantic heading level @default "h3" */
|
|
2536
|
+
as?: 'h2' | 'h3' | 'h4';
|
|
2537
|
+
}
|
|
2538
|
+
declare const EntityHealthCardTitle: React$1.ForwardRefExoticComponent<EntityHealthCardTitleProps & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
2539
|
+
declare const EntityHealthCardSubtitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
2540
|
+
declare const EntityHealthCardHeaderEnd: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2541
|
+
interface EntityHealthCardSeverityBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
2542
|
+
/** Hide the text label — keeps the icon and aria-label only */
|
|
2543
|
+
iconOnly?: boolean;
|
|
2544
|
+
/** Size @default "sm" */
|
|
2545
|
+
size?: 'xs' | 'sm' | 'md';
|
|
2546
|
+
/** Override locale for just this badge */
|
|
2547
|
+
locale?: SupportedLocale;
|
|
2548
|
+
}
|
|
2549
|
+
declare const EntityHealthCardSeverityBadge: React$1.ForwardRefExoticComponent<EntityHealthCardSeverityBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
2550
|
+
interface EntityHealthCardScoreProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2551
|
+
/** Current score — clamped to [0, max]. */
|
|
2552
|
+
value: number;
|
|
2553
|
+
/** Max score @default 100 */
|
|
2554
|
+
max?: number;
|
|
2555
|
+
/** Leading label (e.g., "نمره سلامت") */
|
|
2556
|
+
label?: React$1.ReactNode;
|
|
2557
|
+
/** Optional delta vs previous period. Positive => up, negative => down. */
|
|
2558
|
+
delta?: number;
|
|
2559
|
+
/** Suffix rendered after the score (e.g., "٪", "/۱۰۰"). Omit for no suffix. */
|
|
2560
|
+
suffix?: React$1.ReactNode;
|
|
2561
|
+
/** Override auto suffix when `suffix` is not provided. Defaults to "/{max}" in localized digits. */
|
|
2562
|
+
showDenominator?: boolean;
|
|
2563
|
+
/** Override the accent colour. Accepts any CSS color. */
|
|
2564
|
+
color?: string;
|
|
2565
|
+
}
|
|
2566
|
+
declare const EntityHealthCardScore: React$1.ForwardRefExoticComponent<EntityHealthCardScoreProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2567
|
+
declare const EntityHealthCardNarrative: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
2568
|
+
interface EntityHealthCardTrustProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2569
|
+
/** Trust score @range 0..max */
|
|
2570
|
+
value: number;
|
|
2571
|
+
/** Max score @default 100 */
|
|
2572
|
+
max?: number;
|
|
2573
|
+
/** Leading label — defaults to "اعتماد" */
|
|
2574
|
+
label?: React$1.ReactNode;
|
|
2575
|
+
/** Hide the numeric value on the trailing side */
|
|
2576
|
+
hideValue?: boolean;
|
|
2577
|
+
/** Show 25 / 50 / 75 tick marks inside the bar @default true */
|
|
2578
|
+
showMarkers?: boolean;
|
|
2579
|
+
/** Size of the bar @default "sm" */
|
|
2580
|
+
barSize?: 'xs' | 'sm' | 'md';
|
|
2581
|
+
/** Override the bar fill colour */
|
|
2582
|
+
color?: string;
|
|
2583
|
+
}
|
|
2584
|
+
declare const EntityHealthCardTrust: React$1.ForwardRefExoticComponent<EntityHealthCardTrustProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2585
|
+
interface EntityHealthCardPhaseProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2586
|
+
/** Current day index (1-based). When provided with `total`, a progress bar renders. */
|
|
2587
|
+
day?: number;
|
|
2588
|
+
/** Total days in this phase */
|
|
2589
|
+
total?: number;
|
|
2590
|
+
/** Phase name */
|
|
2591
|
+
phase?: React$1.ReactNode;
|
|
2592
|
+
}
|
|
2593
|
+
declare const EntityHealthCardPhase: React$1.ForwardRefExoticComponent<EntityHealthCardPhaseProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2594
|
+
interface EntityHealthCardMetricsProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2595
|
+
/** Number of columns @default 2 */
|
|
2596
|
+
columns?: 1 | 2 | 3 | 4;
|
|
2597
|
+
}
|
|
2598
|
+
declare const EntityHealthCardMetrics: React$1.ForwardRefExoticComponent<EntityHealthCardMetricsProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2599
|
+
interface EntityHealthCardMetricProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2600
|
+
/** Metric label */
|
|
2601
|
+
label: React$1.ReactNode;
|
|
2602
|
+
/** Metric value — primary number or short string */
|
|
2603
|
+
value: React$1.ReactNode;
|
|
2604
|
+
/** Optional trend direction — affects trailing icon colour */
|
|
2605
|
+
trend?: 'up' | 'down' | 'flat';
|
|
2606
|
+
/** Optional trend magnitude shown after the arrow (e.g., "12%") */
|
|
2607
|
+
trendLabel?: React$1.ReactNode;
|
|
2608
|
+
}
|
|
2609
|
+
declare const EntityHealthCardMetric: React$1.ForwardRefExoticComponent<EntityHealthCardMetricProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2610
|
+
declare const EntityHealthCardFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2611
|
+
declare const EntityHealthCardActions: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2612
|
+
declare const EntityHealthCardMeta: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
2613
|
+
|
|
1542
2614
|
interface InputGroupProps extends React$1.ComponentProps<'div'> {
|
|
1543
2615
|
/**
|
|
1544
2616
|
* Direction of the input group.
|
|
@@ -1599,69 +2671,109 @@ declare namespace InputOTPSeparator {
|
|
|
1599
2671
|
var displayName: string;
|
|
1600
2672
|
}
|
|
1601
2673
|
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
2674
|
+
interface JobCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2675
|
+
/** Current lifecycle status — drives colour and badge */
|
|
2676
|
+
status: JobStatusKey;
|
|
2677
|
+
/** Compact single-row layout (for list views) @default false */
|
|
2678
|
+
compact?: boolean;
|
|
2679
|
+
/** When set, the card renders as a clickable element with hover + focus styles. Pure presentational — wire your own handler via onClick. */
|
|
2680
|
+
interactive?: boolean;
|
|
2681
|
+
/** Locale for default strings + digit formatting @default "fa" */
|
|
2682
|
+
locale?: SupportedLocale;
|
|
1608
2683
|
}
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
2684
|
+
declare const JobCard: React$1.ForwardRefExoticComponent<JobCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2685
|
+
declare const JobCardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2686
|
+
interface JobCardThumbnailProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2687
|
+
/** Image URL. If omitted, `icon` or `fallback` is used. */
|
|
2688
|
+
src?: string;
|
|
2689
|
+
/** Alt text for the image */
|
|
2690
|
+
alt?: string;
|
|
2691
|
+
/** Lucide icon rendered in an outlined tile (used when no src) */
|
|
2692
|
+
icon?: React$1.ComponentType<{
|
|
2693
|
+
className?: string;
|
|
2694
|
+
}>;
|
|
2695
|
+
/** Arbitrary fallback node (letter, emoji, …) */
|
|
2696
|
+
fallback?: React$1.ReactNode;
|
|
1614
2697
|
}
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
interface
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
2698
|
+
declare const JobCardThumbnail: React$1.ForwardRefExoticComponent<JobCardThumbnailProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2699
|
+
declare const JobCardHeaderText: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2700
|
+
interface JobCardTitleProps extends React$1.HTMLAttributes<HTMLHeadingElement> {
|
|
2701
|
+
/** Semantic heading level @default "h3" */
|
|
2702
|
+
as?: 'h2' | 'h3' | 'h4';
|
|
2703
|
+
}
|
|
2704
|
+
declare const JobCardTitle: React$1.ForwardRefExoticComponent<JobCardTitleProps & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
2705
|
+
declare const JobCardSubtitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
2706
|
+
declare const JobCardHeaderActions: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2707
|
+
interface JobCardStatusBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
2708
|
+
/** Hide the text label — keeps the icon and aria-label only */
|
|
2709
|
+
iconOnly?: boolean;
|
|
2710
|
+
/** Size @default "sm" */
|
|
2711
|
+
size?: 'xs' | 'sm' | 'md';
|
|
2712
|
+
/** Override locale for just this badge */
|
|
2713
|
+
locale?: SupportedLocale;
|
|
1622
2714
|
}
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
2715
|
+
declare const JobCardStatusBadge: React$1.ForwardRefExoticComponent<JobCardStatusBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
2716
|
+
/**
|
|
2717
|
+
* Wrapper for action buttons. If the parent `<JobCard interactive>` is
|
|
2718
|
+
* clickable, child button clicks would otherwise bubble up and trigger
|
|
2719
|
+
* the card's handler. Wrap your buttons here and we add role="group"
|
|
2720
|
+
* semantics; stop event propagation at the Button's own onClick when
|
|
2721
|
+
* needed to avoid conflicting with card activation.
|
|
2722
|
+
*/
|
|
2723
|
+
declare const JobCardActions: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2724
|
+
interface JobCardProgressProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2725
|
+
/** Current value — if omitted (and not indeterminate), renders a 0% bar */
|
|
2726
|
+
value?: number;
|
|
2727
|
+
/** Max value @default 100 */
|
|
2728
|
+
max?: number;
|
|
2729
|
+
/** Render an animated indeterminate shimmer. Overrides `value`. */
|
|
2730
|
+
indeterminate?: boolean;
|
|
2731
|
+
/** Leading text label */
|
|
2732
|
+
label?: React$1.ReactNode;
|
|
2733
|
+
/** Force-hide the percentage text on the trailing end */
|
|
2734
|
+
hideValueText?: boolean;
|
|
2735
|
+
/** Override the bar colour (e.g. for `paused` state). Accepts a CSS value. */
|
|
2736
|
+
color?: string;
|
|
2737
|
+
/** Size of the bar @default "sm" */
|
|
2738
|
+
size?: 'xs' | 'sm' | 'md';
|
|
2739
|
+
}
|
|
2740
|
+
declare const JobCardProgress: React$1.ForwardRefExoticComponent<JobCardProgressProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2741
|
+
declare const JobCardMeta: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDListElement> & React$1.RefAttributes<HTMLDListElement>>;
|
|
2742
|
+
interface JobCardMetaItemProps {
|
|
2743
|
+
/** Lucide icon — usually Calendar, Clock, User, … */
|
|
2744
|
+
icon?: React$1.ComponentType<{
|
|
2745
|
+
className?: string;
|
|
2746
|
+
}>;
|
|
2747
|
+
/** Field label */
|
|
2748
|
+
label: React$1.ReactNode;
|
|
2749
|
+
/** Field value */
|
|
2750
|
+
value: React$1.ReactNode;
|
|
2751
|
+
/** Use `<time dateTime={...}>` for value (screen readers + copy behaviour) */
|
|
2752
|
+
dateTime?: string;
|
|
2753
|
+
className?: string;
|
|
2754
|
+
}
|
|
2755
|
+
declare const JobCardMetaItem: React$1.ForwardRefExoticComponent<JobCardMetaItemProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2756
|
+
interface JobCardStatsProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2757
|
+
/** Layout columns @default auto */
|
|
2758
|
+
columns?: 2 | 3 | 4 | 'auto';
|
|
2759
|
+
}
|
|
2760
|
+
declare const JobCardStats: React$1.ForwardRefExoticComponent<JobCardStatsProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2761
|
+
interface JobCardStatProps {
|
|
2762
|
+
label: React$1.ReactNode;
|
|
2763
|
+
/** Current value */
|
|
2764
|
+
value: number;
|
|
2765
|
+
/** Total — renders as "value / total" when provided */
|
|
2766
|
+
total?: number;
|
|
2767
|
+
/** Value formatting locale. Defaults to JobCard context. */
|
|
1655
2768
|
locale?: SupportedLocale;
|
|
1656
|
-
/**
|
|
1657
|
-
|
|
1658
|
-
/**
|
|
1659
|
-
|
|
2769
|
+
/** Semantic tone applied to the value */
|
|
2770
|
+
variant?: 'default' | 'positive' | 'warning' | 'destructive' | 'muted';
|
|
2771
|
+
/** Pre-formatted override — bypasses number formatting */
|
|
2772
|
+
formatted?: React$1.ReactNode;
|
|
2773
|
+
className?: string;
|
|
1660
2774
|
}
|
|
1661
|
-
declare const
|
|
1662
|
-
|
|
1663
|
-
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1664
|
-
declare const InstagramPost: React$1.ForwardRefExoticComponent<InstagramPostProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2775
|
+
declare const JobCardStat: React$1.ForwardRefExoticComponent<JobCardStatProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2776
|
+
declare const JobCardError: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1665
2777
|
|
|
1666
2778
|
declare function Kbd({ className, ...props }: React$1.ComponentProps<'kbd'>): react_jsx_runtime.JSX.Element;
|
|
1667
2779
|
declare namespace Kbd {
|
|
@@ -1852,6 +2964,100 @@ declare namespace NavigationMenuIndicator {
|
|
|
1852
2964
|
var displayName: string;
|
|
1853
2965
|
}
|
|
1854
2966
|
|
|
2967
|
+
type SocialPlatform = 'instagram' | 'twitter' | 'tiktok' | 'youtube' | 'linkedin' | 'telegram' | 'threads';
|
|
2968
|
+
interface SocialPlatformBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
2969
|
+
/** The social media platform to display */
|
|
2970
|
+
platform: SocialPlatform;
|
|
2971
|
+
/** Size of the badge */
|
|
2972
|
+
size?: 'xs' | 'sm' | 'md' | 'lg';
|
|
2973
|
+
/** Show the platform name label */
|
|
2974
|
+
showLabel?: boolean;
|
|
2975
|
+
/** Visual style of the badge */
|
|
2976
|
+
variant?: 'flat' | 'badge';
|
|
2977
|
+
}
|
|
2978
|
+
declare const socialPlatformBadgeVariants: (props?: ({
|
|
2979
|
+
size?: "xs" | "sm" | "md" | "lg" | null | undefined;
|
|
2980
|
+
variant?: "flat" | "badge" | null | undefined;
|
|
2981
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
2982
|
+
declare const SocialPlatformBadge: React$1.ForwardRefExoticComponent<SocialPlatformBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
2983
|
+
|
|
2984
|
+
type BotDetectionKey = 'real' | 'suspicious' | 'bot';
|
|
2985
|
+
interface BotDetectionData {
|
|
2986
|
+
/** Confirmed real / human accounts */
|
|
2987
|
+
real: number;
|
|
2988
|
+
/** Suspicious — insufficient signal, possibly bot */
|
|
2989
|
+
suspicious: number;
|
|
2990
|
+
/** Confirmed bot / automated */
|
|
2991
|
+
bot: number;
|
|
2992
|
+
}
|
|
2993
|
+
interface BotDetectionMeterProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2994
|
+
/** Counts — auto-normalised to percentages that sum to exactly 100 */
|
|
2995
|
+
data: BotDetectionData;
|
|
2996
|
+
/** Display mode @default "stacked" */
|
|
2997
|
+
variant?: 'stacked' | 'bars' | 'compact';
|
|
2998
|
+
/** Show numeric count labels */
|
|
2999
|
+
showCounts?: boolean;
|
|
3000
|
+
/** Show percentage labels @default true */
|
|
3001
|
+
showPercent?: boolean;
|
|
3002
|
+
/** Show the top "Real-account rate" summary line (stacked variant only) @default true */
|
|
3003
|
+
showSummary?: boolean;
|
|
3004
|
+
/** Size of the stacked bar or individual bars */
|
|
3005
|
+
size?: 'sm' | 'md' | 'lg';
|
|
3006
|
+
/** Locale for digits + default labels @default "fa" */
|
|
3007
|
+
locale?: SupportedLocale;
|
|
3008
|
+
}
|
|
3009
|
+
declare const BotDetectionMeter: React$1.ForwardRefExoticComponent<BotDetectionMeterProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3010
|
+
|
|
3011
|
+
/**
|
|
3012
|
+
* PageCard (government-flavor) — tracked-account tile for افکارسنجی pages
|
|
3013
|
+
* dashboards. Composes: avatar + handle + platform badge, status (healthy/
|
|
3014
|
+
* degrading/at-risk via StatusKey), follower trend sparkline, engagement
|
|
3015
|
+
* stats, content-type mix, bot-detection percentages.
|
|
3016
|
+
*
|
|
3017
|
+
* Distinct from `ProfileCard` which is influencer-flavored (focus on
|
|
3018
|
+
* engagement tier, follower count, avatar). PageCard is for **tracked
|
|
3019
|
+
* accounts** in monitoring — health and trust signals matter most.
|
|
3020
|
+
*/
|
|
3021
|
+
interface PageCardContentMix {
|
|
3022
|
+
/** Photo posts in window (count or %) */
|
|
3023
|
+
photo?: number;
|
|
3024
|
+
/** Video posts in window */
|
|
3025
|
+
video?: number;
|
|
3026
|
+
/** Carousel posts */
|
|
3027
|
+
carousel?: number;
|
|
3028
|
+
/** Story / reel count */
|
|
3029
|
+
story?: number;
|
|
3030
|
+
}
|
|
3031
|
+
interface PageCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3032
|
+
/** Account handle / display name (e.g., "@news_agency") */
|
|
3033
|
+
handle: React$1.ReactNode;
|
|
3034
|
+
/** Optional secondary subtitle (e.g., page category) */
|
|
3035
|
+
subtitle?: React$1.ReactNode;
|
|
3036
|
+
/** Avatar URL */
|
|
3037
|
+
avatarSrc?: string;
|
|
3038
|
+
/** Platform — drives the platform badge */
|
|
3039
|
+
platform?: SocialPlatform;
|
|
3040
|
+
/** Operational status (healthy/degrading/at-risk) — uses StatusKey */
|
|
3041
|
+
status?: StatusKey;
|
|
3042
|
+
/** Total followers (current snapshot) */
|
|
3043
|
+
followers?: number;
|
|
3044
|
+
/** Follower-trend sparkline values */
|
|
3045
|
+
followerTrend?: number[];
|
|
3046
|
+
/** Engagement rate (%) */
|
|
3047
|
+
engagementRate?: number;
|
|
3048
|
+
/** Posts per week (recent average) */
|
|
3049
|
+
postsPerWeek?: number;
|
|
3050
|
+
/** Content-type mix (counts or percents) */
|
|
3051
|
+
contentMix?: PageCardContentMix;
|
|
3052
|
+
/** Bot-detection breakdown (real / suspicious / bot) */
|
|
3053
|
+
botDetection?: BotDetectionData;
|
|
3054
|
+
/** Make the entire card clickable */
|
|
3055
|
+
interactive?: boolean;
|
|
3056
|
+
/** Locale @default 'fa' */
|
|
3057
|
+
locale?: SupportedLocale;
|
|
3058
|
+
}
|
|
3059
|
+
declare const PageCard: React$1.ForwardRefExoticComponent<PageCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3060
|
+
|
|
1855
3061
|
interface PageHeaderProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
1856
3062
|
/** Page title */
|
|
1857
3063
|
title: string;
|
|
@@ -1962,47 +3168,513 @@ declare const PopoverTrigger: React$1.ForwardRefExoticComponent<PopoverPrimitive
|
|
|
1962
3168
|
declare const PopoverAnchor: React$1.ForwardRefExoticComponent<PopoverPrimitive.PopoverAnchorProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1963
3169
|
declare const PopoverContent: React$1.ForwardRefExoticComponent<Omit<PopoverPrimitive.PopoverContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1964
3170
|
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
3171
|
+
/**
|
|
3172
|
+
* PartoHeatMap — brand-tinted heatmap with rounded cells, clean axis,
|
|
3173
|
+
* glassmorphic tooltip, and locale-aware formatting.
|
|
3174
|
+
* Built with Visx scales + raw SVG for full control.
|
|
3175
|
+
*/
|
|
3176
|
+
interface HeatMapDatum {
|
|
3177
|
+
x: string | number;
|
|
3178
|
+
y: number;
|
|
3179
|
+
}
|
|
3180
|
+
interface HeatMapRow {
|
|
3181
|
+
id: string;
|
|
3182
|
+
data: HeatMapDatum[];
|
|
3183
|
+
}
|
|
3184
|
+
interface PartoHeatMapProps {
|
|
3185
|
+
data: HeatMapRow[];
|
|
3186
|
+
locale?: 'fa' | 'en';
|
|
3187
|
+
className?: string;
|
|
3188
|
+
isLoading?: boolean;
|
|
3189
|
+
ariaLabel?: string;
|
|
3190
|
+
margin?: {
|
|
3191
|
+
top: number;
|
|
3192
|
+
right: number;
|
|
3193
|
+
bottom: number;
|
|
3194
|
+
left: number;
|
|
3195
|
+
};
|
|
3196
|
+
/** Custom color function: receives value and max → returns CSS color */
|
|
3197
|
+
colorScale?: (value: number, max: number) => string;
|
|
3198
|
+
/** Cell border radius */
|
|
3199
|
+
cellRadius?: number;
|
|
3200
|
+
/** Gap between cells */
|
|
3201
|
+
cellGap?: number;
|
|
3202
|
+
/** Custom tooltip content */
|
|
3203
|
+
renderTooltip?: (cell: {
|
|
3204
|
+
rowId: string;
|
|
3205
|
+
x: string | number;
|
|
3206
|
+
value: number;
|
|
3207
|
+
color: string;
|
|
3208
|
+
}) => React$1.ReactNode;
|
|
3209
|
+
/** X axis label */
|
|
3210
|
+
xAxisLabel?: string;
|
|
3211
|
+
/** Y axis label */
|
|
3212
|
+
yAxisLabel?: string;
|
|
3213
|
+
/** Filter which x-axis ticks to show */
|
|
3214
|
+
xTickFilter?: (value: string | number, index: number) => boolean;
|
|
3215
|
+
}
|
|
3216
|
+
declare const PartoHeatMap: React$1.ForwardRefExoticComponent<PartoHeatMapProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3217
|
+
|
|
3218
|
+
type PostingWeekStart = 'saturday' | 'sunday' | 'monday';
|
|
3219
|
+
interface PostingFrequencyCell {
|
|
3220
|
+
/** Day of week — 0-6. What "0" means depends on `weekStart`. */
|
|
3221
|
+
dayOfWeek: number;
|
|
3222
|
+
/** Hour of day — 0-23 in the display timezone. */
|
|
3223
|
+
hour: number;
|
|
3224
|
+
/** Metric value (typically post count, can also be comments/likes avg). */
|
|
3225
|
+
value: number;
|
|
3226
|
+
}
|
|
3227
|
+
interface PostingFrequencySummary {
|
|
3228
|
+
/** 0–100 composite consistency score (activeDaysRatio + regularity + gap-penalty). */
|
|
3229
|
+
consistencyScore?: number;
|
|
3230
|
+
/** Longest inactivity gap, expressed in **days**. */
|
|
3231
|
+
maxGapDays?: number;
|
|
3232
|
+
/** 0–100 % of days that contain ≥1 post in the analysis window. */
|
|
3233
|
+
activeDaysRatio?: number;
|
|
3234
|
+
/** Total posts in the window (optional, for context in the header). */
|
|
3235
|
+
totalPosts?: number;
|
|
3236
|
+
}
|
|
3237
|
+
/**
|
|
3238
|
+
* Normalize a sparse `PostingFrequencyCell[]` into a full 7×24 grid of
|
|
3239
|
+
* `HeatMapRow`s ordered by `weekStart`. Missing cells are filled with value=0.
|
|
3240
|
+
* Each row's `id` is the English weekday name, matching PartoHeatMap's
|
|
3241
|
+
* internal weekday mapping.
|
|
3242
|
+
*/
|
|
3243
|
+
declare function buildPostingFrequencyRows(data: PostingFrequencyCell[], weekStart?: PostingWeekStart): HeatMapRow[];
|
|
3244
|
+
interface PostingFrequencyHeatmapProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
3245
|
+
/** Per-cell activity. Sparse input is fine — missing cells render as 0. */
|
|
3246
|
+
data: PostingFrequencyCell[];
|
|
3247
|
+
/** Which day logically occupies row 0. @default "saturday" for fa/ar, "sunday" for en. */
|
|
3248
|
+
weekStart?: PostingWeekStart;
|
|
3249
|
+
/** Optional summary stats shown in the header row. */
|
|
3250
|
+
summary?: PostingFrequencySummary;
|
|
3251
|
+
/** Card title. */
|
|
3252
|
+
title?: React$1.ReactNode;
|
|
3253
|
+
/** Short description below title. */
|
|
3254
|
+
description?: React$1.ReactNode;
|
|
1986
3255
|
/**
|
|
1987
|
-
*
|
|
3256
|
+
* Metric label for the tooltip (e.g., "پست", "نظر", "لایک"). Default uses
|
|
3257
|
+
* the locale-specific "Posts" label.
|
|
1988
3258
|
*/
|
|
1989
|
-
|
|
3259
|
+
metricLabel?: React$1.ReactNode;
|
|
3260
|
+
/** Show the summary row @default true (when `summary` is provided) */
|
|
3261
|
+
showSummary?: boolean;
|
|
3262
|
+
/** Height of the heatmap chart in px @default 240 */
|
|
3263
|
+
chartHeight?: number;
|
|
3264
|
+
/** Loading state */
|
|
3265
|
+
isLoading?: boolean;
|
|
3266
|
+
/** Locale @default "fa" */
|
|
3267
|
+
locale?: SupportedLocale;
|
|
1990
3268
|
/**
|
|
1991
|
-
*
|
|
3269
|
+
* Custom PartoHeatMap props to pass through (e.g., colorScale override,
|
|
3270
|
+
* margin). Avoid setting `data` / `locale` here; use the outer props.
|
|
1992
3271
|
*/
|
|
3272
|
+
heatmapProps?: Omit<PartoHeatMapProps, 'data' | 'locale' | 'isLoading' | 'renderTooltip'>;
|
|
3273
|
+
}
|
|
3274
|
+
declare const PostingFrequencyHeatmap: React$1.ForwardRefExoticComponent<PostingFrequencyHeatmapProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3275
|
+
|
|
3276
|
+
/**
|
|
3277
|
+
* Platform sources supported by `<PostCard>`. Extends the existing `SocialPlatform`
|
|
3278
|
+
* for Phase 1; additional sources (`facebook`, `news`, `tv`, `radio`) land in Phase 2
|
|
3279
|
+
* together with the `SocialPlatformBadge` extension.
|
|
3280
|
+
*/
|
|
3281
|
+
type PostPlatform = SocialPlatform;
|
|
3282
|
+
type PostDensity = 'compact' | 'comfortable';
|
|
3283
|
+
type PostSentiment = 'positive' | 'negative' | 'neutral' | 'mixed';
|
|
3284
|
+
interface PostAuthor {
|
|
3285
|
+
name: string;
|
|
3286
|
+
handle?: string;
|
|
3287
|
+
avatarUrl?: string;
|
|
3288
|
+
verified?: boolean;
|
|
3289
|
+
/** Optional follower / subscriber count — used in PostDetailsModal sidebar. */
|
|
1993
3290
|
followers?: number;
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
/**
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
3291
|
+
}
|
|
3292
|
+
interface PostMetrics {
|
|
3293
|
+
views?: number;
|
|
3294
|
+
likes?: number;
|
|
3295
|
+
comments?: number;
|
|
3296
|
+
shares?: number;
|
|
3297
|
+
/** Estimated reach / potential audience. */
|
|
3298
|
+
reach?: number;
|
|
3299
|
+
/** Engagement rate as a 0..1 decimal (e.g. 0.034 = 3.4%). */
|
|
3300
|
+
engagementRate?: number;
|
|
3301
|
+
}
|
|
3302
|
+
interface PostTag {
|
|
3303
|
+
id: string;
|
|
3304
|
+
label: string;
|
|
3305
|
+
/** Optional CSS var (e.g. `--chart-1`) or hex color. Auto-assigned from label if omitted. */
|
|
3306
|
+
color?: string;
|
|
3307
|
+
}
|
|
3308
|
+
/**
|
|
3309
|
+
* Flags indicate which enrichments the product has attached to this post.
|
|
3310
|
+
* Consumers set these to show the matching chip in `<PostHeader>`.
|
|
3311
|
+
*/
|
|
3312
|
+
interface PostEnrichmentFlags {
|
|
3313
|
+
ocr?: boolean;
|
|
3314
|
+
transcript?: boolean;
|
|
3315
|
+
aiAnalysis?: boolean;
|
|
3316
|
+
commentCount?: number;
|
|
3317
|
+
}
|
|
3318
|
+
interface PostMediaItem {
|
|
3319
|
+
url: string;
|
|
3320
|
+
thumbnailUrl?: string;
|
|
3321
|
+
/** Natural aspect ratio (width / height). If omitted, defaults to 1. */
|
|
3322
|
+
aspectRatio?: number;
|
|
3323
|
+
alt?: string;
|
|
3324
|
+
type?: 'image' | 'video';
|
|
3325
|
+
/** Duration in seconds for video. */
|
|
3326
|
+
duration?: number;
|
|
3327
|
+
}
|
|
3328
|
+
type PostBodyData = {
|
|
3329
|
+
type: 'text';
|
|
3330
|
+
text: string;
|
|
3331
|
+
} | {
|
|
3332
|
+
type: 'media-single';
|
|
3333
|
+
media: PostMediaItem;
|
|
3334
|
+
caption?: string;
|
|
3335
|
+
} | {
|
|
3336
|
+
type: 'media-carousel';
|
|
3337
|
+
items: PostMediaItem[];
|
|
3338
|
+
caption?: string;
|
|
3339
|
+
} | {
|
|
3340
|
+
type: 'video';
|
|
3341
|
+
media: PostMediaItem;
|
|
3342
|
+
caption?: string;
|
|
3343
|
+
} | {
|
|
3344
|
+
type: 'missing-media';
|
|
3345
|
+
caption?: string;
|
|
3346
|
+
reason?: string;
|
|
3347
|
+
};
|
|
3348
|
+
interface PostData {
|
|
3349
|
+
id: string;
|
|
3350
|
+
source: PostPlatform;
|
|
3351
|
+
author: PostAuthor;
|
|
3352
|
+
/** Post creation time. Accepts Date, ISO string, or unix ms. */
|
|
3353
|
+
timestamp: Date | string | number;
|
|
3354
|
+
body: PostBodyData;
|
|
3355
|
+
metrics?: PostMetrics;
|
|
3356
|
+
sentiment?: PostSentiment;
|
|
3357
|
+
enrichments?: PostEnrichmentFlags;
|
|
3358
|
+
/** User-defined category tags (topic, campaign, issue type). */
|
|
3359
|
+
tags?: PostTag[];
|
|
3360
|
+
/** Authority / influence score 0..100 — used to flag high-impact mentions. */
|
|
3361
|
+
authorityScore?: number;
|
|
3362
|
+
/** ISO language code detected for the post. */
|
|
3363
|
+
language?: string;
|
|
3364
|
+
/** URL to the post at the source platform (used by default "view at source" action). */
|
|
3365
|
+
sourceUrl?: string;
|
|
3366
|
+
}
|
|
3367
|
+
interface PostAction {
|
|
3368
|
+
id: string;
|
|
3369
|
+
label: string;
|
|
3370
|
+
icon: LucideIcon;
|
|
3371
|
+
variant?: 'default' | 'danger';
|
|
3372
|
+
onClick: (post: PostData) => void;
|
|
3373
|
+
disabled?: boolean;
|
|
3374
|
+
hidden?: boolean;
|
|
3375
|
+
}
|
|
3376
|
+
interface PostCommentAuthor {
|
|
3377
|
+
name: string;
|
|
3378
|
+
handle?: string;
|
|
3379
|
+
avatarUrl?: string;
|
|
3380
|
+
verified?: boolean;
|
|
3381
|
+
}
|
|
3382
|
+
interface PostComment {
|
|
3383
|
+
id: string;
|
|
3384
|
+
author: PostCommentAuthor;
|
|
3385
|
+
text: string;
|
|
3386
|
+
timestamp: Date | string | number;
|
|
3387
|
+
sentiment?: PostSentiment;
|
|
3388
|
+
likes?: number;
|
|
3389
|
+
replies?: PostComment[];
|
|
3390
|
+
/** Pinned by post author (Instagram, YouTube). */
|
|
3391
|
+
pinned?: boolean;
|
|
3392
|
+
/** Indicates this is a reply from the original post author. */
|
|
3393
|
+
authorReply?: boolean;
|
|
3394
|
+
}
|
|
3395
|
+
type PostEmotion = 'anger' | 'anticipation' | 'joy' | 'trust' | 'fear' | 'surprise' | 'sadness' | 'disgust' | 'neutral';
|
|
3396
|
+
type PostIntent = 'complaint' | 'praise' | 'question' | 'announcement' | 'comparison' | 'opinion' | 'info';
|
|
3397
|
+
interface PostAiEntity {
|
|
3398
|
+
text: string;
|
|
3399
|
+
type: 'person' | 'brand' | 'place' | 'product' | 'event' | 'organization';
|
|
3400
|
+
}
|
|
3401
|
+
interface PostAiAnalysis {
|
|
3402
|
+
/** Auto-generated summary of the post. */
|
|
3403
|
+
summary?: string;
|
|
3404
|
+
/** Key topics mentioned in the post. */
|
|
3405
|
+
topics?: string[];
|
|
3406
|
+
/** Named entities detected. */
|
|
3407
|
+
entities?: PostAiEntity[];
|
|
3408
|
+
/** Primary intent classification. */
|
|
3409
|
+
intent?: PostIntent;
|
|
3410
|
+
/** 9-class emotion distribution (raw counts or normalized). */
|
|
3411
|
+
emotions?: Partial<Record<PostEmotion, number>>;
|
|
3412
|
+
/** Flagged risks / sensitive content categories. */
|
|
3413
|
+
risks?: string[];
|
|
3414
|
+
/** Influence tier estimate for the author. */
|
|
3415
|
+
influenceTier?: 'nano' | 'micro' | 'macro' | 'mega';
|
|
3416
|
+
/** Model confidence 0..1 for overall analysis. */
|
|
3417
|
+
confidence?: number;
|
|
3418
|
+
/** Analysis generation timestamp. */
|
|
3419
|
+
generatedAt?: Date | string | number;
|
|
3420
|
+
}
|
|
3421
|
+
/** Platform-specific metadata, discriminated by `platform` (matches `PostData.source`). */
|
|
3422
|
+
type PlatformMetadata = {
|
|
3423
|
+
platform: 'instagram';
|
|
3424
|
+
postType?: 'feed' | 'reel' | 'story' | 'carousel' | 'igtv';
|
|
3425
|
+
location?: string;
|
|
3426
|
+
music?: {
|
|
3427
|
+
title: string;
|
|
3428
|
+
artist?: string;
|
|
3429
|
+
};
|
|
3430
|
+
saveCount?: number;
|
|
3431
|
+
collaborators?: string[];
|
|
3432
|
+
/** Hashtags used in the post. */
|
|
3433
|
+
hashtags?: string[];
|
|
3434
|
+
} | {
|
|
3435
|
+
platform: 'twitter';
|
|
3436
|
+
tweetType?: 'original' | 'retweet' | 'quote' | 'reply';
|
|
3437
|
+
quotedTweetUrl?: string;
|
|
3438
|
+
inReplyTo?: string;
|
|
3439
|
+
retweetCount?: number;
|
|
3440
|
+
quoteCount?: number;
|
|
3441
|
+
bookmarkCount?: number;
|
|
3442
|
+
isThread?: boolean;
|
|
3443
|
+
/** Count of additional posts in the thread. */
|
|
3444
|
+
threadLength?: number;
|
|
3445
|
+
} | {
|
|
3446
|
+
platform: 'youtube';
|
|
3447
|
+
videoType?: 'video' | 'short' | 'live' | 'premiere';
|
|
3448
|
+
channelSubscribers?: number;
|
|
3449
|
+
dislikes?: number;
|
|
3450
|
+
category?: string;
|
|
3451
|
+
tags?: string[];
|
|
3452
|
+
} | {
|
|
3453
|
+
platform: 'telegram';
|
|
3454
|
+
channelName?: string;
|
|
3455
|
+
channelSubscribers?: number;
|
|
3456
|
+
forwardCount?: number;
|
|
3457
|
+
isChannel?: boolean;
|
|
3458
|
+
/** Map of emoji → count, e.g. { '👍': 42, '❤️': 12 }. */
|
|
3459
|
+
reactionCounts?: Record<string, number>;
|
|
3460
|
+
} | {
|
|
3461
|
+
platform: 'tiktok';
|
|
3462
|
+
videoType?: 'video' | 'duet' | 'stitch' | 'live';
|
|
3463
|
+
music?: {
|
|
3464
|
+
title: string;
|
|
3465
|
+
artist?: string;
|
|
3466
|
+
};
|
|
3467
|
+
duetWith?: string;
|
|
3468
|
+
saveCount?: number;
|
|
3469
|
+
effects?: string[];
|
|
3470
|
+
} | {
|
|
3471
|
+
platform: 'linkedin';
|
|
3472
|
+
postType?: 'post' | 'article' | 'poll' | 'document';
|
|
3473
|
+
reactions?: {
|
|
3474
|
+
like?: number;
|
|
3475
|
+
celebrate?: number;
|
|
3476
|
+
support?: number;
|
|
3477
|
+
love?: number;
|
|
3478
|
+
insightful?: number;
|
|
3479
|
+
funny?: number;
|
|
3480
|
+
};
|
|
3481
|
+
repostCount?: number;
|
|
3482
|
+
industry?: string;
|
|
3483
|
+
} | {
|
|
3484
|
+
platform: 'threads';
|
|
3485
|
+
replyControls?: 'anyone' | 'followed' | 'mentioned';
|
|
3486
|
+
repostCount?: number;
|
|
3487
|
+
quoteCount?: number;
|
|
3488
|
+
};
|
|
3489
|
+
/** Extended post details — optionally attached to PostData when fetching full view. */
|
|
3490
|
+
interface PostDetails {
|
|
3491
|
+
comments?: PostComment[];
|
|
3492
|
+
aiAnalysis?: PostAiAnalysis;
|
|
3493
|
+
/** Text extracted from images via OCR. */
|
|
3494
|
+
ocrText?: string;
|
|
3495
|
+
/** Transcript for audio / video content. */
|
|
3496
|
+
transcript?: string;
|
|
3497
|
+
/** Platform-specific metadata block. */
|
|
3498
|
+
platformMeta?: PlatformMetadata;
|
|
3499
|
+
}
|
|
3500
|
+
|
|
3501
|
+
declare const postCardVariants: (props?: ({
|
|
3502
|
+
density?: "compact" | "comfortable" | null | undefined;
|
|
3503
|
+
selected?: boolean | null | undefined;
|
|
3504
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
3505
|
+
interface PostCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'onSelect'>, VariantProps<typeof postCardVariants> {
|
|
3506
|
+
post: PostData;
|
|
3507
|
+
density?: PostDensity;
|
|
3508
|
+
selected?: boolean;
|
|
3509
|
+
read?: boolean;
|
|
3510
|
+
actions?: PostAction[];
|
|
3511
|
+
onOpen?: (post: PostData) => void;
|
|
3512
|
+
onSelect?: (post: PostData, selected: boolean) => void;
|
|
3513
|
+
selectable?: boolean;
|
|
3514
|
+
/** Fired when user clicks the details action (Maximize2 icon). Wires up the default details action. */
|
|
3515
|
+
onOpenDetails?: (post: PostData) => void;
|
|
3516
|
+
}
|
|
3517
|
+
declare function defaultActions(handlers?: {
|
|
3518
|
+
onOpenDetails?: (post: PostData) => void;
|
|
3519
|
+
}): PostAction[];
|
|
3520
|
+
declare const PostCard: React$1.ForwardRefExoticComponent<PostCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3521
|
+
|
|
3522
|
+
declare const postHeaderVariants: (props?: ({
|
|
3523
|
+
density?: "compact" | "comfortable" | null | undefined;
|
|
3524
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
3525
|
+
interface PostHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'children'>, VariantProps<typeof postHeaderVariants> {
|
|
3526
|
+
author: PostAuthor;
|
|
3527
|
+
platform: PostPlatform;
|
|
3528
|
+
timestamp: Date | string | number;
|
|
3529
|
+
sentiment?: PostSentiment;
|
|
3530
|
+
enrichments?: PostEnrichmentFlags;
|
|
3531
|
+
density?: PostDensity;
|
|
3532
|
+
/** Override avatar size. */
|
|
3533
|
+
avatarClassName?: string;
|
|
3534
|
+
}
|
|
3535
|
+
declare const PostHeader: React$1.ForwardRefExoticComponent<PostHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3536
|
+
|
|
3537
|
+
/**
|
|
3538
|
+
* Aspect-ratio helpers for post media.
|
|
3539
|
+
*
|
|
3540
|
+
* Platforms deliver media in many ratios (1:1, 4:5, 9:16, 16:9, …). The post
|
|
3541
|
+
* component system normalizes aspect ratios per display context so a feed of
|
|
3542
|
+
* mixed content looks consistent without cropping away information.
|
|
3543
|
+
*
|
|
3544
|
+
* Rules (spec §Aspect-Ratio Handling):
|
|
3545
|
+
* - `compact` → always 1:1 thumbnail (center-crop via object-cover).
|
|
3546
|
+
* - `comfortable` → container clamps aspect to [4:5, 16:9]; media inside is
|
|
3547
|
+
* letterboxed via `object-contain` so nothing is cropped.
|
|
3548
|
+
* Callers typically render a blurred backdrop of the same
|
|
3549
|
+
* media behind the letterboxed image to fill empty space.
|
|
3550
|
+
* - `detail` → preserve natural ratio; cap max-h-[70vh] for tall portraits.
|
|
3551
|
+
*/
|
|
3552
|
+
type AspectContext = 'compact' | 'comfortable' | 'detail';
|
|
3553
|
+
|
|
3554
|
+
interface PostBodyProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3555
|
+
body: PostBodyData;
|
|
3556
|
+
/** Display context — drives aspect handling + text clamping. */
|
|
3557
|
+
context: AspectContext;
|
|
3558
|
+
/** Compact mode shows only a thumbnail; body text is rendered by parent. */
|
|
3559
|
+
thumbnailOnly?: boolean;
|
|
3560
|
+
}
|
|
3561
|
+
declare const PostBody: React$1.ForwardRefExoticComponent<PostBodyProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3562
|
+
|
|
3563
|
+
interface PostActionsProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3564
|
+
post: PostData;
|
|
3565
|
+
actions: PostAction[];
|
|
3566
|
+
/** Number of primary (inline) actions to render. Remaining flow into the overflow menu. */
|
|
3567
|
+
primaryCount?: number;
|
|
3568
|
+
/** Compact layout hides inline labels, shows icon-only buttons. */
|
|
3569
|
+
compact?: boolean;
|
|
3570
|
+
}
|
|
3571
|
+
declare const PostActions: React$1.ForwardRefExoticComponent<PostActionsProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3572
|
+
|
|
3573
|
+
interface PostMetadataProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3574
|
+
metrics?: PostMetrics;
|
|
3575
|
+
sentiment?: PostSentiment;
|
|
3576
|
+
density?: PostDensity;
|
|
3577
|
+
/** Hide the sentiment badge (dot still rendered in header in compact mode). */
|
|
3578
|
+
hideSentiment?: boolean;
|
|
3579
|
+
}
|
|
3580
|
+
declare const PostMetadata: React$1.ForwardRefExoticComponent<PostMetadataProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3581
|
+
|
|
3582
|
+
interface PostListProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'onSelect'> {
|
|
3583
|
+
posts: PostData[];
|
|
3584
|
+
/** Controlled density. If omitted, the list manages its own state (persisted to localStorage). */
|
|
3585
|
+
density?: PostDensity;
|
|
3586
|
+
onDensityChange?: (density: PostDensity) => void;
|
|
3587
|
+
/** ID of the currently open/selected post (for URL deep-linking). */
|
|
3588
|
+
activeId?: string;
|
|
3589
|
+
/** IDs of posts that have been visited (visual "read" state). */
|
|
3590
|
+
readIds?: ReadonlyArray<string> | ReadonlySet<string>;
|
|
3591
|
+
/** IDs of selected posts for bulk actions. */
|
|
3592
|
+
selectedIds?: ReadonlyArray<string> | ReadonlySet<string>;
|
|
3593
|
+
onSelectedIdsChange?: (ids: string[]) => void;
|
|
3594
|
+
onOpen?: (post: PostData) => void;
|
|
3595
|
+
/** Fired when the user triggers the default "view details" action on any card. */
|
|
3596
|
+
onOpenDetails?: (post: PostData) => void;
|
|
3597
|
+
/** Per-post action set. If omitted, each card uses its defaults. */
|
|
3598
|
+
actions?: PostAction[];
|
|
3599
|
+
/** Render the density toggle in the toolbar. Defaults to true. */
|
|
3600
|
+
showToolbar?: boolean;
|
|
3601
|
+
/** Custom toolbar content rendered next to the density toggle. */
|
|
3602
|
+
toolbarExtra?: React$1.ReactNode;
|
|
3603
|
+
}
|
|
3604
|
+
declare const PostList: React$1.ForwardRefExoticComponent<PostListProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3605
|
+
|
|
3606
|
+
type PostDetailsTab = 'post' | 'comments' | 'analysis' | 'transcript';
|
|
3607
|
+
interface PostDetailsModalProps {
|
|
3608
|
+
/** Controls modal open state. */
|
|
3609
|
+
open: boolean;
|
|
3610
|
+
onOpenChange: (open: boolean) => void;
|
|
3611
|
+
/** The post being viewed. If null/undefined, the modal renders nothing. */
|
|
3612
|
+
post?: PostData | null;
|
|
3613
|
+
/** Extended details — comments, AI analysis, OCR, platform metadata. */
|
|
3614
|
+
details?: PostDetails;
|
|
3615
|
+
/** Callback when user opens the source. Falls back to `post.sourceUrl`. */
|
|
3616
|
+
onOpenSource?: (post: PostData) => void;
|
|
3617
|
+
/** Loading state — true while fetching extended details. */
|
|
3618
|
+
isLoading?: boolean;
|
|
3619
|
+
/** Error state — when set, renders an error panel with optional retry. */
|
|
3620
|
+
error?: string | Error | null;
|
|
3621
|
+
/** Fires when user clicks "retry" on the error panel. */
|
|
3622
|
+
onRetry?: () => void;
|
|
3623
|
+
/** Which tab to open first @default "post" */
|
|
3624
|
+
defaultTab?: PostDetailsTab;
|
|
3625
|
+
/** Dialog size. @default "lg" (~1024px) */
|
|
3626
|
+
size?: 'md' | 'lg' | 'xl';
|
|
3627
|
+
/** Show the bookmark toggle. When `onBookmark` is set, the button appears. */
|
|
3628
|
+
bookmarked?: boolean;
|
|
3629
|
+
onBookmark?: (post: PostData, next: boolean) => void;
|
|
3630
|
+
/** Override default clipboard writer. */
|
|
3631
|
+
onCopyLink?: (post: PostData, url: string) => void;
|
|
3632
|
+
/** Extra action slot (rendered at logical-end of the top action bar — e.g. a dropdown/"more" menu). */
|
|
3633
|
+
headerActions?: React$1.ReactNode;
|
|
3634
|
+
}
|
|
3635
|
+
declare const PostDetailsModal: React$1.FC<PostDetailsModalProps>;
|
|
3636
|
+
|
|
3637
|
+
declare const profileCardVariants: (props?: ({
|
|
3638
|
+
variant?: "default" | "transparent" | "dark" | null | undefined;
|
|
3639
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
3640
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
3641
|
+
interface ProfileCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3642
|
+
/**
|
|
3643
|
+
* نام کامل کاربر
|
|
3644
|
+
*/
|
|
3645
|
+
name: string;
|
|
3646
|
+
/**
|
|
3647
|
+
* نام کاربری (username)
|
|
3648
|
+
*/
|
|
3649
|
+
username: string;
|
|
3650
|
+
/**
|
|
3651
|
+
* آدرس تصویر پروفایل
|
|
3652
|
+
*/
|
|
3653
|
+
avatarSrc?: string;
|
|
3654
|
+
/**
|
|
3655
|
+
* متن جایگزین برای تصویر
|
|
3656
|
+
*/
|
|
3657
|
+
avatarAlt?: string;
|
|
3658
|
+
/**
|
|
3659
|
+
* حروف اولیه برای fallback (اختیاری)
|
|
3660
|
+
*/
|
|
3661
|
+
initials?: string;
|
|
3662
|
+
/**
|
|
3663
|
+
* تعداد فالوورها
|
|
3664
|
+
*/
|
|
3665
|
+
followers?: number;
|
|
3666
|
+
/**
|
|
3667
|
+
* آیکون فالوور
|
|
3668
|
+
*/
|
|
3669
|
+
followersIcon?: React$1.ReactNode;
|
|
3670
|
+
/**
|
|
3671
|
+
* تابع کلیک روی کارت
|
|
3672
|
+
*/
|
|
3673
|
+
onCardClick?: () => void;
|
|
3674
|
+
/**
|
|
3675
|
+
* استایل حاشیه آواتار
|
|
3676
|
+
*/
|
|
3677
|
+
avatarBorderVariant?: 'gold' | 'primary' | 'none';
|
|
2006
3678
|
/**
|
|
2007
3679
|
* اندازه کامپوننت
|
|
2008
3680
|
*/
|
|
@@ -2111,6 +3783,71 @@ interface EngagementRateProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
2111
3783
|
}
|
|
2112
3784
|
declare const EngagementRate: React$1.ForwardRefExoticComponent<EngagementRateProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2113
3785
|
|
|
3786
|
+
interface BenchmarkTier {
|
|
3787
|
+
/** Optional label shown below the segment (e.g., "عالی"). */
|
|
3788
|
+
label?: React$1.ReactNode;
|
|
3789
|
+
/** Inclusive upper bound of this tier. Use Infinity for the last tier. */
|
|
3790
|
+
max: number;
|
|
3791
|
+
/** CSS color — accepts any CSS value, including `hsl(var(--token))`. */
|
|
3792
|
+
color: string;
|
|
3793
|
+
}
|
|
3794
|
+
interface BenchmarkMarker {
|
|
3795
|
+
/** Position on the scale. Clamped to [min, max]. */
|
|
3796
|
+
value: number;
|
|
3797
|
+
/** Optional label shown above the marker (e.g., "میانگین صنعت"). */
|
|
3798
|
+
label?: React$1.ReactNode;
|
|
3799
|
+
/** Override the marker colour @default foreground */
|
|
3800
|
+
color?: string;
|
|
3801
|
+
}
|
|
3802
|
+
/**
|
|
3803
|
+
* Default 4-tier benchmark for engagement rate (percent). Thresholds picked
|
|
3804
|
+
* for general social media (Instagram/Twitter/YouTube) — override with
|
|
3805
|
+
* `getEngagementRateBenchmarkTiers` for follower-tiered thresholds.
|
|
3806
|
+
*
|
|
3807
|
+
* - 0–1% → poor
|
|
3808
|
+
* - 1–2.5% → moderate
|
|
3809
|
+
* - 2.5–5% → good
|
|
3810
|
+
* - >5% → excellent
|
|
3811
|
+
*/
|
|
3812
|
+
declare function getEngagementRateBenchmarkTiers(locale?: SupportedLocale): BenchmarkTier[];
|
|
3813
|
+
/**
|
|
3814
|
+
* Default 4-tier for a 0-100 score scale (e.g., Page Evaluation overall score).
|
|
3815
|
+
* Thresholds: <40 poor, 40-60 moderate, 60-80 good, >=80 excellent.
|
|
3816
|
+
*/
|
|
3817
|
+
declare function getScoreBenchmarkTiers(locale?: SupportedLocale): BenchmarkTier[];
|
|
3818
|
+
/** Find which tier index contains value `v`. */
|
|
3819
|
+
declare function findTierIndex(value: number, tiers: BenchmarkTier[]): number;
|
|
3820
|
+
interface EngagementRateBenchmarkProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3821
|
+
/** The value to mark on the scale (typically engagement rate in %). */
|
|
3822
|
+
value: number;
|
|
3823
|
+
/** Scale start @default 0 */
|
|
3824
|
+
min?: number;
|
|
3825
|
+
/** Scale end @default 10 (engagement rate %) */
|
|
3826
|
+
max?: number;
|
|
3827
|
+
/** Tier segments. Must be ordered by ascending `max`. @default getEngagementRateBenchmarkTiers(locale) */
|
|
3828
|
+
tiers?: BenchmarkTier[];
|
|
3829
|
+
/** Optional comparison markers (industry average, target, …) */
|
|
3830
|
+
benchmarks?: BenchmarkMarker[];
|
|
3831
|
+
/**
|
|
3832
|
+
* Label for the primary value marker. If omitted, renders the value with
|
|
3833
|
+
* localized digits + "٪" (fa/ar) or "%" (en).
|
|
3834
|
+
*/
|
|
3835
|
+
valueLabel?: React$1.ReactNode;
|
|
3836
|
+
/** Show the numeric min/max under the bar @default true */
|
|
3837
|
+
showScale?: boolean;
|
|
3838
|
+
/** Show tier labels below each segment @default false */
|
|
3839
|
+
showTierLabels?: boolean;
|
|
3840
|
+
/** Bar height @default "md" */
|
|
3841
|
+
size?: 'sm' | 'md' | 'lg';
|
|
3842
|
+
/** Hide the primary value marker (e.g., when rendering multiple benchmarks only) */
|
|
3843
|
+
hideValueMarker?: boolean;
|
|
3844
|
+
/** Locale for digit + default label formatting @default "fa" */
|
|
3845
|
+
locale?: SupportedLocale;
|
|
3846
|
+
/** Number of decimals for scale labels @default 0 or 1 depending on max */
|
|
3847
|
+
scaleDecimals?: number;
|
|
3848
|
+
}
|
|
3849
|
+
declare const EngagementRateBenchmark: React$1.ForwardRefExoticComponent<EngagementRateBenchmarkProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3850
|
+
|
|
2114
3851
|
interface EngagementRateBarProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2115
3852
|
/**
|
|
2116
3853
|
* نرخ تعامل فعلی (به صورت عدد اعشاری، مثلاً 0.05710 برای 5.710%)
|
|
@@ -2147,7 +3884,7 @@ declare const progressVariants: (props?: ({
|
|
|
2147
3884
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
2148
3885
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
2149
3886
|
declare const progressIndicatorVariants: (props?: ({
|
|
2150
|
-
variant?: "
|
|
3887
|
+
variant?: "warning" | "success" | "destructive" | "primary" | "secondary" | null | undefined;
|
|
2151
3888
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
2152
3889
|
interface ProgressProps extends React$1.ComponentProps<typeof ProgressPrimitive.Root>, VariantProps<typeof progressVariants>, VariantProps<typeof progressIndicatorVariants> {
|
|
2153
3890
|
label?: string;
|
|
@@ -2155,9 +3892,82 @@ interface ProgressProps extends React$1.ComponentProps<typeof ProgressPrimitive.
|
|
|
2155
3892
|
}
|
|
2156
3893
|
declare const Progress: React$1.ForwardRefExoticComponent<Omit<ProgressProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2157
3894
|
|
|
3895
|
+
interface QuotaThresholds {
|
|
3896
|
+
/** Ratio (0..1) at which bar turns amber. @default 0.7 */
|
|
3897
|
+
amber: number;
|
|
3898
|
+
/** Ratio (0..1) at which bar turns orange. @default 0.9 */
|
|
3899
|
+
orange: number;
|
|
3900
|
+
/** Ratio (0..1) at which bar turns destructive. @default 1 */
|
|
3901
|
+
red: number;
|
|
3902
|
+
}
|
|
3903
|
+
declare const DEFAULT_THRESHOLDS: QuotaThresholds;
|
|
3904
|
+
type QuotaLevel = 'ok' | 'amber' | 'orange' | 'red';
|
|
3905
|
+
declare function resolveLevel(ratio: number, thresholds: QuotaThresholds): QuotaLevel;
|
|
3906
|
+
interface QuotaProgressBarProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3907
|
+
/** Units consumed so far (clamped to >= 0). */
|
|
3908
|
+
used: number;
|
|
3909
|
+
/** Total units allowed. Must be > 0. */
|
|
3910
|
+
limit: number;
|
|
3911
|
+
/** Optional label shown before the bar (e.g., "لایک روزانه") */
|
|
3912
|
+
label?: React$1.ReactNode;
|
|
3913
|
+
/**
|
|
3914
|
+
* When set, renders a colour-coded dot + default label ("پسندیدن"/"Like"/…).
|
|
3915
|
+
* Convenience for quota-by-action-type display; skip for generic quotas.
|
|
3916
|
+
*/
|
|
3917
|
+
actionType?: ActionTypeKey;
|
|
3918
|
+
/** Show `used / limit` text on trailing end @default true */
|
|
3919
|
+
showCount?: boolean;
|
|
3920
|
+
/** Show percentage next to count @default false */
|
|
3921
|
+
showPercent?: boolean;
|
|
3922
|
+
/** Show ⚠ icon when the bar is at `orange` or `red` level @default true */
|
|
3923
|
+
showWarningIcon?: boolean;
|
|
3924
|
+
/** Bar height @default "sm" */
|
|
3925
|
+
size?: 'xs' | 'sm' | 'md' | 'lg';
|
|
3926
|
+
/**
|
|
3927
|
+
* Override colour thresholds. Ratios are `used / limit`. Defaults:
|
|
3928
|
+
* - amber: 0.7, orange: 0.9, red: 1.
|
|
3929
|
+
*/
|
|
3930
|
+
thresholds?: Partial<QuotaThresholds>;
|
|
3931
|
+
/** Locale for digit + default label formatting @default "fa" */
|
|
3932
|
+
locale?: SupportedLocale;
|
|
3933
|
+
/**
|
|
3934
|
+
* Allow the bar to visually extend past 100% when quota is over-consumed.
|
|
3935
|
+
* When `true`, the fill stays at 100% of the track but a repeating stripe
|
|
3936
|
+
* pattern + red glow signals overflow. @default false (clamp to 100%)
|
|
3937
|
+
*/
|
|
3938
|
+
showOverflow?: boolean;
|
|
3939
|
+
}
|
|
3940
|
+
declare const QuotaProgressBar: React$1.ForwardRefExoticComponent<QuotaProgressBarProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3941
|
+
|
|
2158
3942
|
declare const RadioGroup: React$1.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2159
3943
|
declare const RadioGroupItem: React$1.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupItemProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
2160
3944
|
|
|
3945
|
+
interface RateLimitBannerProps extends Omit<BannerProps, 'variant' | 'icon' | 'action' | 'children'> {
|
|
3946
|
+
/** When the cooldown ends — Date, ISO string, or epoch ms */
|
|
3947
|
+
resumeAt: Date | string | number;
|
|
3948
|
+
/** Which action is rate-limited — renders in the title (e.g., «پسندیدن متوقف شده») */
|
|
3949
|
+
actionType?: ActionTypeKey;
|
|
3950
|
+
/** Short explanation (1-2 sentences). Falls back to a locale-specific generic. */
|
|
3951
|
+
reason?: React$1.ReactNode;
|
|
3952
|
+
/**
|
|
3953
|
+
* Whether to re-render every second so the countdown ticks live.
|
|
3954
|
+
* @default true
|
|
3955
|
+
*/
|
|
3956
|
+
live?: boolean;
|
|
3957
|
+
/** Visual tone @default "destructive" */
|
|
3958
|
+
variant?: 'destructive' | 'warning';
|
|
3959
|
+
/**
|
|
3960
|
+
* Callback to retry the operation now (ignores cooldown). Rendered as an
|
|
3961
|
+
* action button when provided.
|
|
3962
|
+
*/
|
|
3963
|
+
onRetryNow?: () => void;
|
|
3964
|
+
/** Override label for the retry button */
|
|
3965
|
+
retryLabel?: React$1.ReactNode;
|
|
3966
|
+
/** Locale for default strings + countdown @default "fa" */
|
|
3967
|
+
locale?: SupportedLocale;
|
|
3968
|
+
}
|
|
3969
|
+
declare const RateLimitBanner: React$1.ForwardRefExoticComponent<RateLimitBannerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3970
|
+
|
|
2161
3971
|
declare const RadioCards: React$1.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
2162
3972
|
columns?: number;
|
|
2163
3973
|
dir?: "rtl" | "ltr";
|
|
@@ -2269,12 +4079,23 @@ type SidebarContextProps = {
|
|
|
2269
4079
|
setOpenMobile: (open: boolean) => void;
|
|
2270
4080
|
isMobile: boolean;
|
|
2271
4081
|
toggleSidebar: () => void;
|
|
4082
|
+
/**
|
|
4083
|
+
* When true, the sidebar is positioned absolutely within its parent wrapper
|
|
4084
|
+
* instead of fixed to the viewport. Use inside bounded previews, cards,
|
|
4085
|
+
* or anywhere the sidebar should not escape its container.
|
|
4086
|
+
*/
|
|
4087
|
+
contained: boolean;
|
|
2272
4088
|
};
|
|
2273
4089
|
declare function useSidebar(): SidebarContextProps;
|
|
2274
|
-
declare function SidebarProvider({ defaultOpen, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }: React$1.ComponentProps<'div'> & {
|
|
4090
|
+
declare function SidebarProvider({ defaultOpen, open: openProp, onOpenChange: setOpenProp, contained, className, style, children, ...props }: React$1.ComponentProps<'div'> & {
|
|
2275
4091
|
defaultOpen?: boolean;
|
|
2276
4092
|
open?: boolean;
|
|
2277
4093
|
onOpenChange?: (open: boolean) => void;
|
|
4094
|
+
/**
|
|
4095
|
+
* When true, the sidebar is positioned absolutely within this provider
|
|
4096
|
+
* instead of fixed to the viewport. Use inside bounded previews or cards.
|
|
4097
|
+
*/
|
|
4098
|
+
contained?: boolean;
|
|
2278
4099
|
}): react_jsx_runtime.JSX.Element;
|
|
2279
4100
|
declare function Sidebar({ side, variant, collapsible, className, children, ...props }: React$1.ComponentProps<'div'> & {
|
|
2280
4101
|
side?: 'left' | 'right';
|
|
@@ -2410,6 +4231,85 @@ declare function TableSkeleton({ rows, className }: TableSkeletonProps): react_j
|
|
|
2410
4231
|
declare namespace TableSkeleton {
|
|
2411
4232
|
var displayName: string;
|
|
2412
4233
|
}
|
|
4234
|
+
interface TableRowSkeletonProps {
|
|
4235
|
+
/** Number of cells in the row */
|
|
4236
|
+
cells?: number;
|
|
4237
|
+
className?: string;
|
|
4238
|
+
}
|
|
4239
|
+
declare function TableRowSkeleton({ cells, className }: TableRowSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
4240
|
+
declare namespace TableRowSkeleton {
|
|
4241
|
+
var displayName: string;
|
|
4242
|
+
}
|
|
4243
|
+
interface CardSkeletonProps {
|
|
4244
|
+
/** Show a leading image/thumbnail block @default false */
|
|
4245
|
+
withImage?: boolean;
|
|
4246
|
+
/** Aspect ratio of the image (when withImage) @default 'video' */
|
|
4247
|
+
imageAspect?: 'video' | 'square' | 'wide';
|
|
4248
|
+
/** Number of body lines @default 2 */
|
|
4249
|
+
bodyLines?: number;
|
|
4250
|
+
/** Show a footer row (button-shaped placeholder) @default false */
|
|
4251
|
+
withFooter?: boolean;
|
|
4252
|
+
className?: string;
|
|
4253
|
+
}
|
|
4254
|
+
declare function CardSkeleton({ withImage, imageAspect, bodyLines, withFooter, className, }: CardSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
4255
|
+
declare namespace CardSkeleton {
|
|
4256
|
+
var displayName: string;
|
|
4257
|
+
}
|
|
4258
|
+
interface AvatarTextSkeletonProps {
|
|
4259
|
+
/** Avatar size @default 'md' */
|
|
4260
|
+
size?: 'sm' | 'md' | 'lg';
|
|
4261
|
+
/** Number of text lines beside the avatar @default 2 */
|
|
4262
|
+
lines?: number;
|
|
4263
|
+
className?: string;
|
|
4264
|
+
}
|
|
4265
|
+
declare function AvatarTextSkeleton({ size, lines, className }: AvatarTextSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
4266
|
+
declare namespace AvatarTextSkeleton {
|
|
4267
|
+
var displayName: string;
|
|
4268
|
+
}
|
|
4269
|
+
interface FormRowSkeletonProps {
|
|
4270
|
+
/** Field shape — 'input' (one-line), 'textarea' (3-line), 'select' (input + chevron) */
|
|
4271
|
+
field?: 'input' | 'textarea' | 'select';
|
|
4272
|
+
/** Show help text line below input @default false */
|
|
4273
|
+
withHelp?: boolean;
|
|
4274
|
+
className?: string;
|
|
4275
|
+
}
|
|
4276
|
+
declare function FormRowSkeleton({ field, withHelp, className }: FormRowSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
4277
|
+
declare namespace FormRowSkeleton {
|
|
4278
|
+
var displayName: string;
|
|
4279
|
+
}
|
|
4280
|
+
|
|
4281
|
+
type SparklineTrend = 'up' | 'down' | 'neutral' | 'auto';
|
|
4282
|
+
type SparklineVariant = 'line' | 'area' | 'bars';
|
|
4283
|
+
interface SparklineProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
4284
|
+
/** Array of numeric data points. Must have at least 2 items to render line/area. */
|
|
4285
|
+
data: number[];
|
|
4286
|
+
/** Visual style @default "line" */
|
|
4287
|
+
variant?: SparklineVariant;
|
|
4288
|
+
/**
|
|
4289
|
+
* Trend colour. `"auto"` compares first and last point:
|
|
4290
|
+
* last > first → up, last < first → down, equal → neutral.
|
|
4291
|
+
* Pass an explicit value to override.
|
|
4292
|
+
* @default "auto"
|
|
4293
|
+
*/
|
|
4294
|
+
trend?: SparklineTrend;
|
|
4295
|
+
/** Width in px. Also used as SVG viewBox width — output scales to parent when CSS overrides. @default 80 */
|
|
4296
|
+
width?: number;
|
|
4297
|
+
/** Height in px @default 24 */
|
|
4298
|
+
height?: number;
|
|
4299
|
+
/** Line / bar stroke width @default 1.5 */
|
|
4300
|
+
strokeWidth?: number;
|
|
4301
|
+
/** Show a filled dot at the last point */
|
|
4302
|
+
showEndDot?: boolean;
|
|
4303
|
+
/** Padding inside the viewBox so strokes/dots are not clipped @default 2 */
|
|
4304
|
+
padding?: number;
|
|
4305
|
+
/** Override color with any CSS value (e.g. `"hsl(var(--brand))"`). Takes precedence over `trend`. */
|
|
4306
|
+
color?: string;
|
|
4307
|
+
/** For bars variant — gap between bars in user units @default 1 */
|
|
4308
|
+
barGap?: number;
|
|
4309
|
+
/** aria-label for screen readers — describe the trend / metric */
|
|
4310
|
+
'aria-label'?: string;
|
|
4311
|
+
}
|
|
4312
|
+
declare const Sparkline: React$1.ForwardRefExoticComponent<SparklineProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2413
4313
|
|
|
2414
4314
|
declare function Slider({ className, defaultValue, value, min, max, dir, ...props }: React$1.ComponentProps<typeof SliderPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
2415
4315
|
declare namespace Slider {
|
|
@@ -2432,7 +4332,7 @@ interface SpinnerProps extends React$1.HTMLAttributes<HTMLSpanElement>, VariantP
|
|
|
2432
4332
|
declare const Spinner: React$1.ForwardRefExoticComponent<SpinnerProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
2433
4333
|
|
|
2434
4334
|
declare const switchRootVariants: (props?: ({
|
|
2435
|
-
size?: "
|
|
4335
|
+
size?: "medium" | "sm" | "md" | "lg" | "small" | "large" | null | undefined;
|
|
2436
4336
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
2437
4337
|
interface SwitchProps extends React$1.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>, VariantProps<typeof switchRootVariants> {
|
|
2438
4338
|
}
|
|
@@ -2626,6 +4526,188 @@ interface StepProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
2626
4526
|
declare const Stepper: React$1.ForwardRefExoticComponent<StepperProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2627
4527
|
declare const Step: React$1.ForwardRefExoticComponent<StepProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2628
4528
|
|
|
4529
|
+
interface StatusFlowStageData {
|
|
4530
|
+
/** Stable identifier */
|
|
4531
|
+
id: string;
|
|
4532
|
+
/** Display label */
|
|
4533
|
+
label: React$1.ReactNode;
|
|
4534
|
+
/** Optional one-line description under the label */
|
|
4535
|
+
description?: React$1.ReactNode;
|
|
4536
|
+
/** Optional trailing meta (duration, count, …) shown next to the label */
|
|
4537
|
+
meta?: React$1.ReactNode;
|
|
4538
|
+
/** Status of this stage */
|
|
4539
|
+
status: StageStatusKey;
|
|
4540
|
+
/** Progress 0-100 within this stage. Rendered only when `status === "running"`. */
|
|
4541
|
+
progress?: number;
|
|
4542
|
+
}
|
|
4543
|
+
type StatusFlowOrientation = 'horizontal' | 'vertical';
|
|
4544
|
+
type StatusFlowSize = 'sm' | 'md' | 'lg';
|
|
4545
|
+
interface StatusFlowProps extends Omit<React$1.OlHTMLAttributes<HTMLOListElement>, 'children'> {
|
|
4546
|
+
/** Data-driven stage list. Mutually exclusive with `children`. */
|
|
4547
|
+
stages?: StatusFlowStageData[];
|
|
4548
|
+
/** Composition API — an array of `<StatusFlowStage>` children. */
|
|
4549
|
+
children?: React$1.ReactNode;
|
|
4550
|
+
/** Layout @default "horizontal" */
|
|
4551
|
+
orientation?: StatusFlowOrientation;
|
|
4552
|
+
/** Size @default "md" */
|
|
4553
|
+
size?: StatusFlowSize;
|
|
4554
|
+
/** Whether labels below/beside markers are shown. @default true */
|
|
4555
|
+
showLabels?: boolean;
|
|
4556
|
+
/** Locale for digits + accessible announcements @default "fa" */
|
|
4557
|
+
locale?: SupportedLocale;
|
|
4558
|
+
/** Fires when a stage marker is clicked. When set, markers become buttons. */
|
|
4559
|
+
onStageSelect?: (stage: StatusFlowStageData, index: number) => void;
|
|
4560
|
+
}
|
|
4561
|
+
interface StatusFlowStageProps extends Omit<StatusFlowStageData, 'id'> {
|
|
4562
|
+
id?: string;
|
|
4563
|
+
}
|
|
4564
|
+
/**
|
|
4565
|
+
* Optional composition wrapper. Use this or the `stages` prop on
|
|
4566
|
+
* `<StatusFlow>` — not both. StatusFlow injects position metadata as
|
|
4567
|
+
* internal props; StatusFlowStage should not be rendered outside.
|
|
4568
|
+
*/
|
|
4569
|
+
declare function StatusFlowStage(props: StatusFlowStageProps): React$1.ReactElement;
|
|
4570
|
+
declare const StatusFlow: React$1.ForwardRefExoticComponent<StatusFlowProps & React$1.RefAttributes<HTMLOListElement>>;
|
|
4571
|
+
|
|
4572
|
+
interface JobWizardStep {
|
|
4573
|
+
/** Stable identifier — referenced by `validateStep`, `goToStep`, etc. */
|
|
4574
|
+
id: string;
|
|
4575
|
+
/** Step title (shown in stepper + header when this step is active) */
|
|
4576
|
+
title: string;
|
|
4577
|
+
/** Optional one-line description under the title */
|
|
4578
|
+
description?: string;
|
|
4579
|
+
/** Mark step as optional — a "Skip" button appears. @default false */
|
|
4580
|
+
optional?: boolean;
|
|
4581
|
+
}
|
|
4582
|
+
/** Result of a validator — `null`/`undefined` = pass, `string` = single error, `Record<field, message>` = field errors */
|
|
4583
|
+
type JobWizardValidationResult = string | Record<string, string> | null | undefined;
|
|
4584
|
+
type JobWizardSubmitState = 'idle' | 'submitting' | 'success' | 'error';
|
|
4585
|
+
interface UseJobWizardOptions<TData extends Record<string, unknown>> {
|
|
4586
|
+
/** Ordered list of steps. Pass a new array reference when the step list should change dynamically (e.g. branching). */
|
|
4587
|
+
steps: JobWizardStep[];
|
|
4588
|
+
/** Initial form data */
|
|
4589
|
+
initialData?: Partial<TData>;
|
|
4590
|
+
/**
|
|
4591
|
+
* Validator fired before navigating to the next step. Also runs for each step
|
|
4592
|
+
* on submit if `validateAllOnSubmit` is true.
|
|
4593
|
+
*
|
|
4594
|
+
* Return `null`/`undefined` to pass, or an error (string or field-map) to block navigation.
|
|
4595
|
+
*/
|
|
4596
|
+
validateStep?: (stepId: string, data: Partial<TData>) => JobWizardValidationResult | Promise<JobWizardValidationResult>;
|
|
4597
|
+
/** Called when the user confirms the last step. May return a Promise. */
|
|
4598
|
+
onSubmit: (data: TData) => Promise<unknown> | unknown;
|
|
4599
|
+
/** Called when the user clicks Cancel */
|
|
4600
|
+
onCancel?: () => void;
|
|
4601
|
+
/** When set, drafts are persisted to localStorage under this key. */
|
|
4602
|
+
draftKey?: string;
|
|
4603
|
+
/** Debounce (ms) for draft save. @default 300 */
|
|
4604
|
+
draftDebounceMs?: number;
|
|
4605
|
+
/** Validate all steps (in order) on submit. Default false — only the current step is validated before submit. */
|
|
4606
|
+
validateAllOnSubmit?: boolean;
|
|
4607
|
+
}
|
|
4608
|
+
interface JobWizardApi<TData extends Record<string, unknown>> {
|
|
4609
|
+
/** Current step (resolved from `steps[currentIndex]`). */
|
|
4610
|
+
readonly currentStep: JobWizardStep;
|
|
4611
|
+
readonly currentIndex: number;
|
|
4612
|
+
readonly isFirst: boolean;
|
|
4613
|
+
readonly isLast: boolean;
|
|
4614
|
+
readonly steps: JobWizardStep[];
|
|
4615
|
+
/** Mutable form data (merged across all steps). */
|
|
4616
|
+
readonly data: Partial<TData>;
|
|
4617
|
+
/** Replace the data object. */
|
|
4618
|
+
setData: React$1.Dispatch<React$1.SetStateAction<Partial<TData>>>;
|
|
4619
|
+
/** Shallow-merge the given patch into `data`. */
|
|
4620
|
+
update: (patch: Partial<TData>) => void;
|
|
4621
|
+
/** Current error. String = whole-step error, Record = per-field errors. */
|
|
4622
|
+
readonly error: string | Record<string, string> | null;
|
|
4623
|
+
/** Clear the current error. */
|
|
4624
|
+
clearError: () => void;
|
|
4625
|
+
/** Submit state lifecycle. */
|
|
4626
|
+
readonly submitState: JobWizardSubmitState;
|
|
4627
|
+
readonly submitResult: unknown;
|
|
4628
|
+
readonly submitError: Error | null;
|
|
4629
|
+
/** Advance to the next step. Runs validation first. Returns true if navigated. */
|
|
4630
|
+
next: () => Promise<boolean>;
|
|
4631
|
+
/** Go back to the previous step. */
|
|
4632
|
+
back: () => void;
|
|
4633
|
+
/** Jump to a specific step by id. Does NOT validate. */
|
|
4634
|
+
goToStep: (id: string) => void;
|
|
4635
|
+
/** Fire onSubmit. Runs validation first (current step only, unless `validateAllOnSubmit`). */
|
|
4636
|
+
submit: () => Promise<void>;
|
|
4637
|
+
/** Fire onCancel if provided. */
|
|
4638
|
+
cancel: () => void;
|
|
4639
|
+
/** Reset wizard to first step + `initialData` + idle state. Also clears draft. */
|
|
4640
|
+
reset: () => void;
|
|
4641
|
+
/** Remove the saved draft from localStorage (if `draftKey` set). */
|
|
4642
|
+
clearDraft: () => void;
|
|
4643
|
+
/** True iff the step at this id has been visited. */
|
|
4644
|
+
isStepVisited: (id: string) => boolean;
|
|
4645
|
+
/** Resolved stage status for the StatusFlow stepper. */
|
|
4646
|
+
stageStatus: (step: JobWizardStep, index: number) => StageStatusKey;
|
|
4647
|
+
}
|
|
4648
|
+
declare function useJobWizard<TData extends Record<string, unknown>>(options: UseJobWizardOptions<TData>): JobWizardApi<TData>;
|
|
4649
|
+
/** Hook to access the wizard from within nested components. */
|
|
4650
|
+
declare function useJobWizardState<TData extends Record<string, unknown> = Record<string, unknown>>(): JobWizardApi<TData>;
|
|
4651
|
+
interface JobWizardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
4652
|
+
/** Wizard API from `useJobWizard`. */
|
|
4653
|
+
wizard: JobWizardApi<Record<string, unknown>>;
|
|
4654
|
+
/** Locale @default "fa" */
|
|
4655
|
+
locale?: SupportedLocale;
|
|
4656
|
+
}
|
|
4657
|
+
declare const JobWizard: React$1.ForwardRefExoticComponent<JobWizardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4658
|
+
interface JobWizardHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
4659
|
+
/** Main title of the wizard (persistent across steps). If omitted, shows the current step's title. */
|
|
4660
|
+
title?: React$1.ReactNode;
|
|
4661
|
+
/** Short description / context line under the title. */
|
|
4662
|
+
description?: React$1.ReactNode;
|
|
4663
|
+
/** Trailing slot (e.g. a close button). */
|
|
4664
|
+
trailing?: React$1.ReactNode;
|
|
4665
|
+
}
|
|
4666
|
+
declare const JobWizardHeader: React$1.ForwardRefExoticComponent<JobWizardHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4667
|
+
interface JobWizardStepperProps {
|
|
4668
|
+
/** Orientation @default "horizontal" */
|
|
4669
|
+
orientation?: 'horizontal' | 'vertical';
|
|
4670
|
+
/** Size @default "md" */
|
|
4671
|
+
size?: 'sm' | 'md' | 'lg';
|
|
4672
|
+
/** Allow clicking visited steps to jump back. @default true */
|
|
4673
|
+
allowJump?: boolean;
|
|
4674
|
+
className?: string;
|
|
4675
|
+
}
|
|
4676
|
+
declare const JobWizardStepper: React$1.FC<JobWizardStepperProps>;
|
|
4677
|
+
declare const JobWizardBody: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
4678
|
+
declare const JobWizardError: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
4679
|
+
declare const JobWizardFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
4680
|
+
/** Invisible flex spacer — pushes following buttons to the logical end. */
|
|
4681
|
+
declare const JobWizardSpacer: React$1.FC;
|
|
4682
|
+
interface JobWizardBackProps extends Omit<React$1.ComponentProps<typeof Button>, 'onClick'> {
|
|
4683
|
+
/** Override label */
|
|
4684
|
+
children?: React$1.ReactNode;
|
|
4685
|
+
}
|
|
4686
|
+
declare const JobWizardBack: React$1.ForwardRefExoticComponent<Omit<JobWizardBackProps, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
4687
|
+
interface JobWizardNextProps extends Omit<React$1.ComponentProps<typeof Button>, 'onClick'> {
|
|
4688
|
+
/** Override label (not applied when on last step — uses `submitLabel` then) */
|
|
4689
|
+
children?: React$1.ReactNode;
|
|
4690
|
+
/** Label for the submit button when on the last step */
|
|
4691
|
+
submitLabel?: React$1.ReactNode;
|
|
4692
|
+
}
|
|
4693
|
+
declare const JobWizardNext: React$1.ForwardRefExoticComponent<Omit<JobWizardNextProps, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
4694
|
+
interface JobWizardCancelProps extends Omit<React$1.ComponentProps<typeof Button>, 'onClick'> {
|
|
4695
|
+
children?: React$1.ReactNode;
|
|
4696
|
+
}
|
|
4697
|
+
declare const JobWizardCancel: React$1.ForwardRefExoticComponent<Omit<JobWizardCancelProps, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
4698
|
+
interface JobWizardSkipProps extends Omit<React$1.ComponentProps<typeof Button>, 'onClick'> {
|
|
4699
|
+
children?: React$1.ReactNode;
|
|
4700
|
+
}
|
|
4701
|
+
declare const JobWizardSkip: React$1.ForwardRefExoticComponent<Omit<JobWizardSkipProps, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
4702
|
+
interface JobWizardSuccessProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
4703
|
+
title?: React$1.ReactNode;
|
|
4704
|
+
description?: React$1.ReactNode;
|
|
4705
|
+
actions?: React$1.ReactNode;
|
|
4706
|
+
/** Only render children when submitState === 'success' @default true */
|
|
4707
|
+
autoShow?: boolean;
|
|
4708
|
+
}
|
|
4709
|
+
declare const JobWizardSuccess: React$1.ForwardRefExoticComponent<JobWizardSuccessProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4710
|
+
|
|
2629
4711
|
interface SentimentBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
2630
4712
|
/** Sentiment type */
|
|
2631
4713
|
sentiment: 'positive' | 'negative' | 'neutral' | 'mixed';
|
|
@@ -2640,6 +4722,89 @@ interface SentimentBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
|
2640
4722
|
}
|
|
2641
4723
|
declare const SentimentBadge: React$1.ForwardRefExoticComponent<SentimentBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
2642
4724
|
|
|
4725
|
+
interface EmotionBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
4726
|
+
/** Emotion (9-class advanced sentiment scale) */
|
|
4727
|
+
emotion: EmotionKey;
|
|
4728
|
+
/** Optional count — shown alongside the label */
|
|
4729
|
+
count?: number;
|
|
4730
|
+
/** Size variant */
|
|
4731
|
+
size?: 'sm' | 'md';
|
|
4732
|
+
/** Show the text label. When false, renders an icon-only chip (aria-label kept). */
|
|
4733
|
+
showLabel?: boolean;
|
|
4734
|
+
/** Locale for label + digit formatting */
|
|
4735
|
+
locale?: SupportedLocale;
|
|
4736
|
+
}
|
|
4737
|
+
declare const EmotionBadge: React$1.ForwardRefExoticComponent<EmotionBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
4738
|
+
|
|
4739
|
+
type EmotionData = Partial<Record<EmotionKey, number>>;
|
|
4740
|
+
interface EmotionDistributionProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
4741
|
+
/** Emotion counts (auto-normalized to 100%). Missing keys are treated as 0. */
|
|
4742
|
+
data: EmotionData;
|
|
4743
|
+
/** Display mode */
|
|
4744
|
+
variant?: 'bars' | 'stacked' | 'compact';
|
|
4745
|
+
/**
|
|
4746
|
+
* For 'compact' and 'bars': limit to the top-N emotions by value. Leftover
|
|
4747
|
+
* contributions roll up into a muted "بقیه" chip so totals still make sense.
|
|
4748
|
+
* Default 5 — matches the canonical تحلیل افکار summary density.
|
|
4749
|
+
*/
|
|
4750
|
+
topN?: number;
|
|
4751
|
+
/** Show numeric count labels (in addition to percent). */
|
|
4752
|
+
showCounts?: boolean;
|
|
4753
|
+
/** Show percentage labels. */
|
|
4754
|
+
showPercent?: boolean;
|
|
4755
|
+
/** Locale for label + digit formatting */
|
|
4756
|
+
locale?: SupportedLocale;
|
|
4757
|
+
/** Loading skeleton */
|
|
4758
|
+
isLoading?: boolean;
|
|
4759
|
+
}
|
|
4760
|
+
declare const EmotionDistribution: React$1.ForwardRefExoticComponent<EmotionDistributionProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4761
|
+
|
|
4762
|
+
interface FlowBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
4763
|
+
/** Flow classification */
|
|
4764
|
+
flow: FlowKey;
|
|
4765
|
+
/** Optional count shown alongside the label */
|
|
4766
|
+
count?: number;
|
|
4767
|
+
/** Size */
|
|
4768
|
+
size?: 'sm' | 'md';
|
|
4769
|
+
/** Whether to render the text label (keeps aria-label when false) */
|
|
4770
|
+
showLabel?: boolean;
|
|
4771
|
+
/** Locale for label + digit formatting */
|
|
4772
|
+
locale?: SupportedLocale;
|
|
4773
|
+
}
|
|
4774
|
+
declare const FlowBadge: React$1.ForwardRefExoticComponent<FlowBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
4775
|
+
|
|
4776
|
+
interface StatusBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
4777
|
+
/** Operational status */
|
|
4778
|
+
status: StatusKey;
|
|
4779
|
+
/** Size */
|
|
4780
|
+
size?: 'sm' | 'md';
|
|
4781
|
+
/** Show text label (keeps aria-label when false) */
|
|
4782
|
+
showLabel?: boolean;
|
|
4783
|
+
/** Locale */
|
|
4784
|
+
locale?: SupportedLocale;
|
|
4785
|
+
/**
|
|
4786
|
+
* Explicitly enable/disable the pulse animation on the indicator dot.
|
|
4787
|
+
* Default: animated only for `status="critical"`. Pair with
|
|
4788
|
+
* `prefers-reduced-motion` (already honoured globally in globals.css).
|
|
4789
|
+
*/
|
|
4790
|
+
animated?: boolean;
|
|
4791
|
+
}
|
|
4792
|
+
declare const StatusBadge: React$1.ForwardRefExoticComponent<StatusBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
4793
|
+
|
|
4794
|
+
interface SeverityBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
4795
|
+
/** Urgency level — independent from operational status */
|
|
4796
|
+
severity: SeverityKey;
|
|
4797
|
+
/** Size */
|
|
4798
|
+
size?: 'sm' | 'md';
|
|
4799
|
+
/** Show text label */
|
|
4800
|
+
showLabel?: boolean;
|
|
4801
|
+
/** Render as a solid chip instead of the soft tinted pill (for high-contrast lists) */
|
|
4802
|
+
variant?: 'soft' | 'solid';
|
|
4803
|
+
/** Locale */
|
|
4804
|
+
locale?: SupportedLocale;
|
|
4805
|
+
}
|
|
4806
|
+
declare const SeverityBadge: React$1.ForwardRefExoticComponent<SeverityBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
4807
|
+
|
|
2643
4808
|
interface MultiSelectOption {
|
|
2644
4809
|
value: string;
|
|
2645
4810
|
label: string;
|
|
@@ -2696,23 +4861,6 @@ interface PeriodSelectorProps {
|
|
|
2696
4861
|
}
|
|
2697
4862
|
declare const PeriodSelector: React$1.ForwardRefExoticComponent<PeriodSelectorProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2698
4863
|
|
|
2699
|
-
type SocialPlatform = 'instagram' | 'twitter' | 'tiktok' | 'youtube' | 'linkedin' | 'telegram' | 'threads';
|
|
2700
|
-
interface SocialPlatformBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
2701
|
-
/** The social media platform to display */
|
|
2702
|
-
platform: SocialPlatform;
|
|
2703
|
-
/** Size of the badge */
|
|
2704
|
-
size?: 'xs' | 'sm' | 'md' | 'lg';
|
|
2705
|
-
/** Show the platform name label */
|
|
2706
|
-
showLabel?: boolean;
|
|
2707
|
-
/** Visual style of the badge */
|
|
2708
|
-
variant?: 'flat' | 'badge';
|
|
2709
|
-
}
|
|
2710
|
-
declare const socialPlatformBadgeVariants: (props?: ({
|
|
2711
|
-
size?: "xs" | "sm" | "md" | "lg" | null | undefined;
|
|
2712
|
-
variant?: "flat" | "badge" | null | undefined;
|
|
2713
|
-
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
2714
|
-
declare const SocialPlatformBadge: React$1.ForwardRefExoticComponent<SocialPlatformBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
2715
|
-
|
|
2716
4864
|
interface SearchInputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, 'size'>, VariantProps<typeof InputVariants> {
|
|
2717
4865
|
/** Locale for placeholder and aria labels */
|
|
2718
4866
|
locale?: SupportedLocale;
|
|
@@ -2731,28 +4879,6 @@ interface SearchInputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputEle
|
|
|
2731
4879
|
}
|
|
2732
4880
|
declare const SearchInput: React$1.ForwardRefExoticComponent<SearchInputProps & React$1.RefAttributes<HTMLInputElement>>;
|
|
2733
4881
|
|
|
2734
|
-
interface SentimentData {
|
|
2735
|
-
positive: number;
|
|
2736
|
-
negative: number;
|
|
2737
|
-
neutral: number;
|
|
2738
|
-
mixed?: number;
|
|
2739
|
-
}
|
|
2740
|
-
interface SentimentDistributionProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2741
|
-
/** Sentiment counts (will be auto-normalized to 100%) */
|
|
2742
|
-
data: SentimentData;
|
|
2743
|
-
/** Display mode */
|
|
2744
|
-
variant?: 'bars' | 'stacked' | 'compact';
|
|
2745
|
-
/** Show numeric count labels */
|
|
2746
|
-
showCounts?: boolean;
|
|
2747
|
-
/** Show percentage labels */
|
|
2748
|
-
showPercent?: boolean;
|
|
2749
|
-
/** Locale for number/label formatting */
|
|
2750
|
-
locale?: SupportedLocale;
|
|
2751
|
-
/** Show loading skeleton */
|
|
2752
|
-
isLoading?: boolean;
|
|
2753
|
-
}
|
|
2754
|
-
declare const SentimentDistribution: React$1.ForwardRefExoticComponent<SentimentDistributionProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2755
|
-
|
|
2756
4882
|
interface ComparisonCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2757
4883
|
/** Card title */
|
|
2758
4884
|
title: string;
|
|
@@ -2799,6 +4925,30 @@ interface DataTableColumn<TData> {
|
|
|
2799
4925
|
className?: string;
|
|
2800
4926
|
/** Column alignment */
|
|
2801
4927
|
align?: 'start' | 'center' | 'end';
|
|
4928
|
+
/**
|
|
4929
|
+
* Pin the column to the start (logical, RTL-aware) or end of the visible
|
|
4930
|
+
* area. Pinned columns stay visible while horizontal scrolling. The
|
|
4931
|
+
* selection / expansion gutter columns are pinned automatically.
|
|
4932
|
+
*/
|
|
4933
|
+
pinned?: 'start' | 'end';
|
|
4934
|
+
/** Optional fixed pixel width (used for pinning offset calculation) */
|
|
4935
|
+
width?: number;
|
|
4936
|
+
/** When false, this column is hidden via the columnVisibility map */
|
|
4937
|
+
defaultVisible?: boolean;
|
|
4938
|
+
}
|
|
4939
|
+
interface DataTableColumnVisibility {
|
|
4940
|
+
/** Map of column id → visible. Missing keys default to true. */
|
|
4941
|
+
visible: Record<string, boolean>;
|
|
4942
|
+
/** Called when a column toggle changes. */
|
|
4943
|
+
onVisibilityChange: (next: Record<string, boolean>) => void;
|
|
4944
|
+
}
|
|
4945
|
+
interface DataTableExpansion<TData> {
|
|
4946
|
+
/** Set of expanded row keys. */
|
|
4947
|
+
expandedRows: Set<number>;
|
|
4948
|
+
/** Called when expansion toggles. */
|
|
4949
|
+
onExpandedRowsChange: (next: Set<number>) => void;
|
|
4950
|
+
/** Render function for the expanded content (full-width row below). */
|
|
4951
|
+
renderExpandedRow: (row: TData, rowIndex: number) => React$1.ReactNode;
|
|
2802
4952
|
}
|
|
2803
4953
|
interface DataTablePagination {
|
|
2804
4954
|
currentPage: number;
|
|
@@ -2835,6 +4985,25 @@ interface DataTableProps<TData> {
|
|
|
2835
4985
|
sort?: DataTableSort;
|
|
2836
4986
|
/** Row selection configuration */
|
|
2837
4987
|
selection?: DataTableSelection<TData>;
|
|
4988
|
+
/** Column visibility configuration (for show/hide column toggle) */
|
|
4989
|
+
columnVisibility?: DataTableColumnVisibility;
|
|
4990
|
+
/** Expansion configuration (for inline detail row) */
|
|
4991
|
+
expansion?: DataTableExpansion<TData>;
|
|
4992
|
+
/**
|
|
4993
|
+
* Opt-in row virtualization for very long lists (1000+ rows). When set,
|
|
4994
|
+
* the table is wrapped in a scroll container of `viewportHeight` and only
|
|
4995
|
+
* rows in the visible window + `overscan` are rendered. Rows must have a
|
|
4996
|
+
* predictable `rowHeight`; expanded rows + dynamic content are NOT
|
|
4997
|
+
* supported in virtualized mode.
|
|
4998
|
+
*/
|
|
4999
|
+
virtualize?: {
|
|
5000
|
+
/** Pixel height of each row (must be uniform). */
|
|
5001
|
+
rowHeight: number;
|
|
5002
|
+
/** Container scroll-area height in px. @default 480 */
|
|
5003
|
+
viewportHeight?: number;
|
|
5004
|
+
/** Extra rows rendered above and below the viewport. @default 6 */
|
|
5005
|
+
overscan?: number;
|
|
5006
|
+
};
|
|
2838
5007
|
/** Zebra-striped rows */
|
|
2839
5008
|
striped?: boolean;
|
|
2840
5009
|
/** Bordered cells */
|
|
@@ -2854,6 +5023,198 @@ declare const DataTable: <TData>(props: DataTableProps<TData> & {
|
|
|
2854
5023
|
ref?: React$1.ForwardedRef<HTMLDivElement>;
|
|
2855
5024
|
}) => React$1.ReactElement;
|
|
2856
5025
|
|
|
5026
|
+
/**
|
|
5027
|
+
* data-table-cells — opinionated thin wrappers around DS primitives, sized
|
|
5028
|
+
* and styled for use as `DataTableColumn.cell` values. Each cell renderer
|
|
5029
|
+
* gives a consistent inline footprint (no margin/padding chrome) and pairs
|
|
5030
|
+
* a chart/badge with optional numeric value text.
|
|
5031
|
+
*
|
|
5032
|
+
* Usage:
|
|
5033
|
+
* columns={[
|
|
5034
|
+
* {
|
|
5035
|
+
* id: 'engagement',
|
|
5036
|
+
* header: 'تعامل',
|
|
5037
|
+
* cell: (row) => <SparklineCell data={row.history} value={row.eRate} suffix="٪" />,
|
|
5038
|
+
* },
|
|
5039
|
+
* ...
|
|
5040
|
+
* ]}
|
|
5041
|
+
*/
|
|
5042
|
+
interface SparklineCellProps {
|
|
5043
|
+
/** History values (typically 6-12 points) */
|
|
5044
|
+
data: number[];
|
|
5045
|
+
/** Optional numeric value shown after the sparkline */
|
|
5046
|
+
value?: number;
|
|
5047
|
+
/** Suffix appended to value (e.g., '٪') */
|
|
5048
|
+
suffix?: React$1.ReactNode;
|
|
5049
|
+
/** Sparkline width in px @default 64 */
|
|
5050
|
+
width?: number;
|
|
5051
|
+
/** Sparkline height in px @default 18 */
|
|
5052
|
+
height?: number;
|
|
5053
|
+
/** Sparkline visual variant @default 'line' */
|
|
5054
|
+
variant?: 'line' | 'area' | 'bars';
|
|
5055
|
+
/** Override trend color (auto-detected from first vs last) */
|
|
5056
|
+
trend?: 'up' | 'down' | 'neutral';
|
|
5057
|
+
/** Locale @default 'fa' */
|
|
5058
|
+
locale?: SupportedLocale;
|
|
5059
|
+
/** Decimal places for value @default 0 */
|
|
5060
|
+
decimals?: number;
|
|
5061
|
+
className?: string;
|
|
5062
|
+
}
|
|
5063
|
+
declare const SparklineCell: React$1.ForwardRefExoticComponent<SparklineCellProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5064
|
+
interface TrendCellProps {
|
|
5065
|
+
/** Numeric delta. Positive=up, negative=down, zero=flat. */
|
|
5066
|
+
value: number;
|
|
5067
|
+
/** Suffix (e.g., '٪'). */
|
|
5068
|
+
suffix?: React$1.ReactNode;
|
|
5069
|
+
/** Show the absolute value text alongside the arrow @default true */
|
|
5070
|
+
showValue?: boolean;
|
|
5071
|
+
/** Inverted trend (lower=better) — colours flip */
|
|
5072
|
+
invert?: boolean;
|
|
5073
|
+
/** Locale @default 'fa' */
|
|
5074
|
+
locale?: SupportedLocale;
|
|
5075
|
+
className?: string;
|
|
5076
|
+
}
|
|
5077
|
+
declare const TrendCell: React$1.ForwardRefExoticComponent<TrendCellProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
5078
|
+
interface StatusPulseCellProps {
|
|
5079
|
+
status: StatusKey;
|
|
5080
|
+
/** Optional label after the dot (omit for ultra-compact rows) */
|
|
5081
|
+
label?: React$1.ReactNode;
|
|
5082
|
+
/** Locale (forwarded to StatusBadge for default labels) */
|
|
5083
|
+
locale?: SupportedLocale;
|
|
5084
|
+
className?: string;
|
|
5085
|
+
}
|
|
5086
|
+
declare const StatusPulseCell: React$1.ForwardRefExoticComponent<StatusPulseCellProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
5087
|
+
interface SentimentCellProps {
|
|
5088
|
+
/** Sentiment counts. */
|
|
5089
|
+
data: SentimentData;
|
|
5090
|
+
/** Visual mode @default 'stacked' */
|
|
5091
|
+
variant?: 'stacked' | 'bars' | 'compact';
|
|
5092
|
+
/** Width of the inline bar @default 80 */
|
|
5093
|
+
width?: number;
|
|
5094
|
+
/** Locale */
|
|
5095
|
+
locale?: SupportedLocale;
|
|
5096
|
+
className?: string;
|
|
5097
|
+
}
|
|
5098
|
+
declare const SentimentCell: React$1.ForwardRefExoticComponent<SentimentCellProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5099
|
+
interface FlowCellProps {
|
|
5100
|
+
/** Flow counts. */
|
|
5101
|
+
data: FlowData;
|
|
5102
|
+
/** Visual mode @default 'stacked' */
|
|
5103
|
+
variant?: 'stacked' | 'bars' | 'compact';
|
|
5104
|
+
/** Width of the inline bar @default 96 */
|
|
5105
|
+
width?: number;
|
|
5106
|
+
/** Locale */
|
|
5107
|
+
locale?: SupportedLocale;
|
|
5108
|
+
className?: string;
|
|
5109
|
+
}
|
|
5110
|
+
declare const FlowCell: React$1.ForwardRefExoticComponent<FlowCellProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5111
|
+
interface ProgressCellProps {
|
|
5112
|
+
/** Progress 0–100 */
|
|
5113
|
+
value: number;
|
|
5114
|
+
/** Show value text after the bar @default true */
|
|
5115
|
+
showValue?: boolean;
|
|
5116
|
+
/** Suffix on value (e.g., '٪'). Defaults to locale-appropriate %. */
|
|
5117
|
+
suffix?: React$1.ReactNode;
|
|
5118
|
+
/** Variant for color */
|
|
5119
|
+
variant?: 'primary' | 'secondary' | 'success' | 'warning' | 'destructive';
|
|
5120
|
+
/** Bar width @default 80 */
|
|
5121
|
+
width?: number;
|
|
5122
|
+
/** Locale @default 'fa' */
|
|
5123
|
+
locale?: SupportedLocale;
|
|
5124
|
+
className?: string;
|
|
5125
|
+
}
|
|
5126
|
+
declare const ProgressCell: React$1.ForwardRefExoticComponent<ProgressCellProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5127
|
+
interface StatDeltaCellProps {
|
|
5128
|
+
/** Primary value (e.g., 1240) */
|
|
5129
|
+
value: number | string;
|
|
5130
|
+
/** Delta (positive=up). Hidden if undefined. */
|
|
5131
|
+
delta?: number;
|
|
5132
|
+
/** Format the value with locale digits @default true (when value is number) */
|
|
5133
|
+
formatValue?: boolean;
|
|
5134
|
+
/** Suffix on value */
|
|
5135
|
+
valueSuffix?: React$1.ReactNode;
|
|
5136
|
+
/** Suffix on delta */
|
|
5137
|
+
deltaSuffix?: React$1.ReactNode;
|
|
5138
|
+
/** Inverted trend (lower=better) */
|
|
5139
|
+
invertDelta?: boolean;
|
|
5140
|
+
/** Locale */
|
|
5141
|
+
locale?: SupportedLocale;
|
|
5142
|
+
className?: string;
|
|
5143
|
+
}
|
|
5144
|
+
declare const StatDeltaCell: React$1.ForwardRefExoticComponent<StatDeltaCellProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
5145
|
+
|
|
5146
|
+
interface DataTableColumnVisibilityToggleProps<TData> {
|
|
5147
|
+
columns: DataTableColumn<TData>[];
|
|
5148
|
+
visibility: DataTableColumnVisibility;
|
|
5149
|
+
/** Locale @default 'fa' */
|
|
5150
|
+
locale?: SupportedLocale;
|
|
5151
|
+
/** Custom trigger label (defaults to "ستونها") */
|
|
5152
|
+
label?: React$1.ReactNode;
|
|
5153
|
+
/** Custom Button class */
|
|
5154
|
+
className?: string;
|
|
5155
|
+
/** Override Button size */
|
|
5156
|
+
size?: 'xs' | 'sm' | 'default';
|
|
5157
|
+
/** Override Button variant */
|
|
5158
|
+
variant?: 'default' | 'outline' | 'ghost' | 'secondary';
|
|
5159
|
+
}
|
|
5160
|
+
declare function DataTableColumnVisibilityToggle<TData>({ columns, visibility, locale, label, className, size, variant, }: DataTableColumnVisibilityToggleProps<TData>): react_jsx_runtime.JSX.Element;
|
|
5161
|
+
/**
|
|
5162
|
+
* Convert column definitions + row data into a CSV string. Each cell is
|
|
5163
|
+
* stringified by calling its `cell` render and extracting plain text — for
|
|
5164
|
+
* complex React nodes pass an `exportValue: (row) => string` on the column.
|
|
5165
|
+
*/
|
|
5166
|
+
interface ExportableColumn<TData> extends DataTableColumn<TData> {
|
|
5167
|
+
/** Override how this column's value is serialized for export. */
|
|
5168
|
+
exportValue?: (row: TData, index: number) => string | number | boolean | null | undefined;
|
|
5169
|
+
}
|
|
5170
|
+
/**
|
|
5171
|
+
* Build a CSV string from columns + rows. Header row uses each column's
|
|
5172
|
+
* `header` (if string) or its `id` as fallback.
|
|
5173
|
+
*/
|
|
5174
|
+
declare function buildCsv<TData>(columns: ExportableColumn<TData>[], data: TData[]): string;
|
|
5175
|
+
/** Build a TSV string (tab-separated) — useful for "paste into spreadsheet". */
|
|
5176
|
+
declare function buildTsv<TData>(columns: ExportableColumn<TData>[], data: TData[]): string;
|
|
5177
|
+
/** Trigger a browser download of `content` with the given filename + mime. */
|
|
5178
|
+
declare function downloadFile(filename: string, content: string, mime?: string): void;
|
|
5179
|
+
interface DataTableExportButtonProps<TData> {
|
|
5180
|
+
columns: ExportableColumn<TData>[];
|
|
5181
|
+
data: TData[];
|
|
5182
|
+
/** Output filename (default: data-<timestamp>.csv) */
|
|
5183
|
+
filename?: string;
|
|
5184
|
+
/** Locale @default 'fa' */
|
|
5185
|
+
locale?: SupportedLocale;
|
|
5186
|
+
/** Override label */
|
|
5187
|
+
label?: React$1.ReactNode;
|
|
5188
|
+
/** Hide TSV-copy entry @default false */
|
|
5189
|
+
hideTsv?: boolean;
|
|
5190
|
+
/** Custom Button class */
|
|
5191
|
+
className?: string;
|
|
5192
|
+
/** Override Button size */
|
|
5193
|
+
size?: 'xs' | 'sm' | 'default';
|
|
5194
|
+
/** Override Button variant */
|
|
5195
|
+
variant?: 'default' | 'outline' | 'ghost' | 'secondary';
|
|
5196
|
+
}
|
|
5197
|
+
declare function DataTableExportButton<TData>({ columns, data, filename, locale, label, hideTsv, className, size, variant, }: DataTableExportButtonProps<TData>): react_jsx_runtime.JSX.Element;
|
|
5198
|
+
|
|
5199
|
+
interface TableComparisonViewProps<TData> {
|
|
5200
|
+
/** Original DataTable column definitions — `cell()` is reused for rendering. */
|
|
5201
|
+
columns: DataTableColumn<TData>[];
|
|
5202
|
+
/** Rows being compared. Recommended 2-4. */
|
|
5203
|
+
rows: TData[];
|
|
5204
|
+
/** Optional label for each row column header (e.g., name). Falls back to `Row N`. */
|
|
5205
|
+
rowLabel?: (row: TData, index: number) => React$1.ReactNode;
|
|
5206
|
+
/** Callback for the column "remove" button. When omitted, no remove button shows. */
|
|
5207
|
+
onRemoveRow?: (row: TData, index: number) => void;
|
|
5208
|
+
/** Highlight cells whose value differs across rows @default true */
|
|
5209
|
+
highlightDifferences?: boolean;
|
|
5210
|
+
/** Locale @default 'fa' */
|
|
5211
|
+
locale?: SupportedLocale;
|
|
5212
|
+
/** Empty state when no rows are passed */
|
|
5213
|
+
emptyState?: React$1.ReactNode;
|
|
5214
|
+
className?: string;
|
|
5215
|
+
}
|
|
5216
|
+
declare const TableComparisonView: <TData>(props: TableComparisonViewProps<TData>) => React$1.ReactElement;
|
|
5217
|
+
|
|
2857
5218
|
interface DirectionalBoxProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2858
5219
|
/**
|
|
2859
5220
|
* Override the detected document direction.
|
|
@@ -2917,8 +5278,94 @@ interface SafeImageProps extends React$1.ImgHTMLAttributes<HTMLImageElement> {
|
|
|
2917
5278
|
}
|
|
2918
5279
|
declare const SafeImage: React$1.ForwardRefExoticComponent<SafeImageProps & React$1.RefAttributes<HTMLImageElement>>;
|
|
2919
5280
|
|
|
5281
|
+
/**
|
|
5282
|
+
* SavedQueryCard — saved-search tile for analyst dashboards. Shows query
|
|
5283
|
+
* description + filter summary chips, run count, last-run timestamp, and a
|
|
5284
|
+
* one-click "run again" action button. Optional star/favorite toggle.
|
|
5285
|
+
*/
|
|
5286
|
+
interface SavedQueryFilter {
|
|
5287
|
+
/** Filter label (e.g., "احساس") */
|
|
5288
|
+
label: React$1.ReactNode;
|
|
5289
|
+
/** Filter value (e.g., "منفی") */
|
|
5290
|
+
value: React$1.ReactNode;
|
|
5291
|
+
}
|
|
5292
|
+
interface SavedQueryCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
5293
|
+
/** Saved query name */
|
|
5294
|
+
name: React$1.ReactNode;
|
|
5295
|
+
/** Optional 1-line description */
|
|
5296
|
+
description?: React$1.ReactNode;
|
|
5297
|
+
/** Filter chips (label + value pairs) */
|
|
5298
|
+
filters?: SavedQueryFilter[];
|
|
5299
|
+
/** Total run count */
|
|
5300
|
+
runCount?: number;
|
|
5301
|
+
/** Last-run display (e.g., "۲ روز پیش") */
|
|
5302
|
+
lastRun?: React$1.ReactNode;
|
|
5303
|
+
/** Run-now callback */
|
|
5304
|
+
onRun?: () => void;
|
|
5305
|
+
/** Run button label override */
|
|
5306
|
+
runLabel?: React$1.ReactNode;
|
|
5307
|
+
/** Favorite/star state. When set, renders the star toggle */
|
|
5308
|
+
favorite?: {
|
|
5309
|
+
starred: boolean;
|
|
5310
|
+
onChange: (next: boolean) => void;
|
|
5311
|
+
};
|
|
5312
|
+
/** Locale @default 'fa' */
|
|
5313
|
+
locale?: SupportedLocale;
|
|
5314
|
+
}
|
|
5315
|
+
declare const SavedQueryCard: React$1.ForwardRefExoticComponent<SavedQueryCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5316
|
+
|
|
5317
|
+
interface ReportComposerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
5318
|
+
/** Report title (e.g., "بولتن هفتگی — هفته ۱۴") */
|
|
5319
|
+
title?: React$1.ReactNode;
|
|
5320
|
+
/** Subtitle / metadata */
|
|
5321
|
+
description?: React$1.ReactNode;
|
|
5322
|
+
/** Top-right header actions (Save, Export, …) */
|
|
5323
|
+
headerActions?: React$1.ReactNode;
|
|
5324
|
+
/** Locale @default 'fa' */
|
|
5325
|
+
locale?: SupportedLocale;
|
|
5326
|
+
}
|
|
5327
|
+
declare const ReportComposer: React$1.ForwardRefExoticComponent<ReportComposerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5328
|
+
interface ReportSectionProps extends Omit<React$1.HTMLAttributes<HTMLElement>, 'title'> {
|
|
5329
|
+
/** Section title */
|
|
5330
|
+
title: React$1.ReactNode;
|
|
5331
|
+
/** Optional secondary text */
|
|
5332
|
+
description?: React$1.ReactNode;
|
|
5333
|
+
/** Whether the section is enabled (in the bulletin output) */
|
|
5334
|
+
enabled?: boolean;
|
|
5335
|
+
/** Callback when the enable switch is toggled. When omitted, switch is hidden. */
|
|
5336
|
+
onEnabledChange?: (next: boolean) => void;
|
|
5337
|
+
/** Whether the section is collapsed (only the header visible) */
|
|
5338
|
+
collapsed?: boolean;
|
|
5339
|
+
/** Callback when collapse toggles. When omitted, collapse button is hidden. */
|
|
5340
|
+
onCollapsedChange?: (next: boolean) => void;
|
|
5341
|
+
/** Show drag handle (consumer wires the drag interaction) */
|
|
5342
|
+
draggable?: boolean;
|
|
5343
|
+
/** drag-handle pointerDown — set when wiring native or react-dnd */
|
|
5344
|
+
onDragHandlePointerDown?: (e: React$1.PointerEvent<HTMLButtonElement>) => void;
|
|
5345
|
+
/** Render a settings button (e.g., to open a popover). When omitted, hidden. */
|
|
5346
|
+
onSettingsClick?: () => void;
|
|
5347
|
+
/** Custom header actions (extra buttons beside settings) */
|
|
5348
|
+
headerActions?: React$1.ReactNode;
|
|
5349
|
+
}
|
|
5350
|
+
declare const ReportSection: React$1.ForwardRefExoticComponent<ReportSectionProps & React$1.RefAttributes<HTMLElement>>;
|
|
5351
|
+
interface BulletinViewerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
5352
|
+
/** Bulletin title (h1) */
|
|
5353
|
+
title: React$1.ReactNode;
|
|
5354
|
+
/** Author / source line */
|
|
5355
|
+
author?: React$1.ReactNode;
|
|
5356
|
+
/** Publish date display */
|
|
5357
|
+
publishedAt?: React$1.ReactNode;
|
|
5358
|
+
/** Optional list of subtitle lines (volume, edition, etc.) */
|
|
5359
|
+
meta?: React$1.ReactNode[];
|
|
5360
|
+
/** Action buttons in the header (Print, Download PDF, Share). Hidden when printing via @media print. */
|
|
5361
|
+
headerActions?: React$1.ReactNode;
|
|
5362
|
+
/** Locale @default 'fa' */
|
|
5363
|
+
locale?: SupportedLocale;
|
|
5364
|
+
}
|
|
5365
|
+
declare const BulletinViewer: React$1.ForwardRefExoticComponent<BulletinViewerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5366
|
+
|
|
2920
5367
|
declare const calloutVariants: (props?: ({
|
|
2921
|
-
variant?: "
|
|
5368
|
+
variant?: "neutral" | "warning" | "success" | "info" | "destructive" | null | undefined;
|
|
2922
5369
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
2923
5370
|
interface CalloutProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof calloutVariants> {
|
|
2924
5371
|
/** Custom icon. Set to `null` to hide the icon. */
|
|
@@ -3077,53 +5524,6 @@ interface PartoPieChartProps {
|
|
|
3077
5524
|
}
|
|
3078
5525
|
declare const PartoPieChart: React$1.ForwardRefExoticComponent<PartoPieChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3079
5526
|
|
|
3080
|
-
/**
|
|
3081
|
-
* PartoHeatMap — brand-tinted heatmap with rounded cells, clean axis,
|
|
3082
|
-
* glassmorphic tooltip, and locale-aware formatting.
|
|
3083
|
-
* Built with Visx scales + raw SVG for full control.
|
|
3084
|
-
*/
|
|
3085
|
-
interface HeatMapDatum {
|
|
3086
|
-
x: string | number;
|
|
3087
|
-
y: number;
|
|
3088
|
-
}
|
|
3089
|
-
interface HeatMapRow {
|
|
3090
|
-
id: string;
|
|
3091
|
-
data: HeatMapDatum[];
|
|
3092
|
-
}
|
|
3093
|
-
interface PartoHeatMapProps {
|
|
3094
|
-
data: HeatMapRow[];
|
|
3095
|
-
locale?: 'fa' | 'en';
|
|
3096
|
-
className?: string;
|
|
3097
|
-
isLoading?: boolean;
|
|
3098
|
-
ariaLabel?: string;
|
|
3099
|
-
margin?: {
|
|
3100
|
-
top: number;
|
|
3101
|
-
right: number;
|
|
3102
|
-
bottom: number;
|
|
3103
|
-
left: number;
|
|
3104
|
-
};
|
|
3105
|
-
/** Custom color function: receives value and max → returns CSS color */
|
|
3106
|
-
colorScale?: (value: number, max: number) => string;
|
|
3107
|
-
/** Cell border radius */
|
|
3108
|
-
cellRadius?: number;
|
|
3109
|
-
/** Gap between cells */
|
|
3110
|
-
cellGap?: number;
|
|
3111
|
-
/** Custom tooltip content */
|
|
3112
|
-
renderTooltip?: (cell: {
|
|
3113
|
-
rowId: string;
|
|
3114
|
-
x: string | number;
|
|
3115
|
-
value: number;
|
|
3116
|
-
color: string;
|
|
3117
|
-
}) => React$1.ReactNode;
|
|
3118
|
-
/** X axis label */
|
|
3119
|
-
xAxisLabel?: string;
|
|
3120
|
-
/** Y axis label */
|
|
3121
|
-
yAxisLabel?: string;
|
|
3122
|
-
/** Filter which x-axis ticks to show */
|
|
3123
|
-
xTickFilter?: (value: string | number, index: number) => boolean;
|
|
3124
|
-
}
|
|
3125
|
-
declare const PartoHeatMap: React$1.ForwardRefExoticComponent<PartoHeatMapProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3126
|
-
|
|
3127
5527
|
/**
|
|
3128
5528
|
* PartoWordCloud — modern word cloud with smooth hover transitions,
|
|
3129
5529
|
* glassmorphic tooltip, and brand-harmonious coloring.
|
|
@@ -3198,23 +5598,46 @@ interface PartoAreaChartProps {
|
|
|
3198
5598
|
}
|
|
3199
5599
|
declare const PartoAreaChart: React$1.ForwardRefExoticComponent<PartoAreaChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3200
5600
|
|
|
3201
|
-
|
|
3202
|
-
|
|
5601
|
+
/**
|
|
5602
|
+
* PartoScatterChart — x/y scatter with optional bubble sizing (z) and
|
|
5603
|
+
* per-point color override. Wraps Recharts ScatterChart with theme-aware
|
|
5604
|
+
* styles, RTL-safe margins, and Persian number formatting.
|
|
5605
|
+
*
|
|
5606
|
+
* @example
|
|
5607
|
+
* <PartoScatterChart
|
|
5608
|
+
* data={[
|
|
5609
|
+
* { x: 10, y: 30, z: 200, label: 'پیج A' },
|
|
5610
|
+
* { x: 40, y: 50, z: 120, label: 'پیج B' },
|
|
5611
|
+
* ]}
|
|
5612
|
+
* xKey="x" yKey="y" zKey="z" labelKey="label"
|
|
5613
|
+
* xLabel="تعامل (٪)" yLabel="رشد (٪)"
|
|
5614
|
+
* />
|
|
5615
|
+
*/
|
|
5616
|
+
interface PartoScatterChartProps {
|
|
5617
|
+
/** Row-oriented data. Each row contains x, y, and optional z (size) + label. */
|
|
3203
5618
|
data: Array<Record<string, any>>;
|
|
3204
|
-
/**
|
|
3205
|
-
|
|
3206
|
-
/** Field name
|
|
3207
|
-
|
|
3208
|
-
/**
|
|
3209
|
-
|
|
3210
|
-
/**
|
|
3211
|
-
|
|
3212
|
-
/**
|
|
3213
|
-
|
|
3214
|
-
/**
|
|
3215
|
-
|
|
3216
|
-
/**
|
|
3217
|
-
|
|
5619
|
+
/** Field name for X axis value */
|
|
5620
|
+
xKey: string;
|
|
5621
|
+
/** Field name for Y axis value */
|
|
5622
|
+
yKey: string;
|
|
5623
|
+
/** Optional field for bubble size (z). When provided, becomes a bubble chart. */
|
|
5624
|
+
zKey?: string;
|
|
5625
|
+
/** Optional field for per-point label (shown in tooltip). */
|
|
5626
|
+
labelKey?: string;
|
|
5627
|
+
/** Optional field for color classification (per-point). Values are mapped to palette. */
|
|
5628
|
+
groupKey?: string;
|
|
5629
|
+
/** Min/max bubble radius (px) when zKey is set. Default [40, 400]. */
|
|
5630
|
+
zRange?: [number, number];
|
|
5631
|
+
/** Axis range [min, max] for X @default 'dataMin'..'dataMax' */
|
|
5632
|
+
xDomain?: [number | 'dataMin' | 'auto', number | 'dataMax' | 'auto'];
|
|
5633
|
+
/** Axis range [min, max] for Y */
|
|
5634
|
+
yDomain?: [number | 'dataMin' | 'auto', number | 'dataMax' | 'auto'];
|
|
5635
|
+
/** Axis labels */
|
|
5636
|
+
xLabel?: string;
|
|
5637
|
+
yLabel?: string;
|
|
5638
|
+
/** Unit suffix appended to tick labels (e.g., '٪') */
|
|
5639
|
+
xUnit?: string;
|
|
5640
|
+
yUnit?: string;
|
|
3218
5641
|
/** Chart margins */
|
|
3219
5642
|
margin?: {
|
|
3220
5643
|
top?: number;
|
|
@@ -3222,13 +5645,232 @@ interface PartoRadarChartProps {
|
|
|
3222
5645
|
bottom?: number;
|
|
3223
5646
|
left?: number;
|
|
3224
5647
|
};
|
|
3225
|
-
/**
|
|
5648
|
+
/** Show grid @default true */
|
|
5649
|
+
enableGrid?: boolean;
|
|
5650
|
+
/** Series name for tooltip header @default 'Scatter' */
|
|
5651
|
+
seriesName?: string;
|
|
5652
|
+
/** Locale for digit formatting @default 'fa' */
|
|
5653
|
+
locale?: SupportedLocale;
|
|
5654
|
+
/** Custom tooltip formatter (name, value) */
|
|
3226
5655
|
tooltipFormatter?: (name: string, value: number) => React$1.ReactNode;
|
|
3227
5656
|
className?: string;
|
|
3228
5657
|
isLoading?: boolean;
|
|
3229
5658
|
ariaLabel?: string;
|
|
3230
5659
|
}
|
|
3231
|
-
declare const
|
|
5660
|
+
declare const PartoScatterChart: React$1.ForwardRefExoticComponent<PartoScatterChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5661
|
+
|
|
5662
|
+
/**
|
|
5663
|
+
* PartoSankeyChart — flow visualization between nodes (source → target).
|
|
5664
|
+
* Uses Recharts' Sankey primitive. Wraps for theme-aware colors, Persian
|
|
5665
|
+
* number formatting, empty state, and a simpler API.
|
|
5666
|
+
*
|
|
5667
|
+
* @example
|
|
5668
|
+
* <PartoSankeyChart
|
|
5669
|
+
* nodes={[{ name: 'ورودی' }, { name: 'فرآیند' }, { name: 'خروجی' }]}
|
|
5670
|
+
* links={[
|
|
5671
|
+
* { source: 0, target: 1, value: 50 },
|
|
5672
|
+
* { source: 1, target: 2, value: 50 },
|
|
5673
|
+
* ]}
|
|
5674
|
+
* />
|
|
5675
|
+
*/
|
|
5676
|
+
interface SankeyNode {
|
|
5677
|
+
/** Displayed label for the node. */
|
|
5678
|
+
name: string;
|
|
5679
|
+
/** Optional explicit color override (CSS color or `hsl(var(--token))`). */
|
|
5680
|
+
color?: string;
|
|
5681
|
+
}
|
|
5682
|
+
interface SankeyLink {
|
|
5683
|
+
/** Zero-based index of the source node in `nodes`. */
|
|
5684
|
+
source: number;
|
|
5685
|
+
/** Zero-based index of the target node in `nodes`. */
|
|
5686
|
+
target: number;
|
|
5687
|
+
/** Flow magnitude — drives link thickness. */
|
|
5688
|
+
value: number;
|
|
5689
|
+
}
|
|
5690
|
+
interface PartoSankeyChartProps {
|
|
5691
|
+
nodes: SankeyNode[];
|
|
5692
|
+
links: SankeyLink[];
|
|
5693
|
+
/** Chart margins */
|
|
5694
|
+
margin?: {
|
|
5695
|
+
top?: number;
|
|
5696
|
+
right?: number;
|
|
5697
|
+
bottom?: number;
|
|
5698
|
+
left?: number;
|
|
5699
|
+
};
|
|
5700
|
+
/** Horizontal gap between node columns in pixels */
|
|
5701
|
+
nodePadding?: number;
|
|
5702
|
+
/** Node rectangle width in pixels */
|
|
5703
|
+
nodeWidth?: number;
|
|
5704
|
+
/** Sort nodes alphabetically within a column @default false (preserve input order) */
|
|
5705
|
+
iterations?: number;
|
|
5706
|
+
/** Locale for digit formatting in tooltip @default 'fa' */
|
|
5707
|
+
locale?: SupportedLocale;
|
|
5708
|
+
/** Custom tooltip formatter (receives link.source/target names + value) */
|
|
5709
|
+
tooltipFormatter?: (label: string, value: number) => React$1.ReactNode;
|
|
5710
|
+
className?: string;
|
|
5711
|
+
isLoading?: boolean;
|
|
5712
|
+
ariaLabel?: string;
|
|
5713
|
+
}
|
|
5714
|
+
declare const PartoSankeyChart: React$1.ForwardRefExoticComponent<PartoSankeyChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5715
|
+
|
|
5716
|
+
/**
|
|
5717
|
+
* ConceptPulseChart — افکارسنجی-flavored bubble chart where each data point
|
|
5718
|
+
* is a "concept" rendered as a center dot surrounded by **composition arcs**.
|
|
5719
|
+
* Built on Recharts ScatterChart but overrides the scatter shape with a
|
|
5720
|
+
* custom SVG renderer that draws the central bubble + concentric pie arcs
|
|
5721
|
+
* showing the composition breakdown (flow / emotion / sentiment).
|
|
5722
|
+
*
|
|
5723
|
+
* Heart-of-dashboard chart in the prototype — replaces a flat scatter when
|
|
5724
|
+
* "what's this concept made of?" matters as much as where it sits.
|
|
5725
|
+
*
|
|
5726
|
+
* @example
|
|
5727
|
+
* <ConceptPulseChart
|
|
5728
|
+
* data={[{
|
|
5729
|
+
* x: 30, y: 50, z: 200,
|
|
5730
|
+
* label: 'افزایش قیمت بنزین',
|
|
5731
|
+
* composition: { 'pro-gov': 20, 'internal-critic': 60, 'external-opponent': 20 },
|
|
5732
|
+
* }]}
|
|
5733
|
+
* compositionScale="flow"
|
|
5734
|
+
* />
|
|
5735
|
+
*/
|
|
5736
|
+
type CompositionScale = 'flow' | 'emotion' | 'custom';
|
|
5737
|
+
type ConceptComposition = Partial<Record<string, number>>;
|
|
5738
|
+
interface ConceptPoint {
|
|
5739
|
+
/** X coordinate. */
|
|
5740
|
+
x: number;
|
|
5741
|
+
/** Y coordinate. */
|
|
5742
|
+
y: number;
|
|
5743
|
+
/** Optional bubble size value (drives center radius). */
|
|
5744
|
+
z?: number;
|
|
5745
|
+
/** Concept label — shown in tooltip and aria. */
|
|
5746
|
+
label: string;
|
|
5747
|
+
/**
|
|
5748
|
+
* Composition breakdown — keys must match the chosen `compositionScale`:
|
|
5749
|
+
* - flow: 'pro-gov' | 'internal-critic' | 'internal-opponent' | 'external-opponent' | 'grey'
|
|
5750
|
+
* - emotion: 'anger' | 'joy' | 'fear' | … (9 emotion keys)
|
|
5751
|
+
* - custom: any keys, paired with `compositionTokens` prop
|
|
5752
|
+
*/
|
|
5753
|
+
composition: ConceptComposition;
|
|
5754
|
+
}
|
|
5755
|
+
interface ConceptPulseChartProps {
|
|
5756
|
+
data: ConceptPoint[];
|
|
5757
|
+
/** Which token family the composition keys map to @default "flow" */
|
|
5758
|
+
compositionScale?: CompositionScale;
|
|
5759
|
+
/**
|
|
5760
|
+
* For `compositionScale="custom"`, supply a key → CSS-color map
|
|
5761
|
+
* (e.g., `{ a: 'hsl(var(--brand-default))', b: 'red' }`).
|
|
5762
|
+
*/
|
|
5763
|
+
compositionTokens?: Record<string, string>;
|
|
5764
|
+
/** Per-key labels for tooltip (custom scale only) */
|
|
5765
|
+
compositionLabels?: Record<string, string>;
|
|
5766
|
+
/** Optional bubble size range (px area) when z is provided @default [80, 600] */
|
|
5767
|
+
zRange?: [number, number];
|
|
5768
|
+
/** Center bubble radius when z is omitted @default 14 */
|
|
5769
|
+
centerRadius?: number;
|
|
5770
|
+
/** Outer arc radius offset (added to centerRadius) @default 8 */
|
|
5771
|
+
arcThickness?: number;
|
|
5772
|
+
/** Show concept label below the bubble @default false (use tooltip instead) */
|
|
5773
|
+
showLabels?: boolean;
|
|
5774
|
+
/** Axis configuration */
|
|
5775
|
+
xLabel?: string;
|
|
5776
|
+
yLabel?: string;
|
|
5777
|
+
xUnit?: string;
|
|
5778
|
+
yUnit?: string;
|
|
5779
|
+
xDomain?: [number | 'dataMin' | 'auto', number | 'dataMax' | 'auto'];
|
|
5780
|
+
yDomain?: [number | 'dataMin' | 'auto', number | 'dataMax' | 'auto'];
|
|
5781
|
+
margin?: {
|
|
5782
|
+
top?: number;
|
|
5783
|
+
right?: number;
|
|
5784
|
+
bottom?: number;
|
|
5785
|
+
left?: number;
|
|
5786
|
+
};
|
|
5787
|
+
enableGrid?: boolean;
|
|
5788
|
+
locale?: SupportedLocale;
|
|
5789
|
+
className?: string;
|
|
5790
|
+
isLoading?: boolean;
|
|
5791
|
+
ariaLabel?: string;
|
|
5792
|
+
}
|
|
5793
|
+
declare const ConceptPulseChart: React$1.ForwardRefExoticComponent<ConceptPulseChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5794
|
+
|
|
5795
|
+
/**
|
|
5796
|
+
* PartoNetworkChart — force-directed node/link graph. Uses a lightweight
|
|
5797
|
+
* custom force-simulation (no d3-force dep) — repulsion + link attraction +
|
|
5798
|
+
* centering — to lay out nodes in a stable position inside the container.
|
|
5799
|
+
*
|
|
5800
|
+
* Consumers who want non-force layouts (circular, radial, manual x/y) can
|
|
5801
|
+
* pass nodes with explicit `x`/`y` to skip the simulation.
|
|
5802
|
+
*/
|
|
5803
|
+
interface NetworkNode {
|
|
5804
|
+
/** Unique id — used by links for source/target. */
|
|
5805
|
+
id: string;
|
|
5806
|
+
/** Displayed label. */
|
|
5807
|
+
label?: string;
|
|
5808
|
+
/** Optional numeric weight — drives node radius (larger = more important). */
|
|
5809
|
+
weight?: number;
|
|
5810
|
+
/** Category key — maps to a stable palette color. */
|
|
5811
|
+
group?: string;
|
|
5812
|
+
/** Fixed X (skip simulation for this node) */
|
|
5813
|
+
fx?: number;
|
|
5814
|
+
/** Fixed Y */
|
|
5815
|
+
fy?: number;
|
|
5816
|
+
/** Explicit color override */
|
|
5817
|
+
color?: string;
|
|
5818
|
+
}
|
|
5819
|
+
interface NetworkLink {
|
|
5820
|
+
/** Source node id. */
|
|
5821
|
+
source: string;
|
|
5822
|
+
/** Target node id. */
|
|
5823
|
+
target: string;
|
|
5824
|
+
/** Optional numeric weight — drives stroke width. */
|
|
5825
|
+
value?: number;
|
|
5826
|
+
}
|
|
5827
|
+
interface PartoNetworkChartProps {
|
|
5828
|
+
nodes: NetworkNode[];
|
|
5829
|
+
links: NetworkLink[];
|
|
5830
|
+
/** Base node radius in px @default 12 */
|
|
5831
|
+
nodeRadius?: number;
|
|
5832
|
+
/** Max node radius (when scaling by weight) @default 24 */
|
|
5833
|
+
maxNodeRadius?: number;
|
|
5834
|
+
/** Link base stroke width @default 1.5 */
|
|
5835
|
+
linkStrokeWidth?: number;
|
|
5836
|
+
/** Max link stroke width (when scaling by value) @default 6 */
|
|
5837
|
+
maxLinkStrokeWidth?: number;
|
|
5838
|
+
/** Number of simulation ticks @default 250 */
|
|
5839
|
+
iterations?: number;
|
|
5840
|
+
/** Show node labels @default true */
|
|
5841
|
+
showLabels?: boolean;
|
|
5842
|
+
/** Locale for labels + digits @default 'fa' */
|
|
5843
|
+
locale?: SupportedLocale;
|
|
5844
|
+
/** Tooltip formatter (node hover) */
|
|
5845
|
+
nodeTooltip?: (node: NetworkNode) => React$1.ReactNode;
|
|
5846
|
+
/** Callback when a node is clicked */
|
|
5847
|
+
onNodeClick?: (node: NetworkNode) => void;
|
|
5848
|
+
className?: string;
|
|
5849
|
+
isLoading?: boolean;
|
|
5850
|
+
ariaLabel?: string;
|
|
5851
|
+
}
|
|
5852
|
+
declare const PartoNetworkChart: React$1.ForwardRefExoticComponent<PartoNetworkChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5853
|
+
|
|
5854
|
+
/**
|
|
5855
|
+
* Chart-shaped empty state — a lightweight placeholder for charts with no data.
|
|
5856
|
+
* Designed to be drop-in compatible with `PartoBarChart`, `PartoLineChart`, etc.
|
|
5857
|
+
* Sits inside `ChartContainer` consumers, so it accepts the same wrapper
|
|
5858
|
+
* `className` and fills 100% of the parent's bounds.
|
|
5859
|
+
*/
|
|
5860
|
+
type EmptyChartShape = 'bar' | 'line' | 'pie' | 'network' | 'generic';
|
|
5861
|
+
interface EmptyChartProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
5862
|
+
/** Visual shape hint for the icon @default "generic" */
|
|
5863
|
+
shape?: EmptyChartShape;
|
|
5864
|
+
/** Primary message. Defaults to a locale-specific "no data" string. */
|
|
5865
|
+
message?: React$1.ReactNode;
|
|
5866
|
+
/** Secondary helper text below the message */
|
|
5867
|
+
hint?: React$1.ReactNode;
|
|
5868
|
+
/** Optional action (button, link) shown under the text */
|
|
5869
|
+
action?: React$1.ReactNode;
|
|
5870
|
+
/** Locale @default "fa" */
|
|
5871
|
+
locale?: SupportedLocale;
|
|
5872
|
+
}
|
|
5873
|
+
declare const EmptyChart: React$1.ForwardRefExoticComponent<EmptyChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3232
5874
|
|
|
3233
5875
|
type Direction = 'ltr' | 'rtl';
|
|
3234
5876
|
declare function useDocumentDirection(): Direction;
|
|
@@ -3377,4 +6019,113 @@ declare function transformNivoLineData(nivoData: Array<{
|
|
|
3377
6019
|
*/
|
|
3378
6020
|
declare function useScrollLock(locked: boolean): void;
|
|
3379
6021
|
|
|
3380
|
-
|
|
6022
|
+
/**
|
|
6023
|
+
* Fires `handler` whenever a pointer event lands outside the referenced
|
|
6024
|
+
* element. Use for closing dropdowns, popovers, dismissable cards, etc.
|
|
6025
|
+
*
|
|
6026
|
+
* @example
|
|
6027
|
+
* const ref = useRef<HTMLDivElement>(null)
|
|
6028
|
+
* useOutsideClick(ref, () => setOpen(false), { when: open })
|
|
6029
|
+
*
|
|
6030
|
+
* @param ref - Ref to the inside element. Clicks inside (or on descendants) are ignored.
|
|
6031
|
+
* @param handler - Called when an outside click is detected.
|
|
6032
|
+
* @param options.when - When false, the listener is detached (avoid stale closures).
|
|
6033
|
+
* @param options.events - Which events to listen for. Default: ['mousedown', 'touchstart'].
|
|
6034
|
+
* Using 'mousedown' (instead of 'click') closes the menu before any click handler
|
|
6035
|
+
* inside fires — matches Radix/Headless UI behaviour.
|
|
6036
|
+
*/
|
|
6037
|
+
declare function useOutsideClick<T extends HTMLElement = HTMLElement>(ref: React$1.RefObject<T | null>, handler: (event: MouseEvent | TouchEvent) => void, options?: {
|
|
6038
|
+
when?: boolean;
|
|
6039
|
+
events?: Array<'mousedown' | 'mouseup' | 'click' | 'touchstart' | 'touchend'>;
|
|
6040
|
+
}): void;
|
|
6041
|
+
|
|
6042
|
+
/**
|
|
6043
|
+
* Subscribes to a CSS media query and returns its current match state.
|
|
6044
|
+
* SSR-safe: returns `undefined` on the server and on the initial client
|
|
6045
|
+
* render (consumers must handle the `undefined` case).
|
|
6046
|
+
*
|
|
6047
|
+
* @example
|
|
6048
|
+
* const isLarge = useMediaQuery('(min-width: 1024px)')
|
|
6049
|
+
* if (isLarge) ... // narrow to true|false
|
|
6050
|
+
*
|
|
6051
|
+
* @example presets
|
|
6052
|
+
* const prefersDark = useMediaQuery('(prefers-color-scheme: dark)')
|
|
6053
|
+
* const reducedMotion = useMediaQuery('(prefers-reduced-motion: reduce)')
|
|
6054
|
+
*/
|
|
6055
|
+
declare function useMediaQuery(query: string): boolean | undefined;
|
|
6056
|
+
/** Common breakpoint helper. Returns `undefined` until hydrated. */
|
|
6057
|
+
declare function useBreakpoint(breakpoint: 'sm' | 'md' | 'lg' | 'xl' | '2xl'): boolean | undefined;
|
|
6058
|
+
|
|
6059
|
+
interface UseClipboardOptions {
|
|
6060
|
+
/** Reset `copied` back to false after this many ms. @default 2000 */
|
|
6061
|
+
resetAfter?: number | false;
|
|
6062
|
+
}
|
|
6063
|
+
interface UseClipboardReturn {
|
|
6064
|
+
/** True for `resetAfter` ms after a successful copy. */
|
|
6065
|
+
copied: boolean;
|
|
6066
|
+
/** True if the last copy attempt threw. */
|
|
6067
|
+
error: Error | null;
|
|
6068
|
+
/**
|
|
6069
|
+
* Copy a string to clipboard. Returns a promise that resolves to `true` on
|
|
6070
|
+
* success, `false` if the API isn't available, and rejects on permission
|
|
6071
|
+
* denial (caught and exposed via `error`).
|
|
6072
|
+
*/
|
|
6073
|
+
copy: (value: string) => Promise<boolean>;
|
|
6074
|
+
/** Manually reset `copied` and `error` state. */
|
|
6075
|
+
reset: () => void;
|
|
6076
|
+
}
|
|
6077
|
+
/**
|
|
6078
|
+
* useClipboard — copy text to the system clipboard with a transient `copied`
|
|
6079
|
+
* flag suitable for "Copied!" affordances. Uses the modern Clipboard API
|
|
6080
|
+
* with a `document.execCommand('copy')` fallback for older browsers.
|
|
6081
|
+
*
|
|
6082
|
+
* @example
|
|
6083
|
+
* const { copied, copy } = useClipboard()
|
|
6084
|
+
* <button onClick={() => copy('hello')}>{copied ? 'کپی شد' : 'کپی'}</button>
|
|
6085
|
+
*/
|
|
6086
|
+
declare function useClipboard(options?: UseClipboardOptions): UseClipboardReturn;
|
|
6087
|
+
|
|
6088
|
+
/**
|
|
6089
|
+
* Returns the value from the previous render. Useful for diffing props,
|
|
6090
|
+
* detecting transitions, and triggering effects on specific value changes.
|
|
6091
|
+
*
|
|
6092
|
+
* @example
|
|
6093
|
+
* const prevId = usePrevious(currentId)
|
|
6094
|
+
* useEffect(() => {
|
|
6095
|
+
* if (prevId !== currentId) trackNavigation(prevId, currentId)
|
|
6096
|
+
* }, [prevId, currentId])
|
|
6097
|
+
*
|
|
6098
|
+
* @returns `undefined` on first render, then the value from the previous render.
|
|
6099
|
+
*/
|
|
6100
|
+
declare function usePrevious<T>(value: T): T | undefined;
|
|
6101
|
+
|
|
6102
|
+
/**
|
|
6103
|
+
* Lightweight async-state hook for one-shot fetches without bringing in
|
|
6104
|
+
* TanStack Query. Tracks loading / data / error and exposes a stable
|
|
6105
|
+
* `run` function plus a `reset`. For request deduplication, caching,
|
|
6106
|
+
* retry, mutation, optimistic updates, etc. **prefer TanStack Query** —
|
|
6107
|
+
* this hook intentionally stays tiny.
|
|
6108
|
+
*
|
|
6109
|
+
* @example
|
|
6110
|
+
* const { data, error, status, run } = useAsync<User>()
|
|
6111
|
+
* useEffect(() => { run(() => fetch(`/api/users/${id}`).then(r => r.json())) }, [id, run])
|
|
6112
|
+
* if (status === 'loading') return <Skeleton />
|
|
6113
|
+
* if (status === 'error') return <ErrorState onRetry={run} />
|
|
6114
|
+
* return <UserCard user={data!} />
|
|
6115
|
+
*/
|
|
6116
|
+
type AsyncStatus = 'idle' | 'loading' | 'success' | 'error';
|
|
6117
|
+
interface UseAsyncReturn<T> {
|
|
6118
|
+
data: T | null;
|
|
6119
|
+
error: unknown;
|
|
6120
|
+
status: AsyncStatus;
|
|
6121
|
+
isIdle: boolean;
|
|
6122
|
+
isLoading: boolean;
|
|
6123
|
+
isSuccess: boolean;
|
|
6124
|
+
isError: boolean;
|
|
6125
|
+
/** Run an async operation. Cancels the previous in-flight result. */
|
|
6126
|
+
run: (operation: () => Promise<T>) => Promise<T | undefined>;
|
|
6127
|
+
reset: () => void;
|
|
6128
|
+
}
|
|
6129
|
+
declare function useAsync<T = unknown>(initialData?: T | null): UseAsyncReturn<T>;
|
|
6130
|
+
|
|
6131
|
+
export { ACTION_STATUS_KEYS, ACTION_TYPE_KEYS, ACTION_TYPE_META, Accordion, AccordionContent, AccordionItem, AccordionTrigger, type ActionStatusKey, ActionTimeline, type ActionTimelineDensity, type ActionTimelineGroupBy, ActionTimelineItem, type ActionTimelineItemData, type ActionTimelineItemProps, type ActionTimelineProps, ActionTypeChip, type ActionTypeChipProps, type ActionTypeKey, ActiveFiltersBar, type ActiveFiltersBarProps, ActiveFiltersClearAll, type ActiveFiltersClearAllProps, Alert, type AlertChannel, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertRuleCard, type AlertRuleCardProps, AlertTitle, AnimatedNumber, type AnimatedNumberProps, AppBar, type AppBarProps, AppLayout, AppLayoutContent, AspectRatio, type AsyncStatus, Autocomplete, type AutocompleteItem, type AutocompleteProps, Avatar, AvatarFallback, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, AvatarImage, AvatarTextSkeleton, type AvatarTextSkeletonProps, Badge, type BadgeProps, Banner, type BannerProps, type BenchmarkMarker, type BenchmarkTier, type BotDetectionData, type BotDetectionKey, BotDetectionMeter, type BotDetectionMeterProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BulletinViewer, type BulletinViewerProps, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, type ButtonProps, type ButtonVariantProps, CHART_FONT_FAMILY, CRITERION_TIER_KEYS, Calendar, type CalendarProps, Callout, CalloutDescription, type CalloutProps, CalloutTitle, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardProps, CardSkeleton, type CardSkeletonProps, CardTitle, 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, ConceptCard, type ConceptCardProps, 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 CriterionInputSpec, CriterionScoreCard, type CriterionScoreCardProps, type CriterionTierKey, type CriterionTierThresholds, type CriterionTrend, DEFAULT_CRITERION_THRESHOLDS, DEFAULT_PERIODS, DEFAULT_THRESHOLDS, DataTable, type DataTableColumn, type DataTableColumnVisibility, DataTableColumnVisibilityToggle, type DataTableColumnVisibilityToggleProps, type DataTableExpansion, DataTableExportButton, type DataTableExportButtonProps, type DataTablePagination, type DataTableProps, type DataTableSelection, type DataTableSort, DatePicker, type DatePickerProps, DateRangePicker, DateRangePickerInline, type DateRangePickerProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, 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, EMOTION_KEYS, ENGAGEMENT_RANGES, ENTITY_HEALTH_KEYS, EmotionBadge, type EmotionBadgeProps, type EmotionData, EmotionDistribution, type EmotionDistributionProps, type 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, type EntityHealthKey, ErrorBoundary, type ErrorBoundaryProps, ErrorState, type ErrorStateProps, type ExportableColumn, FLOW_KEYS, 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, FilterSection, type FilterSectionProps, FlowBadge, type FlowBadgeProps, FlowCell, type FlowCellProps, type FlowData, FlowDistribution, type FlowDistributionProps, type FlowKey, type FollowerGroup, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, FormRowSkeleton, type FormRowSkeletonProps, GROUP_LABELS, HashtagInput, type TagInputProps as HashtagInputProps, type HeatMapDatum, type HeatMapRow, type HotkeyCombo, HoverCard, HoverCardContent, HoverCardTrigger, type Icon, Icons, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputProps, InputVariants, InputWithIcon, type InputWithIconProps, JOB_STATUS_KEYS, 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, type 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, type LegacySize, type LoadingVariantProps, type Locale, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricCard, MetricCardContent, MetricCardDifferential, MetricCardHeader, MetricCardLabel, MetricCardSkeleton, type MetricCardSkeletonProps, MetricCardSparkline, MetricCardValue, MultiSelect, type MultiSelectOption, type MultiSelectProps, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavGroup, type NavGroupProps, NavItem, type NavItemBaseProps, type NavItemProps, type NavMatchStrategy, NavPanel, NavPanelContent, NavPanelFooter, NavPanelHeader, NavRail, NavRailContent, NavRailFooter, NavRailHeader, NavRailItem, NavRailProvider, NavRailSeparator, NavRailTrigger, NavSeparator, NavTree, type NavTreeContextValue, NavTreeProvider, type NavTreeProviderProps, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, type NetworkLink, type NetworkNode, NotificationCenter, type NotificationCenterProps, type NotificationFilter, type NotificationItem, type NotificationSeverity, PERSIAN_MONTHS, PERSIAN_MONTHS_SHORT, PERSIAN_WEEKDAYS, PERSIAN_WEEKDAYS_SHORT, PageCard, type PageCardContentMix, type PageCardProps, PageHeader, type PageHeaderProps, PageLoader, type PageLoaderProps, Pagination, PaginationContent, PaginationControlled, type PaginationControlledProps, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PartoAreaChart, type PartoAreaChartProps, PartoBarChart, type PartoBarChartProps, PartoHeatMap, type PartoHeatMapProps, PartoLineChart, type PartoLineChartProps, PartoNetworkChart, type PartoNetworkChartProps, PartoPieChart, type PartoPieChartProps, PartoRadarChart, type PartoRadarChartProps, PartoSankeyChart, type PartoSankeyChartProps, PartoScatterChart, type PartoScatterChartProps, type PartoToasterProps, PartoWordCloud, type PartoWordCloudProps, type PeriodOption, PeriodSelector, type PeriodSelectorProps, type PlatformMetadata, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, 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, ReportComposer, type ReportComposerProps, ReportSection, type ReportSectionProps, ResizableHandle, ResizablePanel, ResizablePanelGroup, RouteProgress, type RouteProgressHandle, type RouteProgressProps, SONNER_DEFAULT_DURATION, STAGE_STATUS_KEYS, SafeImage, type SafeImageProps, type SankeyLink, type SankeyNode, SavedQueryCard, type SavedQueryCardProps, type SavedQueryFilter, ScrollArea, ScrollBar, SearchInput, type SearchInputProps, type SectionItem, SectionNavigator, type SectionNavigatorProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectTriggerVariants, SelectValue, SentimentBadge, type SentimentBadgeProps, SentimentCell, type SentimentCellProps, type SentimentData, SentimentDistribution, type SentimentDistributionProps, Separator, SeverityBadge, type SeverityBadgeProps, type SeverityKey, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, 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, type SocialPlatform, SocialPlatformBadge, type SocialPlatformBadgeProps, type SortDirection, Sparkline, SparklineCell, type SparklineCellProps, type SparklineProps, type SparklineTrend, type SparklineVariant, Spinner, type SpinnerProps, type StageStatusKey, type StandardSize, StatDeltaCell, type StatDeltaCellProps, StatDisplay, type StatDisplayProps, StatusBadge, type StatusBadgeProps, StatusFlow, type StatusFlowOrientation, type StatusFlowProps, type StatusFlowSize, StatusFlowStage, type StatusFlowStageData, type StatusFlowStageProps, type StatusKey, StatusPulseCell, type StatusPulseCellProps, Step, type StepProps, Stepper, type StepperProps, type 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, Textarea, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TrendCell, type TrendCellProps, TrendIndicator, type TrendIndicatorProps, type UIStringKeys, type UIStrings, UI_STRINGS, type UseAsyncReturn, type UseClipboardOptions, type UseClipboardReturn, type UseHotkeysOptions, 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, actionStatusLabels, actionTypeChipVariants, actionTypeLabels, actionTypeVerbs, appBarVariants, avatarGroupVariants, badgeVariants, bannerVariants, buildCsv, buildPostingFrequencyRows, buildTsv, buttonGroupVariants, buttonVariants, calloutVariants, cardVariants, cn, computeComparisonWinners, convertToLocalNumbers, countComparisonWins, defaultActions as defaultPostActions, downloadFile, emotionLabels, engagementUiTranslations, entityHealthLabels, entityHealthPriority, findTierIndex, flowLabels, formatAbsoluteTime, formatHotkey, formatJalaliDate, formatLargeNumber, formatNumber, formatPersianDateRange, formatRelativeLocaleTime, formatRelativeTime, formatTimeRemaining, getCriterionTier, getCurrentRangeIndex, getEngagementRanges, getEngagementRateBenchmarkTiers, getFollowerGroup, getPersianDay, getPersianMonth, getPersianMonthName, getPersianMonthNameShort, getPersianMonthsForDropdown, getPersianWeekdayName, getPersianYear, getPersianYearsForDropdown, getScoreBenchmarkTiers, getUIStrings, tagInputVariants as hashtagInputVariants, inputVariants, isActiveJobStatus, isCriticalEntityHealth, isRTL, jalaliToGregorian, jobStatusLabels, navItemVariants, navigationMenuTriggerStyle, normalizeSize, pageLoaderVariants, postCardVariants, postHeaderVariants, profileCardVariants, resolveLevel, sentimentLabels, severityLabels, siteHeaderVariants, socialPlatformBadgeVariants, spinnerVariants, stageStatusLabels, statDisplayVariants, statusLabels, tagInputVariants, toEnglishDigits, toPersianDigits, toggleVariants, transformNivoLineData, useAsync, useBreakpoint, useChartTheme, useClipboard, useDebounce, useDocumentDirection, useFormField, useHotkeys, useInfiniteScroll, useIsMobile, useJobWizard, useJobWizardState, useLocalStorage, useMediaQuery, useNavRail, useNavTree, useOutsideClick, usePrevious, useRootStyles, useScrollLock, useSidebar };
|