feat(hints): contextual help system + FAQ page (MVP)
Infrastructure for a portal-wide in-app help system:
* Users have hints_enabled (default true) and dismissed_hints (JSON
array) columns. User::shouldSeeHint(key) checks both.
* app/Support/Hints.php — single-source-of-truth registry with 14
pilot hints across Service (5), CRM (3), Depozit (3), Finanțe (3).
Each entry has RO/RU/EN title + body + optional next-step + links.
* <x-hint key="wo.dashboard.overview" /> Blade component renders a
small "?" icon with Alpine.js popover; the popover shows title,
body, next-step, related links and an "X" button that POSTs to
/app/hints/{key}/dismiss.
* HintController handles dismiss (per key), toggle (global on/off)
and reset (clear dismissed + re-enable). Routes are auth:web.
* /app/faq page (Filament Page under Admin group) renders the whole
registry grouped by area with a live search box and buttons to
toggle global hints or reset dismissed ones.
* Wired 3 pilot hints into the WO dashboard: title (overview), Docs
tab PDF preview, and the Chat client card.
Follow-ups: extend registry to cover more pages and add <x-hint>
tags where useful. Filament resource fields can also reuse the same
copy via ->hint()/->helperText().
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -32,6 +32,7 @@
|
||||
":n poziții importate în Purchase nouă": ":n items imported into a new Purchase",
|
||||
"> 0 calculează automat prețul client.": "> 0 auto-calculates client price.",
|
||||
"A1-03": "A1-03",
|
||||
"ACTIVE": "ON",
|
||||
"AGRNMD2X": "AGRNMD2X",
|
||||
"AI provider": "AI provider",
|
||||
"AI: preț recomandat": "AI: recommended price",
|
||||
@@ -372,6 +373,7 @@
|
||||
"Category": "Category",
|
||||
"Caută": "Search",
|
||||
"Caută client, mașină, număr...": "Search client, vehicle, number...",
|
||||
"Caută în ghid...": "Search the guide...",
|
||||
"Caută în tabel": "Search in table",
|
||||
"Cauza adresării": "Reason for request",
|
||||
"Caz asigurare": "Insurance case",
|
||||
@@ -825,6 +827,7 @@
|
||||
"Eșapament": "Exhaust",
|
||||
"Ești sigur?": "Are you sure?",
|
||||
"Eșuat": "Failed",
|
||||
"FAQ & Ghid utilizator": "FAQ & User guide",
|
||||
"FIȘĂ DE LUCRU": "WORK ORDER",
|
||||
"Facturi": "Invoices",
|
||||
"Facturi & abonament": "Facturi & abonament",
|
||||
@@ -952,6 +955,7 @@
|
||||
"IBAN:": "IBAN:",
|
||||
"ID": "ID",
|
||||
"IDNO / CUI": "IDNO / CUI",
|
||||
"INACTIVE": "OFF",
|
||||
"INJECTOARE": "INJECTORS",
|
||||
"ITP": "MOT",
|
||||
"Ianuarie": "January",
|
||||
@@ -1281,6 +1285,7 @@
|
||||
"Nicio piesă montată.": "No parts installed.",
|
||||
"Nicio plată": "No payments",
|
||||
"Nicio plată în perioada selectată.": "No payments in selected period.",
|
||||
"Nicio potrivire pentru „:q\".": "No matches for \":q\".",
|
||||
"Nicio programare în această perioadă.": "No appointments in this period.",
|
||||
"Nicio programare în perioada selectată.": "No appointments in selected period.",
|
||||
"Niciodată": "Never",
|
||||
@@ -1350,6 +1355,7 @@
|
||||
"Nu există date": "No data",
|
||||
"Nu există rezultate": "No results",
|
||||
"Nu găsit": "Not found",
|
||||
"Nu mai arăta": "Don't show again",
|
||||
"Nu pot porni camera: ": "Cannot start camera: ",
|
||||
"Nu re-trimite mai des de X zile": "Don't resend more often than every X days",
|
||||
"Nu te poți șterge pe tine!": "You can't delete yourself!",
|
||||
@@ -1938,6 +1944,7 @@
|
||||
"Subtotal piese:": "Subtotal piese:",
|
||||
"Succes": "Success",
|
||||
"Sugerează revizie / piese de uzură.": "Suggest service / wear parts.",
|
||||
"Sugestii pe pagini:": "In-page hints:",
|
||||
"Sumă": "Amount",
|
||||
"Sumă achitată": "Sumă achitată",
|
||||
"Sumă:": "Sumă:",
|
||||
|
||||
Reference in New Issue
Block a user