deepak191z commited on
Commit
daf90d7
·
verified ·
1 Parent(s): d606f5d

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +230 -120
index.html CHANGED
@@ -6,35 +6,42 @@
6
  <title>Google Apps Script Generator</title>
7
  <link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet">
8
  <style>
 
9
  body {
10
- padding-top: 5rem;
11
- margin: 0;
12
  }
13
-
14
  #heroSection {
15
- display: flex;
16
- flex-direction: column;
17
- transition: all 0.3s ease-out;
18
  opacity: 1;
19
- max-height: 500px;
20
  overflow: hidden;
21
  }
22
-
23
- #heroSection.hidden {
24
- opacity: 0;
25
- max-height: 0;
26
- padding: 0;
27
- margin: 0;
 
 
28
  }
29
-
30
  #progressSteps {
31
- display: flex;
32
- transition: all 0.3s ease-out;
33
- opacity: 1;
34
- max-height: 100px;
35
- overflow: hidden;
 
 
 
 
 
 
 
36
  }
37
-
38
  .code-block {
39
  font-family: 'Courier New', Courier, monospace;
40
  white-space: pre-wrap;
@@ -42,126 +49,205 @@
42
  color: #e2e8f0;
43
  padding: 1rem;
44
  border-radius: 0.5rem;
45
- height: calc(80vh - 22rem);
46
- min-height: 150px;
47
  overflow-y: auto;
48
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
49
  border: 1px solid rgba(255, 255, 255, 0.2);
50
  }
51
-
52
  .section { display: none; }
53
  .section.active { display: block; }
54
-
55
  .input-field {
56
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
57
  background: rgba(255, 255, 255, 0.25);
58
  color: #1e293b;
59
  border: 1px solid rgba(255, 255, 255, 0.4);
60
  width: 100%;
61
- padding: 0.65rem 0.75rem;
62
- border-radius: 0.375rem;
 
 
 
 
 
 
63
  }
64
-
65
  .btn {
66
- transition: all 0.2s ease;
67
- padding: 0.75rem 1.25rem;
68
- border-radius: 0.375rem;
69
- font-weight: 500;
 
 
70
  text-align: center;
71
- min-width: 100px; /* Ensure readable button width */
72
  }
73
-
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  .btn-icon {
75
- padding: 0.5rem;
76
- min-width: 0; /* Override for icons */
77
- width: 2.5rem;
78
- height: 2.5rem;
79
- display: flex;
80
- align-items: center;
81
- justify-content: center;
82
- }
83
-
84
- .btn-icon svg {
85
- width: 1.25rem;
86
- height: 1.25rem;
87
  }
88
-
 
 
 
89
  .step-indicator {
90
- width: 2.5rem;
91
- height: 2.5rem;
92
- border-radius: 9999px;
93
- display: flex;
94
- align-items: center;
95
- justify-content: center;
96
- font-weight: 600;
97
- transition: all 0.3s ease;
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  }
99
-
100
  .glass-container {
101
  background: rgba(255, 255, 255, 0.15);
102
  backdrop-filter: blur(12px);
103
  border: 1px solid rgba(255, 255, 255, 0.25);
104
- border-radius: 0.75rem;
105
- padding: 1.5rem;
 
106
  }
