• Stars
    star
    152
  • Rank 237,610 (Top 5 %)
  • Language
    TypeScript
  • License
    BSD 3-Clause "New...
  • Created over 6 years ago
  • Updated 9 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Il toolkit React conforme alle linee guida di design per i siti internet e i servizi digitali della PA.

CircleCI Partecipa sul canale #design-devel Ricevi un invito a Slack

Read this in other languages: English.

Importante: questo kit è stato progettato per funzionare con la versione 1.x di Bootstrap Italia. Non esiste al momento un kit per la versione 2.x di Bootstrap Italia.

Intro

Design React kit è un set di componenti React che implementa Bootstrap Italia e gli stili presenti su Design UI Kit, come mostrato su InVision.

Per navigare la libreria e visualizzare i componenti, è stato utilizzato Storybook.

La versione pubblica dello Storybook è disponibile qui per l'ultima release stabile pubblicata, mentre qui per la versione di sviluppo relativa al branch master.

Indice

Requisiti

  • NodeJS
  • Yarn

Come usare il kit

Per utilizzare Design React come dipendenza in un'app è possibile installarla da npm. Suggeriamo di usare create-react-app per creare una nuova webapp React, come segue:

$ create-react-app nome-app
$ cd nome-app
$ yarn add design-react-kit --save

Aggiungere bootstrap-italia ed i font

Il design-react-kit non include il CSS ed i file font, ed è quindi necessario installarli a parte:

$ yarn add bootstrap-italia typeface-lora typeface-roboto-mono typeface-titillium-web --save

App.js

A questo punto, è sufficiente importare esplicitamente nella app CSS e font se si è usato create-react-app all'interno del file ./src/App.js:

import React from 'react';
import './App.css';
import { Alert } from 'design-react-kit';
import 'bootstrap-italia/dist/css/bootstrap-italia.min.css';
import 'typeface-titillium-web';
import 'typeface-roboto-mono';
import 'typeface-lora';

const App = () => {
    return (
        <Alert>This is an Alert</Alert>
    );
};

export default App;

Caricamento Font

Il tema Bootstrap Italia utilizza un set specifico di font typeface: titillium-web, roboto-mono e lora. Il caricamento di questi font è lasciato al browser ma, volendo può essere controllato tramite l'apposito componente FontLoader. È sufficiente dichiarare il componente FontLoader in cima all'app react per permettere il caricamento.

In alternativa è necessario gestire il caricamento dei font manualmente mediante il pacchetto webfontloader:

const WebFont = require('webfontloader')
WebFont.load({
    custom: {
        families: [
          'Titillium Web:300,400,600,700:latin-ext',
          'Lora:400,700:latin-ext',
          'Roboto Mono:400,700:latin-ext'
        ]
    }
})

Peer dependencies

La libreria non include react e react-dom, evitando clashing di versioni e aumento inutile delle dimensioni del bundle. Per questo motivo per lo sviluppo in locale sarà necessario installare manualmente le dipendenze.

Il comando da eseguire è

$ yarn install --peers

oppure in alternativa manualmente

$ yarn install react react-dom

Come iniziare

Clona il repository ed esegui yarn per installare le dipendenze. Quindi esegui yarn storybook:serve per avviare il server di sviluppo.

Storybook sarà quindi disponibile all'indirizzo http://localhost:9001/

storybook

Storybook è stato arricchito con alcuni addons che lo rendono più parlante.

Come creare nuovi componenti

Questa sezione guiderà alla creazione di nuovi componenti nel repository. Tutti i componenti risiedono nella cartella src: ogni componente possiede una sua cartella con tutto ciò che è necessario per farlo funzionare. Le storie Storybook invece sono sotto stories. I test unitari risiedono nella cartella test. Il componente Button ad esempio è presente sotto il percorso src/Button e la sua struttura è la seguente:

src
    └── Button
        ├── Button.tsx
stories
    └── Button
        ├── Button.stories.mdx
        ├── Button.stories.tsx
test
    ├── Button.test.tsx

Alcune regole di base per strutturare i componenti:

  • I file TSX file del componente utilizza la sintassi JSX.
  • I file .stories.tsx dovrebbero contenere solo quanto relativo al componente stesso.
  • I file .stories.mdx dovrebbero contenere solo documentazione relativa al componente stesso
  • I file .test.tsx dovrebbero contenere solo test relativi al componente stesso.

Una volta creato un nuovo componente, con la sua story, avviando Storybook sarà possibile controllare che tutto funzioni come dovrebbe.

Come contribuire

