Skip to content
[Veille · Asrar]

Trusted infrastructure, alive with agents

White and cream, editorial, precise, with a single moss-green thread. Every component reads its colours from tokens in globals.css, in both themes. Feature sections are added to the registry.

Brand

The logomark, string-art waves, live counters and the status chip.

Logomark (ink tile, moss → lime threads)<Logomark />
VeilleVeille· Asrar
Wordmark (display serif)<Wordmark />
String-art waves — hero, cards, closing band (reduced motion respected)<StringArtWaves variant='hero' />
Texts read this week : 1,28499.12%
Counter (rolling digits, real value for screen readers)<Odometer value={1284} chip />
All sources up to date1 source to watch
Status chip<StatusChip tone='ok' />

Nothing goes out without you. Every report is reviewed and approved by a consultant.

Two-tone headline<TwoToneHeading claim rest />

Semantics

Applicability decisions, confidence, fact states and source health (spec §9.2 and §9.7).

Applies

The text concerns this client: the profile’s facts meet the criteria of the cited obligations.

May apply

The text probably concerns this client; one fact or interpretation remains to be confirmed.

Not applicable

The text does not concern this client; the justification is kept for the auditor.

Insufficient data

A profile fact is missing to conclude: a question is asked to the consultant.

Always with a cited justification and a confidence level.<DecisionChip decision='may_apply' confidence={0.62} />
High≥ 0.8 — solid line
Medium0.5 to 0.8 — dashed line
Low< 0.5 — dotted line
A thin line under each decision; the exact value shows on hover.<ConfidenceLine value={0.62} />
DeclaredEntered by the consultant, not verified yet.
InferredProposed by the agent from a document; to be confirmed.
ConfirmedVerified by a consultant, with the date and the evidence.
Every fact of a client profile shows where it comes from.<FactStateBadge source='inferred' />
Up to dateDegradedFailingDisabled
Source health<HealthChip status='failed' />
A cited passage, reproduced exactly as it appears in the stored text.
Art. 12, para. 2 — example
Always verbatim, with the article reference in mono. (A formatting example, not a real text.)<LegalQuote reference='Art. 12'>…</LegalQuote>
يُعرض المحتوى العربي من اليمين إلى اليسار، مهما كانت لغة الواجهة.
Interface language and content language are independent: Arabic content reads right to left.<ContentBlock lang='ar'>…</ContentBlock>
  • Never a decision without a citation and a consultant’s approval.
  • Confidence is always visible; exact numbers on hover.
  • Semantic colours are only used for these meanings.
Rules

Typography

Display serif, Inter for the interface, mono for numbers and article references.

Read less. Miss nothing.

Display — Newsreader 52/54, −0.035 emtext-display · font-serif

Page title

Section title

Card title

Nothing goes out without you. Every report is reviewed and approved by a consultant.

text-h1 · text-h2 · text-h3 · two-toneInter 500, tracking −0.02em

Running text uses Inter 15/24 for summaries, with a comfortable measure of at most 68 characters.

[Mono eyebrow]

1,284 · 99.2% · v1.1

Register 13 px tabular — 12/09/2026 · Art. 4

Serif quote 15/23 in a cream block.

text-summary · text-eyebrow · text-metric · text-register · quote-block15/24 · mono 12/500 · 13 tabular

Colour

Surfaces, ink, moss and semantics, in light and dark.

Light
Surfaces & ink
background
cream
surface
muted
foreground
ink-2
muted-fg
primary
Moss
brand
brand-hover
brand-subtle
brand-tint
wave-1
wave-2
wave-3
highlight
Decisions
applies
may
n/a
insufficient
applies-subtle
may-subtle
n/a-subtle
insuf.-subtle
Source health
ok
degraded
failed
fact-confirmed
Charts
chart-1
chart-2
chart-3
chart-4
chart-5
chart-6
Dark
Surfaces & ink
background
cream
surface
muted
foreground
ink-2
muted-fg
primary
Moss
brand
brand-hover
brand-subtle
brand-tint
wave-1
wave-2
wave-3
highlight
Decisions
applies
may
n/a
insufficient
applies-subtle
may-subtle
n/a-subtle
insuf.-subtle
Source health
ok
degraded
failed
fact-confirmed
Charts
chart-1
chart-2
chart-3
chart-4
chart-5
chart-6

