{
+ props.onCollapse?.(collapse);
+ }}
+ collapsedWidth={collapsedWidth}
+ style={{
+ overflow: 'hidden',
+ height: '100vh',
+ }}
+ width={siderWidth}
+ theme={props.theme as 'dark' | 'light'}
+ >
+
+ {(menuContentRender && menuContentRender(props, defaultMenuDom)) || defaultMenuDom}
+
+
+
+ >
+ )
+}
+
+export default SiderMenu
\ No newline at end of file
diff --git a/src/components/Layout/defaultSetting.ts b/src/components/Layout/defaultSetting.ts
new file mode 100644
index 00000000..741ceda0
--- /dev/null
+++ b/src/components/Layout/defaultSetting.ts
@@ -0,0 +1,68 @@
+import type { PropType } from 'vue'
+import config from '../../../config/config'
+
+export interface PureSettings {
+ title: string
+ /**
+ * theme for nav menu
+ */
+ navTheme: 'dark' | 'light' | 'realDark' | undefined;
+ /**
+ * nav menu position: `side` or `top`
+ */
+ headerHeight?: number;
+ /**
+ * customize header height
+ */
+ layout: 'side' | 'top' | 'mix';
+ /**
+ * layout of content: `Fluid` or `Fixed`, only works when layout is top
+ */
+ contentWidth: 'Fluid' | 'Fixed';
+ menu: { locale?: boolean; defaultOpenAll?: boolean };
+ splitMenus?: boolean;
+}
+
+export const defaultSettings = {
+ navTheme: 'dark',
+ layout: 'side',
+ contentWidth: 'Fluid',
+ fixedHeader: false,
+ fixSiderbar: false,
+ menu: {},
+ headerHeight: 48,
+ iconfontUrl: '',
+ title: config.title
+};
+
+export const defaultSettingProps = {
+ navTheme: {
+ type: String as PropType