negodesign 0.0.75 → 0.0.76
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.
- package/dist/components/pages/security/auth/PageAuth01.svelte +65 -0
- package/dist/components/pages/security/auth/PageAuth01.svelte.d.ts +17 -0
- package/dist/components/pages/security/auth/PageAuth02.svelte +45 -0
- package/dist/components/pages/security/auth/PageAuth02.svelte.d.ts +17 -0
- package/dist/components/pages/security/auth/PageAuth03.svelte +45 -0
- package/dist/components/pages/security/auth/PageAuth03.svelte.d.ts +17 -0
- package/dist/components/pages/security/login/01/ui/PageLogin01.svelte +15 -40
- package/dist/components/pages/security/login/02/ui/PageLogin02.svelte +15 -20
- package/dist/components/pages/security/login/03/ui/PageLogin03.svelte +15 -20
- package/dist/components/pages/security/register/01/ui/PageRegister01.svelte +64 -0
- package/dist/components/pages/security/register/01/ui/PageRegister01.svelte.d.ts +3 -0
- package/dist/components/pages/security/register/01/ui/RegisterCard.svelte +100 -0
- package/dist/components/pages/security/register/01/ui/RegisterCard.svelte.d.ts +12 -0
- package/dist/components/pages/security/register/02/ui/PageRegister02.svelte +76 -0
- package/dist/components/pages/security/register/02/ui/PageRegister02.svelte.d.ts +4 -0
- package/dist/components/pages/security/register/02/ui/RegisterCard02.svelte +98 -0
- package/dist/components/pages/security/register/02/ui/RegisterCard02.svelte.d.ts +12 -0
- package/dist/components/pages/security/register/03/ui/PageRegister03.svelte +76 -0
- package/dist/components/pages/security/register/03/ui/PageRegister03.svelte.d.ts +4 -0
- package/dist/components/pages/security/register/03/ui/RegisterCard03.svelte +103 -0
- package/dist/components/pages/security/register/03/ui/RegisterCard03.svelte.d.ts +12 -0
- package/dist/components/pages/security/register/FormRegister.svelte +120 -0
- package/dist/components/pages/security/register/FormRegister.svelte.d.ts +8 -0
- package/dist/components/pages/security/register/PageRegister.svelte +30 -0
- package/dist/components/pages/security/register/PageRegister.svelte.d.ts +8 -0
- package/dist/components/pages/security/register/types.d.ts +51 -0
- package/dist/components/pages/security/register/types.js +1 -0
- package/dist/components/ui/modal/core/types.d.ts +3 -1
- package/dist/components/ui/modal/core/ui/ModalCore.svelte +132 -129
- package/dist/components/ui/modal/grid/ui/02/ModalGridSelection02.svelte +146 -142
- package/dist/components/ui/modal/share/types.d.ts +16 -1
- package/dist/components/ui/modal/share/ui/ModalShareSelection.svelte +156 -103
- package/dist/docs/DocsSidebar.svelte +58 -1
- package/dist/docs/components.js +94 -8
- package/dist/globals.css +18 -101
- package/dist/index.d.ts +17 -1
- package/dist/index.js +17 -1
- package/dist/types/index.d.ts +7 -0
- package/package.json +1 -1
|
@@ -1,103 +1,156 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { cn } from "../../../../../utils";
|
|
3
|
-
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
4
|
-
import ModalCore from "../../core/ui/ModalCore.svelte";
|
|
5
|
-
import type { ModalShareSelectionProps, ModelSocialShare } from "../types";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
{
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from "../../../../../utils";
|
|
3
|
+
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
4
|
+
import ModalCore from "../../core/ui/ModalCore.svelte";
|
|
5
|
+
import type { ModalShareSelectionProps, ModelSocialShare } from "../types";
|
|
6
|
+
|
|
7
|
+
const defaultNetworks: ModelSocialShare[] = [
|
|
8
|
+
{ name: "WhatsApp", img: "/img/icons8-whatsapp-48.png", color: "#25D366" },
|
|
9
|
+
{
|
|
10
|
+
name: "Instagram",
|
|
11
|
+
img: "/img/icons8-instagram-48.png",
|
|
12
|
+
color: "#E4405F",
|
|
13
|
+
},
|
|
14
|
+
{ name: "Facebook", img: "/img/icons8-facebook-48.png", color: "#1877F2" },
|
|
15
|
+
{ name: "Twitter", img: "/img/icons8-twitterx-50.png", color: "#000000" },
|
|
16
|
+
{ name: "LinkedIn", img: "/img/icons8-linkedin-48.png", color: "#0A66C2" },
|
|
17
|
+
{
|
|
18
|
+
name: "Pinterest",
|
|
19
|
+
img: "/img/icons8-pinterest-48.png",
|
|
20
|
+
color: "#E60023",
|
|
21
|
+
},
|
|
22
|
+
{ name: "Tumblr", img: "/img/icons8-tumblr-48.png", color: "#36465D" },
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
let {
|
|
26
|
+
title,
|
|
27
|
+
subtitle,
|
|
28
|
+
networks,
|
|
29
|
+
isWhatsapp = true,
|
|
30
|
+
isInstagram = true,
|
|
31
|
+
isFacebook = true,
|
|
32
|
+
isTwitter = true,
|
|
33
|
+
isLinkedin = true,
|
|
34
|
+
isPinterest = false,
|
|
35
|
+
isTumblr = false,
|
|
36
|
+
linkLabel = "Or copy link",
|
|
37
|
+
linkValue = "",
|
|
38
|
+
copyText = "Copy",
|
|
39
|
+
copiedText = "Copied!",
|
|
40
|
+
isOpen = $bindable(false),
|
|
41
|
+
onShare,
|
|
42
|
+
onCopy,
|
|
43
|
+
onClose,
|
|
44
|
+
class: className,
|
|
45
|
+
}: ModalShareSelectionProps = $props();
|
|
46
|
+
|
|
47
|
+
let copied = $state(false);
|
|
48
|
+
|
|
49
|
+
const networkFlags: Record<string, boolean> = $derived({
|
|
50
|
+
whatsapp: isWhatsapp,
|
|
51
|
+
instagram: isInstagram,
|
|
52
|
+
facebook: isFacebook,
|
|
53
|
+
twitter: isTwitter,
|
|
54
|
+
linkedin: isLinkedin,
|
|
55
|
+
pinterest: isPinterest,
|
|
56
|
+
tumblr: isTumblr,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
const visibleNetworks = $derived(
|
|
60
|
+
(networks?.length ? networks : defaultNetworks).filter(
|
|
61
|
+
(network) => networkFlags[network.name.toLowerCase()] ?? true,
|
|
62
|
+
),
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
function handleCopy() {
|
|
66
|
+
navigator.clipboard.writeText(linkValue).then(() => {
|
|
67
|
+
copied = true;
|
|
68
|
+
onCopy?.(linkValue);
|
|
69
|
+
setTimeout(() => (copied = false), 2000);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
</script>
|
|
73
|
+
|
|
74
|
+
<ModalCore
|
|
75
|
+
bind:isOpen
|
|
76
|
+
{title}
|
|
77
|
+
{subtitle}
|
|
78
|
+
showProgress={false}
|
|
79
|
+
showBack={false}
|
|
80
|
+
{onClose}
|
|
81
|
+
class={cn("max-w-lg", className)}
|
|
82
|
+
>
|
|
83
|
+
{#snippet content()}
|
|
84
|
+
<!-- Social Networks -->
|
|
85
|
+
{#if visibleNetworks.length > 0}
|
|
86
|
+
<div class="flex flex-wrap items-center justify-center gap-4">
|
|
87
|
+
{#each visibleNetworks as network (network.name)}
|
|
88
|
+
<button
|
|
89
|
+
type="button"
|
|
90
|
+
class="group flex flex-col items-center gap-2"
|
|
91
|
+
onclick={() => onShare?.(network)}
|
|
92
|
+
>
|
|
93
|
+
<div
|
|
94
|
+
class={cn(
|
|
95
|
+
"flex size-14 items-center justify-center rounded-full border-2 border-border bg-white transition-all duration-200",
|
|
96
|
+
"hover:scale-110 hover:shadow-md",
|
|
97
|
+
)}
|
|
98
|
+
style={network.color ? `border-color: ${network.color}30` : ""}
|
|
99
|
+
>
|
|
100
|
+
{#snippet icon()}
|
|
101
|
+
{#if network.img}
|
|
102
|
+
<img
|
|
103
|
+
src={network.img}
|
|
104
|
+
alt={network.name}
|
|
105
|
+
class="size-7 object-contain transition-transform duration-200 group-hover:scale-110"
|
|
106
|
+
loading="lazy"
|
|
107
|
+
/>
|
|
108
|
+
{:else if typeof network.icon === "string"}
|
|
109
|
+
<i
|
|
110
|
+
class="{network.icon} text-2xl transition-colors"
|
|
111
|
+
style={network.color ? `color: ${network.color}` : ""}
|
|
112
|
+
></i>
|
|
113
|
+
{:else if network.icon}
|
|
114
|
+
<HugeiconsIcon
|
|
115
|
+
icon={network.icon}
|
|
116
|
+
class="size-6 transition-colors"
|
|
117
|
+
style={network.color ? `color: ${network.color}` : ""}
|
|
118
|
+
/>
|
|
119
|
+
{/if}
|
|
120
|
+
{/snippet}
|
|
121
|
+
{@render icon()}
|
|
122
|
+
</div>
|
|
123
|
+
<span class="text-xs text-muted-foreground">{network.name}</span>
|
|
124
|
+
</button>
|
|
125
|
+
{/each}
|
|
126
|
+
</div>
|
|
127
|
+
{/if}
|
|
128
|
+
{/snippet}
|
|
129
|
+
|
|
130
|
+
{#snippet footer()}
|
|
131
|
+
<!-- Copy Link -->
|
|
132
|
+
<div>
|
|
133
|
+
<p class="mb-3 text-sm font-medium text-muted-foreground">{linkLabel}</p>
|
|
134
|
+
<div class="flex items-center gap-2">
|
|
135
|
+
<input
|
|
136
|
+
type="text"
|
|
137
|
+
readonly
|
|
138
|
+
value={linkValue}
|
|
139
|
+
class="flex-1 rounded-lg border border-border bg-muted px-4 py-2.5 text-sm text-foreground outline-none"
|
|
140
|
+
/>
|
|
141
|
+
<button
|
|
142
|
+
type="button"
|
|
143
|
+
class={cn(
|
|
144
|
+
"shrink-0 rounded-lg px-5 py-2.5 text-sm font-semibold transition-colors",
|
|
145
|
+
copied
|
|
146
|
+
? "bg-green-500 text-white"
|
|
147
|
+
: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
148
|
+
)}
|
|
149
|
+
onclick={handleCopy}
|
|
150
|
+
>
|
|
151
|
+
{copied ? copiedText : copyText}
|
|
152
|
+
</button>
|
|
153
|
+
</div>
|
|
154
|
+
</div>
|
|
155
|
+
{/snippet}
|
|
156
|
+
</ModalCore>
|
|
@@ -11,7 +11,13 @@
|
|
|
11
11
|
SidebarMenuButton,
|
|
12
12
|
SidebarMenuItem,
|
|
13
13
|
} from "../components/ui/sidebar";
|
|
14
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
AppWindowIcon,
|
|
16
|
+
DocumentCodeIcon,
|
|
17
|
+
FormIcon,
|
|
18
|
+
Login01Icon,
|
|
19
|
+
UserAdd01Icon,
|
|
20
|
+
} from "@hugeicons/core-free-icons";
|
|
15
21
|
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
16
22
|
import { page } from "$app/state";
|
|
17
23
|
import { categories, components } from "./components";
|
|
@@ -21,6 +27,15 @@
|
|
|
21
27
|
}
|
|
22
28
|
|
|
23
29
|
const path = $derived(page.url.pathname);
|
|
30
|
+
|
|
31
|
+
const authDemos = [
|
|
32
|
+
{ href: "/login/admin/01", label: "Login — Variant 01", icon: Login01Icon },
|
|
33
|
+
{ href: "/login/admin/01", label: "Login — Variant 02", icon: Login01Icon },
|
|
34
|
+
{ href: "/login/admin/01", label: "Login — Variant 03", icon: Login01Icon },
|
|
35
|
+
{ href: "/register/admin/01", label: "Register — Variant 01", icon: UserAdd01Icon },
|
|
36
|
+
{ href: "/register/admin/01", label: "Register — Variant 02", icon: UserAdd01Icon },
|
|
37
|
+
{ href: "/register/admin/01", label: "Register — Variant 03", icon: UserAdd01Icon },
|
|
38
|
+
];
|
|
24
39
|
</script>
|
|
25
40
|
|
|
26
41
|
<Sidebar collapsible="icon">
|
|
@@ -66,6 +81,48 @@
|
|
|
66
81
|
</SidebarGroupContent>
|
|
67
82
|
</SidebarGroup>
|
|
68
83
|
|
|
84
|
+
<SidebarGroup>
|
|
85
|
+
<SidebarGroupLabel class="uppercase tracking-wider text-muted-foreground/70">
|
|
86
|
+
Live Demos
|
|
87
|
+
</SidebarGroupLabel>
|
|
88
|
+
<SidebarGroupContent>
|
|
89
|
+
<SidebarMenu>
|
|
90
|
+
<SidebarMenuItem>
|
|
91
|
+
<SidebarMenuButton isActive={path === "/modal"}>
|
|
92
|
+
{#snippet child({ props })}
|
|
93
|
+
<a href="/modal" {...props} class="flex items-center gap-2">
|
|
94
|
+
<HugeiconsIcon icon={AppWindowIcon} class="size-4" />
|
|
95
|
+
<span>Modals</span>
|
|
96
|
+
</a>
|
|
97
|
+
{/snippet}
|
|
98
|
+
</SidebarMenuButton>
|
|
99
|
+
</SidebarMenuItem>
|
|
100
|
+
<SidebarMenuItem>
|
|
101
|
+
<SidebarMenuButton isActive={path === "/form"}>
|
|
102
|
+
{#snippet child({ props })}
|
|
103
|
+
<a href="/form" {...props} class="flex items-center gap-2">
|
|
104
|
+
<HugeiconsIcon icon={FormIcon} class="size-4" />
|
|
105
|
+
<span>Form</span>
|
|
106
|
+
</a>
|
|
107
|
+
{/snippet}
|
|
108
|
+
</SidebarMenuButton>
|
|
109
|
+
</SidebarMenuItem>
|
|
110
|
+
{#each authDemos as demo}
|
|
111
|
+
<SidebarMenuItem>
|
|
112
|
+
<SidebarMenuButton isActive={path === demo.href}>
|
|
113
|
+
{#snippet child({ props })}
|
|
114
|
+
<a href={demo.href} {...props} class="flex items-center gap-2">
|
|
115
|
+
<HugeiconsIcon icon={demo.icon} class="size-4" />
|
|
116
|
+
<span>{demo.label}</span>
|
|
117
|
+
</a>
|
|
118
|
+
{/snippet}
|
|
119
|
+
</SidebarMenuButton>
|
|
120
|
+
</SidebarMenuItem>
|
|
121
|
+
{/each}
|
|
122
|
+
</SidebarMenu>
|
|
123
|
+
</SidebarGroupContent>
|
|
124
|
+
</SidebarGroup>
|
|
125
|
+
|
|
69
126
|
{#each categories as category (category)}
|
|
70
127
|
{@const list = componentList(category)}
|
|
71
128
|
{#if list.length > 0}
|
package/dist/docs/components.js
CHANGED
|
@@ -743,7 +743,7 @@ let selected = $state(null);
|
|
|
743
743
|
slug: "modal-share-selection",
|
|
744
744
|
name: "ModalShareSelection",
|
|
745
745
|
category: "Modals",
|
|
746
|
-
description: "Social share modal with network
|
|
746
|
+
description: "Social share modal with branded network images, copy-to-clipboard link input, and close button. Third variation of the modal system.",
|
|
747
747
|
path: "src/lib/components/ui/modal/share/ui/ModalShareSelection.svelte",
|
|
748
748
|
importPath: "ModalShareSelection",
|
|
749
749
|
examples: [
|
|
@@ -758,12 +758,34 @@ let isOpen = $state(false);
|
|
|
758
758
|
bind:isOpen
|
|
759
759
|
title="Share this design"
|
|
760
760
|
linkValue="https://example.com/design/123"
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
761
|
+
isWhatsapp
|
|
762
|
+
isInstagram
|
|
763
|
+
isFacebook
|
|
764
|
+
isTwitter
|
|
765
|
+
isLinkedin
|
|
766
|
+
isPinterest
|
|
767
|
+
isTumblr
|
|
768
|
+
onShare={(network) => console.log(network)}
|
|
769
|
+
onCopy={(link) => console.log(link)}
|
|
770
|
+
/>`,
|
|
771
|
+
},
|
|
772
|
+
{
|
|
773
|
+
title: "Modal Share Selection — custom networks",
|
|
774
|
+
code: `import { ModalShareSelection } from "negodesign"
|
|
775
|
+
import type { ModelSocialShare } from "negodesign"
|
|
776
|
+
|
|
777
|
+
let isOpen = $state(false);
|
|
778
|
+
|
|
779
|
+
const networks: ModelSocialShare[] = [
|
|
780
|
+
{ name: "WhatsApp", img: "/img/icons8-whatsapp-48.png", color: "#25D366" },
|
|
781
|
+
{ name: "Facebook", img: "/img/icons8-facebook-48.png", color: "#1877F2" },
|
|
782
|
+
];
|
|
783
|
+
|
|
784
|
+
<ModalShareSelection
|
|
785
|
+
bind:isOpen
|
|
786
|
+
title="Share this design"
|
|
787
|
+
linkValue="https://example.com/design/123"
|
|
788
|
+
{networks}
|
|
767
789
|
onShare={(network) => console.log(network)}
|
|
768
790
|
onCopy={(link) => console.log(link)}
|
|
769
791
|
/>`,
|
|
@@ -772,7 +794,14 @@ let isOpen = $state(false);
|
|
|
772
794
|
props: [
|
|
773
795
|
{ name: "title", type: "string", description: "Required. Modal title", required: true },
|
|
774
796
|
{ name: "subtitle", type: "string", description: "Subtitle below the title" },
|
|
775
|
-
{ name: "networks", type: "ModelSocialShare[]", description: "
|
|
797
|
+
{ name: "networks", type: "ModelSocialShare[]", description: "Custom networks: { name, icon?, img?, color?, url? }. When omitted, the built-in networks are used." },
|
|
798
|
+
{ name: "isWhatsapp", type: "boolean", description: "Shows the WhatsApp network (built-in, uses /img/icons8-whatsapp-48.png)", default: "true" },
|
|
799
|
+
{ name: "isInstagram", type: "boolean", description: "Shows the Instagram network", default: "true" },
|
|
800
|
+
{ name: "isFacebook", type: "boolean", description: "Shows the Facebook network", default: "true" },
|
|
801
|
+
{ name: "isTwitter", type: "boolean", description: "Shows the Twitter/X network", default: "true" },
|
|
802
|
+
{ name: "isLinkedin", type: "boolean", description: "Shows the LinkedIn network", default: "true" },
|
|
803
|
+
{ name: "isPinterest", type: "boolean", description: "Shows the Pinterest network", default: "true" },
|
|
804
|
+
{ name: "isTumblr", type: "boolean", description: "Shows the Tumblr network", default: "true" },
|
|
776
805
|
{ name: "linkLabel", type: "string", description: "Text above the link input", default: "Or copy link" },
|
|
777
806
|
{ name: "linkValue", type: "string", description: "URL to share/copy" },
|
|
778
807
|
{ name: "copyText", type: "string", description: "Copy button text", default: "Copy" },
|
|
@@ -1258,6 +1287,63 @@ let isOpen = $state(false);
|
|
|
1258
1287
|
{ name: "termsOfService", type: "LinkProps", description: "Terms of service link" },
|
|
1259
1288
|
],
|
|
1260
1289
|
},
|
|
1290
|
+
{
|
|
1291
|
+
slug: "page-register",
|
|
1292
|
+
name: "PageRegister",
|
|
1293
|
+
category: "Login / Security",
|
|
1294
|
+
description: "Register page in a split layout: hero carousel and authentication card with configurable fields (name, email, password, phone, birthday, gender).",
|
|
1295
|
+
path: "src/lib/components/pages/security/register/PageRegister.svelte",
|
|
1296
|
+
importPath: "PageRegister",
|
|
1297
|
+
examples: [
|
|
1298
|
+
{
|
|
1299
|
+
title: "Register Page — All Fields",
|
|
1300
|
+
code: `import { PageRegister } from "negodesign"
|
|
1301
|
+
|
|
1302
|
+
<PageRegister
|
|
1303
|
+
title="Negodesign"
|
|
1304
|
+
fields={{
|
|
1305
|
+
isName: true,
|
|
1306
|
+
isEmail: true,
|
|
1307
|
+
isPassword: true,
|
|
1308
|
+
isConfirmPassword: true,
|
|
1309
|
+
isBirthday: true,
|
|
1310
|
+
isGender: true,
|
|
1311
|
+
isPhone: true,
|
|
1312
|
+
}}
|
|
1313
|
+
onSubmit={(data) => console.log(data)}
|
|
1314
|
+
/>`,
|
|
1315
|
+
href: "/register/admin/01",
|
|
1316
|
+
},
|
|
1317
|
+
{
|
|
1318
|
+
title: "Register Page — Minimal (email + password)",
|
|
1319
|
+
code: `import { PageRegister } from "negodesign"
|
|
1320
|
+
|
|
1321
|
+
<PageRegister
|
|
1322
|
+
variant={2}
|
|
1323
|
+
title="Negodesign"
|
|
1324
|
+
fields={{
|
|
1325
|
+
isEmail: true,
|
|
1326
|
+
isPassword: true,
|
|
1327
|
+
isConfirmPassword: true,
|
|
1328
|
+
}}
|
|
1329
|
+
onSubmit={(data) => console.log(data)}
|
|
1330
|
+
/>`,
|
|
1331
|
+
},
|
|
1332
|
+
],
|
|
1333
|
+
props: [
|
|
1334
|
+
{ name: "variant", type: "1 | 2 | 3", description: "Layout variant (1: grid pattern, 2: hero image, 3: glass morphism)", default: "1" },
|
|
1335
|
+
{ name: "title", type: "string", description: "Title shown in the hero/header" },
|
|
1336
|
+
{ name: "fields", type: "RegisterFormFields", description: "Fields to show: { isName?, isEmail?, isPassword?, isConfirmPassword?, isBirthday?, isGender?, isPhone? }" },
|
|
1337
|
+
{ name: "carousel", type: "RegisterCarouselItem[]", description: "Hero slides: { title, description, buttonText, buttonUrl? }" },
|
|
1338
|
+
{ name: "type", type: "'NUMBER' | 'DOT' | 'POINTER'", description: "Carousel indicator style" },
|
|
1339
|
+
{ name: "children", type: "Snippet", description: "Custom content replacing the register card" },
|
|
1340
|
+
{ name: "onSubmit", type: "(RegisterRequestDto) => void", description: "Called on submit: { name?, email, password?, confirmPassword?, birthday?, gender?, phone? }" },
|
|
1341
|
+
{ name: "login", type: "LinkProps", description: "Link to login page" },
|
|
1342
|
+
{ name: "privacyPolicy", type: "LinkProps", description: "Privacy policy link" },
|
|
1343
|
+
{ name: "termsOfService", type: "LinkProps", description: "Terms of service link" },
|
|
1344
|
+
{ name: "socialLogins", type: "SocialLoginItem[]", description: "Social login providers: { provider, icon?, label?, onclick? }" },
|
|
1345
|
+
],
|
|
1346
|
+
},
|
|
1261
1347
|
{
|
|
1262
1348
|
slug: "company-profile",
|
|
1263
1349
|
name: "CompanyProfile",
|
package/dist/globals.css
CHANGED
|
@@ -1784,12 +1784,6 @@
|
|
|
1784
1784
|
border-color: color-mix(in oklab, var(--primary) 30%, transparent);
|
|
1785
1785
|
}
|
|
1786
1786
|
}
|
|
1787
|
-
.border-primary\/50 {
|
|
1788
|
-
border-color: var(--primary);
|
|
1789
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1790
|
-
border-color: color-mix(in oklab, var(--primary) 50%, transparent);
|
|
1791
|
-
}
|
|
1792
|
-
}
|
|
1793
1787
|
.border-sidebar-border {
|
|
1794
1788
|
border-color: var(--sidebar-border);
|
|
1795
1789
|
}
|
|
@@ -1799,18 +1793,6 @@
|
|
|
1799
1793
|
.border-white {
|
|
1800
1794
|
border-color: var(--color-white);
|
|
1801
1795
|
}
|
|
1802
|
-
.border-white\/10 {
|
|
1803
|
-
border-color: color-mix(in srgb, #fff 10%, transparent);
|
|
1804
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1805
|
-
border-color: color-mix(in oklab, var(--color-white) 10%, transparent);
|
|
1806
|
-
}
|
|
1807
|
-
}
|
|
1808
|
-
.border-white\/20 {
|
|
1809
|
-
border-color: color-mix(in srgb, #fff 20%, transparent);
|
|
1810
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
1811
|
-
border-color: color-mix(in oklab, var(--color-white) 20%, transparent);
|
|
1812
|
-
}
|
|
1813
|
-
}
|
|
1814
1796
|
.border-white\/30 {
|
|
1815
1797
|
border-color: color-mix(in srgb, #fff 30%, transparent);
|
|
1816
1798
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -2072,6 +2054,12 @@
|
|
|
2072
2054
|
background-color: color-mix(in oklab, var(--primary) 20%, transparent);
|
|
2073
2055
|
}
|
|
2074
2056
|
}
|
|
2057
|
+
.bg-primary\/40 {
|
|
2058
|
+
background-color: var(--primary);
|
|
2059
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2060
|
+
background-color: color-mix(in oklab, var(--primary) 40%, transparent);
|
|
2061
|
+
}
|
|
2062
|
+
}
|
|
2075
2063
|
.bg-red-500 {
|
|
2076
2064
|
background-color: var(--color-red-500);
|
|
2077
2065
|
}
|
|
@@ -2144,6 +2132,12 @@
|
|
|
2144
2132
|
background-color: color-mix(in oklab, var(--color-white) 50%, transparent);
|
|
2145
2133
|
}
|
|
2146
2134
|
}
|
|
2135
|
+
.bg-white\/80 {
|
|
2136
|
+
background-color: color-mix(in srgb, #fff 80%, transparent);
|
|
2137
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2138
|
+
background-color: color-mix(in oklab, var(--color-white) 80%, transparent);
|
|
2139
|
+
}
|
|
2140
|
+
}
|
|
2147
2141
|
.bg-yellow-500 {
|
|
2148
2142
|
background-color: var(--color-yellow-500);
|
|
2149
2143
|
}
|
|
@@ -2190,10 +2184,6 @@
|
|
|
2190
2184
|
}
|
|
2191
2185
|
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
|
2192
2186
|
}
|
|
2193
|
-
.from-primary {
|
|
2194
|
-
--tw-gradient-from: var(--primary);
|
|
2195
|
-
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
|
2196
|
-
}
|
|
2197
2187
|
.from-primary\/10 {
|
|
2198
2188
|
--tw-gradient-from: var(--primary);
|
|
2199
2189
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -2234,13 +2224,6 @@
|
|
|
2234
2224
|
--tw-gradient-to: var(--muted);
|
|
2235
2225
|
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
|
2236
2226
|
}
|
|
2237
|
-
.to-primary\/70 {
|
|
2238
|
-
--tw-gradient-to: var(--primary);
|
|
2239
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2240
|
-
--tw-gradient-to: color-mix(in oklab, var(--primary) 70%, transparent);
|
|
2241
|
-
}
|
|
2242
|
-
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
|
2243
|
-
}
|
|
2244
2227
|
.to-purple-600 {
|
|
2245
2228
|
--tw-gradient-to: var(--color-purple-600);
|
|
2246
2229
|
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
|
@@ -2786,24 +2769,6 @@
|
|
|
2786
2769
|
.text-white\! {
|
|
2787
2770
|
color: var(--color-white) !important;
|
|
2788
2771
|
}
|
|
2789
|
-
.text-white\/50 {
|
|
2790
|
-
color: color-mix(in srgb, #fff 50%, transparent);
|
|
2791
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2792
|
-
color: color-mix(in oklab, var(--color-white) 50%, transparent);
|
|
2793
|
-
}
|
|
2794
|
-
}
|
|
2795
|
-
.text-white\/60 {
|
|
2796
|
-
color: color-mix(in srgb, #fff 60%, transparent);
|
|
2797
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2798
|
-
color: color-mix(in oklab, var(--color-white) 60%, transparent);
|
|
2799
|
-
}
|
|
2800
|
-
}
|
|
2801
|
-
.text-white\/70 {
|
|
2802
|
-
color: color-mix(in srgb, #fff 70%, transparent);
|
|
2803
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
2804
|
-
color: color-mix(in oklab, var(--color-white) 70%, transparent);
|
|
2805
|
-
}
|
|
2806
|
-
}
|
|
2807
2772
|
.text-white\/80 {
|
|
2808
2773
|
color: color-mix(in srgb, #fff 80%, transparent);
|
|
2809
2774
|
@supports (color: color-mix(in lab, red, red)) {
|
|
@@ -3141,6 +3106,12 @@
|
|
|
3141
3106
|
--tw-scale-z: 105%;
|
|
3142
3107
|
scale: var(--tw-scale-x) var(--tw-scale-y);
|
|
3143
3108
|
}
|
|
3109
|
+
.group-hover\:scale-110:is(:where(.group):hover *) {
|
|
3110
|
+
--tw-scale-x: 110%;
|
|
3111
|
+
--tw-scale-y: 110%;
|
|
3112
|
+
--tw-scale-z: 110%;
|
|
3113
|
+
scale: var(--tw-scale-x) var(--tw-scale-y);
|
|
3114
|
+
}
|
|
3144
3115
|
.group-hover\:bg-black\/30:is(:where(.group):hover *) {
|
|
3145
3116
|
background-color: color-mix(in srgb, #000 30%, transparent);
|
|
3146
3117
|
}
|
|
@@ -3359,36 +3330,6 @@
|
|
|
3359
3330
|
content: var(--tw-content);
|
|
3360
3331
|
border-radius: calc(var(--radius) * 2.2);
|
|
3361
3332
|
}
|
|
3362
|
-
.before\:bg-linear-to-br::before {
|
|
3363
|
-
content: var(--tw-content);
|
|
3364
|
-
--tw-gradient-position: to bottom right;
|
|
3365
|
-
@supports (background-image: linear-gradient(in lab, red, red)) {
|
|
3366
|
-
--tw-gradient-position: to bottom right in oklab;
|
|
3367
|
-
}
|
|
3368
|
-
background-image: linear-gradient(var(--tw-gradient-stops));
|
|
3369
|
-
}
|
|
3370
|
-
.before\:from-primary\/40::before {
|
|
3371
|
-
content: var(--tw-content);
|
|
3372
|
-
--tw-gradient-from: var(--primary);
|
|
3373
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
3374
|
-
--tw-gradient-from: color-mix(in oklab, var(--primary) 40%, transparent);
|
|
3375
|
-
}
|
|
3376
|
-
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
|
3377
|
-
}
|
|
3378
|
-
.before\:via-primary\/10::before {
|
|
3379
|
-
content: var(--tw-content);
|
|
3380
|
-
--tw-gradient-via: var(--primary);
|
|
3381
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
3382
|
-
--tw-gradient-via: color-mix(in oklab, var(--primary) 10%, transparent);
|
|
3383
|
-
}
|
|
3384
|
-
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
|
|
3385
|
-
--tw-gradient-stops: var(--tw-gradient-via-stops);
|
|
3386
|
-
}
|
|
3387
|
-
.before\:to-transparent::before {
|
|
3388
|
-
content: var(--tw-content);
|
|
3389
|
-
--tw-gradient-to: transparent;
|
|
3390
|
-
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
|
3391
|
-
}
|
|
3392
3333
|
.after\:pointer-events-none::after {
|
|
3393
3334
|
content: var(--tw-content);
|
|
3394
3335
|
pointer-events: none;
|
|
@@ -3491,14 +3432,6 @@
|
|
|
3491
3432
|
border-color: color-mix(in oklab, var(--primary) 50%, transparent);
|
|
3492
3433
|
}
|
|
3493
3434
|
}
|
|
3494
|
-
.hover\:border-white\/20:hover {
|
|
3495
|
-
border-color: color-mix(in srgb, #fff 20%, transparent);
|
|
3496
|
-
}
|
|
3497
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
3498
|
-
.hover\:border-white\/20:hover {
|
|
3499
|
-
border-color: color-mix(in oklab, var(--color-white) 20%, transparent);
|
|
3500
|
-
}
|
|
3501
|
-
}
|
|
3502
3435
|
.hover\:bg-accent:hover {
|
|
3503
3436
|
background-color: var(--accent);
|
|
3504
3437
|
}
|
|
@@ -3631,14 +3564,6 @@
|
|
|
3631
3564
|
.hover\:bg-sidebar-accent:hover {
|
|
3632
3565
|
background-color: var(--sidebar-accent);
|
|
3633
3566
|
}
|
|
3634
|
-
.hover\:bg-white\/8:hover {
|
|
3635
|
-
background-color: color-mix(in srgb, #fff 8%, transparent);
|
|
3636
|
-
}
|
|
3637
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
3638
|
-
.hover\:bg-white\/8:hover {
|
|
3639
|
-
background-color: color-mix(in oklab, var(--color-white) 8%, transparent);
|
|
3640
|
-
}
|
|
3641
|
-
}
|
|
3642
3567
|
.hover\:bg-white\/15:hover {
|
|
3643
3568
|
background-color: color-mix(in srgb, #fff 15%, transparent);
|
|
3644
3569
|
}
|
|
@@ -3720,14 +3645,6 @@
|
|
|
3720
3645
|
.hover\:text-white:hover {
|
|
3721
3646
|
color: var(--color-white);
|
|
3722
3647
|
}
|
|
3723
|
-
.hover\:text-white\/80:hover {
|
|
3724
|
-
color: color-mix(in srgb, #fff 80%, transparent);
|
|
3725
|
-
}
|
|
3726
|
-
@supports (color: color-mix(in lab, red, red)) {
|
|
3727
|
-
.hover\:text-white\/80:hover {
|
|
3728
|
-
color: color-mix(in oklab, var(--color-white) 80%, transparent);
|
|
3729
|
-
}
|
|
3730
|
-
}
|
|
3731
3648
|
.hover\:underline:hover {
|
|
3732
3649
|
text-decoration-line: underline;
|
|
3733
3650
|
}
|