npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@gsk_poc/components

v0.1.26

Published

GSK custom component library with design tokens

Readme

@gsk/gsk-design-system

Production-ready React component library for building GSK-branded applications

npm version License: MIT TypeScript React

📋 Table of Contents


🎯 Overview

@gsk/gsk-design-system is a comprehensive React component library that provides GSK-branded, accessible, and customizable UI components for building modern web applications.

Key Features

50+ Production-Ready Components - Buttons, forms, modals, tables, and more
100% Design Token-Driven - Automatic theme updates from Figma
Full TypeScript Support - Complete type definitions and IntelliSense
Accessibility First - WCAG 2.1 AA compliant components
Framework Agnostic Styling - Works with any CSS solution
Tree-Shakeable - Import only what you need
Responsive Design - Mobile-first approach
Dark Mode Ready - Built-in dark theme support


🏗️ What You Can Build

This component library supports building:

Supported Application Types

| Application Type | Supported | Notes | |-----------------|-----------|-------| | Single Page Applications (SPA) | ✅ Yes | React, Create React App, Vite | | Server-Side Rendered (SSR) | ✅ Yes | Next.js, Remix | | Static Site Generation (SSG) | ✅ Yes | Next.js, Gatsby | | Progressive Web Apps (PWA) | ✅ Yes | Any React setup + PWA manifest | | Mobile Apps (React Native) | ❌ No | Web components only | | Electron Apps | ✅ Yes | Desktop applications | | Micro-frontends | ✅ Yes | Module Federation supported |

🎨 Use Cases

  • ✅ Enterprise dashboards and admin panels
  • ✅ Customer-facing web applications
  • ✅ Internal tools and portals
  • ✅ E-commerce platforms
  • ✅ Marketing websites
  • ✅ Documentation sites
  • ✅ Form-heavy applications

📦 Requirements

Minimum Requirements

{
  "react": ">=18.0.0",
  "react-dom": ">=18.0.0",
  "node": ">=18.0.0",
  "npm": ">=9.0.0"
}

Recommended Setup

{
  "react": "^19.0.0",
  "react-dom": "^19.0.0",
  "typescript": "^5.0.0",
  "node": ">=20.0.0"
}

Browser Support

| Browser | Minimum Version | |---------|----------------| | Chrome | 90+ | | Firefox | 88+ | | Safari | 14+ | | Edge | 90+ | | Mobile Safari (iOS) | 14+ | | Chrome Android | 90+ |

Note: IE11 is not supported.


🚀 Installation

Step 1: Install Package

npm install @gsk/gsk-design-system

# OR using yarn
yarn add @gsk/gsk-design-system

# OR using pnpm
pnpm add @gsk/gsk-design-system

Step 2: Install Peer Dependencies

npm install react@^18.0.0 react-dom@^18.0.0

# If using TypeScript
npm install --save-dev typescript @types/react @types/react-dom

📖 Quick Start Guides

Option 1: Create React App + TypeScript

Best for: Standard React applications with TypeScript

Step 1: Create Project

npx create-react-app my-gsk-app --template typescript
cd my-gsk-app

Step 2: Install Component Library

npm install @gsk/gsk-design-system
npm install tailwindcss@^4.0.0 @tailwindcss/vite --save-dev

Step 3: Configure Tailwind CSS

Create tailwind.config.js:

/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    "./src/**/*.{js,jsx,ts,tsx}",
    "./node_modules/@gsk/gsk-design-system/**/*.{js,jsx,ts,tsx}",
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}

Step 4: Import CSS

Update src/index.tsx:

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';

// Import GSK Design System CSS
import '@gsk/gsk-design-system/dist/styles/tokens.css';
import '@gsk/gsk-design-system/dist/styles/globals.css';
import '@gsk/gsk-design-system/dist/styles/theme.css';

const root = ReactDOM.createRoot(
  document.getElementById('root') as HTMLElement
);
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

