AI Component: Card Selector With Modern Style & Animation

A sleek, modern, and interactive card selector with a minimalist design. It features grayscale icons paired with concise text labels, emphasizing simplicity and clarity. The cards are likely designed to be responsive and user-friendly, offering an intuitive way to navigate or select categories.

5 title alignments are available:

  • Left (left)
  • Right (right)
  • Center (center)
  • Justify (justify)
  • Scrolling (scrolling)

The choices must have this format:

[
   {
      "Id":1,
      "Nom":"Personnel de soutien",
      "Icon":"https://storage.googleapis.com/glide-prod.appspot.com/uploads-v2/UmkAfG0Msp0nYOsqH9YY/pub/zabxTqCjokDSmRtI1HD7.png"
   },
   {
      "Id":2,
      "Nom":"Personnel professionnel",
      "Icon":"https://storage.googleapis.com/glide-prod.appspot.com/uploads-v2/UmkAfG0Msp0nYOsqH9YY/pub/ch3pwf3J7OSHZOJbhwgS.png"
   },
   {
      "Id":3,
      "Nom":"Personnel d'encadrement",
      "Icon":"https://storage.googleapis.com/glide-prod.appspot.com/uploads-v2/UmkAfG0Msp0nYOsqH9YY/pub/cbN7uvdqKHo09LhB6Gu0.png"
   }
]

Get the code from here:

Do EXACTLY THIS:



