Skip to content

feat: Add missing shadcn components and improve docs#32

Merged
stevethomas merged 10 commits intomainfrom
feat/add-missing-shadcn-components
Jan 19, 2026
Merged

feat: Add missing shadcn components and improve docs#32
stevethomas merged 10 commits intomainfrom
feat/add-missing-shadcn-components

Conversation

@stevethomas
Copy link
Member

@stevethomas stevethomas commented Jan 18, 2026

Summary

Adds 23 additional shadcn-vue components to the Gooey component library, completing the coverage of components available in the official shadcn-vue registry.

New Components

Forms (11 components):

  • Calendar, Range Calendar - Date selection components
  • Radio Group - Single-select radio buttons
  • Toggle, Toggle Group - Toggle buttons for single/multiple selection
  • Number Field - Numeric input with increment/decrement
  • Pin Input - OTP-style input fields
  • Tags Input - Multi-value tag input
  • Field, Form - Form layout and vee-validate integration
  • Input Group - Input with addons/buttons

Components (10 components):

  • Aspect Ratio - Maintain aspect ratios
  • Button Group - Grouped action buttons
  • Hover Card - Rich hover tooltips
  • Kbd - Keyboard shortcut display
  • Menubar - Application menubars
  • Scroll Area - Custom scrollbars
  • Sonner - Modern toast notifications
  • Spinner - Loading indicator
  • Item - List item component

Page Layout (3 components):

  • Resizable - Resizable panel layouts
  • Stepper - Multi-step processes
  • Chart - Charting utilities (unovis integration)

Technical Changes

  • All components exported from src/index.ts
  • Showcase pages with examples for each component
  • Navigation and routing updated
  • Fixed CalendarHeading/RangeCalendarHeading slot bindings
  • Fixed Sonner export naming conflict (renamed to Sonner)
  • Added @types/d3-dispatch override for TypeScript compatibility
  • Added skipLibCheck: true to tsconfig.json

Test Coverage

  • Fixed textarea tests (removed tests for non-existent charLimit feature)
  • Added smoke tests for all 30 components that were missing tests
  • All 64 components now have test coverage (88 tests total)

Build Improvements

  • Fixed build order: vite build runs before type-check so emptyOutDir: true works correctly
  • Added dist/index-*.js to gitignore (docs app bundle artifact)
  • Cleaned up stale type definitions from deleted components

Not Available in Registry

Some components from the shadcn-vue docs sidebar are not yet available in the CLI registry:

  • native-select, typography, data-table

Anything the reviewer needs to know

  • No breaking changes - all additions are new exports
  • Build artifacts are now properly cleaned between builds
  • All components have smoke test coverage

Test plan

  • npm run build passes
  • npm run lint passes
  • npm run test passes (88 tests)
  • Verify each component renders correctly in the docs app
  • Test interactive components (Calendar, Toggle, etc.)

🤖 Generated with Claude Code

stevethomas and others added 4 commits January 18, 2026 21:21
- Add Alert, Breadcrumb, Context Menu, Navigation Menu components
- Add Sidebar component with mobile support
- Add ResponsiveTable custom component with haptic feedback
- Add composables: useMobileNavigation, useHapticFeedback
- Improve landing page with feature cards and quick links
- Enhance Button showcase with variants, sizes, icons, states
- Add showcase pages for all new components

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Extract navigation config to separate module to preserve route hierarchy
- Fix SidebarNavigation TypeScript types
- Use collapsible="none" on Sidebar demo to prevent fixed positioning

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The Sidebar component uses fixed positioning which conflicts with
embedding it in the docs page layout. Replaced with documentation
listing available components and link to shadcn/ui docs.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fixes TypeScript module resolution when using the package
with projects that respect package.json exports.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
stevethomas and others added 2 commits January 19, 2026 11:59
Forms:
- Calendar, Range Calendar (date selection)
- Radio Group, Toggle, Toggle Group
- Number Field, Pin Input, Tags Input
- Field, Form (vee-validate integration), Input Group

Components:
- Aspect Ratio, Button Group, Hover Card
- Kbd, Menubar, Scroll Area
- Sonner (modern toast), Spinner, Item

Page Layout:
- Resizable (panels), Stepper, Chart (unovis integration)

Also includes:
- Showcase pages for all new components
- Navigation and routing updates
- Fixed CalendarHeading/RangeCalendarHeading slot bindings
- Fixed Sonner export naming conflict
- Added @types/d3-dispatch override for TS compatibility
- Added skipLibCheck to tsconfig.json

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
stevethomas and others added 4 commits January 19, 2026 12:58
Add a custom DatePicker component that composes Calendar, Popover, and Button
components. Features include:
- v-model support for DateValue
- Custom placeholder text
- Disabled state
- Custom class styling

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add DateFormatter for human-readable date display (e.g., "January 15, 2025")
- Add layout="month-and-year" for month/year dropdown navigation
- Auto-close popover when date is selected
- Align popover to start

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix failing textarea tests (removed non-existent charLimit feature tests)
- Update textarea showcase to remove invalid char-limit prop
- Add smoke tests for 30 components missing test coverage:
  alert, aspect-ratio, breadcrumb, button-group, calendar, chart,
  context-menu, date-picker, field, form, hover-card, input-group,
  item, kbd, menubar, navigation-menu, number-field, pin-input,
  radio-group, range-calendar, resizable, scroll-area, separator,
  sidebar, sonner, spinner, stepper, tags-input, toggle, toggle-group

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove DatePicker component (using upstream Calendar instead)
- Remove stale type definitions for deleted components
- Fix build order: vite build before type-check so emptyOutDir works
- Add dist/index-*.js to gitignore (docs app bundle)
- Set emptyOutDir: true to prevent stale files

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
inheritAttrs: false,
})

const { isMobile, state, openMobile, setOpenMobile } = useSidebar()
Copy link

Choose a reason for hiding this comment

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

Bug: The Sidebar component unconditionally calls useSidebar(), which will throw an error if not wrapped in a SidebarProvider, even when collapsible="none" and the context is not used.
Severity: HIGH

Suggested Fix

The call to useSidebar() should be made conditional. It should only be executed when the collapsible prop is not equal to 'none', as the returned values are not used in that case. This will allow the component to be used in its static form without requiring a provider.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: src/components/sidebar/Sidebar.vue#L26

Potential issue: The `Sidebar` component calls the `useSidebar()` hook unconditionally
on line 26. This hook requires a `SidebarProvider` to be present in the parent component
tree and will throw an injection error if it's missing. However, when the component is
used with the prop `collapsible="none"`, it renders a static version that does not use
any of the values from the context. Therefore, any attempt to use `<Sidebar
collapsible="none">` without a `SidebarProvider` will cause the application to crash,
even though it should logically work as a standalone component in this configuration.

Did we get this right? 👍 / 👎 to inform future reviews.

@stevethomas stevethomas merged commit 5b75ceb into main Jan 19, 2026
2 checks passed
@stevethomas stevethomas deleted the feat/add-missing-shadcn-components branch January 19, 2026 04:46
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.

1 participant