diff --git a/design/src/foss/java/com/github/kr328/clash/design/HelpDesign.kt b/design/src/foss/java/com/github/kr328/clash/design/HelpDesign.kt
new file mode 100644
index 0000000000000000000000000000000000000000..4522fc032733372d7db51226087fa03adf586e66
--- /dev/null
+++ b/design/src/foss/java/com/github/kr328/clash/design/HelpDesign.kt
@@ -0,0 +1,95 @@
+package com.github.kr328.clash.design
+
+import android.content.Context
+import android.net.Uri
+import android.view.View
+import com.github.kr328.clash.common.compat.preferredLocale
+import com.github.kr328.clash.design.databinding.DesignSettingsCommonBinding
+import com.github.kr328.clash.design.preference.category
+import com.github.kr328.clash.design.preference.clickable
+import com.github.kr328.clash.design.preference.preferenceScreen
+import com.github.kr328.clash.design.preference.tips
+import com.github.kr328.clash.design.util.applyFrom
+import com.github.kr328.clash.design.util.bindAppBarElevation
+import com.github.kr328.clash.design.util.layoutInflater
+import com.github.kr328.clash.design.util.root
+
+class HelpDesign(
+    context: Context,
+    openLink: (Uri) -> Unit,
+) : Design<Unit>(context) {
+    private val binding = DesignSettingsCommonBinding
+        .inflate(context.layoutInflater, context.root, false)
+
+    override val root: View
+        get() = binding.root
+
+    init {
+        binding.surface = surface
+
+        binding.activityBarLayout.applyFrom(context)
+
+        binding.scrollRoot.bindAppBarElevation(binding.activityBarLayout)
+
+        val screen = preferenceScreen(context) {
+            tips(R.string.tips_help)
+
+            category(R.string.document)
+
+            clickable(
+                title = R.string.clash_wiki,
+                summary = R.string.clash_wiki_url
+            ) {
+                clicked {
+                    openLink(Uri.parse(context.getString(R.string.clash_wiki_url)))
+                }
+            }
+
+            category(R.string.feedback)
+
+            clickable(
+                title = R.string.github_issues,
+                summary = R.string.github_issues_url
+            ) {
+                clicked {
+                    openLink(Uri.parse(context.getString(R.string.github_issues_url)))
+                }
+            }
+
+            category(R.string.sources)
+
+            clickable(
+                title = R.string.clash_for_android,
+                summary = R.string.github_url
+            ) {
+                clicked {
+                    openLink(Uri.parse(context.getString(R.string.github_url)))
+                }
+            }
+
+            clickable(
+                title = R.string.clash_core,
+                summary = R.string.clash_core_url
+            ) {
+                clicked {
+                    openLink(Uri.parse(context.getString(R.string.clash_core_url)))
+                }
+            }
+
+            if (context.resources.configuration.preferredLocale.language == "zh") {
+                category(R.string.donate)
+
+                clickable(
+                    title = R.string.donate,
+                    summary = R.string.donate_url
+                ) {
+                    clicked {
+                        openLink(Uri.parse(context.getString(R.string.donate_url)))
+                    }
+                }
+            }
+        }
+
+        binding.content.addView(screen.root)
+    }
+}
\ No newline at end of file
diff --git a/design/src/main/res/values-zh/strings.xml b/design/src/main/res/values-zh/strings.xml
index ca171514e956910598ae5aed70be88e83b37b934..cfdbb80a584b92a3a7507baaa8eba7773ec4a0a8 100644
--- a/design/src/main/res/values-zh/strings.xml
+++ b/design/src/main/res/values-zh/strings.xml
@@ -208,4 +208,6 @@
     <string name="active_unsaved_tips">配置文件需要在激活之前保存</string>
     <string name="mode_switch_tips">仅在本次会话中有效</string>
     <string name="import_">导入</string>
+    <string name="sources">源代码</string>
+    <string name="clash_core">Clash 核心</string>
 </resources>
\ No newline at end of file
diff --git a/design/src/main/res/values/strings.xml b/design/src/main/res/values/strings.xml
index bce0365ba3eeb17d4ef51643c908a6915a617721..045856e849065c85398e8635e82c30ff14470a39 100644
--- a/design/src/main/res/values/strings.xml
+++ b/design/src/main/res/values/strings.xml
@@ -193,13 +193,17 @@
 
     <string name="document">Document</string>
     <string name="feedback">Feedback</string>
+    <string name="sources">Sources</string>
     <string name="donate">Donate</string>
     <string name="clash_wiki">Clash Wiki</string>
     <string name="github_issues">Github Issues</string>
     <string name="google_play">Google Play</string>
+    <string name="clash_core">Clash Core</string>
     <string name="clash_wiki_url" translatable="false">https://github.com/Dreamacro/clash/wiki</string>
     <string name="github_issues_url" translatable="false">https://github.com/Kr328/ClashForAndroid/issues</string>
     <string name="donate_url" translatable="false">https://donate.kr328.app</string>
+    <string name="github_url" translatable="false">https://github.com/Kr328/ClashForAndroid</string>
+    <string name="clash_core_url" translatable="false">https://github.com/Dreamacro/clash</string>
 
     <string name="tips_properties"><![CDATA[Accept Only <strong>Clash Config</strong>(including <strong>Proxy</strong>/<strong>Rules</strong>)]]></string>
     <string name="tips_help"><![CDATA[Clash for Android is a <strong>freeware</strong> and we do <strong>NOT</strong> provide any service for it]]></string>
diff --git a/design/src/main/java/com/github/kr328/clash/design/HelpDesign.kt b/design/src/premium/java/com/github/kr328/clash/design/HelpDesign.kt
similarity index 100%
rename from design/src/main/java/com/github/kr328/clash/design/HelpDesign.kt
rename to design/src/premium/java/com/github/kr328/clash/design/HelpDesign.kt