diff --git a/src/components/gallery/gallery-picker-modal.tsx b/src/components/gallery/gallery-picker-modal.tsx index 36d2304f0..264f03af8 100644 --- a/src/components/gallery/gallery-picker-modal.tsx +++ b/src/components/gallery/gallery-picker-modal.tsx @@ -116,11 +116,11 @@ export function GalleryPickerModal({ )} -
+
{isLoading ? ( type === 'BOOKMARK_ICON' || type === 'AVATAR' ? ( -
- {[...Array(15)].map((_, idx) => ( +
+ {[...Array(18)].map((_, idx) => (
هیچ تصویری پیدا نشد

) : type === 'BOOKMARK_ICON' || type === 'AVATAR' ? ( -
+
{assets.map((asset) => ( { className="absolute inset-0 transition-opacity duration-700 bg-center bg-cover" style={{ backgroundImage: `url(${src})`, - - maskImage: - 'linear-gradient(135deg, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0.6) 40%, rgba(0, 0, 0, 0.3) 90%, rgba(0, 0, 0, 0) 100%)', - WebkitMaskImage: - 'linear-gradient(135deg, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0.6) 40%, rgba(0, 0, 0, 0.3) 90%, rgba(0, 0, 0, 0) 100%)', }} />
diff --git a/src/layouts/widgets-settings/tab-keys.ts b/src/layouts/widgets-settings/tab-keys.ts index debde2632..2cf0b7e75 100644 --- a/src/layouts/widgets-settings/tab-keys.ts +++ b/src/layouts/widgets-settings/tab-keys.ts @@ -4,5 +4,6 @@ export enum WidgetTabKeys { wigiArz = 'wigiArz', news_settings = 'news_settings', weather_settings = 'weather_settings', + combo_settings = 'combo_settings', Pet = 'pet_settings', } diff --git a/src/layouts/widgets-settings/widget-settings-modal.tsx b/src/layouts/widgets-settings/widget-settings-modal.tsx index 231b57cc1..e52503ed5 100644 --- a/src/layouts/widgets-settings/widget-settings-modal.tsx +++ b/src/layouts/widgets-settings/widget-settings-modal.tsx @@ -5,6 +5,7 @@ import { RssFeedSetting } from '../widgets/news/rss-feed-setting' import { WeatherSetting } from '../widgets/weather/weather-setting' import { WigiArzSetting } from '../widgets/wigi-arz/wigi-arz-setting' import { WigiPadSetting } from '../widgets/wigi-pad/wigi-pad-setting' +import { ComboSetting } from '../widgets/combo-widget/combo-setting' import { WidgetTabKeys } from './tab-keys' interface WidgetSettingModalConfig { @@ -39,6 +40,11 @@ const WIDGET_SETTING_MODALS: Record = { size: 'lg', Component: WigiPadSetting, }, + [WidgetTabKeys.combo_settings]: { + title: 'تنظیمات ویجت ترکیبی', + size: 'lg', + Component: ComboSetting, + }, } interface WidgetSettingsModalProps { diff --git a/src/layouts/widgets/combo-widget/combo-setting.tsx b/src/layouts/widgets/combo-widget/combo-setting.tsx new file mode 100644 index 000000000..36076b5f0 --- /dev/null +++ b/src/layouts/widgets/combo-widget/combo-setting.tsx @@ -0,0 +1,68 @@ +import { useEffect, useState } from 'react' +import { getFromStorage, setToStorage } from '@/common/storage' +import { TabNavigation } from '@/components/ui' +import { Icon } from '@/icons' +import { WidgetSettingWrapper } from '@/layouts/widgets-settings/widget-settings-wrapper' +import { RssFeedSetting } from '../news/rss-feed-setting' +import { WigiArzSetting } from '../wigi-arz/wigi-arz-setting' + +type ComboSettingTab = 'currency' | 'news' + +interface ComboSettingProps { + instanceId?: string + size?: { w: number; h: number } +} + +export function ComboSetting({ instanceId, size }: ComboSettingProps) { + const [activeTab, setActiveTab] = useState('currency') + + useEffect(() => { + async function load() { + const savedTab = await getFromStorage('comboTabs') + if (savedTab === 'news' || savedTab === 'currency') { + setActiveTab(savedTab) + } + } + + load() + }, []) + + const handleTabChange = (tab: ComboSettingTab) => { + setActiveTab(tab) + setToStorage('comboTabs', tab) + } + + return ( + +
+ + tabMode="simple" + activeTab={activeTab} + onTabClick={handleTabChange} + tabs={[ + { + id: 'currency', + label: 'تنظیمات ارزها', + icon: , + }, + { + id: 'news', + label: 'تنظیمات اخبار', + icon: , + }, + ]} + size="medium" + className="w-full" + /> + +
+ {activeTab === 'currency' ? ( + + ) : ( + + )} +
+
+
+ ) +} diff --git a/src/layouts/widgets/combo-widget/combo-widget.widget.tsx b/src/layouts/widgets/combo-widget/combo-widget.widget.tsx index fa573c37e..48f770a77 100644 --- a/src/layouts/widgets/combo-widget/combo-widget.widget.tsx +++ b/src/layouts/widgets/combo-widget/combo-widget.widget.tsx @@ -1,27 +1,16 @@ import { useEffect, useState } from 'react' import Analytics from '@/analytics' import { getFromStorage, setToStorage } from '@/common/storage' -import { callEvent } from '@/common/utils/call-event' -import { WidgetTabKeys } from '@/layouts/widgets-settings/tab-keys' import { NewsLayout } from '../news/news.widget' import { WidgetContainer } from '../widget-container' import { WigiArzLayout } from '../wigi-arz/wigi-arz.widget' -import { Button, TabNavigation } from '@/components/ui' +import { TabNavigation } from '@/components/ui' import { Icon } from '@/icons' export type ComboTabType = 'news' | 'currency' export function ComboWidget() { const [activeTab, setActiveTab] = useState(null) - const handleSettingsClick = () => { - if (activeTab === 'currency') { - callEvent('openWidgetsSettings', { tab: WidgetTabKeys.wigiArz }) - } else { - callEvent('openWidgetsSettings', { tab: WidgetTabKeys.news_settings }) - } - - Analytics.event(`combo_${activeTab}_settings_opened`) - } const onTabClick = (tab: ComboTabType) => { if (tab === activeTab) return @@ -78,15 +67,6 @@ export function ComboWidget() { )}
- - ) } diff --git a/src/layouts/widgets/widget-registry.tsx b/src/layouts/widgets/widget-registry.tsx index a77e1cc69..0a4f35a87 100644 --- a/src/layouts/widgets/widget-registry.tsx +++ b/src/layouts/widgets/widget-registry.tsx @@ -241,8 +241,9 @@ export const WIDGET_DEFINITIONS: Record = { popular: true, allowedSizes: [{ w: 2, h: 3 }], defaultSize: { w: 2, h: 3 }, + settingsTab: WidgetTabKeys.combo_settings, canDuplicate: false, - node: (_instanceId, size) => ( + node: (_instanceId, _size) => ( diff --git a/src/layouts/widgets/wigi-arz/wigi-arz-setting.tsx b/src/layouts/widgets/wigi-arz/wigi-arz-setting.tsx index dc587b102..28520c3b1 100644 --- a/src/layouts/widgets/wigi-arz/wigi-arz-setting.tsx +++ b/src/layouts/widgets/wigi-arz/wigi-arz-setting.tsx @@ -2,7 +2,7 @@ import { useEffect, useState } from 'react' import Analytics from '@/analytics' import { getFromStorage, setToStorage } from '@/common/storage' import { callEvent } from '@/common/utils/call-event' -import { ItemSelector, SectionPanel, SelectBox } from '@/components/ui' +import { SectionPanel, SelectBox } from '@/components/ui' import { TextInput } from '@/components/ui' import { useAuth } from '@/context/auth.context' import { CurrencyColorMode } from '@/context/currency.context' @@ -93,20 +93,6 @@ export function WigiArzSetting({ instanceId, size }: WigiArzSettingProps) { setToStorage('currencies', modifiedCurrencySelection) } - const toggleCurrencyColorMode = (mode: CurrencyColorMode) => { - Analytics.event('currency_color_mode_changed', { - mode, - }) - - callEvent('currencies_updated', { - currencies: selectedCurrencies, - colorMode: mode, - }) - - setCurrencyColorMode(mode) - setToStorage('currencyColorMode', mode) - } - const currencyGroups = getCurrencyOptions( supportCurrencies.filter((currency) => currencyType !== 'all' ? currency.type === currencyType : true @@ -126,25 +112,6 @@ export function WigiArzSetting({ instanceId, size }: WigiArzSettingProps) { return (
- -
- - toggleCurrencyColorMode(CurrencyColorMode.NORMAL) - } - /> - toggleCurrencyColorMode(CurrencyColorMode.X)} - /> -
-
-