@shohojdhara/atomix 0.4.4 → 0.4.6

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 (62) hide show
  1. package/dist/atomix.css +50 -11
  2. package/dist/atomix.css.map +1 -1
  3. package/dist/atomix.min.css +1 -1
  4. package/dist/atomix.min.css.map +1 -1
  5. package/dist/charts.js +184 -189
  6. package/dist/charts.js.map +1 -1
  7. package/dist/core.d.ts +4 -4
  8. package/dist/core.js +194 -199
  9. package/dist/core.js.map +1 -1
  10. package/dist/forms.js +184 -189
  11. package/dist/forms.js.map +1 -1
  12. package/dist/heavy.js +189 -194
  13. package/dist/heavy.js.map +1 -1
  14. package/dist/index.d.ts +44 -47
  15. package/dist/index.esm.js +496 -613
  16. package/dist/index.esm.js.map +1 -1
  17. package/dist/index.js +528 -631
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.min.js +1 -1
  20. package/dist/index.min.js.map +1 -1
  21. package/package.json +1 -1
  22. package/src/components/AtomixGlass/AtomixGlass.tsx +60 -39
  23. package/src/components/AtomixGlass/AtomixGlassContainer.tsx +8 -42
  24. package/src/components/AtomixGlass/glass-utils.ts +27 -14
  25. package/src/components/AtomixGlass/stories/Overview.stories.tsx +19 -21
  26. package/src/components/AtomixGlass/stories/Playground.stories.tsx +1162 -515
  27. package/src/components/AtomixGlass/stories/shared-components.tsx +11 -3
  28. package/src/components/Breadcrumb/Breadcrumb.tsx +5 -5
  29. package/src/components/Breadcrumb/BreadcrumbCompound.test.tsx +2 -2
  30. package/src/components/Button/Button.tsx +6 -6
  31. package/src/components/Card/Card.tsx +3 -3
  32. package/src/components/Dropdown/Dropdown.tsx +5 -3
  33. package/src/components/Footer/Footer.tsx +124 -166
  34. package/src/components/Footer/FooterLink.tsx +16 -19
  35. package/src/components/Footer/FooterSection.tsx +40 -39
  36. package/src/components/Footer/FooterSocialLink.tsx +59 -58
  37. package/src/components/Footer/README.md +1 -1
  38. package/src/components/Hero/Hero.tsx +72 -142
  39. package/src/components/Navigation/Menu/MegaMenu.tsx +17 -12
  40. package/src/components/Navigation/Menu/Menu.tsx +49 -24
  41. package/src/components/Navigation/Nav/NavItem.tsx +5 -3
  42. package/src/components/Navigation/Navbar/Navbar.tsx +13 -5
  43. package/src/components/Navigation/SideMenu/SideMenu.tsx +2 -2
  44. package/src/components/Navigation/SideMenu/SideMenuItem.tsx +4 -4
  45. package/src/components/Slider/Slider.tsx +7 -4
  46. package/src/lib/composables/index.ts +1 -2
  47. package/src/lib/composables/useAtomixGlass.ts +246 -222
  48. package/src/lib/composables/useAtomixGlassStyles.ts +46 -23
  49. package/src/lib/composables/useFooter.ts +117 -20
  50. package/src/lib/composables/useSlider.ts +3 -1
  51. package/src/lib/constants/components.ts +3 -1
  52. package/src/lib/types/components.ts +44 -12
  53. package/src/styles/06-components/_components.atomix-glass.scss +72 -14
  54. package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +0 -222
  55. package/src/lib/composables/atomix-glass/useGlassBackgroundDetection.ts +0 -329
  56. package/src/lib/composables/atomix-glass/useGlassCornerRadius.ts +0 -82
  57. package/src/lib/composables/atomix-glass/useGlassMouseTracking.ts +0 -153
  58. package/src/lib/composables/atomix-glass/useGlassOverLight.ts +0 -198
  59. package/src/lib/composables/atomix-glass/useGlassState.ts +0 -112
  60. package/src/lib/composables/atomix-glass/useGlassTransforms.ts +0 -160
  61. package/src/lib/composables/glass-styles.ts +0 -302
  62. package/src/lib/composables/useGlassContainer.ts +0 -177
