@paroicms/react-ui 0.5.8 → 0.5.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paroicms/react-ui",
3
- "version": "0.5.8",
3
+ "version": "0.5.10",
4
4
  "description": "React UI toolkit for ParoiCMS.",
5
5
  "keywords": [
6
6
  "paroicms",
@@ -25,7 +25,7 @@
25
25
  "dev": "tsc --watch --preserveWatchOutput"
26
26
  },
27
27
  "dependencies": {
28
- "@paroicms/public-anywhere-lib": "0.41.2",
28
+ "@paroicms/public-anywhere-lib": "0.41.3",
29
29
  "clsx": "~2.1.1",
30
30
  "lucide-react": "~0.562.0",
31
31
  "react-sortablejs": "~6.1.4",
@@ -36,7 +36,7 @@
36
36
  "react-dom": ">=18.0.0"
37
37
  },
38
38
  "devDependencies": {
39
- "@types/react": "~19.2.8",
39
+ "@types/react": "~19.2.9",
40
40
  "@types/react-dom": "~19.2.3",
41
41
  "@types/sortablejs": "^1.15.9",
42
42
  "react": "~19.2.3",
@@ -31,10 +31,6 @@
31
31
  }
32
32
  }
33
33
 
34
- ._mobile .PaNavbar-item {
35
- padding: 0 var(--space-2);
36
- }
37
-
38
34
  .PaBreadcrumb-link:is(a, button) {
39
35
  cursor: pointer;
40
36
  transition: color var(--transition);
@@ -70,7 +70,7 @@
70
70
  /* ========================================
71
71
  MenuItem in Sidebar Context
72
72
  ======================================== */
73
- .PaSidebar {
73
+ ._paSidebar {
74
74
  & .PaMenuItem {
75
75
  padding: 0 var(--space-2);
76
76
  }
@@ -93,12 +93,6 @@
93
93
  background: var(--color-hover-sidebar-dark);
94
94
  }
95
95
 
96
- /* & .PaMenuItem-popup .PaBtn.secondary.outlined:hover {
97
- color: var(--color-text-sidebar);
98
- background: var(--color-hover-sidebar-dark);
99
- border-color: var(--color-hover-sidebar-dark);
100
- } */
101
-
102
96
  /* Active state - self-contained with explicit hover */
103
97
  &.active {
104
98
  color: var(--color-text-inverse);
@@ -114,12 +108,6 @@
114
108
  color: var(--color-text-inverse);
115
109
  background: var(--color-primary-hover);
116
110
  }
117
-
118
- /* & .PaMenuItem-popup .PaBtn.secondary.outlined:hover {
119
- color: var(--color-text-inverse);
120
- background: var(--color-primary-hover);
121
- border-color: var(--color-primary-hover);
122
- } */
123
111
  }
124
112
 
125
113
  /* Light Sidebar */
@@ -140,12 +128,6 @@
140
128
  background: var(--color-hover-sidebar-light);
141
129
  }
142
130
 
143
- /* & .PaMenuItem-popup .PaBtn.secondary.outlined:hover {
144
- color: var(--color-text);
145
- background: var(--color-hover-sidebar-light);
146
- border-color: var(--color-hover-sidebar-light);
147
- } */
148
-
149
131
  /* Active state - self-contained with explicit hover */
150
132
  &.active {
151
133
  color: var(--color-text-inverse);
@@ -161,11 +143,5 @@
161
143
  color: var(--color-text-inverse);
162
144
  background: var(--color-primary-hover);
163
145
  }
164
-
165
- /* & .PaMenuItem-popup .PaBtn.secondary.outlined:hover {
166
- color: var(--color-text-inverse);
167
- background: var(--color-primary-hover);
168
- border-color: var(--color-primary-hover);
169
- } */
170
146
  }
171
147
  }
@@ -5,6 +5,7 @@
5
5
  display: flex;
6
6
  flex-direction: column;
7
7
  gap: var(--space-2);
8
+ align-items: flex-start;
8
9
  width: 100%;
9
10
 
