feat: add marketplace button to eID Wallet page - #790

Merged
coodos merged 6 commits into
mainfrom
feat/marketplace-btn
Feb 10, 2026
Merged

feat: add marketplace button to eID Wallet page#790
coodos merged 6 commits into
mainfrom
feat/marketplace-btn

Conversation

@Bekiboo

@BekibooBekiboo commented Feb 9, 2026

Copy link
Copy Markdown
Collaborator

Description of change

Added a button link to marketplace on the main eid wallet page

Issue Number

Closes#781

Type of change

  • New (a change which implements a new feature)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Added a marketplace discovery button in the main area and embedded a marketplace link in the identity section.
    • Added a Settings icon in the header for quick access.
    • Removed the eVault identity card from the main view; eName and ePassport remain, with QR drawer, toasts, and profile status handling preserved.
  • Style

    • Updated navigation icons for improved interface presentation.

@BekibooBekiboo self-assigned this Feb 9, 2026
@Bekiboo
Bekiboo requested a review from coodos as a code ownerFebruary 9, 2026 08:34
@coderabbitai

coderabbitaiBot commented Feb 9, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

Replaces an eVault IdentityCard with a W3DS marketplace discovery Button.Nav, swaps an icon import to LinkSquare02Icon, and adds a header Settings button; preserves eName/ePassport UI, QR drawer, toast flows, and profile creation status handling with minor layout adjustments.

Changes

Cohort / File(s)Summary
Main page UI
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
Removed eVault IdentityCard rendering; added marketplace discovery Button.Nav (links to W3DS marketplace) in discovery and main areas; added header SettingsButton.Nav linking to /settings; replaced CircleArrowDataTransferDiagonalFreeIcons import with LinkSquare02Icon; preserved QR drawer, toast mechanisms, eName/ePassport sections, and profile creation status handling with layout/structure adjustments.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related issues

Suggested reviewers

  • coodos
  • sosweetham

Poem

🐰 I nudged a button, bright and new,
Swapped an icon, made room in view,
A settings hop up in the bar,
Marketplace shining like a star,
Hooray — the UI's got a fresh chew! 🎉

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check nameStatusExplanationResolution
Description check❓ InconclusiveThe description covers required sections but lacks detail in testing and implementation specifics; one checklist item (self-review) is unchecked, indicating incomplete preparation.Complete the self-review checklist item and provide more detail in the 'How the change has been tested' section with specific test scenarios or manual verification steps.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and specifically describes the main change: adding a marketplace button to the eID Wallet page, matching the primary objective.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/marketplace-btn

No actionable comments were generated in the recent review. 🎉

🧹 Recent nitpick comments
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1)

179-179: Consider adding a hover/active state for interactive feedback.

The earlier hover:bg-gray-200 was correctly removed (white-on-white contrast), but no replacement was added. The button now has zero visual feedback on interaction, which is a minor accessibility/UX gap.

Suggested fix
- class="rounded-3xl w-full bg-black-700 text-white p-4 mt-8 flex items-center justify-center gap-3 cursor-pointer"+ class="rounded-3xl w-full bg-black-700 text-white p-4 mt-8 flex items-center justify-center gap-3 cursor-pointer hover:bg-black-600 active:bg-black-800 transition-colors"

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Fix all issues with AI agents
In `@infrastructure/eid-wallet/src/routes/`(app)/main/+page.svelte:
- Line 75: Remove the leftover debug console.log by deleting the statement that
logs "status current" and profileCreationStatus in the +page.svelte component
(the console.log("status current", profileCreationStatus) line); ensure no other
debugging console statements remain in the component and, if needed for
production, replace with a structured log via the app's logger or remove
entirely to avoid leaking internal state.
- Around line 176-188: The hover style on the Button.Nav component causes white
text to become unreadable because hover:bg-gray-200 lightens the background;
update the Button.Nav class list (the component instance using Button.Nav and
HugeiconsIcon) to use a darker hover background such as hover:bg-black-600 or
hover:bg-gray-800 (or alternatively add a contrasting hover text class like
hover:text-black) so the text remains legible on hover.
- Around line 62-70: The async IIFE inside onMount that awaits
globalState.userController.user, globalState.userController.isFake, and
globalState.vaultController.vault can reject and currently has no error
handling; wrap the async function body in a try/catch (or append a .catch()) to
handle rejections, set/clear userData and ename appropriately on error, and log
or surface the error (e.g., via console.error or an existing logger) so failures
from userController.user, userController.isFake or vaultController.vault are not
unhandled.
- Around line 176-178: The external link using the Button.Nav component should
open in a new tab and be secured; add target="_blank" and rel="noopener
noreferrer" to the Button.Nav invocation that links to
"https://marketplace.w3ds.metastate.foundation/". Ensure the Button.Nav
component (the anchor wrapper) forwards arbitrary attributes to the underlying
<a> (e.g., via $$restProps or equivalent) so target and rel are rendered; if it
doesn't, update Button.Nav to accept and pass through these attributes before
adding them to the instance in +page.svelte.
🧹 Nitpick comments (3)
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (3)

13-14: Nit: consolidate imports from the same module.

onDestroy can be merged into the import on line 13.

- import { type Snippet, getContext, onMount } from "svelte";- import { onDestroy } from "svelte";+ import { type Snippet, getContext, onDestroy, onMount } from "svelte";

25-26: statusInterval doesn't need $state — it's never used in the template.

A plain let is sufficient for the interval handle since it's only read/written imperatively in onMount/onDestroy.

- let statusInterval: ReturnType<typeof setInterval> | undefined =- $state(undefined);+ let statusInterval: ReturnType<typeof setInterval> | undefined = undefined;

77-84: Consider making profileCreationStatus reactive instead of polling.

