search results:

    • Standard
    • React
    Pricing Learn Community
    • + D
    • Light
    • Dark
    • System
    logo TW Elements
    • Getting started
      • Quick start
      • Tutorials
      • Design system
      • Local installation
      • Optimization
      • Dark mode
      • Theming
      • Changelog
      • Migrating to v2
      • Internationalization guide
      • Class customization
      • Icons Integration
    • CommercialNew
      • Pricing
      • License
      • Installation
      • Git & repository
      • Premium Support
    • Integrations
      • Angular
      • ASP.NET
      • Django
      • Express
      • Laravel
      • Next
      • Nuxt
      • Qwik
      • React
      • Remix
      • Solid
      • Svelte
      • SvelteKit
      • Vue
    • Content & styles
      • Animations
      • Animations Extended
      • Colors
      • Dividers
      • Figures
      • Headings
      • Hover effects
      • Icons
      • Images
      • Mask
      • Shadows
      • Typography
    • Navigation
      • Breadcrumbs
      • Footer
      • Headers
      • Mega menu
      • Navbar
      • Offcanvas
      • Pagination
      • Pills
      • Scrollspy
      • Sidenav
      • Tabs
    • Components
      • Accordion
      • Alerts
      • Avatar
      • Badges
      • Button group
      • Buttons
      • Cards
      • Carousel
      • Chips
      • Collapse
      • Dropdown
      • Gallery
      • Jumbotron
      • Lightbox
      • Link
      • List group
      • Modal
      • Notifications
      • Paragraphs
      • Placeholders
      • Popconfirm
      • Popover
      • Progress
      • Rating
      • Scroll back to top button
      • Social buttons
      • Spinners
      • Stepper
      • Testimonials
      • Timeline
      • Toast
      • Tooltip
      • Video
      • Video carousel
    • Forms
      • Autocomplete
      • Checkbox
      • Datepicker
      • Datetimepicker
      • File input
      • Form templates
      • Input Group
      • Inputs
      • Login form
      • Multi range slider
      • Radio
      • Range
      • Registration form
      • Search
      • Select
      • Switch
      • Textarea
      • Timepicker
      • Validation
    • Data
      • Charts
      • Charts advanced
      • Datatables
      • Tables
    • Methods
      • Clipboard
      • Infinite scroll
      • Lazy loading
      • Loading management
      • Ripple
      • Scrollbar
      • Smooth scroll
      • Sticky
      • Touch
    • Design Blocks
      • Admin Charts
      • Admin Complex
      • Admin Forms
      • Admin Maps
      • Admin Navigation
      • Admin tables
      • Banners
      • Contact
      • Content
      • CTA
      • FAQ
      • Features
      • Headers
      • Hero / Intro sections
      • Logo clouds
      • Mega menu
      • News
      • Newsletter
      • Pricing
      • Projects
      • Stats
      • Stats admin
      • Team
      • Testimonials
    • Tools
      • Button generator
      • Card generator
      • Flexbox generator
      • Footer generator
      • Form builder
      • Grid generator
      • Icon generator
      • Instagram Filters generator
      • Logo generator
      • Table generator
      • Typography generator
    • Coming Soon
      • Angular
      • Builder
      • Templates
      • Vue
    • Resources
      • Playground
      • YouTube Channel
      • Private FB Group
      • Newsletter
      • UI Design course New
      • UI / UX tips

    TW Elements Qwik integration

    This article shows you how to integrate Qwik application with TW Elements. Free download, open source license.


    Prerequisites

    Before starting the project make sure to install the following utilities:

    • Node LTS (16.8.x or higher recommended)
    • Code editor. We recommend VSCode

    Creating a new Qwik application

    Let's create a fresh Qwik application so that we can go through all the steps together. New Qwik application can be created with use of the Vite by selecting one of the two templates: qwik or qwik-ts. We are going to use the qwik-ts template.

    Step 1

    Create a new project

    • terminal
            
                
        npm create vite@latest my-project -- --template qwik-ts
        cd my-project
        
            
        

    This will create a new project in the my-project directory.

    Installing and configuring Tailwind CSS and TW Elements

    Step 1

    Install Tailwind CSS in the newly created my-project directory.

    • terminal
            
                
        npm install -D tailwindcss postcss autoprefixer
        npx tailwindcss init -p
        
            
        

    File structure

    After running the above commands, your project should look something like this:

            
              my-project/
              ├── index.html
              ├── package.json
              ├── postcss.config.js
              ├── public/
              ├── src/
              │   ├── app.css
              │   ├── app.tsx
              │   ├── assets/
              │   ├── index.css
              │   ├── main.tsx
              │   └── vite-env.d.ts
              ├── tailwind.config.js
              ├── tsconfig.json
              ├── ...
              └── vite.config.ts
            
        

    Step 2

    Add the paths to all of your template files in your tailwind.config.js file.

    • tailwind.config.js
            
                
        /** @type {import('tailwindcss').Config} */
        module.exports = {
          content: [
            "./src/**/*.{js,ts,jsx,tsx,mdx}",
            "./node_modules/tw-elements/js/**/*.js",
          ],
          theme: {
            extend: {},
          },
          darkMode: "class",
          plugins: [require("tw-elements/plugin.cjs")],
        };
        
            
        

    Step 3

    Add the @tailwind directives for each of Tailwind’s layers to your index.css file. Remove the styles from app.css so that the default styles won't override our new styles.

    • ./src/index.css
            
                
        @import url("https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,900&display=swap");
        @tailwind base;
        
        @layer base {
          html {
            @apply text-surface;
            @apply bg-white;
          }
          html.dark {
            @apply text-neutral-50;
            @apply bg-body-dark;
          }
        }
        
        @tailwind components;
        @tailwind utilities;
        
        p {
          @apply leading-[1.6];
        }    
        
            
        

    Step 4

    Install TW Elements.

    • terminal
            
                
        npm install tw-elements
        
            
        

    Step 5

    Import components which you intend to use and function initTWE that would allow us to automaticaly initialize used components. Call the initTWE inside the useVisibleTask$ lifecycle method. Keep in mind that useVisibleTask$ executes the code on the client side.

    • ./src/app.tsx
            
                
        import { component$, useVisibleTask$ } from "@builder.io/qwik";
        import { Tooltip, initTWE } from "tw-elements";
        
        export const App = component$(() => {
          useVisibleTask$(() => {
            initTWE({ Tooltip });
          });
          return (
        <div class="mt-16 flex justify-center">
          <p class="text-lg">
            Hover the link to see the
            <a
              href="#"
              class="ps-1 text-primary transition duration-150 ease-in-out hover:text-primary-600 focus:text-primary-600 active:text-primary-700 dark:text-primary-400 dark:hover:text-primary-500 dark:focus:text-primary-500 dark:active:text-primary-600"
              data-twe-toggle="tooltip"
              title="Hi! I'm tooltip">
              tooltip
            </a>
          </p>
        </div>
        ); });
        
            
        

    Step 6

    Start the app and see if everything's fine. Awesome! You're all set to dive into using TW Elements for your Qwik project. Have fun!

    • terminal
            
                
      npm run dev
      
            
        

    Initializing via JS

    By default all components have autoinit which means they are initialized by data attributes. But if you want to make init by JavaScript - there is also possibility to do that.

    Step 1

    Import components which are you intend to use and initialize components in lifecycle hook.

    • ./src/app.tsx
            
                
        import { component$, useVisibleTask$ } from "@builder.io/qwik";
        import { Tooltip } from "tw-elements";
        
        export const App = component$(() => {
          useVisibleTask$(() => {
            new Tooltip(document.getElementById("my-tooltip"));
          });
          return (
        <div class="mt-16 flex justify-center">
          <p class="text-lg">
            Hover the link to see the
            <a
              id="my-tooltip"
              href="#"
              class="ps-1 text-primary transition duration-150 ease-in-out hover:text-primary-600 focus:text-primary-600 active:text-primary-700 dark:text-primary-400 dark:hover:text-primary-500 dark:focus:text-primary-500 dark:active:text-primary-600"
              title="Hi! I'm tooltip">
              tooltip
            </a>
          </p>
        </div>
        ); });
        
            
        

    Related resources

    Tutorials:

    introduction key concepts quick start vite mdb go and deploy create website about versions installation setup overview create landing page javascript tailwind css intellisense deploy repository

    Integrations:

    django express laravel next nuxt react remix solid svelte sveltekit vue
    • Prerequisites
    • Creating a new Qwik application
    • Installing and configuring Tailwind CSS and TW Elements
    • Initializing via JS
    • Related resources
    Get useful tips & free resources directly to your inbox along with exclusive subscriber-only content.
    Join our mailing list now
    © 2024 Copyright: MDBootstrap.com

    Access restricted

    To view this section you must have an active PRO account

    Log in to your account or purchase an TWE subscription if you don't have one.

    Buy TWE PRO