@runcontext/uxd 0.5.2
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/css/index.css +672 -0
- package/dist/css/tokens.css +66 -0
- package/dist/react/index.d.ts +82 -0
- package/dist/react/index.js +167 -0
- package/dist/tailwind/index.d.ts +49 -0
- package/dist/tailwind/index.js +151 -0
- package/dist/tokens/index.d.ts +91 -0
- package/dist/tokens/index.js +101 -0
- package/package.json +55 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/* Auto-generated from @runcontext/uxd tokens. Do not edit. */
|
|
2
|
+
|
|
3
|
+
:root {
|
|
4
|
+
--rc-color-brand-gold: #c9a55a;
|
|
5
|
+
--rc-color-brand-gold-light: #f5e6c0;
|
|
6
|
+
--rc-color-brand-gold-dim: #1a1508;
|
|
7
|
+
--rc-color-surface-bg: #0a0908;
|
|
8
|
+
--rc-color-surface-card: #121110;
|
|
9
|
+
--rc-color-surface-card-hover: #1e1c18;
|
|
10
|
+
--rc-color-border-default: #36342e;
|
|
11
|
+
--rc-color-border-hover: #6a675e;
|
|
12
|
+
--rc-color-text-primary: #e8e6e1;
|
|
13
|
+
--rc-color-text-secondary: #9a978e;
|
|
14
|
+
--rc-color-text-muted: #6a675e;
|
|
15
|
+
--rc-color-tier-gold: #c9a55a;
|
|
16
|
+
--rc-color-tier-silver: #a0a8b8;
|
|
17
|
+
--rc-color-tier-bronze: #b87a4a;
|
|
18
|
+
--rc-color-status-success: #22c55e;
|
|
19
|
+
--rc-color-status-error: #ef4444;
|
|
20
|
+
--rc-color-status-warning: #eab308;
|
|
21
|
+
--rc-color-status-info: #4f9eff;
|
|
22
|
+
|
|
23
|
+
--rc-font-sans: 'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
|
|
24
|
+
--rc-font-mono: 'Geist Mono', 'SF Mono', Consolas, 'Liberation Mono', monospace;
|
|
25
|
+
|
|
26
|
+
--rc-text-xs: 0.75rem;
|
|
27
|
+
--rc-text-sm: 0.875rem;
|
|
28
|
+
--rc-text-base: 1rem;
|
|
29
|
+
--rc-text-lg: 1.125rem;
|
|
30
|
+
--rc-text-xl: 1.25rem;
|
|
31
|
+
--rc-text-2xl: 1.5rem;
|
|
32
|
+
--rc-text-3xl: 2rem;
|
|
33
|
+
|
|
34
|
+
--rc-font-weight-normal: 400;
|
|
35
|
+
--rc-font-weight-medium: 500;
|
|
36
|
+
--rc-font-weight-semibold: 600;
|
|
37
|
+
--rc-font-weight-bold: 700;
|
|
38
|
+
|
|
39
|
+
--rc-leading-tight: 1.25;
|
|
40
|
+
--rc-leading-normal: 1.5;
|
|
41
|
+
--rc-leading-relaxed: 1.75;
|
|
42
|
+
|
|
43
|
+
--rc-space-0: 0rem;
|
|
44
|
+
--rc-space-1: 0.25rem;
|
|
45
|
+
--rc-space-2: 0.5rem;
|
|
46
|
+
--rc-space-3: 0.75rem;
|
|
47
|
+
--rc-space-4: 1rem;
|
|
48
|
+
--rc-space-5: 1.25rem;
|
|
49
|
+
--rc-space-6: 1.5rem;
|
|
50
|
+
--rc-space-8: 2rem;
|
|
51
|
+
--rc-space-10: 2.5rem;
|
|
52
|
+
--rc-space-12: 3rem;
|
|
53
|
+
--rc-space-16: 4rem;
|
|
54
|
+
--rc-space-0_5: 0.125rem;
|
|
55
|
+
--rc-space-1_5: 0.375rem;
|
|
56
|
+
|
|
57
|
+
--rc-radius-none: 0;
|
|
58
|
+
--rc-radius-sm: 4px;
|
|
59
|
+
--rc-radius-md: 8px;
|
|
60
|
+
--rc-radius-lg: 12px;
|
|
61
|
+
--rc-radius-full: 9999px;
|
|
62
|
+
|
|
63
|
+
--rc-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
|
|
64
|
+
--rc-shadow-md: 0 2px 8px rgba(0, 0, 0, 0.4);
|
|
65
|
+
--rc-shadow-lg: 0 4px 16px rgba(0, 0, 0, 0.5);
|
|
66
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ButtonHTMLAttributes, ReactNode, HTMLAttributes, InputHTMLAttributes, SelectHTMLAttributes, TextareaHTMLAttributes } from 'react';
|
|
3
|
+
|
|
4
|
+
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
5
|
+
variant?: 'primary' | 'secondary' | 'ghost' | 'danger';
|
|
6
|
+
size?: 'sm' | 'md' | 'lg';
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
}
|
|
9
|
+
declare function Button({ variant, size, className, children, ...props }: ButtonProps): react_jsx_runtime.JSX.Element;
|
|
10
|
+
|
|
11
|
+
interface CardProps extends HTMLAttributes<HTMLDivElement> {
|
|
12
|
+
interactive?: boolean;
|
|
13
|
+
children?: ReactNode;
|
|
14
|
+
}
|
|
15
|
+
declare function Card({ interactive, className, children, ...props }: CardProps): react_jsx_runtime.JSX.Element;
|
|
16
|
+
|
|
17
|
+
interface StatCardProps extends HTMLAttributes<HTMLDivElement> {
|
|
18
|
+
label: string;
|
|
19
|
+
value: string | number;
|
|
20
|
+
icon?: ReactNode;
|
|
21
|
+
}
|
|
22
|
+
declare function StatCard({ label, value, icon, className, ...props }: StatCardProps): react_jsx_runtime.JSX.Element;
|
|
23
|
+
|
|
24
|
+
type BadgeVariant = 'gold' | 'silver' | 'bronze' | 'success' | 'error' | 'warning' | 'info';
|
|
25
|
+
interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
|
|
26
|
+
variant: BadgeVariant;
|
|
27
|
+
children?: ReactNode;
|
|
28
|
+
}
|
|
29
|
+
declare function Badge({ variant, className, children, ...props }: BadgeProps): react_jsx_runtime.JSX.Element;
|
|
30
|
+
|
|
31
|
+
interface TierBadgeProps extends HTMLAttributes<HTMLSpanElement> {
|
|
32
|
+
tier: 'gold' | 'silver' | 'bronze';
|
|
33
|
+
}
|
|
34
|
+
declare function TierBadge({ tier, ...props }: TierBadgeProps): react_jsx_runtime.JSX.Element;
|
|
35
|
+
|
|
36
|
+
interface InputProps extends InputHTMLAttributes<HTMLInputElement> {
|
|
37
|
+
error?: boolean;
|
|
38
|
+
}
|
|
39
|
+
declare function Input({ error, className, ...props }: InputProps): react_jsx_runtime.JSX.Element;
|
|
40
|
+
interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
41
|
+
error?: boolean;
|
|
42
|
+
}
|
|
43
|
+
declare function Textarea({ error, className, ...props }: TextareaProps): react_jsx_runtime.JSX.Element;
|
|
44
|
+
interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {
|
|
45
|
+
error?: boolean;
|
|
46
|
+
children?: ReactNode;
|
|
47
|
+
}
|
|
48
|
+
declare function Select({ error, className, children, ...props }: SelectProps): react_jsx_runtime.JSX.Element;
|
|
49
|
+
|
|
50
|
+
interface ActivityEvent {
|
|
51
|
+
id: string;
|
|
52
|
+
type: string;
|
|
53
|
+
actor?: string;
|
|
54
|
+
message: string;
|
|
55
|
+
timestamp: string;
|
|
56
|
+
}
|
|
57
|
+
interface ActivityFeedProps extends HTMLAttributes<HTMLDivElement> {
|
|
58
|
+
events: ActivityEvent[];
|
|
59
|
+
}
|
|
60
|
+
declare function ActivityFeed({ events, className, ...props }: ActivityFeedProps): react_jsx_runtime.JSX.Element;
|
|
61
|
+
|
|
62
|
+
interface EmptyStateProps extends HTMLAttributes<HTMLDivElement> {
|
|
63
|
+
icon?: ReactNode;
|
|
64
|
+
message: string;
|
|
65
|
+
action?: ReactNode;
|
|
66
|
+
}
|
|
67
|
+
declare function EmptyState({ icon, message, action, className, ...props }: EmptyStateProps): react_jsx_runtime.JSX.Element;
|
|
68
|
+
|
|
69
|
+
declare function Spinner(): react_jsx_runtime.JSX.Element;
|
|
70
|
+
|
|
71
|
+
interface ErrorCardProps extends HTMLAttributes<HTMLDivElement> {
|
|
72
|
+
message: string;
|
|
73
|
+
action?: ReactNode;
|
|
74
|
+
}
|
|
75
|
+
declare function ErrorCard({ message, action, className, ...props }: ErrorCardProps): react_jsx_runtime.JSX.Element;
|
|
76
|
+
|
|
77
|
+
interface CodeBlockProps extends HTMLAttributes<HTMLPreElement> {
|
|
78
|
+
code: string;
|
|
79
|
+
}
|
|
80
|
+
declare function CodeBlock({ code, className, ...props }: CodeBlockProps): react_jsx_runtime.JSX.Element;
|
|
81
|
+
|
|
82
|
+
export { type ActivityEvent, ActivityFeed, type ActivityFeedProps, Badge, type BadgeProps, type BadgeVariant, Button, type ButtonProps, Card, type CardProps, CodeBlock, type CodeBlockProps, EmptyState, type EmptyStateProps, ErrorCard, type ErrorCardProps, Input, type InputProps, Select, type SelectProps, Spinner, StatCard, type StatCardProps, Textarea, type TextareaProps, TierBadge, type TierBadgeProps };
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
// src/react/Button.tsx
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
function Button({
|
|
4
|
+
variant = "primary",
|
|
5
|
+
size = "md",
|
|
6
|
+
className,
|
|
7
|
+
children,
|
|
8
|
+
...props
|
|
9
|
+
}) {
|
|
10
|
+
const classes = ["rc-btn", `rc-btn--${variant}`, `rc-btn--${size}`, className].filter(Boolean).join(" ");
|
|
11
|
+
return /* @__PURE__ */ jsx("button", { className: classes, ...props, children });
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// src/react/Card.tsx
|
|
15
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
16
|
+
function Card({
|
|
17
|
+
interactive = false,
|
|
18
|
+
className,
|
|
19
|
+
children,
|
|
20
|
+
...props
|
|
21
|
+
}) {
|
|
22
|
+
const classes = [
|
|
23
|
+
"rc-card",
|
|
24
|
+
interactive && "rc-card--interactive",
|
|
25
|
+
className
|
|
26
|
+
].filter(Boolean).join(" ");
|
|
27
|
+
return /* @__PURE__ */ jsx2("div", { className: classes, ...props, children });
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// src/react/StatCard.tsx
|
|
31
|
+
import { jsx as jsx3, jsxs } from "react/jsx-runtime";
|
|
32
|
+
function StatCard({
|
|
33
|
+
label,
|
|
34
|
+
value,
|
|
35
|
+
icon,
|
|
36
|
+
className,
|
|
37
|
+
...props
|
|
38
|
+
}) {
|
|
39
|
+
const classes = ["rc-stat-card", className].filter(Boolean).join(" ");
|
|
40
|
+
return /* @__PURE__ */ jsxs("div", { className: classes, ...props, children: [
|
|
41
|
+
/* @__PURE__ */ jsxs("div", { className: "rc-stat-card__header", children: [
|
|
42
|
+
/* @__PURE__ */ jsx3("span", { className: "rc-stat-card__label", children: label }),
|
|
43
|
+
icon && /* @__PURE__ */ jsx3("span", { className: "rc-stat-card__icon", children: icon })
|
|
44
|
+
] }),
|
|
45
|
+
/* @__PURE__ */ jsx3("div", { className: "rc-stat-card__value", children: value })
|
|
46
|
+
] });
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// src/react/Badge.tsx
|
|
50
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
51
|
+
function Badge({ variant, className, children, ...props }) {
|
|
52
|
+
const classes = ["rc-badge", `rc-badge--${variant}`, className].filter(Boolean).join(" ");
|
|
53
|
+
return /* @__PURE__ */ jsx4("span", { className: classes, ...props, children });
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// src/react/TierBadge.tsx
|
|
57
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
58
|
+
var tierLabels = {
|
|
59
|
+
gold: "AI-Ready",
|
|
60
|
+
silver: "Trusted",
|
|
61
|
+
bronze: "Discoverable"
|
|
62
|
+
};
|
|
63
|
+
function TierBadge({ tier, ...props }) {
|
|
64
|
+
return /* @__PURE__ */ jsx5(Badge, { variant: tier, ...props, children: tierLabels[tier] });
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// src/react/Input.tsx
|
|
68
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
69
|
+
function Input({ error = false, className, ...props }) {
|
|
70
|
+
const classes = ["rc-input", error && "rc-input--error", className].filter(Boolean).join(" ");
|
|
71
|
+
return /* @__PURE__ */ jsx6("input", { className: classes, ...props });
|
|
72
|
+
}
|
|
73
|
+
function Textarea({
|
|
74
|
+
error = false,
|
|
75
|
+
className,
|
|
76
|
+
...props
|
|
77
|
+
}) {
|
|
78
|
+
const classes = ["rc-textarea", error && "rc-textarea--error", className].filter(Boolean).join(" ");
|
|
79
|
+
return /* @__PURE__ */ jsx6("textarea", { className: classes, ...props });
|
|
80
|
+
}
|
|
81
|
+
function Select({
|
|
82
|
+
error = false,
|
|
83
|
+
className,
|
|
84
|
+
children,
|
|
85
|
+
...props
|
|
86
|
+
}) {
|
|
87
|
+
const classes = ["rc-select", error && "rc-select--error", className].filter(Boolean).join(" ");
|
|
88
|
+
return /* @__PURE__ */ jsx6("select", { className: classes, ...props, children });
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// src/react/ActivityFeed.tsx
|
|
92
|
+
import { jsx as jsx7, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
93
|
+
function ActivityFeed({
|
|
94
|
+
events,
|
|
95
|
+
className,
|
|
96
|
+
...props
|
|
97
|
+
}) {
|
|
98
|
+
const classes = ["rc-activity-feed", className].filter(Boolean).join(" ");
|
|
99
|
+
if (events.length === 0) {
|
|
100
|
+
return /* @__PURE__ */ jsx7("div", { className: classes, ...props, children: /* @__PURE__ */ jsx7("p", { className: "rc-activity-feed__message", children: "No recent activity." }) });
|
|
101
|
+
}
|
|
102
|
+
return /* @__PURE__ */ jsx7("div", { className: classes, ...props, children: events.map((event) => /* @__PURE__ */ jsxs2("div", { className: "rc-activity-feed__item", children: [
|
|
103
|
+
/* @__PURE__ */ jsx7("span", { className: "rc-activity-feed__dot" }),
|
|
104
|
+
/* @__PURE__ */ jsx7("span", { className: "rc-activity-feed__message", children: event.message }),
|
|
105
|
+
/* @__PURE__ */ jsx7("span", { className: "rc-activity-feed__meta", children: event.timestamp })
|
|
106
|
+
] }, event.id)) });
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// src/react/EmptyState.tsx
|
|
110
|
+
import { jsx as jsx8, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
111
|
+
function EmptyState({
|
|
112
|
+
icon,
|
|
113
|
+
message,
|
|
114
|
+
action,
|
|
115
|
+
className,
|
|
116
|
+
...props
|
|
117
|
+
}) {
|
|
118
|
+
const classes = ["rc-empty", className].filter(Boolean).join(" ");
|
|
119
|
+
return /* @__PURE__ */ jsxs3("div", { className: classes, ...props, children: [
|
|
120
|
+
icon && /* @__PURE__ */ jsx8("div", { className: "rc-empty__icon", children: icon }),
|
|
121
|
+
/* @__PURE__ */ jsx8("p", { className: "rc-empty__message", children: message }),
|
|
122
|
+
action
|
|
123
|
+
] });
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// src/react/Spinner.tsx
|
|
127
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
128
|
+
function Spinner() {
|
|
129
|
+
return /* @__PURE__ */ jsx9("span", { className: "rc-spinner", role: "status", "aria-label": "Loading" });
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// src/react/ErrorCard.tsx
|
|
133
|
+
import { jsx as jsx10, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
134
|
+
function ErrorCard({
|
|
135
|
+
message,
|
|
136
|
+
action,
|
|
137
|
+
className,
|
|
138
|
+
...props
|
|
139
|
+
}) {
|
|
140
|
+
const classes = ["rc-error-card", className].filter(Boolean).join(" ");
|
|
141
|
+
return /* @__PURE__ */ jsxs4("div", { className: classes, ...props, children: [
|
|
142
|
+
/* @__PURE__ */ jsx10("p", { className: "rc-error-card__message", children: message }),
|
|
143
|
+
action
|
|
144
|
+
] });
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// src/react/CodeBlock.tsx
|
|
148
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
149
|
+
function CodeBlock({ code, className, ...props }) {
|
|
150
|
+
const classes = ["rc-code", className].filter(Boolean).join(" ");
|
|
151
|
+
return /* @__PURE__ */ jsx11("pre", { className: classes, ...props, children: /* @__PURE__ */ jsx11("code", { children: code }) });
|
|
152
|
+
}
|
|
153
|
+
export {
|
|
154
|
+
ActivityFeed,
|
|
155
|
+
Badge,
|
|
156
|
+
Button,
|
|
157
|
+
Card,
|
|
158
|
+
CodeBlock,
|
|
159
|
+
EmptyState,
|
|
160
|
+
ErrorCard,
|
|
161
|
+
Input,
|
|
162
|
+
Select,
|
|
163
|
+
Spinner,
|
|
164
|
+
StatCard,
|
|
165
|
+
Textarea,
|
|
166
|
+
TierBadge
|
|
167
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tailwind CSS preset that maps RunContext design tokens to Tailwind theme values.
|
|
3
|
+
*/
|
|
4
|
+
declare const runcontextPreset: {
|
|
5
|
+
readonly theme: {
|
|
6
|
+
readonly extend: {
|
|
7
|
+
readonly colors: {
|
|
8
|
+
readonly 'brand-gold': "#c9a55a";
|
|
9
|
+
readonly 'brand-gold-light': "#f5e6c0";
|
|
10
|
+
readonly 'brand-gold-dim': "#1a1508";
|
|
11
|
+
readonly 'surface-bg': "#0a0908";
|
|
12
|
+
readonly 'surface-card': "#121110";
|
|
13
|
+
readonly 'surface-card-hover': "#1e1c18";
|
|
14
|
+
readonly 'surface-border': "#36342e";
|
|
15
|
+
readonly 'surface-border-hover': "#6a675e";
|
|
16
|
+
readonly 'text-primary': "#e8e6e1";
|
|
17
|
+
readonly 'text-secondary': "#9a978e";
|
|
18
|
+
readonly 'text-muted': "#6a675e";
|
|
19
|
+
readonly 'tier-gold': "#c9a55a";
|
|
20
|
+
readonly 'tier-silver': "#a0a8b8";
|
|
21
|
+
readonly 'tier-bronze': "#b87a4a";
|
|
22
|
+
readonly 'status-success': "#22c55e";
|
|
23
|
+
readonly 'status-error': "#ef4444";
|
|
24
|
+
readonly 'status-warning': "#eab308";
|
|
25
|
+
readonly 'status-info': "#4f9eff";
|
|
26
|
+
};
|
|
27
|
+
readonly fontFamily: {
|
|
28
|
+
readonly sans: string[];
|
|
29
|
+
readonly mono: string[];
|
|
30
|
+
};
|
|
31
|
+
readonly borderRadius: {
|
|
32
|
+
readonly sm: "4px";
|
|
33
|
+
readonly md: "8px";
|
|
34
|
+
readonly lg: "12px";
|
|
35
|
+
};
|
|
36
|
+
readonly boxShadow: {
|
|
37
|
+
readonly sm: "0 1px 2px rgba(0, 0, 0, 0.3)";
|
|
38
|
+
readonly md: "0 2px 8px rgba(0, 0, 0, 0.4)";
|
|
39
|
+
readonly lg: "0 4px 16px rgba(0, 0, 0, 0.5)";
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Ready-to-paste Tailwind CSS 4 `@theme inline` block containing all RunContext tokens.
|
|
46
|
+
*/
|
|
47
|
+
declare const themeInlineCSS: string;
|
|
48
|
+
|
|
49
|
+
export { runcontextPreset, themeInlineCSS };
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
// src/tokens/colors.ts
|
|
2
|
+
var colors = {
|
|
3
|
+
brand: {
|
|
4
|
+
gold: "#c9a55a",
|
|
5
|
+
goldLight: "#f5e6c0",
|
|
6
|
+
goldDim: "#1a1508"
|
|
7
|
+
},
|
|
8
|
+
surface: {
|
|
9
|
+
bg: "#0a0908",
|
|
10
|
+
card: "#121110",
|
|
11
|
+
cardHover: "#1e1c18"
|
|
12
|
+
},
|
|
13
|
+
border: {
|
|
14
|
+
default: "#36342e",
|
|
15
|
+
hover: "#6a675e"
|
|
16
|
+
},
|
|
17
|
+
text: {
|
|
18
|
+
primary: "#e8e6e1",
|
|
19
|
+
secondary: "#9a978e",
|
|
20
|
+
muted: "#6a675e"
|
|
21
|
+
},
|
|
22
|
+
tier: {
|
|
23
|
+
gold: "#c9a55a",
|
|
24
|
+
silver: "#a0a8b8",
|
|
25
|
+
bronze: "#b87a4a"
|
|
26
|
+
},
|
|
27
|
+
status: {
|
|
28
|
+
success: "#22c55e",
|
|
29
|
+
error: "#ef4444",
|
|
30
|
+
warning: "#eab308",
|
|
31
|
+
info: "#4f9eff"
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// src/tokens/typography.ts
|
|
36
|
+
var typography = {
|
|
37
|
+
fontFamily: {
|
|
38
|
+
sans: "'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",
|
|
39
|
+
mono: "'Geist Mono', 'SF Mono', Consolas, 'Liberation Mono', monospace"
|
|
40
|
+
},
|
|
41
|
+
fontSize: {
|
|
42
|
+
xs: "0.75rem",
|
|
43
|
+
sm: "0.875rem",
|
|
44
|
+
base: "1rem",
|
|
45
|
+
lg: "1.125rem",
|
|
46
|
+
xl: "1.25rem",
|
|
47
|
+
"2xl": "1.5rem",
|
|
48
|
+
"3xl": "2rem"
|
|
49
|
+
},
|
|
50
|
+
fontWeight: {
|
|
51
|
+
normal: 400,
|
|
52
|
+
medium: 500,
|
|
53
|
+
semibold: 600,
|
|
54
|
+
bold: 700
|
|
55
|
+
},
|
|
56
|
+
lineHeight: {
|
|
57
|
+
tight: 1.25,
|
|
58
|
+
normal: 1.5,
|
|
59
|
+
relaxed: 1.75
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
// src/tokens/radii.ts
|
|
64
|
+
var radii = {
|
|
65
|
+
none: "0",
|
|
66
|
+
sm: "4px",
|
|
67
|
+
md: "8px",
|
|
68
|
+
lg: "12px",
|
|
69
|
+
full: "9999px"
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// src/tokens/shadows.ts
|
|
73
|
+
var shadows = {
|
|
74
|
+
sm: "0 1px 2px rgba(0, 0, 0, 0.3)",
|
|
75
|
+
md: "0 2px 8px rgba(0, 0, 0, 0.4)",
|
|
76
|
+
lg: "0 4px 16px rgba(0, 0, 0, 0.5)"
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
// src/tailwind/preset.ts
|
|
80
|
+
var runcontextPreset = {
|
|
81
|
+
theme: {
|
|
82
|
+
extend: {
|
|
83
|
+
colors: {
|
|
84
|
+
"brand-gold": colors.brand.gold,
|
|
85
|
+
"brand-gold-light": colors.brand.goldLight,
|
|
86
|
+
"brand-gold-dim": colors.brand.goldDim,
|
|
87
|
+
"surface-bg": colors.surface.bg,
|
|
88
|
+
"surface-card": colors.surface.card,
|
|
89
|
+
"surface-card-hover": colors.surface.cardHover,
|
|
90
|
+
"surface-border": colors.border.default,
|
|
91
|
+
"surface-border-hover": colors.border.hover,
|
|
92
|
+
"text-primary": colors.text.primary,
|
|
93
|
+
"text-secondary": colors.text.secondary,
|
|
94
|
+
"text-muted": colors.text.muted,
|
|
95
|
+
"tier-gold": colors.tier.gold,
|
|
96
|
+
"tier-silver": colors.tier.silver,
|
|
97
|
+
"tier-bronze": colors.tier.bronze,
|
|
98
|
+
"status-success": colors.status.success,
|
|
99
|
+
"status-error": colors.status.error,
|
|
100
|
+
"status-warning": colors.status.warning,
|
|
101
|
+
"status-info": colors.status.info
|
|
102
|
+
},
|
|
103
|
+
fontFamily: {
|
|
104
|
+
sans: typography.fontFamily.sans.split(",").map((s) => s.trim()),
|
|
105
|
+
mono: typography.fontFamily.mono.split(",").map((s) => s.trim())
|
|
106
|
+
},
|
|
107
|
+
borderRadius: {
|
|
108
|
+
sm: radii.sm,
|
|
109
|
+
md: radii.md,
|
|
110
|
+
lg: radii.lg
|
|
111
|
+
},
|
|
112
|
+
boxShadow: {
|
|
113
|
+
sm: shadows.sm,
|
|
114
|
+
md: shadows.md,
|
|
115
|
+
lg: shadows.lg
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
var themeInlineCSS = `@theme inline {
|
|
121
|
+
--color-brand-gold: ${colors.brand.gold};
|
|
122
|
+
--color-brand-gold-light: ${colors.brand.goldLight};
|
|
123
|
+
--color-brand-gold-dim: ${colors.brand.goldDim};
|
|
124
|
+
--color-surface-bg: ${colors.surface.bg};
|
|
125
|
+
--color-surface-card: ${colors.surface.card};
|
|
126
|
+
--color-surface-card-hover: ${colors.surface.cardHover};
|
|
127
|
+
--color-surface-border: ${colors.border.default};
|
|
128
|
+
--color-surface-border-hover: ${colors.border.hover};
|
|
129
|
+
--color-text-primary: ${colors.text.primary};
|
|
130
|
+
--color-text-secondary: ${colors.text.secondary};
|
|
131
|
+
--color-text-muted: ${colors.text.muted};
|
|
132
|
+
--color-tier-gold: ${colors.tier.gold};
|
|
133
|
+
--color-tier-silver: ${colors.tier.silver};
|
|
134
|
+
--color-tier-bronze: ${colors.tier.bronze};
|
|
135
|
+
--color-status-success: ${colors.status.success};
|
|
136
|
+
--color-status-error: ${colors.status.error};
|
|
137
|
+
--color-status-warning: ${colors.status.warning};
|
|
138
|
+
--color-status-info: ${colors.status.info};
|
|
139
|
+
--font-family-sans: ${typography.fontFamily.sans};
|
|
140
|
+
--font-family-mono: ${typography.fontFamily.mono};
|
|
141
|
+
--radius-sm: ${radii.sm};
|
|
142
|
+
--radius-md: ${radii.md};
|
|
143
|
+
--radius-lg: ${radii.lg};
|
|
144
|
+
--shadow-sm: ${shadows.sm};
|
|
145
|
+
--shadow-md: ${shadows.md};
|
|
146
|
+
--shadow-lg: ${shadows.lg};
|
|
147
|
+
}`;
|
|
148
|
+
export {
|
|
149
|
+
runcontextPreset,
|
|
150
|
+
themeInlineCSS
|
|
151
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
declare const colors: {
|
|
2
|
+
readonly brand: {
|
|
3
|
+
readonly gold: "#c9a55a";
|
|
4
|
+
readonly goldLight: "#f5e6c0";
|
|
5
|
+
readonly goldDim: "#1a1508";
|
|
6
|
+
};
|
|
7
|
+
readonly surface: {
|
|
8
|
+
readonly bg: "#0a0908";
|
|
9
|
+
readonly card: "#121110";
|
|
10
|
+
readonly cardHover: "#1e1c18";
|
|
11
|
+
};
|
|
12
|
+
readonly border: {
|
|
13
|
+
readonly default: "#36342e";
|
|
14
|
+
readonly hover: "#6a675e";
|
|
15
|
+
};
|
|
16
|
+
readonly text: {
|
|
17
|
+
readonly primary: "#e8e6e1";
|
|
18
|
+
readonly secondary: "#9a978e";
|
|
19
|
+
readonly muted: "#6a675e";
|
|
20
|
+
};
|
|
21
|
+
readonly tier: {
|
|
22
|
+
readonly gold: "#c9a55a";
|
|
23
|
+
readonly silver: "#a0a8b8";
|
|
24
|
+
readonly bronze: "#b87a4a";
|
|
25
|
+
};
|
|
26
|
+
readonly status: {
|
|
27
|
+
readonly success: "#22c55e";
|
|
28
|
+
readonly error: "#ef4444";
|
|
29
|
+
readonly warning: "#eab308";
|
|
30
|
+
readonly info: "#4f9eff";
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
declare const typography: {
|
|
35
|
+
readonly fontFamily: {
|
|
36
|
+
readonly sans: "'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif";
|
|
37
|
+
readonly mono: "'Geist Mono', 'SF Mono', Consolas, 'Liberation Mono', monospace";
|
|
38
|
+
};
|
|
39
|
+
readonly fontSize: {
|
|
40
|
+
readonly xs: "0.75rem";
|
|
41
|
+
readonly sm: "0.875rem";
|
|
42
|
+
readonly base: "1rem";
|
|
43
|
+
readonly lg: "1.125rem";
|
|
44
|
+
readonly xl: "1.25rem";
|
|
45
|
+
readonly '2xl': "1.5rem";
|
|
46
|
+
readonly '3xl': "2rem";
|
|
47
|
+
};
|
|
48
|
+
readonly fontWeight: {
|
|
49
|
+
readonly normal: 400;
|
|
50
|
+
readonly medium: 500;
|
|
51
|
+
readonly semibold: 600;
|
|
52
|
+
readonly bold: 700;
|
|
53
|
+
};
|
|
54
|
+
readonly lineHeight: {
|
|
55
|
+
readonly tight: 1.25;
|
|
56
|
+
readonly normal: 1.5;
|
|
57
|
+
readonly relaxed: 1.75;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
declare const spacing: {
|
|
62
|
+
readonly 0: "0rem";
|
|
63
|
+
readonly 0.5: "0.125rem";
|
|
64
|
+
readonly 1: "0.25rem";
|
|
65
|
+
readonly 1.5: "0.375rem";
|
|
66
|
+
readonly 2: "0.5rem";
|
|
67
|
+
readonly 3: "0.75rem";
|
|
68
|
+
readonly 4: "1rem";
|
|
69
|
+
readonly 5: "1.25rem";
|
|
70
|
+
readonly 6: "1.5rem";
|
|
71
|
+
readonly 8: "2rem";
|
|
72
|
+
readonly 10: "2.5rem";
|
|
73
|
+
readonly 12: "3rem";
|
|
74
|
+
readonly 16: "4rem";
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
declare const radii: {
|
|
78
|
+
readonly none: "0";
|
|
79
|
+
readonly sm: "4px";
|
|
80
|
+
readonly md: "8px";
|
|
81
|
+
readonly lg: "12px";
|
|
82
|
+
readonly full: "9999px";
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
declare const shadows: {
|
|
86
|
+
readonly sm: "0 1px 2px rgba(0, 0, 0, 0.3)";
|
|
87
|
+
readonly md: "0 2px 8px rgba(0, 0, 0, 0.4)";
|
|
88
|
+
readonly lg: "0 4px 16px rgba(0, 0, 0, 0.5)";
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
export { colors, radii, shadows, spacing, typography };
|