Skip to main content

Activity: Components with daisyUI

In this hands-on activity, you will build and integrate a library of modular, accessible, and responsive components for Next.js (App Router), combining the speed of Tailwind CSS v4 utility classes with the visual semantics of daisyUI 5 and the institutional design guidelines of Universidad Icesi.

As designers and developers of digital environments, the goal is not only to lay out appealing interfaces, but also to organize code professionally: reusable components, typed props contracts with TypeScript, coherent visual hierarchy, and strict separation of concerns.


1. Assignment​

Objective​

Design, lay out, and modularize web interface components following atomic design technical specifications and the course architectural principles:

  1. Semantics and accessibility: leverage native HTML tags and daisyUI semantic classes instead of nesting meaningless generic elements.
  2. Modularity and typing: isolate each element in its own file with explicit props contracts in TypeScript (interface Props).
  3. Mobile-first: ensure each component adapts naturally from mobile screens (360 px) to desktop displays.
  4. Feature-based organization: place each file within the folder structure by features and shared explained in 01. Feature-Based Structure.

Structure and Placement Rule​

Each component must live in its own independent file. Accumulating multiple components in a single file or creating disorganized global folders "by type" is strictly prohibited:

  • Reusable generic components (base buttons, status badges, alerts, confirmation modals, metric indicators): must be located in src/shared/components/ui/<component-name>.tsx.
  • Components tied to a specific feature (course cards, backlog panel, tutoring form, faculty profile cards): must be located within their corresponding feature in src/features/<feature>/components/<component-name>.tsx.
Structure by features and shared
src/
├── features/
│ ├── auth/
│ │ └── components/ # Login and register components
│ ├── courses/
│ │ └── components/ # course-card.tsx
│ ├── tutoring/
│ │ └── components/ # tutoring-request-form.tsx
│ └── projects/
│ └── components/ # sprint-accordion-panel.tsx
└── shared/
└── components/
└── ui/ # action-button.tsx, status-badge.tsx, alert-banner.tsx, etc.

2. Grading Criteria​

The catalog in this guide contains 20 progressive exercises organized into three complexity levels. To pass the activity, you must submit a minimum selection of 7 components, distributed according to the following technical criteria:

Required Selection (7 components)​

  1. Level 1 — Visual Atoms (choose 2 components):
    • Recommended: 01. Action Button (src/shared/components/ui/action-button.tsx) and 03. Alert Banner (src/shared/components/ui/alert-banner.tsx).
    • Valid alternatives: 02 (Status Badge), 04 (Avatar with Ring), 05 (Kbd Pill), 06 (Visual Rating), or 07 (Bento Stat Metric).
  2. Level 2 — Molecules and Information (choose 3 components):
    • Recommended: 08. Course Card (src/features/courses/components/course-card.tsx), 10. Toast Floating Notification (src/shared/components/ui/toast-notification.tsx), and 13. Step Milestone Tracker (src/shared/components/ui/step-progress-tracker.tsx).
    • Valid alternatives: 09 (Multi-Metric Bento Panel), 11 (Chat Bubble), 12 (Directory Row), or 14 (Tag Selector).
  3. Level 3 — Complex Organisms (choose 2 components):
    • Recommended: 16. App Navbar with Menu (src/shared/components/ui/academic-app-navbar.tsx) and 18. Submission Confirmation Modal (src/shared/components/ui/submission-confirm-modal.tsx).
    • Valid alternatives: 15 (Event Card with Countdown), 17 (Tutoring Form), 19 (Faculty Profile with Tabs), or 20 (Accordion Backlog).
Integration Option in the Case Study

If you prefer a workflow more tightly integrated with the course project, you can connect at least 2 of your selected components directly into the Login and Register screens developed in 02. Case Study: Login and Register:

  • Use ActionButton (Exercise 01) as the primary button with interactive loading state (isLoading).
  • Use AlertBanner (Exercise 03) to display error or confirmation messages for credentials.
  • Use SubmissionConfirmModal (Exercise 18) to request confirmation before resetting or submitting the form.
Technical Bonus

Implementing additional components beyond the required 7, or completing all 20 exercises, will be considered a practical bonus in the evaluation.


3. Submission and Rubric​

