|
2 | 2 | from {
|
3 | 3 | transform: rotate(0deg);
|
4 | 4 | }
|
| 5 | + |
5 | 6 | to {
|
6 | 7 | transform: rotate(360deg);
|
7 | 8 | }
|
8 | 9 | }
|
9 | 10 |
|
10 | 11 | @keyframes modai--dot-bounds {
|
11 |
| - 0%, 80%, 100% { |
| 12 | + |
| 13 | + 0%, |
| 14 | + 80%, |
| 15 | + 100% { |
12 | 16 | transform: scale(0);
|
13 | 17 | }
|
| 18 | + |
14 | 19 | 40% {
|
15 | 20 | transform: scale(1.0);
|
16 | 21 | }
|
17 | 22 | }
|
18 | 23 |
|
| 24 | +@keyframes modai--sparkle { |
| 25 | + |
| 26 | + 0%, |
| 27 | + 100% { |
| 28 | + opacity: 1; |
| 29 | + transform: scale(1); |
| 30 | + } |
| 31 | + |
| 32 | + 50% { |
| 33 | + opacity: 0; |
| 34 | + transform: scale(0); |
| 35 | + } |
| 36 | +} |
| 37 | + |
19 | 38 | :host {
|
20 | 39 | --primary: #4499E1;
|
21 | 40 | --primary-dark: #3a87c7;
|
|
38 | 57 |
|
39 | 58 | font: normal 13px/1.4 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
|
40 | 59 | }
|
| 60 | + |
41 | 61 | .icon {
|
42 | 62 | display: flex;
|
43 | 63 | align-items: center;
|
|
70 | 90 | ::-webkit-resizer {
|
71 | 91 | display: none;
|
72 | 92 | z-index: 1;
|
73 |
| - background: rgba(0,0,0,0); |
| 93 | + background: rgba(0, 0, 0, 0); |
74 | 94 | left: -20px;
|
75 | 95 | }
|
76 | 96 |
|
77 | 97 | .chat-modal {
|
78 |
| - padding-bottom: 20px; /* webkit fix for resizer */ |
79 |
| - width: clamp(374px,800px,90%); |
80 |
| - height: clamp(500px,80vh,90%); |
| 98 | + padding-bottom: 20px; |
| 99 | + /* webkit fix for resizer */ |
| 100 | + width: clamp(374px, 800px, 90%); |
| 101 | + height: clamp(500px, 80vh, 90%); |
81 | 102 | min-width: 374px;
|
82 | 103 | min-height: 500px;
|
83 | 104 | max-width: 90%;
|
|
136 | 157 | border-radius: 50%;
|
137 | 158 | transition: background-color var(--transition-speed);
|
138 | 159 |
|
139 |
| - &:hover, &:focus { |
| 160 | + &:hover, |
| 161 | + &:focus { |
140 | 162 | background-color: var(--border-light);
|
141 | 163 | }
|
142 | 164 |
|
|
246 | 268 | padding-block: 0;
|
247 | 269 |
|
248 | 270 | &:hover .trigger,
|
249 |
| - &:focus .trigger{ |
| 271 | + &:focus .trigger { |
250 | 272 | opacity: 1;
|
251 | 273 | }
|
252 | 274 |
|
|
291 | 313 | }
|
292 | 314 |
|
293 | 315 | &:hover .trigger,
|
294 |
| - &:focus .trigger{ |
| 316 | + &:focus .trigger { |
295 | 317 | opacity: 1;
|
296 | 318 | }
|
297 | 319 |
|
|
400 | 422 | border-radius: 28px;
|
401 | 423 | line-height: 1;
|
402 | 424 |
|
403 |
| - &:focus, &:hover { |
| 425 | + &:focus, |
| 426 | + &:hover { |
404 | 427 | background-color: var(--border-light);
|
405 | 428 | }
|
406 | 429 |
|
|
502 | 525 | gap: 5px;
|
503 | 526 | cursor: pointer;
|
504 | 527 |
|
505 |
| - &:hover, &:focus { |
| 528 | + &:hover, |
| 529 | + &:focus { |
506 | 530 | background-color: var(--border-light);
|
507 | 531 | }
|
508 | 532 | }
|
|
542 | 566 | padding-block: 0;
|
543 | 567 |
|
544 | 568 | &:hover .trigger,
|
545 |
| - &:focus .trigger{ |
| 569 | + &:focus .trigger { |
546 | 570 | opacity: 1;
|
547 | 571 | }
|
548 | 572 |
|
|
555 | 579 | background-color: #f8fafc;
|
556 | 580 | transition: transform 0.2s ease;
|
557 | 581 |
|
558 |
| - &:hover, &:focus { |
| 582 | + &:hover, |
| 583 | + &:focus { |
559 | 584 | transform: scale(1.05);
|
560 | 585 | }
|
561 | 586 |
|
|
610 | 635 | }
|
611 | 636 |
|
612 | 637 | &:hover .trigger,
|
613 |
| - &:focus .trigger{ |
| 638 | + &:focus .trigger { |
614 | 639 | opacity: 1;
|
615 | 640 | }
|
616 | 641 |
|
|
757 | 782 | pointer-events: none;
|
758 | 783 | color: var(--text-light);
|
759 | 784 |
|
760 |
| - &:hover, &:focus { |
| 785 | + &:hover, |
| 786 | + &:focus { |
761 | 787 | background-color: var(--primary-dark);
|
762 | 788 | }
|
763 | 789 |
|
|
822 | 848 | z-index: 2;
|
823 | 849 | }
|
824 | 850 |
|
825 |
| - &:focus, &:hover { |
| 851 | + &:focus, |
| 852 | + &:hover { |
826 | 853 | background-color: var(--border-light);
|
827 | 854 | opacity: 1;
|
828 | 855 | }
|
|
836 | 863 | background-color: var(--primary);
|
837 | 864 | color: var(--text-light);
|
838 | 865 |
|
839 |
| - &:hover, &:focus { |
| 866 | + &:hover, |
| 867 | + &:focus { |
840 | 868 | background-color: var(--primary);
|
841 | 869 | color: var(--text-light);
|
842 | 870 | }
|
|
988 | 1016 | outline-offset: 2px;
|
989 | 1017 | }
|
990 | 1018 | }
|
| 1019 | + |
991 | 1020 | .confirmBtn {
|
992 | 1021 | padding: 8px 16px;
|
993 | 1022 | border: none;
|
|
1005 | 1034 | }
|
1006 | 1035 |
|
1007 | 1036 | .generate {
|
1008 |
| - display: inline-flex; |
1009 |
| - height: 24px; |
| 1037 | + display: inline-block; |
1010 | 1038 | vertical-align: middle;
|
1011 | 1039 | padding-left: 5px;
|
1012 | 1040 |
|
| 1041 | + /* Common variables for consistent styling */ |
| 1042 | + --sparkle-h: 222; |
| 1043 | + --sparkle-s: 49%; |
| 1044 | + --sparkle-l: 60%; |
| 1045 | + --nav-h: 191; |
| 1046 | + --nav-s: 100%; |
| 1047 | + --nav-l: 44%; |
| 1048 | + --button-transition: 200ms all; |
| 1049 | + |
| 1050 | + .btn { |
| 1051 | + --button-color: hsl(var(--sparkle-h), var(--sparkle-s), var(--sparkle-l)); |
| 1052 | + display: inline-flex; |
| 1053 | + align-items: center; |
| 1054 | + justify-content: center; |
| 1055 | + cursor: pointer; |
| 1056 | + color: var(--button-color); |
| 1057 | + background: transparent; |
| 1058 | + border: none; |
| 1059 | + padding: 3px 6px 4px; |
| 1060 | + height: 100%; |
| 1061 | + transition: var(--button-transition); |
| 1062 | + |
| 1063 | + &:hover { |
| 1064 | + transform: scale(1.15); |
| 1065 | + --button-color: hsl(var(--nav-h), var(--nav-s), var(--nav-l)); |
| 1066 | + } |
| 1067 | + |
| 1068 | + &:focus { |
| 1069 | + outline: 2px solid hsl(var(--sparkle-h), var(--sparkle-s), var(--sparkle-l), 0.5); |
| 1070 | + outline-offset: 2px; |
| 1071 | + } |
| 1072 | + |
| 1073 | + &:focus:not(:focus-visible) { |
| 1074 | + outline: none; |
| 1075 | + } |
| 1076 | + |
| 1077 | + &:disabled { |
| 1078 | + opacity: 0.5; |
| 1079 | + cursor: initial; |
| 1080 | + } |
| 1081 | + } |
| 1082 | + |
1013 | 1083 | .history--wrapper {
|
1014 | 1084 | align-items: center;
|
1015 | 1085 | }
|
1016 | 1086 |
|
1017 |
| - .btn, |
1018 | 1087 | .history--next,
|
1019 | 1088 | .history--prev {
|
1020 |
| - --button-h: 191; |
1021 |
| - --button-s: 100%; |
1022 |
| - --button-l: 44%; |
1023 |
| - --button-hover-darken: 15%; |
1024 |
| - --button-border-darken: 20%; |
1025 |
| - --button-color: hsl(var(--button-h), var(--button-s), var(--button-l)); |
1026 |
| - --button-color-border: hsl( var(--button-h), var(--button-s), calc(var(--button-l) - var(--button-border-darken)) ); |
1027 |
| - --button-color-hover: hsl( var(--button-h), var(--button-s), calc(var(--button-l) - var(--button-hover-darken)) ); |
1028 |
| - display: inline-block; |
| 1089 | + --button-color: hsl(var(--sparkle-h), var(--sparkle-s), var(--sparkle-l)); |
| 1090 | + --button-color-hover: hsl(var(--nav-h), var(--nav-s), var(--nav-l)); |
1029 | 1091 | cursor: pointer;
|
1030 |
| - background: var(--button-color); |
1031 |
| - color: #ffffff; |
1032 |
| - border-radius: 4px; |
1033 |
| - margin-right: 6px; |
1034 |
| - padding: 3px 6px 4px; |
1035 |
| - border: 2px solid var(--button-color-border); |
1036 |
| - border-top-width: 1px; |
1037 |
| - border-left-width: 1px; |
1038 |
| - height: 100%; |
1039 |
| - transition: 200ms all; |
| 1092 | + background: transparent; |
| 1093 | + color: var(--button-color); |
| 1094 | + border: none; |
| 1095 | + transition: var(--button-transition); |
| 1096 | + min-width: 24px; |
| 1097 | + |
| 1098 | + svg { |
| 1099 | + stroke: currentColor; |
| 1100 | + width: 14px; |
| 1101 | + height: 14px; |
| 1102 | + } |
1040 | 1103 |
|
1041 | 1104 | &:hover {
|
1042 | 1105 | transform: scale(1.15);
|
1043 |
| - background: var(--button-color-hover); |
| 1106 | + color: var(--button-color-hover); |
| 1107 | + } |
| 1108 | + |
| 1109 | + &:focus { |
| 1110 | + outline: 2px solid hsl(var(--sparkle-h), var(--sparkle-s), var(--sparkle-l), 0.5); |
| 1111 | + outline-offset: 2px; |
| 1112 | + } |
| 1113 | + |
| 1114 | + &:focus:not(:focus-visible) { |
| 1115 | + outline: none; |
1044 | 1116 | }
|
1045 | 1117 |
|
1046 | 1118 | &:disabled {
|
1047 |
| - opacity:0.5; |
1048 |
| - cursor:initial; |
| 1119 | + opacity: 0.5; |
| 1120 | + cursor: initial; |
| 1121 | + pointer-events: none; |
| 1122 | + } |
| 1123 | + } |
| 1124 | + |
| 1125 | + /* Style the counter to match the buttons */ |
| 1126 | + .history--wrapper>div:not(.history--next):not(.history--prev) { |
| 1127 | + color: hsl(var(--sparkle-h), var(--sparkle-s), var(--sparkle-l)); |
| 1128 | + transition: var(--button-transition); |
| 1129 | + font-weight: 600; |
| 1130 | + min-width: 26px; |
| 1131 | + padding-bottom: 2px; |
| 1132 | + text-align: center; |
| 1133 | + } |
| 1134 | + |
| 1135 | + /* Animation for counter updates */ |
| 1136 | + .history--wrapper>div.updated { |
| 1137 | + animation: counterUpdate 0.3s ease-in-out forwards; |
| 1138 | + } |
| 1139 | + |
| 1140 | + /* Ensure buttons maintain their appearance at different screen sizes */ |
| 1141 | + @media (max-width: 480px) { |
| 1142 | + .history--wrapper { |
| 1143 | + gap: 0; |
| 1144 | + } |
| 1145 | + |
| 1146 | + .history--next, |
| 1147 | + .history--prev { |
| 1148 | + padding: 3px 4px; |
| 1149 | + } |
| 1150 | + } |
| 1151 | +} |
| 1152 | + |
| 1153 | +@media (prefers-reduced-motion: no-preference) { |
| 1154 | + .lucide-sparkle { |
| 1155 | + .bonus-sparkle-1 { |
| 1156 | + animation: modai--sparkle 5s ease-in-out; |
| 1157 | + animation-iteration-count: infinite; |
| 1158 | + animation-delay: 0s; |
| 1159 | + transform-origin: center; |
| 1160 | + transform-box: fill-box; |
| 1161 | + } |
| 1162 | + |
| 1163 | + .bonus-sparkle-2 { |
| 1164 | + animation: modai--sparkle 5s ease-in-out; |
| 1165 | + animation-iteration-count: infinite; |
| 1166 | + animation-delay: 4s; |
| 1167 | + transform-origin: center; |
| 1168 | + transform-box: fill-box; |
1049 | 1169 | }
|
1050 | 1170 | }
|
1051 | 1171 | }
|
0 commit comments