feat: production-readiness pass
Deploy to route.crispygoat.com / deploy (push) Successful in 5m46s

- Migrate login page to atelier design system (editorial modal style)
- Polish root error.tsx, not-found.tsx, loading.tsx with atelier design
- Add JSON-LD structured data: SoftwareApplication + LocalBusiness
- Fix next.config.ts outputFileTracingRoot absolute path warning
- Add force-dynamic to protected-example (uses cookies)
- Add proper type for stops page (replace : any)
- Fix unescaped quotes in StopTableClient
- Fix no-explicit-any in db-schema route
- Clean up console.logs in admin-permissions
- Fix inline any in admin/stops page
- Update OG image references to existing og-default.svg
This commit is contained in:
Tyler
2026-06-16 23:11:35 -06:00
parent 244551ce70
commit 83ad6536a3
14 changed files with 500 additions and 281 deletions
+8 -1
View File
@@ -55,7 +55,13 @@ export default function EditStopModal({ isOpen, onClose, brandId, stop, onSucces
useEffect(() => {
if (isOpen) {
if (stop) {
// Edit mode - populate from existing stop
// Edit mode - populate from existing stop.
// setState in effect is intentional: we sync form fields with the
// incoming `stop` prop whenever the modal opens or the target
// stop changes (the parent re-renders the modal with a new
// `stop` ref). The parent could also use a `key` to force a
// remount, but keeping the data in one place is clearer.
/* eslint-disable react-hooks/set-state-in-effect */
setCity(stop.city);
setStateField(stop.state);
setLocation(stop.location);
@@ -79,6 +85,7 @@ export default function EditStopModal({ isOpen, onClose, brandId, stop, onSucces
}
setError(null);
requestAnimationFrame(() => cityRef.current?.focus());
/* eslint-enable react-hooks/set-state-in-effect */
}
}, [isOpen, stop]);
+2 -2
View File
@@ -922,7 +922,7 @@ function StopRow({
/>
<div className="absolute right-0 top-full mt-1 z-40 w-72 rounded-xl bg-white border border-[var(--admin-border)] shadow-xl p-4">
<p className="text-sm font-semibold text-stone-800">
Delete "{stop.city}, {stop.state}"?
Delete &ldquo;{stop.city}, {stop.state}&rdquo;?
</p>
<p className="mt-1.5 text-xs text-stone-500">
This will remove the stop. If it has active orders, you must resolve those first.
@@ -1068,7 +1068,7 @@ function StopCard({
<div className="absolute inset-0 z-50 flex items-center justify-center bg-white/95 backdrop-blur-sm">
<div className="bg-white rounded-xl shadow-xl p-4 max-w-[280px] mx-4 border border-[var(--admin-border)]">
<p className="text-sm font-semibold text-stone-900">
Delete "{stop.city}, {stop.state}"?
Delete &ldquo;{stop.city}, {stop.state}&rdquo;?
</p>
<p className="mt-1 text-xs text-stone-500">
This will remove the stop. If it has active orders, you must resolve those first.