Michael
a063090a52
fix(web): stop React 19 portal removeChild/insertBefore crashes ( #624 )
...
* fix(web): replace custom Dialog with Radix to stop portal races
Hand-rolled createPortal siblings on document.body raced with Radix
Select/DropdownMenu/Sonner under React 19 (insertBefore/removeChild).
Use @radix-ui/react-dialog like select/dropdown adapters and bail out
overview ResizeObserver setState when values are unchanged.
Signed-off-by: Mikhail Neradkov <michael.neradkov@gmail.com>
* fix(web): stop portal removeChild races on search and shell
Move Radix portals to #skillhub-portals, drop language-switcher body
portal (match UserMenu), remove Select/Dropdown exit animations, and keep
previous search results while typing to avoid skeleton unmount churn.
Signed-off-by: Mikhail Neradkov <michael.neradkov@gmail.com>
* fix(web): systemic overlay teardown for React 19 removeChild
Render Select/Dropdown in-tree (no Portal), translate=no on overlays,
dismiss overlays on pathname change, defer navigate after close, host
Toaster in #skillhub-portals, and add recoverable RouteError UI.
Signed-off-by: Mikhail Neradkov <michael.neradkov@gmail.com>
* fix(web): harden overlay dismiss after code review
Clip decorative layer only, dismiss Dialog via overlay pointer events,
log RouteError once in useEffect, and defer skill-detail leave navigations.
Signed-off-by: Mikhail Neradkov <michael.neradkov@gmail.com>
* fix(web): batch starred highlight and defer Sonner toasts
Avoid N× per-card star fetches on /search and flushSync toast races
during React 19 list re-renders (removeChild / insertBefore).
Signed-off-by: Mikhail Neradkov <michael.neradkov@gmail.com>
* fix(web): block Chrome Translate DOM races on skill overview
Keep html/#root notranslate, sync lang with i18n, and harden overview
expand so memoized markdown + quiet ResizeObserver avoid insertBefore crashes.
Signed-off-by: Mikhail Neradkov <michael.neradkov@gmail.com>
---------
Signed-off-by: Mikhail Neradkov <michael.neradkov@gmail.com>
2026-08-04 13:59:37 +08:00
dongmucat
ed04c97e8f
feat: Implement initial web application structure, core pages, and UI components with i18n support.
2026-03-17 17:11:16 +08:00
yun-zhi-ztl
39b0f3c852
fix(security): add baseline content security policy
2026-03-15 17:40:20 +08:00
wowo-zZ
01c5d43625
feat(web): add SkillHub logo as browser favicon
...
Add favicon.svg to web/public directory and configure it in index.html
to display the SkillHub logo in browser tabs.
2026-03-14 11:45:55 +08:00
vsxd
9ae9b93ca7
Refine production compose runtime config
2026-03-13 17:00:47 +08:00
vsxd
78a37e2430
feat(web): redesign homepage with modern landing page
...
- Add new landing page with particle animation system
- Implement "Tech Weave" aesthetic with cyan/violet gradient theme
- Update fonts to Syne (headings) and IBM Plex Sans (body)
- Create hero section with search bar and CTA buttons
- Add feature showcase with 6 core capabilities
- Include stats display and call-to-action section
- Update routing to use landing page as homepage
- Keep original home page accessible at /skills route
Design highlights:
- Canvas-based particle connection animation (80 nodes)
- Dark theme with gradient effects and glow orbs
- Smooth fade-up animations with staggered delays
- Hover effects on cards and buttons
- Responsive layout for mobile/tablet/desktop
2026-03-12 22:27:58 +08:00
vsxd
6305fcca39
feat(frontend): redesign UI with Aurora Tech theme
...
- Typography: Playfair Display (hero serif) + Outfit (headings) + DM Sans (body) + JetBrains Mono (code)
- Color: light-first with cyan primary + violet accent, deep navy dark theme via .dark class
- Visual: dot-grid texture, gradient glow orbs, glassmorphism nav/search, card hover animations, staggered fade-in
- Layout: glass header, footer with links, hero with gradient text + CTA buttons
- Components: all UI primitives (Button/Card/Input/Tabs/Dialog/Table/Select/Textarea) updated
- Pages: all 15+ pages restyled including home, search, detail, login, dashboard, admin
2026-03-12 21:11:41 +08:00
vsxd
e6956e79fc
feat(web): implement login page, dashboard, and API token management
...
- Login page with dynamic OAuth provider buttons from /api/v1/auth/providers
- Dashboard with AuthGuard, user info display, and token management
- TokenList component with create/delete operations via TanStack Query
- CreateTokenDialog with one-time token display and copy functionality
- API client with typed auth and token endpoints
- shadcn/ui components: Button, Card, Dialog, Table, Input, Label
- Tailwind CSS with CSS variables theming
- TanStack Router with Home, Login, Dashboard routes
- ESLint + TypeScript strict mode configuration
2026-03-12 00:13:50 +08:00