@qwickapps/cms 0.4.1 → 0.5.1

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,338 +0,0 @@
1
- /**
2
- * Dashboard Styles for QwickPress Admin
3
- *
4
- * Uses QwickApps theme CSS variables for professional, cohesive styling
5
- *
6
- * Copyright (c) 2025 QwickApps.com. All rights reserved.
7
- */
8
-
9
- .dashboard-container {
10
- padding: 2rem;
11
- max-width: 1400px;
12
- margin: 0 auto;
13
- animation: fadeIn 0.5s ease-in-out;
14
- }
15
-
16
- @keyframes fadeIn {
17
- from {
18
- opacity: 0;
19
- transform: translateY(20px);
20
- }
21
- to {
22
- opacity: 1;
23
- transform: translateY(0);
24
- }
25
- }
26
-
27
- .dashboard-header {
28
- margin-bottom: 3rem;
29
- }
30
-
31
- .dashboard-header-content {
32
- display: flex;
33
- justify-content: space-between;
34
- align-items: center;
35
- gap: 2rem;
36
- flex-wrap: wrap;
37
- }
38
-
39
- .dashboard-title {
40
- flex: 1;
41
- }
42
-
43
- .dashboard-header h1 {
44
- font-size: 2.5rem;
45
- font-weight: 700;
46
- margin-bottom: 0.5rem;
47
- color: var(--theme-text-primary);
48
- }
49
-
50
- .dashboard-title .theme-note {
51
- font-size: 0.9rem;
52
- color: var(--theme-elevation-600);
53
- margin-top: 0.5rem;
54
- font-style: italic;
55
- }
56
-
57
- .dashboard-header p {
58
- font-size: 1.1rem;
59
- color: var(--theme-text-secondary);
60
- margin: 0;
61
- }
62
-
63
- .dashboard-controls {
64
- display: flex;
65
- gap: 1rem;
66
- align-items: center;
67
- }
68
-
69
- .dashboard-loading {
70
- display: flex;
71
- flex-direction: column;
72
- align-items: center;
73
- justify-content: center;
74
- padding: 4rem 0;
75
- gap: 1rem;
76
- }
77
-
78
- .loading-spinner {
79
- width: 40px;
80
- height: 40px;
81
- border: 4px solid var(--theme-border);
82
- border-top-color: var(--theme-primary);
83
- border-radius: 50%;
84
- animation: spin 1s linear infinite;
85
- }
86
-
87
- @keyframes spin {
88
- to {
89
- transform: rotate(360deg);
90
- }
91
- }
92
-
93
- .dashboard-grid {
94
- display: grid;
95
- grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
96
- gap: 1.5rem;
97
- margin-bottom: 3rem;
98
- }
99
-
100
- @media (max-width: 768px) {
101
- .dashboard-grid {
102
- grid-template-columns: 1fr;
103
- }
104
-
105
- .dashboard-header-content {
106
- flex-direction: column;
107
- align-items: flex-start;
108
- }
109
-
110
- .dashboard-controls {
111
- width: 100%;
112
- justify-content: flex-start;
113
- }
114
- }
115
-
116
- .dashboard-card {
117
- position: relative;
118
- padding: 2rem;
119
- border-radius: 16px;
120
- text-decoration: none;
121
- color: white;
122
- overflow: hidden;
123
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
124
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
125
- display: flex;
126
- flex-direction: column;
127
- gap: 1rem;
128
- animation: slideUp 0.5s ease-out both;
129
- border: 2px solid transparent;
130
- }
131
-
132
- @keyframes slideUp {
133
- from {
134
- opacity: 0;
135
- transform: translateY(30px);
136
- }
137
- to {
138
- opacity: 1;
139
- transform: translateY(0);
140
- }
141
- }
142
-
143
- /* Card color variants using theme CSS variables */
144
- .dashboard-card.card-primary {
145
- background: var(--theme-primary);
146
- border-color: var(--theme-primary-dark);
147
- }
148
-
149
- .dashboard-card.card-secondary {
150
- background: var(--theme-secondary);
151
- border-color: var(--theme-secondary-dark);
152
- }
153
-
154
- .dashboard-card.card-accent {
155
- background: var(--theme-accent);
156
- border-color: var(--theme-accent-dark);
157
- }
158
-
159
- .dashboard-card.card-success {
160
- background: var(--theme-success);
161
- border-color: var(--theme-success-dark);
162
- }
163
-
164
- .dashboard-card.card-warning {
165
- background: var(--theme-warning);
166
- border-color: var(--theme-warning-dark);
167
- }
168
-
169
- .dashboard-card.card-info {
170
- background: var(--theme-info);
171
- border-color: var(--theme-info-dark);
172
- }
173
-
174
- .dashboard-card.card-primary-variant {
175
- background: var(--theme-primary-light);
176
- border-color: var(--theme-primary);
177
- color: var(--theme-text-primary);
178
- }
179
-
180
- .dashboard-card.card-secondary-variant {
181
- background: var(--theme-secondary-light);
182
- border-color: var(--theme-secondary);
183
- color: var(--theme-text-primary);
184
- }
185
-
186
- .dashboard-card:hover {
187
- transform: translateY(-8px);
188
- box-shadow: 0 12px 24px rgba(0, 0, 0, 0.2);
189
- border-color: currentColor;
190
- }
191
-
192
- .dashboard-card::before {
193
- content: '';
194
- position: absolute;
195
- top: 0;
196
- left: 0;
197
- right: 0;
198
- bottom: 0;
199
- background: linear-gradient(
200
- 135deg,
201
- rgba(255, 255, 255, 0.1) 0%,
202
- rgba(255, 255, 255, 0) 100%
203
- );
204
- opacity: 0;
205
- transition: opacity 0.3s ease;
206
- }
207
-
208
- .dashboard-card:hover::before {
209
- opacity: 1;
210
- }
211
-
212
- .card-icon {
213
- font-size: 3rem;
214
- line-height: 1;
215
- filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.2));
216
- }
217
-
218
- .card-content {
219
- flex: 1;
220
- display: flex;
221
- flex-direction: column;
222
- gap: 0.5rem;
223
- }
224
-
225
- .card-title {
226
- font-size: 1.5rem;
227
- font-weight: 700;
228
- margin: 0;
229
- text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
230
- }
231
-
232
- .card-description {
233
- font-size: 0.95rem;
234
- line-height: 1.5;
235
- opacity: 0.95;
236
- margin: 0;
237
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
238
- }
239
-
240
- .card-stats {
241
- display: flex;
242
- gap: 1.5rem;
243
- margin-top: 0.5rem;
244
- padding-top: 1rem;
245
- border-top: 1px solid rgba(255, 255, 255, 0.3);
246
- }
247
-
248
- .stat-item {
249
- display: flex;
250
- flex-direction: column;
251
- gap: 0.25rem;
252
- }
253
-
254
- .stat-label {
255
- font-size: 0.75rem;
256
- opacity: 0.9;
257
- text-transform: uppercase;
258
- letter-spacing: 0.5px;
259
- font-weight: 600;
260
- }
261
-
262
- .stat-value {
263
- font-size: 1.5rem;
264
- font-weight: 700;
265
- text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
266
- }
267
-
268
- .card-count {
269
- font-size: 3rem;
270
- font-weight: 700;
271
- text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
272
- line-height: 1;
273
- margin-top: auto;
274
- }
275
-
276
- .card-arrow {
277
- position: absolute;
278
- top: 1.5rem;
279
- right: 1.5rem;
280
- font-size: 1.5rem;
281
- opacity: 0.7;
282
- transition: all 0.3s ease;
283
- }
284
-
285
- .dashboard-card:hover .card-arrow {
286
- opacity: 1;
287
- transform: translateX(4px);
288
- }
289
-
290
- .dashboard-footer {
291
- background: var(--theme-surface);
292
- border-radius: 16px;
293
- padding: 2rem;
294
- margin-top: 2rem;
295
- border: 1px solid var(--theme-border);
296
- }
297
-
298
- .dashboard-footer h3 {
299
- font-size: 1.25rem;
300
- font-weight: 700;
301
- margin-bottom: 1rem;
302
- color: var(--theme-text-primary);
303
- }
304
-
305
- .links-grid {
306
- display: grid;
307
- grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
308
- gap: 1rem;
309
- }
310
-
311
- .quick-link {
312
- display: flex;
313
- align-items: center;
314
- gap: 0.5rem;
315
- padding: 1rem 1.25rem;
316
- background: var(--theme-surface-variant);
317
- border: 2px solid var(--theme-border);
318
- border-radius: 8px;
319
- text-decoration: none;
320
- color: var(--theme-text-primary);
321
- font-weight: 600;
322
- transition: all 0.2s ease;
323
- }
324
-
325
- .quick-link:hover {
326
- border-color: var(--theme-primary);
327
- background: var(--theme-primary);
328
- color: white;
329
- transform: translateY(-2px);
330
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
331
- }
332
-
333
- @media (prefers-color-scheme: dark) {
334
- .dashboard-card.card-primary-variant,
335
- .dashboard-card.card-secondary-variant {
336
- color: white;
337
- }
338
- }
@@ -1,352 +0,0 @@
1
- /**
2
- * QwickPress Admin Theme - QwickApps Branding
3
- *
4
- * Customizes Payload CMS colors to match QwickApps brand (Blue #007bff)
5
- * Automatically supports both light and dark modes via Payload's color system
6
- *
7
- * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
- */
9
-
10
- :root {
11
- /* ===================================
12
- * QwickApps Brand Blue (#007bff = rgb(0, 123, 255))
13
- * Override the success color (primary action color in Payload)
14
- * =================================== */
15
-
16
- /* Base blue color scale - QwickApps Blue */
17
- --color-success-50: rgb(230, 242, 255);
18
- --color-success-100: rgb(204, 229, 255);
19
- --color-success-150: rgb(179, 216, 255);
20
- --color-success-200: rgb(153, 204, 255);
21
- --color-success-250: rgb(128, 191, 255);
22
- --color-success-300: rgb(102, 178, 255);
23
- --color-success-350: rgb(77, 165, 255);
24
- --color-success-400: rgb(51, 153, 255);
25
- --color-success-450: rgb(26, 140, 255);
26
- --color-success-500: rgb(0, 123, 255); /* #007bff - QwickApps Primary */
27
- --color-success-550: rgb(0, 111, 230);
28
- --color-success-600: rgb(0, 98, 204);
29
- --color-success-650: rgb(0, 86, 179);
30
- --color-success-700: rgb(0, 74, 153);
31
- --color-success-750: rgb(0, 62, 128);
32
- --color-success-800: rgb(0, 49, 102);
33
- --color-success-850: rgb(0, 37, 77);
34
- --color-success-900: rgb(0, 25, 51);
35
- --color-success-950: rgb(0, 12, 26);
36
-
37
- /* Also make the blue color scale match */
38
- --color-blue-50: var(--color-success-50);
39
- --color-blue-100: var(--color-success-100);
40
- --color-blue-150: var(--color-success-150);
41
- --color-blue-200: var(--color-success-200);
42
- --color-blue-250: var(--color-success-250);
43
- --color-blue-300: var(--color-success-300);
44
- --color-blue-350: var(--color-success-350);
45
- --color-blue-400: var(--color-success-400);
46
- --color-blue-450: var(--color-success-450);
47
- --color-blue-500: var(--color-success-500);
48
- --color-blue-550: var(--color-success-550);
49
- --color-blue-600: var(--color-success-600);
50
- --color-blue-650: var(--color-success-650);
51
- --color-blue-700: var(--color-success-700);
52
- --color-blue-750: var(--color-success-750);
53
- --color-blue-800: var(--color-success-800);
54
- --color-blue-850: var(--color-success-850);
55
- --color-blue-900: var(--color-success-900);
56
- --color-blue-950: var(--color-success-950);
57
- }
58
-
59
- /* Dark mode is automatically handled by Payload's color mapping system */
60
- /* The html[data-theme='dark'] rules in Payload's colors.scss will invert these colors */
61
-
62
- /* ===================================
63
- * Material Design Enhancements
64
- * =================================== */
65
-
66
- /* List view improvements */
67
- .list-controls__wrap {
68
- padding: 0 1.5rem 1rem;
69
- }
70
-
71
- /* Hide the broken search icon */
72
- .list-controls__search .search-icon,
73
- .list-controls__search > div:first-child {
74
- display: none !important;
75
- }
76
-
77
- /* Add proper search icon with CSS */
78
- .list-controls__search {
79
- position: relative;
80
- }
81
-
82
- .list-controls__search input {
83
- padding-left: 2.25rem !important;
84
- font-size: 0.9375rem !important;
85
- }
86
-
87
- .list-controls__search::before {
88
- content: '';
89
- position: absolute;
90
- left: 0.875rem;
91
- top: 50%;
92
- transform: translateY(-50%);
93
- width: 14px;
94
- height: 14px;
95
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%23666'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'/%3E%3C/svg%3E");
96
- background-size: contain;
97
- background-repeat: no-repeat;
98
- opacity: 0.6;
99
- pointer-events: none;
100
- z-index: 2;
101
- }
102
-
103
- /* Dark mode search icon */
104
- html[data-theme='dark'] .list-controls__search::before {
105
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%23ccc'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'/%3E%3C/svg%3E");
106
- }
107
-
108
- /* Collection list padding */
109
- .collection-list {
110
- padding: 0 !important;
111
- }
112
-
113
- .collection-list > .list-controls {
114
- padding: 0;
115
- margin-bottom: 0.5rem;
116
- }
117
-
118
- /* Table container spacing */
119
- .table-wrapper {
120
- margin: 0 1.5rem 1.5rem;
121
- }
122
-
123
- /* Reduce excessive vertical spacing */
124
- .template-default {
125
- padding-top: 0 !important;
126
- }
127
-
128
- /* Improved button styling */
129
- .btn,
130
- button[type="button"],
131
- button[type="submit"],
132
- .form-submit button {
133
- border-radius: 5px !important;
134
- font-weight: 500 !important;
135
- letter-spacing: 0.01em !important;
136
- transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1) !important;
137
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08) !important;
138
- font-size: 0.9375rem !important;
139
- }
140
-
141
- .btn:hover,
142
- button[type="button"]:hover,
143
- button[type="submit"]:hover {
144
- transform: translateY(-1px) !important;
145
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
146
- }
147
-
148
- .btn:active,
149
- button[type="button"]:active,
150
- button[type="submit"]:active {
151
- transform: translateY(0) !important;
152
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) !important;
153
- }
154
-
155
- /* Enhanced card styling */
156
- .card,
157
- .collection-list,
158
- .render-fields,
159
- .field-type-group {
160
- border-radius: 8px !important;
161
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05) !important;
162
- transition: box-shadow 0.2s ease !important;
163
- }
164
-
165
- .card:hover,
166
- .collection-list:hover {
167
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08) !important;
168
- }
169
-
170
- /* Table enhancements */
171
- .table-wrapper,
172
- .payload-table {
173
- border-radius: 8px !important;
174
- overflow: hidden !important;
175
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05) !important;
176
- }
177
-
178
- .table thead {
179
- background: var(--theme-elevation-100) !important;
180
- }
181
-
182
- .table tbody tr {
183
- transition: background-color 0.15s ease !important;
184
- }
185
-
186
- .table tbody tr:hover {
187
- background: var(--theme-elevation-50) !important;
188
- }
189
-
190
- /* Input field improvements */
191
- input[type="text"],
192
- input[type="email"],
193
- input[type="password"],
194
- input[type="number"],
195
- input[type="url"],
196
- textarea,
197
- select {
198
- border-radius: 5px !important;
199
- border: 1px solid var(--theme-elevation-300) !important;
200
- transition: all 0.15s ease !important;
201
- font-size: 0.9375rem !important;
202
- }
203
-
204
- input:focus,
205
- textarea:focus,
206
- select:focus {
207
- border-color: var(--color-success-500) !important;
208
- box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.1) !important;
209
- outline: none !important;
210
- }
211
-
212
- /* Form groups spacing */
213
- .field-type-text,
214
- .field-type-textarea,
215
- .field-type-select,
216
- .field-type-number,
217
- .field-type-email {
218
- margin-bottom: 1.25rem !important;
219
- }
220
-
221
- /* Enhanced navigation */
222
- .nav-group {
223
- margin-bottom: 0.5rem !important;
224
- }
225
-
226
- .nav-link {
227
- border-radius: 6px !important;
228
- margin-bottom: 2px !important;
229
- transition: all 0.15s ease !important;
230
- }
231
-
232
- .nav-link:hover {
233
- background: var(--theme-elevation-100) !important;
234
- transform: translateX(4px) !important;
235
- }
236
-
237
- .nav-link.active {
238
- background: linear-gradient(90deg, var(--color-success-500) 0%, var(--color-success-600) 100%) !important;
239
- box-shadow: 0 2px 8px rgba(0, 123, 255, 0.25) !important;
240
- }
241
-
242
- /* Modal and drawer improvements */
243
- .modal,
244
- .drawer {
245
- border-radius: 12px !important;
246
- box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3) !important;
247
- }
248
-
249
- .modal-header,
250
- .drawer-header {
251
- border-bottom: 1px solid var(--theme-elevation-200) !important;
252
- padding: 1.5rem !important;
253
- }
254
-
255
- /* Badge and pill styling */
256
- .pill,
257
- .badge {
258
- border-radius: 12px !important;
259
- padding: 0.25rem 0.75rem !important;
260
- font-size: 0.75rem !important;
261
- font-weight: 600 !important;
262
- letter-spacing: 0.025em !important;
263
- }
264
-
265
- /* Improved spacing and typography */
266
- h1, h2, h3, h4, h5, h6 {
267
- font-weight: 600 !important;
268
- letter-spacing: -0.015em !important;
269
- margin-bottom: 0.75rem !important;
270
- }
271
-
272
- /* Collection title */
273
- .collection-list h1,
274
- .list-view h1 {
275
- font-size: 1.75rem !important;
276
- margin-bottom: 0.5rem !important;
277
- }
278
-
279
- /* Collection description */
280
- .view-description {
281
- font-size: 0.9375rem !important;
282
- margin-bottom: 1.25rem !important;
283
- opacity: 0.8;
284
- }
285
-
286
- /* List controls enhancement */
287
- .list-controls {
288
- background: var(--theme-elevation-50) !important;
289
- border-radius: 8px !important;
290
- padding: 1rem !important;
291
- margin-bottom: 1.5rem !important;
292
- border: 1px solid var(--theme-elevation-200) !important;
293
- }
294
-
295
- /* Pagination improvements */
296
- .pagination {
297
- gap: 0.5rem !important;
298
- }
299
-
300
- .pagination button {
301
- border-radius: 6px !important;
302
- min-width: 2.5rem !important;
303
- height: 2.5rem !important;
304
- }
305
-
306
- /* Document controls */
307
- .document-controls {
308
- gap: 0.75rem !important;
309
- padding: 1rem !important;
310
- background: var(--theme-elevation-50) !important;
311
- border-radius: 8px !important;
312
- margin-bottom: 1.5rem !important;
313
- }
314
-
315
- /* Status indicators */
316
- .status-published {
317
- color: #10b981 !important;
318
- }
319
-
320
- .status-draft {
321
- color: #f59e0b !important;
322
- }
323
-
324
- /* Loading states */
325
- .loading-overlay {
326
- backdrop-filter: blur(4px) !important;
327
- }
328
-
329
- /* Dark mode specific enhancements */
330
- html[data-theme='dark'] .table thead {
331
- background: var(--theme-elevation-200) !important;
332
- }
333
-
334
- html[data-theme='dark'] .list-controls {
335
- background: var(--theme-elevation-100) !important;
336
- border-color: var(--theme-elevation-400) !important;
337
- }
338
-
339
- html[data-theme='dark'] .document-controls {
340
- background: var(--theme-elevation-100) !important;
341
- }
342
-
343
- /* Smooth scroll behavior */
344
- html {
345
- scroll-behavior: smooth !important;
346
- }
347
-
348
- /* Focus visible for accessibility */
349
- *:focus-visible {
350
- outline: 2px solid var(--color-success-500) !important;
351
- outline-offset: 2px !important;
352
- }