@mathwiz/ui-components 0.1.7 → 0.1.9

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 (133) hide show
  1. package/README.md +11 -1
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/components/EquationRender/EquationRender.d.ts +6 -0
  4. package/dist/components/EquationRender/EquationRender.d.ts.map +1 -0
  5. package/dist/components/EquationRender/index.d.ts +3 -0
  6. package/dist/components/EquationRender/index.d.ts.map +1 -0
  7. package/dist/components/EquationRender/types.d.ts +40 -0
  8. package/dist/components/EquationRender/types.d.ts.map +1 -0
  9. package/dist/components/MathCard/MathCard.d.ts +14 -0
  10. package/dist/components/MathCard/MathCard.d.ts.map +1 -0
  11. package/dist/components/MathCard/MathCard.types.d.ts +151 -0
  12. package/dist/components/MathCard/MathCard.types.d.ts.map +1 -0
  13. package/dist/components/MathCard/components/AnswerInput.d.ts +4 -0
  14. package/dist/components/MathCard/components/AnswerInput.d.ts.map +1 -0
  15. package/dist/components/MathCard/components/Banner.d.ts +4 -0
  16. package/dist/components/MathCard/components/Banner.d.ts.map +1 -0
  17. package/dist/components/MathCard/components/Divider.d.ts +4 -0
  18. package/dist/components/MathCard/components/Divider.d.ts.map +1 -0
  19. package/dist/components/MathCard/components/ErrorState.d.ts +4 -0
  20. package/dist/components/MathCard/components/ErrorState.d.ts.map +1 -0
  21. package/dist/components/MathCard/components/Explanation.d.ts +4 -0
  22. package/dist/components/MathCard/components/Explanation.d.ts.map +1 -0
  23. package/dist/components/MathCard/components/LoadingState.d.ts +4 -0
  24. package/dist/components/MathCard/components/LoadingState.d.ts.map +1 -0
  25. package/dist/components/MathCard/components/Question.d.ts +4 -0
  26. package/dist/components/MathCard/components/Question.d.ts.map +1 -0
  27. package/dist/components/MathCard/components/ReviewContent.d.ts +4 -0
  28. package/dist/components/MathCard/components/ReviewContent.d.ts.map +1 -0
  29. package/dist/components/MathCard/components/SubmitButton.d.ts +4 -0
  30. package/dist/components/MathCard/components/SubmitButton.d.ts.map +1 -0
  31. package/dist/components/MathCard/context.d.ts +11 -0
  32. package/dist/components/MathCard/context.d.ts.map +1 -0
  33. package/dist/components/MathCard/index.d.ts +7 -0
  34. package/dist/components/MathCard/index.d.ts.map +1 -0
  35. package/dist/components/MathCard/styles.d.ts +83 -0
  36. package/dist/components/MathCard/styles.d.ts.map +1 -0
  37. package/dist/components/MathCard/utils/contentRenderer.d.ts +40 -0
  38. package/dist/components/MathCard/utils/contentRenderer.d.ts.map +1 -0
  39. package/dist/components/MathCard/utils/templateParser.d.ts +44 -0
  40. package/dist/components/MathCard/utils/templateParser.d.ts.map +1 -0
  41. package/dist/components/MathGraph/GraphContainer.d.ts +11 -0
  42. package/dist/components/MathGraph/GraphContainer.d.ts.map +1 -0
  43. package/dist/components/MathGraph/MathGraph.d.ts +8 -0
  44. package/dist/components/MathGraph/MathGraph.d.ts.map +1 -0
  45. package/dist/components/MathGraph/MathGraphErrorBoundary.d.ts +19 -0
  46. package/dist/components/MathGraph/MathGraphErrorBoundary.d.ts.map +1 -0
  47. package/dist/components/MathGraph/index.d.ts +10 -0
  48. package/dist/components/MathGraph/index.d.ts.map +1 -0
  49. package/dist/components/MathGraph/types.d.ts +77 -0
  50. package/dist/components/MathGraph/types.d.ts.map +1 -0
  51. package/dist/components/MathGraph/utils/boundingBoxCalculator.d.ts +31 -0
  52. package/dist/components/MathGraph/utils/boundingBoxCalculator.d.ts.map +1 -0
  53. package/dist/components/MathGraph/utils/debugBoundingBox.d.ts +9 -0
  54. package/dist/components/MathGraph/utils/debugBoundingBox.d.ts.map +1 -0
  55. package/dist/components/MathGraph/utils/manualCalculation.d.ts +54 -0
  56. package/dist/components/MathGraph/utils/manualCalculation.d.ts.map +1 -0
  57. package/dist/components/MathGraph/utils/realTimeTest.d.ts +7 -0
  58. package/dist/components/MathGraph/utils/realTimeTest.d.ts.map +1 -0
  59. package/dist/components/MathGraph/utils/testBoundingBox.d.ts +5 -0
  60. package/dist/components/MathGraph/utils/testBoundingBox.d.ts.map +1 -0
  61. package/dist/components/MathGraph/utils/testRefResolution.d.ts +5 -0
  62. package/dist/components/MathGraph/utils/testRefResolution.d.ts.map +1 -0
  63. package/dist/components/MathSessionContainer/MathSessionContainer.d.ts +18 -0
  64. package/dist/components/MathSessionContainer/MathSessionContainer.d.ts.map +1 -0
  65. package/dist/components/MathSessionContainer/MathSessionContainer.types.d.ts +45 -0
  66. package/dist/components/MathSessionContainer/MathSessionContainer.types.d.ts.map +1 -0
  67. package/dist/components/MathSessionContainer/hooks/index.d.ts +7 -0
  68. package/dist/components/MathSessionContainer/hooks/index.d.ts.map +1 -0
  69. package/dist/components/MathSessionContainer/hooks/useGeometryManagement.d.ts +17 -0
  70. package/dist/components/MathSessionContainer/hooks/useGeometryManagement.d.ts.map +1 -0
  71. package/dist/components/MathSessionContainer/hooks/useSessionCalculations.d.ts +17 -0
  72. package/dist/components/MathSessionContainer/hooks/useSessionCalculations.d.ts.map +1 -0
  73. package/dist/components/MathSessionContainer/hooks/useSessionEventHandlers.d.ts +17 -0
  74. package/dist/components/MathSessionContainer/hooks/useSessionEventHandlers.d.ts.map +1 -0
  75. package/dist/components/MathSessionContainer/index.d.ts +3 -0
  76. package/dist/components/MathSessionContainer/index.d.ts.map +1 -0
  77. package/dist/config/types.d.ts.map +1 -1
  78. package/dist/data-sources/api-data-source.d.ts +2 -1
  79. package/dist/data-sources/api-data-source.d.ts.map +1 -1
  80. package/dist/data-sources/custom-data-source.d.ts +2 -1
  81. package/dist/data-sources/custom-data-source.d.ts.map +1 -1
  82. package/dist/data-sources/mock-data-source.d.ts +2 -1
  83. package/dist/data-sources/mock-data-source.d.ts.map +1 -1
  84. package/dist/index.cjs +683 -23
  85. package/dist/index.cjs.map +1 -1
  86. package/dist/index.d.ts +13 -0
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.mjs +67814 -2302
  89. package/dist/index.mjs.map +1 -1
  90. package/dist/mockServiceWorker.js +348 -344
  91. package/dist/mocks/handlers.d.ts.map +1 -1
  92. package/dist/pages/MathSessionPage/MathSessionPage.d.ts +6 -0
  93. package/dist/pages/MathSessionPage/MathSessionPage.d.ts.map +1 -0
  94. package/dist/pages/MathSessionPage/index.d.ts +3 -0
  95. package/dist/pages/MathSessionPage/index.d.ts.map +1 -0
  96. package/dist/pages/MathSessionPage/types.d.ts +72 -0
  97. package/dist/pages/MathSessionPage/types.d.ts.map +1 -0
  98. package/dist/pages/TestPage/TestPage.d.ts +8 -0
  99. package/dist/pages/TestPage/TestPage.d.ts.map +1 -0
  100. package/dist/stores/mathSessionStore.d.ts +79 -0
  101. package/dist/stores/mathSessionStore.d.ts.map +1 -0
  102. package/package.json +18 -8
  103. package/dist/App.css +0 -570
  104. package/dist/components/Button/Button.css +0 -214
  105. package/dist/components/ContentAccordion/ContentAccordion.css +0 -268
  106. package/dist/components/HeroUISideNavigation.d.ts +0 -17
  107. package/dist/components/HeroUISideNavigation.d.ts.map +0 -1
  108. package/dist/components/MathWizHeader/MathWizHeader.css +0 -333
  109. package/dist/components/SideNavigation.d.ts +0 -24
  110. package/dist/components/SideNavigation.d.ts.map +0 -1
  111. package/dist/components/SideNavigationHU.d.ts +0 -17
  112. package/dist/components/SideNavigationHU.d.ts.map +0 -1
  113. package/dist/components/Sidebar/Sidebar.css +0 -207
  114. package/dist/components/Submenu/Submenu.css +0 -98
  115. package/dist/components/UserProfile/UserProfile.css +0 -141
  116. package/dist/components/components.css +0 -222
  117. package/dist/components/gradeNavigate/GradeNavigatePage.d.ts +0 -5
  118. package/dist/components/gradeNavigate/GradeNavigatePage.d.ts.map +0 -1
  119. package/dist/components/gradeNavigate/GradeNavigatePagePresentational.d.ts +0 -20
  120. package/dist/components/gradeNavigate/GradeNavigatePagePresentational.d.ts.map +0 -1
  121. package/dist/components/gradeNavigate/HeaderContainer.d.ts +0 -13
  122. package/dist/components/gradeNavigate/HeaderContainer.d.ts.map +0 -1
  123. package/dist/components/gradeNavigate/HeaderPresentational.d.ts +0 -23
  124. package/dist/components/gradeNavigate/HeaderPresentational.d.ts.map +0 -1
  125. package/dist/components/gradeNavigate/index.d.ts +0 -7
  126. package/dist/components/gradeNavigate/index.d.ts.map +0 -1
  127. package/dist/components/radarAbility/AbilityAssessmentDashboard/AbilityAssessmentDashboard.module.css +0 -60
  128. package/dist/index.css +0 -63
  129. package/dist/pages/GradeUnitBrowserPage/GradeUnitBrowserPage.css +0 -250
  130. package/dist/stories/button.css +0 -30
  131. package/dist/stories/header.css +0 -32
  132. package/dist/stories/page.css +0 -68
  133. package/dist/styles/index.css +0 -154
