From 1d6126be06728ee1eaabf95cb2c715b2dd59fea5 Mon Sep 17 00:00:00 2001 From: Breno Lira Date: Sun, 16 Jun 2024 23:07:39 -0300 Subject: [PATCH 1/5] feat: pre-commit w/ husky + lint-staged --- .github/ISSUE_TEMPLATE/bug-report.md | 15 +- .gitignore | 4 +- .husky/pre-commit | 1 + .lintstagedrc | 4 + .prettierignore | 6 + .prettierrc | 8 +- CONTRIBUTING.md | 8 +- bun.lockb | Bin 0 -> 228880 bytes components.json | 2 +- index.html | 6 +- package.json | 6 +- postcss.config.js | 2 +- public/site.webmanifest | 20 ++- src/api/api.ts | 16 +-- src/api/cache.ts | 26 ++-- src/api/hmac.ts | 8 +- .../BurguerMenuItem/BurguerMenuItem.tsx | 16 +-- .../CardAboutShelter/CardAboutShelter.tsx | 54 ++++---- .../components/InfoRow/InfoRow.tsx | 24 ++-- src/components/CardAboutShelter/utils.ts | 16 +-- src/components/Chip/Chip.tsx | 26 ++-- src/components/CircleStatus/CircleStatus.tsx | 10 +- .../DonationCartForm/DonationCartForm.tsx | 58 ++++---- .../DonationSuccess/DonationSuccess.tsx | 32 ++--- .../DonationVoucher/DonationVoucher.tsx | 18 +-- src/components/Footer/Footer.tsx | 18 +-- src/components/Header/Header.tsx | 14 +- .../LoadingScreen/LoadingScreen.tsx | 18 +-- .../LoadingSkeleton/LoadingSkeleton.tsx | 77 ++++++----- src/components/LoadingSkeleton/index.ts | 2 +- src/components/SearchInput/SearchInput.tsx | 24 ++-- src/components/SelectField/SelectField.tsx | 14 +- src/components/TextField/TextField.tsx | 20 +-- .../VerifiedBadge/VerifiedBadge.tsx | 10 +- src/components/ui/accordion.tsx | 26 ++-- src/components/ui/badge-variants.tsx | 2 +- src/components/ui/button-variants.tsx | 30 ++-- src/components/ui/button.tsx | 20 +-- src/components/ui/card.tsx | 41 +++--- src/components/ui/checkbox.tsx | 16 +-- src/components/ui/dialog.tsx | 52 +++---- src/components/ui/form.tsx | 40 +++--- src/components/ui/input.tsx | 16 +-- src/components/ui/label.tsx | 18 +-- src/components/ui/radio-group.tsx | 24 ++-- src/components/ui/select.tsx | 56 ++++---- src/components/ui/separator.tsx | 18 +-- src/components/ui/sheet.tsx | 54 ++++---- src/components/ui/tabs.tsx | 28 ++-- src/components/ui/toast.tsx | 54 ++++---- src/components/ui/toaster.tsx | 10 +- src/components/ui/tooltip.tsx | 20 +-- src/components/ui/use-toast.ts | 129 +++++++++--------- src/components/ui/with-tooltip.tsx | 6 +- .../DonationCartContext.tsx | 25 ++-- src/contexts/DonationCartContext/types.ts | 6 +- .../SessionContext/SessionContext.tsx | 14 +- src/hooks/useDashboard/useDashboard.tsx | 16 +-- src/hooks/useFetch/useFetch.tsx | 16 +-- .../useGithubContributors.tsx | 10 +- src/hooks/usePaginatedQuery/types.ts | 2 +- .../usePaginatedQuery/usePaginatedQuery.tsx | 16 +-- src/hooks/useShelter/useShelter.tsx | 8 +- src/hooks/useShelters/useShelters.tsx | 24 ++-- src/hooks/useThrottle/useThrottle.tsx | 6 +- src/lib/utils.ts | 99 +++++++------- src/main.tsx | 12 +- src/pages/AboutUs/AboutUs.tsx | 80 +++++------ .../AboutCardInfo/AboutCardInfo.tsx | 18 +-- src/pages/CreateSupply/CreateSupply.tsx | 109 ++++++++------- src/pages/CreateSupply/components/modal.tsx | 38 +++--- src/pages/CreateSupply/components/types.ts | 4 +- src/pages/Dashboard/Dashboard.tsx | 12 +- .../DonationsHistory/DonationsHistory.tsx | 54 ++++---- .../DonationHistoryListItem.tsx | 42 +++--- .../EditShelterSupply/EditShelterSupply.tsx | 92 +++++++------ .../SupplyRowInfo/SupplyRowInfo.tsx | 12 +- .../components/SupplySearch/SupplySearch.tsx | 20 +-- .../components/SupplySearch/types.ts | 2 +- src/pages/Home/Home.tsx | 43 +++--- src/pages/Home/components/Filter/Filter.tsx | 72 +++++----- src/pages/Home/components/Filter/types.ts | 71 +++++----- .../ShelterListItem/ShelterListItem.tsx | 28 ++-- .../ShelterListView/ShelterListView.tsx | 27 ++-- src/pages/Shelter/Shelter.tsx | 77 ++++++----- .../ShelterCategoryList.tsx | 24 ++-- src/pages/UpdateShelter/UpdateShelter.tsx | 118 ++++++++-------- .../donationOrder/donationOrder.service.ts | 20 +-- .../petsRsShelter/petsRsShelter.service.ts | 10 +- src/service/sessions/session.service.ts | 14 +- src/service/shelter/shelter.service.ts | 18 +-- .../shelterSupply/shelter-supply.service.ts | 16 +-- src/service/users/user.service.ts | 16 +-- tailwind.config.js | 118 ++++++++-------- 94 files changed, 1366 insertions(+), 1286 deletions(-) create mode 100644 .husky/pre-commit create mode 100644 .lintstagedrc create mode 100644 .prettierignore create mode 100755 bun.lockb diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md index d325e134..dc5b3c35 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -1,29 +1,36 @@ --- name: Bug report about: Um modelo exemplo para você relatar algum defeito que tenha encontrado no site. -title: "[BUG] Título do problema" +title: '[BUG] Título do problema' labels: bug assignees: '' - --- + # Descrição + Aqui você escreve sobre o que é o defeito. # Problema encontrado + Aqui você dá detalhes sobre o problema, incluíndo os passos para reproduzir, se necessário. # Prioridade + Registre apenas a prioridade ou seriedade do defeito. Um guia: + - Crítico: site fora do ar, erros fatas que impedem utilização por completo, página em branco - Grave: site online, mas com defeito sério que impedem o uso de forma considerável -- Média: defeito não tão sério, mas que dificulta o uso da aplicação de modo geral +- Média: defeito não tão sério, mas que dificulta o uso da aplicação de modo geral - Baixa: coisas poucas, sistema pode ser usado. Problemas de grafia são incluídos aqui # Solução proposta + Como deveria ser o comportamento sem o defeito? # Ambiente + Aqui você escreve o tipo de dispositivo (Modelo do celular ou sistema operacional do computador) e o navegador que utilizou para o teste. # Evidência -Adicione o que for possível, como captura de tela ou vídeo evidenciando o problema. \ No newline at end of file + +Adicione o que for possível, como captura de tela ou vídeo evidenciando o problema. diff --git a/.gitignore b/.gitignore index 3b0b4037..65f61907 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,6 @@ dist-ssr *.sln *.sw? -.env \ No newline at end of file +.env + +bun.lockb \ No newline at end of file diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 00000000..b28c372e --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +npm run lint-staged \ No newline at end of file diff --git a/.lintstagedrc b/.lintstagedrc new file mode 100644 index 00000000..fdbc4303 --- /dev/null +++ b/.lintstagedrc @@ -0,0 +1,4 @@ +{ + "!(*.ts)": "prettier --write", + "*.ts": ["eslint . --fix", "prettier --write"] +} diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..e5382a2c --- /dev/null +++ b/.prettierignore @@ -0,0 +1,6 @@ +node_modules +.husky +.github +bun.lockb +.prettierignore +.gitignore \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index 544138be..6c3bee57 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,3 +1,9 @@ { - "singleQuote": true + "arrowParens": "always", + "printWidth": 80, + "singleQuote": false, + "jsxSingleQuote": false, + "semi": true, + "trailingComma": "all", + "tabWidth": 2 } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9d44effa..2557942e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -79,10 +79,10 @@ de forma desnecessária. 5. Faça um push para o seu repositório com `git push`. 6. [Sincronize seu repositório](#-sincronizando). 7. [Abra um pull request](https://docs.github.com/pt/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request). - Não deixe de informar, no seu pull request, qual a issue que está fechando. - Idealmente coloque um comentário no PR que já fechará a issue, como - `fixes #xxxx` ou `closes #xxxx` (onde `xxxx` é o número do issue). Veja - [como isso funciona](https://docs.github.com/pt/get-started/writing-on-github/working-with-advanced-formatting/using-keywords-in-issues-and-pull-requests). + Não deixe de informar, no seu pull request, qual a issue que está fechando. + Idealmente coloque um comentário no PR que já fechará a issue, como + `fixes #xxxx` ou `closes #xxxx` (onde `xxxx` é o número do issue). Veja + [como isso funciona](https://docs.github.com/pt/get-started/writing-on-github/working-with-advanced-formatting/using-keywords-in-issues-and-pull-requests). 8. Acompanhe a revisão do PR. Algumas verificações automáticas serão feitas (o Github Actions rodará o build do Vite, por exemplo). Se uma delas falhar, corrija-a, a revisão humana só começa quando estas checagem estão passando. Após abrir o diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..61003ef34b6a220e0fc3a8951bb9b91d7d08572c GIT binary patch literal 228880 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 + diff --git a/src/api/api.ts b/src/api/api.ts index a6fd970b..b36fc82b 100644 --- a/src/api/api.ts +++ b/src/api/api.ts @@ -1,13 +1,13 @@ -import axios, { AxiosRequestHeaders, InternalAxiosRequestConfig } from "axios"; -import { clearCache, getCacheRequestData, handleCacheResponse } from "./cache"; -import { getHmacHeaders } from "./hmac"; +import axios, { AxiosRequestHeaders, InternalAxiosRequestConfig } from 'axios'; +import { clearCache, getCacheRequestData, handleCacheResponse } from './cache'; +import { getHmacHeaders } from './hmac'; const api = axios.create({ - baseURL: import.meta.env.VITE_API_URL ?? "http://localhost:4000/", + baseURL: import.meta.env.VITE_API_URL ?? 'http://localhost:4000/', }); function handleRequestAuthToken(config: InternalAxiosRequestConfig) { - const token = localStorage.getItem("token"); + const token = localStorage.getItem('token'); if (token) config.headers.Authorization = `Bearer ${token}`; } @@ -27,7 +27,7 @@ api.interceptors.request.use((config) => { method: config.method?.toUpperCase(), url: [config.url, new URLSearchParams(config.params).toString()] .filter((p) => !!p) - .join("?"), + .join('?'), body: config.data, }); Object.assign(config.headers, hmacHeaders); @@ -43,7 +43,7 @@ api.interceptors.response.use( (error) => { if (error.response && error.response.status === 401) { clearCache(false); - localStorage.removeItem("token"); + localStorage.removeItem('token'); } return Promise.reject(error); }, diff --git a/src/api/cache.ts b/src/api/cache.ts index bb72a76d..2cb6796b 100644 --- a/src/api/cache.ts +++ b/src/api/cache.ts @@ -1,5 +1,5 @@ -import { AxiosResponse, InternalAxiosRequestConfig } from "axios"; -import qs from "qs"; +import { AxiosResponse, InternalAxiosRequestConfig } from 'axios'; +import qs from 'qs'; const defaultTtl: number = 1000 * 60 * 5; @@ -19,11 +19,11 @@ function checkCacheHasExpired( function clearCache(onlyExpired: boolean = true) { log( onlyExpired - ? "cache - checando caches expirados..." - : "cache - limpando cache...", + ? 'cache - checando caches expirados...' + : 'cache - limpando cache...', ); Object.keys(localStorage) - .filter((key: string) => key.startsWith("cache:")) + .filter((key: string) => key.startsWith('cache:')) .forEach((key) => { const data = localStorage.getItem(key); if (data) { @@ -37,11 +37,11 @@ function clearCache(onlyExpired: boolean = true) { function getCacheRequestData(config: InternalAxiosRequestConfig) { if ( - config.method === "get" && + config.method === 'get' && config.url && - config.headers["x-app-cache"] === "true" + config.headers['x-app-cache'] === 'true' ) { - const url = "cache:" + config.url + "?" + qs.stringify(config.params); + const url = 'cache:' + config.url + '?' + qs.stringify(config.params); const cache = localStorage.getItem(url); if (cache) { const { data, timestamp } = JSON.parse(cache); @@ -59,11 +59,11 @@ function getCacheRequestData(config: InternalAxiosRequestConfig) { function handleCacheResponse(resp: AxiosResponse) { const url = - "cache:" + resp.config.url + "?" + qs.stringify(resp.config.params); + 'cache:' + resp.config.url + '?' + qs.stringify(resp.config.params); if ( - resp.config.method === "get" && + resp.config.method === 'get' && resp.config.url && - resp.config.headers["x-app-cache"] === "true" && + resp.config.headers['x-app-cache'] === 'true' && resp.status >= 200 && resp.status < 300 ) { diff --git a/src/api/hmac.ts b/src/api/hmac.ts index 786adb8d..b024d545 100644 --- a/src/api/hmac.ts +++ b/src/api/hmac.ts @@ -1,4 +1,4 @@ -import CryptoJS from "crypto-js"; +import CryptoJS from 'crypto-js'; export interface IHmacProps { method: string; @@ -18,8 +18,8 @@ function getHmacHeaders(props: Partial) { ).toString(CryptoJS.enc.Hex); return { - "x-hmac-signature": signature, - "x-hmac-timestamp": `${timestamp}`, + 'x-hmac-signature': signature, + 'x-hmac-timestamp': `${timestamp}`, }; } diff --git a/src/api/index.ts b/src/api/index.ts index 471fafee..da693490 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -1,3 +1,3 @@ -import { api } from "./api"; +import { api } from './api'; export { api }; diff --git a/src/components/Alert/index.ts b/src/components/Alert/index.ts index 7de745c0..ebc7a23c 100644 --- a/src/components/Alert/index.ts +++ b/src/components/Alert/index.ts @@ -1,3 +1,3 @@ -import { Alert } from "./Alert"; +import { Alert } from './Alert'; export { Alert }; diff --git a/src/components/BackToTop/index.ts b/src/components/BackToTop/index.ts index 2e570724..fc03ad51 100644 --- a/src/components/BackToTop/index.ts +++ b/src/components/BackToTop/index.ts @@ -1,3 +1,3 @@ -import { BackToTop } from "./BackToTop"; +import { BackToTop } from './BackToTop'; export { BackToTop }; diff --git a/src/components/BurgerMenu/components/BurguerMenuItem/BurguerMenuItem.tsx b/src/components/BurgerMenu/components/BurguerMenuItem/BurguerMenuItem.tsx index ed3cece2..5a32741e 100644 --- a/src/components/BurgerMenu/components/BurguerMenuItem/BurguerMenuItem.tsx +++ b/src/components/BurgerMenu/components/BurguerMenuItem/BurguerMenuItem.tsx @@ -1,8 +1,8 @@ -import React from "react"; -import { ExternalLink } from "lucide-react"; +import React from 'react'; +import { ExternalLink } from 'lucide-react'; -import { IBurguerMenuItemProps } from "./types"; -import { cn } from "@/lib/utils"; +import { IBurguerMenuItemProps } from './types'; +import { cn } from '@/lib/utils'; const BurguerMenuItem = React.forwardRef< HTMLAnchorElement, @@ -13,7 +13,7 @@ const BurguerMenuItem = React.forwardRef< label, onClick, link, - className = "", + className = '', openExternal, ...rest } = props; @@ -23,12 +23,12 @@ const BurguerMenuItem = React.forwardRef< ref={ref} href={link} className={cn( - "hover:font-semibold flex gap-2 items-center text-zinc-600 [&_svg]:stroke-zinc-500", + 'hover:font-semibold flex gap-2 items-center text-zinc-600 [&_svg]:stroke-zinc-500', className, )} onClick={onClick} {...rest} - target={openExternal ? "_blank" : undefined} + target={openExternal ? '_blank' : undefined} > {icon} {label} diff --git a/src/components/BurgerMenu/index.ts b/src/components/BurgerMenu/index.ts index 4355a097..46db83b0 100644 --- a/src/components/BurgerMenu/index.ts +++ b/src/components/BurgerMenu/index.ts @@ -1,3 +1,3 @@ -import { BurgerMenu } from "./BurgerMenu"; +import { BurgerMenu } from './BurgerMenu'; export { BurgerMenu }; diff --git a/src/components/CardAboutShelter/CardAboutShelter.tsx b/src/components/CardAboutShelter/CardAboutShelter.tsx index 873ef119..2946ed9e 100644 --- a/src/components/CardAboutShelter/CardAboutShelter.tsx +++ b/src/components/CardAboutShelter/CardAboutShelter.tsx @@ -8,20 +8,20 @@ import { Building, MapPinned, Link, -} from "lucide-react"; +} from 'lucide-react'; -import { Card } from "../ui/card"; -import { ICardAboutShelter } from "./types"; -import { InfoRow } from "./components"; -import { checkAndFormatAddress, getShelterNameBeforeSeparator } from "./utils"; -import { ShelterCategory } from "@/hooks/useShelter/types"; -import { Fragment } from "react/jsx-runtime"; -import { PetsRsShelterServices } from "@/service/petsRsShelter/petsRsShelter.service"; -import { useEffect, useState } from "react"; +import { Card } from '../ui/card'; +import { ICardAboutShelter } from './types'; +import { InfoRow } from './components'; +import { checkAndFormatAddress, getShelterNameBeforeSeparator } from './utils'; +import { ShelterCategory } from '@/hooks/useShelter/types'; +import { Fragment } from 'react/jsx-runtime'; +import { PetsRsShelterServices } from '@/service/petsRsShelter/petsRsShelter.service'; +import { useEffect, useState } from 'react'; const CardAboutShelter = (props: ICardAboutShelter) => { const { shelter } = props; - const [petsRsShelterUrl, setPetsRsShelterUrl] = useState(""); + const [petsRsShelterUrl, setPetsRsShelterUrl] = useState(''); const check = (v?: string | number | boolean | null) => { return v !== undefined && v !== null; @@ -32,7 +32,7 @@ const CardAboutShelter = (props: ICardAboutShelter) => { const data = await PetsRsShelterServices.getByName(cleanShelterName); const petsRsShelterUrl = data?.id ? `https://petsrs.com.br/abrigo/${data.id}` - : "https://petsrs.com.br/abrigos"; + : 'https://petsrs.com.br/abrigos'; return petsRsShelterUrl; }; @@ -80,7 +80,7 @@ const CardAboutShelter = (props: ICardAboutShelter) => { value={ check(shelter.shelteredPeople) ? `${shelter.shelteredPeople} pessoas` - : "Não informado" + : 'Não informado' } /> { value={ check(shelter.capacity) ? `${shelter.capacity} pessoas` - : "Não informado" + : 'Não informado' } /> @@ -98,17 +98,17 @@ const CardAboutShelter = (props: ICardAboutShelter) => { icon={} label="Contato:" value={ - check(shelter.contact) ? `${shelter.contact}` : "Não informado" + check(shelter.contact) ? `${shelter.contact}` : 'Não informado' } clipboardButton={check(shelter.contact)} /> } label="Chave Pix:" - value={check(shelter.pix) ? `${shelter.pix}` : "Não informado"} + value={check(shelter.pix) ? `${shelter.pix}` : 'Não informado'} clipboardButton={check(shelter.pix)} /> - {petsRsShelterUrl != "" ? ( + {petsRsShelterUrl != '' ? ( } label={ @@ -122,7 +122,7 @@ const CardAboutShelter = (props: ICardAboutShelter) => { } /> ) : ( - "" + '' )} diff --git a/src/components/CardAboutShelter/components/InfoRow/InfoRow.tsx b/src/components/CardAboutShelter/components/InfoRow/InfoRow.tsx index 1fd76d50..25e1a3ba 100644 --- a/src/components/CardAboutShelter/components/InfoRow/InfoRow.tsx +++ b/src/components/CardAboutShelter/components/InfoRow/InfoRow.tsx @@ -1,6 +1,6 @@ -import React, { Fragment } from "react"; -import { cn } from "@/lib/utils"; -import { IInfoRowProps } from "./types"; +import React, { Fragment } from 'react'; +import { cn } from '@/lib/utils'; +import { IInfoRowProps } from './types'; const InfoRow = React.forwardRef( (props, ref) => { @@ -9,10 +9,10 @@ const InfoRow = React.forwardRef( label, value, clipboardButton = false, - className = "", + className = '', ...rest } = props; - const isLink = value?.startsWith("http"); + const isLink = value?.startsWith('http'); const ValueComp = !value ? ( ) : isLink ? ( @@ -30,17 +30,17 @@ const InfoRow = React.forwardRef(
    {React.cloneElement(icon as any, { - className: "min-w-5 min-h-5 w-5 h-5 stroke-muted-foreground", + className: 'min-w-5 min-h-5 w-5 h-5 stroke-muted-foreground', })} -
    - +
    + {label} diff --git a/src/components/CardAboutShelter/utils.ts b/src/components/CardAboutShelter/utils.ts index 27db5bd0..a4f0ca93 100644 --- a/src/components/CardAboutShelter/utils.ts +++ b/src/components/CardAboutShelter/utils.ts @@ -1,19 +1,19 @@ -import { IUseShelterData } from "@/hooks/useShelter/types"; +import { IUseShelterData } from '@/hooks/useShelter/types'; const formatShelterAddressFields = ( payload: Partial< - Pick + Pick >, ): string => { const { street, streetNumber, neighbourhood } = payload; - return [street, streetNumber, neighbourhood].filter(Boolean).join(", "); + return [street, streetNumber, neighbourhood].filter(Boolean).join(', '); }; const checkAndFormatAddress = ( payload: Partial< Pick< IUseShelterData, - "address" | "city" | "street" | "streetNumber" | "neighbourhood" + 'address' | 'city' | 'street' | 'streetNumber' | 'neighbourhood' > >, showCity = true, @@ -21,12 +21,12 @@ const checkAndFormatAddress = ( const { address, city, ...rest } = payload; return ( address ?? - `${formatShelterAddressFields(rest)}${showCity ? ` - ${city}` : ""}` + `${formatShelterAddressFields(rest)}${showCity ? ` - ${city}` : ''}` ); }; function getShelterNameBeforeSeparator(input: string): string { - return input.replace(/[(\-[{].*$/, ""); + return input.replace(/[(\-[{].*$/, ''); } export { checkAndFormatAddress, getShelterNameBeforeSeparator }; diff --git a/src/components/Chip/Chip.tsx b/src/components/Chip/Chip.tsx index becea25c..ca91d6ef 100644 --- a/src/components/Chip/Chip.tsx +++ b/src/components/Chip/Chip.tsx @@ -1,25 +1,25 @@ -import React from "react"; -import { IChipProps } from "./types"; -import { cva } from "class-variance-authority"; +import React from 'react'; +import { IChipProps } from './types'; +import { cva } from 'class-variance-authority'; const Chip = React.forwardRef((props, ref) => { - const { label, className, variant = "info", ...rest } = props; + const { label, className, variant = 'info', ...rest } = props; const variants = cva( - "px-4 py-1.5 font-medium text-sm md:text-md rounded-2xl", + 'px-4 py-1.5 font-medium text-sm md:text-md rounded-2xl', { variants: { variant: { - warn: "bg-light-yellow", - success: "bg-light-green", - danger: "bg-light-red", - alert: "bg-light-orange", - info: "bg-light-blue", - moreInfo: "bg-gray-200 text-black-600", + warn: 'bg-light-yellow', + success: 'bg-light-green', + danger: 'bg-light-red', + alert: 'bg-light-orange', + info: 'bg-light-blue', + moreInfo: 'bg-gray-200 text-black-600', }, }, defaultVariants: { - variant: "info", + variant: 'info', }, }, ); diff --git a/src/components/CircleStatus/CircleStatus.tsx b/src/components/CircleStatus/CircleStatus.tsx index 0b09c89d..e42f8384 100644 --- a/src/components/CircleStatus/CircleStatus.tsx +++ b/src/components/CircleStatus/CircleStatus.tsx @@ -1,7 +1,7 @@ -import React from "react"; +import React from 'react'; -import { ICircleStatus } from "./types"; -import { cn } from "@/lib/utils"; +import { ICircleStatus } from './types'; +import { cn } from '@/lib/utils'; const CircleStatus = React.forwardRef( (props, ref) => { diff --git a/src/components/DonationCart/components/DonationCartForm/DonationCartForm.tsx b/src/components/DonationCart/components/DonationCartForm/DonationCartForm.tsx index a8a92ffc..9e174fe7 100644 --- a/src/components/DonationCart/components/DonationCartForm/DonationCartForm.tsx +++ b/src/components/DonationCart/components/DonationCartForm/DonationCartForm.tsx @@ -1,33 +1,33 @@ -import React, { useCallback, useContext, useMemo, useState } from "react"; -import { Trash2 } from "lucide-react"; +import React, { useCallback, useContext, useMemo, useState } from 'react'; +import { Trash2 } from 'lucide-react'; import { SheetDescription, SheetFooter, SheetHeader, SheetTitle, -} from "../../../ui/sheet"; -import { DonationCartContext, SessionContext } from "@/contexts"; -import { Input } from "../../../ui/input"; -import { Button } from "../../../ui/button"; -import { SupplyMeasureMap, cn, getSupplyPriorityProps } from "@/lib/utils"; -import { CircleStatus } from "../../../CircleStatus"; -import { Separator } from "../../../ui/separator"; -import { IDonationCartItem } from "@/contexts/DonationCartContext/types"; +} from '../../../ui/sheet'; +import { DonationCartContext, SessionContext } from '@/contexts'; +import { Input } from '../../../ui/input'; +import { Button } from '../../../ui/button'; +import { SupplyMeasureMap, cn, getSupplyPriorityProps } from '@/lib/utils'; +import { CircleStatus } from '../../../CircleStatus'; +import { Separator } from '../../../ui/separator'; +import { IDonationCartItem } from '@/contexts/DonationCartContext/types'; import { DonationOrderServices, SessionServices, // ShelterSupplyServices, UserServices, -} from "@/service"; -import { IDonateItem } from "@/service/donationOrder/types"; -import { TextField } from "../../../TextField"; -import { ICreateUser } from "@/service/users/types"; -import { IDonationCartForm } from "./types"; +} from '@/service'; +import { IDonateItem } from '@/service/donationOrder/types'; +import { TextField } from '../../../TextField'; +import { ICreateUser } from '@/service/users/types'; +import { IDonationCartForm } from './types'; const DonationCartForm = React.forwardRef( (props, ref) => { - const { shelterId, onCancel, onSuccess, className = "", ...rest } = props; + const { shelterId, onCancel, onSuccess, className = '', ...rest } = props; const { refreshSession, session } = useContext(SessionContext); const { carts, removeItem, clearCart, updateItem } = useContext(DonationCartContext); @@ -76,11 +76,11 @@ const DonationCartForm = React.forwardRef( // ); const verifyAccountExists = useCallback(async (phone: string) => { - const { data } = await UserServices.find("phone", phone); + const { data } = await UserServices.find('phone', phone); if (data.exists) { setErrors({ phone: - "Já existe um usuário com este telefone. Faça login ou tente outro telefone", + 'Já existe um usuário com este telefone. Faça login ou tente outro telefone', }); return false; } @@ -99,12 +99,12 @@ const DonationCartForm = React.forwardRef( name: name.toString(), lastName: lastName.toString(), }); - const parsedPhone = phone.toString().replace(/[^0-9]/g, ""); + const parsedPhone = phone.toString().replace(/[^0-9]/g, ''); const resp = await SessionServices.auth({ login: parsedPhone, password: parsedPhone, }); - localStorage.setItem("token", resp.token); + localStorage.setItem('token', resp.token); refreshSession(); } @@ -141,7 +141,7 @@ const DonationCartForm = React.forwardRef( // } } } catch (err) { - console.log("Ocorreu um erro ao realizar a doação"); + console.log('Ocorreu um erro ao realizar a doação'); } finally { setLoading(false); } @@ -151,14 +151,14 @@ const DonationCartForm = React.forwardRef( return (
    - {[session?.name, "Revise sua doação"].filter((p) => !!p).join(", ")} + {[session?.name, 'Revise sua doação'].filter((p) => !!p).join(', ')} Ajuste a quantidade que gostaria de doar em cada item @@ -176,7 +176,7 @@ const DonationCartForm = React.forwardRef(
    {item.name}
    diff --git a/src/components/DonationCart/components/DonationSuccess/DonationSuccess.tsx b/src/components/DonationCart/components/DonationSuccess/DonationSuccess.tsx index 835d3dd6..774ad742 100644 --- a/src/components/DonationCart/components/DonationSuccess/DonationSuccess.tsx +++ b/src/components/DonationCart/components/DonationSuccess/DonationSuccess.tsx @@ -1,23 +1,23 @@ -import React, { createRef } from "react"; -import { useNavigate } from "react-router-dom"; -import { Circle, HeartHandshake, Loader, Printer } from "lucide-react"; -import { useReactToPrint } from "react-to-print"; -import { format } from "date-fns"; +import React, { createRef } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { Circle, HeartHandshake, Loader, Printer } from 'lucide-react'; +import { useReactToPrint } from 'react-to-print'; +import { format } from 'date-fns'; import { SheetHeader, SheetTitle, SheetDescription, -} from "@/components/ui/sheet"; -import { IDonationSuccessProps } from "./types"; -import { SupplyMeasureMap, cn } from "@/lib/utils"; -import { useDonationOrder } from "@/hooks"; -import { Button } from "@/components/ui/button"; -import { DonationVoucher } from "@/components"; +} from '@/components/ui/sheet'; +import { IDonationSuccessProps } from './types'; +import { SupplyMeasureMap, cn } from '@/lib/utils'; +import { useDonationOrder } from '@/hooks'; +import { Button } from '@/components/ui/button'; +import { DonationVoucher } from '@/components'; const DonationSuccess = React.forwardRef( (props, ref) => { - const { donationOrderId, className = "", ...rest } = props; + const { donationOrderId, className = '', ...rest } = props; const { data: donation, loading } = useDonationOrder(donationOrderId); const navigate = useNavigate(); const divRef = createRef(); @@ -29,7 +29,7 @@ const DonationSuccess = React.forwardRef( return ; return ( -
    +
    (

    {donation.shelter.name}

    - às{" "} + às{' '} {format(new Date(donation.createdAt), "HH'h'mm 'de' dd/MM/yy")}
    @@ -88,7 +88,7 @@ const DonationSuccess = React.forwardRef( diff --git a/src/components/DonationVoucher/DonationVoucher.tsx b/src/components/DonationVoucher/DonationVoucher.tsx index 9ea34974..00daa6c1 100644 --- a/src/components/DonationVoucher/DonationVoucher.tsx +++ b/src/components/DonationVoucher/DonationVoucher.tsx @@ -1,18 +1,18 @@ -import React from "react"; -import { Circle } from "lucide-react"; -import { format } from "date-fns"; +import React from 'react'; +import { Circle } from 'lucide-react'; +import { format } from 'date-fns'; -import { DonationStatusMap, SupplyMeasureMap, cn } from "@/lib/utils"; -import { IDonationVoucher } from "./types"; +import { DonationStatusMap, SupplyMeasureMap, cn } from '@/lib/utils'; +import { IDonationVoucher } from './types'; const DonationVoucher = React.forwardRef( (props, ref) => { - const { data, className = "", ...rest } = props; + const { data, className = '', ...rest } = props; return (
    @@ -53,7 +53,7 @@ const DonationVoucher = React.forwardRef(

- Criada às{" "} + Criada às{' '} {format(new Date(data.createdAt), "HH'h'mm 'de' dd/MM/yy")} pela plataforma sos-rs.com

diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index 9fbf9969..c1d3a200 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -1,24 +1,24 @@ -import React from "react"; -import { Heart } from "lucide-react"; -import { cn } from "@/lib/utils"; +import React from 'react'; +import { Heart } from 'lucide-react'; +import { cn } from '@/lib/utils'; const Footer = React.forwardRef< HTMLDivElement, - React.ComponentPropsWithoutRef<"div"> + React.ComponentPropsWithoutRef<'div'> >((props, ref) => { - const { className = "", ...rest } = props; + const { className = '', ...rest } = props; return ( ); diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx index d2feeb02..8effaa0a 100644 --- a/src/components/Header/Header.tsx +++ b/src/components/Header/Header.tsx @@ -17,12 +17,12 @@ const Header = React.forwardRef((props, ref) => {
-
+
{startAdornment} {title} diff --git a/src/components/Loader/Loader.tsx b/src/components/Loader/Loader.tsx index 9c9ca74c..e92ed0ab 100644 --- a/src/components/Loader/Loader.tsx +++ b/src/components/Loader/Loader.tsx @@ -4,7 +4,7 @@ import { ILoader } from './types'; const Loader = (props: ILoader) => { const { loading, children } = props; - if (loading) return ; + if (loading) return ; return children; }; diff --git a/src/components/LoadingScreen/LoadingScreen.tsx b/src/components/LoadingScreen/LoadingScreen.tsx index 861178ba..7b513868 100644 --- a/src/components/LoadingScreen/LoadingScreen.tsx +++ b/src/components/LoadingScreen/LoadingScreen.tsx @@ -23,7 +23,7 @@ const LoadingScreen = (props: ILoadingScreen) => { return (
- +
); }; diff --git a/src/components/LoadingSkeleton/LoadingSkeleton.tsx b/src/components/LoadingSkeleton/LoadingSkeleton.tsx index efbba4cf..59245788 100644 --- a/src/components/LoadingSkeleton/LoadingSkeleton.tsx +++ b/src/components/LoadingSkeleton/LoadingSkeleton.tsx @@ -5,37 +5,37 @@ type LoadingSkeletonProps = { const LoadingSkeleton = ({ amountItems }: LoadingSkeletonProps) => { return (
- -

+

Declaramos seguir os princípios de proteção de dados consolidados nas legislações vigentes no Brasil, especialmente, a Resolução{' '} CFM Nº 2299 DE 30/09/2021.

-
+
Coleta de informações
-

+

Coletamos apenas informações imprescindíveis para desempenhar nosso propósito. As informações coletadas e como essas informações são utilizadas dependem de como e do quanto você utiliza o SOS RS {' '} . Armazenamos as informações que coletamos.

-
+
Itens que você cria ou nos fornece
-

+

Ao cadastrar um abrigo, você nos fornece, inicialmente, informações pessoais, como seu nome e CPF. Ao alimentar nosso aplicativo, você fornece dados sobre os abrigos, os quais você, usuário, se responsabiliza integralmente, e que também são fornecidos para a comunidade, após alimentação, e podem ser armazenados pelo SOS-RS.

-
+
Informações que coletamos automaticamente quando você utiliza nossos serviços
-

+

Utilizamos apenas cookies temporários, com ID de sessão do servidor e dados de localização, quando autorizados, para otimizar sua experiência na plataforma. É possível redefinir seu navegador da web @@ -83,41 +83,41 @@ const PrivacyPolicy = () => { não funcionar corretamente, se a sua capacidade de aceitar cookies estiver desabilitada.

-
+
Por que o SOS RS coleta dados
-

+

Usamos as informações coletadas para auxiliar a fornecer, manter e melhorar a logística de suprimentos e disponibilidade em abrigos. Também para:

-
+
Entrar em contato com você
-

+

Se você for um abrigo, usamos as informações que coletamos para interagir diretamente com você.

-
+
Compartilhamento de suas informações
-

+

Podemos compartilhar os dados com a comunidade e outras soluções do mesmo grupo e segmento, para cumprimento do nosso propósito e outros fins que julgarmos pertinente.

-
+
Por motivos legais
-

+

Talvez precisemos compartilhar informações pessoais suas para fora do SOS, se isso for absolutamente necessário para cumprir a lei ou solicitação governamental ou judicial não abusiva.

-

+

Se o SOS RS {' '} realizar fusão, aquisição ou venda, continuará a garantir a @@ -125,46 +125,46 @@ const PrivacyPolicy = () => { antes que as informações sejam transferidas ou submetidas a uma política de privacidade diferente.

-
+
Mantemos suas informações seguras
-

+

Possuímos segurança que protege continuamente suas informações, o que inclui:

    -
  • +
  • 1. A utilização de criptografia para manter os seus dados pessoais privados enquanto estão em trânsito. Seus dados são, portanto, transferidos por uma conexão segura.
  • -
  • +
  • 2. A restrição ao acesso a informações personalíssimas de pessoas físicas por parte de outros usuários e desenvolvedores. E ainda, o rigoroso treinamento e cumprimento de obrigações de confidencialidade para os que possuem acesso total aos dados.
-
+
Exportar e excluir informações
-

+

Nossos desenvolvedores permitem solicitar a exclusão dos seus dados pessoais, enviando um e-mail para contato@sos-rs.com.

-
+
Retenção de suas informações e compliance
-

+

Reteremos suas informações por quanto tempo for necessário para satisfazer as finalidades para as quais elas foram coletadas ou para cumprir com os requerimentos legais aplicáveis.

-

+

Eventualmente os dados serão descartados após o encerramento do propósito do SOS RS {' '} . A nossa política de exclusão garante que os dados fornecidos sejam @@ -174,29 +174,29 @@ const PrivacyPolicy = () => { excluir ou exclui algo e o momento em que as cópias são definitivamente excluídas dos nossos sistemas ativos e de backup.

-
+
Você pode, a qualquer momento:
-

+

Atualizar, inativar e corrigir, remover e solicitar acesso às suas informações.

-
+
Dados de contato
-

+

Entre em contato conosco em caso de dúvidas, pelo e-mail{' '} contato@sos-rs.com. Você também pode travar contato com a autoridade local de proteção de dados, se possuir dúvidas sobre seus direitos de acordo com a legislação brasileira.

-
+
Quando esta política se aplica e alterações
-

+

Esta Política de Privacidade se aplica ao SOS RS {' '} . Nos reservamos ao direito de alterar este documento periodicamente, diff --git a/src/pages/Shelter/Shelter.tsx b/src/pages/Shelter/Shelter.tsx index 8a5ecd13..4dc1c671 100644 --- a/src/pages/Shelter/Shelter.tsx +++ b/src/pages/Shelter/Shelter.tsx @@ -112,14 +112,14 @@ const Shelter = () => { opened={opened} onClose={toggleOpened} /> -

+
navigate('/')} > @@ -129,9 +129,9 @@ const Shelter = () => { } /> -
+
-

+

{shelter.name}

{shelter.verified && } @@ -146,7 +146,7 @@ const Shelter = () => { >
-
+
{defaultPriorities.map((priority, idx) => { const { label, className } = getSupplyPriorityProps(priority); return ( @@ -187,7 +187,7 @@ const Shelter = () => { key={idx} label={label} className={cn( - 'bg-transparent border-[1px] border-border cursor-pointer', + 'cursor-pointer border-[1px] border-border bg-transparent', priorities.includes(priority) ? className : 'hover:bg-gray-100', @@ -197,7 +197,7 @@ const Shelter = () => { ); })}
-
+
{Object.entries(supplyGroups) .sort((a, b) => (a[0] > b[0] ? 1 : -1)) .map(([name, list], idx, arr) => { diff --git a/src/pages/Shelter/components/ShelterCategoryList/ShelterCategoryList.tsx b/src/pages/Shelter/components/ShelterCategoryList/ShelterCategoryList.tsx index b5cae4cf..375cb0ab 100644 --- a/src/pages/Shelter/components/ShelterCategoryList/ShelterCategoryList.tsx +++ b/src/pages/Shelter/components/ShelterCategoryList/ShelterCategoryList.tsx @@ -17,7 +17,7 @@ const ShelterCategoryList = (props: ShelterCategoryListProps) => { ); return ( -
+
{name} ({items.length} items)
@@ -29,13 +29,13 @@ const ShelterCategoryList = (props: ShelterCategoryListProps) => { return (
-
+
{item.name}
-
+
{item.quantity && ( {`${ item.quantity @@ -46,7 +46,7 @@ const ShelterCategoryList = (props: ShelterCategoryListProps) => { onClick={() => onDonate(item)} disabled={cart.some((c) => c.id === item.id)} className={clsx( - 'text-red-600 font-semibold hover:bg-red-50 active:bg-red-100 px-4 py-1 rounded-md disabled:bg-gray-50 disabled:text-gray-300 disabled:hover:bg-gray-50 disabled:active:bg-gray-100 disabled:cursor-not-allowed', + 'rounded-md px-4 py-1 font-semibold text-red-600 hover:bg-red-50 active:bg-red-100 disabled:cursor-not-allowed disabled:bg-gray-50 disabled:text-gray-300 disabled:hover:bg-gray-50 disabled:active:bg-gray-100', { invisible: item.priority === SupplyPriority.Remaining, }, diff --git a/src/pages/SignIn/SignIn.tsx b/src/pages/SignIn/SignIn.tsx index 9536b816..933d9232 100644 --- a/src/pages/SignIn/SignIn.tsx +++ b/src/pages/SignIn/SignIn.tsx @@ -46,11 +46,11 @@ const SignInComponent = () => { }); return ( -
-
+
+
-
-

+
+

SOS Rio Grande do Sul

@@ -73,7 +73,7 @@ const SignInComponent = () => { diff --git a/src/pages/Supporters/Supporters.tsx b/src/pages/Supporters/Supporters.tsx index a24d9102..32e584f2 100644 --- a/src/pages/Supporters/Supporters.tsx +++ b/src/pages/Supporters/Supporters.tsx @@ -9,24 +9,24 @@ const Supporters = () => { if (loading) return ; return ( -
+
} /> -
-

+
+

Apoiadores do projeto

-
+
{supporters .sort((a, b) => a.createdAt.localeCompare(b.createdAt)) .map((supporter, idx) => ( -
+
diff --git a/src/pages/UpdateShelter/UpdateShelter.tsx b/src/pages/UpdateShelter/UpdateShelter.tsx index 56715afd..40543a34 100644 --- a/src/pages/UpdateShelter/UpdateShelter.tsx +++ b/src/pages/UpdateShelter/UpdateShelter.tsx @@ -102,10 +102,10 @@ const UpdateShelter = () => { if (loading) return ; return ( -
+
{ } /> -
+
Atualização cadastral

Atualize as informações desejadas.

-
+
{ helperText={errors.zipCode} /> {Boolean(isLoadingZipCodeData) && ( - + )} { error={!!errors.neighbourhood} helperText={errors.neighbourhood} /> -
+
@@ -176,11 +176,11 @@ const UpdateShelter = () => { setFieldValue('city', v?.value); }} className={cn('w-full', { - 'border-[1px] border-red-600 rounded-md': errors.city, + 'rounded-md border-[1px] border-red-600': errors.city, })} /> {errors.city && ( -

{errors.city}

+

{errors.city}

)}
{ />
-
+