V1.3 - UI system overhaul + Auth / Admin / Teamspace blocks + Jules CI#5
Open
SamarthShukla17 wants to merge 10 commits into
Open
V1.3 - UI system overhaul + Auth / Admin / Teamspace blocks + Jules CI#5SamarthShukla17 wants to merge 10 commits into
SamarthShukla17 wants to merge 10 commits into
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR overhauls the site UI/theme foundations (layout, global tokens, navbar, new UI primitives) and adds reusable server-only backend “blocks” (Auth, Admin, Teamspace), plus GitHub Actions workflows for the Jules agent review/trigger automation.
Changes:
- Refactors theming/layout and navbar behavior (hydration handling, metadata, global background layering).
- Introduces new UI primitives (buttons, separator, button group) and updates styling tokens in
globals.css. - Adds new server-side block modules (
auth,admin,teamspace) with accompanying READMEs and Jules CI workflows.
Reviewed changes
Copilot reviewed 20 out of 22 changed files in this pull request and generated 11 comments.
Show a summary per file
| File | Description |
|---|---|
| providers/theme-provider.tsx | Refactors ThemeProvider wrapper around next-themes. |
| package.json | Adds new dependencies (class-variance-authority, radix-ui). |
| bun.lock | Locks newly added dependency graph. |
| app/layout.tsx | Updates global layout structure, theme provider wiring, and metadata. |
| app/globals.css | Replaces/expands design tokens and adds new base/utilities styling. |
| components/navbar.tsx | Rebuilds RefractiveDock for hydration/a11y and updated styling. |
| components/Hero.tsx | Adds import for the new magnetic button component. |
| components/ui/refined-button.tsx | Adds CVA-based button primitive. |
| components/ui/magnetic-button.tsx | Adds spring-driven magnetic button behavior. |
| components/ui/button-group.tsx | Adds grouping primitives for buttons with separators/text. |
| components/ui/separator.tsx | Adds a Radix-based separator wrapper. |
| components/ui/learn.tsx | Adds a secondary button primitive file (intended to be ignored per PR notes). |
| components/blocks/auth/auth.ts | Adds server-only auth backend (NextAuth + Supabase) implementation. |
| components/blocks/auth/Readme.md | Adds integration guide for the auth block. |
| components/blocks/admin/admin.ts | Adds server-only admin backend (Supabase service role) implementation. |
| components/blocks/admin/Readme.md | Adds integration guide for the admin block. |
| components/blocks/teamspace/teamspace.ts | Adds server-only teamspace/workspace backend logic. |
| components/blocks/teamspace/Readme.md | Adds integration guide/spec for the teamspace block. |
| AGENTS.md | Replaces agent rules with new repo/system instructions and templates. |
| .gitignore | Adds learn.tsx ignore entry. |
| .github/workflows/jules-review.yml | Adds PR-triggered Jules deep review/docgen workflow. |
| .github/workflows/jules-org-trigger.yml | Adds issue-label-triggered Jules agent workflow. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+1
to
+4
| import * as React from "react" | ||
| import { Slot } from "@radix-ui/react-slot" // Ensure @radix-ui/react-slot is used | ||
| import { cva, type VariantProps } from "class-variance-authority" | ||
| import { cn } from "@/lib/utils" |
Comment on lines
+1
to
+5
| import { cva, type VariantProps } from "class-variance-authority" | ||
| import { Slot } from "radix-ui" | ||
|
|
||
| import { cn } from "@/lib/utils" | ||
| import { Separator } from "@/components/ui/separator" |
Comment on lines
+1
to
+6
| import * as React from "react" | ||
| import { cva, type VariantProps } from "class-variance-authority" | ||
| import { Slot } from "radix-ui" | ||
|
|
||
| import { cn } from "@/lib/utils" | ||
|
|
| import AnimatedButton from "@/components/ui/animated-button"; | ||
| import { Background } from "@/components/ui/background"; | ||
| import { Badge } from "@/components/ui/badge"; | ||
| import { Button } from "./ui/magnetic-button"; |
Comment on lines
+569
to
+579
| export async function updateProfile( | ||
| userId: string, | ||
| updates: { name?: string; avatar_url?: string } | ||
| ) { | ||
| const payload: Partial<ProfileRow> = {} | ||
| if (typeof updates.name === 'string') payload.name = updates.name.trim().slice(0, 80) | ||
| if (typeof updates.avatar_url === 'string') payload.avatar_url = updates.avatar_url.trim() | ||
|
|
||
| const { error } = await supabaseAdmin.from('profiles').update(payload).eq('id', userId) | ||
| if (error) throw error | ||
| } |
Comment on lines
+152
to
+153
| const db = createAdminDb() | ||
|
|
Comment on lines
+393
to
+406
| export async function getFeatureFlag(key: string): Promise<boolean> { | ||
| const { data, error } = await db | ||
| .from('feature_flags') | ||
| .select('enabled, rollout_pct') | ||
| .eq('key', key) | ||
| .maybeSingle() | ||
|
|
||
| if (error) throw error | ||
| if (!data || !data.enabled) return false | ||
| if (toNumber(data.rollout_pct) >= 100) return true | ||
|
|
||
| const hash = key.split('').reduce((acc, ch) => ((acc << 5) - acc) + ch.charCodeAt(0), 0) | ||
| return Math.abs(hash) % 100 < toNumber(data.rollout_pct) | ||
| } |
Comment on lines
+1
to
+5
| # Teaspace Backend README | ||
|
|
||
| This README explains how to use the reusable backend module for the Teaspace workspace block. The backend is designed as a server-only business logic layer for a Next.js App Router project, with authentication and database access injected by the app that uses it.[cite:132][cite:133] | ||
|
|
||
| ## Purpose |
| with: | ||
| jules_api_key: ${{ secrets.JULES_API_KEY }} | ||
| # Path to your org-wide rules we discussed | ||
| rules_file: ".github/AGENTS.md" |
Comment on lines
+9
to
+13
| ## 🎨 Design Engineering Standards | ||
| - **Tokens:** Always use HSL variables (e.g., `--metal-border`). Never use hex codes. | ||
| - **Physics:** Interactions must use Spring Physics (Stiffness: 500, Damping: 15). | ||
| - **Tactility:** Buttons must maintain a 3px Y-axis displacement on `:active`. | ||
|
|
Contributor
Author
|
@copilot resolve the merge conflicts in this pull request |
Copilot stopped work on behalf of
SamarthShukla17 due to an error
May 22, 2026 11:28
Copilot stopped work on behalf of
SamarthShukla17 due to an error
May 22, 2026 11:35
Copilot stopped work on behalf of
SamarthShukla17 due to an error
May 22, 2026 11:35
Copilot stopped work on behalf of
SamarthShukla17 due to an error
May 22, 2026 11:35
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
This PR ships two parallel workstreams: a ground-up redesign of the UI and design system, and three new production-ready server-side blocks (Auth, Admin, Teamspace) that contributors can drop into any Next.js + Supabase app.
If you're reviewing for the first time, start with
AGENTS.md— it documents the HSL token system, spring physics config, and Bun runtime conventions that all new code must follow.UI & Design System
RefractiveDocknavbar — rebuiltThe navbar was refactored from scratch for correctness and accessibility:
themetoresolvedThemeto eliminate SSR hydration mismatchesblur+ywith a custom ease curve for a more tactile feelaria-labelattributessm:breakpoints)New UI components
MagneticButtoncomponents/ui/magnetic-button.tsxstiffness: 500, damping: 15), 3px YwhileTapper AGENTS.mdRefinedButtoncomponents/ui/refined-button.tsxdefault,outline,ghostButtonGroupcomponents/ui/button-group.tsxSeparatorcomponents/ui/separator.tsxSeparatorwith slot data attributeslayout.tsxmetadataBase,openGraph,twitter,robots)suppressHydrationWarningadded to<html>to prevent theme flickerBackgroundstays fixed atz-0, content sits atz-10globals.cssLarge token and utility update. See diff for full details — all new values follow the HSL variable convention.
New Blocks
All three blocks are server-only modules. Do not import them into client components.
components/blocks/auth/A hardened auth backend for Next.js App Router + NextAuth v4 + Supabase.
What's included:
user,admin,super_adminRequired env vars:
NEXT_PUBLIC_SUPABASE_URL,SUPABASE_SERVICE_ROLE_KEY,NEXTAUTH_SECRET,GITHUB_CLIENT_ID/SECRET,GOOGLE_CLIENT_ID/SECRETRequired tables:
profiles,auth_eventsSee
components/blocks/auth/Readme.mdfor the full integration guide and copy-paste checklist.components/blocks/admin/A server-side admin data layer. All mutations are guarded with
requireAdmin()orrequireSuperAdmin().What's included:
Required tables:
profiles,purchases,feature_flags,affiliate_earningsRequired RPCs:
revenue_by_month,signups_by_daySee
components/blocks/admin/Readme.mdfor wiring instructions and a deployment checklist.components/blocks/teamspace/See
components/blocks/teamspace/Readme.mdfor the full spec and architecture diagram.CI / Agent Workflows
jules-org-trigger.ymljulesjules-review.yml./docs/using Mermaid.js, severity-tagged findings ([BLOCKING],[WARN],[NIT])Jules will auto-commit spec files to
./docs/for any new modules it detects. Review those commits as part of this PR.Dependencies Added
How to Review
AGENTS.mdfirst — it defines the token system, spring values, and security boundaries all contributors must follow.components/navbar.tsxfor hydration and a11y correctness.Readme.mdbefore diving into the.tssource.AGENTS.md.Testing Checklist
bun run buildpassesbun run lint:fixcleanactivedisplacement correctSUPABASE_SERVICE_ROLE_KEYis not exposed to any client bundleNotes for Contributors
learn.tsxhas been removed from the repo and added to.gitignore.layout.tsximplementation is preserved in comments — feel free to delete after merge.AGENTS.mdand getting explicit confirmation first.