@zentauri-ui/zentauri-components 1.4.5 → 1.4.6

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.
Files changed (60) hide show
  1. package/README.md +63 -1
  2. package/cli/registry.json +2 -1
  3. package/dist/ui/search/search-suggestion-list.d.ts.map +1 -1
  4. package/dist/ui/search.js +10 -6
  5. package/dist/ui/search.js.map +1 -1
  6. package/dist/ui/search.mjs +10 -6
  7. package/dist/ui/search.mjs.map +1 -1
  8. package/dist/ui/typography/blockquote-base.d.ts +6 -0
  9. package/dist/ui/typography/blockquote-base.d.ts.map +1 -0
  10. package/dist/ui/typography/blockquote.d.ts +6 -0
  11. package/dist/ui/typography/blockquote.d.ts.map +1 -0
  12. package/dist/ui/typography/code-block-base.d.ts +6 -0
  13. package/dist/ui/typography/code-block-base.d.ts.map +1 -0
  14. package/dist/ui/typography/code-block.d.ts +6 -0
  15. package/dist/ui/typography/code-block.d.ts.map +1 -0
  16. package/dist/ui/typography/heading-base.d.ts +6 -0
  17. package/dist/ui/typography/heading-base.d.ts.map +1 -0
  18. package/dist/ui/typography/heading.d.ts +6 -0
  19. package/dist/ui/typography/heading.d.ts.map +1 -0
  20. package/dist/ui/typography/index.d.ts +9 -0
  21. package/dist/ui/typography/index.d.ts.map +1 -0
  22. package/dist/ui/typography/inline-code-base.d.ts +6 -0
  23. package/dist/ui/typography/inline-code-base.d.ts.map +1 -0
  24. package/dist/ui/typography/inline-code.d.ts +6 -0
  25. package/dist/ui/typography/inline-code.d.ts.map +1 -0
  26. package/dist/ui/typography/list-base.d.ts +10 -0
  27. package/dist/ui/typography/list-base.d.ts.map +1 -0
  28. package/dist/ui/typography/list.d.ts +12 -0
  29. package/dist/ui/typography/list.d.ts.map +1 -0
  30. package/dist/ui/typography/text-base.d.ts +6 -0
  31. package/dist/ui/typography/text-base.d.ts.map +1 -0
  32. package/dist/ui/typography/text.d.ts +6 -0
  33. package/dist/ui/typography/text.d.ts.map +1 -0
  34. package/dist/ui/typography/types.d.ts +56 -0
  35. package/dist/ui/typography/types.d.ts.map +1 -0
  36. package/dist/ui/typography/variants.d.ts +16 -0
  37. package/dist/ui/typography/variants.d.ts.map +1 -0
  38. package/dist/ui/typography.js +334 -0
  39. package/dist/ui/typography.js.map +1 -0
  40. package/dist/ui/typography.mjs +321 -0
  41. package/dist/ui/typography.mjs.map +1 -0
  42. package/package.json +1 -1
  43. package/src/ui/search/search-bar.tsx +1 -1
  44. package/src/ui/search/search-suggestion-list.tsx +14 -6
  45. package/src/ui/typography/blockquote-base.tsx +39 -0
  46. package/src/ui/typography/blockquote.tsx +8 -0
  47. package/src/ui/typography/code-block-base.tsx +37 -0
  48. package/src/ui/typography/code-block.tsx +8 -0
  49. package/src/ui/typography/heading-base.tsx +59 -0
  50. package/src/ui/typography/heading.tsx +8 -0
  51. package/src/ui/typography/index.ts +28 -0
  52. package/src/ui/typography/inline-code-base.tsx +27 -0
  53. package/src/ui/typography/inline-code.tsx +8 -0
  54. package/src/ui/typography/list-base.tsx +88 -0
  55. package/src/ui/typography/list.tsx +15 -0
  56. package/src/ui/typography/text-base.tsx +43 -0
  57. package/src/ui/typography/text.tsx +8 -0
  58. package/src/ui/typography/types.ts +90 -0
  59. package/src/ui/typography/typography.test.tsx +80 -0
  60. package/src/ui/typography/variants.ts +72 -0
