@dmitriikapustin/ui 0.2.8 → 0.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -3436,12 +3436,16 @@ function DropdownMenu({
3436
3436
  }
3437
3437
 
3438
3438
  // css-inject-scss:/Users/dimakozh/Desktop/projects/kapustin.cc/packages/ui/src/organisms/Header.module.scss
3439
- __styleInject(`.Header-module_root {
3440
- border-bottom: 1px solid var(--border-color);
3439
+ __styleInject(`@charset "UTF-8";
3440
+ /* Header \u2014 pill-style (border + radius + margin) by default */
3441
+ .Header-module_root {
3442
+ margin: clamp(8px, 2vw, 24px);
3443
+ border: 1px solid var(--border-color);
3444
+ border-radius: var(--radius-2xl);
3441
3445
  background: color-mix(in srgb, var(--bg) 80%, transparent);
3442
3446
  backdrop-filter: blur(12px);
3443
3447
  position: sticky;
3444
- top: 0;
3448
+ top: clamp(8px, 2vw, 24px);
3445
3449
  z-index: 50;
3446
3450
  }
3447
3451
 
@@ -3474,16 +3478,6 @@ __styleInject(`.Header-module_root {
3474
3478
  gap: 2rem;
3475
3479
  }
3476
3480
 
3477
- .Header-module_logoFallback {
3478
- font-size: 1.125rem;
3479
- font-weight: 700;
3480
- color: var(--fg);
3481
- }
3482
-
3483
- .Header-module_logoBrand {
3484
- color: var(--brand-primary);
3485
- }
3486
-
3487
3481
  .Header-module_desktopNav {
3488
3482
  display: none;
3489
3483
  align-items: center;
@@ -3520,14 +3514,6 @@ __styleInject(`.Header-module_root {
3520
3514
 
3521
3515
  .Header-module_mobileToggle {
3522
3516
  display: block;
3523
- padding: 0.5rem;
3524
- color: var(--fg-secondary);
3525
- cursor: pointer;
3526
- background: none;
3527
- border: none;
3528
- }
3529
- .Header-module_mobileToggle:hover {
3530
- color: var(--fg);
3531
3517
  }
3532
3518
  @media (min-width: 768px) {
3533
3519
  .Header-module_mobileToggle {
@@ -3605,9 +3591,14 @@ function Header({ logo, navItems = [], actions, className = "" }) {
3605
3591
  }
3606
3592
 
3607
3593
  // css-inject-scss:/Users/dimakozh/Desktop/projects/kapustin.cc/packages/ui/src/organisms/Footer.module.scss
3608
- __styleInject(`.Footer-module_root {
3609
- border-top: 1px solid var(--border-color);
3594
+ __styleInject(`@charset "UTF-8";
3595
+ /* Footer \u2014 pill-style (border + radius + margin) by default */
3596
+ .Footer-module_root {
3597
+ margin: clamp(8px, 2vw, 24px);
3598
+ border: 1px solid var(--border-color);
3599
+ border-radius: var(--radius-2xl);
3610
3600
  background: var(--bg);
3601
+ overflow: hidden;
3611
3602
  }
3612
3603
 
3613
3604
  .Footer-module_container {
@@ -3637,18 +3628,13 @@ __styleInject(`.Footer-module_root {
3637
3628
  }
3638
3629
  }
3639
3630
 
3640
- .Footer-module_brand {
3641
- font-size: 1.125rem;
3642
- font-weight: 700;
3643
- color: var(--fg);
3644
- }
3645
-
3646
- .Footer-module_brandAccent {
3647
- color: var(--brand-primary);
3631
+ .Footer-module_brandCell {
3632
+ display: flex;
3633
+ flex-direction: column;
3648
3634
  }
3649
3635
 
3650
3636
  .Footer-module_tagline {
3651
- margin-top: 0.75rem;
3637
+ margin: 0.75rem 0 0 0;
3652
3638
  font-size: 13px;
3653
3639
  color: var(--fg-muted);
3654
3640
  line-height: 1.625;
@@ -3702,6 +3688,7 @@ __styleInject(`.Footer-module_root {
3702
3688
  font-size: 13px;
3703
3689
  color: var(--fg-muted);
3704
3690
  letter-spacing: -0.25px;
3691
+ margin: 0;
3705
3692
  }
3706
3693
 
3707
3694
  .Footer-module_socials {
@@ -3718,7 +3705,7 @@ __styleInject(`.Footer-module_root {
3718
3705
  .Footer-module_socialLink:hover {
3719
3706
  color: var(--fg);
3720
3707
  }`);
3721
- var __default43 = { "root": "Footer-module_root", "container": "Footer-module_container", "grid": "Footer-module_grid", "columnTitle": "Footer-module_columnTitle", "linkList": "Footer-module_linkList", "link": "Footer-module_link", "bottom": "Footer-module_bottom", "copyright": "Footer-module_copyright", "socials": "Footer-module_socials", "socialLink": "Footer-module_socialLink" };
3708
+ var __default43 = { "root": "Footer-module_root", "container": "Footer-module_container", "grid": "Footer-module_grid", "brandCell": "Footer-module_brandCell", "tagline": "Footer-module_tagline", "columnTitle": "Footer-module_columnTitle", "linkList": "Footer-module_linkList", "link": "Footer-module_link", "bottom": "Footer-module_bottom", "copyright": "Footer-module_copyright", "socials": "Footer-module_socials", "socialLink": "Footer-module_socialLink" };
3722
3709
  function Footer({
3723
3710
  brand,
3724
3711
  columns,
@@ -3726,11 +3713,15 @@ function Footer({
3726
3713
  copyright,
3727
3714
  className = ""
3728
3715
  }) {
3729
- const hasGrid = !!brand || columns && columns.length > 0;
3716
+ const hasBrand = !!(brand && (brand.logo || brand.tagline));
3717
+ const hasGrid = hasBrand || columns && columns.length > 0;
3730
3718
  const hasBottom = !!copyright || socials && socials.length > 0;
3731
3719
  return /* @__PURE__ */ jsxRuntime.jsx("footer", { className: `${__default43.root}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: __default43.container, children: [
3732
3720
  hasGrid && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: __default43.grid, children: [
3733
- brand && /* @__PURE__ */ jsxRuntime.jsx("div", { children: brand }),
3721
+ hasBrand && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: __default43.brandCell, children: [
3722
+ brand == null ? void 0 : brand.logo,
3723
+ (brand == null ? void 0 : brand.tagline) && /* @__PURE__ */ jsxRuntime.jsx("p", { className: __default43.tagline, children: brand.tagline })
3724
+ ] }),
3734
3725
  columns == null ? void 0 : columns.map((col) => /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
3735
3726
  /* @__PURE__ */ jsxRuntime.jsx("h4", { className: __default43.columnTitle, children: col.title }),
3736
3727
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: __default43.linkList, children: col.links.map((link) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: link.href, className: __default43.link, children: link.label }) }, link.label)) })
@@ -8528,18 +8519,23 @@ var __default80 = { "headerMode": "LandingLayout-module_headerMode", "headerMain
8528
8519
  function LandingLayout({
8529
8520
  mode = "header",
8530
8521
  nav,
8522
+ footer,
8531
8523
  children,
8532
8524
  className = ""
8533
8525
  }) {
8534
8526
  if (mode === "sidebar") {
8535
8527
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${__default80.sidebarMode}${className ? ` ${className}` : ""}`, children: [
8536
8528
  nav && /* @__PURE__ */ jsxRuntime.jsx("div", { className: __default80.sidebarNav, children: nav }),
8537
- /* @__PURE__ */ jsxRuntime.jsx("main", { className: __default80.sidebarMain, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: __default80.sidebarContent, children }) })
8529
+ /* @__PURE__ */ jsxRuntime.jsxs("main", { className: __default80.sidebarMain, children: [
8530
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: __default80.sidebarContent, children }),
8531
+ footer
8532
+ ] })
8538
8533
  ] });
8539
8534
  }
8540
8535
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${__default80.headerMode}${className ? ` ${className}` : ""}`, children: [
8541
8536
  nav,
8542
- /* @__PURE__ */ jsxRuntime.jsx("main", { className: __default80.headerMain, children })
8537
+ /* @__PURE__ */ jsxRuntime.jsx("main", { className: __default80.headerMain, children }),
8538
+ footer
8543
8539
  ] });
8544
8540
  }
8545
8541
 
package/dist/index.d.cts CHANGED
@@ -471,9 +471,15 @@ interface FooterSocial {
471
471
  label: string;
472
472
  href: string;
473
473
  }
474
+ interface FooterBrand {
475
+ /** Логотип / brand-mark — любой JSX. */
476
+ logo?: ReactNode;
477
+ /** Tagline под логотипом. Применяется внутренний дизайн-стиль (13px, fg-muted, отступ сверху). */
478
+ tagline?: string;
479
+ }
474
480
  interface FooterProps {
475
481
  /** Brand-cell слева в grid. Если undefined — ячейка не рендерится. */
476
- brand?: ReactNode;
482
+ brand?: FooterBrand;
477
483
  /** Колонки навигации. */
478
484
  columns?: FooterColumn[];
479
485
  /** Соц-ссылки в нижнем баре. Если undefined / [] — не рендерится. */
@@ -1035,9 +1041,11 @@ interface LandingLayoutProps {
1035
1041
  mode?: 'header' | 'sidebar';
1036
1042
  /** Navigation element — Header for header mode, Sidebar for sidebar mode */
1037
1043
  nav?: ReactNode;
1044
+ /** Footer element. Rendered sibling to `<main>` (full viewport width, без max-width-обёртки). */
1045
+ footer?: ReactNode;
1038
1046
  children: ReactNode;
1039
1047
  className?: string;
1040
1048
  }
1041
- declare function LandingLayout({ mode, nav, children, className, }: LandingLayoutProps): react_jsx_runtime.JSX.Element;
1049
+ declare function LandingLayout({ mode, nav, footer, children, className, }: LandingLayoutProps): react_jsx_runtime.JSX.Element;
1042
1050
 
1043
1051
  export { Alert, AppCard, AppTopLine, ArticleBarChart, type ArticleBarChartProps, ArticleBody, type ArticleBodyProps, ArticleChatBlock, type ArticleChatBlockProps, ArticleFigure, type ArticleFigureProps, ArticleFooter, type ArticleFooterProps, ArticleHeading, type ArticleHeadingProps, ArticleHero, type ArticleHeroProps, ArticleLayout, type ArticleLayoutProps, ArticleLineChart, type ArticleLineChartProps, ArticleLinkButton, type ArticleLinkButtonProps, ArticleList, type ArticleListProps, ArticleNarrow, ArticleNote, type ArticleNoteProps, ArticleScatterChart, type ArticleScatterChartProps, ArticleTable, type ArticleTableColumn, type ArticleTableProps, type ArticleTableRow, ArticleWide, Avatar, Badge, BentoGrid, Breadcrumbs, Button, CTASection, Card, type ChartSeries, ChatInput, ChatMessage, Checkbox, CodeInput, ComparisonTable, Divider, DropdownMenu, EmptyState, FAQSection, FeatureGrid, Footer, FormField, Gallery, Header, HeroSection, IconBadge, IconButton, IconWithText, IconlyActivity, IconlyAttach, IconlyBook, IconlyCheck, IconlyChevronDown, IconlyChevronLeft, IconlyChevronRight, IconlyClock, IconlyClose, IconlyError, IconlyEye, IconlyEyeOff, IconlyHeart, IconlyInfo, IconlyInfoCircle, IconlyLink, IconlyLock, IconlyMail, IconlyMenu, IconlyMoon, IconlyQuote, IconlyRoadmap, IconlySandbox, IconlySearch, IconlySend, IconlyShield, IconlySmile, IconlyStar, IconlySuccess, IconlySun, IconlyWarning, Input, LandingLayout, Logo, LogoCloud, MenuItem, Modal, Pagination, PasswordInput, PricingCard, ProfileNav, PromoActionCards, PromoBento, PromoDevicesCTA, PromoHero, PromoHeroForm, PromoPricing, PromoShowcase, PromoSplit, PromoTestimonials, PromoTrustGrid, Radio, type ScatterPoint, SearchBar, Select, Sidebar, type SidebarItem, Skeleton, Spinner, StampCard, Stat, StatBadge, StatsBar, Link as StyledLink, Tabs, Tag, TestimonialCard, Textarea, TicketButton, Toast, Toggle, Tooltip, TopPromo };
package/dist/index.d.ts CHANGED
@@ -471,9 +471,15 @@ interface FooterSocial {
471
471
  label: string;
472
472
  href: string;
473
473
  }
474
+ interface FooterBrand {
475
+ /** Логотип / brand-mark — любой JSX. */
476
+ logo?: ReactNode;
477
+ /** Tagline под логотипом. Применяется внутренний дизайн-стиль (13px, fg-muted, отступ сверху). */
478
+ tagline?: string;
479
+ }
474
480
  interface FooterProps {
475
481
  /** Brand-cell слева в grid. Если undefined — ячейка не рендерится. */
476
- brand?: ReactNode;
482
+ brand?: FooterBrand;
477
483
  /** Колонки навигации. */
478
484
  columns?: FooterColumn[];
479
485
  /** Соц-ссылки в нижнем баре. Если undefined / [] — не рендерится. */
@@ -1035,9 +1041,11 @@ interface LandingLayoutProps {
1035
1041
  mode?: 'header' | 'sidebar';
1036
1042
  /** Navigation element — Header for header mode, Sidebar for sidebar mode */
1037
1043
  nav?: ReactNode;
1044
+ /** Footer element. Rendered sibling to `<main>` (full viewport width, без max-width-обёртки). */
1045
+ footer?: ReactNode;
1038
1046
  children: ReactNode;
1039
1047
  className?: string;
1040
1048
  }
1041
- declare function LandingLayout({ mode, nav, children, className, }: LandingLayoutProps): react_jsx_runtime.JSX.Element;
1049
+ declare function LandingLayout({ mode, nav, footer, children, className, }: LandingLayoutProps): react_jsx_runtime.JSX.Element;
1042
1050
 
1043
1051
  export { Alert, AppCard, AppTopLine, ArticleBarChart, type ArticleBarChartProps, ArticleBody, type ArticleBodyProps, ArticleChatBlock, type ArticleChatBlockProps, ArticleFigure, type ArticleFigureProps, ArticleFooter, type ArticleFooterProps, ArticleHeading, type ArticleHeadingProps, ArticleHero, type ArticleHeroProps, ArticleLayout, type ArticleLayoutProps, ArticleLineChart, type ArticleLineChartProps, ArticleLinkButton, type ArticleLinkButtonProps, ArticleList, type ArticleListProps, ArticleNarrow, ArticleNote, type ArticleNoteProps, ArticleScatterChart, type ArticleScatterChartProps, ArticleTable, type ArticleTableColumn, type ArticleTableProps, type ArticleTableRow, ArticleWide, Avatar, Badge, BentoGrid, Breadcrumbs, Button, CTASection, Card, type ChartSeries, ChatInput, ChatMessage, Checkbox, CodeInput, ComparisonTable, Divider, DropdownMenu, EmptyState, FAQSection, FeatureGrid, Footer, FormField, Gallery, Header, HeroSection, IconBadge, IconButton, IconWithText, IconlyActivity, IconlyAttach, IconlyBook, IconlyCheck, IconlyChevronDown, IconlyChevronLeft, IconlyChevronRight, IconlyClock, IconlyClose, IconlyError, IconlyEye, IconlyEyeOff, IconlyHeart, IconlyInfo, IconlyInfoCircle, IconlyLink, IconlyLock, IconlyMail, IconlyMenu, IconlyMoon, IconlyQuote, IconlyRoadmap, IconlySandbox, IconlySearch, IconlySend, IconlyShield, IconlySmile, IconlyStar, IconlySuccess, IconlySun, IconlyWarning, Input, LandingLayout, Logo, LogoCloud, MenuItem, Modal, Pagination, PasswordInput, PricingCard, ProfileNav, PromoActionCards, PromoBento, PromoDevicesCTA, PromoHero, PromoHeroForm, PromoPricing, PromoShowcase, PromoSplit, PromoTestimonials, PromoTrustGrid, Radio, type ScatterPoint, SearchBar, Select, Sidebar, type SidebarItem, Skeleton, Spinner, StampCard, Stat, StatBadge, StatsBar, Link as StyledLink, Tabs, Tag, TestimonialCard, Textarea, TicketButton, Toast, Toggle, Tooltip, TopPromo };
package/dist/index.js CHANGED
@@ -3430,12 +3430,16 @@ function DropdownMenu({
3430
3430
  }
3431
3431
 
3432
3432
  // css-inject-scss:/Users/dimakozh/Desktop/projects/kapustin.cc/packages/ui/src/organisms/Header.module.scss
3433
- __styleInject(`.Header-module_root {
3434
- border-bottom: 1px solid var(--border-color);
3433
+ __styleInject(`@charset "UTF-8";
3434
+ /* Header \u2014 pill-style (border + radius + margin) by default */
3435
+ .Header-module_root {
3436
+ margin: clamp(8px, 2vw, 24px);
3437
+ border: 1px solid var(--border-color);
3438
+ border-radius: var(--radius-2xl);
3435
3439
  background: color-mix(in srgb, var(--bg) 80%, transparent);
3436
3440
  backdrop-filter: blur(12px);
3437
3441
  position: sticky;
3438
- top: 0;
3442
+ top: clamp(8px, 2vw, 24px);
3439
3443
  z-index: 50;
3440
3444
  }
3441
3445
 
@@ -3468,16 +3472,6 @@ __styleInject(`.Header-module_root {
3468
3472
  gap: 2rem;
3469
3473
  }
3470
3474
 
3471
- .Header-module_logoFallback {
3472
- font-size: 1.125rem;
3473
- font-weight: 700;
3474
- color: var(--fg);
3475
- }
3476
-
3477
- .Header-module_logoBrand {
3478
- color: var(--brand-primary);
3479
- }
3480
-
3481
3475
  .Header-module_desktopNav {
3482
3476
  display: none;
3483
3477
  align-items: center;
@@ -3514,14 +3508,6 @@ __styleInject(`.Header-module_root {
3514
3508
 
3515
3509
  .Header-module_mobileToggle {
3516
3510
  display: block;
3517
- padding: 0.5rem;
3518
- color: var(--fg-secondary);
3519
- cursor: pointer;
3520
- background: none;
3521
- border: none;
3522
- }
3523
- .Header-module_mobileToggle:hover {
3524
- color: var(--fg);
3525
3511
  }
3526
3512
  @media (min-width: 768px) {
3527
3513
  .Header-module_mobileToggle {
@@ -3599,9 +3585,14 @@ function Header({ logo, navItems = [], actions, className = "" }) {
3599
3585
  }
3600
3586
 
3601
3587
  // css-inject-scss:/Users/dimakozh/Desktop/projects/kapustin.cc/packages/ui/src/organisms/Footer.module.scss
3602
- __styleInject(`.Footer-module_root {
3603
- border-top: 1px solid var(--border-color);
3588
+ __styleInject(`@charset "UTF-8";
3589
+ /* Footer \u2014 pill-style (border + radius + margin) by default */
3590
+ .Footer-module_root {
3591
+ margin: clamp(8px, 2vw, 24px);
3592
+ border: 1px solid var(--border-color);
3593
+ border-radius: var(--radius-2xl);
3604
3594
  background: var(--bg);
3595
+ overflow: hidden;
3605
3596
  }
3606
3597
 
3607
3598
  .Footer-module_container {
@@ -3631,18 +3622,13 @@ __styleInject(`.Footer-module_root {
3631
3622
  }
3632
3623
  }
3633
3624
 
3634
- .Footer-module_brand {
3635
- font-size: 1.125rem;
3636
- font-weight: 700;
3637
- color: var(--fg);
3638
- }
3639
-
3640
- .Footer-module_brandAccent {
3641
- color: var(--brand-primary);
3625
+ .Footer-module_brandCell {
3626
+ display: flex;
3627
+ flex-direction: column;
3642
3628
  }
3643
3629
 
3644
3630
  .Footer-module_tagline {
3645
- margin-top: 0.75rem;
3631
+ margin: 0.75rem 0 0 0;
3646
3632
  font-size: 13px;
3647
3633
  color: var(--fg-muted);
3648
3634
  line-height: 1.625;
@@ -3696,6 +3682,7 @@ __styleInject(`.Footer-module_root {
3696
3682
  font-size: 13px;
3697
3683
  color: var(--fg-muted);
3698
3684
  letter-spacing: -0.25px;
3685
+ margin: 0;
3699
3686
  }
3700
3687
 
3701
3688
  .Footer-module_socials {
@@ -3712,7 +3699,7 @@ __styleInject(`.Footer-module_root {
3712
3699
  .Footer-module_socialLink:hover {
3713
3700
  color: var(--fg);
3714
3701
  }`);
3715
- var __default43 = { "root": "Footer-module_root", "container": "Footer-module_container", "grid": "Footer-module_grid", "columnTitle": "Footer-module_columnTitle", "linkList": "Footer-module_linkList", "link": "Footer-module_link", "bottom": "Footer-module_bottom", "copyright": "Footer-module_copyright", "socials": "Footer-module_socials", "socialLink": "Footer-module_socialLink" };
3702
+ var __default43 = { "root": "Footer-module_root", "container": "Footer-module_container", "grid": "Footer-module_grid", "brandCell": "Footer-module_brandCell", "tagline": "Footer-module_tagline", "columnTitle": "Footer-module_columnTitle", "linkList": "Footer-module_linkList", "link": "Footer-module_link", "bottom": "Footer-module_bottom", "copyright": "Footer-module_copyright", "socials": "Footer-module_socials", "socialLink": "Footer-module_socialLink" };
3716
3703
  function Footer({
3717
3704
  brand,
3718
3705
  columns,
@@ -3720,11 +3707,15 @@ function Footer({
3720
3707
  copyright,
3721
3708
  className = ""
3722
3709
  }) {
3723
- const hasGrid = !!brand || columns && columns.length > 0;
3710
+ const hasBrand = !!(brand && (brand.logo || brand.tagline));
3711
+ const hasGrid = hasBrand || columns && columns.length > 0;
3724
3712
  const hasBottom = !!copyright || socials && socials.length > 0;
3725
3713
  return /* @__PURE__ */ jsx("footer", { className: `${__default43.root}${className ? ` ${className}` : ""}`, children: /* @__PURE__ */ jsxs("div", { className: __default43.container, children: [
3726
3714
  hasGrid && /* @__PURE__ */ jsxs("div", { className: __default43.grid, children: [
3727
- brand && /* @__PURE__ */ jsx("div", { children: brand }),
3715
+ hasBrand && /* @__PURE__ */ jsxs("div", { className: __default43.brandCell, children: [
3716
+ brand == null ? void 0 : brand.logo,
3717
+ (brand == null ? void 0 : brand.tagline) && /* @__PURE__ */ jsx("p", { className: __default43.tagline, children: brand.tagline })
3718
+ ] }),
3728
3719
  columns == null ? void 0 : columns.map((col) => /* @__PURE__ */ jsxs("div", { children: [
3729
3720
  /* @__PURE__ */ jsx("h4", { className: __default43.columnTitle, children: col.title }),
3730
3721
  /* @__PURE__ */ jsx("ul", { className: __default43.linkList, children: col.links.map((link) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("a", { href: link.href, className: __default43.link, children: link.label }) }, link.label)) })
@@ -8522,18 +8513,23 @@ var __default80 = { "headerMode": "LandingLayout-module_headerMode", "headerMain
8522
8513
  function LandingLayout({
8523
8514
  mode = "header",
8524
8515
  nav,
8516
+ footer,
8525
8517
  children,
8526
8518
  className = ""
8527
8519
  }) {
8528
8520
  if (mode === "sidebar") {
8529
8521
  return /* @__PURE__ */ jsxs("div", { className: `${__default80.sidebarMode}${className ? ` ${className}` : ""}`, children: [
8530
8522
  nav && /* @__PURE__ */ jsx("div", { className: __default80.sidebarNav, children: nav }),
8531
- /* @__PURE__ */ jsx("main", { className: __default80.sidebarMain, children: /* @__PURE__ */ jsx("div", { className: __default80.sidebarContent, children }) })
8523
+ /* @__PURE__ */ jsxs("main", { className: __default80.sidebarMain, children: [
8524
+ /* @__PURE__ */ jsx("div", { className: __default80.sidebarContent, children }),
8525
+ footer
8526
+ ] })
8532
8527
  ] });
8533
8528
  }
8534
8529
  return /* @__PURE__ */ jsxs("div", { className: `${__default80.headerMode}${className ? ` ${className}` : ""}`, children: [
8535
8530
  nav,
8536
- /* @__PURE__ */ jsx("main", { className: __default80.headerMain, children })
8531
+ /* @__PURE__ */ jsx("main", { className: __default80.headerMain, children }),
8532
+ footer
8537
8533
  ] });
8538
8534
  }
8539
8535
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dmitriikapustin/ui",
3
- "version": "0.2.8",
3
+ "version": "0.2.10",
4
4
  "description": "Universal UI/UX Kit — React 19 component library with Atomic Design, CSS custom properties, and SCSS modules",
5
5
  "author": "Kapustin Team",
6
6
  "license": "MIT",