10
11
  &:not(:last-child) {
@@ -11,6 +11,5 @@
11
11
  @import "./reset.css" layer(reset);
12
12
  @import "./tokens.css" layer(tokens);
13
13
  @import "./base.css" layer(base);
14
- @import "./common.css" layer(common);
15
14
  @import "./utilities.css";
16
15
  @import "./field.css";
@@ -70,9 +70,7 @@
70
70
  Warm sunny palette - like morning light
71
71
  ======================================== */
72
72
  --color-bg: #ffffff;
73
- /* --color-bg-app: #f7f5e8; */
74
- /* --color-bg-app: #fbffdf; */
75
- --color-bg-app: #fff;
73
+ --color-bg-app: #f4faf4;
76
74
  /* #ffffe0 */
77
75
  --color-bg-section: #f6f3eb;
78
76
  /* Lighter warm */
@@ -1,410 +0,0 @@
1
- /* ========================================
2
- ParoiCMS Design System - Common Styles
3
- Layout and infrastructure styles
4
- Used by Admin-UI and shared across components
5
- ======================================== */
6
-
7
- /* ========================================
8
- Icon Wrapper (utility)
9
- ======================================== */
10
- .PaIcon {
11
- display: inline-flex;
12
- flex-shrink: 0;
13
- width: 1em;
14
- height: 1em;
15
-
16
- & svg {
17
- width: 100%;
18
- height: 100%;
19
- fill: currentColor;
20
- }
21
- }
22
-
23
- /* ========================================
24
- Context Utility Class
25
- ======================================== */
26
-
27
- /* ========================================
28
- App Shell
29
- ======================================== */
30
- .PaApp {
31
- display: flex;
32
- height: 100vh;
33
- overflow: hidden;
34
- background: var(--color-bg-app);
35
- }
36
-
37
- .PaMainContent {
38
- display: flex;
39
- flex: 1;
40
- flex-direction: column;
41
- min-width: 0;
42
- overflow: hidden;
43
- }
44
-
45
- /* ========================================
46
- Sidebar
47
- ======================================== */
48
- .PaSidebar {
49
- display: flex;
50
- flex-shrink: 0;
51
- flex-direction: column;
52
- height: 100%;
53
- overflow: hidden;
54
- overflow-x: hidden;
55
- }
56
-
57
- .PaSidebar.dark {
58
- color: var(--color-text-sidebar);
59
- background: var(--color-bg-sidebar);
60
- }
61
-
62
- .PaSidebar.light {
63
- width: var(--sidebar-secondary-width);
64
- color: var(--color-text);
65
- background: var(--color-bg-elevated);
66
- border-right: 1px solid var(--color-border);
67
- }
68
-
69
- .PaSidebar-header {
70
- display: flex;
71
- flex-shrink: 0;
72
- gap: var(--space-3);
73
- align-items: center;
74
- padding: var(--space-4) var(--space-5);
75
- }
76
-
77
- .PaSidebar.dark .PaSidebar-header {
78
- border-bottom: 1px solid rgba(255, 255, 255, 0.1);
79
- }
80
-
81
- .PaSidebar.light .PaSidebar-header {
82
- background: var(--color-bg-subtle);
83
- border-bottom: 1px solid var(--color-border-light);
84
- }
85
-
86
- .PaSidebar-logo {
87
- display: flex;
88
- flex-shrink: 0;
89
- align-items: center;
90
- justify-content: center;
91
- width: 40px;
92
- height: 40px;
93
- overflow: hidden;
94
- font-size: var(--text-lg);
95
- font-weight: var(--font-bold);
96
- color: var(--color-text-inverse);
97
- background: var(--color-primary);
98
- border-radius: var(--radius);
99
- }
100
-
101
- .PaSidebar-logo img {
102
- width: 100%;
103
- height: 100%;
104
- object-fit: cover;
105
- }
106
-
107
- .PaSidebar-title {
108
- flex: 1;
109
- overflow: hidden;
110
- text-overflow: ellipsis;
111
- font-size: var(--text-base);
112
- font-weight: var(--font-semibold);
113
- white-space: nowrap;
114
- }
115
-
116
- .PaSidebar-viewSiteBtn {
117
- display: flex;
118
- flex-shrink: 0;
119
- align-items: center;
120
- justify-content: center;
121
- width: 28px;
122
- height: 28px;
123
- padding: 0;
124
- color: rgba(255, 255, 255, 0.7);
125
- cursor: pointer;
126
- background: transparent;
127
- border: none;
128
- border-radius: var(--radius-sm);
129
- transition:
130
- background-color 0.15s ease,
131
- color 0.15s ease;
132
-
133
- &:hover {
134
- color: rgba(255, 255, 255, 1);
135
- background: rgba(255, 255, 255, 0.1);
136
- }
137
- }
138
-
139
- .PaSidebar-nav {
140
- flex: 1;
141
- padding: var(--space-4) 0;
142
- overflow-y: auto;
143
- }
144
-
145
- ._mobile .PaSidebar-nav {
146
- padding: 0 0 var(--space-2);
147
- }
148
-
149
- .PaSidebar-footer {
150
- flex-shrink: 0;
151
- padding-top: var(--space-3);
152
- }
153
-
154
- .PaSidebar-userSection {
155
- padding: var(--space-3) var(--space-5) var(--space-2);
156
- }
157
-
158
- .PaSidebar.dark .PaSidebar-footer {
159
- border-top: 1px solid rgba(255, 255, 255, 0.1);
160
- }
161
-
162
- .PaSidebar.light .PaSidebar-footer {
163
- border-top: 1px solid var(--color-border-light);
164
- }
165
-
166
- .PaSidebar-separator {
167
- margin: var(--space-3) var(--space-5);
168
- }
169
-
170
- .PaSidebar.dark .PaSidebar-separator {
171
- border-top: 1px solid rgba(255, 255, 255, 0.1);
172
- }
173
-
174
- .PaSidebar.light .PaSidebar-separator {
175
- border-top: 1px solid var(--color-border-light);
176
- }
177
-
178
- .PaSidebar-version {
179
- margin-top: var(--space-3);
180
- font-size: var(--text-xs);
181
- font-style: italic;
182
- opacity: 0.6;
183
- }
184
-
185
- .PaSidebar.dark .PaSidebar-version {
186
- color: var(--color-text-sidebar-muted);
187
- }
188
-
189
- /* User menu in sidebar */
190
- .UserMenu-trigger {
191
- display: flex;
192
- gap: var(--space-3);
193
- align-items: center;
194
- width: 100%;
195
- padding: var(--space-2) 0;
196
- font-size: var(--text-sm);
197
- color: var(--color-text-sidebar);
198
- text-align: left;
199
- cursor: pointer;
200
- background: transparent;
201
- border: none;
202
- transition: all var(--transition);
203
- }
204
-
205
- .UserMenu-trigger:hover {
206
- color: var(--color-text-sidebar);
207
- background: var(--color-bg-sidebar-hover);
208
- border-radius: var(--radius);
209
- }
210
-
211
- .UserMenu-icon {
212
- flex-shrink: 0;
213
- opacity: 0.7;
214
- }
215
-
216
- .UserMenu-name {
217
- font-weight: var(--font-medium);
218
- }
219
-
220
- /* ========================================
221
- Side Menu Item
222
- ======================================== */
223
- .PaSideMenuItem {
224
- display: flex;
225
- gap: var(--space-3);
226
- align-items: center;
227
- padding: var(--space-3) var(--space-5);
228
- font-size: var(--text-sm);
229
- cursor: pointer;
230
- border-radius: 0;
231
- transition: all var(--transition);
232
- }
233
-
234
- /* Dark sidebar context */
235
- .PaSidebar.dark .PaSideMenuItem {
236
- color: var(--color-text-sidebar-muted);
237
- }
238
-
239
- .PaSidebar.dark .PaSideMenuItem:hover {
240
- color: var(--color-text-sidebar);
241
- background: var(--color-hover-sidebar-dark);
242
- }
243
-
244
- .PaSidebar.dark .PaSideMenuItem.active {
245
- color: var(--color-text-inverse);
246
- background: var(--color-primary);
247
- }
248
-
249
- /* Light sidebar context */
250
- .PaSidebar.light .PaSideMenuItem {
251
- color: var(--color-text-muted);
252
- }
253
-
254
- .PaSidebar.light .PaSideMenuItem:hover {
255
- color: var(--color-text);
256
- background: var(--color-hover-sidebar-light);
257
- }
258
-
259
- .PaSidebar.light .PaSideMenuItem.active {
260
- color: var(--color-primary-dark);
261
- background: var(--color-primary-light);
262
- }
263
-
264
- .PaSideMenuItem-icon {
265
- flex-shrink: 0;
266
- width: 18px;
267
- height: 18px;
268
- opacity: 0.7;
269
- }
270
-
271
- .PaSideMenuItem.active .PaSideMenuItem-icon {
272
- opacity: 1;
273
- }
274
-
275
- .PaSideMenuItem-label {
276
- flex: 1;
277
- overflow: hidden;
278
- text-overflow: ellipsis;
279
- white-space: nowrap;
280
- }
281
-
282
- .PaSideMenuItem-badge {
283
- padding: var(--space-1) var(--space-2);
284
- font-size: var(--text-xs);
285
- font-weight: var(--font-medium);
286
- border-radius: var(--radius-full);
287
- }
288
-
289
- .PaSidebar.dark .PaSideMenuItem-badge {
290
- background: rgba(255, 255, 255, 0.15);
291
- }
292
-
293
- .PaSidebar.light .PaSideMenuItem-badge {
294
- background: var(--color-bg-subtle);
295
- border: 1px solid var(--color-border);
296
- }
297
-
298
- .PaSideMenuItem.child {
299
- padding-left: var(--space-8);
300
- }
301
-
302
- .PaSideMenuItem.child .PaSideMenuItem-icon {
303
- width: 16px;
304
- height: 16px;
305
- }
306
-
307
- /* ========================================
308
- Navbar
309
- ======================================== */
310
- .PaNavbar {
311
- z-index: var(--z-sticky);
312
- display: flex;
313
- flex-shrink: 0;
314
- justify-content: space-between;
315
- height: var(--navbar-height);
316
- background: var(--color-bg-elevated);
317
- border-bottom: 1px solid var(--color-border);
318
- }
319
-
320
- .PaNavbar-group {
321
- display: flex;
322
- align-items: center;
323
- /* gap: var(--space-4); */
324
- }
325
-
326
- .PaNavbar-item {
327
- display: flex;
328
- align-items: center;
329
- height: 100%;
330
- padding: 0 var(--space-6);
331
- }
332
-
333
- .PaNavbar-item.withBorder,
334
- .PaNavbar-group .PaNavbar-item:first-child {
335
- /* padding-right: var(--space-4);
336
- margin-right: -8px; */
337
- border-right: 1px solid var(--color-border-light);
338
- }
339
-
340
- .PaNavbar-item:last-child {
341
- border-right: none;
342
- }
343
-
344
- /* ========================================
345
- Control Bar
346
- ======================================== */
347
- .PaControlBar {
348
- display: flex;
349
- gap: var(--space-3);
350
- align-items: center;
351
- justify-content: space-between;
352
- height: var(--control-bar-height);
353
- padding: 0 var(--space-5);
354
- background: var(--color-bg-elevated);
355
- border-bottom: 1px solid var(--color-border-light);
356
- }
357
-
358
- .PaControlBar-left {
359
- display: flex;
360
- flex: 1;
361
- gap: var(--space-3);
362
- align-items: center;
363
- min-width: 0;
364
- }
365
-
366
- .PaControlBar-right {
367
- display: flex;
368
- flex-shrink: 0;
369
- gap: var(--space-2);
370
- align-items: center;
371
- }
372
-
373
- .PaControlBar-title {
374
- overflow: hidden;
375
- text-overflow: ellipsis;
376
- font-size: var(--text-lg);
377
- font-weight: var(--font-semibold);
378
- white-space: nowrap;
379
- }
380
-
381
- .PaControlBar-subtitle {
382
- font-size: var(--text-sm);
383
- color: var(--color-text-muted);
384
- }
385
-
386
- /* ========================================
387
- Field Panel
388
- ======================================== */
389
- .PaFieldPanel {
390
- flex: 1;
391
- padding: var(--space-6);
392
- overflow-y: auto;
393
- }
394
-
395
- .PaFieldPanel-section {
396
- margin-bottom: var(--space-6);
397
- }
398
-
399
- .PaFieldPanel-section:last-child {
400
- margin-bottom: 0;
401
- }
402
-
403
- .PaFieldPanel-sectionTitle {
404
- margin-bottom: var(--space-4);
405
- font-size: var(--text-xs);
406
- font-weight: var(--font-semibold);
407
- color: var(--color-text-muted);
408
- text-transform: uppercase;
409
- letter-spacing: 0.05em;
410
- }