cardbuddy 0.8.0 → 0.9.0
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.
- package/dist/cli.js +5 -0
- package/dist/preview-editor/assets/index-CrcrVs4F.css +1 -0
- package/dist/preview-editor/assets/index-DnpHHKWl.js +80 -0
- package/dist/preview-editor/index.html +2 -2
- package/dist/server-core/index.js +19 -0
- package/dist/server-core/logStream.js +275 -0
- package/dist/standalone.js +15 -3
- package/dist/vendored/App.vue +12 -7
- package/dist/vendored/ansi.js +185 -0
- package/dist/vendored/api.js +76 -10
- package/dist/vendored/components/CardGallery.vue +2 -2
- package/dist/vendored/components/ComponentPalette.vue +1 -1
- package/dist/vendored/components/ConfirmDialog.vue +2 -2
- package/dist/vendored/components/DebugPanel.vue +276 -32
- package/dist/vendored/components/EventEditor.vue +2 -0
- package/dist/vendored/components/NodeInspector.vue +1 -1
- package/dist/vendored/components/RemotePreview.vue +3 -1
- package/dist/vendored/components/StructureTree.vue +2 -0
- package/dist/vendored/styles/app.css +164 -15
- package/dist/vendored/styles/card-gallery.css +1 -9
- package/dist/vendored/styles/card-select.css +0 -15
- package/dist/vendored/styles/dropdown.css +0 -15
- package/dist/vendored/styles/json-tree.css +1 -1
- package/dist/vendored/styles/node-inspector.css +28 -12
- package/dist/vendored/styles/structure-tree.css +2 -0
- package/package.json +1 -1
- package/dist/preview-editor/assets/index-BQKzMPBq.js +0 -79
- package/dist/preview-editor/assets/index-D3zp47Dg.css +0 -1
|
@@ -88,6 +88,8 @@
|
|
|
88
88
|
--log-warn-border: rgba(224, 179, 65, 0.35);
|
|
89
89
|
--scroll-thumb: rgba(148, 154, 171, 0.28);
|
|
90
90
|
--scroll-thumb-hover: rgba(148, 154, 171, 0.45);
|
|
91
|
+
/* 静止档:鼠标不在滚动区域时弱化显示 */
|
|
92
|
+
--scroll-thumb-idle: rgba(148, 154, 171, 0.14);
|
|
91
93
|
/* 语法高亮配色(JSON 树 / 结构树 / 代码编辑器),随主题切换;暗色默认=原硬编码值,保证暗色外观不变 */
|
|
92
94
|
--jt-key: #9db4ff;
|
|
93
95
|
--jt-string: #8fe39a;
|
|
@@ -242,6 +244,7 @@
|
|
|
242
244
|
--log-warn-border: rgba(181, 129, 5, 0.3);
|
|
243
245
|
--scroll-thumb: rgba(0, 0, 0, 0.2);
|
|
244
246
|
--scroll-thumb-hover: rgba(0, 0, 0, 0.32);
|
|
247
|
+
--scroll-thumb-idle: rgba(0, 0, 0, 0.1);
|
|
245
248
|
/* 语法高亮配色:浅色主题参考 GitHub Light / VSCode Light+,保证白底上的可读性 */
|
|
246
249
|
--jt-key: #953800;
|
|
247
250
|
--jt-string: #0a3069;
|
|
@@ -304,23 +307,47 @@ body {
|
|
|
304
307
|
height: 100vh;
|
|
305
308
|
}
|
|
306
309
|
|
|
307
|
-
/*
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
310
|
+
/* 全局滚动条(仅 Firefox):FF 不识别 ::-webkit-scrollbar,也不支持悬停分档/过渡,取中间档常显。
|
|
311
|
+
必须隔离在 FF:Chrome 121+ 一旦命中 scrollbar-width 会改走标准滚动条,
|
|
312
|
+
忽略 ::-webkit-scrollbar 定制(含下方三档透明度与过渡)。 */
|
|
313
|
+
@supports (-moz-appearance: none) {
|
|
314
|
+
* {
|
|
315
|
+
scrollbar-width: thin;
|
|
316
|
+
scrollbar-color: var(--scroll-thumb) transparent;
|
|
317
|
+
}
|
|
311
318
|
}
|
|
312
|
-
/* 全局滚动条(WebKit
|
|
319
|
+
/* 全局滚动条(WebKit)三档透明度:
|
|
320
|
+
静止(鼠标不在滚动区域)弱化 → 鼠标进入区域回常 → 按住 thumb 再提亮;
|
|
321
|
+
background-color 过渡保证移入/移出平滑淡入淡出。页面所有滚动区域继承本规则。
|
|
322
|
+
注:区域档必须用 :has(:hover)(容器内有被悬停后代)而非容器自身 :hover ——
|
|
323
|
+
Chromium 不会因滚动容器自身 hover 状态变化重算其 ::-webkit-scrollbar-* 样式(实测无效),
|
|
324
|
+
:has(:hover) 与祖先 hover 均可正常触发重绘。 */
|
|
313
325
|
*::-webkit-scrollbar {
|
|
314
326
|
width: 8px;
|
|
315
327
|
height: 8px;
|
|
316
328
|
}
|
|
317
329
|
*::-webkit-scrollbar-thumb {
|
|
318
|
-
background: var(--scroll-thumb);
|
|
330
|
+
background: var(--scroll-thumb-idle);
|
|
319
331
|
border-radius: 8px;
|
|
332
|
+
transition: background-color 0.2s ease;
|
|
333
|
+
}
|
|
334
|
+
*:has(:hover)::-webkit-scrollbar-thumb {
|
|
335
|
+
background: var(--scroll-thumb);
|
|
336
|
+
}
|
|
337
|
+
/* 纯文本滚动区兜底:CodeJar 编辑器与原生对话框正文以文本节点为主,容器内几乎没有可命中的
|
|
338
|
+
悬停后代,仅靠 :has(:hover) 会随鼠标落在「文字 / 缩进空白」上而闪烁,故改用紧贴外层容器的 hover。 */
|
|
339
|
+
.st-expr:hover .st-expr__editor::-webkit-scrollbar-thumb,
|
|
340
|
+
.st-code:hover .st-code__editor::-webkit-scrollbar-thumb,
|
|
341
|
+
.debug__scope-raw:hover .debug__raw-editor::-webkit-scrollbar-thumb,
|
|
342
|
+
.dlg:hover .dlg__msg::-webkit-scrollbar-thumb {
|
|
343
|
+
background: var(--scroll-thumb);
|
|
320
344
|
}
|
|
321
345
|
*::-webkit-scrollbar-thumb:hover {
|
|
322
346
|
background: var(--scroll-thumb-hover);
|
|
323
347
|
}
|
|
348
|
+
*::-webkit-scrollbar-thumb:active {
|
|
349
|
+
background: var(--scroll-thumb-hover);
|
|
350
|
+
}
|
|
324
351
|
*::-webkit-scrollbar-track {
|
|
325
352
|
background: transparent;
|
|
326
353
|
}
|
|
@@ -884,7 +911,7 @@ body {
|
|
|
884
911
|
flex: 0 0 auto;
|
|
885
912
|
order: 2;
|
|
886
913
|
}
|
|
887
|
-
/* 底部弹出面板容器(运行态 / 事件 /
|
|
914
|
+
/* 底部弹出面板容器(运行态 / 事件 / 变量绑定):Teleport 目标,宽度贯穿中右两栏;
|
|
888
915
|
空容器(面板均 v-show 隐藏时)高度为 0,不占位 */
|
|
889
916
|
.workside__panels {
|
|
890
917
|
flex: 0 0 auto;
|
|
@@ -1026,7 +1053,9 @@ body {
|
|
|
1026
1053
|
font-size: 12px;
|
|
1027
1054
|
white-space: nowrap;
|
|
1028
1055
|
}
|
|
1029
|
-
/*
|
|
1056
|
+
/* 预览区底部状态条:画布尺寸读数 + 刷新按钮。
|
|
1057
|
+
底色透明(融入手机框 --bg-stage),不再作为独立暗面板——消除其与全局 .statusbar
|
|
1058
|
+
(bg-bar)因所处父容器底色不同而产生的“颜色细微差异”观感;仅保留 1px 分隔线作页脚边界。 */
|
|
1030
1059
|
.preview-statusbar {
|
|
1031
1060
|
flex: 0 0 auto;
|
|
1032
1061
|
width: 100%;
|
|
@@ -1035,7 +1064,7 @@ body {
|
|
|
1035
1064
|
align-items: center;
|
|
1036
1065
|
gap: 12px;
|
|
1037
1066
|
padding: 0 12px;
|
|
1038
|
-
background:
|
|
1067
|
+
background: transparent;
|
|
1039
1068
|
border-top: 1px solid var(--border);
|
|
1040
1069
|
}
|
|
1041
1070
|
/* 预览区底部状态条:本地开发服务连接状态(连接图标 + 状态文案)。
|
|
@@ -1062,6 +1091,20 @@ body {
|
|
|
1062
1091
|
.statusbar .app__btn--reconnecting { color: var(--warn); }
|
|
1063
1092
|
.statusbar .app__btn--disconnected { color: var(--danger); }
|
|
1064
1093
|
.statusbar .app__btn--warn { color: var(--warn); }
|
|
1094
|
+
/* 连接指示器现为可点按钮(开合底部「服务日志」面板):保持状态栏读数观感
|
|
1095
|
+
(无边框 / 无圆角 / 语义色由 app__btn--* 提供),hover 仅加极淡底色提示可点,
|
|
1096
|
+
展开态用 accent 底线标识(与 .statusbar__item--prob.is-open 同一语言,不抢语义色)。 */
|
|
1097
|
+
button.statusbar__conn {
|
|
1098
|
+
cursor: pointer;
|
|
1099
|
+
font: inherit;
|
|
1100
|
+
}
|
|
1101
|
+
.statusbar__conn:hover {
|
|
1102
|
+
background: var(--bg-hover);
|
|
1103
|
+
}
|
|
1104
|
+
.statusbar__conn.is-open {
|
|
1105
|
+
background: var(--bg-hover);
|
|
1106
|
+
box-shadow: inset 0 -2px 0 0 var(--accent);
|
|
1107
|
+
}
|
|
1065
1108
|
|
|
1066
1109
|
/* 颜色选择器(@ckpack/vue-color Sketch)预设区顶部分隔线:与系统边框色保持一致,
|
|
1067
1110
|
覆盖组件默认的 1px solid #eee(深色主题下刺眼)。组件样式为全局注入且非 scoped,
|
|
@@ -1902,7 +1945,7 @@ body {
|
|
|
1902
1945
|
color: var(--warn);
|
|
1903
1946
|
}
|
|
1904
1947
|
|
|
1905
|
-
/*
|
|
1948
|
+
/* 底部面板(事件 / 变量绑定):点击状态栏指示器弹出 / 收起。与运行态面板互斥,
|
|
1906
1949
|
三者共用面板高度,由头部拖拽调整(无专门拖拽节点,与预览区宽度调节同一机制),约束 [120px, 60vh]。 */
|
|
1907
1950
|
.errpanel {
|
|
1908
1951
|
flex: 0 0 auto;
|
|
@@ -2052,6 +2095,78 @@ body {
|
|
|
2052
2095
|
.errpanel__body .empty-state__hint {
|
|
2053
2096
|
max-width: 460px;
|
|
2054
2097
|
}
|
|
2098
|
+
|
|
2099
|
+
/* ——— 服务日志面板(底部第四面板):本地服务 cardbuddy 终端输出的实时镜像 ———
|
|
2100
|
+
服务端按行镜像 stdout/stderr 并保留原始 ANSI,前端 preview/ansi.js 转成内联 style,
|
|
2101
|
+
因此这里固定深色终端底 + 等宽字体:chalk 的等级色取自深色设计令牌,浅色主题下同样可读。
|
|
2102
|
+
仅在有日志时切深底(见 .errpanel__body--term 绑定),空态仍走主题底色。 */
|
|
2103
|
+
.errpanel__body--term {
|
|
2104
|
+
padding: 0;
|
|
2105
|
+
background: #14161c;
|
|
2106
|
+
color: #e8eaf0;
|
|
2107
|
+
}
|
|
2108
|
+
.svclog {
|
|
2109
|
+
padding: 6px 0 10px;
|
|
2110
|
+
font-family: 'SF Mono', 'JetBrains Mono', Menlo, Consolas, monospace;
|
|
2111
|
+
font-size: 11.5px;
|
|
2112
|
+
line-height: 1.55;
|
|
2113
|
+
}
|
|
2114
|
+
.svclog__line {
|
|
2115
|
+
display: flex;
|
|
2116
|
+
min-height: 1.55em;
|
|
2117
|
+
padding: 0 12px;
|
|
2118
|
+
/* 长行折行而非横向滚动:底部面板高度有限,横向滚动会同时吃掉两向空间 */
|
|
2119
|
+
white-space: pre-wrap;
|
|
2120
|
+
word-break: break-word;
|
|
2121
|
+
border-left: 2px solid transparent;
|
|
2122
|
+
}
|
|
2123
|
+
.svclog__line:hover {
|
|
2124
|
+
background: rgba(255, 255, 255, 0.045);
|
|
2125
|
+
}
|
|
2126
|
+
/* 级别只作左侧色条 + 极淡底:ANSI 本身已带终端配色,不叠加二次着色以免打架 */
|
|
2127
|
+
.svclog__line--ok {
|
|
2128
|
+
border-left-color: rgba(52, 211, 153, 0.55);
|
|
2129
|
+
}
|
|
2130
|
+
.svclog__line--warn {
|
|
2131
|
+
border-left-color: var(--warn);
|
|
2132
|
+
background: rgba(251, 191, 36, 0.07);
|
|
2133
|
+
}
|
|
2134
|
+
.svclog__line--error {
|
|
2135
|
+
border-left-color: var(--danger);
|
|
2136
|
+
background: rgba(248, 113, 113, 0.08);
|
|
2137
|
+
}
|
|
2138
|
+
.svclog__text {
|
|
2139
|
+
min-width: 0;
|
|
2140
|
+
}
|
|
2141
|
+
/* 头部读数:行数 + 实时态小圆点,落在标题之后(与事件面板 tab 同一位置语言) */
|
|
2142
|
+
.svclog__meta {
|
|
2143
|
+
display: inline-flex;
|
|
2144
|
+
align-items: center;
|
|
2145
|
+
gap: 5px;
|
|
2146
|
+
margin-left: 8px;
|
|
2147
|
+
color: var(--text-faint);
|
|
2148
|
+
font-size: 11px;
|
|
2149
|
+
white-space: nowrap;
|
|
2150
|
+
}
|
|
2151
|
+
.svclog__dot {
|
|
2152
|
+
width: 6px;
|
|
2153
|
+
height: 6px;
|
|
2154
|
+
margin-left: 4px;
|
|
2155
|
+
border-radius: 50%;
|
|
2156
|
+
background: var(--text-faint);
|
|
2157
|
+
}
|
|
2158
|
+
.svclog__dot.is-live {
|
|
2159
|
+
background: var(--ok);
|
|
2160
|
+
box-shadow: 0 0 0 2px var(--ok-soft);
|
|
2161
|
+
}
|
|
2162
|
+
/* 跟随最新输出按钮:开启态 accent,暂停态弱化(与其它头部图标按钮同一规格) */
|
|
2163
|
+
.svclog__follow.is-on {
|
|
2164
|
+
color: var(--accent);
|
|
2165
|
+
}
|
|
2166
|
+
/* 复制完成瞬时反馈:与「已复制」语义一致的成功绿 */
|
|
2167
|
+
.errpanel__iconbtn.is-done {
|
|
2168
|
+
color: var(--ok);
|
|
2169
|
+
}
|
|
2055
2170
|
/* 事件面板日志:控制台风格高密度行 = 时间 | 等级 | 内容,发丝线分隔 */
|
|
2056
2171
|
.debug__list--log {
|
|
2057
2172
|
display: flex;
|
|
@@ -2930,11 +3045,45 @@ body {
|
|
|
2930
3045
|
.confirm-modal__btn--warn:hover {
|
|
2931
3046
|
background: var(--warn-hover);
|
|
2932
3047
|
}
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
3048
|
+
/* ===== 轻量浮层(帮助 / 快捷键弹层)统一进出场 =====
|
|
3049
|
+
淡入 + 轻弹性缩放(过冲回稳),缩放原点由各浮层按锚定方位自定(transform-origin);
|
|
3050
|
+
离场快速收回、不回弹。 */
|
|
3051
|
+
.pop-enter-active {
|
|
3052
|
+
transition: opacity 0.15s ease, transform 0.26s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
2936
3053
|
}
|
|
2937
|
-
.
|
|
2938
|
-
.
|
|
3054
|
+
.pop-leave-active {
|
|
3055
|
+
transition: opacity 0.12s ease, transform 0.12s ease;
|
|
3056
|
+
}
|
|
3057
|
+
.pop-enter-from,
|
|
3058
|
+
.pop-leave-to {
|
|
2939
3059
|
opacity: 0;
|
|
3060
|
+
transform: translateY(6px) scale(0.95);
|
|
3061
|
+
}
|
|
3062
|
+
/* ===== 带遮罩模态的统一进出场动画 =====
|
|
3063
|
+
适用:确认框 / 卡片网格预览 / 远端预览二维码 / 登录凭据 / 组件选择 / 节点属性等居中模态。
|
|
3064
|
+
遮罩仅淡入/淡出;弹卡片(.modal-card)微抬 + 缩放入场、原路离场。
|
|
3065
|
+
右侧抽屉(ee-drawer)保留自己的右滑语言,不复用本组。 */
|
|
3066
|
+
.modal-enter-active,
|
|
3067
|
+
.modal-leave-active {
|
|
3068
|
+
transition: opacity 0.2s ease;
|
|
3069
|
+
}
|
|
3070
|
+
.modal-leave-active {
|
|
3071
|
+
transition: opacity 0.16s ease;
|
|
3072
|
+
}
|
|
3073
|
+
.modal-enter-from,
|
|
3074
|
+
.modal-leave-to {
|
|
3075
|
+
opacity: 0;
|
|
3076
|
+
}
|
|
3077
|
+
/* 入场带一点弹性:back-out 过冲曲线让弹卡片微 overshoot 后回稳;离场干脆不回弹 */
|
|
3078
|
+
.modal-enter-active .modal-card {
|
|
3079
|
+
transition: transform 0.34s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
3080
|
+
}
|
|
3081
|
+
.modal-leave-active .modal-card {
|
|
3082
|
+
transition: transform 0.16s ease;
|
|
3083
|
+
}
|
|
3084
|
+
.modal-enter-from .modal-card {
|
|
3085
|
+
transform: translateY(14px) scale(0.94);
|
|
3086
|
+
}
|
|
3087
|
+
.modal-leave-to .modal-card {
|
|
3088
|
+
transform: translateY(6px) scale(0.98);
|
|
2940
3089
|
}
|
|
@@ -244,12 +244,4 @@
|
|
|
244
244
|
font-size: 13px;
|
|
245
245
|
}
|
|
246
246
|
|
|
247
|
-
/*
|
|
248
|
-
.cg-fade-enter-active,
|
|
249
|
-
.cg-fade-leave-active {
|
|
250
|
-
transition: opacity 0.16s ease;
|
|
251
|
-
}
|
|
252
|
-
.cg-fade-enter,
|
|
253
|
-
.cg-fade-leave-to {
|
|
254
|
-
opacity: 0;
|
|
255
|
-
}
|
|
247
|
+
/* 过渡:统一使用 app.css 的 .modal-* 进出场动画(遮罩淡入淡出 + 弹卡片抬升缩放) */
|
|
@@ -194,21 +194,6 @@
|
|
|
194
194
|
background: var(--accent-soft);
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
-
/* 下拉列表滚动条(WebKit) */
|
|
198
|
-
.csel__list::-webkit-scrollbar {
|
|
199
|
-
width: 8px;
|
|
200
|
-
}
|
|
201
|
-
.csel__list::-webkit-scrollbar-thumb {
|
|
202
|
-
background: var(--scroll-thumb);
|
|
203
|
-
border-radius: 4px;
|
|
204
|
-
}
|
|
205
|
-
.csel__list::-webkit-scrollbar-thumb:hover {
|
|
206
|
-
background: var(--scroll-thumb-hover);
|
|
207
|
-
}
|
|
208
|
-
.csel__list::-webkit-scrollbar-track {
|
|
209
|
-
background: transparent;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
197
|
/* 弹出动画 */
|
|
213
198
|
.csel-fade-enter-active,
|
|
214
199
|
.csel-fade-leave-active {
|
|
@@ -261,21 +261,6 @@
|
|
|
261
261
|
cursor: default;
|
|
262
262
|
}
|
|
263
263
|
|
|
264
|
-
/* 滚动条 */
|
|
265
|
-
.dd__list::-webkit-scrollbar {
|
|
266
|
-
width: 8px;
|
|
267
|
-
}
|
|
268
|
-
.dd__list::-webkit-scrollbar-thumb {
|
|
269
|
-
background: var(--scroll-thumb);
|
|
270
|
-
border-radius: 4px;
|
|
271
|
-
}
|
|
272
|
-
.dd__list::-webkit-scrollbar-thumb:hover {
|
|
273
|
-
background: var(--scroll-thumb-hover);
|
|
274
|
-
}
|
|
275
|
-
.dd__list::-webkit-scrollbar-track {
|
|
276
|
-
background: transparent;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
264
|
/* 弹出动画 */
|
|
280
265
|
.dd-fade-enter-active,
|
|
281
266
|
.dd-fade-leave-active {
|
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
display: flex;
|
|
11
11
|
align-items: center;
|
|
12
12
|
justify-content: center;
|
|
13
|
-
/*
|
|
14
|
-
background:
|
|
13
|
+
/* 半透明遮罩:与确认框 / 组件面板等全局模态统一(--scrim-modal + 轻 blur) */
|
|
14
|
+
background: var(--scrim-modal);
|
|
15
|
+
backdrop-filter: blur(var(--scrim-modal-blur));
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
.ni-panel {
|
|
@@ -648,15 +649,12 @@ select.ni-input {
|
|
|
648
649
|
|
|
649
650
|
.ee-overlay {
|
|
650
651
|
position: fixed;
|
|
651
|
-
|
|
652
|
-
right: 0;
|
|
653
|
-
bottom: 0;
|
|
654
|
-
/* 左缘 = 当前预览面板宽度(由 App 根节点注入的 --preview-width 实时驱动),
|
|
655
|
-
不再写死 375px;面板宽度随之 = 100vw − 预览面板宽度,随分隔条拖拽动态变化 */
|
|
656
|
-
left: var(--preview-width, 375px);
|
|
652
|
+
inset: 0;
|
|
657
653
|
z-index: var(--z-appmodal);
|
|
658
|
-
/*
|
|
659
|
-
|
|
654
|
+
/* 半透明遮罩:与确认框 / 组件面板等全局模态统一(--scrim-modal + 轻 blur);
|
|
655
|
+
抽屉主体仍右缘贴边满高 */
|
|
656
|
+
background: var(--scrim-modal);
|
|
657
|
+
backdrop-filter: blur(var(--scrim-modal-blur));
|
|
660
658
|
}
|
|
661
659
|
|
|
662
660
|
/* 抽屉主体:右侧贴边、满高、宽度 = 视口减去手机宽度 */
|
|
@@ -676,13 +674,29 @@ select.ni-input {
|
|
|
676
674
|
overflow: hidden;
|
|
677
675
|
}
|
|
678
676
|
|
|
679
|
-
/*
|
|
677
|
+
/* 进出场动画(DebugPanel 中 <Transition name="ee-drawer"> 驱动):
|
|
678
|
+
遮罩只做淡入/淡出,抽屉主体单独从右往左滑入/滑出——全屏遮罩不应跟随主体平移。
|
|
679
|
+
离场遮罩淡出与主体滑动同长(0.26s),保证滑动过程可见;入场遮罩淡入稍快。 */
|
|
680
680
|
.ee-drawer-enter-active,
|
|
681
681
|
.ee-drawer-leave-active {
|
|
682
|
-
transition:
|
|
682
|
+
transition: opacity 0.18s ease;
|
|
683
|
+
}
|
|
684
|
+
.ee-drawer-leave-active {
|
|
685
|
+
transition: opacity 0.24s ease;
|
|
686
|
+
}
|
|
687
|
+
/* 主体滑入带一点弹性(过冲后回稳);滑出干脆不回弹 */
|
|
688
|
+
.ee-drawer-enter-active .ee-panel {
|
|
689
|
+
transition: transform 0.34s cubic-bezier(0.32, 1.32, 0.45, 1);
|
|
690
|
+
}
|
|
691
|
+
.ee-drawer-leave-active .ee-panel {
|
|
692
|
+
transition: transform 0.24s cubic-bezier(0.4, 0, 0.6, 1);
|
|
683
693
|
}
|
|
684
694
|
.ee-drawer-enter-from,
|
|
685
695
|
.ee-drawer-leave-to {
|
|
696
|
+
opacity: 0;
|
|
697
|
+
}
|
|
698
|
+
.ee-drawer-enter-from .ee-panel,
|
|
699
|
+
.ee-drawer-leave-to .ee-panel {
|
|
686
700
|
transform: translateX(100%);
|
|
687
701
|
}
|
|
688
702
|
|
|
@@ -958,6 +972,8 @@ select.ee-input { height: 32px; }
|
|
|
958
972
|
top: calc(100% + 4px);
|
|
959
973
|
right: 12px;
|
|
960
974
|
z-index: 7;
|
|
975
|
+
/* 弹层锚定右上帮助图标:弹性缩放自该角生长 */
|
|
976
|
+
transform-origin: top right;
|
|
961
977
|
width: min(340px, 78%);
|
|
962
978
|
padding: 8px 10px;
|
|
963
979
|
border: 1px solid var(--border-strong);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cardbuddy",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Local dev service for the CardBuddy card editor — decouples card CRUD (sync/save/validate/render-status/screenshot) from the static public editor, so the editor can be deployed to any static host while each developer runs a local service against their own card source.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|