diff --git a/src/shared/ui/FooterLink/FooterLink.stories.svelte b/src/shared/ui/FooterLink/FooterLink.stories.svelte deleted file mode 100644 index 7462b26..0000000 --- a/src/shared/ui/FooterLink/FooterLink.stories.svelte +++ /dev/null @@ -1,53 +0,0 @@ - - - - {#snippet template(args: ComponentProps)} - - {/snippet} - - - - {#snippet template()} -
- - - -
- {/snippet} -
diff --git a/src/shared/ui/FooterLink/FooterLink.svelte.test.ts b/src/shared/ui/FooterLink/FooterLink.svelte.test.ts deleted file mode 100644 index 66435a7..0000000 --- a/src/shared/ui/FooterLink/FooterLink.svelte.test.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { - render, - screen, -} from '@testing-library/svelte'; -import FooterLink from './FooterLink.svelte'; - -describe('FooterLink', () => { - const defaultProps = { - text: 'Google Fonts', - href: 'https://fonts.google.com', - }; - - describe('Rendering', () => { - it('renders text content', () => { - render(FooterLink, { props: defaultProps }); - expect(screen.getByText('Google Fonts')).toBeInTheDocument(); - }); - - it('renders as an anchor element with correct href', () => { - render(FooterLink, { props: defaultProps }); - const link = screen.getByRole('link'); - expect(link).toBeInTheDocument(); - expect(link).toHaveAttribute('href', 'https://fonts.google.com'); - }); - - it('renders the arrow icon', () => { - const { container } = render(FooterLink, { props: defaultProps }); - const icon = container.querySelector('svg'); - expect(icon).toBeInTheDocument(); - expect(icon).toHaveClass('lucide-arrow-up-right'); - }); - }); - - describe('Attributes', () => { - it('applies custom CSS classes', () => { - render(FooterLink, { - props: { - ...defaultProps, - class: 'custom-class', - }, - }); - expect(screen.getByRole('link')).toHaveClass('custom-class'); - }); - - it('spreads additional anchor attributes', () => { - render(FooterLink, { - props: { - ...defaultProps, - target: '_blank', - rel: 'noopener', - }, - }); - const link = screen.getByRole('link'); - expect(link).toHaveAttribute('target', '_blank'); - expect(link).toHaveAttribute('rel', 'noopener'); - }); - }); -}); diff --git a/src/shared/ui/index.ts b/src/shared/ui/index.ts index 15688ee..d02efb3 100644 --- a/src/shared/ui/index.ts +++ b/src/shared/ui/index.ts @@ -52,12 +52,6 @@ export { */ default as FilterGroup, } from './FilterGroup/FilterGroup.svelte'; -export { - /** - * Standard footer link with arrow icon and hover effects - */ - default as FooterLink, -} from './FooterLink/FooterLink.svelte'; export { /** * Small text for secondary meta-information @@ -76,6 +70,12 @@ export { */ default as Label, } from './Label/Label.svelte'; +export { + /** + * Styled link with optional icon + */ + default as Link, +} from './Link/Link.svelte'; export { /** * Full-page or component-level progress spinner diff --git a/src/widgets/Footer/ui/Footer.svelte b/src/widgets/Footer/ui/Footer.svelte index d36a0f9..390e9d4 100644 --- a/src/widgets/Footer/ui/Footer.svelte +++ b/src/widgets/Footer/ui/Footer.svelte @@ -6,8 +6,8 @@ - {text} - - + {#snippet icon()} + + {/snippet} +