Buttons

Square-ish (4 px), solid ink for the primary action, outlined secondary, a chevron to move forward.

variant<Button chevron>
Sizessize='xs|sm|default|lg|icon'

Inputs & forms

6 px fields, visible labels, translated errors.

Input · Field · FieldErroruseZodResolver(schema)
Select · Textarea · Checkbox · Switch

Badges & status

2 px chips for states, mono for versions and counters.

defaultApprovedv1.1To confirmCompliantTo assessNon-compliantNot evaluatedOrder (arrêté)
Badges<Badge variant='tint' />
RunningDraftSnoozedFailed
Status pills · Status dots<StatusPill tone='success' pulse />

Cards & empty states

12 px cream cards, hairline borders, no shadow; the Cabinet plan inline.

Card
A 12 px cream card, hairline border, no shadow.
Card<Card />

Nothing new this week

Nothing new from the 6 sources checked. The coverage statement is ready.

Empty state<EmptyState />
Cabinet

Scheduled sending

Approved reports go out automatically on the planned date.

More than 10 clientsFollow every client: 25 profiles included, then 60 MAD per profile per month.
Cabinet plan<PlanGate feature='autoSend' when />

Data table

TanStack Table v8: search, facets, sorting, selection, pagination, a dense variant for registers.

Exemple — texte fictif n° 100Order (arrêté)ApplicableCompliant01/09/2026
Exemple — texte fictif n° 101DecreeTo confirmTo assess02/09/2026
Exemple — texte fictif n° 102LawExemptNon-compliant03/09/2026
Exemple — texte fictif n° 103CircularApplicableCompliant04/09/2026
Exemple — texte fictif n° 104Order (arrêté)To confirmTo assess05/09/2026
Exemple — texte fictif n° 105DecreeExemptNon-compliant06/09/2026
Exemple — texte fictif n° 106LawApplicableCompliant07/09/2026
Exemple — texte fictif n° 107CircularTo confirmTo assess08/09/2026
23 rows
Page 1 of 3

Dialogs & toasts

Only floating elements get a soft shadow.

Dialog · Sheet · ConfirmDialog · toast · UpgradeSheet

Loading

Skeletons in content; spinners only inside buttons.

SkeletonCard · SkeletonText<SkeletonCard />
SkeletonList<SkeletonList rows={4} />

Utilities

Avatars, shortcuts, copy, relative time, file upload, periods, languages.

SI
SIYBNT+2
Avatars<AvatarGroup users={…} />
⌘KGQA
Shortcuts<Kbd keys={['mod','K']} />
Copy · Relative time<CopyButton /> <RelativeTime />
Drop a file here or browse
PDF, DOCX, HTML, HTM, TXT · up to 50 MB
File upload<FileDropzone accept={acceptFor('text_document')} />
Period · Interface language · Content language

Icons

iconsax, Bulk variant only.

Home2
ClipboardTick
DocumentText
Buildings2
DocumentForward
Radar2
Judge
Profile2User
Colorfilter
Speedometer
Setting2
Notification
SearchNormal1
DocumentUpload
QuoteDown
ShieldTick
TickCircle
Warning2
LanguageSquare
Always the Bulk variant (the default, drawn in currentColor). Size with classes: size-4 in dense UI, size-5 in navigation.import { Home2 } from 'iconsax-react'

Clients and profiles

Client health, fact states (declared, inferred, confirmed), Yes / No / ? questions, sector template picker.

  • Profile 78% complete
  • 3 open questions
  • 5 matches to review
  • 48 texts in the register
  • 1 overdue action
  • Last report on 02/09/2026
Client health chips · Fictional example<HealthChips health={health} />
  • Flammable liquids stored > 500 LNoDeclared
  • Number of forklifts12Inferred
  • Produces hazardous wasteYesConfirmed
Profile facts · Fictional example<FactStateBadge source='inferred' />
32 %
64 %
91 %
Profile completeness<CompletenessMeter value={64} />

Does the Casablanca site store more than 500 L of flammable liquids?

