negodesign 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/components/core/breadcrumb/breadcrumb-list.svelte +31 -31
  2. package/dist/components/core/button/ButtonBack.svelte +18 -18
  3. package/dist/components/core/button/ButtonLogin.svelte +15 -15
  4. package/dist/components/core/button/ButtonLoginWith.svelte +57 -57
  5. package/dist/components/core/carousel/data/CarouselModel.d.ts +2 -1
  6. package/dist/components/core/datatable/ui/DataTableActions.svelte +28 -28
  7. package/dist/components/core/datatable/ui/DataTableCheckbox.svelte +22 -22
  8. package/dist/components/core/datatable/ui/DataTableContent.svelte +59 -59
  9. package/dist/components/core/datatable/ui/DataTableCore.svelte +151 -144
  10. package/dist/components/core/datatable/ui/DataTableDragHandle.svelte +8 -8
  11. package/dist/components/core/datatable/ui/DataTableListFilter.svelte +59 -59
  12. package/dist/components/core/datatable/ui/DataTableListPagination.svelte +35 -35
  13. package/dist/components/core/form/ui/input-base.svelte +81 -81
  14. package/dist/components/core/form/ui/input-email.svelte +23 -22
  15. package/dist/components/core/form/ui/input-password-confirm.svelte +23 -22
  16. package/dist/components/core/form/ui/input-password.svelte +23 -22
  17. package/dist/components/core/form/ui/input-phone.svelte +23 -0
  18. package/dist/components/core/form/ui/input-phone.svelte.d.ts +4 -0
  19. package/dist/components/core/form/ui/input-username.svelte +22 -21
  20. package/dist/components/core/label/LabelOr.svelte +25 -25
  21. package/dist/components/core/link/link-forget-password.svelte +12 -12
  22. package/dist/components/core/link/link-privacy-polity.svelte +12 -12
  23. package/dist/components/core/link/link-terms-of-service.svelte +12 -12
  24. package/dist/components/core/nav/ui/nav-menu-bar.svelte +97 -97
  25. package/dist/components/core/nav/ui/nav-menu-bottom-bar.svelte +33 -33
  26. package/dist/components/core/nav/ui/nav-menu-top-bar.svelte +103 -103
  27. package/dist/components/core/sidebar/{menu-bar-sidebar.svelte → MenuBarSidebar.svelte} +70 -62
  28. package/dist/components/core/sidebar/{menu-bar-sidebar.svelte.d.ts → MenuBarSidebar.svelte.d.ts} +8 -0
  29. package/dist/components/core/tabs/ui/tab-underline.svelte +41 -41
  30. package/dist/components/pages/admin/ui/{admin-content.svelte → AdminContent.svelte} +14 -13
  31. package/dist/components/pages/admin/ui/{admin-content.svelte.d.ts → AdminContent.svelte.d.ts} +1 -0
  32. package/dist/components/pages/admin/ui/{admin-panel.svelte → AdminPanel.svelte} +46 -40
  33. package/dist/components/pages/admin/ui/{admin-panel.svelte.d.ts → AdminPanel.svelte.d.ts} +6 -0
  34. package/dist/components/pages/login/01/data/page-props.d.ts +21 -0
  35. package/dist/components/pages/login/01/data/page-props.js +1 -0
  36. package/dist/components/pages/login/01/ui/AuthCard.svelte +91 -0
  37. package/dist/components/pages/login/01/ui/AuthCard.svelte.d.ts +20 -0
  38. package/dist/components/pages/login/01/ui/FormLogin.svelte +56 -0
  39. package/dist/components/pages/login/01/ui/FormLogin.svelte.d.ts +13 -0
  40. package/dist/components/pages/login/01/ui/FormLoginEmailPassword.svelte +13 -0
  41. package/dist/components/pages/login/01/ui/FormLoginEmailPassword.svelte.d.ts +8 -0
  42. package/dist/components/pages/login/01/ui/FormLoginPhonePassword.svelte +13 -0
  43. package/dist/components/pages/login/01/ui/FormLoginPhonePassword.svelte.d.ts +8 -0
  44. package/dist/components/pages/login/01/ui/FormLoginUsernamePassword.svelte +13 -0
  45. package/dist/components/pages/login/01/ui/FormLoginUsernamePassword.svelte.d.ts +8 -0
  46. package/dist/components/pages/login/{admin/01 → 01}/ui/FormRegister.svelte +28 -28
  47. package/dist/components/pages/login/{admin/01 → 01}/ui/LeftHero.svelte +105 -105
  48. package/dist/components/pages/login/{admin/01 → 01}/ui/LeftHero.svelte.d.ts +1 -1
  49. package/dist/components/pages/login/01/ui/PageLogin01.svelte +49 -0
  50. package/dist/components/pages/login/01/ui/PageLogin01.svelte.d.ts +4 -0
  51. package/dist/components/pages/login/PageLogin.svelte +21 -0
  52. package/dist/components/pages/login/PageLogin.svelte.d.ts +17 -0
  53. package/dist/components/ui/badge/badge.svelte +49 -49
  54. package/dist/components/ui/chart/chart-container.svelte +80 -80
  55. package/dist/components/ui/chart/chart-style.svelte +37 -37
  56. package/dist/components/ui/chart/chart-tooltip.svelte +184 -184
  57. package/dist/components/ui/checkbox/checkbox.svelte +40 -40
  58. package/dist/components/ui/checkbox/checkbox.svelte.d.ts +1 -1
  59. package/dist/components/ui/data-table/flex-render.svelte +40 -40
  60. package/dist/components/ui/drawer/drawer-close.svelte +7 -7
  61. package/dist/components/ui/drawer/drawer-content.svelte +33 -33
  62. package/dist/components/ui/drawer/drawer-description.svelte +17 -17
  63. package/dist/components/ui/drawer/drawer-footer.svelte +20 -20
  64. package/dist/components/ui/drawer/drawer-header.svelte +20 -20
  65. package/dist/components/ui/drawer/drawer-nested.svelte +12 -12
  66. package/dist/components/ui/drawer/drawer-overlay.svelte +17 -17
  67. package/dist/components/ui/drawer/drawer-portal.svelte +7 -7
  68. package/dist/components/ui/drawer/drawer-title.svelte +17 -17
  69. package/dist/components/ui/drawer/drawer-trigger.svelte +7 -7
  70. package/dist/components/ui/drawer/drawer.svelte +12 -12
  71. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte.d.ts +1 -1
  72. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +1 -1
  73. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +1 -1
  74. package/dist/components/ui/input/input.svelte.d.ts +1 -1
  75. package/dist/components/ui/select/select-content.svelte +45 -45
  76. package/dist/components/ui/select/select-group-heading.svelte +21 -21
  77. package/dist/components/ui/select/select-group.svelte +17 -17
  78. package/dist/components/ui/select/select-item.svelte +41 -41
  79. package/dist/components/ui/select/select-label.svelte +20 -20
  80. package/dist/components/ui/select/select-portal.svelte +7 -7
  81. package/dist/components/ui/select/select-scroll-down-button.svelte +21 -21
  82. package/dist/components/ui/select/select-scroll-up-button.svelte +21 -21
  83. package/dist/components/ui/select/select-separator.svelte +18 -18
  84. package/dist/components/ui/select/select-trigger.svelte +30 -30
  85. package/dist/components/ui/select/select.svelte +11 -11
  86. package/dist/components/ui/sidebar/sidebar-input.svelte.d.ts +2 -2
  87. package/dist/components/ui/sidebar/sidebar-menu-sub-button.svelte +39 -39
  88. package/dist/components/ui/table/table-body.svelte +15 -15
  89. package/dist/components/ui/table/table-caption.svelte +20 -20
  90. package/dist/components/ui/table/table-cell.svelte +15 -15
  91. package/dist/components/ui/table/table-footer.svelte +20 -20
  92. package/dist/components/ui/table/table-head.svelte +15 -15
  93. package/dist/components/ui/table/table-header.svelte +20 -20
  94. package/dist/components/ui/table/table-row.svelte +15 -15
  95. package/dist/components/ui/table/table.svelte +17 -17
  96. package/dist/components/ui/tabs/tabs-content.svelte +17 -17
  97. package/dist/components/ui/tabs/tabs-list.svelte +40 -40
  98. package/dist/components/ui/tabs/tabs-trigger.svelte +23 -23
  99. package/dist/components/ui/tabs/tabs.svelte +19 -19
  100. package/dist/components/ui/tabs/tabs.svelte.d.ts +1 -1
  101. package/dist/components/ui/underline-tabs/underline-tabs.svelte.d.ts +1 -1
  102. package/dist/index.d.ts +30 -0
  103. package/dist/index.js +30 -2
  104. package/package.json +94 -88
  105. package/dist/components/pages/login/admin/01/ui/AuthCard.svelte +0 -58
  106. package/dist/components/pages/login/admin/01/ui/AuthCard.svelte.d.ts +0 -18
  107. package/dist/components/pages/login/admin/01/ui/FormLogin.svelte +0 -31
  108. package/dist/components/pages/login/admin/01/ui/FormLogin.svelte.d.ts +0 -3
  109. package/dist/components/pages/login/admin/01/ui/PageLogin.svelte +0 -49
  110. package/dist/components/pages/login/admin/01/ui/PageLogin.svelte.d.ts +0 -18
  111. package/dist/components/pages/login/admin/index.d.ts +0 -0
  112. package/dist/components/pages/login/admin/index.js +0 -1
  113. package/dist/components/pages/login/index.d.ts +0 -0
  114. package/dist/components/pages/login/index.js +0 -1
  115. /package/dist/components/pages/login/{admin/01 → 01}/ui/FormRegister.svelte.d.ts +0 -0