Polling every 1 second is a pragmatic workaround, but if vaultController can expose a reactive store or signal, that would be cleaner and more efficient. If that's not feasible right now, this works fine.

Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@infrastructure/eid-wallet/src/routes/`(app)/main/+page.svelte:
- Around line 180-184: Replace the generic alt text on the img element used in
the Discover header by updating the alt attribute on the <img class="w-12"
src="/images/W3DSLogoWhite.svg" ...> element from "logo" to a more descriptive
label like "W3DS Logo" (or "W3DS") so screen readers convey meaningful
information about the image.

Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
@coodos
coodos merged commit c187bab into mainFeb 10, 2026
4 checks passed
@coodos
coodos deleted the feat/marketplace-btn branch February 10, 2026 14:29
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 11, 2026
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request May 23, 2026
10 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] Button for MarketPlace in eID app

2 participants

@Bekiboo@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat: add marketplace button to eID Wallet page - #790

Merged
coodos merged 6 commits into
mainfrom
feat/marketplace-btn
Feb 10, 2026
Merged

feat: add marketplace button to eID Wallet page#790
coodos merged 6 commits into
mainfrom
feat/marketplace-btn

Conversation

@Bekiboo

@BekibooBekiboo commented Feb 9, 2026

Copy link
Copy Markdown
Collaborator

Description of change

Added a button link to marketplace on the main eid wallet page

Issue Number

Closes#781

Type of change

  • New (a change which implements a new feature)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Added a marketplace discovery button in the main area and embedded a marketplace link in the identity section.
    • Added a Settings icon in the header for quick access.
    • Removed the eVault identity card from the main view; eName and ePassport remain, with QR drawer, toasts, and profile status handling preserved.
  • Style

    • Updated navigation icons for improved interface presentation.

@BekibooBekiboo self-assigned this Feb 9, 2026
@Bekiboo
Bekiboo requested a review from coodos as a code ownerFebruary 9, 2026 08:34
@coderabbitai

coderabbitaiBot commented Feb 9, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

Replaces an eVault IdentityCard with a W3DS marketplace discovery Button.Nav, swaps an icon import to LinkSquare02Icon, and adds a header Settings button; preserves eName/ePassport UI, QR drawer, toast flows, and profile creation status handling with minor layout adjustments.

Changes

Cohort / File(s)Summary
Main page UI
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
Removed eVault IdentityCard rendering; added marketplace discovery Button.Nav (links to W3DS marketplace) in discovery and main areas; added header SettingsButton.Nav linking to /settings; replaced CircleArrowDataTransferDiagonalFreeIcons import with LinkSquare02Icon; preserved QR drawer, toast mechanisms, eName/ePassport sections, and profile creation status handling with layout/structure adjustments.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related issues

Suggested reviewers

  • coodos
  • sosweetham

Poem

🐰 I nudged a button, bright and new,
Swapped an icon, made room in view,
A settings hop up in the bar,
Marketplace shining like a star,
Hooray — the UI's got a fresh chew! 🎉

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check nameStatusExplanationResolution
Description check❓ InconclusiveThe description covers required sections but lacks detail in testing and implementation specifics; one checklist item (self-review) is unchecked, indicating incomplete preparation.Complete the self-review checklist item and provide more detail in the 'How the change has been tested' section with specific test scenarios or manual verification steps.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and specifically describes the main change: adding a marketplace button to the eID Wallet page, matching the primary objective.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/marketplace-btn

No actionable comments were generated in the recent review. 🎉

🧹 Recent nitpick comments
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1)

179-179: Consider adding a hover/active state for interactive feedback.

The earlier hover:bg-gray-200 was correctly removed (white-on-white contrast), but no replacement was added. The button now has zero visual feedback on interaction, which is a minor accessibility/UX gap.

Suggested fix
- class="rounded-3xl w-full bg-black-700 text-white p-4 mt-8 flex items-center justify-center gap-3 cursor-pointer"+ class="rounded-3xl w-full bg-black-700 text-white p-4 mt-8 flex items-center justify-center gap-3 cursor-pointer hover:bg-black-600 active:bg-black-800 transition-colors"

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Fix all issues with AI agents
In `@infrastructure/eid-wallet/src/routes/`(app)/main/+page.svelte:
- Line 75: Remove the leftover debug console.log by deleting the statement that
logs "status current" and profileCreationStatus in the +page.svelte component
(the console.log("status current", profileCreationStatus) line); ensure no other
debugging console statements remain in the component and, if needed for
production, replace with a structured log via the app's logger or remove
entirely to avoid leaking internal state.
- Around line 176-188: The hover style on the Button.Nav component causes white
text to become unreadable because hover:bg-gray-200 lightens the background;
update the Button.Nav class list (the component instance using Button.Nav and
HugeiconsIcon) to use a darker hover background such as hover:bg-black-600 or
hover:bg-gray-800 (or alternatively add a contrasting hover text class like
hover:text-black) so the text remains legible on hover.
- Around line 62-70: The async IIFE inside onMount that awaits
globalState.userController.user, globalState.userController.isFake, and
globalState.vaultController.vault can reject and currently has no error
handling; wrap the async function body in a try/catch (or append a .catch()) to
handle rejections, set/clear userData and ename appropriately on error, and log
or surface the error (e.g., via console.error or an existing logger) so failures
from userController.user, userController.isFake or vaultController.vault are not
unhandled.
- Around line 176-178: The external link using the Button.Nav component should
open in a new tab and be secured; add target="_blank" and rel="noopener
noreferrer" to the Button.Nav invocation that links to
"https://marketplace.w3ds.metastate.foundation/". Ensure the Button.Nav
component (the anchor wrapper) forwards arbitrary attributes to the underlying
<a> (e.g., via $$restProps or equivalent) so target and rel are rendered; if it
doesn't, update Button.Nav to accept and pass through these attributes before
adding them to the instance in +page.svelte.
🧹 Nitpick comments (3)
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (3)

13-14: Nit: consolidate imports from the same module.

onDestroy can be merged into the import on line 13.

- import { type Snippet, getContext, onMount } from "svelte";- import { onDestroy } from "svelte";+ import { type Snippet, getContext, onDestroy, onMount } from "svelte";

25-26: statusInterval doesn't need $state — it's never used in the template.

A plain let is sufficient for the interval handle since it's only read/written imperatively in onMount/onDestroy.

- let statusInterval: ReturnType<typeof setInterval> | undefined =- $state(undefined);+ let statusInterval: ReturnType<typeof setInterval> | undefined = undefined;

77-84: Consider making profileCreationStatus reactive instead of polling.

Polling every 1 second is a pragmatic workaround, but if vaultController can expose a reactive store or signal, that would be cleaner and more efficient. If that's not feasible right now, this works fine.

Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@infrastructure/eid-wallet/src/routes/`(app)/main/+page.svelte:
- Around line 180-184: Replace the generic alt text on the img element used in
the Discover header by updating the alt attribute on the <img class="w-12"
src="/images/W3DSLogoWhite.svg" ...> element from "logo" to a more descriptive
label like "W3DS Logo" (or "W3DS") so screen readers convey meaningful
information about the image.

Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
@coodos
coodos merged commit c187bab into mainFeb 10, 2026
4 checks passed
@coodos
coodos deleted the feat/marketplace-btn branch February 10, 2026 14:29
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 11, 2026
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request May 23, 2026
10 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] Button for MarketPlace in eID app

2 participants

@Bekiboo@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: add marketplace button to eID Wallet page - #790

