Ilia Mashkov
f9cdb06632
refactor: SidebarNav uses usePathname and Link instead of IntersectionObserver
2026-05-07 12:54:53 +03:00
Ilia Mashkov
9fa2156ee8
feat: SectionAccordion inactive state uses Link href instead of button onClick
2026-05-07 12:52:54 +03:00
Ilia Mashkov
ced77f6f07
fix: make output export build-only so dev route handlers work
2026-05-07 12:28:42 +03:00
Ilia Mashkov
f163b750b2
docs: add URL-driven section routing implementation plan
2026-05-07 11:48:55 +03:00
Ilia Mashkov
41d1a37352
docs: add URL-driven section routing design
2026-05-07 11:45:54 +03:00
Ilia Mashkov
1a413e3d04
feat: implement portfolio home page with split layout
2026-05-05 09:42:04 +03:00
Ilia Mashkov
24bf946cb0
refactor: SectionFactory static registry, remove dynamic imports
2026-05-05 09:41:56 +03:00
Ilia Mashkov
4219a7b4e7
fix: correct RSC error patterns and extract skills grouping to utility
2026-05-05 09:41:49 +03:00
Ilia Mashkov
4b18fc454e
chore: add mock API route handlers and dev env config
2026-05-05 09:41:39 +03:00
Ilia Mashkov
41edc7edf7
refactor: reorganize shared/lib into per-function subfolders
2026-04-24 11:43:08 +03:00
Ilia Mashkov
f3b4e1d064
refactor: extract contact links to shared config
2026-04-24 10:11:34 +03:00
Ilia Mashkov
fce4672218
feat: add groupByKey utility
2026-04-24 09:34:27 +03:00
Ilia Mashkov
d89dc2ee70
chore: add vitest/globals types, remove redundant vitest imports, fix pre-existing lint issues
2026-04-24 09:34:27 +03:00
Ilia Mashkov
f0fccd55f1
fix: replace revalidate with cache force-cache for SSG compatibility
2026-04-24 09:34:27 +03:00
Ilia Mashkov
5dbf5e34c2
fix: mock next/font in tests and remove broken shared export
2026-04-23 21:01:46 +03:00
Ilia Mashkov
68d5de3716
chore: setup lefthook for pre-commit checks
2026-04-23 21:00:43 +03:00
Ilia Mashkov
1d333fd945
chore: format codebase and move SectionAccordion to entities/Section
2026-04-23 20:52:43 +03:00
Ilia Mashkov
8aff27f8ac
chore: configure biome for linting and formatting
2026-04-23 20:40:11 +03:00
Ilia Mashkov
9c139adbf5
feat: define PocketBase types and fetch client
2026-04-23 20:35:46 +03:00
Ilia Mashkov
759f579695
fix: storybook font rendering and shared fonts module
2026-04-23 20:35:32 +03:00
Ilia Mashkov
de03d21429
feat: add Storybook with component stories
...
Installs @storybook/nextjs-vite. Stories co-located with components,
grouped by layer (Shared/Entities/Widgets). Multi-variant cases use
render functions instead of one story per variant/size.
2026-04-19 09:19:17 +03:00
Ilia Mashkov
a47341ffcb
feat: add Navigation widget barrel export
2026-04-19 08:40:10 +03:00
Ilia Mashkov
cfe50069b7
feat: add MobileNav, SidebarNav, and UtilityBar widgets
...
TDD implementation of three navigation widgets: mobile overlay toggle,
fixed sidebar with IntersectionObserver-driven active section tracking,
and utility bar with contact info and CV download action.
2026-04-19 08:40:08 +03:00
Ilia Mashkov
590147adb1
feat: add experience entity (ExperienceCard) and entities barrel export
2026-04-19 08:37:24 +03:00
Ilia Mashkov
eeef679f69
feat: add project entity (ProjectMetadata, ProjectCard, DetailedProjectCard)
2026-04-19 08:37:21 +03:00
Ilia Mashkov
0fa66f275d
feat: add shared/ui and shared barrel exports; add FSD path aliases to tsconfig
2026-04-19 08:34:38 +03:00
Ilia Mashkov
ad188fcb21
feat: add TechStackBrick and TechStackGrid components to shared/ui
2026-04-19 08:27:56 +03:00
Ilia Mashkov
faf6c574d1
feat: add SectionAccordion component to shared/ui
2026-04-19 08:27:08 +03:00
Ilia Mashkov
d17104b294
feat: add Section and Container components to shared/ui
2026-04-19 08:26:26 +03:00
Ilia Mashkov
9c52889b72
fix: associate Input/Textarea labels and wire error aria-describedby
...
Uses useId() for stable IDs so label htmlFor matches input id,
and error spans are referenced via aria-describedby.
2026-04-19 08:25:07 +03:00
Ilia Mashkov
dc3bedeeec
feat: add Input and Textarea components to shared/ui
2026-04-19 08:20:29 +03:00
Ilia Mashkov
26860b27e5
feat: add Card component family to shared/ui
2026-04-19 08:19:58 +03:00
Ilia Mashkov
11e7aa9a96
feat: add Button component to shared/ui
2026-04-19 08:19:23 +03:00
Ilia Mashkov
169988906c
refactor: rename shared/ui component dirs to PascalCase
2026-04-18 23:26:14 +03:00
Ilia Mashkov
f95588381d
fix: export BadgeVariant type from Badge public API
2026-04-18 15:54:45 +03:00
Ilia Mashkov
bb9c91b4f8
feat: add Badge component to shared/ui
2026-04-18 15:53:01 +03:00
Ilia Mashkov
db2d7b78dd
fix: fix indentation, export ClassValue, add object-syntax test
2026-04-18 15:52:05 +03:00
Ilia Mashkov
f4c95d5ea6
feat: add cn utility to shared/lib
2026-04-18 15:49:24 +03:00
Ilia Mashkov
38d7a59e1e
fix: add h6 to heading selector and display:block to grain overlay
2026-04-18 15:48:29 +03:00
Ilia Mashkov
939884c95d
fix: expose all semantic color tokens in @theme inline block
2026-04-18 15:46:40 +03:00
Ilia Mashkov
3a29b99ae8
feat: transfer brutalist design tokens and configure next/font
2026-04-18 15:45:55 +03:00
Ilia Mashkov
7c00f8bb1e
chore: add $routes and @ aliases to vitest config
2026-04-18 15:41:08 +03:00
Ilia Mashkov
08071b3d27
chore: configure vitest with jsdom and layer aliases
2026-04-18 15:39:44 +03:00
Ilia Mashkov
0fdafb22f1
chore: add test infrastructure and static export config
2026-04-18 15:32:01 +03:00
Ilia Mashkov
2dfd9a81b7
chore: update .gitignore
2026-04-18 14:53:36 +03:00
Ilia Mashkov
8d0df31537
feature: initial TS + Next.js + Tailwind + ESLint setup
2026-04-18 14:52:39 +03:00