@hyperpackai/hyperui 0.1.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/LICENSE +21 -0
- package/README.md +82 -0
- package/dist/components/Accordion/index.d.ts +17 -0
- package/dist/components/Accordion/index.d.ts.map +1 -0
- package/dist/components/Accordion/index.js +46 -0
- package/dist/components/Alert/index.d.ts +13 -0
- package/dist/components/Alert/index.d.ts.map +1 -0
- package/dist/components/Alert/index.js +46 -0
- package/dist/components/AppBar/index.d.ts +19 -0
- package/dist/components/AppBar/index.d.ts.map +1 -0
- package/dist/components/AppBar/index.js +48 -0
- package/dist/components/AspectRatio/index.d.ts +8 -0
- package/dist/components/AspectRatio/index.d.ts.map +1 -0
- package/dist/components/AspectRatio/index.js +32 -0
- package/dist/components/Autocomplete/index.d.ts +21 -0
- package/dist/components/Autocomplete/index.d.ts.map +1 -0
- package/dist/components/Autocomplete/index.js +94 -0
- package/dist/components/Avatar/index.d.ts +12 -0
- package/dist/components/Avatar/index.d.ts.map +1 -0
- package/dist/components/Avatar/index.js +32 -0
- package/dist/components/AvatarGroup/index.d.ts +9 -0
- package/dist/components/AvatarGroup/index.d.ts.map +1 -0
- package/dist/components/AvatarGroup/index.js +24 -0
- package/dist/components/Backdrop/index.d.ts +10 -0
- package/dist/components/Backdrop/index.d.ts.map +1 -0
- package/dist/components/Backdrop/index.js +25 -0
- package/dist/components/Badge/index.d.ts +10 -0
- package/dist/components/Badge/index.d.ts.map +1 -0
- package/dist/components/Badge/index.js +30 -0
- package/dist/components/BottomNavigation/index.d.ts +16 -0
- package/dist/components/BottomNavigation/index.d.ts.map +1 -0
- package/dist/components/BottomNavigation/index.js +43 -0
- package/dist/components/Box/index.d.ts +21 -0
- package/dist/components/Box/index.d.ts.map +1 -0
- package/dist/components/Box/index.js +30 -0
- package/dist/components/Breadcrumb/index.d.ts +13 -0
- package/dist/components/Breadcrumb/index.d.ts.map +1 -0
- package/dist/components/Breadcrumb/index.js +19 -0
- package/dist/components/Button/index.d.ts +22 -0
- package/dist/components/Button/index.d.ts.map +1 -0
- package/dist/components/Button/index.js +93 -0
- package/dist/components/ButtonGroup/index.d.ts +9 -0
- package/dist/components/ButtonGroup/index.d.ts.map +1 -0
- package/dist/components/ButtonGroup/index.js +27 -0
- package/dist/components/Card/index.d.ts +14 -0
- package/dist/components/Card/index.d.ts.map +1 -0
- package/dist/components/Card/index.js +33 -0
- package/dist/components/Checkbox/index.d.ts +17 -0
- package/dist/components/Checkbox/index.d.ts.map +1 -0
- package/dist/components/Checkbox/index.js +42 -0
- package/dist/components/Chip/index.d.ts +18 -0
- package/dist/components/Chip/index.d.ts.map +1 -0
- package/dist/components/Chip/index.js +60 -0
- package/dist/components/CircularProgress/index.d.ts +14 -0
- package/dist/components/CircularProgress/index.d.ts.map +1 -0
- package/dist/components/CircularProgress/index.js +58 -0
- package/dist/components/ClickAwayListener/index.d.ts +11 -0
- package/dist/components/ClickAwayListener/index.d.ts.map +1 -0
- package/dist/components/ClickAwayListener/index.js +31 -0
- package/dist/components/Code/index.d.ts +9 -0
- package/dist/components/Code/index.d.ts.map +1 -0
- package/dist/components/Code/index.js +50 -0
- package/dist/components/Collapse/index.d.ts +11 -0
- package/dist/components/Collapse/index.d.ts.map +1 -0
- package/dist/components/Collapse/index.js +30 -0
- package/dist/components/CommandPalette/index.d.ts +26 -0
- package/dist/components/CommandPalette/index.d.ts.map +1 -0
- package/dist/components/CommandPalette/index.js +141 -0
- package/dist/components/Container/index.d.ts +11 -0
- package/dist/components/Container/index.d.ts.map +1 -0
- package/dist/components/Container/index.js +18 -0
- package/dist/components/DashboardLayout/index.d.ts +15 -0
- package/dist/components/DashboardLayout/index.d.ts.map +1 -0
- package/dist/components/DashboardLayout/index.js +67 -0
- package/dist/components/DataTable/index.d.ts +27 -0
- package/dist/components/DataTable/index.d.ts.map +1 -0
- package/dist/components/DataTable/index.js +59 -0
- package/dist/components/Dialog/index.d.ts +19 -0
- package/dist/components/Dialog/index.d.ts.map +1 -0
- package/dist/components/Dialog/index.js +96 -0
- package/dist/components/Divider/index.d.ts +13 -0
- package/dist/components/Divider/index.d.ts.map +1 -0
- package/dist/components/Divider/index.js +40 -0
- package/dist/components/Drawer/index.d.ts +17 -0
- package/dist/components/Drawer/index.d.ts.map +1 -0
- package/dist/components/Drawer/index.js +77 -0
- package/dist/components/DropdownMenu/index.d.ts +25 -0
- package/dist/components/DropdownMenu/index.d.ts.map +1 -0
- package/dist/components/DropdownMenu/index.js +67 -0
- package/dist/components/EmptyState/index.d.ts +11 -0
- package/dist/components/EmptyState/index.d.ts.map +1 -0
- package/dist/components/EmptyState/index.js +53 -0
- package/dist/components/ErrorState/index.d.ts +12 -0
- package/dist/components/ErrorState/index.d.ts.map +1 -0
- package/dist/components/ErrorState/index.js +54 -0
- package/dist/components/Fab/index.d.ts +16 -0
- package/dist/components/Fab/index.d.ts.map +1 -0
- package/dist/components/Fab/index.js +39 -0
- package/dist/components/Fade/index.d.ts +10 -0
- package/dist/components/Fade/index.d.ts.map +1 -0
- package/dist/components/Fade/index.js +13 -0
- package/dist/components/FocusTrap/index.d.ts +11 -0
- package/dist/components/FocusTrap/index.d.ts.map +1 -0
- package/dist/components/FocusTrap/index.js +69 -0
- package/dist/components/FormControl/index.d.ts +34 -0
- package/dist/components/FormControl/index.d.ts.map +1 -0
- package/dist/components/FormControl/index.js +52 -0
- package/dist/components/GlobalSearch/index.d.ts +23 -0
- package/dist/components/GlobalSearch/index.d.ts.map +1 -0
- package/dist/components/GlobalSearch/index.js +91 -0
- package/dist/components/Grid/index.d.ts +19 -0
- package/dist/components/Grid/index.d.ts.map +1 -0
- package/dist/components/Grid/index.js +30 -0
- package/dist/components/Grow/index.d.ts +10 -0
- package/dist/components/Grow/index.d.ts.map +1 -0
- package/dist/components/Grow/index.js +13 -0
- package/dist/components/IconButton/index.d.ts +16 -0
- package/dist/components/IconButton/index.d.ts.map +1 -0
- package/dist/components/IconButton/index.js +43 -0
- package/dist/components/ImageList/index.d.ts +21 -0
- package/dist/components/ImageList/index.d.ts.map +1 -0
- package/dist/components/ImageList/index.js +39 -0
- package/dist/components/Input/index.d.ts +33 -0
- package/dist/components/Input/index.d.ts.map +1 -0
- package/dist/components/Input/index.js +45 -0
- package/dist/components/Kbd/index.d.ts +8 -0
- package/dist/components/Kbd/index.d.ts.map +1 -0
- package/dist/components/Kbd/index.js +41 -0
- package/dist/components/KeyboardShortcut/index.d.ts +20 -0
- package/dist/components/KeyboardShortcut/index.d.ts.map +1 -0
- package/dist/components/KeyboardShortcut/index.js +63 -0
- package/dist/components/Label/index.d.ts +10 -0
- package/dist/components/Label/index.d.ts.map +1 -0
- package/dist/components/Label/index.js +17 -0
- package/dist/components/LinearProgress/index.d.ts +13 -0
- package/dist/components/LinearProgress/index.d.ts.map +1 -0
- package/dist/components/LinearProgress/index.js +69 -0
- package/dist/components/Link/index.d.ts +16 -0
- package/dist/components/Link/index.d.ts.map +1 -0
- package/dist/components/Link/index.js +25 -0
- package/dist/components/List/index.d.ts +40 -0
- package/dist/components/List/index.d.ts.map +1 -0
- package/dist/components/List/index.js +70 -0
- package/dist/components/LoadingState/index.d.ts +11 -0
- package/dist/components/LoadingState/index.d.ts.map +1 -0
- package/dist/components/LoadingState/index.js +66 -0
- package/dist/components/Menu/index.d.ts +40 -0
- package/dist/components/Menu/index.d.ts.map +1 -0
- package/dist/components/Menu/index.js +103 -0
- package/dist/components/MobileStepper/index.d.ts +16 -0
- package/dist/components/MobileStepper/index.d.ts.map +1 -0
- package/dist/components/MobileStepper/index.js +67 -0
- package/dist/components/Modal/index.d.ts +14 -0
- package/dist/components/Modal/index.d.ts.map +1 -0
- package/dist/components/Modal/index.js +51 -0
- package/dist/components/Navbar/index.d.ts +14 -0
- package/dist/components/Navbar/index.d.ts.map +1 -0
- package/dist/components/Navbar/index.js +27 -0
- package/dist/components/NoSSR/index.d.ts +7 -0
- package/dist/components/NoSSR/index.d.ts.map +1 -0
- package/dist/components/NoSSR/index.js +9 -0
- package/dist/components/PageLayout/index.d.ts +13 -0
- package/dist/components/PageLayout/index.d.ts.map +1 -0
- package/dist/components/PageLayout/index.js +41 -0
- package/dist/components/Pagination/index.d.ts +11 -0
- package/dist/components/Pagination/index.d.ts.map +1 -0
- package/dist/components/Pagination/index.js +56 -0
- package/dist/components/Paper/index.d.ts +12 -0
- package/dist/components/Paper/index.d.ts.map +1 -0
- package/dist/components/Paper/index.js +24 -0
- package/dist/components/Popover/index.d.ts +13 -0
- package/dist/components/Popover/index.d.ts.map +1 -0
- package/dist/components/Popover/index.js +34 -0
- package/dist/components/Progress/index.d.ts +13 -0
- package/dist/components/Progress/index.d.ts.map +1 -0
- package/dist/components/Progress/index.js +40 -0
- package/dist/components/Radio/index.d.ts +7 -0
- package/dist/components/Radio/index.d.ts.map +1 -0
- package/dist/components/Radio/index.js +28 -0
- package/dist/components/Rating/index.d.ts +15 -0
- package/dist/components/Rating/index.d.ts.map +1 -0
- package/dist/components/Rating/index.js +41 -0
- package/dist/components/ResizablePanel/index.d.ts +16 -0
- package/dist/components/ResizablePanel/index.d.ts.map +1 -0
- package/dist/components/ResizablePanel/index.js +41 -0
- package/dist/components/ScrollArea/index.d.ts +12 -0
- package/dist/components/ScrollArea/index.d.ts.map +1 -0
- package/dist/components/ScrollArea/index.js +50 -0
- package/dist/components/Select/index.d.ts +23 -0
- package/dist/components/Select/index.d.ts.map +1 -0
- package/dist/components/Select/index.js +52 -0
- package/dist/components/Sheet/index.d.ts +15 -0
- package/dist/components/Sheet/index.d.ts.map +1 -0
- package/dist/components/Sheet/index.js +61 -0
- package/dist/components/Sidebar/index.d.ts +23 -0
- package/dist/components/Sidebar/index.d.ts.map +1 -0
- package/dist/components/Sidebar/index.js +37 -0
- package/dist/components/Skeleton/index.d.ts +9 -0
- package/dist/components/Skeleton/index.d.ts.map +1 -0
- package/dist/components/Skeleton/index.js +22 -0
- package/dist/components/Slide/index.d.ts +12 -0
- package/dist/components/Slide/index.d.ts.map +1 -0
- package/dist/components/Slide/index.js +21 -0
- package/dist/components/Slider/index.d.ts +19 -0
- package/dist/components/Slider/index.d.ts.map +1 -0
- package/dist/components/Slider/index.js +49 -0
- package/dist/components/Snackbar/index.d.ts +28 -0
- package/dist/components/Snackbar/index.d.ts.map +1 -0
- package/dist/components/Snackbar/index.js +71 -0
- package/dist/components/SpeedDial/index.d.ts +18 -0
- package/dist/components/SpeedDial/index.d.ts.map +1 -0
- package/dist/components/SpeedDial/index.js +71 -0
- package/dist/components/Spinner/index.d.ts +10 -0
- package/dist/components/Spinner/index.d.ts.map +1 -0
- package/dist/components/Spinner/index.js +67 -0
- package/dist/components/SplitPane/index.d.ts +11 -0
- package/dist/components/SplitPane/index.d.ts.map +1 -0
- package/dist/components/SplitPane/index.js +46 -0
- package/dist/components/Stack/index.d.ts +17 -0
- package/dist/components/Stack/index.d.ts.map +1 -0
- package/dist/components/Stack/index.js +30 -0
- package/dist/components/Stepper/index.d.ts +20 -0
- package/dist/components/Stepper/index.d.ts.map +1 -0
- package/dist/components/Stepper/index.js +66 -0
- package/dist/components/Switch/index.d.ts +13 -0
- package/dist/components/Switch/index.d.ts.map +1 -0
- package/dist/components/Switch/index.js +38 -0
- package/dist/components/Tabs/index.d.ts +20 -0
- package/dist/components/Tabs/index.d.ts.map +1 -0
- package/dist/components/Tabs/index.js +62 -0
- package/dist/components/TextField/index.d.ts +35 -0
- package/dist/components/TextField/index.d.ts.map +1 -0
- package/dist/components/TextField/index.js +69 -0
- package/dist/components/Textarea/index.d.ts +22 -0
- package/dist/components/Textarea/index.d.ts.map +1 -0
- package/dist/components/Textarea/index.js +27 -0
- package/dist/components/Timeline/index.d.ts +16 -0
- package/dist/components/Timeline/index.d.ts.map +1 -0
- package/dist/components/Timeline/index.js +30 -0
- package/dist/components/Toast/index.d.ts +34 -0
- package/dist/components/Toast/index.d.ts.map +1 -0
- package/dist/components/Toast/index.js +106 -0
- package/dist/components/ToggleButton/index.d.ts +21 -0
- package/dist/components/ToggleButton/index.d.ts.map +1 -0
- package/dist/components/ToggleButton/index.js +81 -0
- package/dist/components/Tooltip/index.d.ts +14 -0
- package/dist/components/Tooltip/index.d.ts.map +1 -0
- package/dist/components/Tooltip/index.js +47 -0
- package/dist/components/TreeView/index.d.ts +19 -0
- package/dist/components/TreeView/index.d.ts.map +1 -0
- package/dist/components/TreeView/index.js +50 -0
- package/dist/components/Typography/index.d.ts +17 -0
- package/dist/components/Typography/index.d.ts.map +1 -0
- package/dist/components/Typography/index.js +44 -0
- package/dist/components/VisuallyHidden/index.d.ts +7 -0
- package/dist/components/VisuallyHidden/index.d.ts.map +1 -0
- package/dist/components/VisuallyHidden/index.js +18 -0
- package/dist/components/Zoom/index.d.ts +10 -0
- package/dist/components/Zoom/index.d.ts.map +1 -0
- package/dist/components/Zoom/index.js +13 -0
- package/dist/components/ai.d.ts +133 -0
- package/dist/components/ai.d.ts.map +1 -0
- package/dist/components/ai.js +184 -0
- package/dist/components/charts.d.ts +143 -0
- package/dist/components/charts.d.ts.map +1 -0
- package/dist/components/charts.js +435 -0
- package/dist/components/data.d.ts +192 -0
- package/dist/components/data.d.ts.map +1 -0
- package/dist/components/data.js +581 -0
- package/dist/components/date.d.ts +73 -0
- package/dist/components/date.d.ts.map +1 -0
- package/dist/components/date.js +199 -0
- package/dist/components/enterprise.d.ts +246 -0
- package/dist/components/enterprise.d.ts.map +1 -0
- package/dist/components/enterprise.js +428 -0
- package/dist/components/form.d.ts +132 -0
- package/dist/components/form.d.ts.map +1 -0
- package/dist/components/form.js +380 -0
- package/dist/components/index.d.ts +173 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +107 -0
- package/dist/components/inputs.d.ts +169 -0
- package/dist/components/inputs.d.ts.map +1 -0
- package/dist/components/inputs.js +437 -0
- package/dist/components/layout.d.ts +224 -0
- package/dist/components/layout.d.ts.map +1 -0
- package/dist/components/layout.js +644 -0
- package/dist/components/overlay.d.ts +102 -0
- package/dist/components/overlay.d.ts.map +1 -0
- package/dist/components/overlay.js +318 -0
- package/dist/components/surfaces.d.ts +180 -0
- package/dist/components/surfaces.d.ts.map +1 -0
- package/dist/components/surfaces.js +423 -0
- package/dist/components/typography.d.ts +69 -0
- package/dist/components/typography.d.ts.map +1 -0
- package/dist/components/typography.js +206 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/portal.d.ts +3 -0
- package/dist/portal.d.ts.map +1 -0
- package/dist/portal.js +17 -0
- package/dist/theme/index.d.ts +31 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +258 -0
- package/dist/tokens/component.d.ts +124 -0
- package/dist/tokens/component.d.ts.map +1 -0
- package/dist/tokens/component.js +113 -0
- package/dist/tokens/index.d.ts +494 -0
- package/dist/tokens/index.d.ts.map +1 -0
- package/dist/tokens/index.js +345 -0
- package/dist/tokens/primitives.d.ts +675 -0
- package/dist/tokens/primitives.d.ts.map +1 -0
- package/dist/tokens/primitives.js +356 -0
- package/dist/tokens/semantic.d.ts +252 -0
- package/dist/tokens/semantic.d.ts.map +1 -0
- package/dist/tokens/semantic.js +242 -0
- package/dist/tokens/themes.d.ts +18 -0
- package/dist/tokens/themes.d.ts.map +1 -0
- package/dist/tokens/themes.js +316 -0
- package/package.json +69 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic Design Tokens
|
|
3
|
+
*
|
|
4
|
+
* PURPOSE-BASED tokens that reference primitives.
|
|
5
|
+
* These are what you use in components and application code.
|
|
6
|
+
*
|
|
7
|
+
* Structure:
|
|
8
|
+
* Layer 1 — Primitives (raw values, e.g. colors.indigo[500])
|
|
9
|
+
* Layer 2 — Semantic (purpose, e.g. brand.primary) ← THIS FILE
|
|
10
|
+
* Layer 3 — Component (per-component, e.g. button.heightMd)
|
|
11
|
+
*/
|
|
12
|
+
import { colors, spacing, fontSize, fontWeight, borderRadius, shadow, duration, easing, zIndex } from "./primitives.js";
|
|
13
|
+
// Light theme semantic colours
|
|
14
|
+
export const lightColors = {
|
|
15
|
+
bg: {
|
|
16
|
+
default: colors.white,
|
|
17
|
+
surface: colors.gray[50],
|
|
18
|
+
elevated: colors.white,
|
|
19
|
+
sunken: colors.gray[100],
|
|
20
|
+
overlay: "rgb(0 0 0 / 50%)",
|
|
21
|
+
inverse: colors.gray[900]
|
|
22
|
+
},
|
|
23
|
+
border: {
|
|
24
|
+
default: colors.gray[200],
|
|
25
|
+
muted: colors.gray[100],
|
|
26
|
+
strong: colors.gray[300],
|
|
27
|
+
focus: colors.indigo[500],
|
|
28
|
+
error: colors.rose[500]
|
|
29
|
+
},
|
|
30
|
+
text: {
|
|
31
|
+
default: colors.gray[900],
|
|
32
|
+
muted: colors.gray[500],
|
|
33
|
+
subtle: colors.gray[400],
|
|
34
|
+
disabled: colors.gray[400],
|
|
35
|
+
inverse: colors.white,
|
|
36
|
+
link: colors.indigo[600],
|
|
37
|
+
linkHover: colors.indigo[700]
|
|
38
|
+
},
|
|
39
|
+
brand: {
|
|
40
|
+
primary: colors.indigo[500],
|
|
41
|
+
primaryDark: colors.indigo[600],
|
|
42
|
+
primaryLight: colors.indigo[400],
|
|
43
|
+
primaryBg: colors.indigo[50],
|
|
44
|
+
primaryText: colors.white
|
|
45
|
+
},
|
|
46
|
+
success: { default: colors.emerald[500], bg: colors.emerald[50], text: colors.emerald[700], border: colors.emerald[200] },
|
|
47
|
+
warning: { default: colors.amber[500], bg: colors.amber[50], text: colors.amber[700], border: colors.amber[200] },
|
|
48
|
+
error: { default: colors.rose[500], bg: colors.rose[50], text: colors.rose[700], border: colors.rose[200] },
|
|
49
|
+
info: { default: colors.sky[500], bg: colors.sky[50], text: colors.sky[700], border: colors.sky[200] },
|
|
50
|
+
interactive: {
|
|
51
|
+
default: colors.gray[100],
|
|
52
|
+
hover: colors.gray[200],
|
|
53
|
+
active: colors.gray[300],
|
|
54
|
+
focus: `${colors.indigo[500]}33`,
|
|
55
|
+
disabled: colors.gray[100],
|
|
56
|
+
selected: colors.indigo[50]
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
// Dark theme semantic colours
|
|
60
|
+
export const darkColors = {
|
|
61
|
+
bg: {
|
|
62
|
+
default: "#0a0a0f",
|
|
63
|
+
surface: "#111118",
|
|
64
|
+
elevated: "#1a1a24",
|
|
65
|
+
sunken: "#07070c",
|
|
66
|
+
overlay: "rgb(0 0 0 / 72%)",
|
|
67
|
+
inverse: colors.gray[50]
|
|
68
|
+
},
|
|
69
|
+
border: {
|
|
70
|
+
default: "#2a2a3a",
|
|
71
|
+
muted: "#1e1e2a",
|
|
72
|
+
strong: "#3a3a50",
|
|
73
|
+
focus: colors.indigo[400],
|
|
74
|
+
error: colors.rose[500]
|
|
75
|
+
},
|
|
76
|
+
text: {
|
|
77
|
+
default: "#f0f0ff",
|
|
78
|
+
muted: "#a0a0c0",
|
|
79
|
+
subtle: "#606080",
|
|
80
|
+
disabled: "#404060",
|
|
81
|
+
inverse: "#0a0a0f",
|
|
82
|
+
link: colors.indigo[400],
|
|
83
|
+
linkHover: colors.indigo[300]
|
|
84
|
+
},
|
|
85
|
+
brand: {
|
|
86
|
+
primary: colors.indigo[400],
|
|
87
|
+
primaryDark: colors.indigo[500],
|
|
88
|
+
primaryLight: colors.indigo[300],
|
|
89
|
+
primaryBg: `${colors.indigo[950]}80`,
|
|
90
|
+
primaryText: colors.white
|
|
91
|
+
},
|
|
92
|
+
success: { default: colors.emerald[400], bg: "#052e16", text: colors.emerald[300], border: "#065f4640" },
|
|
93
|
+
warning: { default: colors.amber[400], bg: "#1c1500", text: colors.amber[300], border: "#92400e40" },
|
|
94
|
+
error: { default: colors.rose[400], bg: "#1f0505", text: colors.rose[300], border: "#9f123940" },
|
|
95
|
+
info: { default: colors.sky[400], bg: "#030d1a", text: colors.sky[300], border: "#075985 40" },
|
|
96
|
+
interactive: {
|
|
97
|
+
default: "#1a1a24",
|
|
98
|
+
hover: "#22222f",
|
|
99
|
+
active: "#2a2a3a",
|
|
100
|
+
focus: `${colors.indigo[400]}33`,
|
|
101
|
+
disabled: "#111118",
|
|
102
|
+
selected: `${colors.indigo[950]}60`
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
// Semantic spacing tokens (named aliases over the raw scale)
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
export const semanticSpacing = {
|
|
109
|
+
componentXs: spacing[1], // 4px — tight inline gaps
|
|
110
|
+
componentSm: spacing[2], // 8px — icon + label gaps
|
|
111
|
+
componentMd: spacing[3], // 12px — input padding horizontal
|
|
112
|
+
componentLg: spacing[4], // 16px — card padding
|
|
113
|
+
componentXl: spacing[6], // 24px — section gaps
|
|
114
|
+
pageGutter: spacing[6], // 24px — page horizontal padding
|
|
115
|
+
sectionGap: spacing[12], // 48px — between major sections
|
|
116
|
+
// Component heights
|
|
117
|
+
heightXs: "24px",
|
|
118
|
+
heightSm: "32px",
|
|
119
|
+
heightMd: "38px",
|
|
120
|
+
heightLg: "44px",
|
|
121
|
+
heightXl: "52px"
|
|
122
|
+
};
|
|
123
|
+
// ---------------------------------------------------------------------------
|
|
124
|
+
// Semantic typography tokens
|
|
125
|
+
// ---------------------------------------------------------------------------
|
|
126
|
+
export const semanticTypography = {
|
|
127
|
+
// Body
|
|
128
|
+
bodyXs: { fontSize: fontSize.xs[0], fontWeight: fontWeight.normal, lineHeight: "16px" },
|
|
129
|
+
bodySm: { fontSize: fontSize.sm[0], fontWeight: fontWeight.normal, lineHeight: "18px" },
|
|
130
|
+
body: { fontSize: fontSize.base[0], fontWeight: fontWeight.normal, lineHeight: "20px" },
|
|
131
|
+
bodyMd: { fontSize: fontSize.md[0], fontWeight: fontWeight.normal, lineHeight: "22px" },
|
|
132
|
+
bodyLg: { fontSize: fontSize.lg[0], fontWeight: fontWeight.normal, lineHeight: "26px" },
|
|
133
|
+
// Labels
|
|
134
|
+
labelXs: { fontSize: fontSize.xs[0], fontWeight: fontWeight.medium, lineHeight: "16px" },
|
|
135
|
+
labelSm: { fontSize: fontSize.sm[0], fontWeight: fontWeight.medium, lineHeight: "18px" },
|
|
136
|
+
label: { fontSize: fontSize.base[0], fontWeight: fontWeight.medium, lineHeight: "20px" },
|
|
137
|
+
labelLg: { fontSize: fontSize.md[0], fontWeight: fontWeight.semibold, lineHeight: "22px" },
|
|
138
|
+
// Headings
|
|
139
|
+
h6: { fontSize: fontSize.base[0], fontWeight: fontWeight.semibold, lineHeight: "20px" },
|
|
140
|
+
h5: { fontSize: fontSize.md[0], fontWeight: fontWeight.semibold, lineHeight: "22px" },
|
|
141
|
+
h4: { fontSize: fontSize.lg[0], fontWeight: fontWeight.semibold, lineHeight: "26px" },
|
|
142
|
+
h3: { fontSize: fontSize["2xl"][0], fontWeight: fontWeight.semibold, lineHeight: "32px" },
|
|
143
|
+
h2: { fontSize: fontSize["3xl"][0], fontWeight: fontWeight.bold, lineHeight: "38px" },
|
|
144
|
+
h1: { fontSize: fontSize["4xl"][0], fontWeight: fontWeight.bold, lineHeight: "44px" },
|
|
145
|
+
// Display
|
|
146
|
+
displaySm: { fontSize: fontSize["4xl"][0], fontWeight: fontWeight.extrabold, lineHeight: "44px" },
|
|
147
|
+
displayMd: { fontSize: fontSize["5xl"][0], fontWeight: fontWeight.extrabold, lineHeight: "56px" },
|
|
148
|
+
displayLg: { fontSize: fontSize["6xl"][0], fontWeight: fontWeight.black, lineHeight: "68px" },
|
|
149
|
+
// Code
|
|
150
|
+
code: { fontFamily: "var(--hu-font-mono)", fontSize: fontSize.sm[0], lineHeight: "20px" }
|
|
151
|
+
};
|
|
152
|
+
// ---------------------------------------------------------------------------
|
|
153
|
+
// Semantic shadow tokens
|
|
154
|
+
// ---------------------------------------------------------------------------
|
|
155
|
+
export const semanticShadow = {
|
|
156
|
+
none: shadow.none,
|
|
157
|
+
xs: shadow.xs,
|
|
158
|
+
sm: shadow.sm,
|
|
159
|
+
default: shadow.DEFAULT,
|
|
160
|
+
md: shadow.md,
|
|
161
|
+
lg: shadow.lg,
|
|
162
|
+
xl: shadow.xl,
|
|
163
|
+
"2xl": shadow["2xl"],
|
|
164
|
+
inner: shadow.inner,
|
|
165
|
+
// Component-specific
|
|
166
|
+
card: shadow.sm,
|
|
167
|
+
cardHover: shadow.md,
|
|
168
|
+
dropdown: shadow.lg,
|
|
169
|
+
modal: shadow.xl,
|
|
170
|
+
tooltip: shadow.md,
|
|
171
|
+
focus: shadow.focus
|
|
172
|
+
};
|
|
173
|
+
// ---------------------------------------------------------------------------
|
|
174
|
+
// Semantic motion tokens
|
|
175
|
+
// ---------------------------------------------------------------------------
|
|
176
|
+
export const semanticMotion = {
|
|
177
|
+
// Duration aliases
|
|
178
|
+
instant: duration.instant,
|
|
179
|
+
microTask: duration.faster, // icon swap, checkmark
|
|
180
|
+
feedback: duration.fast, // hover, active state
|
|
181
|
+
transition: duration.normal, // most transitions
|
|
182
|
+
page: duration.slow, // page transitions
|
|
183
|
+
complex: duration.slower, // complex animations
|
|
184
|
+
// Easing aliases
|
|
185
|
+
standard: easing.inOut, // most element transitions
|
|
186
|
+
enter: easing.out, // elements entering the screen
|
|
187
|
+
exit: easing.in, // elements leaving the screen
|
|
188
|
+
emphasis: easing.spring, // bouncy, playful
|
|
189
|
+
decelerate: easing.out, // elements decelerating to rest
|
|
190
|
+
accelerate: easing.in // elements leaving at speed
|
|
191
|
+
};
|
|
192
|
+
// ---------------------------------------------------------------------------
|
|
193
|
+
// Semantic radius tokens
|
|
194
|
+
// ---------------------------------------------------------------------------
|
|
195
|
+
export const semanticRadius = {
|
|
196
|
+
none: borderRadius.none,
|
|
197
|
+
xs: borderRadius.xs,
|
|
198
|
+
sm: borderRadius.sm,
|
|
199
|
+
DEFAULT: borderRadius.DEFAULT,
|
|
200
|
+
md: borderRadius.md,
|
|
201
|
+
lg: borderRadius.lg,
|
|
202
|
+
xl: borderRadius.xl,
|
|
203
|
+
"2xl": borderRadius["2xl"],
|
|
204
|
+
full: borderRadius.full,
|
|
205
|
+
// Component-specific
|
|
206
|
+
button: borderRadius.DEFAULT,
|
|
207
|
+
input: borderRadius.DEFAULT,
|
|
208
|
+
card: borderRadius.lg,
|
|
209
|
+
dialog: borderRadius.xl,
|
|
210
|
+
badge: borderRadius.full,
|
|
211
|
+
tag: borderRadius.sm,
|
|
212
|
+
chip: borderRadius.full
|
|
213
|
+
};
|
|
214
|
+
// ---------------------------------------------------------------------------
|
|
215
|
+
// Semantic z-index tokens
|
|
216
|
+
// ---------------------------------------------------------------------------
|
|
217
|
+
export const semanticZIndex = {
|
|
218
|
+
hide: zIndex.hide,
|
|
219
|
+
base: zIndex.base,
|
|
220
|
+
raised: zIndex.raised,
|
|
221
|
+
dropdown: zIndex.dropdown,
|
|
222
|
+
sticky: zIndex.sticky,
|
|
223
|
+
fixed: zIndex.fixed,
|
|
224
|
+
backdrop: zIndex.backdrop,
|
|
225
|
+
modal: zIndex.modal,
|
|
226
|
+
popover: zIndex.popover,
|
|
227
|
+
tooltip: zIndex.tooltip,
|
|
228
|
+
toast: zIndex.toast
|
|
229
|
+
};
|
|
230
|
+
export const lightSemanticTokens = {
|
|
231
|
+
colors: lightColors,
|
|
232
|
+
spacing: semanticSpacing,
|
|
233
|
+
typography: semanticTypography,
|
|
234
|
+
shadow: semanticShadow,
|
|
235
|
+
motion: semanticMotion,
|
|
236
|
+
radius: semanticRadius,
|
|
237
|
+
zIndex: semanticZIndex
|
|
238
|
+
};
|
|
239
|
+
export const darkSemanticTokens = {
|
|
240
|
+
...lightSemanticTokens,
|
|
241
|
+
colors: darkColors
|
|
242
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface ThemeOverrides {
|
|
2
|
+
primaryColor?: string;
|
|
3
|
+
primaryDark?: string;
|
|
4
|
+
primaryLight?: string;
|
|
5
|
+
primaryBg?: string;
|
|
6
|
+
radius?: string;
|
|
7
|
+
fontFamily?: string;
|
|
8
|
+
densityScale?: number;
|
|
9
|
+
cssVars?: Record<string, string>;
|
|
10
|
+
}
|
|
11
|
+
export interface BuiltinTheme {
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
overrides: ThemeOverrides;
|
|
15
|
+
}
|
|
16
|
+
export declare const themes: Record<string, BuiltinTheme>;
|
|
17
|
+
export declare function getDarkVariant(themeName: string): ThemeOverrides;
|
|
18
|
+
//# sourceMappingURL=themes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themes.d.ts","sourceRoot":"","sources":["../../src/tokens/themes.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAI,MAAM,CAAC;IACxB,WAAW,CAAC,EAAK,MAAM,CAAC;IACxB,YAAY,CAAC,EAAI,MAAM,CAAC;IACxB,SAAS,CAAC,EAAO,MAAM,CAAC;IACxB,MAAM,CAAC,EAAU,MAAM,CAAC;IACxB,UAAU,CAAC,EAAM,MAAM,CAAC;IACxB,YAAY,CAAC,EAAI,MAAM,CAAC;IAExB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAS,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAI,cAAc,CAAC;CAC7B;AAMD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CA4R/C,CAAC;AAMF,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAiBhE"}
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Preset Themes
|
|
3
|
+
*
|
|
4
|
+
* Ready-to-use theme configurations. Pass to `applyTheme()` or `createTheme()`.
|
|
5
|
+
*
|
|
6
|
+
* Built-in presets:
|
|
7
|
+
* default — Indigo/violet, balanced density
|
|
8
|
+
* compact — Reduced padding, smaller text, higher density (data apps)
|
|
9
|
+
* comfortable — More breathing room, larger touch targets (consumer apps)
|
|
10
|
+
* highContrast — WCAG AAA colour ratios for accessibility
|
|
11
|
+
* ocean — Cyan/teal palette
|
|
12
|
+
* forest — Emerald/green palette
|
|
13
|
+
* sunset — Orange/rose palette
|
|
14
|
+
* monochrome — Pure gray scale, no hue
|
|
15
|
+
* banking — High-trust blue, dense controls, financial data surfaces
|
|
16
|
+
* government — Accessible navy, restrained surfaces, high contrast
|
|
17
|
+
* healthcare — Clinical teal, calm status colors, readable controls
|
|
18
|
+
* retail — Commerce blue, promotional accents, comfortable density
|
|
19
|
+
* education — Learning-focused violet, softer surfaces
|
|
20
|
+
* telecom — Network cyan, operational dashboard density
|
|
21
|
+
*/
|
|
22
|
+
import { colors, borderRadius } from "./primitives.js";
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// Preset themes
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
export const themes = {
|
|
27
|
+
// ── Default — Indigo primary ─────────────────────────────────────────────
|
|
28
|
+
default: {
|
|
29
|
+
name: "Default",
|
|
30
|
+
description: "Clean indigo primary with balanced density.",
|
|
31
|
+
overrides: {
|
|
32
|
+
primaryColor: colors.indigo[500],
|
|
33
|
+
primaryDark: colors.indigo[600],
|
|
34
|
+
primaryLight: colors.indigo[400],
|
|
35
|
+
primaryBg: colors.indigo[50],
|
|
36
|
+
radius: borderRadius.DEFAULT
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
// ── Compact — reduced spacing, higher information density ────────────────
|
|
40
|
+
compact: {
|
|
41
|
+
name: "Compact",
|
|
42
|
+
description: "Tighter spacing for data-dense applications (dashboards, tables).",
|
|
43
|
+
overrides: {
|
|
44
|
+
primaryColor: colors.indigo[500],
|
|
45
|
+
densityScale: 0.75,
|
|
46
|
+
radius: borderRadius.sm,
|
|
47
|
+
cssVars: {
|
|
48
|
+
"--hu-space-3": "8px",
|
|
49
|
+
"--hu-space-4": "12px",
|
|
50
|
+
"--hu-space-5": "16px",
|
|
51
|
+
"--hu-space-6": "20px",
|
|
52
|
+
"--hu-font-size-sm": "12px",
|
|
53
|
+
"--hu-font-size-base": "13px",
|
|
54
|
+
"--hu-radius": "5px",
|
|
55
|
+
"--hu-radius-md": "7px",
|
|
56
|
+
"--hu-radius-lg": "9px"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
// ── Comfortable — larger targets, more white space ───────────────────────
|
|
61
|
+
comfortable: {
|
|
62
|
+
name: "Comfortable",
|
|
63
|
+
description: "Generous spacing for consumer-facing and mobile applications.",
|
|
64
|
+
overrides: {
|
|
65
|
+
primaryColor: colors.indigo[500],
|
|
66
|
+
densityScale: 1.25,
|
|
67
|
+
radius: borderRadius.lg,
|
|
68
|
+
cssVars: {
|
|
69
|
+
"--hu-space-3": "14px",
|
|
70
|
+
"--hu-space-4": "20px",
|
|
71
|
+
"--hu-space-5": "24px",
|
|
72
|
+
"--hu-space-6": "28px",
|
|
73
|
+
"--hu-font-size-base": "15px",
|
|
74
|
+
"--hu-font-size-md": "16px",
|
|
75
|
+
"--hu-radius": "10px",
|
|
76
|
+
"--hu-radius-md": "12px",
|
|
77
|
+
"--hu-radius-lg": "16px"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
// ── High contrast — WCAG AAA ──────────────────────────────────────────────
|
|
82
|
+
highContrast: {
|
|
83
|
+
name: "High Contrast",
|
|
84
|
+
description: "Maximum contrast ratios for accessibility (WCAG AAA).",
|
|
85
|
+
overrides: {
|
|
86
|
+
primaryColor: colors.indigo[700],
|
|
87
|
+
primaryDark: colors.indigo[800],
|
|
88
|
+
primaryLight: colors.indigo[600],
|
|
89
|
+
primaryBg: colors.indigo[100],
|
|
90
|
+
cssVars: {
|
|
91
|
+
"--hu-text": colors.gray[950],
|
|
92
|
+
"--hu-text-2": colors.gray[700],
|
|
93
|
+
"--hu-text-3": colors.gray[600],
|
|
94
|
+
"--hu-border": colors.gray[400],
|
|
95
|
+
"--hu-border-2": colors.gray[600],
|
|
96
|
+
"--hu-bg": "#ffffff",
|
|
97
|
+
"--hu-bg-2": "#f0f0f0",
|
|
98
|
+
"--hu-bg-3": "#e0e0e0"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
// ── Ocean — Cyan / Sky ────────────────────────────────────────────────────
|
|
103
|
+
ocean: {
|
|
104
|
+
name: "Ocean",
|
|
105
|
+
description: "Calm cyan and sky-blue palette.",
|
|
106
|
+
overrides: {
|
|
107
|
+
primaryColor: colors.sky[500],
|
|
108
|
+
primaryDark: colors.sky[600],
|
|
109
|
+
primaryLight: colors.sky[400],
|
|
110
|
+
primaryBg: colors.sky[50],
|
|
111
|
+
cssVars: {
|
|
112
|
+
"--hu-primary-bg": colors.sky[50]
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
// ── Forest — Emerald / Green ──────────────────────────────────────────────
|
|
117
|
+
forest: {
|
|
118
|
+
name: "Forest",
|
|
119
|
+
description: "Natural emerald and green palette.",
|
|
120
|
+
overrides: {
|
|
121
|
+
primaryColor: colors.emerald[600],
|
|
122
|
+
primaryDark: colors.emerald[700],
|
|
123
|
+
primaryLight: colors.emerald[500],
|
|
124
|
+
primaryBg: colors.emerald[50]
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
// ── Sunset — Amber / Rose ─────────────────────────────────────────────────
|
|
128
|
+
sunset: {
|
|
129
|
+
name: "Sunset",
|
|
130
|
+
description: "Warm amber and rose palette for creative applications.",
|
|
131
|
+
overrides: {
|
|
132
|
+
primaryColor: "#f97316", // orange-500
|
|
133
|
+
primaryDark: "#ea580c", // orange-600
|
|
134
|
+
primaryLight: "#fb923c", // orange-400
|
|
135
|
+
primaryBg: "#fff7ed", // orange-50
|
|
136
|
+
cssVars: {
|
|
137
|
+
"--hu-primary": "#f97316",
|
|
138
|
+
"--hu-primary-dk": "#ea580c",
|
|
139
|
+
"--hu-primary-lt": "#fb923c",
|
|
140
|
+
"--hu-primary-bg": "#fff7ed"
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
// ── Violet — Bold purple ───────────────────────────────────────────────────
|
|
145
|
+
violet: {
|
|
146
|
+
name: "Violet",
|
|
147
|
+
description: "Bold violet palette for creative and entertainment apps.",
|
|
148
|
+
overrides: {
|
|
149
|
+
primaryColor: colors.violet[500],
|
|
150
|
+
primaryDark: colors.violet[600],
|
|
151
|
+
primaryLight: colors.violet[400],
|
|
152
|
+
primaryBg: colors.violet[50]
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
// ── Monochrome — Pure gray ──────────────────────────────────────────────
|
|
156
|
+
monochrome: {
|
|
157
|
+
name: "Monochrome",
|
|
158
|
+
description: "Neutral gray-only palette for minimal, professional UIs.",
|
|
159
|
+
overrides: {
|
|
160
|
+
primaryColor: colors.gray[900],
|
|
161
|
+
primaryDark: colors.gray[950],
|
|
162
|
+
primaryLight: colors.gray[700],
|
|
163
|
+
primaryBg: colors.gray[100],
|
|
164
|
+
cssVars: {
|
|
165
|
+
"--hu-primary": colors.gray[900],
|
|
166
|
+
"--hu-primary-dk": colors.gray[950],
|
|
167
|
+
"--hu-primary-lt": colors.gray[700],
|
|
168
|
+
"--hu-primary-bg": colors.gray[100],
|
|
169
|
+
"--hu-primary-text": colors.white
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
// ── Rose — Feminine / Beauty ──────────────────────────────────────────────
|
|
174
|
+
rose: {
|
|
175
|
+
name: "Rose",
|
|
176
|
+
description: "Elegant rose palette for beauty, health, and lifestyle apps.",
|
|
177
|
+
overrides: {
|
|
178
|
+
primaryColor: colors.rose[500],
|
|
179
|
+
primaryDark: colors.rose[600],
|
|
180
|
+
primaryLight: colors.rose[400],
|
|
181
|
+
primaryBg: colors.rose[50]
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
// ── Banking — trust, density, low visual noise ──────────────────────────
|
|
185
|
+
banking: {
|
|
186
|
+
name: "Banking",
|
|
187
|
+
description: "High-trust blue theme for banking, fintech, and risk platforms.",
|
|
188
|
+
overrides: {
|
|
189
|
+
primaryColor: "#1457d9",
|
|
190
|
+
primaryDark: "#0f3f9f",
|
|
191
|
+
primaryLight: "#3b82f6",
|
|
192
|
+
primaryBg: "#eff6ff",
|
|
193
|
+
radius: borderRadius.md,
|
|
194
|
+
densityScale: 0.9,
|
|
195
|
+
cssVars: {
|
|
196
|
+
"--hu-info": "#2563eb",
|
|
197
|
+
"--hu-success": "#047857",
|
|
198
|
+
"--hu-warning": "#b45309",
|
|
199
|
+
"--hu-error": "#b91c1c",
|
|
200
|
+
"--hu-focus-ring": "#1457d9"
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
// ── Government — accessible, formal, high contrast ──────────────────────
|
|
205
|
+
government: {
|
|
206
|
+
name: "Government",
|
|
207
|
+
description: "Accessible navy theme for public-sector and civic services.",
|
|
208
|
+
overrides: {
|
|
209
|
+
primaryColor: "#1d4ed8",
|
|
210
|
+
primaryDark: "#1e3a8a",
|
|
211
|
+
primaryLight: "#60a5fa",
|
|
212
|
+
primaryBg: "#dbeafe",
|
|
213
|
+
radius: borderRadius.sm,
|
|
214
|
+
cssVars: {
|
|
215
|
+
"--hu-text": colors.gray[950],
|
|
216
|
+
"--hu-text-2": colors.gray[700],
|
|
217
|
+
"--hu-border": colors.gray[400],
|
|
218
|
+
"--hu-border-2": colors.gray[600],
|
|
219
|
+
"--hu-focus-ring": "#1d4ed8"
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
// ── Healthcare — calm, clinical, status-heavy ───────────────────────────
|
|
224
|
+
healthcare: {
|
|
225
|
+
name: "Healthcare",
|
|
226
|
+
description: "Clinical teal theme for patient, care, and operations systems.",
|
|
227
|
+
overrides: {
|
|
228
|
+
primaryColor: "#0f766e",
|
|
229
|
+
primaryDark: "#115e59",
|
|
230
|
+
primaryLight: "#14b8a6",
|
|
231
|
+
primaryBg: "#ccfbf1",
|
|
232
|
+
radius: borderRadius.lg,
|
|
233
|
+
cssVars: {
|
|
234
|
+
"--hu-success": "#16a34a",
|
|
235
|
+
"--hu-info": "#0284c7",
|
|
236
|
+
"--hu-warning": "#d97706",
|
|
237
|
+
"--hu-error": "#dc2626",
|
|
238
|
+
"--hu-focus-ring": "#0f766e"
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
// ── Retail — commerce, conversion, merchandising ────────────────────────
|
|
243
|
+
retail: {
|
|
244
|
+
name: "Retail",
|
|
245
|
+
description: "Commerce-focused theme for storefront, CRM, and merchandising tools.",
|
|
246
|
+
overrides: {
|
|
247
|
+
primaryColor: "#2563eb",
|
|
248
|
+
primaryDark: "#1d4ed8",
|
|
249
|
+
primaryLight: "#60a5fa",
|
|
250
|
+
primaryBg: "#eff6ff",
|
|
251
|
+
radius: borderRadius.lg,
|
|
252
|
+
densityScale: 1.05,
|
|
253
|
+
cssVars: {
|
|
254
|
+
"--hu-accent": "#f97316",
|
|
255
|
+
"--hu-accent-bg": "#fff7ed",
|
|
256
|
+
"--hu-focus-ring": "#2563eb"
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
// ── Education — approachable, readable, focused ─────────────────────────
|
|
261
|
+
education: {
|
|
262
|
+
name: "Education",
|
|
263
|
+
description: "Approachable violet theme for learning platforms and admin portals.",
|
|
264
|
+
overrides: {
|
|
265
|
+
primaryColor: colors.violet[600],
|
|
266
|
+
primaryDark: colors.violet[700],
|
|
267
|
+
primaryLight: colors.violet[400],
|
|
268
|
+
primaryBg: colors.violet[50],
|
|
269
|
+
radius: borderRadius.xl,
|
|
270
|
+
cssVars: {
|
|
271
|
+
"--hu-info": colors.sky[600],
|
|
272
|
+
"--hu-success": colors.emerald[600],
|
|
273
|
+
"--hu-focus-ring": colors.violet[600]
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
// ── Telecom — operational, network, dashboard-heavy ─────────────────────
|
|
278
|
+
telecom: {
|
|
279
|
+
name: "Telecom",
|
|
280
|
+
description: "Network operations theme for telecom, infrastructure, and IoT dashboards.",
|
|
281
|
+
overrides: {
|
|
282
|
+
primaryColor: colors.sky[600],
|
|
283
|
+
primaryDark: colors.sky[700],
|
|
284
|
+
primaryLight: colors.sky[400],
|
|
285
|
+
primaryBg: colors.sky[50],
|
|
286
|
+
radius: borderRadius.md,
|
|
287
|
+
densityScale: 0.85,
|
|
288
|
+
cssVars: {
|
|
289
|
+
"--hu-accent": colors.emerald[500],
|
|
290
|
+
"--hu-accent-bg": colors.emerald[50],
|
|
291
|
+
"--hu-focus-ring": colors.sky[600]
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
// ---------------------------------------------------------------------------
|
|
297
|
+
// Dark variants of all themes
|
|
298
|
+
// ---------------------------------------------------------------------------
|
|
299
|
+
export function getDarkVariant(themeName) {
|
|
300
|
+
const base = themes[themeName]?.overrides ?? themes.default.overrides;
|
|
301
|
+
return {
|
|
302
|
+
...base,
|
|
303
|
+
cssVars: {
|
|
304
|
+
...base.cssVars,
|
|
305
|
+
"--hu-bg": "#0a0a0f",
|
|
306
|
+
"--hu-bg-2": "#111118",
|
|
307
|
+
"--hu-bg-3": "#1a1a24",
|
|
308
|
+
"--hu-bg-4": "#22222f",
|
|
309
|
+
"--hu-border": "#2a2a3a",
|
|
310
|
+
"--hu-border-2": "#3a3a50",
|
|
311
|
+
"--hu-text": "#f0f0ff",
|
|
312
|
+
"--hu-text-2": "#a0a0c0",
|
|
313
|
+
"--hu-text-3": "#606080"
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hyperpackai/hyperui",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "HyperUI \u2014 rich, accessible, enterprise-grade component library for Hyperion with full design token system.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./theme": {
|
|
14
|
+
"types": "./dist/theme/index.d.ts",
|
|
15
|
+
"import": "./dist/theme/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./tokens": {
|
|
18
|
+
"types": "./dist/tokens/index.d.ts",
|
|
19
|
+
"import": "./dist/tokens/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./charts": {
|
|
22
|
+
"types": "./dist/components/charts.d.ts",
|
|
23
|
+
"import": "./dist/components/charts.js"
|
|
24
|
+
},
|
|
25
|
+
"./enterprise": {
|
|
26
|
+
"types": "./dist/components/enterprise.d.ts",
|
|
27
|
+
"import": "./dist/components/enterprise.js"
|
|
28
|
+
},
|
|
29
|
+
"./ai": {
|
|
30
|
+
"types": "./dist/components/ai.d.ts",
|
|
31
|
+
"import": "./dist/components/ai.js"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"dist",
|
|
36
|
+
"LICENSE",
|
|
37
|
+
"README.md"
|
|
38
|
+
],
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"sideEffects": false,
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": ">=20.0.0"
|
|
43
|
+
},
|
|
44
|
+
"keywords": [
|
|
45
|
+
"hyperui",
|
|
46
|
+
"component-library",
|
|
47
|
+
"design-tokens",
|
|
48
|
+
"ui-library",
|
|
49
|
+
"hyperion",
|
|
50
|
+
"accessible",
|
|
51
|
+
"dark-mode",
|
|
52
|
+
"enterprise"
|
|
53
|
+
],
|
|
54
|
+
"scripts": {
|
|
55
|
+
"build": "tsc -b",
|
|
56
|
+
"dev": "tsc -b --watch"
|
|
57
|
+
},
|
|
58
|
+
"peerDependencies": {
|
|
59
|
+
"@hyperpackai/hyperion": "^0.1.0"
|
|
60
|
+
},
|
|
61
|
+
"publishConfig": {
|
|
62
|
+
"access": "public",
|
|
63
|
+
"registry": "https://registry.npmjs.org/"
|
|
64
|
+
},
|
|
65
|
+
"repository": {
|
|
66
|
+
"type": "git",
|
|
67
|
+
"url": "https://github.com/tharikajis-dev/HyperPack"
|
|
68
|
+
}
|
|
69
|
+
}
|