107
-
108
  @media (max-width: 640px) {
109
  body {
110
- padding: 4rem 0.5rem 0;
 
 
111
  }
112
-
113
  .glass-container {
114
- padding: 1rem;
115
  }
116
-
117
  .code-block {
118
- height: calc(70vh - 15rem);
119
- min-height: 120px;
120
- }
121
-
122
- .button-container {
123
- display: flex;
124
- flex-direction: column;
125
- gap: 0.75rem;
126
- width: 100%;
127
- }
128
-
129
- .button-container .btn {
130
- width: 100%;
131
  padding: 0.75rem;
 
132
  }
133
-
134
  .column-input-row {
 
 
 
 
 
 
 
 
 
 
 
 
135
  display: flex;
136
- gap: 0.5rem;
137
- align-items: center;
138
- }
139
-
140
- .column-input-row .input-field {
141
- flex: 1;
142
  }
143
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  .step-indicator {
145
- width: 2rem;
146
- height: 2rem;
147
- font-size: 0.875rem;
148
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
  }
150
-
151
  @media (min-width: 641px) {
152
- .button-container {
153
- display: flex;
154
- justify-content: space-between;
155
- gap: 1rem;
156
  }
157
-
158
- .button-container .btn {
159
- width: auto;
160
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
161
  }
162
  </style>
163
  </head>
164
  <body class="bg-gradient-to-br from-gray-200 via-gray-300 to-gray-400 min-h-screen font-sans text-gray-800">
 
165
  <header class="fixed top-0 left-0 w-full bg-white shadow-md p-4 z-50">
166
  <div class="max-w-6xl mx-auto text-xl font-bold text-gray-900">GSheet2DB</div>
167
  </header>
@@ -183,63 +269,87 @@
183
  <div id="columns" class="section active">
184
  <h2 class="text-2xl font-extrabold text-gray-900 mb-6 text-center">Step 1: Define Your Columns</h2>
185
  <div id="columnInputs" class="space-y-4 mb-6">
186
- <div class="column-input-row">
187
- <input type="text" class="column-input input-field" placeholder="Column name (e.g., Status)" value="word">
 
 
 
 
 
 
188
  <button onclick="removeColumn(this)" class="btn btn-icon btn-red" aria-label="Remove column">
189
  <svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" /></svg>
190
  </button>
191
  </div>
192
  </div>
193
- <div class="button-container">
194
- <button onclick="addColumn()" class="btn btn-blue">Add Column</button>
195
- <button onclick="nextSection('code')" class="btn btn-green">Next: Generate Code</button>
196
  </div>
197
  </div>
198
 
199
  <div id="code" class="section">
200
  <h2 class="text-2xl font-extrabold text-gray-900 mb-6 text-center">Step 2: Generated Apps Script Code</h2>
201
- <div class="flex justify-between items-center mb-4">
202
- <h3 class="text-xl font-semibold text-gray-800">Code Preview</h3>
203
- <button onclick="copyCode()" class="btn btn-icon btn-gray-dark" title="Copy to clipboard">
204
  <svg class="w-6 h-6 text-gray-300" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2V7a2 2 0 00-2-2h-2M8 5a2 2 0 002 2h4a2 2 0 002-2M8 5a2 2 0 012-2h4a2 2 0 012 2"></path></svg>
 
205
  </button>
206
  </div>
207
  <div id="codePreview" class="code-block mb-6"></div>
208
- <div class="button-container">
209
- <button onclick="nextSection('columns')" class="btn btn-gray">Back</button>
210
- <button onclick="nextSection('howto')" class="btn btn-green">Next: How to Use</button>
211
  </div>
212
  </div>
213
 
214
  <div id="howto" class="section">
215
  <h2 class="text-2xl font-extrabold text-gray-900 mb-6 text-center">Step 3: How to Use the API</h2>
216
- <div class="button-container">
217
- <button onclick="nextSection('code')" class="btn btn-gray">Back</button>
 
 
 
 
 
 
 
 
 
 
218
  </div>
219
  </div>
220
  </div>
221
 
 
222
  <script>
223
- function nextSection(sectionId) {
224
- const sections = document.querySelectorAll('.section');
225
- const steps = ['columns', 'code', 'howto'];
226
- const currentStep = steps.indexOf(sectionId);
227
-
228
- sections.forEach(section => section.classList.remove('active'));
229
- document.getElementById(sectionId).classList.add('active');
230
 
231
- // Show hero section only on first step
232
- const heroSection = document.getElementById('heroSection');
233
- heroSection.classList.toggle('hidden', currentStep !== 0);
 
234
 
 
 
 
235
  document.querySelectorAll('.step-indicator').forEach((indicator, index) => {
236
  indicator.classList.toggle('active', index === currentStep);
 
237
  });
 
 
 
 
 
 
 
 
238
  }
239
 
240
- document.querySelector('.step-indicator').classList.add('active');
 
241
 
242
-
243
- </script><script src="script.js"></script>
244
  </body>
245
  </html>
 
6
  <title>Google Apps Script Generator</title>
7
  <link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet">
8
  <style>
9
+ /* Base body padding for fixed header */
10
  body {
11
+ padding-top: 5rem; /* Start with a base padding */
 
12
  }
13
+ /* Hero section base style */
14
  #heroSection {
15
+ display: flex; /* Use flex by default */
16
+ transition: opacity 0.3s ease-out, max-height 0.3s ease-out; /* Add transition */
 
17
  opacity: 1;
18
+ max-height: 500px; /* Estimate max height */
19
  overflow: hidden;
20
  }
21
+ /* Style to hide hero section smoothly */
22
+ #heroSection.hidden-section {
23
+ opacity: 0;
24
+ max-height: 0;
25
+ padding-top: 0;
26
+ padding-bottom: 0;
27
+ margin-bottom: 0;
28
+ /* display: none; /* Re-add if transition is not desired or causes layout shifts */
29
  }
