diff --git a/modele-social/règles/entreprise/imposition.yaml b/modele-social/règles/entreprise/imposition.yaml index aa2b2e438..b013f4a43 100644 --- a/modele-social/règles/entreprise/imposition.yaml +++ b/modele-social/règles/entreprise/imposition.yaml @@ -14,6 +14,11 @@ entreprise . imposition: alors: "'IR'" - sinon: "'IS'" + références: + Comment seront imposés mes bénéfices ?: https://bpifrance-creation.fr/moment-de-vie/comment-seront-imposes-mes-benefices?block_id=186 + Comment choisir l'imposition sur le revenu ?: https://entreprendre.service-public.fr/vosdroits/F31265 + Guide complet sur les types de résultats d'une entreprise: https://www.impots.gouv.fr/professionnel/resultat-imposable-limpot-sur-le-revenu-ir-ou-limpot-sur-les-societes + entreprise . imposition . IR: valeur: imposition = 'IR' titre: Impôt sur le revenu (IR) @@ -42,13 +47,18 @@ entreprise . imposition . IR . type de bénéfices: - BNC - BIC - BA + références: + 'Impôt sur le revenu : BIC, BNC, comment ça marche ?': https://www.economie.gouv.fr/entreprises/impot-sur-revenu-bic-bnc entreprise . imposition . IR . type de bénéfices . BNC: valeur: type de bénéfices = 'BNC' + références: + 'Bénéfices non commerciaux (BNC) : régimes fiscaux et déclarations': https://entreprendre.service-public.fr/vosdroits/F32105 entreprise . imposition . IR . type de bénéfices . BIC: valeur: type de bénéfices = 'BIC' - + références: + 'Bénéfices non commerciaux (BIC) : régime fiscal et déclarations': https://entreprendre.service-public.fr/vosdroits/F32919 entreprise . imposition . IR . type de bénéfices . BA: applicable si: BA possible valeur: type de bénéfices = 'BA' @@ -93,6 +103,8 @@ entreprise . imposition . IS: un impôt fixe sur ces derniers : c'est ce que l'on appelle la "flat tax". Dans tous les cas, vous aurez à payer des **cotisations sociales** sur les revenus que vous touchez. + références: + "Impôt sur les sociétés : entreprises concernées et taux d'imposition": https://entreprendre.service-public.fr/vosdroits/F23575 entreprise . imposition . IS . montant: unité: €/an diff --git a/site/source/components/References.tsx b/site/source/components/References.tsx new file mode 100644 index 000000000..7ff41eac9 --- /dev/null +++ b/site/source/components/References.tsx @@ -0,0 +1,106 @@ +import { EngineContext } from '@/components/utils/EngineContext' +import { Link } from '@/design-system/typography/link' +import { Li, Ul } from '@/design-system/typography/list' +import { DottedName } from 'modele-social' +import { useContext } from 'react' +import styled from 'styled-components' + +export function References({ + references, +}: { + references: Record +}) { + return ( + + ) +} + +function Reference({ href, title }: { href: string; title: string }) { + const domain = getDomain(href) + + return ( +
  • + +
    + {title} +
    + {domain in referencesImages && ( + + )} + +
  • + ) +} + +const StyledImage = styled.img` + border: 1px solid ${({ theme }) => theme.colors.extended.grey[400]}; + padding: ${({ theme }) => theme.spacings.xs}; + top: -${({ theme }) => theme.spacings.xs}; + position: relative; + + max-width: 100%; + border-radius: ${({ theme }) => theme.box.borderRadius}; + background-color: ${({ theme }) => theme.colors.extended.grey[100]}; + + max-height: 2.5rem; +` +const referencesImages = { + 'service-public.fr': '/références-images/service-public.png', + 'impots.gouv.fr': '/références-images/impots.gouv.svg', + 'entreprendre.service-public.fr': + '/références-images/entreprendre.service-public.png', + 'legifrance.gouv.fr': '/références-images/marianne.png', + 'urssaf.fr': '/références-images/Urssaf.svg', + 'secu-independants.fr': '/références-images/Urssaf.svg', + 'gouv.fr': '/références-images/marianne.png', + 'agirc-arrco.fr': '/références-images/agirc-arrco.png', + 'pole-emploi.fr': '/références-images/pole-emploi.png', + 'ladocumentationfrançaise.fr': + '/références-images/ladocumentationfrançaise.png', + 'senat.fr': '/références-images/senat.png', + 'ameli.fr': '/références-images/ameli.png', + 'bpifrance-creation.fr': '/références-images/bpi-création.png', + 'economie.gouv.fr': '/références-images/economie.gouv.png', +} + +const getDomain = (link: string) => + (link.includes('://') ? link.split('/')[2] : link.split('/')[0]).replace( + 'www.', + '' + ) + +export function RuleReferences({ dottedNames }: { dottedNames: DottedName[] }) { + const engine = useContext(EngineContext) + + return ( + + ) +} diff --git a/site/source/components/conversation/Explicable.tsx b/site/source/components/conversation/Explicable.tsx index 3482715dc..06035e0ae 100644 --- a/site/source/components/conversation/Explicable.tsx +++ b/site/source/components/conversation/Explicable.tsx @@ -1,8 +1,10 @@ import { EngineContext } from '@/components/utils/EngineContext' import { Markdown } from '@/components/utils/markdown' import ButtonHelp from '@/design-system/buttons/ButtonHelp' +import { H3 } from '@/design-system/typography/heading' import { DottedName } from 'modele-social' import { useContext } from 'react' +import { References } from '../References' export function ExplicableRule({ dottedName, @@ -37,6 +39,12 @@ export function ExplicableRule({ bigPopover={bigPopover} > {rule.rawNode.description} + {rule.rawNode.références && ( + <> +

    Liens utiles

    + + + )} ) diff --git a/site/source/design-system/card/Article.tsx b/site/source/design-system/card/Article.tsx index ddfb564a0..cdae9fabd 100644 --- a/site/source/design-system/card/Article.tsx +++ b/site/source/design-system/card/Article.tsx @@ -1,4 +1,3 @@ -import { useButton } from '@react-aria/button' import { FocusStyle } from '@/design-system/global-style' import { Chevron } from '@/design-system/icons' import { H4 } from '@/design-system/typography/heading' @@ -9,6 +8,7 @@ import { useExternalLinkProps, } from '@/design-system/typography/link' import { Body } from '@/design-system/typography/paragraphs' +import { useButton } from '@react-aria/button' import React, { useRef } from 'react' import { Link as RouterLink } from 'react-router-dom' import styled from 'styled-components' @@ -23,6 +23,7 @@ export function Article({ title, ctaLabel, children, + icon, ...ariaButtonProps }: ArticleProps) { diff --git a/site/source/design-system/card/Card.tsx b/site/source/design-system/card/Card.tsx index 210a659b0..9ec47b5cb 100644 --- a/site/source/design-system/card/Card.tsx +++ b/site/source/design-system/card/Card.tsx @@ -1,6 +1,6 @@ import { StyledButton } from '@/design-system/buttons/Button' import { FocusStyle } from '@/design-system/global-style' -import { H3, HeadingUnderline } from '@/design-system/typography/heading' +import { H3, H4, HeadingUnderline } from '@/design-system/typography/heading' import { GenericButtonOrLinkProps, NewWindowLinkIcon, @@ -44,7 +44,12 @@ export function Card({ ({ ...theme, darkMode: false })}> {icon && {icon}} - {title && } + {title && + (compact ? ( + + ) : ( + + ))}
    ['renderers']['References'] - > - >['references'] -} - -export function References({ references }: ReferencesProps) { - const cleanDomain = (link: string) => - (link.includes('://') ? link.split('/')[2] : link.split('/')[0]).replace( - 'www.', - '' - ) - - return ( - - {Object.entries(references).map(([name, link]) => { - const domain = cleanDomain(link) - - return ( -
  • - - {Object.keys(referencesImages).includes(domain) && ( - {`logo - )} - - - {capitalise0(name)} - - {domain} -
  • - ) - })} -
    - ) -} - -const StyledReferences = styled.ul` - list-style: none; - padding: 0; - a { - flex: 1; - min-width: 45%; - text-decoration: underline; - margin-right: 1rem; - } - - li { - margin-bottom: 0.6em; - width: 100%; - display: flex; - align-items: center; - } - .imageWrapper { - width: 4.5rem; - height: 3rem; - display: flex; - align-items: center; - justify-content: center; - margin-right: 1rem; - } - img { - max-height: 3rem; - vertical-align: sub; - max-width: 100%; - border-radius: 0.3em; - } -` - type OverrideComponentType = { componentStyle: { rules: Array< diff --git a/site/source/pages/gerer/declaration-revenu-independants/imposition.tsx b/site/source/pages/gerer/declaration-revenu-independants/imposition.tsx index c3f95cbfe..827caba6b 100644 --- a/site/source/pages/gerer/declaration-revenu-independants/imposition.tsx +++ b/site/source/pages/gerer/declaration-revenu-independants/imposition.tsx @@ -7,6 +7,7 @@ import { WhenApplicable, WhenNotApplicable, } from '@/components/EngineValue' +import { RuleReferences } from '@/components/References' import { FromTop } from '@/components/ui/animate' import { useEngine } from '@/components/utils/EngineContext' import { Markdown } from '@/components/utils/markdown' @@ -96,6 +97,19 @@ export default function Imposition() { )} + + + Modifier le type d'imposition @@ -144,6 +158,19 @@ export default function Imposition() { ) : ( (null as unknown as JSX.Element) // Problem with AriaAccordionProps type )} + + + diff --git a/site/source/public/références-images/economie.gouv.png b/site/source/public/références-images/economie.gouv.png new file mode 100644 index 000000000..113d645fb Binary files /dev/null and b/site/source/public/références-images/economie.gouv.png differ diff --git a/site/source/public/références-images/entreprendre.service-public.png b/site/source/public/références-images/entreprendre.service-public.png new file mode 100644 index 000000000..33fea990f Binary files /dev/null and b/site/source/public/références-images/entreprendre.service-public.png differ diff --git a/site/source/public/références-images/impots.gouv.svg b/site/source/public/références-images/impots.gouv.svg new file mode 100644 index 000000000..00e96f506 --- /dev/null +++ b/site/source/public/références-images/impots.gouv.svg @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/source/public/références-images/service-public.png b/site/source/public/références-images/service-public.png new file mode 100644 index 000000000..eba06aee9 Binary files /dev/null and b/site/source/public/références-images/service-public.png differ