@liujitcn/kratos-taro-app-core 0.0.78 → 0.0.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/build.mjs +4 -2
  2. package/package.json +1 -1
  3. package/src/components/BootstrapStatus.scss +3 -3
  4. package/src/components/BootstrapStatus.tsx +3 -1
  5. package/src/components/KratosTabBar.scss +32 -13
  6. package/src/components/KratosTabBar.tsx +34 -3
  7. package/src/components/MfaRecoveryCodesDialog.scss +11 -10
  8. package/src/components/MfaSetupPanel.scss +4 -4
  9. package/src/components/PasswordVerifyDialog.scss +21 -21
  10. package/src/navigation.ts +6 -3
  11. package/src/pages.ts +4 -2
  12. package/src/rpc/base/v1/config.ts +1 -1
  13. package/src/rpc/base/v1/file.ts +1 -1
  14. package/src/rpc/base/v1/language.ts +1 -1
  15. package/src/rpc/base/v1/login.ts +1 -1
  16. package/src/rpc/base/v1/mcp.ts +1 -1
  17. package/src/rpc/base/v1/mfa.ts +1 -1
  18. package/src/rpc/base/v1/oauth.ts +1 -1
  19. package/src/rpc/base/v1/secret_crypto.ts +1 -1
  20. package/src/rpc/base/v1/sse.ts +1 -1
  21. package/src/rpc/common/v1/common.ts +1 -1
  22. package/src/rpc/common/v1/types.ts +1 -1
  23. package/src/rpc/google/protobuf/empty.ts +1 -1
  24. package/src/rpc/google/protobuf/struct.ts +2 -2
  25. package/src/rpc/google/protobuf/wrappers.ts +1 -1
  26. package/src/rpc/system/app/v1/auth.ts +1 -1
  27. package/src/rpc/system/app/v1/base_area.ts +1 -1
  28. package/src/rpc/system/app/v1/base_dict.ts +1 -1
  29. package/src/rpc/system/app/v1/base_menu.ts +1 -1
  30. package/src/rpc/system/common/v1/common.ts +1 -1
  31. package/src/stores/index.ts +1 -0
  32. package/src/stores/theme.ts +108 -0
  33. package/src/styles/base.scss +90 -5
  34. package/src/styles/components.scss +765 -0
  35. package/src/utils/http.ts +3 -0
  36. package/src/utils/index.ts +19 -0
  37. package/src/utils/navigation.ts +12 -0
  38. package/src/views/pages/index/index.scss +69 -73
  39. package/src/views/pages/index/index.tsx +50 -34
  40. package/src/views/pages/login/login.scss +109 -142
  41. package/src/views/pages/login/login.tsx +142 -82
  42. package/src/views/pages/login/protocal.scss +14 -14
  43. package/src/views/pages/login/protocal.tsx +16 -3
  44. package/src/views/pages/webview/webview.scss +6 -5
  45. package/src/views/pages/webview/webview.tsx +3 -1
package/dist/build.mjs CHANGED
@@ -11,8 +11,10 @@ var corePages = {
11
11
  navigationBarTitleText: ""
12
12
  }
13
13
  },
14
- "pages/login/login": { style: { navigationBarTitleText: "" } },
15
- "pages/login/protocal": { style: { navigationBarTitleText: "" } },
14
+ "pages/login/login": {
15
+ style: { navigationStyle: "custom", navigationBarTitleText: "" }
16
+ },
17
+ "pages/login/protocal": { style: { navigationStyle: "custom", navigationBarTitleText: "" } },
16
18
  "pages/webview/webview": { style: { navigationBarTitleText: "" } },
17
19
  "pages/status/index": {
18
20
  style: {
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "type": "git",
8
8
  "url": "git@github.com:liujitcn/kratos-admin.git"
9
9
  },
10
- "version": "0.0.78",
10
+ "version": "0.0.80",
11
11
  "type": "module",
12
12
  "files": [
13
13
  "dist",
@@ -5,7 +5,7 @@
5
5
  justify-content: center;
6
6
  flex-direction: column;
7
7
  padding: 48px;
8
- background: #f8f8f8;
8
+ background: var(--kratos-bg-gradient);
9
9
  box-sizing: border-box;
10
10
  }
11
11
 
@@ -16,13 +16,13 @@
16
16
  }
