@einfach-excel/spreadsheet-ui-styles 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +37 -2
  3. package/features/comment-thread.css +169 -0
  4. package/features/comment-thread.css.d.ts +2 -0
  5. package/features/conditional-format-dialog.css +254 -0
  6. package/features/conditional-format-dialog.css.d.ts +7 -0
  7. package/features/conditional-format-fields.css +10 -0
  8. package/features/conditional-format-fields.css.d.ts +2 -0
  9. package/features/data-validation-dialog.css +197 -0
  10. package/features/data-validation-dialog.css.d.ts +7 -0
  11. package/features/filter-dropdown.css +177 -0
  12. package/features/filter-dropdown.css.d.ts +2 -0
  13. package/features/find-replace-actions.css +13 -0
  14. package/features/find-replace-actions.css.d.ts +2 -0
  15. package/features/find-replace-dialog.css +147 -0
  16. package/features/find-replace-dialog.css.d.ts +2 -0
  17. package/features/find-replace-status-messages.css +19 -0
  18. package/features/find-replace-status-messages.css.d.ts +2 -0
  19. package/features/format-cells-dialog.css +296 -0
  20. package/features/format-cells-dialog.css.d.ts +2 -0
  21. package/features/format-cells-panels.css +154 -0
  22. package/features/format-cells-panels.css.d.ts +2 -0
  23. package/features/go-to-dialog.css +205 -0
  24. package/features/go-to-dialog.css.d.ts +2 -0
  25. package/features/menu-help-dialog.css +82 -0
  26. package/features/name-manager-dialog.css +276 -0
  27. package/features/number-format-dialog.css +147 -0
  28. package/features/number-format-dialog.css.d.ts +2 -0
  29. package/features/page-setup-dialog.css +167 -0
  30. package/features/page-setup-dialog.css.d.ts +3 -0
  31. package/features/paste-special-dialog.css +126 -0
  32. package/features/paste-special-dialog.css.d.ts +7 -0
  33. package/features/print-preview-dialog.css +197 -0
  34. package/features/print-preview-dialog.css.d.ts +3 -0
  35. package/features/protection-unlock-dialog.css +127 -0
  36. package/features/remove-duplicates-dialog.css +165 -0
  37. package/features/remove-duplicates-dialog.css.d.ts +7 -0
  38. package/features/sheet-tab-delete-dialog.css +64 -0
  39. package/features/sheet-tab-delete-dialog.css.d.ts +3 -0
  40. package/features/sort-confirmation-dialog.css +157 -0
  41. package/features/sort-confirmation-dialog.css.d.ts +2 -0
  42. package/features/text-to-columns-dialog.css +246 -0
  43. package/features/text-to-columns-dialog.css.d.ts +2 -0
  44. package/features/toolbar-shell.css +46 -0
  45. package/features/toolbar-shell.css.d.ts +2 -0
  46. package/package.json +40 -3
  47. package/styles/button-states.css +45 -0
  48. package/styles/chrome-tokens.css +124 -0
  49. package/styles/demo-header.css +23 -0
  50. package/styles/demo-two-column.css +115 -0
  51. package/styles/diagnostics.css +127 -0
  52. package/styles/dialog-skin.css +143 -0
  53. package/styles/formula-autocomplete.css +87 -0
  54. package/styles/formula-bar-row.css +51 -0
  55. package/styles/grid-cells.css +254 -0
  56. package/styles/grid-frame.css +268 -0
  57. package/styles/grid-headers.css +99 -0
  58. package/styles/grid-overlays.css +160 -0
  59. package/styles/help-overlay.css +67 -0
  60. package/styles/history-panel.css +127 -0
  61. package/styles/index.css +26 -0
  62. package/styles/locked-edit-feedback.css +45 -0
  63. package/styles/marching-ants.css +18 -0
  64. package/styles/menu-bar.css +97 -0
  65. package/styles/name-box.css +89 -0
  66. package/styles/presence-overlay.css +36 -0
  67. package/styles/shared-context-menu.css +50 -0
  68. package/styles/shared-format-toolbar.css +82 -0
  69. package/styles/shared-sheet-tabs.css +138 -0
  70. package/styles/sheet-tabs.css +98 -0
  71. package/styles/status-bar.css +161 -0
  72. package/styles/toolbar-popovers.css +278 -0
  73. package/styles/toolbar.css +213 -0
