@asantemedia-org/leybold-design-system 1.0.10 → 1.0.12

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 (82) hide show
  1. package/dist/assets/ai-banner-desktop.png +0 -0
  2. package/dist/assets/ai-banner-mobile.png +0 -0
  3. package/dist/assets/carousel-card.png +0 -0
  4. package/dist/assets/desktop-layout-alt.svg +27 -0
  5. package/dist/assets/desktop-layout.svg +29 -0
  6. package/dist/assets/globe.svg +7 -0
  7. package/dist/assets/language-selector-bg.png +0 -0
  8. package/dist/assets/leybold-footer-logo.svg +19 -0
  9. package/dist/assets/leybold-white.svg +19 -0
  10. package/dist/assets/list-card-alt.png +0 -0
  11. package/dist/assets/list-card.png +0 -0
  12. package/dist/assets/list-link-a.png +0 -0
  13. package/dist/assets/list-link-b.png +0 -0
  14. package/dist/assets/list-link-c.png +0 -0
  15. package/dist/assets/list-product-overlay-tip-active.svg +3 -0
  16. package/dist/assets/list-product-overlay-tip.svg +3 -0
  17. package/dist/assets/list-product.png +0 -0
  18. package/dist/assets/logo-example.svg +9 -0
  19. package/dist/assets/logo.svg +19 -0
  20. package/dist/assets/phone-layout.svg +14 -0
  21. package/dist/assets/red-tip.svg +10 -0
  22. package/dist/assets/tablet-layout.svg +28 -0
  23. package/dist/index.esm.js +449 -6
  24. package/dist/index.esm.js.map +1 -1
  25. package/dist/index.esm.scss +1542 -84
  26. package/dist/index.js +454 -5
  27. package/dist/index.js.map +1 -1
  28. package/dist/index.scss +1542 -84
  29. package/dist/src/app/layout.d.ts +1 -0
  30. package/dist/src/app/page.d.ts +1 -0
  31. package/dist/src/components/AIBanner/AIBanner.d.ts +15 -0
  32. package/dist/src/components/AIBanner/AIBanner.stories.d.ts +7 -0
  33. package/dist/src/components/AIBanner/index.d.ts +2 -0
  34. package/dist/src/components/Button/Button.d.ts +50 -5
  35. package/dist/src/components/Button/Button.stories.d.ts +16 -3
  36. package/dist/src/components/LanguageSelector/LanguageSelector.d.ts +7 -0
  37. package/dist/src/components/LanguageSelector/LanguageSelector.stories.d.ts +32 -0
  38. package/dist/src/components/LanguageSelector/LanguageSelector.types.d.ts +64 -0
  39. package/dist/src/components/LanguageSelector/LanguageSelectorLink.d.ts +20 -0
  40. package/dist/src/components/LanguageSelector/LocationDropdown.d.ts +6 -0
  41. package/dist/src/components/LanguageSelector/LocationSelectorLink.d.ts +20 -0
  42. package/dist/src/components/LanguageSelector/index.d.ts +7 -0
  43. package/dist/src/experience/Carousel/Carousel.d.ts +36 -0
  44. package/dist/src/experience/Carousel/Carousel.stories.d.ts +7 -0
  45. package/dist/src/experience/Carousel/index.d.ts +2 -0
  46. package/dist/src/experience/Footer/Footer.d.ts +201 -0
  47. package/dist/src/experience/Footer/Footer.stories.d.ts +28 -0
  48. package/dist/src/experience/Footer/icons/AtlasCopcoIcon.d.ts +10 -0
  49. package/dist/src/experience/Footer/icons/ExternalLinkIcon.d.ts +10 -0
  50. package/dist/src/experience/Footer/icons/index.d.ts +2 -0
  51. package/dist/src/experience/Footer/index.d.ts +2 -0
  52. package/dist/src/experience/GeneratedList/GeneratedList.d.ts +40 -0
  53. package/dist/src/experience/GeneratedList/GeneratedList.stories.d.ts +7 -0
  54. package/dist/src/experience/GeneratedList/GeneratedList.types.d.ts +131 -0
  55. package/dist/src/experience/GeneratedList/GeneratedListExternalLink.stories.d.ts +7 -0
  56. package/dist/src/experience/GeneratedList/GeneratedListList.stories.d.ts +9 -0
  57. package/dist/src/experience/GeneratedList/GeneratedListProduct.stories.d.ts +7 -0
  58. package/dist/src/experience/GeneratedList/_Card.d.ts +8 -0
  59. package/dist/src/experience/GeneratedList/_CardMobile.d.ts +8 -0
  60. package/dist/src/experience/GeneratedList/_ExternalLink.d.ts +8 -0
  61. package/dist/src/experience/GeneratedList/_List.d.ts +8 -0
  62. package/dist/src/experience/GeneratedList/_Product.d.ts +9 -0
  63. package/dist/src/experience/GeneratedList/index.d.ts +2 -0
  64. package/dist/src/experience/Header/Header.d.ts +20 -0
  65. package/dist/src/experience/Header/Header.stories.d.ts +9 -0
  66. package/dist/src/experience/Header/HeaderNavButton.d.ts +9 -0
  67. package/dist/src/experience/Header/MegaMenu.d.ts +10 -0
  68. package/dist/src/experience/Header/MenuLink.d.ts +8 -0
  69. package/dist/src/experience/Header/MobileHeader.stories.d.ts +6 -0
  70. package/dist/src/experience/Header/MobileMenu.d.ts +9 -0
  71. package/dist/src/experience/Header/MobileNavBar.d.ts +13 -0
  72. package/dist/src/experience/Header/index.d.ts +6 -0
  73. package/dist/src/experience/algolia-dynamic-search/AlgoliaDynamicSearch.d.ts +1 -0
  74. package/dist/src/experience/qr-form-journey/QrFormJourney.d.ts +1 -0
  75. package/dist/src/index.d.ts +2 -0
  76. package/dist/src/stories/foundation/Buttons/ButtonComponents.d.ts +56 -0
  77. package/dist/src/stories/foundation/Typography/TypographyComponents.d.ts +45 -0
  78. package/dist/src/stories/foundation/_components/StoryLayout.d.ts +11 -0
  79. package/dist/src/types/cards.d.ts +1 -0
  80. package/dist/src/types/search.d.ts +5 -2
  81. package/dist/tsconfig.tsbuildinfo +1 -1
  82. package/package.json +5 -2
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import './globals.css';
2
3
  export declare const metadata: {
3
4
  title: string;
@@ -1 +1,2 @@
1
+ /// <reference types="react" />
1
2
  export default function Home(): JSX.Element;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ export interface AIBannerProps {
3
+ /**
4
+ * Banner message text
5
+ */
6
+ text?: string;
7
+ /**
8
+ * Additional CSS classes
9
+ */
10
+ className?: string;
11
+ }
12
+ /**
13
+ * AI translation notification banner
14
+ */
15
+ export declare const AIBanner: React.FC<AIBannerProps>;
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { AIBanner } from './AIBanner';
3
+ declare const meta: Meta<typeof AIBanner>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof AIBanner>;
6
+ export declare const Desktop: Story;
7
+ export declare const Mobile: Story;
@@ -0,0 +1,2 @@
1
+ export { AIBanner } from './AIBanner';
2
+ export type { AIBannerProps } from './AIBanner';
@@ -1,13 +1,25 @@
1
1
  import React from "react";
2
+ /**
3
+ * Button variant types
4
+ */
5
+ export type ButtonVariant = "default" | "primary" | "secondary" | "solid-red" | "solid-grey" | "solid-black" | "solid-white" | "outlined-red" | "outlined-grey" | "outlined-black" | "outlined-white" | "outline" | "text" | "link-text" | "link-text-alt" | "external-link" | "carousel-arrow-left" | "carousel-arrow-right";
6
+ /**
7
+ * Icon types for button
8
+ */
9
+ export type ButtonIcon = "arrow-right" | "external" | "chevron-left" | "chevron-right" | "none";
10
+ /**
11
+ * Icon position
12
+ */
13
+ export type IconPosition = "left" | "right";
2
14
  export interface ButtonProps {
3
15
  /**
4
- * Button content
16
+ * Button content (text label)
5
17
  */
6
- children: React.ReactNode;
18
+ children?: React.ReactNode;
7
19
  /**
8
- * Button variant
20
+ * Button variant - determines visual style
9
21
  */
10
- variant?: "primary" | "secondary" | "outline" | "text";
22
+ variant?: ButtonVariant;
11
23
  /**
12
24
  * Button size
13
25
  */
@@ -21,13 +33,46 @@ export interface ButtonProps {
21
33
  */
22
34
  onClick?: (e?: React.MouseEvent<HTMLButtonElement>) => void;
23
35
  /**
24
- * Button type
36
+ * Button type attribute
25
37
  */
26
38
  type?: "button" | "submit" | "reset";
27
39
  /**
28
40
  * Additional CSS classes
29
41
  */
30
42
  className?: string;
43
+ /**
44
+ * Icon to display
45
+ */
46
+ icon?: ButtonIcon;
47
+ /**
48
+ * Icon position (left or right of text)
49
+ */
50
+ iconPosition?: IconPosition;
51
+ /**
52
+ * Accessible label for icon-only buttons
53
+ */
54
+ ariaLabel?: string;
55
+ /**
56
+ * Opens link in new tab (for external links)
57
+ */
58
+ opensInNewTab?: boolean;
59
+ /**
60
+ * Inline styles
61
+ */
62
+ style?: React.CSSProperties;
63
+ /**
64
+ * Force a specific state for documentation purposes
65
+ * @internal
66
+ */
67
+ 'data-force-state'?: 'hover' | 'focus';
68
+ /**
69
+ * Data attribute for page target
70
+ */
71
+ 'data-page_target'?: string | number;
72
+ /**
73
+ * Tab index for focus order
74
+ */
75
+ tabIndex?: number;
31
76
  }
32
77
  /**
33
78
  * Primary UI component for user interaction
@@ -3,14 +3,27 @@ import { Button } from "./Button";
3
3
  declare const meta: Meta<typeof Button>;
4
4
  export default meta;
5
5
  type Story = StoryObj<typeof Button>;
6
+ export declare const Default: Story;
6
7
  export declare const Primary: Story;
7
- export declare const Secondary: Story;
8
+ export declare const SolidRed: Story;
9
+ export declare const SecondaryDesign: Story;
10
+ export declare const OutlinedRed: Story;
11
+ export declare const SolidWhite: Story;
12
+ export declare const SolidGrey: Story;
13
+ export declare const SolidBlack: Story;
14
+ export declare const OutlinedBlack: Story;
15
+ export declare const OutlinedGrey: Story;
16
+ export declare const OutlinedWhite: Story;
17
+ export declare const LinkText: Story;
18
+ export declare const LinkTextAlt: Story;
19
+ export declare const CarouselArrows: Story;
20
+ export declare const ExternalLink: Story;
8
21
  export declare const Outline: Story;
9
22
  export declare const Text: Story;
10
23
  export declare const ExtraSmall: Story;
11
24
  export declare const Small: Story;
12
25
  export declare const Medium: Story;
13
26
  export declare const Large: Story;
14
- export declare const Disabled: Story;
15
- export declare const AllVariants: Story;
16
27
  export declare const AllSizes: Story;
28
+ export declare const AllVariants: Story;
29
+ export declare const Disabled: Story;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { LanguageSelectorProps } from './LanguageSelector.types';
3
+ /**
4
+ * Language Selector component
5
+ * Responsive layout: Desktop shows two-column grid, Mobile shows dropdown + links
6
+ */
7
+ export declare const LanguageSelector: React.FC<LanguageSelectorProps>;
@@ -0,0 +1,32 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { LanguageSelector } from './LanguageSelector';
3
+ declare const meta: Meta<typeof LanguageSelector>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof LanguageSelector>;
6
+ /**
7
+ * Desktop layout with two-column location grid and "Go to the international sites" heading.
8
+ * Shown overlaid on the Leybold website hero for realistic context.
9
+ * Features proper single-selection behaviour for locations and languages.
10
+ */
11
+ export declare const Desktop: Story;
12
+ /**
13
+ * Mobile layout with location dropdown and "Language" heading.
14
+ * Best viewed in mobile viewport (<992px).
15
+ * Features proper single-selection behaviour for locations and languages.
16
+ */
17
+ export declare const Mobile: Story;
18
+ /**
19
+ * Location dropdown component showing closed and open states.
20
+ * Used on mobile view for location selection.
21
+ */
22
+ export declare const LocationDropdownStory: Story;
23
+ /**
24
+ * Location selector link showing all four states:
25
+ * Default, Hover, Focus, and Selected (black bold text with red checkmark).
26
+ */
27
+ export declare const LocationSelectorLinkStory: Story;
28
+ /**
29
+ * Language selector link showing all four states:
30
+ * Default, Hover, Focus, and Selected (red background with white text and checkmark).
31
+ */
32
+ export declare const LanguageSelectorLinkStory: Story;
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Location item for the language selector
3
+ */
4
+ export interface Location {
5
+ /** Display name of the location */
6
+ name: string;
7
+ /** URL to navigate to when selected */
8
+ href: string;
9
+ /** Whether this location is currently selected */
10
+ isSelected?: boolean;
11
+ }
12
+ /**
13
+ * Language item for the language selector
14
+ */
15
+ export interface Language {
16
+ /** Display name of the language */
17
+ name: string;
18
+ /** Optional language/region code (e.g., 'ES', 'MX', 'FR') */
19
+ code?: string;
20
+ /** URL to navigate to when selected */
21
+ href: string;
22
+ /** Whether this language is currently selected */
23
+ isSelected?: boolean;
24
+ }
25
+ /**
26
+ * Props for the LocationDropdown sub-component (mobile)
27
+ */
28
+ export interface LocationDropdownProps {
29
+ /** Array of available locations */
30
+ locations: Location[];
31
+ /** Currently selected location name */
32
+ selectedLocation?: string;
33
+ /** Whether the dropdown is open */
34
+ isOpen: boolean;
35
+ /** Toggle dropdown open/closed */
36
+ onToggle: () => void;
37
+ /** Handler when a location is selected */
38
+ onSelect: (location: Location) => void;
39
+ /** Additional CSS class */
40
+ className?: string;
41
+ }
42
+ /**
43
+ * Props for the main LanguageSelector component
44
+ */
45
+ export interface LanguageSelectorProps {
46
+ /** Array of available locations */
47
+ locations: Location[];
48
+ /** Array of available languages */
49
+ languages: Language[];
50
+ /** Heading text for the location section */
51
+ locationHeading?: string;
52
+ /** Heading text for the language section (desktop) */
53
+ languageHeadingDesktop?: string;
54
+ /** Heading text for the language section (mobile) */
55
+ languageHeadingMobile?: string;
56
+ /** Handler when a location is selected */
57
+ onLocationSelect?: (location: Location) => void;
58
+ /** Handler when a language is selected */
59
+ onLanguageSelect?: (language: Language) => void;
60
+ /** Handler when close button is clicked */
61
+ onClose?: () => void;
62
+ /** Additional CSS class */
63
+ className?: string;
64
+ }
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ export interface LanguageSelectorLinkProps {
3
+ /** Display label for the link */
4
+ label: string;
5
+ /** Optional secondary label (e.g., language code) */
6
+ secondaryLabel?: string;
7
+ /** URL to navigate to */
8
+ href: string;
9
+ /** Whether the link is currently selected */
10
+ isSelected?: boolean;
11
+ /** Click handler */
12
+ onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;
13
+ /** Additional CSS class */
14
+ className?: string;
15
+ }
16
+ /**
17
+ * Language selector link component
18
+ * Selected state: Red background with white text and white checkmark
19
+ */
20
+ export declare const LanguageSelectorLink: React.FC<LanguageSelectorLinkProps>;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { LocationDropdownProps } from './LanguageSelector.types';
3
+ /**
4
+ * Dropdown component for selecting locations (mobile view)
5
+ */
6
+ export declare const LocationDropdown: React.FC<LocationDropdownProps>;
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ export interface LocationSelectorLinkProps {
3
+ /** Display label for the link */
4
+ label: string;
5
+ /** URL to navigate to */
6
+ href: string;
7
+ /** Whether the link is currently selected */
8
+ isSelected?: boolean;
9
+ /** Click handler */
10
+ onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;
11
+ /** Keyboard handler */
12
+ onKeyDown?: (event: React.KeyboardEvent<HTMLAnchorElement>) => void;
13
+ /** Additional CSS class */
14
+ className?: string;
15
+ }
16
+ /**
17
+ * Location selector link component
18
+ * Selected state: Black bold text with red checkmark (no background)
19
+ */
20
+ export declare const LocationSelectorLink: React.FC<LocationSelectorLinkProps>;
@@ -0,0 +1,7 @@
1
+ export { LanguageSelector } from './LanguageSelector';
2
+ export { LocationSelectorLink } from './LocationSelectorLink';
3
+ export type { LocationSelectorLinkProps } from './LocationSelectorLink';
4
+ export { LanguageSelectorLink } from './LanguageSelectorLink';
5
+ export type { LanguageSelectorLinkProps } from './LanguageSelectorLink';
6
+ export { LocationDropdown } from './LocationDropdown';
7
+ export type { Location, Language, LanguageSelectorProps, LocationDropdownProps, } from './LanguageSelector.types';
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ export interface CarouselCardData {
3
+ /** Card image URL */
4
+ imageUrl: string;
5
+ /** Card image alt text */
6
+ imageAlt: string;
7
+ /** Card title */
8
+ title: string;
9
+ /** Card link text (e.g., "LEARN MORE") */
10
+ linkText: string;
11
+ /** Card link URL */
12
+ linkUrl: string;
13
+ }
14
+ export interface CarouselProps {
15
+ /** Section title (displayed in italic bold) */
16
+ title: string;
17
+ /** Section subtitle/description */
18
+ subtitle?: string;
19
+ /** CTA button text */
20
+ buttonText?: string;
21
+ /** CTA button URL */
22
+ buttonUrl?: string;
23
+ /** Array of carousel cards */
24
+ cards: CarouselCardData[];
25
+ /** Show pagination dots (desktop only) */
26
+ showDots?: boolean;
27
+ /** Show navigation arrows */
28
+ showArrows?: boolean;
29
+ /** Additional CSS class */
30
+ className?: string;
31
+ }
32
+ /**
33
+ * Carousel component for displaying multiple content cards in a sliding format.
34
+ * Supports responsive layouts with 3 cards on desktop and 1 card on mobile.
35
+ */
36
+ export declare const Carousel: React.FC<CarouselProps>;
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Carousel } from './Carousel';
3
+ declare const meta: Meta<typeof Carousel>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Carousel>;
6
+ export declare const Desktop: Story;
7
+ export declare const Mobile: Story;
@@ -0,0 +1,2 @@
1
+ export { Carousel } from './Carousel';
2
+ export type { CarouselProps, CarouselCardData } from './Carousel';
@@ -0,0 +1,201 @@
1
+ import React from 'react';
2
+ export interface FooterLinkItem {
3
+ /**
4
+ * Link text label
5
+ */
6
+ label: string;
7
+ /**
8
+ * Link URL
9
+ */
10
+ href: string;
11
+ /**
12
+ * Whether this is an external link (shows external icon)
13
+ */
14
+ external?: boolean;
15
+ /**
16
+ * Optional click handler (useful for cookie settings etc.)
17
+ */
18
+ onClick?: () => void;
19
+ }
20
+ export interface SocialLinkItem {
21
+ /**
22
+ * Social media platform
23
+ */
24
+ platform: 'facebook' | 'x' | 'linkedin' | 'youtube' | 'instagram';
25
+ /**
26
+ * Link URL
27
+ */
28
+ href: string;
29
+ /**
30
+ * Accessible label for screen readers
31
+ */
32
+ ariaLabel: string;
33
+ }
34
+ export interface FooterLogoProps {
35
+ /**
36
+ * Logo image source URL
37
+ */
38
+ src: string;
39
+ /**
40
+ * Logo alt text
41
+ */
42
+ alt: string;
43
+ /**
44
+ * Optional link URL for logo
45
+ */
46
+ href?: string;
47
+ }
48
+ export interface FooterProps {
49
+ /**
50
+ * Layout variant - 'desktop' (logo top) or 'mobile' (logo bottom)
51
+ */
52
+ variant?: 'desktop' | 'mobile';
53
+ /**
54
+ * Logo configuration
55
+ */
56
+ logo: FooterLogoProps;
57
+ /**
58
+ * Brand motto/tagline
59
+ */
60
+ motto: string;
61
+ /**
62
+ * Atlas Copco badge configuration
63
+ */
64
+ atlasCopcoBadge?: {
65
+ text: string;
66
+ showIcon?: boolean;
67
+ };
68
+ /**
69
+ * Quick links section
70
+ */
71
+ quickLinks: FooterLinkItem[];
72
+ /**
73
+ * Quick links section heading
74
+ */
75
+ quickLinksHeading?: string;
76
+ /**
77
+ * Contact links section
78
+ */
79
+ contactLinks: FooterLinkItem[];
80
+ /**
81
+ * Contact section heading
82
+ */
83
+ contactHeading?: string;
84
+ /**
85
+ * Social media links
86
+ */
87
+ socialLinks: SocialLinkItem[];
88
+ /**
89
+ * Contact form CTA button (mobile only)
90
+ */
91
+ contactFormButton?: {
92
+ label: string;
93
+ href: string;
94
+ };
95
+ /**
96
+ * Bottom navigation links
97
+ */
98
+ bottomLinks: FooterLinkItem[];
99
+ /**
100
+ * Copyright text
101
+ */
102
+ copyright: string;
103
+ /**
104
+ * Country selector configuration
105
+ */
106
+ countrySelector?: {
107
+ label: string;
108
+ href?: string;
109
+ showIcon?: boolean;
110
+ };
111
+ /**
112
+ * Additional CSS classes
113
+ */
114
+ className?: string;
115
+ }
116
+ export interface FooterLinkProps {
117
+ /**
118
+ * Link item data
119
+ */
120
+ item: FooterLinkItem;
121
+ /**
122
+ * Additional CSS classes
123
+ */
124
+ className?: string;
125
+ /**
126
+ * Variant style
127
+ */
128
+ variant?: 'default' | 'bottom';
129
+ }
130
+ export declare const FooterLink: React.FC<FooterLinkProps>;
131
+ export interface FooterLinkGroupProps {
132
+ /**
133
+ * Section heading
134
+ */
135
+ heading: string;
136
+ /**
137
+ * Array of links
138
+ */
139
+ links: FooterLinkItem[];
140
+ /**
141
+ * Additional CSS classes
142
+ */
143
+ className?: string;
144
+ /**
145
+ * Children to render after links (e.g., social icons)
146
+ */
147
+ children?: React.ReactNode;
148
+ }
149
+ export declare const FooterLinkGroup: React.FC<FooterLinkGroupProps>;
150
+ export interface FooterSocialIconsProps {
151
+ /**
152
+ * Array of social links
153
+ */
154
+ links: SocialLinkItem[];
155
+ /**
156
+ * Additional CSS classes
157
+ */
158
+ className?: string;
159
+ }
160
+ export declare const FooterSocialIcons: React.FC<FooterSocialIconsProps>;
161
+ export interface FooterSocialIconProps {
162
+ /**
163
+ * Social media platform
164
+ */
165
+ platform: SocialLinkItem['platform'];
166
+ /**
167
+ * Additional CSS classes
168
+ */
169
+ className?: string;
170
+ }
171
+ export declare const FooterSocialIcon: React.FC<FooterSocialIconProps>;
172
+ export interface FooterBottomProps {
173
+ /**
174
+ * Bottom navigation links
175
+ */
176
+ links: FooterLinkItem[];
177
+ /**
178
+ * Copyright text
179
+ */
180
+ copyright: string;
181
+ /**
182
+ * Country selector configuration
183
+ */
184
+ countrySelector?: {
185
+ label: string;
186
+ href?: string;
187
+ showIcon?: boolean;
188
+ };
189
+ /**
190
+ * Additional CSS classes
191
+ */
192
+ className?: string;
193
+ }
194
+ export declare const FooterBottom: React.FC<FooterBottomProps>;
195
+ /**
196
+ * Footer component with brand identity, navigation links, social icons, and legal information.
197
+ * Supports two layout variants:
198
+ * - desktop: Logo at top, 3-column main content
199
+ * - mobile: Logo at bottom, stacked layout with CTA button
200
+ */
201
+ export declare const Footer: React.FC<FooterProps>;
@@ -0,0 +1,28 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Footer } from './Footer';
3
+ declare const meta: Meta<typeof Footer>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof Footer>;
6
+ /**
7
+ * Desktop footer layout with logo at top, 3-column main content area.
8
+ * - Left column: Motto + Atlas Copco badge
9
+ * - Middle column: Quick links (6 items including Leybold blog)
10
+ * - Right column: Contact links (3 items) + Social icons (24×24px)
11
+ *
12
+ * **Interactive demonstrations:**
13
+ * - Use the Pseudo States toolbar button (above canvas) to toggle hover/focus states
14
+ * - Click play button in Interactions panel to see focus state animations
15
+ */
16
+ export declare const Desktop: Story;
17
+ /**
18
+ * Mobile footer layout with logo at BOTTOM.
19
+ * Order from top to bottom:
20
+ * 1. Quick links (7 items, no Leybold blog, has Suppliers + Whistleblower)
21
+ * 2. Contact us (2 items)
22
+ * 3. Contact Form CTA button (red)
23
+ * 4. Social icons (55×55px)
24
+ * 5. Country selector (International / EN)
25
+ * 6. Bottom links + copyright
26
+ * 7. Logo + Motto + Atlas Copco badge (AT BOTTOM)
27
+ */
28
+ export declare const Mobile: Story;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface AtlasCopcoIconProps {
3
+ className?: string;
4
+ size?: number;
5
+ }
6
+ /**
7
+ * Atlas Copco Group badge icon (square)
8
+ */
9
+ export declare const AtlasCopcoIcon: React.FC<AtlasCopcoIconProps>;
10
+ export {};
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface ExternalLinkIconProps {
3
+ className?: string;
4
+ size?: number;
5
+ }
6
+ /**
7
+ * External link icon (↗) for footer links that open in new tabs
8
+ */
9
+ export declare const ExternalLinkIcon: React.FC<ExternalLinkIconProps>;
10
+ export {};
@@ -0,0 +1,2 @@
1
+ export { ExternalLinkIcon } from './ExternalLinkIcon';
2
+ export { AtlasCopcoIcon } from './AtlasCopcoIcon';
@@ -0,0 +1,2 @@
1
+ export { Footer, FooterLink, FooterLinkGroup, FooterSocialIcons, FooterSocialIcon, FooterBottom, } from './Footer';
2
+ export type { FooterProps, FooterLinkItem, SocialLinkItem, FooterLogoProps, FooterLinkProps, FooterLinkGroupProps, FooterSocialIconsProps, FooterSocialIconProps, FooterBottomProps, } from './Footer';
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import { GeneratedListProps } from './GeneratedList.types';
3
+ /**
4
+ * GeneratedList component for displaying content in a responsive grid.
5
+ *
6
+ * **Variants:**
7
+ * - Cards: Content cards with image, title, description, and CTA button
8
+ * - Products: Product cards with image and title (entire card clickable)
9
+ * - External Links: White cards with image, title, description, and external link button
10
+ * - List: Marketing section with heading and two columns of clickable links
11
+ *
12
+ * **Card Layout:**
13
+ * - Mobile (<768px): Single column overlay cards, stacked tight (no gap)
14
+ * - Tablet (768px-1023px): 2 columns horizontal standard cards
15
+ * - Desktop (≥1024px): 3 or 4 columns horizontal based on `columns` prop
16
+ *
17
+ * **Product Layout:**
18
+ * - Mobile (<768px): 2 columns horizontal white cards, 20px gap
19
+ * - Tablet (768px-1023px): 2 columns adaptive
20
+ * - Desktop (≥1024px): 3 or 4 columns horizontal based on `columns` prop
21
+ *
22
+ * **External Link Layout:**
23
+ * - Mobile (<1024px): Single column vertical white cards, 20px gap
24
+ * - Desktop (≥1024px): 3 columns horizontal (fixed 423px width), 20px gap
25
+ *
26
+ * **List Layout:**
27
+ * - Mobile (<1024px): 2 sections stacked vertically, 12px gap
28
+ * - Desktop (≥1024px): 2 columns side-by-side (311px each), 32px gap
29
+ *
30
+ * @example
31
+ * ```tsx
32
+ * <GeneratedList
33
+ * variant="card"
34
+ * items={cardData}
35
+ * columns={3}
36
+ * title="Latest Insights"
37
+ * />
38
+ * ```
39
+ */
40
+ export declare const GeneratedList: React.FC<GeneratedListProps>;
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { GeneratedList } from "./GeneratedList";
3
+ declare const meta: Meta<typeof GeneratedList>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof GeneratedList>;
6
+ export declare const Desktop: Story;
7
+ export declare const Mobile: Story;