@shipsite.dev/components 0.2.13 → 0.2.14

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 (68) hide show
  1. package/components.json +1 -75
  2. package/dist/blog/BlogArticle.d.ts +9 -1
  3. package/dist/blog/BlogArticle.d.ts.map +1 -1
  4. package/dist/blog/BlogArticle.js +3 -2
  5. package/dist/blog/BlogArticle.js.map +1 -1
  6. package/dist/blog/BlogArticleClient.d.ts +15 -0
  7. package/dist/blog/BlogArticleClient.d.ts.map +1 -0
  8. package/dist/blog/BlogArticleClient.js +106 -0
  9. package/dist/blog/BlogArticleClient.js.map +1 -0
  10. package/dist/index.d.ts +1 -7
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -7
  13. package/dist/index.js.map +1 -1
  14. package/dist/marketing/CalloutCard.d.ts.map +1 -1
  15. package/dist/marketing/CalloutCard.js +4 -4
  16. package/dist/marketing/CalloutCard.js.map +1 -1
  17. package/dist/marketing/CardGrid.d.ts.map +1 -1
  18. package/dist/marketing/CardGrid.js +2 -2
  19. package/dist/marketing/CardGrid.js.map +1 -1
  20. package/dist/ui/prose.d.ts +16 -0
  21. package/dist/ui/prose.d.ts.map +1 -0
  22. package/dist/ui/prose.js +44 -0
  23. package/dist/ui/prose.js.map +1 -0
  24. package/dist/ui/table.js +1 -1
  25. package/dist/ui/table.js.map +1 -1
  26. package/package.json +1 -1
  27. package/src/blog/BlogArticle.tsx +14 -4
  28. package/src/blog/BlogArticleClient.tsx +212 -0
  29. package/src/index.ts +3 -7
  30. package/src/marketing/CalloutCard.tsx +6 -4
  31. package/src/marketing/CardGrid.tsx +7 -3
  32. package/src/ui/prose.tsx +201 -0
  33. package/src/ui/table.tsx +1 -1
  34. package/dist/blog/BlogCTA.d.ts +0 -8
  35. package/dist/blog/BlogCTA.d.ts.map +0 -1
  36. package/dist/blog/BlogCTA.js +0 -6
  37. package/dist/blog/BlogCTA.js.map +0 -1
  38. package/dist/blog/BlogCTABanner.d.ts +0 -9
  39. package/dist/blog/BlogCTABanner.d.ts.map +0 -1
  40. package/dist/blog/BlogCTABanner.js +0 -7
  41. package/dist/blog/BlogCTABanner.js.map +0 -1
  42. package/dist/blog/BlogFAQ.d.ts +0 -10
  43. package/dist/blog/BlogFAQ.d.ts.map +0 -1
  44. package/dist/blog/BlogFAQ.js +0 -7
  45. package/dist/blog/BlogFAQ.js.map +0 -1
  46. package/dist/blog/BlogIntro.d.ts +0 -5
  47. package/dist/blog/BlogIntro.d.ts.map +0 -1
  48. package/dist/blog/BlogIntro.js +0 -5
  49. package/dist/blog/BlogIntro.js.map +0 -1
  50. package/dist/blog/BlogTable.d.ts +0 -7
  51. package/dist/blog/BlogTable.d.ts.map +0 -1
  52. package/dist/blog/BlogTable.js +0 -5
  53. package/dist/blog/BlogTable.js.map +0 -1
  54. package/dist/blog/BlogTip.d.ts +0 -8
  55. package/dist/blog/BlogTip.d.ts.map +0 -1
  56. package/dist/blog/BlogTip.js +0 -5
  57. package/dist/blog/BlogTip.js.map +0 -1
  58. package/dist/blog/StartFreeNowCTA.d.ts +0 -9
  59. package/dist/blog/StartFreeNowCTA.d.ts.map +0 -1
  60. package/dist/blog/StartFreeNowCTA.js +0 -7
  61. package/dist/blog/StartFreeNowCTA.js.map +0 -1
  62. package/src/blog/BlogCTA.tsx +0 -19
  63. package/src/blog/BlogCTABanner.tsx +0 -25
  64. package/src/blog/BlogFAQ.tsx +0 -32
  65. package/src/blog/BlogIntro.tsx +0 -9
  66. package/src/blog/BlogTable.tsx +0 -27
  67. package/src/blog/BlogTip.tsx +0 -15
  68. 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 <BlogIntro>Introduction paragraph here.</BlogIntro>\n ## Section heading\n Content here...\n</BlogArticle>"
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",
@@ -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;AAE1B,UAAU,gBAAgB;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE,gBAAgB,2CAMzD"}
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"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- export function BlogArticle({ children }) {
3
- return (_jsx("article", { className: "py-12 md:py-20", children: _jsx("div", { className: "container-main max-w-3xl", children: children }) }));
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":";AAOA,MAAM,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAoB;IACxD,OAAO,CACL,kBAAS,SAAS,EAAC,gBAAgB,YACjC,cAAK,SAAS,EAAC,0BAA0B,YAAE,QAAQ,GAAO,GAClD,CACX,CAAC;AACJ,CAAC"}
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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"}
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';
29
+ export { ProseH2, ProseH3, ProseH4, ProseP, ProseA, ProseUl, ProseOl, ProseLi, ProseBlockquote, ProsePre, ProseCode, ProseHr, ProseImg } from './ui/prose';
36
30
  export { LegalPage, LegalSection } from './legal/LegalPage';
