BaseBadge.vue 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <template>
  2. <view
  3. class="base-badge"
  4. :class="['base-badge--' + variant, 'base-badge--' + size]"
  5. >
  6. <slot />
  7. </view>
  8. </template>
  9. <script>
  10. export default {
  11. name: 'BaseBadge',
  12. props: {
  13. variant: { type: String, default: 'primary' },
  14. // 'primary' | 'success' | 'warning' | 'error' | 'accent' | 'muted'
  15. size: { type: String, default: 'sm' }
  16. // 'xs' | 'sm' | 'md'
  17. }
  18. }
  19. </script>
  20. <style scoped>
  21. .base-badge {
  22. display: inline-flex;
  23. align-items: center;
  24. font-weight: 600;
  25. border-radius: 999rpx;
  26. white-space: nowrap;
  27. }
  28. /* Sizes */
  29. .base-badge--xs { font-size: 20rpx; padding: 4rpx 14rpx; line-height: 1.4; }
  30. .base-badge--sm { font-size: 22rpx; padding: 6rpx 18rpx; line-height: 1.4; }
  31. .base-badge--md { font-size: 24rpx; padding: 8rpx 24rpx; line-height: 1.5; }
  32. /* Variants */
  33. .base-badge--primary {
  34. background: rgba(249, 115, 22, 0.12);
  35. color: var(--color-primary, #F97316);
  36. }
  37. .base-badge--success {
  38. background: rgba(34, 197, 94, 0.12);
  39. color: var(--color-success, #22C55E);
  40. }
  41. .base-badge--warning {
  42. background: rgba(245, 158, 11, 0.12);
  43. color: var(--color-warning, #F59E0B);
  44. }
  45. .base-badge--error {
  46. background: rgba(239, 68, 68, 0.12);
  47. color: var(--color-error, #EF4444);
  48. }
  49. .base-badge--accent {
  50. background: rgba(14, 165, 233, 0.12);
  51. color: var(--color-accent, #0EA5E9);
  52. }
  53. .base-badge--muted {
  54. background: rgba(148, 163, 184, 0.12);
  55. color: var(--muted, #94A3B8);
  56. }
  57. </style>