Merged
coodos merged 6 commits into
mainfrom
feat/marketplace-btn
Feb 10, 2026
Merged

feat: add marketplace button to eID Wallet page#790
coodos merged 6 commits into
mainfrom
feat/marketplace-btn

Conversation

@Bekiboo

@BekibooBekiboo commented Feb 9, 2026

Copy link
Copy Markdown
Collaborator

Description of change

Added a button link to marketplace on the main eid wallet page

Issue Number

Closes#781

Type of change

  • New (a change which implements a new feature)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Added a marketplace discovery button in the main area and embedded a marketplace link in the identity section.
    • Added a Settings icon in the header for quick access.
    • Removed the eVault identity card from the main view; eName and ePassport remain, with QR drawer, toasts, and profile status handling preserved.
  • Style

    • Updated navigation icons for improved interface presentation.

@BekibooBekiboo self-assigned this Feb 9, 2026
@Bekiboo
Bekiboo requested a review from coodos as a code ownerFebruary 9, 2026 08:34
@coderabbitai

coderabbitaiBot commented Feb 9, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

Replaces an eVault IdentityCard with a W3DS marketplace discovery Button.Nav, swaps an icon import to LinkSquare02Icon, and adds a header Settings button; preserves eName/ePassport UI, QR drawer, toast flows, and profile creation status handling with minor layout adjustments.

Changes

Cohort / File(s)Summary
Main page UI
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
Removed eVault IdentityCard rendering; added marketplace discovery Button.Nav (links to W3DS marketplace) in discovery and main areas; added header SettingsButton.Nav linking to /settings; replaced CircleArrowDataTransferDiagonalFreeIcons import with LinkSquare02Icon; preserved QR drawer, toast mechanisms, eName/ePassport sections, and profile creation status handling with layout/structure adjustments.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related issues

Suggested reviewers

  • coodos
  • sosweetham

Poem

🐰 I nudged a button, bright and new,
Swapped an icon, made room in view,
A settings hop up in the bar,
Marketplace shining like a star,
Hooray — the UI's got a fresh chew! 🎉

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check nameStatusExplanationResolution
Description check❓ InconclusiveThe description covers required sections but lacks detail in testing and implementation specifics; one checklist item (self-review) is unchecked, indicating incomplete preparation.Complete the self-review checklist item and provide more detail in the 'How the change has been tested' section with specific test scenarios or manual verification steps.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and specifically describes the main change: adding a marketplace button to the eID Wallet page, matching the primary objective.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/marketplace-btn

No actionable comments were generated in the recent review. 🎉

🧹 Recent nitpick comments
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1)

179-179: Consider adding a hover/active state for interactive feedback.

The earlier hover:bg-gray-200 was correctly removed (white-on-white contrast), but no replacement was added. The button now has zero visual feedback on interaction, which is a minor accessibility/UX gap.

Suggested fix
- class="rounded-3xl w-full bg-black-700 text-white p-4 mt-8 flex items-center justify-center gap-3 cursor-pointer"+ class="rounded-3xl w-full bg-black-700 text-white p-4 mt-8 flex items-center justify-center gap-3 cursor-pointer hover:bg-black-600 active:bg-black-800 transition-colors"

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Fix all issues with AI agents
In `@infrastructure/eid-wallet/src/routes/`(app)/main/+page.svelte:
- Line 75: Remove the leftover debug console.log by deleting the statement that
logs "status current" and profileCreationStatus in the +page.svelte component
(the console.log("status current", profileCreationStatus) line); ensure no other
debugging console statements remain in the component and, if needed for
production, replace with a structured log via the app's logger or remove
entirely to avoid leaking internal state.
- Around line 176-188: The hover style on the Button.Nav component causes white
text to become unreadable because hover:bg-gray-200 lightens the background;
update the Button.Nav class list (the component instance using Button.Nav and
HugeiconsIcon) to use a darker hover background such as hover:bg-black-600 or
hover:bg-gray-800 (or alternatively add a contrasting hover text class like
hover:text-black) so the text remains legible on hover.
- Around line 62-70: The async IIFE inside onMount that awaits
globalState.userController.user, globalState.userController.isFake, and
globalState.vaultController.vault can reject and currently has no error
handling; wrap the async function body in a try/catch (or append a .catch()) to
handle rejections, set/clear userData and ename appropriately on error, and log
or surface the error (e.g., via console.error or an existing logger) so failures
from userController.user, userController.isFake or vaultController.vault are not
unhandled.
- Around line 176-178: The external link using the Button.Nav component should
open in a new tab and be secured; add target="_blank" and rel="noopener
noreferrer" to the Button.Nav invocation that links to
"https://marketplace.w3ds.metastate.foundation/". Ensure the Button.Nav
component (the anchor wrapper) forwards arbitrary attributes to the underlying
<a> (e.g., via $$restProps or equivalent) so target and rel are rendered; if it
doesn't, update Button.Nav to accept and pass through these attributes before
adding them to the instance in +page.svelte.
🧹 Nitpick comments (3)
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (3)

13-14: Nit: consolidate imports from the same module.

onDestroy can be merged into the import on line 13.

- import { type Snippet, getContext, onMount } from "svelte";- import { onDestroy } from "svelte";+ import { type Snippet, getContext, onDestroy, onMount } from "svelte";

25-26: statusInterval doesn't need $state — it's never used in the template.

A plain let is sufficient for the interval handle since it's only read/written imperatively in onMount/onDestroy.

- let statusInterval: ReturnType<typeof setInterval> | undefined =- $state(undefined);+ let statusInterval: ReturnType<typeof setInterval> | undefined = undefined;

77-84: Consider making profileCreationStatus reactive instead of polling.

