@shipsite.dev/components 0.2.13 → 0.2.15
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/components.json +11 -85
- package/dist/blog/BlogArticle.d.ts +9 -1
- package/dist/blog/BlogArticle.d.ts.map +1 -1
- package/dist/blog/BlogArticle.js +3 -2
- package/dist/blog/BlogArticle.js.map +1 -1
- package/dist/blog/BlogArticleClient.d.ts +15 -0
- package/dist/blog/BlogArticleClient.d.ts.map +1 -0
- package/dist/blog/BlogArticleClient.js +106 -0
- package/dist/blog/BlogArticleClient.js.map +1 -0
- package/dist/content/ContentPage.d.ts +14 -0
- package/dist/content/ContentPage.d.ts.map +1 -0
- package/dist/{legal/LegalPage.js → content/ContentPage.js} +3 -3
- package/dist/content/ContentPage.js.map +1 -0
- package/dist/index.d.ts +2 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -9
- package/dist/index.js.map +1 -1
- package/dist/marketing/CalloutCard.d.ts.map +1 -1
- package/dist/marketing/CalloutCard.js +4 -4
- package/dist/marketing/CalloutCard.js.map +1 -1
- package/dist/marketing/CardGrid.d.ts.map +1 -1
- package/dist/marketing/CardGrid.js +2 -2
- package/dist/marketing/CardGrid.js.map +1 -1
- package/dist/ui/prose.d.ts +16 -0
- package/dist/ui/prose.d.ts.map +1 -0
- package/dist/ui/prose.js +44 -0
- package/dist/ui/prose.js.map +1 -0
- package/dist/ui/table.js +1 -1
- package/dist/ui/table.js.map +1 -1
- package/package.json +1 -1
- package/src/blog/BlogArticle.tsx +14 -4
- package/src/blog/BlogArticleClient.tsx +212 -0
- package/src/{legal/LegalPage.tsx → content/ContentPage.tsx} +4 -4
- package/src/index.ts +5 -9
- package/src/marketing/CalloutCard.tsx +6 -4
- package/src/marketing/CardGrid.tsx +7 -3
- package/src/ui/prose.tsx +201 -0
- package/src/ui/table.tsx +1 -1
- package/dist/blog/BlogCTA.d.ts +0 -8
- package/dist/blog/BlogCTA.d.ts.map +0 -1
- package/dist/blog/BlogCTA.js +0 -6
- package/dist/blog/BlogCTA.js.map +0 -1
- package/dist/blog/BlogCTABanner.d.ts +0 -9
- package/dist/blog/BlogCTABanner.d.ts.map +0 -1
- package/dist/blog/BlogCTABanner.js +0 -7
- package/dist/blog/BlogCTABanner.js.map +0 -1
- package/dist/blog/BlogFAQ.d.ts +0 -10
- package/dist/blog/BlogFAQ.d.ts.map +0 -1
- package/dist/blog/BlogFAQ.js +0 -7
- package/dist/blog/BlogFAQ.js.map +0 -1
- package/dist/blog/BlogIntro.d.ts +0 -5
- package/dist/blog/BlogIntro.d.ts.map +0 -1
- package/dist/blog/BlogIntro.js +0 -5
- package/dist/blog/BlogIntro.js.map +0 -1
- package/dist/blog/BlogTable.d.ts +0 -7
- package/dist/blog/BlogTable.d.ts.map +0 -1
- package/dist/blog/BlogTable.js +0 -5
- package/dist/blog/BlogTable.js.map +0 -1
- package/dist/blog/BlogTip.d.ts +0 -8
- package/dist/blog/BlogTip.d.ts.map +0 -1
- package/dist/blog/BlogTip.js +0 -5
- package/dist/blog/BlogTip.js.map +0 -1
- package/dist/blog/StartFreeNowCTA.d.ts +0 -9
- package/dist/blog/StartFreeNowCTA.d.ts.map +0 -1
- package/dist/blog/StartFreeNowCTA.js +0 -7
- package/dist/blog/StartFreeNowCTA.js.map +0 -1
- package/dist/legal/LegalPage.d.ts +0 -14
- package/dist/legal/LegalPage.d.ts.map +0 -1
- package/dist/legal/LegalPage.js.map +0 -1
- package/src/blog/BlogCTA.tsx +0 -19
- package/src/blog/BlogCTABanner.tsx +0 -25
- package/src/blog/BlogFAQ.tsx +0 -32
- package/src/blog/BlogIntro.tsx +0 -9
- package/src/blog/BlogTable.tsx +0 -27
- package/src/blog/BlogTip.tsx +0 -15
- package/src/blog/StartFreeNowCTA.tsx +0 -29
package/components.json
CHANGED
|
@@ -420,81 +420,7 @@
|
|
|
420
420
|
{ "name": "children", "type": "React.ReactNode", "required": true, "description": "Article content (headings, paragraphs, blog components)." },
|
|
421
421
|
{ "name": "contentFolder", "type": "string", "required": false, "description": "Content folder identifier for the blog article." }
|
|
422
422
|
],
|
|
423
|
-
"example": "<BlogArticle>\n
|
|
424
|
-
},
|
|
425
|
-
{
|
|
426
|
-
"name": "BlogIntro",
|
|
427
|
-
"category": "blog",
|
|
428
|
-
"description": "Styled intro paragraph block for the opening of a blog article. Renders children in a larger, muted font with relaxed line-height.",
|
|
429
|
-
"props": [
|
|
430
|
-
{ "name": "children", "type": "React.ReactNode", "required": true, "description": "Introductory paragraph content." }
|
|
431
|
-
],
|
|
432
|
-
"example": "<BlogIntro>\n This article explores how to improve your team's productivity with modern tools.\n</BlogIntro>"
|
|
433
|
-
},
|
|
434
|
-
{
|
|
435
|
-
"name": "BlogCTA",
|
|
436
|
-
"category": "blog",
|
|
437
|
-
"description": "Inline call-to-action block for blog articles. Displays a centered title and button within a glass card.",
|
|
438
|
-
"props": [
|
|
439
|
-
{ "name": "title", "type": "string", "required": true, "description": "CTA heading text." },
|
|
440
|
-
{ "name": "buttonText", "type": "string", "required": true, "description": "Text displayed on the button." },
|
|
441
|
-
{ "name": "buttonHref", "type": "string", "required": true, "description": "URL the button links to." }
|
|
442
|
-
],
|
|
443
|
-
"example": "<BlogCTA\n title=\"Try it free today\"\n buttonText=\"Get Started\"\n buttonHref=\"/signup\"\n/>"
|
|
444
|
-
},
|
|
445
|
-
{
|
|
446
|
-
"name": "BlogCTABanner",
|
|
447
|
-
"category": "blog",
|
|
448
|
-
"description": "Prominent call-to-action banner for blog articles with a glow effect, title, description, and button. Designed as a mid-article conversion element.",
|
|
449
|
-
"props": [
|
|
450
|
-
{ "name": "title", "type": "string", "required": true, "description": "Banner headline text." },
|
|
451
|
-
{ "name": "description", "type": "string", "required": true, "description": "Supporting description text." },
|
|
452
|
-
{ "name": "buttonText", "type": "string", "required": true, "description": "Text displayed on the button." },
|
|
453
|
-
{ "name": "buttonLink", "type": "string", "required": true, "description": "URL the button links to." }
|
|
454
|
-
],
|
|
455
|
-
"example": "<BlogCTABanner\n title=\"Start for free\"\n description=\"No credit card required. Cancel anytime.\"\n buttonText=\"Get Started\"\n buttonLink=\"/signup\"\n/>"
|
|
456
|
-
},
|
|
457
|
-
{
|
|
458
|
-
"name": "BlogFAQ",
|
|
459
|
-
"category": "blog",
|
|
460
|
-
"description": "FAQ accordion section for blog articles. Renders a titled list of question/answer pairs as collapsible accordion items.",
|
|
461
|
-
"props": [
|
|
462
|
-
{ "name": "title", "type": "string", "required": true, "description": "FAQ section heading (e.g. 'Frequently Asked Questions')." },
|
|
463
|
-
{ "name": "items", "type": "Array<{ question: string; answer: string }>", "required": true, "description": "Array of FAQ items, each with a question and answer string." }
|
|
464
|
-
],
|
|
465
|
-
"example": "<BlogFAQ\n title=\"FAQ\"\n items={[\n { question: \"Is there a free plan?\", answer: \"Yes, our free plan is available forever.\" },\n { question: \"Can I cancel anytime?\", answer: \"Absolutely, no contracts.\" }\n ]}\n/>"
|
|
466
|
-
},
|
|
467
|
-
{
|
|
468
|
-
"name": "BlogTable",
|
|
469
|
-
"category": "blog",
|
|
470
|
-
"description": "Responsive data table for blog articles with styled headers and rows. Renders inside a bordered, scrollable container.",
|
|
471
|
-
"props": [
|
|
472
|
-
{ "name": "headers", "type": "string[]", "required": true, "description": "Array of column header strings." },
|
|
473
|
-
{ "name": "rows", "type": "string[][]", "required": true, "description": "Array of row arrays, where each inner array contains cell strings matching the headers." }
|
|
474
|
-
],
|
|
475
|
-
"example": "<BlogTable\n headers={[\"Plan\", \"Price\", \"Users\"]}\n rows={[\n [\"Free\", \"$0\", \"Up to 5\"],\n [\"Pro\", \"$29/mo\", \"Unlimited\"]\n ]}\n/>"
|
|
476
|
-
},
|
|
477
|
-
{
|
|
478
|
-
"name": "BlogTip",
|
|
479
|
-
"category": "blog",
|
|
480
|
-
"description": "Highlighted tip/callout box for blog articles with a green accent. Displays a title and rich content for actionable advice.",
|
|
481
|
-
"props": [
|
|
482
|
-
{ "name": "title", "type": "string", "required": false, "description": "Tip heading text. Defaults to 'Tip'." },
|
|
483
|
-
{ "name": "children", "type": "React.ReactNode", "required": true, "description": "Tip content." }
|
|
484
|
-
],
|
|
485
|
-
"example": "<BlogTip title=\"Pro Tip\">\n Use keyboard shortcuts to navigate faster.\n</BlogTip>"
|
|
486
|
-
},
|
|
487
|
-
{
|
|
488
|
-
"name": "StartFreeNowCTA",
|
|
489
|
-
"category": "blog",
|
|
490
|
-
"description": "Feature-rich CTA block for blog articles with a title, bullet-point checklist with check icons, and a primary button.",
|
|
491
|
-
"props": [
|
|
492
|
-
{ "name": "title", "type": "string", "required": true, "description": "CTA heading text." },
|
|
493
|
-
{ "name": "bullets", "type": "string[]", "required": true, "description": "Array of benefit strings displayed as a checklist." },
|
|
494
|
-
{ "name": "buttonText", "type": "string", "required": true, "description": "Text displayed on the button." },
|
|
495
|
-
{ "name": "buttonHref", "type": "string", "required": true, "description": "URL the button links to." }
|
|
496
|
-
],
|
|
497
|
-
"example": "<StartFreeNowCTA\n title=\"Ready to get started?\"\n bullets={[\"No credit card required\", \"Free forever plan\", \"Cancel anytime\"]}\n buttonText=\"Start Free\"\n buttonHref=\"/signup\"\n/>"
|
|
423
|
+
"example": "<BlogArticle>\n ## Section heading\n Content here...\n</BlogArticle>"
|
|
498
424
|
},
|
|
499
425
|
{
|
|
500
426
|
"name": "BlogIndex",
|
|
@@ -508,25 +434,25 @@
|
|
|
508
434
|
"example": "<BlogIndex title=\"Blog\" description=\"Latest articles and insights.\">\n {/* Blog post cards rendered here */}\n</BlogIndex>"
|
|
509
435
|
},
|
|
510
436
|
{
|
|
511
|
-
"name": "
|
|
512
|
-
"category": "
|
|
513
|
-
"description": "
|
|
437
|
+
"name": "ContentSection",
|
|
438
|
+
"category": "content",
|
|
439
|
+
"description": "Titled section with prose-style formatting for paragraphs and lists. Used as a child of ContentPage for structured text pages (legal, about, FAQ, etc.).",
|
|
514
440
|
"props": [
|
|
515
|
-
{ "name": "title", "type": "string", "required": true, "description": "Section heading (e.g. '1. Data Collection')." },
|
|
441
|
+
{ "name": "title", "type": "string", "required": true, "description": "Section heading (e.g. '1. Data Collection', 'Our Mission')." },
|
|
516
442
|
{ "name": "children", "type": "React.ReactNode", "required": true, "description": "Section content (paragraphs, lists, etc.)." }
|
|
517
443
|
],
|
|
518
|
-
"example": "<
|
|
444
|
+
"example": "<ContentSection title=\"Our Mission\">\n We build tools that help developers ship faster.\n</ContentSection>"
|
|
519
445
|
},
|
|
520
446
|
{
|
|
521
|
-
"name": "
|
|
522
|
-
"category": "
|
|
523
|
-
"description": "Top-level wrapper for
|
|
447
|
+
"name": "ContentPage",
|
|
448
|
+
"category": "content",
|
|
449
|
+
"description": "Top-level wrapper for text-heavy pages (legal, about, contact, etc.). Renders a narrow, centered container with a title and optional last-updated date.",
|
|
524
450
|
"props": [
|
|
525
451
|
{ "name": "title", "type": "string", "required": true, "description": "Page title displayed as an h1." },
|
|
526
452
|
{ "name": "lastUpdated", "type": "string", "required": false, "description": "Date string displayed below the title (e.g. '2024-01-15')." },
|
|
527
|
-
{ "name": "children", "type": "React.ReactNode", "required": true, "description": "
|
|
453
|
+
{ "name": "children", "type": "React.ReactNode", "required": true, "description": "ContentSection children and other content." }
|
|
528
454
|
],
|
|
529
|
-
"example": "<
|
|
455
|
+
"example": "<ContentPage title=\"About Us\">\n <ContentSection title=\"Our Mission\">\n We build tools that help developers ship faster.\n </ContentSection>\n</ContentPage>"
|
|
530
456
|
}
|
|
531
457
|
]
|
|
532
458
|
}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
interface BlogArticleAuthor {
|
|
3
|
+
name: string;
|
|
4
|
+
role: string;
|
|
5
|
+
image: string;
|
|
6
|
+
}
|
|
2
7
|
interface BlogArticleProps {
|
|
3
8
|
children: React.ReactNode;
|
|
4
9
|
contentFolder?: string;
|
|
10
|
+
date?: string;
|
|
11
|
+
readingTime?: number;
|
|
12
|
+
author?: BlogArticleAuthor;
|
|
5
13
|
}
|
|
6
|
-
export declare function BlogArticle({ children }: BlogArticleProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare function BlogArticle({ children, author, date, readingTime }: BlogArticleProps): import("react/jsx-runtime").JSX.Element;
|
|
7
15
|
export {};
|
|
8
16
|
//# sourceMappingURL=BlogArticle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlogArticle.d.ts","sourceRoot":"","sources":["../../src/blog/BlogArticle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"BlogArticle.d.ts","sourceRoot":"","sources":["../../src/blog/BlogArticle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,gBAAgB;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,gBAAgB,2CAMpF"}
|
package/dist/blog/BlogArticle.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import { BlogArticleClient } from './BlogArticleClient';
|
|
3
|
+
export function BlogArticle({ children, author, date, readingTime }) {
|
|
4
|
+
return (_jsx(BlogArticleClient, { author: author, date: date, readingTime: readingTime, children: children }));
|
|
4
5
|
}
|
|
5
6
|
//# sourceMappingURL=BlogArticle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlogArticle.js","sourceRoot":"","sources":["../../src/blog/BlogArticle.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"BlogArticle.js","sourceRoot":"","sources":["../../src/blog/BlogArticle.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAgBxD,MAAM,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAoB;IACnF,OAAO,CACL,KAAC,iBAAiB,IAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,YACpE,QAAQ,GACS,CACrB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface BlogArticleAuthor {
|
|
3
|
+
name: string;
|
|
4
|
+
role: string;
|
|
5
|
+
image: string;
|
|
6
|
+
}
|
|
7
|
+
interface BlogArticleClientProps {
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
author?: BlogArticleAuthor;
|
|
10
|
+
date?: string;
|
|
11
|
+
readingTime?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function BlogArticleClient({ children, author, date, readingTime, }: BlogArticleClientProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=BlogArticleClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlogArticleClient.d.ts","sourceRoot":"","sources":["../../src/blog/BlogArticleClient.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAC;AASxE,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,WAAW,GACZ,EAAE,sBAAsB,2CAsLxB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { cn } from '../lib/utils';
|
|
5
|
+
export function BlogArticleClient({ children, author, date, readingTime, }) {
|
|
6
|
+
const contentRef = useRef(null);
|
|
7
|
+
const [tocItems, setTocItems] = useState([]);
|
|
8
|
+
const [activeId, setActiveId] = useState('');
|
|
9
|
+
const [activeH2Id, setActiveH2Id] = useState('');
|
|
10
|
+
// Extract headings from rendered content
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
const el = contentRef.current;
|
|
13
|
+
if (!el)
|
|
14
|
+
return;
|
|
15
|
+
const rafId = requestAnimationFrame(() => {
|
|
16
|
+
const headings = el.querySelectorAll('h2, h3');
|
|
17
|
+
const items = [];
|
|
18
|
+
headings.forEach((heading) => {
|
|
19
|
+
const title = heading.textContent?.trim() || '';
|
|
20
|
+
if (!title || heading.hasAttribute('data-toc-exclude'))
|
|
21
|
+
return;
|
|
22
|
+
if (!heading.id) {
|
|
23
|
+
heading.id =
|
|
24
|
+
title
|
|
25
|
+
.toLowerCase()
|
|
26
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
27
|
+
.replace(/(^-|-$)/g, '') || '';
|
|
28
|
+
}
|
|
29
|
+
items.push({
|
|
30
|
+
id: heading.id,
|
|
31
|
+
title,
|
|
32
|
+
level: heading.tagName === 'H2' ? 2 : 3,
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
setTocItems(items);
|
|
36
|
+
});
|
|
37
|
+
return () => cancelAnimationFrame(rafId);
|
|
38
|
+
}, [children]);
|
|
39
|
+
// IntersectionObserver for active heading tracking
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
const el = contentRef.current;
|
|
42
|
+
if (!el || tocItems.length === 0)
|
|
43
|
+
return;
|
|
44
|
+
const observer = new IntersectionObserver((entries) => {
|
|
45
|
+
for (const entry of entries) {
|
|
46
|
+
if (entry.isIntersecting) {
|
|
47
|
+
const id = entry.target.id;
|
|
48
|
+
setActiveId(id);
|
|
49
|
+
const tocItem = tocItems.find((t) => t.id === id);
|
|
50
|
+
if (tocItem?.level === 2) {
|
|
51
|
+
setActiveH2Id(id);
|
|
52
|
+
}
|
|
53
|
+
else if (tocItem?.level === 3) {
|
|
54
|
+
const idx = tocItems.indexOf(tocItem);
|
|
55
|
+
for (let i = idx - 1; i >= 0; i--) {
|
|
56
|
+
if (tocItems[i].level === 2) {
|
|
57
|
+
setActiveH2Id(tocItems[i].id);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}, { rootMargin: '-80px 0px -60% 0px', threshold: 0.1 });
|
|
65
|
+
tocItems.forEach((item) => {
|
|
66
|
+
const h = document.getElementById(item.id);
|
|
67
|
+
if (h)
|
|
68
|
+
observer.observe(h);
|
|
69
|
+
});
|
|
70
|
+
return () => observer.disconnect();
|
|
71
|
+
}, [tocItems]);
|
|
72
|
+
// Smooth scroll to heading
|
|
73
|
+
const scrollToHeading = useCallback((id) => {
|
|
74
|
+
const el = document.getElementById(id);
|
|
75
|
+
if (el) {
|
|
76
|
+
const top = el.getBoundingClientRect().top + window.scrollY - 100;
|
|
77
|
+
window.scrollTo({ top, behavior: 'smooth' });
|
|
78
|
+
}
|
|
79
|
+
}, []);
|
|
80
|
+
const formattedDate = date
|
|
81
|
+
? new Date(date + 'T00:00:00').toLocaleDateString(undefined, {
|
|
82
|
+
year: 'numeric',
|
|
83
|
+
month: 'long',
|
|
84
|
+
day: 'numeric',
|
|
85
|
+
})
|
|
86
|
+
: '';
|
|
87
|
+
return (_jsx("article", { className: "py-12 md:py-20", children: _jsx("div", { className: "mx-auto w-full max-w-[76rem] px-[clamp(1rem,3vw,3rem)]", children: _jsxs("div", { className: "flex gap-10 lg:gap-16", children: [_jsx("div", { ref: contentRef, className: "blog-content min-w-0 flex-1 max-w-3xl", children: children }), _jsx("aside", { className: "hidden lg:block w-64 shrink-0", children: _jsxs("div", { className: "sticky top-24 flex flex-col gap-6", children: [tocItems.length > 0 && (_jsx("nav", { children: _jsx("ul", { className: "flex flex-col", children: tocItems.map((item) => {
|
|
88
|
+
const isActive = activeId === item.id;
|
|
89
|
+
if (item.level === 3) {
|
|
90
|
+
const idx = tocItems.indexOf(item);
|
|
91
|
+
let parentH2Id = '';
|
|
92
|
+
for (let i = idx - 1; i >= 0; i--) {
|
|
93
|
+
if (tocItems[i].level === 2) {
|
|
94
|
+
parentH2Id = tocItems[i].id;
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (parentH2Id !== activeH2Id)
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
return (_jsx("li", { className: item.level === 3 ? 'pl-3' : '', children: _jsxs("button", { onClick: () => scrollToHeading(item.id), className: cn('my-0.5 flex items-center gap-2 w-full cursor-pointer text-left', isActive
|
|
102
|
+
? 'text-foreground font-medium'
|
|
103
|
+
: 'text-muted-foreground hover:text-foreground'), children: [_jsx("span", { className: cn('w-3 h-px shrink-0 transition-colors', isActive ? 'bg-primary' : 'bg-border') }), _jsx("span", { className: "text-sm leading-snug line-clamp-1", children: item.title })] }) }, item.id));
|
|
104
|
+
}) }) })), author && (_jsxs(_Fragment, { children: [tocItems.length > 0 && _jsx("hr", { className: "border-border" }), _jsxs("div", { className: "flex flex-col gap-3", children: [author.image && (_jsx("img", { src: author.image, alt: author.name, className: "w-12 h-12 rounded-full object-cover" })), _jsxs("div", { children: [_jsx("p", { className: "text-sm font-medium text-foreground", children: author.name }), author.role && (_jsx("p", { className: "text-xs text-muted-foreground", children: author.role }))] })] })] })), (formattedDate || readingTime) && (_jsxs(_Fragment, { children: [(tocItems.length > 0 || author) && !author && (_jsx("hr", { className: "border-border" })), _jsxs("div", { className: "flex flex-col gap-1 text-xs text-muted-foreground", children: [formattedDate && _jsx("span", { children: formattedDate }), readingTime ? _jsxs("span", { children: [readingTime, " min read"] }) : null] })] }))] }) })] }) }) }));
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=BlogArticleClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlogArticleClient.js","sourceRoot":"","sources":["../../src/blog/BlogArticleClient.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface ContentSectionProps {
|
|
3
|
+
title: string;
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
}
|
|
6
|
+
export declare function ContentSection({ title, children }: ContentSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
interface ContentPageProps {
|
|
8
|
+
title: string;
|
|
9
|
+
lastUpdated?: string;
|
|
10
|
+
children: React.ReactNode;
|
|
11
|
+
}
|
|
12
|
+
export declare function ContentPage({ title, lastUpdated, children }: ContentPageProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=ContentPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentPage.d.ts","sourceRoot":"","sources":["../../src/content/ContentPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAStE;AAED,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,gBAAgB,2CAU7E"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
export function
|
|
2
|
+
export function ContentSection({ title, children }) {
|
|
3
3
|
return (_jsxs("div", { className: "mb-8", children: [_jsx("h2", { className: "text-xl font-bold text-foreground mb-4", children: title }), _jsx("div", { className: "text-muted-foreground text-sm leading-relaxed [&>p]:mb-3 [&>ul]:list-disc [&>ul]:pl-5 [&>ul]:mb-3", children: children })] }));
|
|
4
4
|
}
|
|
5
|
-
export function
|
|
5
|
+
export function ContentPage({ title, lastUpdated, children }) {
|
|
6
6
|
return (_jsx("section", { className: "py-12 md:py-20", children: _jsxs("div", { className: "container-main max-w-3xl", children: [_jsx("h1", { className: "text-3xl md:text-4xl font-bold text-foreground mb-2", children: title }), lastUpdated && _jsxs("p", { className: "text-sm text-muted-foreground mb-8", children: ["Last updated: ", lastUpdated] }), children] }) }));
|
|
7
7
|
}
|
|
8
|
-
//# sourceMappingURL=
|
|
8
|
+
//# sourceMappingURL=ContentPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentPage.js","sourceRoot":"","sources":["../../src/content/ContentPage.tsx"],"names":[],"mappings":";AAOA,MAAM,UAAU,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAuB;IACrE,OAAO,CACL,eAAK,SAAS,EAAC,MAAM,aACnB,aAAI,SAAS,EAAC,wCAAwC,YAAE,KAAK,GAAM,EACnE,cAAK,SAAS,EAAC,mGAAmG,YAC/G,QAAQ,GACL,IACF,CACP,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAoB;IAC5E,OAAO,CACL,kBAAS,SAAS,EAAC,gBAAgB,YACjC,eAAK,SAAS,EAAC,0BAA0B,aACvC,aAAI,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAM,EAC/E,WAAW,IAAI,aAAG,SAAS,EAAC,oCAAoC,+BAAgB,WAAW,IAAK,EAChG,QAAQ,IACL,GACE,CACX,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -25,13 +25,7 @@ export { Carousel, CarouselItem } from './marketing/Carousel';
|
|
|
25
25
|
export { TabsSection, TabItem } from './marketing/TabsSection';
|
|
26
26
|
export { BlogArticle } from './blog/BlogArticle';
|
|
27
27
|
export { BlogIndex } from './blog/BlogIndex';
|
|
28
|
-
export { BlogCTA } from './blog/BlogCTA';
|
|
29
|
-
export { BlogCTABanner } from './blog/BlogCTABanner';
|
|
30
|
-
export { BlogFAQ } from './blog/BlogFAQ';
|
|
31
|
-
export { BlogIntro } from './blog/BlogIntro';
|
|
32
|
-
export { BlogTable } from './blog/BlogTable';
|
|
33
|
-
export { BlogTip } from './blog/BlogTip';
|
|
34
|
-
export { StartFreeNowCTA } from './blog/StartFreeNowCTA';
|
|
35
28
|
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, } from './ui/table';
|
|
36
|
-
export {
|
|
29
|
+
export { ProseH2, ProseH3, ProseH4, ProseP, ProseA, ProseUl, ProseOl, ProseLi, ProseBlockquote, ProsePre, ProseCode, ProseHr, ProseImg } from './ui/prose';
|
|
30
|
+
export { ContentPage, ContentSection } from './content/ContentPage';
|
|
37
31
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGvE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGvE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3J,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -30,15 +30,10 @@ export { TabsSection, TabItem } from './marketing/TabsSection';
|
|
|
30
30
|
// Blog
|
|
31
31
|
export { BlogArticle } from './blog/BlogArticle';
|
|
32
32
|
export { BlogIndex } from './blog/BlogIndex';
|
|
33
|
-
export { BlogCTA } from './blog/BlogCTA';
|
|
34
|
-
export { BlogCTABanner } from './blog/BlogCTABanner';
|
|
35
|
-
export { BlogFAQ } from './blog/BlogFAQ';
|
|
36
|
-
export { BlogIntro } from './blog/BlogIntro';
|
|
37
|
-
export { BlogTable } from './blog/BlogTable';
|
|
38
|
-
export { BlogTip } from './blog/BlogTip';
|
|
39
|
-
export { StartFreeNowCTA } from './blog/StartFreeNowCTA';
|
|
40
33
|
// UI primitives
|
|
41
34
|
export { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption, } from './ui/table';
|
|
42
|
-
//
|
|
43
|
-
export {
|
|
35
|
+
// Prose (Markdown element overrides)
|
|
36
|
+
export { ProseH2, ProseH3, ProseH4, ProseP, ProseA, ProseUl, ProseOl, ProseLi, ProseBlockquote, ProsePre, ProseCode, ProseHr, ProseImg } from './ui/prose';
|
|
37
|
+
// Content
|
|
38
|
+
export { ContentPage, ContentSection } from './content/ContentPage';
|
|
44
39
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oDAAoD;AAEpD,UAAU;AACV,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAGpC,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,YAAY;AACZ,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO;AACP,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oDAAoD;AAEpD,UAAU;AACV,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAGpC,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,YAAY;AACZ,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO;AACP,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,gBAAgB;AAChB,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,qCAAqC;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3J,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalloutCard.d.ts","sourceRoot":"","sources":["../../src/marketing/CalloutCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAgB,EAAE,QAAQ,EAAE,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"CalloutCard.d.ts","sourceRoot":"","sources":["../../src/marketing/CalloutCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAgB,EAAE,QAAQ,EAAE,EAAE,gBAAgB,2CAgB/F"}
|
|
@@ -2,10 +2,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { cn } from '../lib/utils';
|
|
3
3
|
export function CalloutCard({ title, description, variant = 'info', children }) {
|
|
4
4
|
const variantStyles = {
|
|
5
|
-
info: 'bg-primary/5 border-primary/20',
|
|
6
|
-
success: 'bg-emerald-
|
|
7
|
-
warning: 'bg-amber-
|
|
5
|
+
info: 'bg-primary/5 border-primary/20 dark:bg-primary/10',
|
|
6
|
+
success: 'bg-emerald-500/10 border-emerald-500/20',
|
|
7
|
+
warning: 'bg-amber-500/10 border-amber-500/20',
|
|
8
8
|
};
|
|
9
|
-
return (_jsxs("div", { className: cn('rounded-xl border p-6
|
|
9
|
+
return (_jsx("div", { className: cn('mx-auto w-full max-w-[76rem] px-[clamp(1rem,3vw,3rem)] my-8'), children: _jsxs("div", { className: cn('rounded-xl border p-6', variantStyles[variant]), children: [_jsx("h3", { className: "font-semibold text-foreground mb-2", children: title }), _jsx("p", { className: "text-sm text-muted-foreground", children: description }), children] }) }));
|
|
10
10
|
}
|
|
11
11
|
//# sourceMappingURL=CalloutCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalloutCard.js","sourceRoot":"","sources":["../../src/marketing/CalloutCard.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AASlC,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,EAAE,QAAQ,EAAoB;IAC9F,MAAM,aAAa,GAAG;QACpB,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"CalloutCard.js","sourceRoot":"","sources":["../../src/marketing/CalloutCard.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AASlC,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,EAAE,QAAQ,EAAoB;IAC9F,MAAM,aAAa,GAAG;QACpB,IAAI,EAAE,mDAAmD;QACzD,OAAO,EAAE,yCAAyC;QAClD,OAAO,EAAE,qCAAqC;KAC/C,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,6DAA6D,CAAC,YACjF,eAAK,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,aACjE,aAAI,SAAS,EAAC,oCAAoC,YAAE,KAAK,GAAM,EAC/D,YAAG,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAK,EAC7D,QAAQ,IACL,GACA,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardGrid.d.ts","sourceRoot":"","sources":["../../src/marketing/CardGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,iBAAiB,2CASjF;AAED,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,QAAQ,CAAC,EAAE,OAAW,EAAE,QAAQ,EAAE,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"CardGrid.d.ts","sourceRoot":"","sources":["../../src/marketing/CardGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,iBAAiB,2CASjF;AAED,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,QAAQ,CAAC,EAAE,OAAW,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAOhE"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
export function CardGridItem({ title, description, icon, href }) {
|
|
3
3
|
const Wrapper = href ? 'a' : 'div';
|
|
4
|
-
return (_jsxs(Wrapper, { ...(href ? { href } : {}), className: "block p-6 rounded-xl glass-1 hover:glass-2 transition-all", children: [icon && _jsx("div", { className: "mb-3 text-primary", children: icon }), _jsx("h3", { className: "font-semibold text-foreground mb-2", children: title }), _jsx("p", { className: "text-sm text-muted-foreground", children: description })] }));
|
|
4
|
+
return (_jsxs(Wrapper, { ...(href ? { href } : {}), className: "block p-6 rounded-xl glass-1 hover:glass-2 transition-all focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring", children: [icon && _jsx("div", { className: "mb-3 text-primary", children: icon }), _jsx("h3", { className: "font-semibold tracking-tight text-foreground mb-2", children: title }), _jsx("p", { className: "text-sm text-muted-foreground", children: description })] }));
|
|
5
5
|
}
|
|
6
6
|
export function CardGrid({ columns = 3, children }) {
|
|
7
7
|
const gridCols = { 2: 'md:grid-cols-2', 3: 'md:grid-cols-3', 4: 'md:grid-cols-2 lg:grid-cols-4' };
|
|
8
|
-
return _jsx("div", { className: `grid grid-cols-1 ${gridCols[columns]} gap-6
|
|
8
|
+
return (_jsx("div", { className: "mx-auto w-full max-w-[76rem] px-[clamp(1rem,3vw,3rem)] py-8", children: _jsx("div", { className: `grid grid-cols-1 ${gridCols[columns]} gap-6`, children: children }) }));
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=CardGrid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardGrid.js","sourceRoot":"","sources":["../../src/marketing/CardGrid.tsx"],"names":[],"mappings":";AASA,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAqB;IAChF,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IACnC,OAAO,CACL,MAAC,OAAO,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"CardGrid.js","sourceRoot":"","sources":["../../src/marketing/CardGrid.tsx"],"names":[],"mappings":";AASA,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAqB;IAChF,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IACnC,OAAO,CACL,MAAC,OAAO,OAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAC,qIAAqI,aACjL,IAAI,IAAI,cAAK,SAAS,EAAC,mBAAmB,YAAE,IAAI,GAAO,EACxD,aAAI,SAAS,EAAC,mDAAmD,YAAE,KAAK,GAAM,EAC9E,YAAG,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAK,IACtD,CACX,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiB;IAC/D,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,+BAA+B,EAAE,CAAC;IAClG,OAAO,CACL,cAAK,SAAS,EAAC,6DAA6D,YAC1E,cAAK,SAAS,EAAE,oBAAoB,QAAQ,CAAC,OAAO,CAAC,QAAQ,YAAG,QAAQ,GAAO,GAC3E,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
declare function ProseH2({ className, ...props }: React.ComponentProps<"h2">): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
declare function ProseH3({ className, ...props }: React.ComponentProps<"h3">): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function ProseH4({ className, ...props }: React.ComponentProps<"h4">): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare function ProseP({ className, ...props }: React.ComponentProps<"p">): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
declare function ProseA({ className, ...props }: React.ComponentProps<"a">): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare function ProseUl({ className, ...props }: React.ComponentProps<"ul">): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare function ProseOl({ className, ...props }: React.ComponentProps<"ol">): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
declare function ProseLi({ className, ...props }: React.ComponentProps<"li">): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
declare function ProseBlockquote({ className, ...props }: React.ComponentProps<"blockquote">): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
declare function ProsePre({ className, ...props }: React.ComponentProps<"pre">): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
declare function ProseCode({ className, ...props }: React.ComponentProps<"code">): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
declare function ProseHr({ className, ...props }: React.ComponentProps<"hr">): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
declare function ProseImg({ className, alt, ...props }: React.ComponentProps<"img">): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export { ProseH2, ProseH3, ProseH4, ProseP, ProseA, ProseUl, ProseOl, ProseLi, ProseBlockquote, ProsePre, ProseCode, ProseHr, ProseImg, };
|
|
16
|
+
//# sourceMappingURL=prose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prose.d.ts","sourceRoot":"","sources":["../../src/ui/prose.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,iBAAS,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAYnE;AAED,iBAAS,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAYnE;AAED,iBAAS,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAYnE;AAED,iBAAS,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,2CAYjE;AAED,iBAAS,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,2CAWjE;AAED,iBAAS,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAYnE;AAED,iBAAS,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAYnE;AAED,iBAAS,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAQnE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,2CAanF;AAED,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAarE;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,2CAWvE;AAED,iBAAS,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,2CAYnE;AAED,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAc1E;AAED,OAAO,EACL,OAAO,EACP,OAAO,EACP,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,eAAe,EACf,QAAQ,EACR,SAAS,EACT,OAAO,EACP,QAAQ,GACT,CAAC"}
|
package/dist/ui/prose.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils";
|
|
3
|
+
const container = "prose-container mx-auto w-full max-w-[76rem] px-[clamp(1rem,3vw,3rem)]";
|
|
4
|
+
function ProseH2({ className, ...props }) {
|
|
5
|
+
return (_jsx("h2", { "data-slot": "prose-h2", className: cn(container, "mt-10 mb-4 text-[clamp(1.375rem,1.1rem+1.2vw,2.25rem)] font-semibold tracking-tight", className), ...props }));
|
|
6
|
+
}
|
|
7
|
+
function ProseH3({ className, ...props }) {
|
|
8
|
+
return (_jsx("h3", { "data-slot": "prose-h3", className: cn(container, "mt-6 mb-3 text-[clamp(1.125rem,1rem+0.6vw,1.5rem)] font-semibold tracking-tight", className), ...props }));
|
|
9
|
+
}
|
|
10
|
+
function ProseH4({ className, ...props }) {
|
|
11
|
+
return (_jsx("h4", { "data-slot": "prose-h4", className: cn(container, "mt-4 mb-2 text-lg font-semibold", className), ...props }));
|
|
12
|
+
}
|
|
13
|
+
function ProseP({ className, ...props }) {
|
|
14
|
+
return (_jsx("p", { "data-slot": "prose-p", className: cn(container, "my-2 text-base leading-relaxed", className), ...props }));
|
|
15
|
+
}
|
|
16
|
+
function ProseA({ className, ...props }) {
|
|
17
|
+
return (_jsx("a", { "data-slot": "prose-a", className: cn("text-primary font-medium underline hover:no-underline", className), ...props }));
|
|
18
|
+
}
|
|
19
|
+
function ProseUl({ className, ...props }) {
|
|
20
|
+
return (_jsx("ul", { "data-slot": "prose-ul", className: cn(container, "my-3 list-disc pl-7 [&_ul]:my-1 [&_ul]:max-w-none [&_ul]:px-0 [&_ol]:my-1 [&_ol]:max-w-none [&_ol]:px-0", className), ...props }));
|
|
21
|
+
}
|
|
22
|
+
function ProseOl({ className, ...props }) {
|
|
23
|
+
return (_jsx("ol", { "data-slot": "prose-ol", className: cn(container, "my-3 list-decimal pl-7 [&_ul]:my-1 [&_ul]:max-w-none [&_ul]:px-0 [&_ol]:my-1 [&_ol]:max-w-none [&_ol]:px-0", className), ...props }));
|
|
24
|
+
}
|
|
25
|
+
function ProseLi({ className, ...props }) {
|
|
26
|
+
return (_jsx("li", { "data-slot": "prose-li", className: cn("mt-1 leading-relaxed", className), ...props }));
|
|
27
|
+
}
|
|
28
|
+
function ProseBlockquote({ className, ...props }) {
|
|
29
|
+
return (_jsx("div", { className: container, children: _jsx("blockquote", { "data-slot": "prose-blockquote", className: cn("my-6 rounded-xl border-l-4 border-primary bg-muted/50 px-6 py-4 [&>p]:max-w-none [&>p]:px-0 [&>p]:my-1", className), ...props }) }));
|
|
30
|
+
}
|
|
31
|
+
function ProsePre({ className, ...props }) {
|
|
32
|
+
return (_jsx("div", { className: container, children: _jsx("pre", { "data-slot": "prose-pre", className: cn("my-6 overflow-x-auto rounded-xl border border-border bg-card p-4 shadow-sm", className), ...props }) }));
|
|
33
|
+
}
|
|
34
|
+
function ProseCode({ className, ...props }) {
|
|
35
|
+
return (_jsx("code", { "data-slot": "prose-code", className: cn("rounded-md bg-muted px-1.5 py-0.5 font-mono text-[0.875em] [[data-slot=prose-pre]_&]:bg-transparent [[data-slot=prose-pre]_&]:p-0", className), ...props }));
|
|
36
|
+
}
|
|
37
|
+
function ProseHr({ className, ...props }) {
|
|
38
|
+
return (_jsx("hr", { "data-slot": "prose-hr", className: cn(container, "my-8 border-border", className), ...props }));
|
|
39
|
+
}
|
|
40
|
+
function ProseImg({ className, alt, ...props }) {
|
|
41
|
+
return (_jsx("div", { className: container, children: _jsx("img", { "data-slot": "prose-img", className: cn("my-6 rounded-xl border border-border shadow-sm", className), alt: alt, ...props }) }));
|
|
42
|
+
}
|
|
43
|
+
export { ProseH2, ProseH3, ProseH4, ProseP, ProseA, ProseUl, ProseOl, ProseLi, ProseBlockquote, ProsePre, ProseCode, ProseHr, ProseImg, };
|
|
44
|
+
//# sourceMappingURL=prose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prose.js","sourceRoot":"","sources":["../../src/ui/prose.tsx"],"names":[],"mappings":"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"}
|
package/dist/ui/table.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { cn } from "../lib/utils";
|
|
3
3
|
function Table({ className, ...props }) {
|
|
4
|
-
return (_jsx("div", { "data-slot": "table-container", className: "my-8 mx-auto w-full max-w-[76rem] px-[clamp(1rem,3vw,3rem)] overflow-x-auto", children: _jsx("div", { className: "rounded-xl border border-border bg-card shadow-sm", children: _jsx("table", { "data-slot": "table", className: cn("w-full caption-bottom text-sm", className), ...props }) }) }));
|
|
4
|
+
return (_jsx("div", { "data-slot": "table-container", className: "prose-container my-8 mx-auto w-full max-w-[76rem] px-[clamp(1rem,3vw,3rem)] overflow-x-auto", children: _jsx("div", { className: "rounded-xl border border-border bg-card shadow-sm", children: _jsx("table", { "data-slot": "table", className: cn("w-full caption-bottom text-sm", className), ...props }) }) }));
|
|
5
5
|
}
|
|
6
6
|
function TableHeader({ className, ...props }) {
|
|
7
7
|
return (_jsx("thead", { "data-slot": "table-header", className: cn("bg-muted/50 [&_tr]:border-b", className), ...props }));
|
package/dist/ui/table.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/ui/table.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,SAAS,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACnE,OAAO,CACL,2BAAe,iBAAiB,EAAC,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/ui/table.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,SAAS,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACnE,OAAO,CACL,2BAAe,iBAAiB,EAAC,SAAS,EAAC,6FAA6F,YACtI,cAAK,SAAS,EAAC,mDAAmD,YAChE,6BACY,OAAO,EACjB,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,SAAS,CAAC,KACrD,KAAK,GACT,GACE,GACF,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACzE,OAAO,CACL,6BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,KACnD,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACvE,OAAO,CACL,6BACY,YAAY,EACtB,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,SAAS,CAAC,KAClD,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiC;IACzE,OAAO,CACL,6BACY,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,yDAAyD,EACzD,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACnE,OAAO,CACL,0BACY,WAAW,EACrB,SAAS,EAAE,EAAE,CACX,2FAA2F,EAC3F,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACpE,OAAO,CACL,0BACY,YAAY,EACtB,SAAS,EAAE,EAAE,CACX,wKAAwK,EACxK,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACpE,OAAO,CACL,0BACY,YAAY,EACtB,SAAS,EAAE,EAAE,CACX,4GAA4G,EAC5G,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAmC;IAC5E,OAAO,CACL,+BACY,eAAe,EACzB,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,KAC1D,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,CAAC"}
|