@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.
- package/dist/atomix.css +50 -11
- package/dist/atomix.css.map +1 -1
- package/dist/atomix.min.css +1 -1
- package/dist/atomix.min.css.map +1 -1
- package/dist/charts.js +184 -189
- package/dist/charts.js.map +1 -1
- package/dist/core.d.ts +4 -4
- package/dist/core.js +194 -199
- package/dist/core.js.map +1 -1
- package/dist/forms.js +184 -189
- package/dist/forms.js.map +1 -1
- package/dist/heavy.js +189 -194
- package/dist/heavy.js.map +1 -1
- package/dist/index.d.ts +44 -47
- package/dist/index.esm.js +496 -613
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +528 -631
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +1 -1
- package/src/components/AtomixGlass/AtomixGlass.tsx +60 -39
- package/src/components/AtomixGlass/AtomixGlassContainer.tsx +8 -42
- package/src/components/AtomixGlass/glass-utils.ts +27 -14
- package/src/components/AtomixGlass/stories/Overview.stories.tsx +19 -21
- package/src/components/AtomixGlass/stories/Playground.stories.tsx +1162 -515
- package/src/components/AtomixGlass/stories/shared-components.tsx +11 -3
- package/src/components/Breadcrumb/Breadcrumb.tsx +5 -5
- package/src/components/Breadcrumb/BreadcrumbCompound.test.tsx +2 -2
- package/src/components/Button/Button.tsx +6 -6
- package/src/components/Card/Card.tsx +3 -3
- package/src/components/Dropdown/Dropdown.tsx +5 -3
- package/src/components/Footer/Footer.tsx +124 -166
- package/src/components/Footer/FooterLink.tsx +16 -19
- package/src/components/Footer/FooterSection.tsx +40 -39
- package/src/components/Footer/FooterSocialLink.tsx +59 -58
- package/src/components/Footer/README.md +1 -1
- package/src/components/Hero/Hero.tsx +72 -142
- package/src/components/Navigation/Menu/MegaMenu.tsx +17 -12
- package/src/components/Navigation/Menu/Menu.tsx +49 -24
- package/src/components/Navigation/Nav/NavItem.tsx +5 -3
- package/src/components/Navigation/Navbar/Navbar.tsx +13 -5
- package/src/components/Navigation/SideMenu/SideMenu.tsx +2 -2
- package/src/components/Navigation/SideMenu/SideMenuItem.tsx +4 -4
- package/src/components/Slider/Slider.tsx +7 -4
- package/src/lib/composables/index.ts +1 -2
- package/src/lib/composables/useAtomixGlass.ts +246 -222
- package/src/lib/composables/useAtomixGlassStyles.ts +46 -23
- package/src/lib/composables/useFooter.ts +117 -20
- package/src/lib/composables/useSlider.ts +3 -1
- package/src/lib/constants/components.ts +3 -1
- package/src/lib/types/components.ts +44 -12
- package/src/styles/06-components/_components.atomix-glass.scss +72 -14
- package/src/components/AtomixGlass/__snapshots__/AtomixGlass.test.tsx.snap +0 -222
- package/src/lib/composables/atomix-glass/useGlassBackgroundDetection.ts +0 -329
- package/src/lib/composables/atomix-glass/useGlassCornerRadius.ts +0 -82
- package/src/lib/composables/atomix-glass/useGlassMouseTracking.ts +0 -153
- package/src/lib/composables/atomix-glass/useGlassOverLight.ts +0 -198
- package/src/lib/composables/atomix-glass/useGlassState.ts +0 -112
- package/src/lib/composables/atomix-glass/useGlassTransforms.ts +0 -160
- package/src/lib/composables/glass-styles.ts +0 -302
- 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
|
-
|
|
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
|
-
{
|
|
155
|
+
{linkComponent ? (
|
|
154
156
|
(() => {
|
|
155
|
-
const Component =
|
|
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
|
-
...(
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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" />}
|
|
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
|
-
|
|
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 (
|
|
63
|
-
const LinkComp =
|
|
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:
|
|
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 (
|
|
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 %
|
|
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
|
-
{
|
|
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
|
-
//
|
|
33
|
-
export * from './useGlassContainer';
|
|
32
|
+
// AtomixGlass composables
|
|
34
33
|
export * from './useAtomixGlass';
|
|
35
34
|
export * from './useInput';
|
|
36
35
|
export * from './useRadio';
|