@microi.net/cli 6.2.1 → 6.2.3

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 (71) hide show
  1. package/.codebuddy-plugin/marketplace.json +2 -2
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/.workbuddy-plugin/marketplace.json +2 -2
  5. package/.workbuddy-plugin/plugin.json +1 -1
  6. package/assets/build-meta.json +5 -5
  7. package/cordis.patch.yml +1 -1
  8. package/package.json +1 -1
  9. package/scripts/mcp-server.js +147 -121
  10. package/scripts/microi-cli.js +62 -62
  11. package/scripts/microi-skills.meta.json +279 -264
  12. package/skills/.microi-skills-version.json +2 -2
  13. package/skills/.progressive-disclosure-manifest.json +101 -101
  14. package/skills/README.md +1 -1
  15. package/skills/app-store/SKILL.md +7 -6
  16. package/skills/microi-ai-application/SKILL.md +5 -5
  17. package/skills/microi-client-frontend/SKILL.md +21 -15
  18. package/skills/microi-client-frontend/references/progressive-02-8-/350/277/220/350/241/214/346/227/266/351/253/230/351/242/221/345/235/221/345/244/215/347/233/230.md +9 -1
  19. package/skills/microi-codex/SKILL.md +2 -0
  20. package/skills/microi-codex-installer/SKILL.md +6 -0
  21. package/skills/microi-datasource-mapping/SKILL.md +6 -0
  22. package/skills/microi-db-schema/SKILL.md +8 -0
  23. package/skills/microi-db-schema/references/form-component-options.md +7 -0
  24. package/skills/microi-deployment/SKILL.md +3 -3
  25. package/skills/microi-deployment/references/deployment-matrix.md +1 -1
  26. package/skills/microi-docs-coverage/references/capability-map.md +13 -13
  27. package/skills/microi-form-engine/SKILL.md +46 -3
  28. package/skills/microi-form-engine/references/business-numbering.md +70 -0
  29. package/skills/microi-form-engine/references/component-catalog.md +4 -0
  30. package/skills/microi-form-engine/references/component-config-index.md +359 -0
  31. package/skills/microi-form-engine/references/data-source-events.md +13 -2
  32. package/skills/microi-form-engine/references/form-generation-quality.md +160 -0
  33. package/skills/microi-form-layout/SKILL.md +1 -1
  34. package/skills/microi-frontend-sdk/references/progressive-01-token-/345/275/223/345/211/215/347/231/273/345/275/225/347/224/250/346/210/267/344/270/216/345/275/223/345/211/215/347/273/210/347/253/257/347/231/273/345/275/225/345/215/217/350/256/256.md +6 -0
  35. package/skills/microi-microservice/SKILL.md +387 -382
  36. package/skills/microi-microservice/references/runtime-delivery.md +15 -0
  37. package/skills/microi-system-delivery/SKILL.md +7 -0
  38. package/skills/microi-system-delivery/references/delivery-pitfalls.md +5 -0
  39. package/skills/microi-ui/SKILL.md +192 -192
  40. package/skills/microi-ui/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/234/272/346/231/257/350/223/235/345/233/276.md +183 -183
  41. package/skills/microi-uniapp-frontend/SKILL.md +3 -1
  42. package/skills/microi.v8.js +6 -4
  43. package/skills/module-engine/SKILL.md +13 -1
  44. package/skills/scripts/sync-embedded-skills.mjs +13 -0
  45. package/skills/ui-design/SKILL.md +227 -223
  46. package/skills/ui-design/assets/pattern-showcase/index.html +2 -2
  47. package/skills/ui-design/assets/templates/MCI-DESIGN.md +221 -206
  48. package/skills/ui-design/references/data-workspace-density.md +77 -0
  49. package/skills/ui-design/references/design-pattern-library.md +186 -184
  50. package/skills/ui-design/references/mci-design-contract.md +163 -163
  51. package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +165 -164
  52. package/skills/ui-design/references/progressive-03-/345/212/250/346/225/210/350/247/204/350/214/203-/344/270/260/345/257/214/344/275/206/344/270/215/345/215/241.md +237 -235
  53. package/skills/ui-design/references/progressive-04-/347/273/204/344/273/266/351/243/216/346/240/274/351/200/237/346/237/245.md +154 -152
  54. package/skills/ui-design/references/progressive-07-/351/200/237/346/237/245-/344/273/216/345/244/264/346/220/255/345/273/272/344/270/200/344/270/252/347/247/273/345/212/250/347/253/257/351/241/265/351/235/242.md +207 -207
  55. package/skills/uniapp-mall-assets/SKILL.md +10 -2
  56. package/skills/v8-crud-api/SKILL.md +2 -1
  57. package/skills/v8-explorer-tree/SKILL.md +22 -1
  58. package/skills/v8-file-upload/SKILL.md +283 -283
  59. package/skills/v8-file-upload/references/progressive-01-/345/205/254/346/234/211/346/241/266-vs-/347/247/201/346/234/211/346/241/266.md +7 -1
  60. package/skills/v8-frontend-events/SKILL.md +14 -6
  61. package/skills/v8-image-processing/SKILL.md +13 -2
  62. package/skills/v8-image-processing/references/api-reference.md +49 -3
  63. package/skills/v8-saas-multi-tenant/SKILL.md +6 -0
  64. package/skills/v8-security/SKILL.md +11 -1
  65. package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +6 -1
  66. package/skills/v8-sql-query/SKILL.md +38 -1
  67. package/skills/v8-sql-query/examples/business-query.js +18 -0
  68. package/skills/v8-table-event/SKILL.md +51 -2
  69. package/skills/v8-table-event/references/progressive-02-/345/211/215/347/253/257/344/272/213/344/273/266/345/220/215-v8-eventname-/345/217/257/350/203/275/347/232/204/345/200/274.md +3 -1
  70. package/skills/v8-utilities/references/server-api-index.md +1 -0
  71. package/skills/vision-engine/references/video-timeline.md +53 -0