Polling every 1 second is a pragmatic workaround, but if vaultController can expose a reactive store or signal, that would be cleaner and more efficient. If that's not feasible right now, this works fine.

Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@infrastructure/eid-wallet/src/routes/`(app)/main/+page.svelte:
- Around line 180-184: Replace the generic alt text on the img element used in
the Discover header by updating the alt attribute on the <img class="w-12"
src="/images/W3DSLogoWhite.svg" ...> element from "logo" to a more descriptive
label like "W3DS Logo" (or "W3DS") so screen readers convey meaningful
information about the image.

Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
@coodos
coodos merged commit c187bab into mainFeb 10, 2026
4 checks passed
@coodos
coodos deleted the feat/marketplace-btn branch February 10, 2026 14:29
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 11, 2026
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request May 23, 2026
10 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] Button for MarketPlace in eID app

2 participants

@Bekiboo@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: add marketplace button to eID Wallet page - #790

Merged
coodos merged 6 commits into
mainfrom
feat/marketplace-btn
Feb 10, 2026
Merged

feat: add marketplace button to eID Wallet page#790
coodos merged 6 commits into
mainfrom
feat/marketplace-btn

Conversation

@Bekiboo

@BekibooBekiboo commented Feb 9, 2026

Copy link
Copy Markdown
Collaborator

Description of change

Added a button link to marketplace on the main eid wallet page

Issue Number

Closes#781

Type of change

  • New (a change which implements a new feature)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Added a marketplace discovery button in the main area and embedded a marketplace link in the identity section.
    • Added a Settings icon in the header for quick access.
    • Removed the eVault identity card from the main view; eName and ePassport remain, with QR drawer, toasts, and profile status handling preserved.
  • Style

    • Updated navigation icons for improved interface presentation.

@BekibooBekiboo self-assigned this Feb 9, 2026
@Bekiboo
Bekiboo requested a review from coodos as a code ownerFebruary 9, 2026 08:34
@coderabbitai

coderabbitaiBot commented Feb 9, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

Replaces an eVault IdentityCard with a W3DS marketplace discovery Button.Nav, swaps an icon import to LinkSquare02Icon, and adds a header Settings button; preserves eName/ePassport UI, QR drawer, toast flows, and profile creation status handling with minor layout adjustments.

Changes

Cohort / File(s)Summary
Main page UI
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
Removed eVault IdentityCard rendering; added marketplace discovery Button.Nav (links to W3DS marketplace) in discovery and main areas; added header SettingsButton.Nav linking to /settings; replaced CircleArrowDataTransferDiagonalFreeIcons import with LinkSquare02Icon; preserved QR drawer, toast mechanisms, eName/ePassport sections, and profile creation status handling with layout/structure adjustments.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related issues

Suggested reviewers

  • coodos
  • sosweetham

Poem

🐰 I nudged a button, bright and new,
Swapped an icon, made room in view,
A settings hop up in the bar,
Marketplace shining like a star,
Hooray — the UI's got a fresh chew! 🎉

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check nameStatusExplanationResolution
Description check❓ InconclusiveThe description covers required sections but lacks detail in testing and implementation specifics; one checklist item (self-review) is unchecked, indicating incomplete preparation.Complete the self-review checklist item and provide more detail in the 'How the change has been tested' section with specific test scenarios or manual verification steps.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and specifically describes the main change: adding a marketplace button to the eID Wallet page, matching the primary objective.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/marketplace-btn

No actionable comments were generated in the recent review. 🎉

🧹 Recent nitpick comments
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1)

179-179: Consider adding a hover/active state for interactive feedback.

The earlier hover:bg-gray-200 was correctly removed (white-on-white contrast), but no replacement was added. The button now has zero visual feedback on interaction, which is a minor accessibility/UX gap.

Suggested fix
- class="rounded-3xl w-full bg-black-700 text-white p-4 mt-8 flex items-center justify-center gap-3 cursor-pointer"+ class="rounded-3xl w-full bg-black-700 text-white p-4 mt-8 flex items-center justify-center gap-3 cursor-pointer hover:bg-black-600 active:bg-black-800 transition-colors"

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Fix all issues with AI agents
In `@infrastructure/eid-wallet/src/routes/`(app)/main/+page.svelte:
- Line 75: Remove the leftover debug console.log by deleting the statement that
logs "status current" and profileCreationStatus in the +page.svelte component
(the console.log("status current", profileCreationStatus) line); ensure no other
debugging console statements remain in the component and, if needed for
production, replace with a structured log via the app's logger or remove
entirely to avoid leaking internal state.
- Around line 176-188: The hover style on the Button.Nav component causes white
text to become unreadable because hover:bg-gray-200 lightens the background;
update the Button.Nav class list (the component instance using Button.Nav and
HugeiconsIcon) to use a darker hover background such as hover:bg-black-600 or
hover:bg-gray-800 (or alternatively add a contrasting hover text class like
hover:text-black) so the text remains legible on hover.
- Around line 62-70: The async IIFE inside onMount that awaits
globalState.userController.user, globalState.userController.isFake, and
globalState.vaultController.vault can reject and currently has no error
handling; wrap the async function body in a try/catch (or append a .catch()) to
handle rejections, set/clear userData and ename appropriately on error, and log
or surface the error (e.g., via console.error or an existing logger) so failures
from userController.user, userController.isFake or vaultController.vault are not
unhandled.
- Around line 176-178: The external link using the Button.Nav component should
open in a new tab and be secured; add target="_blank" and rel="noopener
noreferrer" to the Button.Nav invocation that links to
"https://marketplace.w3ds.metastate.foundation/". Ensure the Button.Nav
component (the anchor wrapper) forwards arbitrary attributes to the underlying
<a> (e.g., via $$restProps or equivalent) so target and rel are rendered; if it
doesn't, update Button.Nav to accept and pass through these attributes before
adding them to the instance in +page.svelte.
🧹 Nitpick comments (3)
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (3)

13-14: Nit: consolidate imports from the same module.

onDestroy can be merged into the import on line 13.

- import { type Snippet, getContext, onMount } from "svelte";- import { onDestroy } from "svelte";+ import { type Snippet, getContext, onDestroy, onMount } from "svelte";

25-26: statusInterval doesn't need $state — it's never used in the template.

A plain let is sufficient for the interval handle since it's only read/written imperatively in onMount/onDestroy.

- let statusInterval: ReturnType<typeof setInterval> | undefined =- $state(undefined);+ let statusInterval: ReturnType<typeof setInterval> | undefined = undefined;

77-84: Consider making profileCreationStatus reactive instead of polling.

Polling every 1 second is a pragmatic workaround, but if vaultController can expose a reactive store or signal, that would be cleaner and more efficient. If that's not feasible right now, this works fine.

Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@infrastructure/eid-wallet/src/routes/`(app)/main/+page.svelte:
- Around line 180-184: Replace the generic alt text on the img element used in
the Discover header by updating the alt attribute on the <img class="w-12"
src="/images/W3DSLogoWhite.svg" ...> element from "logo" to a more descriptive
label like "W3DS Logo" (or "W3DS") so screen readers convey meaningful
information about the image.

Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
@coodos
coodos merged commit c187bab into mainFeb 10, 2026
4 checks passed
@coodos
coodos deleted the feat/marketplace-btn branch February 10, 2026 14:29
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 11, 2026
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request May 23, 2026
10 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] Button for MarketPlace in eID app

2 participants

@Bekiboo@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat: add marketplace button to eID Wallet page - #790

