FeaturesTemplatesShowcaseTownie
AI
BlogDocsPricing
Log inSign up
bgschiller
bgschillerpersonalShopper
Remix of geoffreylitt/stevensDemo
Public
Like
1
personalShopper
Home
Code
12
.storybook
3
backend
4
docs
6
frontend
4
shared
1
ui-kit
12
.cursorrules
.vtignore
README.md
deno.json
package.json
vite.config.ts
Branches
1
Pull requests
Remixes
1
History
Environment variables
4
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
ui-kit
/
README.md
Code
/
ui-kit
/
README.md
Search
6/20/2025
Viewing readonly version of main branch: v201
View latest version
README.md

Personal Shopper UI Kit

A React component library for the Personal Shopper application, built with Vite, TypeScript, and Tailwind CSS.

šŸš€ Quick Start

Installation

pnpm install

Development

Start Storybook for component development:

pnpm storybook

Build the library:

pnpm build

Run type checking:

pnpm type-check

Run linting:

pnpm lint

šŸ“¦ Components

This UI kit includes the following components:

  • Dashboard - Main dashboard layout with location picker and action cards
  • DashboardCard - Reusable card component for dashboard metrics
  • CurrentLocationIndicator - Shows current store location or prompts to select one
  • LocationSearch - Search and select Kroger store locations by zip code
  • LoginPage - OAuth login page for Kroger authentication
  • Navbar - Application navigation bar with user info and logout
  • ShoppingListCreator - Create and manage shopping lists

šŸ›  Technology Stack

  • React 18 - UI library
  • TypeScript - Type safety
  • Vite - Build tool and dev server
  • Tailwind CSS - Utility-first CSS framework
  • Storybook - Component development and documentation
  • ESLint - Code linting

šŸ“ Project Structure

ui-kit/
ā”œā”€ā”€ .storybook/          # Storybook configuration
ā”œā”€ā”€ components/          # React components
│   ā”œā”€ā”€ *.tsx           # Component implementations
│   ā”œā”€ā”€ *.stories.tsx   # Storybook stories
│   └── types.ts        # Component type definitions
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ components/     # Future home for components (migration)
│   ā”œā”€ā”€ styles/         # Global styles and CSS
│   └── index.ts        # Main library exports
ā”œā”€ā”€ dist/               # Built library output
└── storybook-static/   # Built Storybook output

šŸŽØ Styling

This library uses Tailwind CSS for styling. The configuration includes:

  • Custom color palette for branding
  • Extended spacing and sizing utilities
  • Custom animations and transitions
  • Component-specific utility classes

Custom Tailwind Classes

.btn-primary # Primary button styling .btn-secondary # Secondary button styling .card # Card container styling .form-input # Form input styling

šŸ“– Storybook

Each component has corresponding Storybook stories for development and documentation. Stories include:

  • Default state examples
  • Various prop combinations
  • Interactive controls for testing
  • Documentation and usage examples

Access Storybook at http://localhost:6006 when running pnpm storybook.

šŸ”§ Build Configuration

Vite Configuration

  • Library mode for component distribution
  • TypeScript declaration generation
  • React plugin for JSX transform
  • Path aliases for cleaner imports

TypeScript Configuration

  • Strict type checking enabled
  • JSX React runtime
  • Declaration file generation
  • Path mapping for imports

šŸ“ Usage

Installing as a Dependency

Once published, install the UI kit in your project:

pnpm add personal-shopper-ui-kit

Importing Components

Create val
import { Dashboard, Navbar, LoginPage } from 'personal-shopper-ui-kit'; import type { DashboardProps } from 'personal-shopper-ui-kit';

Including Styles

Make sure to import the CSS in your main application:

Create val
import 'personal-shopper-ui-kit/dist/style.css';

šŸ¤ Contributing

  1. Make changes to components in the components/ directory
  2. Update or add Storybook stories for new features
  3. Run pnpm type-check and pnpm lint before committing
  4. Test components in Storybook before integration

šŸ“„ License

This project is part of the Personal Shopper application and follows the same licensing terms.

Go to top
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Product
FeaturesPricing
Developers
DocsStatusAPI ExamplesNPM Package Examples
Explore
ShowcaseTemplatesNewest ValsTrending ValsNewsletter
Company
AboutBlogCareersBrandhi@val.town
Terms of usePrivacy policyAbuse contact
Ā© 2025 Val Town, Inc.