From 85f959dd72950013735fa53398b621a879220e88 Mon Sep 17 00:00:00 2001 From: gourav Date: Thu, 15 May 2025 12:21:00 +0530 Subject: [PATCH 01/13] feat: message-input --- .../MessageInput/MessageInput.stories.ts | 16 +++++++++ .../MessageInput/MessageInput.svelte | 35 +++++++++++++++++++ platforms/metagram/src/lib/fragments/index.ts | 1 + .../metagram/src/lib/ui/Input/Input.svelte | 8 ++--- 4 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 platforms/metagram/src/lib/fragments/MessageInput/MessageInput.stories.ts create mode 100644 platforms/metagram/src/lib/fragments/MessageInput/MessageInput.svelte diff --git a/platforms/metagram/src/lib/fragments/MessageInput/MessageInput.stories.ts b/platforms/metagram/src/lib/fragments/MessageInput/MessageInput.stories.ts new file mode 100644 index 000000000..d8bb14961 --- /dev/null +++ b/platforms/metagram/src/lib/fragments/MessageInput/MessageInput.stories.ts @@ -0,0 +1,16 @@ +import type { ComponentProps } from 'svelte'; +import MessageInput from './MessageInput.svelte'; + +export default { + title: 'UI/MessageInput', + component: MessageInput, + tags: ['autodocs'], + render: (args: { Component: MessageInput; props: ComponentProps }) => ({ + Component: MessageInput, + props: args + }) +}; + +export const Primary = { + args: {} +}; diff --git a/platforms/metagram/src/lib/fragments/MessageInput/MessageInput.svelte b/platforms/metagram/src/lib/fragments/MessageInput/MessageInput.svelte new file mode 100644 index 000000000..37d40c7ce --- /dev/null +++ b/platforms/metagram/src/lib/fragments/MessageInput/MessageInput.svelte @@ -0,0 +1,35 @@ + + +
+ + +
+ + +
+
diff --git a/platforms/metagram/src/lib/fragments/index.ts b/platforms/metagram/src/lib/fragments/index.ts index 8d8f89efc..1e9a1a175 100644 --- a/platforms/metagram/src/lib/fragments/index.ts +++ b/platforms/metagram/src/lib/fragments/index.ts @@ -1 +1,2 @@ export { default as SettingsNavigationButton } from './SettingsNavigationButton/SettingsNavigationButton.svelte'; +export { default as MessageInput } from './MessageInput/MessageInput.svelte'; diff --git a/platforms/metagram/src/lib/ui/Input/Input.svelte b/platforms/metagram/src/lib/ui/Input/Input.svelte index 32d3a8f14..06c882439 100644 --- a/platforms/metagram/src/lib/ui/Input/Input.svelte +++ b/platforms/metagram/src/lib/ui/Input/Input.svelte @@ -5,10 +5,10 @@ interface IInputProps extends HTMLInputAttributes { type: 'text' | 'number' | 'email' | 'tel' | 'password'; value: string | number; - placeholder: string; - isRequired: boolean; - isDisabled: boolean; - isError: boolean; + placeholder?: string; + isRequired?: boolean; + isDisabled?: boolean; + isError?: boolean; } let { From 20d25057628fdd03fb4b46a1295adac11fcd79e9 Mon Sep 17 00:00:00 2001 From: gourav Date: Thu, 15 May 2025 12:50:45 +0530 Subject: [PATCH 02/13] fix: classes merge and a files as a prop --- .../MessageInput/MessageInput.stories.ts | 4 +++- .../fragments/MessageInput/MessageInput.svelte | 16 ++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/platforms/metagram/src/lib/fragments/MessageInput/MessageInput.stories.ts b/platforms/metagram/src/lib/fragments/MessageInput/MessageInput.stories.ts index d8bb14961..effcb2f3d 100644 --- a/platforms/metagram/src/lib/fragments/MessageInput/MessageInput.stories.ts +++ b/platforms/metagram/src/lib/fragments/MessageInput/MessageInput.stories.ts @@ -12,5 +12,7 @@ export default { }; export const Primary = { - args: {} + args: { + placeholder: 'Write your message' + } }; diff --git a/platforms/metagram/src/lib/fragments/MessageInput/MessageInput.svelte b/platforms/metagram/src/lib/fragments/MessageInput/MessageInput.svelte index 37d40c7ce..74c431f99 100644 --- a/platforms/metagram/src/lib/fragments/MessageInput/MessageInput.svelte +++ b/platforms/metagram/src/lib/fragments/MessageInput/MessageInput.svelte @@ -1,5 +1,6 @@ -
+
- +
{:else}
- +
{/if} From aa0a7a6df182326e2111457c091cf5e8f4582e18 Mon Sep 17 00:00:00 2001 From: gourav Date: Mon, 19 May 2025 14:41:43 +0530 Subject: [PATCH 08/13] fix: as per suggestion --- .../src/lib/fragments/Post/Post.stories.ts | 67 +++++++++---------- .../metagram/src/lib/ui/Input/Input.svelte | 14 ++-- .../metagram/src/lib/ui/Toggle/Toggle.svelte | 2 +- 3 files changed, 38 insertions(+), 45 deletions(-) diff --git a/platforms/metagram/src/lib/fragments/Post/Post.stories.ts b/platforms/metagram/src/lib/fragments/Post/Post.stories.ts index fd5d57f16..ba0514860 100644 --- a/platforms/metagram/src/lib/fragments/Post/Post.stories.ts +++ b/platforms/metagram/src/lib/fragments/Post/Post.stories.ts @@ -1,41 +1,38 @@ -import type { ComponentProps } from "svelte"; -import Post from "./Post.svelte"; +import type { ComponentProps } from 'svelte'; +import Post from './Post.svelte'; export default { - title: "Fragments/Post", - component: Post, - tags: ["autodocs"], - render: (args: { - Component: Post; - props: ComponentProps; - }) => ({ - Component: Post, - props: args, - }), + title: 'Fragments/Post', + component: Post, + tags: ['autodocs'], + render: (args: { Component: Post; props: ComponentProps }) => ({ + Component: Post, + props: args + }) }; export const Primary = { - args: { - avatar: "https://www.gravatar.com/avatar/2c7d99fe281ecd3bcd65ab915bac6dd5?s=250", - username: "blurryface", - imgUri: "https://graphicsfamily.com/wp-content/uploads/edd/2023/01/Free-Photographer-Social-Media-Post-Design-Template-870x870.jpg", - postAlt: "Sample", - text: "Took some pictures today! Really love how this one in particular turned out! ", - time: "2 hours ago", - count: { - likes: 100, - comments: 50, - }, - callback: { - like: () => { - alert("Like clicked"); - }, - comment: () => { - alert("Comment clicked"); - }, - menu: () => { - alert("Menu clicked"); - }, - }, - }, + args: { + avatar: 'https://www.gravatar.com/avatar/2c7d99fe281ecd3bcd65ab915bac6dd5?s=250', + username: 'blurryface', + imgUri: 'https://graphicsfamily.com/wp-content/uploads/edd/2023/01/Free-Photographer-Social-Media-Post-Design-Template-870x870.jpg', + postAlt: 'Sample', + text: 'Took some pictures today! Really love how this one in particular turned out! ', + time: '2 hours ago', + count: { + likes: 100, + comments: 50 + }, + callback: { + like: () => { + alert('Like clicked'); + }, + comment: () => { + alert('Comment clicked'); + }, + menu: () => { + alert('Menu clicked'); + } + } + } }; diff --git a/platforms/metagram/src/lib/ui/Input/Input.svelte b/platforms/metagram/src/lib/ui/Input/Input.svelte index 06c882439..ad2e849c6 100644 --- a/platforms/metagram/src/lib/ui/Input/Input.svelte +++ b/platforms/metagram/src/lib/ui/Input/Input.svelte @@ -6,23 +6,21 @@ type: 'text' | 'number' | 'email' | 'tel' | 'password'; value: string | number; placeholder?: string; - isRequired?: boolean; - isDisabled?: boolean; - isError?: boolean; + disabledClass?: string; + error?: string; } let { type = 'text', value = $bindable(), placeholder = '', - isRequired = false, - isDisabled = false, - isError = false, + disabledClass = 'cursor-not-allowed', + error = 'border border-red text-red focus:text-black-800 focus:border-transparent', ...restProps }: IInputProps = $props(); const cbase = $derived( - `w-full bg-grey py-3.5 px-6 text-[15px] text-black-800 font-geist font-normal placeholder:text-black-600 rounded-4xl outline-0 border border-transparent ${isError && 'border border-red text-red focus:text-black-800 focus:border-transparent'} ${isDisabled && 'cursor-not-allowed'}` + `w-full bg-grey py-3.5 px-6 text-[15px] text-black-800 font-geist font-normal placeholder:text-black-600 rounded-4xl outline-0 border border-transparent ${error} ${disabled}` ); @@ -31,8 +29,6 @@ {type} {placeholder} bind:value - required={isRequired} - disabled={isDisabled} class={cn([cbase, restProps.class].join(' '))} tabindex="0" /> diff --git a/platforms/metagram/src/lib/ui/Toggle/Toggle.svelte b/platforms/metagram/src/lib/ui/Toggle/Toggle.svelte index 937fdbbb4..76b656da2 100644 --- a/platforms/metagram/src/lib/ui/Toggle/Toggle.svelte +++ b/platforms/metagram/src/lib/ui/Toggle/Toggle.svelte @@ -14,7 +14,7 @@