@@ -0,0 +1,26 @@
1
+ @import './grid-frame.css';
2
+ @import './grid-overlays.css';
3
+ @import './formula-bar-row.css';
4
+ @import './shared-format-toolbar.css';
5
+ @import './shared-sheet-tabs.css';
6
+ @import './shared-context-menu.css';
7
+ @import './chrome-tokens.css';
8
+ @import './menu-bar.css';
9
+ @import './toolbar.css';
10
+ @import './toolbar-popovers.css';
11
+ @import './name-box.css';
12
+ @import './status-bar.css';
13
+ @import './sheet-tabs.css';
14
+ @import './demo-two-column.css';
15
+ @import './history-panel.css';
16
+ @import './button-states.css';
17
+ @import './dialog-skin.css';
18
+ @import './grid-headers.css';
19
+ @import './grid-cells.css';
20
+ @import './demo-header.css';
21
+ @import './help-overlay.css';
22
+ @import './formula-autocomplete.css';
23
+ @import './marching-ants.css';
24
+ @import './diagnostics.css';
25
+ @import './locked-edit-feedback.css';
26
+ @import './presence-overlay.css';
@@ -0,0 +1,45 @@
1
+ .spreadsheet-locked-edit-feedback {
2
+ display: flex;
3
+ align-items: center;
4
+ gap: 8px;
5
+ padding: 6px 8px;
6
+ border-top: 1px solid var(--border);
7
+ border-left: 3px solid var(--warning, #d68910);
8
+ background: var(--bg-chrome);
9
+ color: var(--text-default);
10
+ font-family: var(--excel-font);
11
+ font-size: 12px;
12
+ }
13
+
14
+ .spreadsheet-locked-edit-feedback-message {
15
+ flex: 1 1 auto;
16
+ min-width: 0;
17
+ }
18
+
19
+ .spreadsheet-locked-edit-feedback-actions {
20
+ display: flex;
21
+ flex: none;
22
+ gap: 4px;
23
+ }
24
+
25
+ .spreadsheet-locked-edit-feedback-unlock,
26
+ .spreadsheet-locked-edit-feedback-dismiss {
27
+ border: 1px solid var(--border-strong, var(--border));
28
+ border-radius: 2px;
29
+ background: var(--bg-surface, #fff);
30
+ color: inherit;
31
+ font: inherit;
32
+ line-height: 1.35;
33
+ padding: 2px 6px;
34
+ }
35
+
36
+ .spreadsheet-locked-edit-feedback-unlock:hover,
37
+ .spreadsheet-locked-edit-feedback-dismiss:hover {
38
+ background: var(--bg-hover, #f0f0f0);
39
+ }
40
+
41
+ .spreadsheet-locked-edit-feedback-unlock:focus-visible,
42
+ .spreadsheet-locked-edit-feedback-dismiss:focus-visible {
43
+ outline: 2px solid var(--focus-ring, #1a73e8);
44
+ outline-offset: 1px;
45
+ }
@@ -0,0 +1,18 @@
1
+ /* Marching-ants dashed border for clipboard source (copy / cut). Driven by a
2
+ * single CSS @keyframes so multiple ants rects share one timeline and never
3
+ * drift relative to each other. Period 4+3=7px matches the canvas overlay's
4
+ * setLineDash([4,3]) so visual parity is exact. */
5
+ @keyframes spreadsheet-svg-marching-ants {
6
+ from {
7
+ stroke-dashoffset: 0;
8
+ }
9
+ to {
10
+ stroke-dashoffset: -7;
11
+ }
12
+ }
13
+
14
+ .spreadsheet-grid-overlay-svg .svg-marching-ants-dash {
15
+ /* 840ms = 7 dash-period units * 120ms/unit; matches the canvas overlay's
16
+ * scheduleAntsFrame tick exactly (1px per 120ms in lineDashOffset). */
17
+ animation: spreadsheet-svg-marching-ants 840ms linear infinite;
18
+ }
@@ -0,0 +1,97 @@
1
+ /* === A. Top chrome ====================================================== */
2
+
3
+ /* A.1 Menu bar — horizontal row, hover/open states, dropdown panel */
4
+ .spreadsheet-menu-bar {
5
+ display: flex;
6
+ align-items: stretch;
7
+ height: 26px;
8
+ background: var(--bg-chrome);
9
+ border-bottom: 1px solid var(--border);
10
+ font-family: var(--excel-font);
11
+ font-size: 12px;
12
+ user-select: none;
13
+ position: relative;
14
+ z-index: 100;
15
+ }
16
+
17
+ .spreadsheet-menu-bar .menu-bar-top {
18
+ position: relative;
19
+ display: inline-flex;
20
+ align-items: stretch;
21
+ }
22
+
23
+ .spreadsheet-menu-bar .menu-bar-button {
24
+ display: inline-flex;
25
+ align-items: center;
26
+ height: 100%;
27
+ padding: 0 10px;
28
+ border: none;
29
+ background: transparent;
30
+ color: var(--text-default);
31
+ font: inherit;
32
+ cursor: pointer;
33
+ transition: background 100ms ease-out;
34
+ }
35
+
36
+ .spreadsheet-menu-bar .menu-bar-button:hover {
37
+ background: var(--hover);
38
+ }
39
+
40
+ .spreadsheet-menu-bar .menu-bar-button-open {
41
+ background: var(--active-bg);
42
+ }
43
+
44
+ .spreadsheet-menu-bar .menu-bar-dropdown {
45
+ position: absolute;
46
+ top: 100%;
47
+ left: 0;
48
+ min-width: 200px;
49
+ padding: 4px 0;
50
+ background: var(--bg-surface);
51
+ border: 1px solid var(--border-strong);
52
+ border-radius: 2px;
53
+ box-shadow: var(--shadow-popover);
54
+ z-index: 200;
55
+ }
56
+
57
+ .spreadsheet-menu-bar .menu-bar-item {
58
+ display: flex;
59
+ align-items: center;
60
+ justify-content: space-between;
61
+ width: 100%;
62
+ padding: 4px 14px;
63
+ border: none;
64
+ background: transparent;
65
+ color: var(--text-default);
66
+ font: inherit;
67
+ text-align: left;
68
+ cursor: pointer;
69
+ }
70
+
71
+ .spreadsheet-menu-bar .menu-bar-item:hover {
72
+ background: var(--select-bg);
73
+ }
74
+
75
+ .spreadsheet-menu-bar .menu-bar-item-disabled,
76
+ .spreadsheet-menu-bar .menu-bar-item-disabled:hover {
77
+ color: var(--text-disabled);
78
+ background: transparent;
79
+ cursor: default;
80
+ }
81
+
82
+ .spreadsheet-menu-bar .menu-bar-item-label {
83
+ flex: 1;
84
+ }
85
+
86
+ .spreadsheet-menu-bar .menu-bar-item-shortcut {
87
+ margin-left: 16px;
88
+ color: var(--text-muted);
89
+ font-size: 11px;
90
+ }
91
+
92
+ .spreadsheet-menu-bar .menu-bar-separator {
93
+ height: 1px;
94
+ margin: 4px 0;
95
+ background: var(--border);
96
+ }
97
+
@@ -0,0 +1,89 @@
1
+ /* A.3 Name Box + Formula Bar row */
2
+ .spreadsheet-formula-bar {
3
+ display: flex;
4
+ align-items: stretch;
5
+ height: var(--formula-row-h);
6
+ background: var(--bg-toolbar);
7
+ border-bottom: 1px solid var(--border);
8
+ font-family: var(--excel-font);
9
+ font-size: 13px;
10
+ }
11
+
12
+ .spreadsheet-name-box {
13
+ display: inline-flex;
14
+ align-items: center;
15
+ min-width: 120px;
16
+ max-width: 160px;
17
+ padding: 0;
18
+ border-right: 1px solid var(--border);
19
+ background: var(--bg-toolbar);
20
+ }
21
+
22
+ .spreadsheet-name-box .spreadsheet-name-box-input {
23
+ width: 100%;
24
+ height: 100%;
25
+ padding: 0 8px;
26
+ border: none;
27
+ outline: none;
28
+ background: transparent;
29
+ color: var(--text-default);
30
+ font: inherit;
31
+ }
32
+
33
+ .spreadsheet-name-box .spreadsheet-name-box-input:focus {
34
+ background: var(--select-bg);
35
+ }
36
+
37
+ .spreadsheet-name-box[data-error='true'] .spreadsheet-name-box-input {
38
+ background: var(--error-bg);
39
+ }
40
+
41
+ .spreadsheet-name-box-error-message {
42
+ position: absolute;
43
+ width: 1px;
44
+ height: 1px;
45
+ padding: 0;
46
+ margin: -1px;
47
+ overflow: hidden;
48
+ clip: rect(0, 0, 0, 0);
49
+ white-space: nowrap;
50
+ border: 0;
51
+ }
52
+
53
+ .spreadsheet-formula-bar-input {
54
+ flex: 1;
55
+ height: 100%;
56
+ padding: 0 8px 0 28px;
57
+ border: none;
58
+ outline: none;
59
+ background: var(--bg-toolbar)
60
+ url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ctext x='12' y='17' text-anchor='middle' font-family='serif' font-style='italic' font-size='14' fill='%236a6a6a'%3Efx%3C/text%3E%3C/svg%3E")
61
+ no-repeat 4px center;
62
+ background-size: 20px 20px;
63
+ color: var(--text-default);
64
+ font: inherit;
65
+ }
66
+
67
+ .spreadsheet-formula-bar-input:focus {
68
+ background-color: var(--bg-toolbar);
69
+ outline: 1px solid var(--office-blue);
70
+ outline-offset: -1px;
71
+ }
72
+
73
+
74
+ /* 公式栏提交被拒时的行内错误(role=alert)。 */
75
+ .spreadsheet-formula-bar-error {
76
+ display: inline-flex;
77
+ align-items: center;
78
+ padding: 0 8px;
79
+ color: var(--error-text);
80
+ font-size: 12px;
81
+ white-space: nowrap;
82
+ overflow: hidden;
83
+ text-overflow: ellipsis;
84
+ }
85
+
86
+ /* data-uri 里的 fx 字形吃不到 CSS 变量,暗色下单独换亮灰填充的一份。 */
87
+ [data-spreadsheet-theme='dark'] .spreadsheet-formula-bar-input {
88
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ctext x='12' y='17' text-anchor='middle' font-family='serif' font-style='italic' font-size='14' fill='%23a8a6a3'%3Efx%3C/text%3E%3C/svg%3E");
89
+ }
@@ -0,0 +1,36 @@
1
+ .spreadsheet-presence-overlay {
2
+ position: absolute;
3
+ inset: 0;
4
+ z-index: 6;
5
+ pointer-events: none;
6
+ }
7
+
8
+ .presence-cursor {
9
+ position: absolute;
10
+ box-sizing: border-box;
11
+ border: 2px solid var(--presence-color, #888888);
12
+ pointer-events: none;
13
+ }
14
+
15
+ .presence-selection {
16
+ position: absolute;
17
+ inset: 0;
18
+ background-color: var(--presence-color, #888888);
19
+ opacity: 0.15;
20
+ }
21
+
22
+ .presence-label {
23
+ position: absolute;
24
+ top: -1.5rem;
25
+ left: -2px;
26
+ max-width: 12rem;
27
+ overflow: hidden;
28
+ padding: 0.125rem 0.375rem;
29
+ color: var(--text-on-accent);
30
+ font-size: 0.75rem;
31
+ line-height: 1.25rem;
32
+ text-overflow: ellipsis;
33
+ white-space: nowrap;
34
+ background-color: var(--presence-color, #888888);
35
+ border-radius: 0.125rem 0.125rem 0 0;
36
+ }
@@ -0,0 +1,50 @@
1
+ /* === Context Menu ===
2
+ * Right-click menu for column headers, row headers, cells, and sheet tabs.
3
+ * Portaled to <body> so it escapes the table's overflow-scroll clipping.
4
+ */
5
+
6
+ .context-menu {
7
+ position: fixed;
8
+ z-index: 1000;
9
+ min-width: 180px;
10
+ padding: 4px 0;
11
+ background: var(--bg-surface);
12
+ border: 1px solid var(--border);
13
+ border-radius: 6px;
14
+ box-shadow: var(--shadow-popover);
15
+ font-family: var(--excel-font);
16
+ font-size: 13px;
17
+ user-select: none;
18
+ }
19
+
20
+ .context-menu-item {
21
+ display: block;
22
+ width: 100%;
23
+ padding: 6px 14px;
24
+ border: none;
25
+ background: transparent;
26
+ color: var(--text-default);
27
+ text-align: left;
28
+ cursor: pointer;
29
+ font-family: inherit;
30
+ font-size: inherit;
31
+ }
32
+
33
+ .context-menu-item:hover,
34
+ .context-menu-item-highlight {
35
+ background: var(--hover);
36
+ color: var(--text-default);
37
+ }
38
+
39
+ .context-menu-item:disabled {
40
+ color: var(--text-disabled);
41
+ cursor: default;
42
+ background: transparent;
43
+ }
44
+
45
+ .context-menu-divider {
46
+ border: none;
47
+ border-top: 1px solid var(--border);
48
+ margin: 4px 0;
49
+ }
50
+
@@ -0,0 +1,82 @@
1
+ /* === Format Toolbar (Phase 6) ===
2
+ * Excel ribbon-lite — light borders, gray hover, primary blue on active. */
3
+
4
+ .format-toolbar {
5
+ display: flex;
6
+ align-items: center;
7
+ gap: 4px;
8
+ padding: 4px 6px;
9
+ margin-bottom: 6px;
10
+ border: 1px solid #d0d7de;
11
+ background: #fafbfc;
12
+ border-radius: 4px;
13
+ font-family: -apple-system, sans-serif;
14
+ font-size: 13px;
15
+ }
16
+
17
+ .fmt-btn {
18
+ min-width: 28px;
19
+ height: 26px;
20
+ padding: 0 8px;
21
+ border: 1px solid transparent;
22
+ background: transparent;
23
+ color: #333;
24
+ font-size: 13px;
25
+ font-family: inherit;
26
+ cursor: pointer;
27
+ border-radius: 3px;
28
+ display: inline-flex;
29
+ align-items: center;
30
+ justify-content: center;
31
+ }
32
+
33
+ .fmt-btn:hover {
34
+ background: #eef1f4;
35
+ border-color: #d0d7de;
36
+ }
37
+
38
+ .fmt-btn-active {
39
+ background: #e8f0fe;
40
+ border-color: #1a73e8;
41
+ color: #1a73e8;
42
+ }
43
+
44
+ .fmt-sep {
45
+ width: 1px;
46
+ height: 20px;
47
+ background: #d0d7de;
48
+ margin: 0 4px;
49
+ }
50
+
51
+ .fmt-label {
52
+ display: inline-flex;
53
+ align-items: center;
54
+ gap: 4px;
55
+ font-size: 12px;
56
+ color: #555;
57
+ }
58
+
59
+ .fmt-label-text {
60
+ user-select: none;
61
+ }
62
+
63
+ .fmt-select {
64
+ height: 24px;
65
+ padding: 0 4px;
66
+ border: 1px solid #d0d7de;
67
+ border-radius: 3px;
68
+ background: #fff;
69
+ font-family: inherit;
70
+ font-size: 12px;
71
+ }
72
+
73
+ .fmt-color {
74
+ width: 28px;
75
+ height: 24px;
76
+ border: 1px solid #d0d7de;
77
+ border-radius: 3px;
78
+ cursor: pointer;
79
+ padding: 0;
80
+ background: #fff;
81
+ }
82
+
@@ -0,0 +1,138 @@
1
+ /* === Sheet Tabs (bottom-of-grid, multi-sheet workbook) === */
2
+
3
+ .sheet-tabs {
4
+ display: flex;
5
+ align-items: center;
6
+ gap: 2px;
7
+ margin-top: 6px;
8
+ padding: 4px 6px 0;
9
+ border-top: 1px solid #d0d7de;
10
+ background: #fafbfc;
11
+ overflow-x: auto;
12
+ }
13
+
14
+ .sheet-tab {
15
+ padding: 6px 14px;
16
+ border: 1px solid transparent;
17
+ border-bottom: none;
18
+ background: #eef1f4;
19
+ color: #555;
20
+ font-size: 13px;
21
+ font-weight: 500;
22
+ cursor: pointer;
23
+ border-radius: 4px 4px 0 0;
24
+ white-space: nowrap;
25
+ font-family: inherit;
26
+ transition: background 0.12s, color 0.12s;
27
+ }
28
+
29
+ .sheet-tab:hover {
30
+ background: #e0e6ec;
31
+ color: #333;
32
+ }
33
+
34
+ .sheet-tab-active {
35
+ background: #fff;
36
+ color: #1a73e8;
37
+ border-color: #d0d7de;
38
+ border-bottom-color: #fff;
39
+ margin-bottom: -1px;
40
+ }
41
+
42
+ .sheet-tab-add {
43
+ margin-left: 4px;
44
+ padding: 4px 10px;
45
+ border: 1px solid #d0d7de;
46
+ background: #fff;
47
+ color: #1a73e8;
48
+ font-size: 14px;
49
+ font-weight: 600;
50
+ cursor: pointer;
51
+ border-radius: 4px;
52
+ font-family: inherit;
53
+ line-height: 1;
54
+ }
55
+
56
+ .sheet-tab-add:hover {
57
+ background: #e8f0fe;
58
+ }
59
+
60
+ /* vnext 的 tab-item / 拖拽落点样式已迁往 sheet-tabs.css(单一皮肤);
61
+ 重排把手随"拖页签本体"交互删除。 */
62
+
63
+ .spreadsheet-sheet-tab-rename {
64
+ min-width: 72px;
65
+ max-width: 160px;
66
+ height: 28px;
67
+ padding: 0 8px;
68
+ border: 1px solid var(--office-blue);
69
+ border-radius: 4px 4px 0 0;
70
+ background: var(--bg-surface);
71
+ color: var(--text-default);
72
+ font-family: inherit;
73
+ font-size: 13px;
74
+ outline: none;
75
+ }
76
+
77
+ .spreadsheet-sheet-tab-context-menu {
78
+ position: fixed;
79
+ z-index: 40;
80
+ min-width: 128px;
81
+ padding: 4px;
82
+ border: 1px solid var(--border);
83
+ border-radius: 4px;
84
+ background: var(--bg-surface);
85
+ box-shadow: var(--shadow-popover);
86
+ }
87
+
88
+ .spreadsheet-sheet-tab-context-menu button {
89
+ display: block;
90
+ width: 100%;
91
+ padding: 6px 10px;
92
+ border: 0;
93
+ border-radius: 3px;
94
+ background: transparent;
95
+ color: var(--text-default);
96
+ font: inherit;
97
+ font-size: 13px;
98
+ text-align: left;
99
+ cursor: pointer;
100
+ }
101
+
102
+ .spreadsheet-sheet-tab-context-menu button:hover:not(:disabled) {
103
+ background: var(--hover);
104
+ }
105
+
106
+ .spreadsheet-sheet-tab-context-menu button:disabled {
107
+ color: var(--text-disabled);
108
+ cursor: default;
109
+ }
110
+
111
+ .spreadsheet-status-bar {
112
+ display: flex;
113
+ align-items: center;
114
+ gap: 12px;
115
+ min-height: 28px;
116
+ padding: 4px 8px;
117
+ border: 1px solid #d0d7de;
118
+ border-top: none;
119
+ background: #fafbfc;
120
+ color: #444;
121
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
122
+ font-size: 12px;
123
+ line-height: 1.2;
124
+ overflow-x: auto;
125
+ white-space: nowrap;
126
+ }
127
+
128
+ .spreadsheet-status-bar-item {
129
+ display: inline-flex;
130
+ align-items: center;
131
+ min-width: max-content;
132
+ }
133
+
134
+ .spreadsheet-status-bar-item:first-child {
135
+ color: #0b57d0;
136
+ font-weight: 600;
137
+ }
138
+
@@ -0,0 +1,98 @@
1
+ /* C.2 Sheet tabs — Excel-like rounded card with active raised */
2
+ .spreadsheet-sheet-tabs {
3
+ display: flex;
4
+ align-items: stretch;
5
+ height: var(--bottom-strip-h);
6
+ padding: 0 4px;
7
+ background: var(--bg-chrome);
8
+ border-top: 1px solid var(--border);
9
+ border-bottom: 1px solid var(--border);
10
+ font-family: var(--excel-font);
11
+ font-size: 12px;
12
+ }
13
+
14
+ .spreadsheet-sheet-tabs .spreadsheet-sheet-tab-item {
15
+ display: inline-flex;
16
+ align-items: stretch;
17
+ position: relative;
18
+ }
19
+
20
+ /* 拖拽中的页签压暗;插入位置画一道品牌绿细线(Excel 的落点指示)。 */
21
+ .spreadsheet-sheet-tab-item[data-reorder-active='true'] .spreadsheet-sheet-tab {
22
+ opacity: 0.72;
23
+ cursor: grabbing;
24
+ }
25
+
26
+ .spreadsheet-sheet-tab-item[data-reorder-drop='before']::before,
27
+ .spreadsheet-sheet-tab-item[data-reorder-drop='after']::after {
28
+ content: '';
29
+ position: absolute;
30
+ top: 3px;
31
+ bottom: 3px;
32
+ width: 2px;
33
+ background: var(--excel-green);
34
+ border-radius: 1px;
35
+ z-index: 1;
36
+ }
37
+
38
+ .spreadsheet-sheet-tab-item[data-reorder-drop='before']::before {
39
+ left: -1px;
40
+ }
41
+
42
+ .spreadsheet-sheet-tab-item[data-reorder-drop='after']::after {
43
+ right: -1px;
44
+ }
45
+
46
+ .spreadsheet-sheet-tabs .spreadsheet-sheet-tab {
47
+ display: inline-flex;
48
+ align-items: center;
49
+ height: 100%;
50
+ padding: 0 12px;
51
+ border: 1px solid transparent;
52
+ border-bottom: none;
53
+ background: transparent;
54
+ color: var(--text-default);
55
+ font: inherit;
56
+ cursor: pointer;
57
+ transition: background 100ms ease-out;
58
+ }
59
+
60
+ .spreadsheet-sheet-tabs .spreadsheet-sheet-tab:hover {
61
+ background: var(--hover);
62
+ }
63
+
64
+ .spreadsheet-sheet-tabs .spreadsheet-sheet-tab[data-active='true'],
65
+ .spreadsheet-sheet-tabs .spreadsheet-sheet-tab.is-active {
66
+ background: var(--bg-cell);
67
+ border-color: var(--border);
68
+ color: var(--excel-green-text);
69
+ font-weight: 600;
70
+ /* Excel for web:活动页签白底 + 底缘一道品牌绿 */
71
+ box-shadow: inset 0 -2px 0 0 var(--excel-green);
72
+ }
73
+
74
+ .spreadsheet-sheet-tabs .spreadsheet-sheet-tab-add {
75
+ display: inline-flex;
76
+ align-items: center;
77
+ justify-content: center;
78
+ width: 24px;
79
+ height: 100%;
80
+ margin-left: 4px;
81
+ border: 1px solid transparent;
82
+ border-radius: 2px;
83
+ background: transparent;
84
+ color: var(--text-muted);
85
+ font: inherit;
86
+ cursor: pointer;
87
+ }
88
+
89
+ .spreadsheet-sheet-tabs .spreadsheet-sheet-tab-add:hover {
90
+ background: var(--hover);
91
+ border-color: var(--border);
92
+ color: var(--text-default);
93
+ }
94
+
95
+
96
+
97
+
98
+