-
-
Notifications
You must be signed in to change notification settings - Fork 16
Feature: Implement Identity Mint Page UI #75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,44 @@ | ||||||||||||||||||||||||||||
| import React from "react"; | ||||||||||||||||||||||||||||
| import { PageContainer } from "@/components/PageContainer"; | ||||||||||||||||||||||||||||
| import { Button } from "@/components/ui/Button"; | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| export default function IdentityPage() { | ||||||||||||||||||||||||||||
| return ( | ||||||||||||||||||||||||||||
| <PageContainer className="min-h-[calc(100vh-80px)] items-center justify-center py-12 md:py-24"> | ||||||||||||||||||||||||||||
| <div className="flex w-full max-w-lg flex-col items-center justify-center space-y-8 rounded-3xl bg-white p-8 shadow-xl md:p-12 dark:bg-dark-bg"> | ||||||||||||||||||||||||||||
| <div className="flex flex-col items-center space-y-4 text-center"> | ||||||||||||||||||||||||||||
| <h1 className="font-utsaha text-4xl font-bold tracking-tight text-brand-blue md:text-5xl dark:text-white"> | ||||||||||||||||||||||||||||
| Mint Your DIT | ||||||||||||||||||||||||||||
| </h1> | ||||||||||||||||||||||||||||
| <p className="text-base text-gray-600 dark:text-gray-300"> | ||||||||||||||||||||||||||||
| Create your Decentralized Identity Token to start exploring the | ||||||||||||||||||||||||||||
| Stability Nexus ecosystem. Secure, unique, and entirely yours. | ||||||||||||||||||||||||||||
| </p> | ||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| <div className="w-full space-y-4"> | ||||||||||||||||||||||||||||
| <div className="rounded-xl border border-gray-100 bg-gray-50 p-6 dark:border-gray-800 dark:bg-[#15161A]"> | ||||||||||||||||||||||||||||
| <div className="flex justify-between text-sm"> | ||||||||||||||||||||||||||||
| <span className="text-gray-500 dark:text-gray-400">Network</span> | ||||||||||||||||||||||||||||
| <span className="font-medium text-gray-900 dark:text-gray-100"> | ||||||||||||||||||||||||||||
| Sepolia | ||||||||||||||||||||||||||||
| </span> | ||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||
| <div className="mt-2 flex justify-between text-sm"> | ||||||||||||||||||||||||||||
| <span className="text-gray-500 dark:text-gray-400">Mint Fee</span> | ||||||||||||||||||||||||||||
| <span className="font-medium text-gray-900 dark:text-gray-100"> | ||||||||||||||||||||||||||||
| Free | ||||||||||||||||||||||||||||
| </span> | ||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| <Button className="w-full py-4 text-lg">Mint Identity</Button> | ||||||||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Button has no click handler and is non-functional. The "Mint Identity" button renders as a clickable element but has no At minimum, add a placeholder handler or disable the button until functionality is implemented. Proposed placeholder implementation- <Button className="w-full py-4 text-lg">Mint Identity</Button>
+ <Button
+ className="w-full py-4 text-lg"
+ onClick={() => {
+ // TODO: Implement mint modal/form
+ console.log("Mint identity clicked");
+ }}
+ >
+ Mint Identity
+ </Button>Or disable until ready: - <Button className="w-full py-4 text-lg">Mint Identity</Button>
+ <Button className="w-full py-4 text-lg" disabled>
+ Mint Identity
+ </Button>🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| <p className="text-sm text-gray-500 dark:text-gray-400"> | ||||||||||||||||||||||||||||
| By minting, you agree to our Terms of Service and Privacy Policy. | ||||||||||||||||||||||||||||
| </p> | ||||||||||||||||||||||||||||
|
Comment on lines
+10
to
+40
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick | 🔵 Trivial Multiple hardcoded user-visible strings require i18n. Per coding guidelines, user-visible strings should be externalized to resource files. The following strings need externalization:
🤖 Prompt for AI Agents
Comment on lines
+38
to
+40
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Legal text mentions Terms and Privacy Policy but provides no links. The text references "Terms of Service and Privacy Policy" but these are not clickable links. Users should be able to access these documents. Proposed fix <p className="text-sm text-gray-500 dark:text-gray-400">
- By minting, you agree to our Terms of Service and Privacy Policy.
+ By minting, you agree to our{" "}
+ <a href="/terms" className="underline hover:text-gray-700 dark:hover:text-gray-200">
+ Terms of Service
+ </a>{" "}
+ and{" "}
+ <a href="/privacy" className="underline hover:text-gray-700 dark:hover:text-gray-200">
+ Privacy Policy
+ </a>.
</p>📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||
| </PageContainer> | ||||||||||||||||||||||||||||
| ); | ||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| import { PageContainer } from "@/components/PageContainer"; | ||
|
|
||
| export default function TokenPage() { | ||
| return ( | ||
| <PageContainer className="min-h-screen items-center justify-center"> | ||
| <h1 className="text-2xl font-semibold">Token</h1> | ||
| </PageContainer> | ||
| ); | ||
| } | ||
|
Comment on lines
+3
to
+9
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick | 🔵 Trivial Hardcoded user-visible string. The "Token" heading text should be externalized to a resource file for internationalization (i18n) per coding guidelines. This applies when the placeholder is replaced with actual content. 🤖 Prompt for AI Agents |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| import React from "react"; | ||
|
|
||
| interface PageContainerProps { | ||
| children: React.ReactNode; | ||
| className?: string; | ||
| } | ||
|
|
||
| export function PageContainer({ | ||
| children, | ||
| className = "", | ||
| }: PageContainerProps) { | ||
| return ( | ||
| <main | ||
| className={`mx-auto flex w-full max-w-7xl flex-col px-4 sm:px-6 lg:px-8 ${className}`} | ||
| > | ||
| {children} | ||
| </main> | ||
| ); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick | 🔵 Trivial
Network and fee values are hardcoded.
"Sepolia" and "Free" are hardcoded values that may vary based on environment or contract configuration. Consider sourcing these from configuration, environment variables, or blockchain context.
🤖 Prompt for AI Agents