Casablancablocks 2 matches
Shortcuts: Y for yes, N for no, ? for don’t know
Fact question (Y / N / ?) · Fictional example<FactQuestionControl question={q} />
“Textile and apparel” template16 typical facts will be pre-ticked in the “Facts” step.
Frequent regulatory themes
General employer health & safety dutiesOccupational health servicesHealth & safety committeeWorkplace accidents and occupational diseasesFire prevention and protectionPressure equipment (steam and gas)Electrical safetyHazardous wasteNon-hazardous wasteMachinery and work equipment safety
Sector template picker<SectorTemplatePicker templates={…} value={key} />

Sources and collection

Source card (health, last 14 days, cadence), health chips, coverage statement, run log and incident banner.

Illustrative example: cadence, dates and counters are fictional.

Up to dateDegradedFailingNeeds setupNever checkedNot followed
SourceHealthBadge<SourceHealthBadge status='failed' />

Sustainable development

Up to date

MTEDD — Département du Développement durable

MoroccoMinistry

Legal texts (environmental assessment, pollution, waste, biodiversity) and discharge standards published by the department. The PDFs are usually extracts of the Bulletin officiel.

[Last 14 days]10 checks · no failure
Last check
Next check
Sat 3 Oct · 01:22
Items
62 listed · 1 new
Texts collected
9 texts
Monday to Friday at 08:00
SourceCard — ok<SourceCard source actions />

IMANOR

Failing

Institut marocain de normalisation (IMANOR)

MoroccoStandardsTitles and abstracts only

New homologated Moroccan standards (NM) and draft standards under public inquiry — titles and abstracts only (standards are paid documents).

[Last 14 days]10 checks · 6 failures
Last check
Next check
Sat 3 Oct · 01:22
Items
none listed · none new
Texts collected
no text
Monday to Friday at 08:00
SourceCard — structure changehealth.reasons: structure_changed
SourceDays (14 j)<SourceDays days />
  1. Started (scheduled check), publications since 29 Sept

  2. Page read: Normes (valeurs limites air et eau) — 14 document links1.2 s

    https://www.environnement.gov.ma/fr/lois-et-reglementations/normes
  3. 1 new document found

  4. Download refused by the site’s robots.txt: document flagged for manual upload

    https://www.environnement.gov.ma/images/exemple.pdf
  5. Partly finished: 62 items listed, no new text8.4 s

RunLog<RunLog entries />

2 sources covered out of 3 · 1 gap reported · 02/09/2026 → 02/10/2026

SourceChecksLatestTextsCoverage
Sustainable developmentMA4 checks2 Oct, 1 Oct, 30 Sept, 29 Sept02/10/20263 Covered over the whole period
HealthMA2 checks2 Oct, 28 Sept02/10/20261 Covered over the whole period
IMANORMA2 checks23 Sept, 22 Sept23/09/20260IMANOR could not be checked from 23 Sept to 2 Oct (9 days).
CoverageBlock<CoverageBlock coverage />

Texts and citations

Citation chips, passage viewer, cited summary, obligations with their exact quote, processing and relevance statuses.

Citation chips: preview on hover, passage on click<CitationChip chunkId chunk onOpen />
Decreen° 2-14-85Morocco
ESHazardous wasteTransport of dangerous goods+1
Type, reference, domains and themes<TextTypeLine textType externalRef country />
  1. Collecter, transporter ou traiter des déchets dangereux exige une autorisation de l’autorité chargée de l’environnement ; une entreprise ne peut transporter elle-même ses déchets que si elle détient cette autorisation, sinon elle les remet à un collecteur-transporteur autorisé.
Cited summary: each sentence ends with its citations<SummaryView sentences language chunks onOpenPassage />
CollectedExtractedSummarisedClassifiedAssessedNeeds human readingFailed
Processing status (explanation on hover)<ProcessingStatusChip status />
QSENot QSEQSE· restoredNot QSE· set asideNot assessed
QSE relevance: shared, restored or set aside by the firm<RelevanceChip isQse overridden />
« Tout générateur de déchets dangereux doit désigner, parmi le personnel qu’il emploie une personne responsable chargée de la gestion des déchets dangereux, dénommée «responsable déchets». »
Art. 8 · p. 915
Produces hazardous wasteTotal headcount (employees) ≥ 50
Exact quote of an obligation (serif 14/22) and criteria<LegalQuote reference />
Art. 8p. 915

ART. 8. – Tout générateur de déchets dangereux doit désigner, parmi le personnel qu’il emploie une personne responsable chargée de la gestion des déchets dangereux, dénommée «responsable déchets».

