dsh-plugin-core 0.2.10 → 0.2.11
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.
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export declare const SEGMENTED_CSS = "
|
|
2
|
-
export declare const BUTTON_CSS = "\n/* \u2500\u2500 \u6309\u94AE / \u56FE\u6807\u94AE P2 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u4E0E Segmented \u540C\u4E00\u6761\u9AD8\u5EA6\u7EAA\u5F8B\uFF1A--dshpc-control-h-sm(24) / -md(28) / -lg(32)\uFF0C\n \u6709\u8FB9\u6846\u7684 variant \u7528 1px \u771F\u8FB9\u6846 + \u5185\u90E8 padding \u8865\u56DE\uFF0C**\u6709\u8FB9 / \u65E0\u8FB9\u540C\u9AD8**\u3002\n\n \u4E09\u6761\u53D7\u63A7\u8F74\uFF082026-10-19 \u91CD\u5199\uFF0C\u5BF9\u9F50\u4E3B\u6D41 UI \u6846\u67B6\u7684\u5206\u7C7B\u53E3\u5F84\uFF09\uFF1A\n \u00B7 variant \u2014\u2014 \u5916\u89C2\u6863 = \u5F62\u6001 + \u8BED\u4E49\u8272\uFF0C\u5171 10 \u6863\uFF1A\n primary / secondary / outline / ghost / danger / success / warning / info /\n danger-outline\uFF08\u7EA2\u5B57\u63CF\u8FB9\uFF09/ link\uFF08\u884C\u5185\u94FE\u63A5\uFF09\n \u00B7 size \u2014\u2014 sm / md / lg\n \u00B7 block \u2014\u2014 \u6491\u6EE1\u7236\u5BBD\n \u6BCF\u4E00\u6863**\u53EA\u586B 5 \u4E2A\u5C40\u90E8\u53D8\u91CF**\uFF08--btn-bg / -fg / -border / -bg-hover / -bg-active\uFF09\uFF0C\n \u7ED3\u6784\u4E0E\u4EA4\u4E92\u53EA\u6709\u4E0A\u9762\u8FD9\u4E00\u4EFD\uFF1B\u4EFB\u4F55\u6863\u4F4D\u90FD\u4E0D\u8BB8\u518D\u5199\u4E00\u904D display/height/padding\u3002\n \u81EA\u5B9A\u4E49\u989C\u8272\uFF08Button \u7684 color \u53C2\u6570\uFF09\u540C\u6837\u53EA\u8986\u76D6\u8FD9 5 \u4E2A\u53D8\u91CF\uFF08token \u8986\u76D6\uFF0C\u4E0D\u662F\u65B0\u76AE\u80A4\uFF09\u3002\n\n \u26A0\uFE0F hover \u4E0D\u518D\u7528 opacity \u538B\u4E00\u5C42\uFF08\u7528\u6237 2026-10-19\uFF1A\u300C\u9ED1\u8272\u548C\u7EA2\u8272\u7684\u6309\u94AE\u79FB\u4E0A\u53BB\u53D8\u5316\u592A\u5C0F\uFF0C\n \u5B8C\u5168\u611F\u89C9\u4E0D\u5230\u989C\u8272\u53D8\u4E86\u300D\uFF09\u21D2 \u8D70 --dshpc-*-hover / -active \u7684\u660E\u786E\u6DF7\u8272\uFF0C\u89C1 tokens-css.ts\u3002 */\n.dshpc-btn{--btn-bg:transparent;--btn-fg:var(--dshpc-fg);--btn-border:transparent;--btn-pad:12px;\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);--btn-fg-hover:var(--btn-fg);\n appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;\n box-sizing:border-box;border:1px solid var(--btn-border);border-radius:var(--dshpc-radius-md);\n background-color:var(--btn-bg);color:var(--btn-fg);font-family:inherit;font-weight:500;white-space:nowrap;cursor:pointer;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease),transform var(--dshpc-dur-fast) var(--dshpc-ease);}\n.dshpc-btn--sm{--btn-pad:10px;height:var(--dshpc-control-h-sm);padding:0 var(--btn-pad);font-size:var(--dshpc-font-sm);line-height:1;}\n.dshpc-btn--md{--btn-pad:12px;height:var(--dshpc-control-h-md);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;}\n.dshpc-btn--lg{--btn-pad:14px;height:var(--dshpc-control-h-lg);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;}\n/* block\uFF1A\u6491\u6EE1\u7236\u5BBD\uFF08\u8868\u5355\u5E95\u680F / \u62BD\u5C49\u5E95\u90E8\u7684\u4E3B\u64CD\u4F5C\uFF09 */\n.dshpc-btn--block{display:flex;width:100%;}\n/* block + \u524D\u7F6E\u56FE\u6807 \u21D2 \u6587\u5B57\u89C6\u89C9\u5C45\u4E2D\uFF082026-10-19 \u7528\u6237\u70B9\u540D\uFF09\uFF1A\n \u5185\u5BB9\u7EC4 [\u56FE\u6807 + \u95F4\u8DDD + \u6587\u5B57] \u6574\u4F53\u5728\u76D2\u5185\u5C45\u4E2D\u65F6\uFF0C**\u6587\u5B57**\u7684\u4E2D\u5FC3\u4F1A\u88AB\u56FE\u6807\u63A8\u53F3\u534A\u683C\u3002\n \u628A\u53F3\u5185\u8FB9\u8DDD\u8865\u4E0A\u300C\u56FE\u6807\u5BBD + \u95F4\u8DDD\u300D\uFF0C\u53EF\u7528\u76D2\u968F\u4E4B\u5DE6\u79FB\u540C\u91CF \u21D2 \u6587\u5B57\u843D\u56DE\u89C6\u89C9\u4E2D\u5FC3\uFF0C\u56FE\u6807\u8D34\u5DE6\u4FA7\u3002\n \u56FE\u6807\u5BBD\u6309 1.2em \u4F30\uFF08\u5B98\u65B9\u56FE\u6807 14/16px vs \u5B57\u53F7 12/13px\uFF09\uFF0Cem \u968F\u5B57\u53F7\u6863\u81EA\u52A8\u7F29\u653E\u3002 */\n.dshpc-btn--block.dshpc-btn--icon-start{padding-right:calc(var(--btn-pad) + 1.2em + 6px);}\n.dshpc-btn__icon,.dshpc-btn__icon-end{display:inline-flex;align-items:center;justify-content:center;flex:none;line-height:0;}\n.dshpc-btn__icon svg,.dshpc-btn__icon-end svg{display:block;margin:0;}\n/* loading\uFF1A\u4E0D\u6362 DOM \u7ED3\u6784\uFF0C\u53EA\u5728\u6587\u6848\u524D\u63D2\u4E00\u4E2A\u540C\u8272\u5C0F\u5708\uFF08\u5C3A\u5BF8\u968F\u5B57\u53F7\uFF0C\u7F29\u653E\u4E0D\u4F9D\u8D56\u5E38\u91CF\uFF09 */\n.dshpc-btn__spinner{display:block;flex:none;width:12px;height:12px;box-sizing:border-box;\n border:1.5px solid currentColor;border-right-color:transparent;border-radius:999px;\n animation:dshpc-btn-spin .7s linear infinite;}\n/* shortcut: 12px \u662F\u56FA\u5B9A\u503C\uFF0C\u4E0D\u968F\u6309\u94AE\u5B57\u53F7\u7F29\u653E\uFF1B\u8981\u66F4\u5927\u5C31\u6539\u8FD9\u4E00\u5904\u3002 */\n@keyframes dshpc-btn-spin{to{transform:rotate(360deg)}}\n\n/* \u4EA4\u4E92\u6001\uFF1A\u989C\u8272\u53D8\u5316\u5199\u5728\u53D8\u91CF\u4E0A \u21D2 \u6240\u6709\u6863\u4F4D\u4E00\u6B21\u751F\u6548\uFF0C\u4E14\u53D8\u5316\u5E45\u5EA6\u7531 token \u51B3\u5B9A\uFF08\u591F\u660E\u663E\uFF09 */\n.dshpc-btn:hover:not(:disabled){background-color:var(--btn-bg-hover);color:var(--btn-fg-hover);}\n.dshpc-btn:active:not(:disabled){background-color:var(--btn-bg-active);transform:translateY(1px);}\n.dshpc-btn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n.dshpc-btn:disabled{cursor:default;opacity:.5;}\n\n.dshpc-btn--primary{--btn-bg:var(--dshpc-accent);--btn-fg:var(--dshpc-fg-inverse);\n --btn-bg-hover:var(--dshpc-accent-hover);--btn-bg-active:var(--dshpc-accent-active);}\n/* secondary\uFF1A\u4E2D\u6027\u5B9E\u5FC3\uFF08\u7070\u9762\uFF09\uFF0C\u7528\u4E8E\u300C\u53D6\u6D88 / \u6B21\u8981\u300D\u8FD9\u7C7B\u4E0E\u4E3B\u64CD\u4F5C\u5E76\u6392\u7684\u6309\u94AE */\n.dshpc-btn--secondary{--btn-bg:var(--dshpc-hover);--btn-fg:var(--dshpc-fg);\n --btn-bg-hover:var(--dshpc-active);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--outline{--btn-bg:var(--dshpc-surface-1);--btn-border:var(--dshpc-border-strong);\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--ghost{--btn-fg:var(--dshpc-fg-2);--btn-fg-hover:var(--dshpc-fg);\n --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);}\n.dshpc-btn--danger{--btn-bg:var(--dshpc-danger);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-danger-hover);--btn-bg-active:var(--dshpc-danger-active);}\n.dshpc-btn--success{--btn-bg:var(--dshpc-success);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-success-hover);--btn-bg-active:var(--dshpc-success-active);}\n.dshpc-btn--warning{--btn-bg:var(--dshpc-warning);--btn-fg:var(--dshpc-on-warning);\n --btn-bg-hover:var(--dshpc-warning-hover);--btn-bg-active:var(--dshpc-warning-active);}\n.dshpc-btn--info{--btn-bg:var(--dshpc-business);--btn-fg:var(--dshpc-on-signal);\n --btn-bg-hover:var(--dshpc-business-hover);--btn-bg-active:var(--dshpc-business-active);}\n/* danger-outline\uFF1A\u7EA2\u5B57\u63CF\u8FB9\uFF08\u7834\u574F\u6027\u6B21\u8981\u64CD\u4F5C\uFF0C\u5982\u5361\u7247\u4E0A\u7684\u300C\u5220\u9664\u300D\uFF09\u3002\n \u26A0\uFE0F \u65E7\u4FEE\u9970\u7C7B danger-ink \u4FDD\u7559\u4E3A\u522B\u540D\uFF08\u6D88\u8D39\u65B9\u53EF\u80FD\u8FD8\u5728\u6302\uFF09\uFF0C\u4E24\u8005\u540C\u4E00\u5957\u76AE\u80A4\u3002 */\n.dshpc-btn--danger-outline,.dshpc-btn--danger-ink{--btn-border:var(--dshpc-danger);--btn-fg:var(--dshpc-danger);\n --btn-fg-hover:var(--dshpc-danger);--btn-bg-hover:var(--dshpc-danger-soft);--btn-bg-active:var(--dshpc-danger-soft);}\n/* link\uFF1A\u884C\u5185\u6587\u5B57\u94FE\u63A5\u578B\uFF08\u4F1A\u8BDD / \u4EA7\u51FA\u6587\u4EF6\u540D\uFF09\uFF0C\u65E0\u5E95\u65E0\u8FB9\u3001\u54C1\u724C\u84DD\u3001hover \u4E0B\u5212\u7EBF */\n.dshpc-btn--link{--btn-fg:var(--dshpc-link);--btn-fg-hover:var(--dshpc-link);\n --btn-bg-hover:transparent;--btn-bg-active:transparent;\n height:auto;padding:0;border:0;background:none;font-weight:400;text-align:left;}\n.dshpc-btn--link:hover:not(:disabled){text-decoration:underline;}\n\n/* \u56FE\u6807\u94AE\uFF1A\u7EAF\u56FE\u6807\uFF0C\u65B9\u5F62\uFF1B\u5C3A\u5BF8\u6863\u7684\u5BBD\u9AD8\u4E0E\u540C\u6863\u6587\u5B57\u6309\u94AE\u7B49\u9AD8 */\n.dshpc-iconbtn{appearance:none;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;\n border:1px solid transparent;border-radius:var(--dshpc-radius-sm);background:transparent;color:var(--dshpc-fg-2);\n font-family:inherit;cursor:pointer;flex:none;\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),opacity var(--dshpc-dur-fast) var(--dshpc-ease);}\n.dshpc-iconbtn--sm{width:var(--dshpc-control-h-sm);height:var(--dshpc-control-h-sm);font-size:var(--dshpc-font-sm);}\n.dshpc-iconbtn--md{width:var(--dshpc-control-h-md);height:var(--dshpc-control-h-md);font-size:var(--dshpc-font-md);}\n.dshpc-iconbtn--lg{width:var(--dshpc-control-h-lg);height:var(--dshpc-control-h-lg);font-size:var(--dshpc-font-md);}\n.dshpc-iconbtn--plain{color:var(--dshpc-fg-2);}\n.dshpc-iconbtn--outline{background:var(--dshpc-surface-1);border-color:var(--dshpc-border);color:var(--dshpc-fg-2);}\n.dshpc-iconbtn--danger{color:var(--dshpc-danger);}\n.dshpc-iconbtn:hover:not(:disabled){background:var(--dshpc-hover);color:var(--dshpc-fg);}\n.dshpc-iconbtn--danger:hover:not(:disabled){background:var(--dshpc-danger-soft);color:var(--dshpc-danger);}\n.dshpc-iconbtn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n.dshpc-iconbtn:disabled{cursor:default;opacity:.4;}\n\n/* \u2500\u2500 \u884C\u5F0F\u6587\u4EF6\u6309\u94AE\uFF08\u56FE\u6807 + \u6587\u4EF6\u540D\uFF09P2\uFF1A**\u5168\u7AD9\u552F\u4E00\u5B9E\u73B0**\uFF082026-10-04 \u6536\u7F16\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n \u7528\u9014\uFF1A\u300C\u4EA7\u51FA\u7269 / \u9644\u4EF6\u300D\u90A3\u79CD**\u4E00\u884C\u4E00\u4E2A\u6587\u4EF6**\u7684\u6E05\u5355\u9879\uFF08\u57FA\u7840\u4FE1\u606F\u53F3\u680F\u4EA7\u51FA\u7269\u6E05\u5355\u3001\u9644\u4EF6\u533A\u3001\n \u6267\u884C\u8BB0\u5F55\u9875\u7684\u5C55\u5F00\u533A\uFF09\u3002\u5E73\u65F6\u900F\u660E\u3001**\u9F20\u6807\u79FB\u4E0A\u53BB\u624D\u51FA\u6D45\u5E95**\uFF08\u6CBF\u7528\u7528\u6237 2026-10-03 \u5B9A\u7684\u89C2\u611F\uFF09\u3002\n \u4E24\u4E2A\u5F62\u6001\u4FEE\u9970\u7C7B\uFF1A\n --block \u6491\u6EE1\u7236\u5BBD\uFF08\u6E05\u5355\u91CC\u4E00\u9879\u4E00\u884C\uFF09\n --inline \u5185\u5BB9\u5BBD\uFF08\u8DDF\u5728\u6587\u5B57\u540E\u5934\uFF0C\u5982\u9644\u4EF6\u884C\uFF09\n \u6536\u7F16\u539F\u56E0\uFF1A\u8FD9\u4EFD\u76AE\u80A4\u6B64\u524D\u53EA\u5199\u5728 task-list.tsx \u7684 TASK_LIST_CSS \u91CC\uFF08\u65E7\u540D .dshpc-info-out\uFF09\uFF0C\n \u6267\u884C\u8BB0\u5F55\u9875\u5C55\u5F00\u533A\u8981\u7528\u540C\u4E00\u79CD\u89C2\u611F \u21D2 \u4E0A\u63D0\u57FA\u7840\u5C42\uFF0C\u907F\u514D\u518D\u51FA\u73B0\u300C\u5404\u5199\u4E00\u4EFD\u5916\u89C2\u300D\uFF08\u540C\u540D\u4E0D\u540C\u76AE\u7684\u5751\u521A\u8E29\u8FC7\uFF09\u3002 */\n.dshpc-filechip{appearance:none;-webkit-appearance:none;border:0;border-radius:var(--dshpc-radius-xs);\n background:transparent;color:var(--dshpc-fg);font:inherit;text-align:left;cursor:pointer;min-width:0;\n transition:background-color var(--dshpc-dur) var(--dshpc-ease);}\n.dshpc-filechip:hover:not(:disabled){background:var(--dshpc-chip-bg);}\n.dshpc-filechip:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px;}\n.dshpc-filechip:disabled{cursor:default;background:transparent;color:var(--dshpc-fg-3);}\n.dshpc-filechip--block{display:flex;align-items:center;gap:6px;width:100%;box-sizing:border-box;\n padding:4px 6px;font-size:var(--dshpc-font-xs);}\n.dshpc-filechip--inline{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;font-size:var(--dshpc-font-sm);}\n\n@media (prefers-reduced-motion: reduce){.dshpc-btn,.dshpc-iconbtn,.dshpc-filechip{transition:none;}}\n";
|
|
3
|
-
export declare const FIELD_CSS = "
|
|
4
|
-
export declare const DATETIME_CSS = "
|
|
5
|
-
export declare const SELECT_CSS = "
|
|
6
|
-
export declare const LOADING_CSS = "
|
|
7
|
-
export declare const BACK_TO_TOP_CSS = "
|
|
8
|
-
export declare const HINT_CSS = "
|
|
1
|
+
export declare const SEGMENTED_CSS = " /* \u2500\u2500 \u5206\u6BB5\u63A7\u4EF6 P2 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 2026-10-19\uFF1A\u6309\u7528\u6237\u70B9\u540D\u300C\u539F\u5C01\u4E0D\u52A8\u7167\u5144\u5F1F\u9879\u76EE dsh-task-dispatch-table \u6284\u300D\u2014\u2014 \u89C4\u5219\u7ED3\u6784\u3001\u5199\u6CD5\u3001transition \u5168\u90E8\u5BF9\u9F50\u5144\u5F1F\u539F\u6587\uFF08\u5355\u884C\u89C4\u5219\u3001item \u65E0\u8FB9\u6846\u3001hover \u53EA\u63D0\u4EAE\u6587\u5B57\uFF09\uFF0C \u53EA\u628A\u524D\u7F00 / \u53D8\u91CF\u540D\u6362\u6210\u672C\u4ED3\u53E3\u5F84\u30020.2.2-0.2.8 \u771F\u673A\u4E0A\u300C\u8F68\u9053\u900F\u660E\u3001gap \u5931\u6548\u300D\u81EA\u67E5\u591A\u8F6E\u65E0\u679C \u21D2 \u4E0D\u518D\u81EA\u521B\u5199\u6CD5\uFF0C\u56DE\u5230\u5144\u5F1F\u540C\u6B3E\u3002 \u7528\u6237\u989D\u5916\u8981\u7684\u4E24\u5904\uFF08\u5144\u5F1F\u6CA1\u6709\uFF0C\u4FDD\u7559\uFF09\uFF1Aweekday \u65B9\u5757\u95F4\u8DDD gap:6px\uFF1B\u6BB5\u5185\u4E2D\u6027\u8BA1\u6570 __count\u3002 */ .dshpc-seg{display:inline-flex;align-items:center;gap:2px;padding:2px;border-radius:var(--dshpc-radius-md);background:var(--seg-track,var(--dshpc-seg-track));} .dshpc-seg--default{--seg-track:var(--dshpc-surface-2);--seg-thumb:var(--dshpc-surface-raised);border:1px solid var(--dshpc-border);} .dshpc-seg--inset{--seg-track:var(--dshpc-seg-track);--seg-thumb:var(--dshpc-surface-raised);border:0;padding:3px;} .dshpc-seg__item{appearance:none;display:inline-flex;align-items:center;gap:4px;box-sizing:border-box;height:calc(var(--dshpc-control-h-sm) - 6px);padding:0 12px;border:0;border-radius:var(--dshpc-radius-sm);background:transparent;color:var(--dshpc-fg-2);font-family:inherit;font-size:var(--dshpc-font-xs);font-weight:500;white-space:nowrap;cursor:pointer;flex:none;transition:color var(--dshpc-dur-fast) var(--dshpc-ease),background-color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease);} .dshpc-seg--md .dshpc-seg__item{height:calc(var(--dshpc-control-h-md) - 6px);} .dshpc-seg--lg .dshpc-seg__item{height:calc(var(--dshpc-control-h-lg) - 6px);} .dshpc-seg__item:hover:not([aria-pressed='true']):not(:disabled){color:var(--dshpc-fg);} .dshpc-seg__item[aria-pressed='true']{background:var(--seg-thumb);box-shadow:var(--dshpc-shadow-raised);color:var(--dshpc-fg);font-weight:600;} .dshpc-seg__item:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:-2px;} .dshpc-seg__item:disabled{cursor:default;opacity:.4;} /* \u6BB5\u5185\u89D2\u6807\uFF08\u5982\u300C\u5F02\u5E38\u300D\u7684\u6570\u91CF\uFF09\uFF1A\u8BED\u4E49\u8272\u5B9E\u9762 + \u53CD\u767D\u5B57\uFF0C0 \u7531\u7EC4\u4EF6\u4FA7\u4E0D\u6E32\u67D3\u3002\u5FC5\u987B\u662F\u6B63\u5706\uFF08\u7528\u6237 2026-10-03\uFF09\u3002 */ .dshpc-seg__badge{display:inline-flex;align-items:center;justify-content:center;flex:none;width:16px;height:16px;padding:0;overflow:hidden;border-radius:50%;background:var(--dshpc-danger);color:var(--dshpc-on-signal);font-size:10px;line-height:16px;font-weight:500;font-variant-numeric:tabular-nums;} /* \u6BB5\u5185\u4E2D\u6027\u8BA1\u6570\uFF08\u5982\u7B5B\u9009\u6761\u300C\u5168\u90E8 11\u300D\uFF09\uFF1A\u7EAF\u6587\u5B57\u3001\u65E0\u5E95\u65E0\u8FB9\uFF08\u5BF9\u9F50 task-ledger .dtl-seg__num \u62CD\u677F\u53E3\u5F84\uFF09\uFF1B0 \u7531\u7EC4\u4EF6\u4FA7\u4E0D\u6E32\u67D3\u3002 */ .dshpc-seg__count{display:inline;flex:none;margin-left:3px;padding:0;border:0;border-radius:0;background:none;color:var(--dshpc-fg-3);font-size:10px;line-height:1;font-weight:400;font-variant-numeric:tabular-nums;} /* block\uFF1A\u6491\u6EE1\u7236\u5BBD\uFF08\u8868\u5355\u884C\u7528\uFF09\uFF0C\u5404\u6BB5\u7B49\u5206 */ .dshpc-seg--block{display:flex;width:100%;} .dshpc-seg--block .dshpc-seg__item{flex:1 1 auto;justify-content:center;} /* weekday\uFF1A\u661F\u671F\u591A\u9009\u65B9\u5757\u3002\u57FA\u7840\u63D2\u4EF6\u7684\u7279\u6B8A\u5316\u5B9A\u5236\uFF08\u7528\u6237 2026-10-01\uFF1A\u539F WeekdayPicker \u5373\u300C\u84DD\u5E95 + \u8FD1\u4F3C\u65B9\u5F62\u300D\uFF09\uFF1A \u6BCF\u683C\u6B63\u65B9\u5F62\uFF08\u5BBD = \u6BB5\u9AD8\uFF09\u3001\u9009\u4E2D\u54C1\u724C\u84DD\u53CD\u767D\u5B57\u3001**\u65E0\u5916\u63CF\u8FB9**\uFF082026-10-18 \u91CD\u7533\uFF09\u3001 \u65B9\u5757\u4E4B\u95F4\u95F4\u8DDD gap:6px\uFF082026-10-18\uFF1A\u4E0D\u518D 2px \u6324\u6210\u4E00\u5768 \u2014\u2014 \u8FD9\u4E00\u6761\u5144\u5F1F\u6CA1\u6709\u3001\u662F\u7528\u6237\u989D\u5916\u8981\u7684\uFF09\u3002 */ .dshpc-seg--weekday{--seg-track:var(--dshpc-seg-track);gap:6px;border:0;padding:3px;} .dshpc-seg--weekday .dshpc-seg__item{width:calc(var(--dshpc-control-h-lg) - 6px);padding:0;justify-content:center;} .dshpc-seg--weekday .dshpc-seg__item[aria-pressed='true']{background:var(--dshpc-business);color:var(--dshpc-fg-inverse);box-shadow:var(--dshpc-shadow-raised);} @media (prefers-reduced-motion: reduce){.dshpc-seg__item{transition:none;}} ";
|
|
2
|
+
export declare const BUTTON_CSS = " /* \u2500\u2500 \u6309\u94AE / \u56FE\u6807\u94AE P2 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u4E0E Segmented \u540C\u4E00\u6761\u9AD8\u5EA6\u7EAA\u5F8B\uFF1A--dshpc-control-h-sm(24) / -md(28) / -lg(32)\uFF0C \u6709\u8FB9\u6846\u7684 variant \u7528 1px \u771F\u8FB9\u6846 + \u5185\u90E8 padding \u8865\u56DE\uFF0C**\u6709\u8FB9 / \u65E0\u8FB9\u540C\u9AD8**\u3002 \u4E09\u6761\u53D7\u63A7\u8F74\uFF082026-10-19 \u91CD\u5199\uFF0C\u5BF9\u9F50\u4E3B\u6D41 UI \u6846\u67B6\u7684\u5206\u7C7B\u53E3\u5F84\uFF09\uFF1A \u00B7 variant \u2014\u2014 \u5916\u89C2\u6863 = \u5F62\u6001 + \u8BED\u4E49\u8272\uFF0C\u5171 10 \u6863\uFF1A primary / secondary / outline / ghost / danger / success / warning / info / danger-outline\uFF08\u7EA2\u5B57\u63CF\u8FB9\uFF09/ link\uFF08\u884C\u5185\u94FE\u63A5\uFF09 \u00B7 size \u2014\u2014 sm / md / lg \u00B7 block \u2014\u2014 \u6491\u6EE1\u7236\u5BBD \u6BCF\u4E00\u6863**\u53EA\u586B 5 \u4E2A\u5C40\u90E8\u53D8\u91CF**\uFF08--btn-bg / -fg / -border / -bg-hover / -bg-active\uFF09\uFF0C \u7ED3\u6784\u4E0E\u4EA4\u4E92\u53EA\u6709\u4E0A\u9762\u8FD9\u4E00\u4EFD\uFF1B\u4EFB\u4F55\u6863\u4F4D\u90FD\u4E0D\u8BB8\u518D\u5199\u4E00\u904D display/height/padding\u3002 \u81EA\u5B9A\u4E49\u989C\u8272\uFF08Button \u7684 color \u53C2\u6570\uFF09\u540C\u6837\u53EA\u8986\u76D6\u8FD9 5 \u4E2A\u53D8\u91CF\uFF08token \u8986\u76D6\uFF0C\u4E0D\u662F\u65B0\u76AE\u80A4\uFF09\u3002 \u26A0\uFE0F hover \u4E0D\u518D\u7528 opacity \u538B\u4E00\u5C42\uFF08\u7528\u6237 2026-10-19\uFF1A\u300C\u9ED1\u8272\u548C\u7EA2\u8272\u7684\u6309\u94AE\u79FB\u4E0A\u53BB\u53D8\u5316\u592A\u5C0F\uFF0C \u5B8C\u5168\u611F\u89C9\u4E0D\u5230\u989C\u8272\u53D8\u4E86\u300D\uFF09\u21D2 \u8D70 --dshpc-*-hover / -active \u7684\u660E\u786E\u6DF7\u8272\uFF0C\u89C1 tokens-css.ts\u3002 */ .dshpc-btn{--btn-bg:transparent;--btn-fg:var(--dshpc-fg);--btn-border:transparent;--btn-pad:12px; --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);--btn-fg-hover:var(--btn-fg); appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:6px; box-sizing:border-box;border:1px solid var(--btn-border);border-radius:var(--dshpc-radius-md); background-color:var(--btn-bg);color:var(--btn-fg);font-family:inherit;font-weight:500;white-space:nowrap;cursor:pointer; transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease),transform var(--dshpc-dur-fast) var(--dshpc-ease);} .dshpc-btn--sm{--btn-pad:10px;height:var(--dshpc-control-h-sm);padding:0 var(--btn-pad);font-size:var(--dshpc-font-sm);line-height:1;} .dshpc-btn--md{--btn-pad:12px;height:var(--dshpc-control-h-md);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;} .dshpc-btn--lg{--btn-pad:14px;height:var(--dshpc-control-h-lg);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;} /* block\uFF1A\u6491\u6EE1\u7236\u5BBD\uFF08\u8868\u5355\u5E95\u680F / \u62BD\u5C49\u5E95\u90E8\u7684\u4E3B\u64CD\u4F5C\uFF09 */ .dshpc-btn--block{display:flex;width:100%;} /* block + \u524D\u7F6E\u56FE\u6807 \u21D2 \u6587\u5B57\u89C6\u89C9\u5C45\u4E2D\uFF082026-10-19 \u7528\u6237\u70B9\u540D\uFF09\uFF1A \u5185\u5BB9\u7EC4 [\u56FE\u6807 + \u95F4\u8DDD + \u6587\u5B57] \u6574\u4F53\u5728\u76D2\u5185\u5C45\u4E2D\u65F6\uFF0C**\u6587\u5B57**\u7684\u4E2D\u5FC3\u4F1A\u88AB\u56FE\u6807\u63A8\u53F3\u534A\u683C\u3002 \u628A\u53F3\u5185\u8FB9\u8DDD\u8865\u4E0A\u300C\u56FE\u6807\u5BBD + \u95F4\u8DDD\u300D\uFF0C\u53EF\u7528\u76D2\u968F\u4E4B\u5DE6\u79FB\u540C\u91CF \u21D2 \u6587\u5B57\u843D\u56DE\u89C6\u89C9\u4E2D\u5FC3\uFF0C\u56FE\u6807\u8D34\u5DE6\u4FA7\u3002 \u56FE\u6807\u5BBD\u6309 1.2em \u4F30\uFF08\u5B98\u65B9\u56FE\u6807 14/16px vs \u5B57\u53F7 12/13px\uFF09\uFF0Cem \u968F\u5B57\u53F7\u6863\u81EA\u52A8\u7F29\u653E\u3002 */ .dshpc-btn--block.dshpc-btn--icon-start{padding-right:calc(var(--btn-pad) + 1.2em + 6px);} .dshpc-btn__icon,.dshpc-btn__icon-end{display:inline-flex;align-items:center;justify-content:center;flex:none;line-height:0;} .dshpc-btn__icon svg,.dshpc-btn__icon-end svg{display:block;margin:0;} /* loading\uFF1A\u4E0D\u6362 DOM \u7ED3\u6784\uFF0C\u53EA\u5728\u6587\u6848\u524D\u63D2\u4E00\u4E2A\u540C\u8272\u5C0F\u5708\uFF08\u5C3A\u5BF8\u968F\u5B57\u53F7\uFF0C\u7F29\u653E\u4E0D\u4F9D\u8D56\u5E38\u91CF\uFF09 */ .dshpc-btn__spinner{display:block;flex:none;width:12px;height:12px;box-sizing:border-box; border:1.5px solid currentColor;border-right-color:transparent;border-radius:999px; animation:dshpc-btn-spin .7s linear infinite;} /* shortcut: 12px \u662F\u56FA\u5B9A\u503C\uFF0C\u4E0D\u968F\u6309\u94AE\u5B57\u53F7\u7F29\u653E\uFF1B\u8981\u66F4\u5927\u5C31\u6539\u8FD9\u4E00\u5904\u3002 */ @keyframes dshpc-btn-spin{to{transform:rotate(360deg)}} /* \u4EA4\u4E92\u6001\uFF1A\u989C\u8272\u53D8\u5316\u5199\u5728\u53D8\u91CF\u4E0A \u21D2 \u6240\u6709\u6863\u4F4D\u4E00\u6B21\u751F\u6548\uFF0C\u4E14\u53D8\u5316\u5E45\u5EA6\u7531 token \u51B3\u5B9A\uFF08\u591F\u660E\u663E\uFF09 */ .dshpc-btn:hover:not(:disabled){background-color:var(--btn-bg-hover);color:var(--btn-fg-hover);} .dshpc-btn:active:not(:disabled){background-color:var(--btn-bg-active);transform:translateY(1px);} .dshpc-btn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;} .dshpc-btn:disabled{cursor:default;opacity:.5;} .dshpc-btn--primary{--btn-bg:var(--dshpc-accent);--btn-fg:var(--dshpc-fg-inverse); --btn-bg-hover:var(--dshpc-accent-hover);--btn-bg-active:var(--dshpc-accent-active);} /* secondary\uFF1A\u4E2D\u6027\u5B9E\u5FC3\uFF08\u7070\u9762\uFF09\uFF0C\u7528\u4E8E\u300C\u53D6\u6D88 / \u6B21\u8981\u300D\u8FD9\u7C7B\u4E0E\u4E3B\u64CD\u4F5C\u5E76\u6392\u7684\u6309\u94AE */ .dshpc-btn--secondary{--btn-bg:var(--dshpc-hover);--btn-fg:var(--dshpc-fg); --btn-bg-hover:var(--dshpc-active);--btn-bg-active:var(--dshpc-active);} .dshpc-btn--outline{--btn-bg:var(--dshpc-surface-1);--btn-border:var(--dshpc-border-strong); --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);} .dshpc-btn--ghost{--btn-fg:var(--dshpc-fg-2);--btn-fg-hover:var(--dshpc-fg); --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);} .dshpc-btn--danger{--btn-bg:var(--dshpc-danger);--btn-fg:var(--dshpc-on-signal); --btn-bg-hover:var(--dshpc-danger-hover);--btn-bg-active:var(--dshpc-danger-active);} .dshpc-btn--success{--btn-bg:var(--dshpc-success);--btn-fg:var(--dshpc-on-signal); --btn-bg-hover:var(--dshpc-success-hover);--btn-bg-active:var(--dshpc-success-active);} .dshpc-btn--warning{--btn-bg:var(--dshpc-warning);--btn-fg:var(--dshpc-on-warning); --btn-bg-hover:var(--dshpc-warning-hover);--btn-bg-active:var(--dshpc-warning-active);} .dshpc-btn--info{--btn-bg:var(--dshpc-business);--btn-fg:var(--dshpc-on-signal); --btn-bg-hover:var(--dshpc-business-hover);--btn-bg-active:var(--dshpc-business-active);} /* danger-outline\uFF1A\u7EA2\u5B57\u63CF\u8FB9\uFF08\u7834\u574F\u6027\u6B21\u8981\u64CD\u4F5C\uFF0C\u5982\u5361\u7247\u4E0A\u7684\u300C\u5220\u9664\u300D\uFF09\u3002 \u26A0\uFE0F \u65E7\u4FEE\u9970\u7C7B danger-ink \u4FDD\u7559\u4E3A\u522B\u540D\uFF08\u6D88\u8D39\u65B9\u53EF\u80FD\u8FD8\u5728\u6302\uFF09\uFF0C\u4E24\u8005\u540C\u4E00\u5957\u76AE\u80A4\u3002 */ .dshpc-btn--danger-outline,.dshpc-btn--danger-ink{--btn-border:var(--dshpc-danger);--btn-fg:var(--dshpc-danger); --btn-fg-hover:var(--dshpc-danger);--btn-bg-hover:var(--dshpc-danger-soft);--btn-bg-active:var(--dshpc-danger-soft);} /* link\uFF1A\u884C\u5185\u6587\u5B57\u94FE\u63A5\u578B\uFF08\u4F1A\u8BDD / \u4EA7\u51FA\u6587\u4EF6\u540D\uFF09\uFF0C\u65E0\u5E95\u65E0\u8FB9\u3001\u54C1\u724C\u84DD\u3001hover \u4E0B\u5212\u7EBF */ .dshpc-btn--link{--btn-fg:var(--dshpc-link);--btn-fg-hover:var(--dshpc-link); --btn-bg-hover:transparent;--btn-bg-active:transparent; height:auto;padding:0;border:0;background:none;font-weight:400;text-align:left;} .dshpc-btn--link:hover:not(:disabled){text-decoration:underline;} /* \u56FE\u6807\u94AE\uFF1A\u7EAF\u56FE\u6807\uFF0C\u65B9\u5F62\uFF1B\u5C3A\u5BF8\u6863\u7684\u5BBD\u9AD8\u4E0E\u540C\u6863\u6587\u5B57\u6309\u94AE\u7B49\u9AD8 */ .dshpc-iconbtn{appearance:none;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box; border:1px solid transparent;border-radius:var(--dshpc-radius-sm);background:transparent;color:var(--dshpc-fg-2); font-family:inherit;cursor:pointer;flex:none; transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),opacity var(--dshpc-dur-fast) var(--dshpc-ease);} .dshpc-iconbtn--sm{width:var(--dshpc-control-h-sm);height:var(--dshpc-control-h-sm);font-size:var(--dshpc-font-sm);} .dshpc-iconbtn--md{width:var(--dshpc-control-h-md);height:var(--dshpc-control-h-md);font-size:var(--dshpc-font-md);} .dshpc-iconbtn--lg{width:var(--dshpc-control-h-lg);height:var(--dshpc-control-h-lg);font-size:var(--dshpc-font-md);} .dshpc-iconbtn--plain{color:var(--dshpc-fg-2);} .dshpc-iconbtn--outline{background:var(--dshpc-surface-1);border-color:var(--dshpc-border);color:var(--dshpc-fg-2);} .dshpc-iconbtn--danger{color:var(--dshpc-danger);} .dshpc-iconbtn:hover:not(:disabled){background:var(--dshpc-hover);color:var(--dshpc-fg);} .dshpc-iconbtn--danger:hover:not(:disabled){background:var(--dshpc-danger-soft);color:var(--dshpc-danger);} .dshpc-iconbtn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;} .dshpc-iconbtn:disabled{cursor:default;opacity:.4;} /* \u2500\u2500 \u884C\u5F0F\u6587\u4EF6\u6309\u94AE\uFF08\u56FE\u6807 + \u6587\u4EF6\u540D\uFF09P2\uFF1A**\u5168\u7AD9\u552F\u4E00\u5B9E\u73B0**\uFF082026-10-04 \u6536\u7F16\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u7528\u9014\uFF1A\u300C\u4EA7\u51FA\u7269 / \u9644\u4EF6\u300D\u90A3\u79CD**\u4E00\u884C\u4E00\u4E2A\u6587\u4EF6**\u7684\u6E05\u5355\u9879\uFF08\u57FA\u7840\u4FE1\u606F\u53F3\u680F\u4EA7\u51FA\u7269\u6E05\u5355\u3001\u9644\u4EF6\u533A\u3001 \u6267\u884C\u8BB0\u5F55\u9875\u7684\u5C55\u5F00\u533A\uFF09\u3002\u5E73\u65F6\u900F\u660E\u3001**\u9F20\u6807\u79FB\u4E0A\u53BB\u624D\u51FA\u6D45\u5E95**\uFF08\u6CBF\u7528\u7528\u6237 2026-10-03 \u5B9A\u7684\u89C2\u611F\uFF09\u3002 \u4E24\u4E2A\u5F62\u6001\u4FEE\u9970\u7C7B\uFF1A --block \u6491\u6EE1\u7236\u5BBD\uFF08\u6E05\u5355\u91CC\u4E00\u9879\u4E00\u884C\uFF09 --inline \u5185\u5BB9\u5BBD\uFF08\u8DDF\u5728\u6587\u5B57\u540E\u5934\uFF0C\u5982\u9644\u4EF6\u884C\uFF09 \u6536\u7F16\u539F\u56E0\uFF1A\u8FD9\u4EFD\u76AE\u80A4\u6B64\u524D\u53EA\u5199\u5728 task-list.tsx \u7684 TASK_LIST_CSS \u91CC\uFF08\u65E7\u540D .dshpc-info-out\uFF09\uFF0C \u6267\u884C\u8BB0\u5F55\u9875\u5C55\u5F00\u533A\u8981\u7528\u540C\u4E00\u79CD\u89C2\u611F \u21D2 \u4E0A\u63D0\u57FA\u7840\u5C42\uFF0C\u907F\u514D\u518D\u51FA\u73B0\u300C\u5404\u5199\u4E00\u4EFD\u5916\u89C2\u300D\uFF08\u540C\u540D\u4E0D\u540C\u76AE\u7684\u5751\u521A\u8E29\u8FC7\uFF09\u3002 */ .dshpc-filechip{appearance:none;-webkit-appearance:none;border:0;border-radius:var(--dshpc-radius-xs); background:transparent;color:var(--dshpc-fg);font:inherit;text-align:left;cursor:pointer;min-width:0; transition:background-color var(--dshpc-dur) var(--dshpc-ease);} .dshpc-filechip:hover:not(:disabled){background:var(--dshpc-chip-bg);} .dshpc-filechip:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px;} .dshpc-filechip:disabled{cursor:default;background:transparent;color:var(--dshpc-fg-3);} .dshpc-filechip--block{display:flex;align-items:center;gap:6px;width:100%;box-sizing:border-box; padding:4px 6px;font-size:var(--dshpc-font-xs);} .dshpc-filechip--inline{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;font-size:var(--dshpc-font-sm);} @media (prefers-reduced-motion: reduce){.dshpc-btn,.dshpc-iconbtn,.dshpc-filechip{transition:none;}} ";
|
|
3
|
+
export declare const FIELD_CSS = " /* \u2500\u2500 \u8F93\u5165\u7C7B P3 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */ .dshpc-input{box-sizing:border-box;border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md); background:var(--dshpc-surface-1);color:var(--dshpc-fg);font-family:inherit;outline:none; transition:border-color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease);} .dshpc-input--sm{height:var(--dshpc-control-h-sm);padding:0 8px;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);} .dshpc-input--md{height:var(--dshpc-control-h-md);padding:0 10px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);} .dshpc-input--lg{height:var(--dshpc-control-h-lg);padding:0 12px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);} .dshpc-input::placeholder{color:var(--dshpc-fg-dim);} .dshpc-input:focus{border-color:var(--dshpc-focus);box-shadow:0 0 0 1px var(--dshpc-focus);} .dshpc-input--error{border-color:var(--dshpc-danger);} .dshpc-input:disabled{cursor:default;opacity:.5;} .dshpc-pfx{display:inline-flex;align-items:center;box-sizing:border-box;overflow:hidden; border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md);background:var(--dshpc-surface-1);color:var(--dshpc-fg);} .dshpc-pfx--sm{height:var(--dshpc-control-h-sm);} .dshpc-pfx--md{height:var(--dshpc-control-h-md);} .dshpc-pfx--lg{height:var(--dshpc-control-h-lg);} /* md / lg \u6863\u5B57\u53F7\u8DDF\u6863\u8D70\uFF08\u4E0E\u540C\u6863\u4E0B\u62C9\u540C\u5B57\u53F7\uFF09\uFF1A\u6B64\u524D\u5199\u6B7B sm(12px)\uFF0C\u540C\u6392\u4E0B\u62C9\u662F 13px \u21D2 \u663E\u5F97\u300Cinput \u5B57\u5C0F\u300D\u3002 */ .dshpc-pfx--md .dshpc-pfx__label,.dshpc-pfx--lg .dshpc-pfx__label{font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);} .dshpc-pfx--md .dshpc-pfx__input,.dshpc-pfx--lg .dshpc-pfx__input{font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);} .dshpc-pfx--error{border-color:var(--dshpc-danger);} .dshpc-pfx:focus-within{border-color:var(--dshpc-focus);box-shadow:0 0 0 1px var(--dshpc-focus);} .dshpc-pfx__label{padding:0 8px;color:var(--dshpc-fg-2);font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);white-space:nowrap;border-right:1px solid var(--dshpc-border);} .dshpc-pfx__input{flex:1 1 auto;min-width:0;height:100%;padding:0 8px;border:0;background:transparent;color:var(--dshpc-fg); font-family:inherit;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);outline:none;} .dshpc-pfx__input::placeholder{color:var(--dshpc-fg-dim);} .dshpc-num{display:inline-flex;align-items:center;justify-content:space-between;box-sizing:border-box;overflow:hidden; border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md);background:var(--dshpc-surface-1);color:var(--dshpc-fg);} /* \u4E2D\u6BB5\uFF1A\u6570\u5B57 + \u540E\u7F00\u6210\u7EC4\u5C45\u4E2D\uFF1B\u5BB9\u5668\u88AB\u6D88\u8D39\u7AEF\u62C9\u5BBD\u65F6\u5403\u6389\u5168\u90E8\u4F59\u91CF\uFF0C\u4E24\u7AEF \u2212 / + \u56E0\u6B64\u9489\u6B7B\u5728\u5DE6\u53F3\u8FB9\u7F18\u3002 */ .dshpc-num__mid{display:flex;align-items:center;justify-content:center;flex:1 1 auto;min-width:0;} .dshpc-num--sm{height:var(--dshpc-control-h-sm);} .dshpc-num--md{height:var(--dshpc-control-h-md);} .dshpc-num--lg{height:var(--dshpc-control-h-lg);} .dshpc-num--md .dshpc-num__input,.dshpc-num--lg .dshpc-num__input{font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);} .dshpc-num--md .dshpc-num__suffix,.dshpc-num--lg .dshpc-num__suffix{font-size:var(--dshpc-font-md);} .dshpc-num--disabled{opacity:.5;} .dshpc-num__input{width:36px;height:100%;padding:0 2px;border:0;background:transparent;color:var(--dshpc-fg); font-family:inherit;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);text-align:center;outline:none;} .dshpc-num__suffix{padding:0 6px;color:var(--dshpc-fg-2);font-size:var(--dshpc-font-sm);white-space:nowrap;} .dshpc-num .dshpc-iconbtn{border-radius:0;color:var(--dshpc-fg-2);flex:none;} /* \u5B98\u65B9 Switch \u5305\u88C5\u7EDF\u4E00\uFF1A\u9009\u4E2D = success \u7EFF\u3002 \uFF08\u5408\u5E76\u539F\u5148 task-editor-css / task-list \u4E24\u5904\u5C31\u5730\u8986\u76D6\uFF1B\u9009\u62E9\u5668\u5E26\u5305\u88C5\u7C7B + role\uFF0C\u7279\u5F02\u6027\u9AD8\u4E8E\u5B98\u65B9\u3002\uFF09 */ .dshpc-switch button[role='switch'][aria-checked='true']{background:var(--dshpc-success);} /* \u591A\u884C\u6587\u672C\u8F93\u5165\uFF08\u63D0\u793A\u8BCD\u7B49\uFF0CP3\uFF09\uFF1A\u5361\u5185\u65E0\u8FB9\u6846\uFF08\u89C6\u89C9\u91CD\u5FC3\u5728\u6574\u5F20\u5361\u4E0A\uFF09\uFF0C\u5360\u4F4D\u8272\u8D70 dimmed\uFF1B\u6821\u9A8C\u4E0D\u901A\u8FC7\u63CF\u7EA2\u76D2\u3002 \uFF08\u4ECE task-editor-css \u7684 .dshpc-ed-prompt \u4E0A\u63D0\u800C\u6765\uFF1B\u4E1A\u52A1\u6587\u4EF6\u4E0D\u518D\u81EA\u5199 textarea \u76AE\u80A4\u3002\uFF09 */ .dshpc-textarea{display:block;width:100%;box-sizing:border-box;min-height:132px;padding:2px;border:none;outline:none;background:0 0;color:var(--dshpc-fg);font:inherit;font-size:var(--dshpc-font-lg);line-height:1.6;resize:vertical;} .dshpc-textarea::placeholder{color:var(--dshpc-fg-dim);} .dshpc-textarea--error{box-shadow:0 0 0 1px var(--dshpc-danger);} /* \u62D6\u62FD\u5206\u9694\u6761\uFF08\u7F16\u8F91\u5206\u680F / \u9884\u89C8 dock \u5171\u7528\uFF0CU20 #3\uFF09\uFF1A6px \u547D\u4E2D\u533A\uFF0Ccol-resize\uFF0C\u4E0D\u753B\u7EBF\uFF0Chover/\u6309\u4E0B\u6D6E\u51FA\u6D45\u5E26\u3002 \u5177\u4F53 z-index \u7531 .dshpc-ed-resizer / .dshpc-sv-resizer \u5404\u81EA\u8865\u3002 */ .dshpc-resizer{position:absolute;top:0;bottom:0;left:0;width:6px;cursor:col-resize;background:0 0;touch-action:none;user-select:none;} .dshpc-resizer:hover,.dshpc-resizer:active{background:var(--dshpc-hover,rgba(38,49,72,.06));} @media (prefers-reduced-motion: reduce){.dshpc-input,.dshpc-pfx{transition:none;}} ";
|
|
4
|
+
export declare const DATETIME_CSS = " /* \u2500\u2500 \u65E5\u671F / \u65F6\u95F4 P4 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */ .dshpc-dtf-wrap{display:inline-flex;position:relative;min-width:0;} /* \u26A0\uFE0F \u8FB9\u6846\u7C97\u7EC6 / \u5706\u89D2\u5FC5\u987B\u4E0E\u4E0B\u62C9\u951A\u70B9\uFF08dshpc-ed-field \u7684 fieldButtonStyle\uFF09\u5B8C\u5168\u4E00\u81F4 \uFF08\u7528\u6237 2026-10-02 \u70B9\u540D\uFF1A\u540C\u6392\u7684\u65E5\u671F\u6846\u4E0E\u4E0B\u62C9\u6846\u770B\u7740\u4E0D\u662F\u4E00\u5957\uFF09\u21D2 \u8FD9\u91CC\u4E5F\u662F 0.5px + radius-md\u3002 */ .dshpc-dtf{display:inline-flex;align-items:center;gap:6px;box-sizing:border-box;height:var(--dshpc-control-h-lg); min-width:0;max-width:100%;padding:0 8px;border:0.5px solid var(--dshpc-border-heavy);border-radius:var(--dshpc-radius-md); background:var(--dshpc-surface-1);color:var(--dshpc-fg);font:inherit;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md); cursor:pointer;transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease);} /* \u65E5\u671F / \u65F6\u95F4\u951A\u70B9\uFF1A\u4E09\u6863\u9AD8\u5EA6\uFF08\u9ED8\u8BA4 lg=32\uFF09\u3002base \u5DF2\u542B lg \u9AD8\u5EA6\u4F5C\u515C\u5E95\uFF0C\u4E0B\u9762\u4E09\u6863\u6309 size \u8986\u76D6\u3002 */ .dshpc-dtf--sm{height:var(--dshpc-control-h-sm);padding:0 6px;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);} .dshpc-dtf--md{height:var(--dshpc-control-h-md);padding:0 8px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);} .dshpc-dtf--lg{height:var(--dshpc-control-h-lg);padding:0 8px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);} .dshpc-dtf:hover:not(:disabled){background:var(--dshpc-hover);} .dshpc-dtf:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;} .dshpc-dtf:disabled{cursor:not-allowed;opacity:.6;} .dshpc-dtf__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;} .dshpc-dtf__label--ph{color:var(--dshpc-fg-dim);} .dshpc-dtf__icon{display:inline-flex;width:16px;height:16px;align-items:center;justify-content:center;flex:none;color:var(--dshpc-fg-3);} .dshpc-layer{position:fixed;z-index:var(--dshpc-z-menu);box-sizing:border-box;padding:8px;background:var(--dshpc-surface-1); box-shadow:var(--dshpc-shadow-2);border-radius:var(--dshpc-radius-md);color:var(--dshpc-fg);font-size:var(--dshpc-font-md);} .dshpc-cal__head{display:flex;align-items:center;justify-content:space-between;gap:4px;margin-bottom:4px;} .dshpc-cal__title{flex:1 1 auto;text-align:center;font-size:var(--dshpc-font-md);font-weight:600;color:var(--dshpc-fg);} .dshpc-cal__grid{display:grid;grid-template-columns:repeat(7,32px);gap:2px;} .dshpc-cal__weekday{height:24px;display:flex;align-items:center;justify-content:center;font-size:var(--dshpc-font-sm);color:var(--dshpc-fg-3);} .dshpc-cal__cell{width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center; border:1px solid transparent;border-radius:var(--dshpc-radius-md);background:transparent;color:var(--dshpc-fg); font:inherit;font-size:var(--dshpc-font-md);cursor:pointer; transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease);} .dshpc-cal__cell--hover{background:var(--dshpc-hover);} .dshpc-cal__cell--out{color:var(--dshpc-fg-dim);} .dshpc-cal__cell--today{border-color:var(--dshpc-business);} .dshpc-cal__cell[aria-pressed='true']{background:var(--dshpc-accent);color:var(--dshpc-fg-inverse);} .dshpc-cal__foot{margin-top:6px;padding-top:6px;border-top:1px solid var(--dshpc-border);} .dshpc-time__cols{display:flex;gap:4px;} .dshpc-time__list{width:56px;max-height:196px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;} .dshpc-time__opt{padding:5px 0;border:0;border-radius:var(--dshpc-radius-sm);background:transparent;color:var(--dshpc-fg-2); font:inherit;font-size:var(--dshpc-font-md);cursor:pointer;transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease);} .dshpc-time__opt[aria-selected='true']{background:var(--dshpc-hover);color:var(--dshpc-fg);font-weight:600;} .dshpc-time__foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px;padding-top:6px;border-top:1px solid var(--dshpc-border);} @media (prefers-reduced-motion: reduce){.dshpc-dtf,.dshpc-cal__cell,.dshpc-time__opt{transition:none;}} ";
|
|
5
|
+
export declare const SELECT_CSS = " /* \u4E0B\u62C9 / \u65E5\u5386 / \u65F6\u5206\u951A\u70B9\uFF1A\u952E\u76D8\u53EF\u8FBE\u6027\u63CF\u8FB9 + \u6821\u9A8C\u63CF\u7EA2\uFF08\u7C7B\u540D\u4ECE\u4E1A\u52A1\u5C42\u6CBF\u7528\uFF0C\u76AE\u80A4\u5F52\u4F4D\u57FA\u7840\u5C42\uFF09 */ .dshpc-ed-field:focus-visible{outline:2px solid var(--dshpc-business);outline-offset:1px;} .dshpc-ed-field--error{border-color:var(--dshpc-danger)!important;box-shadow:0 0 0 1px var(--dshpc-danger);} /* \u6574\u884C\u4E0B\u62C9\uFF1A\u5B98\u65B9 Menu \u7684\u5305\u88C5 span \u662F inline-flex\uFF08shrink-to-fit\uFF09\uFF0C\u8981\u8FDE\u5B83\u4E00\u8D77\u6491\u6EE1 */ .dshpc-ed-selectwrap{width:100%;} /* \u7701\u7565\u53F7\u4E09\u4EF6\u5957\uFF08ui-style-guide \u00A7\u4E09\u300C\u5F85\u62BD\u8C61 #1\u300D\u7684\u6536\u655B\u70B9\uFF09\uFF1A**\u65B0\u4EE3\u7801\u4E00\u5F8B\u6302\u8FD9\u4E2A\u7C7B**\uFF0C\u4E0D\u518D\u5404\u5199\u4E00\u904D\u3002 \u26A0\uFE0F \u5DF2\u6709 19 \u5904\u65E7\u5199\u6CD5\u5F85\u9010\u6B65\u6536\u7F16\uFF082026-10-04 \u8D77\u65B0\u589E\u7684\u8C03\u7528\u70B9\u4E0D\u8BB8\u518D\u624B\u5199\u8FD9\u4E09\u6761\u5C5E\u6027\uFF09\u3002 */ .dshpc-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} /* \u8DD1\u9A6C\u706F\u6587\u672C\uFF08MarqueeText\uFF09\uFF1A\u53CC\u5C42\u2014\u2014\u5916\u5C42\u53EA\u88C1\u526A\uFF0C\u5185\u5C42\u624D transform \u6EDA\u52A8\uFF1B\u975E hover \u5185\u5C42\u81EA\u5E26\u7701\u7565\u53F7 */ .dshpc-mq{display:block;overflow:hidden;white-space:nowrap;} .dshpc-mq .dshpc-mq-in{display:inline-block;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:top;} /* \u26A0\uFE0F \u8DD1\u6CD5\uFF08\u7528\u6237 2026-10-03 \u62CD\u677F\uFF09\uFF1A**\u8DD1\u4E00\u904D\u3001\u505C\u5728\u5C3E\u5B57**\uFF08\u64AD\u653E 1 \u6B21 + forwards\uFF09\uFF0C\u4E0D\u6765\u56DE\u5F39\u3001\u4E0D\u65E0\u9650\u8DD1\u3002 \u6EDA\u8DDD = \u7CBE\u786E\u6EA2\u51FA\u91CF \u21D2 \u505C\u4E0B\u65F6\u6700\u540E\u4E00\u4E2A\u5B57\u6B63\u597D\u8D34\u53F3\u7F18\uFF0C**\u4E0D\u4F1A\u8DD1\u8FDB\u9ED1\u5757**\uFF08\u9ED1\u5757\u662F\u65E7\u624B\u5199\u7248\u628A \u5185\u5C42\u76D2\u5B50\u88C1\u4E86\u3001\u6309\u300C\u534A\u622A\u6587\u672C\u300D\u5E73\u79FB\u5BFC\u81F4\u7684\uFF09\u3002\u9F20\u6807\u79FB\u5F00 \u21D2 :hover \u5931\u6548 \u21D2 \u81EA\u52A8\u590D\u4F4D\u56DE\u7701\u7565\u53F7\u6001\u3002 */ .dshpc-mq-run:hover .dshpc-mq-in{max-width:none;overflow:visible;animation:dshpc-mq-scroll var(--dshpc-mq-dur,6s) linear .4s 1 forwards;} @keyframes dshpc-mq-scroll{from{transform:translateX(0)}to{transform:translateX(var(--dshpc-mq-dist,-40px))}} ";
|
|
6
|
+
export declare const LOADING_CSS = " /* \u8FD0\u884C\u4E2D / loading \u7684\u6D3B\u52A8\u6307\u793A\uFF1A\u4E09\u4E2A\u5C0F\u65B9\u5757\u4F9D\u6B21\u8109\u52A8\u3002 */ @keyframes dshpc-run-block { 0%, 80%, 100% { opacity: 0.25; transform: scale(0.8) } 40% { opacity: 1; transform: scale(1) } } .dshpc-run-blocks { display: inline-flex; align-items: center; gap: 3px; } .dshpc-run-blocks > i { width: 5px; height: 5px; border-radius: 1px; background: currentColor; animation: dshpc-run-block 1.2s ease-in-out infinite; } .dshpc-run-blocks > i:nth-child(2) { animation-delay: 0.15s; } .dshpc-run-blocks > i:nth-child(3) { animation-delay: 0.3s; } @media (prefers-reduced-motion: reduce) { .dshpc-run-blocks > i { animation: none; opacity: 1; } } ";
|
|
7
|
+
export declare const BACK_TO_TOP_CSS = " /* \u56DE\u5230\u9876\u90E8\u60AC\u6D6E\u94AE\uFF1A\u5706\u94AE\u3001\u5B9E\u9762\u3001\u6295\u5F71\uFF1B\u9ED8\u8BA4\u9690\u8EAB\uFF0C\u6EDA\u8FC7\u9608\u503C\u52A0 .is-visible \u624D\u663E\u5F62\u3002 \u6A2A\u5411 left \u7531\u7EC4\u4EF6\u6309\u4E3B\u5185\u5BB9\u5217\u53F3\u7F18\u5B9E\u65F6\u7B97\u51FA\uFF08\u8D34\u5728\u5176\u53F3\u4FA7\u5916\u4FA7\uFF09\uFF0C\u4E0D\u5199\u6B7B\u3002 */ .dshpc-backtotop{ position:fixed; bottom:var(--dshpc-space-4); z-index:var(--dshpc-z-dock); width:44px;height:44px; display:inline-flex;align-items:center;justify-content:center; padding:0;margin:0; box-sizing:border-box; border:1px solid var(--dshpc-border); border-radius:50%; background:var(--dshpc-solid); color:var(--dshpc-on-solid); box-shadow:var(--dshpc-shadow-2); cursor:pointer; opacity:0; transform:translateY(8px) scale(.92); transition:opacity var(--dshpc-dur) var(--dshpc-ease), transform var(--dshpc-dur) var(--dshpc-ease), background-color var(--dshpc-dur-fast) var(--dshpc-ease); pointer-events:none; } .dshpc-backtotop.is-visible{opacity:1;transform:translateY(0) scale(1);pointer-events:auto;} .dshpc-backtotop:hover{background:var(--dshpc-hover);} .dshpc-backtotop:active{background:var(--dshpc-active);} .dshpc-backtotop:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;} @media (prefers-reduced-motion: reduce){ .dshpc-backtotop{transition:opacity var(--dshpc-dur-fast) linear;transform:none;} } ";
|
|
8
|
+
export declare const HINT_CSS = " /* \u2500\u2500 \u95EE\u53F7\u63D0\u793A P4\uFF08\u7528\u6237 2026-10-18\uFF1A\u5BF9\u9F50\u771F\u5B9E\u63D2\u4EF6 HelpButton\u2014\u2014**\u5E26\u5708\u7684\u95EE\u53F7\u56FE\u6807**\uFF09\u2500\u2500 \u672C\u4F53 14px \u7EC6\u5708 + \u5708\u5185 ?\uFF0C\u989C\u8272 fg-3\u3001hover \u53EA\u63D0\u4EAE\u4E0D\u52A0\u5E95\uFF08\u4E0E dshpc-ed-help \u540C\u89C4\u77E9\uFF09\u3002 \u6C14\u6CE1\u4E0D\u5728\u672C\u6587\u4EF6\uFF1A2026-10-19 \u7528\u6237\u62CD\u677F\u300C\u95EE\u53F7\u5FC5\u987B\u7528\u5B98\u65B9 Tooltip \u90A3\u4E00\u4E2A\u300D\u21D2 \u6C14\u6CE1\u7531\u6CE8\u5165\u7684 \u5B98\u65B9\u7EC4\u4EF6\u6E32\u67D3\uFF08src/ui/tooltip.ts\uFF09\uFF0C\u8FD9\u91CC\u53EA\u7BA1\u95EE\u53F7\u56FE\u6807\u672C\u8EAB\u3002 */ .dshpc-hint{display:inline-flex;align-items:center;justify-content:center;flex:none; box-sizing:border-box;width:14px;height:14px;padding:0;border:1px solid currentColor;border-radius:50%;background:transparent; color:var(--dshpc-fg-3);font-family:inherit;font-size:8px;font-weight:600;line-height:12px;cursor:help;vertical-align:middle; transition:color var(--dshpc-dur-fast) var(--dshpc-ease);} .dshpc-hint:hover,.dshpc-hint:focus-visible{color:var(--dshpc-fg);background:0 0;} .dshpc-hint:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px;} ";
|
|
9
9
|
//# sourceMappingURL=controls-css.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls-css.d.ts","sourceRoot":"","sources":["../../src/ui/controls-css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"controls-css.d.ts","sourceRoot":"","sources":["../../src/ui/controls-css.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,2hKAAspG,CAAA;AAEhrG,eAAO,MAAM,UAAU,+0XAAosP,CAAA;AAE3tP,eAAO,MAAM,SAAS,ggMAAonJ,CAAA;AAE1oJ,eAAO,MAAM,YAAY,mnJAA66H,CAAA;AAEt8H,eAAO,MAAM,UAAU,qiFAAqtC,CAAA;AAE5uC,eAAO,MAAM,WAAW,0sBAA2mB,CAAA;AAEnoB,eAAO,MAAM,eAAe,85CAA6mC,CAAA;AAEzoC,eAAO,MAAM,QAAQ,ixCAAmxB,CAAA"}
|
package/dist/ui/controls-css.js
CHANGED
|
@@ -1,324 +1,10 @@
|
|
|
1
1
|
// 控件样式。类名与变量统一使用 dshpc 前缀。
|
|
2
|
-
export const SEGMENTED_CSS = `
|
|
3
|
-
/* ──
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
.dshpc-
|
|
10
|
-
.dshpc-seg--default{--seg-track:var(--dshpc-surface-2);--seg-thumb:var(--dshpc-surface-raised);border:1px solid var(--dshpc-border);}
|
|
11
|
-
.dshpc-seg--inset{--seg-track:var(--dshpc-seg-track);--seg-thumb:var(--dshpc-surface-raised);border:0;padding:3px;}
|
|
12
|
-
.dshpc-seg__item{appearance:none;display:inline-flex;align-items:center;gap:4px;box-sizing:border-box;height:calc(var(--dshpc-control-h-sm) - 6px);padding:0 12px;border:0;border-radius:var(--dshpc-radius-sm);background:transparent;color:var(--dshpc-fg-2);font-family:inherit;font-size:var(--dshpc-font-xs);font-weight:500;white-space:nowrap;cursor:pointer;flex:none;transition:color var(--dshpc-dur-fast) var(--dshpc-ease),background-color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease);}
|
|
13
|
-
.dshpc-seg--md .dshpc-seg__item{height:calc(var(--dshpc-control-h-md) - 6px);}
|
|
14
|
-
.dshpc-seg--lg .dshpc-seg__item{height:calc(var(--dshpc-control-h-lg) - 6px);}
|
|
15
|
-
.dshpc-seg__item:hover:not([aria-pressed='true']):not(:disabled){color:var(--dshpc-fg);}
|
|
16
|
-
.dshpc-seg__item[aria-pressed='true']{background:var(--seg-thumb);box-shadow:var(--dshpc-shadow-raised);color:var(--dshpc-fg);font-weight:600;}
|
|
17
|
-
.dshpc-seg__item:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:-2px;}
|
|
18
|
-
.dshpc-seg__item:disabled{cursor:default;opacity:.4;}
|
|
19
|
-
/* 段内角标(如「异常」的数量):语义色实面 + 反白字,0 由组件侧不渲染。必须是正圆(用户 2026-10-03)。 */
|
|
20
|
-
.dshpc-seg__badge{display:inline-flex;align-items:center;justify-content:center;flex:none;width:16px;height:16px;padding:0;overflow:hidden;border-radius:50%;background:var(--dshpc-danger);color:var(--dshpc-on-signal);font-size:10px;line-height:16px;font-weight:500;font-variant-numeric:tabular-nums;}
|
|
21
|
-
/* 段内中性计数(如筛选条「全部 11」):纯文字、无底无边(对齐 task-ledger .dtl-seg__num 拍板口径);0 由组件侧不渲染。 */
|
|
22
|
-
.dshpc-seg__count{display:inline;flex:none;margin-left:3px;padding:0;border:0;border-radius:0;background:none;color:var(--dshpc-fg-3);font-size:10px;line-height:1;font-weight:400;font-variant-numeric:tabular-nums;}
|
|
23
|
-
/* block:撑满父宽(表单行用),各段等分 */
|
|
24
|
-
.dshpc-seg--block{display:flex;width:100%;}
|
|
25
|
-
.dshpc-seg--block .dshpc-seg__item{flex:1 1 auto;justify-content:center;}
|
|
26
|
-
/* weekday:星期多选方块。基础插件的特殊化定制(用户 2026-10-01:原 WeekdayPicker 即「蓝底 + 近似方形」):
|
|
27
|
-
每格正方形(宽 = 段高)、选中品牌蓝反白字、**无外描边**(2026-10-18 重申)、
|
|
28
|
-
方块之间间距 gap:6px(2026-10-18:不再 2px 挤成一坨 —— 这一条兄弟没有、是用户额外要的)。 */
|
|
29
|
-
.dshpc-seg--weekday{--seg-track:var(--dshpc-seg-track);gap:6px;border:0;padding:3px;}
|
|
30
|
-
.dshpc-seg--weekday .dshpc-seg__item{width:calc(var(--dshpc-control-h-lg) - 6px);padding:0;justify-content:center;}
|
|
31
|
-
.dshpc-seg--weekday .dshpc-seg__item[aria-pressed='true']{background:var(--dshpc-business);color:var(--dshpc-fg-inverse);box-shadow:var(--dshpc-shadow-raised);}
|
|
32
|
-
@media (prefers-reduced-motion: reduce){.dshpc-seg__item{transition:none;}}
|
|
33
|
-
`;
|
|
34
|
-
export const BUTTON_CSS = `
|
|
35
|
-
/* ── 按钮 / 图标钮 P2 ───────────────────────────────────────────────────
|
|
36
|
-
与 Segmented 同一条高度纪律:--dshpc-control-h-sm(24) / -md(28) / -lg(32),
|
|
37
|
-
有边框的 variant 用 1px 真边框 + 内部 padding 补回,**有边 / 无边同高**。
|
|
38
|
-
|
|
39
|
-
三条受控轴(2026-10-19 重写,对齐主流 UI 框架的分类口径):
|
|
40
|
-
· variant —— 外观档 = 形态 + 语义色,共 10 档:
|
|
41
|
-
primary / secondary / outline / ghost / danger / success / warning / info /
|
|
42
|
-
danger-outline(红字描边)/ link(行内链接)
|
|
43
|
-
· size —— sm / md / lg
|
|
44
|
-
· block —— 撑满父宽
|
|
45
|
-
每一档**只填 5 个局部变量**(--btn-bg / -fg / -border / -bg-hover / -bg-active),
|
|
46
|
-
结构与交互只有上面这一份;任何档位都不许再写一遍 display/height/padding。
|
|
47
|
-
自定义颜色(Button 的 color 参数)同样只覆盖这 5 个变量(token 覆盖,不是新皮肤)。
|
|
48
|
-
|
|
49
|
-
⚠️ hover 不再用 opacity 压一层(用户 2026-10-19:「黑色和红色的按钮移上去变化太小,
|
|
50
|
-
完全感觉不到颜色变了」)⇒ 走 --dshpc-*-hover / -active 的明确混色,见 tokens-css.ts。 */
|
|
51
|
-
.dshpc-btn{--btn-bg:transparent;--btn-fg:var(--dshpc-fg);--btn-border:transparent;--btn-pad:12px;
|
|
52
|
-
--btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);--btn-fg-hover:var(--btn-fg);
|
|
53
|
-
appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;
|
|
54
|
-
box-sizing:border-box;border:1px solid var(--btn-border);border-radius:var(--dshpc-radius-md);
|
|
55
|
-
background-color:var(--btn-bg);color:var(--btn-fg);font-family:inherit;font-weight:500;white-space:nowrap;cursor:pointer;
|
|
56
|
-
transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease),transform var(--dshpc-dur-fast) var(--dshpc-ease);}
|
|
57
|
-
.dshpc-btn--sm{--btn-pad:10px;height:var(--dshpc-control-h-sm);padding:0 var(--btn-pad);font-size:var(--dshpc-font-sm);line-height:1;}
|
|
58
|
-
.dshpc-btn--md{--btn-pad:12px;height:var(--dshpc-control-h-md);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;}
|
|
59
|
-
.dshpc-btn--lg{--btn-pad:14px;height:var(--dshpc-control-h-lg);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;}
|
|
60
|
-
/* block:撑满父宽(表单底栏 / 抽屉底部的主操作) */
|
|
61
|
-
.dshpc-btn--block{display:flex;width:100%;}
|
|
62
|
-
/* block + 前置图标 ⇒ 文字视觉居中(2026-10-19 用户点名):
|
|
63
|
-
内容组 [图标 + 间距 + 文字] 整体在盒内居中时,**文字**的中心会被图标推右半格。
|
|
64
|
-
把右内边距补上「图标宽 + 间距」,可用盒随之左移同量 ⇒ 文字落回视觉中心,图标贴左侧。
|
|
65
|
-
图标宽按 1.2em 估(官方图标 14/16px vs 字号 12/13px),em 随字号档自动缩放。 */
|
|
66
|
-
.dshpc-btn--block.dshpc-btn--icon-start{padding-right:calc(var(--btn-pad) + 1.2em + 6px);}
|
|
67
|
-
.dshpc-btn__icon,.dshpc-btn__icon-end{display:inline-flex;align-items:center;justify-content:center;flex:none;line-height:0;}
|
|
68
|
-
.dshpc-btn__icon svg,.dshpc-btn__icon-end svg{display:block;margin:0;}
|
|
69
|
-
/* loading:不换 DOM 结构,只在文案前插一个同色小圈(尺寸随字号,缩放不依赖常量) */
|
|
70
|
-
.dshpc-btn__spinner{display:block;flex:none;width:12px;height:12px;box-sizing:border-box;
|
|
71
|
-
border:1.5px solid currentColor;border-right-color:transparent;border-radius:999px;
|
|
72
|
-
animation:dshpc-btn-spin .7s linear infinite;}
|
|
73
|
-
/* shortcut: 12px 是固定值,不随按钮字号缩放;要更大就改这一处。 */
|
|
74
|
-
@keyframes dshpc-btn-spin{to{transform:rotate(360deg)}}
|
|
75
|
-
|
|
76
|
-
/* 交互态:颜色变化写在变量上 ⇒ 所有档位一次生效,且变化幅度由 token 决定(够明显) */
|
|
77
|
-
.dshpc-btn:hover:not(:disabled){background-color:var(--btn-bg-hover);color:var(--btn-fg-hover);}
|
|
78
|
-
.dshpc-btn:active:not(:disabled){background-color:var(--btn-bg-active);transform:translateY(1px);}
|
|
79
|
-
.dshpc-btn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}
|
|
80
|
-
.dshpc-btn:disabled{cursor:default;opacity:.5;}
|
|
81
|
-
|
|
82
|
-
.dshpc-btn--primary{--btn-bg:var(--dshpc-accent);--btn-fg:var(--dshpc-fg-inverse);
|
|
83
|
-
--btn-bg-hover:var(--dshpc-accent-hover);--btn-bg-active:var(--dshpc-accent-active);}
|
|
84
|
-
/* secondary:中性实心(灰面),用于「取消 / 次要」这类与主操作并排的按钮 */
|
|
85
|
-
.dshpc-btn--secondary{--btn-bg:var(--dshpc-hover);--btn-fg:var(--dshpc-fg);
|
|
86
|
-
--btn-bg-hover:var(--dshpc-active);--btn-bg-active:var(--dshpc-active);}
|
|
87
|
-
.dshpc-btn--outline{--btn-bg:var(--dshpc-surface-1);--btn-border:var(--dshpc-border-strong);
|
|
88
|
-
--btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);}
|
|
89
|
-
.dshpc-btn--ghost{--btn-fg:var(--dshpc-fg-2);--btn-fg-hover:var(--dshpc-fg);
|
|
90
|
-
--btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);}
|
|
91
|
-
.dshpc-btn--danger{--btn-bg:var(--dshpc-danger);--btn-fg:var(--dshpc-on-signal);
|
|
92
|
-
--btn-bg-hover:var(--dshpc-danger-hover);--btn-bg-active:var(--dshpc-danger-active);}
|
|
93
|
-
.dshpc-btn--success{--btn-bg:var(--dshpc-success);--btn-fg:var(--dshpc-on-signal);
|
|
94
|
-
--btn-bg-hover:var(--dshpc-success-hover);--btn-bg-active:var(--dshpc-success-active);}
|
|
95
|
-
.dshpc-btn--warning{--btn-bg:var(--dshpc-warning);--btn-fg:var(--dshpc-on-warning);
|
|
96
|
-
--btn-bg-hover:var(--dshpc-warning-hover);--btn-bg-active:var(--dshpc-warning-active);}
|
|
97
|
-
.dshpc-btn--info{--btn-bg:var(--dshpc-business);--btn-fg:var(--dshpc-on-signal);
|
|
98
|
-
--btn-bg-hover:var(--dshpc-business-hover);--btn-bg-active:var(--dshpc-business-active);}
|
|
99
|
-
/* danger-outline:红字描边(破坏性次要操作,如卡片上的「删除」)。
|
|
100
|
-
⚠️ 旧修饰类 danger-ink 保留为别名(消费方可能还在挂),两者同一套皮肤。 */
|
|
101
|
-
.dshpc-btn--danger-outline,.dshpc-btn--danger-ink{--btn-border:var(--dshpc-danger);--btn-fg:var(--dshpc-danger);
|
|
102
|
-
--btn-fg-hover:var(--dshpc-danger);--btn-bg-hover:var(--dshpc-danger-soft);--btn-bg-active:var(--dshpc-danger-soft);}
|
|
103
|
-
/* link:行内文字链接型(会话 / 产出文件名),无底无边、品牌蓝、hover 下划线 */
|
|
104
|
-
.dshpc-btn--link{--btn-fg:var(--dshpc-link);--btn-fg-hover:var(--dshpc-link);
|
|
105
|
-
--btn-bg-hover:transparent;--btn-bg-active:transparent;
|
|
106
|
-
height:auto;padding:0;border:0;background:none;font-weight:400;text-align:left;}
|
|
107
|
-
.dshpc-btn--link:hover:not(:disabled){text-decoration:underline;}
|
|
108
|
-
|
|
109
|
-
/* 图标钮:纯图标,方形;尺寸档的宽高与同档文字按钮等高 */
|
|
110
|
-
.dshpc-iconbtn{appearance:none;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;
|
|
111
|
-
border:1px solid transparent;border-radius:var(--dshpc-radius-sm);background:transparent;color:var(--dshpc-fg-2);
|
|
112
|
-
font-family:inherit;cursor:pointer;flex:none;
|
|
113
|
-
transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),opacity var(--dshpc-dur-fast) var(--dshpc-ease);}
|
|
114
|
-
.dshpc-iconbtn--sm{width:var(--dshpc-control-h-sm);height:var(--dshpc-control-h-sm);font-size:var(--dshpc-font-sm);}
|
|
115
|
-
.dshpc-iconbtn--md{width:var(--dshpc-control-h-md);height:var(--dshpc-control-h-md);font-size:var(--dshpc-font-md);}
|
|
116
|
-
.dshpc-iconbtn--lg{width:var(--dshpc-control-h-lg);height:var(--dshpc-control-h-lg);font-size:var(--dshpc-font-md);}
|
|
117
|
-
.dshpc-iconbtn--plain{color:var(--dshpc-fg-2);}
|
|
118
|
-
.dshpc-iconbtn--outline{background:var(--dshpc-surface-1);border-color:var(--dshpc-border);color:var(--dshpc-fg-2);}
|
|
119
|
-
.dshpc-iconbtn--danger{color:var(--dshpc-danger);}
|
|
120
|
-
.dshpc-iconbtn:hover:not(:disabled){background:var(--dshpc-hover);color:var(--dshpc-fg);}
|
|
121
|
-
.dshpc-iconbtn--danger:hover:not(:disabled){background:var(--dshpc-danger-soft);color:var(--dshpc-danger);}
|
|
122
|
-
.dshpc-iconbtn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}
|
|
123
|
-
.dshpc-iconbtn:disabled{cursor:default;opacity:.4;}
|
|
124
|
-
|
|
125
|
-
/* ── 行式文件按钮(图标 + 文件名)P2:**全站唯一实现**(2026-10-04 收编)──────────
|
|
126
|
-
用途:「产出物 / 附件」那种**一行一个文件**的清单项(基础信息右栏产出物清单、附件区、
|
|
127
|
-
执行记录页的展开区)。平时透明、**鼠标移上去才出浅底**(沿用用户 2026-10-03 定的观感)。
|
|
128
|
-
两个形态修饰类:
|
|
129
|
-
--block 撑满父宽(清单里一项一行)
|
|
130
|
-
--inline 内容宽(跟在文字后头,如附件行)
|
|
131
|
-
收编原因:这份皮肤此前只写在 task-list.tsx 的 TASK_LIST_CSS 里(旧名 .dshpc-info-out),
|
|
132
|
-
执行记录页展开区要用同一种观感 ⇒ 上提基础层,避免再出现「各写一份外观」(同名不同皮的坑刚踩过)。 */
|
|
133
|
-
.dshpc-filechip{appearance:none;-webkit-appearance:none;border:0;border-radius:var(--dshpc-radius-xs);
|
|
134
|
-
background:transparent;color:var(--dshpc-fg);font:inherit;text-align:left;cursor:pointer;min-width:0;
|
|
135
|
-
transition:background-color var(--dshpc-dur) var(--dshpc-ease);}
|
|
136
|
-
.dshpc-filechip:hover:not(:disabled){background:var(--dshpc-chip-bg);}
|
|
137
|
-
.dshpc-filechip:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px;}
|
|
138
|
-
.dshpc-filechip:disabled{cursor:default;background:transparent;color:var(--dshpc-fg-3);}
|
|
139
|
-
.dshpc-filechip--block{display:flex;align-items:center;gap:6px;width:100%;box-sizing:border-box;
|
|
140
|
-
padding:4px 6px;font-size:var(--dshpc-font-xs);}
|
|
141
|
-
.dshpc-filechip--inline{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;font-size:var(--dshpc-font-sm);}
|
|
142
|
-
|
|
143
|
-
@media (prefers-reduced-motion: reduce){.dshpc-btn,.dshpc-iconbtn,.dshpc-filechip{transition:none;}}
|
|
144
|
-
`;
|
|
145
|
-
export const FIELD_CSS = `
|
|
146
|
-
/* ── 输入类 P3 ────────────────────────────────────────────────────────── */
|
|
147
|
-
.dshpc-input{box-sizing:border-box;border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md);
|
|
148
|
-
background:var(--dshpc-surface-1);color:var(--dshpc-fg);font-family:inherit;outline:none;
|
|
149
|
-
transition:border-color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease);}
|
|
150
|
-
.dshpc-input--sm{height:var(--dshpc-control-h-sm);padding:0 8px;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);}
|
|
151
|
-
.dshpc-input--md{height:var(--dshpc-control-h-md);padding:0 10px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);}
|
|
152
|
-
.dshpc-input--lg{height:var(--dshpc-control-h-lg);padding:0 12px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);}
|
|
153
|
-
.dshpc-input::placeholder{color:var(--dshpc-fg-dim);}
|
|
154
|
-
.dshpc-input:focus{border-color:var(--dshpc-focus);box-shadow:0 0 0 1px var(--dshpc-focus);}
|
|
155
|
-
.dshpc-input--error{border-color:var(--dshpc-danger);}
|
|
156
|
-
.dshpc-input:disabled{cursor:default;opacity:.5;}
|
|
157
|
-
|
|
158
|
-
.dshpc-pfx{display:inline-flex;align-items:center;box-sizing:border-box;overflow:hidden;
|
|
159
|
-
border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md);background:var(--dshpc-surface-1);color:var(--dshpc-fg);}
|
|
160
|
-
.dshpc-pfx--sm{height:var(--dshpc-control-h-sm);}
|
|
161
|
-
.dshpc-pfx--md{height:var(--dshpc-control-h-md);}
|
|
162
|
-
.dshpc-pfx--lg{height:var(--dshpc-control-h-lg);}
|
|
163
|
-
/* md / lg 档字号跟档走(与同档下拉同字号):此前写死 sm(12px),同排下拉是 13px ⇒ 显得「input 字小」。 */
|
|
164
|
-
.dshpc-pfx--md .dshpc-pfx__label,.dshpc-pfx--lg .dshpc-pfx__label{font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);}
|
|
165
|
-
.dshpc-pfx--md .dshpc-pfx__input,.dshpc-pfx--lg .dshpc-pfx__input{font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);}
|
|
166
|
-
.dshpc-pfx--error{border-color:var(--dshpc-danger);}
|
|
167
|
-
.dshpc-pfx:focus-within{border-color:var(--dshpc-focus);box-shadow:0 0 0 1px var(--dshpc-focus);}
|
|
168
|
-
.dshpc-pfx__label{padding:0 8px;color:var(--dshpc-fg-2);font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);white-space:nowrap;border-right:1px solid var(--dshpc-border);}
|
|
169
|
-
.dshpc-pfx__input{flex:1 1 auto;min-width:0;height:100%;padding:0 8px;border:0;background:transparent;color:var(--dshpc-fg);
|
|
170
|
-
font-family:inherit;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);outline:none;}
|
|
171
|
-
.dshpc-pfx__input::placeholder{color:var(--dshpc-fg-dim);}
|
|
172
|
-
|
|
173
|
-
.dshpc-num{display:inline-flex;align-items:center;justify-content:space-between;box-sizing:border-box;overflow:hidden;
|
|
174
|
-
border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md);background:var(--dshpc-surface-1);color:var(--dshpc-fg);}
|
|
175
|
-
/* 中段:数字 + 后缀成组居中;容器被消费端拉宽时吃掉全部余量,两端 − / + 因此钉死在左右边缘。 */
|
|
176
|
-
.dshpc-num__mid{display:flex;align-items:center;justify-content:center;flex:1 1 auto;min-width:0;}
|
|
177
|
-
.dshpc-num--sm{height:var(--dshpc-control-h-sm);}
|
|
178
|
-
.dshpc-num--md{height:var(--dshpc-control-h-md);}
|
|
179
|
-
.dshpc-num--lg{height:var(--dshpc-control-h-lg);}
|
|
180
|
-
.dshpc-num--md .dshpc-num__input,.dshpc-num--lg .dshpc-num__input{font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);}
|
|
181
|
-
.dshpc-num--md .dshpc-num__suffix,.dshpc-num--lg .dshpc-num__suffix{font-size:var(--dshpc-font-md);}
|
|
182
|
-
.dshpc-num--disabled{opacity:.5;}
|
|
183
|
-
.dshpc-num__input{width:36px;height:100%;padding:0 2px;border:0;background:transparent;color:var(--dshpc-fg);
|
|
184
|
-
font-family:inherit;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);text-align:center;outline:none;}
|
|
185
|
-
.dshpc-num__suffix{padding:0 6px;color:var(--dshpc-fg-2);font-size:var(--dshpc-font-sm);white-space:nowrap;}
|
|
186
|
-
.dshpc-num .dshpc-iconbtn{border-radius:0;color:var(--dshpc-fg-2);flex:none;}
|
|
187
|
-
|
|
188
|
-
/* 官方 Switch 包装统一:选中 = success 绿。
|
|
189
|
-
(合并原先 task-editor-css / task-list 两处就地覆盖;选择器带包装类 + role,特异性高于官方。) */
|
|
190
|
-
.dshpc-switch button[role='switch'][aria-checked='true']{background:var(--dshpc-success);}
|
|
191
|
-
|
|
192
|
-
/* 多行文本输入(提示词等,P3):卡内无边框(视觉重心在整张卡上),占位色走 dimmed;校验不通过描红盒。
|
|
193
|
-
(从 task-editor-css 的 .dshpc-ed-prompt 上提而来;业务文件不再自写 textarea 皮肤。) */
|
|
194
|
-
.dshpc-textarea{display:block;width:100%;box-sizing:border-box;min-height:132px;padding:2px;border:none;outline:none;background:0 0;color:var(--dshpc-fg);font:inherit;font-size:var(--dshpc-font-lg);line-height:1.6;resize:vertical;}
|
|
195
|
-
.dshpc-textarea::placeholder{color:var(--dshpc-fg-dim);}
|
|
196
|
-
.dshpc-textarea--error{box-shadow:0 0 0 1px var(--dshpc-danger);}
|
|
197
|
-
|
|
198
|
-
/* 拖拽分隔条(编辑分栏 / 预览 dock 共用,U20 #3):6px 命中区,col-resize,不画线,hover/按下浮出浅带。
|
|
199
|
-
具体 z-index 由 .dshpc-ed-resizer / .dshpc-sv-resizer 各自补。 */
|
|
200
|
-
.dshpc-resizer{position:absolute;top:0;bottom:0;left:0;width:6px;cursor:col-resize;background:0 0;touch-action:none;user-select:none;}
|
|
201
|
-
.dshpc-resizer:hover,.dshpc-resizer:active{background:var(--dshpc-hover,rgba(38,49,72,.06));}
|
|
202
|
-
|
|
203
|
-
@media (prefers-reduced-motion: reduce){.dshpc-input,.dshpc-pfx{transition:none;}}
|
|
204
|
-
`;
|
|
205
|
-
export const DATETIME_CSS = `
|
|
206
|
-
/* ── 日期 / 时间 P4 ───────────────────────────────────────────────────── */
|
|
207
|
-
.dshpc-dtf-wrap{display:inline-flex;position:relative;min-width:0;}
|
|
208
|
-
/* ⚠️ 边框粗细 / 圆角必须与下拉锚点(dshpc-ed-field 的 fieldButtonStyle)完全一致
|
|
209
|
-
(用户 2026-10-02 点名:同排的日期框与下拉框看着不是一套)⇒ 这里也是 0.5px + radius-md。 */
|
|
210
|
-
.dshpc-dtf{display:inline-flex;align-items:center;gap:6px;box-sizing:border-box;height:var(--dshpc-control-h-lg);
|
|
211
|
-
min-width:0;max-width:100%;padding:0 8px;border:0.5px solid var(--dshpc-border-heavy);border-radius:var(--dshpc-radius-md);
|
|
212
|
-
background:var(--dshpc-surface-1);color:var(--dshpc-fg);font:inherit;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);
|
|
213
|
-
cursor:pointer;transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease);}
|
|
214
|
-
/* 日期 / 时间锚点:三档高度(默认 lg=32)。base 已含 lg 高度作兜底,下面三档按 size 覆盖。 */
|
|
215
|
-
.dshpc-dtf--sm{height:var(--dshpc-control-h-sm);padding:0 6px;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);}
|
|
216
|
-
.dshpc-dtf--md{height:var(--dshpc-control-h-md);padding:0 8px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);}
|
|
217
|
-
.dshpc-dtf--lg{height:var(--dshpc-control-h-lg);padding:0 8px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);}
|
|
218
|
-
.dshpc-dtf:hover:not(:disabled){background:var(--dshpc-hover);}
|
|
219
|
-
.dshpc-dtf:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}
|
|
220
|
-
.dshpc-dtf:disabled{cursor:not-allowed;opacity:.6;}
|
|
221
|
-
.dshpc-dtf__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;}
|
|
222
|
-
.dshpc-dtf__label--ph{color:var(--dshpc-fg-dim);}
|
|
223
|
-
.dshpc-dtf__icon{display:inline-flex;width:16px;height:16px;align-items:center;justify-content:center;flex:none;color:var(--dshpc-fg-3);}
|
|
224
|
-
|
|
225
|
-
.dshpc-layer{position:fixed;z-index:var(--dshpc-z-menu);box-sizing:border-box;padding:8px;background:var(--dshpc-surface-1);
|
|
226
|
-
box-shadow:var(--dshpc-shadow-2);border-radius:var(--dshpc-radius-md);color:var(--dshpc-fg);font-size:var(--dshpc-font-md);}
|
|
227
|
-
|
|
228
|
-
.dshpc-cal__head{display:flex;align-items:center;justify-content:space-between;gap:4px;margin-bottom:4px;}
|
|
229
|
-
.dshpc-cal__title{flex:1 1 auto;text-align:center;font-size:var(--dshpc-font-md);font-weight:600;color:var(--dshpc-fg);}
|
|
230
|
-
.dshpc-cal__grid{display:grid;grid-template-columns:repeat(7,32px);gap:2px;}
|
|
231
|
-
.dshpc-cal__weekday{height:24px;display:flex;align-items:center;justify-content:center;font-size:var(--dshpc-font-sm);color:var(--dshpc-fg-3);}
|
|
232
|
-
.dshpc-cal__cell{width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;
|
|
233
|
-
border:1px solid transparent;border-radius:var(--dshpc-radius-md);background:transparent;color:var(--dshpc-fg);
|
|
234
|
-
font:inherit;font-size:var(--dshpc-font-md);cursor:pointer;
|
|
235
|
-
transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease);}
|
|
236
|
-
.dshpc-cal__cell--hover{background:var(--dshpc-hover);}
|
|
237
|
-
.dshpc-cal__cell--out{color:var(--dshpc-fg-dim);}
|
|
238
|
-
.dshpc-cal__cell--today{border-color:var(--dshpc-business);}
|
|
239
|
-
.dshpc-cal__cell[aria-pressed='true']{background:var(--dshpc-accent);color:var(--dshpc-fg-inverse);}
|
|
240
|
-
.dshpc-cal__foot{margin-top:6px;padding-top:6px;border-top:1px solid var(--dshpc-border);}
|
|
241
|
-
|
|
242
|
-
.dshpc-time__cols{display:flex;gap:4px;}
|
|
243
|
-
.dshpc-time__list{width:56px;max-height:196px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;}
|
|
244
|
-
.dshpc-time__opt{padding:5px 0;border:0;border-radius:var(--dshpc-radius-sm);background:transparent;color:var(--dshpc-fg-2);
|
|
245
|
-
font:inherit;font-size:var(--dshpc-font-md);cursor:pointer;transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease);}
|
|
246
|
-
.dshpc-time__opt[aria-selected='true']{background:var(--dshpc-hover);color:var(--dshpc-fg);font-weight:600;}
|
|
247
|
-
.dshpc-time__foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px;padding-top:6px;border-top:1px solid var(--dshpc-border);}
|
|
248
|
-
|
|
249
|
-
@media (prefers-reduced-motion: reduce){.dshpc-dtf,.dshpc-cal__cell,.dshpc-time__opt{transition:none;}}
|
|
250
|
-
`;
|
|
251
|
-
export const SELECT_CSS = `
|
|
252
|
-
/* 下拉 / 日历 / 时分锚点:键盘可达性描边 + 校验描红(类名从业务层沿用,皮肤归位基础层) */
|
|
253
|
-
.dshpc-ed-field:focus-visible{outline:2px solid var(--dshpc-business);outline-offset:1px;}
|
|
254
|
-
.dshpc-ed-field--error{border-color:var(--dshpc-danger)!important;box-shadow:0 0 0 1px var(--dshpc-danger);}
|
|
255
|
-
/* 整行下拉:官方 Menu 的包装 span 是 inline-flex(shrink-to-fit),要连它一起撑满 */
|
|
256
|
-
.dshpc-ed-selectwrap{width:100%;}
|
|
257
|
-
|
|
258
|
-
/* 省略号三件套(ui-style-guide §三「待抽象 #1」的收敛点):**新代码一律挂这个类**,不再各写一遍。
|
|
259
|
-
⚠️ 已有 19 处旧写法待逐步收编(2026-10-04 起新增的调用点不许再手写这三条属性)。 */
|
|
260
|
-
.dshpc-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
|
|
261
|
-
|
|
262
|
-
/* 跑马灯文本(MarqueeText):双层——外层只裁剪,内层才 transform 滚动;非 hover 内层自带省略号 */
|
|
263
|
-
.dshpc-mq{display:block;overflow:hidden;white-space:nowrap;}
|
|
264
|
-
.dshpc-mq .dshpc-mq-in{display:inline-block;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:top;}
|
|
265
|
-
/* ⚠️ 跑法(用户 2026-10-03 拍板):**跑一遍、停在尾字**(播放 1 次 + forwards),不来回弹、不无限跑。
|
|
266
|
-
滚距 = 精确溢出量 ⇒ 停下时最后一个字正好贴右缘,**不会跑进黑块**(黑块是旧手写版把
|
|
267
|
-
内层盒子裁了、按「半截文本」平移导致的)。鼠标移开 ⇒ :hover 失效 ⇒ 自动复位回省略号态。 */
|
|
268
|
-
.dshpc-mq-run:hover .dshpc-mq-in{max-width:none;overflow:visible;animation:dshpc-mq-scroll var(--dshpc-mq-dur,6s) linear .4s 1 forwards;}
|
|
269
|
-
@keyframes dshpc-mq-scroll{from{transform:translateX(0)}to{transform:translateX(var(--dshpc-mq-dist,-40px))}}
|
|
270
|
-
`;
|
|
271
|
-
export const LOADING_CSS = `
|
|
272
|
-
/* 运行中 / loading 的活动指示:三个小方块依次脉动。 */
|
|
273
|
-
@keyframes dshpc-run-block { 0%, 80%, 100% { opacity: 0.25; transform: scale(0.8) } 40% { opacity: 1; transform: scale(1) } }
|
|
274
|
-
.dshpc-run-blocks { display: inline-flex; align-items: center; gap: 3px; }
|
|
275
|
-
.dshpc-run-blocks > i { width: 5px; height: 5px; border-radius: 1px; background: currentColor; animation: dshpc-run-block 1.2s ease-in-out infinite; }
|
|
276
|
-
.dshpc-run-blocks > i:nth-child(2) { animation-delay: 0.15s; }
|
|
277
|
-
.dshpc-run-blocks > i:nth-child(3) { animation-delay: 0.3s; }
|
|
278
|
-
@media (prefers-reduced-motion: reduce) { .dshpc-run-blocks > i { animation: none; opacity: 1; } }
|
|
279
|
-
`;
|
|
280
|
-
export const BACK_TO_TOP_CSS = `
|
|
281
|
-
/* 回到顶部悬浮钮:圆钮、实面、投影;默认隐身,滚过阈值加 .is-visible 才显形。
|
|
282
|
-
横向 left 由组件按主内容列右缘实时算出(贴在其右侧外侧),不写死。 */
|
|
283
|
-
.dshpc-backtotop{
|
|
284
|
-
position:fixed;
|
|
285
|
-
bottom:var(--dshpc-space-4);
|
|
286
|
-
z-index:var(--dshpc-z-dock);
|
|
287
|
-
width:44px;height:44px;
|
|
288
|
-
display:inline-flex;align-items:center;justify-content:center;
|
|
289
|
-
padding:0;margin:0;
|
|
290
|
-
box-sizing:border-box;
|
|
291
|
-
border:1px solid var(--dshpc-border);
|
|
292
|
-
border-radius:50%;
|
|
293
|
-
background:var(--dshpc-solid);
|
|
294
|
-
color:var(--dshpc-on-solid);
|
|
295
|
-
box-shadow:var(--dshpc-shadow-2);
|
|
296
|
-
cursor:pointer;
|
|
297
|
-
opacity:0;
|
|
298
|
-
transform:translateY(8px) scale(.92);
|
|
299
|
-
transition:opacity var(--dshpc-dur) var(--dshpc-ease),
|
|
300
|
-
transform var(--dshpc-dur) var(--dshpc-ease),
|
|
301
|
-
background-color var(--dshpc-dur-fast) var(--dshpc-ease);
|
|
302
|
-
pointer-events:none;
|
|
303
|
-
}
|
|
304
|
-
.dshpc-backtotop.is-visible{opacity:1;transform:translateY(0) scale(1);pointer-events:auto;}
|
|
305
|
-
.dshpc-backtotop:hover{background:var(--dshpc-hover);}
|
|
306
|
-
.dshpc-backtotop:active{background:var(--dshpc-active);}
|
|
307
|
-
.dshpc-backtotop:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}
|
|
308
|
-
@media (prefers-reduced-motion: reduce){
|
|
309
|
-
.dshpc-backtotop{transition:opacity var(--dshpc-dur-fast) linear;transform:none;}
|
|
310
|
-
}
|
|
311
|
-
`;
|
|
312
|
-
export const HINT_CSS = `
|
|
313
|
-
/* ── 问号提示 P4(用户 2026-10-18:对齐真实插件 HelpButton——**带圈的问号图标**)──
|
|
314
|
-
本体 14px 细圈 + 圈内 ?,颜色 fg-3、hover 只提亮不加底(与 dshpc-ed-help 同规矩)。
|
|
315
|
-
气泡不在本文件:2026-10-19 用户拍板「问号必须用官方 Tooltip 那一个」⇒ 气泡由注入的
|
|
316
|
-
官方组件渲染(src/ui/tooltip.ts),这里只管问号图标本身。 */
|
|
317
|
-
.dshpc-hint{display:inline-flex;align-items:center;justify-content:center;flex:none;
|
|
318
|
-
box-sizing:border-box;width:14px;height:14px;padding:0;border:1px solid currentColor;border-radius:50%;background:transparent;
|
|
319
|
-
color:var(--dshpc-fg-3);font-family:inherit;font-size:8px;font-weight:600;line-height:12px;cursor:help;vertical-align:middle;
|
|
320
|
-
transition:color var(--dshpc-dur-fast) var(--dshpc-ease);}
|
|
321
|
-
.dshpc-hint:hover,.dshpc-hint:focus-visible{color:var(--dshpc-fg);background:0 0;}
|
|
322
|
-
.dshpc-hint:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px;}
|
|
323
|
-
`;
|
|
2
|
+
export const SEGMENTED_CSS = ` /* ── 分段控件 P2 ───────────────────────────────────────────────────── 2026-10-19:按用户点名「原封不动照兄弟项目 dsh-task-dispatch-table 抄」—— 规则结构、写法、transition 全部对齐兄弟原文(单行规则、item 无边框、hover 只提亮文字), 只把前缀 / 变量名换成本仓口径。0.2.2-0.2.8 真机上「轨道透明、gap 失效」自查多轮无果 ⇒ 不再自创写法,回到兄弟同款。 用户额外要的两处(兄弟没有,保留):weekday 方块间距 gap:6px;段内中性计数 __count。 */ .dshpc-seg{display:inline-flex;align-items:center;gap:2px;padding:2px;border-radius:var(--dshpc-radius-md);background:var(--seg-track,var(--dshpc-seg-track));} .dshpc-seg--default{--seg-track:var(--dshpc-surface-2);--seg-thumb:var(--dshpc-surface-raised);border:1px solid var(--dshpc-border);} .dshpc-seg--inset{--seg-track:var(--dshpc-seg-track);--seg-thumb:var(--dshpc-surface-raised);border:0;padding:3px;} .dshpc-seg__item{appearance:none;display:inline-flex;align-items:center;gap:4px;box-sizing:border-box;height:calc(var(--dshpc-control-h-sm) - 6px);padding:0 12px;border:0;border-radius:var(--dshpc-radius-sm);background:transparent;color:var(--dshpc-fg-2);font-family:inherit;font-size:var(--dshpc-font-xs);font-weight:500;white-space:nowrap;cursor:pointer;flex:none;transition:color var(--dshpc-dur-fast) var(--dshpc-ease),background-color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease);} .dshpc-seg--md .dshpc-seg__item{height:calc(var(--dshpc-control-h-md) - 6px);} .dshpc-seg--lg .dshpc-seg__item{height:calc(var(--dshpc-control-h-lg) - 6px);} .dshpc-seg__item:hover:not([aria-pressed='true']):not(:disabled){color:var(--dshpc-fg);} .dshpc-seg__item[aria-pressed='true']{background:var(--seg-thumb);box-shadow:var(--dshpc-shadow-raised);color:var(--dshpc-fg);font-weight:600;} .dshpc-seg__item:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:-2px;} .dshpc-seg__item:disabled{cursor:default;opacity:.4;} /* 段内角标(如「异常」的数量):语义色实面 + 反白字,0 由组件侧不渲染。必须是正圆(用户 2026-10-03)。 */ .dshpc-seg__badge{display:inline-flex;align-items:center;justify-content:center;flex:none;width:16px;height:16px;padding:0;overflow:hidden;border-radius:50%;background:var(--dshpc-danger);color:var(--dshpc-on-signal);font-size:10px;line-height:16px;font-weight:500;font-variant-numeric:tabular-nums;} /* 段内中性计数(如筛选条「全部 11」):纯文字、无底无边(对齐 task-ledger .dtl-seg__num 拍板口径);0 由组件侧不渲染。 */ .dshpc-seg__count{display:inline;flex:none;margin-left:3px;padding:0;border:0;border-radius:0;background:none;color:var(--dshpc-fg-3);font-size:10px;line-height:1;font-weight:400;font-variant-numeric:tabular-nums;} /* block:撑满父宽(表单行用),各段等分 */ .dshpc-seg--block{display:flex;width:100%;} .dshpc-seg--block .dshpc-seg__item{flex:1 1 auto;justify-content:center;} /* weekday:星期多选方块。基础插件的特殊化定制(用户 2026-10-01:原 WeekdayPicker 即「蓝底 + 近似方形」): 每格正方形(宽 = 段高)、选中品牌蓝反白字、**无外描边**(2026-10-18 重申)、 方块之间间距 gap:6px(2026-10-18:不再 2px 挤成一坨 —— 这一条兄弟没有、是用户额外要的)。 */ .dshpc-seg--weekday{--seg-track:var(--dshpc-seg-track);gap:6px;border:0;padding:3px;} .dshpc-seg--weekday .dshpc-seg__item{width:calc(var(--dshpc-control-h-lg) - 6px);padding:0;justify-content:center;} .dshpc-seg--weekday .dshpc-seg__item[aria-pressed='true']{background:var(--dshpc-business);color:var(--dshpc-fg-inverse);box-shadow:var(--dshpc-shadow-raised);} @media (prefers-reduced-motion: reduce){.dshpc-seg__item{transition:none;}} `;
|
|
3
|
+
export const BUTTON_CSS = ` /* ── 按钮 / 图标钮 P2 ─────────────────────────────────────────────────── 与 Segmented 同一条高度纪律:--dshpc-control-h-sm(24) / -md(28) / -lg(32), 有边框的 variant 用 1px 真边框 + 内部 padding 补回,**有边 / 无边同高**。 三条受控轴(2026-10-19 重写,对齐主流 UI 框架的分类口径): · variant —— 外观档 = 形态 + 语义色,共 10 档: primary / secondary / outline / ghost / danger / success / warning / info / danger-outline(红字描边)/ link(行内链接) · size —— sm / md / lg · block —— 撑满父宽 每一档**只填 5 个局部变量**(--btn-bg / -fg / -border / -bg-hover / -bg-active), 结构与交互只有上面这一份;任何档位都不许再写一遍 display/height/padding。 自定义颜色(Button 的 color 参数)同样只覆盖这 5 个变量(token 覆盖,不是新皮肤)。 ⚠️ hover 不再用 opacity 压一层(用户 2026-10-19:「黑色和红色的按钮移上去变化太小, 完全感觉不到颜色变了」)⇒ 走 --dshpc-*-hover / -active 的明确混色,见 tokens-css.ts。 */ .dshpc-btn{--btn-bg:transparent;--btn-fg:var(--dshpc-fg);--btn-border:transparent;--btn-pad:12px; --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);--btn-fg-hover:var(--btn-fg); appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:6px; box-sizing:border-box;border:1px solid var(--btn-border);border-radius:var(--dshpc-radius-md); background-color:var(--btn-bg);color:var(--btn-fg);font-family:inherit;font-weight:500;white-space:nowrap;cursor:pointer; transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease),transform var(--dshpc-dur-fast) var(--dshpc-ease);} .dshpc-btn--sm{--btn-pad:10px;height:var(--dshpc-control-h-sm);padding:0 var(--btn-pad);font-size:var(--dshpc-font-sm);line-height:1;} .dshpc-btn--md{--btn-pad:12px;height:var(--dshpc-control-h-md);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;} .dshpc-btn--lg{--btn-pad:14px;height:var(--dshpc-control-h-lg);padding:0 var(--btn-pad);font-size:var(--dshpc-font-md);line-height:1;} /* block:撑满父宽(表单底栏 / 抽屉底部的主操作) */ .dshpc-btn--block{display:flex;width:100%;} /* block + 前置图标 ⇒ 文字视觉居中(2026-10-19 用户点名): 内容组 [图标 + 间距 + 文字] 整体在盒内居中时,**文字**的中心会被图标推右半格。 把右内边距补上「图标宽 + 间距」,可用盒随之左移同量 ⇒ 文字落回视觉中心,图标贴左侧。 图标宽按 1.2em 估(官方图标 14/16px vs 字号 12/13px),em 随字号档自动缩放。 */ .dshpc-btn--block.dshpc-btn--icon-start{padding-right:calc(var(--btn-pad) + 1.2em + 6px);} .dshpc-btn__icon,.dshpc-btn__icon-end{display:inline-flex;align-items:center;justify-content:center;flex:none;line-height:0;} .dshpc-btn__icon svg,.dshpc-btn__icon-end svg{display:block;margin:0;} /* loading:不换 DOM 结构,只在文案前插一个同色小圈(尺寸随字号,缩放不依赖常量) */ .dshpc-btn__spinner{display:block;flex:none;width:12px;height:12px;box-sizing:border-box; border:1.5px solid currentColor;border-right-color:transparent;border-radius:999px; animation:dshpc-btn-spin .7s linear infinite;} /* shortcut: 12px 是固定值,不随按钮字号缩放;要更大就改这一处。 */ @keyframes dshpc-btn-spin{to{transform:rotate(360deg)}} /* 交互态:颜色变化写在变量上 ⇒ 所有档位一次生效,且变化幅度由 token 决定(够明显) */ .dshpc-btn:hover:not(:disabled){background-color:var(--btn-bg-hover);color:var(--btn-fg-hover);} .dshpc-btn:active:not(:disabled){background-color:var(--btn-bg-active);transform:translateY(1px);} .dshpc-btn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;} .dshpc-btn:disabled{cursor:default;opacity:.5;} .dshpc-btn--primary{--btn-bg:var(--dshpc-accent);--btn-fg:var(--dshpc-fg-inverse); --btn-bg-hover:var(--dshpc-accent-hover);--btn-bg-active:var(--dshpc-accent-active);} /* secondary:中性实心(灰面),用于「取消 / 次要」这类与主操作并排的按钮 */ .dshpc-btn--secondary{--btn-bg:var(--dshpc-hover);--btn-fg:var(--dshpc-fg); --btn-bg-hover:var(--dshpc-active);--btn-bg-active:var(--dshpc-active);} .dshpc-btn--outline{--btn-bg:var(--dshpc-surface-1);--btn-border:var(--dshpc-border-strong); --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);} .dshpc-btn--ghost{--btn-fg:var(--dshpc-fg-2);--btn-fg-hover:var(--dshpc-fg); --btn-bg-hover:var(--dshpc-hover);--btn-bg-active:var(--dshpc-active);} .dshpc-btn--danger{--btn-bg:var(--dshpc-danger);--btn-fg:var(--dshpc-on-signal); --btn-bg-hover:var(--dshpc-danger-hover);--btn-bg-active:var(--dshpc-danger-active);} .dshpc-btn--success{--btn-bg:var(--dshpc-success);--btn-fg:var(--dshpc-on-signal); --btn-bg-hover:var(--dshpc-success-hover);--btn-bg-active:var(--dshpc-success-active);} .dshpc-btn--warning{--btn-bg:var(--dshpc-warning);--btn-fg:var(--dshpc-on-warning); --btn-bg-hover:var(--dshpc-warning-hover);--btn-bg-active:var(--dshpc-warning-active);} .dshpc-btn--info{--btn-bg:var(--dshpc-business);--btn-fg:var(--dshpc-on-signal); --btn-bg-hover:var(--dshpc-business-hover);--btn-bg-active:var(--dshpc-business-active);} /* danger-outline:红字描边(破坏性次要操作,如卡片上的「删除」)。 ⚠️ 旧修饰类 danger-ink 保留为别名(消费方可能还在挂),两者同一套皮肤。 */ .dshpc-btn--danger-outline,.dshpc-btn--danger-ink{--btn-border:var(--dshpc-danger);--btn-fg:var(--dshpc-danger); --btn-fg-hover:var(--dshpc-danger);--btn-bg-hover:var(--dshpc-danger-soft);--btn-bg-active:var(--dshpc-danger-soft);} /* link:行内文字链接型(会话 / 产出文件名),无底无边、品牌蓝、hover 下划线 */ .dshpc-btn--link{--btn-fg:var(--dshpc-link);--btn-fg-hover:var(--dshpc-link); --btn-bg-hover:transparent;--btn-bg-active:transparent; height:auto;padding:0;border:0;background:none;font-weight:400;text-align:left;} .dshpc-btn--link:hover:not(:disabled){text-decoration:underline;} /* 图标钮:纯图标,方形;尺寸档的宽高与同档文字按钮等高 */ .dshpc-iconbtn{appearance:none;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box; border:1px solid transparent;border-radius:var(--dshpc-radius-sm);background:transparent;color:var(--dshpc-fg-2); font-family:inherit;cursor:pointer;flex:none; transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease),opacity var(--dshpc-dur-fast) var(--dshpc-ease);} .dshpc-iconbtn--sm{width:var(--dshpc-control-h-sm);height:var(--dshpc-control-h-sm);font-size:var(--dshpc-font-sm);} .dshpc-iconbtn--md{width:var(--dshpc-control-h-md);height:var(--dshpc-control-h-md);font-size:var(--dshpc-font-md);} .dshpc-iconbtn--lg{width:var(--dshpc-control-h-lg);height:var(--dshpc-control-h-lg);font-size:var(--dshpc-font-md);} .dshpc-iconbtn--plain{color:var(--dshpc-fg-2);} .dshpc-iconbtn--outline{background:var(--dshpc-surface-1);border-color:var(--dshpc-border);color:var(--dshpc-fg-2);} .dshpc-iconbtn--danger{color:var(--dshpc-danger);} .dshpc-iconbtn:hover:not(:disabled){background:var(--dshpc-hover);color:var(--dshpc-fg);} .dshpc-iconbtn--danger:hover:not(:disabled){background:var(--dshpc-danger-soft);color:var(--dshpc-danger);} .dshpc-iconbtn:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;} .dshpc-iconbtn:disabled{cursor:default;opacity:.4;} /* ── 行式文件按钮(图标 + 文件名)P2:**全站唯一实现**(2026-10-04 收编)────────── 用途:「产出物 / 附件」那种**一行一个文件**的清单项(基础信息右栏产出物清单、附件区、 执行记录页的展开区)。平时透明、**鼠标移上去才出浅底**(沿用用户 2026-10-03 定的观感)。 两个形态修饰类: --block 撑满父宽(清单里一项一行) --inline 内容宽(跟在文字后头,如附件行) 收编原因:这份皮肤此前只写在 task-list.tsx 的 TASK_LIST_CSS 里(旧名 .dshpc-info-out), 执行记录页展开区要用同一种观感 ⇒ 上提基础层,避免再出现「各写一份外观」(同名不同皮的坑刚踩过)。 */ .dshpc-filechip{appearance:none;-webkit-appearance:none;border:0;border-radius:var(--dshpc-radius-xs); background:transparent;color:var(--dshpc-fg);font:inherit;text-align:left;cursor:pointer;min-width:0; transition:background-color var(--dshpc-dur) var(--dshpc-ease);} .dshpc-filechip:hover:not(:disabled){background:var(--dshpc-chip-bg);} .dshpc-filechip:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px;} .dshpc-filechip:disabled{cursor:default;background:transparent;color:var(--dshpc-fg-3);} .dshpc-filechip--block{display:flex;align-items:center;gap:6px;width:100%;box-sizing:border-box; padding:4px 6px;font-size:var(--dshpc-font-xs);} .dshpc-filechip--inline{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;font-size:var(--dshpc-font-sm);} @media (prefers-reduced-motion: reduce){.dshpc-btn,.dshpc-iconbtn,.dshpc-filechip{transition:none;}} `;
|
|
4
|
+
export const FIELD_CSS = ` /* ── 输入类 P3 ────────────────────────────────────────────────────────── */ .dshpc-input{box-sizing:border-box;border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md); background:var(--dshpc-surface-1);color:var(--dshpc-fg);font-family:inherit;outline:none; transition:border-color var(--dshpc-dur-fast) var(--dshpc-ease),box-shadow var(--dshpc-dur-fast) var(--dshpc-ease);} .dshpc-input--sm{height:var(--dshpc-control-h-sm);padding:0 8px;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);} .dshpc-input--md{height:var(--dshpc-control-h-md);padding:0 10px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);} .dshpc-input--lg{height:var(--dshpc-control-h-lg);padding:0 12px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);} .dshpc-input::placeholder{color:var(--dshpc-fg-dim);} .dshpc-input:focus{border-color:var(--dshpc-focus);box-shadow:0 0 0 1px var(--dshpc-focus);} .dshpc-input--error{border-color:var(--dshpc-danger);} .dshpc-input:disabled{cursor:default;opacity:.5;} .dshpc-pfx{display:inline-flex;align-items:center;box-sizing:border-box;overflow:hidden; border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md);background:var(--dshpc-surface-1);color:var(--dshpc-fg);} .dshpc-pfx--sm{height:var(--dshpc-control-h-sm);} .dshpc-pfx--md{height:var(--dshpc-control-h-md);} .dshpc-pfx--lg{height:var(--dshpc-control-h-lg);} /* md / lg 档字号跟档走(与同档下拉同字号):此前写死 sm(12px),同排下拉是 13px ⇒ 显得「input 字小」。 */ .dshpc-pfx--md .dshpc-pfx__label,.dshpc-pfx--lg .dshpc-pfx__label{font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);} .dshpc-pfx--md .dshpc-pfx__input,.dshpc-pfx--lg .dshpc-pfx__input{font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);} .dshpc-pfx--error{border-color:var(--dshpc-danger);} .dshpc-pfx:focus-within{border-color:var(--dshpc-focus);box-shadow:0 0 0 1px var(--dshpc-focus);} .dshpc-pfx__label{padding:0 8px;color:var(--dshpc-fg-2);font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);white-space:nowrap;border-right:1px solid var(--dshpc-border);} .dshpc-pfx__input{flex:1 1 auto;min-width:0;height:100%;padding:0 8px;border:0;background:transparent;color:var(--dshpc-fg); font-family:inherit;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);outline:none;} .dshpc-pfx__input::placeholder{color:var(--dshpc-fg-dim);} .dshpc-num{display:inline-flex;align-items:center;justify-content:space-between;box-sizing:border-box;overflow:hidden; border:1px solid var(--dshpc-border);border-radius:var(--dshpc-radius-md);background:var(--dshpc-surface-1);color:var(--dshpc-fg);} /* 中段:数字 + 后缀成组居中;容器被消费端拉宽时吃掉全部余量,两端 − / + 因此钉死在左右边缘。 */ .dshpc-num__mid{display:flex;align-items:center;justify-content:center;flex:1 1 auto;min-width:0;} .dshpc-num--sm{height:var(--dshpc-control-h-sm);} .dshpc-num--md{height:var(--dshpc-control-h-md);} .dshpc-num--lg{height:var(--dshpc-control-h-lg);} .dshpc-num--md .dshpc-num__input,.dshpc-num--lg .dshpc-num__input{font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);} .dshpc-num--md .dshpc-num__suffix,.dshpc-num--lg .dshpc-num__suffix{font-size:var(--dshpc-font-md);} .dshpc-num--disabled{opacity:.5;} .dshpc-num__input{width:36px;height:100%;padding:0 2px;border:0;background:transparent;color:var(--dshpc-fg); font-family:inherit;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);text-align:center;outline:none;} .dshpc-num__suffix{padding:0 6px;color:var(--dshpc-fg-2);font-size:var(--dshpc-font-sm);white-space:nowrap;} .dshpc-num .dshpc-iconbtn{border-radius:0;color:var(--dshpc-fg-2);flex:none;} /* 官方 Switch 包装统一:选中 = success 绿。 (合并原先 task-editor-css / task-list 两处就地覆盖;选择器带包装类 + role,特异性高于官方。) */ .dshpc-switch button[role='switch'][aria-checked='true']{background:var(--dshpc-success);} /* 多行文本输入(提示词等,P3):卡内无边框(视觉重心在整张卡上),占位色走 dimmed;校验不通过描红盒。 (从 task-editor-css 的 .dshpc-ed-prompt 上提而来;业务文件不再自写 textarea 皮肤。) */ .dshpc-textarea{display:block;width:100%;box-sizing:border-box;min-height:132px;padding:2px;border:none;outline:none;background:0 0;color:var(--dshpc-fg);font:inherit;font-size:var(--dshpc-font-lg);line-height:1.6;resize:vertical;} .dshpc-textarea::placeholder{color:var(--dshpc-fg-dim);} .dshpc-textarea--error{box-shadow:0 0 0 1px var(--dshpc-danger);} /* 拖拽分隔条(编辑分栏 / 预览 dock 共用,U20 #3):6px 命中区,col-resize,不画线,hover/按下浮出浅带。 具体 z-index 由 .dshpc-ed-resizer / .dshpc-sv-resizer 各自补。 */ .dshpc-resizer{position:absolute;top:0;bottom:0;left:0;width:6px;cursor:col-resize;background:0 0;touch-action:none;user-select:none;} .dshpc-resizer:hover,.dshpc-resizer:active{background:var(--dshpc-hover,rgba(38,49,72,.06));} @media (prefers-reduced-motion: reduce){.dshpc-input,.dshpc-pfx{transition:none;}} `;
|
|
5
|
+
export const DATETIME_CSS = ` /* ── 日期 / 时间 P4 ───────────────────────────────────────────────────── */ .dshpc-dtf-wrap{display:inline-flex;position:relative;min-width:0;} /* ⚠️ 边框粗细 / 圆角必须与下拉锚点(dshpc-ed-field 的 fieldButtonStyle)完全一致 (用户 2026-10-02 点名:同排的日期框与下拉框看着不是一套)⇒ 这里也是 0.5px + radius-md。 */ .dshpc-dtf{display:inline-flex;align-items:center;gap:6px;box-sizing:border-box;height:var(--dshpc-control-h-lg); min-width:0;max-width:100%;padding:0 8px;border:0.5px solid var(--dshpc-border-heavy);border-radius:var(--dshpc-radius-md); background:var(--dshpc-surface-1);color:var(--dshpc-fg);font:inherit;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md); cursor:pointer;transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),border-color var(--dshpc-dur-fast) var(--dshpc-ease);} /* 日期 / 时间锚点:三档高度(默认 lg=32)。base 已含 lg 高度作兜底,下面三档按 size 覆盖。 */ .dshpc-dtf--sm{height:var(--dshpc-control-h-sm);padding:0 6px;font-size:var(--dshpc-font-sm);line-height:var(--dshpc-line-sm);} .dshpc-dtf--md{height:var(--dshpc-control-h-md);padding:0 8px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);} .dshpc-dtf--lg{height:var(--dshpc-control-h-lg);padding:0 8px;font-size:var(--dshpc-font-md);line-height:var(--dshpc-line-md);} .dshpc-dtf:hover:not(:disabled){background:var(--dshpc-hover);} .dshpc-dtf:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;} .dshpc-dtf:disabled{cursor:not-allowed;opacity:.6;} .dshpc-dtf__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;} .dshpc-dtf__label--ph{color:var(--dshpc-fg-dim);} .dshpc-dtf__icon{display:inline-flex;width:16px;height:16px;align-items:center;justify-content:center;flex:none;color:var(--dshpc-fg-3);} .dshpc-layer{position:fixed;z-index:var(--dshpc-z-menu);box-sizing:border-box;padding:8px;background:var(--dshpc-surface-1); box-shadow:var(--dshpc-shadow-2);border-radius:var(--dshpc-radius-md);color:var(--dshpc-fg);font-size:var(--dshpc-font-md);} .dshpc-cal__head{display:flex;align-items:center;justify-content:space-between;gap:4px;margin-bottom:4px;} .dshpc-cal__title{flex:1 1 auto;text-align:center;font-size:var(--dshpc-font-md);font-weight:600;color:var(--dshpc-fg);} .dshpc-cal__grid{display:grid;grid-template-columns:repeat(7,32px);gap:2px;} .dshpc-cal__weekday{height:24px;display:flex;align-items:center;justify-content:center;font-size:var(--dshpc-font-sm);color:var(--dshpc-fg-3);} .dshpc-cal__cell{width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center; border:1px solid transparent;border-radius:var(--dshpc-radius-md);background:transparent;color:var(--dshpc-fg); font:inherit;font-size:var(--dshpc-font-md);cursor:pointer; transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease);} .dshpc-cal__cell--hover{background:var(--dshpc-hover);} .dshpc-cal__cell--out{color:var(--dshpc-fg-dim);} .dshpc-cal__cell--today{border-color:var(--dshpc-business);} .dshpc-cal__cell[aria-pressed='true']{background:var(--dshpc-accent);color:var(--dshpc-fg-inverse);} .dshpc-cal__foot{margin-top:6px;padding-top:6px;border-top:1px solid var(--dshpc-border);} .dshpc-time__cols{display:flex;gap:4px;} .dshpc-time__list{width:56px;max-height:196px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;} .dshpc-time__opt{padding:5px 0;border:0;border-radius:var(--dshpc-radius-sm);background:transparent;color:var(--dshpc-fg-2); font:inherit;font-size:var(--dshpc-font-md);cursor:pointer;transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),color var(--dshpc-dur-fast) var(--dshpc-ease);} .dshpc-time__opt[aria-selected='true']{background:var(--dshpc-hover);color:var(--dshpc-fg);font-weight:600;} .dshpc-time__foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px;padding-top:6px;border-top:1px solid var(--dshpc-border);} @media (prefers-reduced-motion: reduce){.dshpc-dtf,.dshpc-cal__cell,.dshpc-time__opt{transition:none;}} `;
|
|
6
|
+
export const SELECT_CSS = ` /* 下拉 / 日历 / 时分锚点:键盘可达性描边 + 校验描红(类名从业务层沿用,皮肤归位基础层) */ .dshpc-ed-field:focus-visible{outline:2px solid var(--dshpc-business);outline-offset:1px;} .dshpc-ed-field--error{border-color:var(--dshpc-danger)!important;box-shadow:0 0 0 1px var(--dshpc-danger);} /* 整行下拉:官方 Menu 的包装 span 是 inline-flex(shrink-to-fit),要连它一起撑满 */ .dshpc-ed-selectwrap{width:100%;} /* 省略号三件套(ui-style-guide §三「待抽象 #1」的收敛点):**新代码一律挂这个类**,不再各写一遍。 ⚠️ 已有 19 处旧写法待逐步收编(2026-10-04 起新增的调用点不许再手写这三条属性)。 */ .dshpc-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;} /* 跑马灯文本(MarqueeText):双层——外层只裁剪,内层才 transform 滚动;非 hover 内层自带省略号 */ .dshpc-mq{display:block;overflow:hidden;white-space:nowrap;} .dshpc-mq .dshpc-mq-in{display:inline-block;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:top;} /* ⚠️ 跑法(用户 2026-10-03 拍板):**跑一遍、停在尾字**(播放 1 次 + forwards),不来回弹、不无限跑。 滚距 = 精确溢出量 ⇒ 停下时最后一个字正好贴右缘,**不会跑进黑块**(黑块是旧手写版把 内层盒子裁了、按「半截文本」平移导致的)。鼠标移开 ⇒ :hover 失效 ⇒ 自动复位回省略号态。 */ .dshpc-mq-run:hover .dshpc-mq-in{max-width:none;overflow:visible;animation:dshpc-mq-scroll var(--dshpc-mq-dur,6s) linear .4s 1 forwards;} @keyframes dshpc-mq-scroll{from{transform:translateX(0)}to{transform:translateX(var(--dshpc-mq-dist,-40px))}} `;
|
|
7
|
+
export const LOADING_CSS = ` /* 运行中 / loading 的活动指示:三个小方块依次脉动。 */ @keyframes dshpc-run-block { 0%, 80%, 100% { opacity: 0.25; transform: scale(0.8) } 40% { opacity: 1; transform: scale(1) } } .dshpc-run-blocks { display: inline-flex; align-items: center; gap: 3px; } .dshpc-run-blocks > i { width: 5px; height: 5px; border-radius: 1px; background: currentColor; animation: dshpc-run-block 1.2s ease-in-out infinite; } .dshpc-run-blocks > i:nth-child(2) { animation-delay: 0.15s; } .dshpc-run-blocks > i:nth-child(3) { animation-delay: 0.3s; } @media (prefers-reduced-motion: reduce) { .dshpc-run-blocks > i { animation: none; opacity: 1; } } `;
|
|
8
|
+
export const BACK_TO_TOP_CSS = ` /* 回到顶部悬浮钮:圆钮、实面、投影;默认隐身,滚过阈值加 .is-visible 才显形。 横向 left 由组件按主内容列右缘实时算出(贴在其右侧外侧),不写死。 */ .dshpc-backtotop{ position:fixed; bottom:var(--dshpc-space-4); z-index:var(--dshpc-z-dock); width:44px;height:44px; display:inline-flex;align-items:center;justify-content:center; padding:0;margin:0; box-sizing:border-box; border:1px solid var(--dshpc-border); border-radius:50%; background:var(--dshpc-solid); color:var(--dshpc-on-solid); box-shadow:var(--dshpc-shadow-2); cursor:pointer; opacity:0; transform:translateY(8px) scale(.92); transition:opacity var(--dshpc-dur) var(--dshpc-ease), transform var(--dshpc-dur) var(--dshpc-ease), background-color var(--dshpc-dur-fast) var(--dshpc-ease); pointer-events:none; } .dshpc-backtotop.is-visible{opacity:1;transform:translateY(0) scale(1);pointer-events:auto;} .dshpc-backtotop:hover{background:var(--dshpc-hover);} .dshpc-backtotop:active{background:var(--dshpc-active);} .dshpc-backtotop:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;} @media (prefers-reduced-motion: reduce){ .dshpc-backtotop{transition:opacity var(--dshpc-dur-fast) linear;transform:none;} } `;
|
|
9
|
+
export const HINT_CSS = ` /* ── 问号提示 P4(用户 2026-10-18:对齐真实插件 HelpButton——**带圈的问号图标**)── 本体 14px 细圈 + 圈内 ?,颜色 fg-3、hover 只提亮不加底(与 dshpc-ed-help 同规矩)。 气泡不在本文件:2026-10-19 用户拍板「问号必须用官方 Tooltip 那一个」⇒ 气泡由注入的 官方组件渲染(src/ui/tooltip.ts),这里只管问号图标本身。 */ .dshpc-hint{display:inline-flex;align-items:center;justify-content:center;flex:none; box-sizing:border-box;width:14px;height:14px;padding:0;border:1px solid currentColor;border-radius:50%;background:transparent; color:var(--dshpc-fg-3);font-family:inherit;font-size:8px;font-weight:600;line-height:12px;cursor:help;vertical-align:middle; transition:color var(--dshpc-dur-fast) var(--dshpc-ease);} .dshpc-hint:hover,.dshpc-hint:focus-visible{color:var(--dshpc-fg);background:0 0;} .dshpc-hint:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:1px;} `;
|
|
324
10
|
//# sourceMappingURL=controls-css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls-css.js","sourceRoot":"","sources":["../../src/ui/controls-css.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAE3B,MAAM,CAAC,MAAM,aAAa,GAAG
|
|
1
|
+
{"version":3,"file":"controls-css.js","sourceRoot":"","sources":["../../src/ui/controls-css.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAE3B,MAAM,CAAC,MAAM,aAAa,GAAG,mpGAAmpG,CAAA;AAEhrG,MAAM,CAAC,MAAM,UAAU,GAAG,isPAAisP,CAAA;AAE3tP,MAAM,CAAC,MAAM,SAAS,GAAG,inJAAinJ,CAAA;AAE1oJ,MAAM,CAAC,MAAM,YAAY,GAAG,06HAA06H,CAAA;AAEt8H,MAAM,CAAC,MAAM,UAAU,GAAG,ktCAAktC,CAAA;AAE5uC,MAAM,CAAC,MAAM,WAAW,GAAG,wmBAAwmB,CAAA;AAEnoB,MAAM,CAAC,MAAM,eAAe,GAAG,0mCAA0mC,CAAA;AAEzoC,MAAM,CAAC,MAAM,QAAQ,GAAG,gxBAAgxB,CAAA"}
|
package/package.json
CHANGED