beta-badge-icon.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import type { FC } from 'react'
  2. import classnames from 'classnames'
  3. import MaterialIcon from '@/shared/components/material-icon'
  4. import BootstrapVersionSwitcher from '@/features/ui/components/bootstrap-5/bootstrap-version-switcher'
  5. import OLBadge from '@/features/ui/components/ol/ol-badge'
  6. function BS5BetaBadgeIcon({
  7. badgeClass,
  8. }: {
  9. badgeClass: ReturnType<typeof chooseBadgeClass>
  10. }) {
  11. if (badgeClass === 'info-badge') {
  12. return <MaterialIcon type="info" className="align-middle info-badge" />
  13. } else if (badgeClass === 'alpha-badge') {
  14. return (
  15. <OLBadge bg="primary" className="alpha-badge">
  16. α
  17. </OLBadge>
  18. )
  19. } else {
  20. return (
  21. <OLBadge bg="warning" className="beta-badge">
  22. β
  23. </OLBadge>
  24. )
  25. }
  26. }
  27. const BetaBadgeIcon: FC<{
  28. phase?: string
  29. }> = ({ phase = 'beta' }) => {
  30. const badgeClass = chooseBadgeClass(phase)
  31. return (
  32. <BootstrapVersionSwitcher
  33. bs3={<span className={classnames('badge', badgeClass)} />}
  34. bs5={<BS5BetaBadgeIcon badgeClass={badgeClass} />}
  35. />
  36. )
  37. }
  38. function chooseBadgeClass(phase?: string) {
  39. switch (phase) {
  40. case 'release':
  41. return 'info-badge'
  42. case 'alpha':
  43. return 'alpha-badge'
  44. case 'beta':
  45. default:
  46. return 'beta-badge'
  47. }
  48. }
  49. export default BetaBadgeIcon