<html><head>
<style>:root {--color-accent: 208deg 89% 32%;}</style>
    <link rel="preload" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&amp;display=swap" as="style">
    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&amp;display=swap">
    <meta name="color-scheme" content="light dark">
    <style>
      html, body {
        font-family: Inter,-apple-system,BlinkMacSystemFont,Roboto,sans-serif
        background-color: transparent;
      }
    </style>
    <script type="module">
      import { init } from "https://go.glideapps.com/shell/v1.js";
      init({"fieldsDataObject":{"choices":"[{\"Id\":1,\"Nom\":\"Personnel de soutien\",\"Icon\":\"https://storage.googleapis.com/glide-prod.appspot.com/uploads-v2/UmkAfG0Msp0nYOsqH9YY/pub/zabxTqCjokDSmRtI1HD7.png\"},{\"Id\":2,\"Nom\":\"Personnel professionnel\",\"Icon\":\"https://storage.googleapis.com/glide-prod.appspot.com/uploads-v2/UmkAfG0Msp0nYOsqH9YY/pub/ch3pwf3J7OSHZOJbhwgS.png\"},{\"Id\":3,\"Nom\":\"Personnel d'encadrement\",\"Icon\":\"https://storage.googleapis.com/glide-prod.appspot.com/uploads-v2/UmkAfG0Msp0nYOsqH9YY/pub/cbN7uvdqKHo09LhB6Gu0.png\"}]","selectedChoice":3,"title":"Sélectionner une catégorie d'emploi","alignTitle":"center"},"schema":[{"id":"choices","type":"string","name":"choices"},{"id":"selectedChoice","type":"string","name":"selectedChoice"},{"id":"title","type":"string","name":"title"},{"id":"alignTitle","type":"string","name":"alignTitle"}],"actions":[],"config":{"colorScheme":"light","cssVariables":{"--color-accent":"208deg 89% 32%"},"alpineConfig":{"mode":"standalone","hasBodyAction":false}},"debug":false})
    </script>
    <script src="//cdn.jsdelivr.net/npm/@iframe-resizer/child@5.2.1"></script>
    <style>/*! tailwindcss v3.4.10 | MIT License | https://tailwindcss.com*/*,:after,:before{border-color:hsl(var(--color-gray-200)/1);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:hsl(var(--color-gray-400)/1);opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.headline-lg,.headline-md,.headline-sm,.headline-xl,.headline-xs{font-weight:600}.headline-md{font-size:1.5rem;line-height:2rem}.headline-md,.headline-sm{letter-spacing:-.025em;line-height:1.375}.headline-sm{font-size:20px}@media (min-width:768px){.headline-sm{font-size:1.25rem;line-height:1.75rem}}.body-base{font-size:1rem;line-height:1.5rem;line-height:1.5}@media (min-width:768px){.body-base{font-size:.875rem;line-height:1.25rem}}.absolute{position:absolute}.relative{position:relative}.-bottom-6{bottom:-1.5rem}.-right-6{right:-1.5rem}.z-10{z-index:10}.flex{display:flex}.grid{display:grid}.h-40{height:10rem}.h-56{height:14rem}.w-40{width:10rem}.w-56{width:14rem}.w-full{width:100%}.scale-125{--tw-scale-x:1.25;--tw-scale-y:1.25}.scale-125,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.place-items-center{place-items:center}.items-center{align-items:center}.justify-center{justify-content:center}.gap-6{gap:1.5rem}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-accent{--tw-border-opacity:1;border-color:hsl(var(--color-accent)/var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:hsl(var(--color-gray-100)/var(--tw-border-opacity))}.bg-background{--tw-bg-opacity:1;background-color:hsl(var(--color-background-DEFAULT)/var(--tw-bg-opacity))}.p-6{padding:1.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-gray-900{--tw-text-opacity:1;color:hsl(var(--color-gray-900)/var(--tw-text-opacity))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-20{opacity:.2}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.blur-sm{--tw-blur:blur(4px)}.blur-sm,.brightness-50{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.brightness-50{--tw-brightness:brightness(.5)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-300{transition-duration:.3s}.\@container{container-type:inline-size}@layer colors{:root.color-scheme-auto{--color-gray-0:0deg 0% 100%;--color-gray-50:0deg 0% 98%;--color-gray-100:0deg 0% 96%;--color-gray-200:0deg 0% 94%;--color-gray-300:0deg 0% 88%;--color-gray-400:0deg 0% 68%;--color-gray-500:0deg 0% 56%;--color-gray-600:0deg 0% 44%;--color-gray-700:0deg 0% 31%;--color-gray-800:0deg 0% 20%;--color-gray-900:0deg 0% 5%;--color-gray-950:0deg 0% 0%;--color-background-DEFAULT:0deg 0% 100%;@media (prefers-color-scheme:dark){--color-gray-0:0deg 0% 4%;--color-gray-50:0deg 0% 9%;--color-gray-100:0deg 0% 12%;--color-gray-200:0deg 0% 15%;--color-gray-300:0deg 0% 20%;--color-gray-400:0deg 0% 31%;--color-gray-500:0deg 0% 44%;--color-gray-600:0deg 0% 57%;--color-gray-700:0deg 0% 72%;--color-gray-800:0deg 0% 90%;--color-gray-900:0deg 0% 100%;--color-gray-950:0deg 0% 100%;--color-background-DEFAULT:0deg 0% 9%}}:root.color-scheme-light{color-scheme:light;--color-gray-0:0deg 0% 100%;--color-gray-50:0deg 0% 98%;--color-gray-100:0deg 0% 96%;--color-gray-200:0deg 0% 94%;--color-gray-300:0deg 0% 88%;--color-gray-400:0deg 0% 68%;--color-gray-500:0deg 0% 56%;--color-gray-600:0deg 0% 44%;--color-gray-700:0deg 0% 31%;--color-gray-800:0deg 0% 20%;--color-gray-900:0deg 0% 5%;--color-gray-950:0deg 0% 0%;--color-background-DEFAULT:0deg 0% 100%}:root.color-scheme-dark{color-scheme:dark;--color-gray-0:0deg 0% 4%;--color-gray-50:0deg 0% 9%;--color-gray-100:0deg 0% 12%;--color-gray-200:0deg 0% 15%;--color-gray-300:0deg 0% 20%;--color-gray-400:0deg 0% 31%;--color-gray-500:0deg 0% 44%;--color-gray-600:0deg 0% 57%;--color-gray-700:0deg 0% 72%;--color-gray-800:0deg 0% 90%;--color-gray-900:0deg 0% 100%;--color-gray-950:0deg 0% 100%;--color-background-DEFAULT:0deg 0% 9%}}.hover\:border-accent:hover{--tw-border-opacity:1;border-color:hsl(var(--color-accent)/var(--tw-border-opacity))}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.group:hover .group-hover\:scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (min-width:640px){.sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}}@media (min-width:768px){.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media (min-width:1024px){.lg\:px-7{padding-left:1.75rem;padding-right:1.75rem}}@media (min-width:1280px){.xl\:px-8{padding-left:2rem;padding-right:2rem}}</style>
  </head>
  <body x-data="state" class="" :class="{ 'cursor-pointer': hasBodyAction }">
    <div class="@container w-full body-base antialiased">
      <div :class="{ 'px-4 py-1 sm:px-5 md:px-6 lg:px-7 xl:px-8': mode === 'standalone' }">
        <div class="space-y-6">
        <h2 class="headline-md text-gray-900" x-text="title" :class="{
          'text-left': alignTitle === 'left',
          'text-right': alignTitle === 'right',
          'text-center': alignTitle === 'center',
          'text-justify': alignTitle === 'justify',
          'writing-vertical-rl': alignTitle === 'vertical',
          'animate-scrolling-text whitespace-nowrap overflow-hidden': alignTitle === 'scrolling'
        }"></h2>
        <div class="grid grid-cols-1 gap-6 place-items-center" style="grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));">
          <template x-for="choice in JSON.parse(choices)" :key="choice.Id">
            <div class="border border-gray-100 rounded-xl p-6 bg-background hover:border-accent cursor-pointer transition duration-300 flex flex-col justify-center items-center text-center relative overflow-hidden h-56 w-56 group shadow-md hover:shadow-lg" :class="{ 'border-accent shadow-lg': selectedChoice === choice.Id }" @click="selectedChoice = choice.Id">
              <div class="z-10 relative transition-transform duration-300 group-hover:scale-110">
                <h3 class="headline-sm text-gray-900" x-text="choice.Nom"></h3>
              </div>
              <img :src="choice.Icon" class="absolute -bottom-6 -right-6 w-40 h-40 opacity-20 transition-all duration-300" :class="{ 'scale-125 brightness-50 blur-sm': selectedChoice === choice.Id }" alt="Choice icon">
            </div>
          </template>
        </div>
      </div>
      
      <style>
        @keyframes scrolling {
          0% { transform: translateX(100%); }
          100% { transform: translateX(-100%); }
        }
        .animate-scrolling-text {
          animation: scrolling 15s linear infinite;
        }
      </style>
      </div>
    </div>
  
</body></html>

Or from @John_Romano 's AI Library App:

2 Likes