17
17
 
18
18
  .bootstrap-status__title {
19
- color: #222;
19
+ color: var(--kratos-color-text);
20
20
  font-size: 32px;
21
21
  }
22
22
 
23
23
  .bootstrap-status__detail {
24
24
  margin-top: 16px;
25
- color: #777;
25
+ color: var(--kratos-color-text-muted);
26
26
  font-size: 24px;
27
27
  text-align: center;
28
28
  }
@@ -1,6 +1,7 @@
1
1
  import { Image, Text, View } from '@tarojs/components'
2
2
  import './BootstrapStatus.scss'
3
3
  import { useI18n } from '../locales'
4
+ import { useThemeStore } from '../stores'
4
5
 
5
6
  /** 启动状态组件参数。 */
6
7
  export interface BootstrapStatusProps {
@@ -11,8 +12,9 @@ export interface BootstrapStatusProps {
11
12
  /** 全屏启动状态。 */
12
13
  export function BootstrapStatus({ title, detail }: BootstrapStatusProps) {
13
14
  const { t } = useI18n()
15
+ const themeStore = useThemeStore()
14
16
  return (
15
- <View className='bootstrap-status'>
17
+ <View className={`bootstrap-status ${themeStore.theme === 'light' ? 'theme-light' : 'theme-dark'}`}>
16
18
  <Image
17
19
  className='bootstrap-status__logo'
18
20
  src='/static/images/logo_icon.png'
@@ -1,18 +1,21 @@
1
1
  .kratos-tab-bar {
2
- --kratos-tab-bar-color: #333;
3
- --kratos-tab-bar-active-color: #27ba9b;
2
+ --kratos-tab-bar-color: var(--kratos-color-text-dim, #4e6378);
3
+ --kratos-tab-bar-active-color: var(--kratos-color-primary, #28f0d4);
4
4
 
5
5
  position: fixed;
6
- right: 0;
7
- bottom: 0;
8
- left: 0;
6
+ right: 20px;
7
+ bottom: env(safe-area-inset-bottom);
8
+ left: 20px;
9
9
  z-index: 999;
10
10
  box-sizing: border-box;
11
11
  display: flex;
12
- height: calc(48PX + env(safe-area-inset-bottom));
13
- padding-bottom: env(safe-area-inset-bottom);
14
- border-top: 1PX solid #eee;
15
- background: #fff;
12
+ height: 104px;
13
+ padding: 0 8px;
14
+ border: 1PX solid var(--kratos-color-border-accent, rgba(120, 230, 215, 0.16));
15
+ border-radius: 30px;
16
+ background: var(--kratos-dock-bg, rgba(10, 18, 30, 0.72));
17
+ box-shadow: 0 24px 64px rgba(0, 0, 0, 0.45);
18
+ backdrop-filter: blur(32px);
16
19
  }
17
20
 
18
21
  .kratos-tab-bar__item {
@@ -22,12 +25,25 @@
22
25
  align-items: center;
23
26
  justify-content: center;
24
27
  flex-direction: column;
25
- transform: translateY(clamp(1PX, env(safe-area-inset-bottom), 7PX));
26
28
  color: var(--kratos-tab-bar-color);
27
29
  font-size: 10PX;
28
30
  line-height: 12PX;
29
31
  }
30
32
 
33
+ /* 设计稿:激活项顶部霓虹发光条 */
34
+ .kratos-tab-bar__item--active::before {
35
+ position: absolute;
36
+ top: 0;
37
+ left: 50%;
38
+ width: 26px;
39
+ height: 3px;
40
+ border-radius: 3px;
41
+ background: var(--kratos-tab-bar-active-color);
42
+ box-shadow: 0 0 12px var(--kratos-tab-bar-active-color);
43
+ content: '';
44
+ transform: translateX(-50%);
45
+ }
46
+
31
47
  .kratos-tab-bar__icon {
32
48
  width: 28PX;
33
49
  height: 28PX;
@@ -65,7 +81,7 @@
65
81
  height: 7PX;
66
82
  border-right: 2PX solid var(--kratos-tab-bar-color);
67
83
  border-bottom: 2PX solid var(--kratos-tab-bar-color);
68
- background: #fff;
84
+ background: var(--kratos-dock-bg, rgba(10, 18, 30, 0.72));
69
85
  content: '';
70
86
  transform: rotate(45deg);
71
87
  }
@@ -87,6 +103,8 @@
87
103
 
88
104
  .kratos-tab-bar__text--active {
89
105
  color: var(--kratos-tab-bar-active-color);
106
+ font-weight: 700;
107
+ text-shadow: 0 0 12px currentColor;
90
108
  }
91
109
 
92
110
  .kratos-tab-bar__badge {
@@ -96,7 +114,8 @@
96
114
  width: 10PX;
97
115
  height: 10PX;
98
116
  box-sizing: border-box;
99
- border: 2PX solid #fff;
117
+ border: 2PX solid var(--kratos-dock-bg, rgba(10, 18, 30, 0.72));
100
118
  border-radius: 50%;
101
- background: #e5484d;
119
+ background: var(--kratos-color-danger, #ff4d6d);
120
+ box-shadow: 0 0 12px var(--kratos-color-danger, #ff4d6d);
102
121
  }
@@ -2,6 +2,7 @@ import { Image, Text, View } from '@tarojs/components'
2
2
  import { resolveModuleIcon, resolveStaticView } from '../module'
3
3
  import { APP_MENU_ROOT_ID, navigateAppRoute, useAppMenuBadges, useAppNavigation } from '../navigation'
4
4
  import { useI18n } from '../locales'
5
+ import { useThemeStore } from '../stores'
5
6
  import { resolveRootMenuId } from '../navigation-tree.mjs'
6
7
  import './KratosTabBar.scss'
7
8
 
@@ -10,11 +11,36 @@ export interface KratosTabBarProps {
10
11
  route: string
11
12
  }
12
13
 
14
+ /** 设计稿导航坞线稿图标(viewKey → SVG path)。 */
15
+ const TAB_ICON_PATHS: Record<string, string> = {
16
+ HOME: 'M3 11 12 3l9 8M5 10v10h14V10',
17
+ APP_ANALYTIC: 'M4 20V10M10 20V4M16 20v-7M21 20H3',
18
+ APP_REPORT: 'M6 4h9l5 5v11H6zM14 4v5h5',
19
+ MESSAGE_INBOX: 'M4 5h16v12H8l-4 4z',
20
+ PROFILE_HOME: 'M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8ZM4 21c0-4 3.5-6 8-6s8 2 8 6',
21
+ }
22
+
23
+ /** 按设计稿线稿生成随主题与激活态取色的图标地址,未知 viewKey 返回空串走后端图标兜底。 */
24
+ const tabIconSrc = (viewKey: string, active: boolean, theme: string): string => {
25
+ const path = TAB_ICON_PATHS[viewKey]
26
+ if (!path) return ''
27
+ const color = active
28
+ ? theme === 'light'
29
+ ? '#039e8c'
30
+ : '#28f0d4'
31
+ : theme === 'light'
32
+ ? '#9aabbb'
33
+ : '#4e6378'
34
+ const svg = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="${color}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="${path}"/></svg>`
35
+ return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`
36
+ }
37
+
13
38
  /** 根据动态菜单显示的自绘 TabBar。 */
14
39
  export function KratosTabBar({ route }: KratosTabBarProps) {
15
40
  const menus = useAppNavigation((state) => state.menus)
16
41
  const tabBar = useAppNavigation((state) => state.tabBar)
17
42
  const { t } = useI18n()
43
+ const themeStore = useThemeStore()
18
44
 
19
45
  /** 按稳定 viewKey 优先取界面语言标签,未配置的菜单回退后端标题。 */
20
46
  const tabBarTitleKeys: Record<string, string> = {
@@ -35,14 +61,19 @@ export function KratosTabBar({ route }: KratosTabBarProps) {
35
61
  if (!activeMenu || !tabBar.length) return null
36
62
 
37
63
  return (
38
- <View className='kratos-tab-bar'>
64
+ <View
65
+ className={`kratos-tab-bar ${
66
+ themeStore.theme === 'light' ? 'theme-light' : 'theme-dark'
67
+ }`}
68
+ >
39
69
  {tabBar.map((item) => {
40
70
  const active = activeMenu.id === item.id
41
- const icon = resolveModuleIcon(active && item.selectedIcon ? item.selectedIcon : item.icon)
71
+ const designIcon = tabIconSrc(item.viewKey, active, themeStore.theme)
72
+ const icon = designIcon || resolveModuleIcon(active && item.selectedIcon ? item.selectedIcon : item.icon)
42
73
  return (
43
74
  <View
44
75
  key={item.id}
45
- className='kratos-tab-bar__item'
76
+ className={`kratos-tab-bar__item${active ? ' kratos-tab-bar__item--active' : ''}`}
46
77
  onClick={() => navigateAppRoute(item.path)}
47
78
  >
48
79
  {icon ? (
@@ -12,18 +12,18 @@
12
12
  .mfa-recovery-dialog__panel {
13
13
  width: min(100%, 640px);
14
14
  overflow: hidden;
15
- background-color: #fff;
15
+ background-color: var(--kratos-color-surface-solid);
16
16
  border-radius: 16px;
17
17
  box-shadow: 0 20px 64px rgb(0 0 0 / 20%);
18
18
  }
19
19
 
20
20
  .mfa-recovery-dialog__header {
21
21
  padding: 28px 32px;
22
- border-bottom: 1px solid #eee;
22
+ border-bottom: 1PX solid var(--kratos-color-border);
23
23
  }
24
24
 
25
25
  .mfa-recovery-dialog__title {
26
- color: #222;
26
+ color: var(--kratos-color-text);
27
27
  font-size: 34px;
28
28
  font-weight: 600;
29
29
  }
@@ -38,10 +38,11 @@
38
38
  min-height: 220px;
39
39
  margin-bottom: 16px;
40
40
  padding: 20px 24px;
41
- color: #222;
41
+ color: var(--kratos-color-text);
42
42
  font-size: 30px;
43
43
  line-height: 1.6;
44
- border: 1px solid #ddd;
44
+ border: 1PX solid var(--kratos-color-border);
45
+ background-color: var(--kratos-color-surface-2);
45
46
  border-radius: 8px;
46
47
  overflow-wrap: anywhere;
47
48
  white-space: pre-wrap;
@@ -53,10 +54,10 @@
53
54
  height: 58px;
54
55
  margin: 0;
55
56
  padding: 0 18px;
56
- color: #27ba9b;
57
+ color: var(--kratos-color-primary);
57
58
  font-size: 24px;
58
59
  line-height: 58px;
59
- background-color: #f0fbf8;
60
+ background-color: var(--kratos-color-primary-soft);
60
61
  border: 0;
61
62
  border-radius: 8px;
62
63
  }
@@ -69,7 +70,7 @@
69
70
  .mfa-recovery-dialog__warning {
70
71
  display: block;
71
72
  margin-top: 12px;
72
- color: #c58b00;
73
+ color: var(--kratos-color-warning);
73
74
  font-size: 24px;
74
75
  line-height: 1.5;
75
76
  }
@@ -85,10 +86,10 @@
85
86
  height: 72px;
86
87
  margin: 0;
87
88
  padding: 0 24px;
88
- color: #fff;
89
+ color: var(--kratos-color-on-primary);
89
90
  font-size: 28px;
90
91
  line-height: 72px;
91
- background-color: #27ba9b;
92
+ background-color: var(--kratos-color-primary);
92
93
  border: 0;
93
94
  border-radius: 8px;
94
95
  }
@@ -15,7 +15,7 @@
15
15
  .mfa-setup-panel__uri-text {
16
16
  flex: 1;
17
17
  min-width: 0;
18
- color: #666;
18
+ color: var(--kratos-color-text-muted);
19
19
  font-size: 24px;
20
20
  line-height: 1.5;
21
21
  overflow-wrap: anywhere;
@@ -30,8 +30,8 @@
30
30
  height: 58px;
31
31
  margin: 0;
32
32
  padding: 0;
33
- color: #27ba9b;
34
- background: #f0fbf8;
33
+ color: var(--kratos-color-primary);
34
+ background: var(--kratos-color-primary-soft);
35
35
  border: 0;
36
36
  border-radius: 8px;
37
37
  }
@@ -66,5 +66,5 @@
66
66
  .mfa-setup-panel__copy-front {
67
67
  right: 0;
68
68
  bottom: 0;
69
- background: #f0fbf8;
69
+ background: var(--kratos-color-primary-soft);
70
70
  }
@@ -18,7 +18,7 @@
18
18
  max-width: 640px;
19
19
  overflow: hidden;
20
20
  border-radius: 16px;
21
- background-color: #fff;
21
+ background-color: var(--kratos-color-surface-solid);
22
22
  box-shadow: 0 20px 64px rgba(0, 0, 0, 0.2);
23
23
  }
24
24
 
@@ -27,18 +27,18 @@
27
27
  align-items: center;
28
28
  justify-content: space-between;
29
29
  padding: 28px 32px;
30
- border-bottom: 1px solid #eee;
30
+ border-bottom: 1PX solid var(--kratos-color-border);
31
31
  }
32
32
 
33
33
  .password-verify-dialog__title {
34
- color: #222;
34
+ color: var(--kratos-color-text);
35
35
  font-size: 34px;
36
36
  font-weight: 600;
37
37
  }
38
38
 
39
39
  .password-verify-dialog__close {
40
40
  padding: 0 8px;
41
- color: #999;
41
+ color: var(--kratos-color-text-muted);
42
42
  font-size: 42px;
43
43
  line-height: 1;
44
44
  }
@@ -55,14 +55,14 @@
55
55
 
56
56
  .password-verify-dialog__description {
57
57
  margin-bottom: 24px;
58
- color: #666;
58
+ color: var(--kratos-color-text-muted);
59
59
  font-size: 26px;
60
60
  line-height: 1.6;
61
61
  }
62
62
 
63
63
  .password-verify-dialog__label {
64
64
  margin-bottom: 12px;
65
- color: #333;
65
+ color: var(--kratos-color-text);
66
66
  font-size: 28px;
67
67
  }
68
68
 
@@ -73,19 +73,19 @@
73
73
  height: 84px;
74
74
  margin: 0;
75
75
  padding: 0 24px;
76
- color: #222 !important;
76
+ color: var(--kratos-color-text) !important;
77
77
  font-size: 30px;
78
78
  line-height: 84px;
79
79
  text-align: left;
80
- background: #fff;
81
- border: 1px solid #ddd;
80
+ background: var(--kratos-color-surface-2);
81
+ border: 1PX solid var(--kratos-color-border);
82
82
  border-radius: 8px;
83
83
  outline: none;
84
84
  }
85
85
 
86
86
  .password-verify-dialog__error {
87
87
  margin-top: 10px;
88
- color: #e64340;
88
+ color: var(--kratos-color-danger);
89
89
  font-size: 24px;
90
90
  }
91
91
 
@@ -119,14 +119,14 @@
119
119
  }
120
120
 
121
121
  .password-verify-dialog__button--cancel {
122
- color: #555 !important;
123
- -webkit-text-fill-color: #555;
124
- background-color: #f3f3f3;
122
+ color: var(--kratos-color-text-muted) !important;
123
+ -webkit-text-fill-color: var(--kratos-color-text-muted);
124
+ background-color: var(--kratos-color-track);
125
125
  }
126
126
 
127
127
  .password-verify-dialog__button--confirm {
128
- color: #fff;
129
- background-color: #27ba9b;
128
+ color: var(--kratos-color-on-primary);
129
+ background-color: var(--kratos-color-primary);
130
130
  }
131
131
 
132
132
  .password-verify-dialog__button[disabled] {
@@ -134,13 +134,13 @@
134
134
  }
135
135
 
136
136
  .password-verify-dialog__button--cancel[disabled] {
137
- color: #555 !important;
138
- -webkit-text-fill-color: #555;
139
- background-color: #f3f3f3;
137
+ color: var(--kratos-color-text-muted) !important;
138
+ -webkit-text-fill-color: var(--kratos-color-text-muted);
139
+ background-color: var(--kratos-color-track);
140
140
  }
141
141
 
142
142
  .password-verify-dialog__button--confirm[disabled] {
143
- color: #fff !important;
144
- -webkit-text-fill-color: #fff;
145
- background-color: #27ba9b;
143
+ color: var(--kratos-color-on-primary) !important;
144
+ -webkit-text-fill-color: var(--kratos-color-on-primary);
145
+ background-color: var(--kratos-color-primary);
146
146
  }
package/src/navigation.ts CHANGED
@@ -6,7 +6,7 @@ import { resolveStaticView } from './module'
6
6
  import { matchLogicalPath, parseLogicalQuery } from './navigation-pattern.mjs'
7
7
  import { buildMenuTree } from './navigation-tree.mjs'
8
8
  import { hasValidToken } from './utils/auth'
9
- import { navigateToLogin } from './utils/navigation'
9
+ import { redirectToLogin } from './utils/navigation'
10
10
  import { getCurrentLocale, t } from './locales'
11
11
  import { useSettingStore } from './stores'
12
12
 
@@ -270,8 +270,9 @@ export function navigateAppRoute(rawRoute: string, options: { replace?: boolean
270
270
  launchAppStatus('NOT_FOUND')
271
271
  return
272
272
  }
273
+ // 守卫拦截用替换式跳转:登录页顶掉当前页,返回时不再弹回被拦截的页面形成循环。
273
274
  if (resolved.menu.access === 'AUTHENTICATED' && !hasValidToken()) {
274
- navigateToLogin(`/pages/bootstrap/index?route=${encodeURIComponent(rawRoute)}`)
275
+ redirectToLogin(`/pages/bootstrap/index?route=${encodeURIComponent(rawRoute)}`)
275
276
  return
276
277
  }
277
278
  if (resolved.menu.access === 'GUEST_ONLY' && hasValidToken()) {
@@ -327,7 +328,9 @@ function navigateTabRoute(url: string): void {
327
328
  if (tabNavigationTarget === targetRoute) tabNavigationTarget = undefined
328
329
  }
329
330
  if (process.env.TARO_ENV === 'h5') {
330
- void Taro.reLaunch({ url }).then(release, release)
331
+ void Taro.redirectTo({ url }).then(release, () => {
332
+ void Taro.reLaunch({ url }).then(release, release)
333
+ })
331
334
  return
332
335
  }
333
336
  if (nativeTabViewKeys.some((viewKey) => resolveStaticView(viewKey) === targetRoute)) {
package/src/pages.ts CHANGED
@@ -9,8 +9,10 @@ export const corePages: Record<string, KratosTaroPageConfig> = {
9
9
  navigationBarTitleText: '',
10
10
  },
11
11
  },
12
- 'pages/login/login': { style: { navigationBarTitleText: '' } },
13
- 'pages/login/protocal': { style: { navigationBarTitleText: '' } },
12
+ 'pages/login/login': {
13
+ style: { navigationStyle: 'custom', navigationBarTitleText: '' },
14
+ },
15
+ 'pages/login/protocal': { style: { navigationStyle: 'custom', navigationBarTitleText: '' } },
14
16
  'pages/webview/webview': { style: { navigationBarTitleText: '' } },
15
17
  'pages/status/index': {
16
18
  style: {
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: base/v1/config.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: base/v1/file.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: base/v1/language.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: base/v1/login.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: base/v1/mcp.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: base/v1/mfa.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: base/v1/oauth.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: base/v1/secret_crypto.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: base/v1/sse.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: common/v1/common.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: common/v1/types.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: google/protobuf/empty.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: google/protobuf/struct.proto
6
6
 
@@ -47,7 +47,7 @@ export interface Struct_FieldsEntry {
47
47
  */
48
48
  export interface Value {
49
49
  /** The kind of value. */
50
- kind:
50
+ kind?:
51
51
  | //
52
52
  /** Represents a null value. */
53
53
  { $case: "null_value"; null_value: NullValue }
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: google/protobuf/wrappers.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: system/app/v1/auth.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: system/app/v1/base_area.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: system/app/v1/base_dict.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: system/app/v1/base_menu.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: system/common/v1/common.proto
6
6
 
@@ -1,2 +1,3 @@
1
1
  export * from './setting'
2
+ export * from './theme'
2
3
  export * from './user'