@@ -1,235 +1,237 @@
1
- # ui-design 详细参考 3
2
-
3
- > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
-
5
- <!-- microi-progressive:chunk id=ui-design-012 sha256=78f4544796729b2eb49bc892472e397962ec4fd3112dd4cecf29eba883a6888a -->
6
- ## 动效规范(丰富但不卡)
7
-
8
- ### 性能铁律
9
-
10
- 1. **只用 `transform` 和 `opacity` 做动画** — 走 GPU 合成层,不触发重排重绘
11
- 2. **禁止动画 `width/height/top/left/margin/padding`** — 会触发 Layout,导致卡顿
12
- 3. **禁止动画 `box-shadow`** — 改用伪元素 `::after` 的 `opacity` 切换预设阴影
13
- 4. **`will-change` 不要滥用** — 只在动画激活时添加,静态元素禁止使用
14
- 5. **动画时长控制**:微交互 150-250ms,转场 300-400ms,装饰动效 600ms-2s
15
- 6. **使用 `prefers-reduced-motion` 媒体查询**提供无动画回退
16
- 7. **移动端额外限制**:禁用 `backdrop-filter: blur()` 大面积使用(中低端机型严重掉帧),最多用于小型胶囊/标签
17
- 8. **移动端装饰背景**:优先使用结构化渐变、网格、细线、扫光和内容图片;禁用 Canvas 装饰点、密集散点、离散光球、模糊色块堆叠。
18
-
19
- ### Timing Functions
20
-
21
- ```css
22
- :root {
23
- --mci-ease-out: cubic-bezier(0.25, 0.46, 0.45, 0.94);
24
- --mci-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
25
- --mci-ease-smooth: cubic-bezier(0.4, 0, 0.2, 1);
26
- --mci-ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
27
-
28
- --mci-duration-fast: 150ms;
29
- --mci-duration-base: 250ms;
30
- --mci-duration-slow: 400ms;
31
- --mci-duration-decorative: 800ms;
32
- }
33
- ```
34
-
35
- ### 标准动效库
36
-
37
- #### 1. 卡片悬浮 / 按下(高性能阴影切换)
38
-
39
- ```scss
40
- .mci-card {
41
- position: relative;
42
- border-radius: var(--mci-radius-xl);
43
- background: var(--mci-bg-card);
44
- box-shadow: var(--mci-shadow-card);
45
- transition: transform var(--mci-duration-base) var(--mci-ease-out);
46
-
47
- &::after {
48
- content: '';
49
- position: absolute;
50
- inset: 0;
51
- border-radius: inherit;
52
- box-shadow: var(--mci-shadow-card-hover);
53
- opacity: 0;
54
- transition: opacity var(--mci-duration-base) var(--mci-ease-out);
55
- pointer-events: none;
56
- z-index: -1;
57
- }
58
-
59
- /* PC: hover */
60
- @media (hover: hover) {
61
- &:hover {
62
- transform: translateY(-4px) scale(1.01);
63
- &::after { opacity: 1; }
64
- }
65
- }
66
-
67
- /* 移动端:active 按压反馈 */
68
- &:active {
69
- transform: scale(0.98);
70
- transition-duration: var(--mci-duration-fast);
71
- }
72
- }
73
- ```
74
-
75
- #### 2. 淡入上浮(列表/卡片进入)
76
-
77
- ```scss
78
- .mci-fade-up-enter {
79
- opacity: 0;
80
- transform: translateY(20px);
81
- }
82
- .mci-fade-up-enter-active {
83
- animation: mciFadeUp var(--mci-duration-slow) var(--mci-ease-out) forwards;
84
- }
85
-
86
- @keyframes mciFadeUp {
87
- to {
88
- opacity: 1;
89
- transform: translateY(0);
90
- }
91
- }
92
-
93
- /* 列表交错进入 */
94
- .mci-stagger-item {
95
- opacity: 0;
96
- transform: translateY(16px);
97
- animation: mciFadeUp var(--mci-duration-slow) var(--mci-ease-out) forwards;
98
- animation-delay: calc(var(--mci-index, 0) * 60ms);
99
- }
100
- ```
101
-
102
- #### 3. 按钮渐变扫光
103
-
104
- ```scss
105
- .mci-btn-glow {
106
- position: relative;
107
- overflow: hidden;
108
- background: var(--mci-gradient-primary);
109
- border: none;
110
- border-radius: var(--mci-radius-md);
111
- color: var(--mci-text-on-primary);
112
- box-shadow: var(--mci-shadow-button);
113
- transition: transform var(--mci-duration-fast) var(--mci-ease-out);
114
-
115
- &::before {
116
- content: '';
117
- position: absolute;
118
- top: 0;
119
- left: -100%;
120
- width: 100%;
121
- height: 100%;
122
- background: linear-gradient(
123
- 90deg,
124
- transparent,
125
- rgba(255, 255, 255, 0.2),
126
- transparent
127
- );
128
- }
129
-
130
- @media (hover: hover) {
131
- &:hover {
132
- transform: translateY(-2px);
133
- &::before {
134
- left: 100%;
135
- transition: left 0.5s var(--mci-ease-smooth);
136
- }
137
- }
138
- }
139
-
140
- &:active { transform: scale(0.97); }
141
- }
142
- ```
143
-
144
- #### 4. 焦点边框扫光
145
-
146
- ```scss
147
- .mci-focus-border {
148
- position: relative;
149
- border: 1px solid var(--mci-border-glow);
150
- border-radius: var(--mci-radius-lg);
151
- overflow: hidden;
152
-
153
- &::before {
154
- content: '';
155
- position: absolute;
156
- inset: 0;
157
- border-radius: inherit;
158
- background: linear-gradient(90deg, transparent, rgba(255,255,255,.28), transparent);
159
- transform: translateX(-110%) skewX(-18deg);
160
- animation: mciFocusSweep 3.6s ease-in-out infinite;
161
- pointer-events: none;
162
- }
163
- }
164
-
165
- @keyframes mciFocusSweep {
166
- 0%, 42% { transform: translateX(-110%) skewX(-18deg); opacity: 0; }
167
- 58% { opacity: .85; }
168
- 100% { transform: translateX(120%) skewX(-18deg); opacity: 0; }
169
- }
170
- ```
171
-
172
- #### 5. 玻璃拟态容器(PC 用,移动端慎用)
173
-
174
- ```scss
175
- .mci-glass {
176
- background: var(--mci-bg-glass);
177
- backdrop-filter: blur(12px) saturate(1.5);
178
- -webkit-backdrop-filter: blur(12px) saturate(1.5);
179
- border: 1px solid var(--mci-bg-glass-border);
180
- border-radius: var(--mci-radius-xl);
181
- box-shadow: var(--mci-shadow-md);
182
- }
183
-
184
- /* 移动端降级:用半透明色块代替模糊 */
185
- @media (max-width: 768px) {
186
- .mci-glass {
187
- background: var(--mci-bg-elevated);
188
- backdrop-filter: none;
189
- -webkit-backdrop-filter: none;
190
- }
191
- }
192
- ```
193
-
194
- #### 6. 无障碍动效回退
195
-
196
- ```scss
197
- @media (prefers-reduced-motion: reduce) {
198
- *, *::before, *::after {
199
- animation-duration: 0.01ms !important;
200
- animation-iteration-count: 1 !important;
201
- transition-duration: 0.01ms !important;
202
- }
203
- }
204
- ```
205
-
206
- ---
207
-
208
- <!-- /microi-progressive:chunk -->
209
- <!-- microi-progressive:chunk id=ui-design-013 sha256=c2a784b1fc7d6f6f554661f4f1719d35c6c667037a817f697cb72e9535ae15eb -->
210
- ## Vue 3 过渡动画
211
-
212
- ```scss
213
- /* 淡入上浮 */
214
- .mci-up-enter-active { transition: all var(--mci-duration-slow) var(--mci-ease-out); }
215
- .mci-up-leave-active { transition: all var(--mci-duration-base) var(--mci-ease-smooth); }
216
- .mci-up-enter-from { opacity: 0; transform: translateY(20px); }
217
- .mci-up-leave-to { opacity: 0; transform: translateY(-10px); }
218
-
219
- /* 缩放弹出 */
220
- .mci-scale-enter-active { transition: all var(--mci-duration-base) var(--mci-ease-spring); }
221
- .mci-scale-leave-active { transition: all var(--mci-duration-fast) var(--mci-ease-smooth); }
222
- .mci-scale-enter-from { opacity: 0; transform: scale(0.92); }
223
- .mci-scale-leave-to { opacity: 0; transform: scale(0.95); }
224
-
225
- /* 列表交错 */
226
- .mci-list-move,
227
- .mci-list-enter-active { transition: all var(--mci-duration-slow) var(--mci-ease-out); }
228
- .mci-list-leave-active { transition: all var(--mci-duration-base) var(--mci-ease-smooth); position: absolute; }
229
- .mci-list-enter-from { opacity: 0; transform: translateX(-20px); }
230
- .mci-list-leave-to { opacity: 0; transform: translateX(20px); }
231
- ```
232
-
233
- ---
234
-
235
- <!-- /microi-progressive:chunk -->
1
+ # ui-design 详细参考 3
2
+
3
+ > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
+
5
+ <!-- microi-progressive:chunk id=ui-design-012 sha256=b9ac274e5b98631c3262fc87ca294fd43a59dc226829a299d1db24321ad203df -->
6
+ ## 动效规范(按需、克制、可停)
7
+
8
+ 以下为可选效果库,不是默认每页必用。高频数据操作优先即时、稳定的背景/边界反馈;只有用户明确表现性方向或动效能解释状态时才选用位移、扫光、交错入场。
9
+
10
+ ### 性能铁律
11
+
12
+ 1. **只用 `transform` 和 `opacity` 做动画** — 走 GPU 合成层,不触发重排重绘
13
+ 2. **禁止动画 `width/height/top/left/margin/padding`** — 会触发 Layout,导致卡顿
14
+ 3. **禁止动画 `box-shadow`** — 改用伪元素 `::after` 的 `opacity` 切换预设阴影
15
+ 4. **`will-change` 不要滥用** — 只在动画激活时添加,静态元素禁止使用
16
+ 5. **动画时长控制**:微交互 150-250ms,转场 300-400ms,装饰动效 600ms-2s
17
+ 6. **使用 `prefers-reduced-motion` 媒体查询**提供无动画回退
18
+ 7. **移动端额外限制**:禁用 `backdrop-filter: blur()` 大面积使用(中低端机型严重掉帧),最多用于小型胶囊/标签
19
+ 8. **移动端装饰背景**:优先使用结构化渐变、网格、细线、扫光和内容图片;禁用 Canvas 装饰点、密集散点、离散光球、模糊色块堆叠。
20
+
21
+ ### Timing Functions
22
+
23
+ ```css
24
+ :root {
25
+ --mci-ease-out: cubic-bezier(0.25, 0.46, 0.45, 0.94);
26
+ --mci-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
27
+ --mci-ease-smooth: cubic-bezier(0.4, 0, 0.2, 1);
28
+ --mci-ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
29
+
30
+ --mci-duration-fast: 150ms;
31
+ --mci-duration-base: 250ms;
32
+ --mci-duration-slow: 400ms;
33
+ --mci-duration-decorative: 800ms;
34
+ }
35
+ ```
36
+
37
+ ### 标准动效库
38
+
39
+ #### 1. 卡片悬浮 / 按下(高性能阴影切换)
40
+
41
+ ```scss
42
+ .mci-card {
43
+ position: relative;
44
+ border-radius: var(--mci-radius-xl);
45
+ background: var(--mci-bg-card);
46
+ box-shadow: var(--mci-shadow-card);
47
+ transition: transform var(--mci-duration-base) var(--mci-ease-out);
48
+
49
+ &::after {
50
+ content: '';
51
+ position: absolute;
52
+ inset: 0;
53
+ border-radius: inherit;
54
+ box-shadow: var(--mci-shadow-card-hover);
55
+ opacity: 0;
56
+ transition: opacity var(--mci-duration-base) var(--mci-ease-out);
57
+ pointer-events: none;
58
+ z-index: -1;
59
+ }
60
+
61
+ /* PC: hover */
62
+ @media (hover: hover) {
63
+ &:hover {
64
+ transform: translateY(-4px) scale(1.01);
65
+ &::after { opacity: 1; }
66
+ }
67
+ }
68
+
69
+ /* 移动端:active 按压反馈 */
70
+ &:active {
71
+ transform: scale(0.98);
72
+ transition-duration: var(--mci-duration-fast);
73
+ }
74
+ }
75
+ ```
76
+
77
+ #### 2. 淡入上浮(列表/卡片进入)
78
+
79
+ ```scss
80
+ .mci-fade-up-enter {
81
+ opacity: 0;
82
+ transform: translateY(20px);
83
+ }
84
+ .mci-fade-up-enter-active {
85
+ animation: mciFadeUp var(--mci-duration-slow) var(--mci-ease-out) forwards;
86
+ }
87
+
88
+ @keyframes mciFadeUp {
89
+ to {
90
+ opacity: 1;
91
+ transform: translateY(0);
92
+ }
93
+ }
94
+
95
+ /* 列表交错进入 */
96
+ .mci-stagger-item {
97
+ opacity: 0;
98
+ transform: translateY(16px);
99
+ animation: mciFadeUp var(--mci-duration-slow) var(--mci-ease-out) forwards;
100
+ animation-delay: calc(var(--mci-index, 0) * 60ms);
101
+ }
102
+ ```
103
+
104
+ #### 3. 按钮渐变扫光
105
+
106
+ ```scss
107
+ .mci-btn-glow {
108
+ position: relative;
109
+ overflow: hidden;
110
+ background: var(--mci-gradient-primary);
111
+ border: none;
112
+ border-radius: var(--mci-radius-md);
113
+ color: var(--mci-text-on-primary);
114
+ box-shadow: var(--mci-shadow-button);
115
+ transition: transform var(--mci-duration-fast) var(--mci-ease-out);
116
+
117
+ &::before {
118
+ content: '';
119
+ position: absolute;
120
+ top: 0;
121
+ left: -100%;
122
+ width: 100%;
123
+ height: 100%;
124
+ background: linear-gradient(
125
+ 90deg,
126
+ transparent,
127
+ rgba(255, 255, 255, 0.2),
128
+ transparent
129
+ );
130
+ }
131
+
132
+ @media (hover: hover) {
133
+ &:hover {
134
+ transform: translateY(-2px);
135
+ &::before {
136
+ left: 100%;
137
+ transition: left 0.5s var(--mci-ease-smooth);
138
+ }
139
+ }
140
+ }
141
+
142
+ &:active { transform: scale(0.97); }
143
+ }
144
+ ```
145
+
146
+ #### 4. 焦点边框扫光
147
+
148
+ ```scss
149
+ .mci-focus-border {
150
+ position: relative;
151
+ border: 1px solid var(--mci-border-glow);
152
+ border-radius: var(--mci-radius-lg);
153
+ overflow: hidden;
154
+
155
+ &::before {
156
+ content: '';
157
+ position: absolute;
158
+ inset: 0;
159
+ border-radius: inherit;
160
+ background: linear-gradient(90deg, transparent, rgba(255,255,255,.28), transparent);
161
+ transform: translateX(-110%) skewX(-18deg);
162
+ animation: mciFocusSweep 3.6s ease-in-out infinite;
163
+ pointer-events: none;
164
+ }
165
+ }
166
+
167
+ @keyframes mciFocusSweep {
168
+ 0%, 42% { transform: translateX(-110%) skewX(-18deg); opacity: 0; }
169
+ 58% { opacity: .85; }
170
+ 100% { transform: translateX(120%) skewX(-18deg); opacity: 0; }
171
+ }
172
+ ```
173
+
174
+ #### 5. 玻璃拟态容器(PC 用,移动端慎用)
175
+
176
+ ```scss
177
+ .mci-glass {
178
+ background: var(--mci-bg-glass);
179
+ backdrop-filter: blur(12px) saturate(1.5);
180
+ -webkit-backdrop-filter: blur(12px) saturate(1.5);
181
+ border: 1px solid var(--mci-bg-glass-border);
182
+ border-radius: var(--mci-radius-xl);
183
+ box-shadow: var(--mci-shadow-md);
184
+ }
185
+
186
+ /* 移动端降级:用半透明色块代替模糊 */
187
+ @media (max-width: 768px) {
188
+ .mci-glass {
189
+ background: var(--mci-bg-elevated);
190
+ backdrop-filter: none;
191
+ -webkit-backdrop-filter: none;
192
+ }
193
+ }
194
+ ```
195
+
196
+ #### 6. 无障碍动效回退
197
+
198
+ ```scss
199
+ @media (prefers-reduced-motion: reduce) {
200
+ *, *::before, *::after {
201
+ animation-duration: 0.01ms !important;
202
+ animation-iteration-count: 1 !important;
203
+ transition-duration: 0.01ms !important;
204
+ }
205
+ }
206
+ ```
207
+
208
+ ---
209
+
210
+ <!-- /microi-progressive:chunk -->
211
+ <!-- microi-progressive:chunk id=ui-design-013 sha256=385528713388a28e0182e2df9e2ed828ddb7cccaf7a3a5e78354f46a588f6f1c -->
212
+ ## Vue 3 过渡动画
213
+
214
+ ```scss
215
+ /* 淡入上浮 */
216
+ .mci-up-enter-active { transition: all var(--mci-duration-slow) var(--mci-ease-out); }
217
+ .mci-up-leave-active { transition: all var(--mci-duration-base) var(--mci-ease-smooth); }
218
+ .mci-up-enter-from { opacity: 0; transform: translateY(20px); }
219
+ .mci-up-leave-to { opacity: 0; transform: translateY(-10px); }
220
+
221
+ /* 缩放弹出 */
222
+ .mci-scale-enter-active { transition: all var(--mci-duration-base) var(--mci-ease-spring); }
223
+ .mci-scale-leave-active { transition: all var(--mci-duration-fast) var(--mci-ease-smooth); }
224
+ .mci-scale-enter-from { opacity: 0; transform: scale(0.92); }
225
+ .mci-scale-leave-to { opacity: 0; transform: scale(0.95); }
226
+
227
+ /* 列表交错 */
228
+ .mci-list-move,
229
+ .mci-list-enter-active { transition: all var(--mci-duration-slow) var(--mci-ease-out); }
230
+ .mci-list-leave-active { transition: all var(--mci-duration-base) var(--mci-ease-smooth); position: absolute; }
231
+ .mci-list-enter-from { opacity: 0; transform: translateX(-20px); }
232
+ .mci-list-leave-to { opacity: 0; transform: translateX(20px); }
233
+ ```
234
+
235
+ ---
236
+
237
+ <!-- /microi-progressive:chunk -->