UNPKG

@useloops/design-system

Version:

The official React based Loops design system

118 lines (83 loc) 3.97 kB
# @useloops/design-system The design system for the Loops platform and marketing website. ## Generating new components New components can be generated using `npm run component`. ## Synchronising icons with Figma - Create a personal access token in Figma in Settings > Security > Personal access tokens - Create `.env` file in `scripts/useloops-icon-generator/.env` - Install packages: `cd scripts/useloops-icon-generator && npm install` - Run `npm run icons` from the root dir - Check the Brand Core/Icons story in storybook, verify expected icons have been updated # Importing from @useloops/design-system This package now supports both barrel imports and individual component imports for better tree-shaking and reduced bundle sizes. ## Import Methods ### 1. Barrel Import (Default - imports everything) ```typescript import { Button, Avatar, Typography } from '@useloops/design-system'; ``` ### 2. System-Level Imports Import all components from a specific system: ```typescript // WebCore components import { Button, Avatar, Typography } from '@useloops/design-system/WebCore'; // Platform components import { Navigation, Header, KpiIndicator } from '@useloops/design-system/Platform'; // BrandCore import { Icon } from '@useloops/design-system/BrandCore'; // Marketing components import { PlanTierCard, TickGroup } from '@useloops/design-system/Marketing'; // Theme import { ThemeProvider, useTheme } from '@useloops/design-system/theme'; // Utils import { emailValidation, passwordValidation } from '@useloops/design-system/utils'; ``` ### 3. Individual Component Imports (Best for tree-shaking) Import components individually for optimal bundle size: ```typescript import Button from '@useloops/design-system/WebCore/Button'; import Avatar from '@useloops/design-system/WebCore/Avatar'; import Typography from '@useloops/design-system/WebCore/Typography'; import TextField from '@useloops/design-system/WebCore/TextField'; // Platform components import Navigation from '@useloops/design-system/Platform/Navigation'; import KpiIndicator from '@useloops/design-system/Platform/KpiIndicator'; // BrandCore components import Icon from '@useloops/design-system/BrandCore/Icon'; // Marketing components import PlanTierCard from '@useloops/design-system/Marketing/PlanTierCard'; ``` ## Benefits of Individual Imports - **Smaller Bundle Size**: Only include the components you actually use - **Faster Build Times**: Less code to process during bundling - **Better Tree-Shaking**: Modern bundlers can more easily eliminate unused code - **Clearer Dependencies**: Explicitly see which components are being used ## Migration Guide To migrate from barrel imports to individual imports: **Before:** ```typescript import { Button, Avatar, Typography, TextField } from '@useloops/design-system'; ``` **After (Option 1 - System Level):** ```typescript import { Button, Avatar, Typography, TextField } from '@useloops/design-system/WebCore'; ``` **After (Option 2 - Individual):** ```typescript import Button from '@useloops/design-system/WebCore/Button'; import Avatar from '@useloops/design-system/WebCore/Avatar'; import Typography from '@useloops/design-system/WebCore/Typography'; import TextField from '@useloops/design-system/WebCore/TextField'; ``` ## Available Systems - **BrandCore**: Brand-specific components (Icon) - **Marketing**: Marketing page components (PlanTierCard, TickGroup, PlanFeatureTable) - **Platform**: Platform-specific components (Navigation, Header, KpiIndicator, etc.) - **WebCore**: Core web components (Button, Avatar, TextField, Typography, etc.) - **theme**: Theme configuration and provider - **utils**: Utility functions and validation helpers ## TypeScript Support All import methods include full TypeScript support with proper type definitions: ```typescript import Button, { ButtonProps } from '@useloops/design-system/WebCore/Button'; import { ThemeProvider } from '@useloops/design-system/theme'; ```