gonzmart commited on
Commit
e9034df
·
1 Parent(s): 26d509f

tutorial added

Browse files
Files changed (3) hide show
  1. package-lock.json +1 -2
  2. src/App.css +105 -6
  3. src/App.js +44 -8
package-lock.json CHANGED
@@ -11,8 +11,7 @@
11
  "react": "^18.0.0",
12
  "react-dom": "^18.0.0",
13
  "react-scripts": "^5.0.1"
14
- },
15
- "devDependencies": {}
16
  },
17
  "node_modules/@alloc/quick-lru": {
18
  "version": "5.2.0",
 
11
  "react": "^18.0.0",
12
  "react-dom": "^18.0.0",
13
  "react-scripts": "^5.0.1"
14
+ }
 
15
  },
16
  "node_modules/@alloc/quick-lru": {
17
  "version": "5.2.0",
src/App.css CHANGED
@@ -340,15 +340,14 @@ button:not(.active) {
340
  }
341
 
342
  .modal {
343
- background: transparent;
344
- padding: 40px;
345
- max-width: 600px;
 
346
  width: 90%;
347
  font-family: var(--font-main);
348
  color: var(--light);
349
- position: relative;
350
- overflow: hidden;
351
- text-align: center;
352
  animation: slideUp 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
353
  }
354
 
@@ -1018,3 +1017,103 @@ button:not(.active) {
1018
  }
1019
 
1020
  /* ...existing styles... */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
340
  }
341
 
342
  .modal {
343
+ background: var(--dark);
344
+ border-radius: var(--border-radius-lg);
345
+ padding: 30px;
346
+ max-width: 700px;
347
  width: 90%;
348
  font-family: var(--font-main);
349
  color: var(--light);
350
+ border: 1px solid rgba(255, 255, 255, 0.1);
 
 
351
  animation: slideUp 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
352
  }
353
 
 
1017
  }
1018
 
1019
  /* ...existing styles... */