37
31
  //# sourceMappingURL=index.d.ts.map
@@ -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;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,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,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,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';
35
+ // Prose (Markdown element overrides)
36
+ export { ProseH2, ProseH3, ProseH4, ProseP, ProseA, ProseUl, ProseOl, ProseLi, ProseBlockquote, ProsePre, ProseCode, ProseHr, ProseImg } from './ui/prose';
42
37
  // Legal
43
38
  export { LegalPage, LegalSection } from './legal/LegalPage';
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;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,gBAAgB;AAChB,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,QAAQ;AACR,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,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,QAAQ;AACR,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,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,2CAc/F"}
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-50 border-emerald-200',
7
- warning: 'bg-amber-50 border-amber-200',
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 my-8', 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] }));
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,gCAAgC;QACtC,OAAO,EAAE,kCAAkC;QAC3C,OAAO,EAAE,8BAA8B;KACxC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,aACtE,aAAI,SAAS,EAAC,oCAAoC,YAAE,KAAK,GAAM,EAC/D,YAAG,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAK,EAC7D,QAAQ,IACL,CACP,CAAC;AACJ,CAAC"}
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,2CAGhE"}
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 py-8`, children: children });
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,2DAA2D,aACvG,IAAI,IAAI,cAAK,SAAS,EAAC,mBAAmB,YAAE,IAAI,GAAO,EACxD,aAAI,SAAS,EAAC,oCAAoC,YAAE,KAAK,GAAM,EAC/D,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,cAAK,SAAS,EAAE,oBAAoB,QAAQ,CAAC,OAAO,CAAC,aAAa,YAAG,QAAQ,GAAO,CAAC;AAC9F,CAAC"}
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"}
@@ -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 }));
@@ -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,6EAA6E,YACtH,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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shipsite.dev/components",
3
- "version": "0.2.13",
3
+ "version": "0.2.14",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/shipsite/shipsite",
@@ -1,14 +1,24 @@
1
1
  import React from 'react';
2
+ import { BlogArticleClient } from './BlogArticleClient';
3
+
4
+ interface BlogArticleAuthor {
5
+ name: string;
6
+ role: string;
7
+ image: string;
8
+ }
2
9
 
3
10
  interface BlogArticleProps {
4
11
  children: React.ReactNode;
5
12
  contentFolder?: string;
13
+ date?: string;
14
+ readingTime?: number;
15
+ author?: BlogArticleAuthor;
6
16
  }
7
17
 
8
- export function BlogArticle({ children }: BlogArticleProps) {
18
+ export function BlogArticle({ children, author, date, readingTime }: BlogArticleProps) {
9
19
  return (
10
- <article className="py-12 md:py-20">
11
- <div className="container-main max-w-3xl">{children}</div>
12
- </article>
20
+ <BlogArticleClient author={author} date={date} readingTime={readingTime}>
21
+ {children}
22
+ </BlogArticleClient>
13
23
  );
14
24
  }