diff --git a/.gitignore b/.gitignore
index eead4ce6..fd00a1e3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,29 +11,9 @@
/.specs/
/docs/
-# tools/: 只版本化两个共享入口,其余为本地脚本。
-/tools/*
-!/tools/build-public-assets.mjs
-!/tools/wp-cli-visual-fixtures.php
-# tests/: 放行整个套件,按名字排除本地专有产物。
-#
-# 这里刻意从「逐文件白名单」改为「先放行目录、再逐个排除」的反向写法:
-# 白名单要求每新增一个 *.test.cjs 都同步改本文件,一旦漏改,该测试文件会静默
-# 不被跟踪,在 CI 上表现为「测试数量莫名变少」,且极难排查。反向写法下新增测试
-# 自动纳入版本控制,只有确需本地专有的文件才需要追加排除。
-#
-# 下列 10 个路径是切换前就已处于「忽略且未跟踪」状态的本地专有文件,逐一保留原状。
-!/tests/
-/tests/visual-results/
-/tests/fixtures/widget-golden-v1.json
-/tests/widget-system/a11y-contract.test.cjs
-/tests/widget-system/admin-core.test.cjs
-/tests/widget-system/captcha-cloud-contract.test.cjs
-/tests/widget-system/comment-hard-cut-contract.test.cjs
-/tests/widget-system/download-config-contract.test.cjs
-/tests/widget-system/run.php
-/tests/widget-system/scratch-term-aggregation-harness.php
+
+
/CLAUDE.md
/AGENTS.md
diff --git a/tests/fixtures/widget-golden-v1.json b/tests/fixtures/widget-golden-v1.json
new file mode 100644
index 00000000..24dfdb22
--- /dev/null
+++ b/tests/fixtures/widget-golden-v1.json
@@ -0,0 +1,7188 @@
+{
+ "schema": "aksrt.widget-golden.v1",
+ "captured_at": "",
+ "reference": {
+ "source_root": "C:\\Users\\Xing\\Desktop\\zibll",
+ "fingerprint": "47516d89bfa2a7984551ee7e4d9832ca60e99d5e081567091db9ee00c6d55bdb",
+ "files": {
+ "inc/widgets/widget-more.php": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528",
+ "inc/widgets/widget-posts.php": "20b04007270ecfd265adaaa287eb1a696566385b1f86379079be9664cfaea409",
+ "inc/widgets/widget-produck.php": "77194592685b50e5428c6db4d0e2ca2cbc52d0ff4a81200f4e10b56e26159b9d",
+ "inc/widgets/widget-slider.php": "a06a12500cb8ffbf57e496d9979eaed0edd545499ecb9c80d011d3ae49d2244e",
+ "inc/widgets/widget-user.php": "97a4fde11d0a93af229e499f9b11c8d769b21b6b7500eac9bb94b4dd850f6b24",
+ "inc/widgets/widget-index.php": "6f15b1b73f909ea7eccf4697b5274a38512deae2e931ae7b0a33e48a5fcd8b25",
+ "inc/functions/zib-posts-list.php": "ced813182c0b0fc5847ca5c04a57fa4379581ace13a6d40dfb7dfabb55e13ae4",
+ "inc/functions/zib-category.php": "d5b8a7f2b838c76cc60095645245444b8f3d009d4e0dec234c29971fd976f6a7",
+ "inc/functions/functions.php": "14ef009b26c8a2560e38486a04946e85c5e382c3432dac9eba0b5c01d6527680",
+ "js/section-navs.js": "24cc2c5c73932d98f0f346bcf3d62fc1502a9e8eabe31cc477d96efefe37f88d"
+ },
+ "policy": {
+ "modern_widget_count": 37,
+ "legacy_modules_ignored": true
+ }
+ },
+ "acceptance": {
+ "dimension_delta_px_max": 2,
+ "pixel_difference_percent_max": 1.5,
+ "console_errors_max": 0,
+ "unexpected_network_failures_max": 0,
+ "a11y_critical_max": 0,
+ "a11y_serious_max": 0,
+ "reduced_motion_required": true
+ },
+ "dataset": {
+ "site": {
+ "name": "AKSRT 知识库",
+ "url": "https://fixtures.aksrt.test"
+ },
+ "terms": [
+ {
+ "id": 101,
+ "taxonomy": "category",
+ "name": "产品设计",
+ "count": 24
+ },
+ {
+ "id": 102,
+ "taxonomy": "category",
+ "name": "前端开发",
+ "count": 36
+ },
+ {
+ "id": 103,
+ "taxonomy": "post_tag",
+ "name": "系统课程",
+ "count": 18
+ }
+ ],
+ "users": [
+ {
+ "id": 201,
+ "name": "林知夏",
+ "role": "讲师",
+ "points": 9680,
+ "followers": 3280
+ },
+ {
+ "id": 202,
+ "name": "周屿",
+ "role": "作者",
+ "points": 7420,
+ "followers": 2160
+ },
+ {
+ "id": 203,
+ "name": "陈墨",
+ "role": "学员",
+ "points": 5360,
+ "followers": 980
+ }
+ ],
+ "posts": [
+ {
+ "id": 301,
+ "title": "从零构建知识产品体系",
+ "pay_type": "reading",
+ "author": 201,
+ "category": 101
+ },
+ {
+ "id": 302,
+ "title": "现代 WordPress 主题工程实践",
+ "pay_type": "video",
+ "author": 202,
+ "category": 102
+ },
+ {
+ "id": 303,
+ "title": "高质量课程资料包",
+ "pay_type": "download",
+ "author": 201,
+ "category": 102
+ },
+ {
+ "id": 304,
+ "title": "视觉案例图库",
+ "pay_type": "gallery",
+ "author": 202,
+ "category": 101
+ },
+ {
+ "id": 305,
+ "title": "会员专属进阶课",
+ "pay_type": "vip",
+ "author": 201,
+ "category": 101
+ },
+ {
+ "id": 306,
+ "title": "公开学习指南",
+ "pay_type": "no",
+ "author": 203,
+ "category": 102
+ }
+ ],
+ "comments": [
+ {
+ "id": 401,
+ "user": 203,
+ "post": 301,
+ "content": "课程结构清晰,案例非常实用。"
+ },
+ {
+ "id": 402,
+ "user": 202,
+ "post": 302,
+ "content": "对主题工程化讲解得很完整。"
+ }
+ ],
+ "payment_states": [
+ "guest-locked",
+ "member-locked",
+ "free",
+ "purchased",
+ "vip-authorized",
+ "unconfigured"
+ ],
+ "media": {
+ "images": [
+ "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "https://fixtures.aksrt.test/media/course-cover-03.jpg"
+ ],
+ "video": "https://fixtures.aksrt.test/media/lesson.m3u8"
+ }
+ },
+ "components": {
+ "search": {
+ "id_base": "aksrt_widget_search",
+ "name": "AKSRT 搜索框",
+ "group": "general",
+ "size": "sidebar",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "sidebar_affix",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "placeholder",
+ "search_style"
+ ],
+ "settings": {
+ "title": "AKSRT · Search",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/search",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/search",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/search",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "sidebar_affix": false,
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "placeholder": "输入关键词搜索",
+ "search_style": "button"
+ },
+ "root_selector": "[data-aksrt-widget=\"search\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "posts_toc": {
+ "id_base": "aksrt_widget_posts_toc",
+ "name": "AKSRT 文章目录树",
+ "group": "general",
+ "size": "sidebar",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "title",
+ "mini_title",
+ "in_affix"
+ ],
+ "settings": {
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "title": "AKSRT · Posts toc",
+ "mini_title": "AKSRT mini title 1",
+ "in_affix": false
+ },
+ "root_selector": "[data-aksrt-widget=\"posts_toc\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus",
+ "expanded"
+ ]
+ },
+ "quote": {
+ "id_base": "aksrt_widget_quote",
+ "name": "AKSRT 一言",
+ "group": "general",
+ "size": "sidebar",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "sidebar_affix",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "source",
+ "quotes",
+ "interval"
+ ],
+ "settings": {
+ "title": "AKSRT · Quote",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/quote",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/quote",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/quote",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "sidebar_affix": false,
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "source": "local",
+ "quotes": "保持好奇,持续创造。\n知识因为分享而更有价值。",
+ "interval": 30
+ },
+ "root_selector": "[data-aksrt-widget=\"quote\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "icon_cards": {
+ "id_base": "aksrt_widget_icon_cards",
+ "name": "AKSRT 图标卡片(竖版)",
+ "group": "general",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "show_widget_bg",
+ "pc_row",
+ "m_row",
+ "size",
+ "cards"
+ ],
+ "settings": {
+ "title": "AKSRT · Icon cards",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/icon_cards",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/icon_cards",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/icon_cards",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "show_widget_bg": false,
+ "pc_row": "2",
+ "m_row": "2",
+ "size": 0,
+ "cards": [
+ {
+ "icon": "fa fas fa-graduation-cap",
+ "customize_icon": "AKSRT customize icon 1",
+ "link": {
+ "url": "https://fixtures.aksrt.test/icon_cards",
+ "text": "查看详情",
+ "target": ""
+ },
+ "icon_radius": false,
+ "icon_class": "c-yellow",
+ "icon_color": "key-color",
+ "icon_custom_color": "#667eea",
+ "title": "AKSRT · Icon cards",
+ "desc": "AKSRT desc 1"
+ },
+ {
+ "icon": "fa fas fa-graduation-cap",
+ "customize_icon": "AKSRT customize icon 2",
+ "link": {
+ "url": "https://fixtures.aksrt.test/icon_cards",
+ "text": "查看详情",
+ "target": ""
+ },
+ "icon_radius": false,
+ "icon_class": "c-yellow",
+ "icon_color": "key-color",
+ "icon_custom_color": "#667eea",
+ "title": "AKSRT · Icon cards",
+ "desc": "AKSRT desc 2"
+ },
+ {
+ "icon": "fa fas fa-graduation-cap",
+ "customize_icon": "AKSRT customize icon 3",
+ "link": {
+ "url": "https://fixtures.aksrt.test/icon_cards",
+ "text": "查看详情",
+ "target": ""
+ },
+ "icon_radius": false,
+ "icon_class": "c-yellow",
+ "icon_color": "key-color",
+ "icon_custom_color": "#667eea",
+ "title": "AKSRT · Icon cards",
+ "desc": "AKSRT desc 3"
+ }
+ ]
+ },
+ "root_selector": "[data-aksrt-widget=\"icon_cards\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "video": {
+ "id_base": "aksrt_widget_video",
+ "name": "AKSRT 视频",
+ "group": "general",
+ "size": "any",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "url",
+ "poster",
+ "autoplay",
+ "muted",
+ "ratio"
+ ],
+ "settings": {
+ "title": "AKSRT · Video",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/video",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/video",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/video",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "url": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "poster": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "autoplay": false,
+ "muted": false,
+ "ratio": "16:9"
+ },
+ "root_selector": "[data-aksrt-widget=\"video\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "embed": {
+ "id_base": "aksrt_widget_embed",
+ "name": "AKSRT 超级嵌入",
+ "group": "general",
+ "size": "any",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "url",
+ "ratio",
+ "allow_fullscreen"
+ ],
+ "settings": {
+ "title": "AKSRT · Embed",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/embed",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/embed",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/embed",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "url": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "ratio": 56.25,
+ "allow_fullscreen": true
+ },
+ "root_selector": "[data-aksrt-widget=\"embed\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "media_cards": {
+ "id_base": "aksrt_widget_media_cards",
+ "name": "AKSRT 图文视频封面卡片",
+ "group": "general",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "obs_animation",
+ "animation_repeat",
+ "pc_row",
+ "m_row",
+ "mask_opacity",
+ "height_scale",
+ "font_size_pc",
+ "font_size_m",
+ "font_bold",
+ "font_color",
+ "covers"
+ ],
+ "settings": {
+ "title": "AKSRT · Media cards",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/media_cards",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/media_cards",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/media_cards",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "obs_animation": "",
+ "animation_repeat": false,
+ "pc_row": "4",
+ "m_row": "2",
+ "mask_opacity": 10,
+ "height_scale": 30,
+ "font_size_pc": 18,
+ "font_size_m": 14,
+ "font_bold": false,
+ "font_color": "#667eea",
+ "covers": [
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "hide": "",
+ "title": "AKSRT · Media cards",
+ "link": {
+ "url": "https://fixtures.aksrt.test/media_cards",
+ "text": "查看详情",
+ "target": ""
+ }
+ },
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "hide": "",
+ "title": "AKSRT · Media cards",
+ "link": {
+ "url": "https://fixtures.aksrt.test/media_cards",
+ "text": "查看详情",
+ "target": ""
+ }
+ },
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "hide": "",
+ "title": "AKSRT · Media cards",
+ "link": {
+ "url": "https://fixtures.aksrt.test/media_cards",
+ "text": "查看详情",
+ "target": ""
+ }
+ }
+ ]
+ },
+ "root_selector": "[data-aksrt-widget=\"media_cards\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "icon_cover_cards": {
+ "id_base": "aksrt_widget_icon_cover_cards",
+ "name": "AKSRT 图标卡片(横版)",
+ "group": "general",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "pc_row",
+ "m_row",
+ "show_widget_bg",
+ "icon_radius4",
+ "cards"
+ ],
+ "settings": {
+ "title": "AKSRT · Icon cover cards",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/icon_cover_cards",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/icon_cover_cards",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/icon_cover_cards",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "pc_row": "4",
+ "m_row": "2",
+ "show_widget_bg": false,
+ "icon_radius4": false,
+ "cards": [
+ {
+ "title": "AKSRT · Icon cover cards",
+ "desc": "AKSRT desc 1",
+ "icon": "fa fas fa-graduation-cap",
+ "customize_icon": "AKSRT customize icon 1",
+ "icon_class": "c-yellow",
+ "link": {
+ "url": "https://fixtures.aksrt.test/icon_cover_cards",
+ "text": "查看详情",
+ "target": ""
+ }
+ },
+ {
+ "title": "AKSRT · Icon cover cards",
+ "desc": "AKSRT desc 2",
+ "icon": "fa fas fa-graduation-cap",
+ "customize_icon": "AKSRT customize icon 2",
+ "icon_class": "c-yellow",
+ "link": {
+ "url": "https://fixtures.aksrt.test/icon_cover_cards",
+ "text": "查看详情",
+ "target": ""
+ }
+ },
+ {
+ "title": "AKSRT · Icon cover cards",
+ "desc": "AKSRT desc 3",
+ "icon": "fa fas fa-graduation-cap",
+ "customize_icon": "AKSRT customize icon 3",
+ "icon_class": "c-yellow",
+ "link": {
+ "url": "https://fixtures.aksrt.test/icon_cover_cards",
+ "text": "查看详情",
+ "target": ""
+ }
+ }
+ ]
+ },
+ "root_selector": "[data-aksrt-widget=\"icon_cover_cards\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "partners": {
+ "id_base": "aksrt_widget_partners",
+ "name": "AKSRT 横向滚动合作伙伴",
+ "group": "general",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "rows",
+ "m_rows",
+ "style_type",
+ "card_width",
+ "card_height",
+ "card_bg",
+ "card_radius",
+ "speed",
+ "direction",
+ "pause_hover",
+ "show_widget_bg",
+ "go_link",
+ "end_fade",
+ "link_type",
+ "link_cats",
+ "link_limit",
+ "link_orderby",
+ "page_links_order",
+ "partners"
+ ],
+ "settings": {
+ "title": "AKSRT · Partners",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/partners",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/partners",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/partners",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "rows": "3",
+ "m_rows": "3",
+ "style_type": "card",
+ "card_width": 200,
+ "card_height": 60,
+ "card_bg": true,
+ "card_radius": 16,
+ "speed": 3,
+ "direction": "alternate",
+ "pause_hover": true,
+ "show_widget_bg": false,
+ "go_link": true,
+ "end_fade": true,
+ "link_type": "link",
+ "link_cats": [],
+ "link_limit": 50,
+ "link_orderby": "name",
+ "page_links_order": "ASC",
+ "partners": [
+ {
+ "title": "AKSRT · Partners",
+ "desc": "AKSRT desc 1",
+ "image": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/partners",
+ "text": "查看详情",
+ "target": ""
+ }
+ },
+ {
+ "title": "AKSRT · Partners",
+ "desc": "AKSRT desc 2",
+ "image": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/partners",
+ "text": "查看详情",
+ "target": ""
+ }
+ },
+ {
+ "title": "AKSRT · Partners",
+ "desc": "AKSRT desc 3",
+ "image": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/partners",
+ "text": "查看详情",
+ "target": ""
+ }
+ }
+ ]
+ },
+ "root_selector": "[data-aksrt-widget=\"partners\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus",
+ "next-slide"
+ ]
+ },
+ "combo_info": {
+ "id_base": "aksrt_widget_combo_info",
+ "name": "AKSRT 复合信息卡片",
+ "group": "general",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "obs_animation",
+ "animation_repeat",
+ "pc_row",
+ "m_row",
+ "pc_gap",
+ "m_gap",
+ "card_radius",
+ "top_band",
+ "top_band_height",
+ "go_link",
+ "cta_text",
+ "cta_color",
+ "cards"
+ ],
+ "settings": {
+ "title": "AKSRT · Combo info",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/combo_info",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/combo_info",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/combo_info",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "obs_animation": "",
+ "animation_repeat": false,
+ "pc_row": "4",
+ "m_row": "1",
+ "pc_gap": "10",
+ "m_gap": "5",
+ "card_radius": 16,
+ "top_band": true,
+ "top_band_height": 150,
+ "go_link": true,
+ "cta_text": "立即体验",
+ "cta_color": "",
+ "cards": [
+ {
+ "title": "AKSRT · Combo info",
+ "icon": "fa fas fa-graduation-cap",
+ "icon_image": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "tags": [
+ {
+ "text": "保持好奇,持续创造。",
+ "color": ""
+ },
+ {
+ "text": "保持好奇,持续创造。",
+ "color": ""
+ },
+ {
+ "text": "保持好奇,持续创造。",
+ "color": ""
+ }
+ ],
+ "desc": "AKSRT desc 1",
+ "link": {
+ "url": "https://fixtures.aksrt.test/combo_info",
+ "text": "查看详情",
+ "target": ""
+ },
+ "cta_text": "AKSRT cta text 1",
+ "cta_color": "",
+ "band_color": "auto"
+ },
+ {
+ "title": "AKSRT · Combo info",
+ "icon": "fa fas fa-graduation-cap",
+ "icon_image": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "tags": [
+ {
+ "text": "保持好奇,持续创造。",
+ "color": ""
+ },
+ {
+ "text": "保持好奇,持续创造。",
+ "color": ""
+ },
+ {
+ "text": "保持好奇,持续创造。",
+ "color": ""
+ }
+ ],
+ "desc": "AKSRT desc 2",
+ "link": {
+ "url": "https://fixtures.aksrt.test/combo_info",
+ "text": "查看详情",
+ "target": ""
+ },
+ "cta_text": "AKSRT cta text 2",
+ "cta_color": "",
+ "band_color": "auto"
+ },
+ {
+ "title": "AKSRT · Combo info",
+ "icon": "fa fas fa-graduation-cap",
+ "icon_image": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "tags": [
+ {
+ "text": "保持好奇,持续创造。",
+ "color": ""
+ },
+ {
+ "text": "保持好奇,持续创造。",
+ "color": ""
+ },
+ {
+ "text": "保持好奇,持续创造。",
+ "color": ""
+ }
+ ],
+ "desc": "AKSRT desc 3",
+ "link": {
+ "url": "https://fixtures.aksrt.test/combo_info",
+ "text": "查看详情",
+ "target": ""
+ },
+ "cta_text": "AKSRT cta text 3",
+ "cta_color": "",
+ "band_color": "auto"
+ }
+ ]
+ },
+ "root_selector": "[data-aksrt-widget=\"combo_info\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "text_title": {
+ "id_base": "aksrt_widget_text_title",
+ "name": "AKSRT 文字标题",
+ "group": "general",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "heading",
+ "description",
+ "alignment"
+ ],
+ "settings": {
+ "title": "AKSRT · Text title",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/text_title",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/text_title",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/text_title",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "heading": "从入门到精通的系统学习路径",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "alignment": "center"
+ },
+ "root_selector": "[data-aksrt-widget=\"text_title\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "buttons": {
+ "id_base": "aksrt_widget_buttons",
+ "name": "AKSRT 按钮组",
+ "group": "general",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "sidebar_affix",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "obs_animation",
+ "animation_repeat",
+ "pc_width",
+ "m_width",
+ "pc_padding",
+ "m_padding",
+ "pc_gap",
+ "m_gap",
+ "align",
+ "radius",
+ "hollow",
+ "go_link",
+ "items"
+ ],
+ "settings": {
+ "sidebar_affix": false,
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "obs_animation": "",
+ "animation_repeat": false,
+ "pc_width": 0,
+ "m_width": 0,
+ "pc_padding": "large",
+ "m_padding": "medium",
+ "pc_gap": 12,
+ "m_gap": 6,
+ "align": "center",
+ "radius": false,
+ "hollow": false,
+ "go_link": true,
+ "items": [
+ {
+ "text": "保持好奇,持续创造。",
+ "icon_left": "fa fas fa-graduation-cap",
+ "icon_right": "fa fas fa-graduation-cap",
+ "link": {
+ "url": "https://fixtures.aksrt.test/buttons",
+ "text": "查看详情",
+ "target": ""
+ },
+ "color": ""
+ },
+ {
+ "text": "保持好奇,持续创造。",
+ "icon_left": "fa fas fa-graduation-cap",
+ "icon_right": "fa fas fa-graduation-cap",
+ "link": {
+ "url": "https://fixtures.aksrt.test/buttons",
+ "text": "查看详情",
+ "target": ""
+ },
+ "color": ""
+ },
+ {
+ "text": "保持好奇,持续创造。",
+ "icon_left": "fa fas fa-graduation-cap",
+ "icon_right": "fa fas fa-graduation-cap",
+ "link": {
+ "url": "https://fixtures.aksrt.test/buttons",
+ "text": "查看详情",
+ "target": ""
+ },
+ "color": ""
+ }
+ ]
+ },
+ "root_selector": "[data-aksrt-widget=\"buttons\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "layout_gap": {
+ "id_base": "aksrt_widget_layout_gap",
+ "name": "AKSRT 布局额外间距",
+ "group": "general",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "pc_gap",
+ "m_gap"
+ ],
+ "settings": {
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "pc_gap": 20,
+ "m_gap": 10
+ },
+ "root_selector": "[data-aksrt-widget=\"layout_gap\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "tag_cloud": {
+ "id_base": "aksrt_widget_tag_cloud",
+ "name": "AKSRT 标签云",
+ "group": "general",
+ "size": "sidebar",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "sidebar_affix",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "taxonomy",
+ "number",
+ "orderby",
+ "show_count"
+ ],
+ "settings": {
+ "title": "AKSRT · Tag cloud",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/tag_cloud",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/tag_cloud",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/tag_cloud",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "sidebar_affix": false,
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "taxonomy": "post_tag",
+ "number": 20,
+ "orderby": "count",
+ "show_count": false
+ },
+ "root_selector": "[data-aksrt-widget=\"tag_cloud\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "recent_comments": {
+ "id_base": "aksrt_widget_recent_comments",
+ "name": "AKSRT 最近评论",
+ "group": "general",
+ "size": "sidebar",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "sidebar_affix",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "limit",
+ "outer",
+ "outpost",
+ "show_source",
+ "style"
+ ],
+ "settings": {
+ "title": "AKSRT · Recent comments",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/recent_comments",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/recent_comments",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/recent_comments",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "sidebar_affix": false,
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "limit": 8,
+ "outer": "1",
+ "outpost": "1",
+ "show_source": false,
+ "style": ""
+ },
+ "root_selector": "[data-aksrt-widget=\"recent_comments\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "links": {
+ "id_base": "aksrt_widget_links",
+ "name": "AKSRT 链接列表",
+ "group": "general",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "style",
+ "limit",
+ "links"
+ ],
+ "settings": {
+ "title": "AKSRT · Links",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/links",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/links",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/links",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "style": "card",
+ "limit": 12,
+ "links": [
+ {
+ "title": "AKSRT · Links",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "link": {
+ "url": "https://fixtures.aksrt.test/links",
+ "text": "查看详情",
+ "target": ""
+ }
+ },
+ {
+ "title": "AKSRT · Links",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "link": {
+ "url": "https://fixtures.aksrt.test/links",
+ "text": "查看详情",
+ "target": ""
+ }
+ },
+ {
+ "title": "AKSRT · Links",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "link": {
+ "url": "https://fixtures.aksrt.test/links",
+ "text": "查看详情",
+ "target": ""
+ }
+ }
+ ]
+ },
+ "root_selector": "[data-aksrt-widget=\"links\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "notice": {
+ "id_base": "aksrt_widget_notice",
+ "name": "AKSRT 上下滚动公告",
+ "group": "general",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-more.php",
+ "sha256": "07ea0c3260a9ee9701b1ce03795941fbbfb61c377ad71fe8f7820107763c5528"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "sidebar_affix",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "blank",
+ "radius",
+ "interval",
+ "color",
+ "source",
+ "msg_icon",
+ "count",
+ "desc_s",
+ "posts_opts",
+ "img_ids"
+ ],
+ "settings": {
+ "title": "AKSRT · Notice",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/notice",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/notice",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/notice",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "sidebar_affix": false,
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "blank": false,
+ "radius": false,
+ "interval": 3,
+ "color": "c-blue",
+ "source": "",
+ "msg_icon": "fa fas fa-graduation-cap",
+ "count": 8,
+ "desc_s": false,
+ "posts_opts": {
+ "cat": "1",
+ "orderby": "",
+ "order": "desc"
+ },
+ "img_ids": [
+ {
+ "title": "AKSRT · Notice",
+ "icon": "fa fas fa-graduation-cap",
+ "href": ""
+ },
+ {
+ "title": "AKSRT · Notice",
+ "icon": "fa fas fa-graduation-cap",
+ "href": ""
+ },
+ {
+ "title": "AKSRT · Notice",
+ "icon": "fa fas fa-graduation-cap",
+ "href": ""
+ }
+ ]
+ },
+ "root_selector": "[data-aksrt-widget=\"notice\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus",
+ "next-slide"
+ ]
+ },
+ "term_cards": {
+ "id_base": "aksrt_widget_term_cards",
+ "name": "AKSRT 分类图文卡片",
+ "group": "content",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-posts.php",
+ "sha256": "20b04007270ecfd265adaaa287eb1a696566385b1f86379079be9664cfaea409"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "obs_animation",
+ "animation_repeat",
+ "term_id",
+ "type",
+ "height_scale",
+ "pc_row",
+ "m_row",
+ "mask_opacity",
+ "target_blank"
+ ],
+ "settings": {
+ "title": "AKSRT · Term cards",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/term_cards",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/term_cards",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/term_cards",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "obs_animation": "",
+ "animation_repeat": false,
+ "term_id": [],
+ "type": "style-1",
+ "height_scale": 60,
+ "pc_row": "2",
+ "m_row": "2",
+ "mask_opacity": 10,
+ "target_blank": false
+ },
+ "root_selector": "[data-aksrt-widget=\"term_cards\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "term_aggregation": {
+ "id_base": "aksrt_widget_term_aggregation",
+ "name": "AKSRT 分类聚合卡片",
+ "group": "content",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-posts.php",
+ "sha256": "20b04007270ecfd265adaaa287eb1a696566385b1f86379079be9664cfaea409"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "obs_animation",
+ "animation_repeat",
+ "pc_row",
+ "term_id",
+ "orderby",
+ "order",
+ "count",
+ "target_blank"
+ ],
+ "settings": {
+ "title": "AKSRT · Term aggregation",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/term_aggregation",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/term_aggregation",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/term_aggregation",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "obs_animation": "",
+ "animation_repeat": false,
+ "pc_row": 2,
+ "term_id": [],
+ "orderby": "modified",
+ "order": "desc",
+ "count": 4,
+ "target_blank": false
+ },
+ "root_selector": "[data-aksrt-widget=\"term_aggregation\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "hot_posts": {
+ "id_base": "aksrt_widget_hot_posts",
+ "name": "AKSRT 热榜文章",
+ "group": "content",
+ "size": "sidebar",
+ "reference": {
+ "file": "inc/widgets/widget-posts.php",
+ "sha256": "20b04007270ecfd265adaaa287eb1a696566385b1f86379079be9664cfaea409"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "sidebar_affix",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "orderby",
+ "limit_day",
+ "count",
+ "target_blank"
+ ],
+ "settings": {
+ "title": "AKSRT · Hot posts",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/hot_posts",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/hot_posts",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/hot_posts",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "sidebar_affix": false,
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "orderby": "views",
+ "limit_day": 0,
+ "count": 6,
+ "target_blank": false
+ },
+ "root_selector": "[data-aksrt-widget=\"hot_posts\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus",
+ "loading",
+ "empty",
+ "error"
+ ]
+ },
+ "post_pay": {
+ "id_base": "aksrt_widget_post_pay",
+ "name": "AKSRT 付费购买",
+ "group": "content",
+ "size": "sidebar",
+ "reference": {
+ "file": "inc/widgets/widget-posts.php",
+ "sha256": "20b04007270ecfd265adaaa287eb1a696566385b1f86379079be9664cfaea409"
+ },
+ "field_ids": [
+ "sidebar_affix",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "theme"
+ ],
+ "settings": {
+ "sidebar_affix": false,
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "theme": "jb-red"
+ },
+ "root_selector": "[data-aksrt-widget=\"post_pay\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus",
+ "guest-locked",
+ "member-locked",
+ "authorized",
+ "unconfigured"
+ ]
+ },
+ "posts": {
+ "id_base": "aksrt_widget_posts",
+ "name": "AKSRT 文章列表",
+ "group": "content",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-posts.php",
+ "sha256": "20b04007270ecfd265adaaa287eb1a696566385b1f86379079be9664cfaea409"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "load_mode",
+ "cat",
+ "zibpay_type",
+ "limit_day",
+ "orderby",
+ "order",
+ "style",
+ "mini_opt",
+ "count",
+ "paginate"
+ ],
+ "settings": {
+ "title": "AKSRT · Posts",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/posts",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/posts",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/posts",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "load_mode": "ajax",
+ "cat": "1",
+ "zibpay_type": [],
+ "limit_day": 0,
+ "orderby": "",
+ "order": "desc",
+ "style": "list",
+ "mini_opt": [],
+ "count": 12,
+ "paginate": ""
+ },
+ "root_selector": "[data-aksrt-widget=\"posts\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus",
+ "loading",
+ "empty",
+ "error"
+ ]
+ },
+ "tab_posts": {
+ "id_base": "aksrt_widget_tab_posts",
+ "name": "AKSRT 多栏目文章(新)",
+ "group": "content",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-posts.php",
+ "sha256": "20b04007270ecfd265adaaa287eb1a696566385b1f86379079be9664cfaea409"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "style",
+ "mini_opt",
+ "count",
+ "paginate",
+ "tabs"
+ ],
+ "settings": {
+ "title": "AKSRT · Tab posts",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/tab_posts",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/tab_posts",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/tab_posts",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "style": "mini",
+ "mini_opt": [],
+ "count": 6,
+ "paginate": "",
+ "tabs": [
+ {
+ "title": "AKSRT · Tab posts",
+ "cat": "1",
+ "zibpay_type": [],
+ "limit_day": 0,
+ "orderby": "",
+ "order": "desc"
+ },
+ {
+ "title": "AKSRT · Tab posts",
+ "cat": "2",
+ "zibpay_type": [],
+ "limit_day": 0,
+ "orderby": "",
+ "order": "desc"
+ },
+ {
+ "title": "AKSRT · Tab posts",
+ "cat": "3",
+ "zibpay_type": [],
+ "limit_day": 0,
+ "orderby": "",
+ "order": "desc"
+ }
+ ]
+ },
+ "root_selector": "[data-aksrt-widget=\"tab_posts\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus",
+ "alternate-tab",
+ "loading",
+ "empty",
+ "error"
+ ]
+ },
+ "oneline_posts": {
+ "id_base": "aksrt_widget_oneline_posts",
+ "name": "AKSRT 横向滚动文章",
+ "group": "content",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-posts.php",
+ "sha256": "20b04007270ecfd265adaaa287eb1a696566385b1f86379079be9664cfaea409"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "cat",
+ "zibpay_type",
+ "orderby",
+ "order",
+ "style",
+ "count"
+ ],
+ "settings": {
+ "title": "AKSRT · Oneline posts",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/oneline_posts",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/oneline_posts",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/oneline_posts",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "cat": "1",
+ "zibpay_type": [],
+ "orderby": "",
+ "order": "desc",
+ "style": "card",
+ "count": 12
+ },
+ "root_selector": "[data-aksrt-widget=\"oneline_posts\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus",
+ "next-slide",
+ "loading",
+ "empty",
+ "error"
+ ]
+ },
+ "pricing_plans": {
+ "id_base": "aksrt_widget_pricing_plans",
+ "name": "AKSRT 知识产品方案卡片",
+ "group": "knowledge_product",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-produck.php",
+ "sha256": "77194592685b50e5428c6db4d0e2ca2cbc52d0ff4a81200f4e10b56e26159b9d"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "pc_row",
+ "m_row",
+ "plans"
+ ],
+ "settings": {
+ "title": "AKSRT · Pricing plans",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/pricing_plans",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/pricing_plans",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/pricing_plans",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "pc_row": 3,
+ "m_row": 1,
+ "plans": [
+ {
+ "title": "AKSRT · Pricing plans",
+ "price": "¥99",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "features": "AKSRT features 1",
+ "cta_type": "link",
+ "post_id": 0,
+ "vip_level": 1,
+ "link": {
+ "url": "https://fixtures.aksrt.test/pricing_plans",
+ "text": "查看详情",
+ "target": ""
+ },
+ "featured": false
+ },
+ {
+ "title": "AKSRT · Pricing plans",
+ "price": "¥99",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "features": "AKSRT features 2",
+ "cta_type": "link",
+ "post_id": 0,
+ "vip_level": 1,
+ "link": {
+ "url": "https://fixtures.aksrt.test/pricing_plans",
+ "text": "查看详情",
+ "target": ""
+ },
+ "featured": false
+ },
+ {
+ "title": "AKSRT · Pricing plans",
+ "price": "¥99",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "features": "AKSRT features 3",
+ "cta_type": "link",
+ "post_id": 0,
+ "vip_level": 1,
+ "link": {
+ "url": "https://fixtures.aksrt.test/pricing_plans",
+ "text": "查看详情",
+ "target": ""
+ },
+ "featured": false
+ }
+ ]
+ },
+ "root_selector": "[data-aksrt-widget=\"pricing_plans\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "reviews": {
+ "id_base": "aksrt_widget_reviews",
+ "name": "AKSRT 知识产品评价",
+ "group": "knowledge_product",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-produck.php",
+ "sha256": "77194592685b50e5428c6db4d0e2ca2cbc52d0ff4a81200f4e10b56e26159b9d"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "pc_row",
+ "m_row",
+ "items"
+ ],
+ "settings": {
+ "title": "AKSRT · Reviews",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/reviews",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/reviews",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/reviews",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "pc_row": 3,
+ "m_row": 1,
+ "items": [
+ {
+ "title": "AKSRT · Reviews",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "image": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "image_dark": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/reviews",
+ "text": "查看详情",
+ "target": ""
+ },
+ "value": "1280+",
+ "features": "AKSRT features 1",
+ "rating": 5
+ },
+ {
+ "title": "AKSRT · Reviews",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "image": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "image_dark": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/reviews",
+ "text": "查看详情",
+ "target": ""
+ },
+ "value": "2560+",
+ "features": "AKSRT features 2",
+ "rating": 5
+ },
+ {
+ "title": "AKSRT · Reviews",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "image": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "image_dark": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/reviews",
+ "text": "查看详情",
+ "target": ""
+ },
+ "value": "3840+",
+ "features": "AKSRT features 3",
+ "rating": 5
+ }
+ ]
+ },
+ "root_selector": "[data-aksrt-widget=\"reviews\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus",
+ "next-slide"
+ ]
+ },
+ "faq": {
+ "id_base": "aksrt_widget_faq",
+ "name": "AKSRT 知识产品常见问题",
+ "group": "knowledge_product",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-produck.php",
+ "sha256": "77194592685b50e5428c6db4d0e2ca2cbc52d0ff4a81200f4e10b56e26159b9d"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "pc_row",
+ "m_row",
+ "search",
+ "items"
+ ],
+ "settings": {
+ "title": "AKSRT · Faq",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/faq",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/faq",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/faq",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "pc_row": 3,
+ "m_row": 1,
+ "search": true,
+ "items": [
+ {
+ "question": "购买后可以长期学习吗?",
+ "answer": "可以,已购买内容会永久保存在你的学习中心。"
+ },
+ {
+ "question": "购买后可以长期学习吗?",
+ "answer": "可以,已购买内容会永久保存在你的学习中心。"
+ },
+ {
+ "question": "购买后可以长期学习吗?",
+ "answer": "可以,已购买内容会永久保存在你的学习中心。"
+ }
+ ]
+ },
+ "root_selector": "[data-aksrt-widget=\"faq\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus",
+ "expanded"
+ ]
+ },
+ "stats": {
+ "id_base": "aksrt_widget_stats",
+ "name": "AKSRT 知识产品数据展示",
+ "group": "knowledge_product",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-produck.php",
+ "sha256": "77194592685b50e5428c6db4d0e2ca2cbc52d0ff4a81200f4e10b56e26159b9d"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "pc_row",
+ "m_row",
+ "items"
+ ],
+ "settings": {
+ "title": "AKSRT · Stats",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/stats",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/stats",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/stats",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "pc_row": 3,
+ "m_row": 1,
+ "items": [
+ {
+ "title": "AKSRT · Stats",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "image": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "image_dark": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/stats",
+ "text": "查看详情",
+ "target": ""
+ },
+ "value": "1280+",
+ "features": "AKSRT features 1",
+ "rating": 5
+ },
+ {
+ "title": "AKSRT · Stats",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "image": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "image_dark": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/stats",
+ "text": "查看详情",
+ "target": ""
+ },
+ "value": "2560+",
+ "features": "AKSRT features 2",
+ "rating": 5
+ },
+ {
+ "title": "AKSRT · Stats",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "image": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "image_dark": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/stats",
+ "text": "查看详情",
+ "target": ""
+ },
+ "value": "3840+",
+ "features": "AKSRT features 3",
+ "rating": 5
+ }
+ ]
+ },
+ "root_selector": "[data-aksrt-widget=\"stats\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "highlights": {
+ "id_base": "aksrt_widget_highlights",
+ "name": "AKSRT 知识产品亮点卡片",
+ "group": "knowledge_product",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-produck.php",
+ "sha256": "77194592685b50e5428c6db4d0e2ca2cbc52d0ff4a81200f4e10b56e26159b9d"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "pc_row",
+ "m_row",
+ "items"
+ ],
+ "settings": {
+ "title": "AKSRT · Highlights",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/highlights",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/highlights",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/highlights",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "pc_row": 3,
+ "m_row": 1,
+ "items": [
+ {
+ "title": "AKSRT · Highlights",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "image": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "image_dark": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/highlights",
+ "text": "查看详情",
+ "target": ""
+ },
+ "value": "1280+",
+ "features": "AKSRT features 1",
+ "rating": 5
+ },
+ {
+ "title": "AKSRT · Highlights",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "image": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "image_dark": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/highlights",
+ "text": "查看详情",
+ "target": ""
+ },
+ "value": "2560+",
+ "features": "AKSRT features 2",
+ "rating": 5
+ },
+ {
+ "title": "AKSRT · Highlights",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "image": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "image_dark": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/highlights",
+ "text": "查看详情",
+ "target": ""
+ },
+ "value": "3840+",
+ "features": "AKSRT features 3",
+ "rating": 5
+ }
+ ]
+ },
+ "root_selector": "[data-aksrt-widget=\"highlights\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "feature_intro": {
+ "id_base": "aksrt_widget_feature_intro",
+ "name": "AKSRT 知识产品图文亮点",
+ "group": "knowledge_product",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-produck.php",
+ "sha256": "77194592685b50e5428c6db4d0e2ca2cbc52d0ff4a81200f4e10b56e26159b9d"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "pc_row",
+ "m_row",
+ "items"
+ ],
+ "settings": {
+ "title": "AKSRT · Feature intro",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/feature_intro",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/feature_intro",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/feature_intro",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "pc_row": 3,
+ "m_row": 1,
+ "items": [
+ {
+ "title": "AKSRT · Feature intro",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "image": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "image_dark": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/feature_intro",
+ "text": "查看详情",
+ "target": ""
+ },
+ "value": "1280+",
+ "features": "AKSRT features 1",
+ "rating": 5
+ },
+ {
+ "title": "AKSRT · Feature intro",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "image": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "image_dark": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/feature_intro",
+ "text": "查看详情",
+ "target": ""
+ },
+ "value": "2560+",
+ "features": "AKSRT features 2",
+ "rating": 5
+ },
+ {
+ "title": "AKSRT · Feature intro",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "image": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "image_dark": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/feature_intro",
+ "text": "查看详情",
+ "target": ""
+ },
+ "value": "3840+",
+ "features": "AKSRT features 3",
+ "rating": 5
+ }
+ ]
+ },
+ "root_selector": "[data-aksrt-widget=\"feature_intro\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus",
+ "alternate-tab"
+ ]
+ },
+ "tilt_cases": {
+ "id_base": "aksrt_widget_tilt_cases",
+ "name": "AKSRT 知识产品 3D 展示",
+ "group": "knowledge_product",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-produck.php",
+ "sha256": "77194592685b50e5428c6db4d0e2ca2cbc52d0ff4a81200f4e10b56e26159b9d"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "pc_row",
+ "m_row",
+ "items"
+ ],
+ "settings": {
+ "title": "AKSRT · Tilt cases",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/tilt_cases",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/tilt_cases",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/tilt_cases",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "pc_row": 3,
+ "m_row": 1,
+ "items": [
+ {
+ "title": "AKSRT · Tilt cases",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "image": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "image_dark": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/tilt_cases",
+ "text": "查看详情",
+ "target": ""
+ },
+ "value": "1280+",
+ "features": "AKSRT features 1",
+ "rating": 5
+ },
+ {
+ "title": "AKSRT · Tilt cases",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "image": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "image_dark": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/tilt_cases",
+ "text": "查看详情",
+ "target": ""
+ },
+ "value": "2560+",
+ "features": "AKSRT features 2",
+ "rating": 5
+ },
+ {
+ "title": "AKSRT · Tilt cases",
+ "description": "固定内容用于组件 DOM、响应式和视觉差异验收。",
+ "image": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "image_dark": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "link": {
+ "url": "https://fixtures.aksrt.test/tilt_cases",
+ "text": "查看详情",
+ "target": ""
+ },
+ "value": "3840+",
+ "features": "AKSRT features 3",
+ "rating": 5
+ }
+ ]
+ },
+ "root_selector": "[data-aksrt-widget=\"tilt_cases\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "slider": {
+ "id_base": "aksrt_widget_slider",
+ "name": "AKSRT 幻灯片(新)",
+ "group": "slider",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-slider.php",
+ "sha256": "a06a12500cb8ffbf57e496d9979eaed0edd545499ecb9c80d011d3ae49d2244e"
+ },
+ "field_ids": [
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "slides",
+ "option"
+ ],
+ "settings": {
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "slides": [
+ {
+ "background": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "background_video": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "hide": "",
+ "link": {
+ "url": "https://fixtures.aksrt.test/slider",
+ "text": "查看详情",
+ "target": ""
+ },
+ "image_layer": [
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ },
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ },
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ }
+ ],
+ "text": {
+ "title": "AKSRT · Slider",
+ "desc": "AKSRT desc 1",
+ "text_align": "left-bottom",
+ "text_size_pc": 30,
+ "text_size_m": 20,
+ "parallax": 40
+ }
+ },
+ {
+ "background": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "background_video": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "hide": "",
+ "link": {
+ "url": "https://fixtures.aksrt.test/slider",
+ "text": "查看详情",
+ "target": ""
+ },
+ "image_layer": [
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ },
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ },
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ }
+ ],
+ "text": {
+ "title": "AKSRT · Slider",
+ "desc": "AKSRT desc 2",
+ "text_align": "left-bottom",
+ "text_size_pc": 30,
+ "text_size_m": 20,
+ "parallax": 40
+ }
+ },
+ {
+ "background": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "background_video": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "hide": "",
+ "link": {
+ "url": "https://fixtures.aksrt.test/slider",
+ "text": "查看详情",
+ "target": ""
+ },
+ "image_layer": [
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ },
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ },
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ }
+ ],
+ "text": {
+ "title": "AKSRT · Slider",
+ "desc": "AKSRT desc 3",
+ "text_align": "left-bottom",
+ "text_size_pc": 30,
+ "text_size_m": 20,
+ "parallax": 40
+ }
+ }
+ ],
+ "option": {
+ "direction": "horizontal",
+ "loop": true,
+ "button": false,
+ "pagination": false,
+ "effect": "slide",
+ "scale_height": true,
+ "scale": 35,
+ "auto_height": false,
+ "max_height": 500,
+ "min_height": 180,
+ "pc_height": 400,
+ "m_height": 200,
+ "spacebetween": 15,
+ "speed": 0,
+ "autoplay": true,
+ "interval": 4
+ }
+ },
+ "root_selector": "[data-aksrt-widget=\"slider\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus",
+ "next-slide"
+ ]
+ },
+ "slider_media_combo": {
+ "id_base": "aksrt_widget_slider_media_combo",
+ "name": "AKSRT 幻灯片加图文视频卡片",
+ "group": "slider",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-slider.php",
+ "sha256": "a06a12500cb8ffbf57e496d9979eaed0edd545499ecb9c80d011d3ae49d2244e"
+ },
+ "field_ids": [
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "obs_animation",
+ "animation_repeat",
+ "layout_ratio",
+ "slide_scale",
+ "pc_row",
+ "pc_col",
+ "m_layout_type",
+ "m_row",
+ "m_cover_ratio",
+ "slides",
+ "option",
+ "covers",
+ "mask_opacity",
+ "font_size_pc",
+ "font_size_m",
+ "font_bold",
+ "font_color"
+ ],
+ "settings": {
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "obs_animation": "",
+ "animation_repeat": false,
+ "layout_ratio": 60,
+ "slide_scale": 50,
+ "pc_row": "2",
+ "pc_col": "2",
+ "m_layout_type": "vertical",
+ "m_row": "2",
+ "m_cover_ratio": 45,
+ "slides": [
+ {
+ "background": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "background_video": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "hide": "",
+ "link": {
+ "url": "https://fixtures.aksrt.test/slider_media_combo",
+ "text": "查看详情",
+ "target": ""
+ },
+ "image_layer": [
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ },
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ },
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ }
+ ],
+ "text": {
+ "title": "AKSRT · Slider media combo",
+ "desc": "AKSRT desc 1",
+ "text_align": "left-bottom",
+ "text_size_pc": 30,
+ "text_size_m": 20,
+ "parallax": 40
+ }
+ },
+ {
+ "background": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "background_video": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "hide": "",
+ "link": {
+ "url": "https://fixtures.aksrt.test/slider_media_combo",
+ "text": "查看详情",
+ "target": ""
+ },
+ "image_layer": [
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ },
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ },
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ }
+ ],
+ "text": {
+ "title": "AKSRT · Slider media combo",
+ "desc": "AKSRT desc 2",
+ "text_align": "left-bottom",
+ "text_size_pc": 30,
+ "text_size_m": 20,
+ "parallax": 40
+ }
+ },
+ {
+ "background": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "background_video": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "hide": "",
+ "link": {
+ "url": "https://fixtures.aksrt.test/slider_media_combo",
+ "text": "查看详情",
+ "target": ""
+ },
+ "image_layer": [
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ },
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ },
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "free_size": false,
+ "align": "center",
+ "parallax": 0,
+ "parallax_scale": 100,
+ "parallax_opacity": 100
+ }
+ ],
+ "text": {
+ "title": "AKSRT · Slider media combo",
+ "desc": "AKSRT desc 3",
+ "text_align": "left-bottom",
+ "text_size_pc": 30,
+ "text_size_m": 20,
+ "parallax": 40
+ }
+ }
+ ],
+ "option": {
+ "loop": true,
+ "button": true,
+ "pagination": true,
+ "effect": "slide",
+ "spacebetween": 20,
+ "speed": 0,
+ "autoplay": true,
+ "interval": 4
+ },
+ "covers": [
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-01.jpg",
+ "hide": "",
+ "title": "AKSRT · Slider media combo",
+ "link": {
+ "url": "https://fixtures.aksrt.test/slider_media_combo",
+ "text": "查看详情",
+ "target": ""
+ }
+ },
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-02.jpg",
+ "hide": "",
+ "title": "AKSRT · Slider media combo",
+ "link": {
+ "url": "https://fixtures.aksrt.test/slider_media_combo",
+ "text": "查看详情",
+ "target": ""
+ }
+ },
+ {
+ "image": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "video": "https://fixtures.aksrt.test/media/course-cover-03.jpg",
+ "hide": "",
+ "title": "AKSRT · Slider media combo",
+ "link": {
+ "url": "https://fixtures.aksrt.test/slider_media_combo",
+ "text": "查看详情",
+ "target": ""
+ }
+ }
+ ],
+ "mask_opacity": 0,
+ "font_size_pc": 16,
+ "font_size_m": 14,
+ "font_bold": false,
+ "font_color": "#667eea"
+ },
+ "root_selector": "[data-aksrt-widget=\"slider_media_combo\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus",
+ "next-slide"
+ ]
+ },
+ "user_card": {
+ "id_base": "aksrt_widget_user_card",
+ "name": "AKSRT 用户个人信息",
+ "group": "user",
+ "size": "sidebar",
+ "reference": {
+ "file": "inc/widgets/widget-user.php",
+ "sha256": "97a4fde11d0a93af229e499f9b11c8d769b21b6b7500eac9bb94b4dd850f6b24"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "sidebar_affix",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "show_img_bg",
+ "loged_title",
+ "show_button",
+ "button_1",
+ "button_1_class",
+ "button_1_text",
+ "button_2",
+ "button_2_class",
+ "button_2_text"
+ ],
+ "settings": {
+ "title": "AKSRT · User card",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/user_card",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/user_card",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/user_card",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "sidebar_affix": false,
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "show_img_bg": true,
+ "loged_title": "HI!请登录",
+ "show_button": true,
+ "button_1": "post",
+ "button_1_class": "jb-pink",
+ "button_1_text": "发布文章",
+ "button_2": "center",
+ "button_2_class": "jb-blue",
+ "button_2_text": "用户中心"
+ },
+ "root_selector": "[data-aksrt-widget=\"user_card\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus",
+ "guest",
+ "signed-in"
+ ]
+ },
+ "author_card": {
+ "id_base": "aksrt_widget_author_card",
+ "name": "AKSRT 文章作者信息",
+ "group": "user",
+ "size": "sidebar",
+ "reference": {
+ "file": "inc/widgets/widget-user.php",
+ "sha256": "97a4fde11d0a93af229e499f9b11c8d769b21b6b7500eac9bb94b4dd850f6b24"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "sidebar_affix",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "show_img_bg",
+ "show_posts",
+ "post_style",
+ "limit",
+ "orderby",
+ "show_button",
+ "button_1",
+ "button_1_class",
+ "button_1_text",
+ "button_2",
+ "button_2_class",
+ "button_2_text"
+ ],
+ "settings": {
+ "title": "AKSRT · Author card",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/author_card",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/author_card",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/author_card",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "sidebar_affix": false,
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "show_img_bg": true,
+ "show_posts": true,
+ "post_style": "mini",
+ "limit": 6,
+ "orderby": "date",
+ "show_button": true,
+ "button_1": "post",
+ "button_1_class": "jb-pink",
+ "button_1_text": "发布文章",
+ "button_2": "center",
+ "button_2_class": "jb-blue",
+ "button_2_text": "用户中心"
+ },
+ "root_selector": "[data-aksrt-widget=\"author_card\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "user_ranking": {
+ "id_base": "aksrt_widget_user_ranking",
+ "name": "AKSRT 用户排行榜",
+ "group": "user",
+ "size": "sidebar",
+ "reference": {
+ "file": "inc/widgets/widget-user.php",
+ "sha256": "97a4fde11d0a93af229e499f9b11c8d769b21b6b7500eac9bb94b4dd850f6b24"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "sidebar_affix",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "orderby",
+ "number",
+ "show_badge"
+ ],
+ "settings": {
+ "title": "AKSRT · User ranking",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/user_ranking",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/user_ranking",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/user_ranking",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "sidebar_affix": false,
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "orderby": "points",
+ "number": 8,
+ "show_badge": true
+ },
+ "root_selector": "[data-aksrt-widget=\"user_ranking\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ },
+ "user_list": {
+ "id_base": "aksrt_widget_user_list",
+ "name": "AKSRT 用户列表",
+ "group": "user",
+ "size": "wide",
+ "reference": {
+ "file": "inc/widgets/widget-user.php",
+ "sha256": "97a4fde11d0a93af229e499f9b11c8d769b21b6b7500eac9bb94b4dd850f6b24"
+ },
+ "field_ids": [
+ "title",
+ "subtitle",
+ "title_style",
+ "title_highlight",
+ "title_highlight_color",
+ "title_link",
+ "title_link2",
+ "title_link3",
+ "title_link_style",
+ "show_type",
+ "show_id_type",
+ "show_ids",
+ "animation_in",
+ "animation_repeat",
+ "layout_pin_pc",
+ "layout_pin_m",
+ "layout_bg",
+ "number",
+ "include",
+ "exclude",
+ "orderby"
+ ],
+ "settings": {
+ "title": "AKSRT · User list",
+ "subtitle": "固定内容与交互状态视觉验收",
+ "title_style": "",
+ "title_highlight": "AKSRT",
+ "title_highlight_color": "focus-color",
+ "title_link": {
+ "url": "https://fixtures.aksrt.test/user_list",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link2": {
+ "url": "https://fixtures.aksrt.test/user_list",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link3": {
+ "url": "https://fixtures.aksrt.test/user_list",
+ "text": "查看详情",
+ "target": ""
+ },
+ "title_link_style": {
+ "color_1": "jb-blue",
+ "color_2": "jb-yellow",
+ "color_3": "jb-green"
+ },
+ "show_type": "all",
+ "show_id_type": "",
+ "show_ids": "",
+ "animation_in": "",
+ "animation_repeat": false,
+ "layout_pin_pc": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_pin_m": {
+ "top": 0,
+ "right": 0,
+ "bottom": 20,
+ "left": 0
+ },
+ "layout_bg": {
+ "light": {
+ "color": "#ffffff",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ },
+ "dark": {
+ "color": "#1d1e24",
+ "image": "",
+ "position": "center center",
+ "repeat": "no-repeat",
+ "attachment": "scroll",
+ "size": "cover"
+ }
+ },
+ "number": 12,
+ "include": "1",
+ "exclude": "1",
+ "orderby": "registered"
+ },
+ "root_selector": "[data-aksrt-widget=\"user_list\"]",
+ "states": [
+ "default",
+ "hover",
+ "focus"
+ ]
+ }
+ },
+ "screenshot_matrix": {
+ "search:desktop:light": {
+ "widget": "search",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/search/desktop-light.png"
+ },
+ "search:desktop:dark": {
+ "widget": "search",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/search/desktop-dark.png"
+ },
+ "search:tablet:light": {
+ "widget": "search",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/search/tablet-light.png"
+ },
+ "search:tablet:dark": {
+ "widget": "search",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/search/tablet-dark.png"
+ },
+ "search:mobile:light": {
+ "widget": "search",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/search/mobile-light.png"
+ },
+ "search:mobile:dark": {
+ "widget": "search",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/search/mobile-dark.png"
+ },
+ "posts_toc:desktop:light": {
+ "widget": "posts_toc",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/posts_toc/desktop-light.png"
+ },
+ "posts_toc:desktop:dark": {
+ "widget": "posts_toc",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/posts_toc/desktop-dark.png"
+ },
+ "posts_toc:tablet:light": {
+ "widget": "posts_toc",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/posts_toc/tablet-light.png"
+ },
+ "posts_toc:tablet:dark": {
+ "widget": "posts_toc",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/posts_toc/tablet-dark.png"
+ },
+ "posts_toc:mobile:light": {
+ "widget": "posts_toc",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/posts_toc/mobile-light.png"
+ },
+ "posts_toc:mobile:dark": {
+ "widget": "posts_toc",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/posts_toc/mobile-dark.png"
+ },
+ "quote:desktop:light": {
+ "widget": "quote",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/quote/desktop-light.png"
+ },
+ "quote:desktop:dark": {
+ "widget": "quote",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/quote/desktop-dark.png"
+ },
+ "quote:tablet:light": {
+ "widget": "quote",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/quote/tablet-light.png"
+ },
+ "quote:tablet:dark": {
+ "widget": "quote",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/quote/tablet-dark.png"
+ },
+ "quote:mobile:light": {
+ "widget": "quote",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/quote/mobile-light.png"
+ },
+ "quote:mobile:dark": {
+ "widget": "quote",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/quote/mobile-dark.png"
+ },
+ "icon_cards:desktop:light": {
+ "widget": "icon_cards",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/icon_cards/desktop-light.png"
+ },
+ "icon_cards:desktop:dark": {
+ "widget": "icon_cards",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/icon_cards/desktop-dark.png"
+ },
+ "icon_cards:tablet:light": {
+ "widget": "icon_cards",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/icon_cards/tablet-light.png"
+ },
+ "icon_cards:tablet:dark": {
+ "widget": "icon_cards",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/icon_cards/tablet-dark.png"
+ },
+ "icon_cards:mobile:light": {
+ "widget": "icon_cards",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/icon_cards/mobile-light.png"
+ },
+ "icon_cards:mobile:dark": {
+ "widget": "icon_cards",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/icon_cards/mobile-dark.png"
+ },
+ "video:desktop:light": {
+ "widget": "video",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/video/desktop-light.png"
+ },
+ "video:desktop:dark": {
+ "widget": "video",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/video/desktop-dark.png"
+ },
+ "video:tablet:light": {
+ "widget": "video",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/video/tablet-light.png"
+ },
+ "video:tablet:dark": {
+ "widget": "video",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/video/tablet-dark.png"
+ },
+ "video:mobile:light": {
+ "widget": "video",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/video/mobile-light.png"
+ },
+ "video:mobile:dark": {
+ "widget": "video",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/video/mobile-dark.png"
+ },
+ "embed:desktop:light": {
+ "widget": "embed",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/embed/desktop-light.png"
+ },
+ "embed:desktop:dark": {
+ "widget": "embed",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/embed/desktop-dark.png"
+ },
+ "embed:tablet:light": {
+ "widget": "embed",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/embed/tablet-light.png"
+ },
+ "embed:tablet:dark": {
+ "widget": "embed",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/embed/tablet-dark.png"
+ },
+ "embed:mobile:light": {
+ "widget": "embed",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/embed/mobile-light.png"
+ },
+ "embed:mobile:dark": {
+ "widget": "embed",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/embed/mobile-dark.png"
+ },
+ "media_cards:desktop:light": {
+ "widget": "media_cards",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/media_cards/desktop-light.png"
+ },
+ "media_cards:desktop:dark": {
+ "widget": "media_cards",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/media_cards/desktop-dark.png"
+ },
+ "media_cards:tablet:light": {
+ "widget": "media_cards",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/media_cards/tablet-light.png"
+ },
+ "media_cards:tablet:dark": {
+ "widget": "media_cards",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/media_cards/tablet-dark.png"
+ },
+ "media_cards:mobile:light": {
+ "widget": "media_cards",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/media_cards/mobile-light.png"
+ },
+ "media_cards:mobile:dark": {
+ "widget": "media_cards",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/media_cards/mobile-dark.png"
+ },
+ "icon_cover_cards:desktop:light": {
+ "widget": "icon_cover_cards",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/icon_cover_cards/desktop-light.png"
+ },
+ "icon_cover_cards:desktop:dark": {
+ "widget": "icon_cover_cards",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/icon_cover_cards/desktop-dark.png"
+ },
+ "icon_cover_cards:tablet:light": {
+ "widget": "icon_cover_cards",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/icon_cover_cards/tablet-light.png"
+ },
+ "icon_cover_cards:tablet:dark": {
+ "widget": "icon_cover_cards",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/icon_cover_cards/tablet-dark.png"
+ },
+ "icon_cover_cards:mobile:light": {
+ "widget": "icon_cover_cards",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/icon_cover_cards/mobile-light.png"
+ },
+ "icon_cover_cards:mobile:dark": {
+ "widget": "icon_cover_cards",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/icon_cover_cards/mobile-dark.png"
+ },
+ "partners:desktop:light": {
+ "widget": "partners",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/partners/desktop-light.png"
+ },
+ "partners:desktop:dark": {
+ "widget": "partners",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/partners/desktop-dark.png"
+ },
+ "partners:tablet:light": {
+ "widget": "partners",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/partners/tablet-light.png"
+ },
+ "partners:tablet:dark": {
+ "widget": "partners",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/partners/tablet-dark.png"
+ },
+ "partners:mobile:light": {
+ "widget": "partners",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/partners/mobile-light.png"
+ },
+ "partners:mobile:dark": {
+ "widget": "partners",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/partners/mobile-dark.png"
+ },
+ "combo_info:desktop:light": {
+ "widget": "combo_info",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/combo_info/desktop-light.png"
+ },
+ "combo_info:desktop:dark": {
+ "widget": "combo_info",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/combo_info/desktop-dark.png"
+ },
+ "combo_info:tablet:light": {
+ "widget": "combo_info",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/combo_info/tablet-light.png"
+ },
+ "combo_info:tablet:dark": {
+ "widget": "combo_info",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/combo_info/tablet-dark.png"
+ },
+ "combo_info:mobile:light": {
+ "widget": "combo_info",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/combo_info/mobile-light.png"
+ },
+ "combo_info:mobile:dark": {
+ "widget": "combo_info",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/combo_info/mobile-dark.png"
+ },
+ "text_title:desktop:light": {
+ "widget": "text_title",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/text_title/desktop-light.png"
+ },
+ "text_title:desktop:dark": {
+ "widget": "text_title",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/text_title/desktop-dark.png"
+ },
+ "text_title:tablet:light": {
+ "widget": "text_title",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/text_title/tablet-light.png"
+ },
+ "text_title:tablet:dark": {
+ "widget": "text_title",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/text_title/tablet-dark.png"
+ },
+ "text_title:mobile:light": {
+ "widget": "text_title",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/text_title/mobile-light.png"
+ },
+ "text_title:mobile:dark": {
+ "widget": "text_title",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/text_title/mobile-dark.png"
+ },
+ "buttons:desktop:light": {
+ "widget": "buttons",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/buttons/desktop-light.png"
+ },
+ "buttons:desktop:dark": {
+ "widget": "buttons",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/buttons/desktop-dark.png"
+ },
+ "buttons:tablet:light": {
+ "widget": "buttons",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/buttons/tablet-light.png"
+ },
+ "buttons:tablet:dark": {
+ "widget": "buttons",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/buttons/tablet-dark.png"
+ },
+ "buttons:mobile:light": {
+ "widget": "buttons",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/buttons/mobile-light.png"
+ },
+ "buttons:mobile:dark": {
+ "widget": "buttons",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/buttons/mobile-dark.png"
+ },
+ "layout_gap:desktop:light": {
+ "widget": "layout_gap",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/layout_gap/desktop-light.png"
+ },
+ "layout_gap:desktop:dark": {
+ "widget": "layout_gap",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/layout_gap/desktop-dark.png"
+ },
+ "layout_gap:tablet:light": {
+ "widget": "layout_gap",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/layout_gap/tablet-light.png"
+ },
+ "layout_gap:tablet:dark": {
+ "widget": "layout_gap",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/layout_gap/tablet-dark.png"
+ },
+ "layout_gap:mobile:light": {
+ "widget": "layout_gap",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/layout_gap/mobile-light.png"
+ },
+ "layout_gap:mobile:dark": {
+ "widget": "layout_gap",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/layout_gap/mobile-dark.png"
+ },
+ "tag_cloud:desktop:light": {
+ "widget": "tag_cloud",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/tag_cloud/desktop-light.png"
+ },
+ "tag_cloud:desktop:dark": {
+ "widget": "tag_cloud",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/tag_cloud/desktop-dark.png"
+ },
+ "tag_cloud:tablet:light": {
+ "widget": "tag_cloud",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/tag_cloud/tablet-light.png"
+ },
+ "tag_cloud:tablet:dark": {
+ "widget": "tag_cloud",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/tag_cloud/tablet-dark.png"
+ },
+ "tag_cloud:mobile:light": {
+ "widget": "tag_cloud",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/tag_cloud/mobile-light.png"
+ },
+ "tag_cloud:mobile:dark": {
+ "widget": "tag_cloud",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/tag_cloud/mobile-dark.png"
+ },
+ "recent_comments:desktop:light": {
+ "widget": "recent_comments",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/recent_comments/desktop-light.png"
+ },
+ "recent_comments:desktop:dark": {
+ "widget": "recent_comments",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/recent_comments/desktop-dark.png"
+ },
+ "recent_comments:tablet:light": {
+ "widget": "recent_comments",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/recent_comments/tablet-light.png"
+ },
+ "recent_comments:tablet:dark": {
+ "widget": "recent_comments",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/recent_comments/tablet-dark.png"
+ },
+ "recent_comments:mobile:light": {
+ "widget": "recent_comments",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/recent_comments/mobile-light.png"
+ },
+ "recent_comments:mobile:dark": {
+ "widget": "recent_comments",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/recent_comments/mobile-dark.png"
+ },
+ "links:desktop:light": {
+ "widget": "links",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/links/desktop-light.png"
+ },
+ "links:desktop:dark": {
+ "widget": "links",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/links/desktop-dark.png"
+ },
+ "links:tablet:light": {
+ "widget": "links",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/links/tablet-light.png"
+ },
+ "links:tablet:dark": {
+ "widget": "links",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/links/tablet-dark.png"
+ },
+ "links:mobile:light": {
+ "widget": "links",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/links/mobile-light.png"
+ },
+ "links:mobile:dark": {
+ "widget": "links",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/links/mobile-dark.png"
+ },
+ "notice:desktop:light": {
+ "widget": "notice",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/notice/desktop-light.png"
+ },
+ "notice:desktop:dark": {
+ "widget": "notice",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/notice/desktop-dark.png"
+ },
+ "notice:tablet:light": {
+ "widget": "notice",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/notice/tablet-light.png"
+ },
+ "notice:tablet:dark": {
+ "widget": "notice",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/notice/tablet-dark.png"
+ },
+ "notice:mobile:light": {
+ "widget": "notice",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/notice/mobile-light.png"
+ },
+ "notice:mobile:dark": {
+ "widget": "notice",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/notice/mobile-dark.png"
+ },
+ "term_cards:desktop:light": {
+ "widget": "term_cards",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/term_cards/desktop-light.png"
+ },
+ "term_cards:desktop:dark": {
+ "widget": "term_cards",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/term_cards/desktop-dark.png"
+ },
+ "term_cards:tablet:light": {
+ "widget": "term_cards",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/term_cards/tablet-light.png"
+ },
+ "term_cards:tablet:dark": {
+ "widget": "term_cards",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/term_cards/tablet-dark.png"
+ },
+ "term_cards:mobile:light": {
+ "widget": "term_cards",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/term_cards/mobile-light.png"
+ },
+ "term_cards:mobile:dark": {
+ "widget": "term_cards",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/term_cards/mobile-dark.png"
+ },
+ "term_aggregation:desktop:light": {
+ "widget": "term_aggregation",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/term_aggregation/desktop-light.png"
+ },
+ "term_aggregation:desktop:dark": {
+ "widget": "term_aggregation",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/term_aggregation/desktop-dark.png"
+ },
+ "term_aggregation:tablet:light": {
+ "widget": "term_aggregation",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/term_aggregation/tablet-light.png"
+ },
+ "term_aggregation:tablet:dark": {
+ "widget": "term_aggregation",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/term_aggregation/tablet-dark.png"
+ },
+ "term_aggregation:mobile:light": {
+ "widget": "term_aggregation",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/term_aggregation/mobile-light.png"
+ },
+ "term_aggregation:mobile:dark": {
+ "widget": "term_aggregation",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/term_aggregation/mobile-dark.png"
+ },
+ "hot_posts:desktop:light": {
+ "widget": "hot_posts",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/hot_posts/desktop-light.png"
+ },
+ "hot_posts:desktop:dark": {
+ "widget": "hot_posts",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/hot_posts/desktop-dark.png"
+ },
+ "hot_posts:tablet:light": {
+ "widget": "hot_posts",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/hot_posts/tablet-light.png"
+ },
+ "hot_posts:tablet:dark": {
+ "widget": "hot_posts",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/hot_posts/tablet-dark.png"
+ },
+ "hot_posts:mobile:light": {
+ "widget": "hot_posts",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/hot_posts/mobile-light.png"
+ },
+ "hot_posts:mobile:dark": {
+ "widget": "hot_posts",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/hot_posts/mobile-dark.png"
+ },
+ "post_pay:desktop:light": {
+ "widget": "post_pay",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/post_pay/desktop-light.png"
+ },
+ "post_pay:desktop:dark": {
+ "widget": "post_pay",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/post_pay/desktop-dark.png"
+ },
+ "post_pay:tablet:light": {
+ "widget": "post_pay",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/post_pay/tablet-light.png"
+ },
+ "post_pay:tablet:dark": {
+ "widget": "post_pay",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/post_pay/tablet-dark.png"
+ },
+ "post_pay:mobile:light": {
+ "widget": "post_pay",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/post_pay/mobile-light.png"
+ },
+ "post_pay:mobile:dark": {
+ "widget": "post_pay",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/post_pay/mobile-dark.png"
+ },
+ "posts:desktop:light": {
+ "widget": "posts",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/posts/desktop-light.png"
+ },
+ "posts:desktop:dark": {
+ "widget": "posts",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/posts/desktop-dark.png"
+ },
+ "posts:tablet:light": {
+ "widget": "posts",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/posts/tablet-light.png"
+ },
+ "posts:tablet:dark": {
+ "widget": "posts",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/posts/tablet-dark.png"
+ },
+ "posts:mobile:light": {
+ "widget": "posts",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/posts/mobile-light.png"
+ },
+ "posts:mobile:dark": {
+ "widget": "posts",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/posts/mobile-dark.png"
+ },
+ "tab_posts:desktop:light": {
+ "widget": "tab_posts",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/tab_posts/desktop-light.png"
+ },
+ "tab_posts:desktop:dark": {
+ "widget": "tab_posts",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/tab_posts/desktop-dark.png"
+ },
+ "tab_posts:tablet:light": {
+ "widget": "tab_posts",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/tab_posts/tablet-light.png"
+ },
+ "tab_posts:tablet:dark": {
+ "widget": "tab_posts",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/tab_posts/tablet-dark.png"
+ },
+ "tab_posts:mobile:light": {
+ "widget": "tab_posts",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/tab_posts/mobile-light.png"
+ },
+ "tab_posts:mobile:dark": {
+ "widget": "tab_posts",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/tab_posts/mobile-dark.png"
+ },
+ "oneline_posts:desktop:light": {
+ "widget": "oneline_posts",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/oneline_posts/desktop-light.png"
+ },
+ "oneline_posts:desktop:dark": {
+ "widget": "oneline_posts",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/oneline_posts/desktop-dark.png"
+ },
+ "oneline_posts:tablet:light": {
+ "widget": "oneline_posts",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/oneline_posts/tablet-light.png"
+ },
+ "oneline_posts:tablet:dark": {
+ "widget": "oneline_posts",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/oneline_posts/tablet-dark.png"
+ },
+ "oneline_posts:mobile:light": {
+ "widget": "oneline_posts",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/oneline_posts/mobile-light.png"
+ },
+ "oneline_posts:mobile:dark": {
+ "widget": "oneline_posts",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/oneline_posts/mobile-dark.png"
+ },
+ "pricing_plans:desktop:light": {
+ "widget": "pricing_plans",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/pricing_plans/desktop-light.png"
+ },
+ "pricing_plans:desktop:dark": {
+ "widget": "pricing_plans",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/pricing_plans/desktop-dark.png"
+ },
+ "pricing_plans:tablet:light": {
+ "widget": "pricing_plans",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/pricing_plans/tablet-light.png"
+ },
+ "pricing_plans:tablet:dark": {
+ "widget": "pricing_plans",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/pricing_plans/tablet-dark.png"
+ },
+ "pricing_plans:mobile:light": {
+ "widget": "pricing_plans",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/pricing_plans/mobile-light.png"
+ },
+ "pricing_plans:mobile:dark": {
+ "widget": "pricing_plans",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/pricing_plans/mobile-dark.png"
+ },
+ "reviews:desktop:light": {
+ "widget": "reviews",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/reviews/desktop-light.png"
+ },
+ "reviews:desktop:dark": {
+ "widget": "reviews",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/reviews/desktop-dark.png"
+ },
+ "reviews:tablet:light": {
+ "widget": "reviews",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/reviews/tablet-light.png"
+ },
+ "reviews:tablet:dark": {
+ "widget": "reviews",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/reviews/tablet-dark.png"
+ },
+ "reviews:mobile:light": {
+ "widget": "reviews",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/reviews/mobile-light.png"
+ },
+ "reviews:mobile:dark": {
+ "widget": "reviews",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/reviews/mobile-dark.png"
+ },
+ "faq:desktop:light": {
+ "widget": "faq",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/faq/desktop-light.png"
+ },
+ "faq:desktop:dark": {
+ "widget": "faq",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/faq/desktop-dark.png"
+ },
+ "faq:tablet:light": {
+ "widget": "faq",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/faq/tablet-light.png"
+ },
+ "faq:tablet:dark": {
+ "widget": "faq",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/faq/tablet-dark.png"
+ },
+ "faq:mobile:light": {
+ "widget": "faq",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/faq/mobile-light.png"
+ },
+ "faq:mobile:dark": {
+ "widget": "faq",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/faq/mobile-dark.png"
+ },
+ "stats:desktop:light": {
+ "widget": "stats",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/stats/desktop-light.png"
+ },
+ "stats:desktop:dark": {
+ "widget": "stats",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/stats/desktop-dark.png"
+ },
+ "stats:tablet:light": {
+ "widget": "stats",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/stats/tablet-light.png"
+ },
+ "stats:tablet:dark": {
+ "widget": "stats",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/stats/tablet-dark.png"
+ },
+ "stats:mobile:light": {
+ "widget": "stats",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/stats/mobile-light.png"
+ },
+ "stats:mobile:dark": {
+ "widget": "stats",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/stats/mobile-dark.png"
+ },
+ "highlights:desktop:light": {
+ "widget": "highlights",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/highlights/desktop-light.png"
+ },
+ "highlights:desktop:dark": {
+ "widget": "highlights",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/highlights/desktop-dark.png"
+ },
+ "highlights:tablet:light": {
+ "widget": "highlights",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/highlights/tablet-light.png"
+ },
+ "highlights:tablet:dark": {
+ "widget": "highlights",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/highlights/tablet-dark.png"
+ },
+ "highlights:mobile:light": {
+ "widget": "highlights",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/highlights/mobile-light.png"
+ },
+ "highlights:mobile:dark": {
+ "widget": "highlights",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/highlights/mobile-dark.png"
+ },
+ "feature_intro:desktop:light": {
+ "widget": "feature_intro",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/feature_intro/desktop-light.png"
+ },
+ "feature_intro:desktop:dark": {
+ "widget": "feature_intro",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/feature_intro/desktop-dark.png"
+ },
+ "feature_intro:tablet:light": {
+ "widget": "feature_intro",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/feature_intro/tablet-light.png"
+ },
+ "feature_intro:tablet:dark": {
+ "widget": "feature_intro",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/feature_intro/tablet-dark.png"
+ },
+ "feature_intro:mobile:light": {
+ "widget": "feature_intro",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/feature_intro/mobile-light.png"
+ },
+ "feature_intro:mobile:dark": {
+ "widget": "feature_intro",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/feature_intro/mobile-dark.png"
+ },
+ "tilt_cases:desktop:light": {
+ "widget": "tilt_cases",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/tilt_cases/desktop-light.png"
+ },
+ "tilt_cases:desktop:dark": {
+ "widget": "tilt_cases",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/tilt_cases/desktop-dark.png"
+ },
+ "tilt_cases:tablet:light": {
+ "widget": "tilt_cases",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/tilt_cases/tablet-light.png"
+ },
+ "tilt_cases:tablet:dark": {
+ "widget": "tilt_cases",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/tilt_cases/tablet-dark.png"
+ },
+ "tilt_cases:mobile:light": {
+ "widget": "tilt_cases",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/tilt_cases/mobile-light.png"
+ },
+ "tilt_cases:mobile:dark": {
+ "widget": "tilt_cases",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/tilt_cases/mobile-dark.png"
+ },
+ "slider:desktop:light": {
+ "widget": "slider",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/slider/desktop-light.png"
+ },
+ "slider:desktop:dark": {
+ "widget": "slider",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/slider/desktop-dark.png"
+ },
+ "slider:tablet:light": {
+ "widget": "slider",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/slider/tablet-light.png"
+ },
+ "slider:tablet:dark": {
+ "widget": "slider",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/slider/tablet-dark.png"
+ },
+ "slider:mobile:light": {
+ "widget": "slider",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/slider/mobile-light.png"
+ },
+ "slider:mobile:dark": {
+ "widget": "slider",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/slider/mobile-dark.png"
+ },
+ "slider_media_combo:desktop:light": {
+ "widget": "slider_media_combo",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/slider_media_combo/desktop-light.png"
+ },
+ "slider_media_combo:desktop:dark": {
+ "widget": "slider_media_combo",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/slider_media_combo/desktop-dark.png"
+ },
+ "slider_media_combo:tablet:light": {
+ "widget": "slider_media_combo",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/slider_media_combo/tablet-light.png"
+ },
+ "slider_media_combo:tablet:dark": {
+ "widget": "slider_media_combo",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/slider_media_combo/tablet-dark.png"
+ },
+ "slider_media_combo:mobile:light": {
+ "widget": "slider_media_combo",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/slider_media_combo/mobile-light.png"
+ },
+ "slider_media_combo:mobile:dark": {
+ "widget": "slider_media_combo",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/slider_media_combo/mobile-dark.png"
+ },
+ "user_card:desktop:light": {
+ "widget": "user_card",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/user_card/desktop-light.png"
+ },
+ "user_card:desktop:dark": {
+ "widget": "user_card",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/user_card/desktop-dark.png"
+ },
+ "user_card:tablet:light": {
+ "widget": "user_card",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/user_card/tablet-light.png"
+ },
+ "user_card:tablet:dark": {
+ "widget": "user_card",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/user_card/tablet-dark.png"
+ },
+ "user_card:mobile:light": {
+ "widget": "user_card",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/user_card/mobile-light.png"
+ },
+ "user_card:mobile:dark": {
+ "widget": "user_card",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/user_card/mobile-dark.png"
+ },
+ "author_card:desktop:light": {
+ "widget": "author_card",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/author_card/desktop-light.png"
+ },
+ "author_card:desktop:dark": {
+ "widget": "author_card",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/author_card/desktop-dark.png"
+ },
+ "author_card:tablet:light": {
+ "widget": "author_card",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/author_card/tablet-light.png"
+ },
+ "author_card:tablet:dark": {
+ "widget": "author_card",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/author_card/tablet-dark.png"
+ },
+ "author_card:mobile:light": {
+ "widget": "author_card",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/author_card/mobile-light.png"
+ },
+ "author_card:mobile:dark": {
+ "widget": "author_card",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/author_card/mobile-dark.png"
+ },
+ "user_ranking:desktop:light": {
+ "widget": "user_ranking",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/user_ranking/desktop-light.png"
+ },
+ "user_ranking:desktop:dark": {
+ "widget": "user_ranking",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/user_ranking/desktop-dark.png"
+ },
+ "user_ranking:tablet:light": {
+ "widget": "user_ranking",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/user_ranking/tablet-light.png"
+ },
+ "user_ranking:tablet:dark": {
+ "widget": "user_ranking",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/user_ranking/tablet-dark.png"
+ },
+ "user_ranking:mobile:light": {
+ "widget": "user_ranking",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/user_ranking/mobile-light.png"
+ },
+ "user_ranking:mobile:dark": {
+ "widget": "user_ranking",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/user_ranking/mobile-dark.png"
+ },
+ "user_list:desktop:light": {
+ "widget": "user_list",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "light",
+ "path": "tests/visual-results/user_list/desktop-light.png"
+ },
+ "user_list:desktop:dark": {
+ "widget": "user_list",
+ "viewport": {
+ "name": "desktop",
+ "width": 1440,
+ "height": 1100
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/user_list/desktop-dark.png"
+ },
+ "user_list:tablet:light": {
+ "widget": "user_list",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "light",
+ "path": "tests/visual-results/user_list/tablet-light.png"
+ },
+ "user_list:tablet:dark": {
+ "widget": "user_list",
+ "viewport": {
+ "name": "tablet",
+ "width": 1024,
+ "height": 1000
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/user_list/tablet-dark.png"
+ },
+ "user_list:mobile:light": {
+ "widget": "user_list",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "light",
+ "path": "tests/visual-results/user_list/mobile-light.png"
+ },
+ "user_list:mobile:dark": {
+ "widget": "user_list",
+ "viewport": {
+ "name": "mobile",
+ "width": 390,
+ "height": 844
+ },
+ "mode": "dark",
+ "path": "tests/visual-results/user_list/mobile-dark.png"
+ }
+ }
+}
diff --git a/tests/visual-results/README.md b/tests/visual-results/README.md
new file mode 100644
index 00000000..5f506020
--- /dev/null
+++ b/tests/visual-results/README.md
@@ -0,0 +1,11 @@
+# Widget visual results
+
+This directory is intentionally empty until validation runs against the user-provided WordPress site.
+
+The browser run must create the screenshot paths declared by `tests/fixtures/widget-golden-v1.json` and a `manifest.json` using schema `aksrt.widget-visual-results.v1`. Validate completed results with:
+
+```text
+php tools/validate-widget-golden.php --require-results
+```
+
+The validator requires all 222 viewport/theme screenshots, every declared interaction state, zero console errors, zero unexpected network failures, zero critical/serious accessibility findings, reduced-motion verification, a maximum 2 px component-boundary delta, and a maximum 1.5% pixel difference.
diff --git a/tests/visual-results/static-a11y-report.md b/tests/visual-results/static-a11y-report.md
new file mode 100644
index 00000000..1dd72a0e
--- /dev/null
+++ b/tests/visual-results/static-a11y-report.md
@@ -0,0 +1,28 @@
+# AKSRT widget static accessibility audit
+
+Scope: `src/WidgetSystem/Renderers/`, `assets/widgets/frontend.js`, and `assets/widgets/frontend.css`.
+
+The source audit was repeated after remediation. Browser, screen-reader, Lighthouse/axe, console, and network validation remain pending until a target WordPress URL and browser MCP are available.
+
+## Critical (WCAG A)
+
+No static critical issue was found.
+
+## Serious (WCAG AA)
+
+No unresolved static serious issue remains.
+
+## Resolved source findings
+
+- **WCAG 2.1.1 Keyboard:** article and feature tabs now implement Arrow Left/Right, Home/End, focus movement, roving `tabindex`, and stable tab/panel associations.
+- **WCAG 2.4.7 Focus Visible:** all widget links, buttons, inputs, selects, textareas, and explicit tabindex targets receive high-contrast light, dark, and forced-colors focus rings.
+- **WCAG 2.2.2 Pause, Stop, Hide:** autoplay carousels pause on keyboard focus and expose a labeled, persistent pause/resume button; reduced-motion mode continues to disable autoplay.
+- **WCAG 4.1.3 Status Messages:** AJAX containers expose `aria-live` and `aria-busy`, loading skeletons use `role="status"`, and video failure uses an assertive alert.
+
+These contracts are enforced by `tests/widget-system/a11y-contract.test.cjs`.
+
+## Browser verification still required
+
+- Confirm Swiper-generated pagination bullets, disabled navigation states, and pause/resume behavior with the bundled runtime.
+- Verify 200% zoom, high-contrast mode, dark-mode contrast, focus order, and focus retention after AJAX replacement.
+- Run Lighthouse or axe and perform keyboard-only checks at 1440, 1024, and 390 px in light and dark modes.
diff --git a/tests/widget-system/a11y-contract.test.cjs b/tests/widget-system/a11y-contract.test.cjs
new file mode 100644
index 00000000..c86e3f01
--- /dev/null
+++ b/tests/widget-system/a11y-contract.test.cjs
@@ -0,0 +1,33 @@
+'use strict';
+
+const assert = require('node:assert/strict');
+const fs = require('node:fs');
+const path = require('node:path');
+
+const root = path.resolve(__dirname, '../..');
+const read = (file) => fs.readFileSync(path.join(root, file), 'utf8');
+const js = read('assets/widgets/frontend.js');
+const css = read('assets/widgets/frontend.css');
+const content = read('src/WidgetSystem/Renderers/ContentRenderer.php');
+const knowledge = read('src/WidgetSystem/Renderers/KnowledgeProductRenderer.php');
+const general = read('src/WidgetSystem/Renderers/GeneralRenderer.php');
+
+for (const key of ['ArrowRight', 'ArrowLeft', 'Home', 'End']) assert.match(js, new RegExp(key));
+assert.match(js, /setAttribute\('tabindex', tab === button \? '0' : '-1'\)/);
+assert.match(js, /setAttribute\('aria-labelledby', button\.id\)/);
+assert.match(content, /role="tab"[^;]+aria-controls=/);
+assert.match(content, /role="tabpanel"[^;]+aria-labelledby=/);
+assert.match(knowledge, /role="tab"[^;]+aria-controls=/);
+assert.match(knowledge, /role="tabpanel"[^;]+aria-labelledby=/);
+
+assert.match(css, /:focus-visible/);
+assert.match(css, /forced-colors: active/);
+assert.match(content, /aria-live="polite" aria-busy="true"/);
+assert.match(content, /role="status"/);
+assert.match(js, /setAttribute\('aria-busy', 'true'\)/);
+assert.match(js, /setAttribute\('aria-busy', 'false'\)/);
+assert.match(general, /role="alert" aria-live="assertive"/);
+assert.match(css, /prefers-reduced-motion: reduce/);
+assert.match(js, /prefers-reduced-motion: reduce/);
+
+console.log('Widget accessibility contract tests passed: keyboard tabs, focus, live states and reduced motion.');
diff --git a/tests/widget-system/admin-core.test.cjs b/tests/widget-system/admin-core.test.cjs
new file mode 100644
index 00000000..ee62c11e
--- /dev/null
+++ b/tests/widget-system/admin-core.test.cjs
@@ -0,0 +1,20 @@
+'use strict';
+
+const assert = require('node:assert/strict');
+const core = require('../../assets/widgets/admin-core.js');
+
+assert.deepEqual(core.parseDependency('["mode","==","cards"]'), ['mode', '==', 'cards']);
+assert.deepEqual(core.parseDependency('{broken'), []);
+assert.equal(core.dependencyVisible(['mode', '==', 'cards'], 'cards'), true);
+assert.equal(core.dependencyVisible(['mode', '==', 'cards'], 'list'), false);
+assert.equal(core.dependencyVisible(['mode', '!=', 'cards'], 'list'), true);
+assert.equal(core.dependencyVisible(['mode', '!=', 'cards'], 'cards'), false);
+assert.equal(core.dependencyVisible([], 'anything'), true);
+
+assert.equal(
+ core.replaceRepeaterIndexes('widget-aksrt_widget_slider[4][slides][__index_ab12cd34__][layers][9][title]', [2, 1]),
+ 'widget-aksrt_widget_slider[4][slides][2][layers][1][title]'
+);
+assert.equal(core.replaceRepeaterIndexes('plain[name]', [1]), 'plain[name]');
+
+console.log('Widget admin core tests passed: dependency visibility and nested repeater indexing.');
diff --git a/tests/widget-system/comment-hard-cut-contract.test.cjs b/tests/widget-system/comment-hard-cut-contract.test.cjs
new file mode 100644
index 00000000..dd13a345
--- /dev/null
+++ b/tests/widget-system/comment-hard-cut-contract.test.cjs
@@ -0,0 +1,189 @@
+'use strict';
+
+const assert = require('node:assert/strict');
+const fs = require('node:fs');
+const path = require('node:path');
+const test = require('node:test');
+
+const root = path.resolve(__dirname, '..', '..');
+const read = (file) => fs.readFileSync(path.join(root, file), 'utf8');
+const exists = (file) => fs.existsSync(path.join(root, file));
+
+test('comment area styles are fully owned (hard cut from vendor main.css)', () => {
+ const layout = read('assets/css/frontend/comments/layout.css');
+ const mobile = read('assets/css/frontend/comments/mobile-item.css');
+
+ // 1:1 移植的关键布局选择器必须存在于自有文件。
+ const layoutSelectors = [
+ '#comments .comment-box .comments-closed',
+ '#comments #postcomments .comt-ctrl .but',
+ '#comment {',
+ '.comment-signarea {',
+ '#postcomments .comment-footer {',
+ '#postcomments .avatar-img {',
+ '#postcomments .children {',
+ '#postcomments .comt-meta > span:not(:empty)',
+ '#postcomments .comment-approve-link.approve {',
+ '#postcomments .comment-approve-link.unapprove {',
+ '#postcomments .comt-meta > span .comment-trash-link {',
+ '.comment-content {',
+ '#postcomments .comment-content img {',
+ '#comments .virtual-input {',
+ '.commentlist .no-more {',
+ ];
+ for (const selector of layoutSelectors) {
+ assert.ok(layout.includes(selector), `layout.css must contain ${selector}`);
+ }
+ // 桌面隐藏必须带 #comments 前缀(id 特异性),任何后加载的
+ // .flex{display:flex} 单类工具规则都无法在宽屏把假输入条顶出来。
+ assert.equal(layout.includes('\n.virtual-input {'), false, 'desktop hide must be id-scoped, not bare .virtual-input');
+
+ // 移动端弹层 / 虚拟输入 / 640px 覆盖。
+ const mobileSelectors = [
+ '@media (max-width: 767px)',
+ '@media (max-width: 640px)',
+ '#comments .virtual-input {',
+ '.drop-fixed-sm .dropdown-menu,',
+ '.mobile-fixed {',
+ '#respond.mobile-fixed {',
+ '.drop-fixed-sm .dropdown-menu::before {',
+ '#comments .comt-box {',
+ '#postcomments .commentlist > .comment > .list-inline .comment-footer {',
+ ];
+ for (const selector of mobileSelectors) {
+ assert.ok(mobile.includes(selector), `mobile-item.css must contain ${selector}`);
+ }
+
+ // 自有文件不得包含表情/快捷回复样式。
+ for (const [file, source] of [['layout.css', layout], ['mobile-item.css', mobile]]) {
+ for (const token of ['smilie', 'dropdown-quick-often', 'quick-reply-item', 'quick-reply-action']) {
+ assert.equal(source.includes(token), false, `${file} must not contain ${token}`);
+ }
+ }
+
+ // 构建产物 comments.css 聚合了自有规则。
+ const built = read('assets/css/build/comments.css');
+ for (const selector of ['#postcomments .comt-meta > span:not(:empty)', '.mobile-fixed {', '#comments .virtual-input {', '#comments .comt-title {']) {
+ assert.ok(built.includes(selector), `build/comments.css must contain ${selector}`);
+ }
+});
+
+test('vendor main.css no longer carries comment-area rules (no dual path)', () => {
+ for (const file of ['assets/css/main.css', 'assets/css/main.min.css']) {
+ const source = read(file);
+ for (const token of [
+ '#postcomments',
+ '.commentlist',
+ '.comt-',
+ '.comment-signarea',
+ '.comment-filter',
+ '.mobile-fixed',
+ '.drop-fixed-sm',
+ '#respond',
+ '#comments',
+ ]) {
+ assert.equal(source.includes(token), false, `${file} must not contain ${token}`);
+ }
+ // 小部件与共享规则仍留在全站表。
+ assert.ok(source.includes('.comment-widget-item'), `${file} must keep .comment-widget-item`);
+ assert.ok(source.includes('.comment-mini-lists'), `${file} must keep .comment-mini-lists`);
+ assert.ok(source.includes('.content-after-box'), `${file} must keep .content-after-box`);
+ assert.ok(source.includes('.theme-pagination.pagenav'), `${file} must keep .theme-pagination.pagenav`);
+ }
+});
+
+test('quick reply is removed across the owned comment stack', () => {
+ const files = [
+ 'assets/admin/src/schema/sections/post-list/comment.js',
+ 'assets/css/main.css',
+ 'assets/css/build/comments.css',
+ 'assets/js/comment-tools.js',
+ 'inc/helpers/aksrt-comments.php',
+ 'inc/helpers/comments/form-parts.php',
+ 'src/Admin/Schema/SchemaPostList.php',
+ 'src/Core/ScriptsPart1c.php',
+ 'src/Settings/PostDisplay.php',
+ ];
+ const tokens = [
+ 'comment_quick_s',
+ 'comment_quick_often',
+ 'quick_phrases',
+ 'parse_comment_quick_phrases',
+ 'quick-reply-item',
+ 'dropdown-quick-often',
+ 'input-quick',
+ 'commentQuickPhrases',
+ '快捷回复',
+ ];
+ for (const file of files) {
+ const source = read(file);
+ for (const token of tokens) {
+ assert.equal(source.includes(token), false, `${file} must not contain ${token}`);
+ }
+ }
+});
+
+test('dead vendor comment archives stay deleted', () => {
+ for (const file of [
+ 'assets/js/runtime/comment.js',
+ 'assets/js/runtime/comment.min.js',
+ 'assets/js/runtime/input-expand.js',
+ 'assets/js/runtime/input-expand.min.js',
+ ]) {
+ assert.equal(exists(file), false, `${file} must not exist`);
+ }
+ const loader = read('assets/js/runtime/loader.js');
+ assert.doesNotMatch(loader, /['"](?:comment|input-expand)['"]\s*:/, 'legacy comment modules must have no loader mapping');
+ assert.doesNotMatch(read('assets/js/runtime/main.js'), /stubVendorCommentModule|unbindVendorAjaxLoop/);
+});
+
+test('every comment-rendering singular loads the owned build bundle', () => {
+ // 旧的静态聚合文件已删除:它缺 layout.css 且 @import 无版本号,
+ // 曾导致页面/资源页手机端 .mobile-fixed 抽屉规则缺失、表单直接内联显示。
+ assert.equal(exists('assets/css/frontend/comments.css'), false, 'stale frontend/comments.css aggregator must not exist');
+
+ const part1b = read('src/Core/ScriptsPart1b.php');
+ // 统一入口:任何渲染评论区的 singular 都加载 build 聚合。
+ assert.ok(
+ part1b.includes('is_singular() && !empty($singular_assets[\'needs_comments\'])'),
+ 'ScriptsPart1b must enqueue the comments bundle for every comment-rendering singular'
+ );
+ assert.ok(part1b.includes('assets/css/build/'), 'comments enqueue must point at the build bundle');
+ // 旧的两处按需入口必须移除(否则资源页/页面回到缺规则的聚合文件)。
+ assert.equal(part1b.includes("$enqueue_module('comments')"), false, 'stale aggregator enqueue must be gone');
+});
+
+test('comment markup keeps the 1:1 legacy DOM contract', () => {
+ const item = read('inc/helpers/comments/item.php');
+ // 点赞按钮(legacy: zib_get_comment_like — svg + text + count)。
+ assert.ok(item.includes(""), 'like button must render before ');
+ assert.ok(item.includes('aksrt_get_comment_icon(\'like\''), 'like button must use the sprite icon');
+ assert.ok(item.includes('aksrt_get_comment_icon(\'topping\')'), 'topping badge must use the sprite icon');
+ assert.ok(item.includes('aksrt_get_comment_icon(\'approve\''), 'approve action must use the sprite icon');
+ assert.ok(item.includes('aksrt_get_comment_icon(\'menu_2\')'), 'action dropdown must use the sprite icon');
+ assert.ok(item.includes('data-toggle="tooltip"'), 'time/reply tooltip parity');
+ assert.equal(item.includes('fa fa-thumbs-up'), false, 'legacy fa like icon must be gone');
+
+ const comments = read('inc/helpers/aksrt-comments.php');
+ assert.ok(comments.includes('post_password_required() || !comments_open()'), 'closed comments must render nothing');
+ assert.ok(comments.includes('user_url_enabled'), 'guest url field toggle must be wired');
+ assert.ok(comments.includes("name=\"url\""), 'guest url input must render');
+ assert.ok(comments.includes("aksrt_get_comment_icon('signup', 'icon mr10')"), 'signarea signup must use the sprite icon');
+ assert.ok(comments.includes('aksrt_render_vip_badge'), 'comt-title must render the vip badge (legacy: zibpay_get_vip_icon)');
+ assert.equal(comments.includes('aksrt_render_user_identity_chips'), false, 'identity chips must not crowd the narrow comt-title');
+
+ const formParts = read('inc/helpers/comments/form-parts.php');
+ assert.ok(formParts.includes("case 'link':"), 'link dropdown case must exist');
+ assert.equal(formParts.includes("case 'quick':"), false, 'quick case must be gone');
+ assert.equal(formParts.includes('fa-bolt'), false, 'quick button icon must be gone');
+
+ const icons = read('inc/helpers/comments/icons.php');
+ assert.ok(icons.includes('function aksrt_get_comment_icon'), 'sprite icon helper must exist');
+ const bootstrap = read('inc/bootstrap.php');
+ assert.ok(bootstrap.includes("comments/icons.php"), 'bootstrap must load the icon helper');
+
+ // 设置契约:link / user_url 开关进入显示设置。
+ const settings = read('src/Settings/PostDisplay.php');
+ assert.ok(settings.includes("'link' => !empty($settings['comment_link'])"), 'toolbar link toggle');
+ assert.ok(settings.includes("'user_url' => !empty($settings['comment_user_url_s'])"), 'user url toggle');
+});
diff --git a/tests/widget-system/download-config-contract.test.cjs b/tests/widget-system/download-config-contract.test.cjs
new file mode 100644
index 00000000..a7feb105
--- /dev/null
+++ b/tests/widget-system/download-config-contract.test.cjs
@@ -0,0 +1,173 @@
+'use strict';
+
+const assert = require('node:assert/strict');
+const fs = require('node:fs');
+const path = require('node:path');
+const test = require('node:test');
+
+const root = path.resolve(__dirname, '..', '..');
+const read = (file) => fs.readFileSync(path.join(root, file), 'utf8');
+
+test('download settings section exists on both schema sides with matching defaults', () => {
+ const php = read('src/Admin/Schema/SchemaPermissions.php');
+ const vue = read('assets/admin/src/schema/sections/permissions/index.js');
+
+ // PHP side is the authoritative contract.
+ assert.match(php, /'download' => \[/);
+ assert.match(php, /'key'\s+=> 'download'/);
+ assert.match(php, /'option_key' => 'aksrt_download_config'/);
+
+ // Field parity: same four keys with the same defaults on both ends.
+ const fields = [
+ ['enabled', 'true', 'enabled: true'],
+ ['url_alias', "'download'", "url_alias: 'download'"],
+ ['default_max_uses', '1', 'default_max_uses: 1'],
+ ['ttl_minutes', '10', 'ttl_minutes: 10'],
+ ];
+ for (const [key, phpDefault, vueDefault] of fields) {
+ const phpField = new RegExp(`'key' => '${key}'[^\\]]*'default' => ${phpDefault}`);
+ assert.match(php, phpField, `PHP default mismatch for ${key}`);
+ assert.match(vue, new RegExp(`${vueDefault}`), `Vue default mismatch for ${key}`);
+ }
+
+ // The link rules depend on the master switch on both ends.
+ assert.match(php, /'title' => '下载总开关'/);
+ assert.match(php, /'dependsOn' => \['key' => 'enabled', 'value' => true\]/);
+ assert.match(vue, /dependsOn: \{ key: 'enabled', value: true \}/);
+
+ // Vue mirrors labels so admins see the same wording as validation errors.
+ assert.match(vue, /download: \{/);
+ assert.match(vue, /下载链接 URL 别名/);
+ assert.match(vue, /下载链接默认使用次数/);
+ assert.match(vue, /下载链接默认有效期限(分钟)/);
+});
+
+test('the download settings page is registered under the permissions menu', () => {
+ const menu = read('assets/admin/src/constants/sections/permissions.js');
+ assert.match(menu, /schemaPage\(\{\s*key: 'permissions-download'/);
+ assert.match(menu, /route: '\/permissions\/download'/);
+ assert.match(menu, /canonicalDomain: 'permissions',\s*section: 'download',/);
+
+ const settings = read('src/Settings/Settings.php');
+ assert.match(settings, /'aksrt_download_config'/);
+});
+
+test('invalid url aliases are rejected server-side with admin-facing messages', () => {
+ const provider = read('src/Admin/SchemaProvider.php');
+ assert.match(provider, /\$domain === 'permissions' && \$section === 'download'/);
+ assert.match(provider, /URL 别名不能为空/);
+ assert.match(provider, /\/\^\[A-Za-z0-9_-\]\+\$\//);
+ assert.match(provider, /禁止中文、空格和 \/ \\\\ \? # & 等特殊符号/);
+ assert.match(provider, /reserved_download_aliases/);
+ assert.match(provider, /'wp-json', 'wp-admin', 'wp-content', 'wp-includes'/);
+});
+
+test('Download.php derives endpoint, ttl and max uses from configuration', () => {
+ const dl = read('src/Content/Download.php');
+
+ // Dead hard-coded values are gone.
+ assert.doesNotMatch(dl, /const ENDPOINT/);
+ assert.doesNotMatch(dl, /const TOKEN_TTL/);
+ assert.doesNotMatch(dl, /aksrt-dl/);
+
+ // Rewrite regex and URL building share the configured alias.
+ assert.match(dl, /preg_quote\(\$this->config\(\)\['endpoint'\], '\/'\)/);
+ assert.match(dl, /home_url\('\/' \. \$config\['endpoint'\] \. '\/' \. \$token\)/);
+ assert.match(dl, /add_action\('init', \[\$this, 'maybe_flush_rewrite'\], 99\)/);
+ assert.match(dl, /flush_rewrite_rules\(false\)/);
+ assert.match(dl, /aksrt_dl_rewrite_version/);
+
+ // TTL and per-token max uses come from the settings section.
+ assert.match(dl, /'expires_in'\s+=> \$config\['ttl'\]/);
+ assert.match(dl, /'max_uses'\s+=> \(int\) \$config\['max_uses'\]/);
+});
+
+test('usage is counted only after full delivery, never for probes', () => {
+ const dl = read('src/Content/Download.php');
+
+ // Probe detection covers HEAD requests and speculative prefetches, which
+ // validate availability but consume nothing.
+ assert.match(dl, /private function is_probe_request\(\): bool/);
+ assert.match(dl, /REQUEST_METHOD.*=== 'HEAD'/);
+ assert.match(dl, /HTTP_SEC_PURPOSE/);
+ assert.match(dl, /'prefetch'/);
+ assert.match(dl, /!\$is_probe\) \{\s*\$this->consume_token/);
+
+ // Local streaming splits headers from body and aborts stop consumption.
+ assert.match(dl, /private function send_download_headers\(string \$path\): void/);
+ assert.match(dl, /private function stream_body\(string \$path\): bool/);
+ assert.match(dl, /if \(connection_aborted\(\)\) \{/);
+ assert.match(dl, /return !connection_aborted\(\);/);
+
+ // Atomic cap so concurrent finishes can not overshoot max_uses.
+ assert.match(dl, /SET used_count = used_count \+ 1 WHERE token = %s AND used_count < max_uses/);
+
+ // Expired / exhausted links stay a dead end instead of re-issuing silently.
+ assert.match(dl, /status_header\(410\)/);
+ assert.match(dl, /请回到资源页重新获取/);
+ assert.doesNotMatch(dl, /fail_410\(\);\s*issue_token/);
+});
+
+test('expired links render a themed flat 410 page that follows the theme color', () => {
+ const dl = read('src/Content/Download.php');
+
+ // Full theme chrome instead of a bare wp_die page.
+ assert.match(dl, /private function render_expired_page\(\): void/);
+ assert.match(dl, /get_header\(\)/);
+ assert.match(dl, /get_footer\(\)/);
+
+ // wp_die remains only as the safety net when output already started.
+ assert.match(dl, /headers_sent\(\)/);
+
+ // Flat hero keyed to the runtime theme variables (light + html.dark).
+ assert.match(dl, /var\(--color-primary-soft/);
+ assert.match(dl, /var\(--color-primary/);
+ assert.match(dl, /var\(--key-color/);
+ assert.match(dl, /var\(--muted-4-color/);
+
+ // Theme button system and FA5 icon form only (never "fa fa-").
+ assert.match(dl, /class="btn-primary"/);
+ assert.match(dl, /class="btn-outline"/);
+ assert.match(dl, /fa fas fa-hourglass-end/);
+ assert.doesNotMatch(dl, /\bfa fa-/);
+
+ // The 410 page is a utility rewrite; the header component must never match
+ // a page type for it (custom rewrites retain the is_home flag).
+ const slider = read('inc/helpers/homepage/header-components.php');
+ assert.match(slider, /class_exists\('\\AKSRT\\Content\\Download'\)/);
+ assert.match(slider, /get_query_var\(\\AKSRT\\Content\\Download::QUERY_VAR\)/);
+});
+
+test('token generation retries on primary-key collisions', () => {
+ const dl = read('src/Content/Download.php');
+ assert.match(dl, /PRIMARY KEY\(token\) already guarantees uniqueness/);
+ assert.match(dl, /for \(\$attempt = 0; \$attempt < 3; \$attempt\+\+\)/);
+});
+
+test('master switch off puts the token system to sleep and renders direct links', () => {
+ const dl = read('src/Content/Download.php');
+ const box = read('templates/parts/resource-download-box.php');
+ const pay = read('inc/helpers/aksrt-pay.php');
+
+ // The switch is a public runtime check; missing key means enabled.
+ assert.match(dl, /public function is_enabled\(\): bool/);
+ assert.match(dl, /!isset\(\$cfg\['enabled'\]\) \|\| !empty\(\$cfg\['enabled'\]\)/);
+
+ // Rewrite, REST routes and token serving all bail out when disabled.
+ assert.match(dl, /if \(!\$this->is_enabled\(\)\) \{\s*return;\s*\}/);
+ assert.match(dl, /Master switch off: the token system is retired/);
+
+ // The unused policy endpoint stays removed.
+ assert.doesNotMatch(dl, /download\/policy/);
+ assert.doesNotMatch(dl, /rest_policy/);
+
+ // Direct mode renders anchors to the raw source URL instead of token buttons.
+ assert.match(box, /\$direct_download = class_exists\('\\AKSRT\\Content\\Download'\)/);
+ assert.match(box, /elseif \(\$direct_download\) \{/);
+ assert.match(box, /href="<\?php echo esc_url\(\$btn_href\); \?>/);
+ assert.match(box, /data-clipboard-text="<\?php echo esc_attr\(\$extract_code\); \?>/);
+ assert.match(pay, /if \(\$direct_download\) \{\s*\$buttons \.= 'failures) . "\n");
+ exit(1);
+ }
+ echo "Widget system tests passed: {$this->assertions} assertions across schema, query, visibility, transfer, REST and payment states.\n";
+ }
+
+ private function schema_contract(): void {
+ $fields = [
+ ['id' => 'mode', 'type' => 'select', 'default' => 'cards', 'options' => ['cards' => 'Cards', 'list' => 'List']],
+ ['id' => 'count', 'type' => 'slider', 'default' => 3, 'min' => 1, 'max' => 8],
+ ['id' => 'ids', 'type' => 'text', 'sanitize' => 'ids'],
+ ['id' => 'link', 'type' => 'link'],
+ ['id' => 'layout', 'type' => 'fieldset', 'fields' => [
+ ['id' => 'enabled', 'type' => 'switcher', 'default' => false],
+ ['id' => 'gap', 'type' => 'number', 'default' => 8, 'min' => 0, 'max' => 40],
+ ]],
+ ['id' => 'rows', 'type' => 'group', 'max_items' => 2, 'fields' => [
+ ['id' => 'title', 'type' => 'text'],
+ ['id' => 'tone', 'type' => 'radio', 'default' => 'blue', 'options' => ['blue' => 'Blue', 'red' => 'Red']],
+ ]],
+ ];
+ $defaults = FieldSchema::defaults($fields);
+ $this->same('cards', $defaults['mode'], 'schema defaults preserve enums');
+ $this->same(['enabled' => false, 'gap' => 8], $defaults['layout'], 'nested defaults are recursive');
+ $normalized = FieldSchema::normalize($fields, [
+ 'mode' => 'invalid', 'count' => 99, 'ids' => '2, 2,7 bad -4',
+ 'link' => ['url' => 'javascript:alert(1)', 'text' => '课程', 'target' => 'popup'],
+ 'layout' => ['enabled' => 'yes', 'gap' => -9, 'unknown' => 'drop'],
+ 'rows' => [
+ ['title' => '第一项', 'tone' => 'red'],
+ ['title' => '第二项', 'tone' => 'invalid'],
+ ['title' => '第三项'],
+ ],
+ ]);
+ $this->same('cards', $normalized['mode'], 'invalid enum falls back');
+ $this->same(8, $normalized['count'], 'numeric value clamps to maximum');
+ $this->same('2,7,4', $normalized['ids'], 'ID list is unique and normalized');
+ $this->same(['url' => '', 'text' => '课程', 'target' => ''], $normalized['link'], 'link parts sanitize independently');
+ $this->same(['enabled' => true, 'gap' => 0], $normalized['layout'], 'nested values clamp and drop unknown keys');
+ $this->same(2, count($normalized['rows']), 'group max_items is enforced');
+ $this->same('blue', $normalized['rows'][1]['tone'], 'nested enum fallback is enforced');
+
+ $definition = new WidgetDefinition([
+ 'slug' => 'dependency_test', 'name' => 'Dependency Test',
+ 'common' => ['title' => false, 'affix' => false, 'visibility' => false, 'animation' => false, 'layout' => false],
+ 'fields' => [
+ ['id' => 'controller', 'type' => 'select', 'default' => 'off', 'options' => ['off' => 'Off', 'on' => 'On']],
+ ['id' => 'dependent', 'type' => 'text', 'dependency' => ['controller', '==', 'on']],
+ ],
+ ]);
+ $widget = new SchemaWidget($definition);
+ ob_start();
+ $widget->render_full_form(['controller' => 'on', 'dependent' => 'visible']);
+ $html = (string) ob_get_clean();
+ $this->contains('data-dependency=', $html, 'form exports dependency rule');
+ $this->contains('"controller"', $html, 'dependency JSON is safely escaped');
+ }
+
+ private function query_contract(): void {
+ $args = PostQuery::arguments([
+ 'count' => 99, 'category_ids' => '2,5', 'category_id' => 9, 'tag_ids' => '8,13',
+ 'limit_day' => 14, 'orderby' => 'like', 'order' => 'asc', 'pay_type' => 'gallery',
+ ], 0);
+ $this->same(50, $args['posts_per_page'], 'query count clamps');
+ $this->same(1, $args['paged'], 'query page clamps');
+ $this->same([9], $args['category__in'], 'segment category overrides category list');
+ $this->same([8, 13], $args['tag__in'], 'query tag filter is normalized');
+ $this->same('ASC', $args['order'], 'query order allowlist is applied');
+ $this->same('meta_value_num', $args['orderby'], 'metric ordering uses numeric meta');
+ $this->contains('gallery', json_encode($args['meta_query']), 'DomainModel pay type reaches meta query');
+ $reference = PostQuery::arguments([
+ 'count' => 6, 'cat' => '1, -2,3 bad',
+ 'orderby' => 'views', 'order' => 'DESC', 'limit_day' => 7, 'paginate' => '',
+ ], 3);
+ $this->same([1, 3], $reference['category__in'], 'reference cat includes positive IDs');
+ $this->same([2], $reference['category__not_in'], 'reference cat excludes negative IDs');
+ $this->false(isset($reference['tax_query']), 'topic filters are removed with the topics feature');
+ $this->same('aksrt_post_views', $reference['meta_key'], 'reference view ordering uses numeric view meta');
+ $this->false(isset($reference['meta_query']), 'modern reference queries do not apply commerce filters by default');
+ $this->same(1, $reference['paged'], 'no-pagination queries stay on first page');
+ $paywalled = PostQuery::arguments(['cat' => '1', 'zibpay_type' => ['1', '6'], 'paginate' => ''], 1, ['cat' => '1']);
+ $this->contains('reading', json_encode($paywalled['meta_query'] ?? []), 'tab commerce filters map to pay meta');
+ $this->contains('video', json_encode($paywalled['meta_query'] ?? []), 'tab commerce filters cover every selected type');
+ $invalid = PostQuery::arguments(['cat' => '', 'orderby' => 'drop table'], 1, ['cat' => '']);
+ $this->false(isset($invalid['meta_query']), 'modern reference fields never add commerce filters');
+ $this->same('date', $invalid['orderby'], 'unknown orderby falls back');
+ $tabs = ['tabs' => [['title' => 'A', 'category_id' => 2], ['title' => 'B', 'category_id' => 3]]];
+ $this->same(3, PostQuery::segment($tabs, '1')['category_id'], 'valid tab segment resolves');
+ $this->same(2, PostQuery::segment($tabs, '99')['category_id'], 'invalid tab segment falls back to first');
+ }
+
+ private function modern_widget_contract(): void {
+ $tab_fields = WidgetSchemas::for('tab_posts');
+ $tab_defaults = FieldSchema::defaults($tab_fields);
+ $this->same('mini', $tab_defaults['style'], 'modern tabs default to mini');
+ $this->same(6, $tab_defaults['count'], 'modern tabs default to six posts');
+ $this->same(['热门推荐', '最近更新', '猜你喜欢'], array_column($tab_defaults['tabs'], 'title'), 'modern tab defaults match reference ordering');
+ $tab = FieldSchema::normalize($tab_fields, ['tabs' => [[
+ 'title' => '栏目', 'cat' => '1,-2 3', 'zibpay_type' => ['1', '6'],
+ 'order' => 'asc',
+ ]]]);
+ $this->same('1,-2,3', $tab['tabs'][0]['cat'], 'tab cat keeps signed reference IDs');
+ $this->false(isset($tab['tabs'][0]['topics']), 'topic filters are gone from tab configuration');
+ $this->same(['1', '6'], $tab['tabs'][0]['zibpay_type'], 'tab commerce filters are preserved');
+ $this->contains('栏目', $tab['tabs'][0]['title'], 'tab title keeps controlled HTML');
+ $this->false(str_contains($tab['tabs'][0]['title'], ' 最新课程',
+ 'show_type' => 'invalid',
+ 'show_id_type' => 'show',
+ 'show_ids' => '3, 3,9 bad -4',
+ 'count' => 999,
+ 'style' => 'broken',
+ 'cat' => '4,-7',
+]);
+if ($normalized['count'] !== 20 || $normalized['style'] !== 'list' || $normalized['show_type'] !== 'all') {
+ $errors[] = 'Schema clamping or enum fallback failed.';
+}
+if ($normalized['show_ids'] !== '3,9,4' || $normalized['cat'] !== '4,-7') {
+ $errors[] = 'ID list normalization failed: ' . $normalized['show_ids'];
+}
+if (str_contains($normalized['title'], '