Tokens::SCHEME_LIGHT, 'radius' => 6, 'surface_override' => '', 'ink_override' => '', 'accent_override' => '', ]; } /** * {@inheritDoc} */ public function settingsSchema(): array { return [ 'scheme' => [ 'type' => 'select', 'label' => __( 'زمینه رنگی', 'rahkar-toolkit' ), 'options' => [ Tokens::SCHEME_LIGHT => __( 'روشن', 'rahkar-toolkit' ), Tokens::SCHEME_DARK => __( 'تیره', 'rahkar-toolkit' ), Tokens::SCHEME_THEME => __( 'از رنگ‌های قالب سایت', 'rahkar-toolkit' ), ], 'help' => __( 'گزینه سوم رنگ‌های قالب را می‌خواند، ولی فقط قالب‌هایی که پالت خود را به شیوه استاندارد وردپرس (theme.json) منتشر می‌کنند این رنگ‌ها را دارند — بیشتر قالب‌های بلاک این کار را می‌کنند و بیشتر قالب‌های کلاسیک نه. اگر قالب شما چنین چیزی نداشته باشد چیزی خراب نمی‌شود: خودبه‌خود روی حالت روشن می‌ماند. برای قالب‌های کلاسیک از بخش «رنگ دستی» پایین استفاده کنید.', 'rahkar-toolkit' ), 'default' => Tokens::SCHEME_LIGHT, 'section' => 'colors', ], 'radius' => [ 'type' => 'number', 'label' => __( 'گردی گوشه‌ها (پیکسل)', 'rahkar-toolkit' ), 'help' => __( 'صفر یعنی گوشه‌های تیز. اگر قالبتان گوشه‌های کاملاً گرد دارد، عدد بزرگ‌تری بگذارید تا کادرهای این افزونه بیگانه به نظر نرسند.', 'rahkar-toolkit' ), 'default' => 6, 'min' => 0, 'max' => 32, 'section' => 'colors', ], 'preview' => [ 'type' => 'preview', 'label' => __( 'پیش‌نمایش', 'rahkar-toolkit' ), 'help' => __( 'همان رنگ‌هایی که پس از ذخیره روی سایت اعمال می‌شود.', 'rahkar-toolkit' ), 'render' => [ self::class, 'renderPreview' ], 'section' => 'colors', ], 'surface_override' => [ 'type' => 'text', 'label' => __( 'رنگ پس‌زمینه', 'rahkar-toolkit' ), 'help' => __( 'پس‌زمینه کادرها و پنجره‌های بازشو.', 'rahkar-toolkit' ), 'placeholder' => '#ffffff', 'monospace' => true, 'default' => '', 'section' => 'advanced', ], 'ink_override' => [ 'type' => 'text', 'label' => __( 'رنگ متن', 'rahkar-toolkit' ), 'help' => __( 'باید با رنگ پس‌زمینه بالا خوانا باشد. این دو همیشه با هم تغییر می‌کنند.', 'rahkar-toolkit' ), 'placeholder' => '#1f2024', 'monospace' => true, 'default' => '', 'section' => 'advanced', ], 'accent_override' => [ 'type' => 'text', 'label' => __( 'رنگ اصلی', 'rahkar-toolkit' ), 'help' => __( 'رنگ دکمه‌های اصلی و حلقه فوکوس.', 'rahkar-toolkit' ), 'placeholder' => '#1e874b', 'monospace' => true, 'default' => '', 'section' => 'advanced', ], ]; } /** * {@inheritDoc} */ public function settingsSections(): array { return [ 'colors' => __( 'زمینه رنگی', 'rahkar-toolkit' ), 'advanced' => __( 'رنگ دستی', 'rahkar-toolkit' ), ]; } /** * A sample of the front-end controls, wearing the saved tokens. * * Rendered rather than described, because a colour setting whose result you * cannot see is a colour setting nobody touches. Scoped to its own element * rather than `:root` so the preview cannot repaint the admin screen around * it. * * @internal Called by {@see FieldRenderer} for the `preview` field type. */ public static function renderPreview(): void { $declarations = ''; foreach ( Tokens::resolve() as $name => $value ) { // Values reaching here have been through Tokens::safeValue(), which // accepts only the shapes a colour can legitimately take. $declarations .= sprintf( '--rahkar-%s:%s;', esc_attr( $name ), esc_attr( $value ) ); } printf( '

%s

%s

09123456789
%s %s %s
', esc_attr( $declarations ), esc_html__( 'اطلاع از موجود شدن', 'rahkar-toolkit' ), esc_html__( 'شماره موبایل خود را بگذارید تا خبرتان کنیم.', 'rahkar-toolkit' ), esc_html__( 'اطلاع بده', 'rahkar-toolkit' ), esc_html__( 'ثبت شد', 'rahkar-toolkit' ), esc_html__( 'شماره معتبر نیست', 'rahkar-toolkit' ) ); // The advanced overrides are free text, and a shop owner who types // something the validator refuses would otherwise see a preview that // silently ignored them and no explanation at all. $refused = self::refusedOverrides(); if ( [] !== $refused ) { echo wp_kses( Ui::notice( 'warning', sprintf( /* translators: %s: list of setting labels */ __( 'این مقدارها خوانده نشدند و نادیده گرفته می‌شوند: %s. یک رنگ باید به شکل ‎#1f2024‎، ‎rgb(31 32 36)‎ یا ‎var(--نام-متغیر)‎ نوشته شود.', 'rahkar-toolkit' ), wp_kses( implode( '، ', $refused ), Ui::allowedHtml() ) ) ), Ui::allowedHtml() ); } } /** * Override fields holding something the validator will not accept. * * @return list */ private static function refusedOverrides(): array { $settings = \Rahkar\WP\Support\Settings::all( Tokens::SLUG ); $labels = [ 'surface_override' => __( 'رنگ پس‌زمینه', 'rahkar-toolkit' ), 'ink_override' => __( 'رنگ متن', 'rahkar-toolkit' ), 'accent_override' => __( 'رنگ اصلی', 'rahkar-toolkit' ), ]; $refused = []; foreach ( $labels as $key => $label ) { $raw = trim( (string) ( $settings[ $key ] ?? '' ) ); if ( '' !== $raw && '' === Tokens::safeValue( $raw ) ) { $refused[] = $label; } } return $refused; } }