@noxion/renderer 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/components/DocsBreadcrumb.d.ts +5 -0
  2. package/dist/components/DocsBreadcrumb.d.ts.map +1 -0
  3. package/dist/components/DocsBreadcrumb.js +10 -0
  4. package/dist/components/DocsBreadcrumb.js.map +1 -0
  5. package/dist/components/DocsSidebar.d.ts +5 -0
  6. package/dist/components/DocsSidebar.d.ts.map +1 -0
  7. package/dist/components/DocsSidebar.js +15 -0
  8. package/dist/components/DocsSidebar.js.map +1 -0
  9. package/dist/components/FeaturedPostCard.d.ts +5 -0
  10. package/dist/components/FeaturedPostCard.d.ts.map +1 -0
  11. package/dist/components/FeaturedPostCard.js +19 -0
  12. package/dist/components/FeaturedPostCard.js.map +1 -0
  13. package/dist/components/Header.d.ts +1 -1
  14. package/dist/components/Header.d.ts.map +1 -1
  15. package/dist/components/Header.js +2 -2
  16. package/dist/components/Header.js.map +1 -1
  17. package/dist/components/HeroSection.d.ts +7 -0
  18. package/dist/components/HeroSection.d.ts.map +1 -0
  19. package/dist/components/HeroSection.js +16 -0
  20. package/dist/components/HeroSection.js.map +1 -0
  21. package/dist/components/NoxionLogo.d.ts +5 -0
  22. package/dist/components/NoxionLogo.d.ts.map +1 -0
  23. package/dist/components/NoxionLogo.js +7 -0
  24. package/dist/components/NoxionLogo.js.map +1 -0
  25. package/dist/components/PortfolioFilter.d.ts +5 -0
  26. package/dist/components/PortfolioFilter.d.ts.map +1 -0
  27. package/dist/components/PortfolioFilter.js +20 -0
  28. package/dist/components/PortfolioFilter.js.map +1 -0
  29. package/dist/components/PortfolioProjectCard.d.ts +5 -0
  30. package/dist/components/PortfolioProjectCard.d.ts.map +1 -0
  31. package/dist/components/PortfolioProjectCard.js +13 -0
  32. package/dist/components/PortfolioProjectCard.js.map +1 -0
  33. package/dist/components/PostCard.d.ts.map +1 -1
  34. package/dist/components/PostCard.js +12 -3
  35. package/dist/components/PostCard.js.map +1 -1
  36. package/dist/index.d.ts +14 -2
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +10 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/templates/DocsPage.d.ts +3 -0
  41. package/dist/templates/DocsPage.d.ts.map +1 -0
  42. package/dist/templates/DocsPage.js +13 -0
  43. package/dist/templates/DocsPage.js.map +1 -0
  44. package/dist/templates/HomePage.d.ts.map +1 -1
  45. package/dist/templates/HomePage.js +11 -2
  46. package/dist/templates/HomePage.js.map +1 -1
  47. package/dist/templates/PortfolioGrid.d.ts +3 -0
  48. package/dist/templates/PortfolioGrid.d.ts.map +1 -0
  49. package/dist/templates/PortfolioGrid.js +10 -0
  50. package/dist/templates/PortfolioGrid.js.map +1 -0
  51. package/dist/templates/PortfolioProject.d.ts +3 -0
  52. package/dist/templates/PortfolioProject.d.ts.map +1 -0
  53. package/dist/templates/PortfolioProject.js +12 -0
  54. package/dist/templates/PortfolioProject.js.map +1 -0
  55. package/dist/templates/PostPage.d.ts +10 -0
  56. package/dist/templates/PostPage.d.ts.map +1 -1
  57. package/dist/templates/PostPage.js +24 -2
  58. package/dist/templates/PostPage.js.map +1 -1
  59. package/dist/templates/index.d.ts +3 -0
  60. package/dist/templates/index.d.ts.map +1 -1
  61. package/dist/templates/index.js +3 -0
  62. package/dist/templates/index.js.map +1 -1
  63. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  64. package/dist/theme/ThemeProvider.js +1 -1
  65. package/dist/theme/ThemeProvider.js.map +1 -1
  66. package/dist/theme/define-theme.js +1 -1
  67. package/dist/theme/define-theme.js.map +1 -1
  68. package/dist/theme/extend-theme.d.ts +27 -0
  69. package/dist/theme/extend-theme.d.ts.map +1 -0
  70. package/dist/theme/extend-theme.js +102 -0
  71. package/dist/theme/extend-theme.js.map +1 -0
  72. package/dist/theme/template-resolver.d.ts.map +1 -1
  73. package/dist/theme/template-resolver.js +35 -1
  74. package/dist/theme/template-resolver.js.map +1 -1
  75. package/dist/theme/types.d.ts +55 -0
  76. package/dist/theme/types.d.ts.map +1 -1
  77. package/dist/theme/validate-theme.d.ts +14 -0
  78. package/dist/theme/validate-theme.d.ts.map +1 -0
  79. package/dist/theme/validate-theme.js +235 -0
  80. package/dist/theme/validate-theme.js.map +1 -0
  81. package/package.json +1 -1
  82. package/src/styles/noxion.css +1337 -261