Per inviare nuovi contenuti o bug fix è necessario fare un fork del repository, quindi partire dal branch master per un nuovo branch contenente la funzionalità: una volta completa la funzionalità (con relativi test ove possibile), sarà necessario fare una PR sul repository principale.

Snapshot tests

Il sistema di testing prevede un controllo delle storie presenti, mediante una tecnica chiamata "snapshot" testing: il contenuto della storia Storybook verrà copiato in un file speciale e preservato per notificare eventuali cambiamenti in futuro. Questo fa si che l'aggiunta di nuove storie potrebbe risultare in un fallimento del task "test" in una PR. Qualora fosse stata aggiunta una nuova storia o modificata una già presente, sarà necessario aggiornare il file di snapshot come segue:

yarn test -u

A questo punto creare un nuovo commit ed aggiornare la PR con il file di snapshot aggiornato. Controllare che le modifiche apportate siano corrette prima di aggiornare la PR.

Publishing

E' disponibile un comando per generare una versione statica del catalogo Storybook così che possa essere deployato senza utilizzo di un webserver.

$ yarn storybook:build

Le pagine statiche ottenute dal processo di build saranno generate sotto la folder storybook-static.

Compilazione libreria

Per compilare la libreria e generare i file nella cartella dist, è sufficiente lanciare il comando dedicato:

$ yarn build

Supporto browsers

Il kit segue le indicazioni riportate nelle Linee Guida di Design per i servizi web della Pubblica Amministrazione, sezione 6.3.1.2.1. Supporto browser mediante l'utilizzo del pacchetto browserslist-config-design-italia.

TypeScript typings

La libreria è stata portata a Typescript ed i tipi sono esportati con essa.

Ringraziamenti

Chromatic

Grazie a Chromatic per aver fornito la piattaforma di visual testing che ci aiuta a revisionare cambiamenti UI e intercettare regressioni visuali.

More Repositories

1

covid19-opendata-vaccini

Open Data su consegna e somministrazione dei vaccini anti COVID-19 in Italia - Commissario straordinario per l'emergenza Covid-19
529
star
2

bootstrap-italia

Bootstrap Italia è un tema basato su Bootstrap 5 conforme alle "Linee guida di design per i siti internet e i servizi digitali della Pubblica Amministrazione"
SCSS
298
star
3

awesome-italian-public-datasets

A selection of interesting Open dataset from the Italian Public Administration and Civic Data use cases
245
star
4

developers.italia.it

The developer community designing and developing public digital services in Italy
JavaScript
217
star
5

anpr

Issue tracker e documentazione di ANPR - Anagrafe Nazionale della Popolazione Residente
Python
178
star
6

.github

The organized list of awesome @italia projects
Ruby
168
star
7

design-ui-kit

UI Kit Italia è la risorsa del design system .italia per costruire e prototipare siti internet e servizi digitali della Pubblica Amministrazione
158
star
8

design-web-toolkit

Questa libreria è deprecata, si consiglia l'utilizzo di Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
HTML
93
star
9

design-scuole-wordpress-theme

Tema Wordpress dedicato al progetto per i siti delle scuole
PHP
90
star
10

spid-cie-php

Software Development Kit for easy SPID/CIE access integration with simplesamlphp - developed and mantained by Michele D'Amico (@damikael)
PHP
82
star
11

daf-ontologie-vocabolari-controllati

Elenco di ontologie e vocabolari controllati. Per maggiori informazioni, si veda il readme principale e quello di singoli vocabolari/ontologie, ove presente, e la seguente documentazione
Python
81
star
12

fatturapa-php-sdk

PHP SDK per la fatturazione elettronica
PHP
74
star
13

spid-saml-check

Tool di verifica implementazione SPID SAML
JavaScript
70
star
14

design-wordpress-theme

Tema di WordPress per la Pubblica Amministrazione che implementa Bootstrap Italia.
PHP
68
star
15

design-angular-kit

Il toolkit Angular conforme alle linee guida di design per i servizi web della PA.
TypeScript
66
star
16

cie-middleware

Middleware della CIE (Carta di identità elettronica)
C++
62
star
17

fatturapa-testsdi

Sistema d'Interscambio di test
PHP
60
star
18

spid-keycloak-provider