Merged
coodos merged 6 commits into
mainfrom
feat/marketplace-btn
Feb 10, 2026
Merged

feat: add marketplace button to eID Wallet page#790
coodos merged 6 commits into
mainfrom
feat/marketplace-btn

Conversation

@Bekiboo

@BekibooBekiboo commented Feb 9, 2026

Copy link
Copy Markdown
Collaborator

Description of change

Added a button link to marketplace on the main eid wallet page

Issue Number

Closes#781

Type of change

  • New (a change which implements a new feature)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Added a marketplace discovery button in the main area and embedded a marketplace link in the identity section.
    • Added a Settings icon in the header for quick access.
    • Removed the eVault identity card from the main view; eName and ePassport remain, with QR drawer, toasts, and profile status handling preserved.
  • Style

    • Updated navigation icons for improved interface presentation.

@BekibooBekiboo self-assigned this Feb 9, 2026
@Bekiboo
Bekiboo requested a review from coodos as a code ownerFebruary 9, 2026 08:34
@coderabbitai

coderabbitaiBot commented Feb 9, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

Replaces an eVault IdentityCard with a W3DS marketplace discovery Button.Nav, swaps an icon import to LinkSquare02Icon, and adds a header Settings button; preserves eName/ePassport UI, QR drawer, toast flows, and profile creation status handling with minor layout adjustments.

Changes

Cohort / File(s)Summary
Main page UI
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
Removed eVault IdentityCard rendering; added marketplace discovery Button.Nav (links to W3DS marketplace) in discovery and main areas; added header SettingsButton.Nav linking to /settings; replaced CircleArrowDataTransferDiagonalFreeIcons import with LinkSquare02Icon; preserved QR drawer, toast mechanisms, eName/ePassport sections, and profile creation status handling with layout/structure adjustments.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related issues

Suggested reviewers

  • coodos
  • sosweetham

Poem

🐰 I nudged a button, bright and new,
Swapped an icon, made room in view,
A settings hop up in the bar,
Marketplace shining like a star,
Hooray — the UI's got a fresh chew! 🎉

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check nameStatusExplanationResolution
Description check❓ InconclusiveThe description covers required sections but lacks detail in testing and implementation specifics; one checklist item (self-review) is unchecked, indicating incomplete preparation.Complete the self-review checklist item and provide more detail in the 'How the change has been tested' section with specific test scenarios or manual verification steps.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and specifically describes the main change: adding a marketplace button to the eID Wallet page, matching the primary objective.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/marketplace-btn

No actionable comments were generated in the recent review. 🎉

🧹 Recent nitpick comments
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1)

179-179: Consider adding a hover/active state for interactive feedback.

The earlier hover:bg-gray-200 was correctly removed (white-on-white contrast), but no replacement was added. The button now has zero visual feedback on interaction, which is a minor accessibility/UX gap.

Suggested fix
- class="rounded-3xl w-full bg-black-700 text-white p-4 mt-8 flex items-center justify-center gap-3 cursor-pointer"+ class="rounded-3xl w-full bg-black-700 text-white p-4 mt-8 flex items-center justify-center gap-3 cursor-pointer hover:bg-black-600 active:bg-black-800 transition-colors"

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Fix all issues with AI agents
In `@infrastructure/eid-wallet/src/routes/`(app)/main/+page.svelte:
- Line 75: Remove the leftover debug console.log by deleting the statement that
logs "status current" and profileCreationStatus in the +page.svelte component
(the console.log("status current", profileCreationStatus) line); ensure no other
debugging console statements remain in the component and, if needed for
production, replace with a structured log via the app's logger or remove
entirely to avoid leaking internal state.
- Around line 176-188: The hover style on the Button.Nav component causes white
text to become unreadable because hover:bg-gray-200 lightens the background;
update the Button.Nav class list (the component instance using Button.Nav and
HugeiconsIcon) to use a darker hover background such as hover:bg-black-600 or
hover:bg-gray-800 (or alternatively add a contrasting hover text class like
hover:text-black) so the text remains legible on hover.
- Around line 62-70: The async IIFE inside onMount that awaits
globalState.userController.user, globalState.userController.isFake, and
globalState.vaultController.vault can reject and currently has no error
handling; wrap the async function body in a try/catch (or append a .catch()) to
handle rejections, set/clear userData and ename appropriately on error, and log
or surface the error (e.g., via console.error or an existing logger) so failures
from userController.user, userController.isFake or vaultController.vault are not
unhandled.
- Around line 176-178: The external link using the Button.Nav component should
open in a new tab and be secured; add target="_blank" and rel="noopener
noreferrer" to the Button.Nav invocation that links to
"https://marketplace.w3ds.metastate.foundation/". Ensure the Button.Nav
component (the anchor wrapper) forwards arbitrary attributes to the underlying
<a> (e.g., via $$restProps or equivalent) so target and rel are rendered; if it
doesn't, update Button.Nav to accept and pass through these attributes before
adding them to the instance in +page.svelte.
🧹 Nitpick comments (3)
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (3)

13-14: Nit: consolidate imports from the same module.

onDestroy can be merged into the import on line 13.

- import { type Snippet, getContext, onMount } from "svelte";- import { onDestroy } from "svelte";+ import { type Snippet, getContext, onDestroy, onMount } from "svelte";

25-26: statusInterval doesn't need $state — it's never used in the template.

A plain let is sufficient for the interval handle since it's only read/written imperatively in onMount/onDestroy.

- let statusInterval: ReturnType<typeof setInterval> | undefined =- $state(undefined);+ let statusInterval: ReturnType<typeof setInterval> | undefined = undefined;

77-84: Consider making profileCreationStatus reactive instead of polling.

