@bizapps/design-system-testing 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,500 @@
1
+ # TCCE Design System
2
+
3
+ A React component library for the TCCE CRM applications. Provides reusable, consistent UI components built with React, TypeScript, Tailwind CSS, and styled-components.
4
+
5
+ ## Overview
6
+
7
+ This is a **component library** designed to ensure visual and functional consistency across all TCCE CRM frontend applications. It includes:
8
+
9
+ - **50+ reusable components** (Button, Card, Dialog, Table, Forms, etc.)
10
+ - **Design tokens** (colors, typography, spacing, shadows)
11
+ - **Storybook documentation** for all components
12
+ - **TypeScript support** with full type definitions
13
+
14
+ ## Table of Contents
15
+
16
+ - [Prerequisites](#prerequisites)
17
+ - [Quick Start](#quick-start)
18
+ - [Project Structure](#project-structure)
19
+ - [Development](#development)
20
+ - [Building Components](#building-components)
21
+ - [Code Quality](#code-quality)
22
+ - [Testing Components](#testing-components)
23
+ - [Publishing](#publishing)
24
+ - [Contributing](#contributing)
25
+ - [Troubleshooting](#troubleshooting)
26
+
27
+ ---
28
+
29
+ ## Prerequisites
30
+
31
+ | Tool | Version | Notes |
32
+ |------|---------|-------|
33
+ | **Node.js** | v18+ | LTS recommended |
34
+ | **pnpm** | v8+ | Package manager |
35
+ | **Docker** | v20+ | Required for containerized development |
36
+ | **Git** | Any | Version control |
37
+
38
+ ### Docker Network Prerequisite
39
+
40
+ If using Docker Compose, you must create the `tcce-network` network before starting the containers:
41
+
42
+ ```bash
43
+ docker network create tcce-network
44
+ ```
45
+
46
+ **Important:** Always use `docker-compose.dev.yml` when running with Docker Compose.
47
+
48
+ ### Installing pnpm
49
+
50
+ ```bash
51
+ npm install -g pnpm
52
+ ```
53
+
54
+ ---
55
+
56
+ ## Quick Start
57
+
58
+ ### Local Development
59
+
60
+ ```bash
61
+ # Clone the repository
62
+ git clone <repository-url>
63
+ cd tcce-design-system
64
+
65
+ # Install dependencies
66
+ pnpm install
67
+
68
+ # Start Storybook (recommended for development)
69
+ pnpm storybook
70
+
71
+ # OR start Vite dev server
72
+ pnpm dev
73
+ ```
74
+
75
+ **Access:**
76
+ - Storybook: http://localhost:6006
77
+ - Vite Dev: http://localhost:5173
78
+
79
+ ### Using Docker (Recommended for Teams)
80
+
81
+ ```bash
82
+ docker compose -f docker-compose.dev.yml up
83
+ ```
84
+
85
+ ---
86
+
87
+ ## Project Structure
88
+
89
+ ```
90
+ tcce-design-system/
91
+ ├── src/
92
+ │ ├── components/ # All UI components
93
+ │ │ ├── Badge/
94
+ │ │ ├── Button/
95
+ │ │ ├── Can/ # Authorization component
96
+ │ │ ├── Card/
97
+ │ │ ├── Divider/
98
+ │ │ ├── Icon/
99
+ │ │ ├── InfoLabel/
100
+ │ │ ├── Spinner/
101
+ │ │ ├── Stepper/
102
+ │ │ ├── Typography/
103
+ │ │ ├── Token/ # Design tokens showcase
104
+ │ │ ├── forms/ # Form components
105
+ │ │ │ ├── Checkbox/
106
+ │ │ │ ├── FormField/
107
+ │ │ │ ├── PinInput/
108
+ │ │ │ ├── RadioInput/
109
+ │ │ │ └── inputs/ # Input components
110
+ │ │ ├── layout/ # Layout components
111
+ │ │ ├── navigations/ # Navigation components
112
+ │ │ ├── notifications/ # Toast & notifications
113
+ │ │ ├── overlays/ # Dialog, Tooltip, etc.
114
+ │ │ └── Table/ # Data tables
115
+ │ ├── shared/
116
+ │ │ ├── hooks/ # Shared React hooks
117
+ │ │ ├── types/ # Global TypeScript types
118
+ │ │ └── utils/ # Utility functions
119
+ │ ├── globals.css # Global styles
120
+ │ ├── tokens.css # Design tokens CSS
121
+ │ └── main.ts # Library entry point
122
+ ├── .storybook/ # Storybook configuration
123
+ ├── public/ # Static assets (fonts, images)
124
+ ├── dist/ # Build output (generated)
125
+ ├── package.json
126
+ ├── vite.config.ts
127
+ ├── tsconfig.json
128
+ └── eslint.config.js
129
+ ```
130
+
131
+ ### Component Structure
132
+
133
+ Each component follows this pattern:
134
+
135
+ ```
136
+ ComponentName/
137
+ ├── ComponentName.tsx # Main component
138
+ ├── ComponentName.types.ts # TypeScript interfaces
139
+ ├── ComponentName.styles.ts # Styled-components styles
140
+ ├── ComponentName.stories.tsx # Storybook stories
141
+ ├── index.ts # Barrel export
142
+ └── components/ # Sub-components (if needed)
143
+ ```
144
+
145
+ ---
146
+
147
+ ## Development
148
+
149
+ ### Available Scripts
150
+
151
+ | Command | Description |
152
+ |---------|-------------|
153
+ | `pnpm dev` | Start Vite development server |
154
+ | `pnpm storybook` | Start Storybook (recommended) |
155
+ | `pnpm build` | Build library for production |
156
+ | `pnpm build-storybook` | Build static Storybook |
157
+ | `pnpm preview` | Preview production build |
158
+ | `pnpm lint` | Run ESLint |
159
+ | `pnpm lint:fix` | Fix ESLint issues |
160
+ | `pnpm format` | Format with Prettier |
161
+
162
+ ### Environment Variables
163
+
164
+ Create a `.env` file if needed (check `.env.example`):
165
+
166
+ ```bash
167
+ # Not required for local development
168
+ ```
169
+
170
+ ---
171
+
172
+ ## Building Components
173
+
174
+ ### Creating a New Component
175
+
176
+ 1. **Create the component folder:**
177
+
178
+ ```bash
179
+ src/components/controls/MyComponent/
180
+ ```
181
+
182
+ 2. **Create files following the pattern:**
183
+
184
+ ```typescript
185
+ // MyComponent.types.ts
186
+ export interface MyComponentProps {
187
+ variant?: 'primary' | 'secondary';
188
+ // ... other props
189
+ }
190
+ ```
191
+
192
+ ```typescript
193
+ // MyComponent.tsx
194
+ import type { MyComponentProps } from './MyComponent.types';
195
+ import { StyledMyComponent } from './MyComponent.styles';
196
+
197
+ export const MyComponent = ({ variant = 'primary', ...props }: MyComponentProps) => {
198
+ return <StyledMyComponent $variant={variant} {...props} />;
199
+ };
200
+ ```
201
+
202
+ ```typescript
203
+ // MyComponent.styles.ts
204
+ import styled from 'styled-components';
205
+
206
+ export const StyledMyComponent = styled.div<{ $variant: string }>`
207
+ /* Styles using Tailwind and styled-components */
208
+ `;
209
+ ```
210
+
211
+ ```typescript
212
+ // MyComponent.stories.tsx
213
+ import type { Meta, StoryObj } from '@storybook/react';
214
+ import { MyComponent } from './MyComponent';
215
+
216
+ const meta = {
217
+ title: 'Controls/MyComponent',
218
+ component: MyComponent,
219
+ tags: ['autodocs'],
220
+ } satisfies Meta<typeof MyComponent>;
221
+
222
+ export default meta;
223
+ type Story = StoryObj<typeof meta>;
224
+
225
+ export const Primary: Story = {
226
+ args: {
227
+ variant: 'primary',
228
+ },
229
+ };
230
+ ```
231
+
232
+ ```typescript
233
+ // index.ts
234
+ export * from './MyComponent';
235
+ export * from './MyComponent.types';
236
+ ```
237
+
238
+ 3. **Export from main.ts:**
239
+
240
+ ```typescript
241
+ // src/main.ts
242
+ export * from './components/controls/MyComponent';
243
+ ```
244
+
245
+ 4. **Run Storybook to test:**
246
+
247
+ ```bash
248
+ pnpm storybook
249
+ ```
250
+
251
+ ### Component Patterns
252
+
253
+ - **Use styled-components** for component-specific styles
254
+ - **Use Tailwind CSS** via `@apply` in styles
255
+ - **Prefix styled-component props** with `$` (transient props)
256
+ - **Always create TypeScript types** in `.types.ts` files
257
+ - **Create Storybook stories** for documentation and testing
258
+
259
+ ---
260
+
261
+ ## Code Quality
262
+
263
+ ### Linting & Formatting
264
+
265
+ This project uses:
266
+ - **ESLint** - Code linting
267
+ - **Prettier** - Code formatting
268
+ - **TypeScript** - Type safety
269
+
270
+ ### Running Checks
271
+
272
+ ```bash
273
+ # Lint
274
+ pnpm lint
275
+
276
+ # Fix lint issues
277
+ pnpm lint:fix
278
+
279
+ # Format code
280
+ pnpm format
281
+
282
+ # Type check
283
+ pnpm build # (includes tsc)
284
+ ```
285
+
286
+ ### Pre-commit Hooks
287
+
288
+ Ensure you run these before committing:
289
+
290
+ ```bash
291
+ pnpm lint:fix && pnpm format
292
+ ```
293
+
294
+ ### ESLint Rules
295
+
296
+ Key rules enforced:
297
+ - React hooks dependencies must be correct
298
+ - No unused variables
299
+ - Prettier formatting required
300
+
301
+ ---
302
+
303
+ ## Testing Components
304
+
305
+ ### Using Storybook
306
+
307
+ Storybook is the primary way to test components:
308
+
309
+ ```bash
310
+ pnpm storybook
311
+ ```
312
+
313
+ - Browse components at http://localhost:6006
314
+ - Use **Controls** panel to test props
315
+ - Use **Actions** panel to see event handlers
316
+ - Check **Accessibility** tab for a11y issues
317
+
318
+ ### Component Story Format
319
+
320
+ Write stories following CSF (Component Story Format):
321
+
322
+ ```typescript
323
+ // ComponentName.stories.tsx
324
+ import type { Meta, StoryObj } from '@storybook/react';
325
+ import { ComponentName } from './ComponentName';
326
+
327
+ const meta = {
328
+ title: 'Category/ComponentName',
329
+ component: ComponentName,
330
+ parameters: {
331
+ layout: 'centered',
332
+ },
333
+ tags: ['autodocs'],
334
+ argTypes: {
335
+ variant: { control: 'select', options: ['primary', 'secondary'] },
336
+ },
337
+ } satisfies Meta<typeof ComponentName>;
338
+
339
+ export default meta;
340
+ type Story = StoryObj<typeof meta>;
341
+
342
+ export const Primary: Story = {
343
+ args: {
344
+ variant: 'primary',
345
+ label: 'Click me',
346
+ },
347
+ };
348
+
349
+ export const Secondary: Story = {
350
+ args: {
351
+ variant: 'secondary',
352
+ label: 'Cancel',
353
+ },
354
+ };
355
+ ```
356
+
357
+ ---
358
+
359
+ ## Publishing
360
+
361
+ ### Building for npm
362
+
363
+ ```bash
364
+ # Build the library
365
+ pnpm build
366
+
367
+ # Check dist folder
368
+ ls dist/
369
+ ```
370
+
371
+ ### Publish to npm
372
+
373
+ ```bash
374
+ # Login to npm
375
+ npm login
376
+
377
+ # Publish
378
+ npm publish
379
+ ```
380
+
381
+ The build outputs:
382
+ - `dist/tcce-design-system-components.js` (ESM)
383
+ - `dist/tcce-design-system-components.umd.cjs` (UMD)
384
+ - `dist/tcce-design-system-components.css`
385
+ - Type definitions via `vite-plugin-dts`
386
+
387
+ ### Consuming in Other Projects
388
+
389
+ ```bash
390
+ # Install from npm (when published)
391
+ pnpm add tcce-design-system
392
+
393
+ # Or from local path
394
+ pnpm add ../tcce-design-system
395
+ ```
396
+
397
+ ```typescript
398
+ // Usage
399
+ import { Button, Card } from 'tcce-design-system';
400
+ import 'tcce-design-system/dist/tcce-design-system-components.css';
401
+ ```
402
+
403
+ ---
404
+
405
+ ## Contributing
406
+
407
+ ### Workflow
408
+
409
+ 1. **Create a branch:**
410
+ ```bash
411
+ git checkout -b feature/component-name
412
+ ```
413
+
414
+ 2. **Make changes:**
415
+ - Follow component patterns
416
+ - Add Storybook stories
417
+ - Update types
418
+
419
+ 3. **Run quality checks:**
420
+ ```bash
421
+ pnpm lint:fix
422
+ pnpm format
423
+ pnpm build
424
+ ```
425
+
426
+ 4. **Commit and push:**
427
+ ```bash
428
+ git add .
429
+ git commit -m "feat: add new component"
430
+ git push origin feature/component-name
431
+ ```
432
+
433
+ 5. **Create Pull Request**
434
+
435
+ ### Coding Standards
436
+
437
+ - Use **TypeScript** for everything
438
+ - Use **styled-components** for styling
439
+ - Use **Tailwind CSS** utilities via `@apply`
440
+ - Follow existing component patterns
441
+ - Write **stories** for all components
442
+ - Use **transient props** (`$prop`) in styled-components
443
+ - **No comments** unless absolutely necessary
444
+
445
+ ### Versioning
446
+
447
+ This project uses [Semantic Versioning](https://semver.org/):
448
+
449
+ - **MAJOR**: Breaking changes
450
+ - **MINOR**: New features (backward compatible)
451
+ - **PATCH**: Bug fixes
452
+
453
+ Update version in `package.json` before publishing.
454
+
455
+ ---
456
+
457
+ ## Troubleshooting
458
+
459
+ ### Common Issues
460
+
461
+ **Port already in use:**
462
+ ```bash
463
+ # Find and kill process on port 6006
464
+ lsof -i :6006
465
+ kill -9 <PID>
466
+ ```
467
+
468
+ **Dependencies issues:**
469
+ ```bash
470
+ rm -rf node_modules
471
+ pnpm install
472
+ ```
473
+
474
+ **Docker build fails:**
475
+ ```bash
476
+ docker build --no-cache -t tcce-design-system .
477
+ ```
478
+
479
+ **TypeScript errors:**
480
+ ```bash
481
+ # Check for type errors
482
+ npx tsc --noEmit
483
+ ```
484
+
485
+ ### Getting Help
486
+
487
+ - Check Storybook docs: http://localhost:6006
488
+ - Review existing component patterns
489
+ - Contact: bizapps@tcce.biz
490
+
491
+ ---
492
+
493
+ ## License
494
+
495
+ MIT License
496
+
497
+ ## Team
498
+
499
+ - **Author:** BizAppsTotal <bizapps@tcce.biz>
500
+ - **Version:** 0.3.24
package/dist/main.cjs ADDED
@@ -0,0 +1,64 @@
1
+ 'use strict';
2
+
3
+ require('react');
4
+ var classVarianceAuthority = require('class-variance-authority');
5
+ var radixUi = require('radix-ui');
6
+ var clsx = require('clsx');
7
+ var tailwindMerge = require('tailwind-merge');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ // src/components/ui/Button/button.tsx
11
+ function cn(...inputs) {
12
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
13
+ }
14
+ var buttonVariants = classVarianceAuthority.cva(
15
+ "group/button inline-flex shrink-0 items-center justify-center gap-2 rounded-md border border-transparent bg-clip-padding text-sm font-semibold whitespace-nowrap transition-all duration-150 outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/30 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0",
16
+ {
17
+ variants: {
18
+ variant: {
19
+ primary: "bg-primary text-primary-foreground hover:bg-primary/80 focus-visible:ring-primary/30",
20
+ secondary: "bg-secondary text-secondary-foreground hover:bg-[var(--color-orange-700)] focus-visible:ring-secondary/30",
21
+ cancel: "bg-destructive text-secondary-foreground hover:bg-[var(--color-red-600)] focus-visible:ring-destructive/30",
22
+ outline: "border-2 border-white bg-transparent text-white hover:bg-white hover:text-[var(--color-main-orange-primary)] focus-visible:ring-white/30",
23
+ ghost: "bg-transparent text-foreground hover:bg-[var(--color-orange-100)] hover:text-[var(--color-main-orange-primary)] focus-visible:ring-ring/30"
24
+ },
25
+ size: {
26
+ sm: "h-8 px-3 text-xs",
27
+ md: "h-9 px-4 text-sm",
28
+ lg: "h-10 px-6 text-sm",
29
+ "icon-sm": "size-8 rounded-full p-0"
30
+ }
31
+ },
32
+ defaultVariants: {
33
+ variant: "primary",
34
+ size: "md"
35
+ }
36
+ }
37
+ );
38
+ function Button({
39
+ className,
40
+ variant = "primary",
41
+ size = "md",
42
+ asChild = false,
43
+ isLoading = false,
44
+ children,
45
+ ...props
46
+ }) {
47
+ const Comp = asChild ? radixUi.Slot.Root : "button";
48
+ return /* @__PURE__ */ jsxRuntime.jsx(
49
+ Comp,
50
+ {
51
+ "data-slot": "button",
52
+ "data-variant": variant,
53
+ "data-size": size,
54
+ className: cn(buttonVariants({ variant, size, className })),
55
+ ...props,
56
+ children
57
+ }
58
+ );
59
+ }
60
+
61
+ exports.Button = Button;
62
+ exports.buttonVariants = buttonVariants;
63
+ //# sourceMappingURL=main.cjs.map
64
+ //# sourceMappingURL=main.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/utils.ts","../src/components/ui/Button/button.tsx"],"names":["twMerge","clsx","cva","Slot","jsx"],"mappings":";;;;;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAOA,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACCA,IAAM,cAAA,GAAiBC,0BAAA;AAAA,EACrB,4kBAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACL,OAAA,EACI,sFAAA;AAAA,QACJ,SAAA,EACI,2GAAA;AAAA,QACJ,MAAA,EACI,4GAAA;AAAA,QACJ,OAAA,EACI,0IAAA;AAAA,QACJ,KAAA,EACI;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACF,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,mBAAA;AAAA,QACJ,SAAA,EAAW;AAAA;AACf,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAEA,SAAS,MAAA,CAAO;AAAA,EACZ,SAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,OAAA,GAAU,KAAA;AAAA,EACV,SAAA,GAAY,KAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACP,CAAA,EAIO;AACL,EAAA,MAAM,IAAA,GAAO,OAAA,GAAUC,YAAA,CAAK,IAAA,GAAO,QAAA;AAEnC,EAAA,uBACEC,cAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,WAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,MACzD,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ","file":"main.cjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center gap-2 rounded-md border border-transparent bg-clip-padding text-sm font-semibold whitespace-nowrap transition-all duration-150 outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/30 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n primary:\n 'bg-primary text-primary-foreground hover:bg-primary/80 focus-visible:ring-primary/30',\n secondary:\n 'bg-secondary text-secondary-foreground hover:bg-[var(--color-orange-700)] focus-visible:ring-secondary/30',\n cancel:\n 'bg-destructive text-secondary-foreground hover:bg-[var(--color-red-600)] focus-visible:ring-destructive/30',\n outline:\n 'border-2 border-white bg-transparent text-white hover:bg-white hover:text-[var(--color-main-orange-primary)] focus-visible:ring-white/30',\n ghost: \n 'bg-transparent text-foreground hover:bg-[var(--color-orange-100)] hover:text-[var(--color-main-orange-primary)] focus-visible:ring-ring/30',\n },\n size: {\n sm: 'h-8 px-3 text-xs',\n md: 'h-9 px-4 text-sm',\n lg: 'h-10 px-6 text-sm',\n 'icon-sm': 'size-8 rounded-full p-0',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n)\n\nfunction Button({\n className,\n variant = 'primary',\n size = 'md',\n asChild = false,\n isLoading = false,\n children,\n ...props\n}: React.ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n isLoading?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n >\n {children}\n </Comp>\n )\n}\n\nexport { Button, buttonVariants }\n"]}
package/dist/main.css ADDED
@@ -0,0 +1,215 @@
1
+ /* src/styles/globals.css */
2
+ @font-face {
3
+ font-family: "Dax";
4
+ src: url(https://dibt9vplwriap.cloudfront.net/dax-regular/dax-regular.ttf) format("truetype");
5
+ font-weight: 400;
6
+ font-style: normal;
7
+ font-display: swap;
8
+ }
9
+ @font-face {
10
+ font-family: "Dax";
11
+ src: url(https://dibt9vplwriap.cloudfront.net/Dax-Bold/Dax-Bold.otf) format("opentype");
12
+ font-weight: 700;
13
+ font-style: normal;
14
+ font-display: swap;
15
+ }
16
+ @font-face {
17
+ font-family: "Helvetica Neue";
18
+ src: url(https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueUltraLight.otf) format("opentype");
19
+ font-weight: 200;
20
+ font-style: normal;
21
+ font-display: swap;
22
+ }
23
+ @font-face {
24
+ font-family: "Helvetica Neue";
25
+ src: url(https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueUltraLightItalic.otf) format("opentype");
26
+ font-weight: 200;
27
+ font-style: italic;
28
+ font-display: swap;
29
+ }
30
+ @font-face {
31
+ font-family: "Helvetica Neue";
32
+ src: url(https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueThin.otf) format("opentype");
33
+ font-weight: 100;
34
+ font-style: normal;
35
+ font-display: swap;
36
+ }
37
+ @font-face {
38
+ font-family: "Helvetica Neue";
39
+ src: url(https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueThinItalic.otf) format("opentype");
40
+ font-weight: 100;
41
+ font-style: italic;
42
+ font-display: swap;
43
+ }
44
+ @font-face {
45
+ font-family: "Helvetica Neue";
46
+ src: url(https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueLight.otf) format("opentype");
47
+ font-weight: 300;
48
+ font-style: normal;
49
+ font-display: swap;
50
+ }
51
+ @font-face {
52
+ font-family: "Helvetica Neue";
53
+ src: url(https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueLightItalic.otf) format("opentype");
54
+ font-weight: 300;
55
+ font-style: italic;
56
+ font-display: swap;
57
+ }
58
+ @font-face {
59
+ font-family: "Helvetica Neue";
60
+ src: url(https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueRoman.otf) format("opentype");
61
+ font-weight: 400;
62
+ font-style: normal;
63
+ font-display: swap;
64
+ }
65
+ @font-face {
66
+ font-family: "Helvetica Neue";
67
+ src: url(https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueItalic.ttf) format("truetype");
68
+ font-weight: 400;
69
+ font-style: italic;
70
+ font-display: swap;
71
+ }
72
+ @font-face {
73
+ font-family: "Helvetica Neue";
74
+ src: url(https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueMedium.otf) format("opentype");
75
+ font-weight: 500;
76
+ font-style: normal;
77
+ font-display: swap;
78
+ }
79
+ @font-face {
80
+ font-family: "Helvetica Neue";
81
+ src: url(https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueMediumItalic.otf) format("opentype");
82
+ font-weight: 500;
83
+ font-style: italic;
84
+ font-display: swap;
85
+ }
86
+ @font-face {
87
+ font-family: "Helvetica Neue";
88
+ src: url(https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueBold.otf) format("opentype");
89
+ font-weight: 700;
90
+ font-style: normal;
91
+ font-display: swap;
92
+ }
93
+ @font-face {
94
+ font-family: "Helvetica Neue";
95
+ src: url(https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueBoldItalic.otf) format("opentype");
96
+ font-weight: 700;
97
+ font-style: italic;
98
+ font-display: swap;
99
+ }
100
+ @font-face {
101
+ font-family: "Helvetica Neue";
102
+ src: url(https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueHeavy.otf) format("opentype");
103
+ font-weight: 800;
104
+ font-style: normal;
105
+ font-display: swap;
106
+ }
107
+ @font-face {
108
+ font-family: "Helvetica Neue";
109
+ src: url(https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueHeavyItalic.otf) format("opentype");
110
+ font-weight: 800;
111
+ font-style: italic;
112
+ font-display: swap;
113
+ }
114
+ @font-face {
115
+ font-family: "Helvetica Neue";
116
+ src: url(https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueBlack.otf) format("opentype");
117
+ font-weight: 900;
118
+ font-style: normal;
119
+ font-display: swap;
120
+ }
121
+ @font-face {
122
+ font-family: "Helvetica Neue";
123
+ src: url(https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueBlackItalic.otf) format("opentype");
124
+ font-weight: 900;
125
+ font-style: italic;
126
+ font-display: swap;
127
+ }
128
+ @import "tailwindcss";
129
+ @import "tw-animate-css";
130
+ @import "shadcn/tailwind.css";
131
+ @import "./tokens.css";
132
+ @import "@fontsource-variable/inter";
133
+ @custom-variant dark (&:is(.dark *));
134
+ @theme inline { --color-main-blue-primary: var(--color-main-blue-primary); --color-main-orange-primary: var(--color-main-orange-primary); --color-main-grey: var(--color-main-grey); --color-main-alternative: var(--color-main-alternative); --color-main-alternative-secondary: var(--color-main-alternative-secondary); --color-main-positive-state: var(--color-main-positive-state); --color-main-warning-state: var(--color-main-warning-state); --color-main-yellow-primary: var(--color-main-yellow-primary); --color-main-white: var(--color-main-white); --color-main-black: var(--color-main-black); --color-main-light-borders: var(--color-main-light-borders); --color-main-input-borders: var(--color-main-input-borders); --color-dark-100: var(--color-dark-100); --color-dark-200: var(--color-dark-200); --color-dark-300: var(--color-dark-300); --color-dark-400: var(--color-dark-400); --color-dark-500: var(--color-dark-500); --color-dark-600: var(--color-dark-600); --color-dark-700: var(--color-dark-700); --color-dark-800: var(--color-dark-800); --color-dark-900: var(--color-dark-900); --color-light-100: var(--color-light-100); --color-light-200: var(--color-light-200); --color-light-300: var(--color-light-300); --color-light-400: var(--color-light-400); --color-light-500: var(--color-light-500); --color-light-600: var(--color-light-600); --color-light-700: var(--color-light-700); --color-light-800: var(--color-light-800); --color-light-900: var(--color-light-900); --color-light-1000: var(--color-light-1000); --color-blue-100: var(--color-blue-100); --color-blue-200: var(--color-blue-200); --color-blue-300: var(--color-blue-300); --color-blue-400: var(--color-blue-400); --color-blue-500: var(--color-blue-500); --color-blue-600: var(--color-blue-600); --color-blue-700: var(--color-blue-700); --color-blue-800: var(--color-blue-800); --color-blue-900: var(--color-blue-900); --color-blue-1000: var(--color-blue-1000); --color-red-100: var(--color-red-100); --color-red-200: var(--color-red-200); --color-red-300: var(--color-red-300); --color-red-400: var(--color-red-400); --color-red-500: var(--color-red-500); --color-red-600: var(--color-red-600); --color-red-700: var(--color-red-700); --color-red-800: var(--color-red-800); --color-red-900: var(--color-red-900); --color-red-1000: var(--color-red-1000); --color-orange-100: var(--color-orange-100); --color-orange-200: var(--color-orange-200); --color-orange-300: var(--color-orange-300); --color-orange-400: var(--color-orange-400); --color-orange-500: var(--color-orange-500); --color-orange-700: var(--color-orange-700); --color-orange-800: var(--color-orange-800); --color-orange-900: var(--color-orange-900); --color-orange-1000: var(--color-orange-1000); --color-yellow-100: var(--color-yellow-100); --color-yellow-200: var(--color-yellow-200); --color-yellow-300: var(--color-yellow-300); --color-yellow-400: var(--color-yellow-400); --color-yellow-500: var(--color-yellow-500); --color-yellow-600: var(--color-yellow-600); --color-yellow-700: var(--color-yellow-700); --color-yellow-800: var(--color-yellow-800); --color-yellow-900: var(--color-yellow-900); --color-yellow-1000: var(--color-yellow-1000); --color-green-100: var(--color-green-100); --color-green-200: var(--color-green-200); --color-green-300: var(--color-green-300); --color-green-400: var(--color-green-400); --color-green-500: var(--color-green-500); --color-green-600: var(--color-green-600); --color-green-700: var(--color-green-700); --color-green-800: var(--color-green-800); --color-green-900: var(--color-green-900); --color-green-1000: var(--color-green-1000); --color-purple-100: var(--color-purple-100); --color-purple-200: var(--color-purple-200); --color-purple-300: var(--color-purple-300); --color-purple-400: var(--color-purple-400); --color-purple-500: var(--color-purple-500); --color-purple-600: var(--color-purple-600); --color-purple-700: var(--color-purple-700); --color-purple-800: var(--color-purple-800); --color-purple-900: var(--color-purple-900); --color-purple-1000: var(--color-purple-1000); --border-radius-button: var(--border-radius-button); --border-radius-secondary-button: var(--border-radius-secondary-button); --border-radius-card: var(--border-radius-card); --border-radius-article: var(--border-radius-article); --border-radius-outline: var(--border-radius-outline); --shadow-black-card: var(--shadow-black-card); --shadow-hover-black-card: var(--shadow-hover-black-card); --shadow-black-button: var(--shadow-black-button); --shadow-hover-black-button: var(--shadow-hover-black-button); --shadow-hover-orange-button: var(--shadow-hover-orange-button); --font-heading: var(--font-sans); --font-sans: "Inter Variable", sans-serif; --color-sidebar-ring: var(--sidebar-ring); --color-sidebar-border: var(--sidebar-border); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); --color-sidebar-primary: var(--sidebar-primary); --color-sidebar-foreground: var(--sidebar-foreground); --color-sidebar: var(--sidebar); --color-chart-5: var(--chart-5); --color-chart-4: var(--chart-4); --color-chart-3: var(--chart-3); --color-chart-2: var(--chart-2); --color-chart-1: var(--chart-1); --color-ring: var(--ring); --color-input: var(--input); --color-border: var(--border); --color-destructive: var(--destructive); --color-accent-foreground: var(--accent-foreground); --color-accent: var(--accent); --color-muted-foreground: var(--muted-foreground); --color-muted: var(--muted); --color-secondary-foreground: var(--secondary-foreground); --color-secondary: var(--secondary); --color-primary-foreground: var(--primary-foreground); --color-primary: var(--primary); --color-popover-foreground: var(--popover-foreground); --color-popover: var(--popover); --color-card-foreground: var(--card-foreground); --color-card: var(--card); --color-foreground: var(--foreground); --color-background: var(--background); --radius-sm: calc(var(--radius) * 0.6); --radius-md: calc(var(--radius) * 0.8); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) * 1.4); --radius-2xl: calc(var(--radius) * 1.8); --radius-3xl: calc(var(--radius) * 2.2); --radius-4xl: calc(var(--radius) * 2.6); }
135
+ * {
136
+ scrollbar-width: thin;
137
+ scrollbar-color: var(--color-main-orange-primary) #f1f1f1;
138
+ }
139
+ *::-webkit-scrollbar {
140
+ width: 0.5rem;
141
+ }
142
+ *::-webkit-scrollbar-track {
143
+ background: #f1f1f1;
144
+ border-radius: 0.625rem;
145
+ }
146
+ *::-webkit-scrollbar-thumb {
147
+ background: var(--color-main-orange-primary);
148
+ border-radius: 0.625rem;
149
+ }
150
+ *::-webkit-scrollbar-thumb:hover {
151
+ background: var(--color-main-orange-primary);
152
+ }
153
+ .my-toast {
154
+ font-family:
155
+ "Helvetica Neue",
156
+ Helvetica,
157
+ Arial,
158
+ sans-serif;
159
+ font-size: 1rem;
160
+ font-style: normal;
161
+ font-weight: 400;
162
+ line-height: 176.782%;
163
+ border: none !important;
164
+ box-shadow: var(--shadow-black-card);
165
+ border-radius: var(--border-radius-article) !important;
166
+ }
167
+ [data-sonner-toast][data-type=success] {
168
+ background:
169
+ linear-gradient(
170
+ 135deg,
171
+ var(--color-main-positive-state) 0%,
172
+ var(--color-green-200) 100%) !important;
173
+ color: var(--color-main-white) !important;
174
+ }
175
+ [data-sonner-toast][data-type=error] {
176
+ background:
177
+ linear-gradient(
178
+ 135deg,
179
+ var(--color-main-warning-state) 0%,
180
+ var(--color-red-300) 100%) !important;
181
+ color: var(--color-main-white) !important;
182
+ }
183
+ [data-sonner-toaster] {
184
+ bottom: 6rem !important;
185
+ }
186
+ [data-sonner-toaster][data-position=bottom-center] {
187
+ transform: translateY(-3rem) !important;
188
+ }
189
+ :root {
190
+ --chart-1: oklch(0.87 0 0);
191
+ --chart-2: oklch(0.556 0 0);
192
+ --chart-3: oklch(0.439 0 0);
193
+ --chart-4: oklch(0.371 0 0);
194
+ --chart-5: oklch(0.269 0 0);
195
+ --sidebar: oklch(0.985 0 0);
196
+ --sidebar-foreground: oklch(0.145 0 0);
197
+ --sidebar-primary: oklch(0.205 0 0);
198
+ --sidebar-primary-foreground: oklch(0.985 0 0);
199
+ --sidebar-accent: oklch(0.97 0 0);
200
+ --sidebar-accent-foreground: oklch(0.205 0 0);
201
+ --sidebar-border: oklch(0.922 0 0);
202
+ --sidebar-ring: oklch(0.708 0 0);
203
+ }
204
+ @layer base {
205
+ * {
206
+ @apply border-border outline-ring/50;
207
+ }
208
+ body {
209
+ @apply bg-background text-foreground;
210
+ }
211
+ html {
212
+ @apply font-sans;
213
+ }
214
+ }
215
+ /*# sourceMappingURL=main.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/styles/globals.css"],"sourcesContent":["\n/* ====================================\n\n GLOBALS — single entry point for both build and Storybook\n\n ==================================== */\n\n/* === DAX FONT FAMILY === */\n\n@font-face {\n font-family: 'Dax';\n src: url('https://dibt9vplwriap.cloudfront.net/dax-regular/dax-regular.ttf') format('truetype');\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Dax';\n src: url('https://dibt9vplwriap.cloudfront.net/Dax-Bold/Dax-Bold.otf') format('opentype');\n font-weight: 700;\n font-style: normal;\n font-display: swap;\n}\n\n/* === HELVETICA NEUE FONT FAMILY === */\n\n@font-face {\n font-family: 'Helvetica Neue';\n src: url('https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueUltraLight.otf') format('opentype');\n font-weight: 200;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Helvetica Neue';\n src: url('https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueUltraLightItalic.otf') format('opentype');\n font-weight: 200;\n font-style: italic;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Helvetica Neue';\n src: url('https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueThin.otf') format('opentype');\n font-weight: 100;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Helvetica Neue';\n src: url('https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueThinItalic.otf') format('opentype');\n font-weight: 100;\n font-style: italic;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Helvetica Neue';\n src: url('https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueLight.otf') format('opentype');\n font-weight: 300;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Helvetica Neue';\n src: url('https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueLightItalic.otf') format('opentype');\n font-weight: 300;\n font-style: italic;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Helvetica Neue';\n src: url('https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueRoman.otf') format('opentype');\n font-weight: 400;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Helvetica Neue';\n src: url('https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueItalic.ttf') format('truetype');\n font-weight: 400;\n font-style: italic;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Helvetica Neue';\n src: url('https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueMedium.otf') format('opentype');\n font-weight: 500;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Helvetica Neue';\n src: url('https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueMediumItalic.otf') format('opentype');\n font-weight: 500;\n font-style: italic;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Helvetica Neue';\n src: url('https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueBold.otf') format('opentype');\n font-weight: 700;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Helvetica Neue';\n src: url('https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueBoldItalic.otf') format('opentype');\n font-weight: 700;\n font-style: italic;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Helvetica Neue';\n src: url('https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueHeavy.otf') format('opentype');\n font-weight: 800;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Helvetica Neue';\n src: url('https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueHeavyItalic.otf') format('opentype');\n font-weight: 800;\n font-style: italic;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Helvetica Neue';\n src: url('https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueBlack.otf') format('opentype');\n font-weight: 900;\n font-style: normal;\n font-display: swap;\n}\n\n@font-face {\n font-family: 'Helvetica Neue';\n src: url('https://dibt9vplwriap.cloudfront.net/Helvetica-Neue/HelveticaNeueBlackItalic.otf') format('opentype');\n font-weight: 900;\n font-style: italic;\n font-display: swap;\n}\n\n/* Tailwind (Storybook picks this up; build skips @import 'tailwindcss' via vite) */\n\n@import 'tailwindcss';\n\n@import \"tw-animate-css\";\n\n@import \"shadcn/tailwind.css\";\n\n/* Design Tokens — imported last so TCCE values always win */\n\n@import './tokens.css';\n\n@import \"@fontsource-variable/inter\";\n\n@custom-variant dark (&:is(.dark *));\n\n/* Extend Tailwind with token references */\n\n@theme inline {\n\n /* Main Colors */\n\n --color-main-blue-primary: var(--color-main-blue-primary);\n\n --color-main-orange-primary: var(--color-main-orange-primary);\n\n --color-main-grey: var(--color-main-grey);\n\n --color-main-alternative: var(--color-main-alternative);\n\n --color-main-alternative-secondary: var(--color-main-alternative-secondary);\n\n --color-main-positive-state: var(--color-main-positive-state);\n\n --color-main-warning-state: var(--color-main-warning-state);\n\n --color-main-yellow-primary: var(--color-main-yellow-primary);\n\n --color-main-white: var(--color-main-white);\n\n --color-main-black: var(--color-main-black);\n\n --color-main-light-borders: var(--color-main-light-borders);\n\n --color-main-input-borders: var(--color-main-input-borders);\n\n /* Dark */\n\n --color-dark-100: var(--color-dark-100);\n\n --color-dark-200: var(--color-dark-200);\n\n --color-dark-300: var(--color-dark-300);\n\n --color-dark-400: var(--color-dark-400);\n\n --color-dark-500: var(--color-dark-500);\n\n --color-dark-600: var(--color-dark-600);\n\n --color-dark-700: var(--color-dark-700);\n\n --color-dark-800: var(--color-dark-800);\n\n --color-dark-900: var(--color-dark-900);\n\n /* Light */\n\n --color-light-100: var(--color-light-100);\n\n --color-light-200: var(--color-light-200);\n\n --color-light-300: var(--color-light-300);\n\n --color-light-400: var(--color-light-400);\n\n --color-light-500: var(--color-light-500);\n\n --color-light-600: var(--color-light-600);\n\n --color-light-700: var(--color-light-700);\n\n --color-light-800: var(--color-light-800);\n\n --color-light-900: var(--color-light-900);\n\n --color-light-1000: var(--color-light-1000);\n\n /* Blue */\n\n --color-blue-100: var(--color-blue-100);\n\n --color-blue-200: var(--color-blue-200);\n\n --color-blue-300: var(--color-blue-300);\n\n --color-blue-400: var(--color-blue-400);\n\n --color-blue-500: var(--color-blue-500);\n\n --color-blue-600: var(--color-blue-600);\n\n --color-blue-700: var(--color-blue-700);\n\n --color-blue-800: var(--color-blue-800);\n\n --color-blue-900: var(--color-blue-900);\n\n --color-blue-1000: var(--color-blue-1000);\n\n /* Red */\n\n --color-red-100: var(--color-red-100);\n\n --color-red-200: var(--color-red-200);\n\n --color-red-300: var(--color-red-300);\n\n --color-red-400: var(--color-red-400);\n\n --color-red-500: var(--color-red-500);\n\n --color-red-600: var(--color-red-600);\n\n --color-red-700: var(--color-red-700);\n\n --color-red-800: var(--color-red-800);\n\n --color-red-900: var(--color-red-900);\n\n --color-red-1000: var(--color-red-1000);\n\n /* Orange */\n\n --color-orange-100: var(--color-orange-100);\n\n --color-orange-200: var(--color-orange-200);\n\n --color-orange-300: var(--color-orange-300);\n\n --color-orange-400: var(--color-orange-400);\n\n --color-orange-500: var(--color-orange-500);\n\n --color-orange-700: var(--color-orange-700);\n\n --color-orange-800: var(--color-orange-800);\n\n --color-orange-900: var(--color-orange-900);\n\n --color-orange-1000: var(--color-orange-1000);\n\n /* Yellow */\n\n --color-yellow-100: var(--color-yellow-100);\n\n --color-yellow-200: var(--color-yellow-200);\n\n --color-yellow-300: var(--color-yellow-300);\n\n --color-yellow-400: var(--color-yellow-400);\n\n --color-yellow-500: var(--color-yellow-500);\n\n --color-yellow-600: var(--color-yellow-600);\n\n --color-yellow-700: var(--color-yellow-700);\n\n --color-yellow-800: var(--color-yellow-800);\n\n --color-yellow-900: var(--color-yellow-900);\n\n --color-yellow-1000: var(--color-yellow-1000);\n\n /* Green */\n\n --color-green-100: var(--color-green-100);\n\n --color-green-200: var(--color-green-200);\n\n --color-green-300: var(--color-green-300);\n\n --color-green-400: var(--color-green-400);\n\n --color-green-500: var(--color-green-500);\n\n --color-green-600: var(--color-green-600);\n\n --color-green-700: var(--color-green-700);\n\n --color-green-800: var(--color-green-800);\n\n --color-green-900: var(--color-green-900);\n\n --color-green-1000: var(--color-green-1000);\n\n /* Purple */\n\n --color-purple-100: var(--color-purple-100);\n\n --color-purple-200: var(--color-purple-200);\n\n --color-purple-300: var(--color-purple-300);\n\n --color-purple-400: var(--color-purple-400);\n\n --color-purple-500: var(--color-purple-500);\n\n --color-purple-600: var(--color-purple-600);\n\n --color-purple-700: var(--color-purple-700);\n\n --color-purple-800: var(--color-purple-800);\n\n --color-purple-900: var(--color-purple-900);\n\n --color-purple-1000: var(--color-purple-1000);\n\n /* Border Radius */\n\n --border-radius-button: var(--border-radius-button);\n\n --border-radius-secondary-button: var(--border-radius-secondary-button);\n\n --border-radius-card: var(--border-radius-card);\n\n --border-radius-article: var(--border-radius-article);\n\n --border-radius-outline: var(--border-radius-outline);\n\n /* Shadows */\n\n --shadow-black-card: var(--shadow-black-card);\n\n --shadow-hover-black-card: var(--shadow-hover-black-card);\n\n --shadow-black-button: var(--shadow-black-button);\n\n --shadow-hover-black-button: var(--shadow-hover-black-button);\n\n --shadow-hover-orange-button: var(--shadow-hover-orange-button);\n\n --font-heading: var(--font-sans);\n\n --font-sans: 'Inter Variable', sans-serif;\n\n --color-sidebar-ring: var(--sidebar-ring);\n\n --color-sidebar-border: var(--sidebar-border);\n\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n\n --color-sidebar-accent: var(--sidebar-accent);\n\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n\n --color-sidebar-primary: var(--sidebar-primary);\n\n --color-sidebar-foreground: var(--sidebar-foreground);\n\n --color-sidebar: var(--sidebar);\n\n --color-chart-5: var(--chart-5);\n\n --color-chart-4: var(--chart-4);\n\n --color-chart-3: var(--chart-3);\n\n --color-chart-2: var(--chart-2);\n\n --color-chart-1: var(--chart-1);\n\n --color-ring: var(--ring);\n\n --color-input: var(--input);\n\n --color-border: var(--border);\n\n --color-destructive: var(--destructive);\n\n --color-accent-foreground: var(--accent-foreground);\n\n --color-accent: var(--accent);\n\n --color-muted-foreground: var(--muted-foreground);\n\n --color-muted: var(--muted);\n\n --color-secondary-foreground: var(--secondary-foreground);\n\n --color-secondary: var(--secondary);\n\n --color-primary-foreground: var(--primary-foreground);\n\n --color-primary: var(--primary);\n\n --color-popover-foreground: var(--popover-foreground);\n\n --color-popover: var(--popover);\n\n --color-card-foreground: var(--card-foreground);\n\n --color-card: var(--card);\n\n --color-foreground: var(--foreground);\n\n --color-background: var(--background);\n\n --radius-sm: calc(var(--radius) * 0.6);\n\n --radius-md: calc(var(--radius) * 0.8);\n\n --radius-lg: var(--radius);\n\n --radius-xl: calc(var(--radius) * 1.4);\n\n --radius-2xl: calc(var(--radius) * 1.8);\n\n --radius-3xl: calc(var(--radius) * 2.2);\n\n --radius-4xl: calc(var(--radius) * 2.6);\n\n}\n\n/* ====================================\n\n CUSTOM STYLES\n\n ==================================== */\n\n* {\n\n scrollbar-width: thin;\n\n scrollbar-color: var(--color-main-orange-primary) #f1f1f1;\n\n}\n\n*::-webkit-scrollbar { width: 0.5rem; }\n\n*::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 0.625rem; }\n\n*::-webkit-scrollbar-thumb { background: var(--color-main-orange-primary); border-radius: 0.625rem; }\n\n*::-webkit-scrollbar-thumb:hover { background: var(--color-main-orange-primary); }\n\n.my-toast {\n\n font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n\n font-size: 1rem;\n\n font-style: normal;\n\n font-weight: 400;\n\n line-height: 176.782%;\n\n border: none !important;\n\n box-shadow: var(--shadow-black-card);\n\n border-radius: var(--border-radius-article) !important;\n\n}\n\n[data-sonner-toast][data-type='success'] {\n\n background: linear-gradient(135deg, var(--color-main-positive-state) 0%, var(--color-green-200) 100%) !important;\n\n color: var(--color-main-white) !important;\n\n}\n\n[data-sonner-toast][data-type='error'] {\n\n background: linear-gradient(135deg, var(--color-main-warning-state) 0%, var(--color-red-300) 100%) !important;\n\n color: var(--color-main-white) !important;\n\n}\n\n[data-sonner-toaster] { bottom: 6rem !important; }\n\n[data-sonner-toaster][data-position='bottom-center'] { transform: translateY(-3rem) !important; }\n\n/* shadcn defaults not covered by tokens.css — chart and sidebar only */\n\n:root {\n\n --chart-1: oklch(0.87 0 0);\n\n --chart-2: oklch(0.556 0 0);\n\n --chart-3: oklch(0.439 0 0);\n\n --chart-4: oklch(0.371 0 0);\n\n --chart-5: oklch(0.269 0 0);\n\n --sidebar: oklch(0.985 0 0);\n\n --sidebar-foreground: oklch(0.145 0 0);\n\n --sidebar-primary: oklch(0.205 0 0);\n\n --sidebar-primary-foreground: oklch(0.985 0 0);\n\n --sidebar-accent: oklch(0.97 0 0);\n\n --sidebar-accent-foreground: oklch(0.205 0 0);\n\n --sidebar-border: oklch(0.922 0 0);\n\n --sidebar-ring: oklch(0.708 0 0);\n\n}\n\n\n@layer base {\n * {\n @apply border-border outline-ring/50;\n\n }\n body {\n @apply bg-background text-foreground;\n\n }\n html {\n @apply font-sans;\n\n }\n\n}"],"mappings":"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","names":[]}
@@ -0,0 +1,15 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as class_variance_authority_types from 'class-variance-authority/types';
3
+ import * as React from 'react';
4
+ import { VariantProps } from 'class-variance-authority';
5
+
6
+ declare const buttonVariants: (props?: ({
7
+ variant?: "primary" | "secondary" | "cancel" | "outline" | "ghost" | null | undefined;
8
+ size?: "sm" | "md" | "lg" | "icon-sm" | null | undefined;
9
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
10
+ declare function Button({ className, variant, size, asChild, isLoading, children, ...props }: React.ComponentProps<'button'> & VariantProps<typeof buttonVariants> & {
11
+ asChild?: boolean;
12
+ isLoading?: boolean;
13
+ }): react_jsx_runtime.JSX.Element;
14
+
15
+ export { Button, buttonVariants };
package/dist/main.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as class_variance_authority_types from 'class-variance-authority/types';
3
+ import * as React from 'react';
4
+ import { VariantProps } from 'class-variance-authority';
5
+
6
+ declare const buttonVariants: (props?: ({
7
+ variant?: "primary" | "secondary" | "cancel" | "outline" | "ghost" | null | undefined;
8
+ size?: "sm" | "md" | "lg" | "icon-sm" | null | undefined;
9
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
10
+ declare function Button({ className, variant, size, asChild, isLoading, children, ...props }: React.ComponentProps<'button'> & VariantProps<typeof buttonVariants> & {
11
+ asChild?: boolean;
12
+ isLoading?: boolean;
13
+ }): react_jsx_runtime.JSX.Element;
14
+
15
+ export { Button, buttonVariants };
package/dist/main.js ADDED
@@ -0,0 +1,61 @@
1
+ import 'react';
2
+ import { cva } from 'class-variance-authority';
3
+ import { Slot } from 'radix-ui';
4
+ import { clsx } from 'clsx';
5
+ import { twMerge } from 'tailwind-merge';
6
+ import { jsx } from 'react/jsx-runtime';
7
+
8
+ // src/components/ui/Button/button.tsx
9
+ function cn(...inputs) {
10
+ return twMerge(clsx(inputs));
11
+ }
12
+ var buttonVariants = cva(
13
+ "group/button inline-flex shrink-0 items-center justify-center gap-2 rounded-md border border-transparent bg-clip-padding text-sm font-semibold whitespace-nowrap transition-all duration-150 outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/30 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0",
14
+ {
15
+ variants: {
16
+ variant: {
17
+ primary: "bg-primary text-primary-foreground hover:bg-primary/80 focus-visible:ring-primary/30",
18
+ secondary: "bg-secondary text-secondary-foreground hover:bg-[var(--color-orange-700)] focus-visible:ring-secondary/30",
19
+ cancel: "bg-destructive text-secondary-foreground hover:bg-[var(--color-red-600)] focus-visible:ring-destructive/30",
20
+ outline: "border-2 border-white bg-transparent text-white hover:bg-white hover:text-[var(--color-main-orange-primary)] focus-visible:ring-white/30",
21
+ ghost: "bg-transparent text-foreground hover:bg-[var(--color-orange-100)] hover:text-[var(--color-main-orange-primary)] focus-visible:ring-ring/30"
22
+ },
23
+ size: {
24
+ sm: "h-8 px-3 text-xs",
25
+ md: "h-9 px-4 text-sm",
26
+ lg: "h-10 px-6 text-sm",
27
+ "icon-sm": "size-8 rounded-full p-0"
28
+ }
29
+ },
30
+ defaultVariants: {
31
+ variant: "primary",
32
+ size: "md"
33
+ }
34
+ }
35
+ );
36
+ function Button({
37
+ className,
38
+ variant = "primary",
39
+ size = "md",
40
+ asChild = false,
41
+ isLoading = false,
42
+ children,
43
+ ...props
44
+ }) {
45
+ const Comp = asChild ? Slot.Root : "button";
46
+ return /* @__PURE__ */ jsx(
47
+ Comp,
48
+ {
49
+ "data-slot": "button",
50
+ "data-variant": variant,
51
+ "data-size": size,
52
+ className: cn(buttonVariants({ variant, size, className })),
53
+ ...props,
54
+ children
55
+ }
56
+ );
57
+ }
58
+
59
+ export { Button, buttonVariants };
60
+ //# sourceMappingURL=main.js.map
61
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/utils.ts","../src/components/ui/Button/button.tsx"],"names":[],"mappings":";;;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACCA,IAAM,cAAA,GAAiB,GAAA;AAAA,EACrB,4kBAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACL,OAAA,EACI,sFAAA;AAAA,QACJ,SAAA,EACI,2GAAA;AAAA,QACJ,MAAA,EACI,4GAAA;AAAA,QACJ,OAAA,EACI,0IAAA;AAAA,QACJ,KAAA,EACI;AAAA,OACR;AAAA,MACA,IAAA,EAAM;AAAA,QACF,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,mBAAA;AAAA,QACJ,SAAA,EAAW;AAAA;AACf,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAEA,SAAS,MAAA,CAAO;AAAA,EACZ,SAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,IAAA;AAAA,EACP,OAAA,GAAU,KAAA;AAAA,EACV,SAAA,GAAY,KAAA;AAAA,EACZ,QAAA;AAAA,EACA,GAAG;AACP,CAAA,EAIO;AACL,EAAA,MAAM,IAAA,GAAO,OAAA,GAAU,IAAA,CAAK,IAAA,GAAO,QAAA;AAEnC,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,cAAA,EAAc,OAAA;AAAA,MACd,WAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,GAAG,cAAA,CAAe,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAC,CAAA;AAAA,MACzD,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ","file":"main.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 items-center justify-center gap-2 rounded-md border border-transparent bg-clip-padding text-sm font-semibold whitespace-nowrap transition-all duration-150 outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/30 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n primary:\n 'bg-primary text-primary-foreground hover:bg-primary/80 focus-visible:ring-primary/30',\n secondary:\n 'bg-secondary text-secondary-foreground hover:bg-[var(--color-orange-700)] focus-visible:ring-secondary/30',\n cancel:\n 'bg-destructive text-secondary-foreground hover:bg-[var(--color-red-600)] focus-visible:ring-destructive/30',\n outline:\n 'border-2 border-white bg-transparent text-white hover:bg-white hover:text-[var(--color-main-orange-primary)] focus-visible:ring-white/30',\n ghost: \n 'bg-transparent text-foreground hover:bg-[var(--color-orange-100)] hover:text-[var(--color-main-orange-primary)] focus-visible:ring-ring/30',\n },\n size: {\n sm: 'h-8 px-3 text-xs',\n md: 'h-9 px-4 text-sm',\n lg: 'h-10 px-6 text-sm',\n 'icon-sm': 'size-8 rounded-full p-0',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n)\n\nfunction Button({\n className,\n variant = 'primary',\n size = 'md',\n asChild = false,\n isLoading = false,\n children,\n ...props\n}: React.ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n isLoading?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n >\n {children}\n </Comp>\n )\n}\n\nexport { Button, buttonVariants }\n"]}
package/package.json ADDED
@@ -0,0 +1,114 @@
1
+ {
2
+ "name": "@bizapps/design-system-testing",
3
+ "publishConfig": {
4
+ "access": "public",
5
+ "registry": "https://registry.npmjs.org"
6
+ },
7
+ "version": "0.4.0",
8
+ "description": "This package provides reusable UI components to ensure consistency across all CRM frontend applications",
9
+ "author": "BizAppsTotal <bizapps@tcce.biz>",
10
+ "type": "module",
11
+ "files": [
12
+ "dist"
13
+ ],
14
+ "main": "./dist/main.cjs",
15
+ "module": "./dist/main.js",
16
+ "types": "./dist/main.d.ts",
17
+ "exports": {
18
+ ".": {
19
+ "types": "./dist/main.d.ts",
20
+ "import": "./dist/main.js",
21
+ "require": "./dist/main.cjs"
22
+ },
23
+ "./styles": "./dist/main.css"
24
+ },
25
+ "scripts": {
26
+ "dev": "vite",
27
+ "build": "tsup",
28
+ "build:storybook": "storybook build",
29
+ "type-check": "tsc -p tsconfig.build.json --noEmit",
30
+ "lint": "eslint .",
31
+ "lint:fix": "eslint . --fix",
32
+ "format": "prettier --write .",
33
+ "preview": "vite preview",
34
+ "storybook": "storybook dev -p 6006 --host 0.0.0.0 --no-open",
35
+ "build-storybook": "storybook build"
36
+ },
37
+ "peerDependencies": {
38
+ "@remixicon/react": "^4.6.0",
39
+ "@tailwindcss/vite": "^4.1.13",
40
+ "@tanstack/react-table": "^8.21.3",
41
+ "formik": "^2.4.6",
42
+ "motion": "^12.23.13",
43
+ "react": "^19.1.1",
44
+ "react-dom": "^19.1.1",
45
+ "sonner": "^2.0.7",
46
+ "styled-components": ">=6.1.19",
47
+ "tailwindcss": "^4.1.13",
48
+ "yup": "^1.7.1"
49
+ },
50
+ "devDependencies": {
51
+ "@eslint/js": "^9.39.4",
52
+ "@remixicon/react": "^4.9.0",
53
+ "@storybook/addon-a11y": "^10.2.17",
54
+ "@storybook/addon-docs": "^10.2.17",
55
+ "@storybook/react-vite": "^10.2.17",
56
+ "@tailwindcss/vite": "^4.2.1",
57
+ "@tanstack/react-table": "^8.21.3",
58
+ "@types/node": "^24.12.0",
59
+ "@types/react": "^19.2.14",
60
+ "@types/react-dom": "^19.2.3",
61
+ "@vitejs/plugin-react": "^5.1.4",
62
+ "eslint": "^9.39.4",
63
+ "eslint-config-prettier": "^10.1.8",
64
+ "eslint-plugin-react": "^7.37.5",
65
+ "eslint-plugin-react-hooks": "^5.2.0",
66
+ "eslint-plugin-react-refresh": "^0.4.26",
67
+ "eslint-plugin-storybook": "^10.2.17",
68
+ "formik": "^2.4.9",
69
+ "globals": "^16.5.0",
70
+ "motion": "^12.40.0",
71
+ "prettier": "^3.8.1",
72
+ "prettier-plugin-tailwindcss": "^0.6.14",
73
+ "react": "^19.2.4",
74
+ "react-dom": "^19.2.4",
75
+ "shadcn": "^4.8.1",
76
+ "sonner": "^2.0.7",
77
+ "storybook": "^10.2.17",
78
+ "styled-components": "6.3.6",
79
+ "tailwindcss": "^4.2.1",
80
+ "tsup": "^8.5.1",
81
+ "typescript": "~5.8.3",
82
+ "typescript-eslint": "8.53.0",
83
+ "vite": "^7.3.1",
84
+ "vite-plugin-dts": "^4.5.4",
85
+ "yup": "^1.7.1"
86
+ },
87
+ "packageManager": "pnpm@10.25.0+sha512.5e82639027af37cf832061bcc6d639c219634488e0f2baebe785028a793de7b525ffcd3f7ff574f5e9860654e098fe852ba8ac5dd5cefe1767d23a020a92f501",
88
+ "pnpm": {
89
+ "overrides": {
90
+ "fast-uri": ">=3.1.2",
91
+ "postcss": ">=8.5.10"
92
+ }
93
+ },
94
+ "dependencies": {
95
+ "@fontsource-variable/inter": "^5.2.8",
96
+ "@radix-ui/react-avatar": "^1.1.11",
97
+ "@radix-ui/react-checkbox": "^1.3.3",
98
+ "@radix-ui/react-dialog": "^1.1.15",
99
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
100
+ "@radix-ui/react-label": "^2.1.8",
101
+ "@radix-ui/react-radio-group": "^1.3.8",
102
+ "@radix-ui/react-select": "^2.2.6",
103
+ "@radix-ui/react-separator": "^1.1.8",
104
+ "@radix-ui/react-slot": "^1.2.4",
105
+ "@radix-ui/react-tabs": "^1.1.13",
106
+ "@radix-ui/react-tooltip": "^1.2.8",
107
+ "class-variance-authority": "^0.7.1",
108
+ "clsx": "^2.1.1",
109
+ "lucide-react": "^1.16.0",
110
+ "radix-ui": "^1.4.3",
111
+ "tailwind-merge": "^3.6.0",
112
+ "tw-animate-css": "^1.4.0"
113
+ }
114
+ }