@objectifthunes/whiteboard 0.1.1 → 0.2.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.
@@ -436,6 +436,752 @@
436
436
  to { transform: rotate(360deg); }
437
437
  }
438
438
 
439
+ /* ── Button ─────────────────────────────────────────── */
440
+
441
+ .panel-close-btn {
442
+ align-self: flex-start;
443
+ color: var(--wb-text-secondary);
444
+ border-color: var(--wb-border);
445
+ background: var(--wb-white);
446
+ }
447
+
448
+ .panel-close-btn:hover:not(:disabled) {
449
+ background: var(--wb-bg-hover);
450
+ }
451
+
452
+ .secondary-btn {
453
+ color: var(--wb-text-secondary);
454
+ border-color: var(--wb-border);
455
+ background: var(--wb-white);
456
+ }
457
+
458
+ .secondary-btn:hover:not(:disabled) {
459
+ background: var(--wb-bg-hover);
460
+ }
461
+
462
+ .danger-btn {
463
+ background: var(--wb-primary);
464
+ }
465
+
466
+ .danger-btn:hover:not(:disabled) {
467
+ background: var(--wb-primary-pressed);
468
+ }
469
+
470
+ .full-width-btn {
471
+ width: 100%;
472
+ }
473
+
474
+ .icon-only-btn {
475
+ min-width: 1.64rem;
476
+ min-height: 1.64rem;
477
+ padding: 0.2rem;
478
+ }
479
+
480
+ /* ── Alert ──────────────────────────────────────────── */
481
+
482
+ .status-error {
483
+ border: 1px solid #fecaca;
484
+ border-radius: var(--wb-radius-sm);
485
+ padding: 0.42rem 0.54rem;
486
+ font-size: var(--wb-fs-md);
487
+ color: #991b1b;
488
+ background: #fef2f2;
489
+ }
490
+
491
+ .ui-alert {
492
+ border: 1px solid var(--wb-border);
493
+ border-radius: var(--wb-radius-sm);
494
+ padding: 0.42rem 0.54rem;
495
+ font-size: var(--wb-fs-md);
496
+ }
497
+
498
+ .ui-alert--info {
499
+ color: #1e3a8a;
500
+ background: #eff6ff;
501
+ border-color: #bfdbfe;
502
+ }
503
+
504
+ .ui-alert--success {
505
+ color: #166534;
506
+ background: #ecfdf5;
507
+ border-color: #bbf7d0;
508
+ }
509
+
510
+ /* ── Field ──────────────────────────────────────────── */
511
+
512
+ .field-error {
513
+ margin: 0;
514
+ font-size: var(--wb-fs-xs);
515
+ color: #b91c1c;
516
+ }
517
+
518
+ /* ── Pill ───────────────────────────────────────────── */
519
+
520
+ .pill {
521
+ display: inline-flex;
522
+ align-items: center;
523
+ gap: var(--wb-gap-xs);
524
+ border-radius: var(--wb-radius-pill);
525
+ padding: 0.14rem 0.42rem;
526
+ font-size: var(--wb-fs-2xs);
527
+ font-weight: 600;
528
+ color: var(--wb-text-secondary);
529
+ background: var(--wb-bg-hover);
530
+ }
531
+
532
+ .pill.success {
533
+ color: #1d4ed8;
534
+ background: #eff6ff;
535
+ }
536
+
537
+ .pill.warning {
538
+ color: var(--wb-text-tertiary);
539
+ background: var(--wb-surface-muted);
540
+ }
541
+
542
+ .pill.danger {
543
+ color: #991b1b;
544
+ background: #fef2f2;
545
+ }
546
+
547
+ /* ── Chip ───────────────────────────────────────────── */
548
+
549
+ .chip {
550
+ border: 1px solid var(--wb-border);
551
+ border-radius: var(--wb-radius-pill);
552
+ padding: 0.12rem 0.42rem;
553
+ font-size: var(--wb-fs-2xs);
554
+ color: var(--wb-text-tertiary);
555
+ background: var(--wb-white);
556
+ }
557
+
558
+ button.chip {
559
+ cursor: pointer;
560
+ transition: background-color var(--wb-transition-fast), border-color var(--wb-transition-fast);
561
+ }
562
+
563
+ button.chip:hover {
564
+ background: var(--wb-bg-hover);
565
+ }
566
+
567
+ .chip--active {
568
+ border-color: #94a3b8;
569
+ background: var(--wb-surface-muted);
570
+ color: #1e293b;
571
+ font-weight: 600;
572
+ }
573
+
574
+ /* ── GeneratingOverlay ──────────────────────────────── */
575
+
576
+ .generating-overlay-wrap {
577
+ position: relative;
578
+ width: 100%;
579
+ flex: 1 1 auto;
580
+ }
581
+
582
+ .generating-overlay {
583
+ position: absolute;
584
+ inset: 0;
585
+ z-index: 10;
586
+ pointer-events: all;
587
+ border-radius: inherit;
588
+ display: flex;
589
+ flex-direction: column;
590
+ align-items: center;
591
+ justify-content: center;
592
+ gap: 0.5rem;
593
+ padding: 1rem;
594
+ text-align: center;
595
+ backdrop-filter: blur(4px);
596
+ background: color-mix(in srgb, var(--wb-surface-soft) 75%, transparent);
597
+ font-size: var(--wb-fs-xs);
598
+ color: var(--wb-text-muted);
599
+ }
600
+
601
+ /* ── Layout utilities ───────────────────────────────── */
602
+
603
+ .page-shell {
604
+ min-height: 100vh;
605
+ display: grid;
606
+ place-items: center;
607
+ padding: 2rem 1rem;
608
+ }
609
+
610
+ .page-card {
611
+ width: 100%;
612
+ max-width: 380px;
613
+ display: grid;
614
+ gap: 1.5rem;
615
+ border: 1px solid var(--wb-border);
616
+ border-radius: var(--wb-radius-lg);
617
+ padding: 2rem;
618
+ background: var(--wb-surface);
619
+ box-shadow: var(--wb-shadow-soft);
620
+ }
621
+
622
+ .panel-stack {
623
+ display: grid;
624
+ gap: 0.56rem;
625
+ }
626
+
627
+ .panel-stack-sm {
628
+ display: grid;
629
+ gap: 0.38rem;
630
+ }
631
+
632
+ .panel-scroll {
633
+ display: block;
634
+ }
635
+
636
+ .inline-row {
637
+ display: flex;
638
+ align-items: center;
639
+ gap: 0.36rem;
640
+ flex-wrap: wrap;
641
+ }
642
+
643
+ .space-between {
644
+ display: flex;
645
+ align-items: center;
646
+ justify-content: space-between;
647
+ gap: 0.5rem;
648
+ }
649
+
650
+ .list-reset {
651
+ margin: 0;
652
+ padding: 0;
653
+ list-style: none;
654
+ }
655
+
656
+ .title-row {
657
+ display: flex;
658
+ align-items: center;
659
+ justify-content: space-between;
660
+ gap: var(--wb-gap-md);
661
+ }
662
+
663
+ .tag-row {
664
+ display: flex;
665
+ flex-wrap: wrap;
666
+ align-items: center;
667
+ gap: 0.24rem;
668
+ }
669
+
670
+ .button-row {
671
+ display: flex;
672
+ flex-wrap: wrap;
673
+ gap: var(--wb-gap-sm);
674
+ }
675
+
676
+ .button-row > button {
677
+ flex: 1 1 0;
678
+ min-width: 0;
679
+ }
680
+
681
+ .status-inline {
682
+ display: inline-flex;
683
+ align-items: center;
684
+ gap: 0.3rem;
685
+ font-size: var(--wb-fs-sm);
686
+ color: var(--wb-text-muted);
687
+ }
688
+
689
+ /* ── ChoiceCard / ChoiceGroup ───────────────────────── */
690
+
691
+ .choice-list {
692
+ display: grid;
693
+ gap: 0.36rem;
694
+ }
695
+
696
+ .choice-card {
697
+ display: grid;
698
+ align-items: start;
699
+ justify-items: start;
700
+ gap: 0.18rem;
701
+ width: 100%;
702
+ border-radius: var(--wb-radius-md);
703
+ border: 1px solid var(--wb-border);
704
+ padding: 0.42rem 0.5rem;
705
+ text-align: left;
706
+ white-space: normal;
707
+ line-height: 1.35;
708
+ color: var(--wb-text-secondary);
709
+ background: var(--wb-white);
710
+ }
711
+
712
+ .choice-card:hover:not(:disabled) {
713
+ background: var(--wb-surface-hover);
714
+ }
715
+
716
+ .choice-card[data-active='true'] {
717
+ border-color: var(--wb-border-active);
718
+ background: var(--wb-surface-active);
719
+ }
720
+
721
+ .choice-card[data-has-description='false'] {
722
+ display: flex;
723
+ align-items: center;
724
+ justify-content: center;
725
+ }
726
+
727
+ .choice-card__row {
728
+ display: flex;
729
+ align-items: baseline;
730
+ gap: 0.42rem;
731
+ width: 100%;
732
+ min-width: 0;
733
+ }
734
+
735
+ .choice-card__label,
736
+ .choice-card__description {
737
+ min-width: 0;
738
+ overflow-wrap: anywhere;
739
+ }
740
+
741
+ .choice-card__label {
742
+ flex: 0 0 auto;
743
+ font-size: var(--wb-fs-md);
744
+ font-weight: 600;
745
+ line-height: 1.25;
746
+ }
747
+
748
+ .choice-card__description {
749
+ flex: 1 1 auto;
750
+ overflow: hidden;
751
+ text-overflow: ellipsis;
752
+ white-space: nowrap;
753
+ font-size: var(--wb-fs-sm);
754
+ color: var(--wb-text-muted);
755
+ }
756
+
757
+ /* ── ItemList / ItemCard ────────────────────────────── */
758
+
759
+ .item-list {
760
+ display: grid;
761
+ gap: var(--wb-gap-lg);
762
+ list-style: none;
763
+ padding: 0;
764
+ margin: 0;
765
+ }
766
+
767
+ .item-card {
768
+ border: 1px solid var(--wb-border);
769
+ border-radius: var(--wb-radius-md);
770
+ padding: 0.75rem;
771
+ background: var(--wb-surface-soft);
772
+ }
773
+
774
+ /* ── SplitLayout ────────────────────────────────────── */
775
+
776
+ .split-layout {
777
+ display: grid;
778
+ gap: 0.46rem;
779
+ align-items: start;
780
+ }
781
+
782
+ .split-layout--element {
783
+ grid-template-columns: 84px minmax(0, 1fr);
784
+ }
785
+
786
+ .split-layout--character {
787
+ grid-template-columns: minmax(0, 1fr);
788
+ }
789
+
790
+ .split-layout--user {
791
+ grid-template-columns: auto minmax(0, 1fr) auto;
792
+ align-items: center;
793
+ gap: var(--wb-gap-lg);
794
+ }
795
+
796
+ /* ── CoordGrid ──────────────────────────────────────── */
797
+
798
+ .coord-grid {
799
+ display: grid;
800
+ grid-template-columns: repeat(2, minmax(0, 1fr));
801
+ gap: 0.24rem;
802
+ }
803
+
804
+ .coord-input {
805
+ display: grid;
806
+ gap: 0.14rem;
807
+ font-size: var(--wb-fs-2xs);
808
+ color: var(--wb-text-muted);
809
+ }
810
+
811
+ .coord-input input {
812
+ min-width: 0;
813
+ }
814
+
815
+ /* ── PanelSection ───────────────────────────────────── */
816
+
817
+ .widget-section {
818
+ display: grid;
819
+ gap: var(--wb-gap-lg);
820
+ border: 1px solid var(--wb-border);
821
+ border-radius: var(--wb-radius-md);
822
+ padding: 0.5rem;
823
+ background: var(--wb-surface-soft);
824
+ }
825
+
826
+ .widget-section__title {
827
+ display: inline-flex;
828
+ align-items: center;
829
+ gap: var(--wb-gap-sm);
830
+ min-width: 0;
831
+ font-size: var(--wb-fs-md);
832
+ font-weight: 600;
833
+ color: var(--wb-text-primary);
834
+ }
835
+
836
+ .widget-section__description {
837
+ font-size: var(--wb-fs-sm);
838
+ color: var(--wb-text-muted);
839
+ }
840
+
841
+ /* ── Label ──────────────────────────────────────────── */
842
+
843
+ .widget-control {
844
+ display: grid;
845
+ gap: 0.16rem;
846
+ }
847
+
848
+ .widget-label {
849
+ font-size: var(--wb-fs-2xs);
850
+ color: var(--wb-text-muted);
851
+ text-transform: uppercase;
852
+ letter-spacing: 0.04em;
853
+ }
854
+
855
+ /* ── Typography ─────────────────────────────────────── */
856
+
857
+ .text-truncate {
858
+ overflow: hidden;
859
+ text-overflow: ellipsis;
860
+ white-space: nowrap;
861
+ min-width: 0;
862
+ }
863
+
864
+ .text-muted {
865
+ color: var(--wb-text-muted);
866
+ }
867
+
868
+ .text-xs {
869
+ font-size: var(--wb-fs-xs);
870
+ }
871
+
872
+ .text-sm {
873
+ font-size: var(--wb-fs-sm);
874
+ }
875
+
876
+ .asset-title {
877
+ font-size: var(--wb-fs-sm);
878
+ font-weight: 600;
879
+ word-break: break-word;
880
+ }
881
+
882
+ .asset-title--clamp {
883
+ display: -webkit-box;
884
+ overflow: hidden;
885
+ -webkit-line-clamp: 2;
886
+ -webkit-box-orient: vertical;
887
+ min-height: 2.1em;
888
+ }
889
+
890
+ .story-title {
891
+ font-size: 0.88rem;
892
+ }
893
+
894
+ .page-title {
895
+ font-size: 1.1rem;
896
+ font-weight: 600;
897
+ color: var(--wb-text-primary);
898
+ line-height: 1.3;
899
+ }
900
+
901
+ /* ── ImageThumb ─────────────────────────────────────── */
902
+
903
+ .image-thumb {
904
+ position: relative;
905
+ display: grid;
906
+ place-items: center;
907
+ overflow: hidden;
908
+ border: 1px solid var(--wb-border);
909
+ border-radius: var(--wb-radius-md);
910
+ background: var(--wb-surface-hover);
911
+ width: 100%;
912
+ aspect-ratio: 1 / 1;
913
+ }
914
+
915
+ .image-thumb--sm {
916
+ max-width: 84px;
917
+ }
918
+
919
+ .image-thumb--md {
920
+ max-width: none;
921
+ }
922
+
923
+ .image-thumb--fluid {
924
+ max-width: none;
925
+ }
926
+
927
+ .image-thumb__img {
928
+ width: 100%;
929
+ height: 100%;
930
+ object-position: center;
931
+ box-sizing: border-box;
932
+ }
933
+
934
+ .image-thumb--fit-contain .image-thumb__img {
935
+ object-fit: contain;
936
+ padding: 0;
937
+ }
938
+
939
+ .image-thumb--fit-cover .image-thumb__img {
940
+ object-fit: cover;
941
+ padding: 0;
942
+ }
943
+
944
+ .image-thumb__placeholder {
945
+ display: inline-flex;
946
+ align-items: center;
947
+ justify-content: center;
948
+ text-align: center;
949
+ padding: 0.2rem;
950
+ font-size: var(--wb-fs-xs);
951
+ color: var(--wb-text-muted);
952
+ }
953
+
954
+ /* ── PickerGrid / PickerCard ────────────────────────── */
955
+
956
+ .picker-search {
957
+ display: grid;
958
+ gap: var(--wb-gap-lg);
959
+ }
960
+
961
+ .picker-grid {
962
+ display: grid;
963
+ gap: 0.4rem;
964
+ }
965
+
966
+ .picker-grid--elements {
967
+ grid-template-columns: repeat(auto-fill, minmax(90px, 1fr));
968
+ }
969
+
970
+ .picker-grid--characters {
971
+ grid-template-columns: repeat(auto-fill, minmax(156px, 1fr));
972
+ }
973
+
974
+ .picker-grid--library {
975
+ grid-template-columns: repeat(auto-fill, minmax(132px, 1fr));
976
+ }
977
+
978
+ .picker-card {
979
+ width: 100%;
980
+ border: 1px solid var(--wb-border);
981
+ border-radius: var(--wb-radius-md);
982
+ padding: 0.4rem;
983
+ overflow: hidden;
984
+ color: var(--wb-text-secondary);
985
+ text-align: left;
986
+ background: var(--wb-white);
987
+ }
988
+
989
+ .picker-card:hover:not(:disabled) {
990
+ background: var(--wb-surface-hover);
991
+ }
992
+
993
+ .picker-card--skeleton {
994
+ cursor: default;
995
+ }
996
+
997
+ .picker-card-content {
998
+ min-width: 0;
999
+ align-content: start;
1000
+ }
1001
+
1002
+ .picker-card-thumb {
1003
+ width: 100%;
1004
+ aspect-ratio: 1 / 1;
1005
+ }
1006
+
1007
+ /* ── Skeleton ───────────────────────────────────────── */
1008
+
1009
+ .skeleton {
1010
+ position: relative;
1011
+ overflow: hidden;
1012
+ border-radius: var(--wb-radius-sm);
1013
+ background: var(--wb-border);
1014
+ }
1015
+
1016
+ .skeleton--md {
1017
+ border-radius: var(--wb-radius-md);
1018
+ }
1019
+
1020
+ .skeleton--pill {
1021
+ border-radius: var(--wb-radius-pill);
1022
+ }
1023
+
1024
+ .skeleton::after {
1025
+ content: '';
1026
+ position: absolute;
1027
+ inset: 0;
1028
+ transform: translateX(-100%);
1029
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.65), transparent);
1030
+ animation: skeleton-shimmer 1.2s ease-in-out infinite;
1031
+ }
1032
+
1033
+ .skeleton-input {
1034
+ width: 100%;
1035
+ height: 32px;
1036
+ }
1037
+
1038
+ .skeleton-btn {
1039
+ width: 100%;
1040
+ height: 26px;
1041
+ }
1042
+
1043
+ .skeleton-icon-btn {
1044
+ width: 1.64rem;
1045
+ height: 1.64rem;
1046
+ border-radius: var(--wb-radius-sm);
1047
+ }
1048
+
1049
+ .skeleton-btn--short {
1050
+ width: 42%;
1051
+ }
1052
+
1053
+ .skeleton-btn--back {
1054
+ width: 36%;
1055
+ }
1056
+
1057
+ .skeleton-btn--header-back {
1058
+ width: 100%;
1059
+ }
1060
+
1061
+ .skeleton-btn--tiny {
1062
+ width: 78px;
1063
+ height: 22px;
1064
+ }
1065
+
1066
+ .skeleton-btn--story-action {
1067
+ width: 82px;
1068
+ height: 24px;
1069
+ flex: 0 0 auto;
1070
+ }
1071
+
1072
+ .skeleton-choice {
1073
+ height: 36px;
1074
+ }
1075
+
1076
+ .skeleton-chip {
1077
+ width: 58px;
1078
+ height: 16px;
1079
+ border-radius: var(--wb-radius-pill);
1080
+ }
1081
+
1082
+ .skeleton-title {
1083
+ width: 74%;
1084
+ height: 14px;
1085
+ }
1086
+
1087
+ .skeleton-title--sm {
1088
+ width: 52%;
1089
+ }
1090
+
1091
+ .skeleton-choice-label {
1092
+ width: 64%;
1093
+ margin-inline: auto;
1094
+ }
1095
+
1096
+ .skeleton-header-title {
1097
+ width: 86%;
1098
+ }
1099
+
1100
+ .skeleton-header-title--short {
1101
+ width: 58%;
1102
+ }
1103
+
1104
+ .skeleton-line {
1105
+ width: 100%;
1106
+ height: 10px;
1107
+ }
1108
+
1109
+ .skeleton-line--short {
1110
+ width: 62%;
1111
+ }
1112
+
1113
+ .skeleton-select {
1114
+ width: 124px;
1115
+ height: 32px;
1116
+ }
1117
+
1118
+ .skeleton-textarea {
1119
+ width: 100%;
1120
+ min-height: 90px;
1121
+ }
1122
+
1123
+ .skeleton-thumb {
1124
+ width: 100%;
1125
+ aspect-ratio: 1 / 1;
1126
+ border-radius: var(--wb-radius-md);
1127
+ }
1128
+
1129
+ .skeleton-avatar {
1130
+ width: 1.9rem;
1131
+ height: 1.9rem;
1132
+ }
1133
+
1134
+ .skeleton-style-preview {
1135
+ width: 100%;
1136
+ max-width: none;
1137
+ aspect-ratio: 1 / 1;
1138
+ }
1139
+
1140
+ .skeleton-canvas {
1141
+ width: 100%;
1142
+ height: 100%;
1143
+ border-radius: 0;
1144
+ }
1145
+
1146
+ .skeleton-field {
1147
+ height: 32px;
1148
+ }
1149
+
1150
+ .skeleton-coord {
1151
+ height: 26px;
1152
+ }
1153
+
1154
+ .skeleton-meta-line {
1155
+ width: 92%;
1156
+ }
1157
+
1158
+ .skeleton-meta-item {
1159
+ width: 62px;
1160
+ height: 10px;
1161
+ }
1162
+
1163
+ .skeleton-meta-dot {
1164
+ width: 6px;
1165
+ height: 6px;
1166
+ border-radius: var(--wb-radius-pill);
1167
+ }
1168
+
1169
+ .skeleton-meta-item--short {
1170
+ width: 38px;
1171
+ height: 10px;
1172
+ }
1173
+
1174
+ .skeleton-page-tab-line {
1175
+ width: 74%;
1176
+ margin-inline: auto;
1177
+ }
1178
+
1179
+ @keyframes skeleton-shimmer {
1180
+ 100% {
1181
+ transform: translateX(100%);
1182
+ }
1183
+ }
1184
+
439
1185
  /* ── Responsive ─────────────────────────────────────── */
440
1186
 
441
1187
  @media (max-width: 768px) {
@@ -455,4 +1201,9 @@
455
1201
  right: 0.44rem;
456
1202
  bottom: 4.9rem;
457
1203
  }
1204
+
1205
+ .split-layout--element,
1206
+ .split-layout--user {
1207
+ grid-template-columns: 1fr;
1208
+ }
458
1209
  }