Polling every 1 second is a pragmatic workaround, but if vaultController can expose a reactive store or signal, that would be cleaner and more efficient. If that's not feasible right now, this works fine.

Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@infrastructure/eid-wallet/src/routes/`(app)/main/+page.svelte:
- Around line 180-184: Replace the generic alt text on the img element used in
the Discover header by updating the alt attribute on the <img class="w-12"
src="/images/W3DSLogoWhite.svg" ...> element from "logo" to a more descriptive
label like "W3DS Logo" (or "W3DS") so screen readers convey meaningful
information about the image.

Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
@coodos
coodos merged commit c187bab into mainFeb 10, 2026
4 checks passed
@coodos
coodos deleted the feat/marketplace-btn branch February 10, 2026 14:29
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 11, 2026
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request May 23, 2026
10 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] Button for MarketPlace in eID app

2 participants

@Bekiboo@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: add marketplace button to eID Wallet page - #790

Merged
coodos merged 6 commits into
mainfrom
feat/marketplace-btn
Feb 10, 2026
Merged

feat: add marketplace button to eID Wallet page#790
coodos merged 6 commits into
mainfrom
feat/marketplace-btn

Conversation

@Bekiboo

@BekibooBekiboo commented Feb 9, 2026

Copy link
Copy Markdown
Collaborator

Description of change

Added a button link to marketplace on the main eid wallet page

Issue Number

Closes#781

Type of change

  • New (a change which implements a new feature)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Added a marketplace discovery button in the main area and embedded a marketplace link in the identity section.
    • Added a Settings icon in the header for quick access.
    • Removed the eVault identity card from the main view; eName and ePassport remain, with QR drawer, toasts, and profile status handling preserved.
  • Style

    • Updated navigation icons for improved interface presentation.

@BekibooBekiboo self-assigned this Feb 9, 2026
@Bekiboo
Bekiboo requested a review from coodos as a code ownerFebruary 9, 2026 08:34
@coderabbitai

coderabbitaiBot commented Feb 9, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

Replaces an eVault IdentityCard with a W3DS marketplace discovery Button.Nav, swaps an icon import to LinkSquare02Icon, and adds a header Settings button; preserves eName/ePassport UI, QR drawer, toast flows, and profile creation status handling with minor layout adjustments.

Changes

Cohort / File(s)Summary
Main page UI
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
Removed eVault IdentityCard rendering; added marketplace discovery Button.Nav (links to W3DS marketplace) in discovery and main areas; added header SettingsButton.Nav linking to /settings; replaced CircleArrowDataTransferDiagonalFreeIcons import with LinkSquare02Icon; preserved QR drawer, toast mechanisms, eName/ePassport sections, and profile creation status handling with layout/structure adjustments.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related issues

Suggested reviewers

  • coodos
  • sosweetham

Poem

🐰 I nudged a button, bright and new,
Swapped an icon, made room in view,
A settings hop up in the bar,
Marketplace shining like a star,
Hooray — the UI's got a fresh chew! 🎉

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check nameStatusExplanationResolution
Description check❓ InconclusiveThe description covers required sections but lacks detail in testing and implementation specifics; one checklist item (self-review) is unchecked, indicating incomplete preparation.Complete the self-review checklist item and provide more detail in the 'How the change has been tested' section with specific test scenarios or manual verification steps.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and specifically describes the main change: adding a marketplace button to the eID Wallet page, matching the primary objective.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/marketplace-btn

No actionable comments were generated in the recent review. 🎉

🧹 Recent nitpick comments
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1)

179-179: Consider adding a hover/active state for interactive feedback.

The earlier hover:bg-gray-200 was correctly removed (white-on-white contrast), but no replacement was added. The button now has zero visual feedback on interaction, which is a minor accessibility/UX gap.

Suggested fix
- class="rounded-3xl w-full bg-black-700 text-white p-4 mt-8 flex items-center justify-center gap-3 cursor-pointer"+ class="rounded-3xl w-full bg-black-700 text-white p-4 mt-8 flex items-center justify-center gap-3 cursor-pointer hover:bg-black-600 active:bg-black-800 transition-colors"

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Fix all issues with AI agents
In `@infrastructure/eid-wallet/src/routes/`(app)/main/+page.svelte:
- Line 75: Remove the leftover debug console.log by deleting the statement that
logs "status current" and profileCreationStatus in the +page.svelte component
(the console.log("status current", profileCreationStatus) line); ensure no other
debugging console statements remain in the component and, if needed for
production, replace with a structured log via the app's logger or remove
entirely to avoid leaking internal state.
- Around line 176-188: The hover style on the Button.Nav component causes white
text to become unreadable because hover:bg-gray-200 lightens the background;
update the Button.Nav class list (the component instance using Button.Nav and
HugeiconsIcon) to use a darker hover background such as hover:bg-black-600 or
hover:bg-gray-800 (or alternatively add a contrasting hover text class like
hover:text-black) so the text remains legible on hover.
- Around line 62-70: The async IIFE inside onMount that awaits
globalState.userController.user, globalState.userController.isFake, and
globalState.vaultController.vault can reject and currently has no error
handling; wrap the async function body in a try/catch (or append a .catch()) to
handle rejections, set/clear userData and ename appropriately on error, and log
or surface the error (e.g., via console.error or an existing logger) so failures
from userController.user, userController.isFake or vaultController.vault are not
unhandled.
- Around line 176-178: The external link using the Button.Nav component should
open in a new tab and be secured; add target="_blank" and rel="noopener
noreferrer" to the Button.Nav invocation that links to
"https://marketplace.w3ds.metastate.foundation/". Ensure the Button.Nav
component (the anchor wrapper) forwards arbitrary attributes to the underlying
<a> (e.g., via $$restProps or equivalent) so target and rel are rendered; if it
doesn't, update Button.Nav to accept and pass through these attributes before
adding them to the instance in +page.svelte.
🧹 Nitpick comments (3)
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (3)

13-14: Nit: consolidate imports from the same module.

onDestroy can be merged into the import on line 13.

- import { type Snippet, getContext, onMount } from "svelte";- import { onDestroy } from "svelte";+ import { type Snippet, getContext, onDestroy, onMount } from "svelte";

25-26: statusInterval doesn't need $state — it's never used in the template.

A plain let is sufficient for the interval handle since it's only read/written imperatively in onMount/onDestroy.

- let statusInterval: ReturnType<typeof setInterval> | undefined =- $state(undefined);+ let statusInterval: ReturnType<typeof setInterval> | undefined = undefined;

77-84: Consider making profileCreationStatus reactive instead of polling.

Polling every 1 second is a pragmatic workaround, but if vaultController can expose a reactive store or signal, that would be cleaner and more efficient. If that's not feasible right now, this works fine.

Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@infrastructure/eid-wallet/src/routes/`(app)/main/+page.svelte:
- Around line 180-184: Replace the generic alt text on the img element used in
the Discover header by updating the alt attribute on the <img class="w-12"
src="/images/W3DSLogoWhite.svg" ...> element from "logo" to a more descriptive
label like "W3DS Logo" (or "W3DS") so screen readers convey meaningful
information about the image.

Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
@coodos
coodos merged commit c187bab into mainFeb 10, 2026
4 checks passed
@coodos
coodos deleted the feat/marketplace-btn branch February 10, 2026 14:29
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 11, 2026
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request May 23, 2026
10 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] Button for MarketPlace in eID app

2 participants

@Bekiboo@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat: add marketplace button to eID Wallet page - #790

