VI
Total Points
533
All time
Total Activities
348
All time
Activity Types
8
Different types
Activity Overview
279 contributions in the last year
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
Jan
Feb
Mar
Apr
Mon
Wed
Fri
Less
More
Achievements
7 badges earnedPoints Milestone
Awarded for reaching points milestones
2 / 3 tiers earned
bronze
100+ points
silver
500+ points
gold
1,000+ points
Consistency Champion
Awarded for maintaining activity streaks
2 / 3 tiers earned
bronze
7 day streak
silver
14 day streak
gold
30 day streak
Activity Milestone
Awarded for reaching activity count milestones
3 / 4 tiers earned
bronze
10+ activities
silver
50+ activities
gold
100+ activities
platinum
500+ activities
Activity Breakdown
272 total activities · 533 total points
Commit Created
189 (69.5%)·378 pts
Issue Opened
29 (10.7%)·58 pts
PR Merged
9 (3.3%)·45 pts
Issue Assigned
29 (10.7%)·29 pts
PR Reviewed
7 (2.6%)·14 pts
PR Opened
9 (3.3%)·9 pts
272
Total Activities
533
Total Points
6
Activity Types
2.0
Avg Points/Activity
Activity Timeline
56 of 348 activities· 1 of 24 months
April 202656 activities
Commit Created+2
Merge pull request #11 from ohcnetwork/feat/filter-panel-nested-drawer
Feat/filter panel nested drawer
Commented
Commented
Commented
Commit Created+2
Merge pull request #10 from ohcnetwork/feat/drawer-nested-root
Feat/drawer nested root
Commit Created+2
feat(filters): use nested drawer for inner controls inside FilterPanel on mobile
When FilterPanel renders as a Drawer on mobile, the inner operator
dropdown and value-selector drawers were mounting as new top-level
vaul Roots — vaul couldn't coordinate the gestures, so opening an
inner control instantly replaced the outer drawer instead of stacking
on top with the Sonner-like scale-back effect.
Introduce a small `FilterPanelMobileContext` flag set by the
FilterPanel's mobile DrawerContent. A `MobileDrawerRoot` helper picks
`DrawerNestedRoot` when the flag is true and falls back to plain
`Drawer` otherwise, so the standalone Filters component keeps using
top-level drawers and nothing changes on desktop.
Also re-exports vaul's NestedRoot as `DrawerNestedRoot` from
@/components/ui/drawer.
Commented
Commit Created+2
docs(sheet): add Nested Sheets example
Sheets compose naturally — opening a Sheet from inside another Sheet's
body stacks the second on top with its own overlay and focus trap.
Closing the inner sheet returns focus to the trigger in the parent.
No code change to the component itself; this is purely a new docs
example.
Commit Created+2
feat(drawer): add DrawerNestedRoot for stacked nested drawers
Re-exports vaul's Drawer.NestedRoot as DrawerNestedRoot from the
@/components/ui/drawer barrel and adds a 'Nested Drawers' example to
the docs registry. NestedRoot must be used (instead of Root) for the
inner drawer so vaul can coordinate the gesture and produce the
Sonner-like scale-back stacking effect when the inner drawer is
dragged or closed.
Commit Created+2
Merge pull request #9 from ohcnetwork/fix/drawer-sheet-close-animation
Fix/drawer sheet close animation
Commit Created+2
fix(button): correct prev/next nav padding and complete button-group radius for lg/xl
- dynamic-main-content: add data-icon="inline-start|inline-end" to the
prev/next chevrons so the button's has-data-[icon=...]:p{l,r}-3.5
selectors actually trim the icon-side padding (chevrons were sitting
with full px-4 padding, looking detached).
- button: add the missing in-data-[slot=button-group]:rounded-* clamp to
sizes lg, xl, icon-lg, icon-xl. lg/icon-lg use 10px (matches default),
xl/icon-xl use 12px (scales with their 48px height). Mirrors the
existing pattern on default/xs/sm/icon-xs/icon-sm so mixed-size
button groups now have consistent, clean joins.
Commit Created+2
refactor(drawer): drop redundant overlay comment
The overlay's behavior is now self-evident from the surrounding code
and the comment block on DrawerContent.
Commit Created+2
Merge pull request #8 from ohcnetwork/fix/drawer-sheet-close-animation
fix(drawer,sheet): play close animation when overlay is clicked
Commit Created+2
fix(drawer,sheet): play close animation when overlay is clicked
Move DrawerContext.Provider and SheetContext.Provider inside their
respective Content elements instead of between Portal and Content.
Radix Presence does cloneElement(child, { ref }) on its direct child to
attach a ref callback that captures getComputedStyle(node) into
stylesRef. Context Providers silently drop refs, leaving Presence's
stylesRef null. On close, getAnimationName(null) returns 'none' which
routes Presence's state machine straight to UNMOUNT, bypassing the
slide-out animation. The overlay had no such wrapper, which is why
only the content popped out instantly while the overlay correctly
faded over its full duration.
Verified via MutationObserver / rAF sampling that the drawer now
stays in DOM with animationName 'slideToBottom' for the full 500ms
exit and Radix Presence applies animation-fill-mode: forwards before
unmount, eliminating the end-of-animation flash. Mobile (390x844)
overlay tap and drag-to-close gestures both confirmed smooth.
Commit Created+2
feat: enhance filters with multi-select, and realistic badge count
- Prevent duplicate filter chips: open existing chip instead of adding new one
- Text input focus on re-select via openFilterId pattern
- Make select-type filters multi-selectable (checkbox UI)
- Fix justify-between layout for chevron vs badges in SelectOptionsPopover
- Memoize effectiveValues, selectedOptions, unselectedOptions for performance
- Stabilize clearOpenFilterId with useCallback
- Remove duplicate FilterValueSelector branch
- Consolidate onToggle multi-select branches
- Fix Tailwind v4 selector syntax and -space-x usage
- Badge count only includes filters with meaningful values selected
Commit Created+2
add filters component with ButtonGroup chips, non-modal dropdowns, and interactive field labels
Commit Created+2
refactor(button): add size-based stroke-width, generic AsyncButton example
- Add [&_svg]:stroke-* per size variant in button CVA (2 for xs/sm, 1.75 for default/lg, 1.5 for xl)
- Rewrite Button States example as a generic AsyncButton component
- Accepts promise-returning onClick, renders idle/success/error content slots
- CSS grid stack sizes to max(all states) for zero layout shift
- All states center-aligned via *:justify-center
- Consolidate duplicate spinner imports
- Fix data-table CardHeader padding
Commit Created+2
feat(data-table): add Loading Skeleton and CRUD Table examples
- Add skeleton prop to ColumnMeta type for per-column skeleton shapes
- Add Loading Skeleton example with toggle, animated skeleton rows, and skeleton footer
- Add CRUD Table example with search, status filter popover, row selection, sortable columns, row actions (edit, copy ID, delete), and pagination
- Add new imports: InputGroup, Popover, Label, toast (sonner), CardContent, Filter/MoreHorizontal/Search/X icons
Commit Created+2
Add Light Table & Striped Table examples, replace pagination with CareUI Pagination, remove shadow on active page link
Commit Created+2
Add sticky header to data-table, update scroll-area registry, fix dark mode scrollbar
Commit Created+2
Data-table: add pinnable columns with pin-to-left/right dropdown
- Add DataTablePinContext to data-table component; DataTableColumnHeader renders a sort + pin dropdown when context is active
- PinnableColumnsDemo: 6-column table with horizontal scroll, sticky pinned cells (inset box-shadow border), sort and pagination
- Code cleanup: move declare module after imports, explicit context type, fix Provider child indentation, remove template-literal anti-pattern
Commit Created+2
Data-table): column reordering via dropdown, faster dropdown animations
- Replace HTML5 drag-and-drop column reordering with a dropdown menu on
each DataTableColumnHeader (Asc / Desc + Move to Left / Move to Right)
- Add DataTableMoveContext to propagate moveColumn/columnOrder down to
each header without prop drilling
- Remove all drag attrs (draggable, onDragStart, onDragOver, onDrop,
cursor-grab) from TableHead
- Add modal={false} to all DropdownMenu instances inside data-table to
eliminate per-open DOM overhead that caused a visible opening delay in
table pages with many rows
- Tighten dropdown-menu animation: remove slide-in translations, use
strong ease-out cubic-bezier(0.23,1,0.32,1), zoom-in/out from 0.97,
faster close at 75ms
- Consolidate DropdownMenuItem/DropdownMenuSeparator registry imports
into @/components/ui/data-table (already re-exported)
Commit Created+2
Data-table: add expandable rows, cell borders, dense mode, auto-width, movable columns, and hideToolbar prop
Commit Created+2
fix: scientific color palette corrections for protanopia and tritanopia themes
Commit Created+2
Remap confusable color scales for protanopia and tritanopia themes
Commit Created+2
refactor: data-theme attribute for a11y themes, subtext on radio cards, cleanup ThemeProvider
Commit Created+2
Cleanup: deduplicate primary scale CSS and simplify dark theme class logic
Commit Created+2
Experiment matrix/pixel/unicode spinners and RadialSpinner with Button States
Commit Created+2
Split sidebar blocks into per-block demo files with shared hook
- Add @chenglou/pretext for pixel-accurate middle truncation on location selector
- Add conditional Tooltip on location selector (only when name is truncated)
- Switch location dropdown from DropdownMenuItem to DropdownMenuRadioGroup/RadioItem
- Block card click navigates in-place instead of opening new tab
Commit Created+2
Merge pull request #6 from ohcnetwork/dependabot/npm_and_yarn/vite-7.3.2
chore(deps-dev): bump vite from 7.2.7 to 7.3.2
Commit Created+2
feat(tabs): line variant full-width border, left-aligned, content-fit triggers; add tabs to sidebar dashboard
Commit Created+2
fix: dismiss loading screen when opening block preview/code pages
Commented