Skip to content

Commit e735f9c

Browse files
authored
feat: added settings tile component. (#184)
* feat: added settings tile component. * chore: fixed the naming convention * chore: renamed callback to onclick * fix: fixed the use of restProps * fix: fixed the unnecessary onclick expose. * fix: fixed the join function params.
1 parent 7ba32ef commit e735f9c

File tree

3 files changed

+69
-19
lines changed

3 files changed

+69
-19
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import type { ComponentProps } from "svelte";
2+
import SettingsTile from "./SettingsTile.svelte";
3+
4+
export default {
5+
title: "UI/SettingsTile",
6+
component: SettingsTile,
7+
tags: ["autodocs"],
8+
render: (args: {
9+
Component: SettingsTile;
10+
props: ComponentProps<typeof SettingsTile>;
11+
}) => ({
12+
Component: SettingsTile,
13+
props: args,
14+
}),
15+
};
16+
17+
export const Primary = {
18+
args: {
19+
title: "Who can see your posts?",
20+
currentStatus: "Only followers",
21+
onclick: () => alert("clicked"),
22+
},
23+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<script lang="ts">
2+
import { cn } from '$lib/utils';
3+
import { ArrowRight01Icon } from '@hugeicons/core-free-icons';
4+
import { HugeiconsIcon } from '@hugeicons/svelte';
5+
import type { HTMLButtonAttributes } from 'svelte/elements';
6+
7+
interface ISettingsTile extends HTMLButtonAttributes {
8+
title: string;
9+
currentStatus: 'string';
10+
}
11+
12+
const { title, currentStatus, ...restProps }: ISettingsTile = $props();
13+
</script>
14+
15+
<button
16+
{...restProps}
17+
class={cn(
18+
['flex w-full cursor-pointer items-center justify-between', restProps.class].join(' ')
19+
)}
20+
>
21+
<div class="flex flex-col items-start gap-1">
22+
<span class="font-semibold">{title}</span>
23+
<span class="text-black/60">{currentStatus}</span>
24+
</div>
25+
<HugeiconsIcon icon={ArrowRight01Icon} className="text-black/40" />
26+
</button>
Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
1-
export { default as Profile } from './Profile/Profile.svelte';
2-
export { default as Header } from './Header/Header.svelte';
3-
export { default as BottomNav } from './BottomNav/BottomNav.svelte';
4-
export { default as SettingsNavigationButton } from './SettingsNavigationButton/SettingsNavigationButton.svelte';
5-
export { default as MessageInput } from './MessageInput/MessageInput.svelte';
6-
export { default as InputFile } from './InputFile/InputFile.svelte';
7-
export { default as Drawer } from './Drawer/Drawer.svelte';
8-
export { default as Message } from './Message/Message.svelte';
9-
export { default as ActionMenu } from './ActionMenu/ActionMenu.svelte';
10-
export { default as Modal } from './Modal/Modal.svelte';
11-
export { default as SideBar } from './SideBar/SideBar.svelte';
12-
export { default as RightAside } from './RightAside/RightAside.svelte';
13-
export { default as SettingsToggleButton } from './SettingsToggleButton/SettingsToggleButton.svelte';
14-
export { default as Post } from './Post/Post.svelte';
15-
export { default as ChatMessage } from './ChatMessage/ChatMessage.svelte';
16-
export { default as Comment } from './Comment/Comment.svelte';
17-
export { default as SettingsDeleteButton } from './SettingsDeleteButton/SettingsDeleteButton.svelte';
18-
export { default as UserRequest } from './UserRequest/UserRequest.svelte';
19-
export { default as UploadedPostView } from './UploadedPostView/UploadedPostView.svelte';
1+
export { default as Profile } from "./Profile/Profile.svelte";
2+
export { default as Header } from "./Header/Header.svelte";
3+
export { default as BottomNav } from "./BottomNav/BottomNav.svelte";
4+
export { default as SettingsNavigationButton } from "./SettingsNavigationButton/SettingsNavigationButton.svelte";
5+
export { default as MessageInput } from "./MessageInput/MessageInput.svelte";
6+
export { default as InputFile } from "./InputFile/InputFile.svelte";
7+
export { default as Drawer } from "./Drawer/Drawer.svelte";
8+
export { default as Message } from "./Message/Message.svelte";
9+
export { default as ActionMenu } from "./ActionMenu/ActionMenu.svelte";
10+
export { default as Modal } from "./Modal/Modal.svelte";
11+
export { default as SideBar } from "./SideBar/SideBar.svelte";
12+
export { default as RightAside } from "./RightAside/RightAside.svelte";
13+
export { default as SettingsToggleButton } from "./SettingsToggleButton/SettingsToggleButton.svelte";
14+
export { default as Post } from "./Post/Post.svelte";
15+
export { default as ChatMessage } from "./ChatMessage/ChatMessage.svelte";
16+
export { default as Comment } from "./Comment/Comment.svelte";
17+
export { default as SettingsDeleteButton } from "./SettingsDeleteButton/SettingsDeleteButton.svelte";
18+
export { default as SettingsTile } from "./SettingsTile/SettingsTile.svelte";
19+
export { default as UserRequest } from "./UserRequest/UserRequest.svelte";
20+
export { default as UploadedPostView } from "./UploadedPostView/UploadedPostView.svelte";

0 commit comments

Comments
 (0)