@@ -39,11 +39,12 @@ export const NavItem = forwardRef<HTMLLIElement, NavItemProps>(
39
39
  megaMenu = false,
40
40
  active = false,
41
41
  href,
42
+ target,
42
43
  onClick,
43
44
  className = '',
44
45
  disabled = false,
45
46
  'aria-expanded': ariaExpanded,
46
- LinkComponent,
47
+ linkComponent,
47
48
  },
48
49
  ref
49
50
  ) => {
@@ -139,6 +140,7 @@ export const NavItem = forwardRef<HTMLLIElement, NavItemProps>(
139
140
  ref: combinedRef,
140
141
  href: href || '#',
141
142
  to: href || '#',
143
+ target,
142
144
  className: navLinkClass,
143
145
  onClick: dropdown || megaMenu ? handleDropdownToggle : handleClick(onClick),
144
146
  'aria-disabled': disabled,
@@ -150,9 +152,9 @@ export const NavItem = forwardRef<HTMLLIElement, NavItemProps>(
150
152
 
151
153
  return (
152
154
  <li className={navItemClass} role="menuitem" aria-haspopup={dropdown || megaMenu}>
153
- {LinkComponent ? (
155
+ {linkComponent ? (
154
156
  (() => {
155
- const Component = LinkComponent as React.ComponentType<any>;
157
+ const Component = linkComponent as React.ComponentType<any>;
156
158
  return (
157
159
  <Component {...linkProps}>
158
160
  {dropdown || megaMenu ? childContent[0] : children}
@@ -152,15 +152,23 @@ export const Navbar = forwardRef<HTMLElement, NavbarProps>(
152
152
  shaderVariant: 'premiumGlass' as const,
153
153
  };
154
154
  const glassProps = glass === true ? defaultGlassProps : { ...defaultGlassProps, ...glass };
155
+
156
+ // AtomixGlass hoists layout props (position/top/left/right/zIndex) to its
157
+ // root element, keeping all internal layers in the same stacking context.
158
+ const isFixed = position === 'fixed' || position === 'fixed-bottom';
159
+
155
160
  return (
156
161
  <AtomixGlass
157
162
  {...glassProps}
158
163
  style={{
159
- ...(position === 'fixed' && { position: 'fixed' }),
160
- left: 0,
161
- right: 0,
162
- top: 0,
163
- zIndex: 1000,
164
+ ...(isFixed && {
165
+ position: 'fixed' as const,
166
+ top: position === 'fixed' ? 0 : undefined,
167
+ bottom: position === 'fixed-bottom' ? 0 : undefined,
168
+ left: 0,
169
+ right: 0,
170
+ zIndex: 1030, // matches --atomix-navbar-z-index from _components.navbar.scss
171
+ }),
164
172
  }}
165
173
  >
166
174
  <nav
@@ -39,7 +39,7 @@ export const SideMenu = forwardRef<HTMLDivElement, SideMenuProps>(
39
39
  toggleIcon,
40
40
  id,
41
41
  glass,
42
- LinkComponent,
42
+ linkComponent,
43
43
  },
44
44
  ref
45
45
  ) => {
@@ -287,7 +287,7 @@ export const SideMenu = forwardRef<HTMLDivElement, SideMenuProps>(
287
287
  active={subItem.active}
288
288
  disabled={subItem.disabled}
289
289
  icon={subItem.icon}
290
- LinkComponent={LinkComponent}
290
+ linkComponent={linkComponent}
291
291
  >
292
292
  {subItem.title}
293
293
  </SideMenuItem>
@@ -18,7 +18,7 @@ import { useSideMenuItem } from '../../../lib/composables/useSideMenu';
18
18
  *
19
19
  * // With icon and custom link component
20
20
  * import Link from 'next/link';
21
- * <SideMenuItem href="/settings" icon={<Icon name="Settings" />} LinkComponent={Link}>
21
+ * <SideMenuItem href="/settings" icon={<Icon name="Settings" />} linkComponent={Link}>
22
22
  * Settings
23
23
  * </SideMenuItem>
24
24
  *
@@ -45,7 +45,7 @@ export const SideMenuItem = forwardRef<HTMLAnchorElement | HTMLButtonElement, Si
45
45
  className = '',
46
46
  target,
47
47
  rel,
48
- LinkComponent: LinkComponentProp,
48
+ linkComponent: linkComponentProp,
49
49
  },
50
50
  ref
51
51
  ) => {
@@ -59,8 +59,8 @@ export const SideMenuItem = forwardRef<HTMLAnchorElement | HTMLButtonElement, Si
59
59
 
60
60
  // Render as link if href is provided
61
61
  if (href) {
62
- if (LinkComponentProp) {
63
- const LinkComp = LinkComponentProp as React.ComponentType<any>;
62
+ if (linkComponentProp) {
63
+ const LinkComp = linkComponentProp as React.ComponentType<any>;
64
64
  const linkProps: {
65
65
  ref?: React.Ref<HTMLAnchorElement>;
66
66
  className?: string;
@@ -25,9 +25,12 @@ export const Slider = forwardRef<HTMLDivElement, SliderProps>((props, ref) => {
25
25
  ...rest
26
26
  } = props;
27
27
 
28
+ // Ensure slides is an array to prevent .map errors
29
+ const validSlides = Array.isArray(slides) ? slides : [];
30
+
28
31
  // Hooks must be called unconditionally - before early return
29
32
  const slider = useSlider({
30
- slides: slides || [],
33
+ slides: validSlides,
31
34
  slidesToShow,
32
35
  spaceBetween,
33
36
  loop,
@@ -65,7 +68,7 @@ export const Slider = forwardRef<HTMLDivElement, SliderProps>((props, ref) => {
65
68
  return allSlides.length * (slideWidth + spaceBetween) - spaceBetween;
66
69
  }, [allSlides.length, slideWidth, spaceBetween]);
67
70
 
68
- if (!slides || slides.length === 0) {
71
+ if (validSlides.length === 0) {
69
72
  return (
70
73
  <div className="c-slider c-slider--empty" style={{ height, width, ...style }}>
71
74
  <div className="c-slider__empty-message">No slides available</div>
@@ -131,7 +134,7 @@ export const Slider = forwardRef<HTMLDivElement, SliderProps>((props, ref) => {
131
134
  (() => {
132
135
  if (!loop) return index === realIndex;
133
136
  // For triple array: check if this slide index matches current real index
134
- return index % slides.length === realIndex;
137
+ return index % validSlides.length === realIndex;
135
138
  })() && 'c-slider__slide--active',
136
139
  (slide as any).isClone && 'c-slider__slide--duplicate',
137
140
  ]
@@ -211,7 +214,7 @@ export const Slider = forwardRef<HTMLDivElement, SliderProps>((props, ref) => {
211
214
 
212
215
  {pagination && (
213
216
  <div className="c-slider__pagination">
214
- {slides.map((_, index) => (
217
+ {validSlides.map((_, index) => (
215
218
  <button
216
219
  key={index}
217
220
  type="button"
@@ -29,8 +29,7 @@ export * from './useTodo';
29
29
  export * from './useForm';
30
30
  export * from './useFormGroup';
31
31
 
32
- // GlassContainer composables
33
- export * from './useGlassContainer';
32
+ // AtomixGlass composables
34
33
  export * from './useAtomixGlass';
35
34
  export * from './useInput';
36
35
  export * from './useRadio';