row-link.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import MaterialIcon from '../../../../shared/components/material-icon'
  2. import { isBootstrap5 } from '@/features/utils/bootstrap-5'
  3. type RowLinkProps = {
  4. href: string
  5. heading: string
  6. subtext: string
  7. icon: string
  8. }
  9. export function RowLink(props: RowLinkProps) {
  10. return isBootstrap5() ? <BS5RowLink {...props} /> : <BS3RowLink {...props} />
  11. }
  12. function BS3RowLink({ href, heading, subtext, icon }: RowLinkProps) {
  13. return (
  14. <a href={href} className="row-link">
  15. <div className="icon">
  16. <MaterialIcon type={icon} />
  17. </div>
  18. <div className="text">
  19. <div className="heading">{heading}</div>
  20. <div className="subtext">{subtext}</div>
  21. </div>
  22. <div className="icon arrow">
  23. <MaterialIcon type="keyboard_arrow_right" />
  24. </div>
  25. </a>
  26. )
  27. }
  28. function BS5RowLink({ href, heading, subtext, icon }: RowLinkProps) {
  29. return (
  30. <li className="list-group-item row-link">
  31. <a href={href}>
  32. <MaterialIcon type={icon} className="p-2 p-md-3" />
  33. <div className="flex-grow-1">
  34. <strong>{heading}</strong>
  35. <div>{subtext}</div>
  36. </div>
  37. <MaterialIcon type="keyboard_arrow_right" className="p-2 p-md-3" />
  38. </a>
  39. </li>
  40. )
  41. }