Skip to content

feat(web): rebuild date pickers on the shadcn calendar and revamp the policy audit list - #1101

Merged
multipletwigs merged 11 commits into
mainfrom
feat/date-picker-policy-audit
Aug 4, 2026
Merged

feat(web): rebuild date pickers on the shadcn calendar and revamp the policy audit list#1101
multipletwigs merged 11 commits into
mainfrom
feat/date-picker-policy-audit

Conversation

@multipletwigs

@multipletwigs multipletwigs commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Date pickers

  • Rebuilds Calendar on the shadcn base calendar (react-day-picker 10) at natural w-fit sizing, with animated month transitions (rdp's built-in animate + its keyframes copied into globals.css; exiting month fades out).
CleanShot 2026-08-04 at 23 10 41@2x CleanShot 2026-08-04 at 23 11 21@2x

Policy audit page

  • Filters apply immediately on change by replacing the URL (policy-audit-filter-bar.tsx); Apply/Clear/"More filters" removed, all five filters in one row. The date range only navigates once both ends are chosen.
  • Full-height DashboardWorkspaceCard layout matching approvals/policies, with the shared PaginatedFooter and URL-backed pageSize (strict 10/25/50/100 vocabulary) plumbed through parsePolicyAuditFilters/fetchPolicyAuditList/neighbors.
  • Operation column split into Module + Operation; the family prefix is stripped from the operation label only when the type carries it (verified against stored operation_type values — custody_signer_check under raw_sign renders in full). "Operation family" renamed to "Module" (en/fr).
  • Asset/amount resolves mints through WELL_KNOWN_TOKEN_BY_MINT and renders a TokenMark logo/monogram.
  • Dead message keys removed (apply/more-filters/pager/from-to/clear).

… policy audit list

Date pickers:
- Rebuild Calendar on the shadcn base calendar (react-day-picker) at
  natural w-fit sizing with animated month transitions, and compose
  DatePicker/DateTimePicker/DateRangePicker as popover + calendar
- Range popup matches the trigger width (min-w-fit floor), hides
  outside days, supports disableFuture, and only commits complete ranges
- Fix popover-open layout shift (base-ui focus guards vs space-y) and
  day-cell centering; trim unused picker props

Policy audit:
- Filters apply immediately via URL replace: no Apply/Clear step
- Full-height workspace card with the shared PaginatedFooter and a
  URL-backed pageSize (10/25/50/100)
- Split the Operation column into Module and Operation (family prefix
  stripped only when the type carries it); rename Family to Module
- Resolve asset mints to well-known symbols with TokenMark logos
- Swap native selects for the DS Select (adds name/defaultValue form
  support; RSC-safe item-label collection)
@vercel

vercel Bot commented Aug 4, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
sdp-docs Ready Ready Preview Aug 4, 2026 5:03pm
sdp-web Ready Ready Preview Aug 4, 2026 5:03pm

Request Review

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Dependency Review

The following issues were found:
  • ❌ 1 vulnerable package(s)
  • ✅ 0 package(s) with incompatible licenses
  • ✅ 0 package(s) with invalid SPDX license definitions
  • ✅ 0 package(s) with unknown licenses.
See the Details below.

Vulnerabilities

pnpm-lock.yaml

NameVersionVulnerabilitySeverity
fast-uri3.1.4fast-uri vulnerable to host confusion via backslash authority introducerhigh
Only included vulnerabilities with severity high or higher.

OpenSSF Scorecard

PackageVersionScoreDetails
npm/date-fns 4.4.0 🟢 4.6
Details
CheckScoreReason
Packaging⚠️ -1packaging workflow not detected
Code-Review⚠️ 0Found 1/21 approved changesets -- score normalized to 0
Maintained🟢 1030 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Security-Policy🟢 10security policy file detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Binary-Artifacts🟢 10no binaries found in the repo
License⚠️ 0license file not detected
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
Fuzzing⚠️ 0project is not fuzzed
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
npm/react-day-picker 10.0.1 🟢 5.7
Details
CheckScoreReason
Maintained🟢 1013 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Security-Policy🟢 10security policy file detected
Code-Review⚠️ 0Found 2/25 approved changesets -- score normalized to 0
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
License🟢 10license file detected
Fuzzing⚠️ 0project is not fuzzed
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
Signed-Releases⚠️ -1no releases found
SAST🟢 9SAST tool is not run on all commits -- score normalized to 9
npm/fast-uri 3.1.4 🟢 8.2
Details
CheckScoreReason
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Code-Review🟢 5Found 15/28 approved changesets -- score normalized to 5
Binary-Artifacts🟢 10no binaries found in the repo
Dependency-Update-Tool🟢 10update tool detected
Pinned-Dependencies🟢 5dependency not pinned by hash detected -- score normalized to 5
Packaging⚠️ -1packaging workflow not detected
Maintained🟢 1026 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Security-Policy🟢 10security policy file detected
Token-Permissions🟢 10GitHub workflow tokens follow principle of least privilege
Vulnerabilities🟢 100 existing vulnerabilities detected
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
SAST🟢 7SAST tool is not run on all commits -- score normalized to 7
License🟢 9license file detected
Signed-Releases⚠️ -1no releases found
Fuzzing⚠️ 0project is not fuzzed
CI-Tests🟢 1018 out of 18 merged PRs checked by a CI test -- score normalized to 10
Contributors🟢 10project has 17 contributing companies or organizations
npm/date-fns 4.4.0 🟢 4.6
Details
CheckScoreReason
Packaging⚠️ -1packaging workflow not detected
Code-Review⚠️ 0Found 1/21 approved changesets -- score normalized to 0
Maintained🟢 1030 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Security-Policy🟢 10security policy file detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Binary-Artifacts🟢 10no binaries found in the repo
License⚠️ 0license file not detected
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
Fuzzing⚠️ 0project is not fuzzed
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0
npm/electron-to-chromium 1.5.397 UnknownUnknown
npm/node-releases 2.0.51 🟢 4
Details
CheckScoreReason
Maintained🟢 1030 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Binary-Artifacts🟢 10no binaries found in the repo
Code-Review⚠️ 0Found 0/30 approved changesets -- score normalized to 0
Packaging⚠️ -1packaging workflow not detected
Pinned-Dependencies🟢 3dependency not pinned by hash detected -- score normalized to 3
SAST⚠️ 0no SAST tool detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Security-Policy⚠️ 0security policy file not detected
License🟢 10license file detected
Fuzzing⚠️ 0project is not fuzzed
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
npm/react-day-picker 10.0.1 🟢 5.7
Details
CheckScoreReason
Maintained🟢 1013 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 10
Packaging⚠️ -1packaging workflow not detected
Security-Policy🟢 10security policy file detected
Code-Review⚠️ 0Found 2/25 approved changesets -- score normalized to 0
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Token-Permissions⚠️ 0detected GitHub workflow tokens with excessive permissions
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Binary-Artifacts🟢 10no binaries found in the repo
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
License🟢 10license file detected
Fuzzing⚠️ 0project is not fuzzed
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
Signed-Releases⚠️ -1no releases found
SAST🟢 9SAST tool is not run on all commits -- score normalized to 9
npm/terser 5.49.0 🟢 5.9
Details
CheckScoreReason
Maintained🟢 1018 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
Security-Policy🟢 10security policy file detected
Packaging⚠️ -1packaging workflow not detected
Code-Review⚠️ 1Found 3/29 approved changesets -- score normalized to 1
Token-Permissions🟢 10GitHub workflow tokens follow principle of least privilege
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Binary-Artifacts🟢 10no binaries found in the repo
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Pinned-Dependencies🟢 5dependency not pinned by hash detected -- score normalized to 5
License🟢 9license file detected
Fuzzing⚠️ 0project is not fuzzed
Signed-Releases⚠️ -1no releases found
Branch-Protection⚠️ 0branch protection not enabled on development/release branches
SAST⚠️ 0SAST tool is not run on all commits -- score normalized to 0

Scanned Files

  • apps/sdp-web/package.json
  • pnpm-lock.yaml

@greptile-apps

greptile-apps Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR rebuilds the dashboard date pickers on the shared shadcn calendar and redesigns the policy audit list with immediate URL-backed filters, configurable pagination, and richer operation and asset presentation.

  • Adds shared date, date-time, and date-range picker components and adopts them across dashboard workflows.
  • Reworks the policy audit page layout, filter controls, columns, token display, and pagination.
  • Restricts policy audit page sizes to supported values and propagates the selected size through list and neighbor calculations.
  • Adds supporting styles, localization source copy, dependencies, and focused unit-test updates.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains; the previously reported footer mismatch is resolved by rendering and navigating from the server-clamped result page.

Important Files Changed

Filename Overview
apps/sdp-web/src/components/ui/date-picker.tsx Introduces localized shared date, date-time, and date-range picker controls built on the new calendar component.
apps/sdp-web/src/components/ui/calendar.tsx Rebuilds the calendar presentation and navigation on react-day-picker.
apps/sdp-web/src/app/dashboard/custody/[walletId]/policy/policy-audit-list.tsx Reorganizes the audit list into the workspace-card layout with split operation columns, token marks, empty state, and shared pagination.
apps/sdp-web/src/app/dashboard/custody/[walletId]/policy/policy-audit-filter-bar.tsx Adds immediate URL-backed policy audit filtering and uses the server-rendered page value for pagination.
apps/sdp-web/src/app/dashboard/custody/[walletId]/policy/policy-audit.data.ts Adds validated page-size parsing and carries the selected page size through remote and local pagination and neighbor calculations.

Reviews (9): Last reviewed commit: "fix(e2e): retry Clerk admin requests on ..." | Re-trigger Greptile

Local date filtering clamps out-of-range pages to the result's page count,
but the footer rendered and navigated from the raw URL page, showing a page
the list wasn't on. The footer now takes the page the server actually
rendered.
…ndation/solana-developer-platform into feat/date-picker-policy-audit
Header, five-filter row, plain row pulses, and a footer bar inside the
workspace card — replacing the per-cell mobile/desktop table skeleton
that mirrored the removed layout.
The panel sits against the viewport edge on the right; also drops the
no-op xl:rounded-tl-[16px] (rounded-2xl already is 16px).
@multipletwigs
multipletwigs enabled auto-merge (squash) August 4, 2026 16:56
Comment thread apps/sdp-web/playwright/support/clerk-admin.ts Dismissed
@resourcefulmind
resourcefulmind self-requested a review August 4, 2026 17:30

@resourcefulmind resourcefulmind left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Two things I liked:

  1. The local filtering loop in policy-audit.data.ts throws a 422 at POLICY_AUDIT_MAX_LOCAL_FILTER_PAGES
    instead of quietly returning a short list. We have the opposite pattern in the CSV export on #962, which
    truncates at 10k rows with no signal, and this is clearly the better call.

  2. The date-picker tests go straight at the two things that actually break date pickers, the UTC offset round-trip and committing only a complete range. Easy to skip both and find out later.

Catalogs are en only with the dead keys removed, which is the #1022 rule done right.

@multipletwigs
multipletwigs merged commit b65e884 into main Aug 4, 2026
34 checks passed
@multipletwigs
multipletwigs deleted the feat/date-picker-policy-audit branch August 4, 2026 17:42
Sign up for free to 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.

3 participants