@stacksjs/defaults 0.75.233 → 0.75.236
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/ai/skills/stacks-dashboard/SKILL.md +2 -2
- package/ai/skills/stacks-database/SKILL.md +1 -1
- package/ai/skills/stacks-deploy/SKILL.md +3 -2
- package/ai/skills/stacks-migrations/SKILL.md +2 -2
- package/ai/skills/stacks-native/CATALOG.md +8 -8
- package/ai/skills/stacks-realtime/SKILL.md +4 -2
- package/app/Actions/Monitoring/error-provider.ts +129 -12
- package/app/Models/Error.ts +21 -0
- package/ide/vscode/package.json +1 -1
- package/package.json +2 -2
- package/resources/components/Dashboard/Auth/AuthCard.stx +29 -0
- package/resources/components/Dashboard/Auth/ForgotPassword.stx +65 -79
- package/resources/components/Dashboard/Auth/Login.stx +73 -82
- package/resources/components/Dashboard/Auth/Register.stx +121 -135
- package/resources/components/Dashboard/Auth/ResetPassword.stx +88 -102
- package/resources/components/Dashboard/Buddy/BuddyAssistant.stx +11 -15
- package/resources/components/Dashboard/Commerce/CommerceCategoriesDashboard.stx +8 -20
- package/resources/components/Dashboard/Commerce/CommerceCouponsDashboard.stx +8 -20
- package/resources/components/Dashboard/Commerce/CommerceCustomersDashboard.stx +8 -20
- package/resources/components/Dashboard/Commerce/CommerceGiftCardsDashboard.stx +8 -20
- package/resources/components/Dashboard/Commerce/CommerceManufacturersDashboard.stx +13 -24
- package/resources/components/Dashboard/Commerce/CommerceOrdersDashboard.stx +8 -20
- package/resources/components/Dashboard/Commerce/CommerceOverviewDashboard.stx +17 -21
- package/resources/components/Dashboard/Commerce/CommercePaymentsDashboard.stx +7 -19
- package/resources/components/Dashboard/Commerce/CommercePosDashboard.stx +4 -16
- package/resources/components/Dashboard/Commerce/CommerceProductsDashboard.stx +8 -20
- package/resources/components/Dashboard/Commerce/CommerceReviewsDashboard.stx +7 -18
- package/resources/components/Dashboard/Commerce/CommerceTaxesDashboard.stx +13 -24
- package/resources/components/Dashboard/Commerce/CommerceUnitsDashboard.stx +13 -24
- package/resources/components/Dashboard/Commerce/CommerceVariantsDashboard.stx +7 -18
- package/resources/components/Dashboard/Commerce/Delivery/CouriersDashboard.stx +7 -13
- package/resources/components/Dashboard/Commerce/Delivery/DeliveryOverviewDashboard.stx +12 -16
- package/resources/components/Dashboard/Commerce/Delivery/DeliveryRoutesDashboard.stx +7 -13
- package/resources/components/Dashboard/Commerce/Delivery/DigitalDeliveriesDashboard.stx +7 -13
- package/resources/components/Dashboard/Commerce/Delivery/LicenseKeysDashboard.stx +7 -13
- package/resources/components/Dashboard/Commerce/Delivery/ShippingMethodsDashboard.stx +7 -13
- package/resources/components/Dashboard/Commerce/Delivery/ShippingRatesDashboard.stx +7 -13
- package/resources/components/Dashboard/Commerce/Delivery/ShippingZonesDashboard.stx +7 -13
- package/resources/components/Dashboard/Commerce/PrintDevicesDashboard.stx +8 -20
- package/resources/components/Dashboard/Commerce/PrintLogsDashboard.stx +7 -19
- package/resources/components/Dashboard/Commerce/ProductWaitlistDashboard.stx +12 -16
- package/resources/components/Dashboard/Commerce/RestaurantWaitlistDashboard.stx +12 -16
- package/resources/components/Dashboard/Deployments/DeploymentList.stx +17 -21
- package/resources/components/Dashboard/Marketing/AbandonedCartsDashboard.stx +6 -10
- package/resources/components/Dashboard/Marketing/CampaignsDashboard.stx +6 -10
- package/resources/components/Dashboard/Marketing/MarketingListsDashboard.stx +9 -13
- package/resources/components/Dashboard/Marketing/SocialPostsDashboard.stx +6 -10
- package/resources/components/Dashboard/Queue/QueueDashboard.stx +12 -16
- package/resources/components/Dashboard/Realtime/RealtimeDashboard.stx +6 -10
- package/resources/components/Dashboard/Releases/ReleaseDashboard.stx +6 -10
- package/resources/components/Dashboard/UI/MetricCards.stx +32 -0
- package/resources/components/Dashboard/UI/PageHeader.stx +25 -66
- package/resources/components/Dashboard/UI/Table.stx +79 -6
|
@@ -56,94 +56,85 @@ function handleSubmit(): void {
|
|
|
56
56
|
}
|
|
57
57
|
</script>
|
|
58
58
|
|
|
59
|
-
<
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
<AuthCard :title="title()" :subtitle="subtitle()">
|
|
60
|
+
|
|
61
|
+
<div class="p-6 bg-white dark:bg-neutral-900 border border-neutral-200/60 rounded-2xl dark:border-neutral-800 shadow-black/5 shadow-xl dark:shadow-black/20">
|
|
62
|
+
<div :if="error()" role="alert" class="mb-4 p-3 bg-red-50 dark:bg-red-900/20 border border-red-200 rounded-lg dark:border-red-800">
|
|
63
|
+
<div class="flex gap-2 items-center">
|
|
64
|
+
<span class="h-4 w-4 text-red-600 dark:text-red-400 i-hugeicons-alert-circle"></span>
|
|
65
|
+
<p class="text-red-600 text-sm dark:text-red-400">{{ error() }}</p>
|
|
64
66
|
</div>
|
|
65
|
-
<h1 class="font-semibold text-2xl text-neutral-900 dark:text-white">{{ title() }}</h1>
|
|
66
|
-
<p class="mt-2 text-neutral-500 text-sm dark:text-neutral-400">{{ subtitle() }}</p>
|
|
67
67
|
</div>
|
|
68
68
|
|
|
69
|
-
<
|
|
70
|
-
<div
|
|
71
|
-
<
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
<form @submit.prevent="handleSubmit">
|
|
70
|
+
<div class="mb-4">
|
|
71
|
+
<Input
|
|
72
|
+
type="email"
|
|
73
|
+
label="Email address"
|
|
74
|
+
placeholder="you@example.com"
|
|
75
|
+
v-model:value="email"
|
|
76
|
+
@blur="validateEmail()"
|
|
77
|
+
:error="fieldError('email')"
|
|
78
|
+
required
|
|
79
|
+
:disabled="isLoading()"
|
|
80
|
+
/>
|
|
75
81
|
</div>
|
|
76
82
|
|
|
77
|
-
<
|
|
78
|
-
<
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
<
|
|
92
|
-
<
|
|
93
|
-
type="
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
v-model:value="password"
|
|
97
|
-
@blur="validatePassword()"
|
|
98
|
-
:error="fieldError('password')"
|
|
99
|
-
required
|
|
83
|
+
<div class="mb-4">
|
|
84
|
+
<Input
|
|
85
|
+
type="password"
|
|
86
|
+
label="Password"
|
|
87
|
+
placeholder="Enter your password"
|
|
88
|
+
v-model:value="password"
|
|
89
|
+
@blur="validatePassword()"
|
|
90
|
+
:error="fieldError('password')"
|
|
91
|
+
required
|
|
92
|
+
:disabled="isLoading()"
|
|
93
|
+
/>
|
|
94
|
+
</div>
|
|
95
|
+
|
|
96
|
+
<div class="flex items-center justify-between mb-6">
|
|
97
|
+
<label :if="showRememberMe()" class="flex gap-2 items-center cursor-pointer">
|
|
98
|
+
<input
|
|
99
|
+
type="checkbox"
|
|
100
|
+
class="h-4 w-4 text-blue-500 bg-white dark:bg-neutral-800 border-neutral-300 rounded dark:border-neutral-600 focus:ring-blue-500/40 focus:ring-offset-0"
|
|
101
|
+
x-model="rememberMe"
|
|
100
102
|
:disabled="isLoading()"
|
|
101
103
|
/>
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
x-model="rememberMe"
|
|
110
|
-
:disabled="isLoading()"
|
|
111
|
-
/>
|
|
112
|
-
<span class="text-neutral-600 text-sm dark:text-neutral-400">Remember me</span>
|
|
113
|
-
</label>
|
|
114
|
-
|
|
115
|
-
<a :if="showForgotPassword()" href="/forgot-password" class="font-medium text-blue-600 text-sm dark:text-blue-400 hover:text-blue-500 dark:hover:text-blue-300">
|
|
116
|
-
Forgot password?
|
|
117
|
-
</a>
|
|
118
|
-
</div>
|
|
119
|
-
|
|
120
|
-
<Button
|
|
121
|
-
type="submit"
|
|
122
|
-
variant="primary"
|
|
123
|
-
size="lg"
|
|
124
|
-
fullWidth
|
|
125
|
-
:loading="isLoading()"
|
|
126
|
-
:disabled="isLoading() || !email() || !password()"
|
|
127
|
-
>
|
|
128
|
-
<span :if="isLoading()">Signing in...</span>
|
|
129
|
-
<span :if="!isLoading()">Sign in</span>
|
|
130
|
-
</Button>
|
|
131
|
-
</form>
|
|
132
|
-
|
|
133
|
-
{{--
|
|
134
|
-
Anything that belongs with the credentials, inside the same card:
|
|
135
|
-
the social sign-in buttons the /login page fills this with. It is a
|
|
136
|
-
slot because the provider list has to be computed server-side by
|
|
137
|
-
`configuredSocialProviders()`, and this component is client-only.
|
|
138
|
-
--}}
|
|
139
|
-
<slot name="social" />
|
|
140
|
-
</div>
|
|
104
|
+
<span class="text-neutral-600 text-sm dark:text-neutral-400">Remember me</span>
|
|
105
|
+
</label>
|
|
106
|
+
|
|
107
|
+
<a :if="showForgotPassword()" href="/forgot-password" class="font-medium text-blue-600 text-sm dark:text-blue-400 hover:text-blue-500 dark:hover:text-blue-300">
|
|
108
|
+
Forgot password?
|
|
109
|
+
</a>
|
|
110
|
+
</div>
|
|
141
111
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
112
|
+
<Button
|
|
113
|
+
type="submit"
|
|
114
|
+
variant="primary"
|
|
115
|
+
size="lg"
|
|
116
|
+
fullWidth
|
|
117
|
+
:loading="isLoading()"
|
|
118
|
+
:disabled="isLoading() || !email() || !password()"
|
|
119
|
+
>
|
|
120
|
+
<span :if="isLoading()">Signing in...</span>
|
|
121
|
+
<span :if="!isLoading()">Sign in</span>
|
|
122
|
+
</Button>
|
|
123
|
+
</form>
|
|
124
|
+
|
|
125
|
+
{{--
|
|
126
|
+
Anything that belongs with the credentials, inside the same card:
|
|
127
|
+
the social sign-in buttons the /login page fills this with. It is a
|
|
128
|
+
slot because the provider list has to be computed server-side by
|
|
129
|
+
`configuredSocialProviders()`, and this component is client-only.
|
|
130
|
+
--}}
|
|
131
|
+
<slot name="social" />
|
|
148
132
|
</div>
|
|
149
|
-
|
|
133
|
+
|
|
134
|
+
<p :if="showSignUp()" class="mt-6 text-center text-neutral-500 text-sm dark:text-neutral-400">
|
|
135
|
+
Don't have an account?
|
|
136
|
+
<a href="/register" class="font-medium text-blue-600 dark:text-blue-400 hover:text-blue-500 dark:hover:text-blue-300">
|
|
137
|
+
Sign up
|
|
138
|
+
</a>
|
|
139
|
+
</p>
|
|
140
|
+
</AuthCard>
|
|
@@ -98,148 +98,134 @@ function handleSubmit(): void {
|
|
|
98
98
|
})
|
|
99
99
|
}
|
|
100
100
|
</script>
|
|
101
|
-
<
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
</h1>
|
|
111
|
-
<p class="mt-2 text-neutral-500 text-sm dark:text-neutral-400">
|
|
112
|
-
{{ subtitle() }}
|
|
113
|
-
</p>
|
|
114
|
-
</div>
|
|
115
|
-
|
|
116
|
-
<!-- Register Form -->
|
|
117
|
-
<div class="p-6 bg-white dark:bg-neutral-900 border border-neutral-200/60 rounded-2xl dark:border-neutral-800 shadow-black/5 shadow-xl dark:shadow-black/20">
|
|
118
|
-
<!-- Error Message -->
|
|
119
|
-
<div :if="error()" class="mb-4 p-3 bg-red-50 dark:bg-red-900/20 border border-red-200 rounded-lg dark:border-red-800">
|
|
120
|
-
<div class="flex gap-2 items-center">
|
|
121
|
-
<div class="h-4 w-4 text-red-600 dark:text-red-400 i-hugeicons-alert-circle"></div>
|
|
122
|
-
<p class="text-red-600 text-sm dark:text-red-400">{{ error() }}</p>
|
|
123
|
-
</div>
|
|
101
|
+
<AuthCard :title="title()" :subtitle="subtitle()">
|
|
102
|
+
|
|
103
|
+
<!-- Register Form -->
|
|
104
|
+
<div class="p-6 bg-white dark:bg-neutral-900 border border-neutral-200/60 rounded-2xl dark:border-neutral-800 shadow-black/5 shadow-xl dark:shadow-black/20">
|
|
105
|
+
<!-- Error Message -->
|
|
106
|
+
<div :if="error()" class="mb-4 p-3 bg-red-50 dark:bg-red-900/20 border border-red-200 rounded-lg dark:border-red-800">
|
|
107
|
+
<div class="flex gap-2 items-center">
|
|
108
|
+
<div class="h-4 w-4 text-red-600 dark:text-red-400 i-hugeicons-alert-circle"></div>
|
|
109
|
+
<p class="text-red-600 text-sm dark:text-red-400">{{ error() }}</p>
|
|
124
110
|
</div>
|
|
111
|
+
</div>
|
|
125
112
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
113
|
+
<form @submit.prevent="handleSubmit">
|
|
114
|
+
<!-- Name Field -->
|
|
115
|
+
<div class="mb-4">
|
|
116
|
+
<Input
|
|
117
|
+
type="text"
|
|
118
|
+
label="Full name"
|
|
119
|
+
placeholder="John Doe"
|
|
120
|
+
v-model:value="name"
|
|
121
|
+
:error="fieldError('name')"
|
|
122
|
+
required
|
|
123
|
+
:disabled="isLoading()"
|
|
124
|
+
/>
|
|
125
|
+
</div>
|
|
139
126
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
127
|
+
<!-- Email Field -->
|
|
128
|
+
<div class="mb-4">
|
|
129
|
+
<Input
|
|
130
|
+
type="email"
|
|
131
|
+
label="Email address"
|
|
132
|
+
placeholder="you@example.com"
|
|
133
|
+
v-model:value="email"
|
|
134
|
+
@blur="validateEmail()"
|
|
135
|
+
:error="fieldError('email')"
|
|
136
|
+
required
|
|
137
|
+
:disabled="isLoading()"
|
|
138
|
+
/>
|
|
139
|
+
</div>
|
|
153
140
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
</div>
|
|
175
|
-
<p class="mt-1 text-xs" :class="passwordStrength() <= 1 ? 'text-red-500' : passwordStrength() === 2 ? 'text-orange-500' : passwordStrength() === 3 ? 'text-yellow-600 dark:text-yellow-400' : 'text-green-500'">
|
|
176
|
-
{{ passwordStrengthLabel() }}
|
|
177
|
-
</p>
|
|
141
|
+
<!-- Password Field -->
|
|
142
|
+
<div class="mb-4">
|
|
143
|
+
<Input
|
|
144
|
+
type="password"
|
|
145
|
+
label="Password"
|
|
146
|
+
placeholder="At least 8 characters"
|
|
147
|
+
v-model:value="password"
|
|
148
|
+
@input="validatePassword()"
|
|
149
|
+
@blur="validatePassword()"
|
|
150
|
+
:error="fieldError('password')"
|
|
151
|
+
required
|
|
152
|
+
:disabled="isLoading()"
|
|
153
|
+
/>
|
|
154
|
+
<!-- Password Strength Indicator -->
|
|
155
|
+
<div :if="password().length > 0" class="mt-2">
|
|
156
|
+
<div class="flex gap-1">
|
|
157
|
+
<div class="flex-1 h-1 rounded-full" :class="passwordStrength() >= 1 ? (passwordStrength() <= 1 ? 'bg-red-500' : passwordStrength() === 2 ? 'bg-orange-500' : passwordStrength() === 3 ? 'bg-yellow-500' : 'bg-green-500') : 'bg-neutral-200 dark:bg-neutral-700'"></div>
|
|
158
|
+
<div class="flex-1 h-1 rounded-full" :class="passwordStrength() >= 2 ? (passwordStrength() === 2 ? 'bg-orange-500' : passwordStrength() === 3 ? 'bg-yellow-500' : 'bg-green-500') : 'bg-neutral-200 dark:bg-neutral-700'"></div>
|
|
159
|
+
<div class="flex-1 h-1 rounded-full" :class="passwordStrength() >= 3 ? (passwordStrength() === 3 ? 'bg-yellow-500' : 'bg-green-500') : 'bg-neutral-200 dark:bg-neutral-700'"></div>
|
|
160
|
+
<div class="flex-1 h-1 rounded-full" :class="passwordStrength() >= 4 ? 'bg-green-500' : 'bg-neutral-200 dark:bg-neutral-700'"></div>
|
|
178
161
|
</div>
|
|
179
|
-
|
|
162
|
+
<p class="mt-1 text-xs" :class="passwordStrength() <= 1 ? 'text-red-500' : passwordStrength() === 2 ? 'text-orange-500' : passwordStrength() === 3 ? 'text-yellow-600 dark:text-yellow-400' : 'text-green-500'">
|
|
163
|
+
{{ passwordStrengthLabel() }}
|
|
164
|
+
</p>
|
|
165
|
+
</div>
|
|
166
|
+
</div>
|
|
167
|
+
|
|
168
|
+
<!-- Confirm Password Field -->
|
|
169
|
+
<div class="mb-4">
|
|
170
|
+
<Input
|
|
171
|
+
type="password"
|
|
172
|
+
label="Confirm password"
|
|
173
|
+
placeholder="Confirm your password"
|
|
174
|
+
v-model:value="passwordConfirmation"
|
|
175
|
+
@input="validateConfirmation()"
|
|
176
|
+
:error="fieldError('passwordConfirmation')"
|
|
177
|
+
required
|
|
178
|
+
:disabled="isLoading()"
|
|
179
|
+
/>
|
|
180
|
+
</div>
|
|
180
181
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
@input="validateConfirmation()"
|
|
189
|
-
:error="fieldError('passwordConfirmation')"
|
|
190
|
-
required
|
|
182
|
+
<!-- Terms Checkbox -->
|
|
183
|
+
<div class="mb-6">
|
|
184
|
+
<label class="flex gap-2 items-start cursor-pointer">
|
|
185
|
+
<input
|
|
186
|
+
type="checkbox"
|
|
187
|
+
class="mt-0.5 h-4 w-4 text-blue-500 bg-white dark:bg-neutral-800 border-neutral-300 rounded dark:border-neutral-600 focus:ring-blue-500/40 focus:ring-offset-0"
|
|
188
|
+
x-model="agreeToTerms"
|
|
191
189
|
:disabled="isLoading()"
|
|
192
190
|
/>
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
:disabled="isLoading()"
|
|
203
|
-
/>
|
|
204
|
-
<span class="text-neutral-600 text-sm dark:text-neutral-400">
|
|
205
|
-
I agree to the
|
|
206
|
-
<a href="/terms" class="text-blue-600 dark:text-blue-400 hover:text-blue-500">Terms of Service</a>
|
|
207
|
-
and
|
|
208
|
-
<a href="/privacy" class="text-blue-600 dark:text-blue-400 hover:text-blue-500">Privacy Policy</a>
|
|
209
|
-
</span>
|
|
210
|
-
</label>
|
|
211
|
-
<p :if="fieldError('terms')" class="mt-1 text-red-600 text-sm dark:text-red-400">{{ fieldError('terms') }}</p>
|
|
212
|
-
</div>
|
|
191
|
+
<span class="text-neutral-600 text-sm dark:text-neutral-400">
|
|
192
|
+
I agree to the
|
|
193
|
+
<a href="/terms" class="text-blue-600 dark:text-blue-400 hover:text-blue-500">Terms of Service</a>
|
|
194
|
+
and
|
|
195
|
+
<a href="/privacy" class="text-blue-600 dark:text-blue-400 hover:text-blue-500">Privacy Policy</a>
|
|
196
|
+
</span>
|
|
197
|
+
</label>
|
|
198
|
+
<p :if="fieldError('terms')" class="mt-1 text-red-600 text-sm dark:text-red-400">{{ fieldError('terms') }}</p>
|
|
199
|
+
</div>
|
|
213
200
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
</div>
|
|
236
|
-
|
|
237
|
-
<!-- Login Link -->
|
|
238
|
-
<p :if="showLogin()" class="mt-6 text-center text-neutral-500 text-sm dark:text-neutral-400">
|
|
239
|
-
Already have an account?
|
|
240
|
-
<a href="/login" class="font-medium text-blue-600 dark:text-blue-400 hover:text-blue-500 dark:hover:text-blue-300">
|
|
241
|
-
Sign in
|
|
242
|
-
</a>
|
|
243
|
-
</p>
|
|
201
|
+
<!-- Submit Button -->
|
|
202
|
+
<Button
|
|
203
|
+
type="submit"
|
|
204
|
+
variant="primary"
|
|
205
|
+
size="lg"
|
|
206
|
+
fullWidth
|
|
207
|
+
:loading="isLoading()"
|
|
208
|
+
:disabled="isLoading()"
|
|
209
|
+
>
|
|
210
|
+
<span :if="isLoading()">Creating account...</span>
|
|
211
|
+
<span :if="!isLoading()">Create account</span>
|
|
212
|
+
</Button>
|
|
213
|
+
</form>
|
|
214
|
+
|
|
215
|
+
{{--
|
|
216
|
+
Anything that belongs with the credentials, inside the same card:
|
|
217
|
+
the social sign-in buttons the /register page fills this with. It is
|
|
218
|
+
a slot because the provider list has to be computed server-side by
|
|
219
|
+
`configuredSocialProviders()`, and this component is client-only.
|
|
220
|
+
--}}
|
|
221
|
+
<slot name="social" />
|
|
244
222
|
</div>
|
|
245
|
-
|
|
223
|
+
|
|
224
|
+
<!-- Login Link -->
|
|
225
|
+
<p :if="showLogin()" class="mt-6 text-center text-neutral-500 text-sm dark:text-neutral-400">
|
|
226
|
+
Already have an account?
|
|
227
|
+
<a href="/login" class="font-medium text-blue-600 dark:text-blue-400 hover:text-blue-500 dark:hover:text-blue-300">
|
|
228
|
+
Sign in
|
|
229
|
+
</a>
|
|
230
|
+
</p>
|
|
231
|
+
</AuthCard>
|