@shohojdhara/atomix 0.2.3 → 0.2.5
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/README.md +19 -0
- package/dist/atomix.css +1703 -1544
- package/dist/atomix.min.css +4 -4
- package/dist/index.d.ts +1465 -963
- package/dist/index.esm.js +16289 -25908
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +15650 -21780
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/themes/applemix.css +15008 -0
- package/dist/themes/applemix.min.css +72 -0
- package/dist/themes/boomdevs.css +1608 -1450
- package/dist/themes/boomdevs.min.css +5 -5
- package/dist/themes/esrar.css +1702 -1543
- package/dist/themes/esrar.min.css +4 -4
- package/dist/themes/flashtrade.css +15159 -0
- package/dist/themes/flashtrade.min.css +86 -0
- package/dist/themes/mashroom.css +1699 -1540
- package/dist/themes/mashroom.min.css +7 -7
- package/dist/themes/shaj-default.css +1693 -1534
- package/dist/themes/shaj-default.min.css +4 -4
- package/package.json +6 -17
- package/src/components/Accordion/Accordion.stories.tsx +662 -21
- package/src/components/Accordion/Accordion.tsx +21 -14
- package/src/components/AtomixGlass/AtomixGlass.test.tsx +106 -72
- package/src/components/AtomixGlass/AtomixGlass.tsx +529 -1195
- package/src/components/AtomixGlass/AtomixGlassContainer.tsx +400 -0
- package/src/components/AtomixGlass/GlassFilter.tsx +156 -0
- package/src/components/AtomixGlass/README.md +124 -2
- package/src/components/AtomixGlass/atomixGLass.old.tsx +1266 -0
- package/src/components/AtomixGlass/glass-utils.ts +263 -0
- package/src/components/AtomixGlass/shader-utils.ts +792 -68
- package/src/components/AtomixGlass/stories/AtomixGlass.stories.tsx +1250 -0
- package/src/components/AtomixGlass/stories/Examples.stories.tsx +5768 -0
- package/src/components/AtomixGlass/stories/Modes.stories.tsx +1065 -0
- package/src/components/AtomixGlass/stories/Playground.stories.tsx +1129 -0
- package/src/components/AtomixGlass/stories/ShaderVariants.stories.tsx +395 -0
- package/src/components/AtomixGlass/stories/shared-components.tsx +301 -0
- package/src/components/AtomixGlass/utils.ts +3 -3
- package/src/components/Avatar/Avatar.tsx +3 -0
- package/src/components/Avatar/AvatarGroup.tsx +2 -1
- package/src/components/Badge/Badge.stories.tsx +76 -55
- package/src/components/Badge/Badge.tsx +12 -14
- package/src/components/Breadcrumb/Breadcrumb.tsx +23 -4
- package/src/components/Button/Button.stories.tsx +501 -20
- package/src/components/Button/Button.tsx +5 -8
- package/src/components/Callout/Callout.stories.tsx +86 -35
- package/src/components/Callout/Callout.tsx +31 -9
- package/src/components/Card/Card.stories.tsx +565 -2
- package/src/components/Card/Card.tsx +15 -4
- package/src/components/Card/ElevationCard.tsx +2 -0
- package/src/components/Chart/AnimatedChart.tsx +179 -156
- package/src/components/Chart/AreaChart.tsx +123 -12
- package/src/components/Chart/BarChart.tsx +91 -100
- package/src/components/Chart/BaseChart.tsx +80 -0
- package/src/components/Chart/BubbleChart.tsx +114 -290
- package/src/components/Chart/CandlestickChart.tsx +282 -622
- package/src/components/Chart/Chart.stories.tsx +576 -179
- package/src/components/Chart/Chart.tsx +374 -75
- package/src/components/Chart/ChartRenderer.tsx +371 -220
- package/src/components/Chart/ChartToolbar.tsx +372 -61
- package/src/components/Chart/ChartTooltip.tsx +33 -18
- package/src/components/Chart/DonutChart.tsx +172 -254
- package/src/components/Chart/FunnelChart.tsx +169 -240
- package/src/components/Chart/GaugeChart.tsx +224 -392
- package/src/components/Chart/HeatmapChart.tsx +302 -440
- package/src/components/Chart/LineChart.tsx +148 -103
- package/src/components/Chart/MultiAxisChart.tsx +267 -395
- package/src/components/Chart/PieChart.tsx +114 -64
- package/src/components/Chart/RadarChart.tsx +202 -218
- package/src/components/Chart/ScatterChart.tsx +111 -97
- package/src/components/Chart/TreemapChart.tsx +147 -222
- package/src/components/Chart/WaterfallChart.tsx +253 -291
- package/src/components/Chart/index.ts +11 -9
- package/src/components/Chart/types.ts +85 -9
- package/src/components/Chart/utils.ts +66 -0
- package/src/components/ColorModeToggle/ColorModeToggle.tsx +6 -3
- package/src/components/Countdown/Countdown.tsx +4 -0
- package/src/components/DataTable/DataTable.tsx +2 -1
- package/src/components/DatePicker/DatePicker.stories.tsx +689 -12
- package/src/components/DatePicker/DatePicker.tsx +3 -9
- package/src/components/DatePicker/types.ts +5 -0
- package/src/components/Dropdown/Dropdown.stories.tsx +32 -25
- package/src/components/Dropdown/Dropdown.tsx +26 -28
- package/src/components/EdgePanel/EdgePanel.stories.tsx +473 -2
- package/src/components/EdgePanel/EdgePanel.tsx +101 -13
- package/src/components/Footer/Footer.stories.tsx +187 -60
- package/src/components/Footer/Footer.test.tsx +134 -0
- package/src/components/Footer/Footer.tsx +133 -34
- package/src/components/Footer/FooterLink.tsx +1 -1
- package/src/components/Footer/FooterSection.tsx +53 -36
- package/src/components/Footer/FooterSocialLink.tsx +32 -29
- package/src/components/Footer/README.md +82 -3
- package/src/components/Footer/index.ts +1 -1
- package/src/components/Form/Checkbox.stories.tsx +13 -5
- package/src/components/Form/Checkbox.tsx +3 -6
- package/src/components/Form/Form.stories.tsx +10 -3
- package/src/components/Form/Form.tsx +2 -0
- package/src/components/Form/FormGroup.tsx +2 -1
- package/src/components/Form/Input.stories.tsx +12 -11
- package/src/components/Form/Input.tsx +97 -95
- package/src/components/Form/Radio.stories.tsx +22 -7
- package/src/components/Form/Radio.tsx +3 -6
- package/src/components/Form/Select.stories.tsx +21 -6
- package/src/components/Form/Select.tsx +3 -5
- package/src/components/Form/Textarea.stories.tsx +13 -11
- package/src/components/Form/Textarea.tsx +88 -86
- package/src/components/Hero/Hero.stories.tsx +2 -3
- package/src/components/Hero/Hero.tsx +5 -6
- package/src/components/Icon/Icon.tsx +12 -1
- package/src/components/List/List.tsx +2 -1
- package/src/components/List/ListGroup.tsx +2 -1
- package/src/components/Messages/Messages.stories.tsx +113 -0
- package/src/components/Messages/Messages.tsx +52 -9
- package/src/components/Modal/Modal.stories.tsx +48 -32
- package/src/components/Modal/Modal.tsx +19 -24
- package/src/components/Navigation/Menu/MegaMenu.tsx +2 -2
- package/src/components/Navigation/Menu/Menu.tsx +2 -2
- package/src/components/Navigation/Nav/Nav.stories.tsx +469 -0
- package/src/components/Navigation/Nav/Nav.tsx +22 -4
- package/src/components/Navigation/Nav/NavDropdown.tsx +10 -1
- package/src/components/Navigation/Navbar/Navbar.stories.tsx +413 -0
- package/src/components/Navigation/Navbar/Navbar.tsx +70 -29
- package/src/components/Navigation/SideMenu/SideMenu.stories.tsx +340 -0
- package/src/components/Navigation/SideMenu/SideMenu.tsx +29 -2
- package/src/components/Pagination/Pagination.stories.tsx +13 -6
- package/src/components/Pagination/Pagination.tsx +7 -6
- package/src/components/PhotoViewer/PhotoViewer.tsx +2 -1
- package/src/components/Popover/Popover.stories.tsx +32 -24
- package/src/components/Popover/Popover.tsx +4 -1
- package/src/components/ProductReview/ProductReview.tsx +8 -2
- package/src/components/Progress/Progress.tsx +19 -3
- package/src/components/Rating/Rating.stories.tsx +11 -6
- package/src/components/Rating/Rating.tsx +3 -5
- package/src/components/River/River.tsx +5 -5
- package/src/components/SectionIntro/SectionIntro.tsx +8 -2
- package/src/components/Slider/Slider.stories.tsx +4 -4
- package/src/components/Slider/Slider.tsx +4 -3
- package/src/components/Spinner/Spinner.tsx +19 -3
- package/src/components/Steps/Steps.stories.tsx +5 -4
- package/src/components/Steps/Steps.tsx +8 -5
- package/src/components/Tab/Tab.stories.tsx +4 -3
- package/src/components/Tab/Tab.tsx +8 -6
- package/src/components/Testimonial/Testimonial.tsx +8 -2
- package/src/components/Todo/Todo.tsx +2 -1
- package/src/components/Toggle/Toggle.stories.tsx +5 -4
- package/src/components/Toggle/Toggle.tsx +8 -5
- package/src/components/Tooltip/Tooltip.stories.tsx +40 -30
- package/src/components/Tooltip/Tooltip.tsx +9 -2
- package/src/components/Upload/Upload.stories.tsx +252 -0
- package/src/components/Upload/Upload.tsx +92 -53
- package/src/components/VideoPlayer/VideoPlayer.tsx +3 -1
- package/src/components/index.ts +0 -4
- package/src/layouts/Grid/Grid.stories.tsx +10 -23
- package/src/layouts/Grid/Grid.tsx +20 -1
- package/src/layouts/Grid/GridCol.tsx +76 -48
- package/src/lib/composables/useAtomixGlass.ts +861 -44
- package/src/lib/composables/useBarChart.ts +21 -4
- package/src/lib/composables/useChart.ts +227 -370
- package/src/lib/composables/useChartExport.ts +19 -78
- package/src/lib/composables/useChartToolbar.ts +11 -21
- package/src/lib/composables/useEdgePanel.ts +125 -71
- package/src/lib/composables/useFooter.ts +3 -3
- package/src/lib/composables/useGlassContainer.ts +16 -7
- package/src/lib/composables/useLineChart.ts +11 -2
- package/src/lib/composables/usePieChart.ts +4 -14
- package/src/lib/composables/useRiver.ts +5 -0
- package/src/lib/composables/useSlider.ts +62 -24
- package/src/lib/composables/useVideoPlayer.ts +60 -63
- package/src/lib/constants/components.ts +147 -32
- package/src/lib/types/components.ts +355 -25
- package/src/lib/utils/displacement-generator.ts +55 -49
- package/src/lib/utils/icons.ts +1 -1
- package/src/lib/utils/index.ts +16 -10
- package/src/styles/01-settings/_settings.accordion.scss +19 -19
- package/src/styles/01-settings/_settings.animations.scss +5 -5
- package/src/styles/01-settings/_settings.avatar-group.scss +1 -1
- package/src/styles/01-settings/_settings.avatar.scss +17 -17
- package/src/styles/01-settings/_settings.background.scss +0 -3
- package/src/styles/01-settings/_settings.badge.scss +1 -1
- package/src/styles/01-settings/_settings.breadcrumb.scss +1 -1
- package/src/styles/01-settings/_settings.card.scss +1 -1
- package/src/styles/01-settings/_settings.chart.scss +65 -2
- package/src/styles/01-settings/_settings.dropdown.scss +1 -1
- package/src/styles/01-settings/_settings.edge-panel.scss +1 -1
- package/src/styles/01-settings/_settings.footer.scss +35 -42
- package/src/styles/01-settings/_settings.input.scss +1 -1
- package/src/styles/01-settings/_settings.list.scss +1 -1
- package/src/styles/01-settings/_settings.rating.scss +1 -1
- package/src/styles/01-settings/_settings.tabs.scss +1 -1
- package/src/styles/01-settings/_settings.upload.scss +6 -5
- package/src/styles/02-tools/_tools.animations.scss +4 -5
- package/src/styles/02-tools/_tools.background.scss +1 -13
- package/src/styles/02-tools/_tools.glass.scss +0 -1
- package/src/styles/02-tools/_tools.utility-api.scss +91 -48
- package/src/styles/03-generic/_generic.root.scss +1 -4
- package/src/styles/04-elements/_elements.body.scss +0 -1
- package/src/styles/06-components/_components.atomix-glass.scss +249 -0
- package/src/styles/06-components/_components.badge.scss +8 -23
- package/src/styles/06-components/_components.button.scss +8 -3
- package/src/styles/06-components/_components.callout.scss +10 -5
- package/src/styles/06-components/_components.card.scss +2 -14
- package/src/styles/06-components/_components.chart.scss +969 -1449
- package/src/styles/06-components/_components.dropdown.scss +19 -7
- package/src/styles/06-components/_components.edge-panel.scss +103 -0
- package/src/styles/06-components/_components.footer.scss +166 -85
- package/src/styles/06-components/_components.input.scss +8 -9
- package/src/styles/06-components/_components.list.scss +1 -0
- package/src/styles/06-components/_components.messages.scss +176 -0
- package/src/styles/06-components/_components.modal.scss +16 -4
- package/src/styles/06-components/_components.navbar.scss +12 -1
- package/src/styles/06-components/_components.side-menu.scss +5 -0
- package/src/styles/06-components/_components.skeleton.scss +8 -6
- package/src/styles/06-components/_components.upload.scss +219 -4
- package/src/styles/06-components/old.chart.styles.scss +1 -30
- package/src/styles/99-utilities/_index.scss +1 -0
- package/src/styles/99-utilities/_utilities.glass-fixes.scss +1 -0
- package/src/styles/99-utilities/_utilities.scss +1 -1
- package/src/components/AtomixGlass/AtomixGlass.stories.tsx +0 -3011
- package/src/components/AtomixGlass/AtomixGlassComprehensivePreview.stories.tsx +0 -1369
- package/src/components/Chart/AdvancedChart.tsx +0 -624
- package/src/components/Chart/LineChartNew.tsx +0 -167
- package/src/components/Chart/RealTimeChart.tsx +0 -436
- package/src/components/DatePicker/DatePicker copy.tsx +0 -551
|
@@ -607,3 +607,343 @@ export const InteractiveDemo: Story = {
|
|
|
607
607
|
onToggle: fn(),
|
|
608
608
|
},
|
|
609
609
|
};
|
|
610
|
+
|
|
611
|
+
// Glass Morphism Effect Stories - Professional Showcase
|
|
612
|
+
|
|
613
|
+
/**
|
|
614
|
+
* Background wrapper component for consistent glass effect demonstrations
|
|
615
|
+
*/
|
|
616
|
+
interface BackgroundWrapperProps {
|
|
617
|
+
children: React.ReactNode;
|
|
618
|
+
backgroundImage: string;
|
|
619
|
+
height?: string;
|
|
620
|
+
padding?: string;
|
|
621
|
+
overlay?: boolean;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
const BackgroundWrapper = ({
|
|
625
|
+
children,
|
|
626
|
+
backgroundImage,
|
|
627
|
+
height = '90vh',
|
|
628
|
+
padding = '60px 40px',
|
|
629
|
+
overlay = false,
|
|
630
|
+
}: BackgroundWrapperProps) => (
|
|
631
|
+
<div
|
|
632
|
+
style={{
|
|
633
|
+
position: 'relative',
|
|
634
|
+
width: '100%',
|
|
635
|
+
minHeight: height,
|
|
636
|
+
background: `url(${backgroundImage})`,
|
|
637
|
+
backgroundSize: 'cover',
|
|
638
|
+
backgroundPosition: 'center',
|
|
639
|
+
backgroundAttachment: 'fixed',
|
|
640
|
+
display: 'flex',
|
|
641
|
+
alignItems: 'center',
|
|
642
|
+
justifyContent: 'flex-start',
|
|
643
|
+
padding: padding,
|
|
644
|
+
borderRadius: '12px',
|
|
645
|
+
gap: '3rem',
|
|
646
|
+
}}
|
|
647
|
+
>
|
|
648
|
+
{overlay && (
|
|
649
|
+
<div
|
|
650
|
+
style={{
|
|
651
|
+
position: 'absolute',
|
|
652
|
+
top: 0,
|
|
653
|
+
left: 0,
|
|
654
|
+
right: 0,
|
|
655
|
+
bottom: 0,
|
|
656
|
+
backgroundColor: 'rgba(0,0,0,0.3)',
|
|
657
|
+
borderRadius: '12px',
|
|
658
|
+
}}
|
|
659
|
+
/>
|
|
660
|
+
)}
|
|
661
|
+
{children}
|
|
662
|
+
</div>
|
|
663
|
+
);
|
|
664
|
+
|
|
665
|
+
/**
|
|
666
|
+
* Glass Effect - Default
|
|
667
|
+
*
|
|
668
|
+
* Demonstrates the SideMenu component with default glass morphism settings.
|
|
669
|
+
* The glass effect provides a modern, frosted appearance perfect for sidebar navigation.
|
|
670
|
+
*/
|
|
671
|
+
export const Glass: Story = {
|
|
672
|
+
render: () => (
|
|
673
|
+
<BackgroundWrapper
|
|
674
|
+
backgroundImage="https://images.unsplash.com/photo-1506905925346-21bda4d32df4?q=80&w=2940&auto=format&fit=crop"
|
|
675
|
+
overlay
|
|
676
|
+
>
|
|
677
|
+
<div style={{ position: 'relative', width: '300px' }}>
|
|
678
|
+
<SideMenu title="Navigation" glass>
|
|
679
|
+
<SideMenuList>
|
|
680
|
+
<SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
|
|
681
|
+
Home
|
|
682
|
+
</SideMenuItem>
|
|
683
|
+
<SideMenuItem href="/explore" icon={<Icon name="Compass" size="sm" />}>
|
|
684
|
+
Explore
|
|
685
|
+
</SideMenuItem>
|
|
686
|
+
<SideMenuItem href="/services" icon={<Icon name="Briefcase" size="sm" />}>
|
|
687
|
+
Services
|
|
688
|
+
</SideMenuItem>
|
|
689
|
+
<SideMenuItem href="/contact" icon={<Icon name="Envelope" size="sm" />}>
|
|
690
|
+
Contact
|
|
691
|
+
</SideMenuItem>
|
|
692
|
+
</SideMenuList>
|
|
693
|
+
<SideMenuList>
|
|
694
|
+
<SideMenuItem href="/settings" icon={<Icon name="Gear" size="sm" />}>
|
|
695
|
+
Settings
|
|
696
|
+
</SideMenuItem>
|
|
697
|
+
</SideMenuList>
|
|
698
|
+
</SideMenu>
|
|
699
|
+
</div>
|
|
700
|
+
<div style={{ position: 'relative', zIndex: 1, flex: 1, maxWidth: '600px' }}>
|
|
701
|
+
<h2
|
|
702
|
+
style={{
|
|
703
|
+
color: 'white',
|
|
704
|
+
fontSize: '32px',
|
|
705
|
+
fontWeight: 600,
|
|
706
|
+
marginBottom: '16px',
|
|
707
|
+
textShadow: '0 2px 10px rgba(0,0,0,0.5)',
|
|
708
|
+
}}
|
|
709
|
+
>
|
|
710
|
+
Glass SideMenu
|
|
711
|
+
</h2>
|
|
712
|
+
<p
|
|
713
|
+
style={{
|
|
714
|
+
color: 'rgba(255,255,255,0.9)',
|
|
715
|
+
fontSize: '18px',
|
|
716
|
+
lineHeight: 1.6,
|
|
717
|
+
textShadow: '0 2px 10px rgba(0,0,0,0.5)',
|
|
718
|
+
}}
|
|
719
|
+
>
|
|
720
|
+
A modern sidebar navigation with glassmorphism effect. Perfect for dashboards, admin
|
|
721
|
+
panels, and application interfaces that require elegant navigation.
|
|
722
|
+
</p>
|
|
723
|
+
</div>
|
|
724
|
+
</BackgroundWrapper>
|
|
725
|
+
),
|
|
726
|
+
parameters: {
|
|
727
|
+
layout: 'fullscreen',
|
|
728
|
+
docs: {
|
|
729
|
+
description: {
|
|
730
|
+
story:
|
|
731
|
+
'Basic glass morphism effect with default settings. The sidebar maintains excellent readability while creating a beautiful frosted glass aesthetic.',
|
|
732
|
+
},
|
|
733
|
+
},
|
|
734
|
+
},
|
|
735
|
+
};
|
|
736
|
+
|
|
737
|
+
/**
|
|
738
|
+
* Glass with Custom Properties
|
|
739
|
+
*
|
|
740
|
+
* Demonstrates advanced customization of the glass effect with various
|
|
741
|
+
* displacement, blur, and corner radius settings.
|
|
742
|
+
*/
|
|
743
|
+
export const GlassCustom: Story = {
|
|
744
|
+
render: () => (
|
|
745
|
+
<BackgroundWrapper
|
|
746
|
+
backgroundImage="https://images.unsplash.com/photo-1441974231531-c6227db76b6e?q=80&w=2940&auto=format&fit=crop"
|
|
747
|
+
overlay
|
|
748
|
+
>
|
|
749
|
+
<div style={{ position: 'relative', width: '320px' }}>
|
|
750
|
+
<SideMenu
|
|
751
|
+
title="Nature Explorer"
|
|
752
|
+
glass={{
|
|
753
|
+
displacementScale: 70,
|
|
754
|
+
blurAmount: 2,
|
|
755
|
+
cornerRadius: 12,
|
|
756
|
+
mode: 'shader',
|
|
757
|
+
}}
|
|
758
|
+
>
|
|
759
|
+
<SideMenuList>
|
|
760
|
+
<SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
|
|
761
|
+
Home
|
|
762
|
+
</SideMenuItem>
|
|
763
|
+
<SideMenuItem href="/trails" icon={<Icon name="MapPin" size="sm" />}>
|
|
764
|
+
Trails
|
|
765
|
+
</SideMenuItem>
|
|
766
|
+
<SideMenuItem href="/wildlife" icon={<Icon name="Sparkle" size="sm" />}>
|
|
767
|
+
Wildlife
|
|
768
|
+
</SideMenuItem>
|
|
769
|
+
<SideMenuItem href="/camping" icon={<Icon name="Tent" size="sm" />}>
|
|
770
|
+
Camping
|
|
771
|
+
</SideMenuItem>
|
|
772
|
+
</SideMenuList>
|
|
773
|
+
<SideMenuList>
|
|
774
|
+
<SideMenuItem href="/guides" icon={<Icon name="Book" size="sm" />}>
|
|
775
|
+
Guides
|
|
776
|
+
</SideMenuItem>
|
|
777
|
+
<SideMenuItem href="/gear" icon={<Icon name="Backpack" size="sm" />}>
|
|
778
|
+
Gear List
|
|
779
|
+
</SideMenuItem>
|
|
780
|
+
</SideMenuList>
|
|
781
|
+
</SideMenu>
|
|
782
|
+
</div>
|
|
783
|
+
<div style={{ position: 'relative', zIndex: 1, flex: 1, maxWidth: '600px' }}>
|
|
784
|
+
<h2
|
|
785
|
+
style={{
|
|
786
|
+
color: 'white',
|
|
787
|
+
fontSize: '32px',
|
|
788
|
+
fontWeight: 600,
|
|
789
|
+
marginBottom: '16px',
|
|
790
|
+
textShadow: '0 2px 10px rgba(0,0,0,0.5)',
|
|
791
|
+
}}
|
|
792
|
+
>
|
|
793
|
+
Custom Glass Properties
|
|
794
|
+
</h2>
|
|
795
|
+
<p
|
|
796
|
+
style={{
|
|
797
|
+
color: 'rgba(255,255,255,0.9)',
|
|
798
|
+
fontSize: '18px',
|
|
799
|
+
lineHeight: 1.6,
|
|
800
|
+
textShadow: '0 2px 10px rgba(0,0,0,0.5)',
|
|
801
|
+
}}
|
|
802
|
+
>
|
|
803
|
+
Enhanced glass effect with custom displacement, blur, and corner radius. Perfect for
|
|
804
|
+
creating unique visual experiences tailored to your brand.
|
|
805
|
+
</p>
|
|
806
|
+
</div>
|
|
807
|
+
</BackgroundWrapper>
|
|
808
|
+
),
|
|
809
|
+
parameters: {
|
|
810
|
+
layout: 'fullscreen',
|
|
811
|
+
docs: {
|
|
812
|
+
description: {
|
|
813
|
+
story:
|
|
814
|
+
'Customized glass effect with increased displacement and blur for a more pronounced visual impact. Demonstrates the flexibility of the glass morphism system.',
|
|
815
|
+
},
|
|
816
|
+
},
|
|
817
|
+
},
|
|
818
|
+
};
|
|
819
|
+
|
|
820
|
+
/**
|
|
821
|
+
* Glass Theme Variations
|
|
822
|
+
*
|
|
823
|
+
* A comprehensive showcase of glass sidebar across different themed
|
|
824
|
+
* backgrounds, demonstrating versatility and adaptability.
|
|
825
|
+
*/
|
|
826
|
+
export const GlassThemeShowcase: Story = {
|
|
827
|
+
render: () => (
|
|
828
|
+
<div style={{ display: 'flex', flexDirection: 'column', gap: '3rem' }}>
|
|
829
|
+
{/* Ocean Theme */}
|
|
830
|
+
<BackgroundWrapper
|
|
831
|
+
backgroundImage="https://images.unsplash.com/photo-1505142468610-359e7d316be0?q=80&w=2940&auto=format&fit=crop"
|
|
832
|
+
height="70vh"
|
|
833
|
+
>
|
|
834
|
+
<div style={{ position: 'relative', width: '300px' }}>
|
|
835
|
+
<SideMenu title="Ocean Explorer" glass>
|
|
836
|
+
<SideMenuList>
|
|
837
|
+
<SideMenuItem href="/" icon={<Icon name="House" size="sm" />} active>
|
|
838
|
+
Home
|
|
839
|
+
</SideMenuItem>
|
|
840
|
+
<SideMenuItem href="/beaches" icon={<Icon name="Sun" size="sm" />}>
|
|
841
|
+
Beaches
|
|
842
|
+
</SideMenuItem>
|
|
843
|
+
<SideMenuItem href="/diving" icon={<Icon name="Waves" size="sm" />}>
|
|
844
|
+
Diving
|
|
845
|
+
</SideMenuItem>
|
|
846
|
+
</SideMenuList>
|
|
847
|
+
</SideMenu>
|
|
848
|
+
</div>
|
|
849
|
+
<div style={{ position: 'relative', flex: 1 }}>
|
|
850
|
+
<h3
|
|
851
|
+
style={{
|
|
852
|
+
color: 'white',
|
|
853
|
+
fontSize: '24px',
|
|
854
|
+
fontWeight: 600,
|
|
855
|
+
textShadow: '0 2px 10px rgba(0,0,0,0.5)',
|
|
856
|
+
}}
|
|
857
|
+
>
|
|
858
|
+
Ocean & Travel Theme
|
|
859
|
+
</h3>
|
|
860
|
+
</div>
|
|
861
|
+
</BackgroundWrapper>
|
|
862
|
+
|
|
863
|
+
{/* Urban Theme */}
|
|
864
|
+
<BackgroundWrapper
|
|
865
|
+
backgroundImage="https://images.unsplash.com/photo-1514565131-fce0801e5785?q=80&w=2940&auto=format&fit=crop"
|
|
866
|
+
height="70vh"
|
|
867
|
+
>
|
|
868
|
+
<div style={{ position: 'relative', width: '300px' }}>
|
|
869
|
+
<SideMenu title="Admin Panel" glass>
|
|
870
|
+
<SideMenuList>
|
|
871
|
+
<SideMenuItem href="/dashboard" icon={<Icon name="ChartBar" size="sm" />} active>
|
|
872
|
+
Dashboard
|
|
873
|
+
</SideMenuItem>
|
|
874
|
+
<SideMenuItem href="/analytics" icon={<Icon name="TrendUp" size="sm" />}>
|
|
875
|
+
Analytics
|
|
876
|
+
</SideMenuItem>
|
|
877
|
+
<SideMenuItem href="/users" icon={<Icon name="Users" size="sm" />}>
|
|
878
|
+
Users
|
|
879
|
+
</SideMenuItem>
|
|
880
|
+
</SideMenuList>
|
|
881
|
+
</SideMenu>
|
|
882
|
+
</div>
|
|
883
|
+
<div style={{ position: 'relative', flex: 1 }}>
|
|
884
|
+
<h3
|
|
885
|
+
style={{
|
|
886
|
+
color: 'white',
|
|
887
|
+
fontSize: '24px',
|
|
888
|
+
fontWeight: 600,
|
|
889
|
+
textShadow: '0 2px 10px rgba(0,0,0,0.5)',
|
|
890
|
+
}}
|
|
891
|
+
>
|
|
892
|
+
Modern & Professional Theme
|
|
893
|
+
</h3>
|
|
894
|
+
</div>
|
|
895
|
+
</BackgroundWrapper>
|
|
896
|
+
|
|
897
|
+
{/* Sunset Theme */}
|
|
898
|
+
<BackgroundWrapper
|
|
899
|
+
backgroundImage="https://images.unsplash.com/photo-1495616811223-4d98c6e9c869?q=80&w=2940&auto=format&fit=crop"
|
|
900
|
+
height="70vh"
|
|
901
|
+
>
|
|
902
|
+
<div style={{ position: 'relative', width: '320px' }}>
|
|
903
|
+
<SideMenu
|
|
904
|
+
title="Travel Hub"
|
|
905
|
+
glass={{
|
|
906
|
+
displacementScale: 60,
|
|
907
|
+
blurAmount: 1.8,
|
|
908
|
+
cornerRadius: 16,
|
|
909
|
+
mode: 'shader',
|
|
910
|
+
}}
|
|
911
|
+
>
|
|
912
|
+
<SideMenuList>
|
|
913
|
+
<SideMenuItem href="/home" icon={<Icon name="House" size="sm" />} active>
|
|
914
|
+
Home
|
|
915
|
+
</SideMenuItem>
|
|
916
|
+
<SideMenuItem href="/destinations" icon={<Icon name="MapPin" size="sm" />}>
|
|
917
|
+
Destinations
|
|
918
|
+
</SideMenuItem>
|
|
919
|
+
<SideMenuItem href="/bookings" icon={<Icon name="Calendar" size="sm" />}>
|
|
920
|
+
Bookings
|
|
921
|
+
</SideMenuItem>
|
|
922
|
+
</SideMenuList>
|
|
923
|
+
</SideMenu>
|
|
924
|
+
</div>
|
|
925
|
+
<div style={{ position: 'relative', flex: 1 }}>
|
|
926
|
+
<h3
|
|
927
|
+
style={{
|
|
928
|
+
color: 'white',
|
|
929
|
+
fontSize: '24px',
|
|
930
|
+
fontWeight: 600,
|
|
931
|
+
textShadow: '0 2px 10px rgba(0,0,0,0.5)',
|
|
932
|
+
}}
|
|
933
|
+
>
|
|
934
|
+
Warm & Inviting Theme
|
|
935
|
+
</h3>
|
|
936
|
+
</div>
|
|
937
|
+
</BackgroundWrapper>
|
|
938
|
+
</div>
|
|
939
|
+
),
|
|
940
|
+
parameters: {
|
|
941
|
+
layout: 'fullscreen',
|
|
942
|
+
docs: {
|
|
943
|
+
description: {
|
|
944
|
+
story:
|
|
945
|
+
'A comprehensive showcase demonstrating how glass sidebar adapts to different themes and color palettes. Each example represents a different use case and aesthetic.',
|
|
946
|
+
},
|
|
947
|
+
},
|
|
948
|
+
},
|
|
949
|
+
};
|
|
@@ -3,6 +3,8 @@ import { SideMenuProps } from '../../../lib/types/components';
|
|
|
3
3
|
import { useSideMenu } from '../../../lib/composables/useSideMenu';
|
|
4
4
|
import { SIDE_MENU } from '../../../lib/constants/components';
|
|
5
5
|
import { Icon } from '../../Icon';
|
|
6
|
+
import { AtomixGlass } from '../../AtomixGlass/AtomixGlass';
|
|
7
|
+
import { log } from 'console';
|
|
6
8
|
|
|
7
9
|
/**
|
|
8
10
|
* SideMenu component provides a collapsible navigation menu with title and menu items.
|
|
@@ -28,9 +30,11 @@ export const SideMenu = forwardRef<HTMLDivElement, SideMenuProps>(
|
|
|
28
30
|
onToggle,
|
|
29
31
|
collapsible = true,
|
|
30
32
|
className = '',
|
|
33
|
+
style,
|
|
31
34
|
disabled = false,
|
|
32
35
|
toggleIcon,
|
|
33
36
|
id,
|
|
37
|
+
glass,
|
|
34
38
|
},
|
|
35
39
|
ref
|
|
36
40
|
) => {
|
|
@@ -54,8 +58,8 @@ export const SideMenu = forwardRef<HTMLDivElement, SideMenuProps>(
|
|
|
54
58
|
// Default toggle icon using Atomix Icon component
|
|
55
59
|
const defaultToggleIcon = <Icon name="CaretRight" size="xs" />;
|
|
56
60
|
|
|
57
|
-
|
|
58
|
-
|
|
61
|
+
const sideMenuContent = (
|
|
62
|
+
<>
|
|
59
63
|
{title && collapsible && (
|
|
60
64
|
<div
|
|
61
65
|
className="c-side-menu__toggler"
|
|
@@ -89,6 +93,29 @@ export const SideMenu = forwardRef<HTMLDivElement, SideMenuProps>(
|
|
|
89
93
|
{children}
|
|
90
94
|
</div>
|
|
91
95
|
</div>
|
|
96
|
+
</>
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
if (glass) {
|
|
100
|
+
const defaultGlassProps = {
|
|
101
|
+
displacementScale: 70,
|
|
102
|
+
blurAmount: 2,
|
|
103
|
+
cornerRadius: 12,
|
|
104
|
+
mode: 'shader' as const,
|
|
105
|
+
};
|
|
106
|
+
const glassProps = glass === true ? defaultGlassProps : { ...defaultGlassProps, ...glass };
|
|
107
|
+
return (
|
|
108
|
+
<AtomixGlass {...glassProps}>
|
|
109
|
+
<div ref={ref} className={sideMenuClass + ' c-side-menu--glass'} id={id} style={style}>
|
|
110
|
+
{sideMenuContent}
|
|
111
|
+
</div>
|
|
112
|
+
</AtomixGlass>
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return (
|
|
117
|
+
<div ref={ref} className={sideMenuClass} id={id} style={style}>
|
|
118
|
+
{sideMenuContent}
|
|
92
119
|
</div>
|
|
93
120
|
);
|
|
94
121
|
}
|
|
@@ -201,13 +201,13 @@ export const Glass = {
|
|
|
201
201
|
size: 'md',
|
|
202
202
|
glass: true,
|
|
203
203
|
},
|
|
204
|
-
render: (args) => {
|
|
204
|
+
render: (args: any) => {
|
|
205
205
|
const [currentPage, setCurrentPage] = React.useState(args.currentPage);
|
|
206
206
|
const handlePageChange = (page: number) => {
|
|
207
207
|
setCurrentPage(page);
|
|
208
208
|
args.onPageChange?.(page);
|
|
209
209
|
};
|
|
210
|
-
|
|
210
|
+
|
|
211
211
|
return (
|
|
212
212
|
<div
|
|
213
213
|
style={{
|
|
@@ -249,17 +249,18 @@ export const GlassCustom = {
|
|
|
249
249
|
cornerRadius: 12,
|
|
250
250
|
},
|
|
251
251
|
},
|
|
252
|
-
render: (args) => {
|
|
252
|
+
render: (args: any) => {
|
|
253
253
|
const [currentPage, setCurrentPage] = React.useState(args.currentPage);
|
|
254
254
|
const handlePageChange = (page: number) => {
|
|
255
255
|
setCurrentPage(page);
|
|
256
256
|
args.onPageChange?.(page);
|
|
257
257
|
};
|
|
258
|
-
|
|
258
|
+
|
|
259
259
|
return (
|
|
260
260
|
<div
|
|
261
261
|
style={{
|
|
262
|
-
background:
|
|
262
|
+
background:
|
|
263
|
+
'url(https://images.unsplash.com/photo-1506905925346-21bda4d32df4?ixlib=rb-4.0.3&auto=format&fit=crop&w=1000&q=80)',
|
|
263
264
|
backgroundSize: 'cover',
|
|
264
265
|
backgroundPosition: 'center',
|
|
265
266
|
padding: '2rem',
|
|
@@ -271,7 +272,13 @@ export const GlassCustom = {
|
|
|
271
272
|
}}
|
|
272
273
|
>
|
|
273
274
|
<div style={{ textAlign: 'center' }}>
|
|
274
|
-
<h3
|
|
275
|
+
<h3
|
|
276
|
+
style={{
|
|
277
|
+
color: 'white',
|
|
278
|
+
marginBottom: '2rem',
|
|
279
|
+
textShadow: '0 2px 4px rgba(0,0,0,0.5)',
|
|
280
|
+
}}
|
|
281
|
+
>
|
|
275
282
|
Custom Glass Pagination
|
|
276
283
|
</h3>
|
|
277
284
|
<Pagination {...args} currentPage={currentPage} onPageChange={handlePageChange} />
|
|
@@ -61,6 +61,7 @@ export const Pagination: React.FC<PaginationProps> = ({
|
|
|
61
61
|
showPrevNextButtons = PAGINATION_DEFAULTS.showPrevNextButtons,
|
|
62
62
|
size = PAGINATION_DEFAULTS.size,
|
|
63
63
|
className = '',
|
|
64
|
+
style,
|
|
64
65
|
ariaLabel = 'Pagination',
|
|
65
66
|
glass,
|
|
66
67
|
}) => {
|
|
@@ -77,7 +78,11 @@ export const Pagination: React.FC<PaginationProps> = ({
|
|
|
77
78
|
}
|
|
78
79
|
|
|
79
80
|
const paginationContent = (
|
|
80
|
-
<nav
|
|
81
|
+
<nav
|
|
82
|
+
className={`c-pagination c-pagination--${size} ${className}`}
|
|
83
|
+
style={style}
|
|
84
|
+
aria-label={ariaLabel}
|
|
85
|
+
>
|
|
81
86
|
<ul className="c-pagination__items">
|
|
82
87
|
{showFirstLastButtons && (
|
|
83
88
|
<PaginationNavButton
|
|
@@ -169,11 +174,7 @@ export const Pagination: React.FC<PaginationProps> = ({
|
|
|
169
174
|
|
|
170
175
|
const glassProps = glass === true ? defaultGlassProps : { ...defaultGlassProps, ...glass };
|
|
171
176
|
|
|
172
|
-
return
|
|
173
|
-
<AtomixGlass {...glassProps}>
|
|
174
|
-
{paginationContent}
|
|
175
|
-
</AtomixGlass>
|
|
176
|
-
);
|
|
177
|
+
return <AtomixGlass {...glassProps}>{paginationContent}</AtomixGlass>;
|
|
177
178
|
}
|
|
178
179
|
|
|
179
180
|
return paginationContent;
|
|
@@ -111,7 +111,8 @@ export const PhotoViewer: React.FC<PhotoViewerProps> = ({
|
|
|
111
111
|
|
|
112
112
|
const link = document.createElement('a');
|
|
113
113
|
link.href = currentImage.src;
|
|
114
|
-
|
|
114
|
+
const sanitizedTitle = (currentImage.title || `image-${currentIndex + 1}`).replace(/[^a-zA-Z0-9.-]/g, '_');
|
|
115
|
+
link.download = sanitizedTitle;
|
|
115
116
|
document.body.appendChild(link);
|
|
116
117
|
link.click();
|
|
117
118
|
document.body.removeChild(link);
|
|
@@ -155,12 +155,14 @@ GlassPopover.args = {
|
|
|
155
155
|
glass: true,
|
|
156
156
|
};
|
|
157
157
|
GlassPopover.decorators = [
|
|
158
|
-
|
|
159
|
-
<div
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
158
|
+
Story => (
|
|
159
|
+
<div
|
|
160
|
+
style={{
|
|
161
|
+
background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
|
|
162
|
+
minHeight: '100vh',
|
|
163
|
+
padding: '2rem',
|
|
164
|
+
}}
|
|
165
|
+
>
|
|
164
166
|
<Story />
|
|
165
167
|
</div>
|
|
166
168
|
),
|
|
@@ -182,12 +184,14 @@ GlassPopoverCustom.args = {
|
|
|
182
184
|
},
|
|
183
185
|
};
|
|
184
186
|
GlassPopoverCustom.decorators = [
|
|
185
|
-
|
|
186
|
-
<div
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
187
|
+
Story => (
|
|
188
|
+
<div
|
|
189
|
+
style={{
|
|
190
|
+
background: 'linear-gradient(45deg, #f093fb 0%, #f5576c 100%)',
|
|
191
|
+
minHeight: '100vh',
|
|
192
|
+
padding: '2rem',
|
|
193
|
+
}}
|
|
194
|
+
>
|
|
191
195
|
<Story />
|
|
192
196
|
</div>
|
|
193
197
|
),
|
|
@@ -204,12 +208,14 @@ GlassPopoverHover.args = {
|
|
|
204
208
|
glass: true,
|
|
205
209
|
};
|
|
206
210
|
GlassPopoverHover.decorators = [
|
|
207
|
-
|
|
208
|
-
<div
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
211
|
+
Story => (
|
|
212
|
+
<div
|
|
213
|
+
style={{
|
|
214
|
+
background: 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)',
|
|
215
|
+
minHeight: '100vh',
|
|
216
|
+
padding: '2rem',
|
|
217
|
+
}}
|
|
218
|
+
>
|
|
213
219
|
<Story />
|
|
214
220
|
</div>
|
|
215
221
|
),
|
|
@@ -225,12 +231,14 @@ GlassPopoverPositions.args = {
|
|
|
225
231
|
defaultOpen: true,
|
|
226
232
|
};
|
|
227
233
|
GlassPopoverPositions.decorators = [
|
|
228
|
-
|
|
229
|
-
<div
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
+
Story => (
|
|
235
|
+
<div
|
|
236
|
+
style={{
|
|
237
|
+
background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
|
|
238
|
+
minHeight: '100vh',
|
|
239
|
+
padding: '2rem',
|
|
240
|
+
}}
|
|
241
|
+
>
|
|
234
242
|
<Story />
|
|
235
243
|
</div>
|
|
236
244
|
),
|
|
@@ -28,6 +28,7 @@ export const Popover: React.FC<PopoverProps> = ({
|
|
|
28
28
|
position = 'top',
|
|
29
29
|
trigger = 'click',
|
|
30
30
|
className = '',
|
|
31
|
+
style,
|
|
31
32
|
delay = 0,
|
|
32
33
|
offset = 12,
|
|
33
34
|
defaultOpen = false,
|
|
@@ -72,6 +73,7 @@ export const Popover: React.FC<PopoverProps> = ({
|
|
|
72
73
|
<div
|
|
73
74
|
ref={popoverRef}
|
|
74
75
|
className={`c-popover c-popover--${currentPosition} ${isOpen ? POPOVER.CLASSES.IS_OPEN : ''} ${glass ? 'c-popover--glass' : ''} ${className}`}
|
|
76
|
+
style={style}
|
|
75
77
|
id={popoverId}
|
|
76
78
|
role="tooltip"
|
|
77
79
|
aria-hidden={!isOpen}
|
|
@@ -88,7 +90,8 @@ export const Popover: React.FC<PopoverProps> = ({
|
|
|
88
90
|
mode: 'shader' as const,
|
|
89
91
|
};
|
|
90
92
|
|
|
91
|
-
const glassProps =
|
|
93
|
+
const glassProps =
|
|
94
|
+
glass === true ? defaultGlassProps : { ...defaultGlassProps, ...glass };
|
|
92
95
|
|
|
93
96
|
return (
|
|
94
97
|
<AtomixGlass {...glassProps}>
|
|
@@ -43,6 +43,11 @@ export interface ProductReviewProps {
|
|
|
43
43
|
* Additional CSS class
|
|
44
44
|
*/
|
|
45
45
|
className?: string;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Inline style for the component
|
|
49
|
+
*/
|
|
50
|
+
style?: React.CSSProperties;
|
|
46
51
|
}
|
|
47
52
|
|
|
48
53
|
/**
|
|
@@ -57,6 +62,7 @@ export const ProductReview: React.FC<ProductReviewProps> = ({
|
|
|
57
62
|
ratingColor = 'warning' as ThemeColor,
|
|
58
63
|
onSubmit,
|
|
59
64
|
className = '',
|
|
65
|
+
style,
|
|
60
66
|
}) => {
|
|
61
67
|
const [rating, setRating] = useState<number>(initialRating);
|
|
62
68
|
const [comment, setComment] = useState<string>('');
|
|
@@ -90,7 +96,7 @@ export const ProductReview: React.FC<ProductReviewProps> = ({
|
|
|
90
96
|
|
|
91
97
|
if (submitted) {
|
|
92
98
|
return (
|
|
93
|
-
<div className={containerClasses} ref={reviewRef}>
|
|
99
|
+
<div className={containerClasses} ref={reviewRef} style={style}>
|
|
94
100
|
<div className="c-product-review__success">
|
|
95
101
|
<h3>Thank you for your review!</h3>
|
|
96
102
|
<p>Your feedback helps us improve our products.</p>
|
|
@@ -109,7 +115,7 @@ export const ProductReview: React.FC<ProductReviewProps> = ({
|
|
|
109
115
|
}
|
|
110
116
|
|
|
111
117
|
return (
|
|
112
|
-
<div className={containerClasses} ref={reviewRef}>
|
|
118
|
+
<div className={containerClasses} ref={reviewRef} style={style}>
|
|
113
119
|
<div className="c-product-review__header">
|
|
114
120
|
<h3 className="c-product-review__title">Review {productName}</h3>
|
|
115
121
|
{productImage && (
|