diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d067910 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "typescript.tsdk": "node_modules/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true +} \ No newline at end of file diff --git a/bk.sql b/bk.sql deleted file mode 100644 index 6974896..0000000 --- a/bk.sql +++ /dev/null @@ -1,137 +0,0 @@ --- --- PostgreSQL database dump --- - --- Dumped from database version 11.10 --- Dumped by pg_dump version 14.5 (Homebrew) - -SET statement_timeout = 0; -SET lock_timeout = 0; -SET idle_in_transaction_session_timeout = 0; -SET client_encoding = 'UTF8'; -SET standard_conforming_strings = on; -SELECT pg_catalog.set_config('search_path', '', false); -SET check_function_bodies = false; -SET xmloption = content; -SET client_min_messages = warning; -SET row_security = off; - -SET default_tablespace = ''; - --- --- Name: Project; Type: TABLE; Schema: public; Owner: postgres --- - -CREATE TABLE public."Project" ( - id text NOT NULL, - "createdAt" timestamp(3) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, - "updatedAt" timestamp(3) without time zone NOT NULL, - name text NOT NULL, - description text NOT NULL, - tags text[], - body text NOT NULL, - images text[], - license text DEFAULT 'cc-ns-by-sa'::text NOT NULL, - draft boolean DEFAULT true NOT NULL, - published boolean DEFAULT false NOT NULL, - "underRevision" boolean DEFAULT false NOT NULL, - what text NOT NULL, - why text NOT NULL, - how text NOT NULL, - "previewImage" text NOT NULL, - author text NOT NULL, - "buildSteps" jsonb[] -); - - -ALTER TABLE public."Project" OWNER TO postgres; - --- --- Data for Name: Project; Type: TABLE DATA; Schema: public; Owner: postgres --- - -COPY public."Project" (id, "createdAt", "updatedAt", name, description, tags, body, images, license, draft, published, "underRevision", what, why, how, "previewImage", author, "buildSteps") FROM stdin; -cl3wqitmz0004jk5cff280zgy 2022-06-02 08:07:38.891 2022-06-02 08:07:38.893 Kiro La biscotte ergonomique {}
Kiro
\n\nLa biscotte ergonomique
\n\nA team of designers and users worked for two fascinating days to imagine and conceive with Harrys and Wasa the accessibility of the kitchen and in particular rusks.
\n\n.jpg?alt=media&token=cc3ca5c7-abfc-4c09-83ae-6effc900a8ba)\n\nWe applied the design thinking methodology during the workshop, as well as throughout the development phase of the project. \n\nThe first step was to do an exercise to better understand the daily life of Claire & Rivka and their relationship to cooking and food.\n\nWe tried to understand their real need to define our goal. \n\nWe focused on the moments when there is physical contact with the product and the difficulties that arise for them
\n\n.jpg?alt=media&token=d191412f-fb26-482b-8eb4-3b182bf34c0d)\n\nWe worked to respond to the concerns encountered by Claire and Rebecca. Claire has tremors in her hands which make it difficult for her to hold on to certain things for a long time. After talking to them at length and observing their gestures during the two days of work at Barilla, we established several proposals and invited Claire and Rebecca to come and try them and give us their opinion.
\n\n.jpg?alt=media&token=cd820492-4f92-4904-84e1-de28d52b0b0b)\n\n.jpg?alt=media&token=e6e139a4-e39d-4fe1-ac69-609056d6a46f)\n\nAfter blind tests and letting our guests naturally take hold of the different rusks, we were able to focus on two forms that they found effective.
{} t f t The Kiro Ro ’cracker can be broken in two along a pre-cut line: a rounded part is ready to be decorated with toppings and a smaller part which can be used as a spreading tool. This version offers a playful and practical cookie, with a practical dimension.\n\nThe Kiro Rec ’crackers offer several handling possibilities thanks to their intuitive use in order to offer maximum comfort to each user according to their mobility and habits. The name Kiro comes from the prefix "chiro", coming from the ancient Greek kheír ("hand").\nThe shapes of the Kiro crackers have been thought through and tested to facilitate handling for users with certain gripping difficulties. Usually, the shapes of rusks and other crackers are designed according to production machines or aesthetic or marketing criteria. Kiro's variations have been imagined to adapt to the human and in the first place to the ergonomics of the hand. All versions of Kiro crackers are made from cookie cutters. These can be made for “domestic” use with a 3D printer. https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2F07GPlTkVeRdzvyTJsTbM%2Fimages%2FRcC0PcqtSnUyGGaP7oJI%2Fmain-image-a3.jpg?alt=media&token=ba75c184-e0a6-4fb1-a542-6224d39fb201 ludovico@hackability.it {} -cl3wqitmz0005jk5cllcejqkg 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 Marco Kart Girello in legno, acciaio e tessuto colorato, con sistema frenante che entra in funzione in caso di necessità e con imbrago a rotaia che facilita il cambio della direzione del moto. {} {} t f t Per far fronte allo scarso senso di equilibrio, abbiamo sviluppato un girello chiuso su tutti i lati. Il bambino viene infilato dall'alto in una struttura in stoffa che, in caso di caduta, lo sostiene, portandolo in posizione seduta. \nInoltre, la struttura è dotata di un impianto frenante, che entra in azione in caso di caduta, garantendo sicurezza. Lo stesso meccanismo si attiva anche se Marco si siede: in questo modo, Marco Kart diviene anche uno stimolo a restare in posizione eretta e camminare. Marco Kart è un deambulatore progettato e realizzato per Marco Chiaro, un bimbo di 8 anni affetto da un rara malattia. Nonostante le molte patologie connesse all'1q41.12, Marco ha la capacità di camminare ma l'operazione è molto faticosa e pericolosa. Pertanto il girello, si propone di rendere Marco più confidente e autonomo, limitando le sue difficoltà. DIY, taglio legno, taglio ferro, saldatura https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2F0XUTQSgCkQptIfaOI54P%2Fimages%2FByjHCSG5aG3jUjHxOMvW%2FIMG_7438-min.JPG?alt=media&token=a89c3332-9e24-4938-88c7-519828c88f70 ludovico@hackability.it {} -cl3wqitn00006jk5cazz4ao86 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 Squeezer 46 Strizzatore di stracci e spugnette tramite pressione orizzontale per coloro che non hanno la piena mobilità delle mani. {}Lo Squeezer 46 è composto da due parti:
Inoltre sia nella parte superiore del corpo che del pistone, sono presenti dei lacci di nylon con l'obiettivo di migliorare la presa e e di conseguenza la forza di strizzatura durante l'utilizzo.
\n\n\n\n {} t f t Squeezer 46 è uno strizzatore composto da due parti cilindriche di diametri diversi le quali vengono compresse orizzontalmente tra di loro tramite i palmi delle mani e permettono, grazie al loro particolare profilo, la fuoriuscita dell'acqua. Esso è perfettamente trasportabile ed utilizzabile in qualsiasi ambiente che presenti un lavabo o una bacinella. Abbiamo progettato questo strizza-stracci per Francesca, una ragazza che essendo tetraplegica non ha la totale mobilità delle mani. Non potendo infatti compiere completamente l'azione dello strizzamento necessitava di un ausilio che la aiutasse. Esso è stato costruito tramite la stampante 3D e il materiale utilizzato è il PLA che lo rende piú leggero ed economico. https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2F0o7sqm7ArxzCKJZVDcsg%2Fimages%2FRWI0F7VQMwEQfmZFv8cm%2FP_20190710_211343_vHDR_On_1.jpg?alt=media&token=9223a1a5-9638-49fa-ab58-36d71579c76c ludovico@hackability.it {} -cl3wqitn00007jk5c337wn2rs 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 X-GP Un pratico fermapiede per bicicletta facile da calzare e che, impedendo il movimento laterale del piede, consente al ciclista di avere una pedalata fluida e regolare. {}L'X-GP si compone di una struttura anteriore, modellata e stampata in 3D, la cui forma è ispirata a quella di un comune fermapiede per bicicletta.
Questa struttura è caratterizzata da due prolungamenti laterali rigidi che impediscono al piede di muoversi lateralmente e di urtare la pedivella.
\n\n\n\n.jpeg?alt=media&token=9c4f2e01-f3d6-4782-ae14-a85852e77416)\n\nAlle estremità delle due fasce laterali sono stati praticati dei fori nei quali è inserito un elastico che, avvolgendo il piede, contribuisce a mantenere ben saldo il piede sul pedale.
Inoltre, la presenza nella parte anteriore di una cinghia regolabile consente di adattare con facilità l'X-GP a seconda del tipo di scarpa indossato dal ciclista.
\n\n\n\nL'X-GP viene fissato direttamente alla parte anteriore del pedale mediante due bulloni. Nella parte sottostante del fermapiede, infatti, sono stati praticati due fori per inserire le viti.
\n\n {} t f t L'X-GP è un fermapiede che prevede due prolungamenti laterali rigidi grazie ai quali il piede non urta la pedivella e resta fermo sul pedale. Inoltre l'inserimento di un elastico che avvolge la caviglia, contribuisce alla maggiore stabilità del piede e facilita la calzata del fermapiede. Il progetto è stato pensato per Gianpaolo, appassionato di ciclismo. Non avendo il pieno controllo della gamba destra, Gianpaolo ha difficoltà a mantenere perfettamente stabile il piede destro sul pedale, urtando così la pedivella e rendendo faticosa e poco sicura la pedalata, soprattutto nei tratti in salita. 3D printed, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2F3wnpu1O15zYACVw2nXg1%2Fimages%2Fp2K8TH9JsVybtDm1pIjk%2FWhatsApp-Image-2019-06-16-at-13.18.14.jpeg?alt=media&token=aac47b26-a45f-4519-91a4-c64e5a0083f3 ludovico@hackability.it {} -cl3wqitn00008jk5cfwcw63rl 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 Tournée Il primo tavolino pieghevole per carrozzina. Tutto stampato in 3D. {}\n\n\n\n
Tournée è un tavolino per sedie a rotelle progettato per essere portatile, con dimensioni corrette, facile e veloce da piegare. È interamente stampato in 3D, e personalizzabile per rispondere a varie esigenze e situazioni.\n\nAl momento non c'è nulla di simile sul mercato, e molti tavoli sono ingombranti e difficili da trasportare. Esistono versioni basculanti ma dipendono dal tipo di carrozzina.
Tournée è anche unico perché si adatta a molti modelli.
{} t f t Tournée è un tavolino facilmente pieghevole e trasportabile che tramite delle cinghie strap si adatta ai vari modelli di carrozzina. Le dimensioni sono pensate per attraversare anche le soglie più strette. Daniela non riusciva sempre ad entrare negli ascensori con suo figlio Francesco, in carrozzina e con il suo tavolino. Inoltre era difficile da trasportare durante gli spostamenti, viaggi, gite, o altro. 3D printing, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2F6Y0vcf2oyNTmP0ibUiN8%2Fimages%2FkRy2RDw9n0Y4xh72yIcQ%2FIMG_4062_C.jpg?alt=media&token=ef0ff233-f245-491d-8d32-b43200a9fbe3 ludovico@hackability.it {} -cl3wqitn00009jk5c322fhpie 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 ABA Un apri-finestre per Chiara {}\n\n {} t f t Permette di ruotare e spostare la maniglia della finestra a piacimento. Chiara ha una finestra difficile da raggiungere, in più ha difficoltà motorie tali che è quasi impossibile per lei accedervi. DIY, 3d printed https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2F6i5Em8w39fbRkUbweSwY%2Fimages%2Fj9Vi0kkCy1wXbPrAOcH7%2FIMG_4369_B.jpg?alt=media&token=512038d1-8ea1-4dee-b5f3-7de09b552660 ludovico@hackability.it {} -cl3wqitn00010jk5co56dpgq3 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 Baby on Board Giulia cercava un passeggino utilizzabile da persone in carrozzina per poter trasportare il proprio bambino nella maniera più confortevole possibile, poiché sul mercato non esiste tutt'ora nulla di soddisfacente. {}
Lo scheletro in metallo è formato da due bracci di ferro simmetrici uniti all’asse che collega le due ruote della carrozzina. Seguendo questa base, i tubi proseguono in avanti parallelamente al terreno e per poi ruotare verso l’esterno e continuare fino a raggiungere il livello dei piedi di Giulia e rimanendo ad essi laterali. A questo punto la struttura sale lungo perpendicolarmente al terreno. A quest’ultimo si aggancia esternamente la restante parte di tubo verticale e i due pezzi vengono fissati. Infine i tubi rientrano verso il busto rimanendo sempre paralleli al terreeno.
{} t f t Il progetto è nato per consentire a mamme e papà in carrozzina di poter trasportare autonomamente il proprio neonato, sia fuori che dentro casa e nel modo più pratico possibile. Questa è una necessità che fino ad ora non è stata presa sufficientemente in considerazione dal mercato internazionale e soprattutto da quello italiano. Ideando questa culla autoportante abbiamo voluto agevolare le coppie con disabilità nel poter ampliare la famiglia, offrendo loro il mezzo per potersi spostare in tutta libertà! A tutto il gruppo è piaciuta fin da subito l'idea di lavorare su questo progetto per due motivi: il primo era che ci sembrava una sfida interessante e stimolante nella quale ci saremmo cimentati molto volentieri, come seconda ragione invece ci piaceva molto l'idea di risolvere un problema di molte persone e rendere possibile qualcosa che prima poteva sembrare difficile o infattibile. Inizialmente, per agganciare l’intera struttura alla carrozzina, ispirandoci al telaio di una bicicletta, abbiamo usato degli stem. Poi per crearne lo scheletro abbiamo optato per dei tubi in ferro che, dopo essere stati tagliati, sono stati saldati per formare una struttura a ‘C’. In seguito, per la culla abbiamo scelto un tessuto impermeabile e abbiamo aggiunto un’imbottitura interna per renderla più confortevole. Infine abbiamo passato dell’antiruggine e successivamente della vernice bianca sui tubi. https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2F9xQsGn2KGdOsWHbCUGN0%2Fimages%2FQaQQcxMbt6jODXPN5jlc%2FImmagine-1.jpeg?alt=media&token=b2c421b2-7cda-4bd5-af14-e385add53d98 ludovico@hackability.it {} -cl3wqitn00011jk5c0anh43jx 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 P-Cane Manico per bastone da passeggio performante {}  {} t f t P-Cane è un manico per bastone da passeggio che può essere appeso (o messo in sicurezza) e permette due impugnature (alta e bassa) per salire e scendere le scale più facilmente. Durante il laboratorio di Hackability4Pontelambro abbiamo scelto dei progetti da rivedere e riprogettare perché possano essere d'aiuto alle persone anziane. 3D Printed, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FDlzkhaDkwMZsCnVFqGAd%2Fimages%2F8tIUaLp2UgWttb70XCOZ%2FP-Cane_1.jpg?alt=media&token=7a8f7f4a-e470-4f4d-b6f3-cd2714a91841 ludovico@hackability.it {} -cl3wqitn00012jk5clzwml3bb 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 Lift plateau amovible pour fauteuil roulant {}We started with a field survey at Nassima (suffering from myopathy) and observed her various activities as well as the solutions she has already found to manage her disability. Then we conducted an interview with her to find the best solution for her needs. The answer is a tray that she can lock herself on her chair and that allows her to load her meal on to move home, make a meal tray in front of his TV or mince vegetables. The tray is also equipped with feet to allow her to have breakfast in bed for example.
\n\n {} t f t The tray is designed to be easily fixed to a wheelchair by the user herself. It has a large indentation on the front to load a plate and borders on sides to prevent things to fall. the tray is locked by the chair joystick. It can be lift and move around to eat, work on laptop or slice vegetable for example. The feet also allow Nassima to use it at bed. We are developing a wheelchair tray allowing the user to recover some of his autonomy especially around cooking and eating, despite a heavy handicap . The tray is made out of varnished mdf at this time. It has been cut with a cnc milling machine and then glued together. https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FE5dzDmPuve7C387DIles%2Fimages%2F7kvMqKJ9q880paNxYyKj%2FLIFT-%40NASSIMA-KITCHEN.jpg?alt=media&token=e6edb95c-009b-4d04-8a01-7b4db9664a99 ludovico@hackability.it {} -cl3wqitn00014jk5crb46w96k 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 Easybag Maniglia porta-sacchetti {}\n\n\n\n\n\n {} t f t Easybag è una maniglia porta-sacchetti, pieghevole e portatile, con chiusura di sicurezza.\nIn questa versione, risulta un oggetto migliorato in portabilità con qualche accorgimento tecnico che lo rende più confortevole. Durante il laboratorio di Hackability4Pontelambro abbiamo scelto dei progetti da rivedere e riprogettare perché possano essere d'aiuto alle persone anziane. 3D Printed https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FIBkGAriD36UUy2mphNB7%2Fimages%2FrbnlUclYI40dZwDz2r9c%2FEasybag_6.jpg?alt=media&token=822bbf25-2171-40b9-999e-7373a6ce18a5 ludovico@hackability.it {} -cl3wqitn00015jk5cgazp1fx8 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 Go Sofi Go Deambulatore-passeggino {} {} t f t La struttura del telaio realizzato prende spunto dalla forma della sedia utilizzata da Sofia per camminare in casa: comprende un telaio a forma di cuneo per gestire la distribuzione del peso, una seduta ripiegabile, un manubrio a sbarra legante le coppie di gambe anteriori e posteriori. Il sistema di frenaggio è montato posteriormente tramite due rondelle poste simmetricamente ai lati della ruota: una saldata e una regolabile tramite dado per impedire al prototipo di prendere velocità Sofia, bambina di 9 anni affetta da microcefalia grave, aveva bisogno di un deambulatore con cui camminare in sicurezza fuori dagli ambienti domestici. Questo ausilio doveva essere facile da manovrare, stabile in caso di caduta della bambina e doveva potersi trasformare in passeggino cosicché i genitori potessero evitare, in caso di lunghe passeggiate, di portare sia il deambulatore che la carrozzina. Saldatura, manipolazione ferro, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FIiz36RKjvJiuZ8iZrA1O%2Fimages%2FqhAIZVxlggpZUg6G8MFz%2Fpasseggino.jpeg?alt=media&token=3f265381-5313-4b8f-b489-01bee2e51fd8 ludovico@hackability.it {} -cl3wqitn00016jk5cm6kdq3wv 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 Unwrapped Toolkit to improve packagings {}
The packagings are designed to be the simplest as possible. We applied the same open / close system to the 4 products with a giant twist tie that allows to crimp the bag and keep it closed. We also created a graphic charter to show clearly the information that guide the user in his purchase and later, in his meal. Theses information take form in a simple tag added on the packaging.
Find the presentation video here : Video - Unwrapper | Facilitators
\n\n.jpg?alt=media&token=ad9af032-65f5-4067-81fe-83645697fcf2)\n\nThe QR code is generated online - to be understable for a majority of people we use the classic QR Code - not Aztec or Matrix. It can be easily generated with this open source web tool : keremerkan.net | QR code and 2d code generator. Then, the QR code is print on the packaging.
With a thermoforming machine, we mold a plastic sheet to overprint a braille text on the QR code to help blind and visually impaired people to find it easily. The QR code lead to a website that gives vocal informations.
\n\n.jpg?alt=media&token=9132eab1-ef45-4191-961f-b7f7fa3d86f3)\n\nThe prototype of the vocal tag is based on an Arduino board - connected on battery and on a speaker, with the built-in program returning the specific sound of the product (the program can be find here : vocal tag - ino.
In this case, everything fit inside a 3D Print box which can be easily fix on the shelves for each product (or product type). Ideally, the objective being to be able to connect via Bluetooth, or to make it interactive via NFC, so that it can be easily updated.
This additional interaction allows audio content to be accessed from a smartphone.
\n\n {} t f t \nSystem of easy opening and closing bags: the consumer can easily identify the tears at the top of the bag and take off the twist tie. This twist tie, bigger than the ones usually used, allows an easy grip. Finally, to close it you just have to wrap it.\nClarity of the information: a graphic charter show clearly the information that guide the user in his purchase and later, in his meal.\nInformation: a QR code on the packagings and the website make essential informations audible on your device.\n\n \nThe purpose of this project is to improve the experience while using products from Harry’s and Wasa for blind, limited dexterity, but also no disability people. We identify different issues with the help of two people with disabilities : visibility of products information - description, price, composition -, understanding and practicality of the opening/closing system,...\n \nThe packagings are made to be the simplest as possible. We applied the same open / close system to the 4 products with a giant twist tie that allows to crimp the bag and keep it closed. The bags are made of kraft and cut with a lasercut.\nWe also created a graphic charter to show clearly the information that guide the user in his purchase and later, in his meal - with the help of the QR Code system.\nBesides, a small arduino box help the customer inside the shop.\n\n https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FLYv4kZmpXVrj8uBbByt9%2Fimages%2F8d9TJq58FnkfIVWdjl9S%2FUNWRAPPED-FACILIATATORS_FINAL-(4).jpg?alt=media&token=fe4ce87f-4872-424f-9e92-ea4506825037 ludovico@hackability.it {} -cl3wqitn00017jk5cm1ql2e5y 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 Tavola Pitagorica Questo prototipo di tavola pitagorica si rivolge a bambini con disturbi specifici dell'apprendimento e si propone come strumento compensativo\nper lo studio della matematica nei primi anni dell'istruzione. {} {} t f t La tavola è composta da due rettangoli di plexiglass sovrapposti ed uniti da viti; tra di esse vi sono una stampa di tavola pitagorica e una mascherina scorrevole, anch’essa in plexiglass, che copre tre righe della tavola. Una riga riporta l’indicazione della colonna corrispondente, una seconda riga è completamente trasparente per rendere possibile la visione del risultato dell’operazione, mentre la terza è oscurata per focalizzare l’attenzione sul risultato. Lo studio della matematica richiede un alto livello di pianificazione, quindi il coinvolgimento di più domini neuropsicologici: sono interessati \nil campo della pianificazione, della memoria di lavoro, dell’attenzione, della memorizzazione effettiva della tabellina. Nei soggetti con difficoltà \ndi apprendimento queste operazioni vanno vicariate con oggetti compensativi. La tavola è destinata a ragazzi discalculici, disprastici e soggetti con \ndifficoltà nella funzionalità visiva. Taglio plexiglass, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FO5VDDgpzFVeZa7TWWFZH%2Fimages%2FnRdLHKo63pLDqMJAaAL5%2Ftavola-noback.jpg?alt=media&token=c79bd3d9-8011-41ec-8ac8-a72e2b0f595c ludovico@hackability.it {} -cl3wqitn00018jk5criigo7q3 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 EatEasy Supporto rialzato e adattabile per il piatto per scoraggiare la tendenza di Antonella a chinare la testa verso il piatto promuovendo l'adozione di una postura corretta. È costituito da una base concava e da una serie di piedini ad incastro, stampati in 3D. {}L'ausilio pensato è un tavolino regolabile, formato da due parti principali: la base e i piedini. La base circolare, che costituisce una prima altezza di 7cm, presenta una concavità nella quale appoggiare il piatto. Le misure del diametro massimo del piatto fondo e del piatto piano sono state prese appositamente sui piatti di Antonella. Poiché il piatto fondo è di dimensioni leggermente inferiori rispetto al piano, è stato necessario inserire del materiale che opponesse attrito per evitare lo scivolamento: sono state incollate con colla cianoacrilato due strisce trasversali di gomma spesse 2mm.
Oltre ad incastrare il piatto è stato necessario cercare una soluzione affinché l'intero supporto fosse il più stabile possibile. Dunque si è scelto di incollare un materiale che creasse attrito (polietilene) ma che allo stesso tempo fosse compatto e poco ingombrante: una strategia simile a quella adottata per i tappetini del mouse.
La base è sorretta da quattro sostegni verticali, ognuno dei quali sarà costruito tramite l'aggiunta in successione di tre moduli ad incastro quadrato. In questo modo il tavolo può raggiungere quattro diversi livelli di elevazione a seconda delle necessità: oltre a quello della base circolare si aggiunge ogni volta un livello per ogni quartetto di piedini aggiunti alle gambe del tavolo stesso.
{} t f t Per incentivare l'autonomia di Antonella e per evitare l'assunzione ripetuta di una postura scorretta era necessario avvicinare il piatto al viso, cosicché Antonella non si dovesse piegare sopra al piatto per mangiare da sola. Questo supporto rialzato è stato pensato per Antonella, ragazza di 13 anni affetta da tetraparesi mista, condizione che comprende sintomi di spasticità, contratture muscolari, disturbi della marcia e della coordinazione, movimenti coreici incontrollati. Stampa 3D, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FSVjfplQPCmWCej9m9iaV%2Fimages%2F8l9juDEnXKQcXojJBEfW%2F5mKLldy2.jpeg?alt=media&token=0ef9a0b5-17e4-49b7-bbeb-5fd54096a7fb ludovico@hackability.it {} -cl3wqitn00019jk5c4vb60kq7 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 Supporto-cuscinetto per il braccio Appoggio per il gomito che rende poco faticosa l'attività di scrittura al computer {}Il supporto per il braccio si compone di una base in materiale plastico e di una parte, applicata superiormente alla base, più morbida, conformabile secondo le esigenze dell’utilizzatore.
Il supporto, per poter sostenere parzialmente il braccio di Fabio durante l’utilizzo del computer, sarà, infatti, affiancato inferiormente e/o sul lato destro della tastiera.
La base è stata realizzata con un programma di modellazione 3D (Fusion 360) e successivamente stampata in 3D. Sotto sono state applicati gommini antiscivolo, per evitare lo scorrimento durante il suo utilizzo. La parte superiore che andrà, invece, a diretto contatto con il polso/braccio dell’end-user si compone cuscinetti rivestiti esternamente da fodere colorate e riempiti di semi di lino.
{} t f t Questo appoggio vuole rendere la scrittura meno faticosa per Fabio sostenendogli il braccio. Nella progettazione di questo ausilio, abbiamo compreso che un unico supporto rigido poteva essere limitante per il bambino, poiché questo potrebbe non essere versatile rispetto a computer o tastiere di grandezze differenti.\nCosì siamo riusciti a conciliare la praticità del supporto a un aspetto ludico, scomponendo l’appoggio in più parti collegabili ad incastro come un puzzle. Fabio soffre di una patologia che comporta un degrado neuronale che causa la difficoltà nel controllare i movimenti fini in particolare a livello delle dita e del polso. Fabio utilizza per scrivere prevalentemente il computer, sia a scuola che a casa.\nLo scarso controllo nei movimenti delle dita e del polso, però, lo portano ad affidarsi prevalentemente alla spalla e ad irrigidire il braccio, rendendogli faticose l’utilizzo prolungato della tastiera del computer. DIY, 3D print https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FUAMIJpuf2nHkx86Xt7ik%2Fimages%2FG35xuMB7vPIz7svbtnQc%2F1.PNG?alt=media&token=c1584243-8415-4c0a-9306-f4301735dde2 ludovico@hackability.it {} -cl3wqitn00020jk5c0hxqfgkj 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 A-Team: un team per Alice Prodotto software per la consultazione di materiale didattico in completa autonomia, con un'interfaccia "ergonomica", per alunni con difficoltà visive e motorie, accessibile tramite monitor touch.\n {} {} t f t Il materiale didattico presentato all’alunno/a è composto da una serie di immagini scelte dai docenti,correlate da un audio contenente la lezione.\nPer accedere ai contenuti didattici, sono presenti grandi pulsanti colorati,facilmente individuabili,con feedback vocale che permettono la navigazione tra le diverse materie. Una volta scelta la materia, viene presentata la lezione che il docente ha deciso di presentare. L'inserimento del materiale e il suo aggiornamento avvengono tramite un'interfaccia dedicata. "A-team" è un prodotto software che prevede un'interfaccia "ergonomica" realizzata per Alice, una ragazzina di 13 anni con difficoltà visive e motorie, che le rendono quindi molto difficile studiare sui libri e sulle dispense classiche fornite dagli insegnanti.\n"A-team" fornisce ad Alice la possibilità di poter usufruire di questo materiale didattico in completa autonomia, rendendola più indipendente, malgrado le sue difficoltà. \n Il prodotto software è stato pensato sotto forma di sito web in quanto multidispositivo e multipiattaforma e in quanto non necessita di installare nulla se non un browser.\nSono stati utilizzati Bootstrap e W3.CSS per realizzare la componente grafica e Javascript, JQuery e PHP per la componente “funzionale”.\nLe pagine web e il materiale per le dispense sono salvate su un web server ed è stato utilizzato un database relazionale mySQL per gestire tutti i dati (noi abbiamo utilizzato Altervista). https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FbO7Bhrduy26h4lkCWakH%2Fimages%2FcheaVNd66WtH4VGw2tdD%2FDiapositiva2.JPG?alt=media&token=f881489e-629a-4106-9859-00c45031b164 ludovico@hackability.it {} -cl3wqitn00021jk5ci9uua4d6 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 Tulip Il gira-chiavi portachiavi {}Il progetto parte dall'idea che esistono oggetti simili nella funzione, ma i girachiavi di solito forzano la serratura con il risultato di rompere la chiave. Esistono poi altri strumenti che durante la co-progettazione sono stati qualificati come sgradevoli e/o imbarazzanti per gli utenti.
La soluzione, liberamente ispirata ai prodotti Alessi, è stata quella di un oggetto pop o simbolico, un portachiavi anche girachiavi che risulta piacevole come gadget.
\n\n\n\n\n\n {} t f t Insieme alle tue chiavi, hai un 'fiore' e una 'foglia' che diventano una 'maniglia' per girare le chiavi. In collaborazione con ABAR, Thinkalize e PACO Design, ci hanno richiesto un gira-chiavi per persone con artrite reumatoide. I classici strumenti, o spezzano le chiavi, o sono discriminanti/ghettizzanti. 3D printed, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FcIolyOA9vAPMFHfVDB5R%2Fimages%2F2XD9YdwvbqrKS2gjRr6r%2FTulip_1.jpg?alt=media&token=58924510-28e7-4b4e-88ef-7a5c04817b95 ludovico@hackability.it {} -cl3wqitn00022jk5cye3hto2u 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 Tavolino di Fabio Tavolino in tela e legno montato su girello, con porta borraccia e sacca per trasportare piccoli oggetti {} {} t f t Il tavolino, fissato al girello di Fabio attraverso dei velcri, è costituito da un ripiano rigido fornito di porta borraccia e da una sacca che permette a Fabio di trasportare piccoli oggetti, oltre che evitare un urto troppo violento in caso di caduta. Tutti gli spigoli sono stati arrotondati in modo da non essere pericolosi. Fabio ha 7 anni ed è affetto dalla malattia di Charcot-Marie-Tooth (CMT), che comporta scarso equilibrio nella deambulazione e un debole controllo della motricità fine soprattutto nei movimenti delle dita e del polso. \nPer Fabio abbiamo quindi ideato e realizzato, con l’appoggio e la collaborazione della sua famiglia e della sua scuola, due oggetti che lo aiutino e lo rendano più autonomo: un tavolino da applicare al deambulatore e un supporto per il braccio. lavorazione legno, diy, 3D print https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FhaGu584tNULWsOhkPfeg%2Fimages%2FaHgxZKamR4Sv0xFvgsoX%2FWhatsApp-Image-2018-06-14-at-10.33.16(2).jpeg?alt=media&token=435c8e3e-f9b6-4b90-b64c-f6af5f8bbc51 ludovico@hackability.it {} -cl3wqitn00023jk5cs8my2d6c 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 Abbassa Tore Seduta mobile con altezza regolabile autonomamente per lavori casalinghi che richiedono di stare, per un tempo prolungato, in posizione difficilmente raggiungibile. {}L'Abbassatore è una sedia di ferro che è in grado di alzarsi e abbassarsi dai 35 ai 70 cm.
La sedia è costituita divisa in fondamentalmente tre sezioni:
La base è un rialzo di 15cm che serve a dare alla sedia il range di altezza desiderato.
Si tratta di una specie di tavolino il cui "rettangolo" superiore è di dimensioni 55 per 40.
Le "gambe di questo tavolino sono dotate di ruote di cui due(sulla parte frontale della struttura) dotate di freno.
\n\n\n\nIl cavalletto alza-moto è il meccanismo vero e proprio della sedia. Esso è stato modificato in modo che fosse possibile montarci al di sopra una seduta.
\n\n\n\nLa seduta consiste di uno schienale realizzato con ferro e un pannello di legno multistrato(fissato alla struttura) foderato con della gommapiuma. Sopra il cavalletto sono stati saldati dei braccioli e si è fissato un altro pannello foderato per dare più comodità.
\n\n {} t f t La seduta può alzarsi e abbassarsi mentre si è seduti sopra senza il bisogno di aiuto esterno o di sollevarsi da essa.\nInoltre è in grado di mantenere l'altezza ed è possibile, grazie a delle ruote dotate di freno, spostarlo in modo da usarlo dove si preferisce. Il progetto è stato ideato, in particolare, per permettere ad una persona affetta da distrofia muscolare di raggiungere ed operare ad altezze altrimenti irraggiungibili (in quanto troppo in basso).\nL'obbiettivo principale è stato quello di permettere una maggiore autonomia all'interno della sua abitazione. L' AbbassaTore è stato realizzato saldando un cavalletto alza-moto al di sopra i un rialzo di ferro.\nSi sono fissate delle ruote dotate di freno alla base e dei braccioli al cavalletto.\nInfine si è montato uno schienale e si è realizzata una seduta tramite dei pannelli di legno foderati con della gomma piuma. https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FjV2qzBEbhS4iQfXHuDQ4%2Fimages%2FSuIG6aEMKvkWJ4Ge9Dd5%2Ffoto-abbassatore.png?alt=media&token=e8be9511-b939-4a5b-8404-4f887f4b51cb ludovico@hackability.it {} -cl3wqitn00024jk5c4ka9dj16 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 Su il ripiano, su il morale! Il progetto consiste in una serie di aggiunte alla carrozzina di Anita per aiutarla a mantenere una posizione corretta nello svolgimento delle sue attività quotidiane {} {} t f t Il progetto consiste in:\n● Un tavolino portatile e regolabile che possa permettere ad Anita di assumere una\nmigliore postura mentre gioca con il suo iPad.\n● Dei supporti per gomiti che le aiutino a correggere la postura.\n● Un supporto per il joystick che le permetta di avere una migliore presa sul comando,\nquindi una maggiore libertà di movimento con la sua sedia a rotelle. Per la realizzazione di questo progetto il team ha lavorato con Anita, una bambina di 9 anni affetta da tetraparesi spastica. Anita trascorre molto tempo a guardare\ncartoni sul tablet e tende a curvarsi eccessivamente sul tavolino fatto dal\nnonno . Il nostro obiettivo è stato quello di costruire, per e con lei, un dispositivo economico ma allo stesso tempo anche facile da replicare. Il costo totale della realizzazione è inferiore a €150. Stampa 3D, hacking, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FjlouB62rnvLlDUAvYJ6w%2Fimages%2FA31ZD6w486ObS4fW0kRb%2FCattura9.PNG?alt=media&token=7b3f0394-075e-446e-ba24-b965bfe130d2 ludovico@hackability.it {} -cl3wqitn00025jk5cavr4qipd 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 TakeItEasy Ortesi per la mano per evitare l'eccessiva contrazione e i conseguenti spasmi del braccio nella manipolazione di oggetti sottili come una forchetta o una penna. {}Ortesi per mangiare: cinturino palmare elastico con chiusura a velcro regolabile. È stato realizzato sulle misure della mano di Antonella e può essere applicato a qualsiasi impugnatura ingrossata favorendo la presa di una posata o di eventuali altri utensili. L'impugnatura presenta una sezione di diametro pari a 4 cm, al fine di incoraggiare l'appoggio delle dita su di essa, ma senza forzarne i muscoli. Inoltre è prevista la possibilità di una sua temporanea rimozione al fine di consentire l'allocazione dello spazzolino da denti personale. Entrambi i supporti si agganciano alla fascia palmare tramite strisce di velcro. Confortevole e facilmente regolabile, questa impugnatura palmare universale consente un'ottima presa praticamente in ogni condizione.
Ortesi per scrivere: il modo in cui Antonella scrive impone un tipo di presa completamente diverso dalla precedente: la penna viene pizzicata tra pollice e indice, invece di essere avvolta trasversalmente da tutte e quattro le dita (come nel caso della posata). Inoltre occorre che l'utensile formi un angolo fisso con il piano del foglio e che la punta della penna o della matita non sporga eccessivamente al fine di un loro utilizzo ottimale. Pertanto l'idea del cinturino elastico concepita per le posate è stata modificata: una fascia elastica più sottile passa tra indice e pollice, avvolgendo in tale punto un'impugnatura cilindrica con diametro minore, ma simile alle precedenti. L'elastico poi prosegue allacciandosi su se stesso in corrispondenza del polso e infine raggiunge l'estremità iniziale sul dorso della mano.
\n\n\n\n\n\n {} t f t L'ortesi permette ad Antonella di avere una presa più stabile sugli oggetti di dimensioni ridotte come una forchetta o una penna, garantendo anche che tali oggetti restino attaccati alla mano in caso di rilassamento muscolare dell'arti. Questa ortesi è stata pensata per Antonella, ragazza di 13 anni affetta da tetraparesi mista, condizione che comprende sintomi di spasticità, contratture muscolari, disturbi della marcia e della coordinazione, movimenti coreici incontrollati. DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FjoTMZyTb2vBVUVKoAsaO%2Fimages%2FKWJvOpYglFZoUBqVLBDZ%2FE0xW9D06.jpeg?alt=media&token=73ee633a-5e0d-4d66-976d-0433d2fbb90b ludovico@hackability.it {} -cl3wqitn00026jk5c5f6p24mj 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 MobiLIS MobiLIS è una porta d’acceso facilitata alle informazioni di servizio, composto da un portale accessibile tramite QR-code {}MobiLIS è un progetto nato durante Hackability4Mobility nato dalla necessità di Elisabetta di avere dei trasporti pubblici più accessibili. Elisabetta è una ragazza sorda che ha evidenziato l’impossibilità di ricevere alcune comunicazioni fatte in stazione e di usare gli interfoni. In caso di blocco di un ascensore o di una carrozza, infatti, un sordo non sempre può parlare all’interfono e, oltre a non sentire cosa gli viene detto, non può avere una conferma della ricezione della sua chiamata. Il progetto è stato pensato per l’ambiente metropolitano, e la soluzione proposta è stata una web app accessibile tramite QR-code, questo può infatti rimandare ad un indirizzo web ed oltre ad essere facilmente implementabile e personalizzabile, può essere facilmente diffuso in ogni ambiente.
Stampando il QR-code in 3D inoltre diminuisce il rischio di contraffazione, il rilievo infatti rende più difficile colorare gli spazi vuoti, inoltre la struttura costruita in 3 dimensioni è resistente a graffi ed altri tentativi di vandalismo.
La web app ha al suo interno la possibilità di accedere ad una chat ed alcuni video contenenti le traduzioni in Lingua Italiana dei Segni delle comunicazioni solitamente ripetute in stazione e sulle carrozze. È stato cosi creato un mockup che può essere facilmente implementato da qualunque azienda voglia rendere più accessibili i servizi d’assistenza, che ora sono principalmente telefonici.
Il team Mobilis è composto da Elisabetta Mascherucci, Lorenzo Galleani d’Agliano, Flavio Montagner, Marco Bocca, Marco Conforto, Davide Caminati, Francesco Convertini, Franco Lepore.
\n\n\n\n\n\n {} t f t Il progetto è stato pensato per l’ambiente metropolitano, e la soluzione proposta è stata una web app accessibile tramite QR-code, questo può infatti rimandare ad un indirizzo web ed oltre ad essere facilmente implementabile e personalizzabile, può essere facilmente diffuso in ogni ambiente. MobiLIS è un progetto nato durante Hackability4Mobility nato dalla necessità di Elisabetta di avere dei trasporti pubblici più accessibili. Elisabetta è una ragazza sorda che ha evidenziato l’impossibilità di ricevere alcune comunicazioni fatte in stazione e di usare gli interfoni. In caso di blocco di un ascensore o di una carrozza, infatti, un sordo non sempre può parlare all’interfono e, oltre a non sentire cosa gli viene detto, non può avere una conferma della ricezione della sua chiamata. Il QR-code è stato stampato in 3D https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FmJ4iS8VTgfPY9DtyRGn3%2Fimages%2FixqXvLSRt1TJeJxpmTlg%2Fsupporto_palo.png?alt=media&token=046cf841-a2d1-44f1-a792-528ff2b8a6fd ludovico@hackability.it {} -cl3wqitn00027jk5cohg231nn 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 La forchetta di Ivan La forchetta è customizzata sulle esigenze di Ivan e disegnata sulla forma della sua mano per ottimizzare il grasping! {} \n\n {} t f t Tramite un case 3D disegnato sulla forma della sua mano, Ivan riesce a prenderlo senza che la forchetta gli scappi di mano! Ivan ha un problema di handing e non riesce ad usare le normali posate! Tecnologie 3D print, making e laser scan! https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FmkApMc4YX68etdOxPCPx%2Fimages%2FdToq8MFUFQiJUmCxQCH6%2Fduspaghi.JPG?alt=media&token=add48648-5477-4376-9c13-fd0d4a23cdc9 ludovico@hackability.it {} -cl3wqitn00028jk5c1f12ism4 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 S'Trike Triciclo multifunzionale, utilizzabile sia in modo attivo sia passivo dal bambino: spingendosi con i piedi, pedalando e come passeggino grazie alla possibilità del rimando del manubrio dietro al seggiolino. {} {} t f t Il Trike creato è stato ricavato dalla modifica di una bicicletta e permette a Simone di muoversi in totale sicurezza e autonomia. Si può controllare solo con la spinta delle gambe o anche pedalando; inoltre la bicicletta può diventare passeggino o si può attaccare alla bici del papà quando Simone si dovesse stancare. Si voleva modificare un mezzo affinché il Simone, bambino affetto dalla sindrome INVDUP15, potesse imparare ad andare in bicicletta. Con la crescita Simone non è più trasportabile su un carrellino posteriore o su altri supporti porta-bimbi: il veicolo doveva stimolare Simone ad imparare a controllare il mezzo in maniera autonoma, eventualmente proseguendo con l'apprendimento della pedalata in autonomia. Saldatura, taglio ferro https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2Fo3E11j7of5JrY01kXjne%2Fimages%2Fax3quQIlejZTEOdhHjjJ%2FCattura.PNG?alt=media&token=2a1902a2-cd7c-4726-a9e8-6eed7aaf8440 ludovico@hackability.it {} -cl3wqitn00029jk5cq0fxqq2d 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 Supporto per stampelle Trepiede che evita la caduta della stampella nel caso di assenza di appoggi in prossimità della persona {} {} t f t Consente di mantenere le stampelle in posizione stabile perpendicolarmente al suolo Ho sviluppato il progetto a causa di un trauma subito alla gamba. Modellazione mediante software Fusion 360 e succesiva stampa 3D https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FocwOg1m3xfZMnefBjBDU%2Fimages%2FFLwrRHCx7gfYlgrzYiLE%2F01.jpg?alt=media&token=6c626554-a772-42c9-af16-7f29cd23414c ludovico@hackability.it {} -cl3wqitn00030jk5c0une5zwy 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 AUPaT AUPaT(Aggiungi Un Posto a Tavola) è un tavolino da applicare sulle sedie a rotelle, progettato per essere il più universale possibile, interamente stampato in 3D. {}Le caratteristiche principali del progetto sono: variazione di altezza, universalità, trasportabilità, resistenza, leggerezza e igiene.
Per quanto riguarda il tema della variazione di altezza, è stato utilizzato il velcro, per “legare” il tavolino al bracciolo, in modo tale da scaricare direttamente il peso su di esso. La variazione di altezza permane anche in questo caso, infatti i braccioli della sedia a rotelle sono mobili e possono essere bloccati a varie altezze. Inoltre il velcro è utile anche per tener chiuso il tavolino durante il trasporto.
\n\n.jpeg?alt=media&token=e90ea994-79a2-404d-a773-6294d872b726)\n\n
Il tavolino è collegato con lo scheletro della carrozzina tramite un sistema di giunti paralleli e ortogonali, che si uniscono al tavolino tramite dei tubi in alluminio. Queste componenti rendono pienamente il concetto di universalità, vista la loro adattabilità per qualunque sedia a rotelle.
\n\n.jpeg?alt=media&token=c2252257-b37e-4cbd-921e-b13c0dd236c6)\n\n\n\n
La trasportabilità è garantita dalla divisione del tavolo in due pezzi, uniti tramite la cerniera con bloccaggio a frizione. La presenza della cerniera, l’utilizzo del PLA e l’aggiunta di due strutture a T in alluminio ne garantiscono anche la resistenza. Inoltre il PLA rispecchia a pieno i requisiti per la leggerezza e l’igiene.
\n\n.jpeg?alt=media&token=80c4e079-a397-4558-8521-12761593d258)\n\n.jpeg?alt=media&token=ba60f357-804d-4c02-97e3-04ead997c15a)\n\n.jpeg?alt=media&token=6aa9abf0-f52f-4cbe-a812-7739e90c3229)\n\n.jpeg?alt=media&token=ca03329c-5ffc-49d0-a328-bc9eca12fd7f)\n\nDi seguito i file STL per il PLA e legno, secondo la vostra preferenza:
{} t f t AUPaT è un tavolino regolabile su varie altezze, facile da trasportare, perché pieghevole e adattabile a qualsiasi sedia a rotelle, grazie alle sue componenti universali. Il materiale lo rende resistente, leggero e facile da lavare. Edoardo non riusciva a mangiare sullo stesso piano degli altri sui tavoli da ristorante, a causa dell’ingombro della sua carrozzina. 3D printing, PLA. https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FpU39unr8mhA3Qn54a4WL%2Fimages%2FkeNxfreunyc3aTYxkoGH%2FWhatsApp-Image-2019-06-20-at-18.11.51.jpeg?alt=media&token=69b1a98e-322b-49ca-9908-a2f66b52ee5c ludovico@hackability.it {} -cl3wqitn00031jk5c6ayflwf7 2022-06-02 08:07:38.892 2022-06-02 08:07:38.893 Massaggiatore arco plantare Riabiltazione muscoli per arco plantare {} {} t f t Permette il massaggio dell'arco plantare del piede. Trauma dovuto alla rottura del tallone Modellazione mediante software Fusion 360 e successiva stampa 3D https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FqX54WtdaYYsqKqftsRYE%2Fimages%2FOxcChi6PRkMB3F50NCDd%2F01.jpg?alt=media&token=558c8f2e-e944-4fd5-838c-a99740159cf0 ludovico@hackability.it {} -cl3wqitn00032jk5cue2tb4u5 2022-06-02 08:07:38.893 2022-06-02 08:07:38.893 Zoomografo Un economico ingranditore portatile per la lettura e la scrittura {}\n\n\n\n
Zoomografo è il careable dedicato alle persone ipovedenti che consente di ingrandire parole e immagini senza perdere il filo della frase. L'oggetto è interamente stampato in 3D in un unico pezzo pre-assemblato e regolabile, dotato di fotocamera endoscopica leggera e wifi che collegata al proprio smartphone o tablet facilita l'esperienza di lettura, ma anche la scrittura.
{} t f t Ingrandisce testi e immagini per poter leggere e scrivere, grazie ad una telecamera e un dispositivo mobile. Giovanni e Alice sono ipovedenti gravi. Hanno problemi con la lettura e, a volte, anche a firmare documenti. 3D printed, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2Fs9EQNs7phu1CcANdOftw%2Fimages%2Fo716UwEZNWCy9kb68OVk%2F03.JPG?alt=media&token=de007bdb-332c-47b4-a6a2-f484552d0267 ludovico@hackability.it {} -cl3wqitn10033jk5cwaz32qrc 2022-06-02 08:07:38.893 2022-06-02 08:07:38.893 Hackability Geo La prima mappa 3D dell'Italia interattiva per bambini ciechi. {} \n\nIl progetto nasce come richiesta di Massimo e dei suoi genitori. Massimo è un bambino cieco appassionato di Geografia, la sua condizione non gli permette di “visualizzare” la forma e le dimensioni dei luoghi geografici, e si basa sul tempo di percorrenza per raggiungere un luogo da casa per valutare la distanza. Per Massimo, la Sicilia (che raggiunge in 3 ore in aereo) e Genova (che raggiunge in 3 ore in macchina) sono distanti uguali.
\n\n\n\nI genitori, conosciuti durante un evento di Hackability@Milano, hanno portato l’idea di realizzare una mappa dell’italia tattile interattiva, che, alla pressione di determinati bottoni, riproduce dei file audio di descrizione della zona interessata.
Da qui nasce il progetto Hackability Geo, una mappa geografica customizzabile tattile, in grado di riprodurre diverse aree geografiche (non solo l’italia) nella modalità richiesta.
Il progetto si basa su una mappa stampabile in 3D dotata di tasti collegati ad un Raspberry Pi. Alla pressione di ogni tasto, il raspberry riproduce dei file audio configurati al suo interno. Il progetto è documentato sulla piattaforma Space Hackability.
{} t f t Una mappa italiana tridimensionale presenta dei pulsanti per ogni regione.\nAlla pressione dei pulsanti, vengono riprodotte delle tracce audio che descrivono vari aspetti della regione.\nIl gioco è configurabile e può essere facilmente esteso ad altre mappe (europa, francia, ecc.)\n Massimo è un bambino cieco con problemi di udito appassionato di geografia.\nI genitori ci hanno chiesto di creare un gioco che permetta a Massimo di toccare ed interagire con\nuna cartina italiana con il tatto e i suoni.\n Stampa 3D, DYN, Phisical Computing con Raspberry PI\n https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2Fth4YC0sUFFt21CQl8oqk%2Fimages%2F9yOzoSigrSHgKq83F9Ph%2FIMG_0145.JPG?alt=media&token=65b78aab-ee2d-4849-9b73-90ef2d05c6ae ludovico@hackability.it {} -cl3wqitn10035jk5cqsxwu3uo 2022-06-02 08:07:38.893 2022-06-02 08:07:38.893 Spugna - aiutante di Capitan Uncino Tagliere multifunzionale che consente di tagliare qualunque alimento utilizzando una sola mano {}Il tagliere è composto di due parti:
Quindi la struttura finale risulta essere questa:
\n\n {} t f t Il tagliere è composto di due parti:\n- una parte mobile che ospita: un'isola di chiodini (rimovibile), un incastro che consente il fissaggio di 4 grattugie e una maniglia (che funge anche da cestino per gli scarti)\n- una parte strutturale fissa che ne assicura la stabilità ed ospita i cassetti Il progetto è stato pensato per Maria, una donna che ha perso la funzionalità dell'arto superiore sinistro. \nQuesto tagliere le consente di sbucciare, tagliare e affettare con una mano sola tutti gli alimenti. Fresa CNC, Stampante3D, trapano a colonna (con punte da 3 e 4mm), morse da falegnameria e smerigliatrice angolare https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FyA6WUh80IWtIXQmtrA2J%2Fimages%2FbjBByePy53Fef5ck9IUR%2Ftagliere-vista-3.jpg?alt=media&token=17ad0401-754e-4afd-b5fa-feff41d5e6c3 ludovico@hackability.it {} -cl3wr83gh018501h6bxokt85g 2022-06-02 08:27:18.017 2022-06-02 08:28:51.581 Il mio primo progetto asdasadasda {} asdsadas a **asd sa d**\n\nasdas asd\n\n\nas\nasd\n asd\n a\nds \nasda \N cc-ns-by-sa t f f asdasd adasd adsadasd http://res.cloudinary.com/hackability/image/upload/v1654158455/space/images/krusg6vyss8rpm7auwzq.jpg ludovico@ludusrusso.space {"{\\"body\\": \\"ASDASDASD\\", \\"title\\": \\"aASDASDASD\\", \\"description\\": \\"qwASDASD\\", \\"previewImage\\": \\"http://res.cloudinary.com/hackability/image/upload/v1654158524/space/images/whfuejzr9lzhckickff8.jpg\\"}"} -cl4icczyy048201h6ujmsax0l 2022-06-17 11:02:08.41 2022-06-17 11:04:32.454 Test Test piattaforma {} dfgfsgdfdgsgsg \N cc-ns-by-sa t f f asd Testare funzionalità piattaforma dsa http://res.cloudinary.com/hackability/image/upload/v1655463795/space/images/kv5naja3xp1o3i3owyvf.jpg marco@hackability.it {} -cl4mlvuf0062001h67ktw4hvl 2022-06-20 10:39:48.924 2022-06-20 10:39:48.926 progetto di test \N \N cc-ns-by-sa t f f maurizio.contu@hackability.it {} -cl5ig8xx1029501al30u4f034 2022-07-12 17:30:39.925 2022-07-12 17:30:39.926 vbn \N \N cc-ns-by-sa t f f marco.bocca94@gmail.com {} -cl3wqitn00013jk5ccep1lxr1 2022-06-02 08:07:38.892 2022-07-14 13:20:26.948 Massaggiatore plantare Massaggiatore plantare per la riattivazione della microcircolazione sanguigna della pianta del piede. {} {} f f t Il massaggiatore plantare partecipa alla riattivazione della microcircolazione sanguigna Progetto sviluppato a causa della rottura del tendine di Achille, successivo intervento chirurgico e fase riabilitativa. Modellazione 3D mediante Software Fusion 360 e successiva stampa 3D https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FGbzaFzg6YvLvUehaR0Kw%2Fimages%2FduJf6rhRD3ailkDaSq1d%2F59ca46bb-3b3d-43aa-9142-d6f336d9720c.jpg?alt=media&token=82042290-591a-4825-ae19-55f1041235f7 ludovico@hackability.it {} -3wnpu1O15zYACVw2nXg1 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 X-GP Un pratico fermapiede per bicicletta facile da calzare e che, impedendo il movimento laterale del piede, consente al ciclista di avere una pedalata fluida e regolare. {}L'X-GP si compone di una struttura anteriore, modellata e stampata in 3D, la cui forma è ispirata a quella di un comune fermapiede per bicicletta.
Questa struttura è caratterizzata da due prolungamenti laterali rigidi che impediscono al piede di muoversi lateralmente e di urtare la pedivella.
\n\n\n\n.jpeg?alt=media&token=9c4f2e01-f3d6-4782-ae14-a85852e77416)\n\nAlle estremità delle due fasce laterali sono stati praticati dei fori nei quali è inserito un elastico che, avvolgendo il piede, contribuisce a mantenere ben saldo il piede sul pedale.
Inoltre, la presenza nella parte anteriore di una cinghia regolabile consente di adattare con facilità l'X-GP a seconda del tipo di scarpa indossato dal ciclista.
\n\n\n\nL'X-GP viene fissato direttamente alla parte anteriore del pedale mediante due bulloni. Nella parte sottostante del fermapiede, infatti, sono stati praticati due fori per inserire le viti.
\n\n {} CC-NC-BY-SA f f t L'X-GP è un fermapiede che prevede due prolungamenti laterali rigidi grazie ai quali il piede non urta la pedivella e resta fermo sul pedale. Inoltre l'inserimento di un elastico che avvolge la caviglia, contribuisce alla maggiore stabilità del piede e facilita la calzata del fermapiede. Il progetto è stato pensato per Gianpaolo, appassionato di ciclismo. Non avendo il pieno controllo della gamba destra, Gianpaolo ha difficoltà a mantenere perfettamente stabile il piede destro sul pedale, urtando così la pedivella e rendendo faticosa e poco sicura la pedalata, soprattutto nei tratti in salita. 3D printed, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2F3wnpu1O15zYACVw2nXg1%2Fimages%2Fp2K8TH9JsVybtDm1pIjk%2FWhatsApp-Image-2019-06-16-at-13.18.14.jpeg?alt=media&token=aac47b26-a45f-4519-91a4-c64e5a0083f3 ludovico@hackability.it {"{\\"body\\": \\"\\", \\"title\\": \\"Scaricare i file STL per la stampa 3D\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\", \\"title\\": \\"Verificare le dimensioni dell'X-GP\\", \\"description\\": \\"Essendo l'X-GP modellato secondo una precisa tipologia di calzatura è necessario prendere, in modo dettagliato, le giuste misure per modificare le dimensioni dell'X-GP a seconda delle proprie esigenze (larghezza dei fori del pedale; diametro delle viti che verranno utilizzate per fissare l'X-GP al pedale; dimensioni della calzatura ecc.)\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Stampare l'X-GP\\", \\"description\\": \\"Dal momento in cui il PLA e il PETG non si sono rivelati materiali sufficientemente flessibili e resistenti si consiglia di stampare l'X-GP in un altro materiale ritenuto più opportuno.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Inserire l'elastico\\", \\"description\\": \\"Le estremità dei due prolungamenti laterali rigidi presentano dei fori dove andrà inserito e poi cucito l'elastico in modo tale da risultare resistente alle tensioni che si verificheranno durante la pedalata.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Inserire la cinghia regolabile\\", \\"description\\": \\"Nella parte anteriore vi sono diversi fori nei quali dovrà essere inserita la cinghia regolabile che permmetterà di adattare l'X-GP al tipo di calzatura indossata\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Fissare l'X-GP al pedale\\", \\"description\\": \\"Nella parte sottostante dell'X-GP sono presenti due fori per i bulloni, così da poter fissare l'X-GP alla parte anteriore del pedale.\\", \\"previewImage\\": \\"\\"}"} -6Y0vcf2oyNTmP0ibUiN8 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Tournée Il primo tavolino pieghevole per carrozzina. Tutto stampato in 3D. {}\n\n\n\n
Tournée è un tavolino per sedie a rotelle progettato per essere portatile, con dimensioni corrette, facile e veloce da piegare. È interamente stampato in 3D, e personalizzabile per rispondere a varie esigenze e situazioni.\n\nAl momento non c'è nulla di simile sul mercato, e molti tavoli sono ingombranti e difficili da trasportare. Esistono versioni basculanti ma dipendono dal tipo di carrozzina.
Tournée è anche unico perché si adatta a molti modelli.
{} CC-NC-BY-SA f f t Tournée è un tavolino facilmente pieghevole e trasportabile che tramite delle cinghie strap si adatta ai vari modelli di carrozzina. Le dimensioni sono pensate per attraversare anche le soglie più strette. Daniela non riusciva sempre ad entrare negli ascensori con suo figlio Francesco, in carrozzina e con il suo tavolino. Inoltre era difficile da trasportare durante gli spostamenti, viaggi, gite, o altro. 3D printing, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2F6Y0vcf2oyNTmP0ibUiN8%2Fimages%2FkRy2RDw9n0Y4xh72yIcQ%2FIMG_4062_C.jpg?alt=media&token=ef0ff233-f245-491d-8d32-b43200a9fbe3 ludovico@hackability.it {"{\\"body\\": \\"\\", \\"title\\": \\"Scarica i file per la stampa 3D e stampali. Avrai bisogno di una stampante di grandi dimensioni.\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Da Superforma avrai un stampa di qualità a un prezzo ragionevole. Scarica i file e contattali.
\\\\n\\\\n\\", \\"title\\": \\"Oppure vai da Superforma!\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Prendi il profilo a 'T', e con il metro, fai un segno a 34 cm.\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Prendi un seghetto con lama per metalli, e sega il profilo a 'T' dove precedentemente hai fatto il segno. Bastano 2-3 minuti.\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Lima tutti gli spigoli del profilo a 'T' di 34 cm. Assicurati che siano ben smussati perchè non possano recare danno.\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\", \\"title\\": \\"Prendi il cordino elastico e fallo passare attraverso i fori di tutti i 5 componenti del tavolino.\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\", \\"title\\": \\"Devi fare il nodo. Chiama un amic* perchè il cordino deve essere ben teso, è importante avere 4 mani.\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Inserisci il profilo a 'T' nell'apposita fessura.\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\", \\"title\\": \\"Inserisci le 4 cinghie a strap nelle 4 asole. Guarda bene le immagini per capirne il verso.\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\\\n\\\\n\\", \\"title\\": \\"Inserisci il profilo a 'T' nell'apposita fessura e piega il tavolino. Buon divertimento!\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}"} -6i5Em8w39fbRkUbweSwY 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 ABA Un apri-finestre per Chiara {}\n\n {} CC-NC-BY-SA f f t Permette di ruotare e spostare la maniglia della finestra a piacimento. Chiara ha una finestra difficile da raggiungere, in più ha difficoltà motorie tali che è quasi impossibile per lei accedervi. DIY, 3d printed https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2F6i5Em8w39fbRkUbweSwY%2Fimages%2Fj9Vi0kkCy1wXbPrAOcH7%2FIMG_4369_B.jpg?alt=media&token=512038d1-8ea1-4dee-b5f3-7de09b552660 ludovico@hackability.it {"{\\"body\\": \\"\\\\n\\\\n
A questo link puoi scaricare tutti i file del progetto originale: https://a360.co/2UZEqOP, e scarica tutti i file della dima a questo: https://a360.co/2X7SKYc.
\\", \\"title\\": \\"Scarica tutti i file\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Stampa tutti i file necessari.\\", \\"description\\": \\"Fai attenzione, i file dell'oggetto dovranno essere praticamente pieni. Anche in PLA vanno benissimo. Ricordati si stampare 2 spine, piene anch'esse.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Stampa la dima e fora il tubo di alluminio\\", \\"description\\": \\"Stampa la dima, e prendi due viti con bullone per fissarla. Tagli il tubo a 70cm e foralo con la dima.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Assembla tutto\\", \\"description\\": \\"Prendi tutti i componenti del progetto e assemblali tra loro. Ti basterà un martello, possibilmente di gomma.\\", \\"previewImage\\": \\"\\"}"} -cl3wqitn10034jk5ckru8qvfx 2022-06-02 08:07:38.893 2022-07-14 13:49:54.26 Horus Lo strumento che ti aiuta ad allacciare catenelle o bracciali con chiusura a moschettone {}Horus è un piccolo oggetto che nasce dall'hacking di un altro oggetto: il capotasto.
E' stato trasformato perchè possa avere la funzione di aiutare le persone ad allacciarsi le catenine con chiusura a moschettone, operazione difficile per tutti, un po' più difficile per Anna che ci ha chiesto se potevamo aiutarla.
\n\n\n\n\n\n {} f f t Horus è un piccolo strumento che permette di incastrare l'apertura a moschettone e ad aprirla molto facilmente. Anna é una ragazza portatrice della Sindrome di Poland; da piccola ha subito l'intervento di pollicizzazione dell'indice ad entrambe le mani. Le risulta molto complesso. 3d printed, Hacking https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2Fwca658NRavQkwH67NyQu%2Fimages%2F3sJ2XkD0cee4ZQVOJCyl%2FIMG_0167.jpg?alt=media&token=71890e27-fc89-4f99-ad29-f8727ca3c413 ludovico@hackability.it {} -07GPlTkVeRdzvyTJsTbM 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Kiro La biscotte ergonomique {}
Kiro
\n\nLa biscotte ergonomique
\n\nA team of designers and users worked for two fascinating days to imagine and conceive with Harrys and Wasa the accessibility of the kitchen and in particular rusks.
\n\n.jpg?alt=media&token=cc3ca5c7-abfc-4c09-83ae-6effc900a8ba)\n\nWe applied the design thinking methodology during the workshop, as well as throughout the development phase of the project. \n\nThe first step was to do an exercise to better understand the daily life of Claire & Rivka and their relationship to cooking and food.\n\nWe tried to understand their real need to define our goal. \n\nWe focused on the moments when there is physical contact with the product and the difficulties that arise for them
\n\n.jpg?alt=media&token=d191412f-fb26-482b-8eb4-3b182bf34c0d)\n\nWe worked to respond to the concerns encountered by Claire and Rebecca. Claire has tremors in her hands which make it difficult for her to hold on to certain things for a long time. After talking to them at length and observing their gestures during the two days of work at Barilla, we established several proposals and invited Claire and Rebecca to come and try them and give us their opinion.
\n\n.jpg?alt=media&token=cd820492-4f92-4904-84e1-de28d52b0b0b)\n\n.jpg?alt=media&token=e6e139a4-e39d-4fe1-ac69-609056d6a46f)\n\nAfter blind tests and letting our guests naturally take hold of the different rusks, we were able to focus on two forms that they found effective.
{} CC-NC-BY-SA f f t The Kiro Ro ’cracker can be broken in two along a pre-cut line: a rounded part is ready to be decorated with toppings and a smaller part which can be used as a spreading tool. This version offers a playful and practical cookie, with a practical dimension.\n\nThe Kiro Rec ’crackers offer several handling possibilities thanks to their intuitive use in order to offer maximum comfort to each user according to their mobility and habits. The name Kiro comes from the prefix "chiro", coming from the ancient Greek kheír ("hand").\nThe shapes of the Kiro crackers have been thought through and tested to facilitate handling for users with certain gripping difficulties. Usually, the shapes of rusks and other crackers are designed according to production machines or aesthetic or marketing criteria. Kiro's variations have been imagined to adapt to the human and in the first place to the ergonomics of the hand. All versions of Kiro crackers are made from cookie cutters. These can be made for “domestic” use with a 3D printer. https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2F07GPlTkVeRdzvyTJsTbM%2Fimages%2FRcC0PcqtSnUyGGaP7oJI%2Fmain-image-a3.jpg?alt=media&token=ba75c184-e0a6-4fb1-a542-6224d39fb201 ludovico@hackability.it {"{\\"body\\": \\"\\\\n\\\\nDownload the technical sheet of the Kiro Ro 'cookie cutter for 3D printing on the Hackability website.
Perform 3D printing with a 1.75mm PLA diameter food filament that you can find on the internet.
\\", \\"title\\": \\"La biscotte Kiro Ro’\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\nPrepare the ingredients (according to your taste) for the rusk.
An example of a recipe with a turmeric flavor
Rye flour
Wheat flour
Olive oil
Turmeric / ginger / black pepper / salt
Water
\\\\n\\\\n\\\\n\\\\nPrepare the tools
Mix all the ingredients in a container until a homogeneous paste is obtained.
Let the dough rest for 30 min.
\\", \\"title\\": \\"Recipe and ingredients \\", \\"description\\": \\" \\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\\\n\\\\nRoll out the dough with a roller on the work surface.
Cut the dough with the Kiro Ro cookie cutter.
\\\\n\\\\n\\\\n\\\\nPreheat the oven to 180 ° C, bake the rusks for 15 minutes.
Remove from the oven and let the rusks cool for 20 minutes.
\\", \\"title\\": \\"Cooking \\", \\"description\\": \\" \\\\n\\\\n\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\\\n\\\\nThe pre-cut line on the cracker allows it to be separated into two parts for easier handling.
The smallest piece can thus be used to spread the rusk, adding a playful side to its use.
\\\\n\\\\n.jpg?alt=media&token=7b653b47-e162-4d3f-a981-62d62ccca647)\\\\n\\\\nThe shape of the rusk allows it to be dipped in containers of different shapes and sizes (mugs, cups, bowls, etc.).
You can also use the small piece as a spoon to mix.
\\\\n\\\\n\\\\n\\\\nThe wave pattern allows you to eat in different ways.
The drawn curves are reminiscent of the ear of wheat.
\\", \\"title\\": \\"Forms and uses\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n
Download the technical sheet of the Kiro Rec ‚cookie cutter for 3D printing on the Hackability website.
Perform 3D printing with a 1.75mm PLA diameter food filament that you can find on the internet.
\\", \\"title\\": \\"La biscotte Kiro Rec’\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\nPrepare the ingredients (according to your taste) for the rusk.
An example of a recipe with a salty taste
Rye flour
Wheat flour
Olive oil
Charcoal / rosemary / cumin / garlic / coarse salt
sesame / squash kernels / flax kernels / sunflower kernels
Water
\\\\n\\\\n\\\\n\\\\nPrepare the tools.
Mix all the ingredients in a container until a homogeneous paste is obtained.
Let the dough rest for 30 min.
\\", \\"title\\": \\"Recipe and ingredients \\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\\\n\\\\nRoll out the dough on a work surface.
Cut the dough with the Kiro Rec ’cookie cutter.
\\\\n\\\\n\\\\n\\\\nPreheat the oven to 180 ° C, bake the rusks for 12 minutes.
Remove from the oven and let the rusks cool for 20 minutes.
\\", \\"title\\": \\" Cooking\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\nThe shape of the Kiro Rec ’cookie is specially designed to make it easier to hold. Its curved lines perfectly match the muscles of the hand regardless of the grip chosen.
\\\\n\\\\n.jpg?alt=media&token=2f3e2855-b030-4776-a089-13d3bb89bd8c)\\\\n\\\\nThe width of the rusk has been precisely calculated to make 5 cm in order to adapt to all mouths and allow it to be eaten more easily.\\\\n\\\\nThe drawn curves are reminiscent of the ear of wheat.
\\", \\"title\\": \\"Forms and uses\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}"} -0XUTQSgCkQptIfaOI54P 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Marco Kart Girello in legno, acciaio e tessuto colorato, con sistema frenante che entra in funzione in caso di necessità e con imbrago a rotaia che facilita il cambio della direzione del moto. {} {} CC-NC-BY-SA f f t Per far fronte allo scarso senso di equilibrio, abbiamo sviluppato un girello chiuso su tutti i lati. Il bambino viene infilato dall'alto in una struttura in stoffa che, in caso di caduta, lo sostiene, portandolo in posizione seduta. \nInoltre, la struttura è dotata di un impianto frenante, che entra in azione in caso di caduta, garantendo sicurezza. Lo stesso meccanismo si attiva anche se Marco si siede: in questo modo, Marco Kart diviene anche uno stimolo a restare in posizione eretta e camminare. Marco Kart è un deambulatore progettato e realizzato per Marco Chiaro, un bimbo di 8 anni affetto da un rara malattia. Nonostante le molte patologie connesse all'1q41.12, Marco ha la capacità di camminare ma l'operazione è molto faticosa e pericolosa. Pertanto il girello, si propone di rendere Marco più confidente e autonomo, limitando le sue difficoltà. DIY, taglio legno, taglio ferro, saldatura https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2F0XUTQSgCkQptIfaOI54P%2Fimages%2FByjHCSG5aG3jUjHxOMvW%2FIMG_7438-min.JPG?alt=media&token=a89c3332-9e24-4938-88c7-519828c88f70 ludovico@hackability.it {"{\\"body\\": \\"\\", \\"title\\": \\"Segmenti lignei\\", \\"description\\": \\"Tagliare l'asse di noce ricavando quattro parallelepipedi 400x60x60. Squadrare e piallare fino a raggiungere le dimensioni 400x55x55.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\\\n\\\\n\\", \\"title\\": \\"Cornice lignea\\", \\"description\\": \\"Fresare le due estremità di ogni parallelepipedo per ricavare in uno tre denti (equispaziati e profondità 50 mm, partendo dall’alto due di spessore 10 mm e l’ultimo 15 mm), e sull’altro due denti (spessore 10 mm e profondità 50 mm) e distanti 10 mm dal bordo superiore e 15 mm da quello inferiore. Tramite incastro creare una cornice quadrata. Prima di assemblare i pezzi cospargere i denti di colla. Lasciare asciugare la cornice. Smussare gli spigoli e levigare\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Traverse\\", \\"description\\": \\"Tagliare il profilato cavo a sezione quadrata di 20 mm di lato per ricavare quaddro pezzi di lunghezza 540 mm.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Gambe del girello\\", \\"description\\": \\"Tagliare il profilato cavo a sezione quadrata di lato 20 mm per ricavare quattro pezzi di lunghezza 400 mm.\\\\nTagliare il dubo cavo in teflon di diametro 25 mm per ricavare quattro pezzi di lunghezza 50 mm. Tornire 40 mm di ogni pezzo ricavato per raggiungere il diametro di 18 mm.\\\\nBucare ogni gamba all'altezza di 250 mm e inserire una spina in acciaio.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Struttura metallica\\", \\"description\\": \\"Saldare due traverse (su due lati opposti) all’altezza di 40 mm e le altre due sugli altri lati all’altezza di 250 mm. Controllare che la struttura sia in quadratura.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Piastrine\\", \\"description\\": \\"Tagliare la lamiera in accaio inox spessa 2 mm per ricavare 4 rettangoli di dimensioni 50x70. Smussare gli angoli. Praticare 3 fori (uno su ogni angolo, alla distanza di 3 mm dai 2 lati relativi).\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Struttura per regolazione\\", \\"description\\": \\"Tagliare il profilato cavo a sezione quadrata di lato 25 mm per ricavare quattro pezzi di lunghezza 100 mm e quattro pezzi di lunghezza 150 mm. Praticare un taglio a coda\\\\ndi rondine su un estremità di questi ultimi. Inserire ogni pezzo da 100 mm nella cavità creata nei pezzi da 150 mm a 3 mm dal bordo superiore e saldare.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Posizionare una piastrina su ogni angolo della cornice in modo che:
Tenendo ferme le piastrine praticare dei fori (circa 30 mm) in corrispondenza dei buchi nel metallo. Inserire le viti per fermare le piastrine al legno.
Inserire una struttura per regolazione in ogni estremità superiore delle gambe.
appoggiare la cornice su una superficie iana con le piastrine rivolte verso l'alto. Capovolgere la struttura metallica e appoggiarla sulla cornice.
Dopo essersi assicurati che la cornice sia centrata nella struttura, saldare le piastrine alle strutture per regolazione.
\\\\n\\\\n\\", \\"title\\": \\"Assemblaggio cornice lignea e parte metallica\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Assemblaggio ruote\\", \\"description\\": \\"Assemblare il tubo pieno (255 mm) alla ruota. Inserire nel tubo il lavorato in teflon in modo che la parte più larga sia rivolta verso la ruota. Capovolgere il girello appoggiando la parte lignea al pavimento. Inserire in ogni gamba il tubo cavo di metallo (100 mm), tre molle e il componente con la ruote. Bloccare il pezzo in teflon inserendo una vite orizzontalmente (il buco è stato fatto prima all’altezza di\\\\n10 mm).\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Inserimento freni\\", \\"description\\": \\"Nel punto medio delle due traverse “basse” praticare un foro verticale passante di diametro 6 mm. Tagliare la barra filettata di 6 mm di diametro ricavando due pezzi di lunghezza 15 mm. Inserire in un’estremità il piedino e bloccarlo con della colla a caldo\\\\nnel caso ci fosse del gioco. Avvitare la barra nel buco nella traversa in modo tale che, quando la struttura è caricata al massimo (le molle sono compresse) il piedino tocchi terra. Inserire un dado nella barra in modo da bloccarla.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Collegamento pannolone\\", \\"description\\": \\"Nel punto medio di ogni segmento ligneo, sulla faccia dove sono applicate le piastrine, avvitare il supporto per la rotaia. Inserire la rotaia(precedentemente tagliata per essere della misura giusta). Aprire leggermente le carrucole (per fare uscire le rotelle). Inserire il ferro a U rimanente in ogni occhiello del pannolone e reinserire le rotelle. Inserire le carrucole nella rotaia e chiudere saldamente i supporti di quest’ultima.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Il pannolone consiste in un cilindro di stoffa rinforzata. A 1 cm dalla circonferenza superiore sono stati praticati degli occhielli equidistanti tra loro per inserirci le carrucole. In questo modo il peso dovrebbe essere equamente distribuito e ogni occhiello sopporta un peso che si aggira intorno ai 2 kg. Alla parte posteriore del cilindro è stata cucita una striscia di stoffa rinforzata che si aggancia sul lato anteriore tramite due file di bottoni. La striscia alle estremità è larga 19 cm e va stringendosi fino a raggiungere i 7 cm in corrispondenza del cavallo per poi tornare ad allargarsi. L'intento è quello di garantire una superficie sufficiente per la seduta, ma al contempo la comodità di una mutanda durante la camminata. I bottoni servono invece per facilitare l'ingresso del bambino nella struttura. Infatti la striscia viene agganciata solo quando il bambino è all'interno del girello.
\\", \\"title\\": \\"Pannolone\\", \\"description\\": \\"La realizzazione è stata affidata ad una sarta. \\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Abbellimento\\", \\"description\\": \\"Levigare finemente la cornice in legno. Pitturare la struttura metallica con vernice apposita per inox.\\\\nPer rendere la struttura più accettabile da parte di Marco e degli altri bambini abbiamo ritagliato dei tentacoli di stoffa che abbiamo applicato alla struttura. Questi ultimi sono regolabili grazie al velcro che vi è stato applicato. In questo modo anche quando il girello verrà regolato in altezza, sarà possibile, con un semplice strap, coprire nuovamente la struttura.\\", \\"previewImage\\": \\"\\"}"} -0o7sqm7ArxzCKJZVDcsg 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Squeezer 46 Strizzatore di stracci e spugnette tramite pressione orizzontale per coloro che non hanno la piena mobilità delle mani. {}Lo Squeezer 46 è composto da due parti:
Inoltre sia nella parte superiore del corpo che del pistone, sono presenti dei lacci di nylon con l'obiettivo di migliorare la presa e e di conseguenza la forza di strizzatura durante l'utilizzo.
\n\n\n\n {} CC-NC-BY-SA f f t Squeezer 46 è uno strizzatore composto da due parti cilindriche di diametri diversi le quali vengono compresse orizzontalmente tra di loro tramite i palmi delle mani e permettono, grazie al loro particolare profilo, la fuoriuscita dell'acqua. Esso è perfettamente trasportabile ed utilizzabile in qualsiasi ambiente che presenti un lavabo o una bacinella. Abbiamo progettato questo strizza-stracci per Francesca, una ragazza che essendo tetraplegica non ha la totale mobilità delle mani. Non potendo infatti compiere completamente l'azione dello strizzamento necessitava di un ausilio che la aiutasse. Esso è stato costruito tramite la stampante 3D e il materiale utilizzato è il PLA che lo rende piú leggero ed economico. https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2F0o7sqm7ArxzCKJZVDcsg%2Fimages%2FRWI0F7VQMwEQfmZFv8cm%2FP_20190710_211343_vHDR_On_1.jpg?alt=media&token=9223a1a5-9638-49fa-ab58-36d71579c76c ludovico@hackability.it {"{\\"body\\": \\"\\", \\"title\\": \\"File 3D\\", \\"description\\": \\"Scaricare il file STL per la stampa 3D\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Stampa 3D\\", \\"description\\": \\"Stampare lo Squeezer 46 in un centro disponente di una stampante 3D.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Misurazione\\", \\"description\\": \\"Misurare quanto deve essere lungo il laccio affinchè possa fasciare la mano, entrare in ambo i lati nelle asole e fuoriuscirne.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Taglio e cucito\\", \\"description\\": \\"Tagliare il laccio e cucirlo nelle asole in modo tale che abbia una forma a goccia.\\", \\"previewImage\\": \\"\\"}"} -9xQsGn2KGdOsWHbCUGN0 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Baby on Board Giulia cercava un passeggino utilizzabile da persone in carrozzina per poter trasportare il proprio bambino nella maniera più confortevole possibile, poiché sul mercato non esiste tutt'ora nulla di soddisfacente. {}Lo scheletro in metallo è formato da due bracci di ferro simmetrici uniti all’asse che collega le due ruote della carrozzina. Seguendo questa base, i tubi proseguono in avanti parallelamente al terreno e per poi ruotare verso l’esterno e continuare fino a raggiungere il livello dei piedi di Giulia e rimanendo ad essi laterali. A questo punto la struttura sale lungo perpendicolarmente al terreno. A quest’ultimo si aggancia esternamente la restante parte di tubo verticale e i due pezzi vengono fissati. Infine i tubi rientrano verso il busto rimanendo sempre paralleli al terreeno.
{} CC-BY-SA f f t Il progetto è nato per consentire a mamme e papà in carrozzina di poter trasportare autonomamente il proprio neonato, sia fuori che dentro casa e nel modo più pratico possibile. Questa è una necessità che fino ad ora non è stata presa sufficientemente in considerazione dal mercato internazionale e soprattutto da quello italiano. Ideando questa culla autoportante abbiamo voluto agevolare le coppie con disabilità nel poter ampliare la famiglia, offrendo loro il mezzo per potersi spostare in tutta libertà! A tutto il gruppo è piaciuta fin da subito l'idea di lavorare su questo progetto per due motivi: il primo era che ci sembrava una sfida interessante e stimolante nella quale ci saremmo cimentati molto volentieri, come seconda ragione invece ci piaceva molto l'idea di risolvere un problema di molte persone e rendere possibile qualcosa che prima poteva sembrare difficile o infattibile. Inizialmente, per agganciare l’intera struttura alla carrozzina, ispirandoci al telaio di una bicicletta, abbiamo usato degli stem. Poi per crearne lo scheletro abbiamo optato per dei tubi in ferro che, dopo essere stati tagliati, sono stati saldati per formare una struttura a ‘C’. In seguito, per la culla abbiamo scelto un tessuto impermeabile e abbiamo aggiunto un’imbottitura interna per renderla più confortevole. Infine abbiamo passato dell’antiruggine e successivamente della vernice bianca sui tubi. https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2F9xQsGn2KGdOsWHbCUGN0%2Fimages%2FQaQQcxMbt6jODXPN5jlc%2FImmagine-1.jpeg?alt=media&token=b2c421b2-7cda-4bd5-af14-e385add53d98 ludovico@hackability.it {"{\\"body\\": \\"Come primo passo, si tagliano i tubi secondo le seguenti angolazioni riferite alla lunghezza del tubo:
- Un tubo lungo 16 cm con un’estremità di 90°, ovvero taglio parallelo alla sezione circolare, e un’altra di 60°.
- Quattro tubi con un’estremità di 90° e un’altra di 45°, di lunghezza 34, 32, 18 e 40 cm.
Si specifica che le lunghezze dei tubi qui scritte si riferiscono sempre alla lunghezza massima dei tubi dopo il taglio angolato.
\\", \\"title\\": \\"Taglio\\", \\"description\\": \\"L’iter di realizzazione descritto in seguito si riferisce a un solo lato della struttura. Essendo simmetrici, l’altro lato dovrà essere realizzato in modo speculare al precedente, seguendo gli stessi tagli e angolazioni.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Per quanto riguarda la saldatura bisogna seguire il seguente procedimento, prestando attenzione al mantenere perfettamente stabili e fermi i tubi:
- Saldare il tubo di 16 cm (estremità a 60°) con il tubo di 34 cm (estremità non angolata). Essendo i due lati della struttura simmetrici i due tubi con taglio angolato a 60° dovranno essere saldati con i rispettivi tubi da 34 cm specularmente, ovvero finito questo passaggio si avranno i due tubi lunghi 34 cm che andranno uno verso destra ed uno verso sinistra.
- Saldare il tubo di 34 cm (estremità a 45°) con il tubo di 18 cm (estremità a 45).
- Saldare il tubo da 40 cm (estremità a 45°) con il tubo di 32 cm (estremità a 60°).
I tubi di 32 cm si ritroveranno spostati (a destra e a sinistra) rispetto ai sottostanti nella stessa direzione.
\\\\n\\\\n\\\\n\\\\n.jpeg?alt=media&token=576af22a-99f4-49c4-bced-72ccef8c43ce)\\\\n\\\\n\\", \\"title\\": \\"Saldatura\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Per realizzare gli sganci bisogna praticare un foro passante per i due cilindri più piccoli a 2.5 cm dal centro, posizionarli all’interno della fine dei tubi lunghi 18 cm e saldarli facendo uscire la metà col buco.
È anche qui molto importante fare attenzione alla rotazione: i buchi dovranno essere posizionati in modo che il volantino sia ruotato di 45° verso l’interno, quindi in senso orario per il pezzo di sinistra e viceversa. Infine, bisognerà effettuare un foro passante attraverso il tubo lungo 40 cm a 2.5 cm dal fondo, anche qui i fori dovranno avere un angolo di 45°, in modo da combaciare con quelli interni. In caso di possibili giochi a causa di uno spessore troppo piccolo del tubo interno basterà aggiungere uno spessore, banalmente del nastro adesivo, attorno al cilindro di diametro inferiore facendo attenzione a non coprire i buchi.
\\\\n\\\\n.jpeg?alt=media&token=26a1e087-d31d-43d7-823e-758e620f34ad)\\", \\"title\\": \\"Foratura\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Concluso l’assemblaggio, si procede alla verniciatura. Inizialmente si applica una passata uniforme di antiruggine diluita con acquaragia e la si fa asciugare per circa un giorno. In realtà il tempo di asciugatura è relativo, perché bisogna considerare la temperatura dell’ambiente e quanto è stata diluita l’antiruggine. Dopodiché si colora il tutto con una vernice a piacere - noi abbiamo optato per una vernice spray bianca - e in base alla scelta si possono avere diversi tempi di preparazione. Nel nostro caso abbiamo applicato tre strati di prodotto a distanza di qualche minuto l’una dall’altra e abbiamo lasciato riposare il tutto per mezza giornata.
\\\\n\\\\n\\", \\"title\\": \\"Verniciatura\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Innanzitutto si disegna il cartamodello, lo si applica sulla tela e si traccia il contorno con un gesso da stoffa; tagliando lungo le linee si avrà così la forma da cucire.
A questo punto si cuce una tasca sulla base della culla, in cui si introdurrà in un secondo momento un pannello semi-rigido in plastica, per dare forma alla culla e fare in modo che questa non si pieghi eccessivamente a causa del peso del neonato. \\\\n\\\\nPer unire le pareti laterali e creare dunque una struttura a ‘scatola’, si cuciono con un filo di cotone nero i lati adiacenti utilizzando la macchina da cucire. Successivamente, per avvolgere la tela attorno ai tubi e renderla removibile, abbiamo cucito delle strisce di velcro ad essa.
Finita la struttura esterna in tela, si procede con l’imbottitura e il rivestimento, realizzati in modo da essere rimossi facilmente. \\\\n\\\\nSi applica lo stesso cartamodello sulla fodera e si procede in modo analogo a prima, definendo il contorno da tagliare. Questo passaggio viene ripetuto due volte per avere una fodera inferiore e una superiore. Si uniscono insieme queste due parti cucendole lungo il contorno esterno, escluso un lato da cui si infila l’ovatta. Una volta inserita, si cuce l’ultimo lato. Per definire la struttura a cesto si cuciono i lati della base rettangolare. \\\\n\\\\nIn aggiunta abbiamo creato un cuscinetto con doppia fodera per rendere la culla più comoda e sicura.
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\", \\"title\\": \\"Realizzazione della culla\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Il prototipo finale consiste in una parte metallica, che forma la struttura portante, e una parte riguardante la culla vera e propria.
Lo scheletro in metallo è formato da due bracci di ferro simmetrici uniti, attraverso uno Stem, all’asse che collega le due ruote della carrozzina. Seguendo questa base, i tubi proseguono in avanti lungo l’asse sagittale per 16 cm, per poi ruotare di 30° verso l’esterno e continuare per altri 34 cm fino a raggiungere il livello dei piedi di Giulia e rimanendo ad essi laterali. A questo punto la struttura sale lungo l’asse longitudinale per 23 cm, di cui gli ultimi 5 solamente di tubo interno. A quest’ultimo si aggancia esternamente la restante parte di tubo verticale e i due pezzi vengono fissati tramite un volantino a 2.5 cm dalla fine del tubo interno. In totale la struttura sale per 58 cm arrivando circa all’altezza dello sterno di Giulia. Infine i tubi rientrano di 30 cm verso il busto seguendo l’asse sagittale.
Per quanto riguarda la culla abbiamo cucito la tela resistente in modo da formare una struttura a scatola aperta posizionata subito sopra le gambe di Giulia e agganciata ai tubi tramite delle strisce di velcro cucite sempre sulla tela. L’imbottitura è stata realizzata in modo tale da essere totalmente removibile, con dell’ovatta foderata sia inferiormente che superiormente, e ricopre l’intera superficie della tela
\\\\n\\\\n\\", \\"title\\": \\"Assemblaggio della struttura finale\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}"} -DlzkhaDkwMZsCnVFqGAd 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 P-Cane Manico per bastone da passeggio performante {}  {} CC-NC-BY-SA f f t P-Cane è un manico per bastone da passeggio che può essere appeso (o messo in sicurezza) e permette due impugnature (alta e bassa) per salire e scendere le scale più facilmente. Durante il laboratorio di Hackability4Pontelambro abbiamo scelto dei progetti da rivedere e riprogettare perché possano essere d'aiuto alle persone anziane. 3D Printed, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FDlzkhaDkwMZsCnVFqGAd%2Fimages%2F8tIUaLp2UgWttb70XCOZ%2FP-Cane_1.jpg?alt=media&token=7a8f7f4a-e470-4f4d-b6f3-cd2714a91841 ludovico@hackability.it {"{\\"body\\": \\"\\", \\"title\\": \\"Scarica il file e stampalo in 3D\\", \\"description\\": \\"E' facile da stampare, (non richiede supporti da rimuovere).\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Prendi il tubo di alluminio e taglialo\\", \\"description\\": \\"Taglia il tubo per ottenere l'altezza di un altro bastone della tua misura.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Inserisci il piedino di gomma\\", \\"description\\": \\"Fondamentale perché il bastone da passeggio sia sicuro e utilizzabile.\\", \\"previewImage\\": \\"\\"}"} -E5dzDmPuve7C387DIles 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Lift plateau amovible pour fauteuil roulant {}We started with a field survey at Nassima (suffering from myopathy) and observed her various activities as well as the solutions she has already found to manage her disability. Then we conducted an interview with her to find the best solution for her needs. The answer is a tray that she can lock herself on her chair and that allows her to load her meal on to move home, make a meal tray in front of his TV or mince vegetables. The tray is also equipped with feet to allow her to have breakfast in bed for example.
\n\n {} CC-NC-BY-SA f f t The tray is designed to be easily fixed to a wheelchair by the user herself. It has a large indentation on the front to load a plate and borders on sides to prevent things to fall. the tray is locked by the chair joystick. It can be lift and move around to eat, work on laptop or slice vegetable for example. The feet also allow Nassima to use it at bed. We are developing a wheelchair tray allowing the user to recover some of his autonomy especially around cooking and eating, despite a heavy handicap . The tray is made out of varnished mdf at this time. It has been cut with a cnc milling machine and then glued together. https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FE5dzDmPuve7C387DIles%2Fimages%2F7kvMqKJ9q880paNxYyKj%2FLIFT-%40NASSIMA-KITCHEN.jpg?alt=media&token=e6edb95c-009b-4d04-8a01-7b4db9664a99 ludovico@hackability.it {"{\\"body\\": \\"\\\\n\\\\n\\\\n\\\\n\\", \\"title\\": \\"Mock-up\\", \\"description\\": \\"We started with a cardboard mockup done on the spot directly on Nassima’s wheelchair with her help. Then we designed the tray on Rhino 3D using the measurements of the mockup. We did numerous prototypes iterations to find the right fitting on the wheelchair and be sure of the ergonomy of the tray. After we draw all the artwork on Rhino, we used a CAM program (Artcam) to program all the toolpath for cnc machining.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\\\n\\\\n\\", \\"title\\": \\"Milling\\", \\"description\\": \\"We then put all the datas on a sd card and cut every piece with a cnc router. We then used a hammer and a chisel to remove all pieces from the board. After that, we designed the small pmma piece that lift the tray on the right side of the wheel chair using Adobe Illustrator.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\", \\"title\\": \\"Lasercut wheels\\", \\"description\\": \\"Using this drawing wethen set up the laser cutting using Trotec Job Control. Then we cut the pmma holding piece with a Trotec Speedy 300 laser cutter. \\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\", \\"title\\": \\"finishing and assembling\\", \\"description\\": \\"After that, we sanded carefully all the pieces done with the cnc router. All the wood assembling was done using vinyl glue. We verified pieces positioning, and then we glued the pieces together and pressed firmly using clamps.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\", \\"title\\": \\"finishing and assembling 2\\", \\"description\\": \\"We did this with the borders, the traverse and the two legs, after all wood pieces were glued, we screwed the pmma holding piece with a drill. And we did as well with the holding steel profile on the left of the tray\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"final touches\\", \\"description\\": \\"we did some fine tuning (sanding and adjusting for Nassima’s whellchair). And here it is!\\", \\"previewImage\\": \\"\\"}"} -GbzaFzg6YvLvUehaR0Kw 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Massaggiatore plantare Massaggiatore plantare per la riattivazione della microcircolazione sanguigna della pianta del piede. {} {} CC-BY-SA f f t Il massaggiatore plantare partecipa alla riattivazione della microcircolazione sanguigna Progetto sviluppato a causa della rottura del tendine di Achille, successivo intervento chirurgico e fase riabilitativa. Modellazione 3D mediante Software Fusion 360 e successiva stampa 3D https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FGbzaFzg6YvLvUehaR0Kw%2Fimages%2FduJf6rhRD3ailkDaSq1d%2F59ca46bb-3b3d-43aa-9142-d6f336d9720c.jpg?alt=media&token=82042290-591a-4825-ae19-55f1041235f7 ludovico@hackability.it {"{\\"body\\": \\"\\", \\"title\\": \\"Stampa 3D\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}"} -IBkGAriD36UUy2mphNB7 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Easybag Maniglia porta-sacchetti {}\n\n\n\n\n\n {} CC-NC-BY-SA f f t Easybag è una maniglia porta-sacchetti, pieghevole e portatile, con chiusura di sicurezza.\nIn questa versione, risulta un oggetto migliorato in portabilità con qualche accorgimento tecnico che lo rende più confortevole. Durante il laboratorio di Hackability4Pontelambro abbiamo scelto dei progetti da rivedere e riprogettare perché possano essere d'aiuto alle persone anziane. 3D Printed https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FIBkGAriD36UUy2mphNB7%2Fimages%2FrbnlUclYI40dZwDz2r9c%2FEasybag_6.jpg?alt=media&token=822bbf25-2171-40b9-999e-7373a6ce18a5 ludovico@hackability.it {} -Iiz36RKjvJiuZ8iZrA1O 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Go Sofi Go Deambulatore-passeggino {} {} CC-NC-BY-SA f f t La struttura del telaio realizzato prende spunto dalla forma della sedia utilizzata da Sofia per camminare in casa: comprende un telaio a forma di cuneo per gestire la distribuzione del peso, una seduta ripiegabile, un manubrio a sbarra legante le coppie di gambe anteriori e posteriori. Il sistema di frenaggio è montato posteriormente tramite due rondelle poste simmetricamente ai lati della ruota: una saldata e una regolabile tramite dado per impedire al prototipo di prendere velocità Sofia, bambina di 9 anni affetta da microcefalia grave, aveva bisogno di un deambulatore con cui camminare in sicurezza fuori dagli ambienti domestici. Questo ausilio doveva essere facile da manovrare, stabile in caso di caduta della bambina e doveva potersi trasformare in passeggino cosicché i genitori potessero evitare, in caso di lunghe passeggiate, di portare sia il deambulatore che la carrozzina. Saldatura, manipolazione ferro, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FIiz36RKjvJiuZ8iZrA1O%2Fimages%2FqhAIZVxlggpZUg6G8MFz%2Fpasseggino.jpeg?alt=media&token=3f265381-5313-4b8f-b489-01bee2e51fd8 ludovico@hackability.it {"{\\"body\\": \\"
Occorrente:
Occorrente:
Occorrente:
Ripetere tutti i passaggi (Step 1, 2 e 3) per costruire ruota posteriore e gamba posteriore sinistra.
\\", \\"title\\": \\"Unione gamba e ruota posteriore\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Occorrente:
Occorrente:
Occorrente:
Occorrente:
Occorrente:
Occorrente:
Occorrente:
Occorrente:
Occorrente:
Fare due fori sulla seduta come mostrato in figura; punta trapano 4 (fori 25, 26)
\\\\n\\\\n\\\\n\\\\nOccorrente:
Occorrente:
The packagings are designed to be the simplest as possible. We applied the same open / close system to the 4 products with a giant twist tie that allows to crimp the bag and keep it closed. We also created a graphic charter to show clearly the information that guide the user in his purchase and later, in his meal. Theses information take form in a simple tag added on the packaging.
Find the presentation video here : Video - Unwrapper | Facilitators
\n\n.jpg?alt=media&token=ad9af032-65f5-4067-81fe-83645697fcf2)\n\nThe QR code is generated online - to be understable for a majority of people we use the classic QR Code - not Aztec or Matrix. It can be easily generated with this open source web tool : keremerkan.net | QR code and 2d code generator. Then, the QR code is print on the packaging.
With a thermoforming machine, we mold a plastic sheet to overprint a braille text on the QR code to help blind and visually impaired people to find it easily. The QR code lead to a website that gives vocal informations.
\n\n.jpg?alt=media&token=9132eab1-ef45-4191-961f-b7f7fa3d86f3)\n\nThe prototype of the vocal tag is based on an Arduino board - connected on battery and on a speaker, with the built-in program returning the specific sound of the product (the program can be find here : vocal tag - ino.
In this case, everything fit inside a 3D Print box which can be easily fix on the shelves for each product (or product type). Ideally, the objective being to be able to connect via Bluetooth, or to make it interactive via NFC, so that it can be easily updated.
This additional interaction allows audio content to be accessed from a smartphone.
\n\n {} CC-NC-BY-SA f f t \nSystem of easy opening and closing bags: the consumer can easily identify the tears at the top of the bag and take off the twist tie. This twist tie, bigger than the ones usually used, allows an easy grip. Finally, to close it you just have to wrap it.\nClarity of the information: a graphic charter show clearly the information that guide the user in his purchase and later, in his meal.\nInformation: a QR code on the packagings and the website make essential informations audible on your device.\n\n \nThe purpose of this project is to improve the experience while using products from Harry’s and Wasa for blind, limited dexterity, but also no disability people. We identify different issues with the help of two people with disabilities : visibility of products information - description, price, composition -, understanding and practicality of the opening/closing system,...\n \nThe packagings are made to be the simplest as possible. We applied the same open / close system to the 4 products with a giant twist tie that allows to crimp the bag and keep it closed. The bags are made of kraft and cut with a lasercut.\nWe also created a graphic charter to show clearly the information that guide the user in his purchase and later, in his meal - with the help of the QR Code system.\nBesides, a small arduino box help the customer inside the shop.\n\n https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FLYv4kZmpXVrj8uBbByt9%2Fimages%2F8d9TJq58FnkfIVWdjl9S%2FUNWRAPPED-FACILIATATORS_FINAL-(4).jpg?alt=media&token=fe4ce87f-4872-424f-9e92-ea4506825037 ludovico@hackability.it {"{\\"body\\": \\"\\\\n\\\\n.jpg?alt=media&token=1104605b-d432-4b3c-9c6f-ad16d09d6270)\\\\n\\\\n.jpg?alt=media&token=8c37a43a-090c-4419-a5b7-fa0e33d04f44)\\\\n\\\\n.jpg?alt=media&token=2383c04c-62ad-4348-9ed4-8a9a6931931c)\\\\n\\\\n.jpg?alt=media&token=b355860f-5c44-4596-aed3-6f0666131e5d)\\\\n\\\\n.jpg?alt=media&token=74302321-7540-4732-82f2-19e4f2950c24)\\\\n\\\\n.jpg?alt=media&token=2a663fca-0bbe-4e9e-9203-4351a2611629)\\\\n\\\\n.jpg?alt=media&token=fe4ce87f-4872-424f-9e92-ea4506825037)\\\\n\\\\nAll the files can be find here : frama.link/hack-packaging
List of Materials: \\\\n\\\\nKraft, Printer, Thermoforming machine (braille), Sealing machine, Metal string
Guidelines Graphic:
To create a simple and easy to understand packaging stickers, here some tools & fonts we used to create them.
Packaging:
Here, you will find all the files to create one of these packaging. It can be made with a lasercut machine.
QR Code :
To generate the QR Code link to an action, a link or a media, this online tool can be use : keremerkan.net | QR code and 2d code generator
Braille Surface :
To create a small thermoformer, you will need a 3D Printer, a lasercut (and also PLA and plastic sheets) :
To create the plate with your text in braille, you will need a CNC Milling machine (and also MDF) :
Some videos of the process can be find here :
\\", \\"title\\": \\"How to make information on the packaging more accessible\\", \\"description\\": \\"A QR Code to help visually impaired or blind people to understand the product they are about to buy or they already have at home by giving vocal informations as price per kg and food allergens. \\\\n\\\\nThe QR code is generated online - to be understable for a majority of people we use the classic QR Code - not Aztec or Matrix. \\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\\\n\\\\nVoice:
Generating the voice audio file. \\\\n\\\\nTo do this, you can have acces to two different tools:
When you have one of this package, write your text and export the audio file (.mp3)
Vocal Tag:
For the electronic part, needs:
To implement the code:
Next, the box:
La prima e l'ultima riga riportano le coordinate delle ordinate da 0 a 10 (il primo e il tredicesimo quadrato rimangono senza numerazione). I numeri sono scritti in rosso, calibro 28.
La prima e l'ultima colonna riportano le coordinate delle ordinate da 0 a 10 (il primo e il tredicesimo quadrato rimangono senza numerazione). I numeri sono scritti in verde, calibro 28.
I restanti quadrati riportano il risultato delle operazioni. I numeri sono scritti in verde, calibro 20.
\\", \\"title\\": \\"Creare e stampare tavola pitagorica\\", \\"description\\": \\"Creare tabella di 13 colonne e 13 righe (169 quadrati di lato 1.5 cm). \\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Uno dei due rettangoli 20x24 cm costituisce la base sulla quale, nella parte superiore e inferiore, devono essere incollati gli elementi in plexiglass da 20x1.7 cm. Tra questi viene fissata la stampa della tavola con nastro biadesivo.
\\", \\"title\\": \\"Fissare la stampa alla base\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Al rettangolo sagomato, che sarà il cursore della tavola, vanno incollati i rettangoli neri 4.5x1 cm, due a destra e due a sinistra, uno nella parte inferiore e uno nella parte superiore, ad una distanza reciproca opportuna per permettere lo scorrimento verso l'alto e verso il basso lungo il rettangolo di base nelle varie posizioni delle ascisse, mantenendolo anche perfettamente orizzontale.
Il cursore sarà suddiviso in tre righe orizzontali delle stesse dimensioni della stampa della tabella pitagorica:
Posizionare sopra al lavoro svolto il secondo rettangolo 20x24, effettuare quattro fori con una punta da 2.5 mm, fissare tutto con le viti.
\\", \\"title\\": \\"Completare la struttura\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}"} -SVjfplQPCmWCej9m9iaV 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 EatEasy Supporto rialzato e adattabile per il piatto per scoraggiare la tendenza di Antonella a chinare la testa verso il piatto promuovendo l'adozione di una postura corretta. È costituito da una base concava e da una serie di piedini ad incastro, stampati in 3D. {}L'ausilio pensato è un tavolino regolabile, formato da due parti principali: la base e i piedini. La base circolare, che costituisce una prima altezza di 7cm, presenta una concavità nella quale appoggiare il piatto. Le misure del diametro massimo del piatto fondo e del piatto piano sono state prese appositamente sui piatti di Antonella. Poiché il piatto fondo è di dimensioni leggermente inferiori rispetto al piano, è stato necessario inserire del materiale che opponesse attrito per evitare lo scivolamento: sono state incollate con colla cianoacrilato due strisce trasversali di gomma spesse 2mm.
Oltre ad incastrare il piatto è stato necessario cercare una soluzione affinché l'intero supporto fosse il più stabile possibile. Dunque si è scelto di incollare un materiale che creasse attrito (polietilene) ma che allo stesso tempo fosse compatto e poco ingombrante: una strategia simile a quella adottata per i tappetini del mouse.
La base è sorretta da quattro sostegni verticali, ognuno dei quali sarà costruito tramite l'aggiunta in successione di tre moduli ad incastro quadrato. In questo modo il tavolo può raggiungere quattro diversi livelli di elevazione a seconda delle necessità: oltre a quello della base circolare si aggiunge ogni volta un livello per ogni quartetto di piedini aggiunti alle gambe del tavolo stesso.
{} CC-NC-BY-SA f f t Per incentivare l'autonomia di Antonella e per evitare l'assunzione ripetuta di una postura scorretta era necessario avvicinare il piatto al viso, cosicché Antonella non si dovesse piegare sopra al piatto per mangiare da sola. Questo supporto rialzato è stato pensato per Antonella, ragazza di 13 anni affetta da tetraparesi mista, condizione che comprende sintomi di spasticità, contratture muscolari, disturbi della marcia e della coordinazione, movimenti coreici incontrollati. Stampa 3D, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FSVjfplQPCmWCej9m9iaV%2Fimages%2F8l9juDEnXKQcXojJBEfW%2F5mKLldy2.jpeg?alt=media&token=0ef9a0b5-17e4-49b7-bbeb-5fd54096a7fb ludovico@hackability.it {"{\\"body\\": \\"\\\\n\\\\nLa base è realizzata dalla sottrazione di una sfera da un cilindro opportunamente posizionati l'una dentro l'altro. Sulla superficie inferiore sono stati creati dei fori di forma cubica necessari per l'incastro con i piedini. L'intera struttura è stata divisa in quattro parti ad incastro per facilitarne la stampa.
Base circolare:
I piedini sono stati creati dall'addizione e dalla sottrazione di un cilindro con due parallelepipedi dimensionati in modo tale da permettere la successiva aggiunta del materiale antiscivolo.
Piedini grandi:
Piedini piccoli:
È stata utilizzata la stampante Delta WASP con volume di stampa 20x20x40.
Stampa a caldo con temperatura del piatto di 60°C e temperatura di fusione del PLA a 90°C
Base:
Piedini grandi:
Piedini piccoli:
Il supporto per il braccio si compone di una base in materiale plastico e di una parte, applicata superiormente alla base, più morbida, conformabile secondo le esigenze dell’utilizzatore.
Il supporto, per poter sostenere parzialmente il braccio di Fabio durante l’utilizzo del computer, sarà, infatti, affiancato inferiormente e/o sul lato destro della tastiera.
La base è stata realizzata con un programma di modellazione 3D (Fusion 360) e successivamente stampata in 3D. Sotto sono state applicati gommini antiscivolo, per evitare lo scorrimento durante il suo utilizzo. La parte superiore che andrà, invece, a diretto contatto con il polso/braccio dell’end-user si compone cuscinetti rivestiti esternamente da fodere colorate e riempiti di semi di lino.
{} CC-NC-BY-SA f f t Questo appoggio vuole rendere la scrittura meno faticosa per Fabio sostenendogli il braccio. Nella progettazione di questo ausilio, abbiamo compreso che un unico supporto rigido poteva essere limitante per il bambino, poiché questo potrebbe non essere versatile rispetto a computer o tastiere di grandezze differenti.\nCosì siamo riusciti a conciliare la praticità del supporto a un aspetto ludico, scomponendo l’appoggio in più parti collegabili ad incastro come un puzzle. Fabio soffre di una patologia che comporta un degrado neuronale che causa la difficoltà nel controllare i movimenti fini in particolare a livello delle dita e del polso. Fabio utilizza per scrivere prevalentemente il computer, sia a scuola che a casa.\nLo scarso controllo nei movimenti delle dita e del polso, però, lo portano ad affidarsi prevalentemente alla spalla e ad irrigidire il braccio, rendendogli faticose l’utilizzo prolungato della tastiera del computer. DIY, 3D print https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FUAMIJpuf2nHkx86Xt7ik%2Fimages%2FG35xuMB7vPIz7svbtnQc%2F1.PNG?alt=media&token=c1584243-8415-4c0a-9306-f4301735dde2 ludovico@hackability.it {"{\\"body\\": \\"Realizzare il progetto su un programma di modellazione 3D (Fusion 360, Solid, FreeCad, Sketchup, SolidWork ecc.).
Il allegato il progetto, realizzato su “Fusion 360”, da noi utilizzato per realizzare il supporto.
È possibile apportare modifiche sul progetto, per personalizzarlo in base alle esigenze e alle misure del computer dell’end-user.
Dato che la parte che potrebbe creare più problemi è l’aggancio, si consiglia di partire da quello, realizzandone uno a parte e poi creare il progetto finale.
Porre particolare attenzione a:
Affinché la stampa venga al meglio, si consiglia di realizzare tutti gli spigoli tramite fillet, un comando che permette di connettere due segmenti,o due facce di un solido, tramite una linea curva; in questo modo la stampante lavorerà meglio.
Inoltre si suggerisce di inserire un margine di tolleranza per ogni superficie che si trovi a contatto con un’altra; per far ciò si può utilizzare il comando “offset” che permette di creare un profilo identico a quello precedente, translandolo della tolleranza necessaria (circa 0.15 mm per lato, ovvero 0.30mm totali).
\\\\n\\\\n\\", \\"title\\": \\"Progetto 3D\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Per la stampa ci si può appoggiare ad una qualunque struttura dotata di stampante 3D, fruibile anche da un esterno.
Porre particolare attenzione a:
Prima di stampare l’intero progetto, consigliamo di creare un prototipo esclusivamente dell’aggancio al fine di verificarne l’efficienza e, qualora sia necessario, apportare delle modifiche al progetto iniziale.
\\\\n\\\\n\\", \\"title\\": \\"Stampa\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Per questa parte del progetto si possono usare diversi materiali:
Una volta scelto il materiale realizzare delle piccole sacche in stoffa della grandezza dei supporti, da riempire con il materiale scelto. All’interno del sacchetto consigliamo di porre una sagoma in plastica in modo da definire meglio la forma dei cuscinetti.
\\", \\"title\\": \\"Realizzazione appoggio imbottito\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Sotto le basi del supporto applicare degli adesivi antiscivolo.
Porre i cuscinetti sopra i supporti. Se ritenuto necessario è possibile attaccare i cuscinetti, alla base, tramite del velcro. Noi abbiamo deciso di lasciarli staccati in modo da lasciare Fabio libero di giocare con le basi-”puzzle” quando desidera.
\\\\n\\\\n\\", \\"title\\": \\"Rifiniture e assemblaggio \\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}"} -bO7Bhrduy26h4lkCWakH 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 A-Team: un team per Alice Prodotto software per la consultazione di materiale didattico in completa autonomia, con un'interfaccia "ergonomica", per alunni con difficoltà visive e motorie, accessibile tramite monitor touch.\n {} {} CC-NC-BY-SA f f t Il materiale didattico presentato all’alunno/a è composto da una serie di immagini scelte dai docenti,correlate da un audio contenente la lezione.\nPer accedere ai contenuti didattici, sono presenti grandi pulsanti colorati,facilmente individuabili,con feedback vocale che permettono la navigazione tra le diverse materie. Una volta scelta la materia, viene presentata la lezione che il docente ha deciso di presentare. L'inserimento del materiale e il suo aggiornamento avvengono tramite un'interfaccia dedicata. "A-team" è un prodotto software che prevede un'interfaccia "ergonomica" realizzata per Alice, una ragazzina di 13 anni con difficoltà visive e motorie, che le rendono quindi molto difficile studiare sui libri e sulle dispense classiche fornite dagli insegnanti.\n"A-team" fornisce ad Alice la possibilità di poter usufruire di questo materiale didattico in completa autonomia, rendendola più indipendente, malgrado le sue difficoltà. \n Il prodotto software è stato pensato sotto forma di sito web in quanto multidispositivo e multipiattaforma e in quanto non necessita di installare nulla se non un browser.\nSono stati utilizzati Bootstrap e W3.CSS per realizzare la componente grafica e Javascript, JQuery e PHP per la componente “funzionale”.\nLe pagine web e il materiale per le dispense sono salvate su un web server ed è stato utilizzato un database relazionale mySQL per gestire tutti i dati (noi abbiamo utilizzato Altervista). https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FbO7Bhrduy26h4lkCWakH%2Fimages%2FcheaVNd66WtH4VGw2tdD%2FDiapositiva2.JPG?alt=media&token=f881489e-629a-4106-9859-00c45031b164 ludovico@hackability.it {"{\\"body\\": \\"\\", \\"title\\": \\"Scaricare il file .zip del progetto\\", \\"description\\": \\"- Scaricare il file stl presente nel download. \\\\n- Eliminare l'estensione .stl per ottenere il file ateam.zip\\\\n- Entrare nel servizio ftp e scaricare il file; quindi estrarre nella root le cartelle immagini, audio e sorgenti. \\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Importare il DataBase\\", \\"description\\": \\"Andare nel servizio di gestione db e importare il file con estensione .sql estratto nel passo precedente. Sono precaricati 2 esempi di dispensa.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Modificare i riferimenti al db\\", \\"description\\": \\"Modificare i riferimenti al nome del db all'interno dei file php, dopodiché dovrebbe funzionare.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Avvio della web-app\\", \\"description\\": \\"Inserire il percorso http://Il progetto parte dall'idea che esistono oggetti simili nella funzione, ma i girachiavi di solito forzano la serratura con il risultato di rompere la chiave. Esistono poi altri strumenti che durante la co-progettazione sono stati qualificati come sgradevoli e/o imbarazzanti per gli utenti.
La soluzione, liberamente ispirata ai prodotti Alessi, è stata quella di un oggetto pop o simbolico, un portachiavi anche girachiavi che risulta piacevole come gadget.
\n\n\n\n\n\n {} f f t Insieme alle tue chiavi, hai un 'fiore' e una 'foglia' che diventano una 'maniglia' per girare le chiavi. In collaborazione con ABAR, Thinkalize e PACO Design, ci hanno richiesto un gira-chiavi per persone con artrite reumatoide. I classici strumenti, o spezzano le chiavi, o sono discriminanti/ghettizzanti. 3D printed, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FcIolyOA9vAPMFHfVDB5R%2Fimages%2F2XD9YdwvbqrKS2gjRr6r%2FTulip_1.jpg?alt=media&token=58924510-28e7-4b4e-88ef-7a5c04817b95 ludovico@hackability.it {"{\\"body\\": \\"\\", \\"title\\": \\"Scarica i file e stampali in 3D\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Collega i due componenti con una catenella o altro che possa tenerli uniti\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}"} -haGu584tNULWsOhkPfeg 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Tavolino di Fabio Tavolino in tela e legno montato su girello, con porta borraccia e sacca per trasportare piccoli oggetti {} {} CC-NC-BY-SA f f t Il tavolino, fissato al girello di Fabio attraverso dei velcri, è costituito da un ripiano rigido fornito di porta borraccia e da una sacca che permette a Fabio di trasportare piccoli oggetti, oltre che evitare un urto troppo violento in caso di caduta. Tutti gli spigoli sono stati arrotondati in modo da non essere pericolosi. Fabio ha 7 anni ed è affetto dalla malattia di Charcot-Marie-Tooth (CMT), che comporta scarso equilibrio nella deambulazione e un debole controllo della motricità fine soprattutto nei movimenti delle dita e del polso. \nPer Fabio abbiamo quindi ideato e realizzato, con l’appoggio e la collaborazione della sua famiglia e della sua scuola, due oggetti che lo aiutino e lo rendano più autonomo: un tavolino da applicare al deambulatore e un supporto per il braccio. lavorazione legno, diy, 3D print https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FhaGu584tNULWsOhkPfeg%2Fimages%2FaHgxZKamR4Sv0xFvgsoX%2FWhatsApp-Image-2018-06-14-at-10.33.16(2).jpeg?alt=media&token=435c8e3e-f9b6-4b90-b64c-f6af5f8bbc51 ludovico@hackability.it {"{\\"body\\": \\"Realizzare il progetto su un programma di grafica vettoriale (Autocad, Illustrator, ecc).
In allegato il progetto Autocad da noi utilizzato per la realizzazione dell’oggetto.
È possibile apportare qualunque modifica in base all’esigenza dell’end-user.
Il progetto è composto da due parti, una superiore e una inferiore, realizzate su misura dei cardini a biscotto utilizzati. (Se si desidera aggiungere un portaborraccia, tenere conto del punto 5 del tutorial).
\\\\n\\\\n\\\\n\\\\nPorre particolare attenzione a:
Le due parti sono state fatte separate per far si che le cerniere non sporgano oltre il piano d’appoggio.
Quella sopra segue il profilo superiore delle cerniere da noi utilizzate, e grazie allo spessore del pannello di 4mm, permette di ottenere un piano con un’altezza uniforme.
\\\\n\\\\n\\\\n\\\\nQuella sottostante, dello spessore di 6mm per conferire più robustezza al pezzo finale, ha un intaglio che segue il profilo inferiore delle cerniere. Così facendo otterrete un alloggiamento perfettamente sagomato per le cerniere.
\\\\n\\\\n\\\\n\\\\nInoltre, nella realizzazione dell’alloggiamento per la borraccia, si consiglia di fare il foro non troppo vicino ai bordi ma il più possibile verso l’interno. In questo modo la borraccia farà meno leva sulle cerniere, rischiando di rovinare il tavolino o addirittura di romperlo.
\\", \\"title\\": \\"Progetto 2D\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Recarsi una struttura fornita di macchina per il taglio laser. Noi abbiamo usato quella del Fablab di Torino (Via Egeo 16).
Per poter utilizzare il taglio laser occorre portare il progetto in formato “.dxf”.
Tagliare i pannelli della forma desiderata.
\\", \\"title\\": \\"Taglio laser\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Per concludere il lavoro occorre incollare le due sagome di legno facendo modo che combaciano esattamente. Per fare ciò è consigliato l’utilizzo della colla Vinavil.
Applicare, sul tavolino, due o più mani di vernice.
Inserire le viti, le rondelle e le cerniere negli opportuni spazi.
\\", \\"title\\": \\"Montaggio e rifinitura\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Se si desidera aggiungere al tavolino un portaborraccia occorre, oltre a tagliare il tavolino in maniera apposita (inserendo la circonferenza per l’alloggiamento), realizzare un progetto dell’oggetto su software di progettazione CAD come Fusion 360. In allegato il progetto da noi utilizzato.
\\\\n\\\\n\\\\n\\\\nPorre particolare attenzione a:
-Prendere bene le misure della borraccia che si vuole utilizzare, onde evitare spiacevoli inconvenienti.
-Realizzare il bordo superiore del portaborraccia sufficientemente largo, questo donerà stabilità all’oggetto.
\\\\n\\\\n\\\\n\\\\nRealizzare i fillet su tutti i possibili angoli del progetto, questo renderà più facile la stampa in 3D.
\\\\n\\\\n\\\\n\\\\nQualora la borraccia sia molto pesante realizzare le pareti dell’oggetto con uno spessore maggiore (pochi millimetri) di modo che da renderla più resistente.
\\", \\"title\\": \\"Progetto in 3D del porta borraccia\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Recarsi in un laboratorio fornito di stampa 3D, e mandare in stampa il progetto realizzato.
\\", \\"title\\": \\"Stampa in 3D del porta borraccia\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Per questa parte si consiglia di commissionare il lavoro ad una sarta,in quanto potrebbe essere complicato realizzarlo se alle prime armi.
La profondità della sacca è di 7 cm, mentre la base misura 42 x 10 cm.
Quando si acquista la stoffa necessaria a realizzare la sacca, si consiglia di comprarne un pezzo con misure leggermente maggiori per riuscire a realizzare l’orlo, nel quale verrà inserito il filo di ferro, e la copertura della base in plastica.
\\\\n\\\\n\\\\n\\\\nPorre particolare attenzione a:
All’interno del bordo della sacca occorre inserire nella parte posteriore un filo di ferro, e nella parte anteriore un elastico, in modo da definire meglio la forma che la sacca deve avere.
Il filo di ferro potrebbe diventare pericoloso se la punta non viene rivestita di un materiale morbido.
\\", \\"title\\": \\"Realizzazione della sacca\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Porre il portaborraccia nel vano ad esso dedicato e usare del velcro per bloccare il tavolino e la sacca al deambulatore.
\\", \\"title\\": \\"Assemblaggio\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}"} -jV2qzBEbhS4iQfXHuDQ4 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Abbassa Tore Seduta mobile con altezza regolabile autonomamente per lavori casalinghi che richiedono di stare, per un tempo prolungato, in posizione difficilmente raggiungibile. {}L'Abbassatore è una sedia di ferro che è in grado di alzarsi e abbassarsi dai 35 ai 70 cm.
La sedia è costituita divisa in fondamentalmente tre sezioni:
La base è un rialzo di 15cm che serve a dare alla sedia il range di altezza desiderato.
Si tratta di una specie di tavolino il cui "rettangolo" superiore è di dimensioni 55 per 40.
Le "gambe di questo tavolino sono dotate di ruote di cui due(sulla parte frontale della struttura) dotate di freno.
\n\n\n\nIl cavalletto alza-moto è il meccanismo vero e proprio della sedia. Esso è stato modificato in modo che fosse possibile montarci al di sopra una seduta.
\n\n\n\nLa seduta consiste di uno schienale realizzato con ferro e un pannello di legno multistrato(fissato alla struttura) foderato con della gommapiuma. Sopra il cavalletto sono stati saldati dei braccioli e si è fissato un altro pannello foderato per dare più comodità.
\n\n {} CC-NC-BY-SA f f t La seduta può alzarsi e abbassarsi mentre si è seduti sopra senza il bisogno di aiuto esterno o di sollevarsi da essa.\nInoltre è in grado di mantenere l'altezza ed è possibile, grazie a delle ruote dotate di freno, spostarlo in modo da usarlo dove si preferisce. Il progetto è stato ideato, in particolare, per permettere ad una persona affetta da distrofia muscolare di raggiungere ed operare ad altezze altrimenti irraggiungibili (in quanto troppo in basso).\nL'obbiettivo principale è stato quello di permettere una maggiore autonomia all'interno della sua abitazione. L' AbbassaTore è stato realizzato saldando un cavalletto alza-moto al di sopra i un rialzo di ferro.\nSi sono fissate delle ruote dotate di freno alla base e dei braccioli al cavalletto.\nInfine si è montato uno schienale e si è realizzata una seduta tramite dei pannelli di legno foderati con della gomma piuma. https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FjV2qzBEbhS4iQfXHuDQ4%2Fimages%2FSuIG6aEMKvkWJ4Ge9Dd5%2Ffoto-abbassatore.png?alt=media&token=e8be9511-b939-4a5b-8404-4f887f4b51cb ludovico@hackability.it {"{\\"body\\": \\"\\", \\"title\\": \\"Taglio delle \\\\\\"gambe\\\\\\" della base (pezzi 1)\\", \\"description\\": \\"Tagliare una delle barre in 4 pezzi (che chiameremo pezzi 1) da 12cm l'uno. Consigliamo per praticità un taglio a 0°.\\\\nI pezzi 1 costituiscono i sostegni della base.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Taglio dei pezzi 2\\", \\"description\\": \\"Ricavare 2 barre da 55cm (pezzi 2). Saranno la parte trasversale della base.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Taglio dei pezzi 3\\", \\"description\\": \\"Tagliare 3 barre da 34cm (pezzo 3). Saranno la parte saggitale della base\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Saldatura della base pt.1\\", \\"description\\": \\"Saldare (a filo o a elettrodo) i pezzi 2 a due pezzi 3 in modo da formare un rettangolo.\\\\nUna volta raffreddato il ferro, smerigliare le eventuali imprecisioni.\\\\nChiameremo il rettangolo pezzo 23.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Saldatura della base pt.2\\", \\"description\\": \\"Saldare agli angoli del pezzo 23 i quattro pezzi 1, in modo da realizzare un \\\\\\"tavolino\\\\\\" che d'ora in poi chiameremo BASE.\\\\nAssicurarsi che, una volta raffreddata, la base non \\\\\\"balli\\\\\\" una volta appoggiata a terra.\\\\nIn caso contrario, individuare la gamba della base non in asse e martellare con forza per raddrizzare.\\\\nUno volta accertatisi della stabilità, smerigliare le imprecisioni. \\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Posizionamento delle ruote\\", \\"description\\": \\"Una volta raffreddatasi la base, tagliare il piatto di metallo in modo che si adatti alla PARTE SUPERIORE delle ruote acquistate. \\\\nSaldare questi nuovi pezzi alla base in modo da permettere alle ruote di essere fissate ad essa.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\nATTENZIONE. \\\\n\\\\nSiccome le alette non si trovano centrate rispetto al cric, saldare in modo che , un volta posizionato, la manovella sia nel lato corrispondente alla mano \\\\\\"forte\\\\\\" dell'utente e che le ruote con i freni siano nella parte frontale della struttura finita (altrimenti i freni risulterebbero irraggiungibili).
\\\\n\\\\nDopodiché saldare il pezzo 3 alla base.
\\\\n\\\\n\\", \\"title\\": \\"Foratura del pezzo 3 e completamento della base\\", \\"description\\": \\"Prendere il pezzo 3 rimasto e posizionare al di sopra di esso il cric in modo da avere le \\\\\\"alette\\\\\\" lungo il suo asse maggiore.\\\\nUna volta allineati, effettuare 2 fori da 9cm sul pezzo 3 in corrispondenza dei fori del cavalletto.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Ultimazione della base\\", \\"description\\": \\"Usare gli scarti del ottenuti dai tagli in modo da adattare la base al proprio cavalletto. In foto uno schema di quello fatto da noi.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Modifica del cric\\", \\"description\\": \\"Tagliare quattro barre (pezzi 4) da 18cm..\\\\nSmontare la parte superiore del cavalletto e sverniciare i lati.\\\\nSaldare i pezzi 4 a due a due ai lati lunghi del cavalletto in modo che spuntino fuori di 8cm.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Taglio pezzi 5\\", \\"description\\": \\"Tagliare quattro barre da 25cm (pezzi 5).\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Taglio pezzi 6\\", \\"description\\": \\"Tagliare due pezzi da 21cm (pezzi 6).\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\nSaldare il pezzo 56 alle estremità dei pezzi 4 sporgenti dal cavalletto in modo da realizzare i braccioli. \\\\n\\\\nRipetere l'operazione per il lato opposto.
\\\\n\\\\n\\", \\"title\\": \\"Saldatura braccioli\\", \\"description\\": \\"Saldare due pezzi 5 a un pezzo 6 in modo da creare una forma ad \\\\\\"U\\\\\\" (pezzo 56) .\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Taglio pezzi 7\\", \\"description\\": \\"Taglio di due pezzi da 10 cm (pezzi 7).\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Taglio pezzo 8\\", \\"description\\": \\"Taglio di un pezzo da 31cm (pezzo 8)\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Taglio pezzi 9\\", \\"description\\": \\"Tagliare due pezzi da 40cm (pezzi 9).\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\nSaldare i due pezzi 7 all'estremità interna dei pezzi 4 saldati al cavalletto.
ATTENZIONE \\\\n\\\\nSaldare i pezzi in modo che lo schienale sia sul retro della sedia (quello con le ruote non frenanti).
\\\\n\\\\n\\\\n\\\\nSaldare il pezzo 89 al di sopra dei pezzi sette.
\\\\n\\\\n\\", \\"title\\": \\"Saldatura schienale\\", \\"description\\": \\"Saldare i due pezzi 9 al pezzo 8 in modo da formare una U (pezzo 89).\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Verniciatura\\", \\"description\\": \\"Verniciare per due volte la struttura\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Posizionare della gomma piuma delle stesse dimensioni del pannello e foderare.
\\\\n\\\\n\\", \\"title\\": \\"Realizzazione della seduta\\", \\"description\\": \\"Posizionare il pannello di legno 25x49 sopra la parte superiore del cric e fissare usando i chiodi da legno.\\\\nNel nostro caso abbiamo sfruttato dei fori già presenti sul cric, in caso di acquisto di un cavalletto diverso si dovranno effettuare tramite trapano o simili.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Posizionare della gomma piuma delle stesse dimensioni del pannello e foderare.
\\\\n\\\\n\\", \\"title\\": \\"Ultimazione dello schienale\\", \\"description\\": \\"Posizionare il pannello 31x36,5 sullo schienale e effettuare dei fori. Poi fissare con i chiodi da legno\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Ultimo appunto\\", \\"description\\": \\"Alcuni cavalletti non hanno una manovella o comunque non risulta essere molto funzionale.\\\\nConsigliamo fortemente di aggiungerne una o di modificare quella già presente in modo da renderla più congeniale secondo le vostre preferenze.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\", \\"title\\": \\"L' AbbassaTore è concluso\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}"} -jlouB62rnvLlDUAvYJ6w 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Su il ripiano, su il morale! Il progetto consiste in una serie di aggiunte alla carrozzina di Anita per aiutarla a mantenere una posizione corretta nello svolgimento delle sue attività quotidiane {} {} CC-NC-BY-SA f f t Il progetto consiste in:\n● Un tavolino portatile e regolabile che possa permettere ad Anita di assumere una\nmigliore postura mentre gioca con il suo iPad.\n● Dei supporti per gomiti che le aiutino a correggere la postura.\n● Un supporto per il joystick che le permetta di avere una migliore presa sul comando,\nquindi una maggiore libertà di movimento con la sua sedia a rotelle. Per la realizzazione di questo progetto il team ha lavorato con Anita, una bambina di 9 anni affetta da tetraparesi spastica. Anita trascorre molto tempo a guardare\ncartoni sul tablet e tende a curvarsi eccessivamente sul tavolino fatto dal\nnonno . Il nostro obiettivo è stato quello di costruire, per e con lei, un dispositivo economico ma allo stesso tempo anche facile da replicare. Il costo totale della realizzazione è inferiore a €150. Stampa 3D, hacking, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FjlouB62rnvLlDUAvYJ6w%2Fimages%2FA31ZD6w486ObS4fW0kRb%2FCattura9.PNG?alt=media&token=7b3f0394-075e-446e-ba24-b965bfe130d2 ludovico@hackability.it {"{\\"body\\": \\"Tagliare il pezzo di legno da 500x600x1.8 cm usando le misure indicate nella figura sottostante. Sono state prese sulla carrozzina di Anita, ma possono essere modificate se necessario. Utilizzare un seghetto alternativo.
\\\\n\\\\n\\\\n\\\\nTagliare il pezzo di legno più sottile da 30x24x0.8 cm per la parte reclinabile. Le misure indicate nella figura sotto sono state prese sulla cover dell'iPad di Anita. Alla base sono state realizzate delle scanalature per inserire le cerniere con un trapano multiutensile.
\\\\n\\\\n\\", \\"title\\": \\"Taglio\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Levigazione\\", \\"description\\": \\"Con levigatrice e successivamente a mano levigare il legno e arrotondare gli spigoli.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Pittura del tavolino\\", \\"description\\": \\"Dipingere e poi passarci sopra una vernice impermeabile, come il flatting.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\\\n\\\\n\\", \\"title\\": \\"Struttura dell'alzata\\", \\"description\\": \\"Montare la struttura che servirà a permettere all’alzata di restare in posizione. Grazie a dei supporti fissati dietro al pezzo in abete questa bloccherà il rialzo. Le sbarre vanno assemblate secondo necessità. In figura si può capire come siano state montate.\\\\nUna volta avvitati i pezzi assieme smussare le parti sporgenti e potenzialmente taglienti con un flessibile. Pitturare poi con un colore a scelta, nel nostro caso il nero.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\", \\"title\\": \\"Assemblaggio\\", \\"description\\": \\"Montare insieme tutti i pezzi con le viti da legno.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Tagliare la barra di alluminio in 10 pezzi:
Perforare e filettare delle viti per tenere i pezzi insieme. Usare sempre il blocca-filetto.
\\\\n\\\\n\\\\n\\\\nTagliare la lamina di alluminio in 4 pezzi: 80x80 mm, poi forare e filettare i fori per le piastre e le piastre stesse.
\\\\n\\\\n\\\\n\\\\nAvvitare la lamina sul telaio.
\\\\n\\\\n\\\\n\\\\nPer montare il pezzo sulla carrozzina bisogna adattare il progetto a seconda delle possibilità di aggancio. Nel nostro caso la carrozzina ha già dei buchi con i quali riusciamo ad agganciare il poggia gomiti. Nelle figure successive si può capire come abbiamo realizzato l'attacco con la carrozzina.
\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\", \\"title\\": \\"Poggia gomiti\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\\\n\\\\n\\", \\"title\\": \\"Stampa 3D\\", \\"description\\": \\"Stampare 1 x Ninjapillow_Right\\\\nStampare 1 x Ninjapillow_Left\\\\nStampare 1 x Glifo_Mod\\\\nStampare 1 x Joystick_Mod\\\\n\\\\nMaggiori informazioni su come stamparli su:\\\\nThinginverse: https://www.thingiverse.com/thing:2386254\\\\nMyMiniFactory https://www.myminifactory.com/it/object/su-il-ripiano-su-il-morale-38117\\\\nYoumagine https://www.youmagine.com/designs/su-il-ripiano-su-il-morale\\", \\"previewImage\\": \\"\\"}"} -joTMZyTb2vBVUVKoAsaO 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 TakeItEasy Ortesi per la mano per evitare l'eccessiva contrazione e i conseguenti spasmi del braccio nella manipolazione di oggetti sottili come una forchetta o una penna. {}Ortesi per mangiare: cinturino palmare elastico con chiusura a velcro regolabile. È stato realizzato sulle misure della mano di Antonella e può essere applicato a qualsiasi impugnatura ingrossata favorendo la presa di una posata o di eventuali altri utensili. L'impugnatura presenta una sezione di diametro pari a 4 cm, al fine di incoraggiare l'appoggio delle dita su di essa, ma senza forzarne i muscoli. Inoltre è prevista la possibilità di una sua temporanea rimozione al fine di consentire l'allocazione dello spazzolino da denti personale. Entrambi i supporti si agganciano alla fascia palmare tramite strisce di velcro. Confortevole e facilmente regolabile, questa impugnatura palmare universale consente un'ottima presa praticamente in ogni condizione.
Ortesi per scrivere: il modo in cui Antonella scrive impone un tipo di presa completamente diverso dalla precedente: la penna viene pizzicata tra pollice e indice, invece di essere avvolta trasversalmente da tutte e quattro le dita (come nel caso della posata). Inoltre occorre che l'utensile formi un angolo fisso con il piano del foglio e che la punta della penna o della matita non sporga eccessivamente al fine di un loro utilizzo ottimale. Pertanto l'idea del cinturino elastico concepita per le posate è stata modificata: una fascia elastica più sottile passa tra indice e pollice, avvolgendo in tale punto un'impugnatura cilindrica con diametro minore, ma simile alle precedenti. L'elastico poi prosegue allacciandosi su se stesso in corrispondenza del polso e infine raggiunge l'estremità iniziale sul dorso della mano.
\n\n\n\n\n\n {} CC-NC-BY-SA f f t L'ortesi permette ad Antonella di avere una presa più stabile sugli oggetti di dimensioni ridotte come una forchetta o una penna, garantendo anche che tali oggetti restino attaccati alla mano in caso di rilassamento muscolare dell'arti. Questa ortesi è stata pensata per Antonella, ragazza di 13 anni affetta da tetraparesi mista, condizione che comprende sintomi di spasticità, contratture muscolari, disturbi della marcia e della coordinazione, movimenti coreici incontrollati. DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FjoTMZyTb2vBVUVKoAsaO%2Fimages%2FKWJvOpYglFZoUBqVLBDZ%2FE0xW9D06.jpeg?alt=media&token=73ee633a-5e0d-4d66-976d-0433d2fbb90b ludovico@hackability.it {"{\\"body\\": \\"\\\\n\\\\n\\", \\"title\\": \\"Taglio dei tubi\\", \\"description\\": \\"I tubi sono stati tagliati in modo da ottenere più cilindri cavi, ognuno dei quali presenta un diverso diametro interno. \\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\", \\"title\\": \\"Ortesi per mangiare: struttura\\", \\"description\\": \\"Struttura ad H, in cui due strisce di velcro parallele avvolgono i diversi supporti. Tali strisce sono da cucire in modo tale che le due diverse facce del velcro si trovino l'una in opposizione all'altra: in questo modo esse formano due anelli richiudibili su se stessi in diverse misure.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\", \\"title\\": \\"Ortesi per scrivere: struttura\\", \\"description\\": \\"Rispetto alla precedente cambia il modo in cui sono cuciti gli elastici: vi è un unico elastico che avvolge tutta la mano e passa attraverso l'indice e il pollice e si avvolge intorno al polso. All'estremità si chiude tramite velcro, così da poterne regolare la larghezza.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Riempimento dei tubi\\", \\"description\\": \\"All'interno dei tubi inserire un'ulteriore imbottitura in materiale spugnoso, la quale presenta a sua volta una piccola cavità cilindrica per l'inserimento della penna o della posata.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Copertura con nastro isolante\\", \\"description\\": \\"Avvolgere con nastro isolante per garantire maggiore impermeabilità dei materiali.\\", \\"previewImage\\": \\"\\"}"} -mJ4iS8VTgfPY9DtyRGn3 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 MobiLIS MobiLIS è una porta d’acceso facilitata alle informazioni di servizio, composto da un portale accessibile tramite QR-code {}MobiLIS è un progetto nato durante Hackability4Mobility nato dalla necessità di Elisabetta di avere dei trasporti pubblici più accessibili. Elisabetta è una ragazza sorda che ha evidenziato l’impossibilità di ricevere alcune comunicazioni fatte in stazione e di usare gli interfoni. In caso di blocco di un ascensore o di una carrozza, infatti, un sordo non sempre può parlare all’interfono e, oltre a non sentire cosa gli viene detto, non può avere una conferma della ricezione della sua chiamata. Il progetto è stato pensato per l’ambiente metropolitano, e la soluzione proposta è stata una web app accessibile tramite QR-code, questo può infatti rimandare ad un indirizzo web ed oltre ad essere facilmente implementabile e personalizzabile, può essere facilmente diffuso in ogni ambiente.
Stampando il QR-code in 3D inoltre diminuisce il rischio di contraffazione, il rilievo infatti rende più difficile colorare gli spazi vuoti, inoltre la struttura costruita in 3 dimensioni è resistente a graffi ed altri tentativi di vandalismo.
La web app ha al suo interno la possibilità di accedere ad una chat ed alcuni video contenenti le traduzioni in Lingua Italiana dei Segni delle comunicazioni solitamente ripetute in stazione e sulle carrozze. È stato cosi creato un mockup che può essere facilmente implementato da qualunque azienda voglia rendere più accessibili i servizi d’assistenza, che ora sono principalmente telefonici.
Il team Mobilis è composto da Elisabetta Mascherucci, Lorenzo Galleani d’Agliano, Flavio Montagner, Marco Bocca, Marco Conforto, Davide Caminati, Francesco Convertini, Franco Lepore.
\n\n\n\n\n\n {} CC-BY-SA f f t Il progetto è stato pensato per l’ambiente metropolitano, e la soluzione proposta è stata una web app accessibile tramite QR-code, questo può infatti rimandare ad un indirizzo web ed oltre ad essere facilmente implementabile e personalizzabile, può essere facilmente diffuso in ogni ambiente. MobiLIS è un progetto nato durante Hackability4Mobility nato dalla necessità di Elisabetta di avere dei trasporti pubblici più accessibili. Elisabetta è una ragazza sorda che ha evidenziato l’impossibilità di ricevere alcune comunicazioni fatte in stazione e di usare gli interfoni. In caso di blocco di un ascensore o di una carrozza, infatti, un sordo non sempre può parlare all’interfono e, oltre a non sentire cosa gli viene detto, non può avere una conferma della ricezione della sua chiamata. Il QR-code è stato stampato in 3D https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FmJ4iS8VTgfPY9DtyRGn3%2Fimages%2FixqXvLSRt1TJeJxpmTlg%2Fsupporto_palo.png?alt=media&token=046cf841-a2d1-44f1-a792-528ff2b8a6fd ludovico@hackability.it {"{\\"body\\": \\"\\\\n\\\\n\\\\n\\\\nEcco il nostro prototipo: http://hackability.it/mobilis.html
\\", \\"title\\": \\"Web App\\", \\"description\\": \\"programma il portale, il nostro prototipo è diviso in 3 sezioni: \\\\n-video informativi in LIS.\\\\n-ultimi aggiornamenti.\\\\n-chat testuale.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\".png?alt=media&token=de0b5a74-65bb-4e04-b3b3-219d4bbfd200)\\\\n\\\\nPer generare il QR_code puoi usare uno dei tanti siti gratuiti presenti online, ad esempio QR Code generator https://it.qr-code-generator.com/
\\", \\"title\\": \\"Generazione QR-code\\", \\"description\\": \\"una volta ottenuto l'url del portale genera il QR-code\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Modifica file di stampa\\", \\"description\\": \\"modifica i file di stampa sostituendo il QR-code presente con quello del tuo portale\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\nAffinchè il QR-code venga riconosciuto il file ''QR-code'' deve essere stampato usando due colori! nel caso non si disponga di una stampante 3D con doppio estrusore si può stampare in bianco fino al layer in cui comincia il rilievo, impostare una pausa, cambiare filamento, e concludere la stampa.
\\", \\"title\\": \\"Stampa 3D\\", \\"description\\": \\"stampa il supporto!\\", \\"previewImage\\": \\"\\"}"} -mkApMc4YX68etdOxPCPx 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 La forchetta di Ivan La forchetta è customizzata sulle esigenze di Ivan e disegnata sulla forma della sua mano per ottimizzare il grasping! {} \n\n {} CC-NC-BY-SA f f t Tramite un case 3D disegnato sulla forma della sua mano, Ivan riesce a prenderlo senza che la forchetta gli scappi di mano! Ivan ha un problema di handing e non riesce ad usare le normali posate! Tecnologie 3D print, making e laser scan! https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FmkApMc4YX68etdOxPCPx%2Fimages%2FdToq8MFUFQiJUmCxQCH6%2Fduspaghi.JPG?alt=media&token=add48648-5477-4376-9c13-fd0d4a23cdc9 ludovico@hackability.it {} -o3E11j7of5JrY01kXjne 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 S'Trike Triciclo multifunzionale, utilizzabile sia in modo attivo sia passivo dal bambino: spingendosi con i piedi, pedalando e come passeggino grazie alla possibilità del rimando del manubrio dietro al seggiolino. {} {} CC-BY-SA f f t Il Trike creato è stato ricavato dalla modifica di una bicicletta e permette a Simone di muoversi in totale sicurezza e autonomia. Si può controllare solo con la spinta delle gambe o anche pedalando; inoltre la bicicletta può diventare passeggino o si può attaccare alla bici del papà quando Simone si dovesse stancare. Si voleva modificare un mezzo affinché il Simone, bambino affetto dalla sindrome INVDUP15, potesse imparare ad andare in bicicletta. Con la crescita Simone non è più trasportabile su un carrellino posteriore o su altri supporti porta-bimbi: il veicolo doveva stimolare Simone ad imparare a controllare il mezzo in maniera autonoma, eventualmente proseguendo con l'apprendimento della pedalata in autonomia. Saldatura, taglio ferro https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2Fo3E11j7of5JrY01kXjne%2Fimages%2Fax3quQIlejZTEOdhHjjJ%2FCattura.PNG?alt=media&token=2a1902a2-cd7c-4726-a9e8-6eed7aaf8440 ludovico@hackability.it {"{\\"body\\": \\"Il progetto dello sterzo si basa su modelli già utilizzati in ambito automobilistico e in particolare nei go kart. La forcella anteriore è stata saldata al telaio. Una traversa tubolare, solidale alla forcella, porta alle sue estremità i perni dello sterzo, collegati al mozzo ruote. Questo permette il movimento sterzante tramite braccetti metallici collegati alle ruote. Un componente fondamentale nel processo è il collegamento tra la struttura portante e lo sterzo, realizzato su misura per il mezzo. Il componente è costituito da una camicia cilindrica, in mozzo interno svincolato e due cuscinetti a sfera interni.
Su richiesta della famiglia è stata aggiunta la possibilità di poter togliere le ruote con facilità. Infatti, di fronte alla necessità di poter mettere il mezzo in un baule di automobile, è stato previsto un sistema con il quale le ruote vengono sfilate facilmente. Tutto il complesso della ruota può essere scollegato tramite un solo bullone che viene svitato e permette alla ruota di essere sfilata. Gli spunti per la realizzazione sono stati numerosi, spesso provenienti da modelli più grandi e complessi.
\\\\n\\\\n-min.jpg?alt=media&token=86b666a7-68a8-41d9-b798-559ab9c179e3)\\", \\"title\\": \\"Modifiche allo sterzo\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Il seggiolino ideato si basa sull’unione di due sistemi già esistenti. Una prima parte comprende un normale sellino da bici, che si attacca al telaio della bici tramite il tubo portante. La seconda parte prevede un supporto per la schiena preso da un seggiolino porta-bimbi per bici. Quest’ultimo è integrato con un supporto per la testa recuperato dalla seduta seggiolino originale porta-bimbi.
Tramite giunture metalliche sono stati collegati tra loro la parte per la seduta (il sellino) e quella per il supporto del corpo (lo schienale). Tutto il complesso è stato integrato con cinture prese dal seggiolino per bici in modo tale che Simone possa essere legato alla struttura e non cada. Vengono comunque lasciati due gradi di libertà per il movimento del seggiolino sia in altezza sia in reclinazione.
Il supporto per la testa è costituito da un telaio metallico che è coperto nella parte superiore dall’appoggio per la testa (recuperato dalla seduta del seggiolino per bambini). Il poggiatesta è collegato allo schienale tramite delle aste metalliche fissate al supporto per la schiena. Queste aste mantengono la possibilità di essere regolate in altezza a seconda delle preferenze del bambino per l’appoggio del capo.
Ci sono tre configurazioni previste dal sellino:
Il meccanismo dei pedali è stato recuperato da un altro modello di bici per bambino, che aveva già integrata la possibilità di sfilare i pedali. Il canotto (cilindro) è stato tagliato dall’altra bici e risaldato sul modello finale, in quanto non era possibile adattare i pedali al modello modificato per incompatibilità di dimensioni.
Per facilitare lo smontaggio del perno pedali, il sistema è costituito da un monoblocco con cuscinetti. La catena viene facilmente sfilata dalla ruota tramite una falsa maglia (non è necessaria una pinza per slacciarla). I pedali sono stati acquistati con un guscio integrato così da mantenere fermi i piedi di Simone durante l’apprendimento della pedalata. Questi sono dotati di cinghie regolabili per bloccare i piedi. Sotto il telaio portante vengono attaccate delle pedivelle reclinabili (prese sempre dal set del seggiolino porta-bimbi) qualora il bambino si voglia riposare. Queste sono attaccate alla struttura portante tramite l’aggiunta di un piccolo tubolare metallico. Grazie a questi supporti Simone, quando viene trainato o spinto, può accomodare i piedi affinché non intralcino.
\\\\n\\\\n\\", \\"title\\": \\"Pedali\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Di fronte alla necessità dei genitori di poter gestire il mezzo quando Simone è stanco, il progetto include la possibilità di guidare il mezzo spingendolo dalla parte posteriore. A tal fine il manubrio viene spostato dalla parte anteriore a quella posteriore su una seconda forcella montata sulla ruota posteriore, subito dietro il seggiolino, e fissato tramite una vite regolabile con un pomello.
Il controllo dello sterzo avviene tramite cavi di rimando (quelli di uno scooter della Piaggio) che passano dentro il telaio per non intralciare il movimento del bambino. Davanti e dietro il tubo di sterzo è collegato a un sistema rotante per permettere la trasmissione del movimento dello sterzo.
Il supporto del manubrio nella parte posteriore (la seconda forcella) deriva dal telaio di un’altra bici opportunamente tagliato e risaldato sul modello definitivo. Lo spostamento del manubrio è un’operazione che richiede poco tempo in quanto basta sfilare il bullone e reinserirlo a spostamento avvenuto, ed è quindi facilmente realizzabile da parte dei genitori di Simone.
\\\\n\\\\n\\\\n\\\\n\\", \\"title\\": \\"Rinvio dello sterzo per la conversione a passeggino\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"È stato acquistato un supporto tablet per la bici da attaccare ad un tubo collocato nella parte anteriore al posto del manubrio quando questo è spostato dietro il seggiolino nella configurazione a passeggino. Un tubolare analogo a quello per il supporto del manubrio viene inserito nella parte anteriore e fissato con una vite che lo rende regolabile in altezza.
\\\\n\\\\n\\", \\"title\\": \\"Supporto per tablet\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"Impostazioni della stampante
Le caratteristiche principali del progetto sono: variazione di altezza, universalità, trasportabilità, resistenza, leggerezza e igiene.
Per quanto riguarda il tema della variazione di altezza, è stato utilizzato il velcro, per “legare” il tavolino al bracciolo, in modo tale da scaricare direttamente il peso su di esso. La variazione di altezza permane anche in questo caso, infatti i braccioli della sedia a rotelle sono mobili e possono essere bloccati a varie altezze. Inoltre il velcro è utile anche per tener chiuso il tavolino durante il trasporto.
\n\n.jpeg?alt=media&token=e90ea994-79a2-404d-a773-6294d872b726)\n\n
Il tavolino è collegato con lo scheletro della carrozzina tramite un sistema di giunti paralleli e ortogonali, che si uniscono al tavolino tramite dei tubi in alluminio. Queste componenti rendono pienamente il concetto di universalità, vista la loro adattabilità per qualunque sedia a rotelle.
\n\n.jpeg?alt=media&token=c2252257-b37e-4cbd-921e-b13c0dd236c6)\n\n\n\n
La trasportabilità è garantita dalla divisione del tavolo in due pezzi, uniti tramite la cerniera con bloccaggio a frizione. La presenza della cerniera, l’utilizzo del PLA e l’aggiunta di due strutture a T in alluminio ne garantiscono anche la resistenza. Inoltre il PLA rispecchia a pieno i requisiti per la leggerezza e l’igiene.
\n\n.jpeg?alt=media&token=80c4e079-a397-4558-8521-12761593d258)\n\n.jpeg?alt=media&token=ba60f357-804d-4c02-97e3-04ead997c15a)\n\n.jpeg?alt=media&token=6aa9abf0-f52f-4cbe-a812-7739e90c3229)\n\n.jpeg?alt=media&token=ca03329c-5ffc-49d0-a328-bc9eca12fd7f)\n\nDi seguito i file STL per il PLA e legno, secondo la vostra preferenza:
{} CC-NC-BY-SA f f t AUPaT è un tavolino regolabile su varie altezze, facile da trasportare, perché pieghevole e adattabile a qualsiasi sedia a rotelle, grazie alle sue componenti universali. Il materiale lo rende resistente, leggero e facile da lavare. Edoardo non riusciva a mangiare sullo stesso piano degli altri sui tavoli da ristorante, a causa dell’ingombro della sua carrozzina. 3D printing, PLA. https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FpU39unr8mhA3Qn54a4WL%2Fimages%2FkeNxfreunyc3aTYxkoGH%2FWhatsApp-Image-2019-06-20-at-18.11.51.jpeg?alt=media&token=69b1a98e-322b-49ca-9908-a2f66b52ee5c ludovico@hackability.it {"{\\"body\\": \\"\\", \\"title\\": \\"File STL\\", \\"description\\": \\"Scaricare i file per la stampa 3D.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n.jpeg?alt=media&token=e16bb0a2-fdfd-4e42-b99d-6a286f33773b)\\", \\"title\\": \\"Stampa\\", \\"description\\": \\"Per realizzare i 10 pezzi, stampare i file STL e i rispettivi speculari.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\".jpeg?alt=media&token=93170802-a6c1-4d48-b4f2-32363398329c)\\", \\"title\\": \\"Taglio dei tubi\\", \\"description\\": \\"Prendere i tubolari, segnare con una matita una lunghezza di 18 cm circa e tagliare con un seghetto. Ripetere questo procedimento 4 volte.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\".jpeg?alt=media&token=4ea25ea1-5c9f-49cf-bd1f-5521d4715ad1)\\", \\"title\\": \\"Profilo a T\\", \\"description\\": \\"Misurare la lunghezza dei profili a T di 60 cm e tagliare con il seghetto sul segno.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\".jpeg?alt=media&token=e663e23a-31ec-465a-b42f-d14156457f8b)\\", \\"title\\": \\"Cerniera \\", \\"description\\": \\"Inserire la cerniera al di sotto del tavolino con 4 viti.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Inserimento profili a T\\", \\"description\\": \\"Inserire i profili a T negli incavi del tavolo.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\".jpeg?alt=media&token=c2252257-b37e-4cbd-921e-b13c0dd236c6)\\\\n\\\\n\\", \\"title\\": \\"Giunti e tubolari\\", \\"description\\": \\"Prendere due tubi tagliati(1) e inserirli all'interno del tavolo e sigillarli con la colla industriale.\\\\nAgganciare i giunti paralleli allo scheletro della carrozzina e ai restanti tubi tagliati(2).\\\\nCollegare i tubi inseriti nel tavolo(1) ai tubi verticali(2) tramite i giunti ortogonali.\\\\n\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Applicazione velcro\\", \\"description\\": \\"Legare il tavolino al bracciolo della carrozzina con il velcro.\\", \\"previewImage\\": \\"\\"}"} -qX54WtdaYYsqKqftsRYE 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Massaggiatore arco plantare Riabiltazione muscoli per arco plantare {} {} CC-BY-SA f f t Permette il massaggio dell'arco plantare del piede. Trauma dovuto alla rottura del tallone Modellazione mediante software Fusion 360 e successiva stampa 3D https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FqX54WtdaYYsqKqftsRYE%2Fimages%2FOxcChi6PRkMB3F50NCDd%2F01.jpg?alt=media&token=558c8f2e-e944-4fd5-838c-a99740159cf0 ludovico@hackability.it {} -s9EQNs7phu1CcANdOftw 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Zoomografo Un economico ingranditore portatile per la lettura e la scrittura {}\n\n\n\n
Zoomografo è il careable dedicato alle persone ipovedenti che consente di ingrandire parole e immagini senza perdere il filo della frase. L'oggetto è interamente stampato in 3D in un unico pezzo pre-assemblato e regolabile, dotato di fotocamera endoscopica leggera e wifi che collegata al proprio smartphone o tablet facilita l'esperienza di lettura, ma anche la scrittura.
{} CC-NC-BY-SA f f t Ingrandisce testi e immagini per poter leggere e scrivere, grazie ad una telecamera e un dispositivo mobile. Giovanni e Alice sono ipovedenti gravi. Hanno problemi con la lettura e, a volte, anche a firmare documenti. 3D printed, DIY https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2Fs9EQNs7phu1CcANdOftw%2Fimages%2Fo716UwEZNWCy9kb68OVk%2F03.JPG?alt=media&token=de007bdb-332c-47b4-a6a2-f484552d0267 ludovico@hackability.it {"{\\"body\\": \\"\\\\n\\\\nPuoi avvalerti dei vari servizi di stampa 3D, oppure stampartelo da solo con la tua stampante:
Print settings:
Nozzle .4mm\\\\n\\\\nLayer height max .15mm\\\\n\\\\nWall thickness from 1.05 to 1.4mm\\\\n\\\\nTop/Bottomo thickness from .75 to .8mm\\\\n\\\\nSpeed 50mm/s\\\\n\\\\nZig-Zag support 20% touch the buildplate onlt\\\\n\\\\nPLA filament color: black or dark grey
\\", \\"title\\": \\"Stampa in 3D\\", \\"description\\": \\"Scarica il file STL e stampalo\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Acquista il materiale necessario\\", \\"description\\": \\"Guarda la lista dei materiali e acquista ciò che ti manca\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\\\n\\\\n\\", \\"title\\": \\"Inserisci la vite e il suo dado\\", \\"description\\": \\"Utilizzare le pinzette per inserire il bullone all'interno, quindi utilizzare il cacciavite per inserire la vite. Devi essere calmo e paziente come quando fai la modellismo...\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Fissa l'endoscopio\\", \\"description\\": \\"Inserire l'endoscopio nello Zoomografo e quindi fissarlo a sufficienza con il cacciavite.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\n\\", \\"title\\": \\"Accendi l'endoscopio\\", \\"description\\": \\"Sulla scatola dell'endoscopio (la scatola crea anche una rete Wi-Fi) c'è il pulsante per accendere. Premerlo. Sul lato del cavo USB c'è una ruota per regolare la potenza dei LED.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\nNella confezione dell'endoscopio troverai le istruzioni (facili) per scaricare l'app per il tuo dispositivo e (importante) la password della rete.\\\\n\\\\nIn questo modello l'app è HTwifi: iOS, Android \\\\n\\\\nLa password per la rete è 88888888.\\\\n\\\\nOgni endoscopio ha la sua app specifica e la sua password.
Quindi, scegli la rete dell'endoscopio e inserisci la password. Apri l'app e scegli la tua fotocamera. Bene, hai finito!
\\\\n\\\\n\\", \\"title\\": \\"Scarica l'App del tuo endoscopio\\", \\"description\\": \\"E poi collegare il dispositivo al Wi-Fi dell'endoscopio\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\\\n\\\\nHai quasi finito. Questo è il momento più importante per usare correttamente lo Zoomografo.\\\\n\\\\nDevi scegliere un libro o una rivista e trovare un riferimento per allineare la tua fotocamera.\\\\n\\\\nUna volta allineato, fissalo bene con il cacciavite e sei pronto!
\\", \\"title\\": \\"Allinea l'endoscopio\\", \\"description\\": \\"Prendi un libro o una rivista da utilizzare\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Enjoy\\", \\"description\\": \\"Ora puoi leggere dal tuo dispositivo con un ottimo zoom. Ti puoi aiutare con un righello se ti è più comodo.\\", \\"previewImage\\": \\"\\"}"} -th4YC0sUFFt21CQl8oqk 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Hackability Geo La prima mappa 3D dell'Italia interattiva per bambini ciechi. {} \n\nIl progetto nasce come richiesta di Massimo e dei suoi genitori. Massimo è un bambino cieco appassionato di Geografia, la sua condizione non gli permette di “visualizzare” la forma e le dimensioni dei luoghi geografici, e si basa sul tempo di percorrenza per raggiungere un luogo da casa per valutare la distanza. Per Massimo, la Sicilia (che raggiunge in 3 ore in aereo) e Genova (che raggiunge in 3 ore in macchina) sono distanti uguali.
\n\n\n\nI genitori, conosciuti durante un evento di Hackability@Milano, hanno portato l’idea di realizzare una mappa dell’italia tattile interattiva, che, alla pressione di determinati bottoni, riproduce dei file audio di descrizione della zona interessata.
Da qui nasce il progetto Hackability Geo, una mappa geografica customizzabile tattile, in grado di riprodurre diverse aree geografiche (non solo l’italia) nella modalità richiesta.
Il progetto si basa su una mappa stampabile in 3D dotata di tasti collegati ad un Raspberry Pi. Alla pressione di ogni tasto, il raspberry riproduce dei file audio configurati al suo interno. Il progetto è documentato sulla piattaforma Space Hackability.
{} CC-NC-BY-SA f f t Una mappa italiana tridimensionale presenta dei pulsanti per ogni regione.\nAlla pressione dei pulsanti, vengono riprodotte delle tracce audio che descrivono vari aspetti della regione.\nIl gioco è configurabile e può essere facilmente esteso ad altre mappe (europa, francia, ecc.)\n Massimo è un bambino cieco con problemi di udito appassionato di geografia.\nI genitori ci hanno chiesto di creare un gioco che permetta a Massimo di toccare ed interagire con\nuna cartina italiana con il tatto e i suoni.\n Stampa 3D, DYN, Phisical Computing con Raspberry PI\n https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2Fth4YC0sUFFt21CQl8oqk%2Fimages%2F9yOzoSigrSHgKq83F9Ph%2FIMG_0145.JPG?alt=media&token=65b78aab-ee2d-4849-9b73-90ef2d05c6ae ludovico@hackability.it {"{\\"body\\": \\"\\", \\"title\\": \\"Istruzioni in arrivo\\", \\"description\\": \\"\\", \\"previewImage\\": \\"\\"}"} -wca658NRavQkwH67NyQu 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Horus Lo strumento che ti aiuta ad allacciare catenelle o bracciali con chiusura a moschettone {}Horus è un piccolo oggetto che nasce dall'hacking di un altro oggetto: il capotasto.
E' stato trasformato perchè possa avere la funzione di aiutare le persone ad allacciarsi le catenine con chiusura a moschettone, operazione difficile per tutti, un po' più difficile per Anna che ci ha chiesto se potevamo aiutarla.
\n\n\n\n\n\n {} CC-NC-BY-SA f f t Horus è un piccolo strumento che permette di incastrare l'apertura a moschettone e ad aprirla molto facilmente. Anna é una ragazza portatrice della Sindrome di Poland; da piccola ha subito l'intervento di pollicizzazione dell'indice ad entrambe le mani. Le risulta molto complesso, a volte impossibile, allacciare e togliere le collane o i braccialetti. 3d printed, Hacking https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2Fwca658NRavQkwH67NyQu%2Fimages%2F3sJ2XkD0cee4ZQVOJCyl%2FIMG_0167.jpg?alt=media&token=71890e27-fc89-4f99-ad29-f8727ca3c413 ludovico@hackability.it {"{\\"body\\": \\"\\\\n\\\\n\\\\n\\\\n\\", \\"title\\": \\"Scarica il file e stampalo in 3D\\", \\"description\\": \\"Dopo che l'hai stampato, aggiungi l'oring, necessario per mantenere chiuso lo strumento in modo elastico.\\", \\"previewImage\\": \\"\\"}"} -yA6WUh80IWtIXQmtrA2J 2022-07-23 09:45:10.891 2022-07-23 09:45:10.891 Spugna - aiutante di Capitan Uncino Tagliere multifunzionale che consente di tagliare qualunque alimento utilizzando una sola mano {}
Il tagliere è composto di due parti:
Quindi la struttura finale risulta essere questa:
\n\n {} CC-NC-BY-SA f f t Il tagliere è composto di due parti:\n- una parte mobile che ospita: un'isola di chiodini (rimovibile), un incastro che consente il fissaggio di 4 grattugie e una maniglia (che funge anche da cestino per gli scarti)\n- una parte strutturale fissa che ne assicura la stabilità ed ospita i cassetti Il progetto è stato pensato per Maria, una donna che ha perso la funzionalità dell'arto superiore sinistro. \nQuesto tagliere le consente di sbucciare, tagliare e affettare con una mano sola tutti gli alimenti. Fresa CNC, Stampante3D, trapano a colonna (con punte da 3 e 4mm), morse da falegnameria e smerigliatrice angolare https://firebasestorage.googleapis.com/v0/b/hackability-web.appspot.com/o/projects%2FyA6WUh80IWtIXQmtrA2J%2Fimages%2FbjBByePy53Fef5ck9IUR%2Ftagliere-vista-3.jpg?alt=media&token=17ad0401-754e-4afd-b5fa-feff41d5e6c3 ludovico@hackability.it {"{\\"body\\": \\"\\", \\"title\\": \\"Fresatura piano di lavoro\\", \\"description\\": \\"Fresare con utensile appositp il primo tagliere IKEA inserendo il file \\\\\\"fresa piano di lavoro\\\\\\". Successivamente inserire nella macchina il file \\\\\\"fori\\\\\\" e cambiare l'utensile con la punta da trapano da 4mm.\\\\n(Se ci si rivolge ad un Fablab il servizio è gratuito).\\\\nRimuovere lo scarto utilizzando un seghetto o preferibilmente una smerigliatrice angolare con disco da taglio.\\\\n\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Fresatura pareti laterali e supporto chiodini\\", \\"description\\": \\"Fresare il secondo tagliere IKEA inserendo il file \\\\\\"fresa pareti laterali\\\\\\".\\\\nRimuovere lo scarto utilizzando un seghetto o preferibilmente una smerigliatrice angolare con disco da taglio.\\\\n(Se ci si rivolge ad un Fablab il servizio è gratuito)\\\\n\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Fresatura base\\", \\"description\\": \\"Fresare il terzo tagliere IKEA inserendo il file \\\\\\"fresa base\\\\\\".\\\\nRimuovere lo scarto utilizzando un seghetto o preferibilmente una smerigliatrice angolare con disco da taglio.\\\\n(Se ci si rivolge ad un Fablab il servizio è gratuito)\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Stampa 3D mascherina\\", \\"description\\": \\"Scaricare il file \\\\\\"stampa mascherina\\\\\\" e mandare in stampa.\\\\n(Anche in questo se ci si rivolge ad un Fablab il servizio è gratuito) \\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Stampa 3D cassetti\\", \\"description\\": \\"Scaricare il file \\\\\\"stampa cassetti\\\\\\" e mandare in stampa.\\\\n(Se ci si rivolge ad un Fablab il servizio è gratuito) \\\\n\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Incollaggio struttura\\", \\"description\\": \\"Applicare uno strato di colla sulle due pareti laterali, posizionarle e pressarle con le morse come in figura; lasciare in posa la colla per almeno 30 minuti e non stressare le giunzioni tra i pezzi per almeno 24 ore.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Inserimento perni di fissaggio per la base\\", \\"description\\": \\"Forare con profondità 15mm le pareti laterali al centro del loro spessore e a 1.5cm di distanza dal bordo (come in figura) con punta da 3mm. Successivamente inserire con cautela in ogni foro un tondino in inox aiutandosi con un martello.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Foratura piano di lavoro\\", \\"description\\": \\"Nelle stesse posizioni dei fori praticati precedentemente praticare fori passanti nel piano di lavoro con punta da 4mm.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\".jpeg?alt=media&token=6be8dcd2-b590-4ed2-9161-bba2eee54b59)\\", \\"title\\": \\"Consigli per la foratura\\", \\"description\\": \\"Nel caso in cui si disponga di un trapano poco preciso, si consiglia di forare prima il piano di lavoro con punta da 3mm.\\\\nDunque posizionare il piano di lavoro sulla struttura di base ,fissare con le morse i due pezzi e usare i fori precedentemente praticati come riferimento per forare le pareti della base.\\\\nSuccessivamente è possibile aumentare il diametro dei fori del piano di lavoro con una punta da 4mm.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Incollaggio mascherina\\", \\"description\\": \\"Utilizzando la colla da legno incollare la mascherina stampata in 3D nell'apposito spazio, come prima pressare i due pezzi per almeno mezz'ora e non stressare la giunzione per almeno 24 h.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Inserimento chiodini\\", \\"description\\": \\"Inserire i chiodini negli appositi fori dell'isola come in figura.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Pelapatate\\", \\"description\\": \\"Durante la prototipazione è stato stampato un modello di pelapatate che sarebbe dovuto essere alloggiabile nella mascherina in plastica , proprio come le grattugie, ma a causa di errori di progettazione i due pezzi non sono compatibili.\\\\nSarebbe dunque possibile revisionarne il disegno in CAD per renderli compatibili.\\", \\"previewImage\\": \\"\\"}","{\\"body\\": \\"\\", \\"title\\": \\"Finiture\\", \\"description\\": \\"Applicare sotto alla struttura di base quattro gommini antiscivolo in silicone, per impedire che il tagliere si muova durante l'utilizzo. \\\\nPer garantire la durevolezza del piano di lavoro, si consiglia di ungere il legno periodicamente con olio di vaselina alimentare(facilmente reperibile in farmacia), in modo da mantenerlo nutrito e impermeabilizzato.\\", \\"previewImage\\": \\"\\"}"} -cl9mqhaqj1945801c6b6hingwn 2022-10-24 12:06:59.995 2022-10-24 12:06:59.997 Prova \N \N cc-ns-by-sa t f f giulia.ferrari14@gmail.com {} -\. - - --- --- Name: Project Project_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres --- - -ALTER TABLE ONLY public."Project" - ADD CONSTRAINT "Project_pkey" PRIMARY KEY (id); - - --- --- PostgreSQL database dump complete --- - diff --git a/next.config.mjs b/next.config.mjs index 28d6cb2..17e3351 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -13,9 +13,8 @@ const config = { reactStrictMode: true, swcMinify: true, output: "standalone", - i18n: { - locales: ["it"], - defaultLocale: "it", + experimental: { + appDir: true, }, }; diff --git a/package-lock.json b/package-lock.json index 9505da6..a6550ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,69 +12,71 @@ "@editorjs/checklist": "^1.4.0", "@editorjs/code": "^2.8.0", "@editorjs/delimiter": "^1.3.0", - "@editorjs/editorjs": "^2.26.3", + "@editorjs/editorjs": "^2.26.5", "@editorjs/embed": "^2.5.3", "@editorjs/header": "^2.7.0", - "@editorjs/image": "^2.7.1", + "@editorjs/image": "^2.8.1", "@editorjs/inline-code": "^1.4.0", "@editorjs/list": "^1.8.0", "@editorjs/marker": "^1.3.0", "@editorjs/paragraph": "^2.9.0", "@editorjs/quote": "^2.5.0", - "@editorjs/table": "^2.1.2", + "@editorjs/table": "^2.2.0", "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/react-fontawesome": "^0.2.0", - "@google-cloud/storage": "^6.8.0", - "@headlessui/react": "^1.7.5", - "@heroicons/react": "^2.0.13", + "@google-cloud/storage": "^6.9.1", + "@headlessui/react": "^1.7.8", + "@heroicons/react": "^2.0.14", "@next-auth/prisma-adapter": "^1.0.5", "@prisma/client": "^4.9.0", "@tailwindcss/forms": "^0.5.3", - "@tailwindcss/typography": "^0.5.8", - "@tanstack/react-query": "^4.16.0", - "@trpc/client": "^10.0.0", - "@trpc/next": "^10.0.0", - "@trpc/react-query": "^10.0.0", - "@trpc/server": "^10.0.0", - "axios": "^1.2.1", - "cloudinary": "^1.32.0", + "@tailwindcss/typography": "^0.5.9", + "@tanstack/react-query": "^4.24.4", + "@trpc/client": "^10.9.1", + "@trpc/next": "^10.9.1", + "@trpc/react-query": "^10.9.1", + "@trpc/server": "^10.9.1", + "axios": "^1.3.1", + "cloudinary": "^1.33.0", "clsx": "^1.2.1", - "cuid": "^2.1.8", - "daisyui": "^2.43.1", + "cuid": "^3.0.0", + "daisyui": "^2.50.0", "fast-deep-equal": "^3.1.3", - "final-form": "^4.20.7", - "final-form-arrays": "^3.0.2", + "final-form": "^4.20.9", + "final-form-arrays": "^3.1.0", "kannon.js": "^0.3.0", - "next": "13.0.2", - "next-auth": "^4.18.3", - "next-mdx-remote": "^4.2.0", + "next": "13.1.6", + "next-auth": "^4.19.2", + "next-mdx-remote": "^4.3.0", "next-superjson": "^0.0.4", "react": "18.2.0", "react-dom": "18.2.0", "react-editor-js": "^2.1.0", "react-final-form": "^6.5.9", "react-final-form-arrays": "^3.1.4", - "superjson": "1.9.1", + "react-toastify": "^9.1.1", + "superjson": "1.12.2", "telegraf": "^4.11.2", - "zod": "^3.18.0" + "zod": "^3.20.2", + "zustand": "^4.3.2" }, "devDependencies": { "@types/editorjs__header": "^2.6.0", - "@types/node": "^18.0.0", - "@types/react": "^18.0.14", - "@types/react-dom": "^18.0.5", - "@typescript-eslint/eslint-plugin": "^5.33.0", - "@typescript-eslint/parser": "^5.33.0", - "autoprefixer": "^10.4.7", - "eslint": "^8.26.0", - "eslint-config-next": "13.0.2", + "@types/node": "^18.11.18", + "@types/react": "^18.0.27", + "@types/react-dom": "^18.0.10", + "@typescript-eslint/eslint-plugin": "^5.50.0", + "@typescript-eslint/parser": "^5.50.0", + "autoprefixer": "^10.4.13", + "eslint": "^8.33.0", + "eslint-config-next": "13.1.6", "node-html-parser": "^6.1.4", - "postcss": "^8.4.14", - "prettier": "^2.7.1", - "prettier-plugin-tailwindcss": "^0.1.13", + "postcss": "^8.4.21", + "prettier": "^2.8.3", + "prettier-plugin-tailwindcss": "^0.2.2", "prisma": "^4.9.0", - "tailwindcss": "^3.2.0", - "typescript": "^4.8.4" + "tailwindcss": "^3.2.4", + "typescript": "^4.9.5" } }, "node_modules/@ampproject/remapping": { @@ -557,17 +559,22 @@ "integrity": "sha512-s6H2KXhLz2rgbMZSkRm8dsMJvyUNZsEjxobBEg9ztdrb1B2H3pEzY6iTwI4XUPJWJ3c3qRKwV4TrO3J5jUdoQA==" }, "node_modules/@editorjs/editorjs": { - "version": "2.26.3", - "resolved": "https://registry.npmjs.org/@editorjs/editorjs/-/editorjs-2.26.3.tgz", - "integrity": "sha512-ztR+fwXagfAnlc86A3p8K0bI/XQTvnGjmKY0P+c18aUB4OW3BjkX6OAPb4PH/Ym8G16fBKtJG//sITck6CD1lA==", + "version": "2.26.5", + "resolved": "https://registry.npmjs.org/@editorjs/editorjs/-/editorjs-2.26.5.tgz", + "integrity": "sha512-imwXZi9NmzxKjNosa1xQf286liJYsTe2J2DWCiV5TwKhvYZ1INg5Y+FietcM2v65QmeLqP7wgBUhoI7wiCB+yQ==", "dependencies": { - "@codexteam/icons": "^0.0.4", + "@codexteam/icons": "0.1.0", "codex-notifier": "^1.1.2", "codex-tooltip": "^1.0.5", "html-janitor": "^2.0.4", "nanoid": "^3.1.22" } }, + "node_modules/@editorjs/editorjs/node_modules/@codexteam/icons": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@codexteam/icons/-/icons-0.1.0.tgz", + "integrity": "sha512-jW1fWnwtWzcP4FBGsaodbJY3s1ZaRU+IJy1pvJ7ygNQxkQinybJcwXoyt0a5mWwu/4w30A42EWhCrZn8lp4fdw==" + }, "node_modules/@editorjs/embed": { "version": "2.5.3", "resolved": "https://registry.npmjs.org/@editorjs/embed/-/embed-2.5.3.tgz", @@ -587,9 +594,9 @@ "integrity": "sha512-s6H2KXhLz2rgbMZSkRm8dsMJvyUNZsEjxobBEg9ztdrb1B2H3pEzY6iTwI4XUPJWJ3c3qRKwV4TrO3J5jUdoQA==" }, "node_modules/@editorjs/image": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@editorjs/image/-/image-2.7.1.tgz", - "integrity": "sha512-ANZ6s25AsTV9ZepZ8NaXviustPmtG2MlZg+V1mdfKkvCiHm515+xHqNXJYH0nA/Z6XqLjD7FV/N+nkVGRXVTHg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@editorjs/image/-/image-2.8.1.tgz", + "integrity": "sha512-4WscDAoi6OO0F6L7N1mkQymADwj8hHgH/ICk5wGRPdkesUZW1TgldX8XvSmy+f5VylsEi3F/gUggaZsrYxu2sA==", "dependencies": { "@codexteam/icons": "^0.0.6" } @@ -655,9 +662,9 @@ "integrity": "sha512-s6H2KXhLz2rgbMZSkRm8dsMJvyUNZsEjxobBEg9ztdrb1B2H3pEzY6iTwI4XUPJWJ3c3qRKwV4TrO3J5jUdoQA==" }, "node_modules/@editorjs/table": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@editorjs/table/-/table-2.1.2.tgz", - "integrity": "sha512-0v29DU/HzjCOjkFxy8pjAhceWvCuaj70aS+i0YD1Wv7AvkMP66E4NW1lGFEv2eMaYCc5SL+/T1UJqhyd8H9uvg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@editorjs/table/-/table-2.2.0.tgz", + "integrity": "sha512-vVfiNEk1EHFj1ohObX4g7iB/mVhPkx0o8yMb+v5gV/XnOysbRk46hiLmntJfgYp/NZvbYxcZk3mPvrE/NAe+pg==", "dependencies": { "@codexteam/icons": "^0.0.6" } @@ -668,15 +675,15 @@ "integrity": "sha512-L7Q5PET8PjKcBT5wp7VR+FCjwCi5PUp7rd/XjsgQ0CI5FJz0DphyHGRILMuDUdCW2MQT9NHbVr4QP31vwAkS/A==" }, "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", - "globals": "^13.15.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -765,9 +772,9 @@ } }, "node_modules/@google-cloud/storage": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-6.8.0.tgz", - "integrity": "sha512-eRGsHrhVA7NORehYW9jLUWHRzYqFxbYiG3LQL50ZhjMekDwzhPKUQ7wbjAji9OFcO3Mk8jeNHeWdpAc/QZANCg==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-6.9.1.tgz", + "integrity": "sha512-mhbRfrDgV7qM8HGn12p3dpT87Azt94s9YRzr8qR+o/ptksAkCApspzlNS2mUEeoXUMmnpwcdF2GGNpd4+6NuVw==", "dependencies": { "@google-cloud/paginator": "^3.0.7", "@google-cloud/projectify": "^3.0.0", @@ -822,9 +829,9 @@ } }, "node_modules/@headlessui/react": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.5.tgz", - "integrity": "sha512-UZSxOfA0CYKO7QDT5OGlFvesvlR1SKkawwSjwQJwt7XQItpzRKdE3ZUQxHcg4LEz3C0Wler2s9psdb872ynwrQ==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.8.tgz", + "integrity": "sha512-zcwb0kd7L05hxmoAMIioEaOn235Dg0fUO+iGbLPgLVSjzl/l39V6DTpC2Df49PE5aG5/f5q0PZ9ZHZ78ENNV+A==", "dependencies": { "client-only": "^0.0.1" }, @@ -837,17 +844,17 @@ } }, "node_modules/@heroicons/react": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.13.tgz", - "integrity": "sha512-iSN5XwmagrnirWlYEWNPdCDj9aRYVD/lnK3JlsC9/+fqGF80k8C7rl+1HCvBX0dBoagKqOFBs6fMhJJ1hOg1EQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.14.tgz", + "integrity": "sha512-eFL4if6L7woL1fUvk/jjXx4z9NxVESHHrQnEd2qKVelTFTIr/3VLGWdPb0biia9ZVe26P0JSs/xmOlRNur3SrQ==", "peerDependencies": { "react": ">= 16" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -944,9 +951,9 @@ } }, "node_modules/@mdx-js/mdx": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.1.5.tgz", - "integrity": "sha512-zEG0lt+Bl/r5U6e0TOS7qDbsXICtemfAPquxWFsMbdzrvlWaqMGemLl+sjVpqlyaaiCiGVQBSGdCk0t1qXjkQg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.2.1.tgz", + "integrity": "sha512-hZ3ex7exYLJn6FfReq8yTvA6TE53uW9UHJQM9IlSauOuS55J9y8RtA7W+dzp6Yrzr00/U1sd7q+Wf61q6SfiTQ==", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/mdx": "^2.0.0", @@ -972,9 +979,9 @@ } }, "node_modules/@mdx-js/react": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.1.5.tgz", - "integrity": "sha512-3Az1I6SAWA9R38rYjz5rXBrGKeZhq96CSSyQtqY+maPj8stBsoUH5pNcmIixuGkufYsh8F5+ka2CVPo2fycWZw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.2.1.tgz", + "integrity": "sha512-YdXcMcEnqZhzql98RNrqYo9cEhTTesBiCclEtoiQUbJwx87q9453GTapYU6kJ8ZZ2ek1Vp25SiAXEFy5O/eAPw==", "dependencies": { "@types/mdx": "^2.0.0", "@types/react": ">=16" @@ -997,23 +1004,23 @@ } }, "node_modules/@next/env": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.0.2.tgz", - "integrity": "sha512-Qb6WPuRriGIQ19qd6NBxpcrFOfj8ziN7l9eZUfwff5gl4zLXluqtuZPddYZM/oWjN53ZYcuRXzL+oowKyJeYtA==" + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/env/-/env-13.1.6.tgz", + "integrity": "sha512-s+W9Fdqh5MFk6ECrbnVmmAOwxKQuhGMT7xXHrkYIBMBcTiOqNWhv5KbJIboKR5STXxNXl32hllnvKaffzFaWQg==" }, "node_modules/@next/eslint-plugin-next": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.0.2.tgz", - "integrity": "sha512-W+fIIIaFU7Kct7Okx91C7XDRGolv/w2RUenX2yZFeeNVcuVzDIKUcNmckrYbYcwrNQUSXmtwrs3g8xwast0YtA==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.1.6.tgz", + "integrity": "sha512-o7cauUYsXjzSJkay8wKjpKJf2uLzlggCsGUkPu3lP09Pv97jYlekTC20KJrjQKmSv5DXV0R/uks2ZXhqjNkqAw==", "dev": true, "dependencies": { "glob": "7.1.7" } }, "node_modules/@next/swc-android-arm-eabi": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.0.2.tgz", - "integrity": "sha512-X54UQCTFyOGnJP//Z71dPPlp4BCYcQL2ncikKXQcPzVpqPs4C3m+tKC8ivBNH6edAXkppwsLRz1/yQwgSZ9Swg==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.1.6.tgz", + "integrity": "sha512-F3/6Z8LH/pGlPzR1AcjPFxx35mPqjE5xZcf+IL+KgbW9tMkp7CYi1y7qKrEWU7W4AumxX/8OINnDQWLiwLasLQ==", "cpu": [ "arm" ], @@ -1026,9 +1033,9 @@ } }, "node_modules/@next/swc-android-arm64": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.0.2.tgz", - "integrity": "sha512-1P00Kv8uKaLubqo7JzPrTqgFAzSOmfb8iwqJrOb9in5IvTRtNGlkR4hU0sXzqbQNM/+SaYxze6Z5ry1IDyb/cQ==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.1.6.tgz", + "integrity": "sha512-cMwQjnB8vrYkWyK/H0Rf2c2pKIH4RGjpKUDvbjVAit6SbwPDpmaijLio0LWFV3/tOnY6kvzbL62lndVA0mkYpw==", "cpu": [ "arm64" ], @@ -1041,9 +1048,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.0.2.tgz", - "integrity": "sha512-1zGIOkInkOLRv0QQGZ+3wffYsyKI4vIy62LYTvDWUn7TAYqnmXwougp9NSLqDeagLwgsv2URrykyAFixA/YqxA==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.1.6.tgz", + "integrity": "sha512-KKRQH4DDE4kONXCvFMNBZGDb499Hs+xcFAwvj+rfSUssIDrZOlyfJNy55rH5t2Qxed1e4K80KEJgsxKQN1/fyw==", "cpu": [ "arm64" ], @@ -1056,9 +1063,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.0.2.tgz", - "integrity": "sha512-ECDAjoMP1Y90cARaelS6X+k6BQx+MikAYJ8f/eaJrLur44NIOYc9HA/dgcTp5jenguY4yT8V+HCquLjAVle6fA==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.1.6.tgz", + "integrity": "sha512-/uOky5PaZDoaU99ohjtNcDTJ6ks/gZ5ykTQDvNZDjIoCxFe3+t06bxsTPY6tAO6uEAw5f6vVFX5H5KLwhrkZCA==", "cpu": [ "x64" ], @@ -1071,9 +1078,9 @@ } }, "node_modules/@next/swc-freebsd-x64": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.0.2.tgz", - "integrity": "sha512-2DcL/ofQdBnQX3IoI9sjlIAyLCD1oZoUBuhrhWbejvBQjutWrI0JTEv9uG69WcxWhVMm3BCsjv8GK2/68OKp7A==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.1.6.tgz", + "integrity": "sha512-qaEALZeV7to6weSXk3Br80wtFQ7cFTpos/q+m9XVRFggu+8Ib895XhMWdJBzew6aaOcMvYR6KQ6JmHA2/eMzWw==", "cpu": [ "x64" ], @@ -1086,9 +1093,9 @@ } }, "node_modules/@next/swc-linux-arm-gnueabihf": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.0.2.tgz", - "integrity": "sha512-Y3OQF1CSBSWW2vGkmvOIuOUNqOq8qX7f1ZpcKUVWP3/Uq++DZmVi9d18lgnSe1I3QFqc+nXWyun9ljsN83j0sw==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.1.6.tgz", + "integrity": "sha512-OybkbC58A1wJ+JrJSOjGDvZzrVEQA4sprJejGqMwiZyLqhr9Eo8FXF0y6HL+m1CPCpPhXEHz/2xKoYsl16kNqw==", "cpu": [ "arm" ], @@ -1101,9 +1108,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.0.2.tgz", - "integrity": "sha512-mNyzwsFF6kwZYEjnGicx9ksDZYEZvyzEc1BtCu8vdZi/v8UeixQwCiAT6FyYX9uxMPEkzk8qiU0t0u9gvltsKw==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.1.6.tgz", + "integrity": "sha512-yCH+yDr7/4FDuWv6+GiYrPI9kcTAO3y48UmaIbrKy8ZJpi7RehJe3vIBRUmLrLaNDH3rY1rwoHi471NvR5J5NQ==", "cpu": [ "arm64" ], @@ -1116,9 +1123,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.0.2.tgz", - "integrity": "sha512-M6SdYjWgRrY3tJBxz0663zCRPTu5BRONmxlftKWWHv9LjAJ59neTLaGj4rp0A08DkJglZIoCkLOzLrzST6TGag==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.1.6.tgz", + "integrity": "sha512-ECagB8LGX25P9Mrmlc7Q/TQBb9rGScxHbv/kLqqIWs2fIXy6Y/EiBBiM72NTwuXUFCNrWR4sjUPSooVBJJ3ESQ==", "cpu": [ "arm64" ], @@ -1131,9 +1138,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.0.2.tgz", - "integrity": "sha512-pi63RoxvG4ES1KS06Zpm0MATVIXTs/TIbLbdckeLoM40u1d3mQl/+hSSrLRSxzc2OtyL8fh92sM4gkJrQXAMAw==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.1.6.tgz", + "integrity": "sha512-GT5w2mruk90V/I5g6ScuueE7fqj/d8Bui2qxdw6lFxmuTgMeol5rnzAv4uAoVQgClOUO/MULilzlODg9Ib3Y4Q==", "cpu": [ "x64" ], @@ -1146,9 +1153,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.0.2.tgz", - "integrity": "sha512-9Pv91gfYnDONgjtRm78n64b/c54+azeHtlnqBLTnIFWSMBDRl1/WDkhKWIj3fBGPLimtK7Tko3ULR3og9RRUPw==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.1.6.tgz", + "integrity": "sha512-keFD6KvwOPzmat4TCnlnuxJCQepPN+8j3Nw876FtULxo8005Y9Ghcl7ACcR8GoiKoddAq8gxNBrpjoxjQRHeAQ==", "cpu": [ "x64" ], @@ -1161,9 +1168,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.0.2.tgz", - "integrity": "sha512-Nvewe6YZaizAkGHHprbMkYqQulBjZCHKBGKeFPwoPtOA+a2Qi4pZzc/qXFyC5/2A6Z0mr2U1zg9rd04WBYMwBw==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.1.6.tgz", + "integrity": "sha512-OwertslIiGQluFvHyRDzBCIB07qJjqabAmINlXUYt7/sY7Q7QPE8xVi5beBxX/rxTGPIbtyIe3faBE6Z2KywhQ==", "cpu": [ "arm64" ], @@ -1176,9 +1183,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.0.2.tgz", - "integrity": "sha512-ZUBYGZw5G3QrqDpRq1EWi3aHmvPZM8ijK5TFL6UbH16cYQ0JpANmuG2P66KB93Qe/lWWzbeAZk/tj1XqwoCuPA==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.1.6.tgz", + "integrity": "sha512-g8zowiuP8FxUR9zslPmlju7qYbs2XBtTLVSxVikPtUDQedhcls39uKYLvOOd1JZg0ehyhopobRoH1q+MHlIN/w==", "cpu": [ "ia32" ], @@ -1191,9 +1198,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.0.2.tgz", - "integrity": "sha512-fA9uW1dm7C0mEYGcKlbmLcVm2sKcye+1kPxh2cM4jVR+kQQMtHWsjIzeSpe2grQLSDan06z4n6hbr8b1c3hA8w==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.1.6.tgz", + "integrity": "sha512-Ls2OL9hi3YlJKGNdKv8k3X/lLgc3VmLG3a/DeTkAd+lAituJp8ZHmRmm9f9SL84fT3CotlzcgbdaCDfFwFA6bA==", "cpu": [ "x64" ], @@ -1245,6 +1252,26 @@ "url": "https://github.com/sponsors/panva" } }, + "node_modules/@pkgr/utils": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", + "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "is-glob": "^4.0.3", + "open": "^8.4.0", + "picocolors": "^1.0.0", + "tiny-glob": "^0.2.9", + "tslib": "^2.4.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/@prisma/client": { "version": "4.9.0", "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.9.0.tgz", @@ -1373,9 +1400,9 @@ "dev": true }, "node_modules/@swc/helpers": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.11.tgz", - "integrity": "sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", + "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", "dependencies": { "tslib": "^2.4.0" } @@ -1392,9 +1419,9 @@ } }, "node_modules/@tailwindcss/typography": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.8.tgz", - "integrity": "sha512-xGQEp8KXN8Sd8m6R4xYmwxghmswrd0cPnNI2Lc6fmrC3OojysTBJJGSIVwPV56q4t6THFUK3HJ0EaWwpglSxWw==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.9.tgz", + "integrity": "sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==", "dependencies": { "lodash.castarray": "^4.4.0", "lodash.isplainobject": "^4.0.6", @@ -1406,20 +1433,20 @@ } }, "node_modules/@tanstack/query-core": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.19.1.tgz", - "integrity": "sha512-Zp0aIose5C8skBzqbVFGk9HJsPtUhRVDVNWIqVzFbGQQgYSeLZMd3Sdb4+EnA5wl1J7X+bre2PJGnQg9x/zHOA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.24.4.tgz", + "integrity": "sha512-9dqjv9eeB6VHN7lD3cLo16ZAjfjCsdXetSAD5+VyKqLUvcKTL0CklGQRJu+bWzdrS69R6Ea4UZo8obHYZnG6aA==", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" } }, "node_modules/@tanstack/react-query": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.19.1.tgz", - "integrity": "sha512-5dvHvmc0vrWI03AJugzvKfirxCyCLe+qawrWFCXdu8t7dklIhJ7D5ZhgTypv7mMtIpdHPcECtCiT/+V74wCn2A==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.24.4.tgz", + "integrity": "sha512-RpaS/3T/a3pHuZJbIAzAYRu+1nkp+/enr9hfRXDS/mojwx567UiMksoqW4wUFWlwIvWTXyhot2nbIipTKEg55Q==", "dependencies": { - "@tanstack/query-core": "4.19.1", + "@tanstack/query-core": "4.24.4", "use-sync-external-store": "^1.2.0" }, "funding": { @@ -1450,46 +1477,46 @@ } }, "node_modules/@trpc/client": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@trpc/client/-/client-10.5.0.tgz", - "integrity": "sha512-ULRL6YUi/4sMzZnqS3VCe/VduPZgY24wdC4canpwWZfHj+O0kHz3KR260DzEw0QrpLrOwmkIWOlQKzVBn2lLgQ==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@trpc/client/-/client-10.9.1.tgz", + "integrity": "sha512-9ma44dFU40KHIEaMdyjRJd9LloFyZZXeAbZJTi2+XK/5sj64FRqqef3fWTj2dBc7A09pk8gls4Tqa3tNC98jSg==", "peerDependencies": { - "@trpc/server": "10.5.0" + "@trpc/server": "10.9.1" } }, "node_modules/@trpc/next": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@trpc/next/-/next-10.5.0.tgz", - "integrity": "sha512-beWvrdHZTV7kx4XeLlHKB29EC6VWkkPykWN1eoPkSTeAYMqEIpl46Xgdj6UfiLmuq8yjAi888BahGNdmTMqFZQ==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@trpc/next/-/next-10.9.1.tgz", + "integrity": "sha512-4eYS+2B+TtYpymZBtyPPZG5ZWMEfKvZ1T6Q5sWGGFidBHW3FBjMiSpNmigrFfQpidiAEtygaPyBeJvM2DQtMCw==", "dependencies": { "react-ssr-prepass": "^1.5.0" }, "peerDependencies": { "@tanstack/react-query": "^4.3.8", - "@trpc/client": "10.5.0", - "@trpc/react-query": "^10.0.0-proxy-beta.21", - "@trpc/server": "10.5.0", + "@trpc/client": "10.9.1", + "@trpc/react-query": "^10.8.0", + "@trpc/server": "10.9.1", "next": "*", "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "node_modules/@trpc/react-query": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@trpc/react-query/-/react-query-10.5.0.tgz", - "integrity": "sha512-MBjgssZBy1ZRZVRE4uvnVu7AGcdOhL47Y1NIPGd5WG5ZisNrV6imf7yZ62uNDemnekwTuJT/Lad9r14swvmvzQ==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@trpc/react-query/-/react-query-10.9.1.tgz", + "integrity": "sha512-R6TvyJkvxc0i7qXNHlb+1aUnsJz5YuxhZDzDUJl9akNlvxlmZFm3R9gEMEjDAXIYAUHjbmucl9FKKN6GjCTBTA==", "peerDependencies": { "@tanstack/react-query": "^4.3.8", - "@trpc/client": "10.5.0", - "@trpc/server": "10.5.0", + "@trpc/client": "10.9.1", + "@trpc/server": "10.9.1", "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "node_modules/@trpc/server": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@trpc/server/-/server-10.5.0.tgz", - "integrity": "sha512-AJ4ckDpnN8xuqWBox68KDTFpG12ZxKkW7fi9XJ+TLtyyNyqOMVUvKH9070CdxhqBZjebTASryE+/6lntkDFQxA==" + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@trpc/server/-/server-10.9.1.tgz", + "integrity": "sha512-cUbj8KphlH0IHuoVUhkZrN1E+FdfRpagglqhblyj8VPJKkjzTjb6D8MYHlXhiX7Tdmtwy2w0ev39HBkzlM0thg==" }, "node_modules/@types/acorn": { "version": "4.0.6", @@ -1594,9 +1621,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "node_modules/@types/node": { - "version": "18.11.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.14.tgz", - "integrity": "sha512-0KXV57tENYmmJMl+FekeW9V3O/rlcqGQQJ/hNh9r8pKIj304pskWuEd8fCyNT86g/TpO0gcOTiLzsHLEURFMIQ==" + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" }, "node_modules/@types/prop-types": { "version": "15.7.5", @@ -1604,9 +1631,9 @@ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "node_modules/@types/react": { - "version": "18.0.26", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", - "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", + "version": "18.0.27", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz", + "integrity": "sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -1614,9 +1641,9 @@ } }, "node_modules/@types/react-dom": { - "version": "18.0.9", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.9.tgz", - "integrity": "sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==", + "version": "18.0.10", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz", + "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==", "dev": true, "dependencies": { "@types/react": "*" @@ -1639,15 +1666,16 @@ "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.46.1.tgz", - "integrity": "sha512-YpzNv3aayRBwjs4J3oz65eVLXc9xx0PDbIRisHj+dYhvBn02MjYOD96P8YGiWEIFBrojaUjxvkaUpakD82phsA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.50.0.tgz", + "integrity": "sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/type-utils": "5.46.1", - "@typescript-eslint/utils": "5.46.1", + "@typescript-eslint/scope-manager": "5.50.0", + "@typescript-eslint/type-utils": "5.50.0", + "@typescript-eslint/utils": "5.50.0", "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", @@ -1672,14 +1700,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.46.1.tgz", - "integrity": "sha512-RelQ5cGypPh4ySAtfIMBzBGyrNerQcmfA1oJvPj5f+H4jI59rl9xxpn4bonC0tQvUKOEN7eGBFWxFLK3Xepneg==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.50.0.tgz", + "integrity": "sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/typescript-estree": "5.46.1", + "@typescript-eslint/scope-manager": "5.50.0", + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/typescript-estree": "5.50.0", "debug": "^4.3.4" }, "engines": { @@ -1699,13 +1727,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.46.1.tgz", - "integrity": "sha512-iOChVivo4jpwUdrJZyXSMrEIM/PvsbbDOX1y3UCKjSgWn+W89skxWaYXACQfxmIGhPVpRWK/VWPYc+bad6smIA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz", + "integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/visitor-keys": "5.46.1" + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/visitor-keys": "5.50.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1716,13 +1744,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.46.1.tgz", - "integrity": "sha512-V/zMyfI+jDmL1ADxfDxjZ0EMbtiVqj8LUGPAGyBkXXStWmCUErMpW873zEHsyguWCuq2iN4BrlWUkmuVj84yng==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.50.0.tgz", + "integrity": "sha512-dcnXfZ6OGrNCO7E5UY/i0ktHb7Yx1fV6fnQGGrlnfDhilcs6n19eIRcvLBqx6OQkrPaFlDPk3OJ0WlzQfrV0bQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.46.1", - "@typescript-eslint/utils": "5.46.1", + "@typescript-eslint/typescript-estree": "5.50.0", + "@typescript-eslint/utils": "5.50.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -1743,9 +1771,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.46.1.tgz", - "integrity": "sha512-Z5pvlCaZgU+93ryiYUwGwLl9AQVB/PQ1TsJ9NZ/gHzZjN7g9IAn6RSDkpCV8hqTwAiaj6fmCcKSQeBPlIpW28w==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz", + "integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1756,13 +1784,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.46.1.tgz", - "integrity": "sha512-j9W4t67QiNp90kh5Nbr1w92wzt+toiIsaVPnEblB2Ih2U9fqBTyqV9T3pYWZBRt6QoMh/zVWP59EpuCjc4VRBg==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz", + "integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/visitor-keys": "5.46.1", + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/visitor-keys": "5.50.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1783,16 +1811,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.46.1.tgz", - "integrity": "sha512-RBdBAGv3oEpFojaCYT4Ghn4775pdjvwfDOfQ2P6qzNVgQOVrnSPe5/Pb88kv7xzYQjoio0eKHKB9GJ16ieSxvA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.50.0.tgz", + "integrity": "sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/typescript-estree": "5.46.1", + "@typescript-eslint/scope-manager": "5.50.0", + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/typescript-estree": "5.50.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -1809,12 +1837,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.1.tgz", - "integrity": "sha512-jczZ9noovXwy59KjRTk1OftT78pwygdcmCuBf8yMoWt/8O8l+6x2LSEze0E4TeepXK4MezW3zGSyoDRZK7Y9cg==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz", + "integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.46.1", + "@typescript-eslint/types": "5.50.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -2246,9 +2274,9 @@ "dev": true }, "node_modules/astring": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.3.tgz", - "integrity": "sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A==", + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.4.tgz", + "integrity": "sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw==", "bin": { "astring": "bin/astring" } @@ -2308,9 +2336,9 @@ } }, "node_modules/axios": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.1.tgz", - "integrity": "sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.1.tgz", + "integrity": "sha512-78pWJsQTceInlyaeBQeYZ/QgZeWS8hGeKiIJiDKQe3hEyBb7sEMq0K4gjx+Va6WHTYO4zI/RRl8qGRzn0YMadA==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -2677,9 +2705,9 @@ } }, "node_modules/cloudinary": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/cloudinary/-/cloudinary-1.32.0.tgz", - "integrity": "sha512-hbc5/ilOkwD49+Lucqze3z+2Tejc3YdH4tkI+y1Ciabi9Qh9MYcy4M3rYeDAYiMS/jIz5FfHOzx+JjVnPJxNAQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/cloudinary/-/cloudinary-1.33.0.tgz", + "integrity": "sha512-pdqOgd2QAMCFWujdYw1yhZ+lHPTzc6YIfg4WIvbRyoojIbSd/YgnHT8OSnk/OM4Q1WPFD5FM9EEom+4ehG80IA==", "dependencies": { "cloudinary-core": "^2.10.2", "core-js": "^3.6.5", @@ -2926,14 +2954,15 @@ "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" }, "node_modules/cuid": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.8.tgz", - "integrity": "sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cuid/-/cuid-3.0.0.tgz", + "integrity": "sha512-WZYYkHdIDnaxdeP8Misq3Lah5vFjJwGuItJuV+tvMafosMzw0nF297T7mrm8IOWiPJkV6gc7sa8pzx27+w25Zg==", + "deprecated": "Cuid and other k-sortable and non-cryptographic ids (Ulid, ObjectId, KSUID, all UUIDs) are all insecure. Use @paralleldrive/cuid2 instead." }, "node_modules/daisyui": { - "version": "2.43.2", - "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-2.43.2.tgz", - "integrity": "sha512-GLOCqzv5YUtnVhVz6HrcoZUULFk7UL/Eyr2732UG1Q2e5rz77lOzSlGKpZyzi1vrdsPgagn29vxLgx/MvaQiIA==", + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-2.50.0.tgz", + "integrity": "sha512-KiqRvqMXi9rgoH84M8D69gXPg6x+cbdiaHqm8pFHOsXXN1rTl/+OcCKkSnkEwTtIge9VJVDGU6l4B8/n+Juc5g==", "dependencies": { "color": "^4.2", "css-selector-tokenizer": "^0.8.0", @@ -2998,6 +3027,15 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "devOptional": true }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -3225,7 +3263,6 @@ "version": "5.12.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", - "peer": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -3434,13 +3471,13 @@ } }, "node_modules/eslint": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz", - "integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==", + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", + "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", @@ -3459,7 +3496,7 @@ "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", + "globals": "^13.19.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", @@ -3490,16 +3527,16 @@ } }, "node_modules/eslint-config-next": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.0.2.tgz", - "integrity": "sha512-SrrHp+zBDYLjOFZdM5b9aW/pliK687Xxfa+qpDuL08Z04ReHhmz3L+maXaAqgrEVZHQximP7nh0El4yNDJW+CA==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.1.6.tgz", + "integrity": "sha512-0cg7h5wztg/SoLAlxljZ0ZPUQ7i6QKqRiP4M2+MgTZtxWwNKb2JSwNc18nJ6/kXBI6xYvPraTbQSIhAuVw6czw==", "dev": true, "dependencies": { - "@next/eslint-plugin-next": "13.0.2", + "@next/eslint-plugin-next": "13.1.6", "@rushstack/eslint-patch": "^1.1.3", - "@typescript-eslint/parser": "^5.21.0", + "@typescript-eslint/parser": "^5.42.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^2.7.1", + "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.26.0", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.31.7", @@ -3516,13 +3553,14 @@ } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", "dev": true, "dependencies": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -3535,43 +3573,59 @@ } }, "node_modules/eslint-import-resolver-typescript": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", - "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.3.tgz", + "integrity": "sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==", "dev": true, "dependencies": { "debug": "^4.3.4", - "glob": "^7.2.0", + "enhanced-resolve": "^5.10.0", + "get-tsconfig": "^4.2.0", + "globby": "^13.1.2", + "is-core-module": "^2.10.0", "is-glob": "^4.0.3", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" + "synckit": "^0.8.4" }, "engines": { - "node": ">=4" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" }, "peerDependencies": { "eslint": "*", "eslint-plugin-import": "*" } }, - "node_modules/eslint-import-resolver-typescript/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/eslint-import-resolver-typescript/node_modules/globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" }, "engines": { - "node": "*" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-import-resolver-typescript/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint-module-utils": { @@ -3601,23 +3655,25 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dev": true, "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", "has": "^1.0.3", - "is-core-module": "^2.8.1", + "is-core-module": "^2.11.0", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", "tsconfig-paths": "^3.14.1" }, "engines": { @@ -3628,12 +3684,12 @@ } }, "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { @@ -3648,11 +3704,14 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, "node_modules/eslint-plugin-jsx-a11y": { "version": "6.6.1", @@ -3912,9 +3971,9 @@ } }, "node_modules/estree-util-build-jsx": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.0.tgz", - "integrity": "sha512-apsfRxF9uLrqosApvHVtYZjISPvTJ+lBiIydpC+9wE6cF6ssbhnjyQLqaIjgzGxvC2Hbmec1M7g91PoBayYoQQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz", + "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==", "dependencies": { "@types/estree-jsx": "^1.0.0", "estree-util-is-identifier-name": "^2.0.0", @@ -3926,9 +3985,9 @@ } }, "node_modules/estree-util-is-identifier-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.1.tgz", - "integrity": "sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", + "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -3962,9 +4021,9 @@ } }, "node_modules/estree-walker": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.1.tgz", - "integrity": "sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.2.tgz", + "integrity": "sha512-C03BvXCQIH/po+PNPONx/zSM9ziPr9weX8xNhYb/IJtdJ9z+L4z9VKPTB+UTHdmhnIopA2kc419ueyVyHVktwA==" }, "node_modules/esutils": { "version": "2.0.3", @@ -4090,9 +4149,9 @@ } }, "node_modules/final-form": { - "version": "4.20.7", - "resolved": "https://registry.npmjs.org/final-form/-/final-form-4.20.7.tgz", - "integrity": "sha512-ii3X9wNfyBYFnDPunYN5jh1/HAvtOZ9aJI/TVk0MB86hZuOeYkb+W5L3icgwW9WWNztZR6MDU3En6eoZTUoFPg==", + "version": "4.20.9", + "resolved": "https://registry.npmjs.org/final-form/-/final-form-4.20.9.tgz", + "integrity": "sha512-shA1X/7v8RmukWMNRHx0l7+Bm41hOivY78IvOiBrPVHjyWFIyqqIEMCz7yTVRc9Ea+EU4WkZ5r4MH6whSo5taw==", "dependencies": { "@babel/runtime": "^7.10.0" }, @@ -4102,11 +4161,11 @@ } }, "node_modules/final-form-arrays": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/final-form-arrays/-/final-form-arrays-3.0.2.tgz", - "integrity": "sha512-TfO8aZNz3RrsZCDx8GHMQcyztDNpGxSSi9w4wpSNKlmv2PfFWVVM8P7Yj5tj4n0OWax+x5YwTLhT5BnqSlCi+w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/final-form-arrays/-/final-form-arrays-3.1.0.tgz", + "integrity": "sha512-TWBvun+AopgBLw9zfTFHBllnKMVNEwCEyDawphPuBGGqNsuhGzhT7yewHys64KFFwzIs6KEteGLpKOwvTQEscQ==", "peerDependencies": { - "final-form": "^4.18.2" + "final-form": "^4.20.8" } }, "node_modules/find-cache-dir": { @@ -4372,6 +4431,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.3.0.tgz", + "integrity": "sha512-YCcF28IqSay3fqpIu5y3Krg/utCBHBeoflkZyHj/QcqI2nrLPC3ZegS9CmIo+hJb8K7aiGsuUl7PwWVjNG2HQQ==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/get-uri": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", @@ -4441,6 +4509,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -4461,6 +4535,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, "node_modules/google-auth-library": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.7.0.tgz", @@ -4598,9 +4678,9 @@ } }, "node_modules/hast-util-to-estree": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.1.0.tgz", - "integrity": "sha512-Vwch1etMRmm89xGgz+voWXvVHba2iiMdGMKmaMfYt35rbVtFDq8JNwwAIvi8zHMkO6Gvqo9oTMwJTmzVRfXh4g==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.2.1.tgz", + "integrity": "sha512-kiGD9WIW3gRKK8Gao3n1f+ahUeTMeJUJILnIT2QNrPigDNdH7rJxzhEbh81UajGeAdAHFecT1a+fLVOCTq9B4Q==", "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", @@ -4614,7 +4694,7 @@ "mdast-util-mdxjs-esm": "^1.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0", - "style-to-object": "^0.3.0", + "style-to-object": "^0.4.1", "unist-util-position": "^4.0.0", "zwitch": "^2.0.0" }, @@ -4624,9 +4704,9 @@ } }, "node_modules/hast-util-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", - "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", + "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -4917,6 +4997,21 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -5009,9 +5104,9 @@ } }, "node_modules/is-reference": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.0.tgz", - "integrity": "sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.1.tgz", + "integrity": "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==", "dependencies": { "@types/estree": "*" } @@ -5108,6 +5203,18 @@ "url": "https://github.com/sponsors/mesqueeb" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -5220,9 +5327,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "bin": { "json5": "lib/cli.js" }, @@ -5555,10 +5662,23 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-phrasing": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.0.tgz", + "integrity": "sha512-S+QYsDRLkGi8U7o5JF1agKa/sdP+CNGXXLqC17pdTVL8FHHgQEiwFGa9yE5aYtUxNiFGYoaDy9V1kC85Sz86Gg==", + "dependencies": { + "@types/mdast": "^3.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-to-hast": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.4.tgz", - "integrity": "sha512-a21xoxSef1l8VhHxS1Dnyioz6grrJkoaCUgGzMD/7dWHvboYX3VW53esRUfB5tgTyz4Yos1n25SPcj35dJqmAg==", + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.5.tgz", + "integrity": "sha512-EFNhT35ZR/VZ85/EedDdCNTq0oFM+NM/+qBomVGQ0+Lcg0nhI8xIwmdCzNMlVlCJNXRprpobtKP/IUh8cfz6zQ==", "dependencies": { "@types/hast": "^2.0.0", "@types/mdast": "^3.0.0", @@ -5576,13 +5696,14 @@ } }, "node_modules/mdast-util-to-markdown": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.4.0.tgz", - "integrity": "sha512-IjXARf/O8VGx/pc5SZ7syfydq1DYL9vd92orsG5U0b4GNCmAvXzu+n7sbzfIKrXwB0AVrYk3NV2kXl0AIi9LCA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", + "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", "dependencies": { "@types/mdast": "^3.0.0", "@types/unist": "^2.0.0", "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^3.0.0", "mdast-util-to-string": "^3.0.0", "micromark-util-decode-string": "^1.0.0", "unist-util-visit": "^4.0.0", @@ -6303,16 +6424,15 @@ } }, "node_modules/next": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/next/-/next-13.0.2.tgz", - "integrity": "sha512-uQ5z5e4D9mOe8+upy6bQdYYjo/kk1v3jMW87kTy2TgAyAsEO+CkwRnMgyZ4JoHEnhPZLHwh7dk0XymRNLe1gFw==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/next/-/next-13.1.6.tgz", + "integrity": "sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==", "dependencies": { - "@next/env": "13.0.2", - "@swc/helpers": "0.4.11", + "@next/env": "13.1.6", + "@swc/helpers": "0.4.14", "caniuse-lite": "^1.0.30001406", "postcss": "8.4.14", - "styled-jsx": "5.1.0", - "use-sync-external-store": "1.2.0" + "styled-jsx": "5.1.1" }, "bin": { "next": "dist/bin/next" @@ -6321,19 +6441,19 @@ "node": ">=14.6.0" }, "optionalDependencies": { - "@next/swc-android-arm-eabi": "13.0.2", - "@next/swc-android-arm64": "13.0.2", - "@next/swc-darwin-arm64": "13.0.2", - "@next/swc-darwin-x64": "13.0.2", - "@next/swc-freebsd-x64": "13.0.2", - "@next/swc-linux-arm-gnueabihf": "13.0.2", - "@next/swc-linux-arm64-gnu": "13.0.2", - "@next/swc-linux-arm64-musl": "13.0.2", - "@next/swc-linux-x64-gnu": "13.0.2", - "@next/swc-linux-x64-musl": "13.0.2", - "@next/swc-win32-arm64-msvc": "13.0.2", - "@next/swc-win32-ia32-msvc": "13.0.2", - "@next/swc-win32-x64-msvc": "13.0.2" + "@next/swc-android-arm-eabi": "13.1.6", + "@next/swc-android-arm64": "13.1.6", + "@next/swc-darwin-arm64": "13.1.6", + "@next/swc-darwin-x64": "13.1.6", + "@next/swc-freebsd-x64": "13.1.6", + "@next/swc-linux-arm-gnueabihf": "13.1.6", + "@next/swc-linux-arm64-gnu": "13.1.6", + "@next/swc-linux-arm64-musl": "13.1.6", + "@next/swc-linux-x64-gnu": "13.1.6", + "@next/swc-linux-x64-musl": "13.1.6", + "@next/swc-win32-arm64-msvc": "13.1.6", + "@next/swc-win32-ia32-msvc": "13.1.6", + "@next/swc-win32-x64-msvc": "13.1.6" }, "peerDependencies": { "fibers": ">= 3.1.0", @@ -6355,9 +6475,9 @@ } }, "node_modules/next-auth": { - "version": "4.18.6", - "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.18.6.tgz", - "integrity": "sha512-0TQwbq5X9Jyd1wUVYUoyvHJh4JWXeW9UOcMEl245Er/Y5vsSbyGJHt8M7xjRMzk9mORVMYehoMdERgyiq/jCgA==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.19.2.tgz", + "integrity": "sha512-6V2YG3IJQVhgCAH7mvT3yopTW92gMdUrcwGX7NQ0dCreT/+axGua/JmVdarjec0C/oJukKpIYRgjMlV+L5ZQOQ==", "dependencies": { "@babel/runtime": "^7.16.3", "@panva/hkdf": "^1.0.1", @@ -6369,9 +6489,6 @@ "preact-render-to-string": "^5.1.19", "uuid": "^8.3.2" }, - "engines": { - "node": "^12.19.0 || ^14.15.0 || ^16.13.0 || ^18.12.0" - }, "peerDependencies": { "next": "^12.2.5 || ^13", "nodemailer": "^6.6.5", @@ -6385,12 +6502,12 @@ } }, "node_modules/next-mdx-remote": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/next-mdx-remote/-/next-mdx-remote-4.2.0.tgz", - "integrity": "sha512-X5RhD7f7b78pH2abbuusObSGgII5l54OdusS/2iXljN7WN1cel6ToLlZeCZcyxx9cR4wmBGQYGongIttDYNmAA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/next-mdx-remote/-/next-mdx-remote-4.3.0.tgz", + "integrity": "sha512-fbxkY03pM2Wx5bDNTVKpYD5Hx3QVZGH+6xDtVIxlxXz4HTifP1yI2DrkDvxXbTz0SYGIbluRMIW81IOOa8pigA==", "dependencies": { - "@mdx-js/mdx": "^2.0.0", - "@mdx-js/react": "^2.0.0", + "@mdx-js/mdx": "^2.2.1", + "@mdx-js/react": "^2.2.1", "vfile": "^5.3.0", "vfile-matter": "^3.0.1" }, @@ -6645,6 +6762,23 @@ "wrappy": "1" } }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/openid-client": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.3.1.tgz", @@ -6919,9 +7053,9 @@ } }, "node_modules/postcss": { - "version": "8.4.20", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", - "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", "funding": [ { "type": "opencollective", @@ -7068,9 +7202,9 @@ } }, "node_modules/prettier": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", - "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", + "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -7083,15 +7217,73 @@ } }, "node_modules/prettier-plugin-tailwindcss": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.1.13.tgz", - "integrity": "sha512-/EKQURUrxLu66CMUg4+1LwGdxnz8of7IDvrSLqEtDqhLH61SAlNNUSr90UTvZaemujgl3OH/VHg+fyGltrNixw==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.2.2.tgz", + "integrity": "sha512-5RjUbWRe305pUpc48MosoIp6uxZvZxrM6GyOgsbGLTce+ehePKNm7ziW2dLG2air9aXbGuXlHVSQQw4Lbosq3w==", "dev": true, "engines": { "node": ">=12.17.0" }, "peerDependencies": { - "prettier": ">=2.2.0" + "@prettier/plugin-php": "*", + "@prettier/plugin-pug": "*", + "@shopify/prettier-plugin-liquid": "*", + "@shufo/prettier-plugin-blade": "*", + "@trivago/prettier-plugin-sort-imports": "*", + "prettier": ">=2.2.0", + "prettier-plugin-astro": "*", + "prettier-plugin-css-order": "*", + "prettier-plugin-import-sort": "*", + "prettier-plugin-jsdoc": "*", + "prettier-plugin-organize-attributes": "*", + "prettier-plugin-organize-imports": "*", + "prettier-plugin-style-order": "*", + "prettier-plugin-svelte": "*", + "prettier-plugin-twig-melody": "*" + }, + "peerDependenciesMeta": { + "@prettier/plugin-php": { + "optional": true + }, + "@prettier/plugin-pug": { + "optional": true + }, + "@shopify/prettier-plugin-liquid": { + "optional": true + }, + "@shufo/prettier-plugin-blade": { + "optional": true + }, + "@trivago/prettier-plugin-sort-imports": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + }, + "prettier-plugin-css-order": { + "optional": true + }, + "prettier-plugin-import-sort": { + "optional": true + }, + "prettier-plugin-jsdoc": { + "optional": true + }, + "prettier-plugin-organize-attributes": { + "optional": true + }, + "prettier-plugin-organize-imports": { + "optional": true + }, + "prettier-plugin-style-order": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + }, + "prettier-plugin-twig-melody": { + "optional": true + } } }, "node_modules/pretty-format": { @@ -7349,6 +7541,18 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-toastify": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.1.1.tgz", + "integrity": "sha512-pkFCla1z3ve045qvjEmn2xOJOy4ZciwRXm1oMPULVkELi5aJdHCN/FHnuqXq8IwGDLB7PPk2/J6uP9D8ejuiRw==", + "dependencies": { + "clsx": "^1.1.1" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -7416,9 +7620,9 @@ } }, "node_modules/remark-mdx": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.1.5.tgz", - "integrity": "sha512-A8vw5s+BgOa968Irt8BO7DfWJTE0Fe7Ge3hX8zzDB1DnwMZTNdK6qF2IcFao+/7nzk1vSysKcFp+3ku4vhMpaQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.2.1.tgz", + "integrity": "sha512-R9wcN+/THRXTKyRBp6Npo/mcbGA2iT3N4G8qUqLA5pOEg7kBidHv8K2hHidCMYZ6DXmwK18umu0K4cicgA2PPQ==", "dependencies": { "mdast-util-mdx": "^2.0.0", "micromark-extension-mdxjs": "^1.0.0" @@ -7963,17 +8167,17 @@ "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==" }, "node_modules/style-to-object": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", - "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.1.tgz", + "integrity": "sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==", "dependencies": { "inline-style-parser": "0.1.1" } }, "node_modules/styled-jsx": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.0.tgz", - "integrity": "sha512-/iHaRJt9U7T+5tp6TRelLnqBqiaIT0HsO0+vgyj8hK2KUk7aejFqRrumqPUlAqDwAj8IbS/1hk3IhBAAK/FCUQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", "dependencies": { "client-only": "0.0.1" }, @@ -7993,9 +8197,9 @@ } }, "node_modules/superjson": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/superjson/-/superjson-1.9.1.tgz", - "integrity": "sha512-oT3HA2nPKlU1+5taFgz/HDy+GEaY+CWEbLzaRJVD4gZ7zMVVC4GDNFdgvAZt6/VuIk6D2R7RtPAiCHwmdzlMmg==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-1.12.2.tgz", + "integrity": "sha512-ugvUo9/WmvWOjstornQhsN/sR9mnGtWGYeTxFuqLb4AiT4QdUavjGFRALCPKWWnAiUJ4HTpytj5e0t5HoMRkXg==", "dependencies": { "copy-anything": "^3.0.2" }, @@ -8026,6 +8230,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/synckit": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz", + "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/tailwindcss": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz", @@ -8078,7 +8298,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "peer": true, "engines": { "node": ">=6" } @@ -8224,6 +8443,16 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -8288,9 +8517,9 @@ } }, "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "dependencies": { "minimist": "^1.2.0" @@ -8355,9 +8584,9 @@ "integrity": "sha512-rObfoGpDlmWUhmggpWd2I/4xLsdGPDvfvrLpLxV4pBTBL2BBjm+7x7IOmTwJRV6Qe4UAkWdHq0ZYoTYAAPE5YA==" }, "node_modules/typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -8413,9 +8642,9 @@ } }, "node_modules/unist-util-generated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", - "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", + "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -8925,6 +9154,29 @@ "url": "https://github.com/sponsors/colinhacks" } }, + "node_modules/zustand": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.3.2.tgz", + "integrity": "sha512-rd4haDmlwMTVWVqwvgy00ny8rtti/klRoZjFbL/MAcDnmD5qSw/RZc+Vddstdv90M5Lv6RPgWvm1Hivyn0QgJw==", + "dependencies": { + "use-sync-external-store": "1.2.0" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "immer": ">=9.0", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", @@ -9306,15 +9558,22 @@ } }, "@editorjs/editorjs": { - "version": "2.26.3", - "resolved": "https://registry.npmjs.org/@editorjs/editorjs/-/editorjs-2.26.3.tgz", - "integrity": "sha512-ztR+fwXagfAnlc86A3p8K0bI/XQTvnGjmKY0P+c18aUB4OW3BjkX6OAPb4PH/Ym8G16fBKtJG//sITck6CD1lA==", + "version": "2.26.5", + "resolved": "https://registry.npmjs.org/@editorjs/editorjs/-/editorjs-2.26.5.tgz", + "integrity": "sha512-imwXZi9NmzxKjNosa1xQf286liJYsTe2J2DWCiV5TwKhvYZ1INg5Y+FietcM2v65QmeLqP7wgBUhoI7wiCB+yQ==", "requires": { - "@codexteam/icons": "^0.0.4", + "@codexteam/icons": "0.1.0", "codex-notifier": "^1.1.2", "codex-tooltip": "^1.0.5", "html-janitor": "^2.0.4", "nanoid": "^3.1.22" + }, + "dependencies": { + "@codexteam/icons": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@codexteam/icons/-/icons-0.1.0.tgz", + "integrity": "sha512-jW1fWnwtWzcP4FBGsaodbJY3s1ZaRU+IJy1pvJ7ygNQxkQinybJcwXoyt0a5mWwu/4w30A42EWhCrZn8lp4fdw==" + } } }, "@editorjs/embed": { @@ -9338,9 +9597,9 @@ } }, "@editorjs/image": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@editorjs/image/-/image-2.7.1.tgz", - "integrity": "sha512-ANZ6s25AsTV9ZepZ8NaXviustPmtG2MlZg+V1mdfKkvCiHm515+xHqNXJYH0nA/Z6XqLjD7FV/N+nkVGRXVTHg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@editorjs/image/-/image-2.8.1.tgz", + "integrity": "sha512-4WscDAoi6OO0F6L7N1mkQymADwj8hHgH/ICk5wGRPdkesUZW1TgldX8XvSmy+f5VylsEi3F/gUggaZsrYxu2sA==", "requires": { "@codexteam/icons": "^0.0.6" }, @@ -9414,9 +9673,9 @@ } }, "@editorjs/table": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@editorjs/table/-/table-2.1.2.tgz", - "integrity": "sha512-0v29DU/HzjCOjkFxy8pjAhceWvCuaj70aS+i0YD1Wv7AvkMP66E4NW1lGFEv2eMaYCc5SL+/T1UJqhyd8H9uvg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@editorjs/table/-/table-2.2.0.tgz", + "integrity": "sha512-vVfiNEk1EHFj1ohObX4g7iB/mVhPkx0o8yMb+v5gV/XnOysbRk46hiLmntJfgYp/NZvbYxcZk3mPvrE/NAe+pg==", "requires": { "@codexteam/icons": "^0.0.6" }, @@ -9429,15 +9688,15 @@ } }, "@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", - "globals": "^13.15.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -9495,9 +9754,9 @@ "integrity": "sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==" }, "@google-cloud/storage": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-6.8.0.tgz", - "integrity": "sha512-eRGsHrhVA7NORehYW9jLUWHRzYqFxbYiG3LQL50ZhjMekDwzhPKUQ7wbjAji9OFcO3Mk8jeNHeWdpAc/QZANCg==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-6.9.1.tgz", + "integrity": "sha512-mhbRfrDgV7qM8HGn12p3dpT87Azt94s9YRzr8qR+o/ptksAkCApspzlNS2mUEeoXUMmnpwcdF2GGNpd4+6NuVw==", "requires": { "@google-cloud/paginator": "^3.0.7", "@google-cloud/projectify": "^3.0.0", @@ -9540,23 +9799,23 @@ } }, "@headlessui/react": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.5.tgz", - "integrity": "sha512-UZSxOfA0CYKO7QDT5OGlFvesvlR1SKkawwSjwQJwt7XQItpzRKdE3ZUQxHcg4LEz3C0Wler2s9psdb872ynwrQ==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.8.tgz", + "integrity": "sha512-zcwb0kd7L05hxmoAMIioEaOn235Dg0fUO+iGbLPgLVSjzl/l39V6DTpC2Df49PE5aG5/f5q0PZ9ZHZ78ENNV+A==", "requires": { "client-only": "^0.0.1" } }, "@heroicons/react": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.13.tgz", - "integrity": "sha512-iSN5XwmagrnirWlYEWNPdCDj9aRYVD/lnK3JlsC9/+fqGF80k8C7rl+1HCvBX0dBoagKqOFBs6fMhJJ1hOg1EQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.0.14.tgz", + "integrity": "sha512-eFL4if6L7woL1fUvk/jjXx4z9NxVESHHrQnEd2qKVelTFTIr/3VLGWdPb0biia9ZVe26P0JSs/xmOlRNur3SrQ==", "requires": {} }, "@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -9633,9 +9892,9 @@ } }, "@mdx-js/mdx": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.1.5.tgz", - "integrity": "sha512-zEG0lt+Bl/r5U6e0TOS7qDbsXICtemfAPquxWFsMbdzrvlWaqMGemLl+sjVpqlyaaiCiGVQBSGdCk0t1qXjkQg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.2.1.tgz", + "integrity": "sha512-hZ3ex7exYLJn6FfReq8yTvA6TE53uW9UHJQM9IlSauOuS55J9y8RtA7W+dzp6Yrzr00/U1sd7q+Wf61q6SfiTQ==", "requires": { "@types/estree-jsx": "^1.0.0", "@types/mdx": "^2.0.0", @@ -9657,9 +9916,9 @@ } }, "@mdx-js/react": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.1.5.tgz", - "integrity": "sha512-3Az1I6SAWA9R38rYjz5rXBrGKeZhq96CSSyQtqY+maPj8stBsoUH5pNcmIixuGkufYsh8F5+ka2CVPo2fycWZw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.2.1.tgz", + "integrity": "sha512-YdXcMcEnqZhzql98RNrqYo9cEhTTesBiCclEtoiQUbJwx87q9453GTapYU6kJ8ZZ2ek1Vp25SiAXEFy5O/eAPw==", "requires": { "@types/mdx": "^2.0.0", "@types/react": ">=16" @@ -9672,95 +9931,95 @@ "requires": {} }, "@next/env": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.0.2.tgz", - "integrity": "sha512-Qb6WPuRriGIQ19qd6NBxpcrFOfj8ziN7l9eZUfwff5gl4zLXluqtuZPddYZM/oWjN53ZYcuRXzL+oowKyJeYtA==" + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/env/-/env-13.1.6.tgz", + "integrity": "sha512-s+W9Fdqh5MFk6ECrbnVmmAOwxKQuhGMT7xXHrkYIBMBcTiOqNWhv5KbJIboKR5STXxNXl32hllnvKaffzFaWQg==" }, "@next/eslint-plugin-next": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.0.2.tgz", - "integrity": "sha512-W+fIIIaFU7Kct7Okx91C7XDRGolv/w2RUenX2yZFeeNVcuVzDIKUcNmckrYbYcwrNQUSXmtwrs3g8xwast0YtA==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.1.6.tgz", + "integrity": "sha512-o7cauUYsXjzSJkay8wKjpKJf2uLzlggCsGUkPu3lP09Pv97jYlekTC20KJrjQKmSv5DXV0R/uks2ZXhqjNkqAw==", "dev": true, "requires": { "glob": "7.1.7" } }, "@next/swc-android-arm-eabi": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.0.2.tgz", - "integrity": "sha512-X54UQCTFyOGnJP//Z71dPPlp4BCYcQL2ncikKXQcPzVpqPs4C3m+tKC8ivBNH6edAXkppwsLRz1/yQwgSZ9Swg==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.1.6.tgz", + "integrity": "sha512-F3/6Z8LH/pGlPzR1AcjPFxx35mPqjE5xZcf+IL+KgbW9tMkp7CYi1y7qKrEWU7W4AumxX/8OINnDQWLiwLasLQ==", "optional": true }, "@next/swc-android-arm64": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.0.2.tgz", - "integrity": "sha512-1P00Kv8uKaLubqo7JzPrTqgFAzSOmfb8iwqJrOb9in5IvTRtNGlkR4hU0sXzqbQNM/+SaYxze6Z5ry1IDyb/cQ==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.1.6.tgz", + "integrity": "sha512-cMwQjnB8vrYkWyK/H0Rf2c2pKIH4RGjpKUDvbjVAit6SbwPDpmaijLio0LWFV3/tOnY6kvzbL62lndVA0mkYpw==", "optional": true }, "@next/swc-darwin-arm64": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.0.2.tgz", - "integrity": "sha512-1zGIOkInkOLRv0QQGZ+3wffYsyKI4vIy62LYTvDWUn7TAYqnmXwougp9NSLqDeagLwgsv2URrykyAFixA/YqxA==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.1.6.tgz", + "integrity": "sha512-KKRQH4DDE4kONXCvFMNBZGDb499Hs+xcFAwvj+rfSUssIDrZOlyfJNy55rH5t2Qxed1e4K80KEJgsxKQN1/fyw==", "optional": true }, "@next/swc-darwin-x64": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.0.2.tgz", - "integrity": "sha512-ECDAjoMP1Y90cARaelS6X+k6BQx+MikAYJ8f/eaJrLur44NIOYc9HA/dgcTp5jenguY4yT8V+HCquLjAVle6fA==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.1.6.tgz", + "integrity": "sha512-/uOky5PaZDoaU99ohjtNcDTJ6ks/gZ5ykTQDvNZDjIoCxFe3+t06bxsTPY6tAO6uEAw5f6vVFX5H5KLwhrkZCA==", "optional": true }, "@next/swc-freebsd-x64": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.0.2.tgz", - "integrity": "sha512-2DcL/ofQdBnQX3IoI9sjlIAyLCD1oZoUBuhrhWbejvBQjutWrI0JTEv9uG69WcxWhVMm3BCsjv8GK2/68OKp7A==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.1.6.tgz", + "integrity": "sha512-qaEALZeV7to6weSXk3Br80wtFQ7cFTpos/q+m9XVRFggu+8Ib895XhMWdJBzew6aaOcMvYR6KQ6JmHA2/eMzWw==", "optional": true }, "@next/swc-linux-arm-gnueabihf": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.0.2.tgz", - "integrity": "sha512-Y3OQF1CSBSWW2vGkmvOIuOUNqOq8qX7f1ZpcKUVWP3/Uq++DZmVi9d18lgnSe1I3QFqc+nXWyun9ljsN83j0sw==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.1.6.tgz", + "integrity": "sha512-OybkbC58A1wJ+JrJSOjGDvZzrVEQA4sprJejGqMwiZyLqhr9Eo8FXF0y6HL+m1CPCpPhXEHz/2xKoYsl16kNqw==", "optional": true }, "@next/swc-linux-arm64-gnu": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.0.2.tgz", - "integrity": "sha512-mNyzwsFF6kwZYEjnGicx9ksDZYEZvyzEc1BtCu8vdZi/v8UeixQwCiAT6FyYX9uxMPEkzk8qiU0t0u9gvltsKw==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.1.6.tgz", + "integrity": "sha512-yCH+yDr7/4FDuWv6+GiYrPI9kcTAO3y48UmaIbrKy8ZJpi7RehJe3vIBRUmLrLaNDH3rY1rwoHi471NvR5J5NQ==", "optional": true }, "@next/swc-linux-arm64-musl": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.0.2.tgz", - "integrity": "sha512-M6SdYjWgRrY3tJBxz0663zCRPTu5BRONmxlftKWWHv9LjAJ59neTLaGj4rp0A08DkJglZIoCkLOzLrzST6TGag==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.1.6.tgz", + "integrity": "sha512-ECagB8LGX25P9Mrmlc7Q/TQBb9rGScxHbv/kLqqIWs2fIXy6Y/EiBBiM72NTwuXUFCNrWR4sjUPSooVBJJ3ESQ==", "optional": true }, "@next/swc-linux-x64-gnu": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.0.2.tgz", - "integrity": "sha512-pi63RoxvG4ES1KS06Zpm0MATVIXTs/TIbLbdckeLoM40u1d3mQl/+hSSrLRSxzc2OtyL8fh92sM4gkJrQXAMAw==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.1.6.tgz", + "integrity": "sha512-GT5w2mruk90V/I5g6ScuueE7fqj/d8Bui2qxdw6lFxmuTgMeol5rnzAv4uAoVQgClOUO/MULilzlODg9Ib3Y4Q==", "optional": true }, "@next/swc-linux-x64-musl": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.0.2.tgz", - "integrity": "sha512-9Pv91gfYnDONgjtRm78n64b/c54+azeHtlnqBLTnIFWSMBDRl1/WDkhKWIj3fBGPLimtK7Tko3ULR3og9RRUPw==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.1.6.tgz", + "integrity": "sha512-keFD6KvwOPzmat4TCnlnuxJCQepPN+8j3Nw876FtULxo8005Y9Ghcl7ACcR8GoiKoddAq8gxNBrpjoxjQRHeAQ==", "optional": true }, "@next/swc-win32-arm64-msvc": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.0.2.tgz", - "integrity": "sha512-Nvewe6YZaizAkGHHprbMkYqQulBjZCHKBGKeFPwoPtOA+a2Qi4pZzc/qXFyC5/2A6Z0mr2U1zg9rd04WBYMwBw==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.1.6.tgz", + "integrity": "sha512-OwertslIiGQluFvHyRDzBCIB07qJjqabAmINlXUYt7/sY7Q7QPE8xVi5beBxX/rxTGPIbtyIe3faBE6Z2KywhQ==", "optional": true }, "@next/swc-win32-ia32-msvc": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.0.2.tgz", - "integrity": "sha512-ZUBYGZw5G3QrqDpRq1EWi3aHmvPZM8ijK5TFL6UbH16cYQ0JpANmuG2P66KB93Qe/lWWzbeAZk/tj1XqwoCuPA==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.1.6.tgz", + "integrity": "sha512-g8zowiuP8FxUR9zslPmlju7qYbs2XBtTLVSxVikPtUDQedhcls39uKYLvOOd1JZg0ehyhopobRoH1q+MHlIN/w==", "optional": true }, "@next/swc-win32-x64-msvc": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.0.2.tgz", - "integrity": "sha512-fA9uW1dm7C0mEYGcKlbmLcVm2sKcye+1kPxh2cM4jVR+kQQMtHWsjIzeSpe2grQLSDan06z4n6hbr8b1c3hA8w==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.1.6.tgz", + "integrity": "sha512-Ls2OL9hi3YlJKGNdKv8k3X/lLgc3VmLG3a/DeTkAd+lAituJp8ZHmRmm9f9SL84fT3CotlzcgbdaCDfFwFA6bA==", "optional": true }, "@nodelib/fs.scandir": { @@ -9791,6 +10050,20 @@ "resolved": "https://registry.npmjs.org/@panva/hkdf/-/hkdf-1.0.2.tgz", "integrity": "sha512-MSAs9t3Go7GUkMhpKC44T58DJ5KGk2vBo+h1cqQeqlMfdGkxaVB78ZWpv9gYi/g2fa4sopag9gJsNvS8XGgWJA==" }, + "@pkgr/utils": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", + "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "is-glob": "^4.0.3", + "open": "^8.4.0", + "picocolors": "^1.0.0", + "tiny-glob": "^0.2.9", + "tslib": "^2.4.0" + } + }, "@prisma/client": { "version": "4.9.0", "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.9.0.tgz", @@ -9893,9 +10166,9 @@ "dev": true }, "@swc/helpers": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.11.tgz", - "integrity": "sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", + "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", "requires": { "tslib": "^2.4.0" } @@ -9909,9 +10182,9 @@ } }, "@tailwindcss/typography": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.8.tgz", - "integrity": "sha512-xGQEp8KXN8Sd8m6R4xYmwxghmswrd0cPnNI2Lc6fmrC3OojysTBJJGSIVwPV56q4t6THFUK3HJ0EaWwpglSxWw==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.9.tgz", + "integrity": "sha512-t8Sg3DyynFysV9f4JDOVISGsjazNb48AeIYQwcL+Bsq5uf4RYL75C1giZ43KISjeDGBaTN3Kxh7Xj/vRSMJUUg==", "requires": { "lodash.castarray": "^4.4.0", "lodash.isplainobject": "^4.0.6", @@ -9920,16 +10193,16 @@ } }, "@tanstack/query-core": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.19.1.tgz", - "integrity": "sha512-Zp0aIose5C8skBzqbVFGk9HJsPtUhRVDVNWIqVzFbGQQgYSeLZMd3Sdb4+EnA5wl1J7X+bre2PJGnQg9x/zHOA==" + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.24.4.tgz", + "integrity": "sha512-9dqjv9eeB6VHN7lD3cLo16ZAjfjCsdXetSAD5+VyKqLUvcKTL0CklGQRJu+bWzdrS69R6Ea4UZo8obHYZnG6aA==" }, "@tanstack/react-query": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.19.1.tgz", - "integrity": "sha512-5dvHvmc0vrWI03AJugzvKfirxCyCLe+qawrWFCXdu8t7dklIhJ7D5ZhgTypv7mMtIpdHPcECtCiT/+V74wCn2A==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.24.4.tgz", + "integrity": "sha512-RpaS/3T/a3pHuZJbIAzAYRu+1nkp+/enr9hfRXDS/mojwx567UiMksoqW4wUFWlwIvWTXyhot2nbIipTKEg55Q==", "requires": { - "@tanstack/query-core": "4.19.1", + "@tanstack/query-core": "4.24.4", "use-sync-external-store": "^1.2.0" } }, @@ -9940,29 +10213,29 @@ "optional": true }, "@trpc/client": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@trpc/client/-/client-10.5.0.tgz", - "integrity": "sha512-ULRL6YUi/4sMzZnqS3VCe/VduPZgY24wdC4canpwWZfHj+O0kHz3KR260DzEw0QrpLrOwmkIWOlQKzVBn2lLgQ==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@trpc/client/-/client-10.9.1.tgz", + "integrity": "sha512-9ma44dFU40KHIEaMdyjRJd9LloFyZZXeAbZJTi2+XK/5sj64FRqqef3fWTj2dBc7A09pk8gls4Tqa3tNC98jSg==", "requires": {} }, "@trpc/next": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@trpc/next/-/next-10.5.0.tgz", - "integrity": "sha512-beWvrdHZTV7kx4XeLlHKB29EC6VWkkPykWN1eoPkSTeAYMqEIpl46Xgdj6UfiLmuq8yjAi888BahGNdmTMqFZQ==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@trpc/next/-/next-10.9.1.tgz", + "integrity": "sha512-4eYS+2B+TtYpymZBtyPPZG5ZWMEfKvZ1T6Q5sWGGFidBHW3FBjMiSpNmigrFfQpidiAEtygaPyBeJvM2DQtMCw==", "requires": { "react-ssr-prepass": "^1.5.0" } }, "@trpc/react-query": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@trpc/react-query/-/react-query-10.5.0.tgz", - "integrity": "sha512-MBjgssZBy1ZRZVRE4uvnVu7AGcdOhL47Y1NIPGd5WG5ZisNrV6imf7yZ62uNDemnekwTuJT/Lad9r14swvmvzQ==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@trpc/react-query/-/react-query-10.9.1.tgz", + "integrity": "sha512-R6TvyJkvxc0i7qXNHlb+1aUnsJz5YuxhZDzDUJl9akNlvxlmZFm3R9gEMEjDAXIYAUHjbmucl9FKKN6GjCTBTA==", "requires": {} }, "@trpc/server": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@trpc/server/-/server-10.5.0.tgz", - "integrity": "sha512-AJ4ckDpnN8xuqWBox68KDTFpG12ZxKkW7fi9XJ+TLtyyNyqOMVUvKH9070CdxhqBZjebTASryE+/6lntkDFQxA==" + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/@trpc/server/-/server-10.9.1.tgz", + "integrity": "sha512-cUbj8KphlH0IHuoVUhkZrN1E+FdfRpagglqhblyj8VPJKkjzTjb6D8MYHlXhiX7Tdmtwy2w0ev39HBkzlM0thg==" }, "@types/acorn": { "version": "4.0.6", @@ -10067,9 +10340,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "@types/node": { - "version": "18.11.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.14.tgz", - "integrity": "sha512-0KXV57tENYmmJMl+FekeW9V3O/rlcqGQQJ/hNh9r8pKIj304pskWuEd8fCyNT86g/TpO0gcOTiLzsHLEURFMIQ==" + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" }, "@types/prop-types": { "version": "15.7.5", @@ -10077,9 +10350,9 @@ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, "@types/react": { - "version": "18.0.26", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz", - "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==", + "version": "18.0.27", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.27.tgz", + "integrity": "sha512-3vtRKHgVxu3Jp9t718R9BuzoD4NcQ8YJ5XRzsSKxNDiDonD2MXIT1TmSkenxuCycZJoQT5d2vE8LwWJxBC1gmA==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -10087,9 +10360,9 @@ } }, "@types/react-dom": { - "version": "18.0.9", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.9.tgz", - "integrity": "sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==", + "version": "18.0.10", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz", + "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==", "dev": true, "requires": { "@types/react": "*" @@ -10112,15 +10385,16 @@ "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" }, "@typescript-eslint/eslint-plugin": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.46.1.tgz", - "integrity": "sha512-YpzNv3aayRBwjs4J3oz65eVLXc9xx0PDbIRisHj+dYhvBn02MjYOD96P8YGiWEIFBrojaUjxvkaUpakD82phsA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.50.0.tgz", + "integrity": "sha512-vwksQWSFZiUhgq3Kv7o1Jcj0DUNylwnIlGvKvLLYsq8pAWha6/WCnXUeaSoNNha/K7QSf2+jvmkxggC1u3pIwQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/type-utils": "5.46.1", - "@typescript-eslint/utils": "5.46.1", + "@typescript-eslint/scope-manager": "5.50.0", + "@typescript-eslint/type-utils": "5.50.0", + "@typescript-eslint/utils": "5.50.0", "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", "regexpp": "^3.2.0", @@ -10129,53 +10403,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.46.1.tgz", - "integrity": "sha512-RelQ5cGypPh4ySAtfIMBzBGyrNerQcmfA1oJvPj5f+H4jI59rl9xxpn4bonC0tQvUKOEN7eGBFWxFLK3Xepneg==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.50.0.tgz", + "integrity": "sha512-KCcSyNaogUDftK2G9RXfQyOCt51uB5yqC6pkUYqhYh8Kgt+DwR5M0EwEAxGPy/+DH6hnmKeGsNhiZRQxjH71uQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/typescript-estree": "5.46.1", + "@typescript-eslint/scope-manager": "5.50.0", + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/typescript-estree": "5.50.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.46.1.tgz", - "integrity": "sha512-iOChVivo4jpwUdrJZyXSMrEIM/PvsbbDOX1y3UCKjSgWn+W89skxWaYXACQfxmIGhPVpRWK/VWPYc+bad6smIA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.50.0.tgz", + "integrity": "sha512-rt03kaX+iZrhssaT974BCmoUikYtZI24Vp/kwTSy841XhiYShlqoshRFDvN1FKKvU2S3gK+kcBW1EA7kNUrogg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/visitor-keys": "5.46.1" + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/visitor-keys": "5.50.0" } }, "@typescript-eslint/type-utils": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.46.1.tgz", - "integrity": "sha512-V/zMyfI+jDmL1ADxfDxjZ0EMbtiVqj8LUGPAGyBkXXStWmCUErMpW873zEHsyguWCuq2iN4BrlWUkmuVj84yng==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.50.0.tgz", + "integrity": "sha512-dcnXfZ6OGrNCO7E5UY/i0ktHb7Yx1fV6fnQGGrlnfDhilcs6n19eIRcvLBqx6OQkrPaFlDPk3OJ0WlzQfrV0bQ==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.46.1", - "@typescript-eslint/utils": "5.46.1", + "@typescript-eslint/typescript-estree": "5.50.0", + "@typescript-eslint/utils": "5.50.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.46.1.tgz", - "integrity": "sha512-Z5pvlCaZgU+93ryiYUwGwLl9AQVB/PQ1TsJ9NZ/gHzZjN7g9IAn6RSDkpCV8hqTwAiaj6fmCcKSQeBPlIpW28w==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.50.0.tgz", + "integrity": "sha512-atruOuJpir4OtyNdKahiHZobPKFvZnBnfDiyEaBf6d9vy9visE7gDjlmhl+y29uxZ2ZDgvXijcungGFjGGex7w==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.46.1.tgz", - "integrity": "sha512-j9W4t67QiNp90kh5Nbr1w92wzt+toiIsaVPnEblB2Ih2U9fqBTyqV9T3pYWZBRt6QoMh/zVWP59EpuCjc4VRBg==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.50.0.tgz", + "integrity": "sha512-Gq4zapso+OtIZlv8YNAStFtT6d05zyVCK7Fx3h5inlLBx2hWuc/0465C2mg/EQDDU2LKe52+/jN4f0g9bd+kow==", "dev": true, "requires": { - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/visitor-keys": "5.46.1", + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/visitor-keys": "5.50.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -10184,28 +10458,28 @@ } }, "@typescript-eslint/utils": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.46.1.tgz", - "integrity": "sha512-RBdBAGv3oEpFojaCYT4Ghn4775pdjvwfDOfQ2P6qzNVgQOVrnSPe5/Pb88kv7xzYQjoio0eKHKB9GJ16ieSxvA==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.50.0.tgz", + "integrity": "sha512-v/AnUFImmh8G4PH0NDkf6wA8hujNNcrwtecqW4vtQ1UOSNBaZl49zP1SHoZ/06e+UiwzHpgb5zP5+hwlYYWYAw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/typescript-estree": "5.46.1", + "@typescript-eslint/scope-manager": "5.50.0", + "@typescript-eslint/types": "5.50.0", + "@typescript-eslint/typescript-estree": "5.50.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.1.tgz", - "integrity": "sha512-jczZ9noovXwy59KjRTk1OftT78pwygdcmCuBf8yMoWt/8O8l+6x2LSEze0E4TeepXK4MezW3zGSyoDRZK7Y9cg==", + "version": "5.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.50.0.tgz", + "integrity": "sha512-cdMeD9HGu6EXIeGOh2yVW6oGf9wq8asBgZx7nsR/D36gTfQ0odE5kcRYe5M81vjEFAcPeugXrHg78Imu55F6gg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.46.1", + "@typescript-eslint/types": "5.50.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -10559,9 +10833,9 @@ "dev": true }, "astring": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.3.tgz", - "integrity": "sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A==" + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.4.tgz", + "integrity": "sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw==" }, "async-retry": { "version": "1.3.3", @@ -10596,9 +10870,9 @@ "dev": true }, "axios": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.1.tgz", - "integrity": "sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.1.tgz", + "integrity": "sha512-78pWJsQTceInlyaeBQeYZ/QgZeWS8hGeKiIJiDKQe3hEyBb7sEMq0K4gjx+Va6WHTYO4zI/RRl8qGRzn0YMadA==", "requires": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -10842,9 +11116,9 @@ } }, "cloudinary": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/cloudinary/-/cloudinary-1.32.0.tgz", - "integrity": "sha512-hbc5/ilOkwD49+Lucqze3z+2Tejc3YdH4tkI+y1Ciabi9Qh9MYcy4M3rYeDAYiMS/jIz5FfHOzx+JjVnPJxNAQ==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/cloudinary/-/cloudinary-1.33.0.tgz", + "integrity": "sha512-pdqOgd2QAMCFWujdYw1yhZ+lHPTzc6YIfg4WIvbRyoojIbSd/YgnHT8OSnk/OM4Q1WPFD5FM9EEom+4ehG80IA==", "requires": { "cloudinary-core": "^2.10.2", "core-js": "^3.6.5", @@ -11028,14 +11302,14 @@ "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" }, "cuid": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.8.tgz", - "integrity": "sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cuid/-/cuid-3.0.0.tgz", + "integrity": "sha512-WZYYkHdIDnaxdeP8Misq3Lah5vFjJwGuItJuV+tvMafosMzw0nF297T7mrm8IOWiPJkV6gc7sa8pzx27+w25Zg==" }, "daisyui": { - "version": "2.43.2", - "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-2.43.2.tgz", - "integrity": "sha512-GLOCqzv5YUtnVhVz6HrcoZUULFk7UL/Eyr2732UG1Q2e5rz77lOzSlGKpZyzi1vrdsPgagn29vxLgx/MvaQiIA==", + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-2.50.0.tgz", + "integrity": "sha512-KiqRvqMXi9rgoH84M8D69gXPg6x+cbdiaHqm8pFHOsXXN1rTl/+OcCKkSnkEwTtIge9VJVDGU6l4B8/n+Juc5g==", "requires": { "color": "^4.2", "css-selector-tokenizer": "^0.8.0", @@ -11077,6 +11351,12 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "devOptional": true }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, "define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -11247,7 +11527,6 @@ "version": "5.12.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", - "peer": true, "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -11401,13 +11680,13 @@ } }, "eslint": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz", - "integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==", + "version": "8.33.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz", + "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", @@ -11426,7 +11705,7 @@ "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", + "globals": "^13.19.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", @@ -11460,16 +11739,16 @@ } }, "eslint-config-next": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.0.2.tgz", - "integrity": "sha512-SrrHp+zBDYLjOFZdM5b9aW/pliK687Xxfa+qpDuL08Z04ReHhmz3L+maXaAqgrEVZHQximP7nh0El4yNDJW+CA==", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.1.6.tgz", + "integrity": "sha512-0cg7h5wztg/SoLAlxljZ0ZPUQ7i6QKqRiP4M2+MgTZtxWwNKb2JSwNc18nJ6/kXBI6xYvPraTbQSIhAuVw6czw==", "dev": true, "requires": { - "@next/eslint-plugin-next": "13.0.2", + "@next/eslint-plugin-next": "13.1.6", "@rushstack/eslint-patch": "^1.1.3", - "@typescript-eslint/parser": "^5.21.0", + "@typescript-eslint/parser": "^5.42.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^2.7.1", + "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.26.0", "eslint-plugin-jsx-a11y": "^6.5.1", "eslint-plugin-react": "^7.31.7", @@ -11477,13 +11756,14 @@ } }, "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", "dev": true, "requires": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" }, "dependencies": { "debug": { @@ -11498,31 +11778,38 @@ } }, "eslint-import-resolver-typescript": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", - "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.3.tgz", + "integrity": "sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==", "dev": true, "requires": { "debug": "^4.3.4", - "glob": "^7.2.0", + "enhanced-resolve": "^5.10.0", + "get-tsconfig": "^4.2.0", + "globby": "^13.1.2", + "is-core-module": "^2.10.0", "is-glob": "^4.0.3", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" + "synckit": "^0.8.4" }, "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true } } }, @@ -11547,33 +11834,35 @@ } }, "eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dev": true, "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", "has": "^1.0.3", - "is-core-module": "^2.8.1", + "is-core-module": "^2.11.0", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", "tsconfig-paths": "^3.14.1" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "doctrine": { @@ -11585,10 +11874,10 @@ "esutils": "^2.0.2" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } @@ -11767,9 +12056,9 @@ } }, "estree-util-build-jsx": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.0.tgz", - "integrity": "sha512-apsfRxF9uLrqosApvHVtYZjISPvTJ+lBiIydpC+9wE6cF6ssbhnjyQLqaIjgzGxvC2Hbmec1M7g91PoBayYoQQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz", + "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==", "requires": { "@types/estree-jsx": "^1.0.0", "estree-util-is-identifier-name": "^2.0.0", @@ -11777,9 +12066,9 @@ } }, "estree-util-is-identifier-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.0.1.tgz", - "integrity": "sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", + "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==" }, "estree-util-to-js": { "version": "1.1.0", @@ -11801,9 +12090,9 @@ } }, "estree-walker": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.1.tgz", - "integrity": "sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.2.tgz", + "integrity": "sha512-C03BvXCQIH/po+PNPONx/zSM9ziPr9weX8xNhYb/IJtdJ9z+L4z9VKPTB+UTHdmhnIopA2kc419ueyVyHVktwA==" }, "esutils": { "version": "2.0.3", @@ -11907,17 +12196,17 @@ } }, "final-form": { - "version": "4.20.7", - "resolved": "https://registry.npmjs.org/final-form/-/final-form-4.20.7.tgz", - "integrity": "sha512-ii3X9wNfyBYFnDPunYN5jh1/HAvtOZ9aJI/TVk0MB86hZuOeYkb+W5L3icgwW9WWNztZR6MDU3En6eoZTUoFPg==", + "version": "4.20.9", + "resolved": "https://registry.npmjs.org/final-form/-/final-form-4.20.9.tgz", + "integrity": "sha512-shA1X/7v8RmukWMNRHx0l7+Bm41hOivY78IvOiBrPVHjyWFIyqqIEMCz7yTVRc9Ea+EU4WkZ5r4MH6whSo5taw==", "requires": { "@babel/runtime": "^7.10.0" } }, "final-form-arrays": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/final-form-arrays/-/final-form-arrays-3.0.2.tgz", - "integrity": "sha512-TfO8aZNz3RrsZCDx8GHMQcyztDNpGxSSi9w4wpSNKlmv2PfFWVVM8P7Yj5tj4n0OWax+x5YwTLhT5BnqSlCi+w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/final-form-arrays/-/final-form-arrays-3.1.0.tgz", + "integrity": "sha512-TWBvun+AopgBLw9zfTFHBllnKMVNEwCEyDawphPuBGGqNsuhGzhT7yewHys64KFFwzIs6KEteGLpKOwvTQEscQ==", "requires": {} }, "find-cache-dir": { @@ -12103,6 +12392,12 @@ "get-intrinsic": "^1.1.1" } }, + "get-tsconfig": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.3.0.tgz", + "integrity": "sha512-YCcF28IqSay3fqpIu5y3Krg/utCBHBeoflkZyHj/QcqI2nrLPC3ZegS9CmIo+hJb8K7aiGsuUl7PwWVjNG2HQQ==", + "dev": true + }, "get-uri": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", @@ -12154,6 +12449,12 @@ "type-fest": "^0.20.2" } }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, "globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -12168,6 +12469,12 @@ "slash": "^3.0.0" } }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, "google-auth-library": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.7.0.tgz", @@ -12266,9 +12573,9 @@ } }, "hast-util-to-estree": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.1.0.tgz", - "integrity": "sha512-Vwch1etMRmm89xGgz+voWXvVHba2iiMdGMKmaMfYt35rbVtFDq8JNwwAIvi8zHMkO6Gvqo9oTMwJTmzVRfXh4g==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.2.1.tgz", + "integrity": "sha512-kiGD9WIW3gRKK8Gao3n1f+ahUeTMeJUJILnIT2QNrPigDNdH7rJxzhEbh81UajGeAdAHFecT1a+fLVOCTq9B4Q==", "requires": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", @@ -12282,15 +12589,15 @@ "mdast-util-mdxjs-esm": "^1.0.0", "property-information": "^6.0.0", "space-separated-tokens": "^2.0.0", - "style-to-object": "^0.3.0", + "style-to-object": "^0.4.1", "unist-util-position": "^4.0.0", "zwitch": "^2.0.0" } }, "hast-util-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", - "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", + "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==" }, "he": { "version": "1.2.0", @@ -12491,6 +12798,12 @@ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==" }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -12546,9 +12859,9 @@ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" }, "is-reference": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.0.tgz", - "integrity": "sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.1.tgz", + "integrity": "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==", "requires": { "@types/estree": "*" } @@ -12609,6 +12922,15 @@ "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.8.tgz", "integrity": "sha512-yq8gMao5upkPoGEU9LsB2P+K3Kt8Q3fQFCGyNCWOAnJAMzEXVV9drYb0TXr42TTliLLhKIBvulgAXgtLLnwzGA==" }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -12698,9 +13020,9 @@ "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, "jsonfile": { "version": "4.0.0", @@ -12959,10 +13281,19 @@ "mdast-util-to-markdown": "^1.0.0" } }, + "mdast-util-phrasing": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.0.tgz", + "integrity": "sha512-S+QYsDRLkGi8U7o5JF1agKa/sdP+CNGXXLqC17pdTVL8FHHgQEiwFGa9yE5aYtUxNiFGYoaDy9V1kC85Sz86Gg==", + "requires": { + "@types/mdast": "^3.0.0", + "unist-util-is": "^5.0.0" + } + }, "mdast-util-to-hast": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.4.tgz", - "integrity": "sha512-a21xoxSef1l8VhHxS1Dnyioz6grrJkoaCUgGzMD/7dWHvboYX3VW53esRUfB5tgTyz4Yos1n25SPcj35dJqmAg==", + "version": "12.2.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.5.tgz", + "integrity": "sha512-EFNhT35ZR/VZ85/EedDdCNTq0oFM+NM/+qBomVGQ0+Lcg0nhI8xIwmdCzNMlVlCJNXRprpobtKP/IUh8cfz6zQ==", "requires": { "@types/hast": "^2.0.0", "@types/mdast": "^3.0.0", @@ -12976,13 +13307,14 @@ } }, "mdast-util-to-markdown": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.4.0.tgz", - "integrity": "sha512-IjXARf/O8VGx/pc5SZ7syfydq1DYL9vd92orsG5U0b4GNCmAvXzu+n7sbzfIKrXwB0AVrYk3NV2kXl0AIi9LCA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", + "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", "requires": { "@types/mdast": "^3.0.0", "@types/unist": "^2.0.0", "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^3.0.0", "mdast-util-to-string": "^3.0.0", "micromark-util-decode-string": "^1.0.0", "unist-util-visit": "^4.0.0", @@ -13400,29 +13732,28 @@ "optional": true }, "next": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/next/-/next-13.0.2.tgz", - "integrity": "sha512-uQ5z5e4D9mOe8+upy6bQdYYjo/kk1v3jMW87kTy2TgAyAsEO+CkwRnMgyZ4JoHEnhPZLHwh7dk0XymRNLe1gFw==", - "requires": { - "@next/env": "13.0.2", - "@next/swc-android-arm-eabi": "13.0.2", - "@next/swc-android-arm64": "13.0.2", - "@next/swc-darwin-arm64": "13.0.2", - "@next/swc-darwin-x64": "13.0.2", - "@next/swc-freebsd-x64": "13.0.2", - "@next/swc-linux-arm-gnueabihf": "13.0.2", - "@next/swc-linux-arm64-gnu": "13.0.2", - "@next/swc-linux-arm64-musl": "13.0.2", - "@next/swc-linux-x64-gnu": "13.0.2", - "@next/swc-linux-x64-musl": "13.0.2", - "@next/swc-win32-arm64-msvc": "13.0.2", - "@next/swc-win32-ia32-msvc": "13.0.2", - "@next/swc-win32-x64-msvc": "13.0.2", - "@swc/helpers": "0.4.11", + "version": "13.1.6", + "resolved": "https://registry.npmjs.org/next/-/next-13.1.6.tgz", + "integrity": "sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==", + "requires": { + "@next/env": "13.1.6", + "@next/swc-android-arm-eabi": "13.1.6", + "@next/swc-android-arm64": "13.1.6", + "@next/swc-darwin-arm64": "13.1.6", + "@next/swc-darwin-x64": "13.1.6", + "@next/swc-freebsd-x64": "13.1.6", + "@next/swc-linux-arm-gnueabihf": "13.1.6", + "@next/swc-linux-arm64-gnu": "13.1.6", + "@next/swc-linux-arm64-musl": "13.1.6", + "@next/swc-linux-x64-gnu": "13.1.6", + "@next/swc-linux-x64-musl": "13.1.6", + "@next/swc-win32-arm64-msvc": "13.1.6", + "@next/swc-win32-ia32-msvc": "13.1.6", + "@next/swc-win32-x64-msvc": "13.1.6", + "@swc/helpers": "0.4.14", "caniuse-lite": "^1.0.30001406", "postcss": "8.4.14", - "styled-jsx": "5.1.0", - "use-sync-external-store": "1.2.0" + "styled-jsx": "5.1.1" }, "dependencies": { "postcss": { @@ -13438,9 +13769,9 @@ } }, "next-auth": { - "version": "4.18.6", - "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.18.6.tgz", - "integrity": "sha512-0TQwbq5X9Jyd1wUVYUoyvHJh4JWXeW9UOcMEl245Er/Y5vsSbyGJHt8M7xjRMzk9mORVMYehoMdERgyiq/jCgA==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.19.2.tgz", + "integrity": "sha512-6V2YG3IJQVhgCAH7mvT3yopTW92gMdUrcwGX7NQ0dCreT/+axGua/JmVdarjec0C/oJukKpIYRgjMlV+L5ZQOQ==", "requires": { "@babel/runtime": "^7.16.3", "@panva/hkdf": "^1.0.1", @@ -13454,12 +13785,12 @@ } }, "next-mdx-remote": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/next-mdx-remote/-/next-mdx-remote-4.2.0.tgz", - "integrity": "sha512-X5RhD7f7b78pH2abbuusObSGgII5l54OdusS/2iXljN7WN1cel6ToLlZeCZcyxx9cR4wmBGQYGongIttDYNmAA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/next-mdx-remote/-/next-mdx-remote-4.3.0.tgz", + "integrity": "sha512-fbxkY03pM2Wx5bDNTVKpYD5Hx3QVZGH+6xDtVIxlxXz4HTifP1yI2DrkDvxXbTz0SYGIbluRMIW81IOOa8pigA==", "requires": { - "@mdx-js/mdx": "^2.0.0", - "@mdx-js/react": "^2.0.0", + "@mdx-js/mdx": "^2.2.1", + "@mdx-js/react": "^2.2.1", "vfile": "^5.3.0", "vfile-matter": "^3.0.1" } @@ -13618,6 +13949,17 @@ "wrappy": "1" } }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, "openid-client": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.3.1.tgz", @@ -13818,9 +14160,9 @@ } }, "postcss": { - "version": "8.4.20", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz", - "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", "requires": { "nanoid": "^3.3.4", "picocolors": "^1.0.0", @@ -13896,15 +14238,15 @@ "dev": true }, "prettier": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", - "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", + "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", "dev": true }, "prettier-plugin-tailwindcss": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.1.13.tgz", - "integrity": "sha512-/EKQURUrxLu66CMUg4+1LwGdxnz8of7IDvrSLqEtDqhLH61SAlNNUSr90UTvZaemujgl3OH/VHg+fyGltrNixw==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.2.2.tgz", + "integrity": "sha512-5RjUbWRe305pUpc48MosoIp6uxZvZxrM6GyOgsbGLTce+ehePKNm7ziW2dLG2air9aXbGuXlHVSQQw4Lbosq3w==", "dev": true, "requires": {} }, @@ -14096,6 +14438,14 @@ "integrity": "sha512-yFNHrlVEReVYKsLI5lF05tZoHveA5pGzjFbFJY/3pOqqjGOmMmqx83N4hIjN2n6E1AOa+eQEUxs3CgRnPmT0RQ==", "requires": {} }, + "react-toastify": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-9.1.1.tgz", + "integrity": "sha512-pkFCla1z3ve045qvjEmn2xOJOy4ZciwRXm1oMPULVkELi5aJdHCN/FHnuqXq8IwGDLB7PPk2/J6uP9D8ejuiRw==", + "requires": { + "clsx": "^1.1.1" + } + }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -14145,9 +14495,9 @@ "dev": true }, "remark-mdx": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.1.5.tgz", - "integrity": "sha512-A8vw5s+BgOa968Irt8BO7DfWJTE0Fe7Ge3hX8zzDB1DnwMZTNdK6qF2IcFao+/7nzk1vSysKcFp+3ku4vhMpaQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.2.1.tgz", + "integrity": "sha512-R9wcN+/THRXTKyRBp6Npo/mcbGA2iT3N4G8qUqLA5pOEg7kBidHv8K2hHidCMYZ6DXmwK18umu0K4cicgA2PPQ==", "requires": { "mdast-util-mdx": "^2.0.0", "micromark-extension-mdxjs": "^1.0.0" @@ -14541,25 +14891,25 @@ "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==" }, "style-to-object": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", - "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.1.tgz", + "integrity": "sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==", "requires": { "inline-style-parser": "0.1.1" } }, "styled-jsx": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.0.tgz", - "integrity": "sha512-/iHaRJt9U7T+5tp6TRelLnqBqiaIT0HsO0+vgyj8hK2KUk7aejFqRrumqPUlAqDwAj8IbS/1hk3IhBAAK/FCUQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", "requires": { "client-only": "0.0.1" } }, "superjson": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/superjson/-/superjson-1.9.1.tgz", - "integrity": "sha512-oT3HA2nPKlU1+5taFgz/HDy+GEaY+CWEbLzaRJVD4gZ7zMVVC4GDNFdgvAZt6/VuIk6D2R7RtPAiCHwmdzlMmg==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-1.12.2.tgz", + "integrity": "sha512-ugvUo9/WmvWOjstornQhsN/sR9mnGtWGYeTxFuqLb4AiT4QdUavjGFRALCPKWWnAiUJ4HTpytj5e0t5HoMRkXg==", "requires": { "copy-anything": "^3.0.2" } @@ -14578,6 +14928,16 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, + "synckit": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.4.tgz", + "integrity": "sha512-Dn2ZkzMdSX827QbowGbU/4yjWuvNaCoScLLoMo/yKbu+P4GBR6cRGKZH27k6a9bRzdqcyd1DE96pQtQ6uNkmyw==", + "dev": true, + "requires": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.4.0" + } + }, "tailwindcss": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz", @@ -14618,8 +14978,7 @@ "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "peer": true + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" }, "teeny-request": { "version": "8.0.2", @@ -14714,6 +15073,16 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -14761,9 +15130,9 @@ }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -14814,9 +15183,9 @@ "integrity": "sha512-rObfoGpDlmWUhmggpWd2I/4xLsdGPDvfvrLpLxV4pBTBL2BBjm+7x7IOmTwJRV6Qe4UAkWdHq0ZYoTYAAPE5YA==" }, "typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true }, "unbox-primitive": { @@ -14854,9 +15223,9 @@ } }, "unist-util-generated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", - "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", + "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==" }, "unist-util-is": { "version": "5.1.1", @@ -15207,6 +15576,14 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.20.2.tgz", "integrity": "sha512-1MzNQdAvO+54H+EaK5YpyEy0T+Ejo/7YLHS93G3RnYWh5gaotGHwGeN/ZO687qEDU2y4CdStQYXVHIgrUl5UVQ==" }, + "zustand": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.3.2.tgz", + "integrity": "sha512-rd4haDmlwMTVWVqwvgy00ny8rtti/klRoZjFbL/MAcDnmD5qSw/RZc+Vddstdv90M5Lv6RPgWvm1Hivyn0QgJw==", + "requires": { + "use-sync-external-store": "1.2.0" + } + }, "zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/package.json b/package.json index 2dc79c4..02f0634 100644 --- a/package.json +++ b/package.json @@ -16,69 +16,71 @@ "@editorjs/checklist": "^1.4.0", "@editorjs/code": "^2.8.0", "@editorjs/delimiter": "^1.3.0", - "@editorjs/editorjs": "^2.26.3", + "@editorjs/editorjs": "^2.26.5", "@editorjs/embed": "^2.5.3", "@editorjs/header": "^2.7.0", - "@editorjs/image": "^2.7.1", + "@editorjs/image": "^2.8.1", "@editorjs/inline-code": "^1.4.0", "@editorjs/list": "^1.8.0", "@editorjs/marker": "^1.3.0", "@editorjs/paragraph": "^2.9.0", "@editorjs/quote": "^2.5.0", - "@editorjs/table": "^2.1.2", + "@editorjs/table": "^2.2.0", "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/react-fontawesome": "^0.2.0", - "@google-cloud/storage": "^6.8.0", - "@headlessui/react": "^1.7.5", - "@heroicons/react": "^2.0.13", + "@google-cloud/storage": "^6.9.1", + "@headlessui/react": "^1.7.8", + "@heroicons/react": "^2.0.14", "@next-auth/prisma-adapter": "^1.0.5", "@prisma/client": "^4.9.0", "@tailwindcss/forms": "^0.5.3", - "@tailwindcss/typography": "^0.5.8", - "@tanstack/react-query": "^4.16.0", - "@trpc/client": "^10.0.0", - "@trpc/next": "^10.0.0", - "@trpc/react-query": "^10.0.0", - "@trpc/server": "^10.0.0", - "axios": "^1.2.1", - "cloudinary": "^1.32.0", + "@tailwindcss/typography": "^0.5.9", + "@tanstack/react-query": "^4.24.4", + "@trpc/client": "^10.9.1", + "@trpc/next": "^10.9.1", + "@trpc/react-query": "^10.9.1", + "@trpc/server": "^10.9.1", + "axios": "^1.3.1", + "cloudinary": "^1.33.0", "clsx": "^1.2.1", - "cuid": "^2.1.8", - "daisyui": "^2.43.1", + "cuid": "^3.0.0", + "daisyui": "^2.50.0", "fast-deep-equal": "^3.1.3", - "final-form": "^4.20.7", - "final-form-arrays": "^3.0.2", + "final-form": "^4.20.9", + "final-form-arrays": "^3.1.0", "kannon.js": "^0.3.0", - "next": "13.0.2", - "next-auth": "^4.18.3", - "next-mdx-remote": "^4.2.0", + "next": "13.1.6", + "next-auth": "^4.19.2", + "next-mdx-remote": "^4.3.0", "next-superjson": "^0.0.4", "react": "18.2.0", "react-dom": "18.2.0", "react-editor-js": "^2.1.0", "react-final-form": "^6.5.9", "react-final-form-arrays": "^3.1.4", - "superjson": "1.9.1", + "react-toastify": "^9.1.1", + "superjson": "1.12.2", "telegraf": "^4.11.2", - "zod": "^3.18.0" + "zod": "^3.20.2", + "zustand": "^4.3.2" }, "devDependencies": { "@types/editorjs__header": "^2.6.0", - "@types/node": "^18.0.0", - "@types/react": "^18.0.14", - "@types/react-dom": "^18.0.5", - "@typescript-eslint/eslint-plugin": "^5.33.0", - "@typescript-eslint/parser": "^5.33.0", - "autoprefixer": "^10.4.7", - "eslint": "^8.26.0", - "eslint-config-next": "13.0.2", + "@types/node": "^18.11.18", + "@types/react": "^18.0.27", + "@types/react-dom": "^18.0.10", + "@typescript-eslint/eslint-plugin": "^5.50.0", + "@typescript-eslint/parser": "^5.50.0", + "autoprefixer": "^10.4.13", + "eslint": "^8.33.0", + "eslint-config-next": "13.1.6", "node-html-parser": "^6.1.4", - "postcss": "^8.4.14", - "prettier": "^2.7.1", - "prettier-plugin-tailwindcss": "^0.1.13", + "postcss": "^8.4.21", + "prettier": "^2.8.3", + "prettier-plugin-tailwindcss": "^0.2.2", "prisma": "^4.9.0", - "tailwindcss": "^3.2.0", - "typescript": "^4.8.4" + "tailwindcss": "^3.2.4", + "typescript": "^4.9.5" }, "ct3aMetadata": { "initVersion": "6.11.3" diff --git a/scripts/tk.ts b/scripts/tk.ts new file mode 100644 index 0000000..fc70db0 --- /dev/null +++ b/scripts/tk.ts @@ -0,0 +1,123 @@ +import { KannonCli } from "kannon.js"; + +const emails = [ + "silvia@farmaceuticayounger.science", + "ludovico@ludusrusso.space", + "simonecossari@gmail.com", + "francesca.lovisari90@gmail.com", + "francesco.rizzuto@studenti.unimi.it", + "camilla.vitagliano@studenti.unimi.it", + "irene.carnovale@gmail.com", + "veronica.moscatelli90@gmail.com", + "catalanstefania@gmail.com", + "robertacocomazzi@gmail.com", + "ginevravigni@gmail.com", + "alessandro.buoso1@gmail.com", + "dottannateresa.greco@gmail.com", + "giovanna.lamonica86@gmail.com", + "v.giacchetti@libero.it", + "manuel.grotti@gmail.com", + "alberti.giovanbattista@gmail.com", + "mariantoniettatat@gmail.com", + "vittoria.reggiani@tiscali.it", + "torricarlo79@gmail.com", + "elenaelli77@gmail.com", + "monica.rossetti83@gmail.com", + "robe.fumarola.rf@gmail.com", + "veronica.nicosia.vn@gmail.com", + "antonietta.puricella@gmail.com", + "virginiavittorio@libero.it", + "ddesantis4@gmail.com", + "arianna.cislaghi94@gmail.com", + "fenice_sigma_q@yahoo.it", + "alessandro.giraudo.ag@gmail.com", + "capuano93@gmail.com", + "fmattiotti@gmail.com", + "walter.fazzini92@gmail.com", + "simona.pasqualino92@gmail.com", + "chiarabongio89@gmail.com", + "emanuelasalicchi@libero.it", + "chiara071993@hotmail.it", + "maruocco.1@gmail.com", + "lapeccerella.silvia@gmail.com", + "roberto.perna94@gmail.com", + "m.mosca91@hotmail.it", + "cfrancioso22@gmail.com", + "avolioemanuela@outlook.com", + "giulia.gasparri96@gmail.com", + "jacopo.busetto@gmail.com", + "marziale.comito@acsdobfar.it", + "emanuele.bertea@gmail.com", + "aurora.brandino@gmail.com", + "gaetano.lopopolo@gmail.com", + "p.pavoni96@gmail.com", + "davide.costanza@outlook.it", + "peppesem92@gmail.com", + "ingargiolamarianna@gmail.com", + "degiorgitiziano@libero.it", + "mirko.friscia@yahoo.com", + "matteo.casalotti@gmail.com", + "rlanzani@progefarm.it", + "margherita.restori@outlook.com", + "vivianariccardi@libero.it", + "mtt.federici@gmail.com", + "mattiarossi510@gmail.com", + "emanueleconforti96@gmail.com", + "simone.baiano89@gmail.com", + "nicolebuono00@gmail.com", + "luanadannunzio90@gmail.com", + "denisianak@libero.it", + "giostrachiara@gmail.com", + "adm.desantis@gmail.com", + "martino.spighi@gmail.com", + "antonio.arigliani@italianmr.com", + "ilarialupoi@gmail.com", +]; + +const html = `
|
|
loading ...
; @@ -26,77 +16,25 @@ const ProjectsPage = () => { return{error.message}
; } return ( -Ecco i miei progetti
-Tutti i progetti
{error.message}
; } return ( -| - - | Name | Author | -Admin | |
|---|---|---|---|---|
| - - |
@@ -101,16 +85,6 @@ const UsersList = ({ users }: UsersListProps) => {
}
/>
|
- - - setAdminMut.mutate({ isAdmin: !u.isAdmin, id: u.id }) - } - /> - |
-
-
- Edit
+ |
))}
diff --git a/src/app/dashboard/sidenav.store.ts b/src/app/dashboard/sidenav.store.ts
new file mode 100644
index 0000000..107d503
--- /dev/null
+++ b/src/app/dashboard/sidenav.store.ts
@@ -0,0 +1,13 @@
+import { create } from "zustand";
+
+type SidebarState = {
+ isOpen: boolean;
+ setIsOpen: (isOpen: boolean) => void;
+ toggle: () => void;
+};
+
+export const useSidebarStore = create