Step 5: Use Components

Update src/App.tsx:

import React from 'react';
import { GSKButton, GSKInput } from '@gsk/gsk-design-system';

function App() {
  const [email, setEmail] = React.useState('');

  return (
    <div style={{ padding: '40px' }}>
      <h1>My GSK Application</h1>
      
      <GSKInput
        label="Email Address"
        type="email"
        placeholder="[email protected]"
        value={email}
        onChange={(e) => setEmail(e.target.value)}
        isRequired
      />
      
      <GSKButton variant="primary">
        Submit
      </GSKButton>
    </div>
  );
}

export default App;

Step 6: Run Application

npm start

Your app will be running at http://localhost:3000


Option 2: Create React App + JavaScript

Best for: JavaScript-only React applications

Step 1: Create Project

npx create-react-app my-gsk-app
cd my-gsk-app

Step 2: Install Component Library

npm install @gsk/gsk-design-system
npm install tailwindcss@^4.0.0 @tailwindcss/vite --save-dev

Step 3: Configure Tailwind CSS

Create tailwind.config.js:

/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    "./src/**/*.{js,jsx}",
    "./node_modules/@gsk/gsk-design-system/**/*.{js,jsx}",
  ],
}

Step 4: Import CSS

Update src/index.js:

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';

// Import GSK Design System CSS
import '@gsk/gsk-design-system/dist/styles/tokens.css';
import '@gsk/gsk-design-system/dist/styles/globals.css';
import '@gsk/gsk-design-system/dist/styles/theme.css';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

Step 5: Use Components

Update src/App.js:

import React, { useState } from 'react';
import { GSKButton, GSKInput } from '@gsk/gsk-design-system';

function App() {
  const [email, setEmail] = useState('');

  return (
    <div style={{ padding: '40px' }}>
      <h1>My GSK Application</h1>
      
      <GSKInput
        label="Email Address"
        type="email"
        placeholder="[email protected]"
        value={email}
        onChange={(e) => setEmail(e.target.value)}
        isRequired
      />
      
      <GSKButton variant="primary">
        Submit
      </GSKButton>
    </div>
  );
}

export default App;

Step 6: Run Application

npm start

Option 3: Vite + TypeScript

Best for: Fast development with modern tooling

Step 1: Create Project

npm create vite@latest my-gsk-app -- --template react-ts
cd my-gsk-app

Step 2: Install Dependencies

npm install
npm install @gsk/gsk-design-system
npm install tailwindcss@^4.0.0 @tailwindcss/vite --save-dev

Step 3: Configure Vite

Update vite.config.ts:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import tailwindcss from '@tailwindcss/vite'

export default defineConfig({
  plugins: [
    react(),
    tailwindcss()  // Add Tailwind plugin
  ],
})

Step 4: Configure Tailwind

Create tailwind.config.js:

/** @type {import('tailwindcss').Config} */
export default {
  content: [
    "./index.html",
    "./src/**/*.{js,ts,jsx,tsx}",
    "./node_modules/@gsk/gsk-design-system/**/*.{js,jsx,ts,tsx}",
  ],
}

Step 5: Import CSS

Update src/main.tsx:

import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App.tsx'
import './index.css'

// Import GSK Design System CSS
import '@gsk/gsk-design-system/dist/styles/tokens.css'
import '@gsk/gsk-design-system/dist/styles/globals.css'
import '@gsk/gsk-design-system/dist/styles/theme.css'

ReactDOM.createRoot(document.getElementById('root')!).render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
)

Step 6: Use Components

Update src/App.tsx:

import React, { useState } from 'react'
import { GSKButton, GSKInput } from '@gsk/gsk-design-system'

function App() {
  const [email, setEmail] = useState('')

  return (
    <div style={{ padding: '40px' }}>
      <h1>My GSK Application</h1>
      
      <GSKInput
        label="Email Address"
        type="email"
        value={email}
        onChange={(e) => setEmail(e.target.value)}
      />
      
      <GSKButton variant="primary">Submit</GSKButton>
    </div>
  )
}

