|
| 1 | +/* === Full Page Root Layout === */ |
| 2 | +html, body { |
| 3 | + height: 100%; |
| 4 | + margin: 0; |
| 5 | + padding: 0; |
| 6 | +} |
| 7 | + |
1 | 8 | .bpmn-viewer { |
2 | 9 | position: relative; |
| 10 | + display: flex; |
| 11 | + flex-direction: column; |
3 | 12 | border: 1px solid #e5e7eb; |
4 | 13 | border-radius: 0.375rem; |
5 | | - overflow: hidden; |
6 | | - background-color: #ffffff; |
| 14 | + overflow: visible; |
| 15 | + margin: 0; |
| 16 | + height: 100vh; /* now fills entire page */ |
| 17 | + transition: box-shadow 0.2s ease; |
| 18 | + height: 100vh !important; |
| 19 | + max-height: 100vh; |
7 | 20 | } |
8 | 21 |
|
9 | | -.bpmn-container { |
10 | | - height: 100%; |
11 | | - min-height: 400px; |
12 | | - position: relative; |
| 22 | +.bpmn-viewer:hover { |
| 23 | + box-shadow: 0 0 0 2px #007cba22; |
13 | 24 | } |
14 | 25 |
|
| 26 | +/* === Toolbar === */ |
15 | 27 | .bpmn-toolbar { |
16 | 28 | display: flex; |
17 | 29 | justify-content: space-between; |
|
20 | 32 | background-color: #f9fafb; |
21 | 33 | border-bottom: 1px solid #e5e7eb; |
22 | 34 | min-height: 3rem; |
| 35 | + flex-shrink: 0; /* prevent shrinking */ |
23 | 36 | } |
24 | 37 |
|
25 | | -.bpmn-info { |
| 38 | +/* === Diagram Container (Full Remaining Space) === */ |
| 39 | +.bpmn-container { |
| 40 | + flex: 1 1 auto; /* now fills leftover page space */ |
| 41 | + min-height: 0; /* required so flexbox can shrink */ |
| 42 | + position: relative; |
| 43 | + background-color: #f9fafb; |
| 44 | + |
| 45 | + background-size: 20px 20px; |
| 46 | + background-position: center center; |
| 47 | + overflow: hidden; |
| 48 | +} |
| 49 | + |
| 50 | +/* === Properties Panel === */ |
| 51 | +.bpmn-properties-panel { |
| 52 | + position: absolute; |
| 53 | + top: 0; |
| 54 | + right: 0; |
| 55 | + bottom: 0; |
| 56 | + width: 300px; |
| 57 | + border-left: 1px solid #e5e7eb; |
| 58 | + background: #fff; |
| 59 | + overflow-y: auto; |
| 60 | + z-index: 1500; |
26 | 61 | display: flex; |
27 | | - align-items: center; |
28 | | - gap: 0.5rem; |
29 | 62 | } |
30 | 63 |
|
| 64 | +/* === Zoom Toolbar === */ |
| 65 | +.bpmn-zoom-toolbar { |
| 66 | + position: absolute; |
| 67 | + top: 0.75rem; |
| 68 | + right: 0.75rem; |
| 69 | + display: flex; |
| 70 | + flex-direction: column; |
| 71 | + gap: 0.25rem; |
| 72 | + |
| 73 | + background: rgba(255, 255, 255, 0.85); |
| 74 | + backdrop-filter: blur(4px); |
| 75 | + |
| 76 | + border: 1px solid #ddd; |
| 77 | + border-radius: 0.5rem; |
| 78 | + padding: 0.3rem 0.4rem; |
| 79 | + |
| 80 | + transition: opacity 0.2s ease-in-out; |
| 81 | + opacity: 0; |
| 82 | +} |
| 83 | + |
| 84 | +.bpmn-container:hover .bpmn-zoom-toolbar { |
| 85 | + opacity: 1; |
| 86 | +} |
| 87 | + |
| 88 | +.bpmn-zoom-toolbar button { |
| 89 | + font-size: 1rem; |
| 90 | + padding: 0.25rem 0.3rem; |
| 91 | + cursor: pointer; |
| 92 | + border: none; |
| 93 | + background: none; |
| 94 | + border-radius: 0.3rem; |
| 95 | +} |
| 96 | + |
| 97 | +.bpmn-zoom-toolbar button:hover { |
| 98 | + background: rgba(0, 0, 0, 0.05); |
| 99 | +} |
| 100 | + |
| 101 | +.bpmn-zoom-level { |
| 102 | + font-size: 10px; |
| 103 | + color: #bdb9b9; |
| 104 | + text-align: center; |
| 105 | + padding: 2px 0; |
| 106 | +} |
| 107 | + |
| 108 | +.bpmn-zoom-tooltip { |
| 109 | + position: absolute; |
| 110 | + right: 110%; |
| 111 | + top: 50%; |
| 112 | + transform: translateY(-50%); |
| 113 | + background: #5f5e5e; |
| 114 | + color: #fff; |
| 115 | + padding: 3px 6px; |
| 116 | + font-size: 10px; |
| 117 | + border-radius: 4px; |
| 118 | + white-space: nowrap; |
| 119 | + pointer-events: none; |
| 120 | + opacity: 0; |
| 121 | + transition: opacity .15s ease; |
| 122 | +} |
| 123 | + |
| 124 | +/* === Save Button === */ |
31 | 125 | .bpmn-save { |
32 | | - background-color: #3b82f6; |
| 126 | + background-color: #007cba; |
33 | 127 | color: white; |
34 | 128 | padding: 0.5rem 1rem; |
35 | 129 | border-radius: 0.375rem; |
36 | 130 | border: none; |
37 | 131 | cursor: pointer; |
38 | 132 | font-weight: 500; |
39 | | - transition: background-color 0.2s; |
| 133 | + transition: background-color 0.2s, box-shadow 0.2s; |
40 | 134 | font-size: 0.875rem; |
41 | 135 | } |
42 | 136 |
|
43 | 137 | .bpmn-save:hover:not(:disabled) { |
44 | | - background-color: #2563eb; |
| 138 | + background-color: #005a87; |
| 139 | +} |
| 140 | + |
| 141 | +.bpmn-save:focus { |
| 142 | + outline: 2px solid #2563eb; |
| 143 | + outline-offset: 2px; |
45 | 144 | } |
46 | 145 |
|
47 | 146 | .bpmn-save:disabled { |
48 | 147 | background-color: #9ca3af; |
49 | 148 | cursor: not-allowed; |
50 | 149 | } |
51 | 150 |
|
52 | | -.bpmn-loading { |
| 151 | +/* === Loading & Error Overlay === */ |
| 152 | +.bpmn-loading, |
| 153 | +.bpmn-error { |
| 154 | + position: absolute; |
| 155 | + top: 0; |
| 156 | + left: 0; |
| 157 | + right: 0; |
| 158 | + bottom: 0; |
53 | 159 | display: flex; |
54 | 160 | justify-content: center; |
55 | 161 | align-items: center; |
56 | | - height: 200px; |
57 | | - color: #6b7280; |
58 | 162 | font-size: 0.875rem; |
| 163 | + z-index: 2000; |
| 164 | +} |
| 165 | + |
| 166 | +.bpmn-loading { |
| 167 | + color: #6b7280; |
| 168 | + background-color: #ffffffcc; |
59 | 169 | } |
60 | 170 |
|
61 | 171 | .bpmn-error { |
62 | | - display: flex; |
63 | | - justify-content: center; |
64 | | - align-items: center; |
65 | | - height: 200px; |
66 | 172 | color: #dc2626; |
67 | 173 | background-color: #fef2f2; |
68 | 174 | border: 1px solid #fecaca; |
69 | 175 | border-radius: 0.375rem; |
70 | 176 | margin: 1rem; |
71 | 177 | padding: 1rem; |
72 | 178 | text-align: center; |
73 | | - font-size: 0.875rem; |
74 | 179 | } |
75 | 180 |
|
76 | | -/* bpmn-js specific styling */ |
77 | | -.bpmn-js .djs-palette { |
78 | | - left: 20px; |
79 | | - top: 20px; |
| 181 | +/* === BPMN-js Palette, Context Pad === */ |
| 182 | +.bpmn-viewer .djs-palette { |
| 183 | + top: 20px !important; |
| 184 | + left: 20px !important; |
| 185 | + z-index: 2000; |
80 | 186 | } |
81 | 187 |
|
82 | | -.bpmn-js .djs-context-pad { |
83 | | - z-index: 1000; |
84 | | -} |
| 188 | +.bpmn-viewer .djs-context-pad { z-index: 1000; } |
| 189 | +.bpmn-viewer .djs-popup { z-index: 1001; } |
85 | 190 |
|
86 | | -.bpmn-js .djs-popup { |
87 | | - z-index: 1001; |
88 | | -} |
89 | | - |
90 | | -.bpmn-js .djs-element .djs-direct-editing-parent { |
91 | | - z-index: 1002; |
92 | | -} |
93 | | - |
94 | | -/* Responsive design */ |
95 | | -@media (max-width: 768px) { |
96 | | - .bpmn-toolbar { |
97 | | - flex-direction: column; |
98 | | - gap: 0.5rem; |
99 | | - padding: 0.5rem; |
100 | | - } |
101 | | - |
102 | | - .bpmn-info { |
103 | | - justify-content: center; |
104 | | - } |
105 | | - |
106 | | - .bpmn-save { |
107 | | - width: 100%; |
108 | | - } |
109 | | -} |
110 | | - |
111 | | -/* Dark mode support */ |
| 191 | +/* === Dark Mode === */ |
112 | 192 | @media (prefers-color-scheme: dark) { |
113 | 193 | .bpmn-viewer { |
114 | 194 | background-color: #1f2937; |
115 | 195 | border-color: #374151; |
116 | 196 | } |
117 | | - |
118 | 197 | .bpmn-toolbar { |
119 | 198 | background-color: #111827; |
120 | 199 | border-color: #374151; |
121 | 200 | } |
122 | | - |
123 | | - .bpmn-loading { |
124 | | - color: #9ca3af; |
125 | | - } |
126 | | - |
127 | | - .bpmn-error { |
128 | | - background-color: #7f1d1d; |
129 | | - border-color: #991b1b; |
130 | | - color: #fca5a5; |
| 201 | + .bpmn-properties-panel { |
| 202 | + background-color: #1f2937; |
| 203 | + border-color: #4b5563; |
| 204 | + color: #d1d5db; |
131 | 205 | } |
132 | 206 | } |
0 commit comments