@@ -1,41 +1,41 @@
1
- <script lang="ts">
2
- import * as UnderlineTabs from "../../../ui/underline-tabs";
3
- import type { TabProps } from "../data/TabModel";
4
-
5
- type Props = {
6
- items?: TabProps[];
7
- className?: string;
8
- };
9
-
10
- let { items = [], className }: Props = $props();
11
-
12
- let activeValue = $state<string>("");
13
-
14
- let currentActiveValue = $derived(
15
- activeValue || (items.length > 0 ? items[0].item.value : ""),
16
- );
17
-
18
- let selected = $derived(
19
- items.find((it) => it.item.value === currentActiveValue) || items[0],
20
- );
21
- </script>
22
-
23
- {#if items && items.length > 0 && selected}
24
- <UnderlineTabs.Root
25
- value={currentActiveValue}
26
- onValueChange={(val) => (activeValue = val)}
27
- class="mb-5 {className}"
28
- >
29
- <UnderlineTabs.List>
30
- {#each items as it (it.item.value)}
31
- <UnderlineTabs.Trigger
32
- value={it.item.value}
33
- class="text-lg md:text-base"
34
- >
35
- {it.item.label}
36
- </UnderlineTabs.Trigger>
37
- {/each}
38
- </UnderlineTabs.List>
39
- </UnderlineTabs.Root>
40
- {@render selected.children()}
41
- {/if}
1
+ <script lang="ts">
2
+ import * as UnderlineTabs from "../../../ui/underline-tabs";
3
+ import type { TabProps } from "../data/TabModel";
4
+
5
+ type Props = {
6
+ items?: TabProps[];
7
+ className?: string;
8
+ };
9
+
10
+ let { items = [], className }: Props = $props();
11
+
12
+ let activeValue = $state<string>("");
13
+
14
+ let currentActiveValue = $derived(
15
+ activeValue || (items.length > 0 ? items[0].item.value : ""),
16
+ );
17
+
18
+ let selected = $derived(
19
+ items.find((it) => it.item.value === currentActiveValue) || items[0],
20
+ );
21
+ </script>
22
+
23
+ {#if items && items.length > 0 && selected}
24
+ <UnderlineTabs.Root
25
+ value={currentActiveValue}
26
+ onValueChange={(val) => (activeValue = val)}
27
+ class="mb-5 {className}"
28
+ >
29
+ <UnderlineTabs.List>
30
+ {#each items as it (it.item.value)}
31
+ <UnderlineTabs.Trigger
32
+ value={it.item.value}
33
+ class="text-lg md:text-base"
34
+ >
35
+ {it.item.label}
36
+ </UnderlineTabs.Trigger>
37
+ {/each}
38
+ </UnderlineTabs.List>
39
+ </UnderlineTabs.Root>
40
+ {@render selected.children()}
41
+ {/if}
@@ -1,13 +1,14 @@
1
- <script lang="ts">
2
- import type { Snippet } from "svelte";
3
-
4
- type Props = {
5
- children?: Snippet;
6
- };
7
-
8
- let { children }: Props = $props();
9
- </script>
10
-
11
- <div class="flex flex-1 flex-col gap-4 p-4 pt-0">
12
- {@render children?.()}
13
- </div>
1
+ <script lang="ts">
2
+ import type { Snippet } from "svelte";
3
+
4
+ /** Wrapper de conteúdo para páginas admin. */
5
+ type Props = {
6
+ children?: Snippet;
7
+ };
8
+
9
+ let { children }: Props = $props();
10
+ </script>
11
+
12
+ <div class="flex flex-1 flex-col gap-4 p-4 pt-0">
13
+ {@render children?.()}
14
+ </div>
@@ -1,4 +1,5 @@
1
1
  import type { Snippet } from "svelte";
2
+ /** Wrapper de conteúdo para páginas admin. */
2
3
  type Props = {
3
4
  children?: Snippet;
4
5
  };
@@ -1,40 +1,46 @@
1
- <script lang="ts">
2
- import LanguageSwitcher from "../../../ui/language-switcher/language-switcher.svelte";
3
- import LightSwitch from "../../../ui/light-switch/light-switch.svelte";
4
- import { Separator } from "../../../ui/separator/index.js";
5
- import * as Sidebar from "../../../ui/sidebar/index.js";
6
- import type { Snippet } from "svelte";
7
-
8
- type Props = {
9
- appsidebar?: Snippet;
10
- content?: Snippet;
11
- breadcrumb?: Snippet;
12
- };
13
-
14
- let { appsidebar, content, breadcrumb }: Props = $props();
15
- </script>
16
-
17
- <Sidebar.Provider>
18
- {@render appsidebar?.()}
19
- <Sidebar.Inset>
20
- <header
21
- class="flex h-16 shrink-0 items-center md:justify-between gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12"
22
- >
23
- <div class="flex items-center gap-2 px-4">
24
- <Sidebar.Trigger class="-ms-1" />
25
- <Separator
26
- orientation="vertical"
27
- class="me-2 data-[orientation=vertical]:h-4"
28
- />
29
- {@render breadcrumb?.()}
30
- </div>
31
- <div class="pr-5">
32
- <div class="flex gap-3">
33
- <LanguageSwitcher />
34
- <LightSwitch />
35
- </div>
36
- </div>
37
- </header>
38
- {@render content?.()}
39
- </Sidebar.Inset>
40
- </Sidebar.Provider>
1
+ <script lang="ts">
2
+ import LanguageSwitcher from "../../../ui/language-switcher/language-switcher.svelte";
3
+ import LightSwitch from "../../../ui/light-switch/light-switch.svelte";
4
+ import { Separator } from "../../../ui/separator/index.js";
5
+ import * as Sidebar from "../../../ui/sidebar/index.js";
6
+ import type { Snippet } from "svelte";
7
+
8
+ /**
9
+ * Layout de admin com sidebar, header e conteúdo.
10
+ * @property {Snippet} appsidebar - Sidebar da aplicação
11
+ * @property {Snippet} content - Conteúdo principal
12
+ * @property {Snippet} breadcrumb - Navegação breadcrumb
13
+ */
14
+ type Props = {
15
+ appsidebar?: Snippet;
16
+ content?: Snippet;
17
+ breadcrumb?: Snippet;
18
+ };
19
+
20
+ let { appsidebar, content, breadcrumb }: Props = $props();
21
+ </script>
22
+
23
+ <Sidebar.Provider>
24
+ {@render appsidebar?.()}
25
+ <Sidebar.Inset>
26
+ <header
27
+ class="flex h-16 shrink-0 items-center md:justify-between gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12"
28
+ >
29
+ <div class="flex items-center gap-2 px-4">
30
+ <Sidebar.Trigger class="-ms-1" />
31
+ <Separator
32
+ orientation="vertical"
33
+ class="me-2 data-[orientation=vertical]:h-4"
34
+ />
35
+ {@render breadcrumb?.()}
36
+ </div>
37
+ <div class="pr-5">
38
+ <div class="flex gap-3">
39
+ <LanguageSwitcher />
40
+ <LightSwitch />
41
+ </div>
42
+ </div>
43
+ </header>
44
+ {@render content?.()}
45
+ </Sidebar.Inset>
46
+ </Sidebar.Provider>
@@ -1,4 +1,10 @@
1
1
  import type { Snippet } from "svelte";
2
+ /**
3
+ * Layout de admin com sidebar, header e conteúdo.
4
+ * @property {Snippet} appsidebar - Sidebar da aplicação
5
+ * @property {Snippet} content - Conteúdo principal
6
+ * @property {Snippet} breadcrumb - Navegação breadcrumb
7
+ */
2
8
  type Props = {
3
9
  appsidebar?: Snippet;
4
10
  content?: Snippet;
@@ -0,0 +1,21 @@
1
+ import type { CarouselItem, CarouselItemType } from "../../../../core/carousel/data/CarouselModel";
2
+ import type { Snippet } from "svelte";
3
+ export type AuthFormType = "EMAIL_PASSWORD" | "PHONE_PASSWORD" | "USERNAME_PASSWORD";
4
+ export type LoginVariant = "EMAIL" | "USERNAME" | "PHONE";
5
+ export type Credential = {
6
+ password: string;
7
+ data: string;
8
+ };
9
+ export type LinkProps = {
10
+ url?: string;
11
+ onclick?: () => void;
12
+ };
13
+ export type PageLoginProps = {
14
+ carousel?: CarouselItem[];
15
+ varient?: CarouselItemType;
16
+ title?: string;
17
+ children?: Snippet;
18
+ formType?: AuthFormType;
19
+ privacyPolicy?: LinkProps;
20
+ termsOfService?: LinkProps;
21
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,91 @@
1
+ <script lang="ts">
2
+ import LanguageSwitcher from "../../../../ui/language-switcher/language-switcher.svelte";
3
+ import LinkTermsOfService from "../../../../core/link/link-terms-of-service.svelte";
4
+ import LinkPrivacyPolity from "../../../../core/link/link-privacy-polity.svelte";
5
+ import TabUnderline from "../../../../core/tabs/ui/tab-underline.svelte";
6
+ import ButtonBack from "../../../../core/button/ButtonBack.svelte";
7
+ import LabelOr from "../../../../core/label/LabelOr.svelte";
8
+ import type { Snippet } from "svelte";
9
+ import { LightSwitch } from "../../../../ui/light-switch";
10
+ import { t } from "../../../../../i18n";
11
+ import type { AuthFormType, Credential, LinkProps } from "../data/page-props";
12
+ import FormLoginEmailPassword from "./FormLoginEmailPassword.svelte";
13
+ import FormLoginUsernamePassword from "./FormLoginUsernamePassword.svelte";
14
+ import FormLoginPhonePassword from "./FormLoginPhonePassword.svelte";
15
+
16
+ /**
17
+ * Card de autenticação com abas login/register.
18
+ * @property {AuthFormType} formType - Tipo do form (EMAIL_PASSWORD, USERNAME_PASSWORD, PHONE_PASSWORD)
19
+ * @property {(cred: Credential) => void} onSubmit - Callback ao submeter credenciais
20
+ * @property {Snippet} register - Snippet do form de registro (opcional, exibe aba Register)
21
+ * @property {LinkProps} privacyPolicy - Config do link de privacidade { url, onclick }
22
+ * @property {LinkProps} termsOfService - Config do link de termos { url, onclick }
23
+ */
24
+ type Props = {
25
+ formType?: AuthFormType;
26
+ onSubmit?: (credential: Credential) => void;
27
+ register?: Snippet;
28
+ privacyPolicy?: LinkProps;
29
+ termsOfService?: LinkProps;
30
+ };
31
+
32
+ let { formType, onSubmit, register, privacyPolicy, termsOfService }: Props = $props();
33
+ </script>
34
+
35
+ <div class="flex-1 flex flex-col justify-between h-screen bg-gradient-right">
36
+ <nav class="flex justify-between p-5 md:bg-transparent">
37
+ <div>
38
+ <ButtonBack />
39
+ </div>
40
+ <div class="flex gap-2">
41
+ <LightSwitch />
42
+ <LanguageSwitcher />
43
+ </div>
44
+ </nav>
45
+
46
+ <div
47
+ class="p-5 h-full border-t-2 bg-background md:border-none rounded-tl-[35px] rounded-tr-[35px]"
48
+ >
49
+ <TabUnderline
50
+ items={[
51
+ {
52
+ item: { label: $t("label.login"), value: "login" },
53
+ children: loginSnippet,
54
+ },
55
+ ...(register
56
+ ? [
57
+ {
58
+ item: { label: $t("label.register"), value: "register" },
59
+ children: registerSnippet,
60
+ },
61
+ ]
62
+ : []),
63
+ ]}
64
+ />
65
+
66
+ {#snippet loginSnippet()}
67
+ {#if formType == "EMAIL_PASSWORD"}
68
+ <FormLoginEmailPassword {onSubmit} />
69
+ {:else if formType == "USERNAME_PASSWORD"}
70
+ <FormLoginUsernamePassword {onSubmit} />
71
+ {:else if formType == "PHONE_PASSWORD"}
72
+ <FormLoginPhonePassword {onSubmit} />
73
+ {/if}
74
+ {/snippet}
75
+
76
+ {#snippet registerSnippet()}
77
+ {#if register}
78
+ {@render register()}
79
+ {/if}
80
+ {/snippet}
81
+ </div>
82
+
83
+ <!-- Footer Terms -->
84
+ <div
85
+ class="text-[11px] text-slate-400 py-2 flex justify-center gap-2 bg-background"
86
+ >
87
+ <LinkPrivacyPolity href={privacyPolicy?.url} onclick={privacyPolicy?.onclick} />
88
+ <LabelOr />
89
+ <LinkTermsOfService href={termsOfService?.url} onclick={termsOfService?.onclick} />
90
+ </div>
91
+ </div>
@@ -0,0 +1,20 @@
1
+ import type { Snippet } from "svelte";
2
+ import type { AuthFormType, Credential, LinkProps } from "../data/page-props";
3
+ /**
4
+ * Card de autenticação com abas login/register.
5
+ * @property {AuthFormType} formType - Tipo do form (EMAIL_PASSWORD, USERNAME_PASSWORD, PHONE_PASSWORD)
6
+ * @property {(cred: Credential) => void} onSubmit - Callback ao submeter credenciais
7
+ * @property {Snippet} register - Snippet do form de registro (opcional, exibe aba Register)
8
+ * @property {LinkProps} privacyPolicy - Config do link de privacidade { url, onclick }
9
+ * @property {LinkProps} termsOfService - Config do link de termos { url, onclick }
10
+ */
11
+ type Props = {
12
+ formType?: AuthFormType;
13
+ onSubmit?: (credential: Credential) => void;
14
+ register?: Snippet;
15
+ privacyPolicy?: LinkProps;
16
+ termsOfService?: LinkProps;
17
+ };
18
+ declare const AuthCard: import("svelte").Component<Props, {}, "">;
19
+ type AuthCard = ReturnType<typeof AuthCard>;
20
+ export default AuthCard;
@@ -0,0 +1,56 @@
1
+ <script lang="ts">
2
+ import InputEmail from "../../../../core/form/ui/input-email.svelte";
3
+ import InputUsername from "../../../../core/form/ui/input-username.svelte";
4
+ import InputPhone from "../../../../core/form/ui/input-phone.svelte";
5
+ import InputPassword from "../../../../core/form/ui/input-password.svelte";
6
+ import ButtonLogin from "../../../../core/button/ButtonLogin.svelte";
7
+ import LinkForgetPassword from "../../../../core/link/link-forget-password.svelte";
8
+ import LabelOr from "../../../../core/label/LabelOr.svelte";
9
+ import ButtonLoginWith from "../../../../core/button/ButtonLoginWith.svelte";
10
+ import { t } from "../../../../../i18n";
11
+ import type { Credential, LoginVariant } from "../data/page-props";
12
+
13
+ /**
14
+ * Formulário de login reutilizável.
15
+ * @property {LoginVariant} variant - Tipo do input de dados (EMAIL, USERNAME, PHONE)
16
+ * @property {(cred: Credential) => void} onSubmit - Callback ao submeter { data, password }
17
+ */
18
+ type Props = {
19
+ variant: LoginVariant;
20
+ onSubmit?: (credential: Credential) => void;
21
+ };
22
+
23
+ let { variant, onSubmit }: Props = $props();
24
+ let data = $state("");
25
+ let password = $state("");
26
+
27
+ function handleSubmit(e: Event) {
28
+ e.preventDefault();
29
+ onSubmit?.({ data, password });
30
+ }
31
+ </script>
32
+
33
+ <form class="w-full space-y-4" onsubmit={handleSubmit}>
34
+ <p class="text-[13px] py-3">{$t("text.login")}</p>
35
+
36
+ <div class="space-y-1">
37
+ {#if variant === "EMAIL"}
38
+ <InputEmail bind:value={data} />
39
+ {:else if variant === "USERNAME"}
40
+ <InputUsername bind:value={data} />
41
+ {:else if variant === "PHONE"}
42
+ <InputPhone bind:value={data} />
43
+ {/if}
44
+ </div>
45
+
46
+ <div class="space-y-1 relative">
47
+ <InputPassword bind:value={password} />
48
+ <LinkForgetPassword />
49
+ </div>
50
+
51
+ <div class="flex flex-col gap-1">
52
+ <ButtonLogin type="submit" />
53
+ <LabelOr variant="SEPARATOR" />
54
+ <ButtonLoginWith icon="GOOGLE" />
55
+ </div>
56
+ </form>
@@ -0,0 +1,13 @@
1
+ import type { Credential, LoginVariant } from "../data/page-props";
2
+ /**
3
+ * Formulário de login reutilizável.
4
+ * @property {LoginVariant} variant - Tipo do input de dados (EMAIL, USERNAME, PHONE)
5
+ * @property {(cred: Credential) => void} onSubmit - Callback ao submeter { data, password }
6
+ */
7
+ type Props = {
8
+ variant: LoginVariant;
9
+ onSubmit?: (credential: Credential) => void;
10
+ };
11
+ declare const FormLogin: import("svelte").Component<Props, {}, "">;
12
+ type FormLogin = ReturnType<typeof FormLogin>;
13
+ export default FormLogin;
@@ -0,0 +1,13 @@
1
+ <script lang="ts">
2
+ import FormLogin from "./FormLogin.svelte";
3
+ import type { Credential } from "../data/page-props";
4
+
5
+ /** Form de login com email e senha. Wrapper fino de FormLogin variant="EMAIL". */
6
+ type Props = {
7
+ onSubmit?: (credential: Credential) => void;
8
+ };
9
+
10
+ let { onSubmit }: Props = $props();
11
+ </script>
12
+
13
+ <FormLogin variant="EMAIL" {onSubmit} />
@@ -0,0 +1,8 @@
1
+ import type { Credential } from "../data/page-props";
2
+ /** Form de login com email e senha. Wrapper fino de FormLogin variant="EMAIL". */
3
+ type Props = {
4
+ onSubmit?: (credential: Credential) => void;
5
+ };
6
+ declare const FormLoginEmailPassword: import("svelte").Component<Props, {}, "">;
7
+ type FormLoginEmailPassword = ReturnType<typeof FormLoginEmailPassword>;
8
+ export default FormLoginEmailPassword;
@@ -0,0 +1,13 @@
1
+ <script lang="ts">
2
+ import FormLogin from "./FormLogin.svelte";
3
+ import type { Credential } from "../data/page-props";
4
+
5
+ /** Form de login com telefone e senha. Wrapper fino de FormLogin variant="PHONE". */
6
+ type Props = {
7
+ onSubmit?: (credential: Credential) => void;
8
+ };
9
+
10
+ let { onSubmit }: Props = $props();
11
+ </script>
12
+
13
+ <FormLogin variant="PHONE" {onSubmit} />
@@ -0,0 +1,8 @@
1
+ import type { Credential } from "../data/page-props";
2
+ /** Form de login com telefone e senha. Wrapper fino de FormLogin variant="PHONE". */
3
+ type Props = {
4
+ onSubmit?: (credential: Credential) => void;
5
+ };
6
+ declare const FormLoginPhonePassword: import("svelte").Component<Props, {}, "">;
7
+ type FormLoginPhonePassword = ReturnType<typeof FormLoginPhonePassword>;
8
+ export default FormLoginPhonePassword;
@@ -0,0 +1,13 @@
1
+ <script lang="ts">
2
+ import FormLogin from "./FormLogin.svelte";
3
+ import type { Credential } from "../data/page-props";
4
+
5
+ /** Form de login com username e senha. Wrapper fino de FormLogin variant="USERNAME". */
6
+ type Props = {
7
+ onSubmit?: (credential: Credential) => void;
8
+ };
9
+
10
+ let { onSubmit }: Props = $props();
11
+ </script>
12
+
13
+ <FormLogin variant="USERNAME" {onSubmit} />
@@ -0,0 +1,8 @@
1
+ import type { Credential } from "../data/page-props";
2
+ /** Form de login com username e senha. Wrapper fino de FormLogin variant="USERNAME". */
3
+ type Props = {
4
+ onSubmit?: (credential: Credential) => void;
5
+ };
6
+ declare const FormLoginUsernamePassword: import("svelte").Component<Props, {}, "">;
7
+ type FormLoginUsernamePassword = ReturnType<typeof FormLoginUsernamePassword>;
8
+ export default FormLoginUsernamePassword;
@@ -1,28 +1,28 @@
1
- <script lang="ts">
2
- import InputPasswordConfirm from "../../../../../core/form/ui/input-password-confirm.svelte";
3
- import InputPassword from "../../../../../core/form/ui/input-password.svelte";
4
- import InputEmail from "../../../../../core/form/ui/input-email.svelte";
5
- import ButtonLogin from "../../../../../core/button/ButtonLogin.svelte";
6
- import { t } from "../../../../../../i18n";
7
-
8
- let email = $state("");
9
- let password = $state("");
10
- </script>
11
-
12
- <form class="space-y-4" onsubmit={(e) => e.preventDefault()}>
13
- <p class="text-[13px] py-3">{$t("text.register")}</p>
14
-
15
- <div class="space-y-1">
16
- <InputEmail value={email} />
17
- </div>
18
-
19
- <div class="space-y-1">
20
- <InputPassword value={password} />
21
- </div>
22
-
23
- <div class="space-y-1">
24
- <InputPasswordConfirm value={password} />
25
- </div>
26
-
27
- <ButtonLogin />
28
- </form>
1
+ <script lang="ts">
2
+ import InputPasswordConfirm from "../../../../core/form/ui/input-password-confirm.svelte";
3
+ import InputPassword from "../../../../core/form/ui/input-password.svelte";
4
+ import InputEmail from "../../../../core/form/ui/input-email.svelte";
5
+ import ButtonLogin from "../../../../core/button/ButtonLogin.svelte";
6
+ import { t } from "../../../../../i18n";
7
+
8
+ let email = $state("");
9
+ let password = $state("");
10
+ </script>
11
+
12
+ <form class="space-y-4" onsubmit={(e) => e.preventDefault()}>
13
+ <p class="text-[13px] py-3">{$t("text.register")}</p>
14
+
15
+ <div class="space-y-1">
16
+ <InputEmail value={email} />
17
+ </div>
18
+
19
+ <div class="space-y-1">
20
+ <InputPassword value={password} />
21
+ </div>
22
+
23
+ <div class="space-y-1">
24
+ <InputPasswordConfirm value={password} />
25
+ </div>
26
+
27
+ <ButtonLogin />
28
+ </form>