Cited passage highlighted in the viewer<PassageViewer textId chunkId open onOpenChange />
…Section 2. – Prescriptions techniques de stockage ou de traitement des déchets dangereux ART. 29. – Les zones de stockage……
Full-text search excerpt, matched words highlighted<Snippet value />

Real examples, quoted word for word: décret n° 2-14-85 of 20 January 2015 on hazardous waste management (BO no. 6336, official translation edition).

Review queue

Match card (decision, confidence, cited reasoning, question), bulk approval bar, impact editor and keyboard shortcuts.

Atlas Câblage (fictif)All sites
Applies

Applies: 3 obligations met out of 3

  • Produces hazardous waste: Yes (confirmed) → criterion met (Art. 5, Art. 6, Art. 7)
Applies: 3 obligations met out of 3
Maroc Textile (fictif)Usine de Casablanca
Insufficient data

Insufficient data: 1 obligation depends on an unknown fact

  • Flammable liquids stored > 500 L: unknown → expected Yes (Art. 3)

Le site Usine de Casablanca stocke-t-il plus de 500 L de liquides inflammables ?

Shortcuts: Y for yes, N for no, ? for don’t know

Answer the question or change the decision to approve.

Insufficient data: 1 obligation depends on an unknown fact
Match card · Fictional example: client and reasoning invented for the demonstration.<MatchCard match={m} />
Aéro Précision (fictif)All sites
May apply
Prepared by Karim B. (fictif)

May apply: 1 obligation met out of 3

  • To check (Art. 2): “Exemple fictif de critère que les faits ne peuvent pas exprimer.”

Karim B. (fictif)’s proposal: Applies

Le site dispose d’un poste de transformation : à confirmer lors de la visite.

A consultant will approve your proposal.

May apply: 1 obligation met out of 3
Card as a junior sees it (prepare, never approve) · Fictional example: client and reasoning invented for the demonstration.<MatchCard capabilities={{ decide: false, prepare: true }} />
  • Chimicoat (fictif)N/AAucune installation concernée sur le site (exemple fictif).Ruled not applicable by Salma E. (fictif) on 28/09/2026
  • Riad Palmeraie (fictif)N/ANot applicable: outside the client’s scope
Decided and out-of-scope rows · Fictional example: client and reasoning invented for the demonstration.<MatchRow match={m} />
3 high-confidence matches
Bulk approval<BulkApproveBar count={3} />
Recommended actions
  1. 1
    Deadline
    30 days after approval
Impact editor · Fictional example: client and reasoning invented for the demonstration.<ImpactFields value onChange />
AApproveEEditRRejectYN?AnswerSSnoozeJKNext card]Next text⌘KSearch
EEditYN?AnswerSSnoozeJKNext card]Next text⌘KSearch
Keyboard shortcuts<KeyboardHints canDecide canPrepare />
FirmThe whole firmSectorAgri-foodClientChimicoat (fictif)
Exclude a themeFollow a themeExempt from a textForce a factLearned
Rules: scope, effect, learned rule<RuleScopeLabel /> <RuleEffectBadge /> <LearnedBadge />

Register and actions

Applicability, compliance and review chips, exemption row, register changes, overdue action.

ApplicableTo confirmExemptRepealedNew
Applicability (line status)<RegisterStatusChip status />
CompliantTo assessNon-compliantNot evaluated
Compliance assessment<ComplianceChip status />
13 days overdueReview due 10/10/2026Up to date
Annual review<ReviewStateChip review />
ExemptFictional example

No installation concerned on the site (confirmed fact).

Exemption row<ExemptionRow entry />
Additions
1
Exemptions
1
Statuses
0
Compliance
1
Reviews
0
Removals
0
  1. AddedApplicable text (fictional example)Site A (fictional)
    28/09/2026by Consultant (example)
  2. ComplianceTo assess → CompliantAnother register text (fictional example)
    22/09/2026by Consultant (example)
  3. ExemptedText judged not applicable (fictional example)
    16/09/2026by Consultant (example)
Register changes<RegisterDiff clientId />
Plan the periodic check of the electrical installations (fictional example)In progress19/09/20269 days overdue
Action (deadline passed)<ActionStatusChip /> <DueCell />

Reports and deliverables

Report statuses, editable report item, delivery log, end-of-period progress.

