feat(web): scaffold Next.js 16 dashboard with design system and auth client (#82)
Co-authored-by: Jason Woltje <jason@diversecanvas.com> Co-committed-by: Jason Woltje <jason@diversecanvas.com>
This commit was merged in pull request #82.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"name": "@mosaic/design-tokens",
|
||||
"version": "0.0.0",
|
||||
"type": "module",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
"exports": {
|
||||
|
||||
91
packages/design-tokens/src/colors.ts
Normal file
91
packages/design-tokens/src/colors.ts
Normal file
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* Mosaic Stack color palette.
|
||||
* Deep blue-grays with blue/purple/teal accents.
|
||||
*/
|
||||
|
||||
export const colors = {
|
||||
/** Neutral blue-gray scale */
|
||||
gray: {
|
||||
50: '#f0f2f5',
|
||||
100: '#dce0e8',
|
||||
200: '#b8c0cc',
|
||||
300: '#8e99a9',
|
||||
400: '#6b7a8d',
|
||||
500: '#4e5d70',
|
||||
600: '#3b4859',
|
||||
700: '#2a3544',
|
||||
800: '#1c2433',
|
||||
900: '#111827',
|
||||
950: '#0a0f1a',
|
||||
},
|
||||
|
||||
/** Primary — blue */
|
||||
blue: {
|
||||
50: '#eff4ff',
|
||||
100: '#dae5ff',
|
||||
200: '#bdd1ff',
|
||||
300: '#8fb4ff',
|
||||
400: '#5b8bff',
|
||||
500: '#3b6cf7',
|
||||
600: '#2551e0',
|
||||
700: '#1d40c0',
|
||||
800: '#1e369c',
|
||||
900: '#1e317b',
|
||||
950: '#162050',
|
||||
},
|
||||
|
||||
/** Accent — purple */
|
||||
purple: {
|
||||
50: '#f3f0ff',
|
||||
100: '#e7dfff',
|
||||
200: '#d2c3ff',
|
||||
300: '#b49aff',
|
||||
400: '#9466ff',
|
||||
500: '#7c3aed',
|
||||
600: '#6d28d9',
|
||||
700: '#5b21b6',
|
||||
800: '#4c1d95',
|
||||
900: '#3b1578',
|
||||
950: '#230d4d',
|
||||
},
|
||||
|
||||
/** Accent — teal */
|
||||
teal: {
|
||||
50: '#effcf9',
|
||||
100: '#d0f7ef',
|
||||
200: '#a4eddf',
|
||||
300: '#6fddcb',
|
||||
400: '#3ec5b2',
|
||||
500: '#25aa99',
|
||||
600: '#1c897e',
|
||||
700: '#1b6e66',
|
||||
800: '#1a5853',
|
||||
900: '#194945',
|
||||
950: '#082d2b',
|
||||
},
|
||||
|
||||
/** Semantic */
|
||||
success: '#22c55e',
|
||||
warning: '#f59e0b',
|
||||
error: '#ef4444',
|
||||
info: '#3b82f6',
|
||||
|
||||
/** Surface — dark theme defaults */
|
||||
surface: {
|
||||
background: '#0a0f1a',
|
||||
card: '#111827',
|
||||
elevated: '#1c2433',
|
||||
overlay: 'rgba(0, 0, 0, 0.6)',
|
||||
border: '#2a3544',
|
||||
},
|
||||
|
||||
/** Text */
|
||||
text: {
|
||||
primary: '#f0f2f5',
|
||||
secondary: '#8e99a9',
|
||||
muted: '#6b7a8d',
|
||||
inverse: '#0a0f1a',
|
||||
},
|
||||
} as const;
|
||||
|
||||
export type Colors = typeof colors;
|
||||
33
packages/design-tokens/src/fonts.ts
Normal file
33
packages/design-tokens/src/fonts.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* Mosaic Stack font definitions.
|
||||
* Outfit (sans) — headings and body.
|
||||
* Fira Code (mono) — code and terminal.
|
||||
*/
|
||||
|
||||
export const fonts = {
|
||||
sans: {
|
||||
family: 'Outfit',
|
||||
fallback: 'system-ui, -apple-system, sans-serif',
|
||||
stack: "'Outfit', system-ui, -apple-system, sans-serif",
|
||||
weights: {
|
||||
light: 300,
|
||||
regular: 400,
|
||||
medium: 500,
|
||||
semibold: 600,
|
||||
bold: 700,
|
||||
},
|
||||
},
|
||||
|
||||
mono: {
|
||||
family: 'Fira Code',
|
||||
fallback: 'ui-monospace, Menlo, monospace',
|
||||
stack: "'Fira Code', ui-monospace, Menlo, monospace",
|
||||
weights: {
|
||||
regular: 400,
|
||||
medium: 500,
|
||||
bold: 700,
|
||||
},
|
||||
},
|
||||
} as const;
|
||||
|
||||
export type Fonts = typeof fonts;
|
||||
@@ -1 +1,5 @@
|
||||
export const VERSION = '0.0.0';
|
||||
export const VERSION = '0.0.1';
|
||||
|
||||
export { colors, type Colors } from './colors.js';
|
||||
export { fonts, type Fonts } from './fonts.js';
|
||||
export { spacing, radius, type Spacing, type Radius } from './spacing.js';
|
||||
|
||||
38
packages/design-tokens/src/spacing.ts
Normal file
38
packages/design-tokens/src/spacing.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* Mosaic Stack spacing scale (in rem).
|
||||
* Based on a 4px grid (0.25rem increments).
|
||||
*/
|
||||
|
||||
export const spacing = {
|
||||
px: '1px',
|
||||
0: '0',
|
||||
0.5: '0.125rem',
|
||||
1: '0.25rem',
|
||||
1.5: '0.375rem',
|
||||
2: '0.5rem',
|
||||
2.5: '0.625rem',
|
||||
3: '0.75rem',
|
||||
4: '1rem',
|
||||
5: '1.25rem',
|
||||
6: '1.5rem',
|
||||
8: '2rem',
|
||||
10: '2.5rem',
|
||||
12: '3rem',
|
||||
16: '4rem',
|
||||
20: '5rem',
|
||||
24: '6rem',
|
||||
32: '8rem',
|
||||
} as const;
|
||||
|
||||
export const radius = {
|
||||
none: '0',
|
||||
sm: '0.25rem',
|
||||
md: '0.375rem',
|
||||
lg: '0.5rem',
|
||||
xl: '0.75rem',
|
||||
'2xl': '1rem',
|
||||
full: '9999px',
|
||||
} as const;
|
||||
|
||||
export type Spacing = typeof spacing;
|
||||
export type Radius = typeof radius;
|
||||
Reference in New Issue
Block a user