30
+ /* Progress steps base style */
31
  #progressSteps {
32
+ display: flex; /* Use flex by default */
33
+ transition: opacity 0.3s ease-out, max-height 0.3s ease-out; /* Add transition */
34
+ opacity: 1;
35
+ max-height: 100px; /* Estimate max height */
36
+ overflow: hidden;
37
+ }
38
+ /* Style to hide steps smoothly */
39
+ #progressSteps.hidden-section {
40
+ opacity: 0;
41
+ max-height: 0;
42
+ margin-bottom: 0;
43
+ /* display: none; */
44
  }
 
45
  .code-block {
46
  font-family: 'Courier New', Courier, monospace;
47
  white-space: pre-wrap;
 
49
  color: #e2e8f0;
50
  padding: 1rem;
51
  border-radius: 0.5rem;
52
+ height: calc(80vh - 22rem); /* Adjusted height slightly */
53
+ min-height: 150px; /* Adjusted min-height */
54
  overflow-y: auto;
55
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
56
  border: 1px solid rgba(255, 255, 255, 0.2);
57
  }
 
58
  .section { display: none; }
59
  .section.active { display: block; }
 
60
  .input-field {
61
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
62
  background: rgba(255, 255, 255, 0.25);
63
  color: #1e293b;
64
  border: 1px solid rgba(255, 255, 255, 0.4);
65
  width: 100%;
66
+ padding: 0.65rem 0.75rem; /* Adjusted padding slightly */
67
+ border-radius: 0.375rem; /* Standard Tailwind rounded-md */
68
+ }
69
+ .input-field::placeholder { color: #4b5563; opacity: 1; }
70
+ .input-field:focus {
71
+ border-color: #3b82f6;
72
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.4);
73
+ background: rgba(255, 255, 255, 0.35);
74
  }
 
75
  .btn {
76
+ transition: background-color 0.2s ease, transform 0.1s ease, box-shadow 0.1s ease;
77
+ backdrop-filter: blur(8px);
78
+ border: 1px solid rgba(255, 255, 255, 0.2);
79
+ padding: 0.75rem 1.25rem; /* Default padding */
80
+ border-radius: 0.375rem; /* Standard Tailwind rounded-md */
81
+ font-weight: 500; /* Medium weight */
82
  text-align: center;
83
+ box-shadow: 0 1px 2px rgba(0,0,0,0.05);
84
  }
