Unified settings modal + dashboard shell redesign #69

Merged
uz1mani merged 107 commits from staging into main 2026-03-26 09:15:33 +00:00

107 Commits

Author SHA1 Message Date
Usman Baig
f6e43976d8 feat: whole modal fades in/out together — glass + content as one unit 2026-03-26 00:27:26 +01:00
Usman Baig
ae54e0f10a fix: glass panel fades out on close, snaps in on open — no blur flash 2026-03-26 00:23:47 +01:00
Usman Baig
14695a52dd feat: dropdown-style animation on content — glass stays during exit via onExitComplete 2026-03-26 00:17:58 +01:00
Usman Baig
dc867e84f4 fix: glass instant, content fades in — backdrop and blur separate from animation 2026-03-26 00:10:40 +01:00
Usman Baig
3e603c77a9 feat: fade + scale animation on outer wrapper — glass panel untouched 2026-03-26 00:04:50 +01:00
Usman Baig
2be0841a54 fix: hide all modal content when closed — empty glass box keeps GPU blur warm 2026-03-26 00:01:22 +01:00
Usman Baig
b1254bcad0 fix: instant open/close — no animation prevents glass seep on close 2026-03-25 23:57:26 +01:00
Usman Baig
bd8fae626c fix: use visibility instead of opacity — zero intermediate frames, no blur flash 2026-03-25 23:53:15 +01:00
Usman Baig
67334f1fd6 fix: always-mounted modal — GPU keeps backdrop-filter composited, no blur delay 2026-03-25 23:48:57 +01:00
Usman Baig
b18199aa48 fix: remove backdrop-blur from overlay — single blur layer on modal only 2026-03-25 23:40:36 +01:00
Usman Baig
d97eb77569 fix: smooth close animation — opacity fade on exit only, instant on open 2026-03-25 23:35:18 +01:00
Usman Baig
df286ab0e4 fix: restore glass + remove opacity animation to prevent backdrop-filter flash 2026-03-25 23:29:15 +01:00
Usman Baig
941dcd73ce fix: solid modal background — backdrop-filter causes flash on animated elements 2026-03-25 23:22:51 +01:00
Usman Baig
603e910d40 fix: instant backdrop render prevents chart flash through glass modal 2026-03-25 23:19:27 +01:00
Usman Baig
d13372c864 feat(settings): glassmorphism modal matching ciphera-website header dropdowns 2026-03-25 23:15:27 +01:00
Usman Baig
09181affbb fix: danger zone red background on pending save bar, normal text color 2026-03-25 23:11:51 +01:00
Usman Baig
477a3b4568 fix: don't render ScriptSetupBlock until state initialized from site data 2026-03-25 23:03:53 +01:00
Usman Baig
4af5daa298 fix: wait for integration status to load before rendering cards — prevents flash 2026-03-25 23:01:58 +01:00
Usman Baig
c299b10d19 fix: use LinkBreak icon instead of Trash for disconnect button 2026-03-25 23:00:18 +01:00
Usman Baig
98ba751c2c fix: remove duplicate detail text from integration card titles 2026-03-25 22:58:44 +01:00
Usman Baig
8fb2f603bd debug: log site.script_features on init 2026-03-25 22:57:10 +01:00
Usman Baig
8d894ff92a fix: real BunnyCDN SVG logo + remove duplicate Connected status from grids 2026-03-25 22:55:55 +01:00
Usman Baig
1121a72d63 debug: log script_features at save time 2026-03-25 22:54:01 +01:00
Usman Baig
d819b4bd17 fix: remove card wrapping from bare inputs + fix privacy false-dirty on load 2026-03-25 22:49:25 +01:00
Usman Baig
095b68d769 fix: site name + domain side by side in general tab 2026-03-25 22:46:35 +01:00
Usman Baig
1da71aa1a2 fix(settings): wrap all settings items in card blocks for visual consistency 2026-03-25 22:44:23 +01:00
Usman Baig
e7b8943097 fix(settings): normalize all Workspace tabs to design standards 2026-03-25 22:24:11 +01:00
Usman Baig
9893b283cf fix(settings): normalize Account tabs to design standards 2026-03-25 22:24:02 +01:00
Usman Baig
a3b746deeb fix(settings): normalize Reports + Integrations tabs to design standards 2026-03-25 22:22:21 +01:00
Usman Baig
4d9c3aeabd fix(settings): normalize Visibility, Privacy, BotSpam tabs to design standards 2026-03-25 22:21:41 +01:00
Usman Baig
1cbc8064e2 fix(settings): normalize SiteGeneralTab + SiteGoalsTab to design standards 2026-03-25 22:20:42 +01:00
Usman Baig
db12ad04cf feat(settings): create shared DangerZone component 2026-03-25 22:19:37 +01:00
Usman Baig
1c916bb598 fix: deleteAccount requires password — add password input to delete flow 2026-03-25 22:05:01 +01:00
Usman Baig
712169187b refactor(settings): native profile form replacing SharedProfileSettings — consistent save bar 2026-03-25 22:02:19 +01:00
Usman Baig
cbf2125f0a fix: batch PageSpeed frequency and notification toggles into save flow 2026-03-25 21:59:36 +01:00
Usman Baig
f794696e90 fix: script features save with Save Changes instead of instantly 2026-03-25 21:55:14 +01:00
Usman Baig
6c0061733b fix: neutral save bar background, red text only when pending navigation 2026-03-25 21:39:55 +01:00
Usman Baig
c53152fc68 fix: reset save bar visibility and handler on discard 2026-03-25 21:37:31 +01:00
Usman Baig
3f884fca76 feat(settings): wire WorkspaceGeneralTab into dirty tracking + modal save bar 2026-03-25 21:26:48 +01:00
Usman Baig
5d21a81fad refactor(settings): move save bar to modal level — always flush with modal bottom 2026-03-25 21:24:06 +01:00
Usman Baig
549ac273a1 refactor(settings): move save bar to modal level, remove from tabs 2026-03-25 21:23:42 +01:00
Usman Baig
570dda7bd2 fix: remove -mb-6 from sticky bar — prevents jump at scroll bottom 2026-03-25 21:12:45 +01:00
Usman Baig
8ec9edb126 fix: rose warning bar + proper Discard button sizing 2026-03-25 21:09:37 +01:00
Usman Baig
43005fb9ee fix: red warning bar instead of amber when navigating with unsaved changes 2026-03-25 21:05:52 +01:00
Usman Baig
1c21bf5ff6 fix: amber warning style on sticky bar when navigating with unsaved changes 2026-03-25 21:02:00 +01:00
Usman Baig
81fafcf711 fix: discard button in sticky save bar instead of browser confirm 2026-03-25 20:51:39 +01:00
Usman Baig
7181d68d85 fix: replace amber unsaved changes bar with simple confirm() dialog 2026-03-25 20:42:02 +01:00
Usman Baig
0de8f927a4 chore: remove debug console.logs from privacy tab 2026-03-25 20:37:32 +01:00
Usman Baig
eb3c3b2738 debug: add console.logs to privacy tab dirty tracking 2026-03-25 20:33:46 +01:00
Usman Baig
93401cc1a1 fix: dirty tracking — prevent SWR revalidation from resetting form state 2026-03-25 20:27:47 +01:00
Usman Baig
9dceca765c feat(settings): sticky save bar appears only when dirty, replaces static button 2026-03-25 20:18:26 +01:00
Usman Baig
9a3fab3535 feat(settings): unsaved changes guard with inline confirmation bar 2026-03-25 20:09:11 +01:00
Usman Baig
1ad68943c8 fix: reset tabs to default when switching settings context 2026-03-25 18:23:58 +01:00
Usman Baig
688d268fbf fix: proper Google/Bunny logos and BunnyCDN status grid in unified integrations 2026-03-25 18:21:50 +01:00
Usman Baig
0f5a3388a0 fix: use correct PageSpeedConfig field name (frequency, not check_frequency) 2026-03-25 18:16:05 +01:00
Usman Baig
1fef7b175c feat(settings): add filtering and pagination to unified audit tab 2026-03-25 18:11:01 +01:00
Usman Baig
0cb13e08fd refactor(settings): wire all settings entry points to unified modal 2026-03-25 18:10:42 +01:00
Usman Baig
8bef4b7c9f feat(settings): add member removal and pending invitations to unified members tab 2026-03-25 18:08:22 +01:00
Usman Baig
b64c4c036f feat(settings): add working delete org to unified workspace general tab 2026-03-25 18:07:21 +01:00
Usman Baig
851c607b7a feat(settings): add invoice list to unified billing tab 2026-03-25 18:07:16 +01:00
Usman Baig
b164160d6a feat(settings): add bunny setup flow and GSC details to unified integrations tab 2026-03-25 18:04:07 +01:00
Usman Baig
ce992e331f fix(settings): show delete account in unified profile tab 2026-03-25 18:02:47 +01:00
Usman Baig
7dc6e0daf5 fix(settings): add remove password button to unified visibility tab 2026-03-25 18:02:39 +01:00
Usman Baig
f844751142 feat(settings): add report/alert create & edit modals to unified tab 2026-03-25 17:52:56 +01:00
Usman Baig
b3ccb58431 feat(settings): add session review to unified bot & spam tab 2026-03-25 17:48:39 +01:00
Usman Baig
d0d7a97102 feat(settings): add retention, excluded paths, pagespeed to unified privacy tab 2026-03-25 17:46:06 +01:00
Usman Baig
4e6837a9ee feat(settings): add framework picker and verification to unified general tab 2026-03-25 17:42:34 +01:00
Usman Baig
45a8adff0f feat(settings): add danger zone to unified site general tab 2026-03-25 17:38:47 +01:00
Usman Baig
294629edfe fix: downsize all page h1 headers — top bar now has primary title 2026-03-25 17:17:12 +01:00
Usman Baig
48b404eb37 fix: remove duplicate h1 from uptime page — title now in top bar 2026-03-25 17:11:48 +01:00
Usman Baig
b78f5d4b96 fix: add parens around nullish coalescing mixed with logical OR 2026-03-25 17:07:55 +01:00
Usman Baig
1aeb9cf275 feat: page title in top bar next to collapse toggle 2026-03-25 17:06:21 +01:00
Usman Baig
24858030ba fix: align AppLauncher with collapse toggle — pt-1.5 on both sides 2026-03-25 16:47:42 +01:00
Usman Baig
e39c10d50f fix: reduce top bar padding — pt-1.5 instead of pt-3 2026-03-25 16:44:42 +01:00
Usman Baig
953d828cd9 fix: align collapse toggle with sidebar AppLauncher row (Dokploy-style) 2026-03-25 16:39:53 +01:00
Usman Baig
540c0b51ca fix: remove duplicate realtime indicator from under chart 2026-03-24 23:56:30 +01:00
Usman Baig
9aacd63d1d fix: collapse toggle back in glass top bar, removed from sidebar 2026-03-24 23:53:44 +01:00
Usman Baig
132afa749c fix: collapse toggle as first sidebar item, realtime stays in glass bar
Collapse icon at top of sidebar (aligned with all icons). Glass top
bar now only shows realtime indicator on the right.
2026-03-24 23:44:49 +01:00
Usman Baig
4e5dd6e3f3 fix: collapse icon uses negative margin to align with sidebar icons 2026-03-24 23:40:16 +01:00
Usman Baig
4702bb91b9 fix: top bar spans full width — collapse icon aligns above sidebar 2026-03-24 23:38:13 +01:00
Usman Baig
5eabc52133 fix: sidebar collapse icon bigger (18px) and brighter (neutral-400) 2026-03-24 23:29:37 +01:00
Usman Baig
de10fb5daf fix: use max-w-7xl (1280px) instead of full-width — better readability 2026-03-24 23:21:57 +01:00
Usman Baig
d6627413b8 feat: full-width content — remove max-w-6xl from all site pages and skeletons 2026-03-24 23:16:36 +01:00
Usman Baig
bb55782dba fix: restore scrolling — overflow-clip was blocking overflow-y-auto 2026-03-24 23:06:44 +01:00
Usman Baig
0f462314e2 fix: move collapse toggle + realtime to glass area above content panel
GlassTopBar in the margin strip — SidebarSimple icon (phosphor) on
left, "Live · Xs ago" on right. ContentHeader reverted to mobile-only.
2026-03-24 23:02:52 +01:00
Usman Baig
102551b1ce feat: content header with collapse toggle + realtime indicator
- New SidebarProvider context for shared collapse state
- ContentHeader visible on desktop: collapse icon left, "Live" right
- Collapse button removed from sidebar bottom (moved to header)
- Keyboard shortcut [ handled by context, not sidebar
- Realtime indicator polls every 5s, ticks every 1s for freshness
2026-03-24 22:57:41 +01:00
Usman Baig
b74742e15e fix: thin subtle scrollbar — 6px, white/8% thumb, transparent track 2026-03-24 22:32:40 +01:00
Usman Baig
f3d72c9841 fix: move glassmorphism to shell level, sidebar becomes transparent
Shell now has the glass treatment so sidebar and surrounding area
are one seamless surface. No more visible line between sidebar
and content panel. Desktop sidebar is transparent over the shell.
Mobile sidebar keeps its own glass since it overlays independently.
2026-03-24 22:28:18 +01:00
Usman Baig
505454b7d6 fix: remove gradient behind sidebar 2026-03-24 22:22:44 +01:00
Usman Baig
14e0c9b4dc feat: subtle gradient behind sidebar for glass depth + fix scrollbar clip
- Shell bg changed to neutral-950 (darker, better contrast)
- Warm-to-cool gradient behind sidebar area (orange top, blue bottom)
- Gives the glassmorphic sidebar something to diffuse through
- overflow-clip + isolate on content panel for scrollbar corner clipping
2026-03-24 22:19:43 +01:00
Usman Baig
b607a9a76e fix: site picker opens outside sidebar when collapsed
No longer expands sidebar first. When collapsed, dropdown appears
to the right of the button (like AppLauncher/UserMenu/Notifications).
When expanded, opens below the button.
2026-03-24 22:11:46 +01:00
Usman Baig
441fd9afda fix: remove border-r from desktop sidebar 2026-03-24 22:05:09 +01:00
Usman Baig
441abbd568 fix: portal site picker to document.body to avoid glass-on-glass
Dropdown now uses createPortal + fixed positioning like AppLauncher,
UserMenu and NotificationCenter. Renders over page content instead
of over the glass sidebar, so /65 opacity looks correct.
2026-03-24 22:04:16 +01:00
Usman Baig
71e98d72b4 fix: site picker dropdown matches AppLauncher glassmorphism exactly 2026-03-24 21:59:25 +01:00
Usman Baig
def483cf6d fix: site picker dropdown opacity — more opaque over glass sidebar
Glass-on-glass caused double transparency. Use bg-neutral-900/90
since this dropdown overlays the already-translucent sidebar.
2026-03-24 21:54:44 +01:00
Usman Baig
f686063f0a feat: glassmorphism sidebar matching website header treatment
- Sidebar body: bg-neutral-900/65 + backdrop-blur-3xl + saturate-150
- All borders changed to white/[0.08] and white/[0.06] dividers
- Hover states use white/[0.06] for glass consistency
- Site picker dropdown gets same glass treatment
- Search input uses bg-white/[0.04] + border-white/[0.08]
- Mobile sidebar matches desktop glass effect
2026-03-24 21:51:15 +01:00
Usman Baig
d48479ee5b fix: add open/close animation to NotificationCenter dropdown
Match AppLauncher & UserMenu Framer Motion treatment:
opacity + scale + y-offset with 0.15s transition
2026-03-24 21:45:26 +01:00
Usman Baig
538df57d2b fix: glassmorphism dropdowns + bump @ciphera-net/ui to 0.3.2
- NotificationCenter panel matches website header glass effect
- Bump @ciphera-net/ui for UserMenu & AppLauncher glassmorphism
2026-03-24 21:41:45 +01:00
Usman Baig
5a03e1f9a5 fix: skeleton loading states match actual page layouts
- PageSpeed: show 4 gauge rings, screenshot, legend, metrics grid, trend chart
- Uptime: match real layout with status card, 90-day bar, 4-col detail grid
- Remove duplicate local skeletons in behavior components, use shared library
- Strip light-mode classes from dark-only app
2026-03-24 21:17:21 +01:00
Usman Baig
5dfc3a5636 ci: use self-hosted runner, add filter/date/client tests 2026-03-24 19:58:57 +01:00
Usman Baig
bb4861dbdc fix(settings): remove duplicate comma listener from Sidebar — modal handles it globally 2026-03-24 17:24:45 +01:00
Usman Baig
c48023be9f fix(settings): global comma shortcut works on all authenticated pages 2026-03-24 17:05:21 +01:00
Usman Baig
e12a3661fa fix(settings): lock site context to current URL, rename Workspace to Organization
- Site context is locked to the site from the current URL — no dropdown
  switcher. If not on a site page, defaults to Organization context.
- Renamed "Workspace" to "Organization" in all user-facing text.
- Removed unused CaretDown import and dropdown state.
2026-03-24 16:52:59 +01:00
Usman Baig
ea2c47b53f feat(settings): Phase 2 — all 15 tabs implemented
Site tabs:
- Visibility (public toggle, share link, password protection)
- Privacy (data collection toggles, geo level, retention info)
- Bot & Spam (filtering toggle, stats cards)
- Reports (scheduled reports + alert channels list with test/pause/delete)
- Integrations (GSC + BunnyCDN connect/disconnect cards)

Workspace tabs:
- Members (member list, invite form with role selector)
- Notifications (dynamic toggles from API categories)
- Audit Log (action log with timestamps)

Account tabs:
- Security (wraps existing ProfileSettings security tab)
- Devices (wraps existing TrustedDevicesCard + SecurityActivityCard)

No more "Coming soon" placeholders. All tabs are functional.
2026-03-23 21:29:49 +01:00
Usman Baig
e55a3c4ce4 fix(settings): fixed modal height prevents bottom-edge twitch on context switch 2026-03-23 21:09:24 +01:00
Usman Baig
d050d32d24 fix(settings): remove flicker and scrollbar flash on context switch 2026-03-23 21:04:31 +01:00
Usman Baig
3c17895d64 feat(settings): unified settings modal with context switcher (Phase 1)
New unified settings modal accessible via `,` keyboard shortcut.
Three-context switcher: Site (with site dropdown), Workspace, Account.
Horizontal tabs per context with animated transitions.

Phase 1 tabs implemented:
- Site → General (name, timezone, domain, tracking script with copy)
- Site → Goals (CRUD with inline create/edit)
- Workspace → General (org name, slug, danger zone)
- Workspace → Billing (plan card, usage, cancel/resume, portal)
- Account → Profile (wraps existing ProfileSettings)

Phase 2 tabs show "Coming soon" placeholder:
- Site: Visibility, Privacy, Bot & Spam, Reports, Integrations
- Workspace: Members, Notifications, Audit Log
- Account: Security, Devices

Old settings pages and profile modal remain functional.
2026-03-23 20:57:20 +01:00