Skip to content

Add Vue components and utilities for calendar, input, badges, and more#137

Merged
SergioRibera merged 5 commits intomainfrom
claude/fix-ui-components-jA0Yw
May 2, 2026
Merged

Add Vue components and utilities for calendar, input, badges, and more#137
SergioRibera merged 5 commits intomainfrom
claude/fix-ui-components-jA0Yw

Conversation

@SergioRibera
Copy link
Copy Markdown
Member

Summary

This PR adds a comprehensive set of new Vue components and supporting utilities to the design system, expanding the component library with calendar, search input, dropdown, progress bar, and several smaller UI components.

Key Changes

New Components

  • Calendar (rs-calendar.vue): Full-featured calendar component supporting single, multiple, and range date selection modes with month navigation
  • Input Search (rs-input-search.vue): Search input with optional filter dropdown functionality
  • Dropdown (rs-dropdown.vue): Status dropdown for selecting between completed, reading, pending, and unread states
  • Progress Bar (rs-progress-bar.vue): Visual progress indicator with percentage display and Ferris mascot icon
  • Badge (rs-badge.vue): Status badge component with text and numeric display modes
  • Chip (rs-chip.vue): Enhanced chip component with new "official" variant
  • Input (rs-input.vue): Base input component with error state support
  • Card (rs-card.vue): Flexible card container with clickable and disabled states
  • Tag (rs-tag.vue): Selectable tag component
  • Avatar (rs-avatar.vue): User avatar component with configurable size
  • Collaborators (rs-collaborators.vue): Display list of collaborators with GitHub link

New Icons

  • Arrow icons: rs-arrow-left.vue, rs-arrow-right.vue, rs-arrow-up.vue, rs-arrow-down.vue
  • Utility icons: rs-search.vue, rs-filter.vue, rs-github.vue, rs-star-bold.vue, rs-ferris.vue

Utilities

  • Date utilities (utils/date.ts): Calendar day generation, month navigation functions (getCalendarDays, addMonths, subMonths)

Showcase Components

Added showcase/demo components for all new components to support the design system documentation

Updates

  • Modified rs-button.vue to support polymorphic rendering with as prop
  • Enhanced rs-chip.vue with "official" variant
  • Updated input styling with improved focus states and dark mode support
  • Updated component exports in index.ts and showcases.ts
  • Updated React chip component to include "official" variant

Notable Implementation Details

  • Calendar component supports three selection modes (single, multiple, range) with flexible date handling
  • Input search includes collapsible filter dropdown with tag-based selection
  • Components use computed properties for dynamic class binding and state management
  • Full dark mode support across all new components
  • Proper TypeScript typing for component props and emits
  • Showcase components follow the design system's documentation pattern

https://claude.ai/code/session_01H52jjqmpT9H93RS31mE9ir

claude added 4 commits April 30, 2026 22:08
- input: visible dark-mode default border, focus override stays
  primary in dark, brighter error text (error-600 light /
  error-300 dark), icon color dims correctly when disabled
- chip: add `official` variant (V-400 secondary) for "Oficial"
  badges, matching the Figma legend
Port the same Figma-aligned components already available in the
React lib so the Vue lib reaches feature parity. Components reuse
the shared CSS classes from styles/, including the new chip
'official' (V-400) variant and the updated input states.

- rs-input: error message + icon slot
- rs-chip: featured / official / numeric / description / location / small
- rs-tag: default + selected, polymorphic via `as`
- rs-avatar: polymorphic via `as`
- rs-collaborators: stacked avatars + GitHub source button
- rs-button: support `as="a"` for link variants
- icons: add rs-star-bold, rs-github
…ndar

Continue Vue parity with React for the remaining Figma components:

- rs-card: polymorphic via 'as', clickable / disabled flags
- rs-badge: completed / reading / pending / unread variants,
  text / default / numeric types
- rs-dropdown: status dropdown with arrow up/down, emits 'change'
- rs-progress-bar: percentage label with ferris icon, invert when <25
- rs-input-search: search field + optional filter modal with tags
- rs-calendar: monthly grid with single / multiple / range modes,
  reuses ported date utils (getCalendarDays, addMonths, subMonths)
- icons: search, filter, arrow-up/down/left/right, ferris

All components reuse the existing styles/components/*.css classes
so themes (light/dark) and Figma-aligned states are inherited.
Vue (new components):
- RsLevel: N1/N2/N3/Op variants, polymorphic via 'as'
- RsRadio: native <input type=radio> with v-model support
- RsContactForm: full form with validation, emits 'submit' on success
- DropdownTree: Start / Subject / Topic / SubTopic / End subcomponents
  matching the React composite API (5 .vue files + barrel)

API improvements (libraries used from external apps):

Vue
- v-model on RsInput, RsInputSearch, RsDropdown, RsTag (:selected),
  RsCalendar (v-model:value), RsRadio
- All form-like components forward $attrs via inheritAttrs:false +
  v-bind=$attrs so name/id/aria-* etc. reach the underlying element
- RsTag now supports default slot and 'li' as polymorphic target

React
- forwardRef on Input and InputSearch (refs reach the native <input>)
- Input gains containerClassName for outer wrapper styling
- InputSearch exports InputSearchOption / InputSearchProps

Leptos
- Input accepts placeholder, name, type, value props
@SergioRibera SergioRibera requested review from a team, Phosphorus-M and gg0074x May 2, 2026 06:29
@SergioRibera
Copy link
Copy Markdown
Member Author

SergioRibera commented May 2, 2026

Revisen este IA slop xd

Creo que con esto ya no nos faltan componentes por implementar

Copy link
Copy Markdown

@gxskpo gxskpo left a comment

Choose a reason for hiding this comment

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

LGTM

@gg0074x
Copy link
Copy Markdown
Member

gg0074x commented May 2, 2026

TMVL (too many vibecoded lines)

@SergioRibera SergioRibera merged commit 8403f87 into main May 2, 2026
4 checks passed
@SergioRibera SergioRibera deleted the claude/fix-ui-components-jA0Yw branch May 2, 2026 07:13
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.

4 participants