@parto-system-design/ui 1.1.4 → 1.1.7
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/AGENTS.md +233 -0
- package/LICENSE +21 -0
- package/README.md +96 -43
- package/dist/chunk-2UD3LGVX.cjs +316 -0
- package/dist/chunk-2UD3LGVX.cjs.map +1 -0
- package/dist/chunk-34JUCX2G.cjs +43 -0
- package/dist/chunk-34JUCX2G.cjs.map +1 -0
- package/dist/chunk-3AIJKXBV.cjs +242 -0
- package/dist/chunk-3AIJKXBV.cjs.map +1 -0
- package/dist/chunk-4SVQNEVH.js +173 -0
- package/dist/chunk-4SVQNEVH.js.map +1 -0
- package/dist/chunk-53QY4PD3.js +908 -0
- package/dist/chunk-53QY4PD3.js.map +1 -0
- package/dist/chunk-5JJSRGJD.js +31 -0
- package/dist/chunk-5JJSRGJD.js.map +1 -0
- package/dist/chunk-5K6E4ZSW.cjs +77 -0
- package/dist/chunk-5K6E4ZSW.cjs.map +1 -0
- package/dist/chunk-5NY26ULO.js +89 -0
- package/dist/chunk-5NY26ULO.js.map +1 -0
- package/dist/chunk-7RVPG3LE.cjs +231 -0
- package/dist/chunk-7RVPG3LE.cjs.map +1 -0
- package/dist/chunk-7Y4V3R3Y.cjs +120 -0
- package/dist/chunk-7Y4V3R3Y.cjs.map +1 -0
- package/dist/chunk-AXAY64KL.js +39 -0
- package/dist/chunk-AXAY64KL.js.map +1 -0
- package/dist/chunk-AYEK3WOM.js +207 -0
- package/dist/chunk-AYEK3WOM.js.map +1 -0
- package/dist/chunk-BRMBLIQG.js +53 -0
- package/dist/chunk-BRMBLIQG.js.map +1 -0
- package/dist/chunk-CAJKSTXX.cjs +54 -0
- package/dist/chunk-CAJKSTXX.cjs.map +1 -0
- package/dist/chunk-CKFWMHQU.js +401 -0
- package/dist/chunk-CKFWMHQU.js.map +1 -0
- package/dist/chunk-CV3N3HVK.js +672 -0
- package/dist/chunk-CV3N3HVK.js.map +1 -0
- package/dist/chunk-D2EBLE2B.cjs +220 -0
- package/dist/chunk-D2EBLE2B.cjs.map +1 -0
- package/dist/chunk-D5XCQDFS.js +92 -0
- package/dist/chunk-D5XCQDFS.js.map +1 -0
- package/dist/chunk-GDHRYKVM.js +45 -0
- package/dist/chunk-GDHRYKVM.js.map +1 -0
- package/dist/chunk-GKRAZGDI.cjs +84 -0
- package/dist/chunk-GKRAZGDI.cjs.map +1 -0
- package/dist/chunk-HEYMLQOV.cjs +94 -0
- package/dist/chunk-HEYMLQOV.cjs.map +1 -0
- package/dist/chunk-HF6XU5NI.js +84 -0
- package/dist/chunk-HF6XU5NI.js.map +1 -0
- package/dist/chunk-HJPDZOMJ.cjs +87 -0
- package/dist/chunk-HJPDZOMJ.cjs.map +1 -0
- package/dist/chunk-HUCC3QH5.cjs +53 -0
- package/dist/chunk-HUCC3QH5.cjs.map +1 -0
- package/dist/chunk-HYZ6BQPS.cjs +425 -0
- package/dist/chunk-HYZ6BQPS.cjs.map +1 -0
- package/dist/chunk-IQHKJ4SS.js +213 -0
- package/dist/chunk-IQHKJ4SS.js.map +1 -0
- package/dist/chunk-ISCSZMYW.cjs +106 -0
- package/dist/chunk-ISCSZMYW.cjs.map +1 -0
- package/dist/chunk-IXFEFIDO.js +82 -0
- package/dist/chunk-IXFEFIDO.js.map +1 -0
- package/dist/chunk-JUBHQAA2.js +53 -0
- package/dist/chunk-JUBHQAA2.js.map +1 -0
- package/dist/chunk-KCWRCSI7.js +62 -0
- package/dist/chunk-KCWRCSI7.js.map +1 -0
- package/dist/chunk-L2L5CKC2.js +291 -0
- package/dist/chunk-L2L5CKC2.js.map +1 -0
- package/dist/chunk-LLJR7FV3.js +135 -0
- package/dist/chunk-LLJR7FV3.js.map +1 -0
- package/dist/chunk-LZMCMZZF.js +118 -0
- package/dist/chunk-LZMCMZZF.js.map +1 -0
- package/dist/chunk-M5CHZ5BA.js +124 -0
- package/dist/chunk-M5CHZ5BA.js.map +1 -0
- package/dist/chunk-MBCTRNTG.js +89 -0
- package/dist/chunk-MBCTRNTG.js.map +1 -0
- package/dist/chunk-MEK4RSGC.js +65 -0
- package/dist/chunk-MEK4RSGC.js.map +1 -0
- package/dist/chunk-MFTX2DDQ.js +27 -0
- package/dist/chunk-MFTX2DDQ.js.map +1 -0
- package/dist/chunk-MKYVQQBV.cjs +114 -0
- package/dist/chunk-MKYVQQBV.cjs.map +1 -0
- package/dist/chunk-MQGQVI3W.cjs +950 -0
- package/dist/chunk-MQGQVI3W.cjs.map +1 -0
- package/dist/chunk-NEFZJHE4.cjs +157 -0
- package/dist/chunk-NEFZJHE4.cjs.map +1 -0
- package/dist/chunk-NEML6RCV.js +405 -0
- package/dist/chunk-NEML6RCV.js.map +1 -0
- package/dist/chunk-NV4JOKWL.cjs +197 -0
- package/dist/chunk-NV4JOKWL.cjs.map +1 -0
- package/dist/chunk-O2JG7WY5.cjs +121 -0
- package/dist/chunk-O2JG7WY5.cjs.map +1 -0
- package/dist/chunk-OEVMKFFL.cjs +140 -0
- package/dist/chunk-OEVMKFFL.cjs.map +1 -0
- package/dist/chunk-ONO2FTV4.cjs +68 -0
- package/dist/chunk-ONO2FTV4.cjs.map +1 -0
- package/dist/chunk-OS6CMYAS.cjs +79 -0
- package/dist/chunk-OS6CMYAS.cjs.map +1 -0
- package/dist/chunk-P5XHPNJG.cjs +430 -0
- package/dist/chunk-P5XHPNJG.cjs.map +1 -0
- package/dist/chunk-QJ7UB2ZQ.js +98 -0
- package/dist/chunk-QJ7UB2ZQ.js.map +1 -0
- package/dist/chunk-RA5KZNG5.js +269 -0
- package/dist/chunk-RA5KZNG5.js.map +1 -0
- package/dist/chunk-RJ3HYZ7S.js +44 -0
- package/dist/chunk-RJ3HYZ7S.js.map +1 -0
- package/dist/chunk-RZNRIOLT.js +128 -0
- package/dist/chunk-RZNRIOLT.js.map +1 -0
- package/dist/chunk-S5IPJQZ3.cjs +161 -0
- package/dist/chunk-S5IPJQZ3.cjs.map +1 -0
- package/dist/chunk-SB5DSYR5.js +211 -0
- package/dist/chunk-SB5DSYR5.js.map +1 -0
- package/dist/chunk-SCGW2BH4.cjs +69 -0
- package/dist/chunk-SCGW2BH4.cjs.map +1 -0
- package/dist/chunk-SCX6AR53.cjs +108 -0
- package/dist/chunk-SCX6AR53.cjs.map +1 -0
- package/dist/chunk-SFXV2DUH.js +106 -0
- package/dist/chunk-SFXV2DUH.js.map +1 -0
- package/dist/chunk-SXEPGD4Z.cjs +152 -0
- package/dist/chunk-SXEPGD4Z.cjs.map +1 -0
- package/dist/chunk-SZMVOHT7.cjs +107 -0
- package/dist/chunk-SZMVOHT7.cjs.map +1 -0
- package/dist/chunk-U5FLLCGC.cjs +151 -0
- package/dist/chunk-U5FLLCGC.cjs.map +1 -0
- package/dist/chunk-VO3B75F6.cjs +111 -0
- package/dist/chunk-VO3B75F6.cjs.map +1 -0
- package/dist/chunk-YAJWTNOX.js +106 -0
- package/dist/chunk-YAJWTNOX.js.map +1 -0
- package/dist/chunk-YC5KLN6I.js +139 -0
- package/dist/chunk-YC5KLN6I.js.map +1 -0
- package/dist/chunk-YE477L2H.cjs +272 -0
- package/dist/chunk-YE477L2H.cjs.map +1 -0
- package/dist/chunk-Z2TY4A75.cjs +700 -0
- package/dist/chunk-Z2TY4A75.cjs.map +1 -0
- package/dist/chunk-Z56O7UEU.cjs +136 -0
- package/dist/chunk-Z56O7UEU.cjs.map +1 -0
- package/dist/chunk-ZZFNJR2E.js +71 -0
- package/dist/chunk-ZZFNJR2E.js.map +1 -0
- package/dist/components/charts/PartoAreaChart.cjs +15 -0
- package/dist/components/charts/PartoAreaChart.cjs.map +1 -0
- package/dist/components/charts/PartoAreaChart.d.cts +51 -0
- package/dist/components/charts/PartoAreaChart.d.ts +51 -0
- package/dist/components/charts/PartoAreaChart.js +6 -0
- package/dist/components/charts/PartoAreaChart.js.map +1 -0
- package/dist/components/charts/PartoBarChart.cjs +15 -0
- package/dist/components/charts/PartoBarChart.cjs.map +1 -0
- package/dist/components/charts/PartoBarChart.d.cts +55 -0
- package/dist/components/charts/PartoBarChart.d.ts +55 -0
- package/dist/components/charts/PartoBarChart.js +6 -0
- package/dist/components/charts/PartoBarChart.js.map +1 -0
- package/dist/components/charts/PartoLineChart.cjs +15 -0
- package/dist/components/charts/PartoLineChart.cjs.map +1 -0
- package/dist/components/charts/PartoLineChart.d.cts +49 -0
- package/dist/components/charts/PartoLineChart.d.ts +49 -0
- package/dist/components/charts/PartoLineChart.js +6 -0
- package/dist/components/charts/PartoLineChart.js.map +1 -0
- package/dist/components/charts/PartoPieChart.cjs +15 -0
- package/dist/components/charts/PartoPieChart.cjs.map +1 -0
- package/dist/components/charts/PartoPieChart.d.cts +44 -0
- package/dist/components/charts/PartoPieChart.d.ts +44 -0
- package/dist/components/charts/PartoPieChart.js +6 -0
- package/dist/components/charts/PartoPieChart.js.map +1 -0
- package/dist/components/ui/alert-rule-card.cjs +15 -0
- package/dist/components/ui/alert-rule-card.cjs.map +1 -0
- package/dist/components/ui/alert-rule-card.d.cts +38 -0
- package/dist/components/ui/alert-rule-card.d.ts +38 -0
- package/dist/components/ui/alert-rule-card.js +6 -0
- package/dist/components/ui/alert-rule-card.js.map +1 -0
- package/dist/components/ui/avatar.cjs +21 -0
- package/dist/components/ui/avatar.cjs.map +1 -0
- package/dist/components/ui/avatar.d.cts +18 -0
- package/dist/components/ui/avatar.d.ts +18 -0
- package/dist/components/ui/avatar.js +4 -0
- package/dist/components/ui/avatar.js.map +1 -0
- package/dist/components/ui/badge.cjs +17 -0
- package/dist/components/ui/badge.cjs.map +1 -0
- package/dist/components/ui/badge.d.cts +16 -0
- package/dist/components/ui/badge.d.ts +16 -0
- package/dist/components/ui/badge.js +4 -0
- package/dist/components/ui/badge.js.map +1 -0
- package/dist/components/ui/button.cjs +18 -0
- package/dist/components/ui/button.cjs.map +1 -0
- package/dist/components/ui/button.d.cts +37 -0
- package/dist/components/ui/button.d.ts +37 -0
- package/dist/components/ui/button.js +5 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/calendar.cjs +15 -0
- package/dist/components/ui/calendar.cjs.map +1 -0
- package/dist/components/ui/calendar.d.cts +17 -0
- package/dist/components/ui/calendar.d.ts +17 -0
- package/dist/components/ui/calendar.js +6 -0
- package/dist/components/ui/calendar.js.map +1 -0
- package/dist/components/ui/card.cjs +37 -0
- package/dist/components/ui/card.cjs.map +1 -0
- package/dist/components/ui/card.d.cts +18 -0
- package/dist/components/ui/card.d.ts +18 -0
- package/dist/components/ui/card.js +4 -0
- package/dist/components/ui/card.js.map +1 -0
- package/dist/components/ui/concept-card.cjs +18 -0
- package/dist/components/ui/concept-card.cjs.map +1 -0
- package/dist/components/ui/concept-card.d.cts +5 -0
- package/dist/components/ui/concept-card.d.ts +5 -0
- package/dist/components/ui/concept-card.js +9 -0
- package/dist/components/ui/concept-card.js.map +1 -0
- package/dist/components/ui/data-table.cjs +18 -0
- package/dist/components/ui/data-table.cjs.map +1 -0
- package/dist/components/ui/data-table.d.cts +181 -0
- package/dist/components/ui/data-table.d.ts +181 -0
- package/dist/components/ui/data-table.js +9 -0
- package/dist/components/ui/data-table.js.map +1 -0
- package/dist/components/ui/dialog.cjs +49 -0
- package/dist/components/ui/dialog.cjs.map +1 -0
- package/dist/components/ui/dialog.d.cts +22 -0
- package/dist/components/ui/dialog.d.ts +22 -0
- package/dist/components/ui/dialog.js +4 -0
- package/dist/components/ui/dialog.js.map +1 -0
- package/dist/components/ui/filter-provider.cjs +20 -0
- package/dist/components/ui/filter-provider.cjs.map +1 -0
- package/dist/components/ui/filter-provider.d.cts +49 -0
- package/dist/components/ui/filter-provider.d.ts +49 -0
- package/dist/components/ui/filter-provider.js +3 -0
- package/dist/components/ui/filter-provider.js.map +1 -0
- package/dist/components/ui/input.cjs +22 -0
- package/dist/components/ui/input.cjs.map +1 -0
- package/dist/components/ui/input.d.cts +16 -0
- package/dist/components/ui/input.d.ts +16 -0
- package/dist/components/ui/input.js +5 -0
- package/dist/components/ui/input.js.map +1 -0
- package/dist/components/ui/iran-province-heat.cjs +13 -0
- package/dist/components/ui/iran-province-heat.cjs.map +1 -0
- package/dist/components/ui/iran-province-heat.d.cts +64 -0
- package/dist/components/ui/iran-province-heat.d.ts +64 -0
- package/dist/components/ui/iran-province-heat.js +4 -0
- package/dist/components/ui/iran-province-heat.js.map +1 -0
- package/dist/components/ui/page-card.cjs +16 -0
- package/dist/components/ui/page-card.cjs.map +1 -0
- package/dist/components/ui/page-card.d.cts +6 -0
- package/dist/components/ui/page-card.d.ts +6 -0
- package/dist/components/ui/page-card.js +7 -0
- package/dist/components/ui/page-card.js.map +1 -0
- package/dist/components/ui/popover.cjs +25 -0
- package/dist/components/ui/popover.cjs.map +1 -0
- package/dist/components/ui/popover.d.cts +9 -0
- package/dist/components/ui/popover.d.ts +9 -0
- package/dist/components/ui/popover.js +4 -0
- package/dist/components/ui/popover.js.map +1 -0
- package/dist/components/ui/saved-query-card.cjs +15 -0
- package/dist/components/ui/saved-query-card.cjs.map +1 -0
- package/dist/components/ui/saved-query-card.d.cts +41 -0
- package/dist/components/ui/saved-query-card.d.ts +41 -0
- package/dist/components/ui/saved-query-card.js +6 -0
- package/dist/components/ui/saved-query-card.js.map +1 -0
- package/dist/components/ui/separator.cjs +13 -0
- package/dist/components/ui/separator.cjs.map +1 -0
- package/dist/components/ui/separator.d.cts +9 -0
- package/dist/components/ui/separator.d.ts +9 -0
- package/dist/components/ui/separator.js +4 -0
- package/dist/components/ui/separator.js.map +1 -0
- package/dist/components/ui/sheet.cjs +45 -0
- package/dist/components/ui/sheet.cjs.map +1 -0
- package/dist/components/ui/sheet.d.cts +44 -0
- package/dist/components/ui/sheet.d.ts +44 -0
- package/dist/components/ui/sheet.js +4 -0
- package/dist/components/ui/sheet.js.map +1 -0
- package/dist/components/ui/sparkline.cjs +13 -0
- package/dist/components/ui/sparkline.cjs.map +1 -0
- package/dist/components/ui/sparkline.d.cts +36 -0
- package/dist/components/ui/sparkline.d.ts +36 -0
- package/dist/components/ui/sparkline.js +4 -0
- package/dist/components/ui/sparkline.js.map +1 -0
- package/dist/components/ui/tooltip.cjs +25 -0
- package/dist/components/ui/tooltip.cjs.map +1 -0
- package/dist/components/ui/tooltip.d.cts +17 -0
- package/dist/components/ui/tooltip.d.ts +17 -0
- package/dist/components/ui/tooltip.js +4 -0
- package/dist/components/ui/tooltip.js.map +1 -0
- package/dist/concept-card-CcOBb2Nz.d.ts +83 -0
- package/dist/concept-card-RwPbqJ06.d.cts +83 -0
- package/dist/hooks/use-hotkey-registry.cjs +21 -0
- package/dist/hooks/use-hotkey-registry.cjs.map +1 -0
- package/dist/hooks/use-hotkey-registry.d.cts +65 -0
- package/dist/hooks/use-hotkey-registry.d.ts +65 -0
- package/dist/hooks/use-hotkey-registry.js +4 -0
- package/dist/hooks/use-hotkey-registry.js.map +1 -0
- package/dist/hooks/use-hotkeys.cjs +16 -0
- package/dist/hooks/use-hotkeys.cjs.map +1 -0
- package/dist/hooks/use-hotkeys.d.cts +66 -0
- package/dist/hooks/use-hotkeys.d.ts +66 -0
- package/dist/hooks/use-hotkeys.js +3 -0
- package/dist/hooks/use-hotkeys.js.map +1 -0
- package/dist/i18n-ArS3mqj0.d.ts +344 -0
- package/dist/i18n-CAd9wGOr.d.cts +344 -0
- package/dist/index.cjs +16630 -10326
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +910 -119
- package/dist/index.d.cts +3177 -844
- package/dist/index.d.ts +3177 -844
- package/dist/index.js +14211 -8649
- package/dist/index.js.map +1 -1
- package/dist/page-card-CO92oXkc.d.ts +100 -0
- package/dist/page-card-DOl50DqJ.d.cts +100 -0
- package/dist/utils-DlXWmDZ-.d.cts +35 -0
- package/dist/utils-DlXWmDZ-.d.ts +35 -0
- package/package.json +160 -4
- package/tailwind.config.ts +61 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { S as SupportedLocale } from './utils-DlXWmDZ-.js';
|
|
2
|
+
export { c as cn, a as convertToLocalNumbers, e as formatAbsoluteTime, f as formatLargeNumber, b as formatNumber, d as formatRelativeTime } from './utils-DlXWmDZ-.js';
|
|
3
|
+
import { A as ActionStatusKey, a as ActionTypeKey, E as EntityHealthKey, J as JobStatusKey, S as StageStatusKey, b as EmotionKey, F as FlowKey, c as StatusKey, d as SeverityKey } from './i18n-ArS3mqj0.js';
|
|
4
|
+
export { p as ACTION_STATUS_KEYS, w as ACTION_TYPE_KEYS, f as EMOTION_KEYS, z as ENTITY_HEALTH_KEYS, h as FLOW_KEYS, m as JOB_STATUS_KEYS, L as Locale, u as STAGE_STATUS_KEYS, G as UIStringKeys, H as UIStrings, U as UI_STRINGS, q as actionStatusLabels, x as actionTypeLabels, y as actionTypeVerbs, g as emotionLabels, e as engagementUiTranslations, B as entityHealthLabels, C as entityHealthPriority, j as flowLabels, r as formatRelativeLocaleTime, t as formatTimeRemaining, I as getUIStrings, o as isActiveJobStatus, D as isCriticalEntityHealth, i as isRTL, n as jobStatusLabels, s as sentimentLabels, l as severityLabels, v as stageStatusLabels, k as statusLabels } from './i18n-ArS3mqj0.js';
|
|
2
5
|
import * as React$1 from 'react';
|
|
3
6
|
import { LucideIcon } from 'lucide-react';
|
|
4
7
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
@@ -6,34 +9,54 @@ import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
|
|
6
9
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
7
10
|
import { VariantProps } from 'class-variance-authority';
|
|
8
11
|
import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
|
|
12
|
+
export { AlertChannel, AlertRuleCard, AlertRuleCardProps } from './components/ui/alert-rule-card.js';
|
|
9
13
|
import * as AspectRatioPrimitive from '@radix-ui/react-aspect-ratio';
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
+
export { Avatar, AvatarFallback, AvatarImage } from './components/ui/avatar.js';
|
|
15
|
+
export { Badge, BadgeProps, badgeVariants } from './components/ui/badge.js';
|
|
16
|
+
import { Button, ButtonProps } from './components/ui/button.js';
|
|
17
|
+
export { ButtonVariantProps, LoadingVariantProps, buttonVariants } from './components/ui/button.js';
|
|
18
|
+
import { Separator } from './components/ui/separator.js';
|
|
19
|
+
export { Calendar, CalendarProps } from './components/ui/calendar.js';
|
|
20
|
+
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardProps, CardTitle, cardVariants } from './components/ui/card.js';
|
|
14
21
|
import useEmblaCarousel, { UseEmblaCarouselType } from 'embla-carousel-react';
|
|
15
22
|
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
16
23
|
import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
|
|
17
24
|
import { Command as Command$1 } from 'cmdk';
|
|
18
|
-
import
|
|
25
|
+
import { Dialog } from './components/ui/dialog.js';
|
|
26
|
+
export { DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from './components/ui/dialog.js';
|
|
27
|
+
import { HotkeyCombo } from './hooks/use-hotkeys.js';
|
|
28
|
+
export { UseHotkeysOptions, formatHotkey, useHotkeys } from './hooks/use-hotkeys.js';
|
|
19
29
|
import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
|
|
30
|
+
import { S as SentimentData, F as FlowData } from './concept-card-CcOBb2Nz.js';
|
|
31
|
+
export { C as ConceptCard, a as ConceptCardProps, b as FlowDistribution, c as FlowDistributionProps, d as SentimentDistribution, e as SentimentDistributionProps } from './concept-card-CcOBb2Nz.js';
|
|
32
|
+
import { DateRange } from 'react-day-picker';
|
|
20
33
|
import { Drawer as Drawer$1 } from 'vaul';
|
|
21
34
|
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
22
35
|
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
36
|
+
import { FilterStateShape } from './components/ui/filter-provider.js';
|
|
37
|
+
export { FilterContextValue, FilterProvider, FilterProviderProps, useFilterState, useFilterStateOptional } from './components/ui/filter-provider.js';
|
|
23
38
|
import * as react_hook_form from 'react-hook-form';
|
|
24
39
|
import { FieldValues, FieldPath, ControllerProps } from 'react-hook-form';
|
|
25
40
|
import { Slot } from '@radix-ui/react-slot';
|
|
26
41
|
import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
|
|
42
|
+
import { InputProps, Input, InputVariants } from './components/ui/input.js';
|
|
43
|
+
export { inputVariants } from './components/ui/input.js';
|
|
44
|
+
export { IranProvinceCell, IranProvinceHeat, IranProvinceHeatProps, IranProvinceHeatScale } from './components/ui/iran-province-heat.js';
|
|
27
45
|
import { OTPInput } from 'input-otp';
|
|
28
46
|
import * as MenubarPrimitive from '@radix-ui/react-menubar';
|
|
29
47
|
import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';
|
|
30
|
-
import
|
|
48
|
+
import { S as SocialPlatform } from './page-card-CO92oXkc.js';
|
|
49
|
+
export { f as BotDetectionData, e as BotDetectionKey, B as BotDetectionMeter, g as BotDetectionMeterProps, P as PageCard, a as PageCardContentMix, b as PageCardProps, c as SocialPlatformBadge, d as SocialPlatformBadgeProps, s as socialPlatformBadgeVariants } from './page-card-CO92oXkc.js';
|
|
50
|
+
export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from './components/ui/popover.js';
|
|
31
51
|
import * as ProgressPrimitive from '@radix-ui/react-progress';
|
|
32
52
|
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
|
|
33
53
|
import * as ResizablePrimitive from 'react-resizable-panels';
|
|
34
54
|
import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
|
|
35
55
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
36
|
-
|
|
56
|
+
export { Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger } from './components/ui/sheet.js';
|
|
57
|
+
import { TooltipContent } from './components/ui/tooltip.js';
|
|
58
|
+
export { Tooltip, TooltipProvider, TooltipTrigger } from './components/ui/tooltip.js';
|
|
59
|
+
export { Sparkline, SparklineProps, SparklineTrend, SparklineVariant } from './components/ui/sparkline.js';
|
|
37
60
|
import * as SliderPrimitive from '@radix-ui/react-slider';
|
|
38
61
|
import { ToasterProps } from 'sonner';
|
|
39
62
|
export { toast } from 'sonner';
|
|
@@ -41,38 +64,22 @@ import * as SwitchPrimitive from '@radix-ui/react-switch';
|
|
|
41
64
|
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
42
65
|
import * as TogglePrimitive from '@radix-ui/react-toggle';
|
|
43
66
|
import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
* Format number to Instagram-style short format (English only).
|
|
61
|
-
* @example formatNumber(123456, 'short') => '123K'
|
|
62
|
-
* @example formatNumber(123456, 'exact') => '123,456'
|
|
63
|
-
*/
|
|
64
|
-
declare function formatNumber(num: number | undefined, format?: 'exact' | 'short'): string;
|
|
65
|
-
/**
|
|
66
|
-
* Format date to relative time with absolute on hover (Persian)
|
|
67
|
-
* @example formatRelativeTime(new Date()) => '۲ ساعت پیش'
|
|
68
|
-
*/
|
|
69
|
-
declare function formatRelativeTime(date: Date | string | number): string;
|
|
70
|
-
/**
|
|
71
|
-
* Format date to absolute format (Persian / Jalali)
|
|
72
|
-
* Uses date-fns-jalali for accurate Jalali conversion.
|
|
73
|
-
* @example formatAbsoluteTime(new Date()) => '۱۵ دی ۱۴۰۳، ۱۵:۳۰'
|
|
74
|
-
*/
|
|
75
|
-
declare function formatAbsoluteTime(date: Date | string | number): string;
|
|
67
|
+
import { DataTableColumn, DataTableColumnVisibility } from './components/ui/data-table.js';
|
|
68
|
+
export { DataTable, DataTableExpansion, DataTableMultiSort, DataTablePagination, DataTableProps, DataTableSelection, DataTableSort, SortDirection, SortRule } from './components/ui/data-table.js';
|
|
69
|
+
export { SavedQueryCard, SavedQueryCardProps, SavedQueryFilter } from './components/ui/saved-query-card.js';
|
|
70
|
+
export { PartoLineChart, PartoLineChartProps } from './components/charts/PartoLineChart.js';
|
|
71
|
+
export { PartoBarChart, PartoBarChartProps } from './components/charts/PartoBarChart.js';
|
|
72
|
+
export { PartoPieChart, PartoPieChartProps } from './components/charts/PartoPieChart.js';
|
|
73
|
+
export { PartoAreaChart, PartoAreaChartProps } from './components/charts/PartoAreaChart.js';
|
|
74
|
+
import { RegisteredHotkey } from './hooks/use-hotkey-registry.js';
|
|
75
|
+
export { HotkeyProvider, HotkeyProviderProps, useHotkey, useHotkeyRegistry } from './hooks/use-hotkey-registry.js';
|
|
76
|
+
import 'clsx';
|
|
77
|
+
import '@radix-ui/react-avatar';
|
|
78
|
+
import '@radix-ui/react-separator';
|
|
79
|
+
import 'react-day-picker/persian';
|
|
80
|
+
import '@radix-ui/react-dialog';
|
|
81
|
+
import '@radix-ui/react-popover';
|
|
82
|
+
import '@radix-ui/react-tooltip';
|
|
76
83
|
|
|
77
84
|
/**
|
|
78
85
|
* Persian (Jalali / Solar Hijri) calendar utilities.
|
|
@@ -201,219 +208,66 @@ declare function getFollowerGroup(followers: number): FollowerGroup;
|
|
|
201
208
|
declare function getEngagementRanges(followers: number, locale: SupportedLocale): EngagementRangeWithDisplay[];
|
|
202
209
|
declare function getCurrentRangeIndex(currentRate: number, ranges: EngagementRange[]): number;
|
|
203
210
|
|
|
204
|
-
type Locale = SupportedLocale;
|
|
205
|
-
/**
|
|
206
|
-
* Returns true for RTL locales (fa, ar).
|
|
207
|
-
*/
|
|
208
|
-
declare function isRTL(locale: SupportedLocale): boolean;
|
|
209
211
|
/**
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
+
* Iran's 31 provinces with trilingual labels and ISO 3166-2 codes.
|
|
213
|
+
*
|
|
214
|
+
* Use as a stable identifier source for `IranProvinceHeat`, `RegionPicker`,
|
|
215
|
+
* and any public-opinion dashboard scoped by استان. The slug (`code`) is the
|
|
216
|
+
* canonical key — never rely on label string equality, since labels are
|
|
217
|
+
* locale-dependent and may evolve.
|
|
218
|
+
*
|
|
219
|
+
* Codes follow ISO 3166-2:IR (e.g. 'IR-07' for Tehran). The slug is the
|
|
220
|
+
* lowercased, hyphenated English name without diacritics, suitable for URLs
|
|
221
|
+
* and CSS selectors. Use `getProvinceLabel(code, locale)` to resolve a label.
|
|
212
222
|
*/
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
223
|
+
|
|
224
|
+
interface IranProvince {
|
|
225
|
+
/** Stable URL-safe slug. The canonical key for province lookups. */
|
|
226
|
+
slug: string;
|
|
227
|
+
/** ISO 3166-2:IR code (e.g. 'IR-07'). */
|
|
228
|
+
iso: string;
|
|
229
|
+
/** Trilingual labels — fa is the canonical/native form. */
|
|
230
|
+
labels: Record<SupportedLocale, string>;
|
|
231
|
+
}
|
|
232
|
+
declare const IRAN_PROVINCES: readonly IranProvince[];
|
|
233
|
+
type IranProvinceSlug = (typeof IRAN_PROVINCES)[number]['slug'];
|
|
234
|
+
/** Look up a province by slug or ISO code. Returns undefined for unknown codes. */
|
|
235
|
+
declare function findProvince(codeOrSlug: string): IranProvince | undefined;
|
|
224
236
|
/**
|
|
225
|
-
*
|
|
237
|
+
* Resolve the locale-appropriate label for a province slug or ISO code.
|
|
238
|
+
* Falls back to fa for unknown locales and to the slug itself for unknown
|
|
239
|
+
* provinces (so the row still renders something instead of crashing).
|
|
226
240
|
*/
|
|
227
|
-
declare
|
|
228
|
-
|
|
229
|
-
negative: string;
|
|
230
|
-
neutral: string;
|
|
231
|
-
mixed: string;
|
|
232
|
-
}>;
|
|
233
|
-
/**
|
|
234
|
-
* Default UI strings for components that need localized text.
|
|
235
|
-
* Persian (fa) is the default locale for backward compatibility.
|
|
236
|
-
*/
|
|
237
|
-
declare const UI_STRINGS: {
|
|
238
|
-
readonly fa: {
|
|
239
|
-
readonly noResults: "نتیجهای یافت نشد";
|
|
240
|
-
readonly suggestions: "پیشنهادها";
|
|
241
|
-
readonly select: "انتخاب کنید";
|
|
242
|
-
readonly noOptionsFound: "موردی یافت نشد";
|
|
243
|
-
readonly search: "جستجو...";
|
|
244
|
-
readonly clearAll: "پاک کردن همه";
|
|
245
|
-
readonly selectDate: "انتخاب تاریخ";
|
|
246
|
-
readonly selectDateRange: "انتخاب بازه تاریخ";
|
|
247
|
-
readonly errorLoadingData: "خطا در بارگذاری دادهها";
|
|
248
|
-
readonly retry: "تلاش مجدد";
|
|
249
|
-
readonly remove: "حذف";
|
|
250
|
-
readonly noUsersFound: "کاربری یافت نشد";
|
|
251
|
-
readonly goToPreviousPage: "رفتن به صفحه قبلی";
|
|
252
|
-
readonly goToNextPage: "رفتن به صفحه بعدی";
|
|
253
|
-
readonly previous: "قبلی";
|
|
254
|
-
readonly next: "بعدی";
|
|
255
|
-
readonly actions: "عملیات";
|
|
256
|
-
readonly copy: "کپی";
|
|
257
|
-
readonly copied: "کپی شد";
|
|
258
|
-
readonly confirm: "تایید";
|
|
259
|
-
readonly cancel: "انصراف";
|
|
260
|
-
readonly areYouSure: "آیا مطمئن هستید؟";
|
|
261
|
-
readonly stepperLabel: "مراحل";
|
|
262
|
-
readonly stepCompleted: "تکمیل شده";
|
|
263
|
-
readonly stepCurrent: "مرحله فعلی";
|
|
264
|
-
readonly stepPending: "در انتظار";
|
|
265
|
-
readonly clearFilters: "پاک کردن فیلترها";
|
|
266
|
-
readonly activeFilters: "فیلترهای فعال";
|
|
267
|
-
readonly goBack: "بازگشت";
|
|
268
|
-
readonly gridView: "نمای شبکهای";
|
|
269
|
-
readonly listView: "نمای لیستی";
|
|
270
|
-
readonly loading: "در حال بارگذاری...";
|
|
271
|
-
readonly unexpectedError: "خطای غیرمنتظرهای رخ داد";
|
|
272
|
-
readonly selectAll: "انتخاب همه";
|
|
273
|
-
readonly selectRow: "انتخاب ردیف";
|
|
274
|
-
readonly noDataToDisplay: "دادهای برای نمایش وجود ندارد";
|
|
275
|
-
readonly likesCount: "تعداد لایک";
|
|
276
|
-
readonly commentsCount: "تعداد کامنت";
|
|
277
|
-
readonly viewsCount: "تعداد بازدید";
|
|
278
|
-
readonly sharesCount: "تعداد اشتراک";
|
|
279
|
-
readonly postTypeLabel: "نوع پست";
|
|
280
|
-
readonly postTypePhoto: "عکس";
|
|
281
|
-
readonly postTypeVideo: "ویدیو";
|
|
282
|
-
readonly postTypeCarousel: "اسلاید";
|
|
283
|
-
readonly showMore: "بیشتر";
|
|
284
|
-
readonly showLess: "کمتر";
|
|
285
|
-
readonly noMediaAvailable: "رسانهای موجود نیست";
|
|
286
|
-
readonly commentAnalysis: "تحلیل کامنتها";
|
|
287
|
-
readonly commentAnalysisDisabled: "تحلیل کامنتها (غیرفعال)";
|
|
288
|
-
readonly booster: "بوستر";
|
|
289
|
-
readonly boosterDisabled: "بوستر (غیرفعال)";
|
|
290
|
-
readonly aiAnalysis: "تحلیل هوش مصنوعی";
|
|
291
|
-
readonly aiAnalysisDisabled: "تحلیل هوش مصنوعی (غیرفعال)";
|
|
292
|
-
readonly openOnInstagram: "باز کردن در اینستاگرام";
|
|
293
|
-
readonly openOnInstagramDisabled: "باز کردن در اینستاگرام (غیرفعال)";
|
|
294
|
-
};
|
|
295
|
-
readonly ar: {
|
|
296
|
-
readonly noResults: "لم يتم العثور على نتائج";
|
|
297
|
-
readonly suggestions: "اقتراحات";
|
|
298
|
-
readonly select: "اختر";
|
|
299
|
-
readonly noOptionsFound: "لم يتم العثور على خيارات";
|
|
300
|
-
readonly search: "بحث...";
|
|
301
|
-
readonly clearAll: "مسح الكل";
|
|
302
|
-
readonly selectDate: "اختر تاريخ";
|
|
303
|
-
readonly selectDateRange: "اختر نطاق التاريخ";
|
|
304
|
-
readonly errorLoadingData: "خطأ في تحميل البيانات";
|
|
305
|
-
readonly retry: "إعادة المحاولة";
|
|
306
|
-
readonly remove: "حذف";
|
|
307
|
-
readonly noUsersFound: "لم يتم العثور على مستخدمين";
|
|
308
|
-
readonly goToPreviousPage: "الانتقال إلى الصفحة السابقة";
|
|
309
|
-
readonly goToNextPage: "الانتقال إلى الصفحة التالية";
|
|
310
|
-
readonly previous: "السابق";
|
|
311
|
-
readonly next: "التالي";
|
|
312
|
-
readonly actions: "إجراءات";
|
|
313
|
-
readonly copy: "نسخ";
|
|
314
|
-
readonly copied: "تم النسخ";
|
|
315
|
-
readonly confirm: "تأكيد";
|
|
316
|
-
readonly cancel: "إلغاء";
|
|
317
|
-
readonly areYouSure: "هل أنت متأكد؟";
|
|
318
|
-
readonly stepperLabel: "الخطوات";
|
|
319
|
-
readonly stepCompleted: "مكتمل";
|
|
320
|
-
readonly stepCurrent: "الخطوة الحالية";
|
|
321
|
-
readonly stepPending: "قيد الانتظار";
|
|
322
|
-
readonly clearFilters: "مسح الفلاتر";
|
|
323
|
-
readonly activeFilters: "الفلاتر النشطة";
|
|
324
|
-
readonly goBack: "رجوع";
|
|
325
|
-
readonly gridView: "عرض شبكي";
|
|
326
|
-
readonly listView: "عرض قائمة";
|
|
327
|
-
readonly loading: "جارٍ التحميل...";
|
|
328
|
-
readonly unexpectedError: "حدث خطأ غير متوقع";
|
|
329
|
-
readonly selectAll: "تحديد الكل";
|
|
330
|
-
readonly selectRow: "تحديد الصف";
|
|
331
|
-
readonly noDataToDisplay: "لا توجد بيانات للعرض";
|
|
332
|
-
readonly likesCount: "عدد الإعجابات";
|
|
333
|
-
readonly commentsCount: "عدد التعليقات";
|
|
334
|
-
readonly viewsCount: "عدد المشاهدات";
|
|
335
|
-
readonly sharesCount: "عدد المشاركات";
|
|
336
|
-
readonly postTypeLabel: "نوع المنشور";
|
|
337
|
-
readonly postTypePhoto: "صورة";
|
|
338
|
-
readonly postTypeVideo: "فيديو";
|
|
339
|
-
readonly postTypeCarousel: "شرائح";
|
|
340
|
-
readonly showMore: "المزيد";
|
|
341
|
-
readonly showLess: "أقل";
|
|
342
|
-
readonly noMediaAvailable: "لا توجد وسائط";
|
|
343
|
-
readonly commentAnalysis: "تحليل التعليقات";
|
|
344
|
-
readonly commentAnalysisDisabled: "تحليل التعليقات (معطل)";
|
|
345
|
-
readonly booster: "تعزيز";
|
|
346
|
-
readonly boosterDisabled: "تعزيز (معطل)";
|
|
347
|
-
readonly aiAnalysis: "تحليل الذكاء الاصطناعي";
|
|
348
|
-
readonly aiAnalysisDisabled: "تحليل الذكاء الاصطناعي (معطل)";
|
|
349
|
-
readonly openOnInstagram: "فتح في إنستاجرام";
|
|
350
|
-
readonly openOnInstagramDisabled: "فتح في إنستاجرام (معطل)";
|
|
351
|
-
};
|
|
352
|
-
readonly en: {
|
|
353
|
-
readonly noResults: "No results found";
|
|
354
|
-
readonly suggestions: "Suggestions";
|
|
355
|
-
readonly select: "Select";
|
|
356
|
-
readonly noOptionsFound: "No options found";
|
|
357
|
-
readonly search: "Search...";
|
|
358
|
-
readonly clearAll: "Clear all";
|
|
359
|
-
readonly selectDate: "Select date";
|
|
360
|
-
readonly selectDateRange: "Select date range";
|
|
361
|
-
readonly errorLoadingData: "Error loading data";
|
|
362
|
-
readonly retry: "Retry";
|
|
363
|
-
readonly remove: "Remove";
|
|
364
|
-
readonly noUsersFound: "No users found";
|
|
365
|
-
readonly goToPreviousPage: "Go to previous page";
|
|
366
|
-
readonly goToNextPage: "Go to next page";
|
|
367
|
-
readonly previous: "Previous";
|
|
368
|
-
readonly next: "Next";
|
|
369
|
-
readonly actions: "Actions";
|
|
370
|
-
readonly copy: "Copy";
|
|
371
|
-
readonly copied: "Copied";
|
|
372
|
-
readonly confirm: "Confirm";
|
|
373
|
-
readonly cancel: "Cancel";
|
|
374
|
-
readonly areYouSure: "Are you sure?";
|
|
375
|
-
readonly stepperLabel: "Steps";
|
|
376
|
-
readonly stepCompleted: "Completed";
|
|
377
|
-
readonly stepCurrent: "Current step";
|
|
378
|
-
readonly stepPending: "Pending";
|
|
379
|
-
readonly clearFilters: "Clear filters";
|
|
380
|
-
readonly activeFilters: "Active filters";
|
|
381
|
-
readonly goBack: "Go back";
|
|
382
|
-
readonly gridView: "Grid view";
|
|
383
|
-
readonly listView: "List view";
|
|
384
|
-
readonly loading: "Loading...";
|
|
385
|
-
readonly unexpectedError: "An unexpected error occurred";
|
|
386
|
-
readonly selectAll: "Select all";
|
|
387
|
-
readonly selectRow: "Select row";
|
|
388
|
-
readonly noDataToDisplay: "No data to display";
|
|
389
|
-
readonly likesCount: "Likes";
|
|
390
|
-
readonly commentsCount: "Comments";
|
|
391
|
-
readonly viewsCount: "Views";
|
|
392
|
-
readonly sharesCount: "Shares";
|
|
393
|
-
readonly postTypeLabel: "Post type";
|
|
394
|
-
readonly postTypePhoto: "Photo";
|
|
395
|
-
readonly postTypeVideo: "Video";
|
|
396
|
-
readonly postTypeCarousel: "Carousel";
|
|
397
|
-
readonly showMore: "More";
|
|
398
|
-
readonly showLess: "Less";
|
|
399
|
-
readonly noMediaAvailable: "No media available";
|
|
400
|
-
readonly commentAnalysis: "Comment Analysis";
|
|
401
|
-
readonly commentAnalysisDisabled: "Comment Analysis (disabled)";
|
|
402
|
-
readonly booster: "Booster";
|
|
403
|
-
readonly boosterDisabled: "Booster (disabled)";
|
|
404
|
-
readonly aiAnalysis: "AI Analysis";
|
|
405
|
-
readonly aiAnalysisDisabled: "AI Analysis (disabled)";
|
|
406
|
-
readonly openOnInstagram: "Open on Instagram";
|
|
407
|
-
readonly openOnInstagramDisabled: "Open on Instagram (disabled)";
|
|
408
|
-
};
|
|
409
|
-
};
|
|
410
|
-
type UIStringKeys = keyof (typeof UI_STRINGS)['fa'];
|
|
411
|
-
type UIStrings = Record<UIStringKeys, string>;
|
|
241
|
+
declare function getProvinceLabel(codeOrSlug: string, locale?: SupportedLocale): string;
|
|
242
|
+
|
|
412
243
|
/**
|
|
413
|
-
*
|
|
414
|
-
*
|
|
244
|
+
* Curated country list with trilingual labels + flag emoji.
|
|
245
|
+
*
|
|
246
|
+
* Scope: ISO 3166-1 alpha-2 codes for ~80 countries that recur in افکارسنجی
|
|
247
|
+
* and influencer dashboards we serve — neighbors of Iran, the Gulf, MENA,
|
|
248
|
+
* major Western markets, and Asian/African markets relevant to Persian-
|
|
249
|
+
* speaking audiences. The flag emoji is the regional-indicator pair for the
|
|
250
|
+
* code; modern OS fonts render it as a flag.
|
|
251
|
+
*
|
|
252
|
+
* This is NOT an exhaustive ISO 3166 dataset — for country-level analytics
|
|
253
|
+
* outside this scope, consumers should pass their own list to `CountryPicker`
|
|
254
|
+
* via the `options` prop.
|
|
415
255
|
*/
|
|
416
|
-
|
|
256
|
+
|
|
257
|
+
interface Country {
|
|
258
|
+
/** ISO 3166-1 alpha-2 code (uppercase). The canonical key. */
|
|
259
|
+
code: string;
|
|
260
|
+
/** Trilingual labels — fa is the canonical/native form. */
|
|
261
|
+
labels: Record<SupportedLocale, string>;
|
|
262
|
+
}
|
|
263
|
+
/** Convert an ISO 3166-1 alpha-2 code to its flag-emoji pair. */
|
|
264
|
+
declare function countryFlag(code: string): string;
|
|
265
|
+
declare const COUNTRIES: readonly Country[];
|
|
266
|
+
type CountryCode = (typeof COUNTRIES)[number]['code'];
|
|
267
|
+
/** Look up a country by ISO 3166-1 alpha-2 code. Returns undefined for unknown codes. */
|
|
268
|
+
declare function findCountry(code: string): Country | undefined;
|
|
269
|
+
/** Resolve the locale-appropriate label for a country code. */
|
|
270
|
+
declare function getCountryLabel(code: string, locale: SupportedLocale): string;
|
|
417
271
|
|
|
418
272
|
/**
|
|
419
273
|
* Standard size scale used across the design system.
|
|
@@ -465,8 +319,87 @@ declare namespace AccordionContent {
|
|
|
465
319
|
var displayName: string;
|
|
466
320
|
}
|
|
467
321
|
|
|
322
|
+
interface ActionTimelineItemData {
|
|
323
|
+
/** Stable identifier */
|
|
324
|
+
id: string;
|
|
325
|
+
/** Outcome of the action. Drives the marker colour/icon when `leading` isn't set. @default "info" */
|
|
326
|
+
status?: ActionStatusKey;
|
|
327
|
+
/** Primary text — actor + verb + target. */
|
|
328
|
+
title: React$1.ReactNode;
|
|
329
|
+
/** Optional one-line description under the title. */
|
|
330
|
+
description?: React$1.ReactNode;
|
|
331
|
+
/** Optional preview (comment text, error message, diff snippet). Rendered in a muted box. */
|
|
332
|
+
preview?: React$1.ReactNode;
|
|
333
|
+
/** Optional small tag next to the timestamp (e.g. "Instagram", "AI", "System"). */
|
|
334
|
+
tag?: React$1.ReactNode;
|
|
335
|
+
/** Optional trailing actions (buttons, dropdown). */
|
|
336
|
+
actions?: React$1.ReactNode;
|
|
337
|
+
/** When this action happened. Accepts Date | ISO string | epoch ms. */
|
|
338
|
+
timestamp: Date | string | number;
|
|
339
|
+
/** Override the leading marker — pass an `<Avatar />`, custom icon, etc. */
|
|
340
|
+
leading?: React$1.ReactNode;
|
|
341
|
+
}
|
|
342
|
+
type ActionTimelineDensity = 'compact' | 'default' | 'spacious';
|
|
343
|
+
type ActionTimelineGroupBy = 'none' | 'day';
|
|
344
|
+
interface ActionTimelineProps extends Omit<React$1.OlHTMLAttributes<HTMLOListElement>, 'children'> {
|
|
345
|
+
/** Data-driven item list. Mutually exclusive with `children`. */
|
|
346
|
+
items?: ActionTimelineItemData[];
|
|
347
|
+
/** Composition API — pass `<ActionTimelineItem>` children. */
|
|
348
|
+
children?: React$1.ReactNode;
|
|
349
|
+
/** Visual density @default "default" */
|
|
350
|
+
density?: ActionTimelineDensity;
|
|
351
|
+
/** Group adjacent items under sticky day headers */
|
|
352
|
+
groupBy?: ActionTimelineGroupBy;
|
|
353
|
+
/** Locale for timestamp formatting + status aria-labels @default "fa" */
|
|
354
|
+
locale?: SupportedLocale;
|
|
355
|
+
/** Hide the vertical connector line between items @default false */
|
|
356
|
+
hideConnector?: boolean;
|
|
357
|
+
/** Maximum items to render. When set and exceeded, caller is responsible for pagination UI. */
|
|
358
|
+
limit?: number;
|
|
359
|
+
/** Fires when an item is clicked (anywhere outside the `actions` slot) */
|
|
360
|
+
onItemSelect?: (item: ActionTimelineItemData, index: number) => void;
|
|
361
|
+
/** Empty state when items is empty / undefined and no children provided */
|
|
362
|
+
emptyState?: React$1.ReactNode;
|
|
363
|
+
}
|
|
364
|
+
interface ActionTimelineItemProps extends ActionTimelineItemData {
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Optional composition wrapper. Use inside `<ActionTimeline>` instead of the
|
|
368
|
+
* `items` prop — ActionTimeline injects the position metadata automatically.
|
|
369
|
+
* Throws if rendered outside <ActionTimeline>.
|
|
370
|
+
*/
|
|
371
|
+
declare function ActionTimelineItem(props: ActionTimelineItemProps): React$1.ReactElement;
|
|
372
|
+
declare const ActionTimeline: React$1.ForwardRefExoticComponent<ActionTimelineProps & React$1.RefAttributes<HTMLOListElement>>;
|
|
373
|
+
|
|
374
|
+
interface ActionTypeMeta {
|
|
375
|
+
/** CSS var fragment — read as `hsl(var(--action-type-foo))` */
|
|
376
|
+
token: string;
|
|
377
|
+
/** Lucide icon for the action */
|
|
378
|
+
icon: React$1.ComponentType<{
|
|
379
|
+
className?: string;
|
|
380
|
+
}>;
|
|
381
|
+
}
|
|
382
|
+
declare const ACTION_TYPE_META: Record<ActionTypeKey, ActionTypeMeta>;
|
|
383
|
+
declare const actionTypeChipVariants: (props?: ({
|
|
384
|
+
size?: "xs" | "sm" | "md" | "lg" | null | undefined;
|
|
385
|
+
variant?: "flat" | "soft" | "solid" | "outline" | null | undefined;
|
|
386
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
387
|
+
interface ActionTypeChipProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, 'children'>, VariantProps<typeof actionTypeChipVariants> {
|
|
388
|
+
/** Which action the chip represents */
|
|
389
|
+
type: ActionTypeKey;
|
|
390
|
+
/** Show the localized label after the icon @default true */
|
|
391
|
+
showLabel?: boolean;
|
|
392
|
+
/** Show a counter next to the label (e.g., "Like ۴۲۵") */
|
|
393
|
+
count?: number;
|
|
394
|
+
/** Locale for default label + digit formatting @default "fa" */
|
|
395
|
+
locale?: SupportedLocale;
|
|
396
|
+
/** Override the label (otherwise uses `actionTypeLabels[locale][type]`) */
|
|
397
|
+
label?: React$1.ReactNode;
|
|
398
|
+
}
|
|
399
|
+
declare const ActionTypeChip: React$1.ForwardRefExoticComponent<ActionTypeChipProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
400
|
+
|
|
468
401
|
declare const Alert: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
|
|
469
|
-
variant?: "
|
|
402
|
+
variant?: "warning" | "success" | "info" | "default" | "destructive" | null | undefined;
|
|
470
403
|
} & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLDivElement>>;
|
|
471
404
|
declare const AlertTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
472
405
|
declare const AlertDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
@@ -718,19 +651,6 @@ declare namespace AspectRatio {
|
|
|
718
651
|
var displayName: string;
|
|
719
652
|
}
|
|
720
653
|
|
|
721
|
-
declare function Avatar({ className, ...props }: React$1.ComponentProps<typeof AvatarPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
722
|
-
declare namespace Avatar {
|
|
723
|
-
var displayName: string;
|
|
724
|
-
}
|
|
725
|
-
declare function AvatarImage({ className, ...props }: React$1.ComponentProps<typeof AvatarPrimitive.Image>): react_jsx_runtime.JSX.Element;
|
|
726
|
-
declare namespace AvatarImage {
|
|
727
|
-
var displayName: string;
|
|
728
|
-
}
|
|
729
|
-
declare function AvatarFallback({ className, ...props }: React$1.ComponentProps<typeof AvatarPrimitive.Fallback>): react_jsx_runtime.JSX.Element;
|
|
730
|
-
declare namespace AvatarFallback {
|
|
731
|
-
var displayName: string;
|
|
732
|
-
}
|
|
733
|
-
|
|
734
654
|
declare const avatarGroupVariants: (props?: ({
|
|
735
655
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
736
656
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
@@ -747,19 +667,8 @@ interface AvatarGroupProps extends React$1.HTMLAttributes<HTMLDivElement>, Varia
|
|
|
747
667
|
}
|
|
748
668
|
declare const AvatarGroup: React$1.ForwardRefExoticComponent<AvatarGroupProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
749
669
|
|
|
750
|
-
declare const badgeVariants: (props?: ({
|
|
751
|
-
variant?: "default" | "success" | "warning" | "destructive" | "secondary" | "outline" | "brand" | null | undefined;
|
|
752
|
-
size?: "xs" | "sm" | "md" | "lg" | "small" | "tiny" | "large" | null | undefined;
|
|
753
|
-
dot?: boolean | null | undefined;
|
|
754
|
-
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
755
|
-
interface BadgeProps extends React$1.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {
|
|
756
|
-
dot?: boolean;
|
|
757
|
-
dotPosition?: 'start' | 'end';
|
|
758
|
-
}
|
|
759
|
-
declare const Badge: React$1.ForwardRefExoticComponent<BadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
760
|
-
|
|
761
670
|
declare const bannerVariants: (props?: ({
|
|
762
|
-
variant?: "
|
|
671
|
+
variant?: "neutral" | "warning" | "success" | "info" | "destructive" | null | undefined;
|
|
763
672
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
764
673
|
interface BannerProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof bannerVariants> {
|
|
765
674
|
/** Whether the banner can be dismissed */
|
|
@@ -804,43 +713,6 @@ declare namespace BreadcrumbEllipsis {
|
|
|
804
713
|
var displayName: string;
|
|
805
714
|
}
|
|
806
715
|
|
|
807
|
-
type ButtonVariantProps = VariantProps<typeof buttonVariants>;
|
|
808
|
-
declare const buttonVariants: (props?: ({
|
|
809
|
-
variant?: "link" | "text" | "default" | "warning" | "destructive" | "primary" | "secondary" | "outline" | "dashed" | "danger" | "ghost" | null | undefined;
|
|
810
|
-
block?: boolean | null | undefined;
|
|
811
|
-
size?: "xs" | "sm" | "md" | "lg" | "xl" | "default" | "icon" | null | undefined;
|
|
812
|
-
disabled?: boolean | null | undefined;
|
|
813
|
-
rounded?: boolean | null | undefined;
|
|
814
|
-
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
815
|
-
type LoadingVariantProps = VariantProps<typeof loadingVariants>;
|
|
816
|
-
declare const loadingVariants: (props?: ({
|
|
817
|
-
variant?: "link" | "text" | "default" | "warning" | "destructive" | "primary" | "secondary" | "outline" | "dashed" | "danger" | "ghost" | null | undefined;
|
|
818
|
-
loading?: boolean | "default" | null | undefined;
|
|
819
|
-
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
820
|
-
interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'>, Omit<ButtonVariantProps, 'disabled'>, Omit<LoadingVariantProps, 'variant'> {
|
|
821
|
-
asChild?: boolean;
|
|
822
|
-
type?: ButtonVariantProps['variant'] | React.ButtonHTMLAttributes<HTMLButtonElement>['type'];
|
|
823
|
-
htmlType?: React.ButtonHTMLAttributes<HTMLButtonElement>['type'];
|
|
824
|
-
icon?: React.ReactNode;
|
|
825
|
-
iconStart?: React.ReactNode;
|
|
826
|
-
iconEnd?: React.ReactNode;
|
|
827
|
-
/** @deprecated Use iconStart instead */
|
|
828
|
-
iconLeft?: React.ReactNode;
|
|
829
|
-
/** @deprecated Use iconEnd instead */
|
|
830
|
-
iconRight?: React.ReactNode;
|
|
831
|
-
isLoading?: boolean;
|
|
832
|
-
/** @deprecated Use `isLoading` instead */
|
|
833
|
-
loading?: boolean;
|
|
834
|
-
block?: boolean;
|
|
835
|
-
rounded?: boolean;
|
|
836
|
-
}
|
|
837
|
-
declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
838
|
-
|
|
839
|
-
interface SeparatorProps extends React$1.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root> {
|
|
840
|
-
children?: React$1.ReactNode;
|
|
841
|
-
}
|
|
842
|
-
declare const Separator: React$1.ForwardRefExoticComponent<SeparatorProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
843
|
-
|
|
844
716
|
declare const buttonGroupVariants: (props?: ({
|
|
845
717
|
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
846
718
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
@@ -859,30 +731,6 @@ declare namespace ButtonGroupSeparator {
|
|
|
859
731
|
var displayName: string;
|
|
860
732
|
}
|
|
861
733
|
|
|
862
|
-
type CalendarProps = {
|
|
863
|
-
usePersianCalendar?: boolean;
|
|
864
|
-
className?: string;
|
|
865
|
-
classNames?: Partial<Record<string, string>>;
|
|
866
|
-
showOutsideDays?: boolean;
|
|
867
|
-
} & (React$1.ComponentProps<typeof DayPicker> | React$1.ComponentProps<typeof DayPicker$1>);
|
|
868
|
-
declare function Calendar({ className, classNames, showOutsideDays, usePersianCalendar, ...props }: CalendarProps): react_jsx_runtime.JSX.Element;
|
|
869
|
-
declare namespace Calendar {
|
|
870
|
-
var displayName: string;
|
|
871
|
-
}
|
|
872
|
-
|
|
873
|
-
declare const cardVariants: (props?: ({
|
|
874
|
-
variant?: "default" | "outlined" | "elevated" | "interactive" | "glass" | null | undefined;
|
|
875
|
-
size?: "sm" | "md" | "lg" | null | undefined;
|
|
876
|
-
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
877
|
-
interface CardProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof cardVariants> {
|
|
878
|
-
}
|
|
879
|
-
declare const Card: React$1.ForwardRefExoticComponent<CardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
880
|
-
declare const CardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
881
|
-
declare const CardTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
882
|
-
declare const CardDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
883
|
-
declare const CardContent: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
884
|
-
declare const CardFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
885
|
-
|
|
886
734
|
type CarouselApi = UseEmblaCarouselType[1];
|
|
887
735
|
type UseCarouselParameters = Parameters<typeof useEmblaCarousel>;
|
|
888
736
|
type CarouselOptions = UseCarouselParameters[0];
|
|
@@ -949,23 +797,6 @@ declare namespace CollapsibleContent {
|
|
|
949
797
|
var displayName: string;
|
|
950
798
|
}
|
|
951
799
|
|
|
952
|
-
declare const Dialog: React$1.FC<DialogPrimitive.DialogProps>;
|
|
953
|
-
declare const DialogTrigger: React$1.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
954
|
-
declare const DialogPortal: React$1.FC<DialogPrimitive.DialogPortalProps>;
|
|
955
|
-
declare const DialogClose: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogCloseProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
956
|
-
declare const DialogOverlay: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
957
|
-
declare const DialogContent: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
958
|
-
declare const DialogHeader: {
|
|
959
|
-
({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
|
|
960
|
-
displayName: string;
|
|
961
|
-
};
|
|
962
|
-
declare const DialogFooter: {
|
|
963
|
-
({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
|
|
964
|
-
displayName: string;
|
|
965
|
-
};
|
|
966
|
-
declare const DialogTitle: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React$1.RefAttributes<HTMLHeadingElement>, "ref"> & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
967
|
-
declare const DialogDescription: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
968
|
-
|
|
969
800
|
declare function Command({ className, ...props }: React$1.ComponentProps<typeof Command$1>): react_jsx_runtime.JSX.Element;
|
|
970
801
|
declare namespace Command {
|
|
971
802
|
var displayName: string;
|
|
@@ -1007,6 +838,457 @@ declare namespace CommandShortcut {
|
|
|
1007
838
|
var displayName: string;
|
|
1008
839
|
}
|
|
1009
840
|
|
|
841
|
+
interface CommandPaletteItem {
|
|
842
|
+
/** Stable identifier. Used as the cmdk value and the recents key — MUST be unique across the whole items list. */
|
|
843
|
+
id: string;
|
|
844
|
+
/** Visible label. */
|
|
845
|
+
label: string;
|
|
846
|
+
/** Dimmer description shown under the label. */
|
|
847
|
+
description?: string;
|
|
848
|
+
/** Icon displayed at the start of the row. */
|
|
849
|
+
icon?: LucideIcon | React$1.ComponentType<{
|
|
850
|
+
className?: string;
|
|
851
|
+
}>;
|
|
852
|
+
/** Group heading under which this item appears. Items without a group are rendered in the root group. */
|
|
853
|
+
group?: string;
|
|
854
|
+
/**
|
|
855
|
+
* Keyboard-shortcut display, using the same grammar as {@link HotkeyCombo}
|
|
856
|
+
* (e.g. 'mod+d'). The palette only displays it — binding the global shortcut
|
|
857
|
+
* is the caller's responsibility via {@link useHotkeys} at the host component.
|
|
858
|
+
*/
|
|
859
|
+
shortcut?: string;
|
|
860
|
+
/** Extra search tokens not visible in the label (e.g., English aliases, acronyms, tag words). */
|
|
861
|
+
keywords?: string[];
|
|
862
|
+
/** Callback when item is selected. Palette closes automatically afterwards. */
|
|
863
|
+
onSelect: () => void;
|
|
864
|
+
/** Prevents selection + dims the row. */
|
|
865
|
+
disabled?: boolean;
|
|
866
|
+
}
|
|
867
|
+
interface CommandPaletteRecentsConfig {
|
|
868
|
+
/** Persistence key. Default: `'parto:cmdk:recents'`. Namespace by app if you mount multiple palettes. */
|
|
869
|
+
key?: string;
|
|
870
|
+
/** Max items to remember. Default: 5. */
|
|
871
|
+
max?: number;
|
|
872
|
+
/** Header label for the recents group. Default: locale-appropriate ('اخیر'/'Recent'). */
|
|
873
|
+
label?: string;
|
|
874
|
+
}
|
|
875
|
+
interface CommandPaletteProps {
|
|
876
|
+
/** Controlled open state. If omitted, palette manages its own state. */
|
|
877
|
+
open?: boolean;
|
|
878
|
+
/** Fires on both open and close. */
|
|
879
|
+
onOpenChange?: (open: boolean) => void;
|
|
880
|
+
/** Items to display. Grouped by `item.group` in insertion order. */
|
|
881
|
+
items: CommandPaletteItem[];
|
|
882
|
+
/**
|
|
883
|
+
* Global keyboard shortcut to toggle the palette. Default: `'mod+k'`.
|
|
884
|
+
* Pass `false` to disable the global listener (useful when wiring your own).
|
|
885
|
+
*/
|
|
886
|
+
shortcut?: HotkeyCombo | false;
|
|
887
|
+
/** Placeholder for the input. Defaults to a locale-appropriate string. */
|
|
888
|
+
placeholder?: string;
|
|
889
|
+
/** Shown inside `<CommandEmpty>` when there are no matches. */
|
|
890
|
+
emptyMessage?: string;
|
|
891
|
+
/** Screen-reader title (visually hidden). */
|
|
892
|
+
title?: string;
|
|
893
|
+
/** Screen-reader description (visually hidden). */
|
|
894
|
+
description?: string;
|
|
895
|
+
/** Locale for default strings + Persian-aware fuzzy matching. */
|
|
896
|
+
locale?: SupportedLocale;
|
|
897
|
+
/**
|
|
898
|
+
* Remember recently-selected items in localStorage and surface them as a top
|
|
899
|
+
* group when the search input is empty. Pass `false` to disable. Default: on.
|
|
900
|
+
*/
|
|
901
|
+
recents?: CommandPaletteRecentsConfig | false;
|
|
902
|
+
/** Extra class for the dialog content. */
|
|
903
|
+
className?: string;
|
|
904
|
+
}
|
|
905
|
+
declare function CommandPalette({ open: controlledOpen, onOpenChange, items, shortcut, placeholder, emptyMessage, title, description, locale, recents: recentsConfig, className, }: CommandPaletteProps): react_jsx_runtime.JSX.Element;
|
|
906
|
+
declare namespace CommandPalette {
|
|
907
|
+
var displayName: string;
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
interface PartoRadarChartProps {
|
|
911
|
+
/** Data: [{ subject: "سرعت", series1: 80, series2: 60 }] */
|
|
912
|
+
data: Array<Record<string, any>>;
|
|
913
|
+
/** Keys for each radar series */
|
|
914
|
+
dataKeys: string[];
|
|
915
|
+
/** Field name used for angle axis labels (default: 'subject') */
|
|
916
|
+
indexBy?: string;
|
|
917
|
+
/** Radar fill opacity */
|
|
918
|
+
fillOpacity?: number;
|
|
919
|
+
/** Radar stroke width */
|
|
920
|
+
strokeWidth?: number;
|
|
921
|
+
/** Show dots on vertices */
|
|
922
|
+
showDots?: boolean;
|
|
923
|
+
/** Dot radius */
|
|
924
|
+
dotRadius?: number;
|
|
925
|
+
/** Grid shape */
|
|
926
|
+
gridType?: 'polygon' | 'circle';
|
|
927
|
+
/** Chart margins */
|
|
928
|
+
margin?: {
|
|
929
|
+
top?: number;
|
|
930
|
+
right?: number;
|
|
931
|
+
bottom?: number;
|
|
932
|
+
left?: number;
|
|
933
|
+
};
|
|
934
|
+
/** Custom tooltip formatter */
|
|
935
|
+
tooltipFormatter?: (name: string, value: number) => React$1.ReactNode;
|
|
936
|
+
/**
|
|
937
|
+
* Locale for digit formatting in tooltips and angle-axis labels. fa/ar
|
|
938
|
+
* convert embedded digits to Persian/Arabic; en uses Latin. Default: 'fa'.
|
|
939
|
+
*/
|
|
940
|
+
locale?: SupportedLocale;
|
|
941
|
+
className?: string;
|
|
942
|
+
isLoading?: boolean;
|
|
943
|
+
ariaLabel?: string;
|
|
944
|
+
}
|
|
945
|
+
declare const PartoRadarChart: React$1.ForwardRefExoticComponent<PartoRadarChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
946
|
+
|
|
947
|
+
interface ComparisonMetric {
|
|
948
|
+
/** Unique key — used to look up values in each entity. */
|
|
949
|
+
key: string;
|
|
950
|
+
/** Human-readable label shown on the radar axis + tooltip. */
|
|
951
|
+
label: string;
|
|
952
|
+
/**
|
|
953
|
+
* True means a higher value is better (the default for most scores).
|
|
954
|
+
* Set to false for inverted metrics like error rate or response time.
|
|
955
|
+
* @default true
|
|
956
|
+
*/
|
|
957
|
+
higherIsBetter?: boolean;
|
|
958
|
+
/**
|
|
959
|
+
* Informational — maximum expected value for this metric. Not used by the
|
|
960
|
+
* radar geometry (auto-scaled); used by the tooltip for "x / max" display.
|
|
961
|
+
*/
|
|
962
|
+
max?: number;
|
|
963
|
+
}
|
|
964
|
+
interface ComparisonEntity {
|
|
965
|
+
/** Unique id — used as the `dataKey` for the radar series. */
|
|
966
|
+
key: string;
|
|
967
|
+
/** Display name in the legend. */
|
|
968
|
+
label: string;
|
|
969
|
+
/** Metric key → numeric value. Missing keys are treated as 0. */
|
|
970
|
+
values: Record<string, number>;
|
|
971
|
+
/** Optional custom color — defaults to the chart palette. */
|
|
972
|
+
color?: string;
|
|
973
|
+
}
|
|
974
|
+
interface ComparisonWinner {
|
|
975
|
+
/** Entity key (or null for a tie). */
|
|
976
|
+
winnerKey: string | null;
|
|
977
|
+
/** All entity keys tied at the top. Length >=1 when there is data; empty if no entities. */
|
|
978
|
+
topKeys: string[];
|
|
979
|
+
/** Top value for this metric (after higherIsBetter direction). */
|
|
980
|
+
topValue: number;
|
|
981
|
+
}
|
|
982
|
+
/**
|
|
983
|
+
* For each metric, compute the entity that "wins" (highest value, or lowest
|
|
984
|
+
* if `higherIsBetter: false`). Ties return winnerKey=null.
|
|
985
|
+
*/
|
|
986
|
+
declare function computeComparisonWinners(metrics: ComparisonMetric[], entities: ComparisonEntity[]): Record<string, ComparisonWinner>;
|
|
987
|
+
/** Count outright wins (no ties) per entity. */
|
|
988
|
+
declare function countComparisonWins(winners: Record<string, ComparisonWinner>): Record<string, number>;
|
|
989
|
+
interface ComparisonRadarProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
990
|
+
/** Metric axes of the radar. Order matters — these render clockwise from the top. */
|
|
991
|
+
metrics: ComparisonMetric[];
|
|
992
|
+
/** Entities being compared (typically 2-5). */
|
|
993
|
+
entities: ComparisonEntity[];
|
|
994
|
+
/** Annotate axis labels with a crown for the winner @default true */
|
|
995
|
+
showWinnerMarkers?: boolean;
|
|
996
|
+
/** Show the rich legend with win counts above the chart @default true */
|
|
997
|
+
showLegend?: boolean;
|
|
998
|
+
/** Card title */
|
|
999
|
+
title?: React$1.ReactNode;
|
|
1000
|
+
/** Short description below title */
|
|
1001
|
+
description?: React$1.ReactNode;
|
|
1002
|
+
/** Chart height in pixels @default 340 */
|
|
1003
|
+
chartHeight?: number;
|
|
1004
|
+
/** Loading state */
|
|
1005
|
+
isLoading?: boolean;
|
|
1006
|
+
/** Locale @default "fa" */
|
|
1007
|
+
locale?: SupportedLocale;
|
|
1008
|
+
/**
|
|
1009
|
+
* Custom radar props — pass-through to PartoRadarChart (margin, fillOpacity,
|
|
1010
|
+
* gridType, …). Avoid setting `data` / `dataKeys` / `indexBy` / `isLoading`.
|
|
1011
|
+
*/
|
|
1012
|
+
radarProps?: Omit<React$1.ComponentProps<typeof PartoRadarChart>, 'data' | 'dataKeys' | 'indexBy' | 'isLoading'>;
|
|
1013
|
+
}
|
|
1014
|
+
declare const ComparisonRadar: React$1.ForwardRefExoticComponent<ComparisonRadarProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1015
|
+
|
|
1016
|
+
type NotificationSeverity = 'info' | 'warning' | 'destructive' | 'success' | 'critical';
|
|
1017
|
+
interface NotificationItem {
|
|
1018
|
+
/** Stable id — required for `onMarkRead` / `onDismiss` to target a specific item. */
|
|
1019
|
+
id: string;
|
|
1020
|
+
/** Short headline. Keep under ~60 chars to avoid wrapping beyond two lines. */
|
|
1021
|
+
title: string;
|
|
1022
|
+
/** Longer body text. Truncated to 3 lines by default. */
|
|
1023
|
+
body?: string;
|
|
1024
|
+
/** ISO date string, Date instance, or epoch ms. */
|
|
1025
|
+
timestamp: string | number | Date;
|
|
1026
|
+
/** Severity drives the side-border + dot color. Defaults to `'info'`. */
|
|
1027
|
+
severity?: NotificationSeverity;
|
|
1028
|
+
/** Optional icon — replaces the severity dot when supplied. */
|
|
1029
|
+
icon?: LucideIcon;
|
|
1030
|
+
/** `true` renders the item in a read/dim state (no unread dot, lower contrast). */
|
|
1031
|
+
read?: boolean;
|
|
1032
|
+
/**
|
|
1033
|
+
* Row-level callback — fires when the item body is clicked. Typical use:
|
|
1034
|
+
* navigate to the source. The palette closes afterwards.
|
|
1035
|
+
*/
|
|
1036
|
+
onSelect?: () => void;
|
|
1037
|
+
/** Inline action button rendered inside the row (e.g., "Approve", "Open"). */
|
|
1038
|
+
action?: {
|
|
1039
|
+
label: string;
|
|
1040
|
+
onClick: () => void;
|
|
1041
|
+
};
|
|
1042
|
+
}
|
|
1043
|
+
interface NotificationFilter {
|
|
1044
|
+
/** Stable key for the tab. */
|
|
1045
|
+
key: string;
|
|
1046
|
+
/** Visible label. */
|
|
1047
|
+
label: string;
|
|
1048
|
+
/** Predicate — items returning `true` are shown when this filter is active. */
|
|
1049
|
+
predicate: (item: NotificationItem) => boolean;
|
|
1050
|
+
}
|
|
1051
|
+
interface NotificationCenterProps {
|
|
1052
|
+
/** Items to render. Consumer owns the array (mark-as-read / dismiss happen in your store). */
|
|
1053
|
+
items: NotificationItem[];
|
|
1054
|
+
/** Fires when user clicks an unread item, or the "mark read" action on it. */
|
|
1055
|
+
onMarkRead?: (id: string) => void;
|
|
1056
|
+
/** Fires when user clicks "mark all read". */
|
|
1057
|
+
onMarkAllRead?: () => void;
|
|
1058
|
+
/** Fires when user clicks the × on an item. If absent, dismiss is hidden. */
|
|
1059
|
+
onDismiss?: (id: string) => void;
|
|
1060
|
+
/** Optional tabs. First filter is active by default unless `defaultFilter` supplied. */
|
|
1061
|
+
filters?: NotificationFilter[];
|
|
1062
|
+
/** Key of the filter active on first render. */
|
|
1063
|
+
defaultFilter?: string;
|
|
1064
|
+
/** Optional per-filter active control. When set, tabs become controlled. */
|
|
1065
|
+
activeFilter?: string;
|
|
1066
|
+
onFilterChange?: (key: string) => void;
|
|
1067
|
+
/** Max CSS height of the scrollable list. Default `'420px'`. */
|
|
1068
|
+
maxHeight?: string;
|
|
1069
|
+
/** Locale for label strings + digit formatting. */
|
|
1070
|
+
locale?: SupportedLocale;
|
|
1071
|
+
/** Controlled open. */
|
|
1072
|
+
open?: boolean;
|
|
1073
|
+
onOpenChange?: (open: boolean) => void;
|
|
1074
|
+
/** Custom empty message. */
|
|
1075
|
+
emptyMessage?: string;
|
|
1076
|
+
/** Aria-label on the bell trigger. */
|
|
1077
|
+
triggerLabel?: string;
|
|
1078
|
+
/** Extra class on the trigger button. */
|
|
1079
|
+
triggerClassName?: string;
|
|
1080
|
+
/** Extra class on the popover content. */
|
|
1081
|
+
className?: string;
|
|
1082
|
+
/** Override relative-time formatter (default uses `formatRelativeTime` — Persian-biased). */
|
|
1083
|
+
formatTime?: (date: Date) => string;
|
|
1084
|
+
}
|
|
1085
|
+
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;
|
|
1086
|
+
declare namespace NotificationCenter {
|
|
1087
|
+
var displayName: string;
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
declare const siteHeaderVariants: (props?: ({
|
|
1091
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
1092
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1093
|
+
interface SiteHeaderProps extends React$1.HTMLAttributes<HTMLElement>, VariantProps<typeof siteHeaderVariants> {
|
|
1094
|
+
}
|
|
1095
|
+
/**
|
|
1096
|
+
* Opinionated app-shell header for multi-screen dashboards. Compose with the
|
|
1097
|
+
* sub-components: `<SiteHeaderStart>` / `<SiteHeaderEnd>` plus the small
|
|
1098
|
+
* primitives (`Breadcrumb`, `SiteHeaderTitle`, `SiteHeaderSubtitle`,
|
|
1099
|
+
* `SiteHeaderActions`, `SiteHeaderSeparator`).
|
|
1100
|
+
*
|
|
1101
|
+
* For a low-level prop-based layout use {@link AppBar} instead.
|
|
1102
|
+
*/
|
|
1103
|
+
declare const SiteHeader: React$1.ForwardRefExoticComponent<SiteHeaderProps & React$1.RefAttributes<HTMLElement>>;
|
|
1104
|
+
/** Inline-start slot. Holds breadcrumb + title stack. Grows to fill space. */
|
|
1105
|
+
declare const SiteHeaderStart: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1106
|
+
/** Inline-end slot. Holds actions + notifications + user menu. Shrinks to content. */
|
|
1107
|
+
declare const SiteHeaderEnd: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1108
|
+
/** Main page title. Single line, truncates. */
|
|
1109
|
+
declare const SiteHeaderTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
1110
|
+
/** Optional tagline under the title. Single line, truncates. */
|
|
1111
|
+
declare const SiteHeaderSubtitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
1112
|
+
/**
|
|
1113
|
+
* Stack helper — wraps breadcrumb / title / subtitle vertically. Use inside
|
|
1114
|
+
* `SiteHeaderStart` when you want a conventional "breadcrumb-above-title" layout.
|
|
1115
|
+
*/
|
|
1116
|
+
declare const SiteHeaderTitleGroup: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1117
|
+
/** Group container for icon-only action buttons. */
|
|
1118
|
+
declare const SiteHeaderActions: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1119
|
+
/** Vertical separator between action clusters. */
|
|
1120
|
+
declare const SiteHeaderSeparator: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLSpanElement> & React$1.RefAttributes<HTMLSpanElement>>;
|
|
1121
|
+
|
|
1122
|
+
interface UserMenuUser {
|
|
1123
|
+
name: string;
|
|
1124
|
+
email?: string;
|
|
1125
|
+
avatar?: string;
|
|
1126
|
+
/** Fallback initials when the avatar image is missing or fails to load. */
|
|
1127
|
+
avatarFallback?: string;
|
|
1128
|
+
/** Optional role / org label shown under the name. */
|
|
1129
|
+
role?: string;
|
|
1130
|
+
}
|
|
1131
|
+
/** Discriminated item union for the dropdown body. */
|
|
1132
|
+
type UserMenuItem = {
|
|
1133
|
+
type?: 'item';
|
|
1134
|
+
label: string;
|
|
1135
|
+
icon?: React$1.ComponentType<{
|
|
1136
|
+
className?: string;
|
|
1137
|
+
}>;
|
|
1138
|
+
/** Hotkey string passed to `formatHotkey`, e.g. `'mod+,'`. */
|
|
1139
|
+
shortcut?: string;
|
|
1140
|
+
onSelect: () => void;
|
|
1141
|
+
destructive?: boolean;
|
|
1142
|
+
disabled?: boolean;
|
|
1143
|
+
} | {
|
|
1144
|
+
type: 'separator';
|
|
1145
|
+
} | {
|
|
1146
|
+
type: 'label';
|
|
1147
|
+
label: string;
|
|
1148
|
+
} | {
|
|
1149
|
+
type: 'submenu';
|
|
1150
|
+
label: string;
|
|
1151
|
+
icon?: React$1.ComponentType<{
|
|
1152
|
+
className?: string;
|
|
1153
|
+
}>;
|
|
1154
|
+
items: UserMenuItem[];
|
|
1155
|
+
};
|
|
1156
|
+
interface UserMenuProps {
|
|
1157
|
+
/** The current user shown in the dropdown header + trigger avatar. */
|
|
1158
|
+
user: UserMenuUser;
|
|
1159
|
+
/** Dropdown rows. Use the discriminated union for item / separator / label / submenu. */
|
|
1160
|
+
items: UserMenuItem[];
|
|
1161
|
+
/** Controlled open. */
|
|
1162
|
+
open?: boolean;
|
|
1163
|
+
onOpenChange?: (open: boolean) => void;
|
|
1164
|
+
/** Locale for default labels. Defaults to `'fa'`. */
|
|
1165
|
+
locale?: SupportedLocale;
|
|
1166
|
+
/** Show email + role block in the dropdown header. Default `true`. */
|
|
1167
|
+
showUserHeader?: boolean;
|
|
1168
|
+
/** Show the name next to the avatar on the trigger (hidden on mobile by default). Default `false`. */
|
|
1169
|
+
showNameInTrigger?: boolean;
|
|
1170
|
+
/** Trigger size. */
|
|
1171
|
+
size?: 'sm' | 'md';
|
|
1172
|
+
/** Extra class on the trigger button. */
|
|
1173
|
+
triggerClassName?: string;
|
|
1174
|
+
/** Extra class on the dropdown content. */
|
|
1175
|
+
className?: string;
|
|
1176
|
+
/** `data-slot` override (useful when nesting inside another component's analytics tree). */
|
|
1177
|
+
'data-slot'?: string;
|
|
1178
|
+
}
|
|
1179
|
+
declare const UserMenu: React$1.ForwardRefExoticComponent<UserMenuProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1180
|
+
|
|
1181
|
+
interface RouteProgressProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
1182
|
+
/**
|
|
1183
|
+
* Controlled visibility. If omitted, the component stays mounted but hidden —
|
|
1184
|
+
* fire the `start`/`finish` methods on the ref instead.
|
|
1185
|
+
*/
|
|
1186
|
+
active?: boolean;
|
|
1187
|
+
/** Progress value (0–1). Default: auto-trickle while active. */
|
|
1188
|
+
value?: number;
|
|
1189
|
+
/**
|
|
1190
|
+
* How long to trickle before the bar caps out near the end (matches
|
|
1191
|
+
* NProgress-style UX). Default: 800ms per step.
|
|
1192
|
+
*/
|
|
1193
|
+
trickleInterval?: number;
|
|
1194
|
+
/**
|
|
1195
|
+
* Value the bar tops out at while waiting for `active=false` (so the page
|
|
1196
|
+
* change still feels snappy). Default: 0.9 — never completes automatically.
|
|
1197
|
+
*/
|
|
1198
|
+
trickleCap?: number;
|
|
1199
|
+
/** Height in pixels. Default: 2. */
|
|
1200
|
+
height?: number;
|
|
1201
|
+
/** Position. `'top'` (default) sticks to the top edge; `'bottom'` for e.g. drawers. */
|
|
1202
|
+
position?: 'top' | 'bottom';
|
|
1203
|
+
}
|
|
1204
|
+
interface RouteProgressHandle {
|
|
1205
|
+
/** Reset + show the bar. */
|
|
1206
|
+
start: () => void;
|
|
1207
|
+
/** Snap to 100% then hide after a short fade-out. */
|
|
1208
|
+
finish: () => void;
|
|
1209
|
+
}
|
|
1210
|
+
/**
|
|
1211
|
+
* Thin gradient progress bar for route/page transitions. Three usage modes:
|
|
1212
|
+
*
|
|
1213
|
+
* 1. **Controlled** — pass `active={true/false}` and let the component trickle
|
|
1214
|
+
* automatically while `active` is true:
|
|
1215
|
+
* ```tsx
|
|
1216
|
+
* <RouteProgress active={isNavigating} />
|
|
1217
|
+
* ```
|
|
1218
|
+
*
|
|
1219
|
+
* 2. **Imperative** — call `start()` / `finish()` on the ref:
|
|
1220
|
+
* ```tsx
|
|
1221
|
+
* const ref = useRef<RouteProgressHandle>(null)
|
|
1222
|
+
* ref.current?.start()
|
|
1223
|
+
* // ... navigate ...
|
|
1224
|
+
* ref.current?.finish()
|
|
1225
|
+
* ```
|
|
1226
|
+
*
|
|
1227
|
+
* 3. **Fully controlled value** — pass a numeric `value` in `[0, 1]` and skip
|
|
1228
|
+
* `active` entirely. Useful for file uploads or long-running jobs.
|
|
1229
|
+
*/
|
|
1230
|
+
declare const RouteProgress: React$1.ForwardRefExoticComponent<RouteProgressProps & React$1.RefAttributes<RouteProgressHandle>>;
|
|
1231
|
+
|
|
1232
|
+
type NavMatchStrategy = 'exact' | 'prefix';
|
|
1233
|
+
interface NavTreeContextValue {
|
|
1234
|
+
/** Current pathname — used to decide which `NavItem.href` is active. */
|
|
1235
|
+
activePath: string;
|
|
1236
|
+
/** Match strategy. Default `'prefix'` matches `/clusters` for both `/clusters` and `/clusters/42`. */
|
|
1237
|
+
matchStrategy: NavMatchStrategy;
|
|
1238
|
+
}
|
|
1239
|
+
declare function useNavTree(): NavTreeContextValue;
|
|
1240
|
+
interface NavTreeProviderProps {
|
|
1241
|
+
/** Current pathname. For Next.js, pass `usePathname()`. */
|
|
1242
|
+
activePath: string;
|
|
1243
|
+
/** How NavItem `href` matches `activePath`. Default: `'prefix'`. */
|
|
1244
|
+
matchStrategy?: NavMatchStrategy;
|
|
1245
|
+
children: React$1.ReactNode;
|
|
1246
|
+
}
|
|
1247
|
+
declare function NavTreeProvider({ activePath, matchStrategy, children }: NavTreeProviderProps): react_jsx_runtime.JSX.Element;
|
|
1248
|
+
/** Outer container. Mostly a semantic `<nav>` wrapper — accepts any children. */
|
|
1249
|
+
declare const NavTree: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLElement> & React$1.RefAttributes<HTMLElement>>;
|
|
1250
|
+
interface NavGroupProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'role'> {
|
|
1251
|
+
/** Visible group heading. Clickable if `collapsible` (default true). */
|
|
1252
|
+
heading?: React$1.ReactNode;
|
|
1253
|
+
/** Whether the header toggles visibility of children. Default `true` if `heading` is set. */
|
|
1254
|
+
collapsible?: boolean;
|
|
1255
|
+
/** Initial open state (uncontrolled). Default `true`. */
|
|
1256
|
+
defaultOpen?: boolean;
|
|
1257
|
+
/** Controlled open state. */
|
|
1258
|
+
open?: boolean;
|
|
1259
|
+
onOpenChange?: (open: boolean) => void;
|
|
1260
|
+
}
|
|
1261
|
+
declare const NavGroup: React$1.ForwardRefExoticComponent<NavGroupProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1262
|
+
declare const NavSeparator: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHRElement> & React$1.RefAttributes<HTMLHRElement>>;
|
|
1263
|
+
declare const navItemVariants: (props?: ({
|
|
1264
|
+
size?: "sm" | "md" | null | undefined;
|
|
1265
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1266
|
+
interface NavItemBaseProps extends VariantProps<typeof navItemVariants> {
|
|
1267
|
+
/** Link target. If set, NavItem renders as `<a>`. */
|
|
1268
|
+
href?: string;
|
|
1269
|
+
/** Click handler. If set (and `href` not set), NavItem renders as `<button>`. */
|
|
1270
|
+
onClick?: React$1.MouseEventHandler<HTMLElement>;
|
|
1271
|
+
/** Leading icon. */
|
|
1272
|
+
icon?: React$1.ComponentType<{
|
|
1273
|
+
className?: string;
|
|
1274
|
+
}>;
|
|
1275
|
+
/** Optional trailing badge (count, "new", etc.). */
|
|
1276
|
+
badge?: React$1.ReactNode;
|
|
1277
|
+
/** Custom `data-active` override. Use to short-circuit path matching. */
|
|
1278
|
+
active?: boolean;
|
|
1279
|
+
/** Skip the active-cascade report to parent (useful for informational items). */
|
|
1280
|
+
skipActiveReport?: boolean;
|
|
1281
|
+
/** Render-as override — passes all props to the given component. */
|
|
1282
|
+
asChild?: boolean;
|
|
1283
|
+
/** Disables interaction + dims the row. */
|
|
1284
|
+
disabled?: boolean;
|
|
1285
|
+
/** External link hint — opens in a new tab with `rel="noopener noreferrer"`. */
|
|
1286
|
+
external?: boolean;
|
|
1287
|
+
}
|
|
1288
|
+
interface NavItemProps extends NavItemBaseProps, Omit<React$1.HTMLAttributes<HTMLElement>, 'onClick'> {
|
|
1289
|
+
}
|
|
1290
|
+
declare const NavItem: React$1.ForwardRefExoticComponent<NavItemProps & React$1.RefAttributes<HTMLElement>>;
|
|
1291
|
+
|
|
1010
1292
|
interface CommentTag {
|
|
1011
1293
|
title: string;
|
|
1012
1294
|
probability: number;
|
|
@@ -1139,6 +1421,78 @@ interface CopyButtonProps extends Omit<ButtonProps, 'onClick'> {
|
|
|
1139
1421
|
}
|
|
1140
1422
|
declare const CopyButton: React$1.ForwardRefExoticComponent<CopyButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1141
1423
|
|
|
1424
|
+
type CriterionTierKey = 'excellent' | 'good' | 'moderate' | 'poor' | 'critical';
|
|
1425
|
+
declare const CRITERION_TIER_KEYS: readonly CriterionTierKey[];
|
|
1426
|
+
interface CriterionTierThresholds {
|
|
1427
|
+
/** Minimum score for "excellent" @default 80 */
|
|
1428
|
+
excellent: number;
|
|
1429
|
+
/** Minimum score for "good" @default 60 */
|
|
1430
|
+
good: number;
|
|
1431
|
+
/** Minimum score for "moderate" @default 40 */
|
|
1432
|
+
moderate: number;
|
|
1433
|
+
/** Minimum score for "poor" @default 20 (below → "critical") */
|
|
1434
|
+
poor: number;
|
|
1435
|
+
}
|
|
1436
|
+
declare const DEFAULT_CRITERION_THRESHOLDS: CriterionTierThresholds;
|
|
1437
|
+
/**
|
|
1438
|
+
* Auto-classify a score into one of the 5 canonical tiers based on thresholds.
|
|
1439
|
+
* Assumes score is normalized to [0, max]; will return a tier even if score
|
|
1440
|
+
* is out of range (clamped behaviour).
|
|
1441
|
+
*/
|
|
1442
|
+
declare function getCriterionTier(score: number, max?: number, thresholds?: CriterionTierThresholds): CriterionTierKey;
|
|
1443
|
+
interface CriterionInputSpec {
|
|
1444
|
+
/** Short label for the input (e.g., "نرخ تعامل") */
|
|
1445
|
+
label?: React$1.ReactNode;
|
|
1446
|
+
/** Displayed value (e.g., "۳.۲٪", "+۱۲۰ فالوور", "۵۰۰ کلمه") */
|
|
1447
|
+
value: React$1.ReactNode;
|
|
1448
|
+
}
|
|
1449
|
+
interface CriterionTrend {
|
|
1450
|
+
/** Delta in points (not percent). Positive = higher score than baseline. */
|
|
1451
|
+
delta: number;
|
|
1452
|
+
/** Optional label describing the baseline (e.g., "نسبت به ماه قبل") */
|
|
1453
|
+
label?: React$1.ReactNode;
|
|
1454
|
+
}
|
|
1455
|
+
interface CriterionScoreCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
1456
|
+
/** Name of the criterion (e.g., "نرخ تعامل") */
|
|
1457
|
+
name: React$1.ReactNode;
|
|
1458
|
+
/** Short description of how the score is computed */
|
|
1459
|
+
description?: React$1.ReactNode;
|
|
1460
|
+
/** Computed score */
|
|
1461
|
+
score: number;
|
|
1462
|
+
/** Max of the score scale @default 100 */
|
|
1463
|
+
max?: number;
|
|
1464
|
+
/**
|
|
1465
|
+
* Weight in a composite score (0..1). Rendered as "۶۰٪" badge in the header.
|
|
1466
|
+
* When weight=0, the badge still renders — pass `undefined` to hide it.
|
|
1467
|
+
*/
|
|
1468
|
+
weight?: number;
|
|
1469
|
+
/** Raw input that produced the score (for transparency) */
|
|
1470
|
+
input?: CriterionInputSpec;
|
|
1471
|
+
/** Change vs a baseline, shown next to the score */
|
|
1472
|
+
trend?: CriterionTrend;
|
|
1473
|
+
/**
|
|
1474
|
+
* Tier override. When omitted, auto-computed from `score` + `max` + thresholds.
|
|
1475
|
+
*/
|
|
1476
|
+
tier?: CriterionTierKey;
|
|
1477
|
+
/** Show a small "≥80 عالی · ≥60 خوب · ..." hint row @default false */
|
|
1478
|
+
showThresholdHint?: boolean;
|
|
1479
|
+
/** Custom tier thresholds (expressed for 0-100; scaled to `max` internally) */
|
|
1480
|
+
tierThresholds?: CriterionTierThresholds;
|
|
1481
|
+
/** Visual size @default "md" */
|
|
1482
|
+
size?: 'sm' | 'md' | 'lg';
|
|
1483
|
+
/**
|
|
1484
|
+
* Layout orientation:
|
|
1485
|
+
* - `default` — header with name+weight, big score + trend, input/description/hint rows
|
|
1486
|
+
* - `compact` — single row name + score, for list/table usage
|
|
1487
|
+
*/
|
|
1488
|
+
layout?: 'default' | 'compact';
|
|
1489
|
+
/** Locale for default strings + digits @default "fa" */
|
|
1490
|
+
locale?: SupportedLocale;
|
|
1491
|
+
/** Hide the horizontal progress bar @default false */
|
|
1492
|
+
hideBar?: boolean;
|
|
1493
|
+
}
|
|
1494
|
+
declare const CriterionScoreCard: React$1.ForwardRefExoticComponent<CriterionScoreCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1495
|
+
|
|
1142
1496
|
interface DatePickerProps {
|
|
1143
1497
|
/**
|
|
1144
1498
|
* The selected date range
|
|
@@ -1367,10 +1721,36 @@ declare const EmptyTitle: React$1.ForwardRefExoticComponent<Omit<React$1.Detaile
|
|
|
1367
1721
|
declare const EmptyDescription: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
1368
1722
|
declare const EmptyAction: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1369
1723
|
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1724
|
+
/**
|
|
1725
|
+
* SVG illustrations for empty / error / forbidden / first-run / no-results
|
|
1726
|
+
* states. All use `currentColor` so consumers can color them via
|
|
1727
|
+
* `text-foreground-muted` (default) or any token class. RTL-safe — no
|
|
1728
|
+
* directional cues built in.
|
|
1729
|
+
*
|
|
1730
|
+
* Usage with the Empty primitive:
|
|
1731
|
+
*
|
|
1732
|
+
* <Empty>
|
|
1733
|
+
* <NoResultsIllustration className="size-32 text-foreground-muted" />
|
|
1734
|
+
* <EmptyTitle>نتیجهای یافت نشد</EmptyTitle>
|
|
1735
|
+
* <EmptyDescription>عبارت دیگری امتحان کنید یا فیلترها را پاک کنید</EmptyDescription>
|
|
1736
|
+
* </Empty>
|
|
1737
|
+
*
|
|
1738
|
+
* The illustrations sit at ~120×120 viewBox and scale with `size-*` classes.
|
|
1739
|
+
* Stroke-only line work keeps them theme-agnostic (no tinting needed for
|
|
1740
|
+
* dark mode) and tarball-cheap (each ~600 bytes after gzip).
|
|
1741
|
+
*/
|
|
1742
|
+
|
|
1743
|
+
type SVGProps = React$1.SVGProps<SVGSVGElement>;
|
|
1744
|
+
declare const NoResultsIllustration: React$1.ForwardRefExoticComponent<Omit<SVGProps, "ref"> & React$1.RefAttributes<SVGSVGElement>>;
|
|
1745
|
+
declare const NoDataIllustration: React$1.ForwardRefExoticComponent<Omit<SVGProps, "ref"> & React$1.RefAttributes<SVGSVGElement>>;
|
|
1746
|
+
declare const FirstRunIllustration: React$1.ForwardRefExoticComponent<Omit<SVGProps, "ref"> & React$1.RefAttributes<SVGSVGElement>>;
|
|
1747
|
+
declare const ErrorIllustration: React$1.ForwardRefExoticComponent<Omit<SVGProps, "ref"> & React$1.RefAttributes<SVGSVGElement>>;
|
|
1748
|
+
declare const ForbiddenIllustration: React$1.ForwardRefExoticComponent<Omit<SVGProps, "ref"> & React$1.RefAttributes<SVGSVGElement>>;
|
|
1749
|
+
|
|
1750
|
+
interface ErrorStateProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
1751
|
+
/** Error message displayed below the icon */
|
|
1752
|
+
message?: string;
|
|
1753
|
+
/** Callback to trigger a retry — when provided, shows a retry button */
|
|
1374
1754
|
onRetry?: () => void;
|
|
1375
1755
|
/** Retry button label */
|
|
1376
1756
|
retryLabel?: string;
|
|
@@ -1448,6 +1828,85 @@ interface FilterBarActiveFiltersProps extends React$1.HTMLAttributes<HTMLDivElem
|
|
|
1448
1828
|
}
|
|
1449
1829
|
declare const FilterBarActiveFilters: React$1.ForwardRefExoticComponent<FilterBarActiveFiltersProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1450
1830
|
|
|
1831
|
+
interface FilterPanelProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
1832
|
+
/** Locale for default strings and digit formatting @default "fa" */
|
|
1833
|
+
locale?: SupportedLocale;
|
|
1834
|
+
}
|
|
1835
|
+
declare const FilterPanel: React$1.ForwardRefExoticComponent<FilterPanelProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1836
|
+
declare const FilterPanelHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1837
|
+
interface FilterPanelTitleProps extends React$1.HTMLAttributes<HTMLHeadingElement> {
|
|
1838
|
+
/** Active filter count — when > 0, a pill is rendered next to the label */
|
|
1839
|
+
activeCount?: number;
|
|
1840
|
+
}
|
|
1841
|
+
declare const FilterPanelTitle: React$1.ForwardRefExoticComponent<FilterPanelTitleProps & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
1842
|
+
interface FilterPanelClearAllProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'> {
|
|
1843
|
+
/** Callback when clear-all is clicked */
|
|
1844
|
+
onClear?: () => void;
|
|
1845
|
+
/** Also allow onClick (alias of onClear) to match native HTML semantics */
|
|
1846
|
+
onClick?: React$1.MouseEventHandler<HTMLButtonElement>;
|
|
1847
|
+
}
|
|
1848
|
+
declare const FilterPanelClearAll: React$1.ForwardRefExoticComponent<FilterPanelClearAllProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1849
|
+
declare const FilterPanelBody: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1850
|
+
declare const FilterPanelFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1851
|
+
interface FilterSectionProps {
|
|
1852
|
+
/** Visible section title */
|
|
1853
|
+
title: React$1.ReactNode;
|
|
1854
|
+
/** Extra descriptive text below the title */
|
|
1855
|
+
description?: React$1.ReactNode;
|
|
1856
|
+
/** Number of active filters inside this section — shown as a pill next to the title */
|
|
1857
|
+
activeCount?: number;
|
|
1858
|
+
/** Initial open state for uncontrolled mode @default true */
|
|
1859
|
+
defaultOpen?: boolean;
|
|
1860
|
+
/** Controlled open state */
|
|
1861
|
+
open?: boolean;
|
|
1862
|
+
/** onOpenChange for controlled mode */
|
|
1863
|
+
onOpenChange?: (open: boolean) => void;
|
|
1864
|
+
/** When set, a "×" clear button appears in the header */
|
|
1865
|
+
onClear?: () => void;
|
|
1866
|
+
/** When true, the trigger is static (non-collapsible) — useful for single-field sections */
|
|
1867
|
+
collapsible?: boolean;
|
|
1868
|
+
/** Content (form fields) */
|
|
1869
|
+
children?: React$1.ReactNode;
|
|
1870
|
+
className?: string;
|
|
1871
|
+
/** Extra class for the inner content container */
|
|
1872
|
+
contentClassName?: string;
|
|
1873
|
+
/** Optional id for testing / aria */
|
|
1874
|
+
id?: string;
|
|
1875
|
+
}
|
|
1876
|
+
declare const FilterSection: React$1.ForwardRefExoticComponent<FilterSectionProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1877
|
+
interface FilterPanelTriggerProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
1878
|
+
/** Active filter count — renders a pill badge next to the label */
|
|
1879
|
+
activeCount?: number;
|
|
1880
|
+
/** Locale for digit formatting and default label @default inherited from FilterPanel context; falls back to "fa" */
|
|
1881
|
+
locale?: SupportedLocale;
|
|
1882
|
+
/** Custom icon element (defaults to SlidersHorizontal) */
|
|
1883
|
+
icon?: React$1.ReactNode;
|
|
1884
|
+
/** Render without icon */
|
|
1885
|
+
hideIcon?: boolean;
|
|
1886
|
+
/** Visual variant — passthrough to Button */
|
|
1887
|
+
variant?: React$1.ComponentProps<typeof Button>['variant'];
|
|
1888
|
+
/** Size — passthrough to Button */
|
|
1889
|
+
size?: React$1.ComponentProps<typeof Button>['size'];
|
|
1890
|
+
}
|
|
1891
|
+
declare const FilterPanelTrigger: React$1.ForwardRefExoticComponent<FilterPanelTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1892
|
+
interface ActiveFiltersBarProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
1893
|
+
/** Locale for default empty text */
|
|
1894
|
+
locale?: SupportedLocale;
|
|
1895
|
+
/** Label rendered before chips ("فیلترهای فعال:"). Pass `false` to hide it. */
|
|
1896
|
+
label?: React$1.ReactNode;
|
|
1897
|
+
/** Text when no children are provided */
|
|
1898
|
+
emptyText?: React$1.ReactNode;
|
|
1899
|
+
/** Hide the whole bar when there are no children (instead of showing emptyText) */
|
|
1900
|
+
hideWhenEmpty?: boolean;
|
|
1901
|
+
}
|
|
1902
|
+
declare const ActiveFiltersBar: React$1.ForwardRefExoticComponent<ActiveFiltersBarProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1903
|
+
interface ActiveFiltersClearAllProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'> {
|
|
1904
|
+
onClear?: () => void;
|
|
1905
|
+
onClick?: React$1.MouseEventHandler<HTMLButtonElement>;
|
|
1906
|
+
locale?: SupportedLocale;
|
|
1907
|
+
}
|
|
1908
|
+
declare const ActiveFiltersClearAll: React$1.ForwardRefExoticComponent<ActiveFiltersClearAllProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
1909
|
+
|
|
1451
1910
|
declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: react_hook_form.FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React$1.JSX.Element;
|
|
1452
1911
|
declare const FormField: {
|
|
1453
1912
|
<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>): react_jsx_runtime.JSX.Element;
|
|
@@ -1499,16 +1958,48 @@ declare namespace HoverCardContent {
|
|
|
1499
1958
|
var displayName: string;
|
|
1500
1959
|
}
|
|
1501
1960
|
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
/**
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1961
|
+
interface NumberInputLocaleProps extends Omit<React$1.ComponentProps<'input'>, 'type' | 'value' | 'defaultValue' | 'onChange' | 'size'> {
|
|
1962
|
+
/** Current numeric value. Use `null` for empty. */
|
|
1963
|
+
value?: number | null;
|
|
1964
|
+
/** Initial value (uncontrolled). */
|
|
1965
|
+
defaultValue?: number | null;
|
|
1966
|
+
/** Called when the parsed numeric value changes. `null` means cleared. */
|
|
1967
|
+
onValueChange?: (next: number | null) => void;
|
|
1968
|
+
/**
|
|
1969
|
+
* Locale for digit display + parse. Persian/Arabic input is auto-normalised
|
|
1970
|
+
* to Latin before parsing; output digits match the locale.
|
|
1971
|
+
* @default 'fa'
|
|
1972
|
+
*/
|
|
1973
|
+
locale?: SupportedLocale;
|
|
1974
|
+
/** Optional unit suffix shown on the inline-end side (e.g. "%", "تومان"). */
|
|
1975
|
+
unit?: React$1.ReactNode;
|
|
1976
|
+
/** Min value (inclusive). */
|
|
1977
|
+
min?: number;
|
|
1978
|
+
/** Max value (inclusive). */
|
|
1979
|
+
max?: number;
|
|
1980
|
+
/** Number of fractional digits. @default 0 (integer) */
|
|
1981
|
+
decimals?: number;
|
|
1982
|
+
/** Show grouping separator (1,234) in display. @default true */
|
|
1983
|
+
thousandSeparator?: boolean;
|
|
1984
|
+
/** Allow negative numbers. @default true */
|
|
1985
|
+
allowNegative?: boolean;
|
|
1510
1986
|
}
|
|
1511
|
-
|
|
1987
|
+
/**
|
|
1988
|
+
* Locale-aware number input. Accepts Persian, Arabic, or Latin digits;
|
|
1989
|
+
* always emits a parsed JS `number` (or `null` for empty) via `onValueChange`.
|
|
1990
|
+
* Display digits match `locale` (Persian by default).
|
|
1991
|
+
*
|
|
1992
|
+
* - While the input is focused, the value renders as the user typed (raw
|
|
1993
|
+
* sanitized buffer), so editing mid-string doesn't snap the caret.
|
|
1994
|
+
* - On blur, value is re-formatted to the locale display (with thousand
|
|
1995
|
+
* separators + decimals padded to spec).
|
|
1996
|
+
* - `min`/`max` clamp on blur, never mid-edit.
|
|
1997
|
+
*
|
|
1998
|
+
* @example
|
|
1999
|
+
* const [n, setN] = useState<number | null>(null)
|
|
2000
|
+
* <NumberInputLocale value={n} onValueChange={setN} unit="تومان" thousandSeparator />
|
|
2001
|
+
*/
|
|
2002
|
+
declare const NumberInputLocale: React$1.ForwardRefExoticComponent<Omit<NumberInputLocaleProps, "ref"> & React$1.RefAttributes<HTMLInputElement>>;
|
|
1512
2003
|
|
|
1513
2004
|
interface InputWithIconProps extends InputProps {
|
|
1514
2005
|
/** Icon rendered at the start (inline-start, respects RTL) */
|
|
@@ -1539,6 +2030,141 @@ declare const TagInput: React$1.ForwardRefExoticComponent<TagInputProps & React$
|
|
|
1539
2030
|
|
|
1540
2031
|
declare const HashtagInput: React$1.ForwardRefExoticComponent<TagInputProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1541
2032
|
|
|
2033
|
+
interface HashtagPerformanceData {
|
|
2034
|
+
/** Hashtag without the leading `#` — the component renders the marker. */
|
|
2035
|
+
tag: string;
|
|
2036
|
+
/** Mention frequency (count of posts using the tag). */
|
|
2037
|
+
frequency: number;
|
|
2038
|
+
/** Engagement rate (%) for posts that used this tag. */
|
|
2039
|
+
engagementRate?: number;
|
|
2040
|
+
/** Trend sparkline values (e.g. last 7-14 days frequency). */
|
|
2041
|
+
trend?: number[];
|
|
2042
|
+
/** Optional explicit delta (% vs previous period). When omitted, derived from `trend`. */
|
|
2043
|
+
delta?: number;
|
|
2044
|
+
}
|
|
2045
|
+
interface HashtagPerformanceRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'onClick'> {
|
|
2046
|
+
data: HashtagPerformanceData;
|
|
2047
|
+
/** Make the row clickable (opens an analytics drill-down on the consumer side). */
|
|
2048
|
+
onRowClick?: (data: HashtagPerformanceData) => void;
|
|
2049
|
+
/** Show ranking number at the start of the row (1, 2, 3, …). */
|
|
2050
|
+
rank?: number;
|
|
2051
|
+
/** Density compact (28px) vs comfortable (40px). @default 'comfortable' */
|
|
2052
|
+
density?: 'compact' | 'comfortable';
|
|
2053
|
+
/** Locale for digit + label formatting. @default 'fa' */
|
|
2054
|
+
locale?: SupportedLocale;
|
|
2055
|
+
}
|
|
2056
|
+
/**
|
|
2057
|
+
* Single row in a hashtag-performance table — hashtag + frequency +
|
|
2058
|
+
* engagement + sparkline trend + delta. Designed to drop straight into a
|
|
2059
|
+
* `<DataTable>` cell renderer or a vertical list of top hashtags.
|
|
2060
|
+
*
|
|
2061
|
+
* @example
|
|
2062
|
+
* <DataTable
|
|
2063
|
+
* columns={[{
|
|
2064
|
+
* id: 'hashtag', header: 'هشتگ',
|
|
2065
|
+
* cell: (row) => <HashtagPerformanceRow data={row} rank={row.rank} />,
|
|
2066
|
+
* }]}
|
|
2067
|
+
* data={hashtags}
|
|
2068
|
+
* />
|
|
2069
|
+
*/
|
|
2070
|
+
declare const HashtagPerformanceRow: React$1.ForwardRefExoticComponent<HashtagPerformanceRowProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2071
|
+
|
|
2072
|
+
type CardSize = 'sm' | 'md' | 'lg';
|
|
2073
|
+
interface EntityHealthCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2074
|
+
/** Current health state — drives colour, icon, and default narrative framing */
|
|
2075
|
+
severity: EntityHealthKey;
|
|
2076
|
+
/** Compact row layout for list views @default "md" */
|
|
2077
|
+
size?: CardSize;
|
|
2078
|
+
/** Render as a clickable element (`role="button"` + focus ring). */
|
|
2079
|
+
interactive?: boolean;
|
|
2080
|
+
/** Locale for default strings + digit formatting @default "fa" */
|
|
2081
|
+
locale?: SupportedLocale;
|
|
2082
|
+
/** Render an accent-coloured left (logical-start) border tied to severity @default true */
|
|
2083
|
+
accentBorder?: boolean;
|
|
2084
|
+
}
|
|
2085
|
+
declare const EntityHealthCard: React$1.ForwardRefExoticComponent<EntityHealthCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2086
|
+
declare const EntityHealthCardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2087
|
+
declare const EntityHealthCardHeaderText: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2088
|
+
interface EntityHealthCardTitleProps extends React$1.HTMLAttributes<HTMLHeadingElement> {
|
|
2089
|
+
/** Semantic heading level @default "h3" */
|
|
2090
|
+
as?: 'h2' | 'h3' | 'h4';
|
|
2091
|
+
}
|
|
2092
|
+
declare const EntityHealthCardTitle: React$1.ForwardRefExoticComponent<EntityHealthCardTitleProps & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
2093
|
+
declare const EntityHealthCardSubtitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
2094
|
+
declare const EntityHealthCardHeaderEnd: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2095
|
+
interface EntityHealthCardSeverityBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
2096
|
+
/** Hide the text label — keeps the icon and aria-label only */
|
|
2097
|
+
iconOnly?: boolean;
|
|
2098
|
+
/** Size @default "sm" */
|
|
2099
|
+
size?: 'xs' | 'sm' | 'md';
|
|
2100
|
+
/** Override locale for just this badge */
|
|
2101
|
+
locale?: SupportedLocale;
|
|
2102
|
+
}
|
|
2103
|
+
declare const EntityHealthCardSeverityBadge: React$1.ForwardRefExoticComponent<EntityHealthCardSeverityBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
2104
|
+
interface EntityHealthCardScoreProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2105
|
+
/** Current score — clamped to [0, max]. */
|
|
2106
|
+
value: number;
|
|
2107
|
+
/** Max score @default 100 */
|
|
2108
|
+
max?: number;
|
|
2109
|
+
/** Leading label (e.g., "نمره سلامت") */
|
|
2110
|
+
label?: React$1.ReactNode;
|
|
2111
|
+
/** Optional delta vs previous period. Positive => up, negative => down. */
|
|
2112
|
+
delta?: number;
|
|
2113
|
+
/** Suffix rendered after the score (e.g., "٪", "/۱۰۰"). Omit for no suffix. */
|
|
2114
|
+
suffix?: React$1.ReactNode;
|
|
2115
|
+
/** Override auto suffix when `suffix` is not provided. Defaults to "/{max}" in localized digits. */
|
|
2116
|
+
showDenominator?: boolean;
|
|
2117
|
+
/** Override the accent colour. Accepts any CSS color. */
|
|
2118
|
+
color?: string;
|
|
2119
|
+
}
|
|
2120
|
+
declare const EntityHealthCardScore: React$1.ForwardRefExoticComponent<EntityHealthCardScoreProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2121
|
+
declare const EntityHealthCardNarrative: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
2122
|
+
interface EntityHealthCardTrustProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2123
|
+
/** Trust score @range 0..max */
|
|
2124
|
+
value: number;
|
|
2125
|
+
/** Max score @default 100 */
|
|
2126
|
+
max?: number;
|
|
2127
|
+
/** Leading label — defaults to "اعتماد" */
|
|
2128
|
+
label?: React$1.ReactNode;
|
|
2129
|
+
/** Hide the numeric value on the trailing side */
|
|
2130
|
+
hideValue?: boolean;
|
|
2131
|
+
/** Show 25 / 50 / 75 tick marks inside the bar @default true */
|
|
2132
|
+
showMarkers?: boolean;
|
|
2133
|
+
/** Size of the bar @default "sm" */
|
|
2134
|
+
barSize?: 'xs' | 'sm' | 'md';
|
|
2135
|
+
/** Override the bar fill colour */
|
|
2136
|
+
color?: string;
|
|
2137
|
+
}
|
|
2138
|
+
declare const EntityHealthCardTrust: React$1.ForwardRefExoticComponent<EntityHealthCardTrustProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2139
|
+
interface EntityHealthCardPhaseProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2140
|
+
/** Current day index (1-based). When provided with `total`, a progress bar renders. */
|
|
2141
|
+
day?: number;
|
|
2142
|
+
/** Total days in this phase */
|
|
2143
|
+
total?: number;
|
|
2144
|
+
/** Phase name */
|
|
2145
|
+
phase?: React$1.ReactNode;
|
|
2146
|
+
}
|
|
2147
|
+
declare const EntityHealthCardPhase: React$1.ForwardRefExoticComponent<EntityHealthCardPhaseProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2148
|
+
interface EntityHealthCardMetricsProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2149
|
+
/** Number of columns @default 2 */
|
|
2150
|
+
columns?: 1 | 2 | 3 | 4;
|
|
2151
|
+
}
|
|
2152
|
+
declare const EntityHealthCardMetrics: React$1.ForwardRefExoticComponent<EntityHealthCardMetricsProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2153
|
+
interface EntityHealthCardMetricProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2154
|
+
/** Metric label */
|
|
2155
|
+
label: React$1.ReactNode;
|
|
2156
|
+
/** Metric value — primary number or short string */
|
|
2157
|
+
value: React$1.ReactNode;
|
|
2158
|
+
/** Optional trend direction — affects trailing icon colour */
|
|
2159
|
+
trend?: 'up' | 'down' | 'flat';
|
|
2160
|
+
/** Optional trend magnitude shown after the arrow (e.g., "12%") */
|
|
2161
|
+
trendLabel?: React$1.ReactNode;
|
|
2162
|
+
}
|
|
2163
|
+
declare const EntityHealthCardMetric: React$1.ForwardRefExoticComponent<EntityHealthCardMetricProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2164
|
+
declare const EntityHealthCardFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2165
|
+
declare const EntityHealthCardActions: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2166
|
+
declare const EntityHealthCardMeta: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
2167
|
+
|
|
1542
2168
|
interface InputGroupProps extends React$1.ComponentProps<'div'> {
|
|
1543
2169
|
/**
|
|
1544
2170
|
* Direction of the input group.
|
|
@@ -1599,69 +2225,109 @@ declare namespace InputOTPSeparator {
|
|
|
1599
2225
|
var displayName: string;
|
|
1600
2226
|
}
|
|
1601
2227
|
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
2228
|
+
interface JobCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2229
|
+
/** Current lifecycle status — drives colour and badge */
|
|
2230
|
+
status: JobStatusKey;
|
|
2231
|
+
/** Compact single-row layout (for list views) @default false */
|
|
2232
|
+
compact?: boolean;
|
|
2233
|
+
/** When set, the card renders as a clickable element with hover + focus styles. Pure presentational — wire your own handler via onClick. */
|
|
2234
|
+
interactive?: boolean;
|
|
2235
|
+
/** Locale for default strings + digit formatting @default "fa" */
|
|
2236
|
+
locale?: SupportedLocale;
|
|
1608
2237
|
}
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
2238
|
+
declare const JobCard: React$1.ForwardRefExoticComponent<JobCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2239
|
+
declare const JobCardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2240
|
+
interface JobCardThumbnailProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2241
|
+
/** Image URL. If omitted, `icon` or `fallback` is used. */
|
|
2242
|
+
src?: string;
|
|
2243
|
+
/** Alt text for the image */
|
|
2244
|
+
alt?: string;
|
|
2245
|
+
/** Lucide icon rendered in an outlined tile (used when no src) */
|
|
2246
|
+
icon?: React$1.ComponentType<{
|
|
2247
|
+
className?: string;
|
|
2248
|
+
}>;
|
|
2249
|
+
/** Arbitrary fallback node (letter, emoji, …) */
|
|
2250
|
+
fallback?: React$1.ReactNode;
|
|
1614
2251
|
}
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
interface
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
2252
|
+
declare const JobCardThumbnail: React$1.ForwardRefExoticComponent<JobCardThumbnailProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2253
|
+
declare const JobCardHeaderText: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2254
|
+
interface JobCardTitleProps extends React$1.HTMLAttributes<HTMLHeadingElement> {
|
|
2255
|
+
/** Semantic heading level @default "h3" */
|
|
2256
|
+
as?: 'h2' | 'h3' | 'h4';
|
|
2257
|
+
}
|
|
2258
|
+
declare const JobCardTitle: React$1.ForwardRefExoticComponent<JobCardTitleProps & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
2259
|
+
declare const JobCardSubtitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
2260
|
+
declare const JobCardHeaderActions: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2261
|
+
interface JobCardStatusBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
2262
|
+
/** Hide the text label — keeps the icon and aria-label only */
|
|
2263
|
+
iconOnly?: boolean;
|
|
2264
|
+
/** Size @default "sm" */
|
|
2265
|
+
size?: 'xs' | 'sm' | 'md';
|
|
2266
|
+
/** Override locale for just this badge */
|
|
2267
|
+
locale?: SupportedLocale;
|
|
1622
2268
|
}
|
|
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
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
2269
|
+
declare const JobCardStatusBadge: React$1.ForwardRefExoticComponent<JobCardStatusBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
2270
|
+
/**
|
|
2271
|
+
* Wrapper for action buttons. If the parent `<JobCard interactive>` is
|
|
2272
|
+
* clickable, child button clicks would otherwise bubble up and trigger
|
|
2273
|
+
* the card's handler. Wrap your buttons here and we add role="group"
|
|
2274
|
+
* semantics; stop event propagation at the Button's own onClick when
|
|
2275
|
+
* needed to avoid conflicting with card activation.
|
|
2276
|
+
*/
|
|
2277
|
+
declare const JobCardActions: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2278
|
+
interface JobCardProgressProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2279
|
+
/** Current value — if omitted (and not indeterminate), renders a 0% bar */
|
|
2280
|
+
value?: number;
|
|
2281
|
+
/** Max value @default 100 */
|
|
2282
|
+
max?: number;
|
|
2283
|
+
/** Render an animated indeterminate shimmer. Overrides `value`. */
|
|
2284
|
+
indeterminate?: boolean;
|
|
2285
|
+
/** Leading text label */
|
|
2286
|
+
label?: React$1.ReactNode;
|
|
2287
|
+
/** Force-hide the percentage text on the trailing end */
|
|
2288
|
+
hideValueText?: boolean;
|
|
2289
|
+
/** Override the bar colour (e.g. for `paused` state). Accepts a CSS value. */
|
|
2290
|
+
color?: string;
|
|
2291
|
+
/** Size of the bar @default "sm" */
|
|
2292
|
+
size?: 'xs' | 'sm' | 'md';
|
|
2293
|
+
}
|
|
2294
|
+
declare const JobCardProgress: React$1.ForwardRefExoticComponent<JobCardProgressProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2295
|
+
declare const JobCardMeta: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDListElement> & React$1.RefAttributes<HTMLDListElement>>;
|
|
2296
|
+
interface JobCardMetaItemProps {
|
|
2297
|
+
/** Lucide icon — usually Calendar, Clock, User, … */
|
|
2298
|
+
icon?: React$1.ComponentType<{
|
|
2299
|
+
className?: string;
|
|
2300
|
+
}>;
|
|
2301
|
+
/** Field label */
|
|
2302
|
+
label: React$1.ReactNode;
|
|
2303
|
+
/** Field value */
|
|
2304
|
+
value: React$1.ReactNode;
|
|
2305
|
+
/** Use `<time dateTime={...}>` for value (screen readers + copy behaviour) */
|
|
2306
|
+
dateTime?: string;
|
|
2307
|
+
className?: string;
|
|
2308
|
+
}
|
|
2309
|
+
declare const JobCardMetaItem: React$1.ForwardRefExoticComponent<JobCardMetaItemProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2310
|
+
interface JobCardStatsProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2311
|
+
/** Layout columns @default auto */
|
|
2312
|
+
columns?: 2 | 3 | 4 | 'auto';
|
|
2313
|
+
}
|
|
2314
|
+
declare const JobCardStats: React$1.ForwardRefExoticComponent<JobCardStatsProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2315
|
+
interface JobCardStatProps {
|
|
2316
|
+
label: React$1.ReactNode;
|
|
2317
|
+
/** Current value */
|
|
2318
|
+
value: number;
|
|
2319
|
+
/** Total — renders as "value / total" when provided */
|
|
2320
|
+
total?: number;
|
|
2321
|
+
/** Value formatting locale. Defaults to JobCard context. */
|
|
2322
|
+
locale?: SupportedLocale;
|
|
2323
|
+
/** Semantic tone applied to the value */
|
|
2324
|
+
variant?: 'default' | 'positive' | 'warning' | 'destructive' | 'muted';
|
|
2325
|
+
/** Pre-formatted override — bypasses number formatting */
|
|
2326
|
+
formatted?: React$1.ReactNode;
|
|
2327
|
+
className?: string;
|
|
2328
|
+
}
|
|
2329
|
+
declare const JobCardStat: React$1.ForwardRefExoticComponent<JobCardStatProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2330
|
+
declare const JobCardError: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
1665
2331
|
|
|
1666
2332
|
declare function Kbd({ className, ...props }: React$1.ComponentProps<'kbd'>): react_jsx_runtime.JSX.Element;
|
|
1667
2333
|
declare namespace Kbd {
|
|
@@ -1672,6 +2338,206 @@ declare namespace KbdGroup {
|
|
|
1672
2338
|
var displayName: string;
|
|
1673
2339
|
}
|
|
1674
2340
|
|
|
2341
|
+
declare const labelChipVariants: (props?: ({
|
|
2342
|
+
tone?: "neutral" | "warning" | "success" | "destructive" | "brand" | "ai" | null | undefined;
|
|
2343
|
+
size?: "sm" | "md" | null | undefined;
|
|
2344
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
2345
|
+
interface LabelChipProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, 'onClick'>, VariantProps<typeof labelChipVariants> {
|
|
2346
|
+
/** Visible label text. */
|
|
2347
|
+
children: React$1.ReactNode;
|
|
2348
|
+
/** When set, renders an inline pencil button that opens an editor on consumer side. */
|
|
2349
|
+
onEdit?: () => void;
|
|
2350
|
+
/** When set, renders an inline ✕ button to dismiss/remove the label. */
|
|
2351
|
+
onRemove?: () => void;
|
|
2352
|
+
/**
|
|
2353
|
+
* Mark the chip as AI-generated — adds a subtle ✦ prefix and the `ai` tone
|
|
2354
|
+
* (unless tone is explicitly overridden). Used by AI-labeled clustering
|
|
2355
|
+
* dashboards to distinguish auto-tagged from human-curated labels.
|
|
2356
|
+
*/
|
|
2357
|
+
aiGenerated?: boolean;
|
|
2358
|
+
/** Confidence (0–1) for AI labels — rendered as a small `(۸۰%)` suffix when set. */
|
|
2359
|
+
confidence?: number;
|
|
2360
|
+
/** Whole chip click handler — useful for filter-by-label flows. */
|
|
2361
|
+
onSelect?: () => void;
|
|
2362
|
+
}
|
|
2363
|
+
declare const LabelChip: React$1.ForwardRefExoticComponent<LabelChipProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
2364
|
+
|
|
2365
|
+
interface LabelEditDialogProps {
|
|
2366
|
+
/** Controlled open state. */
|
|
2367
|
+
open: boolean;
|
|
2368
|
+
onOpenChange: (open: boolean) => void;
|
|
2369
|
+
/** Initial value of the label being edited. */
|
|
2370
|
+
initialValue?: string;
|
|
2371
|
+
/** Whether this label was originally AI-generated (controls the AI-flag toggle default). */
|
|
2372
|
+
aiGenerated?: boolean;
|
|
2373
|
+
/** Existing labels — surfaced as quick-pick suggestions during edit. */
|
|
2374
|
+
suggestions?: string[];
|
|
2375
|
+
/** Save handler. Called with the new value + the AI-generated flag (consumer persists). */
|
|
2376
|
+
onSave: (value: string, aiGenerated: boolean) => void;
|
|
2377
|
+
/**
|
|
2378
|
+
* Optional handler for the "Delete label" destructive action. When set, a
|
|
2379
|
+
* `Button variant="destructive"` shows up in the footer; omit to hide.
|
|
2380
|
+
*/
|
|
2381
|
+
onDelete?: () => void;
|
|
2382
|
+
/** Locale for default strings. @default 'fa' */
|
|
2383
|
+
locale?: SupportedLocale;
|
|
2384
|
+
}
|
|
2385
|
+
/**
|
|
2386
|
+
* Edit dialog for AI-labeled clustering. Pairs with `<LabelChip>` — when
|
|
2387
|
+
* users click the pencil affordance on a chip, this dialog opens with the
|
|
2388
|
+
* current value pre-filled, an AI-generated toggle, and a list of
|
|
2389
|
+
* suggestions (typically other labels already in use).
|
|
2390
|
+
*
|
|
2391
|
+
* Stateless wrt persistence: consumer wires `onSave` to whatever backend.
|
|
2392
|
+
*/
|
|
2393
|
+
declare const LabelEditDialog: React$1.ForwardRefExoticComponent<LabelEditDialogProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2394
|
+
|
|
2395
|
+
interface MarkdownRendererProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
2396
|
+
/** Raw markdown source. Safe by default — raw HTML is escaped, scripts are never executed. */
|
|
2397
|
+
children: string;
|
|
2398
|
+
/**
|
|
2399
|
+
* Enables permissive link schemes. By default only `http`, `https`, and `mailto` are kept;
|
|
2400
|
+
* everything else (including `javascript:`) is dropped.
|
|
2401
|
+
*/
|
|
2402
|
+
allowedLinkSchemes?: ReadonlyArray<string>;
|
|
2403
|
+
/** Compact density tightens vertical rhythm — useful for inline AI summaries. */
|
|
2404
|
+
density?: 'compact' | 'comfortable';
|
|
2405
|
+
}
|
|
2406
|
+
/**
|
|
2407
|
+
* Lightweight, dependency-free markdown renderer for AI narratives, report
|
|
2408
|
+
* sections, and bulletin bodies. Safe by default — raw HTML in the source is
|
|
2409
|
+
* rendered as text (never injected), and `javascript:` links are dropped.
|
|
2410
|
+
*
|
|
2411
|
+
* Supports: ATX headings (`#`..`######`), paragraphs, **bold**, *italic*,
|
|
2412
|
+
* ~~strike~~, `inline code`, fenced ``` code blocks ```, blockquotes, ordered
|
|
2413
|
+
* + unordered lists (flat), `[links](url)`, horizontal rules, hard line breaks.
|
|
2414
|
+
*
|
|
2415
|
+
* Intentional non-features (v1): tables, nested lists, footnotes, images. If
|
|
2416
|
+
* you need any of those, lift to a heavier renderer (TipTap / react-markdown).
|
|
2417
|
+
*/
|
|
2418
|
+
declare const MarkdownRenderer: React$1.ForwardRefExoticComponent<MarkdownRendererProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2419
|
+
|
|
2420
|
+
interface TaskListGroup {
|
|
2421
|
+
/** Stable group identifier — used to bucket items and as a React key. */
|
|
2422
|
+
id: string;
|
|
2423
|
+
/** Heading shown above the column / group section. */
|
|
2424
|
+
label: React$1.ReactNode;
|
|
2425
|
+
/** Optional accent token CSS variable (e.g. `--status-warning`) for the column rail. */
|
|
2426
|
+
accent?: string;
|
|
2427
|
+
/** Optional override for the empty state inside this group. */
|
|
2428
|
+
emptyState?: React$1.ReactNode;
|
|
2429
|
+
}
|
|
2430
|
+
interface TaskListProps<T> extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'children' | 'onSelect'> {
|
|
2431
|
+
/** Items to render. Order is preserved within each group. */
|
|
2432
|
+
items: ReadonlyArray<T>;
|
|
2433
|
+
/**
|
|
2434
|
+
* Layout — `kanban` renders one column per group with horizontal scroll;
|
|
2435
|
+
* `flat` renders a single ordered list with sticky group headings.
|
|
2436
|
+
* @default 'kanban'
|
|
2437
|
+
*/
|
|
2438
|
+
variant?: 'kanban' | 'flat';
|
|
2439
|
+
/**
|
|
2440
|
+
* Explicit group definitions. When omitted, groups are auto-derived from the
|
|
2441
|
+
* unique `groupBy(item)` values in document order. Pass an array to control
|
|
2442
|
+
* column ordering, labels, or to render columns with no items today.
|
|
2443
|
+
*/
|
|
2444
|
+
groups?: ReadonlyArray<TaskListGroup>;
|
|
2445
|
+
/** Function returning the group id for an item. */
|
|
2446
|
+
groupBy: (item: T) => string;
|
|
2447
|
+
/** Renders a single item card. Receives the resolved group for context. */
|
|
2448
|
+
renderItem: (item: T, group: TaskListGroup) => React$1.ReactNode;
|
|
2449
|
+
/** Stable React key per item. */
|
|
2450
|
+
getItemKey: (item: T, index: number) => React$1.Key;
|
|
2451
|
+
/** Default empty state when a group has no items. */
|
|
2452
|
+
emptyState?: React$1.ReactNode;
|
|
2453
|
+
/**
|
|
2454
|
+
* Show the item count next to each group heading. @default true.
|
|
2455
|
+
*/
|
|
2456
|
+
showCounts?: boolean;
|
|
2457
|
+
/** Locale for default empty / count strings. @default 'fa' */
|
|
2458
|
+
locale?: SupportedLocale;
|
|
2459
|
+
}
|
|
2460
|
+
declare const TaskList: <T>(props: TaskListProps<T> & {
|
|
2461
|
+
ref?: React$1.ForwardedRef<HTMLDivElement>;
|
|
2462
|
+
}) => React$1.ReactElement;
|
|
2463
|
+
|
|
2464
|
+
type RegionPickerKey = 'slug' | 'iso';
|
|
2465
|
+
interface RegionPickerProps {
|
|
2466
|
+
/** Selected province identifiers (slug or iso, depending on `keyBy`). */
|
|
2467
|
+
value?: ReadonlyArray<string>;
|
|
2468
|
+
onValueChange?: (next: string[]) => void;
|
|
2469
|
+
/**
|
|
2470
|
+
* Which identifier to read/write — `slug` (e.g. `tehran`) is URL-friendly,
|
|
2471
|
+
* `iso` (`IR-07`) is the ISO 3166-2 standard. @default 'slug'
|
|
2472
|
+
*/
|
|
2473
|
+
keyBy?: RegionPickerKey;
|
|
2474
|
+
/** Locale for province labels + UI strings. @default 'fa' */
|
|
2475
|
+
locale?: SupportedLocale;
|
|
2476
|
+
/** Restrict the choosable list (e.g. only show provinces with bureaus). */
|
|
2477
|
+
includeSlugs?: ReadonlyArray<IranProvinceSlug>;
|
|
2478
|
+
/** Excluded slugs — applied after `includeSlugs`. */
|
|
2479
|
+
excludeSlugs?: ReadonlyArray<IranProvinceSlug>;
|
|
2480
|
+
/** Trigger placeholder. */
|
|
2481
|
+
placeholder?: string;
|
|
2482
|
+
/** Search-input placeholder. */
|
|
2483
|
+
searchPlaceholder?: string;
|
|
2484
|
+
/** Empty-state message when search yields no results. */
|
|
2485
|
+
emptyMessage?: string;
|
|
2486
|
+
/** Cap on selections — e.g. `1` to make it a single-province picker. */
|
|
2487
|
+
maxSelected?: number;
|
|
2488
|
+
/** How many selected chips to render before collapsing into a "+N" badge. */
|
|
2489
|
+
maxDisplayed?: number;
|
|
2490
|
+
disabled?: boolean;
|
|
2491
|
+
className?: string;
|
|
2492
|
+
}
|
|
2493
|
+
/**
|
|
2494
|
+
* Multi-select picker over Iran's 31 provinces. Source of truth is
|
|
2495
|
+
* `IRAN_PROVINCES`; the picker projects it through the active locale and
|
|
2496
|
+
* surfaces it via `MultiSelect`.
|
|
2497
|
+
*
|
|
2498
|
+
* Pair with `IranProvinceHeat` for province-scoped افکارسنجی dashboards. A
|
|
2499
|
+
* proper SVG geomap selector is deferred (Phase 5.4).
|
|
2500
|
+
*/
|
|
2501
|
+
declare const RegionPicker: React$1.ForwardRefExoticComponent<RegionPickerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2502
|
+
|
|
2503
|
+
interface CountryPickerProps {
|
|
2504
|
+
/** Selected ISO 3166-1 alpha-2 codes (uppercase). */
|
|
2505
|
+
value?: ReadonlyArray<string>;
|
|
2506
|
+
onValueChange?: (next: string[]) => void;
|
|
2507
|
+
/**
|
|
2508
|
+
* Override the country list. Defaults to the curated 80-country roster in
|
|
2509
|
+
* `lib/countries.ts`. Pass your own when you need a fuller ISO 3166 set or
|
|
2510
|
+
* a sub-region (e.g. only EU members).
|
|
2511
|
+
*/
|
|
2512
|
+
options?: ReadonlyArray<Country>;
|
|
2513
|
+
/** Restrict the curated default list to these codes. */
|
|
2514
|
+
includeCodes?: ReadonlyArray<string>;
|
|
2515
|
+
/** Excluded codes — applied after `includeCodes`. */
|
|
2516
|
+
excludeCodes?: ReadonlyArray<string>;
|
|
2517
|
+
/** Show flag emoji prefix on each option. @default true */
|
|
2518
|
+
showFlag?: boolean;
|
|
2519
|
+
/** Locale for labels + UI strings. @default 'fa' */
|
|
2520
|
+
locale?: SupportedLocale;
|
|
2521
|
+
placeholder?: string;
|
|
2522
|
+
searchPlaceholder?: string;
|
|
2523
|
+
emptyMessage?: string;
|
|
2524
|
+
/** Cap on selections — e.g. `1` for a single-country picker. */
|
|
2525
|
+
maxSelected?: number;
|
|
2526
|
+
/** Selected chips before collapsing into "+N" badge. */
|
|
2527
|
+
maxDisplayed?: number;
|
|
2528
|
+
disabled?: boolean;
|
|
2529
|
+
className?: string;
|
|
2530
|
+
}
|
|
2531
|
+
/**
|
|
2532
|
+
* Multi-select picker over a curated country list. Defaults to the 80
|
|
2533
|
+
* countries that recur in افکارسنجی + influencer dashboards we serve; pass
|
|
2534
|
+
* `options` to replace the dataset with your own.
|
|
2535
|
+
*
|
|
2536
|
+
* Returns ISO 3166-1 alpha-2 codes (uppercase). Pair with platform tokens +
|
|
2537
|
+
* the audience graph for influencer geographic breakdowns.
|
|
2538
|
+
*/
|
|
2539
|
+
declare const CountryPicker: React$1.ForwardRefExoticComponent<CountryPickerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2540
|
+
|
|
1675
2541
|
declare function Menubar({ className, ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
1676
2542
|
declare namespace Menubar {
|
|
1677
2543
|
var displayName: string;
|
|
@@ -1957,47 +2823,563 @@ interface PaginationControlledProps {
|
|
|
1957
2823
|
*/
|
|
1958
2824
|
declare const PaginationControlled: React$1.ForwardRefExoticComponent<PaginationControlledProps & React$1.RefAttributes<HTMLElement>>;
|
|
1959
2825
|
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
2826
|
+
/**
|
|
2827
|
+
* PartoHeatMap — brand-tinted heatmap with rounded cells, clean axis,
|
|
2828
|
+
* glassmorphic tooltip, and locale-aware formatting.
|
|
2829
|
+
* Built with Visx scales + raw SVG for full control.
|
|
2830
|
+
*/
|
|
2831
|
+
interface HeatMapDatum {
|
|
2832
|
+
x: string | number;
|
|
2833
|
+
y: number;
|
|
2834
|
+
}
|
|
2835
|
+
interface HeatMapRow {
|
|
2836
|
+
id: string;
|
|
2837
|
+
data: HeatMapDatum[];
|
|
2838
|
+
}
|
|
2839
|
+
interface PartoHeatMapProps {
|
|
2840
|
+
data: HeatMapRow[];
|
|
2841
|
+
locale?: 'fa' | 'en';
|
|
2842
|
+
className?: string;
|
|
2843
|
+
isLoading?: boolean;
|
|
2844
|
+
ariaLabel?: string;
|
|
2845
|
+
margin?: {
|
|
2846
|
+
top: number;
|
|
2847
|
+
right: number;
|
|
2848
|
+
bottom: number;
|
|
2849
|
+
left: number;
|
|
2850
|
+
};
|
|
2851
|
+
/** Custom color function: receives value and max → returns CSS color */
|
|
2852
|
+
colorScale?: (value: number, max: number) => string;
|
|
2853
|
+
/** Cell border radius */
|
|
2854
|
+
cellRadius?: number;
|
|
2855
|
+
/** Gap between cells */
|
|
2856
|
+
cellGap?: number;
|
|
2857
|
+
/** Custom tooltip content */
|
|
2858
|
+
renderTooltip?: (cell: {
|
|
2859
|
+
rowId: string;
|
|
2860
|
+
x: string | number;
|
|
2861
|
+
value: number;
|
|
2862
|
+
color: string;
|
|
2863
|
+
}) => React$1.ReactNode;
|
|
2864
|
+
/** X axis label */
|
|
2865
|
+
xAxisLabel?: string;
|
|
2866
|
+
/** Y axis label */
|
|
2867
|
+
yAxisLabel?: string;
|
|
2868
|
+
/** Filter which x-axis ticks to show */
|
|
2869
|
+
xTickFilter?: (value: string | number, index: number) => boolean;
|
|
2870
|
+
}
|
|
2871
|
+
declare const PartoHeatMap: React$1.ForwardRefExoticComponent<PartoHeatMapProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
1964
2872
|
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
2873
|
+
type PostingWeekStart = 'saturday' | 'sunday' | 'monday';
|
|
2874
|
+
interface PostingFrequencyCell {
|
|
2875
|
+
/** Day of week — 0-6. What "0" means depends on `weekStart`. */
|
|
2876
|
+
dayOfWeek: number;
|
|
2877
|
+
/** Hour of day — 0-23 in the display timezone. */
|
|
2878
|
+
hour: number;
|
|
2879
|
+
/** Metric value (typically post count, can also be comments/likes avg). */
|
|
2880
|
+
value: number;
|
|
2881
|
+
}
|
|
2882
|
+
interface PostingFrequencySummary {
|
|
2883
|
+
/** 0–100 composite consistency score (activeDaysRatio + regularity + gap-penalty). */
|
|
2884
|
+
consistencyScore?: number;
|
|
2885
|
+
/** Longest inactivity gap, expressed in **days**. */
|
|
2886
|
+
maxGapDays?: number;
|
|
2887
|
+
/** 0–100 % of days that contain ≥1 post in the analysis window. */
|
|
2888
|
+
activeDaysRatio?: number;
|
|
2889
|
+
/** Total posts in the window (optional, for context in the header). */
|
|
2890
|
+
totalPosts?: number;
|
|
2891
|
+
}
|
|
2892
|
+
/**
|
|
2893
|
+
* Normalize a sparse `PostingFrequencyCell[]` into a full 7×24 grid of
|
|
2894
|
+
* `HeatMapRow`s ordered by `weekStart`. Missing cells are filled with value=0.
|
|
2895
|
+
* Each row's `id` is the English weekday name, matching PartoHeatMap's
|
|
2896
|
+
* internal weekday mapping.
|
|
2897
|
+
*/
|
|
2898
|
+
declare function buildPostingFrequencyRows(data: PostingFrequencyCell[], weekStart?: PostingWeekStart): HeatMapRow[];
|
|
2899
|
+
interface PostingFrequencyHeatmapProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
2900
|
+
/** Per-cell activity. Sparse input is fine — missing cells render as 0. */
|
|
2901
|
+
data: PostingFrequencyCell[];
|
|
2902
|
+
/** Which day logically occupies row 0. @default "saturday" for fa/ar, "sunday" for en. */
|
|
2903
|
+
weekStart?: PostingWeekStart;
|
|
2904
|
+
/** Optional summary stats shown in the header row. */
|
|
2905
|
+
summary?: PostingFrequencySummary;
|
|
2906
|
+
/** Card title. */
|
|
2907
|
+
title?: React$1.ReactNode;
|
|
2908
|
+
/** Short description below title. */
|
|
2909
|
+
description?: React$1.ReactNode;
|
|
1986
2910
|
/**
|
|
1987
|
-
*
|
|
2911
|
+
* Metric label for the tooltip (e.g., "پست", "نظر", "لایک"). Default uses
|
|
2912
|
+
* the locale-specific "Posts" label.
|
|
1988
2913
|
*/
|
|
1989
|
-
|
|
2914
|
+
metricLabel?: React$1.ReactNode;
|
|
2915
|
+
/** Show the summary row @default true (when `summary` is provided) */
|
|
2916
|
+
showSummary?: boolean;
|
|
2917
|
+
/** Height of the heatmap chart in px @default 240 */
|
|
2918
|
+
chartHeight?: number;
|
|
2919
|
+
/** Loading state */
|
|
2920
|
+
isLoading?: boolean;
|
|
2921
|
+
/** Locale @default "fa" */
|
|
2922
|
+
locale?: SupportedLocale;
|
|
1990
2923
|
/**
|
|
1991
|
-
*
|
|
2924
|
+
* Custom PartoHeatMap props to pass through (e.g., colorScale override,
|
|
2925
|
+
* margin). Avoid setting `data` / `locale` here; use the outer props.
|
|
1992
2926
|
*/
|
|
2927
|
+
heatmapProps?: Omit<PartoHeatMapProps, 'data' | 'locale' | 'isLoading' | 'renderTooltip'>;
|
|
2928
|
+
}
|
|
2929
|
+
declare const PostingFrequencyHeatmap: React$1.ForwardRefExoticComponent<PostingFrequencyHeatmapProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2930
|
+
|
|
2931
|
+
/**
|
|
2932
|
+
* Platform sources supported by `<PostCard>`. Extends the existing `SocialPlatform`
|
|
2933
|
+
* for Phase 1; additional sources (`facebook`, `news`, `tv`, `radio`) land in Phase 2
|
|
2934
|
+
* together with the `SocialPlatformBadge` extension.
|
|
2935
|
+
*/
|
|
2936
|
+
type PostPlatform = SocialPlatform;
|
|
2937
|
+
type PostDensity = 'compact' | 'comfortable';
|
|
2938
|
+
type PostSentiment = 'positive' | 'negative' | 'neutral' | 'mixed';
|
|
2939
|
+
interface PostAuthor {
|
|
2940
|
+
name: string;
|
|
2941
|
+
handle?: string;
|
|
2942
|
+
avatarUrl?: string;
|
|
2943
|
+
verified?: boolean;
|
|
2944
|
+
/** Optional follower / subscriber count — used in PostDetailsModal sidebar. */
|
|
1993
2945
|
followers?: number;
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2946
|
+
}
|
|
2947
|
+
interface PostMetrics {
|
|
2948
|
+
views?: number;
|
|
2949
|
+
likes?: number;
|
|
2950
|
+
comments?: number;
|
|
2951
|
+
shares?: number;
|
|
2952
|
+
/** Estimated reach / potential audience. */
|
|
2953
|
+
reach?: number;
|
|
2954
|
+
/** Engagement rate as a 0..1 decimal (e.g. 0.034 = 3.4%). */
|
|
2955
|
+
engagementRate?: number;
|
|
2956
|
+
}
|
|
2957
|
+
interface PostTag {
|
|
2958
|
+
id: string;
|
|
2959
|
+
label: string;
|
|
2960
|
+
/** Optional CSS var (e.g. `--chart-1`) or hex color. Auto-assigned from label if omitted. */
|
|
2961
|
+
color?: string;
|
|
2962
|
+
}
|
|
2963
|
+
/**
|
|
2964
|
+
* Flags indicate which enrichments the product has attached to this post.
|
|
2965
|
+
* Consumers set these to show the matching chip in `<PostHeader>`.
|
|
2966
|
+
*/
|
|
2967
|
+
interface PostEnrichmentFlags {
|
|
2968
|
+
ocr?: boolean;
|
|
2969
|
+
transcript?: boolean;
|
|
2970
|
+
aiAnalysis?: boolean;
|
|
2971
|
+
commentCount?: number;
|
|
2972
|
+
}
|
|
2973
|
+
interface PostMediaItem {
|
|
2974
|
+
url: string;
|
|
2975
|
+
thumbnailUrl?: string;
|
|
2976
|
+
/** Natural aspect ratio (width / height). If omitted, defaults to 1. */
|
|
2977
|
+
aspectRatio?: number;
|
|
2978
|
+
alt?: string;
|
|
2979
|
+
type?: 'image' | 'video';
|
|
2980
|
+
/** Duration in seconds for video. */
|
|
2981
|
+
duration?: number;
|
|
2982
|
+
}
|
|
2983
|
+
type PostBodyData = {
|
|
2984
|
+
type: 'text';
|
|
2985
|
+
text: string;
|
|
2986
|
+
} | {
|
|
2987
|
+
type: 'media-single';
|
|
2988
|
+
media: PostMediaItem;
|
|
2989
|
+
caption?: string;
|
|
2990
|
+
} | {
|
|
2991
|
+
type: 'media-carousel';
|
|
2992
|
+
items: PostMediaItem[];
|
|
2993
|
+
caption?: string;
|
|
2994
|
+
} | {
|
|
2995
|
+
type: 'video';
|
|
2996
|
+
media: PostMediaItem;
|
|
2997
|
+
caption?: string;
|
|
2998
|
+
} | {
|
|
2999
|
+
type: 'missing-media';
|
|
3000
|
+
caption?: string;
|
|
3001
|
+
reason?: string;
|
|
3002
|
+
};
|
|
3003
|
+
interface PostData {
|
|
3004
|
+
id: string;
|
|
3005
|
+
source: PostPlatform;
|
|
3006
|
+
author: PostAuthor;
|
|
3007
|
+
/** Post creation time. Accepts Date, ISO string, or unix ms. */
|
|
3008
|
+
timestamp: Date | string | number;
|
|
3009
|
+
body: PostBodyData;
|
|
3010
|
+
metrics?: PostMetrics;
|
|
3011
|
+
sentiment?: PostSentiment;
|
|
3012
|
+
enrichments?: PostEnrichmentFlags;
|
|
3013
|
+
/** User-defined category tags (topic, campaign, issue type). */
|
|
3014
|
+
tags?: PostTag[];
|
|
3015
|
+
/** Authority / influence score 0..100 — used to flag high-impact mentions. */
|
|
3016
|
+
authorityScore?: number;
|
|
3017
|
+
/** ISO language code detected for the post. */
|
|
3018
|
+
language?: string;
|
|
3019
|
+
/** URL to the post at the source platform (used by default "view at source" action). */
|
|
3020
|
+
sourceUrl?: string;
|
|
3021
|
+
}
|
|
3022
|
+
interface PostAction {
|
|
3023
|
+
id: string;
|
|
3024
|
+
label: string;
|
|
3025
|
+
icon: LucideIcon;
|
|
3026
|
+
variant?: 'default' | 'danger';
|
|
3027
|
+
onClick: (post: PostData) => void;
|
|
3028
|
+
disabled?: boolean;
|
|
3029
|
+
hidden?: boolean;
|
|
3030
|
+
}
|
|
3031
|
+
interface PostCommentAuthor {
|
|
3032
|
+
name: string;
|
|
3033
|
+
handle?: string;
|
|
3034
|
+
avatarUrl?: string;
|
|
3035
|
+
verified?: boolean;
|
|
3036
|
+
}
|
|
3037
|
+
interface PostComment {
|
|
3038
|
+
id: string;
|
|
3039
|
+
author: PostCommentAuthor;
|
|
3040
|
+
text: string;
|
|
3041
|
+
timestamp: Date | string | number;
|
|
3042
|
+
sentiment?: PostSentiment;
|
|
3043
|
+
likes?: number;
|
|
3044
|
+
replies?: PostComment[];
|
|
3045
|
+
/** Pinned by post author (Instagram, YouTube). */
|
|
3046
|
+
pinned?: boolean;
|
|
3047
|
+
/** Indicates this is a reply from the original post author. */
|
|
3048
|
+
authorReply?: boolean;
|
|
3049
|
+
}
|
|
3050
|
+
type PostEmotion = 'anger' | 'anticipation' | 'joy' | 'trust' | 'fear' | 'surprise' | 'sadness' | 'disgust' | 'neutral';
|
|
3051
|
+
type PostIntent = 'complaint' | 'praise' | 'question' | 'announcement' | 'comparison' | 'opinion' | 'info';
|
|
3052
|
+
interface PostAiEntity {
|
|
3053
|
+
text: string;
|
|
3054
|
+
type: 'person' | 'brand' | 'place' | 'product' | 'event' | 'organization';
|
|
3055
|
+
}
|
|
3056
|
+
interface PostAiAnalysis {
|
|
3057
|
+
/** Auto-generated summary of the post. */
|
|
3058
|
+
summary?: string;
|
|
3059
|
+
/** Key topics mentioned in the post. */
|
|
3060
|
+
topics?: string[];
|
|
3061
|
+
/** Named entities detected. */
|
|
3062
|
+
entities?: PostAiEntity[];
|
|
3063
|
+
/** Primary intent classification. */
|
|
3064
|
+
intent?: PostIntent;
|
|
3065
|
+
/** 9-class emotion distribution (raw counts or normalized). */
|
|
3066
|
+
emotions?: Partial<Record<PostEmotion, number>>;
|
|
3067
|
+
/** Flagged risks / sensitive content categories. */
|
|
3068
|
+
risks?: string[];
|
|
3069
|
+
/** Influence tier estimate for the author. */
|
|
3070
|
+
influenceTier?: 'nano' | 'micro' | 'macro' | 'mega';
|
|
3071
|
+
/** Model confidence 0..1 for overall analysis. */
|
|
3072
|
+
confidence?: number;
|
|
3073
|
+
/** Analysis generation timestamp. */
|
|
3074
|
+
generatedAt?: Date | string | number;
|
|
3075
|
+
}
|
|
3076
|
+
/** Platform-specific metadata, discriminated by `platform` (matches `PostData.source`). */
|
|
3077
|
+
type PlatformMetadata = {
|
|
3078
|
+
platform: 'instagram';
|
|
3079
|
+
postType?: 'feed' | 'reel' | 'story' | 'carousel' | 'igtv';
|
|
3080
|
+
location?: string;
|
|
3081
|
+
music?: {
|
|
3082
|
+
title: string;
|
|
3083
|
+
artist?: string;
|
|
3084
|
+
};
|
|
3085
|
+
saveCount?: number;
|
|
3086
|
+
collaborators?: string[];
|
|
3087
|
+
/** Hashtags used in the post. */
|
|
3088
|
+
hashtags?: string[];
|
|
3089
|
+
} | {
|
|
3090
|
+
platform: 'twitter';
|
|
3091
|
+
tweetType?: 'original' | 'retweet' | 'quote' | 'reply';
|
|
3092
|
+
quotedTweetUrl?: string;
|
|
3093
|
+
inReplyTo?: string;
|
|
3094
|
+
retweetCount?: number;
|
|
3095
|
+
quoteCount?: number;
|
|
3096
|
+
bookmarkCount?: number;
|
|
3097
|
+
isThread?: boolean;
|
|
3098
|
+
/** Count of additional posts in the thread. */
|
|
3099
|
+
threadLength?: number;
|
|
3100
|
+
} | {
|
|
3101
|
+
platform: 'youtube';
|
|
3102
|
+
videoType?: 'video' | 'short' | 'live' | 'premiere';
|
|
3103
|
+
channelSubscribers?: number;
|
|
3104
|
+
dislikes?: number;
|
|
3105
|
+
category?: string;
|
|
3106
|
+
tags?: string[];
|
|
3107
|
+
} | {
|
|
3108
|
+
platform: 'telegram';
|
|
3109
|
+
channelName?: string;
|
|
3110
|
+
channelSubscribers?: number;
|
|
3111
|
+
forwardCount?: number;
|
|
3112
|
+
isChannel?: boolean;
|
|
3113
|
+
/** Map of emoji → count, e.g. { '👍': 42, '❤️': 12 }. */
|
|
3114
|
+
reactionCounts?: Record<string, number>;
|
|
3115
|
+
} | {
|
|
3116
|
+
platform: 'tiktok';
|
|
3117
|
+
videoType?: 'video' | 'duet' | 'stitch' | 'live';
|
|
3118
|
+
music?: {
|
|
3119
|
+
title: string;
|
|
3120
|
+
artist?: string;
|
|
3121
|
+
};
|
|
3122
|
+
duetWith?: string;
|
|
3123
|
+
saveCount?: number;
|
|
3124
|
+
effects?: string[];
|
|
3125
|
+
} | {
|
|
3126
|
+
platform: 'linkedin';
|
|
3127
|
+
postType?: 'post' | 'article' | 'poll' | 'document';
|
|
3128
|
+
reactions?: {
|
|
3129
|
+
like?: number;
|
|
3130
|
+
celebrate?: number;
|
|
3131
|
+
support?: number;
|
|
3132
|
+
love?: number;
|
|
3133
|
+
insightful?: number;
|
|
3134
|
+
funny?: number;
|
|
3135
|
+
};
|
|
3136
|
+
repostCount?: number;
|
|
3137
|
+
industry?: string;
|
|
3138
|
+
} | {
|
|
3139
|
+
platform: 'threads';
|
|
3140
|
+
replyControls?: 'anyone' | 'followed' | 'mentioned';
|
|
3141
|
+
repostCount?: number;
|
|
3142
|
+
quoteCount?: number;
|
|
3143
|
+
};
|
|
3144
|
+
/** Extended post details — optionally attached to PostData when fetching full view. */
|
|
3145
|
+
interface PostDetails {
|
|
3146
|
+
comments?: PostComment[];
|
|
3147
|
+
aiAnalysis?: PostAiAnalysis;
|
|
3148
|
+
/** Text extracted from images via OCR. */
|
|
3149
|
+
ocrText?: string;
|
|
3150
|
+
/** Transcript for audio / video content. */
|
|
3151
|
+
transcript?: string;
|
|
3152
|
+
/** Platform-specific metadata block. */
|
|
3153
|
+
platformMeta?: PlatformMetadata;
|
|
3154
|
+
}
|
|
3155
|
+
|
|
3156
|
+
declare const postCardVariants: (props?: ({
|
|
3157
|
+
density?: "compact" | "comfortable" | null | undefined;
|
|
3158
|
+
selected?: boolean | null | undefined;
|
|
3159
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
3160
|
+
interface PostCardProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'onSelect'>, VariantProps<typeof postCardVariants> {
|
|
3161
|
+
post: PostData;
|
|
3162
|
+
density?: PostDensity;
|
|
3163
|
+
selected?: boolean;
|
|
3164
|
+
read?: boolean;
|
|
3165
|
+
actions?: PostAction[];
|
|
3166
|
+
onOpen?: (post: PostData) => void;
|
|
3167
|
+
onSelect?: (post: PostData, selected: boolean) => void;
|
|
3168
|
+
selectable?: boolean;
|
|
3169
|
+
/** Fired when user clicks the details action (Maximize2 icon). Wires up the default details action. */
|
|
3170
|
+
onOpenDetails?: (post: PostData) => void;
|
|
3171
|
+
}
|
|
3172
|
+
declare function defaultActions(handlers?: {
|
|
3173
|
+
onOpenDetails?: (post: PostData) => void;
|
|
3174
|
+
}): PostAction[];
|
|
3175
|
+
declare const PostCard: React$1.ForwardRefExoticComponent<PostCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3176
|
+
|
|
3177
|
+
declare const postHeaderVariants: (props?: ({
|
|
3178
|
+
density?: "compact" | "comfortable" | null | undefined;
|
|
3179
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
3180
|
+
interface PostHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'children'>, VariantProps<typeof postHeaderVariants> {
|
|
3181
|
+
author: PostAuthor;
|
|
3182
|
+
platform: PostPlatform;
|
|
3183
|
+
timestamp: Date | string | number;
|
|
3184
|
+
sentiment?: PostSentiment;
|
|
3185
|
+
enrichments?: PostEnrichmentFlags;
|
|
3186
|
+
density?: PostDensity;
|
|
3187
|
+
/** Override avatar size. */
|
|
3188
|
+
avatarClassName?: string;
|
|
3189
|
+
}
|
|
3190
|
+
declare const PostHeader: React$1.ForwardRefExoticComponent<PostHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3191
|
+
|
|
3192
|
+
/**
|
|
3193
|
+
* Aspect-ratio helpers for post media.
|
|
3194
|
+
*
|
|
3195
|
+
* Platforms deliver media in many ratios (1:1, 4:5, 9:16, 16:9, …). The post
|
|
3196
|
+
* component system normalizes aspect ratios per display context so a feed of
|
|
3197
|
+
* mixed content looks consistent without cropping away information.
|
|
3198
|
+
*
|
|
3199
|
+
* Rules (spec §Aspect-Ratio Handling):
|
|
3200
|
+
* - `compact` → always 1:1 thumbnail (center-crop via object-cover).
|
|
3201
|
+
* - `comfortable` → container clamps aspect to [4:5, 16:9]; media inside is
|
|
3202
|
+
* letterboxed via `object-contain` so nothing is cropped.
|
|
3203
|
+
* Callers typically render a blurred backdrop of the same
|
|
3204
|
+
* media behind the letterboxed image to fill empty space.
|
|
3205
|
+
* - `detail` → preserve natural ratio; cap max-h-[70vh] for tall portraits.
|
|
3206
|
+
*/
|
|
3207
|
+
type AspectContext = 'compact' | 'comfortable' | 'detail';
|
|
3208
|
+
|
|
3209
|
+
interface PostBodyProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3210
|
+
body: PostBodyData;
|
|
3211
|
+
/** Display context — drives aspect handling + text clamping. */
|
|
3212
|
+
context: AspectContext;
|
|
3213
|
+
/** Compact mode shows only a thumbnail; body text is rendered by parent. */
|
|
3214
|
+
thumbnailOnly?: boolean;
|
|
3215
|
+
}
|
|
3216
|
+
declare const PostBody: React$1.ForwardRefExoticComponent<PostBodyProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3217
|
+
|
|
3218
|
+
interface PostActionsProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3219
|
+
post: PostData;
|
|
3220
|
+
actions: PostAction[];
|
|
3221
|
+
/** Number of primary (inline) actions to render. Remaining flow into the overflow menu. */
|
|
3222
|
+
primaryCount?: number;
|
|
3223
|
+
/** Compact layout hides inline labels, shows icon-only buttons. */
|
|
3224
|
+
compact?: boolean;
|
|
3225
|
+
}
|
|
3226
|
+
declare const PostActions: React$1.ForwardRefExoticComponent<PostActionsProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3227
|
+
|
|
3228
|
+
interface PostMetadataProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3229
|
+
metrics?: PostMetrics;
|
|
3230
|
+
sentiment?: PostSentiment;
|
|
3231
|
+
density?: PostDensity;
|
|
3232
|
+
/** Hide the sentiment badge (dot still rendered in header in compact mode). */
|
|
3233
|
+
hideSentiment?: boolean;
|
|
3234
|
+
}
|
|
3235
|
+
declare const PostMetadata: React$1.ForwardRefExoticComponent<PostMetadataProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3236
|
+
|
|
3237
|
+
interface PostListProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'onSelect'> {
|
|
3238
|
+
posts: PostData[];
|
|
3239
|
+
/** Controlled density. If omitted, the list manages its own state (persisted to localStorage). */
|
|
3240
|
+
density?: PostDensity;
|
|
3241
|
+
onDensityChange?: (density: PostDensity) => void;
|
|
3242
|
+
/** ID of the currently open/selected post (for URL deep-linking). */
|
|
3243
|
+
activeId?: string;
|
|
3244
|
+
/** IDs of posts that have been visited (visual "read" state). */
|
|
3245
|
+
readIds?: ReadonlyArray<string> | ReadonlySet<string>;
|
|
3246
|
+
/** IDs of selected posts for bulk actions. */
|
|
3247
|
+
selectedIds?: ReadonlyArray<string> | ReadonlySet<string>;
|
|
3248
|
+
onSelectedIdsChange?: (ids: string[]) => void;
|
|
3249
|
+
onOpen?: (post: PostData) => void;
|
|
3250
|
+
/** Fired when the user triggers the default "view details" action on any card. */
|
|
3251
|
+
onOpenDetails?: (post: PostData) => void;
|
|
3252
|
+
/** Per-post action set. If omitted, each card uses its defaults. */
|
|
3253
|
+
actions?: PostAction[];
|
|
3254
|
+
/** Render the density toggle in the toolbar. Defaults to true. */
|
|
3255
|
+
showToolbar?: boolean;
|
|
3256
|
+
/** Custom toolbar content rendered next to the density toggle. */
|
|
3257
|
+
toolbarExtra?: React$1.ReactNode;
|
|
3258
|
+
}
|
|
3259
|
+
declare const PostList: React$1.ForwardRefExoticComponent<PostListProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3260
|
+
|
|
3261
|
+
/**
|
|
3262
|
+
* Extended platform set: social media + government broadcast/print sources
|
|
3263
|
+
* (TV, Radio, Press). Use this for cross-platform feeds where a tracked
|
|
3264
|
+
* topic surfaces in both an Instagram post AND a TV broadcast.
|
|
3265
|
+
*/
|
|
3266
|
+
type ExtendedPlatform = SocialPlatform | 'tv' | 'radio' | 'press';
|
|
3267
|
+
/**
|
|
3268
|
+
* Metrics shape varies by platform — social posts have likes/comments,
|
|
3269
|
+
* TV/radio clips have viewers/listeners, news articles often just have
|
|
3270
|
+
* a share count or comment-thread total. All optional.
|
|
3271
|
+
*/
|
|
3272
|
+
interface MultiPlatformMetrics {
|
|
3273
|
+
likes?: number;
|
|
3274
|
+
comments?: number;
|
|
3275
|
+
shares?: number;
|
|
3276
|
+
views?: number;
|
|
3277
|
+
/** TV viewers OR radio listeners (different display label, same number type) */
|
|
3278
|
+
audience?: number;
|
|
3279
|
+
}
|
|
3280
|
+
interface MultiPlatformPostData {
|
|
3281
|
+
/** Stable id for keys + analytics */
|
|
3282
|
+
id: string;
|
|
3283
|
+
platform: ExtendedPlatform;
|
|
3284
|
+
/** Outlet/account display name (e.g. "BBC فارسی", "@news_ir", "صدا و سیما"). */
|
|
3285
|
+
sourceName: string;
|
|
3286
|
+
/** Optional headline — typical for news + TV/radio segments, often absent on social. */
|
|
3287
|
+
title?: React$1.ReactNode;
|
|
3288
|
+
/** Body text or transcript excerpt. */
|
|
3289
|
+
body: React$1.ReactNode;
|
|
3290
|
+
/** Publication / broadcast time. Date or ISO string. */
|
|
3291
|
+
publishedAt: Date | string;
|
|
3292
|
+
/** Optional thumbnail (post image, article hero, video still). */
|
|
3293
|
+
thumbnailUrl?: string;
|
|
3294
|
+
/**
|
|
3295
|
+
* Optional clip duration in **seconds** — only meaningful for TV / radio /
|
|
3296
|
+
* video. Rendered as `MM:SS` or `HH:MM:SS`.
|
|
3297
|
+
*/
|
|
3298
|
+
durationSec?: number;
|
|
3299
|
+
metrics?: MultiPlatformMetrics;
|
|
3300
|
+
/** Optional URL to the source. When set, the card gains an "open at source" affordance. */
|
|
3301
|
+
sourceUrl?: string;
|
|
3302
|
+
/** Optional language tag for the body. Renders a small chip when set. */
|
|
3303
|
+
language?: string;
|
|
3304
|
+
}
|
|
3305
|
+
interface MultiPlatformPostCardProps extends Omit<React$1.HTMLAttributes<HTMLElement>, 'onClick'> {
|
|
3306
|
+
post: MultiPlatformPostData;
|
|
3307
|
+
/** Make the entire card clickable (opens sourceUrl in new tab if not custom) */
|
|
3308
|
+
onCardClick?: (post: MultiPlatformPostData) => void;
|
|
3309
|
+
/** Compact density hides body excerpt + thumbnail */
|
|
3310
|
+
density?: 'compact' | 'comfortable';
|
|
3311
|
+
/** Locale for labels + relative-time formatting */
|
|
3312
|
+
locale?: SupportedLocale;
|
|
3313
|
+
}
|
|
3314
|
+
declare const MultiPlatformPostCard: React$1.ForwardRefExoticComponent<MultiPlatformPostCardProps & React$1.RefAttributes<HTMLElement>>;
|
|
3315
|
+
|
|
3316
|
+
type PostDetailsTab = 'post' | 'comments' | 'analysis' | 'transcript';
|
|
3317
|
+
interface PostDetailsModalProps {
|
|
3318
|
+
/** Controls modal open state. */
|
|
3319
|
+
open: boolean;
|
|
3320
|
+
onOpenChange: (open: boolean) => void;
|
|
3321
|
+
/** The post being viewed. If null/undefined, the modal renders nothing. */
|
|
3322
|
+
post?: PostData | null;
|
|
3323
|
+
/** Extended details — comments, AI analysis, OCR, platform metadata. */
|
|
3324
|
+
details?: PostDetails;
|
|
3325
|
+
/** Callback when user opens the source. Falls back to `post.sourceUrl`. */
|
|
3326
|
+
onOpenSource?: (post: PostData) => void;
|
|
3327
|
+
/** Loading state — true while fetching extended details. */
|
|
3328
|
+
isLoading?: boolean;
|
|
3329
|
+
/** Error state — when set, renders an error panel with optional retry. */
|
|
3330
|
+
error?: string | Error | null;
|
|
3331
|
+
/** Fires when user clicks "retry" on the error panel. */
|
|
3332
|
+
onRetry?: () => void;
|
|
3333
|
+
/** Which tab to open first @default "post" */
|
|
3334
|
+
defaultTab?: PostDetailsTab;
|
|
3335
|
+
/** Dialog size. @default "lg" (~1024px) */
|
|
3336
|
+
size?: 'md' | 'lg' | 'xl';
|
|
3337
|
+
/** Show the bookmark toggle. When `onBookmark` is set, the button appears. */
|
|
3338
|
+
bookmarked?: boolean;
|
|
3339
|
+
onBookmark?: (post: PostData, next: boolean) => void;
|
|
3340
|
+
/** Override default clipboard writer. */
|
|
3341
|
+
onCopyLink?: (post: PostData, url: string) => void;
|
|
3342
|
+
/** Extra action slot (rendered at logical-end of the top action bar — e.g. a dropdown/"more" menu). */
|
|
3343
|
+
headerActions?: React$1.ReactNode;
|
|
3344
|
+
}
|
|
3345
|
+
declare const PostDetailsModal: React$1.FC<PostDetailsModalProps>;
|
|
3346
|
+
|
|
3347
|
+
declare const profileCardVariants: (props?: ({
|
|
3348
|
+
variant?: "default" | "transparent" | "dark" | null | undefined;
|
|
3349
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
3350
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
3351
|
+
interface ProfileCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3352
|
+
/**
|
|
3353
|
+
* نام کامل کاربر
|
|
3354
|
+
*/
|
|
3355
|
+
name: string;
|
|
3356
|
+
/**
|
|
3357
|
+
* نام کاربری (username)
|
|
3358
|
+
*/
|
|
3359
|
+
username: string;
|
|
3360
|
+
/**
|
|
3361
|
+
* آدرس تصویر پروفایل
|
|
3362
|
+
*/
|
|
3363
|
+
avatarSrc?: string;
|
|
3364
|
+
/**
|
|
3365
|
+
* متن جایگزین برای تصویر
|
|
3366
|
+
*/
|
|
3367
|
+
avatarAlt?: string;
|
|
3368
|
+
/**
|
|
3369
|
+
* حروف اولیه برای fallback (اختیاری)
|
|
3370
|
+
*/
|
|
3371
|
+
initials?: string;
|
|
3372
|
+
/**
|
|
3373
|
+
* تعداد فالوورها
|
|
3374
|
+
*/
|
|
3375
|
+
followers?: number;
|
|
3376
|
+
/**
|
|
3377
|
+
* آیکون فالوور
|
|
3378
|
+
*/
|
|
3379
|
+
followersIcon?: React$1.ReactNode;
|
|
3380
|
+
/**
|
|
3381
|
+
* تابع کلیک روی کارت
|
|
3382
|
+
*/
|
|
2001
3383
|
onCardClick?: () => void;
|
|
2002
3384
|
/**
|
|
2003
3385
|
* استایل حاشیه آواتار
|
|
@@ -2111,6 +3493,71 @@ interface EngagementRateProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
2111
3493
|
}
|
|
2112
3494
|
declare const EngagementRate: React$1.ForwardRefExoticComponent<EngagementRateProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2113
3495
|
|
|
3496
|
+
interface BenchmarkTier {
|
|
3497
|
+
/** Optional label shown below the segment (e.g., "عالی"). */
|
|
3498
|
+
label?: React$1.ReactNode;
|
|
3499
|
+
/** Inclusive upper bound of this tier. Use Infinity for the last tier. */
|
|
3500
|
+
max: number;
|
|
3501
|
+
/** CSS color — accepts any CSS value, including `hsl(var(--token))`. */
|
|
3502
|
+
color: string;
|
|
3503
|
+
}
|
|
3504
|
+
interface BenchmarkMarker {
|
|
3505
|
+
/** Position on the scale. Clamped to [min, max]. */
|
|
3506
|
+
value: number;
|
|
3507
|
+
/** Optional label shown above the marker (e.g., "میانگین صنعت"). */
|
|
3508
|
+
label?: React$1.ReactNode;
|
|
3509
|
+
/** Override the marker colour @default foreground */
|
|
3510
|
+
color?: string;
|
|
3511
|
+
}
|
|
3512
|
+
/**
|
|
3513
|
+
* Default 4-tier benchmark for engagement rate (percent). Thresholds picked
|
|
3514
|
+
* for general social media (Instagram/Twitter/YouTube) — override with
|
|
3515
|
+
* `getEngagementRateBenchmarkTiers` for follower-tiered thresholds.
|
|
3516
|
+
*
|
|
3517
|
+
* - 0–1% → poor
|
|
3518
|
+
* - 1–2.5% → moderate
|
|
3519
|
+
* - 2.5–5% → good
|
|
3520
|
+
* - >5% → excellent
|
|
3521
|
+
*/
|
|
3522
|
+
declare function getEngagementRateBenchmarkTiers(locale?: SupportedLocale): BenchmarkTier[];
|
|
3523
|
+
/**
|
|
3524
|
+
* Default 4-tier for a 0-100 score scale (e.g., Page Evaluation overall score).
|
|
3525
|
+
* Thresholds: <40 poor, 40-60 moderate, 60-80 good, >=80 excellent.
|
|
3526
|
+
*/
|
|
3527
|
+
declare function getScoreBenchmarkTiers(locale?: SupportedLocale): BenchmarkTier[];
|
|
3528
|
+
/** Find which tier index contains value `v`. */
|
|
3529
|
+
declare function findTierIndex(value: number, tiers: BenchmarkTier[]): number;
|
|
3530
|
+
interface EngagementRateBenchmarkProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3531
|
+
/** The value to mark on the scale (typically engagement rate in %). */
|
|
3532
|
+
value: number;
|
|
3533
|
+
/** Scale start @default 0 */
|
|
3534
|
+
min?: number;
|
|
3535
|
+
/** Scale end @default 10 (engagement rate %) */
|
|
3536
|
+
max?: number;
|
|
3537
|
+
/** Tier segments. Must be ordered by ascending `max`. @default getEngagementRateBenchmarkTiers(locale) */
|
|
3538
|
+
tiers?: BenchmarkTier[];
|
|
3539
|
+
/** Optional comparison markers (industry average, target, …) */
|
|
3540
|
+
benchmarks?: BenchmarkMarker[];
|
|
3541
|
+
/**
|
|
3542
|
+
* Label for the primary value marker. If omitted, renders the value with
|
|
3543
|
+
* localized digits + "٪" (fa/ar) or "%" (en).
|
|
3544
|
+
*/
|
|
3545
|
+
valueLabel?: React$1.ReactNode;
|
|
3546
|
+
/** Show the numeric min/max under the bar @default true */
|
|
3547
|
+
showScale?: boolean;
|
|
3548
|
+
/** Show tier labels below each segment @default false */
|
|
3549
|
+
showTierLabels?: boolean;
|
|
3550
|
+
/** Bar height @default "md" */
|
|
3551
|
+
size?: 'sm' | 'md' | 'lg';
|
|
3552
|
+
/** Hide the primary value marker (e.g., when rendering multiple benchmarks only) */
|
|
3553
|
+
hideValueMarker?: boolean;
|
|
3554
|
+
/** Locale for digit + default label formatting @default "fa" */
|
|
3555
|
+
locale?: SupportedLocale;
|
|
3556
|
+
/** Number of decimals for scale labels @default 0 or 1 depending on max */
|
|
3557
|
+
scaleDecimals?: number;
|
|
3558
|
+
}
|
|
3559
|
+
declare const EngagementRateBenchmark: React$1.ForwardRefExoticComponent<EngagementRateBenchmarkProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3560
|
+
|
|
2114
3561
|
interface EngagementRateBarProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2115
3562
|
/**
|
|
2116
3563
|
* نرخ تعامل فعلی (به صورت عدد اعشاری، مثلاً 0.05710 برای 5.710%)
|
|
@@ -2147,7 +3594,7 @@ declare const progressVariants: (props?: ({
|
|
|
2147
3594
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
2148
3595
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
2149
3596
|
declare const progressIndicatorVariants: (props?: ({
|
|
2150
|
-
variant?: "
|
|
3597
|
+
variant?: "warning" | "success" | "destructive" | "primary" | "secondary" | null | undefined;
|
|
2151
3598
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
2152
3599
|
interface ProgressProps extends React$1.ComponentProps<typeof ProgressPrimitive.Root>, VariantProps<typeof progressVariants>, VariantProps<typeof progressIndicatorVariants> {
|
|
2153
3600
|
label?: string;
|
|
@@ -2155,9 +3602,82 @@ interface ProgressProps extends React$1.ComponentProps<typeof ProgressPrimitive.
|
|
|
2155
3602
|
}
|
|
2156
3603
|
declare const Progress: React$1.ForwardRefExoticComponent<Omit<ProgressProps, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2157
3604
|
|
|
3605
|
+
interface QuotaThresholds {
|
|
3606
|
+
/** Ratio (0..1) at which bar turns amber. @default 0.7 */
|
|
3607
|
+
amber: number;
|
|
3608
|
+
/** Ratio (0..1) at which bar turns orange. @default 0.9 */
|
|
3609
|
+
orange: number;
|
|
3610
|
+
/** Ratio (0..1) at which bar turns destructive. @default 1 */
|
|
3611
|
+
red: number;
|
|
3612
|
+
}
|
|
3613
|
+
declare const DEFAULT_THRESHOLDS: QuotaThresholds;
|
|
3614
|
+
type QuotaLevel = 'ok' | 'amber' | 'orange' | 'red';
|
|
3615
|
+
declare function resolveLevel(ratio: number, thresholds: QuotaThresholds): QuotaLevel;
|
|
3616
|
+
interface QuotaProgressBarProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
3617
|
+
/** Units consumed so far (clamped to >= 0). */
|
|
3618
|
+
used: number;
|
|
3619
|
+
/** Total units allowed. Must be > 0. */
|
|
3620
|
+
limit: number;
|
|
3621
|
+
/** Optional label shown before the bar (e.g., "لایک روزانه") */
|
|
3622
|
+
label?: React$1.ReactNode;
|
|
3623
|
+
/**
|
|
3624
|
+
* When set, renders a colour-coded dot + default label ("پسندیدن"/"Like"/…).
|
|
3625
|
+
* Convenience for quota-by-action-type display; skip for generic quotas.
|
|
3626
|
+
*/
|
|
3627
|
+
actionType?: ActionTypeKey;
|
|
3628
|
+
/** Show `used / limit` text on trailing end @default true */
|
|
3629
|
+
showCount?: boolean;
|
|
3630
|
+
/** Show percentage next to count @default false */
|
|
3631
|
+
showPercent?: boolean;
|
|
3632
|
+
/** Show ⚠ icon when the bar is at `orange` or `red` level @default true */
|
|
3633
|
+
showWarningIcon?: boolean;
|
|
3634
|
+
/** Bar height @default "sm" */
|
|
3635
|
+
size?: 'xs' | 'sm' | 'md' | 'lg';
|
|
3636
|
+
/**
|
|
3637
|
+
* Override colour thresholds. Ratios are `used / limit`. Defaults:
|
|
3638
|
+
* - amber: 0.7, orange: 0.9, red: 1.
|
|
3639
|
+
*/
|
|
3640
|
+
thresholds?: Partial<QuotaThresholds>;
|
|
3641
|
+
/** Locale for digit + default label formatting @default "fa" */
|
|
3642
|
+
locale?: SupportedLocale;
|
|
3643
|
+
/**
|
|
3644
|
+
* Allow the bar to visually extend past 100% when quota is over-consumed.
|
|
3645
|
+
* When `true`, the fill stays at 100% of the track but a repeating stripe
|
|
3646
|
+
* pattern + red glow signals overflow. @default false (clamp to 100%)
|
|
3647
|
+
*/
|
|
3648
|
+
showOverflow?: boolean;
|
|
3649
|
+
}
|
|
3650
|
+
declare const QuotaProgressBar: React$1.ForwardRefExoticComponent<QuotaProgressBarProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3651
|
+
|
|
2158
3652
|
declare const RadioGroup: React$1.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2159
3653
|
declare const RadioGroupItem: React$1.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupItemProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
2160
3654
|
|
|
3655
|
+
interface RateLimitBannerProps extends Omit<BannerProps, 'variant' | 'icon' | 'action' | 'children'> {
|
|
3656
|
+
/** When the cooldown ends — Date, ISO string, or epoch ms */
|
|
3657
|
+
resumeAt: Date | string | number;
|
|
3658
|
+
/** Which action is rate-limited — renders in the title (e.g., «پسندیدن متوقف شده») */
|
|
3659
|
+
actionType?: ActionTypeKey;
|
|
3660
|
+
/** Short explanation (1-2 sentences). Falls back to a locale-specific generic. */
|
|
3661
|
+
reason?: React$1.ReactNode;
|
|
3662
|
+
/**
|
|
3663
|
+
* Whether to re-render every second so the countdown ticks live.
|
|
3664
|
+
* @default true
|
|
3665
|
+
*/
|
|
3666
|
+
live?: boolean;
|
|
3667
|
+
/** Visual tone @default "destructive" */
|
|
3668
|
+
variant?: 'destructive' | 'warning';
|
|
3669
|
+
/**
|
|
3670
|
+
* Callback to retry the operation now (ignores cooldown). Rendered as an
|
|
3671
|
+
* action button when provided.
|
|
3672
|
+
*/
|
|
3673
|
+
onRetryNow?: () => void;
|
|
3674
|
+
/** Override label for the retry button */
|
|
3675
|
+
retryLabel?: React$1.ReactNode;
|
|
3676
|
+
/** Locale for default strings + countdown @default "fa" */
|
|
3677
|
+
locale?: SupportedLocale;
|
|
3678
|
+
}
|
|
3679
|
+
declare const RateLimitBanner: React$1.ForwardRefExoticComponent<RateLimitBannerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3680
|
+
|
|
2161
3681
|
declare const RadioCards: React$1.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
2162
3682
|
columns?: number;
|
|
2163
3683
|
dir?: "rtl" | "ltr";
|
|
@@ -2209,58 +3729,6 @@ declare const SelectLabel: React$1.ForwardRefExoticComponent<Omit<SelectPrimitiv
|
|
|
2209
3729
|
declare const SelectItem: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2210
3730
|
declare const SelectSeparator: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
2211
3731
|
|
|
2212
|
-
declare function Sheet({ ...props }: React$1.ComponentProps<typeof DialogPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
2213
|
-
declare namespace Sheet {
|
|
2214
|
-
var displayName: string;
|
|
2215
|
-
}
|
|
2216
|
-
declare function SheetTrigger({ ...props }: React$1.ComponentProps<typeof DialogPrimitive.Trigger>): react_jsx_runtime.JSX.Element;
|
|
2217
|
-
declare namespace SheetTrigger {
|
|
2218
|
-
var displayName: string;
|
|
2219
|
-
}
|
|
2220
|
-
declare function SheetClose({ ...props }: React$1.ComponentProps<typeof DialogPrimitive.Close>): react_jsx_runtime.JSX.Element;
|
|
2221
|
-
declare namespace SheetClose {
|
|
2222
|
-
var displayName: string;
|
|
2223
|
-
}
|
|
2224
|
-
declare function SheetContent({ className, children, side, ...props }: React$1.ComponentProps<typeof DialogPrimitive.Content> & {
|
|
2225
|
-
side?: 'top' | 'right' | 'bottom' | 'left';
|
|
2226
|
-
}): react_jsx_runtime.JSX.Element;
|
|
2227
|
-
declare namespace SheetContent {
|
|
2228
|
-
var displayName: string;
|
|
2229
|
-
}
|
|
2230
|
-
declare function SheetHeader({ className, ...props }: React$1.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
|
|
2231
|
-
declare namespace SheetHeader {
|
|
2232
|
-
var displayName: string;
|
|
2233
|
-
}
|
|
2234
|
-
declare function SheetBody({ className, ...props }: React$1.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
|
|
2235
|
-
declare namespace SheetBody {
|
|
2236
|
-
var displayName: string;
|
|
2237
|
-
}
|
|
2238
|
-
declare function SheetFooter({ className, ...props }: React$1.ComponentProps<'div'>): react_jsx_runtime.JSX.Element;
|
|
2239
|
-
declare namespace SheetFooter {
|
|
2240
|
-
var displayName: string;
|
|
2241
|
-
}
|
|
2242
|
-
declare function SheetTitle({ className, ...props }: React$1.ComponentProps<typeof DialogPrimitive.Title>): react_jsx_runtime.JSX.Element;
|
|
2243
|
-
declare namespace SheetTitle {
|
|
2244
|
-
var displayName: string;
|
|
2245
|
-
}
|
|
2246
|
-
declare function SheetDescription({ className, ...props }: React$1.ComponentProps<typeof DialogPrimitive.Description>): react_jsx_runtime.JSX.Element;
|
|
2247
|
-
declare namespace SheetDescription {
|
|
2248
|
-
var displayName: string;
|
|
2249
|
-
}
|
|
2250
|
-
|
|
2251
|
-
declare const TooltipProvider: React$1.FC<TooltipPrimitive.TooltipProviderProps>;
|
|
2252
|
-
declare const Tooltip: React$1.FC<TooltipPrimitive.TooltipProps>;
|
|
2253
|
-
declare const TooltipTrigger: React$1.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
2254
|
-
interface TooltipContentProps extends React$1.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> {
|
|
2255
|
-
/** Visual variant */
|
|
2256
|
-
variant?: 'default' | 'light' | 'error';
|
|
2257
|
-
/** Size */
|
|
2258
|
-
size?: 'sm' | 'md';
|
|
2259
|
-
/** Show arrow/caret pointing to trigger */
|
|
2260
|
-
showArrow?: boolean;
|
|
2261
|
-
}
|
|
2262
|
-
declare const TooltipContent: React$1.ForwardRefExoticComponent<TooltipContentProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2263
|
-
|
|
2264
3732
|
type SidebarContextProps = {
|
|
2265
3733
|
state: 'expanded' | 'collapsed';
|
|
2266
3734
|
open: boolean;
|
|
@@ -2269,12 +3737,23 @@ type SidebarContextProps = {
|
|
|
2269
3737
|
setOpenMobile: (open: boolean) => void;
|
|
2270
3738
|
isMobile: boolean;
|
|
2271
3739
|
toggleSidebar: () => void;
|
|
3740
|
+
/**
|
|
3741
|
+
* When true, the sidebar is positioned absolutely within its parent wrapper
|
|
3742
|
+
* instead of fixed to the viewport. Use inside bounded previews, cards,
|
|
3743
|
+
* or anywhere the sidebar should not escape its container.
|
|
3744
|
+
*/
|
|
3745
|
+
contained: boolean;
|
|
2272
3746
|
};
|
|
2273
3747
|
declare function useSidebar(): SidebarContextProps;
|
|
2274
|
-
declare function SidebarProvider({ defaultOpen, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }: React$1.ComponentProps<'div'> & {
|
|
3748
|
+
declare function SidebarProvider({ defaultOpen, open: openProp, onOpenChange: setOpenProp, contained, className, style, children, ...props }: React$1.ComponentProps<'div'> & {
|
|
2275
3749
|
defaultOpen?: boolean;
|
|
2276
3750
|
open?: boolean;
|
|
2277
3751
|
onOpenChange?: (open: boolean) => void;
|
|
3752
|
+
/**
|
|
3753
|
+
* When true, the sidebar is positioned absolutely within this provider
|
|
3754
|
+
* instead of fixed to the viewport. Use inside bounded previews or cards.
|
|
3755
|
+
*/
|
|
3756
|
+
contained?: boolean;
|
|
2278
3757
|
}): react_jsx_runtime.JSX.Element;
|
|
2279
3758
|
declare function Sidebar({ side, variant, collapsible, className, children, ...props }: React$1.ComponentProps<'div'> & {
|
|
2280
3759
|
side?: 'left' | 'right';
|
|
@@ -2410,6 +3889,52 @@ declare function TableSkeleton({ rows, className }: TableSkeletonProps): react_j
|
|
|
2410
3889
|
declare namespace TableSkeleton {
|
|
2411
3890
|
var displayName: string;
|
|
2412
3891
|
}
|
|
3892
|
+
interface TableRowSkeletonProps {
|
|
3893
|
+
/** Number of cells in the row */
|
|
3894
|
+
cells?: number;
|
|
3895
|
+
className?: string;
|
|
3896
|
+
}
|
|
3897
|
+
declare function TableRowSkeleton({ cells, className }: TableRowSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
3898
|
+
declare namespace TableRowSkeleton {
|
|
3899
|
+
var displayName: string;
|
|
3900
|
+
}
|
|
3901
|
+
interface CardSkeletonProps {
|
|
3902
|
+
/** Show a leading image/thumbnail block @default false */
|
|
3903
|
+
withImage?: boolean;
|
|
3904
|
+
/** Aspect ratio of the image (when withImage) @default 'video' */
|
|
3905
|
+
imageAspect?: 'video' | 'square' | 'wide';
|
|
3906
|
+
/** Number of body lines @default 2 */
|
|
3907
|
+
bodyLines?: number;
|
|
3908
|
+
/** Show a footer row (button-shaped placeholder) @default false */
|
|
3909
|
+
withFooter?: boolean;
|
|
3910
|
+
className?: string;
|
|
3911
|
+
}
|
|
3912
|
+
declare function CardSkeleton({ withImage, imageAspect, bodyLines, withFooter, className, }: CardSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
3913
|
+
declare namespace CardSkeleton {
|
|
3914
|
+
var displayName: string;
|
|
3915
|
+
}
|
|
3916
|
+
interface AvatarTextSkeletonProps {
|
|
3917
|
+
/** Avatar size @default 'md' */
|
|
3918
|
+
size?: 'sm' | 'md' | 'lg';
|
|
3919
|
+
/** Number of text lines beside the avatar @default 2 */
|
|
3920
|
+
lines?: number;
|
|
3921
|
+
className?: string;
|
|
3922
|
+
}
|
|
3923
|
+
declare function AvatarTextSkeleton({ size, lines, className }: AvatarTextSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
3924
|
+
declare namespace AvatarTextSkeleton {
|
|
3925
|
+
var displayName: string;
|
|
3926
|
+
}
|
|
3927
|
+
interface FormRowSkeletonProps {
|
|
3928
|
+
/** Field shape — 'input' (one-line), 'textarea' (3-line), 'select' (input + chevron) */
|
|
3929
|
+
field?: 'input' | 'textarea' | 'select';
|
|
3930
|
+
/** Show help text line below input @default false */
|
|
3931
|
+
withHelp?: boolean;
|
|
3932
|
+
className?: string;
|
|
3933
|
+
}
|
|
3934
|
+
declare function FormRowSkeleton({ field, withHelp, className }: FormRowSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
3935
|
+
declare namespace FormRowSkeleton {
|
|
3936
|
+
var displayName: string;
|
|
3937
|
+
}
|
|
2413
3938
|
|
|
2414
3939
|
declare function Slider({ className, defaultValue, value, min, max, dir, ...props }: React$1.ComponentProps<typeof SliderPrimitive.Root>): react_jsx_runtime.JSX.Element;
|
|
2415
3940
|
declare namespace Slider {
|
|
@@ -2432,7 +3957,7 @@ interface SpinnerProps extends React$1.HTMLAttributes<HTMLSpanElement>, VariantP
|
|
|
2432
3957
|
declare const Spinner: React$1.ForwardRefExoticComponent<SpinnerProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
2433
3958
|
|
|
2434
3959
|
declare const switchRootVariants: (props?: ({
|
|
2435
|
-
size?: "
|
|
3960
|
+
size?: "medium" | "sm" | "md" | "lg" | "small" | "large" | null | undefined;
|
|
2436
3961
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
2437
3962
|
interface SwitchProps extends React$1.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>, VariantProps<typeof switchRootVariants> {
|
|
2438
3963
|
}
|
|
@@ -2626,6 +4151,197 @@ interface StepProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
2626
4151
|
declare const Stepper: React$1.ForwardRefExoticComponent<StepperProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2627
4152
|
declare const Step: React$1.ForwardRefExoticComponent<StepProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2628
4153
|
|
|
4154
|
+
interface StatusFlowStageData {
|
|
4155
|
+
/** Stable identifier */
|
|
4156
|
+
id: string;
|
|
4157
|
+
/** Display label */
|
|
4158
|
+
label: React$1.ReactNode;
|
|
4159
|
+
/** Optional one-line description under the label */
|
|
4160
|
+
description?: React$1.ReactNode;
|
|
4161
|
+
/** Optional trailing meta (duration, count, …) shown next to the label */
|
|
4162
|
+
meta?: React$1.ReactNode;
|
|
4163
|
+
/** Status of this stage */
|
|
4164
|
+
status: StageStatusKey;
|
|
4165
|
+
/** Progress 0-100 within this stage. Rendered only when `status === "running"`. */
|
|
4166
|
+
progress?: number;
|
|
4167
|
+
}
|
|
4168
|
+
type StatusFlowOrientation = 'horizontal' | 'vertical';
|
|
4169
|
+
type StatusFlowSize = 'sm' | 'md' | 'lg';
|
|
4170
|
+
interface StatusFlowProps extends Omit<React$1.OlHTMLAttributes<HTMLOListElement>, 'children'> {
|
|
4171
|
+
/** Data-driven stage list. Mutually exclusive with `children`. */
|
|
4172
|
+
stages?: StatusFlowStageData[];
|
|
4173
|
+
/** Composition API — an array of `<StatusFlowStage>` children. */
|
|
4174
|
+
children?: React$1.ReactNode;
|
|
4175
|
+
/** Layout @default "horizontal" */
|
|
4176
|
+
orientation?: StatusFlowOrientation;
|
|
4177
|
+
/** Size @default "md" */
|
|
4178
|
+
size?: StatusFlowSize;
|
|
4179
|
+
/** Whether labels below/beside markers are shown. @default true */
|
|
4180
|
+
showLabels?: boolean;
|
|
4181
|
+
/** Locale for digits + accessible announcements @default "fa" */
|
|
4182
|
+
locale?: SupportedLocale;
|
|
4183
|
+
/** Fires when a stage marker is clicked. When set, markers become buttons. */
|
|
4184
|
+
onStageSelect?: (stage: StatusFlowStageData, index: number) => void;
|
|
4185
|
+
}
|
|
4186
|
+
interface StatusFlowStageProps extends Omit<StatusFlowStageData, 'id'> {
|
|
4187
|
+
id?: string;
|
|
4188
|
+
}
|
|
4189
|
+
/**
|
|
4190
|
+
* Optional composition wrapper. Use this or the `stages` prop on
|
|
4191
|
+
* `<StatusFlow>` — not both. StatusFlow injects position metadata as
|
|
4192
|
+
* internal props; StatusFlowStage should not be rendered outside.
|
|
4193
|
+
*/
|
|
4194
|
+
declare function StatusFlowStage(props: StatusFlowStageProps): React$1.ReactElement;
|
|
4195
|
+
declare const StatusFlow: React$1.ForwardRefExoticComponent<StatusFlowProps & React$1.RefAttributes<HTMLOListElement>>;
|
|
4196
|
+
|
|
4197
|
+
interface JobWizardStep {
|
|
4198
|
+
/** Stable identifier — referenced by `validateStep`, `goToStep`, etc. */
|
|
4199
|
+
id: string;
|
|
4200
|
+
/** Step title (shown in stepper + header when this step is active) */
|
|
4201
|
+
title: string;
|
|
4202
|
+
/** Optional one-line description under the title */
|
|
4203
|
+
description?: string;
|
|
4204
|
+
/** Mark step as optional — a "Skip" button appears. @default false */
|
|
4205
|
+
optional?: boolean;
|
|
4206
|
+
/**
|
|
4207
|
+
* Branching: resolve the next step id based on current data. Returning a
|
|
4208
|
+
* known step id navigates there (skipping any steps in between); returning
|
|
4209
|
+
* `null` marks the wizard as terminal (the Next button submits); returning
|
|
4210
|
+
* `undefined` falls back to the natural linear `currentIndex + 1`.
|
|
4211
|
+
*
|
|
4212
|
+
* Cast `data` to your wizard's data shape inside the callback.
|
|
4213
|
+
*/
|
|
4214
|
+
nextStep?: (data: Partial<Record<string, unknown>>) => string | null | undefined;
|
|
4215
|
+
}
|
|
4216
|
+
/** Result of a validator — `null`/`undefined` = pass, `string` = single error, `Record<field, message>` = field errors */
|
|
4217
|
+
type JobWizardValidationResult = string | Record<string, string> | null | undefined;
|
|
4218
|
+
type JobWizardSubmitState = 'idle' | 'submitting' | 'success' | 'error';
|
|
4219
|
+
interface UseJobWizardOptions<TData extends Record<string, unknown>> {
|
|
4220
|
+
/** Ordered list of steps. Pass a new array reference when the step list should change dynamically (e.g. branching). */
|
|
4221
|
+
steps: JobWizardStep[];
|
|
4222
|
+
/** Initial form data */
|
|
4223
|
+
initialData?: Partial<TData>;
|
|
4224
|
+
/**
|
|
4225
|
+
* Validator fired before navigating to the next step. Also runs for each step
|
|
4226
|
+
* on submit if `validateAllOnSubmit` is true.
|
|
4227
|
+
*
|
|
4228
|
+
* Return `null`/`undefined` to pass, or an error (string or field-map) to block navigation.
|
|
4229
|
+
*/
|
|
4230
|
+
validateStep?: (stepId: string, data: Partial<TData>) => JobWizardValidationResult | Promise<JobWizardValidationResult>;
|
|
4231
|
+
/** Called when the user confirms the last step. May return a Promise. */
|
|
4232
|
+
onSubmit: (data: TData) => Promise<unknown> | unknown;
|
|
4233
|
+
/** Called when the user clicks Cancel */
|
|
4234
|
+
onCancel?: () => void;
|
|
4235
|
+
/** When set, drafts are persisted to localStorage under this key. */
|
|
4236
|
+
draftKey?: string;
|
|
4237
|
+
/** Debounce (ms) for draft save. @default 300 */
|
|
4238
|
+
draftDebounceMs?: number;
|
|
4239
|
+
/** Validate all steps (in order) on submit. Default false — only the current step is validated before submit. */
|
|
4240
|
+
validateAllOnSubmit?: boolean;
|
|
4241
|
+
}
|
|
4242
|
+
interface JobWizardApi<TData extends Record<string, unknown>> {
|
|
4243
|
+
/** Current step (resolved from `steps[currentIndex]`). */
|
|
4244
|
+
readonly currentStep: JobWizardStep;
|
|
4245
|
+
readonly currentIndex: number;
|
|
4246
|
+
readonly isFirst: boolean;
|
|
4247
|
+
readonly isLast: boolean;
|
|
4248
|
+
readonly steps: JobWizardStep[];
|
|
4249
|
+
/** Mutable form data (merged across all steps). */
|
|
4250
|
+
readonly data: Partial<TData>;
|
|
4251
|
+
/** Replace the data object. */
|
|
4252
|
+
setData: React$1.Dispatch<React$1.SetStateAction<Partial<TData>>>;
|
|
4253
|
+
/** Shallow-merge the given patch into `data`. */
|
|
4254
|
+
update: (patch: Partial<TData>) => void;
|
|
4255
|
+
/** Current error. String = whole-step error, Record = per-field errors. */
|
|
4256
|
+
readonly error: string | Record<string, string> | null;
|
|
4257
|
+
/** Clear the current error. */
|
|
4258
|
+
clearError: () => void;
|
|
4259
|
+
/** Submit state lifecycle. */
|
|
4260
|
+
readonly submitState: JobWizardSubmitState;
|
|
4261
|
+
readonly submitResult: unknown;
|
|
4262
|
+
readonly submitError: Error | null;
|
|
4263
|
+
/** Advance to the next step. Runs validation first. Returns true if navigated. */
|
|
4264
|
+
next: () => Promise<boolean>;
|
|
4265
|
+
/** Go back to the previous step. */
|
|
4266
|
+
back: () => void;
|
|
4267
|
+
/** Jump to a specific step by id. Does NOT validate. */
|
|
4268
|
+
goToStep: (id: string) => void;
|
|
4269
|
+
/** Fire onSubmit. Runs validation first (current step only, unless `validateAllOnSubmit`). */
|
|
4270
|
+
submit: () => Promise<void>;
|
|
4271
|
+
/** Fire onCancel if provided. */
|
|
4272
|
+
cancel: () => void;
|
|
4273
|
+
/** Reset wizard to first step + `initialData` + idle state. Also clears draft. */
|
|
4274
|
+
reset: () => void;
|
|
4275
|
+
/** Remove the saved draft from localStorage (if `draftKey` set). */
|
|
4276
|
+
clearDraft: () => void;
|
|
4277
|
+
/** True iff the step at this id has been visited. */
|
|
4278
|
+
isStepVisited: (id: string) => boolean;
|
|
4279
|
+
/** Resolved stage status for the StatusFlow stepper. */
|
|
4280
|
+
stageStatus: (step: JobWizardStep, index: number) => StageStatusKey;
|
|
4281
|
+
}
|
|
4282
|
+
declare function useJobWizard<TData extends Record<string, unknown>>(options: UseJobWizardOptions<TData>): JobWizardApi<TData>;
|
|
4283
|
+
/** Hook to access the wizard from within nested components. */
|
|
4284
|
+
declare function useJobWizardState<TData extends Record<string, unknown> = Record<string, unknown>>(): JobWizardApi<TData>;
|
|
4285
|
+
interface JobWizardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
4286
|
+
/** Wizard API from `useJobWizard`. */
|
|
4287
|
+
wizard: JobWizardApi<Record<string, unknown>>;
|
|
4288
|
+
/** Locale @default "fa" */
|
|
4289
|
+
locale?: SupportedLocale;
|
|
4290
|
+
}
|
|
4291
|
+
declare const JobWizard: React$1.ForwardRefExoticComponent<JobWizardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4292
|
+
interface JobWizardHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
4293
|
+
/** Main title of the wizard (persistent across steps). If omitted, shows the current step's title. */
|
|
4294
|
+
title?: React$1.ReactNode;
|
|
4295
|
+
/** Short description / context line under the title. */
|
|
4296
|
+
description?: React$1.ReactNode;
|
|
4297
|
+
/** Trailing slot (e.g. a close button). */
|
|
4298
|
+
trailing?: React$1.ReactNode;
|
|
4299
|
+
}
|
|
4300
|
+
declare const JobWizardHeader: React$1.ForwardRefExoticComponent<JobWizardHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4301
|
+
interface JobWizardStepperProps {
|
|
4302
|
+
/** Orientation @default "horizontal" */
|
|
4303
|
+
orientation?: 'horizontal' | 'vertical';
|
|
4304
|
+
/** Size @default "md" */
|
|
4305
|
+
size?: 'sm' | 'md' | 'lg';
|
|
4306
|
+
/** Allow clicking visited steps to jump back. @default true */
|
|
4307
|
+
allowJump?: boolean;
|
|
4308
|
+
className?: string;
|
|
4309
|
+
}
|
|
4310
|
+
declare const JobWizardStepper: React$1.FC<JobWizardStepperProps>;
|
|
4311
|
+
declare const JobWizardBody: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
4312
|
+
declare const JobWizardError: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
4313
|
+
declare const JobWizardFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
4314
|
+
/** Invisible flex spacer — pushes following buttons to the logical end. */
|
|
4315
|
+
declare const JobWizardSpacer: React$1.FC;
|
|
4316
|
+
interface JobWizardBackProps extends Omit<React$1.ComponentProps<typeof Button>, 'onClick'> {
|
|
4317
|
+
/** Override label */
|
|
4318
|
+
children?: React$1.ReactNode;
|
|
4319
|
+
}
|
|
4320
|
+
declare const JobWizardBack: React$1.ForwardRefExoticComponent<Omit<JobWizardBackProps, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
4321
|
+
interface JobWizardNextProps extends Omit<React$1.ComponentProps<typeof Button>, 'onClick'> {
|
|
4322
|
+
/** Override label (not applied when on last step — uses `submitLabel` then) */
|
|
4323
|
+
children?: React$1.ReactNode;
|
|
4324
|
+
/** Label for the submit button when on the last step */
|
|
4325
|
+
submitLabel?: React$1.ReactNode;
|
|
4326
|
+
}
|
|
4327
|
+
declare const JobWizardNext: React$1.ForwardRefExoticComponent<Omit<JobWizardNextProps, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
4328
|
+
interface JobWizardCancelProps extends Omit<React$1.ComponentProps<typeof Button>, 'onClick'> {
|
|
4329
|
+
children?: React$1.ReactNode;
|
|
4330
|
+
}
|
|
4331
|
+
declare const JobWizardCancel: React$1.ForwardRefExoticComponent<Omit<JobWizardCancelProps, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
4332
|
+
interface JobWizardSkipProps extends Omit<React$1.ComponentProps<typeof Button>, 'onClick'> {
|
|
4333
|
+
children?: React$1.ReactNode;
|
|
4334
|
+
}
|
|
4335
|
+
declare const JobWizardSkip: React$1.ForwardRefExoticComponent<Omit<JobWizardSkipProps, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
4336
|
+
interface JobWizardSuccessProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
4337
|
+
title?: React$1.ReactNode;
|
|
4338
|
+
description?: React$1.ReactNode;
|
|
4339
|
+
actions?: React$1.ReactNode;
|
|
4340
|
+
/** Only render children when submitState === 'success' @default true */
|
|
4341
|
+
autoShow?: boolean;
|
|
4342
|
+
}
|
|
4343
|
+
declare const JobWizardSuccess: React$1.ForwardRefExoticComponent<JobWizardSuccessProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4344
|
+
|
|
2629
4345
|
interface SentimentBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
2630
4346
|
/** Sentiment type */
|
|
2631
4347
|
sentiment: 'positive' | 'negative' | 'neutral' | 'mixed';
|
|
@@ -2640,28 +4356,111 @@ interface SentimentBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
|
2640
4356
|
}
|
|
2641
4357
|
declare const SentimentBadge: React$1.ForwardRefExoticComponent<SentimentBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
2642
4358
|
|
|
2643
|
-
interface
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
4359
|
+
interface EmotionBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
4360
|
+
/** Emotion (9-class advanced sentiment scale) */
|
|
4361
|
+
emotion: EmotionKey;
|
|
4362
|
+
/** Optional count — shown alongside the label */
|
|
4363
|
+
count?: number;
|
|
4364
|
+
/** Size variant */
|
|
4365
|
+
size?: 'sm' | 'md';
|
|
4366
|
+
/** Show the text label. When false, renders an icon-only chip (aria-label kept). */
|
|
4367
|
+
showLabel?: boolean;
|
|
4368
|
+
/** Locale for label + digit formatting */
|
|
4369
|
+
locale?: SupportedLocale;
|
|
2647
4370
|
}
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
4371
|
+
declare const EmotionBadge: React$1.ForwardRefExoticComponent<EmotionBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
4372
|
+
|
|
4373
|
+
type EmotionData = Partial<Record<EmotionKey, number>>;
|
|
4374
|
+
interface EmotionDistributionProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
4375
|
+
/** Emotion counts (auto-normalized to 100%). Missing keys are treated as 0. */
|
|
4376
|
+
data: EmotionData;
|
|
4377
|
+
/** Display mode */
|
|
4378
|
+
variant?: 'bars' | 'stacked' | 'compact';
|
|
4379
|
+
/**
|
|
4380
|
+
* For 'compact' and 'bars': limit to the top-N emotions by value. Leftover
|
|
4381
|
+
* contributions roll up into a muted "بقیه" chip so totals still make sense.
|
|
4382
|
+
* Default 5 — matches the canonical تحلیل افکار summary density.
|
|
4383
|
+
*/
|
|
4384
|
+
topN?: number;
|
|
4385
|
+
/** Show numeric count labels (in addition to percent). */
|
|
4386
|
+
showCounts?: boolean;
|
|
4387
|
+
/** Show percentage labels. */
|
|
4388
|
+
showPercent?: boolean;
|
|
4389
|
+
/** Locale for label + digit formatting */
|
|
4390
|
+
locale?: SupportedLocale;
|
|
4391
|
+
/** Loading skeleton */
|
|
4392
|
+
isLoading?: boolean;
|
|
4393
|
+
}
|
|
4394
|
+
declare const EmotionDistribution: React$1.ForwardRefExoticComponent<EmotionDistributionProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4395
|
+
|
|
4396
|
+
interface FlowBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
4397
|
+
/** Flow classification */
|
|
4398
|
+
flow: FlowKey;
|
|
4399
|
+
/** Optional count shown alongside the label */
|
|
4400
|
+
count?: number;
|
|
4401
|
+
/** Size */
|
|
4402
|
+
size?: 'sm' | 'md';
|
|
4403
|
+
/** Whether to render the text label (keeps aria-label when false) */
|
|
4404
|
+
showLabel?: boolean;
|
|
4405
|
+
/** Locale for label + digit formatting */
|
|
4406
|
+
locale?: SupportedLocale;
|
|
4407
|
+
}
|
|
4408
|
+
declare const FlowBadge: React$1.ForwardRefExoticComponent<FlowBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
4409
|
+
|
|
4410
|
+
interface StatusBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
4411
|
+
/** Operational status */
|
|
4412
|
+
status: StatusKey;
|
|
4413
|
+
/** Size */
|
|
4414
|
+
size?: 'sm' | 'md';
|
|
4415
|
+
/** Show text label (keeps aria-label when false) */
|
|
4416
|
+
showLabel?: boolean;
|
|
4417
|
+
/** Locale */
|
|
4418
|
+
locale?: SupportedLocale;
|
|
4419
|
+
/**
|
|
4420
|
+
* Explicitly enable/disable the pulse animation on the indicator dot.
|
|
4421
|
+
* Default: animated only for `status="critical"`. Pair with
|
|
4422
|
+
* `prefers-reduced-motion` (already honoured globally in globals.css).
|
|
4423
|
+
*/
|
|
4424
|
+
animated?: boolean;
|
|
4425
|
+
}
|
|
4426
|
+
declare const StatusBadge: React$1.ForwardRefExoticComponent<StatusBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
4427
|
+
|
|
4428
|
+
interface SeverityBadgeProps extends React$1.HTMLAttributes<HTMLSpanElement> {
|
|
4429
|
+
/** Urgency level — independent from operational status */
|
|
4430
|
+
severity: SeverityKey;
|
|
4431
|
+
/** Size */
|
|
4432
|
+
size?: 'sm' | 'md';
|
|
4433
|
+
/** Show text label */
|
|
4434
|
+
showLabel?: boolean;
|
|
4435
|
+
/** Render as a solid chip instead of the soft tinted pill (for high-contrast lists) */
|
|
4436
|
+
variant?: 'soft' | 'solid';
|
|
4437
|
+
/** Locale */
|
|
4438
|
+
locale?: SupportedLocale;
|
|
4439
|
+
}
|
|
4440
|
+
declare const SeverityBadge: React$1.ForwardRefExoticComponent<SeverityBadgeProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
4441
|
+
|
|
4442
|
+
interface MultiSelectOption {
|
|
4443
|
+
value: string;
|
|
4444
|
+
label: string;
|
|
4445
|
+
disabled?: boolean;
|
|
4446
|
+
}
|
|
4447
|
+
interface MultiSelectProps {
|
|
4448
|
+
/** All available options */
|
|
4449
|
+
options: MultiSelectOption[];
|
|
4450
|
+
/** Currently selected values */
|
|
4451
|
+
value?: string[];
|
|
4452
|
+
/** Callback fired when selection changes */
|
|
4453
|
+
onValueChange?: (value: string[]) => void;
|
|
4454
|
+
/** Placeholder text when nothing is selected */
|
|
4455
|
+
placeholder?: string;
|
|
4456
|
+
/** Disables the entire control */
|
|
4457
|
+
disabled?: boolean;
|
|
4458
|
+
/** Shows loading skeleton in dropdown */
|
|
4459
|
+
isLoading?: boolean;
|
|
4460
|
+
/** Maximum number of items that can be selected */
|
|
4461
|
+
maxSelected?: number;
|
|
4462
|
+
/** How many selected chips to display before collapsing into a count badge */
|
|
4463
|
+
maxDisplayed?: number;
|
|
2665
4464
|
/** Locale for display and default strings */
|
|
2666
4465
|
locale?: SupportedLocale;
|
|
2667
4466
|
/** Additional className on the trigger */
|
|
@@ -2696,23 +4495,6 @@ interface PeriodSelectorProps {
|
|
|
2696
4495
|
}
|
|
2697
4496
|
declare const PeriodSelector: React$1.ForwardRefExoticComponent<PeriodSelectorProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2698
4497
|
|
|
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
4498
|
interface SearchInputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, 'size'>, VariantProps<typeof InputVariants> {
|
|
2717
4499
|
/** Locale for placeholder and aria labels */
|
|
2718
4500
|
locale?: SupportedLocale;
|
|
@@ -2731,28 +4513,6 @@ interface SearchInputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputEle
|
|
|
2731
4513
|
}
|
|
2732
4514
|
declare const SearchInput: React$1.ForwardRefExoticComponent<SearchInputProps & React$1.RefAttributes<HTMLInputElement>>;
|
|
2733
4515
|
|
|
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
4516
|
interface ComparisonCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2757
4517
|
/** Card title */
|
|
2758
4518
|
title: string;
|
|
@@ -2785,74 +4545,197 @@ interface ComparisonCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
2785
4545
|
}
|
|
2786
4546
|
declare const ComparisonCard: React$1.ForwardRefExoticComponent<ComparisonCardProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
2787
4547
|
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
|
|
2798
|
-
|
|
4548
|
+
/**
|
|
4549
|
+
* data-table-cells — opinionated thin wrappers around DS primitives, sized
|
|
4550
|
+
* and styled for use as `DataTableColumn.cell` values. Each cell renderer
|
|
4551
|
+
* gives a consistent inline footprint (no margin/padding chrome) and pairs
|
|
4552
|
+
* a chart/badge with optional numeric value text.
|
|
4553
|
+
*
|
|
4554
|
+
* Usage:
|
|
4555
|
+
* columns={[
|
|
4556
|
+
* {
|
|
4557
|
+
* id: 'engagement',
|
|
4558
|
+
* header: 'تعامل',
|
|
4559
|
+
* cell: (row) => <SparklineCell data={row.history} value={row.eRate} suffix="٪" />,
|
|
4560
|
+
* },
|
|
4561
|
+
* ...
|
|
4562
|
+
* ]}
|
|
4563
|
+
*/
|
|
4564
|
+
interface SparklineCellProps {
|
|
4565
|
+
/** History values (typically 6-12 points) */
|
|
4566
|
+
data: number[];
|
|
4567
|
+
/** Optional numeric value shown after the sparkline */
|
|
4568
|
+
value?: number;
|
|
4569
|
+
/** Suffix appended to value (e.g., '٪') */
|
|
4570
|
+
suffix?: React$1.ReactNode;
|
|
4571
|
+
/** Sparkline width in px @default 64 */
|
|
4572
|
+
width?: number;
|
|
4573
|
+
/** Sparkline height in px @default 18 */
|
|
4574
|
+
height?: number;
|
|
4575
|
+
/** Sparkline visual variant @default 'line' */
|
|
4576
|
+
variant?: 'line' | 'area' | 'bars';
|
|
4577
|
+
/** Override trend color (auto-detected from first vs last) */
|
|
4578
|
+
trend?: 'up' | 'down' | 'neutral';
|
|
4579
|
+
/** Locale @default 'fa' */
|
|
4580
|
+
locale?: SupportedLocale;
|
|
4581
|
+
/** Decimal places for value @default 0 */
|
|
4582
|
+
decimals?: number;
|
|
2799
4583
|
className?: string;
|
|
2800
|
-
/** Column alignment */
|
|
2801
|
-
align?: 'start' | 'center' | 'end';
|
|
2802
4584
|
}
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
4585
|
+
declare const SparklineCell: React$1.ForwardRefExoticComponent<SparklineCellProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4586
|
+
interface TrendCellProps {
|
|
4587
|
+
/** Numeric delta. Positive=up, negative=down, zero=flat. */
|
|
4588
|
+
value: number;
|
|
4589
|
+
/** Suffix (e.g., '٪'). */
|
|
4590
|
+
suffix?: React$1.ReactNode;
|
|
4591
|
+
/** Show the absolute value text alongside the arrow @default true */
|
|
4592
|
+
showValue?: boolean;
|
|
4593
|
+
/** Inverted trend (lower=better) — colours flip */
|
|
4594
|
+
invert?: boolean;
|
|
4595
|
+
/** Locale @default 'fa' */
|
|
4596
|
+
locale?: SupportedLocale;
|
|
4597
|
+
className?: string;
|
|
2807
4598
|
}
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
|
|
4599
|
+
declare const TrendCell: React$1.ForwardRefExoticComponent<TrendCellProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
4600
|
+
interface StatusPulseCellProps {
|
|
4601
|
+
status: StatusKey;
|
|
4602
|
+
/** Optional label after the dot (omit for ultra-compact rows) */
|
|
4603
|
+
label?: React$1.ReactNode;
|
|
4604
|
+
/** Locale (forwarded to StatusBadge for default labels) */
|
|
4605
|
+
locale?: SupportedLocale;
|
|
4606
|
+
className?: string;
|
|
2812
4607
|
}
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
4608
|
+
declare const StatusPulseCell: React$1.ForwardRefExoticComponent<StatusPulseCellProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
4609
|
+
interface SentimentCellProps {
|
|
4610
|
+
/** Sentiment counts. */
|
|
4611
|
+
data: SentimentData;
|
|
4612
|
+
/** Visual mode @default 'stacked' */
|
|
4613
|
+
variant?: 'stacked' | 'bars' | 'compact';
|
|
4614
|
+
/** Width of the inline bar @default 80 */
|
|
4615
|
+
width?: number;
|
|
4616
|
+
/** Locale */
|
|
4617
|
+
locale?: SupportedLocale;
|
|
4618
|
+
className?: string;
|
|
2818
4619
|
}
|
|
2819
|
-
|
|
2820
|
-
|
|
4620
|
+
declare const SentimentCell: React$1.ForwardRefExoticComponent<SentimentCellProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4621
|
+
interface FlowCellProps {
|
|
4622
|
+
/** Flow counts. */
|
|
4623
|
+
data: FlowData;
|
|
4624
|
+
/** Visual mode @default 'stacked' */
|
|
4625
|
+
variant?: 'stacked' | 'bars' | 'compact';
|
|
4626
|
+
/** Width of the inline bar @default 96 */
|
|
4627
|
+
width?: number;
|
|
4628
|
+
/** Locale */
|
|
4629
|
+
locale?: SupportedLocale;
|
|
4630
|
+
className?: string;
|
|
4631
|
+
}
|
|
4632
|
+
declare const FlowCell: React$1.ForwardRefExoticComponent<FlowCellProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4633
|
+
interface ProgressCellProps {
|
|
4634
|
+
/** Progress 0–100 */
|
|
4635
|
+
value: number;
|
|
4636
|
+
/** Show value text after the bar @default true */
|
|
4637
|
+
showValue?: boolean;
|
|
4638
|
+
/** Suffix on value (e.g., '٪'). Defaults to locale-appropriate %. */
|
|
4639
|
+
suffix?: React$1.ReactNode;
|
|
4640
|
+
/** Variant for color */
|
|
4641
|
+
variant?: 'primary' | 'secondary' | 'success' | 'warning' | 'destructive';
|
|
4642
|
+
/** Bar width @default 80 */
|
|
4643
|
+
width?: number;
|
|
4644
|
+
/** Locale @default 'fa' */
|
|
4645
|
+
locale?: SupportedLocale;
|
|
4646
|
+
className?: string;
|
|
4647
|
+
}
|
|
4648
|
+
declare const ProgressCell: React$1.ForwardRefExoticComponent<ProgressCellProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4649
|
+
interface StatDeltaCellProps {
|
|
4650
|
+
/** Primary value (e.g., 1240) */
|
|
4651
|
+
value: number | string;
|
|
4652
|
+
/** Delta (positive=up). Hidden if undefined. */
|
|
4653
|
+
delta?: number;
|
|
4654
|
+
/** Format the value with locale digits @default true (when value is number) */
|
|
4655
|
+
formatValue?: boolean;
|
|
4656
|
+
/** Suffix on value */
|
|
4657
|
+
valueSuffix?: React$1.ReactNode;
|
|
4658
|
+
/** Suffix on delta */
|
|
4659
|
+
deltaSuffix?: React$1.ReactNode;
|
|
4660
|
+
/** Inverted trend (lower=better) */
|
|
4661
|
+
invertDelta?: boolean;
|
|
4662
|
+
/** Locale */
|
|
4663
|
+
locale?: SupportedLocale;
|
|
4664
|
+
className?: string;
|
|
4665
|
+
}
|
|
4666
|
+
declare const StatDeltaCell: React$1.ForwardRefExoticComponent<StatDeltaCellProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
4667
|
+
|
|
4668
|
+
interface DataTableColumnVisibilityToggleProps<TData> {
|
|
2821
4669
|
columns: DataTableColumn<TData>[];
|
|
2822
|
-
|
|
4670
|
+
visibility: DataTableColumnVisibility;
|
|
4671
|
+
/** Locale @default 'fa' */
|
|
4672
|
+
locale?: SupportedLocale;
|
|
4673
|
+
/** Custom trigger label (defaults to "ستونها") */
|
|
4674
|
+
label?: React$1.ReactNode;
|
|
4675
|
+
/** Custom Button class */
|
|
4676
|
+
className?: string;
|
|
4677
|
+
/** Override Button size */
|
|
4678
|
+
size?: 'xs' | 'sm' | 'default';
|
|
4679
|
+
/** Override Button variant */
|
|
4680
|
+
variant?: 'default' | 'outline' | 'ghost' | 'secondary';
|
|
4681
|
+
}
|
|
4682
|
+
declare function DataTableColumnVisibilityToggle<TData>({ columns, visibility, locale, label, className, size, variant, }: DataTableColumnVisibilityToggleProps<TData>): react_jsx_runtime.JSX.Element;
|
|
4683
|
+
/**
|
|
4684
|
+
* Convert column definitions + row data into a CSV string. Each cell is
|
|
4685
|
+
* stringified by calling its `cell` render and extracting plain text — for
|
|
4686
|
+
* complex React nodes pass an `exportValue: (row) => string` on the column.
|
|
4687
|
+
*/
|
|
4688
|
+
interface ExportableColumn<TData> extends DataTableColumn<TData> {
|
|
4689
|
+
/** Override how this column's value is serialized for export. */
|
|
4690
|
+
exportValue?: (row: TData, index: number) => string | number | boolean | null | undefined;
|
|
4691
|
+
}
|
|
4692
|
+
/**
|
|
4693
|
+
* Build a CSV string from columns + rows. Header row uses each column's
|
|
4694
|
+
* `header` (if string) or its `id` as fallback.
|
|
4695
|
+
*/
|
|
4696
|
+
declare function buildCsv<TData>(columns: ExportableColumn<TData>[], data: TData[]): string;
|
|
4697
|
+
/** Build a TSV string (tab-separated) — useful for "paste into spreadsheet". */
|
|
4698
|
+
declare function buildTsv<TData>(columns: ExportableColumn<TData>[], data: TData[]): string;
|
|
4699
|
+
/** Trigger a browser download of `content` with the given filename + mime. */
|
|
4700
|
+
declare function downloadFile(filename: string, content: string, mime?: string): void;
|
|
4701
|
+
interface DataTableExportButtonProps<TData> {
|
|
4702
|
+
columns: ExportableColumn<TData>[];
|
|
2823
4703
|
data: TData[];
|
|
2824
|
-
/**
|
|
2825
|
-
|
|
2826
|
-
/**
|
|
2827
|
-
|
|
2828
|
-
/**
|
|
2829
|
-
|
|
2830
|
-
/**
|
|
2831
|
-
|
|
2832
|
-
/**
|
|
2833
|
-
pagination?: DataTablePagination;
|
|
2834
|
-
/** Sort configuration */
|
|
2835
|
-
sort?: DataTableSort;
|
|
2836
|
-
/** Row selection configuration */
|
|
2837
|
-
selection?: DataTableSelection<TData>;
|
|
2838
|
-
/** Zebra-striped rows */
|
|
2839
|
-
striped?: boolean;
|
|
2840
|
-
/** Bordered cells */
|
|
2841
|
-
bordered?: boolean;
|
|
2842
|
-
/** Sticky header */
|
|
2843
|
-
stickyHeader?: boolean;
|
|
2844
|
-
/** Additional className for the root wrapper */
|
|
4704
|
+
/** Output filename (default: data-<timestamp>.csv) */
|
|
4705
|
+
filename?: string;
|
|
4706
|
+
/** Locale @default 'fa' */
|
|
4707
|
+
locale?: SupportedLocale;
|
|
4708
|
+
/** Override label */
|
|
4709
|
+
label?: React$1.ReactNode;
|
|
4710
|
+
/** Hide TSV-copy entry @default false */
|
|
4711
|
+
hideTsv?: boolean;
|
|
4712
|
+
/** Custom Button class */
|
|
2845
4713
|
className?: string;
|
|
2846
|
-
/**
|
|
2847
|
-
|
|
2848
|
-
/**
|
|
2849
|
-
|
|
2850
|
-
|
|
4714
|
+
/** Override Button size */
|
|
4715
|
+
size?: 'xs' | 'sm' | 'default';
|
|
4716
|
+
/** Override Button variant */
|
|
4717
|
+
variant?: 'default' | 'outline' | 'ghost' | 'secondary';
|
|
4718
|
+
}
|
|
4719
|
+
declare function DataTableExportButton<TData>({ columns, data, filename, locale, label, hideTsv, className, size, variant, }: DataTableExportButtonProps<TData>): react_jsx_runtime.JSX.Element;
|
|
4720
|
+
|
|
4721
|
+
interface TableComparisonViewProps<TData> {
|
|
4722
|
+
/** Original DataTable column definitions — `cell()` is reused for rendering. */
|
|
4723
|
+
columns: DataTableColumn<TData>[];
|
|
4724
|
+
/** Rows being compared. Recommended 2-4. */
|
|
4725
|
+
rows: TData[];
|
|
4726
|
+
/** Optional label for each row column header (e.g., name). Falls back to `Row N`. */
|
|
4727
|
+
rowLabel?: (row: TData, index: number) => React$1.ReactNode;
|
|
4728
|
+
/** Callback for the column "remove" button. When omitted, no remove button shows. */
|
|
4729
|
+
onRemoveRow?: (row: TData, index: number) => void;
|
|
4730
|
+
/** Highlight cells whose value differs across rows @default true */
|
|
4731
|
+
highlightDifferences?: boolean;
|
|
4732
|
+
/** Locale @default 'fa' */
|
|
2851
4733
|
locale?: SupportedLocale;
|
|
4734
|
+
/** Empty state when no rows are passed */
|
|
4735
|
+
emptyState?: React$1.ReactNode;
|
|
4736
|
+
className?: string;
|
|
2852
4737
|
}
|
|
2853
|
-
declare const
|
|
2854
|
-
ref?: React$1.ForwardedRef<HTMLDivElement>;
|
|
2855
|
-
}) => React$1.ReactElement;
|
|
4738
|
+
declare const TableComparisonView: <TData>(props: TableComparisonViewProps<TData>) => React$1.ReactElement;
|
|
2856
4739
|
|
|
2857
4740
|
interface DirectionalBoxProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
2858
4741
|
/**
|
|
@@ -2917,8 +4800,166 @@ interface SafeImageProps extends React$1.ImgHTMLAttributes<HTMLImageElement> {
|
|
|
2917
4800
|
}
|
|
2918
4801
|
declare const SafeImage: React$1.ForwardRefExoticComponent<SafeImageProps & React$1.RefAttributes<HTMLImageElement>>;
|
|
2919
4802
|
|
|
4803
|
+
interface ReportComposerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
4804
|
+
/** Report title (e.g., "بولتن هفتگی — هفته ۱۴") */
|
|
4805
|
+
title?: React$1.ReactNode;
|
|
4806
|
+
/** Subtitle / metadata */
|
|
4807
|
+
description?: React$1.ReactNode;
|
|
4808
|
+
/** Top-right header actions (Save, Export, …) */
|
|
4809
|
+
headerActions?: React$1.ReactNode;
|
|
4810
|
+
/** Locale @default 'fa' */
|
|
4811
|
+
locale?: SupportedLocale;
|
|
4812
|
+
}
|
|
4813
|
+
declare const ReportComposer: React$1.ForwardRefExoticComponent<ReportComposerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4814
|
+
interface ReportSectionProps extends Omit<React$1.HTMLAttributes<HTMLElement>, 'title'> {
|
|
4815
|
+
/** Section title */
|
|
4816
|
+
title: React$1.ReactNode;
|
|
4817
|
+
/** Optional secondary text */
|
|
4818
|
+
description?: React$1.ReactNode;
|
|
4819
|
+
/** Whether the section is enabled (in the bulletin output) */
|
|
4820
|
+
enabled?: boolean;
|
|
4821
|
+
/** Callback when the enable switch is toggled. When omitted, switch is hidden. */
|
|
4822
|
+
onEnabledChange?: (next: boolean) => void;
|
|
4823
|
+
/** Whether the section is collapsed (only the header visible) */
|
|
4824
|
+
collapsed?: boolean;
|
|
4825
|
+
/** Callback when collapse toggles. When omitted, collapse button is hidden. */
|
|
4826
|
+
onCollapsedChange?: (next: boolean) => void;
|
|
4827
|
+
/** Show drag handle (consumer wires the drag interaction) */
|
|
4828
|
+
draggable?: boolean;
|
|
4829
|
+
/** drag-handle pointerDown — set when wiring native or react-dnd */
|
|
4830
|
+
onDragHandlePointerDown?: (e: React$1.PointerEvent<HTMLButtonElement>) => void;
|
|
4831
|
+
/** Render a settings button (e.g., to open a popover). When omitted, hidden. */
|
|
4832
|
+
onSettingsClick?: () => void;
|
|
4833
|
+
/** Custom header actions (extra buttons beside settings) */
|
|
4834
|
+
headerActions?: React$1.ReactNode;
|
|
4835
|
+
}
|
|
4836
|
+
declare const ReportSection: React$1.ForwardRefExoticComponent<ReportSectionProps & React$1.RefAttributes<HTMLElement>>;
|
|
4837
|
+
interface BulletinViewerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
4838
|
+
/** Bulletin title (h1) */
|
|
4839
|
+
title: React$1.ReactNode;
|
|
4840
|
+
/** Author / source line */
|
|
4841
|
+
author?: React$1.ReactNode;
|
|
4842
|
+
/** Publish date display */
|
|
4843
|
+
publishedAt?: React$1.ReactNode;
|
|
4844
|
+
/** Optional list of subtitle lines (volume, edition, etc.) */
|
|
4845
|
+
meta?: React$1.ReactNode[];
|
|
4846
|
+
/** Action buttons in the header (Print, Download PDF, Share). Hidden when printing via @media print. */
|
|
4847
|
+
headerActions?: React$1.ReactNode;
|
|
4848
|
+
/** Locale @default 'fa' */
|
|
4849
|
+
locale?: SupportedLocale;
|
|
4850
|
+
}
|
|
4851
|
+
declare const BulletinViewer: React$1.ForwardRefExoticComponent<BulletinViewerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4852
|
+
|
|
4853
|
+
/**
|
|
4854
|
+
* Report section templates — thin compositions of existing primitives that
|
|
4855
|
+
* each render inside a `<ReportSection>` shell. They cover the 6 layouts
|
|
4856
|
+
* that recur across every افکارسنجی bulletin we've seen:
|
|
4857
|
+
*
|
|
4858
|
+
* 1. ExecutiveSummarySection — title + AI paragraph + tile metrics
|
|
4859
|
+
* 2. SentimentBreakdownSection — sentiment + optional 9-emotion side-by-side
|
|
4860
|
+
* 3. FlowDistributionSection — political-flow stacked bar
|
|
4861
|
+
* 4. TopPostsSection — compact PostList of N highlighted posts
|
|
4862
|
+
* 5. TimelineSection — line chart with optional sparkline summary
|
|
4863
|
+
* 6. SourceBreakdownSection — per-platform metric grid
|
|
4864
|
+
*
|
|
4865
|
+
* Each template is intentionally thin — props mirror the underlying
|
|
4866
|
+
* primitive when possible. Consumers compose these inside a
|
|
4867
|
+
* `<ReportComposer>`; for non-template sections, `<ReportSection>` is
|
|
4868
|
+
* still the building block.
|
|
4869
|
+
*/
|
|
4870
|
+
|
|
4871
|
+
type ReportSectionShellProps = Pick<ReportSectionProps, 'enabled' | 'onEnabledChange' | 'collapsed' | 'onCollapsedChange' | 'draggable' | 'onDragHandlePointerDown' | 'onSettingsClick' | 'headerActions'>;
|
|
4872
|
+
interface ExecutiveSummaryMetric {
|
|
4873
|
+
label: string;
|
|
4874
|
+
value: number | string;
|
|
4875
|
+
/** Pre-formatted display value. When omitted, numeric `value` is locale-formatted via `formatLargeNumber`. */
|
|
4876
|
+
displayValue?: string;
|
|
4877
|
+
/** Optional delta (percent vs previous period). */
|
|
4878
|
+
delta?: number;
|
|
4879
|
+
/** Optional unit string appended to the value (e.g. ' %'). */
|
|
4880
|
+
unit?: string;
|
|
4881
|
+
}
|
|
4882
|
+
interface ExecutiveSummarySectionProps extends ReportSectionShellProps {
|
|
4883
|
+
/** Section title (e.g., "خلاصه اجرایی") */
|
|
4884
|
+
title?: React$1.ReactNode;
|
|
4885
|
+
description?: React$1.ReactNode;
|
|
4886
|
+
/** AI / analyst-written paragraph (1–4 sentences). */
|
|
4887
|
+
summary: React$1.ReactNode;
|
|
4888
|
+
/** Up to 4 KPIs rendered as a row of tiles. */
|
|
4889
|
+
metrics?: ExecutiveSummaryMetric[];
|
|
4890
|
+
locale?: SupportedLocale;
|
|
4891
|
+
}
|
|
4892
|
+
declare const ExecutiveSummarySection: React$1.ForwardRefExoticComponent<ExecutiveSummarySectionProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4893
|
+
interface SentimentBreakdownSectionProps extends ReportSectionShellProps {
|
|
4894
|
+
title?: React$1.ReactNode;
|
|
4895
|
+
description?: React$1.ReactNode;
|
|
4896
|
+
/** 3-class sentiment counts (auto-normalized). */
|
|
4897
|
+
sentiment: SentimentData;
|
|
4898
|
+
/** Optional 9-emotion breakdown rendered alongside. */
|
|
4899
|
+
emotions?: Partial<Record<EmotionKey, number>>;
|
|
4900
|
+
locale?: SupportedLocale;
|
|
4901
|
+
}
|
|
4902
|
+
declare const SentimentBreakdownSection: React$1.ForwardRefExoticComponent<SentimentBreakdownSectionProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4903
|
+
interface FlowDistributionSectionProps extends ReportSectionShellProps {
|
|
4904
|
+
title?: React$1.ReactNode;
|
|
4905
|
+
description?: React$1.ReactNode;
|
|
4906
|
+
/** Political-flow counts (5 keys). */
|
|
4907
|
+
flow: Partial<Record<FlowKey, number>>;
|
|
4908
|
+
locale?: SupportedLocale;
|
|
4909
|
+
}
|
|
4910
|
+
declare const FlowDistributionSection: React$1.ForwardRefExoticComponent<FlowDistributionSectionProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4911
|
+
interface TopPostsSectionProps extends ReportSectionShellProps {
|
|
4912
|
+
title?: React$1.ReactNode;
|
|
4913
|
+
description?: React$1.ReactNode;
|
|
4914
|
+
posts: PostData[];
|
|
4915
|
+
/** Render only the first N posts. @default 5 */
|
|
4916
|
+
topN?: number;
|
|
4917
|
+
/** Density passed through to PostList. @default 'compact' */
|
|
4918
|
+
density?: 'compact' | 'comfortable';
|
|
4919
|
+
locale?: SupportedLocale;
|
|
4920
|
+
}
|
|
4921
|
+
declare const TopPostsSection: React$1.ForwardRefExoticComponent<TopPostsSectionProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4922
|
+
interface TimelineSectionProps extends ReportSectionShellProps {
|
|
4923
|
+
title?: React$1.ReactNode;
|
|
4924
|
+
description?: React$1.ReactNode;
|
|
4925
|
+
/** Row-oriented timeline data: [{ name: '۱ فروردین', volume: 1240 }, …] */
|
|
4926
|
+
data: Array<Record<string, string | number>>;
|
|
4927
|
+
/** Series keys to plot. */
|
|
4928
|
+
dataKeys: string[];
|
|
4929
|
+
/** Pixel chart height. @default 240 */
|
|
4930
|
+
chartHeight?: number;
|
|
4931
|
+
/**
|
|
4932
|
+
* Optional one-line summary of the trend, rendered as a sparkline + delta
|
|
4933
|
+
* pair below the chart. Pass a single series name and a "from" / "to" pair
|
|
4934
|
+
* to highlight the period delta.
|
|
4935
|
+
*/
|
|
4936
|
+
summary?: {
|
|
4937
|
+
seriesKey: string;
|
|
4938
|
+
from: number;
|
|
4939
|
+
to: number;
|
|
4940
|
+
};
|
|
4941
|
+
/** Custom axes (forwarded to PartoLineChart). */
|
|
4942
|
+
axisLeft?: Record<string, unknown>;
|
|
4943
|
+
axisBottom?: Record<string, unknown>;
|
|
4944
|
+
locale?: SupportedLocale;
|
|
4945
|
+
}
|
|
4946
|
+
declare const TimelineSection: React$1.ForwardRefExoticComponent<TimelineSectionProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4947
|
+
interface SourceBreakdownEntry {
|
|
4948
|
+
platform: SocialPlatform;
|
|
4949
|
+
count: number;
|
|
4950
|
+
/** Pre-computed share percent. When omitted, percent is computed across all entries. */
|
|
4951
|
+
percent?: number;
|
|
4952
|
+
}
|
|
4953
|
+
interface SourceBreakdownSectionProps extends ReportSectionShellProps {
|
|
4954
|
+
title?: React$1.ReactNode;
|
|
4955
|
+
description?: React$1.ReactNode;
|
|
4956
|
+
sources: SourceBreakdownEntry[];
|
|
4957
|
+
locale?: SupportedLocale;
|
|
4958
|
+
}
|
|
4959
|
+
declare const SourceBreakdownSection: React$1.ForwardRefExoticComponent<SourceBreakdownSectionProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
4960
|
+
|
|
2920
4961
|
declare const calloutVariants: (props?: ({
|
|
2921
|
-
variant?: "
|
|
4962
|
+
variant?: "neutral" | "warning" | "success" | "info" | "destructive" | null | undefined;
|
|
2922
4963
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
2923
4964
|
interface CalloutProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof calloutVariants> {
|
|
2924
4965
|
/** Custom icon. Set to `null` to hide the icon. */
|
|
@@ -2961,169 +5002,6 @@ interface SectionNavigatorProps extends React$1.HTMLAttributes<HTMLElement> {
|
|
|
2961
5002
|
}
|
|
2962
5003
|
declare const SectionNavigator: React$1.ForwardRefExoticComponent<SectionNavigatorProps & React$1.RefAttributes<HTMLElement>>;
|
|
2963
5004
|
|
|
2964
|
-
interface PartoLineChartProps {
|
|
2965
|
-
/** Row-oriented data: [{ name: "فروردین", series1: 50, series2: 30 }] */
|
|
2966
|
-
data: Array<Record<string, any>>;
|
|
2967
|
-
/** Keys for each line series (e.g. ['فروش', 'سود']) */
|
|
2968
|
-
dataKeys: string[];
|
|
2969
|
-
/** Field name for X axis (default: 'name') */
|
|
2970
|
-
xAxisKey?: string;
|
|
2971
|
-
/** Curve type */
|
|
2972
|
-
curve?: 'monotone' | 'linear' | 'natural' | 'step';
|
|
2973
|
-
/** Line width */
|
|
2974
|
-
strokeWidth?: number;
|
|
2975
|
-
/** Show dots on data points */
|
|
2976
|
-
showDots?: boolean;
|
|
2977
|
-
/** Show horizontal grid lines */
|
|
2978
|
-
enableGridY?: boolean;
|
|
2979
|
-
/** Show vertical grid lines */
|
|
2980
|
-
enableGridX?: boolean;
|
|
2981
|
-
/** Chart margins */
|
|
2982
|
-
margin?: {
|
|
2983
|
-
top?: number;
|
|
2984
|
-
right?: number;
|
|
2985
|
-
bottom?: number;
|
|
2986
|
-
left?: number;
|
|
2987
|
-
};
|
|
2988
|
-
/** Custom X axis config */
|
|
2989
|
-
axisBottom?: Record<string, any> | null;
|
|
2990
|
-
/** Custom Y axis config */
|
|
2991
|
-
axisLeft?: Record<string, any> | null;
|
|
2992
|
-
/** Custom tooltip formatter */
|
|
2993
|
-
tooltipFormatter?: (name: string, value: number) => React$1.ReactNode;
|
|
2994
|
-
className?: string;
|
|
2995
|
-
isLoading?: boolean;
|
|
2996
|
-
ariaLabel?: string;
|
|
2997
|
-
/** Additional Recharts LineChart props */
|
|
2998
|
-
chartProps?: Record<string, any>;
|
|
2999
|
-
}
|
|
3000
|
-
declare const PartoLineChart: React$1.ForwardRefExoticComponent<PartoLineChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3001
|
-
|
|
3002
|
-
interface PartoBarChartProps {
|
|
3003
|
-
/** Chart data — row-oriented array of objects */
|
|
3004
|
-
data: Array<Record<string, any>>;
|
|
3005
|
-
/** Data keys to render as bars (e.g. ['فروش', 'هزینه']) */
|
|
3006
|
-
keys: string[];
|
|
3007
|
-
/** Field name used for X axis categories (e.g. 'ماه') */
|
|
3008
|
-
indexBy: string;
|
|
3009
|
-
/** Stacked or grouped layout */
|
|
3010
|
-
groupMode?: 'grouped' | 'stacked';
|
|
3011
|
-
/** Bar layout direction */
|
|
3012
|
-
layout?: 'vertical' | 'horizontal';
|
|
3013
|
-
/** Chart margins */
|
|
3014
|
-
margin?: {
|
|
3015
|
-
top?: number;
|
|
3016
|
-
right?: number;
|
|
3017
|
-
bottom?: number;
|
|
3018
|
-
left?: number;
|
|
3019
|
-
};
|
|
3020
|
-
/** Gap between category groups as percentage */
|
|
3021
|
-
barCategoryGap?: string | number;
|
|
3022
|
-
/** Gap between bars within a group */
|
|
3023
|
-
barGap?: number;
|
|
3024
|
-
/** Border radius for bar tops [topLeft, topRight, bottomRight, bottomLeft] */
|
|
3025
|
-
radius?: [number, number, number, number];
|
|
3026
|
-
/** Show horizontal grid lines */
|
|
3027
|
-
enableGridY?: boolean;
|
|
3028
|
-
/** Show vertical grid lines */
|
|
3029
|
-
enableGridX?: boolean;
|
|
3030
|
-
/** Show labels inside bars */
|
|
3031
|
-
enableLabel?: boolean;
|
|
3032
|
-
/** Custom X axis config */
|
|
3033
|
-
axisBottom?: Record<string, any> | null;
|
|
3034
|
-
/** Custom Y axis config */
|
|
3035
|
-
axisLeft?: Record<string, any> | null;
|
|
3036
|
-
/** Custom tooltip formatter */
|
|
3037
|
-
tooltipFormatter?: (name: string, value: number) => React$1.ReactNode;
|
|
3038
|
-
className?: string;
|
|
3039
|
-
isLoading?: boolean;
|
|
3040
|
-
ariaLabel?: string;
|
|
3041
|
-
/** Additional Recharts BarChart props */
|
|
3042
|
-
chartProps?: Record<string, any>;
|
|
3043
|
-
}
|
|
3044
|
-
declare const PartoBarChart: React$1.ForwardRefExoticComponent<PartoBarChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3045
|
-
|
|
3046
|
-
interface PartoPieChartProps {
|
|
3047
|
-
/** Data: [{ name: "محصول A", value: 40 }] */
|
|
3048
|
-
data: Array<{
|
|
3049
|
-
name: string;
|
|
3050
|
-
value: number;
|
|
3051
|
-
[key: string]: any;
|
|
3052
|
-
}>;
|
|
3053
|
-
/** Inner radius — 0 for full pie, "60%" for donut */
|
|
3054
|
-
innerRadius?: number | string;
|
|
3055
|
-
/** Outer radius */
|
|
3056
|
-
outerRadius?: number | string;
|
|
3057
|
-
/** Angle between slices in degrees */
|
|
3058
|
-
paddingAngle?: number;
|
|
3059
|
-
/** Corner radius of arc segments */
|
|
3060
|
-
cornerRadius?: number;
|
|
3061
|
-
/** Show arc link labels (lines from slices to text) */
|
|
3062
|
-
showLabels?: boolean;
|
|
3063
|
-
/** Skip labels for slices smaller than this angle */
|
|
3064
|
-
labelSkipAngle?: number;
|
|
3065
|
-
/** Chart margins */
|
|
3066
|
-
margin?: {
|
|
3067
|
-
top?: number;
|
|
3068
|
-
right?: number;
|
|
3069
|
-
bottom?: number;
|
|
3070
|
-
left?: number;
|
|
3071
|
-
};
|
|
3072
|
-
/** Custom tooltip formatter */
|
|
3073
|
-
tooltipFormatter?: (name: string, value: number) => React$1.ReactNode;
|
|
3074
|
-
className?: string;
|
|
3075
|
-
isLoading?: boolean;
|
|
3076
|
-
ariaLabel?: string;
|
|
3077
|
-
}
|
|
3078
|
-
declare const PartoPieChart: React$1.ForwardRefExoticComponent<PartoPieChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3079
|
-
|
|
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
5005
|
/**
|
|
3128
5006
|
* PartoWordCloud — modern word cloud with smooth hover transitions,
|
|
3129
5007
|
* glassmorphic tooltip, and brand-harmonious coloring.
|
|
@@ -3158,25 +5036,46 @@ declare namespace PartoWordCloud {
|
|
|
3158
5036
|
var displayName: string;
|
|
3159
5037
|
}
|
|
3160
5038
|
|
|
3161
|
-
|
|
3162
|
-
|
|
5039
|
+
/**
|
|
5040
|
+
* PartoScatterChart — x/y scatter with optional bubble sizing (z) and
|
|
5041
|
+
* per-point color override. Wraps Recharts ScatterChart with theme-aware
|
|
5042
|
+
* styles, RTL-safe margins, and Persian number formatting.
|
|
5043
|
+
*
|
|
5044
|
+
* @example
|
|
5045
|
+
* <PartoScatterChart
|
|
5046
|
+
* data={[
|
|
5047
|
+
* { x: 10, y: 30, z: 200, label: 'پیج A' },
|
|
5048
|
+
* { x: 40, y: 50, z: 120, label: 'پیج B' },
|
|
5049
|
+
* ]}
|
|
5050
|
+
* xKey="x" yKey="y" zKey="z" labelKey="label"
|
|
5051
|
+
* xLabel="تعامل (٪)" yLabel="رشد (٪)"
|
|
5052
|
+
* />
|
|
5053
|
+
*/
|
|
5054
|
+
interface PartoScatterChartProps {
|
|
5055
|
+
/** Row-oriented data. Each row contains x, y, and optional z (size) + label. */
|
|
3163
5056
|
data: Array<Record<string, any>>;
|
|
3164
|
-
/**
|
|
3165
|
-
|
|
3166
|
-
/** Field name for
|
|
3167
|
-
|
|
3168
|
-
/**
|
|
3169
|
-
|
|
3170
|
-
/**
|
|
3171
|
-
|
|
3172
|
-
/**
|
|
3173
|
-
|
|
3174
|
-
/**
|
|
3175
|
-
|
|
3176
|
-
/**
|
|
3177
|
-
|
|
3178
|
-
/**
|
|
3179
|
-
|
|
5057
|
+
/** Field name for X axis value */
|
|
5058
|
+
xKey: string;
|
|
5059
|
+
/** Field name for Y axis value */
|
|
5060
|
+
yKey: string;
|
|
5061
|
+
/** Optional field for bubble size (z). When provided, becomes a bubble chart. */
|
|
5062
|
+
zKey?: string;
|
|
5063
|
+
/** Optional field for per-point label (shown in tooltip). */
|
|
5064
|
+
labelKey?: string;
|
|
5065
|
+
/** Optional field for color classification (per-point). Values are mapped to palette. */
|
|
5066
|
+
groupKey?: string;
|
|
5067
|
+
/** Min/max bubble radius (px) when zKey is set. Default [40, 400]. */
|
|
5068
|
+
zRange?: [number, number];
|
|
5069
|
+
/** Axis range [min, max] for X @default 'dataMin'..'dataMax' */
|
|
5070
|
+
xDomain?: [number | 'dataMin' | 'auto', number | 'dataMax' | 'auto'];
|
|
5071
|
+
/** Axis range [min, max] for Y */
|
|
5072
|
+
yDomain?: [number | 'dataMin' | 'auto', number | 'dataMax' | 'auto'];
|
|
5073
|
+
/** Axis labels */
|
|
5074
|
+
xLabel?: string;
|
|
5075
|
+
yLabel?: string;
|
|
5076
|
+
/** Unit suffix appended to tick labels (e.g., '٪') */
|
|
5077
|
+
xUnit?: string;
|
|
5078
|
+
yUnit?: string;
|
|
3180
5079
|
/** Chart margins */
|
|
3181
5080
|
margin?: {
|
|
3182
5081
|
top?: number;
|
|
@@ -3184,37 +5083,51 @@ interface PartoAreaChartProps {
|
|
|
3184
5083
|
bottom?: number;
|
|
3185
5084
|
left?: number;
|
|
3186
5085
|
};
|
|
3187
|
-
/**
|
|
3188
|
-
|
|
3189
|
-
/**
|
|
3190
|
-
|
|
3191
|
-
/**
|
|
5086
|
+
/** Show grid @default true */
|
|
5087
|
+
enableGrid?: boolean;
|
|
5088
|
+
/** Series name for tooltip header @default 'Scatter' */
|
|
5089
|
+
seriesName?: string;
|
|
5090
|
+
/** Locale for digit formatting @default 'fa' */
|
|
5091
|
+
locale?: SupportedLocale;
|
|
5092
|
+
/** Custom tooltip formatter (name, value) */
|
|
3192
5093
|
tooltipFormatter?: (name: string, value: number) => React$1.ReactNode;
|
|
3193
5094
|
className?: string;
|
|
3194
5095
|
isLoading?: boolean;
|
|
3195
5096
|
ariaLabel?: string;
|
|
3196
|
-
/** Additional Recharts AreaChart props */
|
|
3197
|
-
chartProps?: Record<string, any>;
|
|
3198
5097
|
}
|
|
3199
|
-
declare const
|
|
5098
|
+
declare const PartoScatterChart: React$1.ForwardRefExoticComponent<PartoScatterChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3200
5099
|
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
|
|
3215
|
-
|
|
3216
|
-
/**
|
|
3217
|
-
|
|
5100
|
+
/**
|
|
5101
|
+
* PartoSankeyChart — flow visualization between nodes (source → target).
|
|
5102
|
+
* Uses Recharts' Sankey primitive. Wraps for theme-aware colors, Persian
|
|
5103
|
+
* number formatting, empty state, and a simpler API.
|
|
5104
|
+
*
|
|
5105
|
+
* @example
|
|
5106
|
+
* <PartoSankeyChart
|
|
5107
|
+
* nodes={[{ name: 'ورودی' }, { name: 'فرآیند' }, { name: 'خروجی' }]}
|
|
5108
|
+
* links={[
|
|
5109
|
+
* { source: 0, target: 1, value: 50 },
|
|
5110
|
+
* { source: 1, target: 2, value: 50 },
|
|
5111
|
+
* ]}
|
|
5112
|
+
* />
|
|
5113
|
+
*/
|
|
5114
|
+
interface SankeyNode {
|
|
5115
|
+
/** Displayed label for the node. */
|
|
5116
|
+
name: string;
|
|
5117
|
+
/** Optional explicit color override (CSS color or `hsl(var(--token))`). */
|
|
5118
|
+
color?: string;
|
|
5119
|
+
}
|
|
5120
|
+
interface SankeyLink {
|
|
5121
|
+
/** Zero-based index of the source node in `nodes`. */
|
|
5122
|
+
source: number;
|
|
5123
|
+
/** Zero-based index of the target node in `nodes`. */
|
|
5124
|
+
target: number;
|
|
5125
|
+
/** Flow magnitude — drives link thickness. */
|
|
5126
|
+
value: number;
|
|
5127
|
+
}
|
|
5128
|
+
interface PartoSankeyChartProps {
|
|
5129
|
+
nodes: SankeyNode[];
|
|
5130
|
+
links: SankeyLink[];
|
|
3218
5131
|
/** Chart margins */
|
|
3219
5132
|
margin?: {
|
|
3220
5133
|
top?: number;
|
|
@@ -3222,13 +5135,180 @@ interface PartoRadarChartProps {
|
|
|
3222
5135
|
bottom?: number;
|
|
3223
5136
|
left?: number;
|
|
3224
5137
|
};
|
|
3225
|
-
/**
|
|
3226
|
-
|
|
5138
|
+
/** Horizontal gap between node columns in pixels */
|
|
5139
|
+
nodePadding?: number;
|
|
5140
|
+
/** Node rectangle width in pixels */
|
|
5141
|
+
nodeWidth?: number;
|
|
5142
|
+
/** Sort nodes alphabetically within a column @default false (preserve input order) */
|
|
5143
|
+
iterations?: number;
|
|
5144
|
+
/** Locale for digit formatting in tooltip @default 'fa' */
|
|
5145
|
+
locale?: SupportedLocale;
|
|
5146
|
+
/** Custom tooltip formatter (receives link.source/target names + value) */
|
|
5147
|
+
tooltipFormatter?: (label: string, value: number) => React$1.ReactNode;
|
|
3227
5148
|
className?: string;
|
|
3228
5149
|
isLoading?: boolean;
|
|
3229
5150
|
ariaLabel?: string;
|
|
3230
5151
|
}
|
|
3231
|
-
declare const
|
|
5152
|
+
declare const PartoSankeyChart: React$1.ForwardRefExoticComponent<PartoSankeyChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5153
|
+
|
|
5154
|
+
/**
|
|
5155
|
+
* ConceptPulseChart — افکارسنجی-flavored bubble chart where each data point
|
|
5156
|
+
* is a "concept" rendered as a center dot surrounded by **composition arcs**.
|
|
5157
|
+
* Built on Recharts ScatterChart but overrides the scatter shape with a
|
|
5158
|
+
* custom SVG renderer that draws the central bubble + concentric pie arcs
|
|
5159
|
+
* showing the composition breakdown (flow / emotion / sentiment).
|
|
5160
|
+
*
|
|
5161
|
+
* Heart-of-dashboard chart in the prototype — replaces a flat scatter when
|
|
5162
|
+
* "what's this concept made of?" matters as much as where it sits.
|
|
5163
|
+
*
|
|
5164
|
+
* @example
|
|
5165
|
+
* <ConceptPulseChart
|
|
5166
|
+
* data={[{
|
|
5167
|
+
* x: 30, y: 50, z: 200,
|
|
5168
|
+
* label: 'افزایش قیمت بنزین',
|
|
5169
|
+
* composition: { 'pro-gov': 20, 'internal-critic': 60, 'external-opponent': 20 },
|
|
5170
|
+
* }]}
|
|
5171
|
+
* compositionScale="flow"
|
|
5172
|
+
* />
|
|
5173
|
+
*/
|
|
5174
|
+
type CompositionScale = 'flow' | 'emotion' | 'custom';
|
|
5175
|
+
type ConceptComposition = Partial<Record<string, number>>;
|
|
5176
|
+
interface ConceptPoint {
|
|
5177
|
+
/** X coordinate. */
|
|
5178
|
+
x: number;
|
|
5179
|
+
/** Y coordinate. */
|
|
5180
|
+
y: number;
|
|
5181
|
+
/** Optional bubble size value (drives center radius). */
|
|
5182
|
+
z?: number;
|
|
5183
|
+
/** Concept label — shown in tooltip and aria. */
|
|
5184
|
+
label: string;
|
|
5185
|
+
/**
|
|
5186
|
+
* Composition breakdown — keys must match the chosen `compositionScale`:
|
|
5187
|
+
* - flow: 'pro-gov' | 'internal-critic' | 'internal-opponent' | 'external-opponent' | 'grey'
|
|
5188
|
+
* - emotion: 'anger' | 'joy' | 'fear' | … (9 emotion keys)
|
|
5189
|
+
* - custom: any keys, paired with `compositionTokens` prop
|
|
5190
|
+
*/
|
|
5191
|
+
composition: ConceptComposition;
|
|
5192
|
+
}
|
|
5193
|
+
interface ConceptPulseChartProps {
|
|
5194
|
+
data: ConceptPoint[];
|
|
5195
|
+
/** Which token family the composition keys map to @default "flow" */
|
|
5196
|
+
compositionScale?: CompositionScale;
|
|
5197
|
+
/**
|
|
5198
|
+
* For `compositionScale="custom"`, supply a key → CSS-color map
|
|
5199
|
+
* (e.g., `{ a: 'hsl(var(--brand-default))', b: 'red' }`).
|
|
5200
|
+
*/
|
|
5201
|
+
compositionTokens?: Record<string, string>;
|
|
5202
|
+
/** Per-key labels for tooltip (custom scale only) */
|
|
5203
|
+
compositionLabels?: Record<string, string>;
|
|
5204
|
+
/** Optional bubble size range (px area) when z is provided @default [80, 600] */
|
|
5205
|
+
zRange?: [number, number];
|
|
5206
|
+
/** Center bubble radius when z is omitted @default 14 */
|
|
5207
|
+
centerRadius?: number;
|
|
5208
|
+
/** Outer arc radius offset (added to centerRadius) @default 8 */
|
|
5209
|
+
arcThickness?: number;
|
|
5210
|
+
/** Show concept label below the bubble @default false (use tooltip instead) */
|
|
5211
|
+
showLabels?: boolean;
|
|
5212
|
+
/** Axis configuration */
|
|
5213
|
+
xLabel?: string;
|
|
5214
|
+
yLabel?: string;
|
|
5215
|
+
xUnit?: string;
|
|
5216
|
+
yUnit?: string;
|
|
5217
|
+
xDomain?: [number | 'dataMin' | 'auto', number | 'dataMax' | 'auto'];
|
|
5218
|
+
yDomain?: [number | 'dataMin' | 'auto', number | 'dataMax' | 'auto'];
|
|
5219
|
+
margin?: {
|
|
5220
|
+
top?: number;
|
|
5221
|
+
right?: number;
|
|
5222
|
+
bottom?: number;
|
|
5223
|
+
left?: number;
|
|
5224
|
+
};
|
|
5225
|
+
enableGrid?: boolean;
|
|
5226
|
+
locale?: SupportedLocale;
|
|
5227
|
+
className?: string;
|
|
5228
|
+
isLoading?: boolean;
|
|
5229
|
+
ariaLabel?: string;
|
|
5230
|
+
}
|
|
5231
|
+
declare const ConceptPulseChart: React$1.ForwardRefExoticComponent<ConceptPulseChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5232
|
+
|
|
5233
|
+
/**
|
|
5234
|
+
* PartoNetworkChart — force-directed node/link graph. Uses a lightweight
|
|
5235
|
+
* custom force-simulation (no d3-force dep) — repulsion + link attraction +
|
|
5236
|
+
* centering — to lay out nodes in a stable position inside the container.
|
|
5237
|
+
*
|
|
5238
|
+
* Consumers who want non-force layouts (circular, radial, manual x/y) can
|
|
5239
|
+
* pass nodes with explicit `x`/`y` to skip the simulation.
|
|
5240
|
+
*/
|
|
5241
|
+
interface NetworkNode {
|
|
5242
|
+
/** Unique id — used by links for source/target. */
|
|
5243
|
+
id: string;
|
|
5244
|
+
/** Displayed label. */
|
|
5245
|
+
label?: string;
|
|
5246
|
+
/** Optional numeric weight — drives node radius (larger = more important). */
|
|
5247
|
+
weight?: number;
|
|
5248
|
+
/** Category key — maps to a stable palette color. */
|
|
5249
|
+
group?: string;
|
|
5250
|
+
/** Fixed X (skip simulation for this node) */
|
|
5251
|
+
fx?: number;
|
|
5252
|
+
/** Fixed Y */
|
|
5253
|
+
fy?: number;
|
|
5254
|
+
/** Explicit color override */
|
|
5255
|
+
color?: string;
|
|
5256
|
+
}
|
|
5257
|
+
interface NetworkLink {
|
|
5258
|
+
/** Source node id. */
|
|
5259
|
+
source: string;
|
|
5260
|
+
/** Target node id. */
|
|
5261
|
+
target: string;
|
|
5262
|
+
/** Optional numeric weight — drives stroke width. */
|
|
5263
|
+
value?: number;
|
|
5264
|
+
}
|
|
5265
|
+
interface PartoNetworkChartProps {
|
|
5266
|
+
nodes: NetworkNode[];
|
|
5267
|
+
links: NetworkLink[];
|
|
5268
|
+
/** Base node radius in px @default 12 */
|
|
5269
|
+
nodeRadius?: number;
|
|
5270
|
+
/** Max node radius (when scaling by weight) @default 24 */
|
|
5271
|
+
maxNodeRadius?: number;
|
|
5272
|
+
/** Link base stroke width @default 1.5 */
|
|
5273
|
+
linkStrokeWidth?: number;
|
|
5274
|
+
/** Max link stroke width (when scaling by value) @default 6 */
|
|
5275
|
+
maxLinkStrokeWidth?: number;
|
|
5276
|
+
/** Number of simulation ticks @default 250 */
|
|
5277
|
+
iterations?: number;
|
|
5278
|
+
/** Show node labels @default true */
|
|
5279
|
+
showLabels?: boolean;
|
|
5280
|
+
/** Locale for labels + digits @default 'fa' */
|
|
5281
|
+
locale?: SupportedLocale;
|
|
5282
|
+
/** Tooltip formatter (node hover) */
|
|
5283
|
+
nodeTooltip?: (node: NetworkNode) => React$1.ReactNode;
|
|
5284
|
+
/** Callback when a node is clicked */
|
|
5285
|
+
onNodeClick?: (node: NetworkNode) => void;
|
|
5286
|
+
className?: string;
|
|
5287
|
+
isLoading?: boolean;
|
|
5288
|
+
ariaLabel?: string;
|
|
5289
|
+
}
|
|
5290
|
+
declare const PartoNetworkChart: React$1.ForwardRefExoticComponent<PartoNetworkChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5291
|
+
|
|
5292
|
+
/**
|
|
5293
|
+
* Chart-shaped empty state — a lightweight placeholder for charts with no data.
|
|
5294
|
+
* Designed to be drop-in compatible with `PartoBarChart`, `PartoLineChart`, etc.
|
|
5295
|
+
* Sits inside `ChartContainer` consumers, so it accepts the same wrapper
|
|
5296
|
+
* `className` and fills 100% of the parent's bounds.
|
|
5297
|
+
*/
|
|
5298
|
+
type EmptyChartShape = 'bar' | 'line' | 'pie' | 'network' | 'generic';
|
|
5299
|
+
interface EmptyChartProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
5300
|
+
/** Visual shape hint for the icon @default "generic" */
|
|
5301
|
+
shape?: EmptyChartShape;
|
|
5302
|
+
/** Primary message. Defaults to a locale-specific "no data" string. */
|
|
5303
|
+
message?: React$1.ReactNode;
|
|
5304
|
+
/** Secondary helper text below the message */
|
|
5305
|
+
hint?: React$1.ReactNode;
|
|
5306
|
+
/** Optional action (button, link) shown under the text */
|
|
5307
|
+
action?: React$1.ReactNode;
|
|
5308
|
+
/** Locale @default "fa" */
|
|
5309
|
+
locale?: SupportedLocale;
|
|
5310
|
+
}
|
|
5311
|
+
declare const EmptyChart: React$1.ForwardRefExoticComponent<EmptyChartProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
3232
5312
|
|
|
3233
5313
|
type Direction = 'ltr' | 'rtl';
|
|
3234
5314
|
declare function useDocumentDirection(): Direction;
|
|
@@ -3347,8 +5427,25 @@ interface ChartTooltipProps {
|
|
|
3347
5427
|
label?: string;
|
|
3348
5428
|
tooltipStyle: React$1.CSSProperties;
|
|
3349
5429
|
formatter?: (name: string, value: number) => React$1.ReactNode;
|
|
5430
|
+
/** Locale for the default value formatter. fa/ar render Persian/Arabic digits with thousands separators; en uses Latin. */
|
|
5431
|
+
locale?: SupportedLocale;
|
|
3350
5432
|
}
|
|
3351
|
-
declare function ChartTooltip({ active, payload, label, tooltipStyle, formatter }: ChartTooltipProps): react_jsx_runtime.JSX.Element | null;
|
|
5433
|
+
declare function ChartTooltip({ active, payload, label, tooltipStyle, formatter, locale }: ChartTooltipProps): react_jsx_runtime.JSX.Element | null;
|
|
5434
|
+
/**
|
|
5435
|
+
* Default tickFormatter for numeric chart axes (Y axis on Line/Area/Bar, both
|
|
5436
|
+
* axes on Scatter, radial on Radar). Renders Persian/Arabic digits + locale
|
|
5437
|
+
* suffix ("۱.۵ هزار", "1.5K") for fa/ar, Latin K/M/B for en.
|
|
5438
|
+
*
|
|
5439
|
+
* Pass via `axisLeft={{ tickFormatter: localeAwareNumberTick('fa') }}`, or rely
|
|
5440
|
+
* on the chart wrapper's `locale` prop which wires this in by default.
|
|
5441
|
+
*/
|
|
5442
|
+
declare function localeAwareNumberTick(locale: SupportedLocale): (value: unknown) => string;
|
|
5443
|
+
/**
|
|
5444
|
+
* Default tickFormatter for categorical chart axes — converts embedded digits
|
|
5445
|
+
* to the locale's numerals (e.g. "۱۴۰۳-۰۱" for "1403-01") without altering
|
|
5446
|
+
* letters. Use on date/time axes whose labels carry digits.
|
|
5447
|
+
*/
|
|
5448
|
+
declare function localeAwareCategoryTick(locale: SupportedLocale): (value: unknown) => string;
|
|
3352
5449
|
/**
|
|
3353
5450
|
* Transforms Nivo line/area data format to Recharts row-oriented format.
|
|
3354
5451
|
* Useful for consumers migrating from Nivo data shape.
|
|
@@ -3377,4 +5474,240 @@ declare function transformNivoLineData(nivoData: Array<{
|
|
|
3377
5474
|
*/
|
|
3378
5475
|
declare function useScrollLock(locked: boolean): void;
|
|
3379
5476
|
|
|
3380
|
-
|
|
5477
|
+
interface ShortcutsCheatsheetProps {
|
|
5478
|
+
/** Controlled open state. If omitted, the cheatsheet manages its own open state. */
|
|
5479
|
+
open?: boolean;
|
|
5480
|
+
onOpenChange?: (open: boolean) => void;
|
|
5481
|
+
/**
|
|
5482
|
+
* Global keyboard shortcut to toggle the cheatsheet. Default: `'shift+?'`.
|
|
5483
|
+
* Pass `false` to disable the global listener (useful when wiring your own).
|
|
5484
|
+
*/
|
|
5485
|
+
shortcut?: HotkeyCombo | false;
|
|
5486
|
+
/** Trigger node — when set, the cheatsheet opens on click. Otherwise opening is controlled or via shortcut. */
|
|
5487
|
+
trigger?: React$1.ReactNode;
|
|
5488
|
+
/** Custom title (defaults to a localized "Keyboard shortcuts"). */
|
|
5489
|
+
title?: React$1.ReactNode;
|
|
5490
|
+
/** Custom description shown under the title. */
|
|
5491
|
+
description?: React$1.ReactNode;
|
|
5492
|
+
/** Locale for default strings + sort tie-breaks. */
|
|
5493
|
+
locale?: SupportedLocale;
|
|
5494
|
+
/** Override which entries to show. Defaults to the active provider's full registry. */
|
|
5495
|
+
hotkeys?: RegisteredHotkey[];
|
|
5496
|
+
/** Optional empty-state customization when the registry is empty. */
|
|
5497
|
+
emptyState?: React$1.ReactNode;
|
|
5498
|
+
className?: string;
|
|
5499
|
+
}
|
|
5500
|
+
/**
|
|
5501
|
+
* Visual help overlay that lists every hotkey registered with the active
|
|
5502
|
+
* `<HotkeyProvider>`. Opens on `Shift+?` by default (configurable) or via a
|
|
5503
|
+
* trigger button. Renders nothing useful outside a HotkeyProvider — the
|
|
5504
|
+
* registry is empty and the empty state shows.
|
|
5505
|
+
*
|
|
5506
|
+
* @example
|
|
5507
|
+
* <HotkeyProvider>
|
|
5508
|
+
* <ShortcutsCheatsheet />
|
|
5509
|
+
* <App /> // descendants register via useHotkey()
|
|
5510
|
+
* </HotkeyProvider>
|
|
5511
|
+
*
|
|
5512
|
+
* Pair with `useHotkey('?', 'shift+?', () => setOpen(true))` if you prefer
|
|
5513
|
+
* to wire the toggle yourself; the built-in shortcut is just a convenience.
|
|
5514
|
+
*/
|
|
5515
|
+
declare const ShortcutsCheatsheet: React$1.ForwardRefExoticComponent<ShortcutsCheatsheetProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
5516
|
+
|
|
5517
|
+
/**
|
|
5518
|
+
* Fires `handler` whenever a pointer event lands outside the referenced
|
|
5519
|
+
* element. Use for closing dropdowns, popovers, dismissable cards, etc.
|
|
5520
|
+
*
|
|
5521
|
+
* @example
|
|
5522
|
+
* const ref = useRef<HTMLDivElement>(null)
|
|
5523
|
+
* useOutsideClick(ref, () => setOpen(false), { when: open })
|
|
5524
|
+
*
|
|
5525
|
+
* @param ref - Ref to the inside element. Clicks inside (or on descendants) are ignored.
|
|
5526
|
+
* @param handler - Called when an outside click is detected.
|
|
5527
|
+
* @param options.when - When false, the listener is detached (avoid stale closures).
|
|
5528
|
+
* @param options.events - Which events to listen for. Default: ['mousedown', 'touchstart'].
|
|
5529
|
+
* Using 'mousedown' (instead of 'click') closes the menu before any click handler
|
|
5530
|
+
* inside fires — matches Radix/Headless UI behaviour.
|
|
5531
|
+
*/
|
|
5532
|
+
declare function useOutsideClick<T extends HTMLElement = HTMLElement>(ref: React$1.RefObject<T | null>, handler: (event: MouseEvent | TouchEvent) => void, options?: {
|
|
5533
|
+
when?: boolean;
|
|
5534
|
+
events?: Array<'mousedown' | 'mouseup' | 'click' | 'touchstart' | 'touchend'>;
|
|
5535
|
+
}): void;
|
|
5536
|
+
|
|
5537
|
+
/**
|
|
5538
|
+
* Subscribes to a CSS media query and returns its current match state.
|
|
5539
|
+
* SSR-safe: returns `undefined` on the server and on the initial client
|
|
5540
|
+
* render (consumers must handle the `undefined` case).
|
|
5541
|
+
*
|
|
5542
|
+
* @example
|
|
5543
|
+
* const isLarge = useMediaQuery('(min-width: 1024px)')
|
|
5544
|
+
* if (isLarge) ... // narrow to true|false
|
|
5545
|
+
*
|
|
5546
|
+
* @example presets
|
|
5547
|
+
* const prefersDark = useMediaQuery('(prefers-color-scheme: dark)')
|
|
5548
|
+
* const reducedMotion = useMediaQuery('(prefers-reduced-motion: reduce)')
|
|
5549
|
+
*/
|
|
5550
|
+
declare function useMediaQuery(query: string): boolean | undefined;
|
|
5551
|
+
/** Common breakpoint helper. Returns `undefined` until hydrated. */
|
|
5552
|
+
declare function useBreakpoint(breakpoint: 'sm' | 'md' | 'lg' | 'xl' | '2xl'): boolean | undefined;
|
|
5553
|
+
|
|
5554
|
+
interface UseClipboardOptions {
|
|
5555
|
+
/** Reset `copied` back to false after this many ms. @default 2000 */
|
|
5556
|
+
resetAfter?: number | false;
|
|
5557
|
+
}
|
|
5558
|
+
interface UseClipboardReturn {
|
|
5559
|
+
/** True for `resetAfter` ms after a successful copy. */
|
|
5560
|
+
copied: boolean;
|
|
5561
|
+
/** True if the last copy attempt threw. */
|
|
5562
|
+
error: Error | null;
|
|
5563
|
+
/**
|
|
5564
|
+
* Copy a string to clipboard. Returns a promise that resolves to `true` on
|
|
5565
|
+
* success, `false` if the API isn't available, and rejects on permission
|
|
5566
|
+
* denial (caught and exposed via `error`).
|
|
5567
|
+
*/
|
|
5568
|
+
copy: (value: string) => Promise<boolean>;
|
|
5569
|
+
/** Manually reset `copied` and `error` state. */
|
|
5570
|
+
reset: () => void;
|
|
5571
|
+
}
|
|
5572
|
+
/**
|
|
5573
|
+
* useClipboard — copy text to the system clipboard with a transient `copied`
|
|
5574
|
+
* flag suitable for "Copied!" affordances. Uses the modern Clipboard API
|
|
5575
|
+
* with a `document.execCommand('copy')` fallback for older browsers.
|
|
5576
|
+
*
|
|
5577
|
+
* @example
|
|
5578
|
+
* const { copied, copy } = useClipboard()
|
|
5579
|
+
* <button onClick={() => copy('hello')}>{copied ? 'کپی شد' : 'کپی'}</button>
|
|
5580
|
+
*/
|
|
5581
|
+
declare function useClipboard(options?: UseClipboardOptions): UseClipboardReturn;
|
|
5582
|
+
|
|
5583
|
+
/**
|
|
5584
|
+
* Returns the value from the previous render. Useful for diffing props,
|
|
5585
|
+
* detecting transitions, and triggering effects on specific value changes.
|
|
5586
|
+
*
|
|
5587
|
+
* @example
|
|
5588
|
+
* const prevId = usePrevious(currentId)
|
|
5589
|
+
* useEffect(() => {
|
|
5590
|
+
* if (prevId !== currentId) trackNavigation(prevId, currentId)
|
|
5591
|
+
* }, [prevId, currentId])
|
|
5592
|
+
*
|
|
5593
|
+
* @returns `undefined` on first render, then the value from the previous render.
|
|
5594
|
+
*/
|
|
5595
|
+
declare function usePrevious<T>(value: T): T | undefined;
|
|
5596
|
+
|
|
5597
|
+
/**
|
|
5598
|
+
* Lightweight async-state hook for one-shot fetches without bringing in
|
|
5599
|
+
* TanStack Query. Tracks loading / data / error and exposes a stable
|
|
5600
|
+
* `run` function plus a `reset`. For request deduplication, caching,
|
|
5601
|
+
* retry, mutation, optimistic updates, etc. **prefer TanStack Query** —
|
|
5602
|
+
* this hook intentionally stays tiny.
|
|
5603
|
+
*
|
|
5604
|
+
* @example
|
|
5605
|
+
* const { data, error, status, run } = useAsync<User>()
|
|
5606
|
+
* useEffect(() => { run(() => fetch(`/api/users/${id}`).then(r => r.json())) }, [id, run])
|
|
5607
|
+
* if (status === 'loading') return <Skeleton />
|
|
5608
|
+
* if (status === 'error') return <ErrorState onRetry={run} />
|
|
5609
|
+
* return <UserCard user={data!} />
|
|
5610
|
+
*/
|
|
5611
|
+
type AsyncStatus = 'idle' | 'loading' | 'success' | 'error';
|
|
5612
|
+
interface UseAsyncReturn<T> {
|
|
5613
|
+
data: T | null;
|
|
5614
|
+
error: unknown;
|
|
5615
|
+
status: AsyncStatus;
|
|
5616
|
+
isIdle: boolean;
|
|
5617
|
+
isLoading: boolean;
|
|
5618
|
+
isSuccess: boolean;
|
|
5619
|
+
isError: boolean;
|
|
5620
|
+
/** Run an async operation. Cancels the previous in-flight result. */
|
|
5621
|
+
run: (operation: () => Promise<T>) => Promise<T | undefined>;
|
|
5622
|
+
reset: () => void;
|
|
5623
|
+
}
|
|
5624
|
+
declare function useAsync<T = unknown>(initialData?: T | null): UseAsyncReturn<T>;
|
|
5625
|
+
|
|
5626
|
+
interface UseFilterParamsOptions<T extends FilterStateShape> {
|
|
5627
|
+
/**
|
|
5628
|
+
* Convert a state object into a flat map of URL params. Return null/undefined
|
|
5629
|
+
* for entries you want to omit (e.g. defaults, empty arrays, null fields).
|
|
5630
|
+
*/
|
|
5631
|
+
serialize: (state: T) => Record<string, string | undefined | null>;
|
|
5632
|
+
/**
|
|
5633
|
+
* Parse the current URL params back into a partial state. Called once on
|
|
5634
|
+
* mount to hydrate the FilterProvider, and on browser navigation events.
|
|
5635
|
+
*/
|
|
5636
|
+
parse: (params: URLSearchParams) => Partial<T>;
|
|
5637
|
+
/**
|
|
5638
|
+
* Debounce window (ms) before pushing serialized state to the URL.
|
|
5639
|
+
* @default 200
|
|
5640
|
+
*/
|
|
5641
|
+
debounceMs?: number;
|
|
5642
|
+
/**
|
|
5643
|
+
* Use `history.pushState` instead of `replaceState`. Default replace
|
|
5644
|
+
* keeps the back button useful for actual page navigation rather than
|
|
5645
|
+
* filter tweaks.
|
|
5646
|
+
* @default 'replace'
|
|
5647
|
+
*/
|
|
5648
|
+
history?: 'push' | 'replace';
|
|
5649
|
+
/** Disable the hook (e.g. while a parent is loading server-side data). */
|
|
5650
|
+
disabled?: boolean;
|
|
5651
|
+
}
|
|
5652
|
+
declare function normalizeUrlDigits(input: string): string;
|
|
5653
|
+
/**
|
|
5654
|
+
* Two-way bind a `<FilterProvider>`'s state with `URLSearchParams`.
|
|
5655
|
+
*
|
|
5656
|
+
* - On mount, parses `window.location.search` and merges it onto the
|
|
5657
|
+
* provider's initial state via `patch`.
|
|
5658
|
+
* - On state change, runs `serialize` and writes the result to the URL
|
|
5659
|
+
* (debounced 200ms, replaceState by default).
|
|
5660
|
+
* - Persian/Arabic digits in incoming params are normalized to Latin.
|
|
5661
|
+
*
|
|
5662
|
+
* SSR-safe — does nothing on the server. Must be used inside a
|
|
5663
|
+
* `<FilterProvider>`. Throws otherwise to surface wiring mistakes early.
|
|
5664
|
+
*/
|
|
5665
|
+
declare function useFilterParams<T extends FilterStateShape>(options: UseFilterParamsOptions<T>): void;
|
|
5666
|
+
|
|
5667
|
+
interface FilterPreset<T extends FilterStateShape = FilterStateShape> {
|
|
5668
|
+
/** Stable, locally-unique id (slug or random). */
|
|
5669
|
+
id: string;
|
|
5670
|
+
/** User-visible name. */
|
|
5671
|
+
name: string;
|
|
5672
|
+
/** Snapshot of the filter state. */
|
|
5673
|
+
state: T;
|
|
5674
|
+
/** Unix timestamp (ms) of creation. */
|
|
5675
|
+
createdAt: number;
|
|
5676
|
+
/** Unix timestamp (ms) of the most recent rename / overwrite. */
|
|
5677
|
+
updatedAt: number;
|
|
5678
|
+
}
|
|
5679
|
+
interface UseFilterPresetsOptions {
|
|
5680
|
+
/** localStorage namespace (must be unique per app section). */
|
|
5681
|
+
storageKey: string;
|
|
5682
|
+
/** Soft cap on total presets retained. Oldest is dropped on overflow. @default 20 */
|
|
5683
|
+
maxPresets?: number;
|
|
5684
|
+
}
|
|
5685
|
+
interface UseFilterPresetsReturn<T extends FilterStateShape> {
|
|
5686
|
+
/** Sorted list (newest first by `updatedAt`). */
|
|
5687
|
+
presets: FilterPreset<T>[];
|
|
5688
|
+
/** Save the FilterProvider's current state under a name. Returns the new preset's id. */
|
|
5689
|
+
save: (name: string) => string;
|
|
5690
|
+
/** Apply a preset's state to the FilterProvider via `set`. */
|
|
5691
|
+
load: (id: string) => boolean;
|
|
5692
|
+
/** Remove a preset. */
|
|
5693
|
+
remove: (id: string) => void;
|
|
5694
|
+
/** Update a preset's name. */
|
|
5695
|
+
rename: (id: string, name: string) => boolean;
|
|
5696
|
+
/** Overwrite a preset with the current state. */
|
|
5697
|
+
overwrite: (id: string) => boolean;
|
|
5698
|
+
/** Clear ALL presets in this namespace. */
|
|
5699
|
+
clear: () => void;
|
|
5700
|
+
}
|
|
5701
|
+
/**
|
|
5702
|
+
* Save / load / rename / delete named presets of a `<FilterProvider>`'s
|
|
5703
|
+
* state in localStorage.
|
|
5704
|
+
*
|
|
5705
|
+
* Storage shape: `localStorage[storageKey] = JSON.stringify(FilterPreset[])`.
|
|
5706
|
+
* Presets are sorted newest-first by `updatedAt`. Soft-capped at `maxPresets`
|
|
5707
|
+
* (default 20) — oldest is dropped on overflow at save time.
|
|
5708
|
+
*
|
|
5709
|
+
* SSR-safe: returns an empty list on the server, hydrates on first effect.
|
|
5710
|
+
*/
|
|
5711
|
+
declare function useFilterPresets<T extends FilterStateShape>(options: UseFilterPresetsOptions): UseFilterPresetsReturn<T>;
|
|
5712
|
+
|
|
5713
|
+
export { ACTION_TYPE_META, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActionStatusKey, ActionTimeline, type ActionTimelineDensity, type ActionTimelineGroupBy, ActionTimelineItem, type ActionTimelineItemData, type ActionTimelineItemProps, type ActionTimelineProps, ActionTypeChip, type ActionTypeChipProps, ActionTypeKey, ActiveFiltersBar, type ActiveFiltersBarProps, ActiveFiltersClearAll, type ActiveFiltersClearAllProps, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AnimatedNumber, type AnimatedNumberProps, AppBar, type AppBarProps, AppLayout, AppLayoutContent, AspectRatio, type AsyncStatus, Autocomplete, type AutocompleteItem, type AutocompleteProps, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, AvatarTextSkeleton, type AvatarTextSkeletonProps, Banner, type BannerProps, type BenchmarkMarker, type BenchmarkTier, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BulletinViewer, type BulletinViewerProps, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, ButtonProps, CHART_FONT_FAMILY, COUNTRIES, CRITERION_TIER_KEYS, Callout, CalloutDescription, type CalloutProps, CalloutTitle, CardSkeleton, type CardSkeletonProps, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLoadingSkeleton, ChartSkeleton, type ChartSkeletonProps$1 as ChartSkeletonProps, ChartTooltip, Checkbox, CircularProgress, type CircularProgressProps, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandPalette, type CommandPaletteItem, type CommandPaletteProps, type CommandPaletteRecentsConfig, CommandSeparator, CommandShortcut, CommentCard, type CommentCardProps, type CommentTag, ComparisonCard, type ComparisonCardProps, type ComparisonEntity, type ComparisonMetric, ComparisonRadar, type ComparisonRadarProps, type ComparisonWinner, type CompositionScale, type ConceptComposition, type ConceptPoint, ConceptPulseChart, type ConceptPulseChartProps, ConfirmDialog, type ConfirmDialogProps, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, type CopyButtonProps, type Country, type CountryCode, CountryPicker, type CountryPickerProps, type CriterionInputSpec, CriterionScoreCard, type CriterionScoreCardProps, type CriterionTierKey, type CriterionTierThresholds, type CriterionTrend, DEFAULT_CRITERION_THRESHOLDS, DEFAULT_PERIODS, DEFAULT_THRESHOLDS, DataTableColumn, DataTableColumnVisibility, DataTableColumnVisibilityToggle, type DataTableColumnVisibilityToggleProps, DataTableExportButton, type DataTableExportButtonProps, DatePicker, type DatePickerProps, DateRangePicker, DateRangePickerInline, type DateRangePickerProps, Dialog, type Direction, DirectionalBox, type DirectionalBoxProps, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENGAGEMENT_RANGES, EmotionBadge, type EmotionBadgeProps, type EmotionData, EmotionDistribution, type EmotionDistributionProps, EmotionKey, Empty, EmptyAction, EmptyChart, type EmptyChartProps, type EmptyChartShape, EmptyDescription, EmptyIcon, EmptyTitle, type EngagementRange, type EngagementRangeWithDisplay, EngagementRate, EngagementRateBar, type EngagementRateBarProps, EngagementRateBenchmark, type EngagementRateBenchmarkProps, type EngagementRateProps, type EngagementTier, EntityHealthCard, EntityHealthCardActions, EntityHealthCardFooter, EntityHealthCardHeader, EntityHealthCardHeaderEnd, EntityHealthCardHeaderText, EntityHealthCardMeta, EntityHealthCardMetric, type EntityHealthCardMetricProps, EntityHealthCardMetrics, type EntityHealthCardMetricsProps, EntityHealthCardNarrative, EntityHealthCardPhase, type EntityHealthCardPhaseProps, type EntityHealthCardProps, EntityHealthCardScore, type EntityHealthCardScoreProps, EntityHealthCardSeverityBadge, type EntityHealthCardSeverityBadgeProps, EntityHealthCardSubtitle, EntityHealthCardTitle, type EntityHealthCardTitleProps, EntityHealthCardTrust, type EntityHealthCardTrustProps, EntityHealthKey, ErrorBoundary, type ErrorBoundaryProps, ErrorIllustration, ErrorState, type ErrorStateProps, type ExecutiveSummaryMetric, ExecutiveSummarySection, type ExecutiveSummarySectionProps, type ExportableColumn, type ExtendedPlatform, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FilterBar, FilterBarActions, type FilterBarActionsProps, FilterBarActiveFilters, type FilterBarActiveFiltersProps, FilterBarClear, type FilterBarClearProps, type FilterBarProps, FilterBarRow, type FilterBarRowProps, FilterChip, FilterChipGroup, type FilterChipProps, FilterPanel, FilterPanelBody, FilterPanelClearAll, type FilterPanelClearAllProps, FilterPanelFooter, FilterPanelHeader, type FilterPanelProps, FilterPanelTitle, type FilterPanelTitleProps, FilterPanelTrigger, type FilterPanelTriggerProps, type FilterPreset, FilterSection, type FilterSectionProps, FilterStateShape, FirstRunIllustration, FlowBadge, type FlowBadgeProps, FlowCell, type FlowCellProps, FlowData, FlowDistributionSection, type FlowDistributionSectionProps, FlowKey, type FollowerGroup, ForbiddenIllustration, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, FormRowSkeleton, type FormRowSkeletonProps, GROUP_LABELS, HashtagInput, type TagInputProps as HashtagInputProps, type HashtagPerformanceData, HashtagPerformanceRow, type HashtagPerformanceRowProps, type HeatMapDatum, type HeatMapRow, HotkeyCombo, HoverCard, HoverCardContent, HoverCardTrigger, IRAN_PROVINCES, type Icon, Icons, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputProps, InputVariants, InputWithIcon, type InputWithIconProps, type IranProvince, type IranProvinceSlug, JobCard, JobCardActions, JobCardError, JobCardHeader, JobCardHeaderActions, JobCardHeaderText, JobCardMeta, JobCardMetaItem, type JobCardMetaItemProps, JobCardProgress, type JobCardProgressProps, type JobCardProps, JobCardStat, type JobCardStatProps, JobCardStats, type JobCardStatsProps, JobCardStatusBadge, type JobCardStatusBadgeProps, JobCardSubtitle, JobCardThumbnail, type JobCardThumbnailProps, JobCardTitle, type JobCardTitleProps, JobStatusKey, JobWizard, type JobWizardApi, JobWizardBack, type JobWizardBackProps, JobWizardBody, JobWizardCancel, type JobWizardCancelProps, JobWizardError, JobWizardFooter, JobWizardHeader, type JobWizardHeaderProps, JobWizardNext, type JobWizardNextProps, type JobWizardProps, JobWizardSkip, type JobWizardSkipProps, JobWizardSpacer, type JobWizardStep, JobWizardStepper, type JobWizardStepperProps, type JobWizardSubmitState, JobWizardSuccess, type JobWizardSuccessProps, type JobWizardValidationResult, Kbd, KbdGroup, Label, LabelChip, type LabelChipProps, LabelEditDialog, type LabelEditDialogProps, type LegacySize, MarkdownRenderer, type MarkdownRendererProps, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricCard, MetricCardContent, MetricCardDifferential, MetricCardHeader, MetricCardLabel, MetricCardSkeleton, type MetricCardSkeletonProps, MetricCardSparkline, MetricCardValue, type MultiPlatformMetrics, MultiPlatformPostCard, type MultiPlatformPostCardProps, type MultiPlatformPostData, MultiSelect, type MultiSelectOption, type MultiSelectProps, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavGroup, type NavGroupProps, NavItem, type NavItemBaseProps, type NavItemProps, type NavMatchStrategy, NavPanel, NavPanelContent, NavPanelFooter, NavPanelHeader, NavRail, NavRailContent, NavRailFooter, NavRailHeader, NavRailItem, NavRailProvider, NavRailSeparator, NavRailTrigger, NavSeparator, NavTree, type NavTreeContextValue, NavTreeProvider, type NavTreeProviderProps, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, type NetworkLink, type NetworkNode, NoDataIllustration, NoResultsIllustration, NotificationCenter, type NotificationCenterProps, type NotificationFilter, type NotificationItem, type NotificationSeverity, NumberInputLocale, type NumberInputLocaleProps, PERSIAN_MONTHS, PERSIAN_MONTHS_SHORT, PERSIAN_WEEKDAYS, PERSIAN_WEEKDAYS_SHORT, PageHeader, type PageHeaderProps, PageLoader, type PageLoaderProps, Pagination, PaginationContent, PaginationControlled, type PaginationControlledProps, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PartoHeatMap, type PartoHeatMapProps, PartoNetworkChart, type PartoNetworkChartProps, PartoRadarChart, type PartoRadarChartProps, PartoSankeyChart, type PartoSankeyChartProps, PartoScatterChart, type PartoScatterChartProps, type PartoToasterProps, PartoWordCloud, type PartoWordCloudProps, type PeriodOption, PeriodSelector, type PeriodSelectorProps, type PlatformMetadata, type PostAction, PostActions, type PostActionsProps, type PostAiAnalysis, type PostAiEntity, type PostAuthor, PostBody, type PostBodyData, type PostBodyProps, PostCard, type PostCardProps, type PostComment, type PostCommentAuthor, type PostData, type PostDensity, type PostDetails, PostDetailsModal, type PostDetailsModalProps, type PostDetailsTab, type PostEmotion, type PostEnrichmentFlags, PostHeader, type PostHeaderProps, type PostIntent, PostList, type PostListProps, type PostMediaItem, PostMetadata, type PostMetadataProps, type PostMetrics, type PostPlatform, type PostSentiment, type PostingFrequencyCell, PostingFrequencyHeatmap, type PostingFrequencyHeatmapProps, type PostingFrequencySummary, type PostingWeekStart, ProfileCard, type ProfileCardProps, ProfileInfo, type ProfileInfoProps, Progress, ProgressCell, type ProgressCellProps, type ProgressProps, type QuotaLevel, QuotaProgressBar, type QuotaProgressBarProps, type QuotaThresholds, RadioCardDescription, RadioCardItem, RadioCardTitle, RadioCards, RadioGroup, RadioGroupItem, RateLimitBanner, type RateLimitBannerProps, RegionPicker, type RegionPickerKey, type RegionPickerProps, RegisteredHotkey, ReportComposer, type ReportComposerProps, ReportSection, type ReportSectionProps, ResizableHandle, ResizablePanel, ResizablePanelGroup, RouteProgress, type RouteProgressHandle, type RouteProgressProps, SONNER_DEFAULT_DURATION, SafeImage, type SafeImageProps, type SankeyLink, type SankeyNode, ScrollArea, ScrollBar, SearchInput, type SearchInputProps, type SectionItem, SectionNavigator, type SectionNavigatorProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectTriggerVariants, SelectValue, SentimentBadge, type SentimentBadgeProps, SentimentBreakdownSection, type SentimentBreakdownSectionProps, SentimentCell, type SentimentCellProps, SentimentData, Separator, SeverityBadge, type SeverityBadgeProps, SeverityKey, ShortcutsCheatsheet, type ShortcutsCheatsheetProps, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SiteHeader, SiteHeaderActions, SiteHeaderEnd, type SiteHeaderProps, SiteHeaderSeparator, SiteHeaderStart, SiteHeaderSubtitle, SiteHeaderTitle, SiteHeaderTitleGroup, type SizeWithLegacy, Skeleton, type SkeletonProps, Slider, SocialPlatform, type SourceBreakdownEntry, SourceBreakdownSection, type SourceBreakdownSectionProps, SparklineCell, type SparklineCellProps, Spinner, type SpinnerProps, StageStatusKey, type StandardSize, StatDeltaCell, type StatDeltaCellProps, StatDisplay, type StatDisplayProps, StatusBadge, type StatusBadgeProps, StatusFlow, type StatusFlowOrientation, type StatusFlowProps, type StatusFlowSize, StatusFlowStage, type StatusFlowStageData, type StatusFlowStageProps, StatusKey, StatusPulseCell, type StatusPulseCellProps, Step, type StepProps, Stepper, type StepperProps, SupportedLocale, Switch, type SwitchProps, TIER_LABELS, Table, TableBody, TableCaption, TableCell, TableComparisonView, type TableComparisonViewProps, TableFooter, TableHead, TableHeader, TableRow, TableRowSkeleton, type TableRowSkeletonProps, TableSkeleton, type TableSkeletonProps, TableSortHeader, Tabs, TabsContent, TabsList, TabsTrigger, TagInput, type TagInputProps, TaskList, type TaskListGroup, type TaskListProps, Textarea, TimelineSection, type TimelineSectionProps, Toaster, Toggle, ToggleGroup, ToggleGroupItem, TooltipContent, TopPostsSection, type TopPostsSectionProps, TrendCell, type TrendCellProps, TrendIndicator, type TrendIndicatorProps, type UseAsyncReturn, type UseClipboardOptions, type UseClipboardReturn, type UseFilterParamsOptions, type UseFilterPresetsOptions, type UseFilterPresetsReturn, type UseInfiniteScrollOptions, type UseInfiniteScrollReturn, type UseJobWizardOptions, UserAutocomplete, type UserAutocompleteProps, type UserItem, UserMenu, type UserMenuItem, type UserMenuProps, type UserMenuUser, type ViewMode, ViewToggle, type ViewToggleProps, type WordData, actionTypeChipVariants, appBarVariants, avatarGroupVariants, bannerVariants, buildCsv, buildPostingFrequencyRows, buildTsv, buttonGroupVariants, calloutVariants, computeComparisonWinners, countComparisonWins, countryFlag, defaultActions as defaultPostActions, downloadFile, findCountry, findProvince, findTierIndex, formatJalaliDate, formatPersianDateRange, getCountryLabel, getCriterionTier, getCurrentRangeIndex, getEngagementRanges, getEngagementRateBenchmarkTiers, getFollowerGroup, getPersianDay, getPersianMonth, getPersianMonthName, getPersianMonthNameShort, getPersianMonthsForDropdown, getPersianWeekdayName, getPersianYear, getPersianYearsForDropdown, getProvinceLabel, getScoreBenchmarkTiers, tagInputVariants as hashtagInputVariants, jalaliToGregorian, labelChipVariants, localeAwareCategoryTick, localeAwareNumberTick, navItemVariants, navigationMenuTriggerStyle, normalizeSize, normalizeUrlDigits, pageLoaderVariants, postCardVariants, postHeaderVariants, profileCardVariants, resolveLevel, siteHeaderVariants, spinnerVariants, statDisplayVariants, tagInputVariants, toEnglishDigits, toPersianDigits, toggleVariants, transformNivoLineData, useAsync, useBreakpoint, useChartTheme, useClipboard, useDebounce, useDocumentDirection, useFilterParams, useFilterPresets, useFormField, useInfiniteScroll, useIsMobile, useJobWizard, useJobWizardState, useLocalStorage, useMediaQuery, useNavRail, useNavTree, useOutsideClick, usePrevious, useRootStyles, useScrollLock, useSidebar };
|