@@ -1,250 +0,0 @@
1
- /* GradeUnitBrowserPage 样式 */
2
-
3
- .grade-unit-browser-page {
4
- display: grid;
5
- grid-template-areas:
6
- "header header"
7
- "sidebar content";
8
- grid-template-rows: auto 1fr;
9
- grid-template-columns: 300px 1fr;
10
- min-height: 100vh;
11
- background-color: var(--page-background, #f8fafc);
12
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
13
- }
14
-
15
- .grade-unit-browser-page--sidebar-collapsed {
16
- grid-template-columns: 60px 1fr;
17
- }
18
-
19
- /* Header 区域 */
20
- .header-area {
21
- grid-area: header;
22
- position: sticky;
23
- top: 0;
24
- z-index: 100;
25
- background: white;
26
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
27
- width: 100%;
28
- }
29
-
30
- /* Sidebar 区域 */
31
- .sidebar-area {
32
- grid-area: sidebar;
33
- background: white;
34
- border-right: 1px solid var(--border-color, #e2e8f0);
35
- overflow-y: auto;
36
- height: 100vh;
37
- position: sticky;
38
- top: 0;
39
- }
40
-
41
- /* 内容区域 */
42
- .content-area {
43
- grid-area: content;
44
- padding: 24px;
45
- overflow-y: auto;
46
- overflow-x: hidden;
47
- background: white;
48
- min-height: calc(100vh - 80px);
49
- width: 100%;
50
- min-width: 0;
51
- max-width: 100%;
52
- box-sizing: border-box;
53
- }
54
-
55
- /* 防止内容撑开容器 - 类似 App.css 中 main-view 的处理 */
56
- .content-area h1,
57
- .content-area h2,
58
- .content-area h3,
59
- .content-area h4,
60
- .content-area h5,
61
- .content-area h6,
62
- .content-area p,
63
- .content-area div,
64
- .content-area span {
65
- max-width: 100%;
66
- word-wrap: break-word;
67
- overflow-wrap: break-word;
68
- word-break: break-word;
69
- white-space: normal;
70
- box-sizing: border-box;
71
- }
72
-
73
- /* 加载状态 */
74
- .loading-spinner {
75
- display: flex;
76
- justify-content: center;
77
- align-items: center;
78
- height: 200px;
79
- color: var(--text-secondary, #64748b);
80
- font-size: 16px;
81
- }
82
-
83
- .loading-spinner::before {
84
- content: '';
85
- width: 20px;
86
- height: 20px;
87
- border: 2px solid var(--border-color, #e2e8f0);
88
- border-top: 2px solid var(--primary-color, #3b82f6);
89
- border-radius: 50%;
90
- animation: spin 1s linear infinite;
91
- margin-right: 12px;
92
- }
93
-
94
- @keyframes spin {
95
- 0% {
96
- transform: rotate(0deg);
97
- }
98
-
99
- 100% {
100
- transform: rotate(360deg);
101
- }
102
- }
103
-
104
- /* 错误状态 */
105
- .error-message {
106
- text-align: center;
107
- padding: 40px 20px;
108
- color: var(--error-color, #dc2626);
109
- background: var(--error-bg, #fef2f2);
110
- border: 1px solid var(--error-border, #fecaca);
111
- border-radius: 8px;
112
- margin: 20px;
113
- }
114
-
115
- .retry-button {
116
- display: block;
117
- margin: 20px auto;
118
- padding: 10px 20px;
119
- background: var(--primary-color, #3b82f6);
120
- color: white;
121
- border: none;
122
- border-radius: 6px;
123
- cursor: pointer;
124
- font-size: 14px;
125
- transition: background-color 0.2s;
126
- }
127
-
128
- .retry-button:hover {
129
- background: var(--primary-hover, #2563eb);
130
- }
131
-
132
- /* 空状态 */
133
- .empty-state {
134
- text-align: center;
135
- padding: 60px 20px;
136
- color: var(--text-secondary, #64748b);
137
- }
138
-
139
- .empty-state h3 {
140
- margin: 0 0 8px 0;
141
- font-size: 18px;
142
- font-weight: 600;
143
- }
144
-
145
- .empty-state p {
146
- margin: 0;
147
- font-size: 14px;
148
- }
149
-
150
- /* 响应式设计 */
151
- @media (max-width: 768px) {
152
- .grade-unit-browser-page {
153
- grid-template-areas:
154
- "header"
155
- "content";
156
- grid-template-columns: 1fr;
157
- }
158
-
159
- .sidebar-area {
160
- display: none;
161
- }
162
-
163
- .content-area {
164
- padding: 16px;
165
- min-height: calc(100vh - 60px);
166
- }
167
-
168
- /* 移动端侧边栏展开状态 */
169
- .grade-unit-browser-page.sidebar-open {
170
- grid-template-areas:
171
- "header"
172
- "sidebar"
173
- "content";
174
- }
175
-
176
- .grade-unit-browser-page.sidebar-open .sidebar-area {
177
- display: block;
178
- height: auto;
179
- position: relative;
180
- border-right: none;
181
- border-bottom: 1px solid var(--border-color, #e2e8f0);
182
- }
183
- }
184
-
185
- @media (max-width: 480px) {
186
- .content-area {
187
- padding: 12px;
188
- }
189
-
190
- .error-message {
191
- margin: 10px;
192
- padding: 20px 16px;
193
- }
194
-
195
- .retry-button {
196
- margin: 10px auto;
197
- padding: 8px 16px;
198
- font-size: 13px;
199
- }
200
- }
201
-
202
- /* 暗色主题支持 */
203
- @media (prefers-color-scheme: dark) {
204
- .grade-unit-browser-page {
205
- background-color: var(--page-background-dark, #0f172a);
206
- color: var(--text-primary-dark, #f1f5f9);
207
- }
208
-
209
- .header-area,
210
- .sidebar-area,
211
- .content-area {
212
- background: var(--surface-dark, #1e293b);
213
- }
214
-
215
- .sidebar-area {
216
- border-right-color: var(--border-color-dark, #334155);
217
- }
218
-
219
- .error-message {
220
- color: var(--error-color-dark, #f87171);
221
- background: var(--error-bg-dark, #7f1d1d);
222
- border-color: var(--error-border-dark, #b91c1c);
223
- }
224
- }
225
-
226
- /* 无障碍性支持 */
227
- .grade-unit-browser-page:focus {
228
- outline: 2px solid var(--focus-ring, #3b82f6);
229
- outline-offset: 2px;
230
- }
231
-
232
- .retry-button:focus {
233
- outline: 2px solid var(--focus-ring, #3b82f6);
234
- outline-offset: 2px;
235
- }
236
-
237
- /* 高对比度模式支持 */
238
- @media (prefers-contrast: high) {
239
- .grade-unit-browser-page {
240
- border: 1px solid black;
241
- }
242
-
243
- .sidebar-area {
244
- border-right: 2px solid black;
245
- }
246
-
247
- .retry-button {
248
- border: 2px solid black;
249
- }
250
- }
@@ -1,30 +0,0 @@
1
- .storybook-button {
2
- display: inline-block;
3
- cursor: pointer;
4
- border: 0;
5
- border-radius: 3em;
6
- font-weight: 700;
7
- line-height: 1;
8
- font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
9
- }
10
- .storybook-button--primary {
11
- background-color: #555ab9;
12
- color: white;
13
- }
14
- .storybook-button--secondary {
15
- box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset;
16
- background-color: transparent;
17
- color: #333;
18
- }
19
- .storybook-button--small {
20
- padding: 10px 16px;
21
- font-size: 12px;
22
- }
23
- .storybook-button--medium {
24
- padding: 11px 20px;
25
- font-size: 14px;
26
- }
27
- .storybook-button--large {
28
- padding: 12px 24px;
29
- font-size: 16px;
30
- }
@@ -1,32 +0,0 @@
1
- .storybook-header {
2
- display: flex;
3
- justify-content: space-between;
4
- align-items: center;
5
- border-bottom: 1px solid rgba(0, 0, 0, 0.1);
6
- padding: 15px 20px;
7
- font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
8
- }
9
-
10
- .storybook-header svg {
11
- display: inline-block;
12
- vertical-align: top;
13
- }
14
-
15
- .storybook-header h1 {
16
- display: inline-block;
17
- vertical-align: top;
18
- margin: 6px 0 6px 10px;
19
- font-weight: 700;
20
- font-size: 20px;
21
- line-height: 1;
22
- }
23
-
24
- .storybook-header button + button {
25
- margin-left: 10px;
26
- }
27
-
28
- .storybook-header .welcome {
29
- margin-right: 10px;
30
- color: #333;
31
- font-size: 14px;
32
- }
@@ -1,68 +0,0 @@
1
- .storybook-page {
2
- margin: 0 auto;
3
- padding: 48px 20px;
4
- max-width: 600px;
5
- color: #333;
6
- font-size: 14px;
7
- line-height: 24px;
8
- font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
9
- }
10
-
11
- .storybook-page h2 {
12
- display: inline-block;
13
- vertical-align: top;
14
- margin: 0 0 4px;
15
- font-weight: 700;
16
- font-size: 32px;
17
- line-height: 1;
18
- }
19
-
20
- .storybook-page p {
21
- margin: 1em 0;
22
- }
23
-
24
- .storybook-page a {
25
- color: inherit;
26
- }
27
-
28
- .storybook-page ul {
29
- margin: 1em 0;
30
- padding-left: 30px;
31
- }
32
-
33
- .storybook-page li {
34
- margin-bottom: 8px;
35
- }
36
-
37
- .storybook-page .tip {
38
- display: inline-block;
39
- vertical-align: top;
40
- margin-right: 10px;
41
- border-radius: 1em;
42
- background: #e7fdd8;
43
- padding: 4px 12px;
44
- color: #357a14;
45
- font-weight: 700;
46
- font-size: 11px;
47
- line-height: 12px;
48
- }
49
-
50
- .storybook-page .tip-wrapper {
51
- margin-top: 40px;
52
- margin-bottom: 40px;
53
- font-size: 13px;
54
- line-height: 20px;
55
- }
56
-
57
- .storybook-page .tip-wrapper svg {
58
- display: inline-block;
59
- vertical-align: top;
60
- margin-top: 3px;
61
- margin-right: 4px;
62
- width: 12px;
63
- height: 12px;
64
- }
65
-
66
- .storybook-page .tip-wrapper svg path {
67
- fill: #1ea7fd;
68
- }
@@ -1,154 +0,0 @@
1
- /* 组件库统一样式入口文件 */
2
-
3
- /* ==================== 组件样式导入 ==================== */
4
-
5
- /* 基础组件样式 */
6
- @import '../components/Button/Button.css';
7
-
8
- /* 布局组件样式 */
9
- @import '../components/MathWizHeader/MathWizHeader.css';
10
- @import '../components/Sidebar/Sidebar.css';
11
- @import '../components/ContentAccordion/ContentAccordion.css';
12
-
13
- /* 其他组件样式 */
14
- @import '../components/Submenu/Submenu.css';
15
- @import '../components/UserProfile/UserProfile.css';
16
-
17
- /* 页面级组件样式 */
18
- @import '../pages/GradeUnitBrowserPage/GradeUnitBrowserPage.css';
19
-
20
- /* ==================== CSS 变量定义 (设计令牌) ==================== */
21
- :root {
22
- /* 主色调 */
23
- --primary-color: #3b82f6;
24
- --primary-hover: #2563eb;
25
- --primary-active: #1d4ed8;
26
-
27
- /* 背景色 */
28
- --bg-primary: #ffffff;
29
- --bg-secondary: #f8fafc;
30
- --bg-tertiary: #f1f5f9;
31
-
32
- /* 文字色 */
33
- --text-primary: #1e293b;
34
- --text-secondary: #64748b;
35
- --text-tertiary: #94a3b8;
36
-
37
- /* 边框色 */
38
- --border-light: #e2e8f0;
39
- --border-medium: #cbd5e1;
40
- --border-dark: #94a3b8;
41
-
42
- /* 状态色 */
43
- --success-color: #10b981;
44
- --warning-color: #f59e0b;
45
- --error-color: #ef4444;
46
- --info-color: #3b82f6;
47
-
48
- /* 阴影 */
49
- --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
50
- --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
51
- --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
52
-
53
- /* 圆角 */
54
- --radius-sm: 0.25rem;
55
- --radius-md: 0.375rem;
56
- --radius-lg: 0.5rem;
57
- --radius-xl: 0.75rem;
58
-
59
- /* 间距 */
60
- --spacing-xs: 0.25rem;
61
- --spacing-sm: 0.5rem;
62
- --spacing-md: 1rem;
63
- --spacing-lg: 1.5rem;
64
- --spacing-xl: 2rem;
65
- --spacing-2xl: 3rem;
66
-
67
- /* 字体大小 */
68
- --text-xs: 0.75rem;
69
- --text-sm: 0.875rem;
70
- --text-base: 1rem;
71
- --text-lg: 1.125rem;
72
- --text-xl: 1.25rem;
73
- --text-2xl: 1.5rem;
74
- --text-3xl: 1.875rem;
75
-
76
- /* 字体粗细 */
77
- --font-normal: 400;
78
- --font-medium: 500;
79
- --font-semibold: 600;
80
- --font-bold: 700;
81
-
82
- /* 渐变背景 */
83
- --header-bg: linear-gradient(to right, #8b5cf6, #ec4899, #ef4444);
84
- --sidebar-bg: linear-gradient(180deg, #f8fafc 0%, #e2e8f0 100%);
85
- }
86
-
87
- /* ==================== 全局重置和基础样式 ==================== */
88
-
89
- * {
90
- box-sizing: border-box;
91
- margin: 0;
92
- padding: 0;
93
- }
94
-
95
- body {
96
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
97
- 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
98
- sans-serif;
99
- -webkit-font-smoothing: antialiased;
100
- -moz-osx-font-smoothing: grayscale;
101
- line-height: 1.5;
102
- color: var(--text-primary);
103
- background-color: var(--bg-primary);
104
- }
105
-
106
- /* 链接样式重置 */
107
- a {
108
- color: inherit;
109
- text-decoration: none;
110
- }
111
-
112
- a:hover {
113
- text-decoration: underline;
114
- }
115
-
116
- /* 按钮样式重置 */
117
- button {
118
- border: none;
119
- background: none;
120
- cursor: pointer;
121
- font-family: inherit;
122
- }
123
-
124
- button:disabled {
125
- cursor: not-allowed;
126
- opacity: 0.6;
127
- }
128
-
129
- /* 输入框样式重置 */
130
- input, textarea, select {
131
- font-family: inherit;
132
- border: 1px solid var(--border-medium);
133
- border-radius: var(--radius-md);
134
- padding: var(--spacing-sm) var(--spacing-md);
135
- background-color: var(--bg-primary);
136
- }
137
-
138
- input:focus, textarea:focus, select:focus {
139
- outline: none;
140
- border-color: var(--primary-color);
141
- box-shadow: 0 0 0 3px rgb(59 130 246 / 0.1);
142
- }
143
-
144
- /* 列表样式重置 */
145
- ul, ol {
146
- list-style: none;
147
- }
148
-
149
- /* 图片样式重置 */
150
- img {
151
- max-width: 100%;
152
- height: auto;
153
- display: block;
154
- }