1020
+
1021
+ /* Updated Welcome Modal Example Styles */
1022
+ .modal-examples {
1023
+ margin-top: 25px;
1024
+ text-align: left;
1025
+ border: 1px solid rgba(255, 255, 255, 0.1);
1026
+ border-radius: var(--border-radius);
1027
+ padding: 20px;
1028
+ background-color: rgba(64, 65, 79, 0.3);
1029
+ color: var(--light);
1030
+ backdrop-filter: blur(8px);
1031
+ }
1032
+
1033
+ .modal-examples h3 {
1034
+ margin-top: 0;
1035
+ margin-bottom: 20px;
1036
+ text-align: center;
1037
+ color: var(--light);
1038
+ font-size: 18px;
1039
+ font-weight: 500;
1040
+ }
1041
+
1042
+ .button-example-container {
1043
+ display: flex;
1044
+ align-items: center;
1045
+ margin-bottom: 12px;
1046
+ }
1047
+
1048
+ .button-example-container span {
1049
+ margin-left: 12px;
1050
+ font-size: 14px;
1051
+ color: rgba(255, 255, 255, 0.7);
1052
+ }
1053
+
1054
+ .example-textarea {
1055
+ width: 100%;
1056
+ min-height: 40px;
1057
+ border: 1px solid rgba(255, 255, 255, 0.2);
1058
+ border-radius: var(--border-radius);
1059
+ padding: 10px 12px;
1060
+ background-color: rgba(64, 65, 79, 0.3);
1061
+ font-size: 14px;
1062
+ color: var(--light);
1063
+ display: flex;
1064
+ align-items: center;
1065
+ }
1066
+
1067
+ .modal-input-example, .modal-buttons-example, .modal-send-example {
1068
+ margin-bottom: 18px;
1069
+ }
1070
+
1071
+ .button-example-container button.example,
1072
+ .modal-send-example button.example {
1073
+ pointer-events: none;
1074
+ transform: none;
1075
+ opacity: 1;
1076
+ }
1077
+
1078
+ .button-example-container .standard-button.example {
1079
+ background: rgba(64, 65, 79, 0.9);
1080
+ color: var(--light);
1081
+ border: 1px solid rgba(255, 255, 255, 0.1);
1082
+ max-width: 90px;
1083
+ height: 36px;
1084
+ }
1085
+
1086
+ .button-example-container .reasoning-button.example {
1087
+ background: transparent;
1088
+ }
1089
+
1090
+ .button-example-container .search-button.example {
1091
+ background: transparent;
1092
+ }
1093
+
1094
+ .modal-send-example .answer-button.example {
1095
+ background: var(--primary);
1096
+ color: white;
1097
+ position: static;
1098
+ transform: none;
1099
+ display: inline-flex;
1100
+ margin: 0;
1101
+ }
1102
+
1103
+ .start-button {
1104
+ margin-top: 25px;
1105
+ background: var(--primary);
1106
+ color: white;
1107
+ padding: 12px 24px;
1108
+ font-size: 16px;
1109
+ }
1110
+
1111
+ /* Make the modal match the app's style */
1112
+ .modal {
1113
+ background: var(--dark);
1114
+ border-radius: var(--border-radius-lg);
1115
+ padding: 30px;
1116
+ border: 1px solid rgba(255, 255, 255, 0.1);
1117
+ }
1118
+
1119
+ /* ...existing code... */
src/App.js CHANGED
@@ -148,15 +148,51 @@ export default function ChatDisplay() {
148
  function WelcomeModal() {
149
  return (
150
  showModal && (
151
- <div className="modal-overlay">
152
- <div className="modal">
153
- <h2>🌿 Did you know? </h2>
154
- <p>Every prompt counts! Choosing the right AI model saves energy and protects our planet. 🌎✨</p>
155
- <img src="images/cute_world_mini.png" style={{ width: '55%' }} />
156
- <p>Play smart, pick wisely, and reduce your digital footprint! 🌱💡</p>
157
- <button onClick={() => setShowModal(false)}>Start</button>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  </div>
159
  </div>
 
160
  )
161
  );
162
  }
@@ -224,7 +260,7 @@ export default function ChatDisplay() {
224
  const getInputClassName = () => {
225
  const classes = ['chat-input'];
226
 
227
- // Only apply new-prompt class if initial load is complete
228
  if (initialLoadComplete.current && isNewPrompt) {
229
  classes.push('new-prompt');
230
  }
 
148
  function WelcomeModal() {
149
  return (
150
  showModal && (
151
+ <div className="modal-overlay">
152
+ <div className="modal">
153
+ <h2 style={{ textAlign: 'center' }}>🌳 Welcome to AI Energy Efficiency Trainer 🌿</h2>
154
+ <p className="modal-subtitle">Learn to choose the right AI model to save energy and improve responses</p>
155
+
156
+ <div className="modal-instruction-block">
157
+ <div className="instruction-header"></div>
158
+ <div className="instruction-content">
159
+ <p className="instruction-title" style={{ fontWeight: 'bold', fontSize: '1.1em', marginBottom: '8px', marginTop: '16px' }}>️1. Review the prompt:</p>
160
+ <div className="input-example-container">
161
+ <div className="example-textarea">
162
+ "Calculate the compound interest on $5,000 invested for 3 years at 4.5% per annum."
163
+ </div>
164
+ </div>
165
+ </div>
166
+ </div>
167
+
168
+ <div className="modal-instruction-block">
169
+ <div className="instruction-content">
170
+ <p className="instruction-title" style={{ fontWeight: 'bold', fontSize: '1.1em', marginBottom: '8px', marginTop: '16px' }}>2. Select the appropriate model (if needed):</p>
171
+ <div className="button-example-container" style={{ display: 'flex', alignItems: 'center', marginBottom: '10px' }}>
172
+ <button className="standard-button reasoning-button example" style={{ minWidth: '80px' }}>Reason</button>
173
+ <span style={{ marginLeft: '10px', display: 'inline-block', verticalAlign: 'middle' }}>For calculations, step-by-step explanations, and complex reasoning</span>
174
+ </div>
175
+ <div className="button-example-container" style={{ display: 'flex', alignItems: 'center' }}>
176
+ <button className="standard-button search-button example" style={{ minWidth: '80px' }}>Search</button>
177
+ <span style={{ marginLeft: '10px', display: 'inline-block', verticalAlign: 'middle' }}>For factual answers, simple lookups, and direct responses</span>
178
+ </div>
179
+ </div>
180
+ </div>
181
+
182
+ <div className="modal-instruction-block">
183
+ <div className="instruction-content">
184
+ <p className="instruction-title" style={{ fontWeight: 'bold', fontSize: '1.1em', marginBottom: '8px', marginTop: '16px' }}>3. Click Send to submit your answer!</p>
185
+ <div className="send-button-example">
186
+ </div>
187
+ </div>
188
+ </div>
189
+
190
+ <div className="modal-footer">
191
+ <p className="energy-note">⚡ Making the right choice helps reduce AI energy consumption</p>
192
+ <button onClick={() => setShowModal(false)} className="start-button" style={{ float: 'right' }}>Let's Begin</button>
193
  </div>
194
  </div>
195
+ </div>
196
  )
197
  );
198
  }
 
260
  const getInputClassName = () => {
261
  const classes = ['chat-input'];
262
 
263
+ // Only apply new-prompt class if initialLoadComplete is true
264
  if (initialLoadComplete.current && isNewPrompt) {
265
  classes.push('new-prompt');
266
  }