Variants
import { html, renderApp } from 'mates';
import { IconButton } from 'mates-ui';
import { HomeIcon, SettingsIcon, EditIcon, StarIcon } from 'mates-icons';
const App = () => () => html`
<x-row gap="var(--md-space-2)">
${IconButton({ icon: HomeIcon(), variant: "standard", label: "Home" })}
${IconButton({ icon: SettingsIcon(), variant: "filled", label: "Settings" })}
${IconButton({ icon: EditIcon(), variant: "outlined", label: "Edit" })}
${IconButton({ icon: StarIcon(), variant: "tonal", label: "Star" })}
</x-row>
`;
renderApp(App, document.getElementById('app'));
Sizes
import { html, renderApp } from 'mates';
import { IconButton } from 'mates-ui';
import { StarIcon } from 'mates-icons';
const App = () => () => html`
<x-col gap="var(--md-space-3)">
<x-row gap="var(--md-space-2)">
${IconButton({ icon: StarIcon(), size: "sm", variant: "standard", label: "Standard" })}
${IconButton({ icon: StarIcon(), size: "sm", variant: "filled", label: "Filled" })}
${IconButton({ icon: StarIcon(), size: "sm", variant: "outlined", label: "Outlined" })}
${IconButton({ icon: StarIcon(), size: "sm", variant: "tonal", label: "Tonal" })}
</x-row>
<x-row gap="var(--md-space-2)">
${IconButton({ icon: StarIcon(), size: "md", variant: "standard", label: "Standard" })}
${IconButton({ icon: StarIcon(), size: "md", variant: "filled", label: "Filled" })}
${IconButton({ icon: StarIcon(), size: "md", variant: "outlined", label: "Outlined" })}
${IconButton({ icon: StarIcon(), size: "md", variant: "tonal", label: "Tonal" })}
</x-row>
<x-row gap="var(--md-space-2)">
${IconButton({ icon: StarIcon(), size: "lg", variant: "standard", label: "Standard" })}
${IconButton({ icon: StarIcon(), size: "lg", variant: "filled", label: "Filled" })}
${IconButton({ icon: StarIcon(), size: "lg", variant: "outlined", label: "Outlined" })}
${IconButton({ icon: StarIcon(), size: "lg", variant: "tonal", label: "Tonal" })}
</x-row>
</x-col>
`;
renderApp(App, document.getElementById('app'));
Toggle mode
import { html, atom, renderApp } from 'mates';
import { IconButton } from 'mates-ui';
import { FavoriteIcon, BookmarkIcon, NotificationsIcon, NotificationsActiveIcon } from 'mates-icons';
const App = () => {
const fav = atom(false);
const bookmark = atom(false);
return () => html`
<x-row gap="var(--md-space-2)">
${IconButton({
icon: FavoriteIcon({ fill: 0 }),
selectedIcon: FavoriteIcon({ fill: 1 }),
selected: fav(),
label: "Favorite",
variant: "standard",
on: { click: () => fav.set(!fav()) },
})}
${IconButton({
icon: BookmarkIcon({ fill: 0 }),
selectedIcon: BookmarkIcon({ fill: 1 }),
selected: bookmark(),
label: "Bookmark",
variant: "tonal",
on: { click: () => bookmark.set(!bookmark()) },
})}
${IconButton({
icon: NotificationsIcon(),
selectedIcon: NotificationsActiveIcon(),
selected: false,
label: "Notify",
variant: "outlined",
})}
</x-row>
`;
};
MD3 Ripple (enableRipple)
import { html, atom, renderApp } from 'mates';
import { IconButton } from 'mates-ui';
import { HomeIcon, SettingsIcon, EditIcon, StarIcon, FavoriteIcon } from 'mates-icons';
const App = () => {
const fav = atom(false);
return () => html`
<x-row gap="var(--md-space-2)" wrap>
${IconButton({ icon: HomeIcon(), variant: "standard", label: "Home", enableRipple: true })}
${IconButton({ icon: SettingsIcon(), variant: "filled", label: "Settings", enableRipple: true })}
${IconButton({ icon: EditIcon(), variant: "outlined", label: "Edit", enableRipple: true })}
${IconButton({ icon: StarIcon(), variant: "tonal", label: "Star", enableRipple: true })}
${IconButton({
icon: FavoriteIcon({ fill: 0 }),
selectedIcon: FavoriteIcon({ fill: 1 }),
selected: fav(),
label: "Favorite",
variant: "standard",
enableRipple: true,
on: { click: () => fav.set(!fav()) },
})}
</x-row>
`;
};
renderApp(App, document.getElementById('app'));
Disabled
import { html, renderApp } from 'mates';
import { IconButton } from 'mates-ui';
import { DeleteIcon, EditIcon, ShareIcon, DownloadIcon } from 'mates-icons';
const App = () => () => html`
<x-row gap="var(--md-space-2)">
${IconButton({ icon: DeleteIcon(), disabled: true, label: "Delete" })}
${IconButton({ icon: EditIcon(), disabled: true, variant: "filled", label: "Edit" })}
${IconButton({ icon: ShareIcon(), disabled: true, variant: "outlined", label: "Share" })}
${IconButton({ icon: DownloadIcon(), disabled: true, variant: "tonal", label: "Download" })}
</x-row>
`;
renderApp(App, document.getElementById('app'));