@@ -0,0 +1,334 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var chunkUOZYPWDZ_js = require('../chunk-UOZYPWDZ.js');
5
+ var classVarianceAuthority = require('class-variance-authority');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ var typographyToneVariants = classVarianceAuthority.cva("", {
9
+ variants: {
10
+ tone: {
11
+ default: "text-slate-50 border-white/15",
12
+ muted: "text-slate-400 border-white/15",
13
+ primary: "text-cyan-300 border-cyan-300/40",
14
+ secondary: "text-slate-300 border-white/15",
15
+ accent: "text-violet-300 border-violet-300/40",
16
+ destructive: "text-rose-400 border-rose-300/40",
17
+ info: "text-sky-300 border-sky-300/40",
18
+ success: "text-emerald-300 border-emerald-300/40",
19
+ warning: "text-amber-300 border-amber-300/40",
20
+ error: "text-red-300 border-red-300/40",
21
+ "gradient-pink-violet": "bg-linear-to-r from-pink-400 to-violet-400 bg-clip-text text-transparent w-fit",
22
+ "gradient-cyan-violet": "bg-linear-to-r from-cyan-400 to-violet-400 bg-clip-text text-transparent w-fit",
23
+ "gradient-cyan-blue": "bg-linear-to-r from-cyan-400 to-blue-400 bg-clip-text text-transparent w-fit",
24
+ "gradient-cyan-green": "bg-linear-to-r from-cyan-400 to-green-400 bg-clip-text text-transparent w-fit",
25
+ "gradient-cyan-orange": "bg-linear-to-r from-cyan-400 to-orange-400 bg-clip-text text-transparent w-fit",
26
+ "gradient-cyan-red": "bg-linear-to-r from-cyan-400 to-red-400 bg-clip-text text-transparent w-fit",
27
+ "gradient-cyan-purple": "bg-linear-to-r from-cyan-400 to-purple-400 bg-clip-text text-transparent w-fit",
28
+ "gradient-cyan-pink": "bg-linear-to-r from-cyan-400 to-pink-400 bg-clip-text text-transparent w-fit"
29
+ }
30
+ },
31
+ defaultVariants: {
32
+ tone: "default"
33
+ }
34
+ });
35
+ var headingLevelVariants = classVarianceAuthority.cva("scroll-m-20", {
36
+ variants: {
37
+ level: {
38
+ 1: "text-4xl font-bold tracking-tight md:text-5xl",
39
+ 2: "text-3xl font-semibold tracking-tight",
40
+ 3: "text-2xl font-semibold tracking-tight",
41
+ 4: "text-xl font-semibold tracking-tight",
42
+ 5: "text-lg font-medium",
43
+ 6: "text-base font-medium"
44
+ }
45
+ }
46
+ });
47
+ var textSizeVariants = classVarianceAuthority.cva("", {
48
+ variants: {
49
+ size: {
50
+ sm: "text-sm leading-relaxed",
51
+ base: "text-base leading-relaxed",
52
+ lg: "text-lg leading-relaxed"
53
+ }
54
+ },
55
+ defaultVariants: {
56
+ size: "base"
57
+ }
58
+ });
59
+ var unorderedListMarkerVariants = classVarianceAuthority.cva("space-y-2 pl-5", {
60
+ variants: {
61
+ marker: {
62
+ disc: "list-disc",
63
+ circle: "[list-style-type:circle]",
64
+ none: "list-none pl-0"
65
+ }
66
+ },
67
+ defaultVariants: {
68
+ marker: "disc"
69
+ }
70
+ });
71
+ var orderedListVariants = classVarianceAuthority.cva("list-decimal space-y-2 pl-5");
72
+ var HEADING_TAGS = {
73
+ 1: "h1",
74
+ 2: "h2",
75
+ 3: "h3",
76
+ 4: "h4",
77
+ 5: "h5",
78
+ 6: "h6"
79
+ };
80
+ var HeadingBase = (props) => {
81
+ const {
82
+ level,
83
+ displayLevel,
84
+ tone,
85
+ bold,
86
+ italic,
87
+ underline,
88
+ strikethrough,
89
+ ref,
90
+ className,
91
+ children,
92
+ ...rest
93
+ } = props;
94
+ const Tag = HEADING_TAGS[level];
95
+ const scale = displayLevel ?? level;
96
+ return /* @__PURE__ */ jsxRuntime.jsx(
97
+ Tag,
98
+ {
99
+ ref,
100
+ "data-slot": "typography-heading",
101
+ "data-level": level,
102
+ className: chunkUOZYPWDZ_js.cn(
103
+ typographyToneVariants({ tone }),
104
+ headingLevelVariants({ level: scale }),
105
+ bold && "font-bold",
106
+ italic && "italic",
107
+ underline && "underline underline-offset-4",
108
+ strikethrough && "line-through",
109
+ className
110
+ ),
111
+ ...rest,
112
+ children
113
+ }
114
+ );
115
+ };
116
+ HeadingBase.displayName = "Heading";
117
+ var Heading = (props) => {
118
+ return /* @__PURE__ */ jsxRuntime.jsx(HeadingBase, { ...props });
119
+ };
120
+ Heading.displayName = "Heading";
121
+ var TextBase = (props) => {
122
+ const {
123
+ as = "p",
124
+ size = "base",
125
+ tone,
126
+ bold,
127
+ italic,
128
+ underline,
129
+ strikethrough,
130
+ highlight,
131
+ className,
132
+ children,
133
+ ...rest
134
+ } = props;
135
+ const Component = as;
136
+ return /* @__PURE__ */ jsxRuntime.jsx(
137
+ Component,
138
+ {
139
+ "data-slot": "typography-text",
140
+ className: chunkUOZYPWDZ_js.cn(
141
+ typographyToneVariants({ tone }),
142
+ textSizeVariants({ size }),
143
+ bold && "font-semibold",
144
+ italic && "italic",
145
+ underline && "underline underline-offset-2",
146
+ strikethrough && "line-through",
147
+ highlight && "rounded bg-amber-400/15 px-0.5",
148
+ className
149
+ ),
150
+ ...rest,
151
+ children
152
+ }
153
+ );
154
+ };
155
+ TextBase.displayName = "Text";
156
+ var Text = (props) => {
157
+ return /* @__PURE__ */ jsxRuntime.jsx(TextBase, { ...props });
158
+ };
159
+ Text.displayName = "Text";
160
+ function ListBase(props) {
161
+ if ("ordered" in props && props.ordered === true) {
162
+ const {
163
+ tone: tone2,
164
+ className: className2,
165
+ children: children2,
166
+ ref: ref2,
167
+ ordered: ordered2,
168
+ marker: marker2,
169
+ ...rest2
170
+ } = props;
171
+ return /* @__PURE__ */ jsxRuntime.jsx(
172
+ "ol",
173
+ {
174
+ ref: ref2,
175
+ "data-slot": "typography-list",
176
+ "data-list-type": "ordered",
177
+ className: chunkUOZYPWDZ_js.cn(
178
+ typographyToneVariants({ tone: tone2 }),
179
+ orderedListVariants(),
180
+ className2
181
+ ),
182
+ ...rest2,
183
+ children: children2
184
+ }
185
+ );
186
+ }
187
+ const {
188
+ marker = "disc",
189
+ tone,
190
+ className,
191
+ children,
192
+ ref,
193
+ ordered,
194
+ ...rest
195
+ } = props;
196
+ return /* @__PURE__ */ jsxRuntime.jsx(
197
+ "ul",
198
+ {
199
+ ref,
200
+ "data-slot": "typography-list",
201
+ "data-list-type": "unordered",
202
+ className: chunkUOZYPWDZ_js.cn(
203
+ typographyToneVariants({ tone }),
204
+ unorderedListMarkerVariants({ marker }),
205
+ className
206
+ ),
207
+ ...rest,
208
+ children
209
+ }
210
+ );
211
+ }
212
+ ListBase.displayName = "List";
213
+ function ListItemBase(props) {
214
+ const { className, children, ref, ...rest } = props;
215
+ return /* @__PURE__ */ jsxRuntime.jsx(
216
+ "li",
217
+ {
218
+ ref,
219
+ "data-slot": "typography-list-item",
220
+ className: chunkUOZYPWDZ_js.cn("leading-relaxed", className),
221
+ ...rest,
222
+ children
223
+ }
224
+ );
225
+ }
226
+ ListItemBase.displayName = "ListItem";
227
+ var ListItem = ListItemBase;
228
+ function ListRoot(props) {
229
+ return /* @__PURE__ */ jsxRuntime.jsx(ListBase, { ...props });
230
+ }
231
+ var List = Object.assign(ListRoot, {
232
+ Item: ListItem
233
+ });
234
+ ListRoot.displayName = "List";
235
+ var BlockquoteBase = (props) => {
236
+ const {
237
+ tone,
238
+ attribution,
239
+ className,
240
+ children,
241
+ ref,
242
+ ...rest
243
+ } = props;
244
+ return /* @__PURE__ */ jsxRuntime.jsxs(
245
+ "blockquote",
246
+ {
247
+ ref,
248
+ "data-slot": "typography-blockquote",
249
+ className: chunkUOZYPWDZ_js.cn(
250
+ typographyToneVariants({ tone }),
251
+ "border-l-4 py-1 pl-4 italic",
252
+ className
253
+ ),
254
+ ...rest,
255
+ children: [
256
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2 leading-relaxed", children }),
257
+ attribution ? /* @__PURE__ */ jsxRuntime.jsx("footer", { className: "mt-3 text-sm not-italic", children: /* @__PURE__ */ jsxRuntime.jsx("cite", { children: attribution }) }) : null
258
+ ]
259
+ }
260
+ );
261
+ };
262
+ BlockquoteBase.displayName = "Blockquote";
263
+ var Blockquote = (props) => {
264
+ return /* @__PURE__ */ jsxRuntime.jsx(BlockquoteBase, { ...props });
265
+ };
266
+ Blockquote.displayName = "Blockquote";
267
+ var InlineCodeBase = (props) => {
268
+ const { tone, className, children, ref, ...rest } = props;
269
+ return /* @__PURE__ */ jsxRuntime.jsx(
270
+ "code",
271
+ {
272
+ ref,
273
+ "data-slot": "typography-inline-code",
274
+ className: chunkUOZYPWDZ_js.cn(
275
+ typographyToneVariants({ tone }),
276
+ "rounded-md border border-white/10 bg-white/6 px-1.5 py-0.5 font-mono text-[0.925em] font-normal",
277
+ className
278
+ ),
279
+ ...rest,
280
+ children
281
+ }
282
+ );
283
+ };
284
+ InlineCodeBase.displayName = "InlineCode";
285
+ var InlineCode = (props) => {
286
+ return /* @__PURE__ */ jsxRuntime.jsx(InlineCodeBase, { ...props });
287
+ };
288
+ InlineCode.displayName = "InlineCode";
289
+ var CodeBlockBase = (props) => {
290
+ const {
291
+ tone,
292
+ language,
293
+ className,
294
+ children,
295
+ ref,
296
+ ...rest
297
+ } = props;
298
+ const ariaLabel = language ? `Code sample (${language})` : "Code sample";
299
+ return /* @__PURE__ */ jsxRuntime.jsx(
300
+ "pre",
301
+ {
302
+ ref,
303
+ "data-slot": "typography-code-block",
304
+ "aria-label": ariaLabel,
305
+ className: chunkUOZYPWDZ_js.cn(
306
+ typographyToneVariants({ tone }),
307
+ "overflow-x-auto rounded-xl border border-white/10 bg-slate-950/80 p-4 text-sm leading-relaxed shadow-inner shadow-slate-950/40",
308
+ className
309
+ ),
310
+ ...rest,
311
+ children: /* @__PURE__ */ jsxRuntime.jsx("code", { className: "font-mono text-[0.95em]", children })
312
+ }
313
+ );
314
+ };
315
+ CodeBlockBase.displayName = "CodeBlock";
316
+ var CodeBlock = (props) => {
317
+ return /* @__PURE__ */ jsxRuntime.jsx(CodeBlockBase, { ...props });
318
+ };
319
+ CodeBlock.displayName = "CodeBlock";
320
+
321
+ exports.Blockquote = Blockquote;
322
+ exports.CodeBlock = CodeBlock;
323
+ exports.Heading = Heading;
324
+ exports.InlineCode = InlineCode;
325
+ exports.List = List;
326
+ exports.ListItem = ListItem;
327
+ exports.Text = Text;
328
+ exports.headingLevelVariants = headingLevelVariants;
329
+ exports.orderedListVariants = orderedListVariants;
330
+ exports.textSizeVariants = textSizeVariants;
331
+ exports.typographyToneVariants = typographyToneVariants;
332
+ exports.unorderedListMarkerVariants = unorderedListMarkerVariants;
333
+ //# sourceMappingURL=typography.js.map
334
+ //# sourceMappingURL=typography.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ui/typography/variants.ts","../../src/ui/typography/heading-base.tsx","../../src/ui/typography/heading.tsx","../../src/ui/typography/text-base.tsx","../../src/ui/typography/text.tsx","../../src/ui/typography/list-base.tsx","../../src/ui/typography/list.tsx","../../src/ui/typography/blockquote-base.tsx","../../src/ui/typography/blockquote.tsx","../../src/ui/typography/inline-code-base.tsx","../../src/ui/typography/inline-code.tsx","../../src/ui/typography/code-block-base.tsx","../../src/ui/typography/code-block.tsx"],"names":["cva","jsx","cn","tone","className","children","ref","ordered","marker","rest","jsxs"],"mappings":"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","file":"typography.js","sourcesContent":["import { cva } from \"class-variance-authority\";\n\n/** Semantic text colors aligned with slate/cyan/violet accents used across the kit (dark-first). */\nexport const typographyToneVariants = cva(\"\", {\n variants: {\n tone: {\n default: \"text-slate-50 border-white/15\",\n muted: \"text-slate-400 border-white/15\",\n primary: \"text-cyan-300 border-cyan-300/40\",\n secondary: \"text-slate-300 border-white/15\",\n accent: \"text-violet-300 border-violet-300/40\",\n destructive: \"text-rose-400 border-rose-300/40\",\n info: \"text-sky-300 border-sky-300/40\",\n success: \"text-emerald-300 border-emerald-300/40\",\n warning: \"text-amber-300 border-amber-300/40\",\n error: \"text-red-300 border-red-300/40\",\n \"gradient-pink-violet\": \"bg-linear-to-r from-pink-400 to-violet-400 bg-clip-text text-transparent w-fit\",\n \"gradient-cyan-violet\": \"bg-linear-to-r from-cyan-400 to-violet-400 bg-clip-text text-transparent w-fit\",\n \"gradient-cyan-blue\": \"bg-linear-to-r from-cyan-400 to-blue-400 bg-clip-text text-transparent w-fit\",\n \"gradient-cyan-green\": \"bg-linear-to-r from-cyan-400 to-green-400 bg-clip-text text-transparent w-fit\",\n \"gradient-cyan-orange\": \"bg-linear-to-r from-cyan-400 to-orange-400 bg-clip-text text-transparent w-fit\",\n \"gradient-cyan-red\": \"bg-linear-to-r from-cyan-400 to-red-400 bg-clip-text text-transparent w-fit\",\n \"gradient-cyan-purple\": \"bg-linear-to-r from-cyan-400 to-purple-400 bg-clip-text text-transparent w-fit\",\n \"gradient-cyan-pink\": \"bg-linear-to-r from-cyan-400 to-pink-400 bg-clip-text text-transparent w-fit\",\n },\n },\n defaultVariants: {\n tone: \"default\",\n },\n});\n\nexport const headingLevelVariants = cva(\"scroll-m-20\", {\n variants: {\n level: {\n 1: \"text-4xl font-bold tracking-tight md:text-5xl\",\n 2: \"text-3xl font-semibold tracking-tight\",\n 3: \"text-2xl font-semibold tracking-tight\",\n 4: \"text-xl font-semibold tracking-tight\",\n 5: \"text-lg font-medium\",\n 6: \"text-base font-medium\",\n },\n },\n});\n\nexport const textSizeVariants = cva(\"\", {\n variants: {\n size: {\n sm: \"text-sm leading-relaxed\",\n base: \"text-base leading-relaxed\",\n lg: \"text-lg leading-relaxed\",\n },\n },\n defaultVariants: {\n size: \"base\",\n },\n});\n\n/** Marker style for unordered lists; ignored when `ordered` is true (decimal numbering). */\nexport const unorderedListMarkerVariants = cva(\"space-y-2 pl-5\", {\n variants: {\n marker: {\n disc: \"list-disc\",\n circle: \"[list-style-type:circle]\",\n none: \"list-none pl-0\",\n },\n },\n defaultVariants: {\n marker: \"disc\",\n },\n});\n\nexport const orderedListVariants = cva(\"list-decimal space-y-2 pl-5\");\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type { HeadingProps } from \"./types\";\nimport {\n headingLevelVariants,\n typographyToneVariants,\n} from \"./variants\";\n\nconst HEADING_TAGS = {\n 1: \"h1\",\n 2: \"h2\",\n 3: \"h3\",\n 4: \"h4\",\n 5: \"h5\",\n 6: \"h6\",\n} as const;\n\nexport const HeadingBase = (props: HeadingProps) => {\n const {\n level,\n displayLevel,\n tone,\n bold,\n italic,\n underline,\n strikethrough,\n ref,\n className,\n children,\n ...rest\n } = props;\n\n const Tag = HEADING_TAGS[level];\n const scale = displayLevel ?? level;\n\n return (\n <Tag\n ref={ref}\n data-slot=\"typography-heading\"\n data-level={level}\n className={cn(\n typographyToneVariants({ tone }),\n headingLevelVariants({ level: scale }),\n bold && \"font-bold\",\n italic && \"italic\",\n underline && \"underline underline-offset-4\",\n strikethrough && \"line-through\",\n className,\n )}\n {...rest}\n >\n {children}\n </Tag>\n );\n};\n\nHeadingBase.displayName = \"Heading\";\n","import { HeadingBase } from \"./heading-base\";\nimport type { HeadingProps } from \"./types\";\n\nexport const Heading = (props: HeadingProps) => {\n return <HeadingBase {...props} />;\n};\n\nHeading.displayName = \"Heading\";\n","import { cn } from \"../../lib/utils\";\n\nimport type { TextProps } from \"./types\";\nimport { textSizeVariants, typographyToneVariants } from \"./variants\";\n\nexport const TextBase = (props: TextProps) => {\n const {\n as = \"p\",\n size = \"base\",\n tone,\n bold,\n italic,\n underline,\n strikethrough,\n highlight,\n className,\n children,\n ...rest\n } = props;\n\n const Component = as;\n\n return (\n <Component\n data-slot=\"typography-text\"\n className={cn(\n typographyToneVariants({ tone }),\n textSizeVariants({ size }),\n bold && \"font-semibold\",\n italic && \"italic\",\n underline && \"underline underline-offset-2\",\n strikethrough && \"line-through\",\n highlight && \"rounded bg-amber-400/15 px-0.5\",\n className,\n )}\n {...rest}\n >\n {children}\n </Component>\n );\n};\n\nTextBase.displayName = \"Text\";\n","import { TextBase } from \"./text-base\";\nimport type { TextProps } from \"./types\";\n\nexport const Text = (props: TextProps) => {\n return <TextBase {...props} />;\n};\n\nText.displayName = \"Text\";\n","import { cn } from \"../../lib/utils\";\n\nimport type { ListProps, ListItemProps } from \"./types\";\nimport {\n orderedListVariants,\n typographyToneVariants,\n unorderedListMarkerVariants,\n} from \"./variants\";\n\nexport function ListBase(props: ListProps) {\n if (\"ordered\" in props && props.ordered === true) {\n const {\n tone,\n className,\n children,\n ref,\n ordered,\n marker,\n ...rest\n } = props;\n\n void ordered;\n void marker;\n\n return (\n <ol\n ref={ref}\n data-slot=\"typography-list\"\n data-list-type=\"ordered\"\n className={cn(\n typographyToneVariants({ tone }),\n orderedListVariants(),\n className,\n )}\n {...rest}\n >\n {children}\n </ol>\n );\n }\n\n const {\n marker = \"disc\",\n tone,\n className,\n children,\n ref,\n ordered,\n ...rest\n } = props;\n\n void ordered;\n\n return (\n <ul\n ref={ref}\n data-slot=\"typography-list\"\n data-list-type=\"unordered\"\n className={cn(\n typographyToneVariants({ tone }),\n unorderedListMarkerVariants({ marker }),\n className,\n )}\n {...rest}\n >\n {children}\n </ul>\n );\n}\n\nListBase.displayName = \"List\";\n\nexport function ListItemBase(props: ListItemProps) {\n const { className, children, ref, ...rest } = props;\n\n return (\n <li\n ref={ref}\n data-slot=\"typography-list-item\"\n className={cn(\"leading-relaxed\", className)}\n {...rest}\n >\n {children}\n </li>\n );\n}\n\nListItemBase.displayName = \"ListItem\";\n","import type { ListProps } from \"./types\";\n\nimport { ListBase, ListItemBase } from \"./list-base\";\n\nexport const ListItem = ListItemBase;\n\nfunction ListRoot(props: ListProps) {\n return <ListBase {...props} />;\n}\n\nexport const List = Object.assign(ListRoot, {\n Item: ListItem,\n});\n\nListRoot.displayName = \"List\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type { BlockquoteProps } from \"./types\";\nimport { typographyToneVariants } from \"./variants\";\n\nexport const BlockquoteBase = (props: BlockquoteProps) => {\n const {\n tone,\n attribution,\n className,\n children,\n ref,\n ...rest\n } = props;\n\n return (\n <blockquote\n ref={ref}\n data-slot=\"typography-blockquote\"\n className={cn(\n typographyToneVariants({ tone }),\n \"border-l-4 py-1 pl-4 italic\",\n className,\n )}\n {...rest}\n >\n <div className=\"space-y-2 leading-relaxed\">{children}</div>\n {attribution ? (\n <footer className=\"mt-3 text-sm not-italic\">\n <cite>{attribution}</cite>\n </footer>\n ) : null}\n </blockquote>\n );\n};\n\nBlockquoteBase.displayName = \"Blockquote\";\n","import { BlockquoteBase } from \"./blockquote-base\";\nimport type { BlockquoteProps } from \"./types\";\n\nexport const Blockquote = (props: BlockquoteProps) => {\n return <BlockquoteBase {...props} />;\n};\n\nBlockquote.displayName = \"Blockquote\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type { InlineCodeProps } from \"./types\";\nimport { typographyToneVariants } from \"./variants\";\n\nexport const InlineCodeBase = (props: InlineCodeProps) => {\n const { tone, className, children, ref, ...rest } = props;\n\n return (\n <code\n ref={ref}\n data-slot=\"typography-inline-code\"\n className={cn(\n typographyToneVariants({ tone }),\n \"rounded-md border border-white/10 bg-white/6 px-1.5 py-0.5 font-mono text-[0.925em] font-normal\",\n className,\n )}\n {...rest}\n >\n {children}\n </code>\n );\n};\n\nInlineCodeBase.displayName = \"InlineCode\";\n","import { InlineCodeBase } from \"./inline-code-base\";\nimport type { InlineCodeProps } from \"./types\";\n\nexport const InlineCode = (props: InlineCodeProps) => {\n return <InlineCodeBase {...props} />;\n};\n\nInlineCode.displayName = \"InlineCode\";\n","import { forwardRef } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nimport type { CodeBlockProps } from \"./types\";\nimport { typographyToneVariants } from \"./variants\";\n\nexport const CodeBlockBase = (props: CodeBlockProps) => {\n const {\n tone,\n language,\n className,\n children,\n ref,\n ...rest\n } = props;\n\n const ariaLabel = language ? `Code sample (${language})` : \"Code sample\";\n\n return (\n <pre\n ref={ref}\n data-slot=\"typography-code-block\"\n aria-label={ariaLabel}\n className={cn(\n typographyToneVariants({ tone }),\n \"overflow-x-auto rounded-xl border border-white/10 bg-slate-950/80 p-4 text-sm leading-relaxed shadow-inner shadow-slate-950/40\",\n className,\n )}\n {...rest}\n >\n <code className=\"font-mono text-[0.95em]\">{children}</code>\n </pre>\n );\n};\n\nCodeBlockBase.displayName = \"CodeBlock\";\n","import { CodeBlockBase } from \"./code-block-base\";\nimport type { CodeBlockProps } from \"./types\";\n\nexport const CodeBlock = (props: CodeBlockProps) => {\n return <CodeBlockBase {...props} />;\n};\n\nCodeBlock.displayName = \"CodeBlock\";\n"]}
@@ -0,0 +1,321 @@
1
+ "use client";
2
+ import { cn } from '../chunk-DFEZH7TC.mjs';
3
+ import { cva } from 'class-variance-authority';
4
+ import { jsx, jsxs } from 'react/jsx-runtime';
5
+
6
+ var typographyToneVariants = cva("", {
7
+ variants: {
8
+ tone: {
9
+ default: "text-slate-50 border-white/15",
10
+ muted: "text-slate-400 border-white/15",
11
+ primary: "text-cyan-300 border-cyan-300/40",
12
+ secondary: "text-slate-300 border-white/15",
13
+ accent: "text-violet-300 border-violet-300/40",
14
+ destructive: "text-rose-400 border-rose-300/40",
15
+ info: "text-sky-300 border-sky-300/40",
16
+ success: "text-emerald-300 border-emerald-300/40",
17
+ warning: "text-amber-300 border-amber-300/40",
18
+ error: "text-red-300 border-red-300/40",
19
+ "gradient-pink-violet": "bg-linear-to-r from-pink-400 to-violet-400 bg-clip-text text-transparent w-fit",
20
+ "gradient-cyan-violet": "bg-linear-to-r from-cyan-400 to-violet-400 bg-clip-text text-transparent w-fit",
21
+ "gradient-cyan-blue": "bg-linear-to-r from-cyan-400 to-blue-400 bg-clip-text text-transparent w-fit",
22
+ "gradient-cyan-green": "bg-linear-to-r from-cyan-400 to-green-400 bg-clip-text text-transparent w-fit",
23
+ "gradient-cyan-orange": "bg-linear-to-r from-cyan-400 to-orange-400 bg-clip-text text-transparent w-fit",
24
+ "gradient-cyan-red": "bg-linear-to-r from-cyan-400 to-red-400 bg-clip-text text-transparent w-fit",
25
+ "gradient-cyan-purple": "bg-linear-to-r from-cyan-400 to-purple-400 bg-clip-text text-transparent w-fit",
26
+ "gradient-cyan-pink": "bg-linear-to-r from-cyan-400 to-pink-400 bg-clip-text text-transparent w-fit"
27
+ }
28
+ },
29
+ defaultVariants: {
30
+ tone: "default"
31
+ }
32
+ });
33
+ var headingLevelVariants = cva("scroll-m-20", {
34
+ variants: {
35
+ level: {
36
+ 1: "text-4xl font-bold tracking-tight md:text-5xl",
37
+ 2: "text-3xl font-semibold tracking-tight",
38
+ 3: "text-2xl font-semibold tracking-tight",
39
+ 4: "text-xl font-semibold tracking-tight",
40
+ 5: "text-lg font-medium",
41
+ 6: "text-base font-medium"
42
+ }
43
+ }
44
+ });
45
+ var textSizeVariants = cva("", {
46
+ variants: {
47
+ size: {
48
+ sm: "text-sm leading-relaxed",
49
+ base: "text-base leading-relaxed",
50
+ lg: "text-lg leading-relaxed"
51
+ }
52
+ },
53
+ defaultVariants: {
54
+ size: "base"
55
+ }
56
+ });
57
+ var unorderedListMarkerVariants = cva("space-y-2 pl-5", {
58
+ variants: {
59
+ marker: {
60
+ disc: "list-disc",
61
+ circle: "[list-style-type:circle]",
62
+ none: "list-none pl-0"
63
+ }
64
+ },
65
+ defaultVariants: {
66
+ marker: "disc"
67
+ }
68
+ });
69
+ var orderedListVariants = cva("list-decimal space-y-2 pl-5");
70
+ var HEADING_TAGS = {
71
+ 1: "h1",
72
+ 2: "h2",
73
+ 3: "h3",
74
+ 4: "h4",
75
+ 5: "h5",
76
+ 6: "h6"
77
+ };
78
+ var HeadingBase = (props) => {
79
+ const {
80
+ level,
81
+ displayLevel,
82
+ tone,
83
+ bold,
84
+ italic,
85
+ underline,
86
+ strikethrough,
87
+ ref,
88
+ className,
89
+ children,
90
+ ...rest
91
+ } = props;
92
+ const Tag = HEADING_TAGS[level];
93
+ const scale = displayLevel ?? level;
94
+ return /* @__PURE__ */ jsx(
95
+ Tag,
96
+ {
97
+ ref,
98
+ "data-slot": "typography-heading",
99
+ "data-level": level,
100
+ className: cn(
101
+ typographyToneVariants({ tone }),
102
+ headingLevelVariants({ level: scale }),
103
+ bold && "font-bold",
104
+ italic && "italic",
105
+ underline && "underline underline-offset-4",
106
+ strikethrough && "line-through",
107
+ className
108
+ ),
109
+ ...rest,
110
+ children
111
+ }
112
+ );
113
+ };
114
+ HeadingBase.displayName = "Heading";
115
+ var Heading = (props) => {
116
+ return /* @__PURE__ */ jsx(HeadingBase, { ...props });
117
+ };
118
+ Heading.displayName = "Heading";
119
+ var TextBase = (props) => {
120
+ const {
121
+ as = "p",
122
+ size = "base",
123
+ tone,
124
+ bold,
125
+ italic,
126
+ underline,
127
+ strikethrough,
128
+ highlight,
129
+ className,
130
+ children,
131
+ ...rest
132
+ } = props;
133
+ const Component = as;
134
+ return /* @__PURE__ */ jsx(
135
+ Component,
136
+ {
137
+ "data-slot": "typography-text",
138
+ className: cn(
139
+ typographyToneVariants({ tone }),
140
+ textSizeVariants({ size }),
141
+ bold && "font-semibold",
142
+ italic && "italic",
143
+ underline && "underline underline-offset-2",
144
+ strikethrough && "line-through",
145
+ highlight && "rounded bg-amber-400/15 px-0.5",
146
+ className
147
+ ),
148
+ ...rest,
149
+ children
150
+ }
151
+ );
152
+ };
153
+ TextBase.displayName = "Text";
154
+ var Text = (props) => {
155
+ return /* @__PURE__ */ jsx(TextBase, { ...props });
156
+ };
157
+ Text.displayName = "Text";
158
+ function ListBase(props) {
159
+ if ("ordered" in props && props.ordered === true) {
160
+ const {
161
+ tone: tone2,
162
+ className: className2,
163
+ children: children2,
164
+ ref: ref2,
165
+ ordered: ordered2,
166
+ marker: marker2,
167
+ ...rest2
168
+ } = props;
169
+ return /* @__PURE__ */ jsx(
170
+ "ol",
171
+ {
172
+ ref: ref2,
173
+ "data-slot": "typography-list",
174
+ "data-list-type": "ordered",
175
+ className: cn(
176
+ typographyToneVariants({ tone: tone2 }),
177
+ orderedListVariants(),
178
+ className2
179
+ ),
180
+ ...rest2,
181
+ children: children2
182
+ }
183
+ );
184
+ }
185
+ const {
186
+ marker = "disc",
187
+ tone,
188
+ className,
189
+ children,
190
+ ref,
191
+ ordered,
192
+ ...rest
193
+ } = props;
194
+ return /* @__PURE__ */ jsx(
195
+ "ul",
196
+ {
197
+ ref,
198
+ "data-slot": "typography-list",
199
+ "data-list-type": "unordered",
200
+ className: cn(
201
+ typographyToneVariants({ tone }),
202
+ unorderedListMarkerVariants({ marker }),
203
+ className
204
+ ),
205
+ ...rest,
206
+ children
207
+ }
208
+ );
209
+ }
210
+ ListBase.displayName = "List";
211
+ function ListItemBase(props) {
212
+ const { className, children, ref, ...rest } = props;
213
+ return /* @__PURE__ */ jsx(
214
+ "li",
215
+ {
216
+ ref,
217
+ "data-slot": "typography-list-item",
218
+ className: cn("leading-relaxed", className),
219
+ ...rest,
220
+ children
221
+ }
222
+ );
223
+ }
224
+ ListItemBase.displayName = "ListItem";
225
+ var ListItem = ListItemBase;
226
+ function ListRoot(props) {
227
+ return /* @__PURE__ */ jsx(ListBase, { ...props });
228
+ }
229
+ var List = Object.assign(ListRoot, {
230
+ Item: ListItem
231
+ });
232
+ ListRoot.displayName = "List";
233
+ var BlockquoteBase = (props) => {
234
+ const {
235
+ tone,
236
+ attribution,
237
+ className,
238
+ children,
239
+ ref,
240
+ ...rest
241
+ } = props;
242
+ return /* @__PURE__ */ jsxs(
243
+ "blockquote",
244
+ {
245
+ ref,
246
+ "data-slot": "typography-blockquote",
247
+ className: cn(
248
+ typographyToneVariants({ tone }),
249
+ "border-l-4 py-1 pl-4 italic",
250
+ className
251
+ ),
252
+ ...rest,
253
+ children: [
254
+ /* @__PURE__ */ jsx("div", { className: "space-y-2 leading-relaxed", children }),
255
+ attribution ? /* @__PURE__ */ jsx("footer", { className: "mt-3 text-sm not-italic", children: /* @__PURE__ */ jsx("cite", { children: attribution }) }) : null
256
+ ]
257
+ }
258
+ );
259
+ };
260
+ BlockquoteBase.displayName = "Blockquote";
261
+ var Blockquote = (props) => {
262
+ return /* @__PURE__ */ jsx(BlockquoteBase, { ...props });
263
+ };
264
+ Blockquote.displayName = "Blockquote";
265
+ var InlineCodeBase = (props) => {
266
+ const { tone, className, children, ref, ...rest } = props;
267
+ return /* @__PURE__ */ jsx(
268
+ "code",
269
+ {
270
+ ref,
271
+ "data-slot": "typography-inline-code",
272
+ className: cn(
273
+ typographyToneVariants({ tone }),
274
+ "rounded-md border border-white/10 bg-white/6 px-1.5 py-0.5 font-mono text-[0.925em] font-normal",
275
+ className
276
+ ),
277
+ ...rest,
278
+ children
279
+ }
280
+ );
281
+ };
282
+ InlineCodeBase.displayName = "InlineCode";
283
+ var InlineCode = (props) => {
284
+ return /* @__PURE__ */ jsx(InlineCodeBase, { ...props });
285
+ };
286
+ InlineCode.displayName = "InlineCode";
287
+ var CodeBlockBase = (props) => {
288
+ const {
289
+ tone,
290
+ language,
291
+ className,
292
+ children,
293
+ ref,
294
+ ...rest
295
+ } = props;
296
+ const ariaLabel = language ? `Code sample (${language})` : "Code sample";
297
+ return /* @__PURE__ */ jsx(
298
+ "pre",
299
+ {
300
+ ref,
301
+ "data-slot": "typography-code-block",
302
+ "aria-label": ariaLabel,
303
+ className: cn(
304
+ typographyToneVariants({ tone }),
305
+ "overflow-x-auto rounded-xl border border-white/10 bg-slate-950/80 p-4 text-sm leading-relaxed shadow-inner shadow-slate-950/40",
306
+ className
307
+ ),
308
+ ...rest,
309
+ children: /* @__PURE__ */ jsx("code", { className: "font-mono text-[0.95em]", children })
310
+ }
311
+ );
312
+ };
313
+ CodeBlockBase.displayName = "CodeBlock";
314
+ var CodeBlock = (props) => {
315
+ return /* @__PURE__ */ jsx(CodeBlockBase, { ...props });
316
+ };
317
+ CodeBlock.displayName = "CodeBlock";
318
+
319
+ export { Blockquote, CodeBlock, Heading, InlineCode, List, ListItem, Text, headingLevelVariants, orderedListVariants, textSizeVariants, typographyToneVariants, unorderedListMarkerVariants };
320
+ //# sourceMappingURL=typography.mjs.map
321
+ //# sourceMappingURL=typography.mjs.map