diff --git a/app/javascript/mastodon/components/dropdown/redesign.module.scss b/app/javascript/mastodon/components/dropdown/redesign.module.scss
index 1439df90f11..54f8eddc2e1 100644
--- a/app/javascript/mastodon/components/dropdown/redesign.module.scss
+++ b/app/javascript/mastodon/components/dropdown/redesign.module.scss
@@ -69,6 +69,11 @@
width: 100%;
}
+.menuItemIcon {
+ width: var(--space-lg);
+ height: var(--space-lg);
+}
+
.menu > hr {
height: 1px;
background-color: var(--color-border-primary);
diff --git a/app/javascript/mastodon/components/dropdown/redesign.stories.tsx b/app/javascript/mastodon/components/dropdown/redesign.stories.tsx
index b56e8df3dcb..69847d2bedd 100644
--- a/app/javascript/mastodon/components/dropdown/redesign.stories.tsx
+++ b/app/javascript/mastodon/components/dropdown/redesign.stories.tsx
@@ -13,7 +13,6 @@ import { useToggle } from '@/mastodon/hooks/useToggle';
import { Button } from '../button/redesign';
import { ToggleField } from '../form_fields/redesign';
-import { Icon } from '../icon';
import type { DropdownProps } from './redesign';
import {
@@ -47,13 +46,13 @@ export const Simple: Story = {
return (
First item
Second item
@@ -81,13 +80,13 @@ export const Popover: Story = {
{...args}
>
First item
Second item
@@ -109,12 +108,7 @@ export const Controls: Story = {
-
- {sun ? (
-
- ) : (
-
- )}
+
diff --git a/app/javascript/mastodon/components/dropdown/redesign.tsx b/app/javascript/mastodon/components/dropdown/redesign.tsx
index 3587c01d664..9037a71c6ac 100644
--- a/app/javascript/mastodon/components/dropdown/redesign.tsx
+++ b/app/javascript/mastodon/components/dropdown/redesign.tsx
@@ -90,7 +90,15 @@ export const Dropdown = ({
};
type DropdownItemProps = Merge<
- { as?: As; children?: React.ReactNode; className?: string; active?: boolean },
+ {
+ as?: As;
+ children?: React.ReactNode;
+ className?: string;
+ active?: boolean;
+ leadingIcon?: IconProp;
+ trailingIcon?: IconProp;
+ iconClassName?: string;
+ },
React.ComponentPropsWithoutRef
>;
@@ -99,6 +107,9 @@ export const DropdownItem = ({
as: AsComp,
children,
className,
+ leadingIcon,
+ trailingIcon,
+ iconClassName,
...props
}: DropdownItemProps) => {
const Component = AsComp ?? 'div';
@@ -111,14 +122,30 @@ export const DropdownItem = ({
active && classes.menuItemActive,
)}
>
+ {leadingIcon && (
+
+ )}
+
{children}
+
+ {trailingIcon && (
+
+ )}
);
};
export const DropdownItemButton: React.FC<
- { icon?: IconProp } & React.ComponentProps<'button'>
-> = ({ icon, children, className, ...props }) => {
+ Omit, 'as'>
+> = ({ children, className, ...props }) => {
return (
- {icon && }
{children}
);
diff --git a/app/javascript/mastodon/components/form_fields/redesign.module.scss b/app/javascript/mastodon/components/form_fields/redesign.module.scss
index af0d9c1ad2f..ca9b683ee2e 100644
--- a/app/javascript/mastodon/components/form_fields/redesign.module.scss
+++ b/app/javascript/mastodon/components/form_fields/redesign.module.scss
@@ -28,8 +28,8 @@
}
.icon {
- width: var(--fs-lg);
- height: var(--fs-lg);
+ width: var(--space-lg);
+ height: var(--space-lg);
}
// Text Input
diff --git a/app/javascript/mastodon/features/compose/redesign/styles.module.scss b/app/javascript/mastodon/features/compose/redesign/styles.module.scss
index b35cb80f20c..1d8f35f965b 100644
--- a/app/javascript/mastodon/features/compose/redesign/styles.module.scss
+++ b/app/javascript/mastodon/features/compose/redesign/styles.module.scss
@@ -48,6 +48,12 @@
}
}
+.dropdownItemControl {
+ color: inherit;
+ width: 100%;
+ user-select: none;
+}
+
.textarea > textarea {
@include mixins.type-body-lg;
diff --git a/app/javascript/mastodon/features/compose/redesign/upload.tsx b/app/javascript/mastodon/features/compose/redesign/upload.tsx
index 2fc743f107b..6f2504a747d 100644
--- a/app/javascript/mastodon/features/compose/redesign/upload.tsx
+++ b/app/javascript/mastodon/features/compose/redesign/upload.tsx
@@ -111,7 +111,7 @@ export const ComposeUpload: React.FC<{ id?: string; className?: string }> = ({
offset={4}
maxWidth={170}
>
-
+