@work-rjkashyap/unified-ui 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/CHANGELOG.md +152 -0
- package/README.md +365 -0
- package/dist/chunk-2JFREULQ.cjs +29 -0
- package/dist/chunk-2RGLRX6K.cjs +279 -0
- package/dist/chunk-3HHJAYQI.cjs +469 -0
- package/dist/chunk-5S5DMH5G.cjs +5983 -0
- package/dist/chunk-BIW2RPDU.cjs +73 -0
- package/dist/chunk-CWETOWRM.mjs +456 -0
- package/dist/chunk-ECIGDEAH.cjs +140 -0
- package/dist/chunk-EO4WROWH.mjs +432 -0
- package/dist/chunk-EZ2L3XPS.mjs +83 -0
- package/dist/chunk-I74E52C5.mjs +271 -0
- package/dist/chunk-ITBG42M5.mjs +133 -0
- package/dist/chunk-IWJ5VMZ7.mjs +323 -0
- package/dist/chunk-KHON2AEM.cjs +342 -0
- package/dist/chunk-LSNKPQP7.cjs +58 -0
- package/dist/chunk-M2LNQWOB.mjs +63 -0
- package/dist/chunk-NMPHV6ZD.mjs +27 -0
- package/dist/chunk-QXR4VY7Q.cjs +268 -0
- package/dist/chunk-SSGN5QDC.mjs +248 -0
- package/dist/chunk-X2WCY4VB.mjs +5836 -0
- package/dist/chunk-XCKK6P46.cjs +91 -0
- package/dist/chunk-ZBN26FLO.mjs +46 -0
- package/dist/chunk-ZPIPKY2J.cjs +478 -0
- package/dist/components.cjs +477 -0
- package/dist/components.d.cts +3077 -0
- package/dist/components.d.ts +3077 -0
- package/dist/components.mjs +4 -0
- package/dist/index.cjs +1027 -0
- package/dist/index.d.cts +30 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.mjs +17 -0
- package/dist/motion-D9wQbcKL.d.cts +80 -0
- package/dist/motion-D9wQbcKL.d.ts +80 -0
- package/dist/motion.cjs +216 -0
- package/dist/motion.d.cts +104 -0
- package/dist/motion.d.ts +104 -0
- package/dist/motion.mjs +3 -0
- package/dist/primitives.cjs +57 -0
- package/dist/primitives.d.cts +390 -0
- package/dist/primitives.d.ts +390 -0
- package/dist/primitives.mjs +4 -0
- package/dist/theme.cjs +38 -0
- package/dist/theme.d.cts +117 -0
- package/dist/theme.d.ts +117 -0
- package/dist/theme.mjs +5 -0
- package/dist/tokens.cjs +137 -0
- package/dist/tokens.d.cts +30 -0
- package/dist/tokens.d.ts +30 -0
- package/dist/tokens.mjs +4 -0
- package/dist/typography-DlvVjEdE.d.cts +146 -0
- package/dist/typography-DlvVjEdE.d.ts +146 -0
- package/dist/utils.cjs +164 -0
- package/dist/utils.d.cts +521 -0
- package/dist/utils.d.ts +521 -0
- package/dist/utils.mjs +3 -0
- package/dist/z-index-B_nTQ3qo.d.cts +422 -0
- package/dist/z-index-B_nTQ3qo.d.ts +422 -0
- package/package.json +183 -0
- package/styles.css +500 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var clsx = require('clsx');
|
|
4
|
+
var tailwindMerge = require('tailwind-merge');
|
|
5
|
+
|
|
6
|
+
// src/utils/cn.ts
|
|
7
|
+
function cn(...inputs) {
|
|
8
|
+
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
9
|
+
}
|
|
10
|
+
function mergeSlots(defaults, overrides) {
|
|
11
|
+
if (!overrides) {
|
|
12
|
+
return defaults;
|
|
13
|
+
}
|
|
14
|
+
const allKeys = /* @__PURE__ */ new Set([
|
|
15
|
+
...Object.keys(defaults),
|
|
16
|
+
...Object.keys(overrides)
|
|
17
|
+
]);
|
|
18
|
+
const result = {};
|
|
19
|
+
for (const key of allKeys) {
|
|
20
|
+
result[key] = cn(defaults[key] ?? "", overrides[key] ?? "");
|
|
21
|
+
}
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
function dsAttr(componentName) {
|
|
25
|
+
return {
|
|
26
|
+
"data-ds": "",
|
|
27
|
+
"data-ds-component": componentName
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function dsStateAttr(state, active) {
|
|
31
|
+
if (!active) return {};
|
|
32
|
+
return { [`data-ds-${state}`]: "" };
|
|
33
|
+
}
|
|
34
|
+
function dsVar(category, name, fallback) {
|
|
35
|
+
const varName = `--ds-${category}-${name}`;
|
|
36
|
+
return fallback ? `var(${varName}, ${fallback})` : `var(${varName})`;
|
|
37
|
+
}
|
|
38
|
+
function dsColorVar(name, alpha) {
|
|
39
|
+
const channels = `var(--ds-color-${name})`;
|
|
40
|
+
if (alpha !== void 0) {
|
|
41
|
+
return `rgb(${channels} / ${alpha})`;
|
|
42
|
+
}
|
|
43
|
+
return `rgb(${channels})`;
|
|
44
|
+
}
|
|
45
|
+
function setRef(ref, value) {
|
|
46
|
+
if (typeof ref === "function") {
|
|
47
|
+
ref(value);
|
|
48
|
+
} else if (ref !== null && ref !== void 0) {
|
|
49
|
+
ref.current = value;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function composeRefs(...refs) {
|
|
53
|
+
return (node) => {
|
|
54
|
+
for (const ref of refs) {
|
|
55
|
+
setRef(ref, node);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function typedKeys(obj) {
|
|
60
|
+
return Object.keys(obj);
|
|
61
|
+
}
|
|
62
|
+
var noop = () => {
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
exports.cn = cn;
|
|
66
|
+
exports.composeRefs = composeRefs;
|
|
67
|
+
exports.dsAttr = dsAttr;
|
|
68
|
+
exports.dsColorVar = dsColorVar;
|
|
69
|
+
exports.dsStateAttr = dsStateAttr;
|
|
70
|
+
exports.dsVar = dsVar;
|
|
71
|
+
exports.mergeSlots = mergeSlots;
|
|
72
|
+
exports.noop = noop;
|
|
73
|
+
exports.typedKeys = typedKeys;
|
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
import { typographyVariants } from './chunk-ITBG42M5.mjs';
|
|
2
|
+
import { cn } from './chunk-M2LNQWOB.mjs';
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
|
+
import { jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var sizeClassMap = {
|
|
7
|
+
/** 640px — narrow forms, single-column content */
|
|
8
|
+
xs: "max-w-screen-sm",
|
|
9
|
+
/** 768px — articles, focused reading content */
|
|
10
|
+
sm: "max-w-screen-md",
|
|
11
|
+
/** 1024px — dashboards, multi-column layouts */
|
|
12
|
+
md: "max-w-screen-lg",
|
|
13
|
+
/** 1280px — default, full-width page content */
|
|
14
|
+
lg: "max-w-7xl",
|
|
15
|
+
/** No max-width constraint — full bleed */
|
|
16
|
+
full: "max-w-full"
|
|
17
|
+
};
|
|
18
|
+
var paddingClassMap = {
|
|
19
|
+
/** No horizontal padding */
|
|
20
|
+
none: "",
|
|
21
|
+
/** Tighter padding: px-3 → px-4 → px-6 */
|
|
22
|
+
tight: "px-3 sm:px-4 lg:px-6",
|
|
23
|
+
/** Standard padding: px-4 → px-6 → px-8 (project default) */
|
|
24
|
+
default: "px-4 sm:px-6 lg:px-8",
|
|
25
|
+
/** Wider padding: px-6 → px-8 → px-10 */
|
|
26
|
+
wide: "px-6 sm:px-8 lg:px-10"
|
|
27
|
+
};
|
|
28
|
+
var Container = forwardRef(
|
|
29
|
+
function Container2({
|
|
30
|
+
size = "lg",
|
|
31
|
+
padding = "default",
|
|
32
|
+
centered = true,
|
|
33
|
+
as: Component = "div",
|
|
34
|
+
className,
|
|
35
|
+
children,
|
|
36
|
+
...rest
|
|
37
|
+
}, ref) {
|
|
38
|
+
return /* @__PURE__ */ jsx(
|
|
39
|
+
Component,
|
|
40
|
+
{
|
|
41
|
+
ref,
|
|
42
|
+
className: cn(
|
|
43
|
+
// Max-width constraint
|
|
44
|
+
sizeClassMap[size],
|
|
45
|
+
// Responsive horizontal padding
|
|
46
|
+
paddingClassMap[padding],
|
|
47
|
+
// Centering
|
|
48
|
+
centered && "mx-auto",
|
|
49
|
+
// Width fills available space up to max-width
|
|
50
|
+
"w-full",
|
|
51
|
+
// Consumer overrides
|
|
52
|
+
className
|
|
53
|
+
),
|
|
54
|
+
"data-ds": "",
|
|
55
|
+
"data-ds-component": "container",
|
|
56
|
+
...rest,
|
|
57
|
+
children
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
Container.displayName = "Container";
|
|
63
|
+
var spacingYMap = {
|
|
64
|
+
0: "my-0",
|
|
65
|
+
1: "my-1",
|
|
66
|
+
2: "my-2",
|
|
67
|
+
3: "my-3",
|
|
68
|
+
4: "my-4",
|
|
69
|
+
5: "my-5",
|
|
70
|
+
6: "my-6",
|
|
71
|
+
8: "my-8",
|
|
72
|
+
10: "my-10",
|
|
73
|
+
12: "my-12"
|
|
74
|
+
};
|
|
75
|
+
var spacingXMap = {
|
|
76
|
+
0: "mx-0",
|
|
77
|
+
1: "mx-1",
|
|
78
|
+
2: "mx-2",
|
|
79
|
+
3: "mx-3",
|
|
80
|
+
4: "mx-4",
|
|
81
|
+
5: "mx-5",
|
|
82
|
+
6: "mx-6",
|
|
83
|
+
8: "mx-8",
|
|
84
|
+
10: "mx-10",
|
|
85
|
+
12: "mx-12"
|
|
86
|
+
};
|
|
87
|
+
var Divider = forwardRef(function Divider2({ spacing = 4, orientation = "horizontal", className, ...rest }, ref) {
|
|
88
|
+
const isVertical = orientation === "vertical";
|
|
89
|
+
return /* @__PURE__ */ jsx(
|
|
90
|
+
"hr",
|
|
91
|
+
{
|
|
92
|
+
ref,
|
|
93
|
+
role: "separator",
|
|
94
|
+
"aria-orientation": orientation,
|
|
95
|
+
className: cn(
|
|
96
|
+
"border-none shrink-0",
|
|
97
|
+
isVertical ? cn("w-px self-stretch bg-ds-border", spacingXMap[spacing] ?? "mx-4") : cn("h-px w-full bg-ds-border", spacingYMap[spacing] ?? "my-4"),
|
|
98
|
+
className
|
|
99
|
+
),
|
|
100
|
+
"data-ds": "",
|
|
101
|
+
"data-ds-component": "divider",
|
|
102
|
+
...rest
|
|
103
|
+
}
|
|
104
|
+
);
|
|
105
|
+
});
|
|
106
|
+
Divider.displayName = "Divider";
|
|
107
|
+
var gapClassMap = {
|
|
108
|
+
0: "gap-0",
|
|
109
|
+
0.5: "gap-0.5",
|
|
110
|
+
1: "gap-1",
|
|
111
|
+
1.5: "gap-1.5",
|
|
112
|
+
2: "gap-2",
|
|
113
|
+
2.5: "gap-2.5",
|
|
114
|
+
3: "gap-3",
|
|
115
|
+
3.5: "gap-3.5",
|
|
116
|
+
4: "gap-4",
|
|
117
|
+
5: "gap-5",
|
|
118
|
+
6: "gap-6",
|
|
119
|
+
7: "gap-7",
|
|
120
|
+
8: "gap-8",
|
|
121
|
+
9: "gap-9",
|
|
122
|
+
10: "gap-10",
|
|
123
|
+
11: "gap-11",
|
|
124
|
+
12: "gap-12",
|
|
125
|
+
14: "gap-14",
|
|
126
|
+
16: "gap-16",
|
|
127
|
+
20: "gap-20",
|
|
128
|
+
24: "gap-24"
|
|
129
|
+
};
|
|
130
|
+
var directionClassMap = {
|
|
131
|
+
vertical: "flex-col",
|
|
132
|
+
horizontal: "flex-row"
|
|
133
|
+
};
|
|
134
|
+
var alignClassMap = {
|
|
135
|
+
start: "items-start",
|
|
136
|
+
center: "items-center",
|
|
137
|
+
end: "items-end",
|
|
138
|
+
stretch: "items-stretch",
|
|
139
|
+
baseline: "items-baseline"
|
|
140
|
+
};
|
|
141
|
+
var justifyClassMap = {
|
|
142
|
+
start: "justify-start",
|
|
143
|
+
center: "justify-center",
|
|
144
|
+
end: "justify-end",
|
|
145
|
+
between: "justify-between",
|
|
146
|
+
around: "justify-around",
|
|
147
|
+
evenly: "justify-evenly"
|
|
148
|
+
};
|
|
149
|
+
var Stack = forwardRef(function Stack2({
|
|
150
|
+
gap = 4,
|
|
151
|
+
direction = "vertical",
|
|
152
|
+
align,
|
|
153
|
+
justify,
|
|
154
|
+
wrap = false,
|
|
155
|
+
as: Component = "div",
|
|
156
|
+
className,
|
|
157
|
+
children,
|
|
158
|
+
...rest
|
|
159
|
+
}, ref) {
|
|
160
|
+
return /* @__PURE__ */ jsx(
|
|
161
|
+
Component,
|
|
162
|
+
{
|
|
163
|
+
ref,
|
|
164
|
+
className: cn(
|
|
165
|
+
"flex",
|
|
166
|
+
directionClassMap[direction],
|
|
167
|
+
gapClassMap[gap],
|
|
168
|
+
align && alignClassMap[align],
|
|
169
|
+
justify && justifyClassMap[justify],
|
|
170
|
+
wrap && "flex-wrap",
|
|
171
|
+
className
|
|
172
|
+
),
|
|
173
|
+
"data-ds": "",
|
|
174
|
+
"data-ds-component": "stack",
|
|
175
|
+
...rest,
|
|
176
|
+
children
|
|
177
|
+
}
|
|
178
|
+
);
|
|
179
|
+
});
|
|
180
|
+
Stack.displayName = "Stack";
|
|
181
|
+
var colsClassMap = {
|
|
182
|
+
1: "grid-cols-1",
|
|
183
|
+
2: "grid-cols-2",
|
|
184
|
+
3: "grid-cols-3",
|
|
185
|
+
4: "grid-cols-4",
|
|
186
|
+
5: "grid-cols-5",
|
|
187
|
+
6: "grid-cols-6"
|
|
188
|
+
};
|
|
189
|
+
var colsSmClassMap = {
|
|
190
|
+
1: "sm:grid-cols-1",
|
|
191
|
+
2: "sm:grid-cols-2",
|
|
192
|
+
3: "sm:grid-cols-3",
|
|
193
|
+
4: "sm:grid-cols-4"
|
|
194
|
+
};
|
|
195
|
+
var colsMdClassMap = {
|
|
196
|
+
1: "md:grid-cols-1",
|
|
197
|
+
2: "md:grid-cols-2",
|
|
198
|
+
3: "md:grid-cols-3",
|
|
199
|
+
4: "md:grid-cols-4"
|
|
200
|
+
};
|
|
201
|
+
var colsLgClassMap = {
|
|
202
|
+
1: "lg:grid-cols-1",
|
|
203
|
+
2: "lg:grid-cols-2",
|
|
204
|
+
3: "lg:grid-cols-3",
|
|
205
|
+
4: "lg:grid-cols-4",
|
|
206
|
+
5: "lg:grid-cols-5",
|
|
207
|
+
6: "lg:grid-cols-6"
|
|
208
|
+
};
|
|
209
|
+
var Grid = forwardRef(function Grid2({
|
|
210
|
+
cols = 1,
|
|
211
|
+
colsSm,
|
|
212
|
+
colsMd,
|
|
213
|
+
colsLg,
|
|
214
|
+
gap = 4,
|
|
215
|
+
as: Component = "div",
|
|
216
|
+
className,
|
|
217
|
+
children,
|
|
218
|
+
...rest
|
|
219
|
+
}, ref) {
|
|
220
|
+
return /* @__PURE__ */ jsx(
|
|
221
|
+
Component,
|
|
222
|
+
{
|
|
223
|
+
ref,
|
|
224
|
+
className: cn(
|
|
225
|
+
"grid",
|
|
226
|
+
colsClassMap[cols],
|
|
227
|
+
colsSm && colsSmClassMap[colsSm],
|
|
228
|
+
colsMd && colsMdClassMap[colsMd],
|
|
229
|
+
colsLg && colsLgClassMap[colsLg],
|
|
230
|
+
gapClassMap[gap],
|
|
231
|
+
className
|
|
232
|
+
),
|
|
233
|
+
"data-ds": "",
|
|
234
|
+
"data-ds-component": "grid",
|
|
235
|
+
...rest,
|
|
236
|
+
children
|
|
237
|
+
}
|
|
238
|
+
);
|
|
239
|
+
});
|
|
240
|
+
Grid.displayName = "Grid";
|
|
241
|
+
var fontClassMap = {
|
|
242
|
+
display: "font-ds-display",
|
|
243
|
+
sans: "font-ds-sans",
|
|
244
|
+
serif: "font-ds-serif",
|
|
245
|
+
mono: "font-ds-mono",
|
|
246
|
+
inherit: "font-[inherit]"
|
|
247
|
+
};
|
|
248
|
+
var variantDefaultFont = {
|
|
249
|
+
heading1: typographyVariants.heading1.fontFamily,
|
|
250
|
+
heading2: typographyVariants.heading2.fontFamily,
|
|
251
|
+
heading3: typographyVariants.heading3.fontFamily,
|
|
252
|
+
subheading: typographyVariants.subheading.fontFamily,
|
|
253
|
+
body: typographyVariants.body.fontFamily,
|
|
254
|
+
bodySm: typographyVariants.bodySm.fontFamily,
|
|
255
|
+
caption: typographyVariants.caption.fontFamily,
|
|
256
|
+
label: typographyVariants.label.fontFamily,
|
|
257
|
+
overline: typographyVariants.overline.fontFamily,
|
|
258
|
+
code: typographyVariants.code.fontFamily
|
|
259
|
+
};
|
|
260
|
+
var defaultElementMap = {
|
|
261
|
+
heading1: "h1",
|
|
262
|
+
heading2: "h2",
|
|
263
|
+
heading3: "h3",
|
|
264
|
+
subheading: "h4",
|
|
265
|
+
body: "p",
|
|
266
|
+
bodySm: "p",
|
|
267
|
+
caption: "span",
|
|
268
|
+
label: "label",
|
|
269
|
+
overline: "span",
|
|
270
|
+
code: "code"
|
|
271
|
+
};
|
|
272
|
+
var variantClassMap = {
|
|
273
|
+
heading1: "text-[30px] leading-[36px] font-bold tracking-tight text-ds-foreground",
|
|
274
|
+
heading2: "text-[24px] leading-[32px] font-semibold tracking-tight text-ds-foreground",
|
|
275
|
+
heading3: "text-[20px] leading-[28px] font-semibold tracking-normal text-ds-foreground",
|
|
276
|
+
subheading: "text-[18px] leading-[28px] font-medium tracking-normal text-ds-foreground",
|
|
277
|
+
body: "text-[16px] leading-[24px] font-normal tracking-normal text-ds-foreground",
|
|
278
|
+
bodySm: "text-[14px] leading-[20px] font-normal tracking-normal text-ds-foreground",
|
|
279
|
+
caption: "text-[12px] leading-[16px] font-normal tracking-wide text-ds-muted-foreground",
|
|
280
|
+
label: "text-[14px] leading-[20px] font-medium tracking-normal text-ds-foreground",
|
|
281
|
+
overline: "text-[12px] leading-[16px] font-semibold tracking-wider uppercase text-ds-muted-foreground",
|
|
282
|
+
code: "text-[14px] leading-[20px] font-normal tracking-normal text-ds-foreground"
|
|
283
|
+
};
|
|
284
|
+
var colorClassMap = {
|
|
285
|
+
default: "",
|
|
286
|
+
foreground: "text-ds-foreground",
|
|
287
|
+
muted: "text-ds-muted-foreground",
|
|
288
|
+
primary: "text-ds-primary",
|
|
289
|
+
success: "text-ds-success",
|
|
290
|
+
warning: "text-ds-warning",
|
|
291
|
+
danger: "text-ds-danger",
|
|
292
|
+
info: "text-ds-info",
|
|
293
|
+
inherit: "text-inherit"
|
|
294
|
+
};
|
|
295
|
+
var alignClassMap2 = {
|
|
296
|
+
left: "text-left",
|
|
297
|
+
center: "text-center",
|
|
298
|
+
right: "text-right"
|
|
299
|
+
};
|
|
300
|
+
var lineClampClassMap = {
|
|
301
|
+
1: "line-clamp-1",
|
|
302
|
+
2: "line-clamp-2",
|
|
303
|
+
3: "line-clamp-3",
|
|
304
|
+
4: "line-clamp-4",
|
|
305
|
+
5: "line-clamp-5",
|
|
306
|
+
6: "line-clamp-6"
|
|
307
|
+
};
|
|
308
|
+
var Typography = forwardRef(
|
|
309
|
+
function Typography2({
|
|
310
|
+
variant = "body",
|
|
311
|
+
font,
|
|
312
|
+
color = "default",
|
|
313
|
+
align,
|
|
314
|
+
as,
|
|
315
|
+
truncate = false,
|
|
316
|
+
lineClamp,
|
|
317
|
+
noMargin = true,
|
|
318
|
+
className,
|
|
319
|
+
children,
|
|
320
|
+
...rest
|
|
321
|
+
}, ref) {
|
|
322
|
+
const Component = as ?? defaultElementMap[variant];
|
|
323
|
+
const resolvedFont = font ?? variantDefaultFont[variant];
|
|
324
|
+
const classes = cn(
|
|
325
|
+
// Base variant styles (size, weight, line-height, tracking, default color)
|
|
326
|
+
variantClassMap[variant],
|
|
327
|
+
// Font family (resolved from prop or variant default)
|
|
328
|
+
fontClassMap[resolvedFont],
|
|
329
|
+
// Color override (only applied if not "default" — default keeps variant's color)
|
|
330
|
+
color !== "default" && colorClassMap[color],
|
|
331
|
+
// Alignment
|
|
332
|
+
align && alignClassMap2[align],
|
|
333
|
+
// Truncation
|
|
334
|
+
truncate && "truncate",
|
|
335
|
+
// Line clamping
|
|
336
|
+
lineClamp && lineClampClassMap[lineClamp],
|
|
337
|
+
// Margin reset
|
|
338
|
+
noMargin && "m-0",
|
|
339
|
+
// Consumer overrides
|
|
340
|
+
className
|
|
341
|
+
);
|
|
342
|
+
return /* @__PURE__ */ jsx(
|
|
343
|
+
Component,
|
|
344
|
+
{
|
|
345
|
+
ref,
|
|
346
|
+
className: classes,
|
|
347
|
+
"data-ds": "",
|
|
348
|
+
"data-ds-component": "typography",
|
|
349
|
+
"data-ds-variant": variant,
|
|
350
|
+
...rest,
|
|
351
|
+
children
|
|
352
|
+
}
|
|
353
|
+
);
|
|
354
|
+
}
|
|
355
|
+
);
|
|
356
|
+
Typography.displayName = "Typography";
|
|
357
|
+
var headingVariantMap = {
|
|
358
|
+
1: "heading1",
|
|
359
|
+
2: "heading2",
|
|
360
|
+
3: "heading3"
|
|
361
|
+
};
|
|
362
|
+
var Heading = forwardRef(
|
|
363
|
+
function Heading2({ level = 1, ...rest }, ref) {
|
|
364
|
+
return /* @__PURE__ */ jsx(
|
|
365
|
+
Typography,
|
|
366
|
+
{
|
|
367
|
+
ref,
|
|
368
|
+
variant: headingVariantMap[level],
|
|
369
|
+
...rest
|
|
370
|
+
}
|
|
371
|
+
);
|
|
372
|
+
}
|
|
373
|
+
);
|
|
374
|
+
Heading.displayName = "Heading";
|
|
375
|
+
var Subheading = forwardRef(
|
|
376
|
+
function Subheading2(props, ref) {
|
|
377
|
+
return /* @__PURE__ */ jsx(Typography, { ref, variant: "subheading", ...props });
|
|
378
|
+
}
|
|
379
|
+
);
|
|
380
|
+
Subheading.displayName = "Subheading";
|
|
381
|
+
var Body = forwardRef(function Body2({ small = false, ...rest }, ref) {
|
|
382
|
+
return /* @__PURE__ */ jsx(
|
|
383
|
+
Typography,
|
|
384
|
+
{
|
|
385
|
+
ref,
|
|
386
|
+
variant: small ? "bodySm" : "body",
|
|
387
|
+
...rest
|
|
388
|
+
}
|
|
389
|
+
);
|
|
390
|
+
});
|
|
391
|
+
Body.displayName = "Body";
|
|
392
|
+
var Caption = forwardRef(function Caption2({ color = "muted", ...rest }, ref) {
|
|
393
|
+
return /* @__PURE__ */ jsx(Typography, { ref, variant: "caption", color, ...rest });
|
|
394
|
+
});
|
|
395
|
+
Caption.displayName = "Caption";
|
|
396
|
+
var Label = forwardRef(function Label2({
|
|
397
|
+
htmlFor,
|
|
398
|
+
font,
|
|
399
|
+
color,
|
|
400
|
+
align,
|
|
401
|
+
as,
|
|
402
|
+
truncate,
|
|
403
|
+
lineClamp,
|
|
404
|
+
noMargin = true,
|
|
405
|
+
className,
|
|
406
|
+
children,
|
|
407
|
+
...rest
|
|
408
|
+
}, ref) {
|
|
409
|
+
const resolvedFont = font ?? variantDefaultFont.label;
|
|
410
|
+
const classes = cn(
|
|
411
|
+
variantClassMap.label,
|
|
412
|
+
fontClassMap[resolvedFont],
|
|
413
|
+
color && color !== "default" && colorClassMap[color],
|
|
414
|
+
align && alignClassMap2[align],
|
|
415
|
+
truncate && "truncate",
|
|
416
|
+
lineClamp && lineClampClassMap[lineClamp],
|
|
417
|
+
noMargin && "m-0",
|
|
418
|
+
className
|
|
419
|
+
);
|
|
420
|
+
return /* @__PURE__ */ jsx(
|
|
421
|
+
"label",
|
|
422
|
+
{
|
|
423
|
+
ref,
|
|
424
|
+
htmlFor,
|
|
425
|
+
className: classes,
|
|
426
|
+
"data-ds": "",
|
|
427
|
+
"data-ds-component": "typography",
|
|
428
|
+
"data-ds-variant": "label",
|
|
429
|
+
...rest,
|
|
430
|
+
children
|
|
431
|
+
}
|
|
432
|
+
);
|
|
433
|
+
});
|
|
434
|
+
Label.displayName = "Label";
|
|
435
|
+
var Overline = forwardRef(
|
|
436
|
+
function Overline2({ color = "muted", ...rest }, ref) {
|
|
437
|
+
return /* @__PURE__ */ jsx(Typography, { ref, variant: "overline", color, ...rest });
|
|
438
|
+
}
|
|
439
|
+
);
|
|
440
|
+
Overline.displayName = "Overline";
|
|
441
|
+
var InlineCode = forwardRef(
|
|
442
|
+
function InlineCode2({ className, ...rest }, ref) {
|
|
443
|
+
return /* @__PURE__ */ jsx(
|
|
444
|
+
Typography,
|
|
445
|
+
{
|
|
446
|
+
ref,
|
|
447
|
+
variant: "code",
|
|
448
|
+
className: cn("rounded-ds-sm bg-ds-muted px-1.5 py-0.5", className),
|
|
449
|
+
...rest
|
|
450
|
+
}
|
|
451
|
+
);
|
|
452
|
+
}
|
|
453
|
+
);
|
|
454
|
+
InlineCode.displayName = "InlineCode";
|
|
455
|
+
|
|
456
|
+
export { Body, Caption, Container, Divider, Grid, Heading, InlineCode, Label, Overline, Stack, Subheading, Typography };
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/tokens/typography.ts
|
|
4
|
+
var fontFamily = {
|
|
5
|
+
/** Display — used for hero headings, marketing text, landing pages */
|
|
6
|
+
display: "'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
|
|
7
|
+
/** Sans — primary UI typeface for all interface text */
|
|
8
|
+
sans: "'Outfit', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
|
|
9
|
+
/** Serif — long-form reading, editorial content, blog posts */
|
|
10
|
+
serif: "'Lora', Georgia, 'Times New Roman', serif",
|
|
11
|
+
/** Mono — code blocks, technical values, tabular data */
|
|
12
|
+
mono: "'JetBrains Mono', 'Fira Code', 'SF Mono', 'Cascadia Code', Consolas, 'Liberation Mono', Menlo, monospace",
|
|
13
|
+
/** Inherit — use parent's font (escape hatch for third-party integration) */
|
|
14
|
+
inherit: "inherit"
|
|
15
|
+
};
|
|
16
|
+
var fontSize = {
|
|
17
|
+
xs: "12px",
|
|
18
|
+
sm: "14px",
|
|
19
|
+
base: "16px",
|
|
20
|
+
lg: "18px",
|
|
21
|
+
xl: "20px",
|
|
22
|
+
"2xl": "24px",
|
|
23
|
+
"3xl": "30px"
|
|
24
|
+
};
|
|
25
|
+
var lineHeight = {
|
|
26
|
+
none: "1",
|
|
27
|
+
tight: "1.25",
|
|
28
|
+
snug: "1.375",
|
|
29
|
+
normal: "1.5",
|
|
30
|
+
relaxed: "1.625",
|
|
31
|
+
/** Fixed pixel values for precise control */
|
|
32
|
+
"16": "16px",
|
|
33
|
+
"20": "20px",
|
|
34
|
+
"24": "24px",
|
|
35
|
+
"28": "28px",
|
|
36
|
+
"32": "32px",
|
|
37
|
+
"36": "36px"
|
|
38
|
+
};
|
|
39
|
+
var fontWeight = {
|
|
40
|
+
regular: "400",
|
|
41
|
+
medium: "500",
|
|
42
|
+
semibold: "600",
|
|
43
|
+
bold: "700"
|
|
44
|
+
};
|
|
45
|
+
var letterSpacing = {
|
|
46
|
+
tighter: "-0.05em",
|
|
47
|
+
tight: "-0.025em",
|
|
48
|
+
normal: "0em",
|
|
49
|
+
wide: "0.025em",
|
|
50
|
+
wider: "0.05em"
|
|
51
|
+
};
|
|
52
|
+
var typographyVariants = {
|
|
53
|
+
/** Page titles — 30px bold, tight leading, sans font */
|
|
54
|
+
heading1: {
|
|
55
|
+
fontSize: fontSize["3xl"],
|
|
56
|
+
lineHeight: lineHeight["36"],
|
|
57
|
+
fontWeight: fontWeight.bold,
|
|
58
|
+
letterSpacing: letterSpacing.tight,
|
|
59
|
+
fontFamily: "sans"
|
|
60
|
+
},
|
|
61
|
+
/** Section titles — 24px semibold, sans font */
|
|
62
|
+
heading2: {
|
|
63
|
+
fontSize: fontSize["2xl"],
|
|
64
|
+
lineHeight: lineHeight["32"],
|
|
65
|
+
fontWeight: fontWeight.semibold,
|
|
66
|
+
letterSpacing: letterSpacing.tight,
|
|
67
|
+
fontFamily: "sans"
|
|
68
|
+
},
|
|
69
|
+
/** Subsection titles — 20px semibold, sans font */
|
|
70
|
+
heading3: {
|
|
71
|
+
fontSize: fontSize.xl,
|
|
72
|
+
lineHeight: lineHeight["28"],
|
|
73
|
+
fontWeight: fontWeight.semibold,
|
|
74
|
+
letterSpacing: letterSpacing.normal,
|
|
75
|
+
fontFamily: "sans"
|
|
76
|
+
},
|
|
77
|
+
/** Card titles, sidebar headings — 18px medium, sans font */
|
|
78
|
+
subheading: {
|
|
79
|
+
fontSize: fontSize.lg,
|
|
80
|
+
lineHeight: lineHeight["28"],
|
|
81
|
+
fontWeight: fontWeight.medium,
|
|
82
|
+
letterSpacing: letterSpacing.normal,
|
|
83
|
+
fontFamily: "sans"
|
|
84
|
+
},
|
|
85
|
+
/** Default body text — 16px regular, sans font */
|
|
86
|
+
body: {
|
|
87
|
+
fontSize: fontSize.base,
|
|
88
|
+
lineHeight: lineHeight["24"],
|
|
89
|
+
fontWeight: fontWeight.regular,
|
|
90
|
+
letterSpacing: letterSpacing.normal,
|
|
91
|
+
fontFamily: "sans"
|
|
92
|
+
},
|
|
93
|
+
/** Compact body text — 14px regular, sans font */
|
|
94
|
+
bodySm: {
|
|
95
|
+
fontSize: fontSize.sm,
|
|
96
|
+
lineHeight: lineHeight["20"],
|
|
97
|
+
fontWeight: fontWeight.regular,
|
|
98
|
+
letterSpacing: letterSpacing.normal,
|
|
99
|
+
fontFamily: "sans"
|
|
100
|
+
},
|
|
101
|
+
/** Captions, helper text, timestamps — 12px regular, sans font */
|
|
102
|
+
caption: {
|
|
103
|
+
fontSize: fontSize.xs,
|
|
104
|
+
lineHeight: lineHeight["16"],
|
|
105
|
+
fontWeight: fontWeight.regular,
|
|
106
|
+
letterSpacing: letterSpacing.wide,
|
|
107
|
+
fontFamily: "sans"
|
|
108
|
+
},
|
|
109
|
+
/** Form labels, badges — 14px medium, sans font */
|
|
110
|
+
label: {
|
|
111
|
+
fontSize: fontSize.sm,
|
|
112
|
+
lineHeight: lineHeight["20"],
|
|
113
|
+
fontWeight: fontWeight.medium,
|
|
114
|
+
letterSpacing: letterSpacing.normal,
|
|
115
|
+
fontFamily: "sans"
|
|
116
|
+
},
|
|
117
|
+
/** Overline / eyebrow text — 12px semibold, uppercased in usage, sans font */
|
|
118
|
+
overline: {
|
|
119
|
+
fontSize: fontSize.xs,
|
|
120
|
+
lineHeight: lineHeight["16"],
|
|
121
|
+
fontWeight: fontWeight.semibold,
|
|
122
|
+
letterSpacing: letterSpacing.wider,
|
|
123
|
+
fontFamily: "sans"
|
|
124
|
+
},
|
|
125
|
+
/** Code / monospace inline text — 14px regular, mono font */
|
|
126
|
+
code: {
|
|
127
|
+
fontSize: fontSize.sm,
|
|
128
|
+
lineHeight: lineHeight["20"],
|
|
129
|
+
fontWeight: fontWeight.regular,
|
|
130
|
+
letterSpacing: letterSpacing.normal,
|
|
131
|
+
fontFamily: "mono"
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
exports.fontFamily = fontFamily;
|
|
136
|
+
exports.fontSize = fontSize;
|
|
137
|
+
exports.fontWeight = fontWeight;
|
|
138
|
+
exports.letterSpacing = letterSpacing;
|
|
139
|
+
exports.lineHeight = lineHeight;
|
|
140
|
+
exports.typographyVariants = typographyVariants;
|