@robosophy/prime-theme 3.0.0 → 3.0.2
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/dist/prime.css +125 -70
- package/package.json +1 -1
package/dist/prime.css
CHANGED
|
@@ -337,17 +337,19 @@
|
|
|
337
337
|
justify-content: center;
|
|
338
338
|
vertical-align: middle;
|
|
339
339
|
}
|
|
340
|
-
/*
|
|
340
|
+
/* Vue3: .p-input-icon-left/right > i | Vue4: .p-iconfield > .p-inputicon | React: .p-icon-field-left/right > .p-input-icon */
|
|
341
341
|
.p-input-icon-left,
|
|
342
342
|
.p-input-icon-right,
|
|
343
343
|
.p-icon-field-left,
|
|
344
|
-
.p-icon-field-right
|
|
344
|
+
.p-icon-field-right,
|
|
345
|
+
.p-iconfield {
|
|
345
346
|
position: relative;
|
|
346
347
|
}
|
|
347
348
|
.p-input-icon-left > i,
|
|
348
349
|
.p-input-icon-right > i,
|
|
349
350
|
.p-icon-field-left > .p-input-icon,
|
|
350
|
-
.p-icon-field-right > .p-input-icon
|
|
351
|
+
.p-icon-field-right > .p-input-icon,
|
|
352
|
+
.p-iconfield > .p-inputicon {
|
|
351
353
|
position: absolute;
|
|
352
354
|
top: 50%;
|
|
353
355
|
margin-top: 0 !important;
|
|
@@ -356,32 +358,103 @@
|
|
|
356
358
|
align-items: center;
|
|
357
359
|
justify-content: center;
|
|
358
360
|
}
|
|
361
|
+
/* Vue: .p-iconfield | React: .p-icon-field */
|
|
362
|
+
.p-iconfield, .p-icon-field {
|
|
363
|
+
margin-top: 0;
|
|
364
|
+
}
|
|
365
|
+
/* Icon overrides (both) - Use Material Symbols instead of PrimeIcons */
|
|
359
366
|
.pi-eye::before {
|
|
360
|
-
font-family:
|
|
361
|
-
content:
|
|
367
|
+
font-family: "Material Symbols Outlined";
|
|
368
|
+
content: "visibility_off";
|
|
362
369
|
color: var(--rs-color-text-primary);
|
|
363
370
|
cursor: pointer;
|
|
364
371
|
}
|
|
365
372
|
.pi-eye-slash::before {
|
|
366
|
-
font-family:
|
|
367
|
-
content:
|
|
373
|
+
font-family: "Material Symbols Outlined";
|
|
374
|
+
content: "visibility";
|
|
368
375
|
color: var(--rs-color-text-primary);
|
|
369
376
|
cursor: pointer;
|
|
370
377
|
}
|
|
378
|
+
.pi-chevron-down::before,
|
|
379
|
+
.pi-chevron-up::before {
|
|
380
|
+
font-family: "Material Symbols Outlined";
|
|
381
|
+
}
|
|
371
382
|
.pi-chevron-down::before {
|
|
372
|
-
|
|
373
|
-
content: 'keyboard_arrow_down';
|
|
383
|
+
content: "keyboard_arrow_down";
|
|
374
384
|
}
|
|
375
|
-
.pi-
|
|
376
|
-
|
|
377
|
-
content: 'check';
|
|
385
|
+
.pi-chevron-up::before {
|
|
386
|
+
content: "keyboard_arrow_up";
|
|
378
387
|
}
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
388
|
+
.pi-check::before {
|
|
389
|
+
font-family: "Material Symbols Outlined";
|
|
390
|
+
content: "check";
|
|
382
391
|
}
|
|
383
392
|
/* #endregion */
|
|
384
393
|
|
|
394
|
+
/* PrimeVue 4 - Dropdown icon rotation */
|
|
395
|
+
.p-select .p-select-dropdown-icon,
|
|
396
|
+
.p-cascadeselect .p-cascadeselect-dropdown-icon,
|
|
397
|
+
.p-multiselect .p-multiselect-dropdown-icon {
|
|
398
|
+
transition: transform 0.2s ease;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
.p-select-open .p-select-dropdown-icon,
|
|
402
|
+
.p-cascadeselect-open .p-cascadeselect-dropdown-icon,
|
|
403
|
+
.p-multiselect-open .p-multiselect-dropdown-icon {
|
|
404
|
+
transform: rotate(180deg);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/* PrimeReact - Dropdown CSS chevron stays mounted so its rotation can animate */
|
|
408
|
+
.p-dropdown .p-dropdown-trigger {
|
|
409
|
+
align-items: center;
|
|
410
|
+
}
|
|
411
|
+
.p-dropdown .p-dropdown-trigger > svg.p-dropdown-trigger-icon {
|
|
412
|
+
display: none !important;
|
|
413
|
+
}
|
|
414
|
+
/* PrimeReact - Dropdown CSS chevron only draws when the default icon slot exists.
|
|
415
|
+
With a custom dropdownIcon the icon has no .p-dropdown-trigger-icon class, so the
|
|
416
|
+
::after is suppressed and no duplicate arrow appears. Same when PrimeReact swaps
|
|
417
|
+
the default icon for a loading spinner. */
|
|
418
|
+
.p-dropdown .p-dropdown-trigger:has(> .p-dropdown-trigger-icon)::after {
|
|
419
|
+
border: solid currentColor;
|
|
420
|
+
border-width: 0 1.5px 1.5px 0;
|
|
421
|
+
content: "";
|
|
422
|
+
height: 8px;
|
|
423
|
+
transform: translateY(-2px) rotate(45deg);
|
|
424
|
+
transition: transform 0.2s ease;
|
|
425
|
+
width: 8px;
|
|
426
|
+
}
|
|
427
|
+
.p-dropdown .p-dropdown-trigger:has(> .p-dropdown-trigger-icon)[aria-expanded="true"]::after {
|
|
428
|
+
transform: translateY(2px) rotate(225deg);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
/* PrimeReact - CascadeSelect and MultiSelect: hide default chevron SVG icons and use CSS ::after chevron.
|
|
432
|
+
Same pattern as Dropdown above — keeps icon style consistent across all select components,
|
|
433
|
+
supports animation on open, and avoids duplicate arrows with custom icons or loading spinners. */
|
|
434
|
+
.p-cascadeselect .p-cascadeselect-trigger > svg.p-cascadeselect-trigger-icon,
|
|
435
|
+
.p-multiselect .p-multiselect-trigger > svg.p-multiselect-trigger-icon:not(.p-icon-spin) {
|
|
436
|
+
display: none !important;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
.p-cascadeselect .p-cascadeselect-trigger:has(> svg.p-cascadeselect-trigger-icon)::after,
|
|
440
|
+
.p-multiselect .p-multiselect-trigger:has(> svg.p-multiselect-trigger-icon:not(.p-icon-spin))::after {
|
|
441
|
+
border: solid currentColor;
|
|
442
|
+
border-width: 0 1.5px 1.5px 0;
|
|
443
|
+
content: "";
|
|
444
|
+
height: 8px;
|
|
445
|
+
transform: translateY(-2px) rotate(45deg);
|
|
446
|
+
transition: transform 0.2s ease;
|
|
447
|
+
width: 8px;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
.p-cascadeselect .p-cascadeselect-trigger:has(> svg.p-cascadeselect-trigger-icon)[aria-expanded="true"]::after {
|
|
451
|
+
transform: translateY(2px) rotate(225deg);
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
.p-multiselect:has(input[aria-expanded="true"]) .p-multiselect-trigger:has(> svg.p-multiselect-trigger-icon:not(.p-icon-spin))::after {
|
|
455
|
+
transform: translateY(2px) rotate(225deg);
|
|
456
|
+
}
|
|
457
|
+
|
|
385
458
|
/* #region classes */
|
|
386
459
|
/* password (both) */
|
|
387
460
|
.p-password {
|
|
@@ -391,7 +464,7 @@
|
|
|
391
464
|
width: 100%;
|
|
392
465
|
}
|
|
393
466
|
/* input (both) */
|
|
394
|
-
.p-inputtext:not(:where(.p-inputtextarea, .p-dropdown-label, .p-select-label, .p-cascadeselect-label, .p-
|
|
467
|
+
.p-inputtext:not(:where(.p-inputtextarea, .p-dropdown-label, .p-select-label, .p-cascadeselect-label, .p-multiselect-label, .p-autocomplete-multiple-container)) {
|
|
395
468
|
font-weight: var(--p-inputtext-font-weight);
|
|
396
469
|
height: 48px;
|
|
397
470
|
font-size: 16px;
|
|
@@ -448,12 +521,10 @@
|
|
|
448
521
|
.p-password.p-invalid.p-component > .p-inputtext {
|
|
449
522
|
border-color: var(--rs-color-stroke-error) !important;
|
|
450
523
|
}
|
|
451
|
-
.p-cascadeselect.p-invalid.p-component
|
|
452
|
-
.p-cascade-select.p-invalid.p-component {
|
|
524
|
+
.p-cascadeselect.p-invalid.p-component {
|
|
453
525
|
border-color: var(--rs-color-stroke-error) !important;
|
|
454
526
|
}
|
|
455
|
-
.p-multiselect.p-invalid.p-component
|
|
456
|
-
.p-multi-select.p-invalid.p-component {
|
|
527
|
+
.p-multiselect.p-invalid.p-component {
|
|
457
528
|
border-color: var(--rs-color-stroke-error) !important;
|
|
458
529
|
}
|
|
459
530
|
/* disabled states (both) */
|
|
@@ -475,23 +546,19 @@
|
|
|
475
546
|
background: var(--rs-color-background-disabled) !important;
|
|
476
547
|
color: var(--rs-color-text-secondary) !important;
|
|
477
548
|
}
|
|
478
|
-
.p-cascadeselect.p-disabled
|
|
479
|
-
.p-cascade-select.p-disabled {
|
|
549
|
+
.p-cascadeselect.p-disabled {
|
|
480
550
|
background: var(--rs-color-background-disabled) !important;
|
|
481
551
|
}
|
|
482
|
-
.p-cascadeselect.p-disabled .p-cascadeselect-label
|
|
483
|
-
.p-cascade-select.p-disabled .p-cascade-select-label {
|
|
552
|
+
.p-cascadeselect.p-disabled .p-cascadeselect-label {
|
|
484
553
|
color: var(--rs-color-text-secondary) !important;
|
|
485
554
|
}
|
|
486
|
-
.p-multiselect.p-disabled
|
|
487
|
-
.p-multi-select.p-disabled {
|
|
555
|
+
.p-multiselect.p-disabled {
|
|
488
556
|
background: var(--rs-color-background-disabled) !important;
|
|
489
557
|
}
|
|
490
|
-
.p-multiselect.p-disabled .p-multiselect-label
|
|
491
|
-
.p-multi-select.p-disabled .p-multi-select-label {
|
|
558
|
+
.p-multiselect.p-disabled .p-multiselect-label {
|
|
492
559
|
color: var(--rs-color-text-secondary) !important;
|
|
493
560
|
}
|
|
494
|
-
/* select/dropdown (both: .p-select=Vue, .p-dropdown=
|
|
561
|
+
/* select/dropdown (both: .p-select=Vue, .p-dropdown=React) */
|
|
495
562
|
.p-select, .p-dropdown {
|
|
496
563
|
font-weight: var(--p-select-font-weight);
|
|
497
564
|
height: 48px;
|
|
@@ -500,8 +567,8 @@
|
|
|
500
567
|
border-radius: 6px;
|
|
501
568
|
border: 1px solid var(--rs-color-neutral-700);
|
|
502
569
|
background: var(--rs-color-neutral-50);
|
|
503
|
-
padding: 0 16px;
|
|
504
570
|
}
|
|
571
|
+
.p-select, .p-dropdown { padding: 0; }
|
|
505
572
|
.p-select:not(.p-disabled):hover,
|
|
506
573
|
.p-dropdown:not(.p-disabled):hover {
|
|
507
574
|
border-color: var(--rs-color-stroke-focused);
|
|
@@ -525,102 +592,90 @@
|
|
|
525
592
|
.p-select-label.p-inputtext,
|
|
526
593
|
.p-dropdown-label.p-inputtext,
|
|
527
594
|
.p-cascadeselect-label.p-inputtext,
|
|
528
|
-
.p-
|
|
529
|
-
.p-multiselect-label.p-inputtext,
|
|
530
|
-
.p-multi-select-label.p-inputtext {
|
|
595
|
+
.p-multiselect-label.p-inputtext {
|
|
531
596
|
height: auto;
|
|
532
597
|
line-height: 1.5;
|
|
533
598
|
border: none;
|
|
534
599
|
background: transparent;
|
|
535
600
|
}
|
|
536
|
-
/* Internal containers - remove duplicate borders
|
|
601
|
+
/* Internal containers - remove duplicate borders and padding from triggers.
|
|
602
|
+
PrimeReact (React) adds internal padding to triggers, so we reset it here
|
|
603
|
+
for both Vue and React variants. */
|
|
537
604
|
.p-select-label-container,
|
|
538
605
|
.p-dropdown-label-container,
|
|
606
|
+
.p-cascadeselect-label-container,
|
|
607
|
+
.p-multiselect-label-container,
|
|
539
608
|
.p-select-trigger,
|
|
540
|
-
.p-dropdown-trigger
|
|
609
|
+
.p-dropdown-trigger,
|
|
610
|
+
.p-cascadeselect-trigger,
|
|
611
|
+
.p-multiselect-trigger {
|
|
541
612
|
border: none;
|
|
542
613
|
background: transparent;
|
|
614
|
+
padding: 0;
|
|
543
615
|
}
|
|
544
|
-
/* cascadeselect (both
|
|
545
|
-
.p-cascadeselect
|
|
616
|
+
/* cascadeselect (both) */
|
|
617
|
+
.p-cascadeselect {
|
|
546
618
|
height: 48px;
|
|
547
619
|
font-size: 16px;
|
|
548
620
|
gap: 8px;
|
|
549
621
|
border-radius: 6px;
|
|
550
622
|
border: 1px solid var(--rs-color-neutral-700);
|
|
551
623
|
background: var(--rs-color-neutral-50);
|
|
552
|
-
padding: 0
|
|
624
|
+
padding: 0;
|
|
553
625
|
}
|
|
554
|
-
.p-cascadeselect:not(.p-disabled):hover
|
|
555
|
-
.p-cascade-select:not(.p-disabled):hover {
|
|
626
|
+
.p-cascadeselect:not(.p-disabled):hover {
|
|
556
627
|
border-color: var(--rs-color-stroke-focused);
|
|
557
628
|
}
|
|
558
|
-
.p-cascadeselect:not(.p-disabled).p-focus
|
|
559
|
-
.p-cascade-select:not(.p-disabled).p-focus {
|
|
629
|
+
.p-cascadeselect:not(.p-disabled).p-focus {
|
|
560
630
|
outline: none;
|
|
561
631
|
border-color: var(--rs-color-stroke-focused);
|
|
562
632
|
box-shadow: none;
|
|
563
633
|
}
|
|
564
634
|
/* Vue-only: PrimeReact 10 no emite clases de tamaño para CascadeSelect */
|
|
565
|
-
.p-cascadeselect-sm
|
|
635
|
+
.p-cascadeselect-sm {
|
|
566
636
|
height: 36px;
|
|
567
637
|
font-size: 14px;
|
|
568
638
|
}
|
|
569
|
-
.p-cascadeselect-label
|
|
639
|
+
.p-cascadeselect-label {
|
|
570
640
|
align-self: center;
|
|
571
641
|
border: none;
|
|
572
642
|
background: transparent;
|
|
573
643
|
}
|
|
574
|
-
|
|
575
|
-
.p-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
border: none;
|
|
579
|
-
background: transparent;
|
|
580
|
-
}
|
|
581
|
-
/* multiselect (both: .p-multiselect=React, .p-multi-select=Vue) */
|
|
582
|
-
.p-multiselect, .p-multi-select {
|
|
644
|
+
/* multiselect (both) */
|
|
645
|
+
.p-multiselect {
|
|
646
|
+
display: flex;
|
|
647
|
+
align-items: center;
|
|
583
648
|
height: 48px;
|
|
584
649
|
font-size: 16px;
|
|
585
650
|
gap: 8px;
|
|
586
651
|
border-radius: 6px;
|
|
587
652
|
border: 1px solid var(--rs-color-neutral-700);
|
|
588
653
|
background: var(--rs-color-neutral-50);
|
|
589
|
-
padding: 0
|
|
654
|
+
padding: 0;
|
|
590
655
|
}
|
|
591
|
-
.p-multiselect:not(.p-disabled):hover
|
|
592
|
-
.p-multi-select:not(.p-disabled):hover {
|
|
656
|
+
.p-multiselect:not(.p-disabled):hover {
|
|
593
657
|
border-color: var(--rs-color-stroke-focused);
|
|
594
658
|
}
|
|
595
|
-
.p-multiselect:not(.p-disabled).p-focus
|
|
596
|
-
.p-multi-select:not(.p-disabled).p-focus {
|
|
659
|
+
.p-multiselect:not(.p-disabled).p-focus {
|
|
597
660
|
outline: none;
|
|
598
661
|
border-color: var(--rs-color-stroke-focused);
|
|
599
662
|
box-shadow: none;
|
|
600
663
|
}
|
|
601
664
|
/* Vue-only: PrimeReact 10 no emite clases de tamaño para MultiSelect */
|
|
602
|
-
.p-multiselect-sm
|
|
665
|
+
.p-multiselect-sm {
|
|
603
666
|
height: 36px;
|
|
604
667
|
font-size: 14px;
|
|
605
668
|
}
|
|
606
|
-
.p-multiselect-label
|
|
669
|
+
.p-multiselect-label {
|
|
607
670
|
align-self: center;
|
|
608
671
|
line-height: normal;
|
|
609
672
|
border: none;
|
|
610
673
|
background: transparent;
|
|
611
674
|
}
|
|
612
|
-
.p-
|
|
613
|
-
.p-
|
|
614
|
-
.p-multiselect-trigger,
|
|
615
|
-
.p-multi-select-trigger {
|
|
616
|
-
border: none;
|
|
617
|
-
background: transparent;
|
|
618
|
-
}
|
|
619
|
-
/* autocomplete (both) */
|
|
620
|
-
.p-autocomplete {
|
|
675
|
+
/* autocomplete (Vue-only: :has(.p-autocomplete-input) targets Vue's structure, not React's) */
|
|
676
|
+
.p-autocomplete:has(.p-autocomplete-input) {
|
|
621
677
|
height: 48px;
|
|
622
678
|
font-size: 16px;
|
|
623
|
-
gap: 8px;
|
|
624
679
|
}
|
|
625
680
|
/* menu (both: .p-menuitem-text=React, .p-menu-item-label=Vue) */
|
|
626
681
|
.p-menu {
|