export default App

Step 7: Run Application

npm run dev

Option 4: Vite + JavaScript

Best for: Fast development without TypeScript

Follow the same steps as Option 3, but:

  • Use --template react instead of --template react-ts
  • Name files with .js and .jsx extensions
  • Remove type annotations from code

Option 5: Next.js + TypeScript

Best for: Server-side rendered applications

Step 1: Create Project

npx create-next-app@latest my-gsk-app --typescript
cd my-gsk-app

Answer prompts:

✔ Would you like to use ESLint? … Yes
✔ Would you like to use Tailwind CSS? … Yes
✔ Would you like to use `src/` directory? … Yes
✔ Would you like to use App Router? … Yes
✔ Would you like to customize the default import alias? … No

Step 2: Install Component Library

npm install @gsk/gsk-design-system

Step 3: Configure Tailwind

Update tailwind.config.ts:

import type { Config } from "tailwindcss";

const config: Config = {
  content: [
    "./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
    "./src/components/**/*.{js,ts,jsx,tsx,mdx}",
    "./src/app/**/*.{js,ts,jsx,tsx,mdx}",
    "./node_modules/@gsk/gsk-design-system/**/*.{js,jsx,ts,tsx}",
  ],
  theme: {
    extend: {},
  },
  plugins: [],
};
export default config;

Step 4: Import CSS

Update src/app/layout.tsx:

import type { Metadata } from "next";
import "./globals.css";

// Import GSK Design System CSS
import '@gsk/gsk-design-system/dist/styles/tokens.css';
import '@gsk/gsk-design-system/dist/styles/globals.css';
import '@gsk/gsk-design-system/dist/styles/theme.css';

export const metadata: Metadata = {
  title: "My GSK App",
  description: "Built with GSK Design System",
};

export default function RootLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  return (
    <html lang="en">
      <body>{children}</body>
    </html>
  );
}

Step 5: Use Components

Update src/app/page.tsx:

'use client';

import React, { useState } from 'react';
import { GSKButton, GSKInput } from '@gsk/gsk-design-system';

export default function Home() {
  const [email, setEmail] = useState('');

  return (
    <main style={{ padding: '40px' }}>
      <h1>My GSK Application</h1>
      
      <GSKInput
        label="Email Address"
        type="email"
        value={email}
        onChange={(e) => setEmail(e.target.value)}
      />
      
      <GSKButton variant="primary">Submit</GSKButton>
    </main>
  );
}

⚠️ Important: Next.js components need 'use client' directive when using React hooks.

Step 6: Run Application

npm run dev

Option 6: Next.js + JavaScript

Follow the same steps as Option 5, but:

  • Remove --typescript flag
  • Use .js and .jsx extensions
  • Remove type annotations

🎨 CSS Framework Options

✅ What You CAN Use

| CSS Solution | Supported | Notes | |-------------|-----------|-------| | Tailwind CSS v4+ | ✅ Required | Used internally by components | | CSS Modules | ✅ Yes | For custom styles | | Styled Components | ✅ Yes | Can wrap our components | | Emotion | ✅ Yes | Can wrap our components | | Plain CSS | ✅ Yes | For custom styles | | SASS/SCSS | ✅ Yes | For custom styles | | CSS-in-JS | ✅ Yes | Any solution works |

❌ What You CANNOT Do

| Limitation | Reason | |-----------|--------| | ❌ Remove Tailwind CSS | Components depend on Tailwind utilities | | ❌ Use Tailwind v3 | Components require v4+ features | | ❌ Modify component internals | Use composition instead | | ❌ Override design tokens directly | Use theme extension instead |

🔧 Customization Approaches

Option 1: Extend with Custom CSS