85
+ .btn:hover {
86
+ transform: translateY(-1px);
87
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
88
+ }
89
+ .btn:active { transform: translateY(0); box-shadow: 0 1px 2px rgba(0,0,0,0.05); }
90
+ /* Specific Button Colors */
91
+ .btn-blue { background: #2563eb; color: white; } .btn-blue:hover { background: #1d4ed8; }
92
+ .btn-green { background: #16a34a; color: white; } .btn-green:hover { background: #15803d; }
93
+ .btn-gray-dark { background: #374151; color: white; } .btn-gray-dark:hover { background: #1f2937; }
94
+ .btn-gray { background: #4b5563; color: white; } .btn-gray:hover { background: #374151; }
95
+ .btn-red { background: #dc2626; color: white; } .btn-red:hover { background: #b91c1c; }
96
+ .btn-light { background: #e5e7eb; color: #1f2937; } .btn-light:hover { background: #d1d5db; }
97
+ .btn-light-active { background: #dbeafe; color: #1e40af; } /* For active cURL button */
98
+ /* Small icon button style (e.g., delete, copy) */
99
  .btn-icon {
100
+ padding: 0.5rem; /* Smaller padding for icons */
101
+ flex-shrink: 0; /* Prevent shrinking */
102
+ line-height: 1; /* Ensure icon aligns well */
 
 
 
 
 
 
 
 
 
103
  }
104
+ .btn-icon svg {
105
+ width: 1.25rem; /* w-5 */
106
+ height: 1.25rem; /* h-5 */
107
+ }
108
  .step-indicator {
109
+ background: rgba(255, 255, 255, 0.1);
110
+ backdrop-filter: blur(5px);
111
+ border: 1px solid rgba(255, 255, 255, 0.2);
112
+ width: 2.5rem; /* w-10 */
113
+ height: 2.5rem; /* h-10 */
114
+ border-radius: 9999px; /* rounded-full */
115
+ display: flex;
116
+ align-items: center;
117
+ justify-content: center;
118
+ font-weight: 600; /* semibold */
119
+ color: #4b5563; /* gray-600 text */
120
+ transition: all 0.3s ease-in-out;
121
+ }
122
+ .step-indicator.active {
123
+ background: rgba(59, 130, 246, 0.9);
124
+ color: white;
125
+ box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3);
126
+ }
127
+ .step-indicator.completed { /* Style for completed steps */
128
+ background: rgba(22, 163, 74, 0.8); /* Green */
129
+ color: white;
130
  }
 
131
  .glass-container {
132
  background: rgba(255, 255, 255, 0.15);
133
  backdrop-filter: blur(12px);
134
  border: 1px solid rgba(255, 255, 255, 0.25);
135
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);
136
+ border-radius: 0.75rem; /* rounded-xl */
137
+ padding: 1.5rem; /* Default padding */
138
  }
139
+ /* --- Mobile-specific styles --- */
140
  @media (max-width: 640px) {
141
  body {
142
+ padding-top: 4.5rem; /* Adjust for potentially smaller header */
143
+ padding-left: 0.5rem;
144
+ padding-right: 0.5rem;
145
  }
 
146
  .glass-container {
147
+ padding: 1rem; /* Reduce padding slightly */
148
  }
 
149
  .code-block {
150
+ height: calc(70vh - 15rem); /* Adjust height calc for mobile */
 
 
 
 
 
 
 
 
 
 
 
 
151
  padding: 0.75rem;
152
+ min-height: 120px;
153
  }
154
+ /* Input row layout */
155
  .column-input-row {
156
+ flex-direction: row; /* Keep input and button in a row */
157
+ align-items: center;
158
+ gap: 0.75rem; /* space-x-3 equivalent */
159
+ }
160
+ .column-input-row input {
161
+ flex-grow: 1; /* Allow input to take space */
162
+ }
163
+ .column-input-row .btn-icon {
164
+ /* Delete button already has flex-shrink-0 */
165
+ }
166
+ /* Button container for main actions */
167
+ .button-container-mobile-stack {
168
  display: flex;
169
+ flex-direction: column;
170
+ width: 100%;
171
+ gap: 0.75rem; /* space-y-3 */
 
 
 
172
  }
173
+ .button-container-mobile-stack .btn {
174
+ width: 100%; /* Make buttons full width */
175
+ }
176
+ /* Make specific containers stack buttons */
177
+ #columns .button-container,
178
+ #code .button-container,
179
+ #howto .button-container {
180
+ flex-direction: column;
181
+ gap: 0.75rem;
182
+ }
183
+ #columns .button-container .btn,
184
+ #code .button-container .btn,
185
+ #howto .button-container .btn {
186
+ width: 100%; /* Ensure buttons inside stack full width */
187
+ margin-left: 0 !important; /* Override potential sm: space-x */
188
+ }
189
  .step-indicator {
190
+ width: 2.25rem; height: 2.25rem; /* Slightly smaller */
191
+ font-size: 0.875rem; /* text-sm */
 
192
  }
193
+ /* Adjust heading sizes for mobile */
194
+ .text-4xl { font-size: 1.875rem; line-height: 2.25rem; } /* text-3xl */
195
+ .text-2xl { font-size: 1.25rem; line-height: 1.75rem; } /* text-xl */
196
+ .text-xl { font-size: 1.125rem; line-height: 1.75rem; } /* text-lg */
197
+ .text-lg { font-size: 1rem; line-height: 1.5rem; } /* text-base */
198
+ /* Adjust margins */
199
+ .mb-12 { margin-bottom: 2rem; } /* mb-8 */
200
+ .mb-8 { margin-bottom: 1.5rem; } /* mb-6 */
201
+ .mb-6 { margin-bottom: 1rem; } /* mb-4 */
202
+ .mt-6 { margin-top: 1rem; } /* mt-4 */
203
+ .py-16 { padding-top: 2.5rem; padding-bottom: 2.5rem; } /* py-10 */
204
+ /* cURL buttons adjustments */
205
+ #howto .flex-wrap {
206
+ gap: 0.5rem; /* gap-2 */
207
+ }
208
+ #howto .flex-wrap .btn {
209
+ padding: 0.5rem 0.75rem; /* Smaller padding */
210
+ font-size: 0.875rem; /* text-sm */
211
+ }
212
+ /* Copy button on mobile */
213
+ #code .flex > .btn-icon {
214
+ /* padding: 0.6rem; /* Slightly larger tap area if needed */
215
+ }
216
  }
