This repository presents a complete implementation of a scalable design system and component library for a NuxtJS application, developed using Storybook. Below is a concise explanation of the technologies and tools used, along with the design and development decisions made throughout the project.
The project follows the Atomic Design Principle see more for UI development, categorized into Atoms, Molecules, Organisms, and Templates:
Icon.vue: Renders application-wide icons.InputField.vue: Manages input fields with validation or styles.Text.vue: Displays consistent text elements.
ActionButton.vue: Reusable buttons for various actions.InputBox.vue: Combines input fields with labels and validation feedback.
EmailSignUPForm.vue: Implements a complete email sign-up form.
Reusable templates for consistent structure:
SignUpForm.vue: Provides a user-friendly form for sign-up flows.Table.vue: Displays structured data in a tabular format with responsive design.
Predefined pages to route users:
external.vue: This page shows the components used from external liberary Element Plus here.index.vue: The primary landing page for the application.
The .storybook folder allows for:
- Isolated development of components.
- Component documentation and live previews.
This repository includes a custom Vue component for creating a responsive, data-driven table using the Element Plus library. The table is designed with row-specific styling and supports TypeScript for better type safety and maintainability.
-
Data Rendering:
Displays tabular data with customizable columns usingel-tableandel-table-column. -
Conditional Row Styling:
Highlights specific rows based on conditions with predefined classes:warning-row: Applied to row index1.success-row: Applied to row index3.
-
TypeScript Support:
Leverages TypeScript interfaces for defining data types (Userinterface), ensuring safer and more readable code. -
Responsive Design:
Achieves a full-width table layout with inline styling.