Merged
coodos merged 6 commits into
mainfrom
feat/marketplace-btn
Feb 10, 2026
Merged

feat: add marketplace button to eID Wallet page#790
coodos merged 6 commits into
mainfrom
feat/marketplace-btn

Conversation

@Bekiboo

@BekibooBekiboo commented Feb 9, 2026

Copy link
Copy Markdown
Collaborator

Description of change

Added a button link to marketplace on the main eid wallet page

Issue Number

Closes#781

Type of change

  • New (a change which implements a new feature)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Added a marketplace discovery button in the main area and embedded a marketplace link in the identity section.
    • Added a Settings icon in the header for quick access.
    • Removed the eVault identity card from the main view; eName and ePassport remain, with QR drawer, toasts, and profile status handling preserved.
  • Style

    • Updated navigation icons for improved interface presentation.

@BekibooBekiboo self-assigned this Feb 9, 2026
@Bekiboo
Bekiboo requested a review from coodos as a code ownerFebruary 9, 2026 08:34
@coderabbitai

coderabbitaiBot commented Feb 9, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

Replaces an eVault IdentityCard with a W3DS marketplace discovery Button.Nav, swaps an icon import to LinkSquare02Icon, and adds a header Settings button; preserves eName/ePassport UI, QR drawer, toast flows, and profile creation status handling with minor layout adjustments.

Changes

Cohort / File(s)Summary
Main page UI
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
Removed eVault IdentityCard rendering; added marketplace discovery Button.Nav (links to W3DS marketplace) in discovery and main areas; added header SettingsButton.Nav linking to /settings; replaced CircleArrowDataTransferDiagonalFreeIcons import with LinkSquare02Icon; preserved QR drawer, toast mechanisms, eName/ePassport sections, and profile creation status handling with layout/structure adjustments.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related issues

Suggested reviewers

  • coodos
  • sosweetham

Poem

🐰 I nudged a button, bright and new,
Swapped an icon, made room in view,
A settings hop up in the bar,
Marketplace shining like a star,
Hooray — the UI's got a fresh chew! 🎉

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check nameStatusExplanationResolution
Description check❓ InconclusiveThe description covers required sections but lacks detail in testing and implementation specifics; one checklist item (self-review) is unchecked, indicating incomplete preparation.Complete the self-review checklist item and provide more detail in the 'How the change has been tested' section with specific test scenarios or manual verification steps.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and specifically describes the main change: adding a marketplace button to the eID Wallet page, matching the primary objective.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/marketplace-btn

No actionable comments were generated in the recent review. 🎉

🧹 Recent nitpick comments
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1)

179-179: Consider adding a hover/active state for interactive feedback.

The earlier hover:bg-gray-200 was correctly removed (white-on-white contrast), but no replacement was added. The button now has zero visual feedback on interaction, which is a minor accessibility/UX gap.

Suggested fix
- class="rounded-3xl w-full bg-black-700 text-white p-4 mt-8 flex items-center justify-center gap-3 cursor-pointer"+ class="rounded-3xl w-full bg-black-700 text-white p-4 mt-8 flex items-center justify-center gap-3 cursor-pointer hover:bg-black-600 active:bg-black-800 transition-colors"

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Fix all issues with AI agents
In `@infrastructure/eid-wallet/src/routes/`(app)/main/+page.svelte:
- Line 75: Remove the leftover debug console.log by deleting the statement that
logs "status current" and profileCreationStatus in the +page.svelte component
(the console.log("status current", profileCreationStatus) line); ensure no other
debugging console statements remain in the component and, if needed for
production, replace with a structured log via the app's logger or remove
entirely to avoid leaking internal state.
- Around line 176-188: The hover style on the Button.Nav component causes white
text to become unreadable because hover:bg-gray-200 lightens the background;
update the Button.Nav class list (the component instance using Button.Nav and
HugeiconsIcon) to use a darker hover background such as hover:bg-black-600 or
hover:bg-gray-800 (or alternatively add a contrasting hover text class like
hover:text-black) so the text remains legible on hover.
- Around line 62-70: The async IIFE inside onMount that awaits
globalState.userController.user, globalState.userController.isFake, and
globalState.vaultController.vault can reject and currently has no error
handling; wrap the async function body in a try/catch (or append a .catch()) to
handle rejections, set/clear userData and ename appropriately on error, and log
or surface the error (e.g., via console.error or an existing logger) so failures
from userController.user, userController.isFake or vaultController.vault are not
unhandled.
- Around line 176-178: The external link using the Button.Nav component should
open in a new tab and be secured; add target="_blank" and rel="noopener
noreferrer" to the Button.Nav invocation that links to
"https://marketplace.w3ds.metastate.foundation/". Ensure the Button.Nav
component (the anchor wrapper) forwards arbitrary attributes to the underlying
<a> (e.g., via $$restProps or equivalent) so target and rel are rendered; if it
doesn't, update Button.Nav to accept and pass through these attributes before
adding them to the instance in +page.svelte.
🧹 Nitpick comments (3)
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (3)

13-14: Nit: consolidate imports from the same module.

onDestroy can be merged into the import on line 13.

- import { type Snippet, getContext, onMount } from "svelte";- import { onDestroy } from "svelte";+ import { type Snippet, getContext, onDestroy, onMount } from "svelte";

25-26: statusInterval doesn't need $state — it's never used in the template.

A plain let is sufficient for the interval handle since it's only read/written imperatively in onMount/onDestroy.

- let statusInterval: ReturnType<typeof setInterval> | undefined =- $state(undefined);+ let statusInterval: ReturnType<typeof setInterval> | undefined = undefined;

77-84: Consider making profileCreationStatus reactive instead of polling.