217
+ /* Larger screen adjustments */
218
  @media (min-width: 641px) {
219
+ body {
220
+ padding-top: 6rem; /* Restore larger padding */
221
+ padding-left: 1rem;
222
+ padding-right: 1rem;
223
  }
224
+ .glass-container {
225
+ padding: 2rem; /* Restore larger padding */
 
226
  }
227
+ /* Restore row layout for buttons on desktop */
228
+ #columns .button-container,
229
+ #code .button-container {
230
+ flex-direction: row;
231
+ justify-content: space-between;
232
+ gap: 1rem; /* space-x-4 */
233
+ }
234
+ #columns .button-container .btn,
235
+ #code .button-container .btn {
236
+ width: auto; /* Allow buttons to size naturally */
237
+ }
238
+ /* How-to back button on desktop */
239
+ #howto .button-container {
240
+ justify-content: flex-start;
241
+ flex-direction: row; /* Ensure it's row */
242
+ }
243
+ #howto .button-container .btn {
244
+ width: auto;
245
+ }
246
  }
247
  </style>
248
  </head>
249
  <body class="bg-gradient-to-br from-gray-200 via-gray-300 to-gray-400 min-h-screen font-sans text-gray-800">
250
+
251
  <header class="fixed top-0 left-0 w-full bg-white shadow-md p-4 z-50">
252
  <div class="max-w-6xl mx-auto text-xl font-bold text-gray-900">GSheet2DB</div>
253
  </header>
 
269
  <div id="columns" class="section active">
270
  <h2 class="text-2xl font-extrabold text-gray-900 mb-6 text-center">Step 1: Define Your Columns</h2>
271
  <div id="columnInputs" class="space-y-4 mb-6">
272
+ <div class="flex items-center space-x-3 column-input-row">
273
+ <input type="text" class="column-input input-field flex-1" placeholder="Column name (e.g., Status)" value="word">
274
+ <button onclick="removeColumn(this)" class="btn btn-icon btn-red" aria-label="Remove column">
275
+ <svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" /></svg>
276
+ </button>
277
+ </div>
278
+ <div class="flex items-center space-x-3 column-input-row">
279
+ <input type="text" class="column-input input-field flex-1" placeholder="Column name (e.g., Category)" value="meaning">
280
  <button onclick="removeColumn(this)" class="btn btn-icon btn-red" aria-label="Remove column">
281
  <svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" /></svg>
282
  </button>
283
  </div>
284
  </div>
285
+ <div class="mt-6 button-container"> <button onclick="addColumn()" class="btn btn-blue w-full sm:w-auto">Add Column</button>
286
+ <button onclick="nextSection('code')" class="btn btn-green w-full sm:w-auto">Next: Generate Code</button>
 
287
  </div>
288
  </div>
289
 
290
  <div id="code" class="section">