Italian SPID authentication provider for Keycloak (https://www.keycloak.org/)
Java
59
star
19

api-oas-checker

An OpenAPI 3 checker based on spectral.
JavaScript
57
star
20

cie-cns-apache-docker

L'obiettivo di questo progetto è quello di fornire un template pronto all'uso che realizza un sistema di autenticazione tramite la Smart Card TS-CNS (o CNS) e la CIE (Carta d'Identità Elettronica) basato su Apache HTTP. Ognuno può poi modificare o specializzare questo progetto sulla base delle proprie esigenze Si tratta di un progetto docker per la creazione di un container che implementa un sistema di mutua autenticazione o autenticazione bilaterale SSL/TLS. Questo meccanismo di autenticazione richiede anche il certificato digitale da parte del client, certificato che in questo caso risiede all'interno della TS-CNS o della CIE.
Hack
55
star
21

dati.gov.it

dati.gov.it: il sito degli opendata italiani
53
star
22

designers.italia.it

Designers Italia mette a disposizione la conoscenza e gli strumenti per progettare e realizzare servizi pubblici centrati sulle necessità delle persone
HTML
51
star
23

verificac19-sdk

✅ Official VerificaC19 Node.js SDK
JavaScript
50
star
24

daf

Data & Analytics Framework (DAF)
Scala
49
star
25

design-django-theme

Bootstrap Italia template for Django
HTML
46
star
26

eudi-wallet-it-docs

Italian EUDI Wallet Technical Specifications
Python
46
star
27

spid-laravel

SPID authentication package for Laravel
PHP
43
star
28

spid-django

SPID authentication for Django
JavaScript
41
star
29

Satosa-Saml2Spid

SATOSA SAML-to-SAML proxy with Spid compliances
JavaScript
41
star
30

spid-aspnetcore

AspNetCore Remote Authenticator for SPID
C#
38
star
31

spid-sp-test

SAML2 SPID/CIE Service Provider validation tool
Python
37
star
32

spid-sp-access-button

Bottone di scelta dell'Identity Provider per l'accesso ai servizi dei Service Provider
HTML
37
star
33

cie-middleware-linux

Middleware della CIE (Carta di Identità Elettronica) per Linux
C++
36
star
34

spid-testenv2

New test Identity Provider for SPID
Python
35
star
35

spid

SPID - Sistema Pubblico di Identità Digitale
33
star
36

18app

Official mobile app for 18app
C#
32
star
37

pa-website-validator

Tool di validazione per i siti di comuni e scuole
TypeScript
32
star
38

design-comuni-wordpress-theme

Tema Wordpress per i siti dei comuni italiani
PHP
32
star
39

pianotriennale-ict-doc

Documento Piano Triennale ICT
32
star
40

design-comuni-prototipi

Risorse relative al VECCHIO modello dei siti per i Comuni Italiani
HTML
30
star
41

design-wordpress-theme-italiaWP2

Tema WordPress open-source per la Pubblica Amministrazione basato su Bootstrap Italia
PHP
29
star
42

readme-starterkit

A README file starter kit
29
star
43

spid-php-lib

PHP package for SPID authentication
PHP
29
star
44

spid-dotnet-sdk

SPID authentication library for .NET
C#
29
star
45

spid-spring

SPID extension for Java Spring
Java
28
star
46

cie-nis-python-sdk

SDK for reading the NIS code from an Italian Electronic Identity Card (CIE) using Python
Python
25
star
47

covid19-dashboard-vaccini

[WIP] Unofficial example of the COVID-19 vaccinations dashboard
JavaScript
24
star
48

cie-PN532

Arduino library for SPI and I2C access to the NFC chip in the Italian Electronic Identity Card (CIE)
C++
24
star
49

spid-regole-tecniche

Regole tecniche SPID
Python
24
star
50

spid-compliant-certificates

Solution to create self-signed certificates according to Avviso SPID n.29
Shell
24
star
51

spid-ansible-shibboleth-example

Service provider di base con autenticazione SPID
HTML
23
star
52

fatturapa-python

Generatore a riga di comando di semplici fatture elettroniche FatturaPA per consulenti
Python
23
star
53

spid-shibboleth-proxy-docker

SPID authentication proxy based on Shibboleth service provider
CSS
22
star
54

publiccode-crawler

publiccode.yml crawler for the Open Source software catalog of Developers Italia
Go
22
star
55

daf-dataportal

The DAF Dataportal is the front-end project of the PDND portal available at this link.
JavaScript
22
star
56

spid-cie-oidc-django

The SPID/CIE OIDC Federation SDK, written in Python
Python
22
star
57

report-vaccini-anti-covid-19

Report vaccini anti Covid-19 - Commissario straordinario per l'emergenza Covid-19
JavaScript
20
star
58

cie-mrtd-dotnet-sdk

SDK for reading the ICAO MRTD information from the Italian Electronic Identity Card (CIE)
HTML
19
star
59

spid-metadata-signer

Tool per la firma del metadata SAML SPID
Shell
19
star
60

spid-compliant-certificates-python

Python native solution to generate and validate X.509 certificates according to Avviso SPID n.29 v3.
Python
19
star
61

spid-cie-oidc-java

The SPID/CIE OIDC Federation Relying Party, written in Java
Java
19
star
62

guida-sviluppo-gestione-software-libero

Guida allo sviluppo e gestione di software libero nella Pubblica Amministrazione italiana
Python
19
star
63

design-scuole-pagine-statiche

Pagine statiche dedicate al progetto per i siti delle scuole
HTML
19
star
64

daf-kylo

Kylo integration with PDND (previously DAF).
Java
19
star
65

publiccode-editor

A web editor to create and edit publiccode.yml files
SCSS
18
star
66

bootstrap-italia-playground

Bootstrap Italia Playground
HTML
18
star
67

spid-smart-button

Pulsante login per SPID basato su finestra modale JavaScript
JavaScript
18
star
68

public-opendata-sources

A (complete) list of Italian public open data sources.
Python
18
star
69

cie-middleware-macos

Middleware della CIE per MacOS (Carta di identità elettronica)
C++
18
star
70

cie-aspnetcore

AspNetCore Remote Authenticator for CIE 3.0
C#
17
star
71

ckan-it

This project provides everything you need to run CKAN plus a set of extensions for supporting Italian open data in a set of Docker images.
Shell
17
star
72

pianotriennale-ict.italia.it

Sito Piano Triennale ICT
HTML
17
star
73

design-comuni-plone-theme

Tema Plone per i siti dei comuni italiani
JavaScript
17
star
74

spid-passport

Passport authentication provider for SPID
JavaScript
17
star
75

cieid-android-sdk

Kotlin
17
star
76

cie-ideaapp

App IDEA per Android che consente la lettura dati documento ICAO
Java
17
star
77

design-comuni-pagine-statiche

Le pagine statiche che compongono il modello di sito web per i comuni
Handlebars
17
star
78

design-wireframe-kit

Official Italian wireframe kit for LoFi prototyping
17
star
79

anpr-opendata

Open data di ANPR
17
star
80

daf-dataportal-backend

Backend per il nuovo frontend (in sviluppo) di dati.gov.it
Scala
16
star
81

form-pa

A flexible and configurable form based on json schema
TypeScript
16
star
82

design-wordpress-theme-italiaWP

A wordpress theme based on the legacy Italia web toolkit
PHP
16
star
83

docs-italia-theme

Tema per i documenti pubblicati su Docs Italia
JavaScript
16
star
84

spid-cie-oidc-aspnetcore

SPID/CIE OIDC Federation SDK for AspNetCore
C#
16
star
85

dcc-utils

Python library to decode the EU Covid-19 vaccine certificate
Python
15
star
86

eudi-wallet-it-python

Python toolchain for building an OpenID4VP RP with a SATOSA backend compliant with the Italian Wallet implementation profile
JavaScript
15
star
87

daf-semantics

Daf Semantics repository
Scala
15
star
88

spid-wordpress

SPID Wordpress plugin (based on SimpleSAMLphp)
PHP
14
star
89

design-jekyll-theme

A Jekyll theme which implements the Italia Design System
HTML
14
star
90

agavecms

Agave è un software open-source composto da una serie di strumenti interconnessi che cooperano tra loro per la generazione di un sito statico
JavaScript
14
star
91

spid-sp-shibboleth

Middleware SPID basato su Shibboleth
JavaScript
13
star
92

spid-rails

SPID authentication for Ruby on Rails
Ruby
13
star
93

design-laravel-theme

Easy Bootstrap-Italia integration with Laravel 5
PHP
13
star
94

spid-go

Go package for SPID authentication
Go
13
star
95

spid-graphics

Icone, loghi e grafiche SPID
HTML
13
star
96

design-italia-gatsby-starterkit

Gatsby starter per il Design React kit di Bootstrap Italia
JavaScript
13
star
97

spid-testenv-docker

Spid Test Environment - Docker
Dockerfile
13
star
98

lg-acquisizione-e-riuso-software-per-pa-docs

Linee Guida su acquisizione e riuso di software per le pubbliche amministrazioni
Python
12
star
99

spid-docs

Documentazione SPID
12
star
100

spid-idp-proxy-shibboleth

Shibboleth IDP con possibilità di delegare l'autenticazione ad un IDP SPID.
12
star