|
19 | 19 |
|
20 | 20 | <section class="container">
|
21 | 21 | <div class="controls">
|
| 22 | + <!-- Wave Type Selector --> |
22 | 23 | <div class="tab-nav">
|
23 | 24 | <ul class="tab-list">
|
24 | 25 | <li>
|
25 |
| - <button class="wave-type tab active" data-type="wave"> |
| 26 | + <button |
| 27 | + class="wave-type tab active" |
| 28 | + data-type="wave" |
| 29 | + x-data="curveSelector" |
| 30 | + @click="updateCurve" |
| 31 | + > |
26 | 32 | <svg width="16" height="16" viewBox="0 0 16 16">
|
27 | 33 | <path
|
28 | 34 | d="M0 8C2 8 2 4 4 4S6 12 8 12s2-4 4-4 2 4 4 4"
|
|
34 | 40 | </button>
|
35 | 41 | </li>
|
36 | 42 | <li>
|
37 |
| - <button class="wave-type tab" data-type="step"> |
| 43 | + <button |
| 44 | + class="wave-type tab" |
| 45 | + data-type="step" |
| 46 | + x-data="curveSelector" |
| 47 | + @click="updateCurve" |
| 48 | + > |
38 | 49 | <svg width="16" height="16" viewBox="0 0 16 16">
|
39 | 50 | <path
|
40 | 51 | d="M0 8H4V4H8V8H12V4H16"
|
|
46 | 57 | </button>
|
47 | 58 | </li>
|
48 | 59 | <li>
|
49 |
| - <button class="wave-type tab" data-type="peak"> |
| 60 | + <button |
| 61 | + class="wave-type tab" |
| 62 | + data-type="peak" |
| 63 | + x-data="curveSelector" |
| 64 | + @click="updateCurve" |
| 65 | + > |
50 | 66 | <svg width="16" height="16" viewBox="0 0 16 16">
|
51 | 67 | <path
|
52 | 68 | d="M0 8L4 4L8 12L12 4L16 8"
|
|
60 | 76 | </ul>
|
61 | 77 | </div>
|
62 | 78 |
|
| 79 | + <!-- Direction Selector --> |
63 | 80 | <div class="tab-nav">
|
64 | 81 | <ul class="tab-list">
|
65 | 82 | <li>
|
66 |
| - <button class="direction-btn tab active" data-direction="up"> |
| 83 | + <button |
| 84 | + class="direction-btn tab active" |
| 85 | + data-direction="up" |
| 86 | + x-data="directionSelector" |
| 87 | + @click="updateDirection" |
| 88 | + > |
67 | 89 | <svg
|
68 | 90 | xmlns="http://www.w3.org/2000/svg"
|
69 | 91 | width="20"
|
|
80 | 102 | </button>
|
81 | 103 | </li>
|
82 | 104 | <li>
|
83 |
| - <button class="direction-btn tab" data-direction="down"> |
| 105 | + <button |
| 106 | + class="direction-btn tab" |
| 107 | + data-direction="down" |
| 108 | + x-data="directionSelector" |
| 109 | + @click="updateDirection" |
| 110 | + > |
84 | 111 | <svg
|
85 | 112 | xmlns="http://www.w3.org/2000/svg"
|
86 | 113 | width="20"
|
|
99 | 126 | </ul>
|
100 | 127 | </div>
|
101 | 128 |
|
| 129 | + <!-- Complexity Slider --> |
102 | 130 | <div class="slider-container">
|
103 | 131 | <svg
|
104 | 132 | class="complexity-icon"
|
|
121 | 149 | min="2"
|
122 | 150 | max="50"
|
123 | 151 | value="10"
|
| 152 | + x-data="complexitySlider" |
| 153 | + @input="updateValue" |
124 | 154 | />
|
125 | 155 |
|
126 | 156 | <svg
|
|
138 | 168 | </svg>
|
139 | 169 | </div>
|
140 | 170 |
|
141 |
| - <button id="btn-randomize" aria-label="Randomize waves"> |
| 171 | + <!-- Randomize Button --> |
| 172 | + <button |
| 173 | + id="btn-randomize" |
| 174 | + aria-label="Randomize waves" |
| 175 | + x-data="waveActions" |
| 176 | + @click="randomize" |
| 177 | + > |
142 | 178 | <svg
|
143 | 179 | xmlns="http://www.w3.org/2000/svg"
|
144 | 180 | width="16"
|
|
158 | 194 | </button>
|
159 | 195 | </div>
|
160 | 196 |
|
| 197 | + <!-- Wave Preview --> |
161 | 198 | <div id="preview">
|
162 | 199 | <svg id="wave-preview" viewBox="0 0 500 200"></svg>
|
163 | 200 | </div>
|
164 | 201 |
|
165 |
| - <div class="button-group"> |
166 |
| - <button id="btn-download" data-appearance="secondary"> |
| 202 | + <!-- Action Buttons --> |
| 203 | + <div class="button-group" x-data="waveActions"> |
| 204 | + <button |
| 205 | + id="btn-download" |
| 206 | + data-appearance="secondary" |
| 207 | + @click="downloadSVG" |
| 208 | + > |
167 | 209 | Download
|
168 | 210 | </button>
|
169 |
| - <button id="btn-create" data-appearance="primary">Create</button> |
| 211 | + <button id="btn-create" data-appearance="primary" @click="createPattern"> |
| 212 | + Create |
| 213 | + </button> |
170 | 214 | </div>
|
171 | 215 | </section>
|
172 | 216 |
|
|
0 commit comments