Per SETTINGS-AUDIT (all three tiers approved 2026-10-23): Dead settings: - panelOutbound, ipLimitAllowlist (+ orphan parser job), outboundDownThreshold - tg fake events outbound.down/outbound.up/xray.crash (no publisher in lite) - phantom routing sub-tabs (Happ/Clash/Incy) and subJsonRules direct-rules tab (no backend keys); subHideSettings moved to the subscription info tab first Upstream remnants: - ldap* / smtp* model+schema keys, EmailNotifications orphan component - twoFactorEnable/twoFactorToken + login-page probe (no backend handler) - externalTrafficInform* Newly approved removals: - JSON subscription family (producer, routes, UA auto-detect, mux/finalmask/ observatory) and Clash subscription family (producer, routes, UA detect) - SubBalancer (table, service, controller, settings tab) - subThemeDir (subscription page falls back to the built-in template) - datepicker jalalian option (gregorian only; Persian picker removed) JSON/Clash endpoints now 404; link-format output pinned by regression tests. Guarded keys untouched: webListen/webPort/webBasePath/certs, tg* chain, expireDiff/trafficDiff/tgBotProxy, subHideSettings, pageSize/tgLang.
67 lines
1.9 KiB
TypeScript
67 lines
1.9 KiB
TypeScript
/// <reference types="vite/client" />
|
|
|
|
interface SubPageData {
|
|
sId?: string;
|
|
enabled?: boolean;
|
|
download?: string;
|
|
upload?: string;
|
|
total?: string;
|
|
used?: string;
|
|
remained?: string;
|
|
totalByte?: string | number;
|
|
expire?: string | number;
|
|
lastOnline?: string | number;
|
|
subUrl?: string;
|
|
subTitle?: string;
|
|
links?: string[];
|
|
emails?: string[];
|
|
datepicker?: 'gregorian';
|
|
announce?: string;
|
|
downloadByte?: string | number;
|
|
uploadByte?: string | number;
|
|
usedByte?: string | number;
|
|
}
|
|
|
|
interface Window {
|
|
X_UI_BASE_PATH?: string;
|
|
X_UI_CUR_VER?: string;
|
|
X_UI_DB_TYPE?: string;
|
|
__SUB_PAGE_DATA__?: SubPageData;
|
|
}
|
|
|
|
declare module 'persian-calendar-suite' {
|
|
import type { ComponentType, ReactNode } from 'react';
|
|
|
|
type DateInput = string | number | null;
|
|
type OutputFormat = 'iso' | 'shamsi' | 'gregorian' | 'hijri' | 'timestamp';
|
|
|
|
interface PersianDateTimePickerProps {
|
|
value?: DateInput;
|
|
onChange?: (value: number | string | null) => void;
|
|
defaultValue?: string | number | 'now' | null;
|
|
showTime?: boolean;
|
|
minuteStep?: number;
|
|
outputFormat?: OutputFormat;
|
|
showFooter?: boolean;
|
|
theme?: Record<string, unknown>;
|
|
disabledHours?: number[];
|
|
minDate?: string | Date | null;
|
|
maxDate?: string | Date | null;
|
|
enabledDates?: string[] | null;
|
|
disabledDates?: string[] | null;
|
|
disabledWeekDays?: number[];
|
|
persianNumbers?: boolean;
|
|
rtlCalendar?: boolean;
|
|
placeholder?: string;
|
|
disabled?: boolean;
|
|
className?: string;
|
|
children?: ReactNode;
|
|
}
|
|
|
|
export const PersianDateTimePicker: ComponentType<PersianDateTimePickerProps>;
|
|
export const PersianCalendar: ComponentType<Record<string, unknown>>;
|
|
export const PersianDateRangePicker: ComponentType<Record<string, unknown>>;
|
|
export const PersianTimePicker: ComponentType<Record<string, unknown>>;
|
|
export const PersianTimeline: ComponentType<Record<string, unknown>>;
|
|
}
|