@hilum/ui 3.1.2 → 3.2.1
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/dist/{chunk-5JX2YKJM.js → chunk-MAHPAP65.js} +65 -11
- package/dist/chunk-MAHPAP65.js.map +1 -0
- package/dist/icons.d.ts +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.js +224 -150
- package/dist/index.js.map +1 -1
- package/dist/tokens.css +10 -0
- package/dist/tokens.d.ts +9 -0
- package/dist/tokens.js +1 -1
- package/package.json +1 -1
- package/src/components/account-menu.tsx +3 -10
- package/src/components/action-panel.tsx +10 -7
- package/src/components/alert-dialog.tsx +10 -6
- package/src/components/alert.tsx +6 -2
- package/src/components/avatar-stack.tsx +6 -1
- package/src/components/avatar.tsx +4 -1
- package/src/components/breadcrumb.tsx +6 -1
- package/src/components/button-group.tsx +6 -5
- package/src/components/button.tsx +9 -7
- package/src/components/calendar.tsx +6 -5
- package/src/components/card-heading.tsx +4 -2
- package/src/components/card.tsx +2 -2
- package/src/components/carousel.tsx +2 -2
- package/src/components/checkbox.tsx +2 -1
- package/src/components/color-picker.tsx +4 -4
- package/src/components/combobox.tsx +17 -7
- package/src/components/command-palette.tsx +4 -2
- package/src/components/command.tsx +4 -2
- package/src/components/context-menu.tsx +4 -4
- package/src/components/data-table.tsx +7 -4
- package/src/components/description-list.tsx +4 -2
- package/src/components/dialog.tsx +7 -3
- package/src/components/dropdown-menu.tsx +4 -4
- package/src/components/empty-state.tsx +4 -2
- package/src/components/field.tsx +11 -3
- package/src/components/grid-list.tsx +3 -3
- package/src/components/input-group.tsx +1 -1
- package/src/components/input-number.tsx +4 -1
- package/src/components/input-otp.tsx +1 -1
- package/src/components/input.tsx +1 -1
- package/src/components/menubar.tsx +7 -11
- package/src/components/native-select.tsx +1 -1
- package/src/components/navigation-menu.tsx +3 -3
- package/src/components/notification.tsx +6 -4
- package/src/components/page-heading.tsx +4 -2
- package/src/components/pagination.tsx +2 -2
- package/src/components/progress.tsx +1 -1
- package/src/components/radio-card.tsx +7 -6
- package/src/components/radio-group.tsx +2 -1
- package/src/components/section-heading.tsx +4 -2
- package/src/components/select.tsx +2 -2
- package/src/components/sheet.tsx +8 -4
- package/src/components/sidebar.tsx +8 -8
- package/src/components/slider.tsx +1 -1
- package/src/components/stat-card.tsx +2 -2
- package/src/components/steps.tsx +13 -11
- package/src/components/switch.tsx +4 -4
- package/src/components/toggle.tsx +5 -5
- package/src/icons.ts +4 -0
- package/src/tokens/tokens.ts +65 -10
- package/dist/chunk-5JX2YKJM.js.map +0 -1
|
@@ -198,8 +198,8 @@ function SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<t
|
|
|
198
198
|
<Button
|
|
199
199
|
data-sidebar="trigger"
|
|
200
200
|
variant="ghost"
|
|
201
|
-
size="
|
|
202
|
-
className={
|
|
201
|
+
size="icon"
|
|
202
|
+
className={className}
|
|
203
203
|
onClick={(e) => {
|
|
204
204
|
onClick?.(e);
|
|
205
205
|
toggleSidebar();
|
|
@@ -227,7 +227,7 @@ function SidebarRail({ className, ...props }: React.ComponentProps<"button">) {
|
|
|
227
227
|
onClick={toggleSidebar}
|
|
228
228
|
title="Toggle sidebar"
|
|
229
229
|
className={cn(
|
|
230
|
-
"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 cursor-col-resize transition-
|
|
230
|
+
"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 cursor-col-resize transition-[left,right,width] ease-linear",
|
|
231
231
|
"after:absolute after:inset-y-0 after:left-1/2 after:w-[2px]",
|
|
232
232
|
"hover:after:bg-brand-primary/30",
|
|
233
233
|
"group-data-[side=left]:-right-4 group-data-[side=right]:left-0",
|
|
@@ -353,7 +353,7 @@ function SidebarGroupAction({
|
|
|
353
353
|
<Comp
|
|
354
354
|
data-sidebar="group-action"
|
|
355
355
|
className={cn(
|
|
356
|
-
"absolute right-
|
|
356
|
+
"absolute right-2 top-2 flex size-8 items-center justify-center",
|
|
357
357
|
"rounded-md text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
358
358
|
"outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30",
|
|
359
359
|
className,
|
|
@@ -412,7 +412,7 @@ function SidebarMenuButton({
|
|
|
412
412
|
data-size={size}
|
|
413
413
|
className={cn(
|
|
414
414
|
// Base
|
|
415
|
-
"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 body-sm text-left",
|
|
415
|
+
"peer/menu-button flex min-h-10 w-full items-center gap-2 overflow-hidden rounded-md p-2 body-sm text-left",
|
|
416
416
|
"outline-none ring-ring",
|
|
417
417
|
"transition-[width,height,padding] duration-150",
|
|
418
418
|
"hover:bg-muted hover:text-foreground",
|
|
@@ -430,7 +430,7 @@ function SidebarMenuButton({
|
|
|
430
430
|
],
|
|
431
431
|
// Collapsed state
|
|
432
432
|
"group-data-[state=collapsed]/sidebar-wrapper:justify-center",
|
|
433
|
-
"group-data-[state=collapsed]/sidebar-wrapper:size-
|
|
433
|
+
"group-data-[state=collapsed]/sidebar-wrapper:size-10",
|
|
434
434
|
"group-data-[state=collapsed]/sidebar-wrapper:p-0",
|
|
435
435
|
className,
|
|
436
436
|
)}
|
|
@@ -481,7 +481,7 @@ function SidebarMenuAction({
|
|
|
481
481
|
<Comp
|
|
482
482
|
data-sidebar="menu-action"
|
|
483
483
|
className={cn(
|
|
484
|
-
"absolute right-1 top-1/2 -translate-y-1/2
|
|
484
|
+
"absolute right-1 top-1/2 flex size-8 -translate-y-1/2 items-center justify-center",
|
|
485
485
|
"rounded-md text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
486
486
|
"outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30",
|
|
487
487
|
showOnHover && [
|
|
@@ -590,7 +590,7 @@ function SidebarMenuSubButton({
|
|
|
590
590
|
data-sidebar="menu-sub-button"
|
|
591
591
|
data-active={isActive}
|
|
592
592
|
className={cn(
|
|
593
|
-
"flex h-
|
|
593
|
+
"flex min-h-8 min-w-0 items-center gap-2 overflow-hidden rounded-md px-2",
|
|
594
594
|
"body text-muted-foreground outline-none",
|
|
595
595
|
"transition-colors duration-150",
|
|
596
596
|
"hover:text-foreground hover:bg-muted",
|
|
@@ -16,7 +16,7 @@ const SliderRoot = React.forwardRef<
|
|
|
16
16
|
<Slider.Track className="relative h-1.5 w-full grow overflow-hidden rounded-full bg-muted">
|
|
17
17
|
<Slider.Range className="absolute h-full bg-brand-primary" />
|
|
18
18
|
</Slider.Track>
|
|
19
|
-
<Slider.Thumb className="block size-4 rounded-full border-2 border-brand-primary bg-card shadow-natural transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30 disabled:pointer-events-none disabled:opacity-50" />
|
|
19
|
+
<Slider.Thumb className="relative block size-4 rounded-full border-2 border-brand-primary bg-card shadow-natural transition-colors after:absolute after:left-1/2 after:top-1/2 after:size-10 after:-translate-x-1/2 after:-translate-y-1/2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30 disabled:pointer-events-none disabled:opacity-50" />
|
|
20
20
|
</Slider.Root>
|
|
21
21
|
));
|
|
22
22
|
SliderRoot.displayName = "Slider";
|
|
@@ -36,14 +36,14 @@ function StatCard({ label, value, trend, icon, className }: StatCardProps) {
|
|
|
36
36
|
</div>
|
|
37
37
|
)}
|
|
38
38
|
</div>
|
|
39
|
-
<p className="heading-xl mt-2 text-foreground">{value}</p>
|
|
39
|
+
<p className="heading-xl mt-2 tabular-nums text-foreground">{value}</p>
|
|
40
40
|
{trend &&
|
|
41
41
|
(() => {
|
|
42
42
|
const Icon = TrendIcon[trend.direction];
|
|
43
43
|
return (
|
|
44
44
|
<div className={cn("mt-2 flex items-center gap-1", trendColor[trend.direction])}>
|
|
45
45
|
<Icon size={12} />
|
|
46
|
-
<span className="caption font-medium">{trend.value}</span>
|
|
46
|
+
<span className="caption tabular-nums font-medium">{trend.value}</span>
|
|
47
47
|
</div>
|
|
48
48
|
);
|
|
49
49
|
})()}
|
package/src/components/steps.tsx
CHANGED
|
@@ -29,7 +29,7 @@ function CirclesSteps({ steps, className }: { steps: Step[]; className?: string
|
|
|
29
29
|
<li key={step.id ?? i} className={cn("relative", !isLast && "flex-1")}>
|
|
30
30
|
{/* Connector line */}
|
|
31
31
|
{!isLast && (
|
|
32
|
-
<div className="absolute
|
|
32
|
+
<div className="absolute left-10 right-0 top-5 h-0.5" aria-hidden="true">
|
|
33
33
|
<div
|
|
34
34
|
className={cn(
|
|
35
35
|
"h-full",
|
|
@@ -47,7 +47,7 @@ function CirclesSteps({ steps, className }: { steps: Step[]; className?: string
|
|
|
47
47
|
{/* Circle */}
|
|
48
48
|
<span
|
|
49
49
|
className={cn(
|
|
50
|
-
"relative z-10 flex size-
|
|
50
|
+
"relative z-10 flex size-10 items-center justify-center rounded-full transition-colors",
|
|
51
51
|
step.status === "complete" &&
|
|
52
52
|
"bg-brand-primary group-hover:bg-brand-primary/80",
|
|
53
53
|
step.status === "current" && "border-2 border-brand-primary bg-card",
|
|
@@ -58,9 +58,9 @@ function CirclesSteps({ steps, className }: { steps: Step[]; className?: string
|
|
|
58
58
|
{step.status === "complete" ? (
|
|
59
59
|
<Check size={14} className="text-background" strokeWidth={2.5} />
|
|
60
60
|
) : step.status === "current" ? (
|
|
61
|
-
<span className="size-
|
|
61
|
+
<span className="size-3 rounded-full bg-brand-primary" />
|
|
62
62
|
) : (
|
|
63
|
-
<span className="size-
|
|
63
|
+
<span className="size-3 rounded-full bg-transparent group-hover:bg-muted" />
|
|
64
64
|
)}
|
|
65
65
|
</span>
|
|
66
66
|
|
|
@@ -75,7 +75,9 @@ function CirclesSteps({ steps, className }: { steps: Step[]; className?: string
|
|
|
75
75
|
{step.name}
|
|
76
76
|
</span>
|
|
77
77
|
{step.description && (
|
|
78
|
-
<span className="caption text-muted-foreground">
|
|
78
|
+
<span className="caption text-pretty text-muted-foreground">
|
|
79
|
+
{step.description}
|
|
80
|
+
</span>
|
|
79
81
|
)}
|
|
80
82
|
</span>
|
|
81
83
|
</a>
|
|
@@ -93,7 +95,7 @@ function BulletsSteps({ steps, className }: { steps: Step[]; className?: string
|
|
|
93
95
|
|
|
94
96
|
return (
|
|
95
97
|
<nav className={cn("flex items-center gap-4", className)} aria-label="Progress">
|
|
96
|
-
<p className="body font-medium text-muted-foreground">
|
|
98
|
+
<p className="body font-medium tabular-nums text-muted-foreground">
|
|
97
99
|
Step {currentIdx + 1} of {steps.length}
|
|
98
100
|
</p>
|
|
99
101
|
<ol role="list" className="flex items-center gap-2">
|
|
@@ -102,11 +104,11 @@ function BulletsSteps({ steps, className }: { steps: Step[]; className?: string
|
|
|
102
104
|
<a
|
|
103
105
|
href={step.href ?? "#"}
|
|
104
106
|
onClick={!step.href ? (e) => e.preventDefault() : undefined}
|
|
105
|
-
className="
|
|
107
|
+
className="relative flex size-10 items-center justify-center"
|
|
106
108
|
>
|
|
107
109
|
{step.status === "complete" ? (
|
|
108
110
|
<span
|
|
109
|
-
className="block size-2.5 rounded-full bg-brand-primary hover:bg-brand-primary/80
|
|
111
|
+
className="block size-2.5 rounded-full bg-brand-primary transition-colors hover:bg-brand-primary/80"
|
|
110
112
|
aria-label={`${step.name}: completed`}
|
|
111
113
|
/>
|
|
112
114
|
) : step.status === "current" ? (
|
|
@@ -120,7 +122,7 @@ function BulletsSteps({ steps, className }: { steps: Step[]; className?: string
|
|
|
120
122
|
</span>
|
|
121
123
|
) : (
|
|
122
124
|
<span
|
|
123
|
-
className="block size-2.5 rounded-full bg-muted hover:bg-muted
|
|
125
|
+
className="block size-2.5 rounded-full bg-muted transition-colors hover:bg-muted"
|
|
124
126
|
aria-label={`${step.name}: upcoming`}
|
|
125
127
|
/>
|
|
126
128
|
)}
|
|
@@ -143,7 +145,7 @@ function ProgressSteps({ steps, className }: { steps: Step[]; className?: string
|
|
|
143
145
|
{/* Bar */}
|
|
144
146
|
<div className="h-1.5 w-full overflow-hidden rounded-full bg-muted">
|
|
145
147
|
<div
|
|
146
|
-
className="h-full rounded-full bg-brand-primary transition-
|
|
148
|
+
className="h-full rounded-full bg-brand-primary transition-[width] duration-500"
|
|
147
149
|
style={{ width: `${progress}%` }}
|
|
148
150
|
/>
|
|
149
151
|
</div>
|
|
@@ -155,7 +157,7 @@ function ProgressSteps({ steps, className }: { steps: Step[]; className?: string
|
|
|
155
157
|
<div
|
|
156
158
|
key={step.id ?? i}
|
|
157
159
|
className={cn(
|
|
158
|
-
"caption font-medium",
|
|
160
|
+
"caption font-medium text-pretty",
|
|
159
161
|
i === 0 ? "text-left" : isLast ? "text-right" : "text-center",
|
|
160
162
|
step.status === "upcoming" ? "text-muted-foreground" : "text-foreground",
|
|
161
163
|
)}
|
|
@@ -11,8 +11,8 @@ const SwitchRoot = React.forwardRef<
|
|
|
11
11
|
<Switch.Root
|
|
12
12
|
ref={ref}
|
|
13
13
|
className={cn(
|
|
14
|
-
"peer inline-flex h-
|
|
15
|
-
"border-2 border-transparent transition-
|
|
14
|
+
"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full",
|
|
15
|
+
"border-2 border-transparent transition-[background-color,border-color,box-shadow] duration-150",
|
|
16
16
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-primary/30",
|
|
17
17
|
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
18
18
|
"data-[state=unchecked]:bg-muted data-[state=checked]:bg-brand-primary",
|
|
@@ -22,8 +22,8 @@ const SwitchRoot = React.forwardRef<
|
|
|
22
22
|
>
|
|
23
23
|
<Switch.Thumb
|
|
24
24
|
className={cn(
|
|
25
|
-
"pointer-events-none block size-
|
|
26
|
-
"transition-transform data-[state=unchecked]:translate-x-0 data-[state=checked]:translate-x-
|
|
25
|
+
"pointer-events-none block size-5 rounded-full bg-card shadow-natural",
|
|
26
|
+
"transition-transform data-[state=unchecked]:translate-x-0 data-[state=checked]:translate-x-5",
|
|
27
27
|
)}
|
|
28
28
|
/>
|
|
29
29
|
</Switch.Root>
|
|
@@ -9,7 +9,7 @@ const toggleVariants = cva(
|
|
|
9
9
|
[
|
|
10
10
|
"inline-flex shrink-0 items-center justify-center gap-2",
|
|
11
11
|
"body font-medium whitespace-nowrap rounded-md",
|
|
12
|
-
"transition-
|
|
12
|
+
"transition-[background-color,border-color,box-shadow,color,opacity,scale] duration-150 outline-none active:scale-[0.96]",
|
|
13
13
|
"focus-visible:ring-2 focus-visible:ring-brand-primary/30 focus-visible:ring-offset-1",
|
|
14
14
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
15
15
|
"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
@@ -35,11 +35,11 @@ const toggleVariants = cva(
|
|
|
35
35
|
},
|
|
36
36
|
size: {
|
|
37
37
|
sm: "h-8 gap-1.5 px-3",
|
|
38
|
-
default: "h-
|
|
39
|
-
lg: "h-
|
|
40
|
-
icon: "size-
|
|
38
|
+
default: "h-10 px-3",
|
|
39
|
+
lg: "h-11 px-4",
|
|
40
|
+
icon: "size-10",
|
|
41
41
|
"icon-sm": "size-8",
|
|
42
|
-
"icon-lg": "size-
|
|
42
|
+
"icon-lg": "size-11",
|
|
43
43
|
},
|
|
44
44
|
},
|
|
45
45
|
defaultVariants: {
|
package/src/icons.ts
CHANGED
|
@@ -26,8 +26,10 @@ export {
|
|
|
26
26
|
ArrowDownRight,
|
|
27
27
|
MoreHorizontal,
|
|
28
28
|
MoreVertical,
|
|
29
|
+
GripVertical,
|
|
29
30
|
// Status
|
|
30
31
|
Check,
|
|
32
|
+
BadgeCheck,
|
|
31
33
|
AlertCircle,
|
|
32
34
|
AlertTriangle,
|
|
33
35
|
Info,
|
|
@@ -83,6 +85,7 @@ export {
|
|
|
83
85
|
Clock,
|
|
84
86
|
File,
|
|
85
87
|
FileText,
|
|
88
|
+
Database,
|
|
86
89
|
Folder,
|
|
87
90
|
FolderOpen,
|
|
88
91
|
Image,
|
|
@@ -118,6 +121,7 @@ export {
|
|
|
118
121
|
ShieldCheck,
|
|
119
122
|
// Money / commerce
|
|
120
123
|
CreditCard,
|
|
124
|
+
Package,
|
|
121
125
|
ShoppingCart,
|
|
122
126
|
ShoppingBag,
|
|
123
127
|
Wallet,
|
package/src/tokens/tokens.ts
CHANGED
|
@@ -162,21 +162,76 @@ export const tokens = {
|
|
|
162
162
|
|
|
163
163
|
fontFamily: {
|
|
164
164
|
sans: 'Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',
|
|
165
|
-
display:
|
|
165
|
+
display:
|
|
166
|
+
'Gabarito, Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',
|
|
166
167
|
mono: 'ui-monospace, "SFMono-Regular", "Menlo", "Consolas", monospace',
|
|
167
168
|
},
|
|
168
169
|
|
|
169
170
|
/** Type scale utilities — emitted as Tailwind v4 `@utility` blocks. */
|
|
170
171
|
typeScale: {
|
|
171
|
-
"display-xl": {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
172
|
+
"display-xl": {
|
|
173
|
+
family: "display",
|
|
174
|
+
size: "3rem",
|
|
175
|
+
weight: 400,
|
|
176
|
+
lineHeight: "1.15",
|
|
177
|
+
textWrap: "balance",
|
|
178
|
+
},
|
|
179
|
+
display: {
|
|
180
|
+
family: "display",
|
|
181
|
+
size: "2.25rem",
|
|
182
|
+
weight: 400,
|
|
183
|
+
lineHeight: "1.15",
|
|
184
|
+
textWrap: "balance",
|
|
185
|
+
},
|
|
186
|
+
"heading-xl": {
|
|
187
|
+
family: "display",
|
|
188
|
+
size: "1.875rem",
|
|
189
|
+
weight: 400,
|
|
190
|
+
lineHeight: "1.2",
|
|
191
|
+
textWrap: "balance",
|
|
192
|
+
},
|
|
193
|
+
heading: {
|
|
194
|
+
family: "display",
|
|
195
|
+
size: "1.5rem",
|
|
196
|
+
weight: 400,
|
|
197
|
+
lineHeight: "1.2",
|
|
198
|
+
textWrap: "balance",
|
|
199
|
+
},
|
|
200
|
+
subheading: {
|
|
201
|
+
family: "display",
|
|
202
|
+
size: "1.25rem",
|
|
203
|
+
weight: 400,
|
|
204
|
+
lineHeight: "1.4",
|
|
205
|
+
textWrap: "balance",
|
|
206
|
+
},
|
|
207
|
+
"body-lg": {
|
|
208
|
+
family: "sans",
|
|
209
|
+
size: "1rem",
|
|
210
|
+
weight: 400,
|
|
211
|
+
lineHeight: "1.625",
|
|
212
|
+
textWrap: "pretty",
|
|
213
|
+
},
|
|
214
|
+
body: {
|
|
215
|
+
family: "sans",
|
|
216
|
+
size: "0.875rem",
|
|
217
|
+
weight: 400,
|
|
218
|
+
lineHeight: "1.625",
|
|
219
|
+
textWrap: "pretty",
|
|
220
|
+
},
|
|
221
|
+
"body-sm": {
|
|
222
|
+
family: "sans",
|
|
223
|
+
size: "0.75rem",
|
|
224
|
+
weight: 500,
|
|
225
|
+
lineHeight: "1.625",
|
|
226
|
+
textWrap: "pretty",
|
|
227
|
+
},
|
|
228
|
+
caption: {
|
|
229
|
+
family: "sans",
|
|
230
|
+
size: "0.75rem",
|
|
231
|
+
weight: 400,
|
|
232
|
+
lineHeight: "1.625",
|
|
233
|
+
textWrap: "pretty",
|
|
234
|
+
},
|
|
180
235
|
"caption-xs": { family: "sans", size: "0.625rem", weight: 400, lineHeight: "1.625" },
|
|
181
236
|
|
|
182
237
|
/* --- "Eyebrow" family — uppercase tracked label used above headlines, --- *
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tokens/tokens.ts"],"names":[],"mappings":"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","file":"chunk-5JX2YKJM.js","sourcesContent":["// @hilum/ui/tokens — JS-first design tokens (D6).\n//\n// This module is the single source of truth for the Hilum visual identity.\n// A build step (scripts/build-tokens.mjs) reads the compiled output of this\n// file and emits dist/tokens.css for consumers to `@import`.\n//\n// Brand model: D8 — base palette is fixed here. Per-product overrides are\n// applied at runtime via createTheme() in @hilum/ui/create-theme.\n// Color modes: D7 — light + dark, both auto (`prefers-color-scheme`) and\n// explicit via `[data-theme]`.\n//\n// Core brand colors:\n// brand.primary #C100F1 — vivid purple — purple-500 on the scale below\n// brand.secondary #FFF5BF — pale lemon — butter-200 on the scale below\n//\n// ground — neutral spine for text, borders, and structure (values: Tailwind neutral)\n\nexport const tokens = {\n /* ============================================================== *\n * PALETTE — concrete colors *\n * ============================================================== */\n\n ground: {\n 50: \"#fafafa\",\n 100: \"#f5f5f5\",\n 200: \"#e5e5e5\",\n 300: \"#d4d4d4\",\n 400: \"#a3a3a3\",\n 500: \"#737373\",\n 600: \"#525252\",\n 700: \"#404040\",\n 800: \"#262626\",\n 900: \"#171717\",\n 950: \"#0a0a0a\",\n },\n\n // Pale lemon — anchor: butter-200 = #FFF5BF\n butter: {\n 50: \"#ffffe8\",\n 100: \"#fffad0\",\n 200: \"#fff5bf\",\n 300: \"#fde870\",\n 400: \"#f6d42a\",\n 500: \"#dab010\",\n 600: \"#a88008\",\n 700: \"#7c5c04\",\n 800: \"#543e02\",\n 900: \"#382801\",\n 950: \"#221600\",\n },\n\n // Vivid purple — anchor: purple-500 = #C100F1 (brand.primary)\n purple: {\n 50: \"#fdf0ff\",\n 100: \"#f5d6ff\",\n 200: \"#e8a8ff\",\n 300: \"#d870f9\",\n 400: \"#c840f6\",\n 500: \"#c100f1\",\n 600: \"#9c00c0\",\n 700: \"#740092\",\n 800: \"#4e0062\",\n 900: \"#330040\",\n 950: \"#200028\",\n },\n\n // Legacy functional colors — used by components not yet migrated to the new palette.\n brand: {\n primary: \"#C100F1\", // purple-500\n secondary: \"#FFF5BF\", // butter-200\n },\n\n destructive: \"#dc2626\", // red-600\n\n /* ============================================================== *\n * SEMANTIC — what components reference *\n * ============================================================== */\n\n semantic: {\n light: {\n background: \"#ffffff\",\n foreground: \"#171717\", // ground-900\n card: \"#ffffff\",\n cardForeground: \"#171717\",\n surface: \"#fafafa\", // ground-50\n surfaceForeground: \"#262626\", // ground-800\n border: \"#f5f5f5\", // ground-100\n input: \"#f5f5f5\",\n muted: \"#fafafa\",\n mutedForeground: \"#737373\", // ground-500\n accent: \"#fdf0ff\", // purple-50\n accentForeground: \"#740092\", // purple-700\n primary: \"#c100f1\", // purple-500 = brand.primary\n primaryForeground: \"#ffffff\",\n secondary: \"#fafafa\", // ground-50\n secondaryForeground: \"#404040\", // ground-700\n destructive: \"#dc2626\",\n destructiveForeground: \"#ffffff\",\n success: \"#CDEA19\", // lime — functional semantic only\n successForeground: \"#171717\",\n warning: \"#fff5bf\", // butter-200 = brand.secondary\n warningForeground: \"#171717\", // ground-900\n ring: \"#c100f1\", // purple-500 = brand.primary\n },\n // Mid — a neutral medium-gray theme (from the Pappery designer \"mid\" palette,\n // mapped onto the ground scale). Sits between light and dark.\n mid: {\n background: \"#737373\", // ground-500 — main surface (designer panel)\n foreground: \"#fafafa\", // ground-50\n card: \"#525252\", // ground-600 — elevated items (designer item-bg)\n cardForeground: \"#fafafa\",\n surface: \"#525252\", // ground-600 (designer canvas/pane)\n surfaceForeground: \"#fafafa\",\n border: \"#a3a3a3\", // ground-400 (designer border — lighter so it reads on the gray)\n input: \"#404040\", // ground-700 (designer input-bg)\n muted: \"#525252\", // ground-600\n mutedForeground: \"#e5e5e5\", // ground-200 (designer text-secondary)\n accent: \"#404040\", // ground-700 (designer item-hover-bg)\n accentForeground: \"#fafafa\",\n primary: \"#c100f1\", // brand stays consistent across themes\n primaryForeground: \"#ffffff\",\n secondary: \"#525252\", // ground-600\n secondaryForeground: \"#fafafa\",\n destructive: \"#ef4444\", // red-500\n destructiveForeground: \"#ffffff\",\n success: \"#CDEA19\", // lime — functional semantic only\n successForeground: \"#171717\",\n warning: \"#fff5bf\", // butter-200\n warningForeground: \"#171717\",\n ring: \"#c100f1\",\n },\n dark: {\n background: \"#171717\", // ground-900 — designer canvas (deepest)\n foreground: \"#fafafa\", // ground-50\n card: \"#262626\", // ground-800 — designer panel-bg (elevated over bg)\n cardForeground: \"#fafafa\",\n surface: \"#1a1a1a\", // designer item-hover depth\n surfaceForeground: \"#f5f5f5\",\n border: \"#404040\", // ground-700 — designer border (reads on the dark)\n input: \"#262626\", // ground-800\n muted: \"#262626\", // ground-800\n mutedForeground: \"#a3a3a3\", // ground-400\n accent: \"#404040\", // ground-700 — neutral elevated/hover (designer item-hover)\n accentForeground: \"#fafafa\",\n primary: \"#c100f1\", // purple-500 — brand stays consistent (D8)\n primaryForeground: \"#ffffff\",\n secondary: \"#262626\", // ground-800\n secondaryForeground: \"#f5f5f5\",\n destructive: \"#ef4444\", // red-500 (slightly lighter for dark)\n destructiveForeground: \"#ffffff\",\n success: \"#CDEA19\", // lime — functional semantic only\n successForeground: \"#0a0a0a\",\n warning: \"#221600\", // butter-950 surface\n warningForeground: \"#fffad0\", // butter-100\n ring: \"#c100f1\", // purple-500 = brand.primary\n },\n },\n\n /* ============================================================== *\n * TYPOGRAPHY *\n * ============================================================== */\n\n fontFamily: {\n sans: 'Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif',\n display: 'Gabarito, Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif',\n mono: 'ui-monospace, \"SFMono-Regular\", \"Menlo\", \"Consolas\", monospace',\n },\n\n /** Type scale utilities — emitted as Tailwind v4 `@utility` blocks. */\n typeScale: {\n \"display-xl\": { family: \"display\", size: \"3rem\", weight: 400, lineHeight: \"1.15\" },\n display: { family: \"display\", size: \"2.25rem\", weight: 400, lineHeight: \"1.15\" },\n \"heading-xl\": { family: \"display\", size: \"1.875rem\", weight: 400, lineHeight: \"1.2\" },\n heading: { family: \"display\", size: \"1.5rem\", weight: 400, lineHeight: \"1.2\" },\n subheading: { family: \"display\", size: \"1.25rem\", weight: 400, lineHeight: \"1.4\" },\n \"body-lg\": { family: \"sans\", size: \"1rem\", weight: 400, lineHeight: \"1.625\" },\n body: { family: \"sans\", size: \"0.875rem\", weight: 400, lineHeight: \"1.625\" },\n \"body-sm\": { family: \"sans\", size: \"0.75rem\", weight: 500, lineHeight: \"1.625\" },\n caption: { family: \"sans\", size: \"0.75rem\", weight: 400, lineHeight: \"1.625\" },\n \"caption-xs\": { family: \"sans\", size: \"0.625rem\", weight: 400, lineHeight: \"1.625\" },\n\n /* --- \"Eyebrow\" family — uppercase tracked label used above headlines, --- *\n * on badges, and on section markers. `eyebrow` is the canonical name; *\n * `overline` (Material parlance), `kicker` (editorial parlance) and *\n * `label` (legacy) are aliases of the same scale so consumers can pick *\n * whichever vocabulary reads best in their context. `eyebrow-sm` is *\n * the compact variant for badge-sized chips and tiny status pills. */\n eyebrow: {\n family: \"sans\",\n size: \"0.75rem\",\n weight: 600,\n lineHeight: \"1\",\n letterSpacing: \"0.1em\",\n textTransform: \"uppercase\" as const,\n },\n \"eyebrow-sm\": {\n family: \"sans\",\n size: \"0.625rem\",\n weight: 600,\n lineHeight: \"1\",\n letterSpacing: \"0.1em\",\n textTransform: \"uppercase\" as const,\n },\n overline: {\n family: \"sans\",\n size: \"0.75rem\",\n weight: 600,\n lineHeight: \"1\",\n letterSpacing: \"0.1em\",\n textTransform: \"uppercase\" as const,\n },\n kicker: {\n family: \"sans\",\n size: \"0.75rem\",\n weight: 600,\n lineHeight: \"1\",\n letterSpacing: \"0.1em\",\n textTransform: \"uppercase\" as const,\n },\n label: {\n family: \"sans\",\n size: \"0.75rem\",\n weight: 600,\n lineHeight: \"1\",\n letterSpacing: \"0.1em\",\n textTransform: \"uppercase\" as const,\n },\n },\n\n /* ============================================================== *\n * GEOMETRY *\n * ============================================================== */\n\n radius: {\n base: \"0.5rem\",\n sm: \"calc(0.5rem - 4px)\",\n md: \"calc(0.5rem - 2px)\",\n lg: \"calc(0.5rem + 2px)\",\n xl: \"calc(0.5rem + 4px)\",\n full: \"9999px\",\n },\n\n /* ============================================================== *\n * Z-INDEX — semantic layering scale *\n * ============================================================== */\n\n zIndex: {\n dropdown: 40,\n sticky: 50,\n fixed: 60,\n modal: 100,\n popover: 110,\n tooltip: 120,\n },\n\n shadow: {\n natural:\n \"0 0px 0px 1px rgba(0, 0, 0, 0.06), 0 1px 1px -0.5px rgba(0, 0, 0, 0.06), 0 3px 3px -1.5px rgba(0, 0, 0, 0.06)\",\n elevated:\n \"0 0px 0px 1px rgba(0, 0, 0, 0.06), 0 1px 1px -0.5px rgba(0, 0, 0, 0.06), 0 3px 3px -1.5px rgba(0, 0, 0, 0.06), 0 6px 6px -3px rgba(0, 0, 0, 0.06), 0 12px 12px -6px rgba(0, 0, 0, 0.04), 0 24px 24px -12px rgba(0, 0, 0, 0.04), 0 24px 24px 2px rgba(0, 0, 0, 0.1)\",\n },\n\n /* ============================================================== *\n * ANIMATION *\n * ============================================================== */\n\n animation: {\n \"accordion-down\": \"accordion-down 0.2s ease-out\",\n \"accordion-up\": \"accordion-up 0.2s ease-out\",\n \"caret-blink\": \"caret-blink 1.25s ease-out infinite\",\n },\n} as const;\n\nexport type Tokens = typeof tokens;\nexport type SemanticTokens = typeof tokens.semantic.light;\n"]}
|