/* CustomButton.module.css */
.myButton {
  /* Your custom styles here */
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
import { GSKButton } from '@gsk/gsk-design-system';
import styles from './CustomButton.module.css';

<GSKButton className={styles.myButton}>
  Custom Styled Button
</GSKButton>

Option 2: Styled Components Wrapper

import styled from 'styled-components';
import { GSKButton } from '@gsk/gsk-design-system';

const StyledButton = styled(GSKButton)`
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  &:hover {
    transform: translateY(-2px);
  }
`;

<StyledButton variant="primary">
  Styled Button
</StyledButton>

Option 3: Inline Styles

<GSKButton 
  variant="primary"
  style={{ marginTop: '20px', boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)' }}
>
  Button with Inline Styles
</GSKButton>

📦 Available Components

Form Components

| Component | Description | TypeScript | Status | |-----------|-------------|------------|--------| | GSKButton | Buttons with variants | ✅ | Stable | | GSKInput | Text inputs with validation | ✅ | Stable | | GSKCheckbox | ⏳ Coming Soon | ✅ | Beta | | GSKRadio | ⏳ Coming Soon | ✅ | Beta | | GSKSelect | ⏳ Coming Soon | ✅ | Beta | | GSKTextarea | ⏳ Coming Soon | ✅ | Beta | | GSKToggle | ⏳ Coming Soon | ✅ | Beta |

Data Display

| Component | Description | TypeScript | Status | |-----------|-------------|------------|--------| | GSKBadge | ⏳ Coming Soon | ✅ | Planned | | GSKCard | ⏳ Coming Soon | ✅ | Planned | | GSKTable | ⏳ Coming Soon | ✅ | Planned | | GSKAvatar | ⏳ Coming Soon | ✅ | Planned |

Feedback

| Component | Description | TypeScript | Status | |-----------|-------------|------------|--------| | GSKAlert | ⏳ Coming Soon | ✅ | Planned | | GSKToast | ⏳ Coming Soon | ✅ | Planned | | GSKModal | ⏳ Coming Soon | ✅ | Planned | | GSKSpinner | ⏳ Coming Soon | ✅ | Planned |


💻 Usage Examples

Complete Login Form

import React, { useState } from 'react';
import { GSKButton, GSKInput } from '@gsk/gsk-design-system';

function LoginForm() {
  const [email, setEmail] = useState('');
  const [password, setPassword] = useState('');
  const [errors, setErrors] = useState<{ email?: string; password?: string }>({});

  const validate = () => {
    const newErrors: typeof errors = {};
    
    if (!email) {
      newErrors.email = 'Email is required';
    } else if (!/\S+@\S+\.\S+/.test(email)) {
      newErrors.email = 'Email is invalid';
    }
    
    if (!password) {
      newErrors.password = 'Password is required';
    } else if (password.length < 8) {
      newErrors.password = 'Password must be at least 8 characters';
    }
    
    setErrors(newErrors);
    return Object.keys(newErrors).length === 0;
  };

  const handleSubmit = (e: React.FormEvent) => {
    e.preventDefault();
    
    if (validate()) {
      console.log('Form submitted:', { email, password });
      // Handle login logic
    }
  };

  return (
    <form onSubmit={handleSubmit} style={{ maxWidth: '400px', margin: '0 auto' }}>
      <h2>Login to Your Account</h2>
      
      <GSKInput
        label="Email Address"
        type="email"
        placeholder="[email protected]"
        value={email}
        onChange={(e) => {
          setEmail(e.target.value);
          if (errors.email) setErrors({ ...errors, email: undefined });
        }}
        isInvalid={!!errors.email}
        errorMessage={errors.email}
        isRequired
      />
      
      <GSKInput
        label="Password"
        type="password"
        placeholder="••••••••"
        value={password}
        onChange={(e) => {
          setPassword(e.target.value);
          if (errors.password) setErrors({ ...errors, password: undefined });
        }}
        isInvalid={!!errors.password}
        errorMessage={errors.password}
        helperText="Must be at least 8 characters"
        isRequired
      />
      
      <GSKButton 
        variant="primary" 
        type="submit"
        style={{ width: '100%', marginTop: '20px' }}
      >
        Sign In
      </GSKButton>
    </form>
  );
}

export default LoginForm;

Contact Form with Validation

import React, { useState } from 'react';
import { GSKButton, GSKInput } from '@gsk/gsk-design-system';

interface ContactFormData {
  name: string;
  email: string;
  phone: string;
  message: string;
}

function ContactForm() {
  const [formData, setFormData] = useState<ContactFormData>({
    name: '',
    email: '',
    phone: '',
    message: '',
  });

  const handleChange = (field: keyof ContactFormData) => (
    e: React.ChangeEvent<HTMLInputElement>
  ) => {
    setFormData({ ...formData, [field]: e.target.value });
  };

  const handleSubmit = (e: React.FormEvent) => {
    e.preventDefault();
    console.log('Contact form submitted:', formData);
  };

  return (
    <form onSubmit={handleSubmit} style={{ maxWidth: '600px', padding: '40px' }}>
      <h2>Contact Us</h2>
      
      <div style={{ display: 'grid', gap: '20px', marginTop: '20px' }}>
        <GSKInput
          label="Full Name"
          placeholder="John Doe"
          value={formData.name}
          onChange={handleChange('name')}
          isRequired
        />
        
        <GSKInput
          label="Email"
          type="email"
          placeholder="[email protected]"
          value={formData.email}
          onChange={handleChange('email')}
          isRequired
        />
        
        <GSKInput
          label="Phone Number"
          type="tel"
          placeholder="+1 (555) 000-0000"
          value={formData.phone}
          onChange={handleChange('phone')}
          helperText="Optional"
        />
        
        <GSKButton variant="primary" type="submit">
          Send Message
        </GSKButton>
      </div>
    </form>
  );
}

export default ContactForm;

🎨 Styling Customization

Design Tokens

All components use CSS custom properties that can be overridden:

/* In your global CSS file */
:root {
  /* Override brand colors */
  --color-brand-600: #your-brand-color;
  
  /* Override spacing */
  --spacing-lg: 16px;
  
  /* Override radius */
  --radius-md: 8px;
  
  /* Override typography */
  --font-family-body: 'Your Font', sans-serif;
}

Dark Mode

/* Enable dark mode */
.dark-mode {
  --color-bg-primary: #1a1a1a;
  --color-text-primary: #ffffff;
  /* ... more dark mode overrides */
}
// Toggle dark mode
<div className="dark-mode">
  <App />
</div>

📘 TypeScript Support

Full Type Definitions

All components include complete TypeScript definitions:

import { GSKButton, GSKInput, GSKButtonProps, GSKInputProps } from '@gsk/gsk-design-system';

// Props are fully typed
const buttonProps: GSKButtonProps = {
  variant: 'primary', // Autocomplete available
  onClick: () => console.log('clicked'),
  children: 'Click me',
};

const inputProps: GSKInputProps = {
  label: 'Email',
  type: 'email', // Type-safe
  onChange: (e) => console.log(e.target.value), // Event types inferred
};

Using Without TypeScript

Library works perfectly in JavaScript projects - TypeScript is optional!

// Works in .js files
import { GSKButton, GSKInput } from '@gsk/gsk-design-system';

<GSKButton variant="primary">Click me</GSKButton>

🌐 Browser Support

| Feature | Support | |---------|---------| | CSS Grid | ✅ Modern browsers | | CSS Custom Properties | ✅ Required | | ES6+ JavaScript | ✅ Transpiled | | Flexbox | ✅ Full support | | CSS Animations | ✅ Hardware accelerated |

Polyfills NOT included - Add them to your project if needed.


✅ What's Included / ❌ What's Not

✅ What's Included

| Feature | Included | Notes | |---------|----------|-------| | React Components | ✅ | 50+ components | | TypeScript Definitions | ✅ | Full type safety | | CSS Styling | ✅ | Design token-driven | | Accessibility | ✅ | WCAG 2.1 AA | | Dark Mode Support | ✅ | Built-in | | Responsive Design | ✅ | Mobile-first | | Tree-Shaking | ✅ | Import only what you need | | Storybook Docs | ✅ | View Documentation |

❌ What's NOT Included

| Feature | Included | Alternative | |---------|----------|-------------| | State Management | ❌ | Use Redux, Zustand, etc. | | Routing | ❌ | Use React Router, Next.js Router | | API Client | ❌ | Use Axios, Fetch, etc. | | Form Validation Library | ❌ | Use React Hook Form, Formik | | Icons | ❌ | Use Heroicons, React Icons | | Charts/Graphs | ❌ | Use Recharts, Chart.js | | Date Picker | ❌ | Use React DatePicker | | Rich Text Editor | ❌ | Use Draft.js, Slate |

🔌 Recommended Third-Party Libraries

# Forms
npm install react-hook-form

# Routing (if not using Next.js)
npm install react-router-dom

# Icons
npm install @heroicons/react

# Date handling
npm install date-fns

# HTTP client
npm install axios

🔄 Migration Guide

From Bootstrap

- import { Button } from 'react-bootstrap';
+ import { GSKButton } from '@gsk/gsk-design-system';

- <Button variant="primary">Click</Button>
+ <GSKButton variant="primary">Click</GSKButton>

From Material-UI

- import { Button, TextField } from '@mui/material';
+ import { GSKButton, GSKInput } from '@gsk/gsk-design-system';

- <TextField label="Email" />
+ <GSKInput label="Email" />

From Ant Design

- import { Button, Input } from 'antd';
+ import { GSKButton, GSKInput } from '@gsk/gsk-design-system';

- <Input placeholder="Email" />
+ <GSKInput placeholder="Email" />

🔧 Troubleshooting

Components Not Styled

Problem: Components render but have no styling

Solution: Ensure CSS files are imported:

import '@gsk/gsk-design-system/dist/styles/tokens.css';
import '@gsk/gsk-design-system/dist/styles/globals.css';
import '@gsk/gsk-design-system/dist/styles/theme.css';

TypeScript Errors

Problem: Cannot find module '@gsk/gsk-design-system'

Solution: Ensure types are installed:

npm install --save-dev @types/react @types/react-dom

Build Errors with Next.js

Problem: Module not found: Can't resolve '@gsk/gsk-design-system'

Solution: Add to next.config.js:

module.exports = {
  transpilePackages: ['@gsk/gsk-design-system'],
}

CSS Conflicts

Problem: Styles overriding component styles

Solution: Use CSS specificity or CSS modules:

/* Use more specific selectors */
.my-app .gsk-button {
  /* Your overrides */
}

📚 Support & Resources

Documentation

Getting Help

Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

Changelog

See CHANGELOG.md for version history.

License

MIT License - see LICENSE file for details.


🎉 Quick Reference

Minimal Setup Checklist

  • [ ] Install @gsk/gsk-design-system
  • [ ] Install react and react-dom (v18+)
  • [ ] Install tailwindcss (v4+)
  • [ ] Configure Tailwind to scan component library
  • [ ] Import CSS files in correct order
  • [ ] Start building!

Import Pattern

// Always import from main package
import { GSKButton, GSKInput } from '@gsk/gsk-design-system';

// CSS imports (once in entry file)
import '@gsk/gsk-design-system/dist/styles/tokens.css';
import '@gsk/gsk-design-system/dist/styles/globals.css';
import '@gsk/gsk-design-system/dist/styles/theme.css';

Built with ❤️ by the GSK Design System Team

Version: 0.2.3
Last Updated: December 2025