@moontra/moonui-pro 3.4.7 → 3.4.8

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.mjs CHANGED
@@ -2572,21 +2572,31 @@ function useFramerScroll({
2572
2572
  const { scrollY } = useScroll();
2573
2573
  useMotionValueEvent(scrollY, "change", (latest) => {
2574
2574
  const previous = scrollY.getPrevious() || 0;
2575
+ console.log("\u{1F50D} USE-FRAMER-SCROLL HOOK:", {
2576
+ latest,
2577
+ previous,
2578
+ scrolledThreshold,
2579
+ hiddenThreshold,
2580
+ disableHiding,
2581
+ willBeScrolled: latest > scrolledThreshold,
2582
+ willBeHidden: !disableHiding && latest > previous && latest > hiddenThreshold
2583
+ });
2575
2584
  if (latest > scrolledThreshold) {
2576
2585
  setIsScrolled(true);
2577
2586
  } else {
2578
2587
  setIsScrolled(false);
2579
2588
  }
2580
2589
  if (!disableHiding) {
2581
- if (latest < previous) {
2582
- setIsHidden(false);
2583
- } else if (latest > previous && latest > hiddenThreshold) {
2590
+ if (latest > previous && latest > hiddenThreshold) {
2584
2591
  setIsHidden(true);
2585
- } else if (latest <= hiddenThreshold) {
2592
+ console.log("\u2705 HIDING NAVBAR (auto-hide mode)");
2593
+ } else {
2586
2594
  setIsHidden(false);
2595
+ console.log("\u2705 SHOWING NAVBAR (auto-hide mode)");
2587
2596
  }
2588
2597
  } else {
2589
2598
  setIsHidden(false);
2599
+ console.log("\u2705 STICKY MODE - NEVER HIDE");
2590
2600
  }
2591
2601
  });
2592
2602
  return {
@@ -78895,8 +78905,11 @@ function NavbarInternal({
78895
78905
  return "h-16";
78896
78906
  }
78897
78907
  };
78908
+ const isFloatingVariant = variant === "floating-auto-hide" || variant === "floating-sticky";
78898
78909
  const navClasses = cn(
78899
- "moonui-pro transition-all duration-300 ease-in-out",
78910
+ "moonui-pro",
78911
+ // transition-all SADECE non-floating variant'larda kullan (Framer Motion ile çakışmasın)
78912
+ !isFloatingVariant && "transition-all duration-300 ease-in-out",
78900
78913
  // w-full sadece floating-centered overlay olmadığında
78901
78914
  !(variant === "floating-centered" && overlayMode) && "w-full",
78902
78915
  // Base variant styles
@@ -78919,11 +78932,13 @@ function NavbarInternal({
78919
78932
  !containerMaxWidth && autoExpand && "max-w-max"
78920
78933
  ),
78921
78934
  variant === "floating-auto-hide" && cn(
78922
- "fixed top-0 z-50 w-full border-b transition-all duration-300",
78935
+ "fixed top-0 z-50 w-full border-b",
78936
+ // transition kaldırıldı - Framer Motion kullanıyor
78923
78937
  framerScroll.isScrolled ? "border-b bg-background/80 backdrop-blur-xl shadow-lg" : "border-b border-transparent bg-background/95 backdrop-blur"
78924
78938
  ),
78925
78939
  variant === "floating-sticky" && cn(
78926
- "fixed top-0 z-50 w-full border-b transition-all duration-300",
78940
+ "fixed top-0 z-50 w-full border-b",
78941
+ // transition kaldırıldı - Framer Motion kullanıyor
78927
78942
  framerScroll.isScrolled ? "border-b bg-background/80 backdrop-blur-xl shadow-lg" : "border-b border-transparent bg-background/95 backdrop-blur"
78928
78943
  ),
78929
78944
  variant === "minimal" && "bg-background",
@@ -78936,7 +78951,8 @@ function NavbarInternal({
78936
78951
  // Scroll states
78937
78952
  scrolled && sticky && variant !== "transparent" && "shadow-sm",
78938
78953
  scrolled && variant === "transparent" && "bg-background/95 backdrop-blur border-b",
78939
- scrollBehavior === "hide" && hidden && "-translate-y-full",
78954
+ scrollBehavior === "hide" && hidden && !isFloatingVariant && "-translate-y-full",
78955
+ // Floating'de Framer Motion kullan
78940
78956
  // Glass effect
78941
78957
  glassmorphism && "bg-background/80 backdrop-blur-xl border-white/10",
78942
78958
  blur2 && "backdrop-blur-md",
@@ -78947,28 +78963,48 @@ function NavbarInternal({
78947
78963
  customStyles?.border,
78948
78964
  className
78949
78965
  );
78950
- const NavWrapper = variant === "floating-auto-hide" ? motion.nav : "nav";
78951
- const navMotionProps = variant === "floating-auto-hide" ? {
78966
+ const NavWrapper = isFloatingVariant ? motion.nav : "nav";
78967
+ console.log("\u{1F680} NAVBAR PACKAGE VERSION CHECK:", {
78968
+ variant,
78969
+ isFloatingVariant,
78970
+ isHidden: framerScroll.isHidden,
78971
+ isScrolled: framerScroll.isScrolled,
78972
+ NavWrapper: NavWrapper === motion.nav ? "motion.nav \u2705" : "plain nav \u274C",
78973
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
78974
+ });
78975
+ const navMotionProps = isFloatingVariant ? {
78952
78976
  animate: {
78953
78977
  y: framerScroll.isHidden ? -100 : 0,
78978
+ // auto-hide: -100/0, sticky: always 0
78954
78979
  opacity: framerScroll.isHidden ? 0 : 1
78980
+ // auto-hide: 0/1, sticky: always 1
78955
78981
  },
78956
78982
  transition: {
78957
- duration: 0.5,
78958
- // Daha smooth animasyon (0.3'ten 0.5'e çıktı)
78983
+ duration: 0.3,
78984
+ // Header ile aynı (0.5'ten 0.3'e döndü)
78959
78985
  ease: "easeInOut"
78960
78986
  }
78961
78987
  } : {};
78988
+ console.log("\u{1F3AC} MOTION PROPS:", {
78989
+ hasProps: Object.keys(navMotionProps).length > 0,
78990
+ animate: navMotionProps.animate,
78991
+ transition: navMotionProps.transition
78992
+ });
78993
+ const floatingClasses = isFloatingVariant ? cn(
78994
+ "fixed top-0 z-50 w-full transition-all duration-300",
78995
+ framerScroll.isScrolled ? "border-b bg-background/80 backdrop-blur-xl shadow-lg" : "border-b border-transparent bg-background/95 backdrop-blur"
78996
+ ) : navClasses;
78962
78997
  return /* @__PURE__ */ jsxs(Fragment, { children: [
78963
- /* @__PURE__ */ jsxs(NavWrapper, { ref: navRef, className: navClasses, ...navMotionProps, children: [
78998
+ /* @__PURE__ */ jsxs(NavWrapper, { ref: navRef, className: floatingClasses, ...navMotionProps, children: [
78964
78999
  variant === "floating-auto-hide" || variant === "floating-sticky" ? (
78965
79000
  // Floating variants için iki katmanlı yapı (header.tsx pattern)
79001
+ // IMPORTANT: container class yerine w-full kullan (Tailwind container max-width getiriyor)
78966
79002
  /* @__PURE__ */ jsx(
78967
79003
  "div",
78968
79004
  {
78969
79005
  className: cn(
78970
- "container mx-auto transition-all duration-300",
78971
- framerScroll.isScrolled ? "max-w-6xl" : "max-w-full"
79006
+ "transition-all duration-300",
79007
+ framerScroll.isScrolled ? "max-w-6xl mx-auto px-2 sm:px-3 lg:px-4" : "w-full px-2 sm:px-3 lg:px-4"
78972
79008
  ),
78973
79009
  children: /* @__PURE__ */ jsxs(
78974
79010
  "div",
@@ -79000,7 +79036,18 @@ function NavbarInternal({
79000
79036
  className: "flex items-center gap-2",
79001
79037
  children: [
79002
79038
  branding.logo,
79003
- branding.title && !isMobile && /* @__PURE__ */ jsx("span", { className: "font-semibold text-lg", children: branding.title })
79039
+ /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: branding.title && !isMobile && !framerScroll.isScrolled && /* @__PURE__ */ jsx(
79040
+ motion.span,
79041
+ {
79042
+ className: "font-semibold text-lg overflow-hidden",
79043
+ initial: { opacity: 0, width: 0 },
79044
+ animate: { opacity: 1, width: "auto" },
79045
+ exit: { opacity: 0, width: 0 },
79046
+ transition: { duration: 0.2, ease: "easeInOut" },
79047
+ children: branding.title
79048
+ },
79049
+ "logo-text"
79050
+ ) })
79004
79051
  ]
79005
79052
  }
79006
79053
  )
@@ -79012,8 +79059,8 @@ function NavbarInternal({
79012
79059
  {
79013
79060
  className: cn(
79014
79061
  "hidden md:flex",
79015
- // Overflow handling - auto-expand veya horizontal scroll
79016
- autoExpand ? "flex-nowrap" : "flex-wrap overflow-x-auto scrollbar-hide scroll-smooth",
79062
+ // Overflow handling - minimal için otomatik expand, diğerleri user tercih
79063
+ autoExpand || !isFloatingVariant && variant === "minimal" ? "flex-nowrap" : "flex-wrap overflow-x-auto scrollbar-hide scroll-smooth",
79017
79064
  // Positioning - floating variants
79018
79065
  navItemsPosition === "center" && "flex-1 justify-center mx-4",
79019
79066
  navItemsPosition === "right" && "ml-auto",
@@ -79090,7 +79137,7 @@ function NavbarInternal({
79090
79137
  }
79091
79138
  ),
79092
79139
  /* @__PURE__ */ jsxs("div", { className: "ml-auto flex items-center gap-2", children: [
79093
- showSearch && /* @__PURE__ */ jsx(Fragment, { children: isMobile ? /* @__PURE__ */ jsx(
79140
+ showSearch && !framerScroll.isScrolled && /* @__PURE__ */ jsx(Fragment, { children: isMobile ? /* @__PURE__ */ jsx(
79094
79141
  MoonUIButtonPro,
79095
79142
  {
79096
79143
  variant: "ghost",
@@ -79215,7 +79262,7 @@ function NavbarInternal({
79215
79262
  )
79216
79263
  ] })
79217
79264
  ] })),
79218
- notifications && /* @__PURE__ */ jsxs(MoonUIDropdownMenuPro, { children: [
79265
+ notifications && !framerScroll.isScrolled && /* @__PURE__ */ jsxs(MoonUIDropdownMenuPro, { children: [
79219
79266
  /* @__PURE__ */ jsx(MoonUIDropdownMenuTriggerPro, { asChild: true, children: /* @__PURE__ */ jsxs(
79220
79267
  MoonUIButtonPro,
79221
79268
  {
@@ -79338,7 +79385,7 @@ function NavbarInternal({
79338
79385
  }
79339
79386
  )
79340
79387
  ] }),
79341
- cta && /* @__PURE__ */ jsx(
79388
+ cta && !framerScroll.isScrolled && /* @__PURE__ */ jsx(
79342
79389
  MoonUIButtonPro,
79343
79390
  {
79344
79391
  variant: cta.variant || "primary",
@@ -79366,7 +79413,7 @@ function NavbarInternal({
79366
79413
  children: cta.text
79367
79414
  }
79368
79415
  ),
79369
- userMenu && /* @__PURE__ */ jsxs(MoonUIDropdownMenuPro, { children: [
79416
+ userMenu && !framerScroll.isScrolled && /* @__PURE__ */ jsxs(MoonUIDropdownMenuPro, { children: [
79370
79417
  /* @__PURE__ */ jsx(MoonUIDropdownMenuTriggerPro, { asChild: true, children: /* @__PURE__ */ jsx(
79371
79418
  MoonUIButtonPro,
79372
79419
  {
@@ -79421,7 +79468,10 @@ function NavbarInternal({
79421
79468
  "transition-[height] duration-300 ease-in-out",
79422
79469
  getHeight(),
79423
79470
  // floating-centered için özel logic - outer nav zaten max-width kontrol ediyor
79424
- variant === "floating-centered" ? "w-full px-6" : fullWidth ? "w-full px-4 sm:px-6 lg:px-8" : maxWidth === "sm" && "container max-w-screen-sm" || maxWidth === "md" && "container max-w-screen-md" || maxWidth === "lg" && "container max-w-screen-lg" || maxWidth === "xl" && "container max-w-screen-xl" || maxWidth === "2xl" && "container max-w-screen-2xl" || maxWidth === "full" && "w-full px-4 sm:px-6 lg:px-8"
79471
+ variant === "floating-centered" ? "w-full px-6" : (
79472
+ // minimal variant için tam genişlik (menu'ler yayılsın)
79473
+ variant === "minimal" ? "w-full px-4 sm:px-6 lg:px-8" : fullWidth ? "w-full px-4 sm:px-6 lg:px-8" : maxWidth === "sm" && "container max-w-screen-sm" || maxWidth === "md" && "container max-w-screen-md" || maxWidth === "lg" && "container max-w-screen-lg" || maxWidth === "xl" && "container max-w-screen-xl" || maxWidth === "2xl" && "container max-w-screen-2xl" || maxWidth === "full" && "w-full px-4 sm:px-6 lg:px-8"
79474
+ )
79425
79475
  ),
79426
79476
  children: [
79427
79477
  branding && /* @__PURE__ */ jsxs(
@@ -79446,7 +79496,18 @@ function NavbarInternal({
79446
79496
  className: "flex items-center gap-2",
79447
79497
  children: [
79448
79498
  branding.logo,
79449
- branding.title && !isMobile && /* @__PURE__ */ jsx("span", { className: "font-semibold text-lg", children: branding.title })
79499
+ /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: branding.title && !isMobile && !framerScroll.isScrolled && /* @__PURE__ */ jsx(
79500
+ motion.span,
79501
+ {
79502
+ className: "font-semibold text-lg overflow-hidden",
79503
+ initial: { opacity: 0, width: 0 },
79504
+ animate: { opacity: 1, width: "auto" },
79505
+ exit: { opacity: 0, width: 0 },
79506
+ transition: { duration: 0.2, ease: "easeInOut" },
79507
+ children: branding.title
79508
+ },
79509
+ "logo-text"
79510
+ ) })
79450
79511
  ]
79451
79512
  }
79452
79513
  )
@@ -79458,8 +79519,10 @@ function NavbarInternal({
79458
79519
  {
79459
79520
  className: cn(
79460
79521
  "hidden md:flex",
79461
- // Overflow handling - auto-expand veya horizontal scroll
79462
- autoExpand ? "flex-nowrap" : "flex-wrap overflow-x-auto scrollbar-hide scroll-smooth",
79522
+ // Minimal için tam genişlik + spacing
79523
+ variant === "minimal" && "flex-1 w-full",
79524
+ // Overflow handling - minimal için otomatik expand, diğerleri user tercih
79525
+ autoExpand || !isFloatingVariant && variant === "minimal" ? "flex-nowrap" : "flex-wrap overflow-x-auto scrollbar-hide scroll-smooth",
79463
79526
  // Positioning
79464
79527
  navItemsPosition === "center" && variant !== "floating-centered" && "flex-1 justify-center mx-4",
79465
79528
  navItemsPosition === "center" && variant === "floating-centered" && "flex-1 justify-center",
@@ -79469,75 +79532,84 @@ function NavbarInternal({
79469
79532
  isMinimal && minimalConfig?.centerOnScroll && navItemsPosition !== "center" && "flex-1 justify-center",
79470
79533
  navItemsPosition === "center" && variant !== "floating-centered" && "absolute left-1/2 transform -translate-x-1/2"
79471
79534
  ),
79472
- children: /* @__PURE__ */ jsx(NavigationMenuList2, { children: sections.map((section) => /* @__PURE__ */ jsx(React64__default.Fragment, { children: section.items.map((item) => {
79473
- const hasChildren = item.items && item.items.length > 0;
79474
- const isActive2 = item.href === activePath;
79475
- if (hasChildren) {
79476
- return /* @__PURE__ */ jsxs(
79477
- NavigationMenuItem2,
79478
- {
79479
- children: [
79480
- /* @__PURE__ */ jsx(
79481
- NavigationMenuTrigger2,
79535
+ children: /* @__PURE__ */ jsx(
79536
+ NavigationMenuList2,
79537
+ {
79538
+ className: cn(
79539
+ // Minimal için item'ları yay
79540
+ variant === "minimal" && "w-full justify-between gap-1"
79541
+ ),
79542
+ children: sections.map((section) => /* @__PURE__ */ jsx(React64__default.Fragment, { children: section.items.map((item) => {
79543
+ const hasChildren = item.items && item.items.length > 0;
79544
+ const isActive2 = item.href === activePath;
79545
+ if (hasChildren) {
79546
+ return /* @__PURE__ */ jsxs(
79547
+ NavigationMenuItem2,
79548
+ {
79549
+ children: [
79550
+ /* @__PURE__ */ jsx(
79551
+ NavigationMenuTrigger2,
79552
+ {
79553
+ className: cn(
79554
+ isActive2 && "bg-accent text-accent-foreground",
79555
+ item.disabled && "opacity-50 cursor-not-allowed"
79556
+ ),
79557
+ disabled: item.disabled,
79558
+ children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
79559
+ item.icon && /* @__PURE__ */ jsx("span", { children: item.icon }),
79560
+ item.title
79561
+ ] })
79562
+ }
79563
+ ),
79564
+ /* @__PURE__ */ jsx(NavigationMenuContent2, { children: item.items && renderMegaMenuContent(
79565
+ item.items
79566
+ ) })
79567
+ ]
79568
+ },
79569
+ item.id
79570
+ );
79571
+ }
79572
+ return /* @__PURE__ */ jsx(
79573
+ NavigationMenuItem2,
79574
+ {
79575
+ children: /* @__PURE__ */ jsxs(
79576
+ NavigationMenuLink2,
79482
79577
  {
79483
79578
  className: cn(
79579
+ navigationMenuTriggerStyle(),
79580
+ "cursor-pointer",
79484
79581
  isActive2 && "bg-accent text-accent-foreground",
79485
79582
  item.disabled && "opacity-50 cursor-not-allowed"
79486
79583
  ),
79487
- disabled: item.disabled,
79488
- children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
79489
- item.icon && /* @__PURE__ */ jsx("span", { children: item.icon }),
79490
- item.title
79491
- ] })
79584
+ onClick: () => !item.disabled && handleItemClick(
79585
+ item
79586
+ ),
79587
+ children: [
79588
+ /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
79589
+ item.icon && /* @__PURE__ */ jsx("span", { children: item.icon }),
79590
+ item.title
79591
+ ] }),
79592
+ item.badge && /* @__PURE__ */ jsx(
79593
+ MoonUIBadgePro,
79594
+ {
79595
+ variant: item.badgeVariant || "secondary",
79596
+ className: "ml-2",
79597
+ children: item.badge
79598
+ }
79599
+ )
79600
+ ]
79492
79601
  }
79493
- ),
79494
- /* @__PURE__ */ jsx(NavigationMenuContent2, { children: item.items && renderMegaMenuContent(
79495
- item.items
79496
- ) })
79497
- ]
79498
- },
79499
- item.id
79500
- );
79602
+ )
79603
+ },
79604
+ item.id
79605
+ );
79606
+ }) }, section.id))
79501
79607
  }
79502
- return /* @__PURE__ */ jsx(
79503
- NavigationMenuItem2,
79504
- {
79505
- children: /* @__PURE__ */ jsxs(
79506
- NavigationMenuLink2,
79507
- {
79508
- className: cn(
79509
- navigationMenuTriggerStyle(),
79510
- "cursor-pointer",
79511
- isActive2 && "bg-accent text-accent-foreground",
79512
- item.disabled && "opacity-50 cursor-not-allowed"
79513
- ),
79514
- onClick: () => !item.disabled && handleItemClick(
79515
- item
79516
- ),
79517
- children: [
79518
- /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2", children: [
79519
- item.icon && /* @__PURE__ */ jsx("span", { children: item.icon }),
79520
- item.title
79521
- ] }),
79522
- item.badge && /* @__PURE__ */ jsx(
79523
- MoonUIBadgePro,
79524
- {
79525
- variant: item.badgeVariant || "secondary",
79526
- className: "ml-2",
79527
- children: item.badge
79528
- }
79529
- )
79530
- ]
79531
- }
79532
- )
79533
- },
79534
- item.id
79535
- );
79536
- }) }, section.id)) })
79608
+ )
79537
79609
  }
79538
79610
  ),
79539
79611
  /* @__PURE__ */ jsxs("div", { className: "ml-auto flex items-center gap-2", children: [
79540
- showSearch && /* @__PURE__ */ jsx(Fragment, { children: isMobile ? /* @__PURE__ */ jsx(
79612
+ showSearch && !framerScroll.isScrolled && /* @__PURE__ */ jsx(Fragment, { children: isMobile ? /* @__PURE__ */ jsx(
79541
79613
  MoonUIButtonPro,
79542
79614
  {
79543
79615
  variant: "ghost",
@@ -79662,7 +79734,7 @@ function NavbarInternal({
79662
79734
  )
79663
79735
  ] })
79664
79736
  ] })),
79665
- notifications && /* @__PURE__ */ jsxs(MoonUIDropdownMenuPro, { children: [
79737
+ notifications && !framerScroll.isScrolled && /* @__PURE__ */ jsxs(MoonUIDropdownMenuPro, { children: [
79666
79738
  /* @__PURE__ */ jsx(MoonUIDropdownMenuTriggerPro, { asChild: true, children: /* @__PURE__ */ jsxs(
79667
79739
  MoonUIButtonPro,
79668
79740
  {
@@ -79785,7 +79857,7 @@ function NavbarInternal({
79785
79857
  }
79786
79858
  )
79787
79859
  ] }),
79788
- cta && /* @__PURE__ */ jsx(
79860
+ cta && !framerScroll.isScrolled && /* @__PURE__ */ jsx(
79789
79861
  MoonUIButtonPro,
79790
79862
  {
79791
79863
  variant: cta.variant || "primary",
@@ -79813,7 +79885,7 @@ function NavbarInternal({
79813
79885
  children: cta.text
79814
79886
  }
79815
79887
  ),
79816
- userMenu && /* @__PURE__ */ jsxs(MoonUIDropdownMenuPro, { children: [
79888
+ userMenu && !framerScroll.isScrolled && /* @__PURE__ */ jsxs(MoonUIDropdownMenuPro, { children: [
79817
79889
  /* @__PURE__ */ jsx(MoonUIDropdownMenuTriggerPro, { asChild: true, children: /* @__PURE__ */ jsx(
79818
79890
  MoonUIButtonPro,
79819
79891
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moontra/moonui-pro",
3
- "version": "3.4.7",
3
+ "version": "3.4.8",
4
4
  "description": "Premium React components for MoonUI - Advanced UI library with 50+ pro components including performance, interactive, and gesture components",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",