@actuate-media/cms-admin 0.56.0 → 0.56.2
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/CHANGELOG.md +12 -0
- package/dist/__tests__/components/posts-badges.test.js +3 -3
- package/dist/__tests__/components/posts-badges.test.js.map +1 -1
- package/dist/actuate-admin.css +1 -1
- package/dist/components/AICoauthorBubbleMenu.js +2 -2
- package/dist/components/AICoauthorBubbleMenu.js.map +1 -1
- package/dist/components/Breadcrumbs.js +2 -2
- package/dist/components/Breadcrumbs.js.map +1 -1
- package/dist/components/CoauthorResultPopover.d.ts.map +1 -1
- package/dist/components/CoauthorResultPopover.js +1 -1
- package/dist/components/CoauthorResultPopover.js.map +1 -1
- package/dist/components/CommandPalette.d.ts.map +1 -1
- package/dist/components/CommandPalette.js +11 -11
- package/dist/components/CommandPalette.js.map +1 -1
- package/dist/components/CommentSidePanel.js +11 -11
- package/dist/components/CommentSidePanel.js.map +1 -1
- package/dist/components/ContentOverviewChart.js +2 -2
- package/dist/components/ContentOverviewChart.js.map +1 -1
- package/dist/components/FocalPointPicker.js +1 -1
- package/dist/components/FocalPointPicker.js.map +1 -1
- package/dist/components/LivePreview.d.ts.map +1 -1
- package/dist/components/LivePreview.js +5 -5
- package/dist/components/LivePreview.js.map +1 -1
- package/dist/components/LogoPlaceholder.js +1 -1
- package/dist/components/LogoPlaceholder.js.map +1 -1
- package/dist/components/MentionableTextarea.js +3 -3
- package/dist/components/MentionableTextarea.js.map +1 -1
- package/dist/components/NotificationBell.js +1 -1
- package/dist/components/NotificationBell.js.map +1 -1
- package/dist/components/OfflineStatus.js +8 -8
- package/dist/components/OfflineStatus.js.map +1 -1
- package/dist/components/PresenceChips.d.ts.map +1 -1
- package/dist/components/PresenceChips.js +10 -6
- package/dist/components/PresenceChips.js.map +1 -1
- package/dist/components/SEOConfigPanel.d.ts.map +1 -1
- package/dist/components/SEOConfigPanel.js +10 -10
- package/dist/components/SEOConfigPanel.js.map +1 -1
- package/dist/components/SEOPanel.js +12 -12
- package/dist/components/SEOPanel.js.map +1 -1
- package/dist/components/SEOPerformance.d.ts.map +1 -1
- package/dist/components/SEOPerformance.js +3 -3
- package/dist/components/SEOPerformance.js.map +1 -1
- package/dist/components/TipTapEditor.js +6 -6
- package/dist/components/TipTapEditor.js.map +1 -1
- package/dist/components/pages/tag-badges.js +6 -6
- package/dist/components/pages/tag-badges.js.map +1 -1
- package/dist/components/posts/badges.d.ts +0 -4
- package/dist/components/posts/badges.d.ts.map +1 -1
- package/dist/components/posts/badges.js +28 -42
- package/dist/components/posts/badges.js.map +1 -1
- package/dist/components/ui/Badge.js +5 -5
- package/dist/components/ui/Badge.js.map +1 -1
- package/dist/components/ui/Toast.d.ts.map +1 -1
- package/dist/components/ui/Toast.js +4 -4
- package/dist/components/ui/Toast.js.map +1 -1
- package/dist/fields/ComponentBlockField.js +2 -2
- package/dist/fields/ComponentBlockField.js.map +1 -1
- package/dist/fields/FieldRenderer.js +1 -1
- package/dist/fields/FieldRenderer.js.map +1 -1
- package/dist/fields/PropInput.js +1 -1
- package/dist/fields/PropInput.js.map +1 -1
- package/dist/fields/RelationshipField.js +5 -5
- package/dist/fields/RelationshipField.js.map +1 -1
- package/dist/fields/ToggleField.js +1 -1
- package/dist/fields/ToggleField.js.map +1 -1
- package/dist/views/Dashboard.js +5 -5
- package/dist/views/Dashboard.js.map +1 -1
- package/dist/views/DocumentEdit.d.ts.map +1 -1
- package/dist/views/DocumentEdit.js +5 -5
- package/dist/views/DocumentEdit.js.map +1 -1
- package/dist/views/ForgotPassword.d.ts.map +1 -1
- package/dist/views/ForgotPassword.js +3 -2
- package/dist/views/ForgotPassword.js.map +1 -1
- package/dist/views/FormEditor.d.ts.map +1 -1
- package/dist/views/FormEditor.js +5 -5
- package/dist/views/FormEditor.js.map +1 -1
- package/dist/views/Login.d.ts.map +1 -1
- package/dist/views/Login.js +17 -17
- package/dist/views/Login.js.map +1 -1
- package/dist/views/PageEditor.d.ts.map +1 -1
- package/dist/views/PageEditor.js +2 -2
- package/dist/views/PageEditor.js.map +1 -1
- package/dist/views/Pages/PagesListView.js +6 -6
- package/dist/views/Pages/PagesListView.js.map +1 -1
- package/dist/views/Pages.d.ts.map +1 -1
- package/dist/views/Pages.js +16 -19
- package/dist/views/Pages.js.map +1 -1
- package/dist/views/ResetPassword.d.ts.map +1 -1
- package/dist/views/ResetPassword.js +3 -2
- package/dist/views/ResetPassword.js.map +1 -1
- package/dist/views/Settings.js +2 -2
- package/dist/views/Settings.js.map +1 -1
- package/dist/views/SetupWizard.d.ts.map +1 -1
- package/dist/views/SetupWizard.js +6 -5
- package/dist/views/SetupWizard.js.map +1 -1
- package/dist/views/page-builder/DesignScore.js +12 -12
- package/dist/views/page-builder/DesignScore.js.map +1 -1
- package/dist/views/page-builder/SEOPanel.js +9 -9
- package/dist/views/page-builder/SEOPanel.js.map +1 -1
- package/dist/views/page-editor/EditorCanvas.js +1 -1
- package/dist/views/page-editor/EditorCanvas.js.map +1 -1
- package/dist/views/page-editor/EditorTopBar.js +2 -2
- package/dist/views/page-editor/EditorTopBar.js.map +1 -1
- package/dist/views/page-editor/PagePreview.js +1 -1
- package/dist/views/page-editor/PagePreview.js.map +1 -1
- package/dist/views/page-editor/SectionInspector.js +1 -1
- package/dist/views/page-editor/SectionInspector.js.map +1 -1
- package/dist/views/page-editor/SitePreviewFrame.js +1 -1
- package/dist/views/page-editor/SitePreviewFrame.js.map +1 -1
- package/dist/views/page-editor/sections/ArticleBodySection.js +1 -1
- package/dist/views/page-editor/sections/ArticleBodySection.js.map +1 -1
- package/dist/views/page-editor/sections/AuthorBioSection.js +2 -2
- package/dist/views/page-editor/sections/AuthorBioSection.js.map +1 -1
- package/dist/views/page-editor/sections/ByTheNumbersSection.js +1 -1
- package/dist/views/page-editor/sections/ByTheNumbersSection.js.map +1 -1
- package/dist/views/page-editor/sections/CtaBannerSection.js +1 -1
- package/dist/views/page-editor/sections/CtaBannerSection.js.map +1 -1
- package/dist/views/page-editor/sections/EmbedSection.d.ts.map +1 -1
- package/dist/views/page-editor/sections/EmbedSection.js +1 -1
- package/dist/views/page-editor/sections/EmbedSection.js.map +1 -1
- package/dist/views/page-editor/sections/FeatureHighlightSection.d.ts.map +1 -1
- package/dist/views/page-editor/sections/FeatureHighlightSection.js +2 -2
- package/dist/views/page-editor/sections/FeatureHighlightSection.js.map +1 -1
- package/dist/views/page-editor/sections/GallerySection.d.ts.map +1 -1
- package/dist/views/page-editor/sections/GallerySection.js +1 -1
- package/dist/views/page-editor/sections/GallerySection.js.map +1 -1
- package/dist/views/page-editor/sections/HeroBannerSection.js +1 -1
- package/dist/views/page-editor/sections/HeroBannerSection.js.map +1 -1
- package/dist/views/page-editor/sections/MissionSection.d.ts.map +1 -1
- package/dist/views/page-editor/sections/MissionSection.js +1 -1
- package/dist/views/page-editor/sections/MissionSection.js.map +1 -1
- package/dist/views/page-editor/sections/PullQuoteSection.js +1 -1
- package/dist/views/page-editor/sections/PullQuoteSection.js.map +1 -1
- package/dist/views/page-editor/sections/RelatedPostsSection.js +1 -1
- package/dist/views/page-editor/sections/RelatedPostsSection.js.map +1 -1
- package/dist/views/page-editor/sections/SectionRenderer.js +1 -1
- package/dist/views/page-editor/sections/SectionRenderer.js.map +1 -1
- package/dist/views/page-editor/sections/parts.js +6 -6
- package/dist/views/page-editor/sections/parts.js.map +1 -1
- package/dist/views/post-editor/PostEditorCanvas.js +2 -2
- package/dist/views/post-editor/PostEditorCanvas.js.map +1 -1
- package/dist/views/post-editor/PostHeader.js +2 -2
- package/dist/views/post-editor/PostHeader.js.map +1 -1
- package/dist/views/post-editor/PostHeaderPanel.js +1 -1
- package/dist/views/post-editor/PostHeaderPanel.js.map +1 -1
- package/dist/views/post-editor/PostPreview.js +1 -1
- package/dist/views/post-editor/PostPreview.js.map +1 -1
- package/dist/views/profile/AccountSecurity.js +1 -1
- package/dist/views/profile/AccountSecurity.js.map +1 -1
- package/dist/views/settings/components.js +1 -1
- package/dist/views/settings/components.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/components/posts-badges.test.tsx +3 -3
- package/src/components/AICoauthorBubbleMenu.tsx +4 -4
- package/src/components/Breadcrumbs.tsx +5 -5
- package/src/components/CoauthorResultPopover.tsx +26 -23
- package/src/components/CommandPalette.tsx +41 -39
- package/src/components/CommentSidePanel.tsx +20 -20
- package/src/components/ContentOverviewChart.tsx +4 -4
- package/src/components/FocalPointPicker.tsx +2 -2
- package/src/components/LivePreview.tsx +20 -17
- package/src/components/LogoPlaceholder.tsx +1 -1
- package/src/components/MentionableTextarea.tsx +5 -5
- package/src/components/NotificationBell.tsx +10 -10
- package/src/components/OfflineStatus.tsx +8 -8
- package/src/components/PresenceChips.tsx +12 -8
- package/src/components/SEOConfigPanel.tsx +40 -38
- package/src/components/SEOPanel.tsx +15 -15
- package/src/components/SEOPerformance.tsx +25 -23
- package/src/components/TipTapEditor.tsx +7 -7
- package/src/components/pages/tag-badges.tsx +6 -6
- package/src/components/posts/badges.tsx +28 -46
- package/src/components/ui/Badge.tsx +5 -5
- package/src/components/ui/Toast.tsx +4 -5
- package/src/fields/ComponentBlockField.tsx +2 -2
- package/src/fields/FieldRenderer.tsx +1 -1
- package/src/fields/PropInput.tsx +1 -1
- package/src/fields/RelationshipField.tsx +5 -5
- package/src/fields/ToggleField.tsx +1 -1
- package/src/views/Dashboard.tsx +5 -5
- package/src/views/DocumentEdit.tsx +13 -11
- package/src/views/ForgotPassword.tsx +21 -18
- package/src/views/FormEditor.tsx +74 -69
- package/src/views/Login.tsx +45 -39
- package/src/views/PageEditor.tsx +26 -22
- package/src/views/Pages/PagesListView.tsx +6 -6
- package/src/views/Pages.tsx +64 -65
- package/src/views/ResetPassword.tsx +32 -29
- package/src/views/Settings.tsx +2 -2
- package/src/views/SetupWizard.tsx +42 -33
- package/src/views/page-builder/DesignScore.tsx +12 -12
- package/src/views/page-builder/SEOPanel.tsx +12 -12
- package/src/views/page-editor/EditorCanvas.tsx +1 -1
- package/src/views/page-editor/EditorTopBar.tsx +2 -2
- package/src/views/page-editor/PagePreview.tsx +1 -1
- package/src/views/page-editor/SectionInspector.tsx +1 -1
- package/src/views/page-editor/SitePreviewFrame.tsx +1 -1
- package/src/views/page-editor/sections/ArticleBodySection.tsx +5 -5
- package/src/views/page-editor/sections/AuthorBioSection.tsx +6 -6
- package/src/views/page-editor/sections/ByTheNumbersSection.tsx +5 -5
- package/src/views/page-editor/sections/CtaBannerSection.tsx +1 -1
- package/src/views/page-editor/sections/EmbedSection.tsx +6 -4
- package/src/views/page-editor/sections/FeatureHighlightSection.tsx +7 -5
- package/src/views/page-editor/sections/GallerySection.tsx +6 -4
- package/src/views/page-editor/sections/HeroBannerSection.tsx +2 -2
- package/src/views/page-editor/sections/MissionSection.tsx +4 -2
- package/src/views/page-editor/sections/PullQuoteSection.tsx +4 -4
- package/src/views/page-editor/sections/RelatedPostsSection.tsx +5 -5
- package/src/views/page-editor/sections/SectionRenderer.tsx +2 -2
- package/src/views/page-editor/sections/parts.tsx +6 -6
- package/src/views/post-editor/PostEditorCanvas.tsx +4 -4
- package/src/views/post-editor/PostHeader.tsx +5 -5
- package/src/views/post-editor/PostHeaderPanel.tsx +1 -1
- package/src/views/post-editor/PostPreview.tsx +1 -1
- package/src/views/profile/AccountSecurity.tsx +1 -1
- package/src/views/settings/components.tsx +1 -1
package/src/views/Login.tsx
CHANGED
|
@@ -65,22 +65,22 @@ const OAUTH_LABELS: Record<string, string> = {
|
|
|
65
65
|
|
|
66
66
|
const OAUTH_COLORS: Record<string, { border: string; bg: string; text: string; hover: string }> = {
|
|
67
67
|
google: {
|
|
68
|
-
border: 'border-
|
|
69
|
-
bg: 'bg-
|
|
70
|
-
text: 'text-
|
|
71
|
-
hover: 'hover:bg-
|
|
68
|
+
border: 'border-border',
|
|
69
|
+
bg: 'bg-card',
|
|
70
|
+
text: 'text-foreground',
|
|
71
|
+
hover: 'hover:bg-accent',
|
|
72
72
|
},
|
|
73
73
|
github: {
|
|
74
|
-
border: 'border-
|
|
75
|
-
bg: 'bg-
|
|
76
|
-
text: 'text-
|
|
77
|
-
hover: 'hover:bg-
|
|
74
|
+
border: 'border-border',
|
|
75
|
+
bg: 'bg-foreground',
|
|
76
|
+
text: 'text-background',
|
|
77
|
+
hover: 'hover:bg-foreground/90',
|
|
78
78
|
},
|
|
79
79
|
microsoft: {
|
|
80
|
-
border: 'border-
|
|
81
|
-
bg: 'bg-
|
|
82
|
-
text: 'text-
|
|
83
|
-
hover: 'hover:bg-
|
|
80
|
+
border: 'border-info',
|
|
81
|
+
bg: 'bg-card',
|
|
82
|
+
text: 'text-foreground',
|
|
83
|
+
hover: 'hover:bg-info/10',
|
|
84
84
|
},
|
|
85
85
|
}
|
|
86
86
|
|
|
@@ -377,7 +377,7 @@ export function Login({
|
|
|
377
377
|
Boolean(branding?.name) || hasInitials(adminBrand.initials) || hasInitials(publicInitials)
|
|
378
378
|
|
|
379
379
|
return (
|
|
380
|
-
<div className="flex min-h-screen items-center justify-center
|
|
380
|
+
<div className="bg-muted flex min-h-screen items-center justify-center px-4">
|
|
381
381
|
<div className="w-full max-w-md">
|
|
382
382
|
<div className="mb-8 text-center">
|
|
383
383
|
{showLogo &&
|
|
@@ -393,18 +393,18 @@ export function Login({
|
|
|
393
393
|
) : (
|
|
394
394
|
<ActuateBrandLogo className="mx-auto mb-4 h-14 w-auto" />
|
|
395
395
|
))}
|
|
396
|
-
<h1 className="text-2xl font-medium
|
|
397
|
-
<p className="mt-2
|
|
396
|
+
<h1 className="text-foreground text-2xl font-medium">{brandName}</h1>
|
|
397
|
+
<p className="text-muted-foreground mt-2">{brandTagline}</p>
|
|
398
398
|
</div>
|
|
399
399
|
|
|
400
400
|
{mfaPendingToken ? (
|
|
401
401
|
<form
|
|
402
402
|
onSubmit={handleVerifyTotp}
|
|
403
|
-
className="space-y-5 rounded-xl border
|
|
403
|
+
className="border-border bg-card space-y-5 rounded-xl border p-6 shadow-sm"
|
|
404
404
|
>
|
|
405
405
|
<div>
|
|
406
|
-
<h2 className="text-lg font-medium
|
|
407
|
-
<p className="mt-1 text-sm
|
|
406
|
+
<h2 className="text-foreground text-lg font-medium">Two-factor authentication</h2>
|
|
407
|
+
<p className="text-muted-foreground mt-1 text-sm">
|
|
408
408
|
{useBackupCode
|
|
409
409
|
? 'Enter one of your one-time backup codes.'
|
|
410
410
|
: 'Enter the 6-digit code from your authenticator app.'}
|
|
@@ -412,14 +412,17 @@ export function Login({
|
|
|
412
412
|
</div>
|
|
413
413
|
|
|
414
414
|
{totpError && (
|
|
415
|
-
<div className="flex items-start gap-3 rounded-lg border
|
|
416
|
-
<AlertTriangle className="mt-0.5 h-5 w-5 shrink-0
|
|
417
|
-
<p className="text-
|
|
415
|
+
<div className="border-destructive/30 bg-destructive/10 flex items-start gap-3 rounded-lg border p-3">
|
|
416
|
+
<AlertTriangle className="text-destructive mt-0.5 h-5 w-5 shrink-0" />
|
|
417
|
+
<p className="text-destructive text-sm">{totpError}</p>
|
|
418
418
|
</div>
|
|
419
419
|
)}
|
|
420
420
|
|
|
421
421
|
<div>
|
|
422
|
-
<label
|
|
422
|
+
<label
|
|
423
|
+
htmlFor="totp-code"
|
|
424
|
+
className="text-foreground mb-1.5 block text-sm font-medium"
|
|
425
|
+
>
|
|
423
426
|
{useBackupCode ? 'Backup code' : 'Authentication code'}
|
|
424
427
|
</label>
|
|
425
428
|
<input
|
|
@@ -436,7 +439,7 @@ export function Login({
|
|
|
436
439
|
)
|
|
437
440
|
}
|
|
438
441
|
placeholder={useBackupCode ? 'abcd1234' : '123456'}
|
|
439
|
-
className="w-full rounded-lg border
|
|
442
|
+
className="border-border bg-input-background text-foreground focus-visible:border-ring focus-visible:ring-ring/50 w-full rounded-lg border px-3 py-2.5 text-center font-mono text-lg tracking-[0.3em] focus-visible:ring-2 focus-visible:outline-none"
|
|
440
443
|
autoFocus
|
|
441
444
|
required
|
|
442
445
|
/>
|
|
@@ -445,7 +448,7 @@ export function Login({
|
|
|
445
448
|
<button
|
|
446
449
|
type="submit"
|
|
447
450
|
disabled={!totpCode.trim() || verifying}
|
|
448
|
-
className="flex w-full items-center justify-center gap-2 rounded-lg
|
|
451
|
+
className="bg-primary text-primary-foreground hover:bg-primary/90 flex w-full items-center justify-center gap-2 rounded-lg py-2.5 font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50"
|
|
449
452
|
>
|
|
450
453
|
{verifying ? (
|
|
451
454
|
<>
|
|
@@ -465,14 +468,14 @@ export function Login({
|
|
|
465
468
|
setTotpCode('')
|
|
466
469
|
setTotpError('')
|
|
467
470
|
}}
|
|
468
|
-
className="
|
|
471
|
+
className="text-primary hover:text-primary/80 font-medium"
|
|
469
472
|
>
|
|
470
473
|
{useBackupCode ? 'Use authenticator app instead' : 'Use a backup code'}
|
|
471
474
|
</button>
|
|
472
475
|
<button
|
|
473
476
|
type="button"
|
|
474
477
|
onClick={resetToPasswordStep}
|
|
475
|
-
className="
|
|
478
|
+
className="text-muted-foreground hover:text-foreground font-medium"
|
|
476
479
|
>
|
|
477
480
|
Back to sign in
|
|
478
481
|
</button>
|
|
@@ -481,19 +484,19 @@ export function Login({
|
|
|
481
484
|
) : (
|
|
482
485
|
<form
|
|
483
486
|
onSubmit={handleSubmit}
|
|
484
|
-
className="space-y-5 rounded-xl border
|
|
487
|
+
className="border-border bg-card space-y-5 rounded-xl border p-6 shadow-sm"
|
|
485
488
|
>
|
|
486
489
|
{error && (
|
|
487
|
-
<div className="flex items-start gap-3 rounded-lg border
|
|
488
|
-
<AlertTriangle className="mt-0.5 h-5 w-5 shrink-0
|
|
489
|
-
<p className="text-
|
|
490
|
+
<div className="border-destructive/30 bg-destructive/10 flex items-start gap-3 rounded-lg border p-3">
|
|
491
|
+
<AlertTriangle className="text-destructive mt-0.5 h-5 w-5 shrink-0" />
|
|
492
|
+
<p className="text-destructive text-sm">{error}</p>
|
|
490
493
|
</div>
|
|
491
494
|
)}
|
|
492
495
|
|
|
493
496
|
<div>
|
|
494
497
|
<label
|
|
495
498
|
htmlFor="login-email"
|
|
496
|
-
className="mb-1.5 block text-sm font-medium
|
|
499
|
+
className="text-foreground mb-1.5 block text-sm font-medium"
|
|
497
500
|
>
|
|
498
501
|
Email Address
|
|
499
502
|
</label>
|
|
@@ -503,7 +506,7 @@ export function Login({
|
|
|
503
506
|
value={email}
|
|
504
507
|
onChange={(e) => setEmail(e.target.value)}
|
|
505
508
|
placeholder="admin@example.com"
|
|
506
|
-
className="w-full rounded-lg border
|
|
509
|
+
className="border-border bg-input-background text-foreground focus-visible:border-ring focus-visible:ring-ring/50 w-full rounded-lg border px-3 py-2.5 text-sm focus-visible:ring-2 focus-visible:outline-none"
|
|
507
510
|
required
|
|
508
511
|
autoFocus
|
|
509
512
|
autoComplete="email"
|
|
@@ -512,14 +515,17 @@ export function Login({
|
|
|
512
515
|
|
|
513
516
|
<div>
|
|
514
517
|
<div className="mb-1.5 flex items-center justify-between">
|
|
515
|
-
<label
|
|
518
|
+
<label
|
|
519
|
+
htmlFor="login-password"
|
|
520
|
+
className="text-foreground block text-sm font-medium"
|
|
521
|
+
>
|
|
516
522
|
Password
|
|
517
523
|
</label>
|
|
518
524
|
{onNavigate && (
|
|
519
525
|
<button
|
|
520
526
|
type="button"
|
|
521
527
|
onClick={() => onNavigate('/forgot-password')}
|
|
522
|
-
className="text-
|
|
528
|
+
className="text-primary hover:text-primary/80 text-xs font-medium"
|
|
523
529
|
>
|
|
524
530
|
Forgot Password?
|
|
525
531
|
</button>
|
|
@@ -532,14 +538,14 @@ export function Login({
|
|
|
532
538
|
value={password}
|
|
533
539
|
onChange={(e) => setPassword(e.target.value)}
|
|
534
540
|
placeholder="Enter your password"
|
|
535
|
-
className="w-full rounded-lg border
|
|
541
|
+
className="border-border bg-input-background text-foreground focus-visible:border-ring focus-visible:ring-ring/50 w-full rounded-lg border px-3 py-2.5 pr-10 text-sm focus-visible:ring-2 focus-visible:outline-none"
|
|
536
542
|
required
|
|
537
543
|
autoComplete="current-password"
|
|
538
544
|
/>
|
|
539
545
|
<button
|
|
540
546
|
type="button"
|
|
541
547
|
onClick={() => setShowPassword(!showPassword)}
|
|
542
|
-
className="absolute top-1/2 right-3 -translate-y-1/2
|
|
548
|
+
className="text-muted-foreground hover:text-foreground absolute top-1/2 right-3 -translate-y-1/2"
|
|
543
549
|
tabIndex={-1}
|
|
544
550
|
>
|
|
545
551
|
{showPassword ? <EyeOff className="h-4 w-4" /> : <Eye className="h-4 w-4" />}
|
|
@@ -550,7 +556,7 @@ export function Login({
|
|
|
550
556
|
<button
|
|
551
557
|
type="submit"
|
|
552
558
|
disabled={!canSubmit}
|
|
553
|
-
className="flex w-full items-center justify-center gap-2 rounded-lg
|
|
559
|
+
className="bg-primary text-primary-foreground hover:bg-primary/90 flex w-full items-center justify-center gap-2 rounded-lg py-2.5 font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50"
|
|
554
560
|
>
|
|
555
561
|
{submitting ? (
|
|
556
562
|
<>
|
|
@@ -566,10 +572,10 @@ export function Login({
|
|
|
566
572
|
<>
|
|
567
573
|
<div className="relative">
|
|
568
574
|
<div className="absolute inset-0 flex items-center">
|
|
569
|
-
<div className="w-full border-t
|
|
575
|
+
<div className="border-border w-full border-t" />
|
|
570
576
|
</div>
|
|
571
577
|
<div className="relative flex justify-center text-sm">
|
|
572
|
-
<span className="bg-
|
|
578
|
+
<span className="bg-card text-muted-foreground px-3">Or continue with</span>
|
|
573
579
|
</div>
|
|
574
580
|
</div>
|
|
575
581
|
|
package/src/views/PageEditor.tsx
CHANGED
|
@@ -82,31 +82,31 @@ export function PageEditor({ id, onNavigate }: PageEditorProps) {
|
|
|
82
82
|
if (!isNew && loading) {
|
|
83
83
|
return (
|
|
84
84
|
<div className="flex h-full items-center justify-center">
|
|
85
|
-
<Loader2 className="h-6 w-6 animate-spin
|
|
85
|
+
<Loader2 className="text-primary h-6 w-6 animate-spin" />
|
|
86
86
|
</div>
|
|
87
87
|
)
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
return (
|
|
91
|
-
<div className="flex h-full flex-col
|
|
91
|
+
<div className="bg-card flex h-full flex-col">
|
|
92
92
|
{error && (
|
|
93
|
-
<div className="mx-4 mt-3 flex items-center gap-3 rounded-lg border
|
|
94
|
-
<AlertTriangle className="h-5 w-5 shrink-0
|
|
95
|
-
<span className="flex-1 text-sm
|
|
93
|
+
<div className="border-destructive/30 bg-destructive/10 mx-4 mt-3 flex items-center gap-3 rounded-lg border p-3">
|
|
94
|
+
<AlertTriangle className="text-destructive h-5 w-5 shrink-0" />
|
|
95
|
+
<span className="text-destructive flex-1 text-sm">{error}</span>
|
|
96
96
|
</div>
|
|
97
97
|
)}
|
|
98
98
|
|
|
99
|
-
<div className="border-
|
|
99
|
+
<div className="border-border border-b px-4 py-3">
|
|
100
100
|
<div className="flex items-center justify-between">
|
|
101
101
|
<button
|
|
102
102
|
onClick={() => onNavigate?.('/pages')}
|
|
103
|
-
className="inline-flex items-center gap-2 text-sm
|
|
103
|
+
className="text-muted-foreground hover:text-foreground inline-flex items-center gap-2 text-sm transition-colors"
|
|
104
104
|
>
|
|
105
105
|
<ArrowLeft className="h-4 w-4" />
|
|
106
106
|
Back to Pages
|
|
107
107
|
</button>
|
|
108
108
|
<div className="flex items-center gap-3">
|
|
109
|
-
<button className="flex items-center gap-2 rounded-lg border
|
|
109
|
+
<button className="border-border hover:bg-muted flex items-center gap-2 rounded-lg border px-3 py-1.5 text-sm transition-colors">
|
|
110
110
|
<Eye className="h-4 w-4" />
|
|
111
111
|
Preview
|
|
112
112
|
</button>
|
|
@@ -122,41 +122,45 @@ export function PageEditor({ id, onNavigate }: PageEditorProps) {
|
|
|
122
122
|
value={title}
|
|
123
123
|
onChange={(e) => setTitle(e.target.value)}
|
|
124
124
|
placeholder="Page title"
|
|
125
|
-
className="mb-4 w-full border-none px-0 text-2xl font-medium
|
|
125
|
+
className="placeholder:text-muted-foreground mb-4 w-full border-none px-0 text-2xl font-medium focus:ring-0 focus:outline-none sm:text-3xl"
|
|
126
126
|
/>
|
|
127
127
|
|
|
128
128
|
<div className="mb-4">
|
|
129
|
-
<label className="mb-1 block text-xs font-medium
|
|
129
|
+
<label className="text-muted-foreground mb-1 block text-xs font-medium">
|
|
130
|
+
URL Slug
|
|
131
|
+
</label>
|
|
130
132
|
<input
|
|
131
133
|
type="text"
|
|
132
134
|
value={slug}
|
|
133
135
|
onChange={(e) => setSlug(e.target.value)}
|
|
134
136
|
placeholder="url-slug"
|
|
135
|
-
className="w-full rounded-lg border
|
|
137
|
+
className="border-border focus-visible:ring-ring/50 w-full rounded-lg border px-3 py-1.5 text-sm focus:ring-2 focus:outline-none"
|
|
136
138
|
/>
|
|
137
139
|
</div>
|
|
138
140
|
|
|
139
|
-
<div className="rounded-lg border-2 border-dashed
|
|
140
|
-
<p className="mb-2
|
|
141
|
-
<p className="text-
|
|
142
|
-
|
|
141
|
+
<div className="border-border rounded-lg border-2 border-dashed p-8 text-center">
|
|
142
|
+
<p className="text-muted-foreground mb-2">No blocks added yet</p>
|
|
143
|
+
<p className="text-muted-foreground text-sm">
|
|
144
|
+
Click "Add Block" to start building your page
|
|
145
|
+
</p>
|
|
146
|
+
<button className="bg-primary text-primary-foreground hover:bg-primary/90 mt-4 rounded-lg px-4 py-2 text-sm transition-colors">
|
|
143
147
|
Add Block
|
|
144
148
|
</button>
|
|
145
149
|
</div>
|
|
146
150
|
</div>
|
|
147
151
|
</div>
|
|
148
152
|
|
|
149
|
-
<div className="w-[30%] overflow-y-auto border-l
|
|
153
|
+
<div className="border-border bg-muted w-[30%] overflow-y-auto border-l">
|
|
150
154
|
<div className="space-y-4 p-4">
|
|
151
|
-
<div className="
|
|
152
|
-
<h3 className="mb-3 text-sm font-medium
|
|
155
|
+
<div className="border-border bg-card rounded-lg border p-4">
|
|
156
|
+
<h3 className="text-foreground mb-3 text-sm font-medium">Publish</h3>
|
|
153
157
|
<div className="space-y-3">
|
|
154
158
|
<div>
|
|
155
|
-
<label className="mb-1 block text-xs font-medium
|
|
159
|
+
<label className="text-foreground mb-1 block text-xs font-medium">Status</label>
|
|
156
160
|
<select
|
|
157
161
|
value={status}
|
|
158
162
|
onChange={(e) => setStatus(e.target.value as 'draft' | 'published')}
|
|
159
|
-
className="w-full rounded-lg border
|
|
163
|
+
className="border-border focus-visible:ring-ring/50 w-full rounded-lg border px-3 py-1.5 text-sm focus:ring-2 focus:outline-none"
|
|
160
164
|
>
|
|
161
165
|
<option value="draft">Draft</option>
|
|
162
166
|
<option value="published">Published</option>
|
|
@@ -165,7 +169,7 @@ export function PageEditor({ id, onNavigate }: PageEditorProps) {
|
|
|
165
169
|
<button
|
|
166
170
|
onClick={savePage}
|
|
167
171
|
disabled={saving}
|
|
168
|
-
className="w-full rounded-lg
|
|
172
|
+
className="bg-primary text-primary-foreground hover:bg-primary/90 w-full rounded-lg py-2 text-sm font-medium transition-colors disabled:opacity-50"
|
|
169
173
|
>
|
|
170
174
|
{saving ? 'Saving...' : 'Save Page'}
|
|
171
175
|
</button>
|
|
@@ -173,7 +177,7 @@ export function PageEditor({ id, onNavigate }: PageEditorProps) {
|
|
|
173
177
|
<button
|
|
174
178
|
onClick={publishPage}
|
|
175
179
|
disabled={saving}
|
|
176
|
-
className="w-full rounded-lg
|
|
180
|
+
className="bg-success text-success-foreground hover:bg-success/90 w-full rounded-lg py-2 text-sm font-medium transition-colors disabled:opacity-50"
|
|
177
181
|
>
|
|
178
182
|
{saving ? 'Publishing...' : 'Publish'}
|
|
179
183
|
</button>
|
|
@@ -652,12 +652,12 @@ function GroupBlock({
|
|
|
652
652
|
|
|
653
653
|
function dotFor(color: string): string {
|
|
654
654
|
const map: Record<string, string> = {
|
|
655
|
-
purple: 'bg-
|
|
656
|
-
green: 'bg-
|
|
657
|
-
orange: 'bg-
|
|
658
|
-
red: 'bg-
|
|
659
|
-
blue: 'bg-
|
|
660
|
-
pink: 'bg-
|
|
655
|
+
purple: 'bg-brand',
|
|
656
|
+
green: 'bg-success',
|
|
657
|
+
orange: 'bg-warning',
|
|
658
|
+
red: 'bg-destructive',
|
|
659
|
+
blue: 'bg-info',
|
|
660
|
+
pink: 'bg-chart-4',
|
|
661
661
|
}
|
|
662
662
|
return map[color] ?? 'bg-muted-foreground'
|
|
663
663
|
}
|