@@ -0,0 +1,5 @@
1
+ import type { DocsBreadcrumbProps } from "../theme/types";
2
+ export declare function DocsBreadcrumb({ items, className }: DocsBreadcrumbProps & {
3
+ className?: string;
4
+ }): import("react/jsx-runtime").JSX.Element | null;
5
+ //# sourceMappingURL=DocsBreadcrumb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocsBreadcrumb.d.ts","sourceRoot":"","sources":["../../src/components/DocsBreadcrumb.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,mBAAmB,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,kDA+BhG"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function DocsBreadcrumb({ items, className }) {
3
+ if (items.length === 0)
4
+ return null;
5
+ return (_jsx("nav", { className: className ? `noxion-docs-breadcrumb ${className}` : "noxion-docs-breadcrumb", "aria-label": "Breadcrumb", children: _jsx("ol", { className: "noxion-docs-breadcrumb__list", children: items.map((item, index) => {
6
+ const isLast = index === items.length - 1;
7
+ return (_jsxs("li", { className: "noxion-docs-breadcrumb__item", children: [item.href && !isLast ? (_jsx("a", { href: item.href, className: "noxion-docs-breadcrumb__link", children: item.label })) : (_jsx("span", { className: "noxion-docs-breadcrumb__current", "aria-current": isLast ? "page" : undefined, children: item.label })), !isLast && (_jsx("span", { className: "noxion-docs-breadcrumb__separator", "aria-hidden": "true", children: "/" }))] }, item.label));
8
+ }) }) }));
9
+ }
10
+ //# sourceMappingURL=DocsBreadcrumb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocsBreadcrumb.js","sourceRoot":"","sources":["../../src/components/DocsBreadcrumb.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAgD;IAC/F,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,OAAO,CACL,cACE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC,CAAC,wBAAwB,gBAC5E,YAAY,YAEvB,aAAI,SAAS,EAAC,8BAA8B,YACzC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACzB,MAAM,MAAM,GAAG,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC1C,OAAO,CACL,cAAqB,SAAS,EAAC,8BAA8B,aAC1D,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACtB,YAAG,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAC,8BAA8B,YACzD,IAAI,CAAC,KAAK,GACT,CACL,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,iCAAiC,kBAAe,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YACxF,IAAI,CAAC,KAAK,GACN,CACR,EACA,CAAC,MAAM,IAAI,CACV,eAAM,SAAS,EAAC,mCAAmC,iBAAa,MAAM,kBAAS,CAChF,KAZM,IAAI,CAAC,KAAK,CAad,CACN,CAAC;YACJ,CAAC,CAAC,GACC,GACD,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { DocsSidebarProps } from "../theme/types";
2
+ export declare function DocsSidebar({ items, currentSlug, className }: DocsSidebarProps & {
3
+ className?: string;
4
+ }): import("react/jsx-runtime").JSX.Element | null;
5
+ //# sourceMappingURL=DocsSidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocsSidebar.d.ts","sourceRoot":"","sources":["../../src/components/DocsSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,gBAAgB,CAAC;AA8BxE,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,gBAAgB,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,kDAevG"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ function SidebarItem({ item, currentSlug, depth = 0 }) {
3
+ const isActive = currentSlug === item.slug;
4
+ const hasChildren = item.children && item.children.length > 0;
5
+ const baseClass = isActive
6
+ ? "noxion-docs-sidebar__link noxion-docs-sidebar__link--active"
7
+ : "noxion-docs-sidebar__link";
8
+ return (_jsxs("li", { className: "noxion-docs-sidebar__item", children: [_jsx("a", { href: `/${item.slug}`, className: baseClass, style: { paddingLeft: `${depth * 0.75 + 0.5}rem` }, "aria-current": isActive ? "page" : undefined, children: item.title }), hasChildren && (_jsx("ul", { className: "noxion-docs-sidebar__list", children: item.children.map((child) => (_jsx(SidebarItem, { item: child, currentSlug: currentSlug, depth: depth + 1 }, child.id))) }))] }));
9
+ }
10
+ export function DocsSidebar({ items, currentSlug, className }) {
11
+ if (items.length === 0)
12
+ return null;
13
+ return (_jsx("nav", { className: className ? `noxion-docs-sidebar ${className}` : "noxion-docs-sidebar", "aria-label": "Documentation navigation", children: _jsx("ul", { className: "noxion-docs-sidebar__list", children: items.map((item) => (_jsx(SidebarItem, { item: item, currentSlug: currentSlug }, item.id))) }) }));
14
+ }
15
+ //# sourceMappingURL=DocsSidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocsSidebar.js","sourceRoot":"","sources":["../../src/components/DocsSidebar.tsx"],"names":[],"mappings":";AAEA,SAAS,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,GAAG,CAAC,EAAmE;IACpH,MAAM,QAAQ,GAAG,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC;IAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,QAAQ;QACxB,CAAC,CAAC,6DAA6D;QAC/D,CAAC,CAAC,2BAA2B,CAAC;IAEhC,OAAO,CACL,cAAI,SAAS,EAAC,2BAA2B,aACvC,YACE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EACrB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,EAAE,WAAW,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,KAAK,EAAE,kBACpC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YAE1C,IAAI,CAAC,KAAK,GACT,EACH,WAAW,IAAI,CACd,aAAI,SAAS,EAAC,2BAA2B,YACtC,IAAI,CAAC,QAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC7B,KAAC,WAAW,IAAgB,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,IAAjE,KAAK,CAAC,EAAE,CAA6D,CACxF,CAAC,GACC,CACN,IACE,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAA6C;IACtG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,OAAO,CACL,cACE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAC,CAAC,qBAAqB,gBACtE,0BAA0B,YAErC,aAAI,SAAS,EAAC,2BAA2B,YACtC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,WAAW,IAAe,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,IAA7C,IAAI,CAAC,EAAE,CAA0C,CACpE,CAAC,GACC,GACD,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { PostCardProps } from "../theme/types";
2
+ export declare function FeaturedPostCard({ title, slug, date, tags, coverImage, category, description, author, className, }: PostCardProps & {
3
+ className?: string;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=FeaturedPostCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeaturedPostCard.d.ts","sourceRoot":"","sources":["../../src/components/FeaturedPostCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAWpD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,WAAW,EACX,MAAM,EACN,SAAS,GACV,EAAE,aAAa,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAoDxC"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ function formatDate(dateStr) {
3
+ try {
4
+ const d = new Date(dateStr + (dateStr.includes("T") ? "" : "T00:00:00"));
5
+ return d.toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" });
6
+ }
7
+ catch {
8
+ return dateStr;
9
+ }
10
+ }
11
+ export function FeaturedPostCard({ title, slug, date, tags, coverImage, category, description, author, className, }) {
12
+ const hasImage = Boolean(coverImage);
13
+ const baseClass = hasImage
14
+ ? "noxion-featured-card"
15
+ : "noxion-featured-card noxion-featured-card--no-cover";
16
+ const cardClass = className ? `${baseClass} ${className}` : baseClass;
17
+ return (_jsxs("a", { href: `/${slug}`, className: cardClass, children: [_jsx("div", { className: "noxion-featured-card__cover", children: hasImage && (_jsxs(_Fragment, { children: [_jsx("img", { src: coverImage, alt: title, loading: "eager", decoding: "async", className: "noxion-featured-card__cover-image" }), _jsx("div", { className: "noxion-featured-card__cover-overlay" })] })) }), _jsxs("div", { className: "noxion-featured-card__content", children: [category && (_jsx("span", { className: "noxion-featured-card__category", children: category })), _jsx("h2", { className: "noxion-featured-card__title", children: title }), description && (_jsx("p", { className: "noxion-featured-card__description", children: description })), _jsxs("div", { className: "noxion-featured-card__meta", children: [author && (_jsx("span", { className: "noxion-featured-card__author", children: author })), date && (_jsx("time", { dateTime: date, className: "noxion-featured-card__date", children: formatDate(date) }))] }), tags.length > 0 && (_jsx("div", { className: "noxion-featured-card__tags", children: tags.map((tag) => (_jsx("span", { className: "noxion-featured-card__tag", children: tag }, tag))) }))] })] }));
18
+ }
19
+ //# sourceMappingURL=FeaturedPostCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeaturedPostCard.js","sourceRoot":"","sources":["../../src/components/FeaturedPostCard.tsx"],"names":[],"mappings":";AAEA,SAAS,UAAU,CAAC,OAAe;IACjC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,WAAW,EACX,MAAM,EACN,SAAS,GAC8B;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,QAAQ;QACxB,CAAC,CAAC,sBAAsB;QACxB,CAAC,CAAC,qDAAqD,CAAC;IAC1D,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtE,OAAO,CACL,aAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,aACvC,cAAK,SAAS,EAAC,6BAA6B,YACzC,QAAQ,IAAI,CACX,8BACE,cACE,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,KAAK,EACV,OAAO,EAAC,OAAO,EACf,QAAQ,EAAC,OAAO,EAChB,SAAS,EAAC,mCAAmC,GAC7C,EACF,cAAK,SAAS,EAAC,qCAAqC,GAAG,IACtD,CACJ,GACG,EAEN,eAAK,SAAS,EAAC,+BAA+B,aAC3C,QAAQ,IAAI,CACX,eAAM,SAAS,EAAC,gCAAgC,YAAE,QAAQ,GAAQ,CACnE,EACD,aAAI,SAAS,EAAC,6BAA6B,YAAE,KAAK,GAAM,EACvD,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,mCAAmC,YAAE,WAAW,GAAK,CACnE,EACD,eAAK,SAAS,EAAC,4BAA4B,aACxC,MAAM,IAAI,CACT,eAAM,SAAS,EAAC,8BAA8B,YAAE,MAAM,GAAQ,CAC/D,EACA,IAAI,IAAI,CACP,eAAM,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAC,4BAA4B,YACzD,UAAU,CAAC,IAAI,CAAC,GACZ,CACR,IACG,EACL,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAClB,cAAK,SAAS,EAAC,4BAA4B,YACxC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjB,eAAgB,SAAS,EAAC,2BAA2B,YAAE,GAAG,IAA/C,GAAG,CAAoD,CACnE,CAAC,GACE,CACP,IACG,IACJ,CACL,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { HeaderProps } from "../theme/types";
2
- export declare function Header({ siteName, navigation, className }: HeaderProps & {
2
+ export declare function Header({ siteName, logo, navigation, className }: HeaderProps & {
3
3
  className?: string;
4
4
  }): import("react/jsx-runtime").JSX.Element;
5
5
  //# sourceMappingURL=Header.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAe,EAAE,SAAS,EAAE,EAAE,WAAW,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAsBpG"}
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAe,EAAE,SAAS,EAAE,EAAE,WAAW,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAsB1G"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { ThemeToggle } from "./ThemeToggle";
4
- export function Header({ siteName, navigation = [], className }) {
5
- return (_jsxs("header", { className: className ? `noxion-header ${className}` : "noxion-header", children: [_jsx("a", { href: "/", className: "noxion-header__logo", children: siteName }), navigation.length > 0 && (_jsx("nav", { className: "noxion-header__nav", children: navigation.map((item) => (_jsx("a", { href: item.href, className: "noxion-header__nav-link", children: item.label }, item.href))) })), _jsx("div", { className: "noxion-header__actions", children: _jsx(ThemeToggle, {}) })] }));
4
+ export function Header({ siteName, logo, navigation = [], className }) {
5
+ return (_jsxs("header", { className: className ? `noxion-header ${className}` : "noxion-header", children: [_jsx("a", { href: "/", className: "noxion-header__logo", children: logo || siteName }), navigation.length > 0 && (_jsx("nav", { className: "noxion-header__nav", children: navigation.map((item) => (_jsx("a", { href: item.href, className: "noxion-header__nav-link", children: item.label }, item.href))) })), _jsx("div", { className: "noxion-header__actions", children: _jsx(ThemeToggle, {}) })] }));
6
6
  }
7
7
  //# sourceMappingURL=Header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,UAAU,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAU,GAAG,EAAE,EAAE,SAAS,EAAwC;IACnG,OAAO,CACL,kBAAQ,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC,CAAC,eAAe,aAC3E,YAAG,IAAI,EAAC,GAAG,EAAC,SAAS,EAAC,qBAAqB,YACxC,QAAQ,GACP,EAEH,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CACxB,cAAK,SAAS,EAAC,oBAAoB,YAChC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACxB,YAAmB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAC,yBAAyB,YACpE,IAAI,CAAC,KAAK,IADL,IAAI,CAAC,IAAI,CAEb,CACL,CAAC,GACE,CACP,EAED,cAAK,SAAS,EAAC,wBAAwB,YACrC,KAAC,WAAW,KAAG,GACX,IACC,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,UAAU,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,SAAS,EAAwC;IACzG,OAAO,CACL,kBAAQ,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC,CAAC,eAAe,aAC3E,YAAG,IAAI,EAAC,GAAG,EAAC,SAAS,EAAC,qBAAqB,YACxC,IAAI,IAAI,QAAQ,GACf,EAEH,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CACxB,cAAK,SAAS,EAAC,oBAAoB,YAChC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACxB,YAAmB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAC,yBAAyB,YACpE,IAAI,CAAC,KAAK,IADL,IAAI,CAAC,IAAI,CAEb,CACL,CAAC,GACE,CACP,EAED,cAAK,SAAS,EAAC,wBAAwB,YACrC,KAAC,WAAW,KAAG,GACX,IACC,CACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { PostCardProps } from "../theme/types";
2
+ export interface HeroSectionProps {
3
+ posts: PostCardProps[];
4
+ className?: string;
5
+ }
6
+ export declare function HeroSection({ posts, className }: HeroSectionProps): import("react/jsx-runtime").JSX.Element | null;
7
+ //# sourceMappingURL=HeroSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeroSection.d.ts","sourceRoot":"","sources":["../../src/components/HeroSection.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAKpD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,gBAAgB,kDAsBjE"}
@@ -0,0 +1,16 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useNoxionComponents } from "../theme/ThemeProvider";
4
+ import { FeaturedPostCard as DefaultFeaturedPostCard } from "./FeaturedPostCard";
5
+ import { PostCard as DefaultPostCard } from "./PostCard";
6
+ export function HeroSection({ posts, className }) {
7
+ const overrides = useNoxionComponents();
8
+ const FeaturedCard = (overrides.FeaturedPostCard ?? DefaultFeaturedPostCard);
9
+ const Card = (overrides.PostCard ?? DefaultPostCard);
10
+ if (posts.length === 0)
11
+ return null;
12
+ const [primary, ...secondary] = posts;
13
+ const baseClass = className ? `noxion-home-hero ${className}` : "noxion-home-hero";
14
+ return (_jsxs("section", { className: baseClass, children: [_jsx(FeaturedCard, { ...primary, className: "noxion-home-hero__primary" }), secondary.length > 0 && (_jsx("div", { className: "noxion-home-hero__secondary", children: secondary.map((post) => (_jsx(Card, { ...post }, post.slug))) }))] }));
15
+ }
16
+ //# sourceMappingURL=HeroSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeroSection.js","sourceRoot":"","sources":["../../src/components/HeroSection.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAIb,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,YAAY,CAAC;AAOzD,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAoB;IAChE,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,MAAM,YAAY,GAAG,CAAC,SAAS,CAAC,gBAAgB,IAAI,uBAAuB,CAA0D,CAAC;IACtI,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,eAAe,CAA0D,CAAC;IAE9G,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC;IACtC,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAEnF,OAAO,CACL,mBAAS,SAAS,EAAE,SAAS,aAC3B,KAAC,YAAY,OAAK,OAAO,EAAE,SAAS,EAAC,2BAA2B,GAAG,EAClE,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CACvB,cAAK,SAAS,EAAC,6BAA6B,YACzC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACvB,KAAC,IAAI,OAAqB,IAAI,IAAnB,IAAI,CAAC,IAAI,CAAc,CACnC,CAAC,GACE,CACP,IACO,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function NoxionLogo({ className, height }: {
2
+ className?: string;
3
+ height?: number;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=NoxionLogo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoxionLogo.d.ts","sourceRoot":"","sources":["../../src/components/NoxionLogo.tsx"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,MAAW,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,2CAqB7F"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export function NoxionLogo({ className, height = 20 }) {
3
+ const aspectRatio = 1022 / 268;
4
+ const width = Math.round(height * aspectRatio);
5
+ return (_jsx("svg", { className: className, width: width, height: height, viewBox: "0 0 1022 268", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-label": "Noxion", role: "img", children: _jsx("path", { d: "M200.556 246.892C203.668 248.275 207.472 249.312 213.35 249.658V262.452H117.913V249.658C122.754 249.312 127.595 248.621 131.053 247.238C136.586 244.817 139.352 239.284 139.352 230.294V162.52C139.352 136.24 134.165 120.334 107.194 120.334C97.5118 120.334 89.2129 122.063 78.1478 126.212V230.294C78.1478 239.284 80.914 244.125 86.7924 246.892C89.9045 248.275 93.7082 249.312 99.2407 249.658V262.452H4.14941V249.658C8.64463 249.312 13.4856 248.621 16.9435 247.238C22.8219 244.817 25.5882 239.284 25.5882 230.294V125.175C25.5882 114.455 23.8592 110.998 12.7941 110.652C9.33621 110.652 3.80362 110.998 -3.13534e-05 111.343V99.2408C13.4856 94.3998 40.457 87.1383 57.0548 87.1383C73.6525 87.1383 78.1478 93.7083 78.1478 108.577V118.259C96.1287 99.9324 117.222 87.1383 141.773 87.1383C176.351 87.1383 191.912 105.465 191.912 147.651V230.294C191.912 239.284 195.024 244.125 200.556 246.892ZM387.681 169.09C387.681 222.687 351.719 267.639 290.169 267.639C241.067 267.639 204.76 238.593 204.76 183.959C204.76 124.829 247.637 87.1383 303.655 87.1383C354.485 87.1383 387.681 117.568 387.681 169.09ZM331.663 180.501C331.663 136.586 321.29 107.194 293.627 107.194C268.039 107.194 260.777 132.436 260.777 171.164C260.777 214.734 270.113 247.583 298.122 247.583C321.29 247.583 331.663 224.07 331.663 180.501ZM488.694 172.548L531.571 231.677C539.524 242.742 548.861 248.966 558.197 250.35V262.452H463.797V250.35C477.283 250.35 480.395 242.051 474.517 233.752L447.545 196.407L429.218 219.229C415.733 236.518 420.574 248.621 436.134 250.35V262.452H367.668V250.35C379.771 247.583 393.257 238.939 404.322 225.453L438.901 184.65L394.294 123.1C386.341 112.035 380.463 105.811 371.126 104.428V91.9793H465.526V104.428C452.04 104.428 445.47 112.727 451.349 121.025L480.049 160.445L498.03 135.548C508.404 121.371 503.563 106.848 488.002 104.428V91.9793H556.122V104.428C544.02 107.194 532.263 117.568 522.927 129.324L488.694 172.548ZM562.117 26.2799C562.117 6.91581 575.257 5.80998e-05 590.125 5.80998e-05C604.994 5.80998e-05 617.788 6.91581 617.788 26.2799C617.788 45.2981 604.994 52.2139 590.125 52.2139C575.257 52.2139 562.117 45.2981 562.117 26.2799ZM620.209 108.577V230.294C620.209 239.284 622.975 244.125 628.854 246.892C631.966 248.275 635.769 249.312 641.302 249.658V262.452H546.211V249.658C550.706 249.312 555.547 248.621 559.005 247.238C564.883 244.817 567.649 239.284 567.649 230.294V125.175C567.649 114.11 565.575 110.652 553.818 110.652C550.36 110.652 545.519 110.998 542.061 111.343V99.2408C555.547 94.3998 582.518 87.1383 599.116 87.1383C615.714 87.1383 620.209 93.7083 620.209 108.577ZM816.618 169.09C816.618 222.687 780.657 267.639 719.107 267.639C670.005 267.639 633.697 238.593 633.697 183.959C633.697 124.829 676.575 87.1383 732.592 87.1383C783.423 87.1383 816.618 117.568 816.618 169.09ZM760.601 180.501C760.601 136.586 750.227 107.194 722.564 107.194C696.976 107.194 689.715 132.436 689.715 171.164C689.715 214.734 699.051 247.583 727.06 247.583C750.227 247.583 760.601 224.07 760.601 180.501ZM1009.1 246.892C1012.21 248.275 1016.02 249.312 1021.9 249.658V262.452H926.46V249.658C931.301 249.312 936.142 248.621 939.6 247.238C945.132 244.817 947.898 239.284 947.898 230.294V162.52C947.898 136.24 942.712 120.334 915.74 120.334C906.058 120.334 897.759 122.063 886.694 126.212V230.294C886.694 239.284 889.46 244.125 895.339 246.892C898.451 248.275 902.255 249.312 907.787 249.658V262.452H812.696V249.658C817.191 249.312 822.032 248.621 825.49 247.238C831.368 244.817 834.135 239.284 834.135 230.294V125.175C834.135 114.455 832.406 110.998 821.341 110.652C817.883 110.652 812.35 110.998 808.546 111.343V99.2408C822.032 94.3998 849.003 87.1383 865.601 87.1383C882.199 87.1383 886.694 93.7083 886.694 108.577V118.259C904.675 99.9324 925.768 87.1383 950.319 87.1383C984.898 87.1383 1000.46 105.465 1000.46 147.651V230.294C1000.46 239.284 1003.57 244.125 1009.1 246.892Z", fill: "currentColor" }) }));
6
+ }
7
+ //# sourceMappingURL=NoxionLogo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NoxionLogo.js","sourceRoot":"","sources":["../../src/components/NoxionLogo.tsx"],"names":[],"mappings":";AAAA,MAAM,UAAU,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,EAAE,EAA2C;IAC5F,MAAM,WAAW,GAAG,IAAI,GAAG,GAAG,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;IAE/C,OAAO,CACL,cACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAC,cAAc,EACtB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,gBACvB,QAAQ,EACnB,IAAI,EAAC,KAAK,YAEV,eACE,CAAC,EAAC,ixHAAixH,EACnxH,IAAI,EAAC,cAAc,GACnB,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { PortfolioFilterProps } from "../theme/types";
2
+ export declare function PortfolioFilter({ technologies, selectedTechnologies, onToggle, className, }: PortfolioFilterProps & {
3
+ className?: string;
4
+ }): import("react/jsx-runtime").JSX.Element | null;
5
+ //# sourceMappingURL=PortfolioFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortfolioFilter.d.ts","sourceRoot":"","sources":["../../src/components/PortfolioFilter.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,wBAAgB,eAAe,CAAC,EAC9B,YAAY,EACZ,oBAAoB,EACpB,QAAQ,EACR,SAAS,GACV,EAAE,oBAAoB,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,kDA6C/C"}
@@ -0,0 +1,20 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState } from "react";
4
+ export function PortfolioFilter({ technologies, selectedTechnologies, onToggle, className, }) {
5
+ const [expanded, setExpanded] = useState(false);
6
+ if (technologies.length === 0)
7
+ return null;
8
+ const maxVisible = 8;
9
+ const shouldCollapse = technologies.length > maxVisible;
10
+ const visibleTechs = shouldCollapse && !expanded ? technologies.slice(0, maxVisible) : technologies;
11
+ const hiddenCount = shouldCollapse ? technologies.length - maxVisible : 0;
12
+ return (_jsxs("div", { className: className ? `noxion-portfolio-filter ${className}` : "noxion-portfolio-filter", children: [visibleTechs.map((tech) => {
13
+ const isSelected = selectedTechnologies.includes(tech);
14
+ const tagClass = isSelected
15
+ ? "noxion-portfolio-filter__tag noxion-portfolio-filter__tag--selected"
16
+ : "noxion-portfolio-filter__tag";
17
+ return (_jsx("button", { onClick: () => onToggle(tech), type: "button", className: tagClass, children: tech }, tech));
18
+ }), shouldCollapse && !expanded && hiddenCount > 0 && (_jsxs("button", { type: "button", onClick: () => setExpanded(true), className: "noxion-portfolio-filter__tag noxion-portfolio-filter__tag--more", children: ["+", hiddenCount] })), shouldCollapse && expanded && (_jsx("button", { type: "button", onClick: () => setExpanded(false), className: "noxion-portfolio-filter__tag noxion-portfolio-filter__tag--more", children: "Show less" }))] }));
19
+ }
20
+ //# sourceMappingURL=PortfolioFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortfolioFilter.js","sourceRoot":"","sources":["../../src/components/PortfolioFilter.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,MAAM,UAAU,eAAe,CAAC,EAC9B,YAAY,EACZ,oBAAoB,EACpB,QAAQ,EACR,SAAS,GACqC;IAC9C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,MAAM,UAAU,GAAG,CAAC,CAAC;IACrB,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,GAAG,UAAU,CAAC;IACxD,MAAM,YAAY,GAAG,cAAc,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IACpG,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1E,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC,CAAC,yBAAyB,aAC3F,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACzB,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACvD,MAAM,QAAQ,GAAG,UAAU;oBACzB,CAAC,CAAC,qEAAqE;oBACvE,CAAC,CAAC,8BAA8B,CAAC;gBACnC,OAAO,CACL,iBAAmB,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,QAAQ,YAChF,IAAI,IADM,IAAI,CAER,CACV,CAAC;YACJ,CAAC,CAAC,EAED,cAAc,IAAI,CAAC,QAAQ,IAAI,WAAW,GAAG,CAAC,IAAI,CACjD,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAChC,SAAS,EAAC,iEAAiE,kBAEzE,WAAW,IACN,CACV,EAEA,cAAc,IAAI,QAAQ,IAAI,CAC7B,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EACjC,SAAS,EAAC,iEAAiE,0BAGpE,CACV,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { PortfolioCardProps } from "../theme/types";
2
+ export declare function PortfolioProjectCard({ title, slug, description, coverImage, technologies, projectUrl, year, featured, className, }: PortfolioCardProps & {
3
+ className?: string;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=PortfolioProjectCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortfolioProjectCard.d.ts","sourceRoot":"","sources":["../../src/components/PortfolioProjectCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,IAAI,EACJ,WAAW,EACX,UAAU,EACV,YAAY,EACZ,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,SAAS,GACV,EAAE,kBAAkB,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CA6D7C"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function PortfolioProjectCard({ title, slug, description, coverImage, technologies, projectUrl, year, featured, className, }) {
3
+ const classes = ["noxion-portfolio-card"];
4
+ if (featured)
5
+ classes.push("noxion-portfolio-card--featured");
6
+ if (!coverImage)
7
+ classes.push("noxion-portfolio-card--no-cover");
8
+ if (className)
9
+ classes.push(className);
10
+ const cardClass = classes.join(" ");
11
+ return (_jsxs("div", { className: cardClass, children: [_jsx("div", { className: "noxion-portfolio-card__cover", children: coverImage && (_jsx("img", { src: coverImage, alt: title, loading: "lazy", decoding: "async", className: "noxion-portfolio-card__cover-image" })) }), _jsxs("div", { className: "noxion-portfolio-card__body", children: [_jsxs("div", { className: "noxion-portfolio-card__header", children: [_jsx("a", { href: `/${slug}`, className: "noxion-portfolio-card__title-link", children: _jsx("h3", { className: "noxion-portfolio-card__title", children: title }) }), year && (_jsx("span", { className: "noxion-portfolio-card__year", children: year }))] }), description && (_jsx("p", { className: "noxion-portfolio-card__description", children: description })), technologies && technologies.length > 0 && (_jsx("div", { className: "noxion-portfolio-card__tech", children: technologies.map((tech) => (_jsx("span", { className: "noxion-portfolio-card__tech-tag", children: tech }, tech))) })), _jsxs("div", { className: "noxion-portfolio-card__actions", children: [_jsx("a", { href: `/${slug}`, className: "noxion-portfolio-card__link", children: "Details" }), projectUrl && (_jsx("a", { href: projectUrl, className: "noxion-portfolio-card__link noxion-portfolio-card__link--external", target: "_blank", rel: "noopener noreferrer", children: "Visit" }))] })] })] }));
12
+ }
13
+ //# sourceMappingURL=PortfolioProjectCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortfolioProjectCard.js","sourceRoot":"","sources":["../../src/components/PortfolioProjectCard.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,oBAAoB,CAAC,EACnC,KAAK,EACL,IAAI,EACJ,WAAW,EACX,UAAU,EACV,YAAY,EACZ,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,SAAS,GACmC;IAC5C,MAAM,OAAO,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC1C,IAAI,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC9D,IAAI,CAAC,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACjE,IAAI,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEpC,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,aACvB,cAAK,SAAS,EAAC,8BAA8B,YAC1C,UAAU,IAAI,CACb,cACE,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,KAAK,EACV,OAAO,EAAC,MAAM,EACd,QAAQ,EAAC,OAAO,EAChB,SAAS,EAAC,oCAAoC,GAC9C,CACH,GACG,EAEN,eAAK,SAAS,EAAC,6BAA6B,aAC1C,eAAK,SAAS,EAAC,+BAA+B,aAC5C,YAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAC,mCAAmC,YAChE,aAAI,SAAS,EAAC,8BAA8B,YAAE,KAAK,GAAM,GACvD,EACH,IAAI,IAAI,CACP,eAAM,SAAS,EAAC,6BAA6B,YAAE,IAAI,GAAQ,CAC5D,IACG,EAEL,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,oCAAoC,YAAE,WAAW,GAAK,CACpE,EAEA,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAC1C,cAAK,SAAS,EAAC,6BAA6B,YACzC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC1B,eAAiB,SAAS,EAAC,iCAAiC,YAAE,IAAI,IAAvD,IAAI,CAA2D,CAC3E,CAAC,GACE,CACP,EAED,eAAK,SAAS,EAAC,gCAAgC,aAC7C,YAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAC,6BAA6B,wBAExD,EACH,UAAU,IAAI,CACb,YACE,IAAI,EAAE,UAAU,EAChB,SAAS,EAAC,mEAAmE,EAC7E,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,sBAGvB,CACL,IACG,IACF,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PostCard.d.ts","sourceRoot":"","sources":["../../src/components/PostCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,WAAW,EACX,MAAM,EACN,SAAS,GACV,EAAE,aAAa,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAmDxC"}
1
+ {"version":3,"file":"PostCard.d.ts","sourceRoot":"","sources":["../../src/components/PostCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAWpD,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,WAAW,EACX,MAAM,EACN,SAAS,GACV,EAAE,aAAa,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CA0DxC"}
@@ -1,8 +1,17 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ function formatDate(dateStr) {
3
+ try {
4
+ const d = new Date(dateStr + (dateStr.includes("T") ? "" : "T00:00:00"));
5
+ return d.toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" });
6
+ }
7
+ catch {
8
+ return dateStr;
9
+ }
10
+ }
2
11
  export function PostCard({ title, slug, date, tags, coverImage, category, description, author, className, }) {
3
12
  const hasImage = Boolean(coverImage);
4
- const baseClass = hasImage ? "noxion-post-card" : "noxion-post-card noxion-post-card--text-only";
13
+ const baseClass = hasImage ? "noxion-post-card" : "noxion-post-card noxion-post-card--no-cover";
5
14
  const cardClass = className ? `${baseClass} ${className}` : baseClass;
6
- return (_jsxs("a", { href: `/${slug}`, className: cardClass, children: [hasImage && (_jsx("div", { className: "noxion-post-card__cover", children: _jsx("img", { src: coverImage, alt: title, loading: "lazy", decoding: "async", className: "noxion-post-card__cover-image" }) })), _jsxs("div", { className: "noxion-post-card__body", children: [category && (_jsx("span", { className: "noxion-post-card__category", children: category })), _jsx("h3", { className: "noxion-post-card__title", children: title }), description && (_jsx("p", { className: "noxion-post-card__description", children: description })), _jsxs("div", { className: "noxion-post-card__meta", children: [author && (_jsx("span", { className: "noxion-post-card__author", children: author })), _jsx("time", { dateTime: date, className: "noxion-post-card__date", children: date }), tags.length > 0 && (_jsx("div", { className: "noxion-post-card__tags", children: tags.map((tag) => (_jsx("span", { className: "noxion-post-card__tag", children: tag }, tag))) }))] })] })] }));
15
+ return (_jsxs("a", { href: `/${slug}`, className: cardClass, children: [_jsx("div", { className: "noxion-post-card__cover", children: hasImage && (_jsxs(_Fragment, { children: [_jsx("img", { src: coverImage, alt: title, loading: "lazy", decoding: "async", className: "noxion-post-card__cover-image" }), _jsx("div", { className: "noxion-post-card__cover-overlay" })] })) }), _jsxs("div", { className: "noxion-post-card__body", children: [_jsx("div", { className: "noxion-post-card__header", children: category && (_jsx("span", { className: "noxion-post-card__category", children: category })) }), _jsx("h3", { className: "noxion-post-card__title", children: title }), description && (_jsx("p", { className: "noxion-post-card__description", children: description })), _jsxs("div", { className: "noxion-post-card__meta", children: [author && (_jsx("span", { className: "noxion-post-card__author", children: author })), date && (_jsx("time", { dateTime: date, className: "noxion-post-card__date", children: formatDate(date) }))] }), tags.length > 0 && (_jsx("div", { className: "noxion-post-card__tags", children: tags.map((tag) => (_jsx("span", { className: "noxion-post-card__tag", children: tag }, tag))) }))] })] }));
7
16
  }
8
17
  //# sourceMappingURL=PostCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PostCard.js","sourceRoot":"","sources":["../../src/components/PostCard.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,WAAW,EACX,MAAM,EACN,SAAS,GAC8B;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,8CAA8C,CAAC;IACjG,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtE,OAAO,CACL,aAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,aACtC,QAAQ,IAAI,CACX,cAAK,SAAS,EAAC,yBAAyB,YACtC,cACE,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,KAAK,EACV,OAAO,EAAC,MAAM,EACd,QAAQ,EAAC,OAAO,EAChB,SAAS,EAAC,+BAA+B,GACzC,GACE,CACP,EAED,eAAK,SAAS,EAAC,wBAAwB,aACpC,QAAQ,IAAI,CACX,eAAM,SAAS,EAAC,4BAA4B,YAAE,QAAQ,GAAQ,CAC/D,EAED,aAAI,SAAS,EAAC,yBAAyB,YAAE,KAAK,GAAM,EAEnD,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAK,CAC/D,EAED,eAAK,SAAS,EAAC,wBAAwB,aACpC,MAAM,IAAI,CACT,eAAM,SAAS,EAAC,0BAA0B,YAAE,MAAM,GAAQ,CAC3D,EACD,eAAM,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAC,wBAAwB,YACrD,IAAI,GACA,EAEN,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAClB,cAAK,SAAS,EAAC,wBAAwB,YACpC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjB,eAAgB,SAAS,EAAC,uBAAuB,YAC9C,GAAG,IADK,GAAG,CAEP,CACR,CAAC,GACE,CACP,IACG,IACF,IACJ,CACL,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"PostCard.js","sourceRoot":"","sources":["../../src/components/PostCard.tsx"],"names":[],"mappings":";AAEA,SAAS,UAAU,CAAC,OAAe;IACjC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,WAAW,EACX,MAAM,EACN,SAAS,GAC8B;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,6CAA6C,CAAC;IAChG,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtE,OAAO,CACL,aAAG,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,SAAS,aACvC,cAAK,SAAS,EAAC,yBAAyB,YACrC,QAAQ,IAAI,CACX,8BACE,cACE,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,KAAK,EACV,OAAO,EAAC,MAAM,EACd,QAAQ,EAAC,OAAO,EAChB,SAAS,EAAC,+BAA+B,GACzC,EACF,cAAK,SAAS,EAAC,iCAAiC,GAAG,IAClD,CACJ,GACG,EAEN,eAAK,SAAS,EAAC,wBAAwB,aACrC,cAAK,SAAS,EAAC,0BAA0B,YACtC,QAAQ,IAAI,CACX,eAAM,SAAS,EAAC,4BAA4B,YAAE,QAAQ,GAAQ,CAC/D,GACG,EAEN,aAAI,SAAS,EAAC,yBAAyB,YAAE,KAAK,GAAM,EAEnD,WAAW,IAAI,CACd,YAAG,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAK,CAC/D,EAED,eAAK,SAAS,EAAC,wBAAwB,aACpC,MAAM,IAAI,CACT,eAAM,SAAS,EAAC,0BAA0B,YAAE,MAAM,GAAQ,CAC3D,EACA,IAAI,IAAI,CACP,eAAM,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAC,wBAAwB,YACrD,UAAU,CAAC,IAAI,CAAC,GACZ,CACR,IACG,EAEL,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAClB,cAAK,SAAS,EAAC,wBAAwB,YACpC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjB,eAAgB,SAAS,EAAC,uBAAuB,YAC9C,GAAG,IADK,GAAG,CAEP,CACR,CAAC,GACE,CACP,IACG,IACJ,CACL,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export { defineTheme, defaultTheme } from "./theme/define-theme";
2
+ export { extendTheme } from "./theme/extend-theme";
3
+ export type { ExtendThemeOverrides } from "./theme/extend-theme";
2
4
  export { generateCSSVariables, generateThemeStylesheet } from "./theme/css-generator";
3
5
  export { resolveComponents } from "./theme/component-resolver";
4
6
  export { NoxionThemeProvider, useNoxionTheme, useNoxionTokens, useNoxionComponents, useNoxionLayout, useNoxionSlots, useNoxionTemplate, } from "./theme/ThemeProvider";
@@ -6,13 +8,17 @@ export type { NoxionThemeProviderProps } from "./theme/ThemeProvider";
6
8
  export { resolveSlots } from "./theme/slot-resolver";
7
9
  export { resolveTemplate } from "./theme/template-resolver";
8
10
  export { BaseLayout, BlogLayout, DocsLayout, MagazineLayout } from "./layouts";
9
- export { HomePage, PostPage, ArchivePage, TagPage } from "./templates";
10
- export type { NoxionTheme, NoxionThemeColors, NoxionThemeFonts, NoxionThemeSpacing, NoxionThemeShadows, NoxionThemeTransitions, NoxionThemeBreakpoints, NoxionThemeTokens, NoxionLayout, ComponentOverrides, NoxionSlotMap, NoxionTemplateMap, NoxionTemplateProps, NoxionLayoutProps, NoxionThemePackage, HeaderProps, FooterProps, PostCardProps, PostListProps, TOCProps, SearchProps, TagFilterProps, } from "./theme/types";
11
+ export { HomePage, PostPage, ArchivePage, TagPage, DocsPage, PortfolioGrid, PortfolioProject } from "./templates";
12
+ export type { NoxionTheme, NoxionThemeColors, NoxionThemeFonts, NoxionThemeSpacing, NoxionThemeShadows, NoxionThemeTransitions, NoxionThemeBreakpoints, NoxionThemeTokens, NoxionLayout, ComponentOverrides, NoxionSlotMap, NoxionTemplateMap, NoxionTemplateProps, NoxionLayoutProps, NoxionThemePackage, NoxionThemeMetadata, HeaderProps, FooterProps, PostCardProps, PostListProps, TOCProps, SearchProps, TagFilterProps, DocsSidebarItem, DocsSidebarProps, DocsBreadcrumbItem, DocsBreadcrumbProps, DocsNavigationLink, DocsPageProps, PortfolioCardProps, PortfolioFilterProps, } from "./theme/types";
11
13
  export { NotionPage } from "./components/NotionPage";
12
14
  export type { NotionPageProps } from "./components/NotionPage";
13
15
  export { PostCard } from "./components/PostCard";
16
+ export { FeaturedPostCard } from "./components/FeaturedPostCard";
14
17
  export { PostList } from "./components/PostList";
18
+ export { HeroSection } from "./components/HeroSection";
19
+ export type { HeroSectionProps } from "./components/HeroSection";
15
20
  export { Header } from "./components/Header";
21
+ export { NoxionLogo } from "./components/NoxionLogo";
16
22
  export { Footer } from "./components/Footer";
17
23
  export { TagFilter } from "./components/TagFilter";
18
24
  export { EmptyState } from "./components/EmptyState";
@@ -20,7 +26,13 @@ export type { EmptyStateProps } from "./components/EmptyState";
20
26
  export { ThemeToggle } from "./components/ThemeToggle";
21
27
  export { TOC } from "./components/TOC";
22
28
  export { Search } from "./components/Search";
29
+ export { DocsSidebar } from "./components/DocsSidebar";
30
+ export { DocsBreadcrumb } from "./components/DocsBreadcrumb";
31
+ export { PortfolioProjectCard } from "./components/PortfolioProjectCard";
32
+ export { PortfolioFilter } from "./components/PortfolioFilter";
23
33
  export { useThemePreference } from "./hooks/useTheme";
24
34
  export type { ThemePreference } from "./hooks/useTheme";
25
35
  export { useSearch } from "./hooks/useSearch";
36
+ export { validateTheme, formatValidationResult } from "./theme/validate-theme";
37
+ export type { ValidationResult, ValidationIssue, ValidationSeverity } from "./theme/validate-theme";
26
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACvE,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,QAAQ,EACR,WAAW,EACX,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAClH,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,QAAQ,EACR,WAAW,EACX,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -1,21 +1,30 @@
1
1
  export { defineTheme, defaultTheme } from "./theme/define-theme";
2
+ export { extendTheme } from "./theme/extend-theme";
2
3
  export { generateCSSVariables, generateThemeStylesheet } from "./theme/css-generator";
3
4
  export { resolveComponents } from "./theme/component-resolver";
4
5
  export { NoxionThemeProvider, useNoxionTheme, useNoxionTokens, useNoxionComponents, useNoxionLayout, useNoxionSlots, useNoxionTemplate, } from "./theme/ThemeProvider";
5
6
  export { resolveSlots } from "./theme/slot-resolver";
6
7
  export { resolveTemplate } from "./theme/template-resolver";
7
8
  export { BaseLayout, BlogLayout, DocsLayout, MagazineLayout } from "./layouts";
8
- export { HomePage, PostPage, ArchivePage, TagPage } from "./templates";
9
+ export { HomePage, PostPage, ArchivePage, TagPage, DocsPage, PortfolioGrid, PortfolioProject } from "./templates";
9
10
  export { NotionPage } from "./components/NotionPage";
10
11
  export { PostCard } from "./components/PostCard";
12
+ export { FeaturedPostCard } from "./components/FeaturedPostCard";
11
13
  export { PostList } from "./components/PostList";
14
+ export { HeroSection } from "./components/HeroSection";
12
15
  export { Header } from "./components/Header";
16
+ export { NoxionLogo } from "./components/NoxionLogo";
13
17
  export { Footer } from "./components/Footer";
14
18
  export { TagFilter } from "./components/TagFilter";
15
19
  export { EmptyState } from "./components/EmptyState";
16
20
  export { ThemeToggle } from "./components/ThemeToggle";
17
21
  export { TOC } from "./components/TOC";
18
22
  export { Search } from "./components/Search";
23
+ export { DocsSidebar } from "./components/DocsSidebar";
24
+ export { DocsBreadcrumb } from "./components/DocsBreadcrumb";
25
+ export { PortfolioProjectCard } from "./components/PortfolioProjectCard";
26
+ export { PortfolioFilter } from "./components/PortfolioFilter";
19
27
  export { useThemePreference } from "./hooks/useTheme";
20
28
  export { useSearch } from "./hooks/useSearch";
29
+ export { validateTheme, formatValidationResult } from "./theme/validate-theme";
21
30
  //# 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,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AA0BvE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAmClH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { NoxionTemplateProps } from "../theme/types";
2
+ export declare function DocsPage({ data, className }: NoxionTemplateProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=DocsPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocsPage.d.ts","sourceRoot":"","sources":["../../src/templates/DocsPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAK1D,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,mBAAmB,2CAwChE"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { NotionPage } from "../components/NotionPage";
3
+ export function DocsPage({ data, className }) {
4
+ const recordMap = data.recordMap;
5
+ const rootPageId = data.rootPageId;
6
+ const prev = data.prev;
7
+ const next = data.next;
8
+ if (!recordMap) {
9
+ return (_jsx("div", { className: "noxion-empty-state", children: _jsx("p", { className: "noxion-empty-state__message", children: "Page not found." }) }));
10
+ }
11
+ return (_jsxs("div", { className: className ? `noxion-template-docs ${className}` : "noxion-template-docs", children: [_jsx(NotionPage, { recordMap: recordMap, rootPageId: rootPageId }), (prev || next) && (_jsxs("nav", { className: "noxion-docs-nav", "aria-label": "Page navigation", children: [_jsx("div", { className: "noxion-docs-nav__prev", children: prev && (_jsxs("a", { href: `/${prev.slug}`, className: "noxion-docs-nav__link", children: [_jsx("span", { className: "noxion-docs-nav__label", children: "Previous" }), _jsx("span", { className: "noxion-docs-nav__title", children: prev.title })] })) }), _jsx("div", { className: "noxion-docs-nav__next", children: next && (_jsxs("a", { href: `/${next.slug}`, className: "noxion-docs-nav__link", children: [_jsx("span", { className: "noxion-docs-nav__label", children: "Next" }), _jsx("span", { className: "noxion-docs-nav__title", children: next.title })] })) })] }))] }));
12
+ }
13
+ //# sourceMappingURL=DocsPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocsPage.js","sourceRoot":"","sources":["../../src/templates/DocsPage.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAuB;IAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,SAA0C,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAgC,CAAC;IACzD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAsC,CAAC;IACzD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAsC,CAAC;IAEzD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CACL,cAAK,SAAS,EAAC,oBAAoB,YACjC,YAAG,SAAS,EAAC,6BAA6B,gCAAoB,GAC1D,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,wBAAwB,SAAS,EAAE,CAAC,CAAC,CAAC,sBAAsB,aACtF,KAAC,UAAU,IAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,GAAI,EAE3D,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CACjB,eAAK,SAAS,EAAC,iBAAiB,gBAAY,iBAAiB,aAC3D,cAAK,SAAS,EAAC,uBAAuB,YACnC,IAAI,IAAI,CACP,aAAG,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAC,uBAAuB,aACzD,eAAM,SAAS,EAAC,wBAAwB,yBAAgB,EACxD,eAAM,SAAS,EAAC,wBAAwB,YAAE,IAAI,CAAC,KAAK,GAAQ,IAC1D,CACL,GACG,EACN,cAAK,SAAS,EAAC,uBAAuB,YACnC,IAAI,IAAI,CACP,aAAG,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAC,uBAAuB,aACzD,eAAM,SAAS,EAAC,wBAAwB,qBAAY,EACpD,eAAM,SAAS,EAAC,wBAAwB,YAAE,IAAI,CAAC,KAAK,GAAQ,IAC1D,CACL,GACG,IACF,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HomePage.d.ts","sourceRoot":"","sources":["../../src/templates/HomePage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAI1D,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,mBAAmB,2CAQhE"}
1
+ {"version":3,"file":"HomePage.d.ts","sourceRoot":"","sources":["../../src/templates/HomePage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAK1D,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,mBAAmB,2CA6BhE"}
@@ -1,7 +1,16 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { HeroSection } from "../components/HeroSection";
2
3
  import { PostList } from "../components/PostList";
3
4
  export function HomePage({ data, className }) {
4
5
  const posts = (data.posts ?? []);
5
- return (_jsx("div", { className: className ? `noxion-template-home ${className}` : "noxion-template-home", children: _jsx(PostList, { posts: posts }) }));
6
+ const recentCount = typeof data.recentCount === "number" ? data.recentCount : 0;
7
+ const feedTitle = data.feedTitle ?? "All Posts";
8
+ const baseClass = className ? `noxion-template-home ${className}` : "noxion-template-home";
9
+ if (recentCount <= 0) {
10
+ return (_jsx("div", { className: baseClass, children: _jsx(PostList, { posts: posts }) }));
11
+ }
12
+ const heroPosts = posts.slice(0, recentCount);
13
+ const feedPosts = posts.slice(recentCount);
14
+ return (_jsxs("div", { className: baseClass, children: [_jsx(HeroSection, { posts: heroPosts }), feedPosts.length > 0 && (_jsxs("section", { className: "noxion-home-feed", children: [_jsx("h2", { className: "noxion-home-feed__title", children: feedTitle }), _jsx(PostList, { posts: feedPosts })] }))] }));
6
15
  }
7
16
  //# sourceMappingURL=HomePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HomePage.js","sourceRoot":"","sources":["../../src/templates/HomePage.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAuB;IAC/D,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAoB,CAAC;IAEpD,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,wBAAwB,SAAS,EAAE,CAAC,CAAC,CAAC,sBAAsB,YACtF,KAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,GAAI,GACtB,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"HomePage.js","sourceRoot":"","sources":["../../src/templates/HomePage.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAuB;IAC/D,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAoB,CAAC;IACpD,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,SAAS,GAAI,IAAI,CAAC,SAAoB,IAAI,WAAW,CAAC;IAC5D,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,wBAAwB,SAAS,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAE3F,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,YACvB,KAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,GAAI,GACtB,CACP,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAE3C,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,aACvB,KAAC,WAAW,IAAC,KAAK,EAAE,SAAS,GAAI,EAEhC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CACvB,mBAAS,SAAS,EAAC,kBAAkB,aACnC,aAAI,SAAS,EAAC,yBAAyB,YAAE,SAAS,GAAM,EACxD,KAAC,QAAQ,IAAC,KAAK,EAAE,SAAS,GAAI,IACtB,CACX,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { NoxionTemplateProps } from "../theme/types";
2
+ export declare function PortfolioGrid({ data, className }: NoxionTemplateProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=PortfolioGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortfolioGrid.d.ts","sourceRoot":"","sources":["../../src/templates/PortfolioGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAsB,MAAM,gBAAgB,CAAC;AAG9E,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,mBAAmB,2CAoBrE"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PortfolioProjectCard } from "../components/PortfolioProjectCard";
3
+ export function PortfolioGrid({ data, className }) {
4
+ const projects = (data.projects ?? []);
5
+ if (projects.length === 0) {
6
+ return (_jsx("div", { className: "noxion-empty-state", children: _jsx("p", { className: "noxion-empty-state__message", children: "No projects found." }) }));
7
+ }
8
+ return (_jsx("div", { className: className ? `noxion-template-portfolio-grid ${className}` : "noxion-template-portfolio-grid", children: _jsx("div", { className: "noxion-portfolio-grid", children: projects.map((project) => (_jsx(PortfolioProjectCard, { ...project }, project.id))) }) }));
9
+ }
10
+ //# sourceMappingURL=PortfolioGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortfolioGrid.js","sourceRoot":"","sources":["../../src/templates/PortfolioGrid.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,MAAM,UAAU,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAuB;IACpE,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAyB,CAAC;IAE/D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CACL,cAAK,SAAS,EAAC,oBAAoB,YACjC,YAAG,SAAS,EAAC,6BAA6B,mCAAuB,GAC7D,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC,CAAC,gCAAgC,YAC1G,cAAK,SAAS,EAAC,uBAAuB,YACnC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACzB,KAAC,oBAAoB,OAAsB,OAAO,IAAvB,OAAO,CAAC,EAAE,CAAiB,CACvD,CAAC,GACE,GACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { NoxionTemplateProps } from "../theme/types";
2
+ export declare function PortfolioProject({ data, className }: NoxionTemplateProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=PortfolioProject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortfolioProject.d.ts","sourceRoot":"","sources":["../../src/templates/PortfolioProject.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAsB,MAAM,gBAAgB,CAAC;AAI9E,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,mBAAmB,2CAwCxE"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { NotionPage } from "../components/NotionPage";
3
+ export function PortfolioProject({ data, className }) {
4
+ const recordMap = data.recordMap;
5
+ const rootPageId = data.rootPageId;
6
+ const project = data.project;
7
+ if (!recordMap) {
8
+ return (_jsx("div", { className: "noxion-empty-state", children: _jsx("p", { className: "noxion-empty-state__message", children: "Project not found." }) }));
9
+ }
10
+ return (_jsxs("div", { className: className ? `noxion-template-portfolio-project ${className}` : "noxion-template-portfolio-project", children: [project && (_jsxs("div", { className: "noxion-portfolio-project__header", children: [project.technologies && project.technologies.length > 0 && (_jsx("div", { className: "noxion-portfolio-project__tech", children: project.technologies.map((tech) => (_jsx("span", { className: "noxion-portfolio-project__tech-tag", children: tech }, tech))) })), project.projectUrl && (_jsx("a", { href: project.projectUrl, className: "noxion-portfolio-project__link", target: "_blank", rel: "noopener noreferrer", children: "Visit Project" }))] })), _jsx(NotionPage, { recordMap: recordMap, rootPageId: rootPageId })] }));
11
+ }
12
+ //# sourceMappingURL=PortfolioProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortfolioProject.js","sourceRoot":"","sources":["../../src/templates/PortfolioProject.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,MAAM,UAAU,gBAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAuB;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,SAA0C,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAgC,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAyC,CAAC;IAE/D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CACL,cAAK,SAAS,EAAC,oBAAoB,YACjC,YAAG,SAAS,EAAC,6BAA6B,mCAAuB,GAC7D,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,qCAAqC,SAAS,EAAE,CAAC,CAAC,CAAC,mCAAmC,aAC/G,OAAO,IAAI,CACV,eAAK,SAAS,EAAC,kCAAkC,aAC9C,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAC1D,cAAK,SAAS,EAAC,gCAAgC,YAC5C,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAClC,eAAiB,SAAS,EAAC,oCAAoC,YAAE,IAAI,IAA1D,IAAI,CAA8D,CAC9E,CAAC,GACE,CACP,EACA,OAAO,CAAC,UAAU,IAAI,CACrB,YACE,IAAI,EAAE,OAAO,CAAC,UAAU,EACxB,SAAS,EAAC,gCAAgC,EAC1C,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,8BAGvB,CACL,IACG,CACP,EAED,KAAC,UAAU,IAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,GAAI,IACxD,CACP,CAAC;AACJ,CAAC"}
@@ -1,3 +1,13 @@
1
1
  import type { NoxionTemplateProps } from "../theme/types";
2
+ /**
3
+ * Post page template.
4
+ *
5
+ * When `data.title` is provided, renders a full article layout with
6
+ * cover image, header (category, tags, title, description, author, date),
7
+ * and the Notion body (fullPage=false).
8
+ *
9
+ * When only `data.recordMap` is provided (backward-compat), renders just
10
+ * the Notion page with fullPage=true.
11
+ */
2
12
  export declare function PostPage({ data, className }: NoxionTemplateProps): import("react/jsx-runtime").JSX.Element;
3
13
  //# sourceMappingURL=PostPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PostPage.d.ts","sourceRoot":"","sources":["../../src/templates/PostPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAI1D,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,mBAAmB,2CAiBhE"}
1
+ {"version":3,"file":"PostPage.d.ts","sourceRoot":"","sources":["../../src/templates/PostPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAI1D;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,mBAAmB,2CA0FhE"}