Polling every 1 second is a pragmatic workaround, but if vaultController can expose a reactive store or signal, that would be cleaner and more efficient. If that's not feasible right now, this works fine.

Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@infrastructure/eid-wallet/src/routes/`(app)/main/+page.svelte:
- Around line 180-184: Replace the generic alt text on the img element used in
the Discover header by updating the alt attribute on the <img class="w-12"
src="/images/W3DSLogoWhite.svg" ...> element from "logo" to a more descriptive
label like "W3DS Logo" (or "W3DS") so screen readers convey meaningful
information about the image.

Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
@coodos
coodos merged commit c187bab into mainFeb 10, 2026
4 checks passed
@coodos
coodos deleted the feat/marketplace-btn branch February 10, 2026 14:29
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 11, 2026
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request May 23, 2026
10 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] Button for MarketPlace in eID app

2 participants

@Bekiboo@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat: add marketplace button to eID Wallet page - #790

Merged
coodos merged 6 commits into
mainfrom
feat/marketplace-btn
Feb 10, 2026
Merged

feat: add marketplace button to eID Wallet page#790
coodos merged 6 commits into
mainfrom
feat/marketplace-btn

Conversation

@Bekiboo

@BekibooBekiboo commented Feb 9, 2026

Copy link
Copy Markdown
Collaborator

Description of change

Added a button link to marketplace on the main eid wallet page

Issue Number

Closes#781

Type of change

  • New (a change which implements a new feature)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Added a marketplace discovery button in the main area and embedded a marketplace link in the identity section.
    • Added a Settings icon in the header for quick access.
    • Removed the eVault identity card from the main view; eName and ePassport remain, with QR drawer, toasts, and profile status handling preserved.
  • Style

    • Updated navigation icons for improved interface presentation.

@BekibooBekiboo self-assigned this Feb 9, 2026
@Bekiboo
Bekiboo requested a review from coodos as a code ownerFebruary 9, 2026 08:34
@coderabbitai

coderabbitaiBot commented Feb 9, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

Replaces an eVault IdentityCard with a W3DS marketplace discovery Button.Nav, swaps an icon import to LinkSquare02Icon, and adds a header Settings button; preserves eName/ePassport UI, QR drawer, toast flows, and profile creation status handling with minor layout adjustments.

Changes

Cohort / File(s)Summary
Main page UI
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
Removed eVault IdentityCard rendering; added marketplace discovery Button.Nav (links to W3DS marketplace) in discovery and main areas; added header SettingsButton.Nav linking to /settings; replaced CircleArrowDataTransferDiagonalFreeIcons import with LinkSquare02Icon; preserved QR drawer, toast mechanisms, eName/ePassport sections, and profile creation status handling with layout/structure adjustments.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related issues

Suggested reviewers

  • coodos
  • sosweetham

Poem

🐰 I nudged a button, bright and new,
Swapped an icon, made room in view,
A settings hop up in the bar,
Marketplace shining like a star,
Hooray — the UI's got a fresh chew! 🎉

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check nameStatusExplanationResolution
Description check❓ InconclusiveThe description covers required sections but lacks detail in testing and implementation specifics; one checklist item (self-review) is unchecked, indicating incomplete preparation.Complete the self-review checklist item and provide more detail in the 'How the change has been tested' section with specific test scenarios or manual verification steps.
✅ Passed checks (2 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and specifically describes the main change: adding a marketplace button to the eID Wallet page, matching the primary objective.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/marketplace-btn

No actionable comments were generated in the recent review. 🎉

🧹 Recent nitpick comments
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1)

179-179: Consider adding a hover/active state for interactive feedback.

The earlier hover:bg-gray-200 was correctly removed (white-on-white contrast), but no replacement was added. The button now has zero visual feedback on interaction, which is a minor accessibility/UX gap.

Suggested fix
- class="rounded-3xl w-full bg-black-700 text-white p-4 mt-8 flex items-center justify-center gap-3 cursor-pointer"+ class="rounded-3xl w-full bg-black-700 text-white p-4 mt-8 flex items-center justify-center gap-3 cursor-pointer hover:bg-black-600 active:bg-black-800 transition-colors"

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Fix all issues with AI agents
In `@infrastructure/eid-wallet/src/routes/`(app)/main/+page.svelte:
- Line 75: Remove the leftover debug console.log by deleting the statement that
logs "status current" and profileCreationStatus in the +page.svelte component
(the console.log("status current", profileCreationStatus) line); ensure no other
debugging console statements remain in the component and, if needed for
production, replace with a structured log via the app's logger or remove
entirely to avoid leaking internal state.
- Around line 176-188: The hover style on the Button.Nav component causes white
text to become unreadable because hover:bg-gray-200 lightens the background;
update the Button.Nav class list (the component instance using Button.Nav and
HugeiconsIcon) to use a darker hover background such as hover:bg-black-600 or
hover:bg-gray-800 (or alternatively add a contrasting hover text class like
hover:text-black) so the text remains legible on hover.
- Around line 62-70: The async IIFE inside onMount that awaits
globalState.userController.user, globalState.userController.isFake, and
globalState.vaultController.vault can reject and currently has no error
handling; wrap the async function body in a try/catch (or append a .catch()) to
handle rejections, set/clear userData and ename appropriately on error, and log
or surface the error (e.g., via console.error or an existing logger) so failures
from userController.user, userController.isFake or vaultController.vault are not
unhandled.
- Around line 176-178: The external link using the Button.Nav component should
open in a new tab and be secured; add target="_blank" and rel="noopener
noreferrer" to the Button.Nav invocation that links to
"https://marketplace.w3ds.metastate.foundation/". Ensure the Button.Nav
component (the anchor wrapper) forwards arbitrary attributes to the underlying
<a> (e.g., via $$restProps or equivalent) so target and rel are rendered; if it
doesn't, update Button.Nav to accept and pass through these attributes before
adding them to the instance in +page.svelte.
🧹 Nitpick comments (3)
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (3)

13-14: Nit: consolidate imports from the same module.

onDestroy can be merged into the import on line 13.

- import { type Snippet, getContext, onMount } from "svelte";- import { onDestroy } from "svelte";+ import { type Snippet, getContext, onDestroy, onMount } from "svelte";

25-26: statusInterval doesn't need $state — it's never used in the template.

A plain let is sufficient for the interval handle since it's only read/written imperatively in onMount/onDestroy.

- let statusInterval: ReturnType<typeof setInterval> | undefined =- $state(undefined);+ let statusInterval: ReturnType<typeof setInterval> | undefined = undefined;

77-84: Consider making profileCreationStatus reactive instead of polling.

Polling every 1 second is a pragmatic workaround, but if vaultController can expose a reactive store or signal, that would be cleaner and more efficient. If that's not feasible right now, this works fine.

Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte Outdated

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@infrastructure/eid-wallet/src/routes/`(app)/main/+page.svelte:
- Around line 180-184: Replace the generic alt text on the img element used in
the Discover header by updating the alt attribute on the <img class="w-12"
src="/images/W3DSLogoWhite.svg" ...> element from "logo" to a more descriptive
label like "W3DS Logo" (or "W3DS") so screen readers convey meaningful
information about the image.

Comment threadinfrastructure/eid-wallet/src/routes/(app)/main/+page.svelte
@coodos
coodos merged commit c187bab into mainFeb 10, 2026
4 checks passed
@coodos
coodos deleted the feat/marketplace-btn branch February 10, 2026 14:29
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 11, 2026
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request May 23, 2026
10 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] Button for MarketPlace in eID app

2 participants

@Bekiboo@coodos