From 733a690d2dae080b17d028123b3a8a1f7f33bba5 Mon Sep 17 00:00:00 2001 From: Mccree Lee Date: Sat, 25 May 2024 11:45:38 +0800 Subject: [PATCH 1/3] docs: introduction --- docs/docs/.vitepress/config.mts | 29 ---- docs/docs/.vitepress/config/en.mts | 124 ++++++++++++++++++ docs/docs/.vitepress/config/index.mts | 12 ++ docs/docs/.vitepress/config/shared.mts | 13 ++ docs/docs/.vitepress/config/zh.mts | 124 ++++++++++++++++++ .../documentation/controls/data/busyarea.md | 0 .../documentation/controls/data/datagrid.md | 0 .../documentation/controls/data/expander.md | 0 .../documentation/controls/data/groupbox.md | 0 .../documentation/controls/data/listbox.md | 0 .../documentation/controls/data/treeview.md | 0 .../controls/datetime/calendar.md | 0 .../controls/datetime/datepicker.md | 0 .../documentation/controls/inputs/button.md | 0 .../documentation/controls/inputs/checkbox.md | 0 .../documentation/controls/inputs/combobox.md | 0 .../controls/inputs/contextmenu.md | 0 .../controls/inputs/dropdownbutton.md | 0 .../controls/inputs/numericupdown.md | 0 .../controls/inputs/radiobutton.md | 0 .../documentation/controls/inputs/slider.md | 0 .../documentation/controls/inputs/textbox.md | 0 .../controls/inputs/togglebutton.md | 0 .../controls/inputs/toggleswitch.md | 0 .../controls/layout/glasscard.md | 0 .../controls/layout/settingslayout.md | 0 .../controls/layout/stackpage.md | 0 .../controls/layout/sukiwindow.md | 0 .../controls/layout/tabcontrol.md | 0 .../controls/navigation/sidemenu.md | 0 .../controls/progress/circleprogressbar.md | 0 .../controls/progress/loading.md | 0 .../controls/progress/progressbar.md | 0 .../controls/progress/stepper.md | 0 .../controls/progress/waveprogress.md | 0 .../controls/system/filepicker.md | 0 .../controls/text/autocompletebox.md | 0 .../documentation/controls/text/textbox.md | 0 .../getting-started/installation.md | 0 .../getting-started/introduction.md | 21 +++ .../documentation/getting-started/launch.md | 0 docs/docs/documentation/index.md | 1 + .../docs/documentation/notification/dialog.md | 0 .../documentation/notification/messagebox.md | 0 docs/docs/documentation/notification/toast.md | 0 docs/docs/documentation/style/color.md | 0 docs/docs/documentation/style/icon.md | 0 docs/docs/documentation/style/text.md | 0 docs/docs/documentation/theming/basic.md | 0 .../docs/documentation/theming/theme-color.md | 0 docs/docs/documentation/theming/theme.md | 0 docs/docs/index.md | 25 ++-- .../introduction-dashboard.webp | Bin 0 -> 159080 bytes docs/docs/public/suki.webp | Bin 0 -> 75762 bytes .../documentation/controls/data/busyarea.md | 0 .../documentation/controls/data/datagrid.md | 0 .../documentation/controls/data/expander.md | 0 .../documentation/controls/data/groupbox.md | 0 .../zh/documentation/controls/data/listbox.md | 0 .../documentation/controls/data/treeview.md | 0 .../controls/datetime/calendar.md | 0 .../controls/datetime/datepicker.md | 0 .../documentation/controls/inputs/button.md | 0 .../documentation/controls/inputs/checkbox.md | 0 .../documentation/controls/inputs/combobox.md | 0 .../controls/inputs/contextmenu.md | 0 .../controls/inputs/dropdownbutton.md | 0 .../controls/inputs/numericupdown.md | 0 .../controls/inputs/radiobutton.md | 0 .../documentation/controls/inputs/slider.md | 0 .../documentation/controls/inputs/textbox.md | 0 .../controls/inputs/togglebutton.md | 0 .../controls/inputs/toggleswitch.md | 0 .../controls/layout/glasscard.md | 0 .../controls/layout/settingslayout.md | 0 .../controls/layout/stackpage.md | 0 .../controls/layout/sukiwindow.md | 0 .../controls/layout/tabcontrol.md | 0 .../controls/navigation/sidemenu.md | 0 .../controls/progress/circleprogressbar.md | 0 .../controls/progress/loading.md | 0 .../controls/progress/progressbar.md | 0 .../controls/progress/stepper.md | 0 .../controls/progress/waveprogress.md | 0 .../controls/system/filepicker.md | 0 .../controls/text/autocompletebox.md | 0 .../zh/documentation/controls/text/textbox.md | 0 .../getting-started/installation.md | 0 .../getting-started/introduction.md | 21 +++ .../documentation/getting-started/launch.md | 0 docs/docs/zh/documentation/index.md | 1 + .../zh/documentation/notification/dialog.md | 0 .../documentation/notification/messagebox.md | 0 .../zh/documentation/notification/toast.md | 0 docs/docs/zh/documentation/style/color.md | 0 docs/docs/zh/documentation/style/icon.md | 0 docs/docs/zh/documentation/style/text.md | 0 docs/docs/zh/documentation/theming/basic.md | 0 .../zh/documentation/theming/theme-color.md | 0 docs/docs/zh/documentation/theming/theme.md | 0 docs/docs/zh/index.md | 45 +++++++ 101 files changed, 374 insertions(+), 42 deletions(-) delete mode 100644 docs/docs/.vitepress/config.mts create mode 100644 docs/docs/.vitepress/config/en.mts create mode 100644 docs/docs/.vitepress/config/index.mts create mode 100644 docs/docs/.vitepress/config/shared.mts create mode 100644 docs/docs/.vitepress/config/zh.mts create mode 100644 docs/docs/documentation/controls/data/busyarea.md create mode 100644 docs/docs/documentation/controls/data/datagrid.md create mode 100644 docs/docs/documentation/controls/data/expander.md create mode 100644 docs/docs/documentation/controls/data/groupbox.md create mode 100644 docs/docs/documentation/controls/data/listbox.md create mode 100644 docs/docs/documentation/controls/data/treeview.md create mode 100644 docs/docs/documentation/controls/datetime/calendar.md create mode 100644 docs/docs/documentation/controls/datetime/datepicker.md create mode 100644 docs/docs/documentation/controls/inputs/button.md create mode 100644 docs/docs/documentation/controls/inputs/checkbox.md create mode 100644 docs/docs/documentation/controls/inputs/combobox.md create mode 100644 docs/docs/documentation/controls/inputs/contextmenu.md create mode 100644 docs/docs/documentation/controls/inputs/dropdownbutton.md create mode 100644 docs/docs/documentation/controls/inputs/numericupdown.md create mode 100644 docs/docs/documentation/controls/inputs/radiobutton.md create mode 100644 docs/docs/documentation/controls/inputs/slider.md create mode 100644 docs/docs/documentation/controls/inputs/textbox.md create mode 100644 docs/docs/documentation/controls/inputs/togglebutton.md create mode 100644 docs/docs/documentation/controls/inputs/toggleswitch.md create mode 100644 docs/docs/documentation/controls/layout/glasscard.md create mode 100644 docs/docs/documentation/controls/layout/settingslayout.md create mode 100644 docs/docs/documentation/controls/layout/stackpage.md create mode 100644 docs/docs/documentation/controls/layout/sukiwindow.md create mode 100644 docs/docs/documentation/controls/layout/tabcontrol.md create mode 100644 docs/docs/documentation/controls/navigation/sidemenu.md create mode 100644 docs/docs/documentation/controls/progress/circleprogressbar.md create mode 100644 docs/docs/documentation/controls/progress/loading.md create mode 100644 docs/docs/documentation/controls/progress/progressbar.md create mode 100644 docs/docs/documentation/controls/progress/stepper.md create mode 100644 docs/docs/documentation/controls/progress/waveprogress.md create mode 100644 docs/docs/documentation/controls/system/filepicker.md create mode 100644 docs/docs/documentation/controls/text/autocompletebox.md create mode 100644 docs/docs/documentation/controls/text/textbox.md create mode 100644 docs/docs/documentation/getting-started/installation.md create mode 100644 docs/docs/documentation/getting-started/introduction.md create mode 100644 docs/docs/documentation/getting-started/launch.md create mode 100644 docs/docs/documentation/index.md create mode 100644 docs/docs/documentation/notification/dialog.md create mode 100644 docs/docs/documentation/notification/messagebox.md create mode 100644 docs/docs/documentation/notification/toast.md create mode 100644 docs/docs/documentation/style/color.md create mode 100644 docs/docs/documentation/style/icon.md create mode 100644 docs/docs/documentation/style/text.md create mode 100644 docs/docs/documentation/theming/basic.md create mode 100644 docs/docs/documentation/theming/theme-color.md create mode 100644 docs/docs/documentation/theming/theme.md create mode 100644 docs/docs/public/getting-started/introduction-dashboard.webp create mode 100644 docs/docs/public/suki.webp create mode 100644 docs/docs/zh/documentation/controls/data/busyarea.md create mode 100644 docs/docs/zh/documentation/controls/data/datagrid.md create mode 100644 docs/docs/zh/documentation/controls/data/expander.md create mode 100644 docs/docs/zh/documentation/controls/data/groupbox.md create mode 100644 docs/docs/zh/documentation/controls/data/listbox.md create mode 100644 docs/docs/zh/documentation/controls/data/treeview.md create mode 100644 docs/docs/zh/documentation/controls/datetime/calendar.md create mode 100644 docs/docs/zh/documentation/controls/datetime/datepicker.md create mode 100644 docs/docs/zh/documentation/controls/inputs/button.md create mode 100644 docs/docs/zh/documentation/controls/inputs/checkbox.md create mode 100644 docs/docs/zh/documentation/controls/inputs/combobox.md create mode 100644 docs/docs/zh/documentation/controls/inputs/contextmenu.md create mode 100644 docs/docs/zh/documentation/controls/inputs/dropdownbutton.md create mode 100644 docs/docs/zh/documentation/controls/inputs/numericupdown.md create mode 100644 docs/docs/zh/documentation/controls/inputs/radiobutton.md create mode 100644 docs/docs/zh/documentation/controls/inputs/slider.md create mode 100644 docs/docs/zh/documentation/controls/inputs/textbox.md create mode 100644 docs/docs/zh/documentation/controls/inputs/togglebutton.md create mode 100644 docs/docs/zh/documentation/controls/inputs/toggleswitch.md create mode 100644 docs/docs/zh/documentation/controls/layout/glasscard.md create mode 100644 docs/docs/zh/documentation/controls/layout/settingslayout.md create mode 100644 docs/docs/zh/documentation/controls/layout/stackpage.md create mode 100644 docs/docs/zh/documentation/controls/layout/sukiwindow.md create mode 100644 docs/docs/zh/documentation/controls/layout/tabcontrol.md create mode 100644 docs/docs/zh/documentation/controls/navigation/sidemenu.md create mode 100644 docs/docs/zh/documentation/controls/progress/circleprogressbar.md create mode 100644 docs/docs/zh/documentation/controls/progress/loading.md create mode 100644 docs/docs/zh/documentation/controls/progress/progressbar.md create mode 100644 docs/docs/zh/documentation/controls/progress/stepper.md create mode 100644 docs/docs/zh/documentation/controls/progress/waveprogress.md create mode 100644 docs/docs/zh/documentation/controls/system/filepicker.md create mode 100644 docs/docs/zh/documentation/controls/text/autocompletebox.md create mode 100644 docs/docs/zh/documentation/controls/text/textbox.md create mode 100644 docs/docs/zh/documentation/getting-started/installation.md create mode 100644 docs/docs/zh/documentation/getting-started/introduction.md create mode 100644 docs/docs/zh/documentation/getting-started/launch.md create mode 100644 docs/docs/zh/documentation/index.md create mode 100644 docs/docs/zh/documentation/notification/dialog.md create mode 100644 docs/docs/zh/documentation/notification/messagebox.md create mode 100644 docs/docs/zh/documentation/notification/toast.md create mode 100644 docs/docs/zh/documentation/style/color.md create mode 100644 docs/docs/zh/documentation/style/icon.md create mode 100644 docs/docs/zh/documentation/style/text.md create mode 100644 docs/docs/zh/documentation/theming/basic.md create mode 100644 docs/docs/zh/documentation/theming/theme-color.md create mode 100644 docs/docs/zh/documentation/theming/theme.md create mode 100644 docs/docs/zh/index.md diff --git a/docs/docs/.vitepress/config.mts b/docs/docs/.vitepress/config.mts deleted file mode 100644 index b31d45477..000000000 --- a/docs/docs/.vitepress/config.mts +++ /dev/null @@ -1,29 +0,0 @@ -import { defineConfig } from 'vitepress' - -// https://vitepress.dev/reference/site-config -export default defineConfig({ - base: '/SukiUI/', - title: "SukiUI", - description: "A VitePress Site", - themeConfig: { - // https://vitepress.dev/reference/default-theme-config - nav: [ - { text: 'Home', link: '/' }, - { text: 'Examples', link: '/markdown-examples' } - ], - - sidebar: [ - { - text: 'Examples', - items: [ - { text: 'Markdown Examples', link: '/markdown-examples' }, - { text: 'Runtime API Examples', link: '/api-examples' } - ] - } - ], - - socialLinks: [ - { icon: 'github', link: 'https://github.com/vuejs/vitepress' } - ] - } -}) diff --git a/docs/docs/.vitepress/config/en.mts b/docs/docs/.vitepress/config/en.mts new file mode 100644 index 000000000..022c00e2d --- /dev/null +++ b/docs/docs/.vitepress/config/en.mts @@ -0,0 +1,124 @@ +import { defineConfig } from 'vitepress' + +export const en = defineConfig({ + description: "A Desktop UI Library for Avalonia", + themeConfig: { + nav: [ + { text: 'Home', link: '/' }, + { text: 'Documentation', link: '/documentation' } + ], + + sidebar: [ + { + text: 'Get Started', + items: [ + { text: 'Introduction', link: '/documentation/getting-started/introduction' }, + { text: 'Installation', link: '/documentation/getting-started/installation' }, + { text: 'Launch', link: '/documentation/getting-started/launch' }, + ] + }, + { + text: 'Theming', + items: [ + { text: 'Basic', link: '/documentation/theming/basic' }, + { text: 'Light & Dark', link: '/documentation/theming/theme' }, + { text: 'Color', link: '/documentation/theming/theme-color' }, + ] + }, + { + text: 'Controls', + items: [ + { + text: 'Navigation', + items: [ + { text: 'SideMenu', link: '/documentation/controls/navigation/sidemenu' }, + ] + }, + { + text: 'Layout', + items: [ + { text: 'GlassCard', link: '/documentation/controls/layout/glasscard' }, + { text: 'TabControl', link: '/documentation/controls/layout/tabcontrol' }, + { text: 'StackPage', link: '/documentation/controls/layout/stackpage' }, + { text: 'SettingsLayout', link: '/documentation/controls/layout/settingslayout' }, + { text: 'SukiWindow', link: '/documentation/controls/layout/sukiwindow' }, + ] + }, + { + text: 'Inputs', + items: [ + { text: 'Button', link: '/documentation/controls/inputs/button' }, + { text: 'DropDownButton', link: '/documentation/controls/inputs/dropdownbutton' }, + { text: 'ToggleSwitch', link: '/documentation/controls/inputs/toggleswitch' }, + { text: 'ToggleButton', link: '/documentation/controls/inputs/togglebutton' }, + { text: 'Slider', link: '/documentation/controls/inputs/slider' }, + { text: 'ComboBox', link: '/documentation/controls/inputs/combobox' }, + { text: 'NumericUpDown', link: '/documentation/controls/inputs/numericupdown' }, + { text: 'TextBox', link: '/documentation/controls/inputs/textbox' }, + { text: 'CheckBox', link: '/documentation/controls/inputs/checkbox' }, + { text: 'RadioButton', link: '/documentation/controls/inputs/radiobutton' }, + { text: 'ContextMenu', link: '/documentation/controls/inputs/contextmenu' }, + ] + }, + { + text: 'Text', + items: [ + { text: 'AutoCompleteBox', link: '/documentation/controls/text/autocompletebox' }, + { text: 'TextBox', link: '/documentation/controls/text/textbox' }, + ] + }, + { + text: 'Date & Time', + items: [ + { text: 'Calendar', link: '/documentation/controls/datetime/calendar' }, + { text: 'DatePicker', link: '/documentation/controls/datetime/datepicker' }, + ] + }, + { + text: 'Progress', + items: [ + { text: 'WaveProgress', link: '/documentation/controls/progress/waveprogress' }, + { text: 'Stepper', link: '/documentation/controls/progress/stepper' }, + { text: 'CircleProgressBar', link: '/documentation/controls/progress/circleprogressbar' }, + { text: 'Loading', link: '/documentation/controls/progress/loading' }, + { text: 'ProgressBar', link: '/documentation/controls/progress/progressbar' }, + ] + }, + { + text: 'Data Presentation', + items: [ + { text: 'DataGrid', link: '/documentation/controls/data/datagrid' }, + { text: 'ListBox', link: '/documentation/controls/data/listbox' }, + { text: 'TreeView', link: '/documentation/controls/data/treeview' }, + { text: 'GroupBox', link: '/documentation/controls/data/groupbox' }, + { text: 'BusyArea', link: '/documentation/controls/data/busyarea' }, + { text: 'Expander', link: '/documentation/controls/data/expander' }, + ] + }, + { + text: 'System', + items: [ + { text: 'FilePicker', link: '/documentation/controls/system/filepicker' }, + ] + } + ] + }, + { + text: 'Notification', + items: [ + { text: 'Dialog', link: '/documentation/notification/dialog' }, + { text: 'Toast', link: '/documentation/notification/toast' }, + { text: 'MessageBox', link: '/documentation/notification/messagebox' }, + ] + }, + { + text: 'Style', + items: [ + { text: 'Text', link: '/documentation/style/text' }, + { text: 'Color', link: '/documentation/style/color' }, + { text: 'Icon', link: '/documentation/style/icon' }, + ] + } + ] + } +}) diff --git a/docs/docs/.vitepress/config/index.mts b/docs/docs/.vitepress/config/index.mts new file mode 100644 index 000000000..fe9f507bc --- /dev/null +++ b/docs/docs/.vitepress/config/index.mts @@ -0,0 +1,12 @@ +import { defineConfig } from 'vitepress' +import { shared } from './shared.mts' +import { en } from './en.mts' +import { zh } from './zh.mts' + +export default defineConfig({ + ...shared, + locales: { + root: { label: 'English', ...en }, + zh: { label: '简体中文', ...zh } + } +}) \ No newline at end of file diff --git a/docs/docs/.vitepress/config/shared.mts b/docs/docs/.vitepress/config/shared.mts new file mode 100644 index 000000000..5e41d9c79 --- /dev/null +++ b/docs/docs/.vitepress/config/shared.mts @@ -0,0 +1,13 @@ +import { defineConfig } from 'vitepress' + +export const shared = defineConfig({ + base: '/SukiUI/', + title: "SukiUI", + + themeConfig: { + logo: { src: '/suki.webp', width: 24, height: 24 }, + socialLinks: [ + { icon: 'github', link: 'https://github.com/kikipoulet/SukiUI' } + ] + } +}) diff --git a/docs/docs/.vitepress/config/zh.mts b/docs/docs/.vitepress/config/zh.mts new file mode 100644 index 000000000..46fa5d365 --- /dev/null +++ b/docs/docs/.vitepress/config/zh.mts @@ -0,0 +1,124 @@ +import { defineConfig } from 'vitepress' + +export const zh = defineConfig({ + description: "一个 Avalonia 控件库", + themeConfig: { + nav: [ + { text: '主页', link: '/zh' }, + { text: '文档', link: '/zh/documentation' } + ], + + sidebar: [ + { + text: '开始', + items: [ + { text: '介绍', link: '/zh/documentation/getting-started/introduction' }, + { text: '安装', link: '/zh/documentation/getting-started/installation' }, + { text: '启动', link: '/zh/documentation/getting-started/launch' }, + ] + }, + { + text: '主题', + items: [ + { text: '主题实例', link: '/zh/documentation/theming/basic' }, + { text: '明暗主题切换', link: '/zh/documentation/theming/theme' }, + { text: '主题色', link: '/zh/documentation/theming/theme-color' }, + ] + }, + { + text: '控件', + items: [ + { + text: 'Navigation', + items: [ + { text: 'SideMenu', link: '/zh/documentation/controls/navigation/sidemenu' }, + ] + }, + { + text: 'Layout', + items: [ + { text: 'GlassCard', link: '/zh/documentation/controls/layout/glasscard' }, + { text: 'TabControl', link: '/zh/documentation/controls/layout/tabcontrol' }, + { text: 'StackPage', link: '/zh/documentation/controls/layout/stackpage' }, + { text: 'SettingsLayout', link: '/zh/documentation/controls/layout/settingslayout' }, + { text: 'SukiWindow', link: '/zh/documentation/controls/layout/sukiwindow' }, + ] + }, + { + text: 'Inputs', + items: [ + { text: 'Button', link: '/zh/documentation/controls/inputs/button' }, + { text: 'DropDownButton', link: '/zh/documentation/controls/inputs/dropdownbutton' }, + { text: 'ToggleSwitch', link: '/zh/documentation/controls/inputs/toggleswitch' }, + { text: 'ToggleButton', link: '/zh/documentation/controls/inputs/togglebutton' }, + { text: 'Slider', link: '/zh/documentation/controls/inputs/slider' }, + { text: 'ComboBox', link: '/zh/documentation/controls/inputs/combobox' }, + { text: 'NumericUpDown', link: '/zh/documentation/controls/inputs/numericupdown' }, + { text: 'TextBox', link: '/zh/documentation/controls/inputs/textbox' }, + { text: 'CheckBox', link: '/zh/documentation/controls/inputs/checkbox' }, + { text: 'RadioButton', link: '/zh/documentation/controls/inputs/radiobutton' }, + { text: 'ContextMenu', link: '/zh/documentation/controls/inputs/contextmenu' }, + ] + }, + { + text: 'Text', + items: [ + { text: 'AutoCompleteBox', link: '/zh/documentation/controls/text/autocompletebox' }, + { text: 'TextBox', link: '/zh/documentation/controls/text/textbox' }, + ] + }, + { + text: 'Date & Time', + items: [ + { text: 'Calendar', link: '/zh/documentation/controls/datetime/calendar' }, + { text: 'DatePicker', link: '/zh/documentation/controls/datetime/datepicker' }, + ] + }, + { + text: 'Progress', + items: [ + { text: 'WaveProgress', link: '/zh/documentation/controls/progress/waveprogress' }, + { text: 'Stepper', link: '/zh/documentation/controls/progress/stepper' }, + { text: 'CircleProgressBar', link: '/zh/documentation/controls/progress/circleprogressbar' }, + { text: 'Loading', link: '/zh/documentation/controls/progress/loading' }, + { text: 'ProgressBar', link: '/zh/documentation/controls/progress/progressbar' }, + ] + }, + { + text: 'Data Presentation', + items: [ + { text: 'DataGrid', link: '/zh/documentation/controls/data/datagrid' }, + { text: 'ListBox', link: '/zh/documentation/controls/data/listbox' }, + { text: 'TreeView', link: '/zh/documentation/controls/data/treeview' }, + { text: 'GroupBox', link: '/zh/documentation/controls/data/groupbox' }, + { text: 'BusyArea', link: '/zh/documentation/controls/data/busyarea' }, + { text: 'Expander', link: '/zh/documentation/controls/data/expander' }, + ] + }, + { + text: 'System', + items: [ + { text: 'FilePicker', link: '/zh/documentation/controls/system/filepicker' }, + ] + } + ] + }, + { + text: '通知', + items: [ + { text: 'Dialog', link: '/zh/documentation/notification/dialog' }, + { text: 'Toast', link: '/zh/documentation/notification/toast' }, + { text: 'MessageBox', link: '/zh/documentation/notification/messagebox' }, + ] + }, + { + text: '样式', + items: [ + { text: 'Text', link: '/zh/documentation/style/text' }, + { text: 'Color', link: '/zh/documentation/style/color' }, + { text: 'Icon', link: '/zh/documentation/style/icon' }, + ] + } + ] + } +}) diff --git a/docs/docs/documentation/controls/data/busyarea.md b/docs/docs/documentation/controls/data/busyarea.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/data/datagrid.md b/docs/docs/documentation/controls/data/datagrid.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/data/expander.md b/docs/docs/documentation/controls/data/expander.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/data/groupbox.md b/docs/docs/documentation/controls/data/groupbox.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/data/listbox.md b/docs/docs/documentation/controls/data/listbox.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/data/treeview.md b/docs/docs/documentation/controls/data/treeview.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/datetime/calendar.md b/docs/docs/documentation/controls/datetime/calendar.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/datetime/datepicker.md b/docs/docs/documentation/controls/datetime/datepicker.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/inputs/button.md b/docs/docs/documentation/controls/inputs/button.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/inputs/checkbox.md b/docs/docs/documentation/controls/inputs/checkbox.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/inputs/combobox.md b/docs/docs/documentation/controls/inputs/combobox.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/inputs/contextmenu.md b/docs/docs/documentation/controls/inputs/contextmenu.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/inputs/dropdownbutton.md b/docs/docs/documentation/controls/inputs/dropdownbutton.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/inputs/numericupdown.md b/docs/docs/documentation/controls/inputs/numericupdown.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/inputs/radiobutton.md b/docs/docs/documentation/controls/inputs/radiobutton.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/inputs/slider.md b/docs/docs/documentation/controls/inputs/slider.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/inputs/textbox.md b/docs/docs/documentation/controls/inputs/textbox.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/inputs/togglebutton.md b/docs/docs/documentation/controls/inputs/togglebutton.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/inputs/toggleswitch.md b/docs/docs/documentation/controls/inputs/toggleswitch.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/layout/glasscard.md b/docs/docs/documentation/controls/layout/glasscard.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/layout/settingslayout.md b/docs/docs/documentation/controls/layout/settingslayout.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/layout/stackpage.md b/docs/docs/documentation/controls/layout/stackpage.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/layout/sukiwindow.md b/docs/docs/documentation/controls/layout/sukiwindow.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/layout/tabcontrol.md b/docs/docs/documentation/controls/layout/tabcontrol.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/navigation/sidemenu.md b/docs/docs/documentation/controls/navigation/sidemenu.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/progress/circleprogressbar.md b/docs/docs/documentation/controls/progress/circleprogressbar.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/progress/loading.md b/docs/docs/documentation/controls/progress/loading.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/progress/progressbar.md b/docs/docs/documentation/controls/progress/progressbar.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/progress/stepper.md b/docs/docs/documentation/controls/progress/stepper.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/progress/waveprogress.md b/docs/docs/documentation/controls/progress/waveprogress.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/system/filepicker.md b/docs/docs/documentation/controls/system/filepicker.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/text/autocompletebox.md b/docs/docs/documentation/controls/text/autocompletebox.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/controls/text/textbox.md b/docs/docs/documentation/controls/text/textbox.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/getting-started/installation.md b/docs/docs/documentation/getting-started/installation.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/getting-started/introduction.md b/docs/docs/documentation/getting-started/introduction.md new file mode 100644 index 000000000..b1d8ec842 --- /dev/null +++ b/docs/docs/documentation/getting-started/introduction.md @@ -0,0 +1,21 @@ +# Introduction + +**SukiUI** makes your Avalonia applications more modern. The library offers a large number of animated controls and theme switches. + +
+ + + +Nuget Pre +
+ +![dashboard](/getting-started/introduction-dashboard.webp) + +## Gallery + +Go to Microsoft Store to get the Gallary app + + + Download SukiUI Controls Gallery + \ No newline at end of file diff --git a/docs/docs/documentation/getting-started/launch.md b/docs/docs/documentation/getting-started/launch.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/index.md b/docs/docs/documentation/index.md new file mode 100644 index 000000000..00bcb6e37 --- /dev/null +++ b/docs/docs/documentation/index.md @@ -0,0 +1 @@ +# test \ No newline at end of file diff --git a/docs/docs/documentation/notification/dialog.md b/docs/docs/documentation/notification/dialog.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/notification/messagebox.md b/docs/docs/documentation/notification/messagebox.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/notification/toast.md b/docs/docs/documentation/notification/toast.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/style/color.md b/docs/docs/documentation/style/color.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/style/icon.md b/docs/docs/documentation/style/icon.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/style/text.md b/docs/docs/documentation/style/text.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/theming/basic.md b/docs/docs/documentation/theming/basic.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/theming/theme-color.md b/docs/docs/documentation/theming/theme-color.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/documentation/theming/theme.md b/docs/docs/documentation/theming/theme.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/docs/index.md b/docs/docs/index.md index 2c56e574c..3101edd9f 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -1,5 +1,4 @@ --- -# https://vitepress.dev/reference/default-theme-home-page layout: home hero: @@ -8,28 +7,28 @@ hero: tagline: Modern, Simple, Animated actions: - theme: brand - text: Get Started - link: /markdown-examples + text: 🚀 Get Started + link: /documentation/getting-started/introduction - theme: alt - text: Documentation - link: /api-examples + text: 📄 Documentation + link: /documentation image: - src: https://raw.githubusercontent.com/kikipoulet/SukiUI/main/Images/OIG.N5o-removebg-preview.png + src: ./suki.webp alt: SukiUILogo features: - - title: Feature A - details: Lorem ipsum dolor sit amet, consectetur adipiscing elit - - title: Feature B - details: Lorem ipsum dolor sit amet, consectetur adipiscing elit - - title: Feature C - details: Lorem ipsum dolor sit amet, consectetur adipiscing elit + - title: 🔧 Flexible Theme Customization + details: Support seamless switching themes and colors to align with your app's identity. + - title: 🎞️ Rich Animation + details: Captivate users with dynamic, fluid animations that make interactions delightful. + - title: 🖥️ Desktop Cross-platform + details: Based on AvaloniaUI, achieve broad compatibility with consistent performance on Windows, macOS, and Linux. --- \ No newline at end of file From 7f670a186ac19a5a5982ed1d47c98a82583d774f Mon Sep 17 00:00:00 2001 From: Mccree Lee Date: Sat, 25 May 2024 12:21:55 +0800 Subject: [PATCH 2/3] docs: getting started --- docs/docs/.vitepress/config/zh.mts | 2 +- .../getting-started/installation.md | 55 ++++++++++++ .../documentation/getting-started/launch.md | 82 ++++++++++++++++++ .../introduction-artifact.webp | Bin 0 -> 7790 bytes .../introduction-default-package-list.webp | Bin 0 -> 17158 bytes .../introduction-final-package-list.webp | Bin 0 -> 5942 bytes .../introduction-reference.webp | Bin 0 -> 18978 bytes .../introduction-workflow.webp | Bin 0 -> 15596 bytes .../getting-started/installation.md | 55 ++++++++++++ .../documentation/getting-started/launch.md | 80 +++++++++++++++++ 10 files changed, 273 insertions(+), 1 deletion(-) create mode 100644 docs/docs/public/getting-started/introduction-artifact.webp create mode 100644 docs/docs/public/getting-started/introduction-default-package-list.webp create mode 100644 docs/docs/public/getting-started/introduction-final-package-list.webp create mode 100644 docs/docs/public/getting-started/introduction-reference.webp create mode 100644 docs/docs/public/getting-started/introduction-workflow.webp diff --git a/docs/docs/.vitepress/config/zh.mts b/docs/docs/.vitepress/config/zh.mts index 46fa5d365..cc2cbb120 100644 --- a/docs/docs/.vitepress/config/zh.mts +++ b/docs/docs/.vitepress/config/zh.mts @@ -14,7 +14,7 @@ export const zh = defineConfig({ items: [ { text: '介绍', link: '/zh/documentation/getting-started/introduction' }, { text: '安装', link: '/zh/documentation/getting-started/installation' }, - { text: '启动', link: '/zh/documentation/getting-started/launch' }, + { text: '启动应用', link: '/zh/documentation/getting-started/launch' }, ] }, { diff --git a/docs/docs/documentation/getting-started/installation.md b/docs/docs/documentation/getting-started/installation.md index e69de29bb..857e1aae2 100644 --- a/docs/docs/documentation/getting-started/installation.md +++ b/docs/docs/documentation/getting-started/installation.md @@ -0,0 +1,55 @@ +# Installation + +::: info +When this page was written, the latest Avalonia version was `11.1.0-beta2` with SukiUI version `6.0.0-beta6` +::: + +SukiUI can be installed in two ways: +- [Nuget](https://www.nuget.org/packages/SukiUI) **Recommended** +- CI Artifacts from [Github Action](https://github.com/kikipoulet/SukiUI/actions/workflows/build.yml) + +## Prepare your application + +The following picture shows packages already installed with the default `Avalonia Template`: + +![](/getting-started/introduction-default-package-list.webp "default package list") + +In these packages, `Avalonia.Themes.Fluent` will no longer be necessary and can be removed. + +::: tip +About `Avalonia Template`: [Set up an editor](https://docs.avaloniaui.net/docs/get-started/set-up-an-editor) +::: + +## Install latest SukiUI package + +The Nuget installation is suitable for most users, but if you want to use the latest build, you can download the dll from Github Action after the automatic build. + +### Via Nuget + +``` +dotnet add package SukiUI --version 6.0.0 +``` + +::: tip +Visit [SukiUI on Nuget](https://www.nuget.org/packages/SukiUI) for more information +::: + +### Via Github Action + +1. Visit [SukiUI CI](https://github.com/kikipoulet/SukiUI/actions/workflows/build.yml) +2. Select the latest workflow +![](/getting-started/introduction-workflow.webp "workflow") + +3. Download the artifact +![](/getting-started/introduction-artifact.webp "artifact") + +4. Add reference +![](/getting-started/introduction-reference.webp "reference") + +5. Select `SukiUI.dll` you downloaded + +::: tip +The package list should be: + +![](/getting-started/introduction-final-package-list.webp "package list") +::: \ No newline at end of file diff --git a/docs/docs/documentation/getting-started/launch.md b/docs/docs/documentation/getting-started/launch.md index e69de29bb..f74229ca7 100644 --- a/docs/docs/documentation/getting-started/launch.md +++ b/docs/docs/documentation/getting-started/launch.md @@ -0,0 +1,82 @@ +# Launch + +## Modify your App.axaml + +Include SukiUI styles in your `App.axaml` + +```xml + + + // [!code highlight] + + +``` + +## Use SukiWindow as MainWindow + +Change MainWindow from Window class to SukiWindow class. + +Original `MainWindow.axaml`: + +```xml + + +``` + +Modified `MainWindow.axaml`: + +```xml + + // [!code highlight] +``` + +Original `MainWindow.axaml.cs`: + +```csharp +using Avalonia.Controls; + +namespace SukiTest; + +public partial class MainWindow : Window +{ + public MainWindow() + { + InitializeComponent(); + } +} +``` + +Modified `MainWindow.axaml.cs`: + + +```csharp +using SukiUI.Controls; // [!code highlight] + +namespace SukiTest; + +public partial class MainWindow : SukiWindow // [!code highlight] +{ + public MainWindow() + { + InitializeComponent(); + } +} +``` + +## Done + +You're now ready to use SukiUI ! \ No newline at end of file diff --git a/docs/docs/public/getting-started/introduction-artifact.webp b/docs/docs/public/getting-started/introduction-artifact.webp new file mode 100644 index 0000000000000000000000000000000000000000..58a46b3d832a447cb6ba7e0f95eb2a5514441363 GIT binary patch literal 7790 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 eKBpLx2u=7#$ocI{Xb3j|C%^4r2h|Bcv2Vu literal 0 HcmV?d00001 diff --git a/docs/docs/public/getting-started/introduction-default-package-list.webp b/docs/docs/public/getting-started/introduction-default-package-list.webp new file mode 100644 index 0000000000000000000000000000000000000000..e80bb05552564ccafdb2af1f02405069110b8c8c GIT binary patch literal 17158 zcmZs?L$oMdtfjkcoNe2-ZQHhO+qP}nwr$(CRsX%Os`t`KdPyT=tYqd}iV~utzk&b& zY9fO2s`BjkkN?H?j{rGu`{{(j~SJ1z4t6#r<`QU$lcDc#FRes*z(NAojZf|tsf4qKppJWeu+kAFEc6~7q zfaiYGeye{XmvxVS&3Wm+FJEQ9;HPz0eph}o?_G~#Uv{^>19)kE%zro^W9MjJWv_Yv z)%aKXKbcPJZ2LAn1HX`-_8#|k`DXkko*w?xzWXZjivR5X27c8Zg|2}=(cbVr^frDH z|Evy}-snE`Ui!wqf&BFU#4Z>9tG(~p@AA)?XY$A3Z|KLa-|TAc7haq0@9)zW)c3*f zza;l9U%fVh@{HiObI7Str*~PswjW*p&ozN(W~OAOA%5p*_zPYE@$<5e51)yo`)V_c zVg;s}LE5UgM=~fU#VlGE@(7{dFX^T$WPvja0N1)%lQuv~G6yzu6;ej-s3GWE%{KSd z3sPt0=?Ry#>j<)DgUiLx^@;8M`4kfI)MnbtH(g~=x9)|Q!Z6zhKW~yTcTam7Ob}yypEh|@pCV?DxWXVx*qJ+e&H{KXEi&}$ zto=IQ{fOlUVrSH$MIp*?2d-cM2)K@dtJTAaLEAAvLcxEHI!SQ z6J?HTxuRC5NXCzX6|X_L$8Rn_U`bc04y#NzvH4|H6#icABWuHE}6(W zOXJY*)*2-Rvp%>TzCWo_tm>jwsEhzwXmK0+v?L8C>(Zl5*sJZ`H})!OfL!M%9$?XG zZ1%8hCVW^@h>U^#MY9WOY&2$z>)8hW-aaB}aehQ$9hloxOPHK(UPvI6)$1Cj>N|R= z^HQ0lxv)(K@*~Sj7f~If{=bg{9aH3(@R0L~)imOmEkk8!ktbCX`IMrW@+^?njNoL( zY_-vmdxN!+0#7}|rWTl4q4p!n4*U(2p_S2J%@=#?S~3M3mAZleigxPwB+O;Q0=gf= z7!%3E8Qv$4rNovG8a!5L_DlydDh!M;I=M^6}wwewwUXToZkuQ*7A%0A!{idzEtU2;Dw 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 Y2L2!R|FzDIoYDRH*J?&DtA6F!1b$fb_5c6? literal 0 HcmV?d00001 diff --git a/docs/docs/public/getting-started/introduction-reference.webp b/docs/docs/public/getting-started/introduction-reference.webp new file mode 100644 index 0000000000000000000000000000000000000000..1702246941842fd28bef139f62a45ff890212419 GIT binary patch literal 18978 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 NDk$$M*HrdV0RW=3O>h7J literal 0 HcmV?d00001 diff --git a/docs/docs/public/getting-started/introduction-workflow.webp b/docs/docs/public/getting-started/introduction-workflow.webp new file mode 100644 index 0000000000000000000000000000000000000000..213dd0e6871ffd753e9252e36e3f88676bdc6527 GIT binary patch literal 15596 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 literal 0 HcmV?d00001 diff --git a/docs/docs/zh/documentation/getting-started/installation.md b/docs/docs/zh/documentation/getting-started/installation.md index e69de29bb..52b2e8521 100644 --- a/docs/docs/zh/documentation/getting-started/installation.md +++ b/docs/docs/zh/documentation/getting-started/installation.md @@ -0,0 +1,55 @@ +# 安装 + +::: info +写完本篇时,Avalonia 的版本是 `11.1.0-beta2` ,SukiUI 的版本是 `6.0.0-beta6` +::: + +SukiUI 可以通过以下两种方式安装: +- [Nuget](https://www.nuget.org/packages/SukiUI) **推荐** +- 从 [Github Action](https://github.com/kikipoulet/SukiUI/actions/workflows/build.yml) 获取 CI 构建后的 `.dll` + +## 准备工作 + +以下是 `Avalonia Template` 项目创建后,默认的包列表: + +![](/getting-started/introduction-default-package-list.webp "default package list") + +在这些包中,`Avalonia.Themes.Fluent` 可以被删除 + +::: tip +有关 `Avalonia Template`: [设置编辑器](https://docs.avaloniaui.net/zh-Hans/docs/get-started/set-up-an-editor) +::: + +## 安装最新的 SukiUI + +对于大多数用户来说,通过 Nuget 安装是不错的选择;但如果你想体验最新构建的功能,请从 Github Action 中下载构建 + +### 通过 Nuget 安装 + +``` +dotnet add package SukiUI --version 6.0.0 +``` + +::: tip +访问 [SukiUI on Nuget](https://www.nuget.org/packages/SukiUI) 获取更多信息 +::: + +### 通过 Github Action 安装 + +1. 访问 [SukiUI CI](https://github.com/kikipoulet/SukiUI/actions/workflows/build.yml) +2. 选择最后一个`workflow` +![](/getting-started/introduction-workflow.webp "workflow") + +3. 下载 +![](/getting-started/introduction-artifact.webp "artifact") + +4. 在项目中添加引用 +![](/getting-started/introduction-reference.webp "reference") + +5. 选择刚刚下载的 `SukiUI.dll` 并添加 + +::: tip +最终,你的包列表应为: + +![](/getting-started/introduction-final-package-list.webp "package list") +::: \ No newline at end of file diff --git a/docs/docs/zh/documentation/getting-started/launch.md b/docs/docs/zh/documentation/getting-started/launch.md index e69de29bb..3b75bd4ef 100644 --- a/docs/docs/zh/documentation/getting-started/launch.md +++ b/docs/docs/zh/documentation/getting-started/launch.md @@ -0,0 +1,80 @@ +# 启动应用 + +## 修改 App.axaml + +在 `App.axaml` 的 `Styles` 中添加 `SukiTheme` + +```xml + + + // [!code highlight] + + +``` + +## 将 MainWindow 更改为 SukiWindow + +原来的 `MainWindow.axaml`: + +```xml + + +``` + +修改后的 `MainWindow.axaml`: + +```xml + + // [!code highlight] +``` + +原来的 `MainWindow.axaml.cs`: + +```csharp +using Avalonia.Controls; + +namespace SukiTest; + +public partial class MainWindow : Window +{ + public MainWindow() + { + InitializeComponent(); + } +} +``` + +修改后的 `MainWindow.axaml.cs`: + + +```csharp +using SukiUI.Controls; // [!code highlight] + +namespace SukiTest; + +public partial class MainWindow : SukiWindow // [!code highlight] +{ + public MainWindow() + { + InitializeComponent(); + } +} +``` + +## 完成 + +至此,SukiUI 安装完成 \ No newline at end of file From 6f7581a0bb2a59bb4a2bb8758a51749ec82c545e Mon Sep 17 00:00:00 2001 From: Mccree Lee Date: Sat, 25 May 2024 12:43:32 +0800 Subject: [PATCH 3/3] docs: theming --- README.md | 6 ++++ docs/docs/documentation/theming/basic.md | 9 +++++ .../docs/documentation/theming/theme-color.md | 34 +++++++++++++++++++ docs/docs/documentation/theming/theme.md | 34 +++++++++++++++++++ docs/docs/zh/documentation/theming/basic.md | 9 +++++ .../zh/documentation/theming/theme-color.md | 34 +++++++++++++++++++ docs/docs/zh/documentation/theming/theme.md | 32 +++++++++++++++++ 7 files changed, 158 insertions(+) diff --git a/README.md b/README.md index 979249b3f..e5794fc16 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,12 @@ Visit [SukiUI on Nuget.org](https://www.nuget.org/packages/SukiUI) Download `SukiUI-dev` in artifacts +## 📄 Documentation + +[SukiUI Documentation](https://kikipoulet.github.io/SukiUI/) *WIP* + +[Wiki](https://github.com/kikipoulet/SukiUI/wiki) + ## 📱 UI Theme ##### SukiUI contains a theme for AvaloniaUI's base controls with support for Light/Dark themes. diff --git a/docs/docs/documentation/theming/basic.md b/docs/docs/documentation/theming/basic.md index e69de29bb..fd956ccd4 100644 --- a/docs/docs/documentation/theming/basic.md +++ b/docs/docs/documentation/theming/basic.md @@ -0,0 +1,9 @@ +# Basic + +SukiUI provide a `SukiTheme` class that permits to easily manipulate the theming of your app easily. + +Get the SukiTheme Instance: + +```csharp +SukiTheme theme = SukiTheme.GetInstance(); +``` \ No newline at end of file diff --git a/docs/docs/documentation/theming/theme-color.md b/docs/docs/documentation/theming/theme-color.md index e69de29bb..e5be9a79d 100644 --- a/docs/docs/documentation/theming/theme-color.md +++ b/docs/docs/documentation/theming/theme-color.md @@ -0,0 +1,34 @@ +# Color + +`SukiTheme` allows app to switch color themes easily + +theming-color + +## Switch between available Color Theme + +```csharp +SukiTheme.GetInstance().SwitchColorTheme(); +``` + +## Switch to a specific Color Theme + +```csharp +SukiTheme.GetInstance().ChangeColorTheme(SukiColor.Red); +``` + +## Create a Custom Color Theme, register it and switch to it + +```csharp +var PurpleTheme = new SukiColorTheme("Purple", Colors.Purple, Colors.DarkBlue); +SukiTheme.GetInstance().AddColorTheme(PurpleTheme); +SukiTheme.GetInstance().ChangeColorTheme(PurpleTheme); +``` + +## ColorChanged Event + +```csharp +SukiTheme.GetInstance().OnColorThemeChanged += theme => +{ + Console.WriteLine("Color theme change triggered !"); +}; +``` \ No newline at end of file diff --git a/docs/docs/documentation/theming/theme.md b/docs/docs/documentation/theming/theme.md index e69de29bb..23e670670 100644 --- a/docs/docs/documentation/theming/theme.md +++ b/docs/docs/documentation/theming/theme.md @@ -0,0 +1,34 @@ +# Light & Dark + +SukiUI use the [Theme Variant](https://docs.avaloniaui.net/docs/guides/styles-and-resources/how-to-use-theme-variants) system provided by `AvaloniaUI`. + +However, the SukiTheme class provide an easiest wrapper to change Light/Dark theme. + +theming-theme + +## Switch to Dark Theme + +```csharp +SukiTheme.GetInstance().ChangeBaseTheme(ThemeVariant.Dark); +``` + +## Switch to Light Theme + +```csharp +SukiTheme.GetInstance().ChangeBaseTheme(ThemeVariant.Light); +``` + +## Switch between Light/Dark Theme + +```csharp +SukiTheme.GetInstance().SwitchBaseTheme(); +``` + +## ThemeChanged Event + +```csharp +SukiTheme.GetInstance().OnBaseThemeChanged += variant => +{ + Console.WriteLine("Theme changed triggered !"); +}; +``` \ No newline at end of file diff --git a/docs/docs/zh/documentation/theming/basic.md b/docs/docs/zh/documentation/theming/basic.md index e69de29bb..84ccc35b0 100644 --- a/docs/docs/zh/documentation/theming/basic.md +++ b/docs/docs/zh/documentation/theming/basic.md @@ -0,0 +1,9 @@ +# 主题实例 + +SukiUI 提供 `SukiTheme`,通过该类可以实现对应用主题的修改 + +获取实例: + +```csharp +SukiTheme theme = SukiTheme.GetInstance(); +``` \ No newline at end of file diff --git a/docs/docs/zh/documentation/theming/theme-color.md b/docs/docs/zh/documentation/theming/theme-color.md index e69de29bb..363d6dde0 100644 --- a/docs/docs/zh/documentation/theming/theme-color.md +++ b/docs/docs/zh/documentation/theming/theme-color.md @@ -0,0 +1,34 @@ +# 主题色 + +`SukiTheme` 也可以十分简单地切换应用的主题色 + +theming-color + +## 在可用的主题色间切换 + +```csharp +SukiTheme.GetInstance().SwitchColorTheme(); +``` + +## 切换到一个指定的主题色 + +```csharp +SukiTheme.GetInstance().ChangeColorTheme(SukiColor.Red); +``` + +## 创建/注册/切换到一个自定义主题色 + +```csharp +var PurpleTheme = new SukiColorTheme("Purple", Colors.Purple, Colors.DarkBlue); +SukiTheme.GetInstance().AddColorTheme(PurpleTheme); +SukiTheme.GetInstance().ChangeColorTheme(PurpleTheme); +``` + +## 订阅 ColorChanged 事件 + +```csharp +SukiTheme.GetInstance().OnColorThemeChanged += theme => +{ + Console.WriteLine("Color theme change triggered !"); +}; +``` \ No newline at end of file diff --git a/docs/docs/zh/documentation/theming/theme.md b/docs/docs/zh/documentation/theming/theme.md index e69de29bb..e36428952 100644 --- a/docs/docs/zh/documentation/theming/theme.md +++ b/docs/docs/zh/documentation/theming/theme.md @@ -0,0 +1,32 @@ +# 明暗主题切换 + +SukiUI 借助由 `AvaloniaUI` 提供的 [主题变体](https://docs.avaloniaui.net/zh-Hans/docs/guides/styles-and-resources/how-to-use-theme-variants) 轻松实现主题切换 + +theming-theme + +## 切换至暗色 + +```csharp +SukiTheme.GetInstance().ChangeBaseTheme(ThemeVariant.Dark); +``` + +## 切换至亮色 + +```csharp +SukiTheme.GetInstance().ChangeBaseTheme(ThemeVariant.Light); +``` + +## 明暗切换 + +```csharp +SukiTheme.GetInstance().SwitchBaseTheme(); +``` + +## ThemeChanged 事件 + +```csharp +SukiTheme.GetInstance().OnBaseThemeChanged += variant => +{ + Console.WriteLine("Theme changed triggered !"); +}; +``` \ No newline at end of file