DraftApprovedScheduledSentArchivedfrar
Report statuses<ReportStatusChip status />
End-of-period progress<MonthEndBar />
Simple Markdown: **bold**, *italic*, “- ” lists. ⌘ Enter to save.
Report item (wording)<ReportItemEditor value lang onSave />
  • Recipient (example)frdestinataire@exemple.invalidveille-exemple-2026-08-v2.pdfregistre-exemple-2026-09-02.xlsx
    Handed to the email service2 Sept 2026, 11:00
  • Arabic-speaking recipient (example)arar@exemple.invalidveille-exemple-2026-08-v2-ar.pdf
    Test address: not sent2 Sept 2026, 11:00
Delivery log<DeliveryLog deliveries />

Members and roles

Plan seats, firm roles (owner, admin, consultant, junior, viewer) and the capability matrix from spec §2.2.

OwnerAdminConsultantJunior consultantViewer
RoleBadge<RoleBadge role='consultant' />
[Seats]1 of 1 seat used1 memberSolo plan
SeatMeter · Solo<SeatMeter seats={…} />
[Seats]Unlimited users4 members · 1 pending invitationCabinet plan
SeatMeter · Cabinet<SeatMeter seats={…} />
OwnerFull control, including billing and deleting the firm.
AdminManages members, roles, the firm’s branding and sources configuration.
ConsultantYour roleApproves matches and exemptions, sends reports, manages rules.
Junior consultantCreates clients and prepares the review: summaries, proposed decisions.
ViewerReads texts, clients, registers and reports.
Capabilities by role
CapabilityOwnerAdminConsultantJunior consultantViewer
Billing, deleting the firm
Members, roles, firm branding
Sources configuration
Approve matches and exemptions, send reports
Manage rules and exemptions
Create and edit clients, sites and profiles
Prepare the review (summaries, proposals)
Read texts, clients, registers and reports
RolesMatrix<RolesMatrix highlight='consultant' />

Usage and billing

Plan meters, Solo / Cabinet comparison, invoices and test-mode checkout (MAD).

Usage this month

Resets on 1 October 2026. Client profiles and consultants are counted as of now.
Client profiles
Client profiles : 9/ 10
Close to the limitFrom the 11th client, the Cabinet plan is needed.
Consultants
Consultants : 1/ 1
Solo is designed for one consultant; Cabinet welcomes the whole team.
Texts processed this month
Texts processed this month : 74
Reports sent this month
Reports sent this month : 9
Matches this month
Matches this month : 203
UsageMeters · Solo, 9 / 10<UsageMeters usage={usage} />
PaidDueVEI-202609-XX0001
Statuspaid · open
ActiveTrialEnding
Activestatus chips

Firm and demo

Source status, demo banner, country choice, Arabic labels (right to left) and the deletion zone with typed confirmation. Fictional examples.

All sources up to date2 sources to watch1 source failing
All sources up to date<SourcesStatusChip /> · <StatusChip tone>
Demo

Private demonstration copy · erased in 2 hours

Save to your account
DemoBannerView<DemoBannerView expiresAt saveHref />
Countries coveredrole=radiogroup
Label (Arabic)dir='rtl' lang='ar'

Delete the firm

Delete the firm<SettingsCard tone='danger'>

Public site

The components of the marketing site: announcement bar, mega-menu, live metric chip, waves, queue mock, keyboard decision stack, report preview, coverage promise.

ReportThe state of QSE regulatory watch in Morocco, 2026Read ›
Announcement bar<AnnouncementBar />
Metric chip (odometer)<HeroMetricChip metric={{ kind: 'week', value }} />
All sources up to date12 of 15 sources up to date
Source status chip<SourcesStatusChip summary />
AERYNS
Review keys<ReviewDemo />
Skeleton illustrations<SummariesArt /> · <MatchesArt /> · <RegisterArt />
  1. 1CollectThe official sources
  2. 2UnderstandSummary, obligations, themes
  3. 3MatchClient by client, site by site
  4. 4ReviewThe review queue, from the keyboard
  5. 5DeliverRegister and report
Five-step diagram<Pipeline steps />
  • Horizon Conseil QSE
  • Bouregreg Prévention
  • Médina Conformité
  • Argane HSE
Fictional firm tiles<FirmTile firm />
StringArtWaves · variant=band<StringArtWaves variant="band" />