Submission Method​

  1. Push your project to a private repository within the course organization on GitHub.
  2. Include a README.md file in the project root that clearly lists which components you implemented and the path of each one within the folder architecture.
  3. Submit the repository link on the course platform.
  4. The development and submission timeframe will be indicated by the instructor during the session.

Evaluation Rubric​

CriterionDescriptionWeight
Visual fidelityStrict adherence to proportions, typographic hierarchy, spacing, and the institutional Icesi color palette (Blue #5454e9, Purple #865cf0, Green #4cb979, Orange #e9683b, Yellow #e4eb60).30%
Proper use of daisyUI and TailwindEffective application of daisyUI semantic classes combined with Tailwind utilities without CSS duplication or manual inline styles.25%
Mobile-first responsive designFluid behavior without overflow on mobile screens (360 px), scaling smoothly to tablets and desktop displays.15%
Component reusability and typed propsWell-typed TypeScript props contracts, clean default values, and appropriate use of Server/Client Components (no unnecessary 'use client' directives).15%
Feature-based folder organizationFile structure consistent with 01. Feature-Based Structure, locating each component in src/shared/components/ui/ or in its corresponding feature.15%
TotalFull compliance with the activity's quality standards and requirements.100%

4. Level 1: Atoms​

Single-purpose interface elements, highly reusable and with minimal dependencies.

01. Action Button with Loading State and Badge​

Componente Interactivo #01
DaisyUI + Tailwind (Icesi 2026)

Interactive action button combining a vector icon, descriptive label, an informative tonal badge on the right (e.g., "PDF" file format), and support for dynamically toggling to a loading state (loading spinner).


02. Tonal Status Badge with Glowing Indicator​

Componente Interactivo #02
DaisyUI + Tailwind (Icesi 2026)

Pill-shaped micro-component combining a pulsing luminous dot (pulsing dot) with a text label to visually communicate the academic or administrative status of a record (active with Icesi Green #4cb979, under review with Purple #865cf0, pending with Orange #e9683b).


03. Institutional Informative Alert Banner​

Componente Interactivo #03
DaisyUI + Tailwind (Icesi 2026)

Prominent notification block featuring an informative vector icon in Icesi Blue (#5454e9), a bold title, explanatory body, and a secondary action button to direct the user to the corresponding action.


04. User Avatar with Presence Ring and Role​

Componente Interactivo #04
DaisyUI + Tailwind (Icesi 2026)

Atomic set that includes a circular user photograph with an outer ring (ring) in Icesi Blue (#5454e9), green live status indicator in Icesi Green (#4cb979), name, academic role badge, and current location.


05. Keyboard Shortcut Pill with Kbd​

Componente Interactivo #05
DaisyUI + Tailwind (Icesi 2026)

Compact row with a descriptive label on the left and simulated physical keys using semantic <kbd> elements on the right, ideal for command palettes or quick navigation menus.


06. Star Rating Display​

Componente Interactivo #06
DaisyUI + Tailwind (Icesi 2026)

Visual rating component that displays stars with support for half ratings (half stars), prominent numeric score, and total review count.


07. Academic Metric Bento Stat​

Componente Interactivo #07
DaisyUI + Tailwind (Icesi 2026)

Bento-style informative card featuring a primary quantitative indicator (e.g., Cumulative GPA), institutional icon in a tonal container in Icesi Blue (#5454e9), and percentage trend with semester comparison in Icesi Green (#4cb979).


5. Level 2: Molecules​

Composite components that group multiple atoms and manage complex data structures.

08. Course Card with Progress Bar​

Componente Interactivo #08
DaisyUI + Tailwind (Icesi 2026)

Modular card summarizing course information: header with institutional gradient (Icesi Blue #5454e9 to Icesi Purple #865cf0), course code, academic credit badge, instructor in charge, room, semester progress bar, and access actions.


09. Multi-Metric Bento Analytics Panel​

Componente Interactivo #09
DaisyUI + Tailwind (Icesi 2026)

Horizontal panel coupling multiple academic performance indicators into a single cohesive unit with internal dividers, vector icons, and percentage subtitles in Icesi Green (#4cb979) and Icesi Purple (#865cf0).


10. Institutional Toast-Style Floating Notification​

Componente Interactivo #10
DaisyUI + Tailwind (Icesi 2026)

Floating event confirmation card with a circular success icon in Icesi Green (#4cb979), descriptive message, transaction or commit ID, and a quick dismiss button.


11. Academic Advising Chat Bubble​

Componente Interactivo #11
DaisyUI + Tailwind (Icesi 2026)

Asynchronous messaging thread positioning student messages on the left and instructor or monitor replies on the right with Icesi Blue (#5454e9), timestamps, and user avatar.


12. Student Directory Row with Actions Menu​

Componente Interactivo #12
DaisyUI + Tailwind (Icesi 2026)

Administrative data table row arranging an avatar with squircle mask (squircle), student name and student ID, academic program, status badge in Icesi Green (#4cb979), and action button in Icesi Blue (#5454e9).


13. Step-by-Step Delivery Milestone Tracker​

Componente Interactivo #13
DaisyUI + Tailwind (Icesi 2026)

Sequential timeline illustrating milestones or sprints in a development project, indicating which stages have been completed with Icesi Blue (#5454e9), which is active today, and which are pending.


14. Thematic Tag Selector with Checkboxes​

Componente Interactivo #14
DaisyUI + Tailwind (Icesi 2026)

Interactive filter group presented as selectable badge pills (badges), where selected tags adopt Icesi Blue (#5454e9) and available tags remain neutral in Gray 2 (#cecfd4).


6. Level 3: Organisms​

Complete interface structures that orchestrate multiple molecules, layouts, and action flows.

15. Event or Hackathon Card with Countdown​

Componente Interactivo #15
DaisyUI + Tailwind (Icesi 2026)

Institutional event announcement card featuring an event badge, remaining spots indicator in Icesi Orange (#e9683b), title, schedule and auditorium, a modular countdown clock in monospace typography with digits in Icesi Blue (#5454e9), and team registration button.


16. Application Navbar with User Menu​

Componente Interactivo #16
DaisyUI + Tailwind (Icesi 2026)

Header bar unifying the institutional logo in Icesi Blue (#5454e9), portal name, and academic term on the left, alongside a notification button with counter badge in Icesi Purple (#865cf0) and avatar with dropdown menu on the right.


17. Modular Tutoring Request Form​

Componente Interactivo #17
DaisyUI + Tailwind (Icesi 2026)

Modular card form featuring a dropdown selector for advising topic, multiline text area for describing technical questions, and a primary submit button in Icesi Blue (#5454e9).


18. Submission Confirmation Modal Dialog​

Componente Interactivo #18
DaisyUI + Tailwind (Icesi 2026)

Confirmation dialog warning about an irreversible action, featuring a warning icon in Icesi Orange (#e9683b), bold title, descriptive text of the file to submit, and an action bar with options to cancel or confirm submission in Icesi Blue (#5454e9).


19. Faculty Profile Card with Tabs and Schedules​

Componente Interactivo #19
DaisyUI + Tailwind (Icesi 2026)

Faculty introduction card integrating an avatar with ring in Icesi Blue (#5454e9), department info, a tab system (boxed tabs) to toggle between courses, advising hours, and publications, plus a contact button.


20. Collapsible Accordion Sprint Deliverables Board​

Componente Interactivo #20
DaisyUI + Tailwind (Icesi 2026)

Collapsible accordion composed using daisyUI's join component, grouping course sprints with status badges in Icesi Green (#4cb979 for completed) and Icesi Yellow (#e4eb60 for in progress), animated arrows, and technical verification items inside.


7. Best Practices​

Apply this decision matrix before implementing each of your components in Next.js:

DimensionRecommended ApproachAnti-Pattern to Avoid
'use client' directiveOnly in components with interactive events (onClick, onChange), hooks (useState, useEffect), or browser APIs.Adding 'use client' to all files by default "just in case".
Styles & PalettedaisyUI semantic classes (btn-primary, badge-secondary, bg-base-100) configured in the institutional icesi theme (Blue #5454e9, Purple #865cf0, Green #4cb979, Orange #e9683b, Yellow #e4eb60).Inline styles (style={{...}}) or arbitrary hexadecimal color classes (bg-[#0033a0]).
Props ContractClear and explicit TypeScript interfaces with union types ('sm' | 'md' | 'lg').Props typed with any or lacking default values.
HTML StructureNative semantic tags (<button>, <dialog>, <nav>, <kbd>, <progress>).Nesting multiple empty <div> tags lacking semantic meaning or accessibility.
NavigationNext.js <Link href="..."> component for internal portal routes.Conventional <a> tags forcing a full page reload.