diff --git a/components/Common/Dropdown/__tests__/index.test.mjs b/components/Common/Dropdown/__tests__/index.test.mjs
deleted file mode 100644
index 1ea22a3a4fdb8..0000000000000
--- a/components/Common/Dropdown/__tests__/index.test.mjs
+++ /dev/null
@@ -1,63 +0,0 @@
-import { fireEvent, render, screen } from '@testing-library/react';
-import Dropdown from '..';
-
-describe('Dropdown component', () => {
- const items = [
- { label: 'item1', title: 'Item 1', active: false, onClick: jest.fn() },
- { label: 'item2', title: 'Item 2', active: true, onClick: jest.fn() },
- { label: 'item3', title: 'Item 3', active: false, onClick: jest.fn() },
- ];
-
- it('should render the items and apply active styles', () => {
- render();
-
- items.forEach(item => {
- const button = screen.getByText(item.title);
- expect(button).toBeInTheDocument();
-
- if (item.active) {
- expect(button).toHaveStyle('font-weight: bold');
- } else {
- expect(button).not.toHaveStyle('font-weight: bold');
- }
- });
- });
-
- it('should call the onClick function when an item is clicked', () => {
- render();
- const button = screen.getByText(items[2].title);
- fireEvent.click(button);
- expect(items[2].onClick).toHaveBeenCalledTimes(1);
- });
-
- it('should call the onClick function when Enter or Space is pressed', () => {
- render();
- const button = screen.getByText(items[1].title);
- fireEvent.keyDown(button, { key: 'Enter', code: 'Enter' });
- fireEvent.keyDown(button, { key: ' ', code: 'Space' });
- expect(items[1].onClick).toHaveBeenCalledTimes(2);
- });
-
- it('should not render the items when shouldShow prop is false', () => {
- render();
- items.forEach(item => {
- const button = screen.queryByText(item.title);
- expect(button).not.toBeVisible();
- });
- });
-
- it('should apply styles passed in the styles prop', () => {
- const customStyles = {
- backgroundColor: 'green',
- padding: '10px',
- borderRadius: '5px',
- };
-
- render();
-
- const dropdownList = screen.getByRole('list');
- expect(dropdownList).toHaveStyle('background-color: green');
- expect(dropdownList).toHaveStyle('padding: 10px');
- expect(dropdownList).toHaveStyle('border-radius: 5px');
- });
-});
diff --git a/components/Common/Dropdown/index.module.scss b/components/Common/Dropdown/index.module.scss
deleted file mode 100644
index c8a6ab19d1e11..0000000000000
--- a/components/Common/Dropdown/index.module.scss
+++ /dev/null
@@ -1,43 +0,0 @@
-.dropdownList {
- background-color: var(--color-dropdown-background);
- border-radius: 5px;
- height: fit-content;
- list-style-type: none;
- max-height: 200px;
- min-width: 150px;
- overflow-y: auto;
- padding: 0;
- position: absolute;
- width: fit-content;
-
- > li {
- > button {
- background: none;
- border: none;
- color: var(--color-text-primary);
- cursor: pointer;
- font-size: var(--font-size-body1);
- padding: var(--space-12);
- text-align: center;
- width: 100%;
-
- &:hover {
- background-color: var(--color-dropdown-hover);
- }
- }
- }
-
- &::-webkit-scrollbar {
- width: var(--space-06);
- }
-
- &::-webkit-scrollbar-track {
- background: transparent;
- }
-
- &::-webkit-scrollbar-thumb {
- background-color: var(--color-text-secondary);
- border: transparent;
- border-radius: 20px;
- }
-}
diff --git a/components/Common/Dropdown/index.stories.tsx b/components/Common/Dropdown/index.stories.tsx
deleted file mode 100644
index e282140ecd36e..0000000000000
--- a/components/Common/Dropdown/index.stories.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import Dropdown from './index';
-import type { Meta as MetaObj, StoryObj } from '@storybook/react';
-
-type Story = StoryObj;
-type Meta = MetaObj;
-
-const items = [...Array(10).keys()].map(item => ({
- title: `Item ${item + 1}`,
- label: `item-${item + 1}`,
- active: false,
- onClick: () => {
- null;
- },
-}));
-
-items[2].active = true;
-
-export const Default: Story = {
- args: {
- items: items,
- shouldShow: true,
- },
-};
-
-export default { component: Dropdown } as Meta;
diff --git a/components/Common/Dropdown/index.tsx b/components/Common/Dropdown/index.tsx
deleted file mode 100644
index cb0f093ceb2be..0000000000000
--- a/components/Common/Dropdown/index.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import { forwardRef } from 'react';
-import type { DropdownItem } from '@/types';
-import type { CSSProperties, KeyboardEvent, PropsWithChildren } from 'react';
-
-import styles from './index.module.scss';
-
-type DropdownProps = PropsWithChildren<{
- items: Array;
- shouldShow: boolean;
- styles: CSSProperties;
-}>;
-
-const Dropdown = forwardRef(
- ({ items, shouldShow, styles: extraStyles, children }, ref) => {
- const mappedElements = items.map(item => {
- const extraStyles = { fontWeight: item.active ? 'bold' : 'normal' };
-
- const handleKeyPress = (e: KeyboardEvent) => {
- if (e.key === 'Enter' || e.key === ' ') {
- item.onClick();
- }
- };
-
- return (
-
-
-
- );
- });
-
- const dropdownStyles = {
- display: shouldShow ? 'block' : 'none',
- ...extraStyles,
- };
-
- return (
- <>
-
-
- {children}
- >
- );
- }
-);
-
-Dropdown.displayName = 'DropdownWithRef';
-
-export default Dropdown;
diff --git a/components/Common/LanguageSelector/__tests__/index.test.mjs b/components/Common/LanguageSelector/__tests__/index.test.mjs
deleted file mode 100644
index 8fbdb2c963a42..0000000000000
--- a/components/Common/LanguageSelector/__tests__/index.test.mjs
+++ /dev/null
@@ -1,43 +0,0 @@
-import { fireEvent, render, screen } from '@testing-library/react';
-import { IntlProvider } from 'react-intl';
-import LanguageSelector from '..';
-
-jest.mock('../../../../hooks/useLocale', () => ({
- useLocale: () => ({
- availableLocales: [
- { code: 'en', name: 'English', localName: 'English' },
- { code: 'es', name: 'Spanish', localName: 'Español' },
- ],
- currentLocale: { code: 'en', name: 'English', localName: 'English' },
- }),
-}));
-
-describe('LanguageSelector', () => {
- test('clicking the language switch button toggles the dropdown display', () => {
- render(
- {}}>
-
-
- );
- const button = screen.getByRole('button');
- expect(screen.queryByText('English')).not.toBeVisible();
- fireEvent.click(button);
- expect(screen.queryByText('English')).toBeVisible();
- fireEvent.click(button);
- expect(screen.queryByText('English')).not.toBeVisible();
- });
-
- test('renders the Dropdown component with correct style', () => {
- render(
- {}}>
-
-
- );
- const button = screen.getByRole('button');
- fireEvent.click(button);
- const dropdown = screen.getByRole('list');
- expect(dropdown).toHaveStyle(
- 'position: absolute; top: 60%; right: 0; margin: 0;'
- );
- });
-});
diff --git a/components/Common/LanguageSelector/index.module.scss b/components/Common/LanguageSelector/index.module.scss
deleted file mode 100644
index 2daab20dbfb74..0000000000000
--- a/components/Common/LanguageSelector/index.module.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-.languageSwitch {
- background: none;
- border: none;
- color: var(--color-text-accent);
- cursor: pointer;
- line-height: 0;
- padding: 0;
-
- svg {
- font-size: 2rem;
- }
-}
diff --git a/components/Common/LanguageSelector/index.stories.tsx b/components/Common/LanguageSelector/index.stories.tsx
deleted file mode 100644
index ff88a0f32e206..0000000000000
--- a/components/Common/LanguageSelector/index.stories.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import LanguageSelector from './index';
-import type { Meta as MetaObj, StoryObj } from '@storybook/react';
-
-type Story = StoryObj;
-type Meta = MetaObj;
-
-export const Default: Story = {};
-
-const containerStyles = { marginLeft: '200px' } as const;
-
-export default {
- component: LanguageSelector,
- decorators: [
- Story => (
-
-
-
- ),
- ],
-} as Meta;
diff --git a/components/Common/LanguageSelector/index.tsx b/components/Common/LanguageSelector/index.tsx
deleted file mode 100644
index 5fecfc5a378d4..0000000000000
--- a/components/Common/LanguageSelector/index.tsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import { useMemo, useState } from 'react';
-import { MdOutlineTranslate } from 'react-icons/md';
-import { useIntl } from 'react-intl';
-import styles from './index.module.scss';
-import Dropdown from '@/components/Common/Dropdown';
-import { useLocale } from '@/hooks/useLocale';
-import { useClickOutside } from '@/hooks/useClickOutside';
-
-const dropdownStyle = {
- position: 'absolute',
- top: '60%',
- right: '0',
- margin: 0,
-} as const;
-
-const LanguageSelector = () => {
- const [showDropdown, setShowDropdown] = useState(false);
-
- const ref = useClickOutside(
- () => showDropdown && setShowDropdown(false)
- );
-
- const { availableLocales, currentLocale } = useLocale();
-
- const intl = useIntl();
-
- const dropdownItems = useMemo(
- () =>
- availableLocales.map(locale => ({
- title: locale.localName,
- label: locale.name,
- onClick: () => {
- // TODO: "locale changing logic yet to be implemented"
- },
- active: currentLocale.code === locale.code,
- })),
- [availableLocales, currentLocale]
- );
-
- const ariaLabelText = intl.formatMessage({
- id: 'components.common.languageSelector.button.title',
- });
-
- return (
-
-
-
- );
-};
-
-export default LanguageSelector;
diff --git a/i18n/locales/en.json b/i18n/locales/en.json
index 5ec6ac2c1f17c..48b0a269bb50f 100644
--- a/i18n/locales/en.json
+++ b/i18n/locales/en.json
@@ -36,7 +36,6 @@
"components.pagination.previous": "Older",
"layouts.blogPost.author.byLine": "{author, select, null {} other {By {author}, }}",
"layouts.blogIndex.currentYear": "News from {year}",
- "components.common.languageSelector.button.title": "Switch Language",
"components.api.jsonLink.title": "View as JSON",
"components.api.sourceLink": "Source Code:",
"pages.404.title": "404: Page could not be found",
diff --git a/i18n/locales/id.json b/i18n/locales/id.json
index 430bd5cbe70a0..7b1d056ed0ba3 100644
--- a/i18n/locales/id.json
+++ b/i18n/locales/id.json
@@ -36,7 +36,6 @@
"components.pagination.previous": "Lama",
"layouts.blogPost.author.byLine": "{author, select, null {} other {Oleh {author}, }}",
"layouts.blogIndex.currentYear": "Berita dari {year}",
- "components.common.languageSelector.button.title": "Ganti Bahasa",
"components.api.jsonLink.title": "Tampilkan sebagai JSON",
"components.api.sourceLink": "Kode Sumber:",
"pages.404.title": "404: Halaman tidak dapat ditemukan",
diff --git a/i18n/locales/zh-cn.json b/i18n/locales/zh-cn.json
index 9891b079a437e..a0a34692b3a0d 100644
--- a/i18n/locales/zh-cn.json
+++ b/i18n/locales/zh-cn.json
@@ -36,7 +36,6 @@
"components.pagination.previous": "更早的新闻事件",
"layouts.blogPost.author.byLine": "{author, select, null {} other {由 {author} }}",
"layouts.blogIndex.currentYear": "{year} 年的所有新闻事件",
- "components.common.languageSelector.button.title": "切换语言",
"components.api.jsonLink.title": "以 JSON 格式查看",
"components.api.sourceLink": "源代码:",
"pages.404.title": "404:您访问的页面不存在",