291
  <h2 class="text-2xl font-extrabold text-gray-900 mb-6 text-center">Step 2: Generated Apps Script Code</h2>
292
+ <div class="flex flex-col sm:flex-row justify-between items-center mb-4 gap-3 sm:gap-0"> <h3 class="text-xl font-semibold text-gray-800">Code Preview</h3>
293
+ <button onclick="copyCode()" class="btn btn-icon btn-gray-dark self-end sm:self-center" title="Copy to clipboard" aria-label="Copy code to clipboard">
 
294
  <svg class="w-6 h-6 text-gray-300" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2V7a2 2 0 00-2-2h-2M8 5a2 2 0 002 2h4a2 2 0 002-2M8 5a2 2 0 012-2h4a2 2 0 012 2"></path></svg>
295
+ <span class="sr-only">Copy Code</span>
296
  </button>
297
  </div>
298
  <div id="codePreview" class="code-block mb-6"></div>
299
+ <div class="mt-6 button-container"> <button onclick="nextSection('columns')" class="btn btn-gray w-full sm:w-auto">Back</button>
300
+ <button onclick="nextSection('howto')" class="btn btn-green w-full sm:w-auto">Next: How to Use</button>
 
301
  </div>
302
  </div>
303
 
304
  <div id="howto" class="section">
305
  <h2 class="text-2xl font-extrabold text-gray-900 mb-6 text-center">Step 3: How to Use the API</h2>
306
+ <h3 class="text-lg font-semibold text-gray-800 mb-3">Example cURL Commands:</h3>
307
+ <div class="flex flex-wrap gap-2 mb-6 pb-2">
308
+ <button class="curl-button btn btn-light text-sm px-3 py-1.5" onclick="showCurlExample('appendSingle', this)">Append Single</button>
309
+ <button class="curl-button btn btn-light text-sm px-3 py-1.5" onclick="showCurlExample('appendMultiple', this)">Append Multiple</button>
310
+ <button class="curl-button btn btn-light text-sm px-3 py-1.5" onclick="showCurlExample('fetchAll', this)">Fetch All</button>
311
+ <button class="curl-button btn btn-light text-sm px-3 py-1.5" onclick="showCurlExample('fetchRange', this)">Fetch Range</button>
312
+ <button class="curl-button btn btn-light text-sm px-3 py-1.5" onclick="showCurlExample('search', this)">Search</button>
313
+ <button class="curl-button btn btn-light text-sm px-3 py-1.5" onclick="showCurlExample('update', this)">Update</button>
314
+ <button class="curl-button btn btn-light text-sm px-3 py-1.5" onclick="showCurlExample('delete', this)">Delete</button>
315
+ </div>
316
+ <div id="curlExamples" class="code-block mb-6"></div>
317
+ <div class="mt-6 flex justify-start button-container"> <button onclick="nextSection('code')" class="btn btn-gray w-full sm:w-auto">Back</button>
318
  </div>
319
  </div>
320
  </div>
321
 
322
+
323
  <script>
324
+
325
+
 
 
 
 
 
326
 
327
+ function nextSection(sectionId) {
328
+ // Toggle section visibility
329
+ document.querySelectorAll('.section').forEach(section => section.classList.remove('active'));
330
+ document.getElementById(sectionId).classList.add('active');
331
 
332
+ // Update step indicators
333
+ const steps = ['columns', 'code', 'howto'];
334
+ const currentStep = steps.indexOf(sectionId);
335
  document.querySelectorAll('.step-indicator').forEach((indicator, index) => {
336
  indicator.classList.toggle('active', index === currentStep);
337
+ indicator.classList.toggle('completed', index < currentStep); // Optional: mark previous steps as completed
338
  });
339
+
340
+ // Show hero section only on the first step (columns)
341
+ const heroSection = document.getElementById('heroSection');
342
+ if (sectionId === 'columns') {
343
+ heroSection.classList.remove('hidden-section');
344
+ } else {
345
+ heroSection.classList.add('hidden-section');
346
+ }
347
  }
348
 
349
+ // Initialize the first step as active
350
+ document.querySelector('.step-indicator[data-step="columns"]').classList.add('active');
351
 
352
+ </script>
353
+ <script src="script.js"></script>
354
  </body>
355
  </html>