Alrighty, kicking off day 4 of my side project with nothing but positive vibes ππΌ
Initial Thoughts
- This popup needs to be 3-step.
- First step, customer enters the secret sauce.
- Second step, we verify if it is indeed the secret sauce π€
- Third step, customer gets a discount and we get their secret sauce. Win win π
- Need to look at some animation stuff. Because I am thinking of adding an animation when customer move to next step. Something like a Wizard or Multi-step form π€
- Not sure how would I achieve this in TailwindCSS.
Jumping into code… π¨π½βπ»
Before that… Googling for multi-step form with TailwindCSS π
Alright, below link seems like a good starting point ππΌ
 https://tailwindcomponents.com/component/multistep-form-with-tailwindcss-and-alpinejs
Jumping into code… Again π¨π½βπ»
Progress
- I was able to tweak the above snippet according to my requirements and achieve the multi-step concept just yet. Its not fully functional of course.   
Putting the code for this below ππΌ
<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <title>Discount Popup</title> </head> <body>     <!-- component --> <!-- This is an example component --> <div class="h-screen">      <link rel="stylesheet" href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css">     <script src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.js" defer></script>      <style>         [x-cloak] {             display: none;         }     </style>      <div x-data="app()" x-cloak>         <div class="container bg-purple-600 py-6 px-5 rounded">             <div class="max-w-3xl mx-auto mb-10">                  <div x-show.transition="step === 'complete'">                     <div class="bg-white rounded-lg p-10 flex items-center shadow justify-between">                         <div>                             <svg class="mb-4 h-20 w-20 text-green-500 mx-auto" viewBox="0 0 20 20" fill="currentColor">  <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/></svg>                              <h2 class="text-2xl mb-4 text-gray-800 text-center font-bold">DISCOUNT</h2>                              <div class="text-gray-600 mb-8">                                 Thank you. Enjoy your discount at the checkout.                             </div>                              <button                                 @click="step = 1"                                 class="w-40 block mx-auto focus:outline-none py-2 px-5 rounded-lg shadow-sm text-center text-gray-600 bg-white hover:bg-gray-100 font-medium border"                              >Back to home</button>                         </div>                     </div>                 </div>                  <div x-show.transition="step != 'complete'">                         <div class="text-white py-5 px-5">                         <h1>Hi π</h1>                         <p>Up for a Discount?</p>                     </div>                      <!-- Step Content -->                     <div class="bg-white py-5 px-5 rounded">                             <div x-show.transition.in="step === 1">                             <div class="mb-5">                                 <label for="firstname" class="font-bold mb-1 text-gray-700 block">Secret Sauce Part 1</label>                                 <input type="text"                                     class="w-full px-4 py-3 rounded-lg shadow-sm focus:outline-none focus:shadow-outline text-gray-600 font-medium border-2"                                     placeholder="Enter your secret sauce... ">                             </div>                              <div class="mb-5">                                 <label for="email" class="font-bold mb-1 text-gray-700 block">Secret Sauce Part 2</label>                                 <input type="text"                                     class="w-full px-4 py-3 rounded-lg shadow-sm focus:outline-none focus:shadow-outline text-gray-600 font-medium border-2"                                     placeholder="Enter your secret sauce...">                             </div>                             <div class="w-1/2">                                 <button                                 @click="step++"                                 class="w-32 focus:outline-none border border-transparent py-2 px-5 rounded-lg shadow-sm text-center text-white bg-blue-500 hover:bg-blue-600 font-medium"                              >Next</button>                         </div>                          </div>                         <div x-show.transition.in="step === 2">                             <div class="mb-5">                                 <label for="profession" class="font-bold mb-1 text-gray-700 block">Verification</label>                                 <input type="text"                                     class="w-full px-4 py-3 rounded-lg shadow-sm focus:outline-none focus:shadow-outline text-gray-600 font-medium border-2"                                     placeholder="Just making sure it belongs to you">                             </div>                             <div class="flex justify-between">                                 <div class="w-1/2">                                     <button                                     @click="step--"                                     class="w-32 focus:outline-none py-2 px-5 rounded-lg shadow-sm text-center text-gray-600 bg-white hover:bg-gray-100 font-medium border"                                  >Go Back</button>                                  </div>                                 <div class="w-1/2 ">                                     <button                                     @click="step = 'complete'"                                     class="w-32 focus:outline-none border border-transparent py-2 px-5 rounded-lg shadow-sm text-center text-white bg-blue-500 hover:bg-blue-600 font-medium"                                  >Verify</button>                             </div>                             </div>                         </div>                     </div>                     <!-- / Step Content -->                 </div>             </div>         </div>     </div>      <script>         function app() {             return {                 step: 1,             }         }     </script> </body> </html> Time Spent
1 and half hour
Signing off π΄
P.S.
If anybody ( other than me π ) reading it, you might be interested in following me on Twitter. I tweet about Laravel, Shopify and React stuff.
 
                    