Skip to content

Standardize class joining pattern across components #20

@pglevy

Description

@pglevy

Problem

Components use inconsistent patterns for joining CSS class names, making the codebase harder to read and maintain.

Current Patterns

Pattern 1 (ButtonWidget, TagField, CardLayout)

const baseClasses = `
  inline-flex items-center justify-center gap-1
  font-medium transition-colors
  ${sizeMap[size]}
`.replace(/\s+/g, ' ').trim()

Pattern 2 (TabsField - newer, cleaner)

const baseClasses = [
  'inline-flex items-center justify-center gap-1',
  'font-medium transition-colors',
  sizeMap[size]
].filter(Boolean).join(' ')

Recommendation

Adopt the array .filter(Boolean).join(' ') pattern consistently across all components. It's:

  • More readable
  • Easier to conditionally include classes
  • More maintainable

Affected Components

  • ButtonWidget
  • TagField
  • CardLayout

Priority

High - improves code consistency and maintainability

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions