• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

inclusion-numerique / la-base / fd4eec72-aafd-49f7-867c-efb20fa671a1

22 May 2026 03:55PM UTC coverage: 8.201% (-0.2%) from 8.36%
fd4eec72-aafd-49f7-867c-efb20fa671a1

Pull #413

circleci

web-flow
Merge pull request #412 from inclusion-numerique/chore/a11y-declaration

chore: mise à jour de la déclaration d'accessibilité
Pull Request #413: MEP 2026-05-22

280 of 6463 branches covered (4.33%)

Branch coverage included in aggregate %.

0 of 234 new or added lines in 33 files covered. (0.0%)

10 existing lines in 8 files now uncovered.

1132 of 10755 relevant lines covered (10.53%)

0.58 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/apps/web/src/features/base/components/BaseMetadata.tsx
1
import { sPluriel } from '@app/ui/utils/pluriel/sPluriel'
2
import type { SessionUser } from '@app/web/auth/sessionUser'
3
import { BasePrivacyTag } from '@app/web/components/PrivacyTags'
4
import BaseFollowersModal from '@app/web/features/base/followers/components/BaseFollowersModal'
5
import type { BaseMetadataData } from '@app/web/features/base/types/BaseMetadataType'
6
import { getDepartmentName } from '@app/web/utils/departments'
7
import { numberToString } from '@app/web/utils/formatNumber'
8
import classNames from 'classnames'
9
import styles from './BaseMetadata.module.css'
10

11
const BaseMetadata = ({
×
12
  base,
13
  className,
14
  withBadge,
15
  smallBadge,
16
  context,
17
  user,
18
}: {
19
  base: BaseMetadataData
20
  className?: string
21
  withBadge?: boolean
22
  smallBadge?: boolean
23
  context: 'base' | 'profile' | 'card'
24
  user: SessionUser | null
25
}) => {
26
  const resourcesCount = base._count.resources
×
27
  const resourcesViews = base._count.resourcesViews
×
28
  const followedBy = base._count.followedBy
×
29

30
  const viewsLabel =
31
    context === 'base'
×
32
      ? `Vue${sPluriel(resourcesViews)} sur les ressources`
33
      : `Vue${sPluriel(resourcesViews)}`
34
  const textLabelClassName =
NEW
35
    context === 'card' ? undefined : styles.spanMdDisplay
×
36
  return (
37
    <div
38
      className={classNames(
39
        'fr-flex fr-direction-column fr-direction-sm-row fr-flex-gap-4v fr-flex-gap-md-2v',
40
        className,
41
      )}
42
    >
43
      <div className="fr-flex fr-align-items-center fr-flex-gap-2v fr-mb-0 fr-text--sm">
44
        <span className="fr-icon-file-text-line fr-icon--sm" />
45
        <p className="fr-mb-0 fr-text--sm">
46
          <b>{numberToString(resourcesCount)}</b>
47
          <span className={textLabelClassName}>
48
            {' '}
49
            Ressource{sPluriel(resourcesCount)}
50
          </span>
51
        </p>
52
        {context === 'base' && !!base.followedByData && followedBy > 0 ? (
×
53
          <BaseFollowersModal
54
            followedByData={base.followedByData}
55
            user={user}
56
          />
57
        ) : (
58
          <>
59
            <div>·</div>
60
            <span className="fr-icon-user-heart-line fr-icon--sm" />
61
            <p className="fr-mb-0 fr-text--sm">
62
              <b>{numberToString(followedBy)}</b>
63
              <span className={textLabelClassName}>
64
                {' '}
65
                Suivi{sPluriel(followedBy)}
66
              </span>
67
            </p>
68
          </>
69
        )}
70
        <div>·</div>
71
        <span className="fr-icon-eye-line fr-icon--sm" />
72
        <p className="fr-mb-0 fr-text--sm">
73
          <b>{numberToString(resourcesViews)}</b>
74
          <span className={textLabelClassName}> {viewsLabel}</span>
75
        </p>
76
      </div>
77
      {!!base.department && context === 'base' && (
×
78
        <>
79
          <div className="fr-hidden fr-unhidden-sm">·</div>
80
          <span className="fr-text--sm fr-mb-0">
81
            <span className="fr-icon-map-pin-2-line fr-mr-2v fr-icon--sm" />
82
            {getDepartmentName(base.department)}
83
          </span>
84
        </>
85
      )}
86
      {withBadge && (
×
87
        <>
88
          <div className="fr-hidden fr-unhidden-sm">·</div>
89
          <BasePrivacyTag small={smallBadge} isPublic={base.isPublic} />
90
        </>
91
      )}
92
    </div>
93
  )
94
}
95

96
export default BaseMetadata
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc