redAi Developers

Widoki i wygląd

Widoki z widoki/ wołacie jako view('<klucz>::nazwa'). Moduł ma wyglądać jak reszta portalu, więc używacie wspólnych elementów, a nie własnego CSS.

Zasady obowiązkowe:

  1. Każdy ekran modułu dziedziczy layouts.app, ustawia @section('header', 'Narzędzia') i zaczyna się od @include('tools._naglowek', [...]). Nagłówek daje pasek „Narzędzia › Nazwa”, powrót, zakładki i okno ustawień modułu z sekcją Widoczność i Pomocą.
  2. Tylko klasy ui-*: ui-page, ui-stack, ui-card, ui-card--flat, ui-field, ui-label, ui-input, ui-textarea, ui-btn, ui-btn--primary, ui-rows, ui-row, ui-empty, ui-badge i inne. Pełny wzornik z przykładami jest na każdej instancji pod /administracja/dev.
  3. Bez własnych hero, wielkich banerów i kolorowych teł. Ekran modułu to narzędzie pracy, nie strona reklamowa.
  4. Tryb ciemny działa sam, jeśli kolory bierzecie z tokenów --ui-* (np. var(--ui-ink), var(--ui-line), var(--ui-card)). Nie wpisujcie kolorów na sztywno (#fff, black). Portal przełącza motyw atrybutem data-theme na <html> i podmienia tokeny.
  5. Przycisk „+ Nowy X” idzie do sekcji narz-akcje jako ui-btn--primary, nigdy jako zakładka. Ustawienia rekordu otwieracie w oknie z auto-zapisem, bez przycisków Zapisz i Anuluj.
  6. Szukajka listy: ui-search narz-szukaj, stronicowanie: narz-strony.
  7. Alpine.js jest w portalu, możecie używać x-data bez dokładania bibliotek.
Blade
@extends('layouts.app', ['title' => 'Faktury kosztowe'])
@section('header', 'Narzędzia')

@section('narz-akcje')   {{-- przyciski po prawej w wierszu linków --}}
    <a href="{{ route('faktury_kosztowe.create') }}" class="ui-btn ui-btn--primary ui-btn--sm">Nowa faktura</a>
@endsection

@section('content')
<div class="ui-page ui-page--szeroka ui-stack">
    @include('tools._naglowek', ['nazwa' => 'Faktury kosztowe', 'klucz' => 'faktury_kosztowe'])
    <div class="ui-card ui-card--flat">...</div>
</div>
@endsection

Parametry tools._naglowek:

ParametrCo robi
nazwaNazwa modułu w pasku.
kluczKlucz modułu (włącza okno ustawień, Widoczność i przypięcie do menu).
podPodtytuł pod nazwą.
badgeOdznaka obok nazwy.
pigulkiZakładki ekranu: lista linków.
wroc, wrocLabelAdres i napis linku powrotu.
rekordNazwa otwartego rekordu (np. tytuł faktury) w pasku.
ustawieniaStart, ustawieniaOtworzKtóra sekcja okna ustawień otwiera się pierwsza i czy okno ma się otworzyć od razu.

Sekcje, które możecie wypełnić w widoku: narz-akcje (przyciski po prawej), narz-ust-nav i narz-ust-sekcje (własne sekcje okna ustawień modułu), narz-pomoc (treść Pomocy w oknie).

Wspólne elementy portalu (opis parametrów jest w komentarzu na górze każdego pliku):

ElementDo czego
tools._naglowekPasek modułu, zakładki, okno ustawień z Widocznością i Pomocą.
klasy ui-*Karty, przyciski, pola, tabele, zakładki, okna. Wzornik: /administracja/dev.
partials._edytor-tresciEdytor WYSIWYG. Obrazy idą na route('narzedzia.obraz') i wracają jako /strony-pliki/<losowa nazwa>.
App\Support\CzystyHtmlCzyszczenie HTML z edytora białą listą, zanim trafi do bazy.
partials._tresc-styleStyle treści z edytora przy wyświetlaniu.
partials._adres-publicznyWiersz „Adres” z krótkim adresem /<adres> i kopiowaniem linku.
App\Support\AdresyPublicznelosowy(), zajety($adres, $rekord) dla krótkich adresów (razem z hakiem modeleAdresow).
partials._widocznosc + trait App\Models\Concerns\WidocznoscJakCzatKto widzi rekord: wszyscy, zalogowani albo wybrane osoby i grupy.
partials._wyglad-i-menuWygląd rekordu (cały ekran albo w portalu) i przypięcie do menu.
partials._plikiPanel plików jak w czacie i projekcie.
partials._ikona-ustIkona zębatki ustawień.
trait Spatie\Activitylog\Traits\LogsActivityDziennik zmian rekordu.

Nie kopiujcie tych plików do modułu. Gdy portal je poprawi, moduł dostanie poprawkę sam.

Ostatnia zmiana dokumentacji: 29.09.2026. Pytania: m@redai.pl.