👽 traduction des étapes manquantes en vue du merge sur master
parent
06acb487ea
commit
29de00869e
|
@ -1,27 +1,20 @@
|
|||
import { goBackToSimulation } from 'Actions/actions'
|
||||
import { ScrollToTop } from 'Components/utils/Scroll'
|
||||
import { encodeRuleName } from 'Engine/rules'
|
||||
import {
|
||||
decodeRuleName,
|
||||
findRuleByDottedName,
|
||||
findRulesByName
|
||||
} from 'Engine/rules.js'
|
||||
import { compose, head, path } from 'ramda'
|
||||
import React, { Component } from 'react'
|
||||
import emoji from 'react-easy-emoji'
|
||||
import { Trans, withNamespaces } from 'react-i18next'
|
||||
import { connect } from 'react-redux'
|
||||
import { withRouter } from 'react-router'
|
||||
import { Link, Redirect } from 'react-router-dom'
|
||||
import {
|
||||
flatRulesSelector,
|
||||
noUserInputSelector,
|
||||
situationBranchNameSelector
|
||||
} from 'Selectors/analyseSelectors'
|
||||
import Namespace from './rule/Namespace'
|
||||
import Rule from './rule/Rule'
|
||||
import './RulePage.css'
|
||||
import SearchButton from './SearchButton'
|
||||
import { goBackToSimulation } from 'Actions/actions';
|
||||
import { ScrollToTop } from 'Components/utils/Scroll';
|
||||
import { encodeRuleName } from 'Engine/rules';
|
||||
import { decodeRuleName, findRuleByDottedName, findRulesByName } from 'Engine/rules.js';
|
||||
import { compose, head, path } from 'ramda';
|
||||
import React, { Component } from 'react';
|
||||
import emoji from 'react-easy-emoji';
|
||||
import { Trans, withNamespaces } from 'react-i18next';
|
||||
import { connect } from 'react-redux';
|
||||
import { withRouter } from 'react-router';
|
||||
import { Link, Redirect } from 'react-router-dom';
|
||||
import { flatRulesSelector, noUserInputSelector, situationBranchNameSelector } from 'Selectors/analyseSelectors';
|
||||
import { capitalise0 } from "../utils";
|
||||
import Namespace from './rule/Namespace';
|
||||
import Rule from './rule/Rule';
|
||||
import './RulePage.css';
|
||||
import SearchButton from './SearchButton';
|
||||
|
||||
export default compose(
|
||||
connect(state => ({
|
||||
|
@ -50,7 +43,7 @@ export default compose(
|
|||
if (rules.find(({ ns }) => ns == null))
|
||||
return this.renderRule(decodedRuleName)
|
||||
if (rules.length > 1)
|
||||
return <DisambiguateRuleQuery rules={rules} flatRules={flatRules} />
|
||||
return <DisambiguateRuleQuery rules={rules} flatRules={flatRules} name={name}/>
|
||||
let dottedName = head(rules).dottedName
|
||||
return this.renderRule(dottedName)
|
||||
}
|
||||
|
@ -93,8 +86,9 @@ const BackToSimulation = compose(
|
|||
}
|
||||
)
|
||||
|
||||
let DisambiguateRuleQuery = ({ rules, flatRules }) => (
|
||||
<div className="centeredMessage">
|
||||
let DisambiguateRuleQuery = ({ rules, flatRules, name }) => (
|
||||
<div className="centeredMessage ui__ container">
|
||||
<h1>{capitalise0(name)}</h1>
|
||||
<p>
|
||||
<Trans i18nKey="ambiguous">
|
||||
Plusieurs règles de la base ont ce nom. Laquelle voulez-vous afficher ?
|
||||
|
|
|
@ -1,17 +1,12 @@
|
|||
import { resetSimulation } from 'Actions/actions'
|
||||
import { React, T } from 'Components'
|
||||
import Answers from 'Components/AnswerList'
|
||||
import Conversation from 'Components/conversation/Conversation'
|
||||
import withColours from 'Components/utils/withColours'
|
||||
import { compose } from 'ramda'
|
||||
import { connect } from 'react-redux'
|
||||
import {
|
||||
blockingInputControlsSelector,
|
||||
nextStepsSelector,
|
||||
noUserInputSelector,
|
||||
validInputEnteredSelector
|
||||
} from 'Selectors/analyseSelectors'
|
||||
import Animate from 'Ui/animate'
|
||||
import { resetSimulation } from 'Actions/actions';
|
||||
import { React, T } from 'Components';
|
||||
import Answers from 'Components/AnswerList';
|
||||
import Conversation from 'Components/conversation/Conversation';
|
||||
import withColours from 'Components/utils/withColours';
|
||||
import { compose } from 'ramda';
|
||||
import { connect } from 'react-redux';
|
||||
import { blockingInputControlsSelector, nextStepsSelector, noUserInputSelector, validInputEnteredSelector } from 'Selectors/analyseSelectors';
|
||||
import Animate from 'Ui/animate';
|
||||
|
||||
export default compose(
|
||||
withColours,
|
||||
|
@ -61,7 +56,7 @@ export default compose(
|
|||
<button
|
||||
className="ui__ small button "
|
||||
onClick={() => this.setState({ displayAnswers: true })}>
|
||||
Voir mes réponses
|
||||
<T>Voir mes réponses</T>
|
||||
</button>
|
||||
) : (
|
||||
<span />
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import classNames from 'classnames'
|
||||
import { makeJsx } from 'Engine/evaluation'
|
||||
import { identity, any, compose, path, values } from 'ramda'
|
||||
import React from 'react'
|
||||
import { Trans, withNamespaces } from 'react-i18next'
|
||||
import './Algorithm.css'
|
||||
import classNames from 'classnames';
|
||||
import { makeJsx } from 'Engine/evaluation';
|
||||
import { any, compose, identity, path } from 'ramda';
|
||||
import React from 'react';
|
||||
import { Trans, withNamespaces } from 'react-i18next';
|
||||
import './Algorithm.css';
|
||||
// The showValues prop is passed as a context. It used to be delt in CSS (not(.showValues) display: none), both coexist right now
|
||||
import { ShowValuesProvider } from './ShowValuesContext'
|
||||
import { ShowValuesProvider } from './ShowValuesContext';
|
||||
|
||||
let Conditions = ({
|
||||
parentDependency,
|
||||
|
@ -34,18 +34,19 @@ export default compose(withNamespaces())(
|
|||
class Algorithm extends React.Component {
|
||||
render() {
|
||||
let { rule, showValues } = this.props
|
||||
let formula =
|
||||
rule['formule'] ||
|
||||
(rule.category === 'variable' && rule.explanation.formule),
|
||||
displayFormula =
|
||||
formula && !!Object.keys(formula).length &&
|
||||
!path(['formule', 'explanation', 'une possibilité'], rule)
|
||||
console.log(rule.dottedName, formula, displayFormula)
|
||||
return (
|
||||
<div id="algorithm">
|
||||
<section id="rule-rules" className={classNames({ showValues })}>
|
||||
<ShowValuesProvider value={showValues}>
|
||||
<Conditions {...rule} />
|
||||
{do {
|
||||
let formula =
|
||||
rule['formule'] ||
|
||||
(rule.category === 'variable' && rule.explanation.formule),
|
||||
displayFormula =
|
||||
formula &&
|
||||
!path(['formule', 'explanation', 'une possibilité'], rule)
|
||||
{
|
||||
displayFormula && (
|
||||
<section id="formule">
|
||||
<h2>
|
||||
|
@ -54,7 +55,7 @@ export default compose(withNamespaces())(
|
|||
{makeJsx(formula)}
|
||||
</section>
|
||||
)
|
||||
}}
|
||||
}
|
||||
</ShowValuesProvider>
|
||||
</section>
|
||||
</div>
|
||||
|
|
|
@ -1,36 +1,28 @@
|
|||
import withColours from 'Components/utils/withColours'
|
||||
import withLanguage from 'Components/utils/withLanguage'
|
||||
import withSitePaths from 'Components/utils/withSitePaths'
|
||||
import { getInputComponent } from 'Engine/generateQuestions'
|
||||
import knownMecanisms from 'Engine/known-mecanisms.yaml'
|
||||
import { createMarkdownDiv } from 'Engine/marked'
|
||||
import {
|
||||
encodeRuleName,
|
||||
findRuleByDottedName,
|
||||
findRuleByNamespace
|
||||
} from 'Engine/rules'
|
||||
import { compose, isEmpty, isNil } from 'ramda'
|
||||
import React, { Component, Suspense } from 'react'
|
||||
import emoji from 'react-easy-emoji'
|
||||
import Helmet from 'react-helmet'
|
||||
import { Trans, withNamespaces } from 'react-i18next'
|
||||
import { connect } from 'react-redux'
|
||||
import { Link } from 'react-router-dom'
|
||||
import { reduxForm } from 'redux-form'
|
||||
import {
|
||||
exampleAnalysisSelector,
|
||||
flatRulesSelector,
|
||||
noUserInputSelector,
|
||||
ruleAnalysisSelector
|
||||
} from 'Selectors/analyseSelectors'
|
||||
import Animate from 'Ui/animate'
|
||||
import Montant from 'Ui/Montant'
|
||||
import { AttachDictionary } from '../AttachDictionary'
|
||||
import Algorithm from './Algorithm'
|
||||
import Examples from './Examples'
|
||||
import RuleHeader from './Header'
|
||||
import References from './References'
|
||||
import './Rule.css'
|
||||
import { T } from "Components";
|
||||
import withColours from 'Components/utils/withColours';
|
||||
import withLanguage from 'Components/utils/withLanguage';
|
||||
import withSitePaths from 'Components/utils/withSitePaths';
|
||||
import { getInputComponent } from 'Engine/generateQuestions';
|
||||
import knownMecanisms from 'Engine/known-mecanisms.yaml';
|
||||
import { createMarkdownDiv } from 'Engine/marked';
|
||||
import { encodeRuleName, findRuleByDottedName, findRuleByNamespace } from 'Engine/rules';
|
||||
import { compose, isEmpty, isNil } from 'ramda';
|
||||
import React, { Component, Suspense } from 'react';
|
||||
import emoji from 'react-easy-emoji';
|
||||
import Helmet from 'react-helmet';
|
||||
import { Trans, withNamespaces } from 'react-i18next';
|
||||
import { connect } from 'react-redux';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { reduxForm } from 'redux-form';
|
||||
import { exampleAnalysisSelector, flatRulesSelector, noUserInputSelector, ruleAnalysisSelector } from 'Selectors/analyseSelectors';
|
||||
import Animate from 'Ui/animate';
|
||||
import Montant from 'Ui/Montant';
|
||||
import { AttachDictionary } from '../AttachDictionary';
|
||||
import Algorithm from './Algorithm';
|
||||
import Examples from './Examples';
|
||||
import RuleHeader from './Header';
|
||||
import References from './References';
|
||||
import './Rule.css';
|
||||
|
||||
let LazySource = React.lazy(() => import('./RuleSource'))
|
||||
|
||||
|
@ -58,7 +50,6 @@ export default compose(
|
|||
sitePaths,
|
||||
analysedExample,
|
||||
analysedRule,
|
||||
language
|
||||
} = this.props,
|
||||
flatRule = findRuleByDottedName(flatRules, dottedName)
|
||||
let { type, name, title, description, question, ns, icon } = flatRule,
|
||||
|
@ -66,7 +57,6 @@ export default compose(
|
|||
|
||||
let displayedRule = analysedExample || analysedRule
|
||||
let ruleFormat = displayedRule.format || displayedRule.explanation?.format
|
||||
console.log('ruleFormat', ruleFormat)
|
||||
return (
|
||||
<>
|
||||
{this.state.viewSource ? (
|
||||
|
@ -134,7 +124,7 @@ export default compose(
|
|||
? sitePaths.sécuritéSociale.index
|
||||
: sitePaths.index
|
||||
}>
|
||||
Simuler ma situation
|
||||
<T>Simuler ma situation</T>
|
||||
</Link>
|
||||
</div>
|
||||
)}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { resetSimulation, setSimulationConfig } from 'Actions/actions'
|
||||
import React from 'react'
|
||||
import { connect } from 'react-redux'
|
||||
import { resetSimulation, setSimulationConfig } from 'Actions/actions';
|
||||
import React from 'react';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
export default config => SimulationComponent =>
|
||||
connect(
|
||||
|
@ -22,7 +22,7 @@ export default config => SimulationComponent =>
|
|||
}
|
||||
render() {
|
||||
if (!this.props.config) return null
|
||||
return <SimulationComponent />
|
||||
return <SimulationComponent {...this.props}/>
|
||||
}
|
||||
}
|
||||
)
|
||||
|
|
|
@ -151,7 +151,6 @@ export let treatVariableTransforms = (rules, rule) => parseResult => {
|
|||
}
|
||||
if (!ruleToTransform.période) return filteredNode
|
||||
let environmentPeriod = situation('période') || 'mois'
|
||||
console.log(rule.dottedName, environmentPeriod)
|
||||
let callingPeriod =
|
||||
inlinePeriodTransform ||
|
||||
(rule.période === 'flexible' ? environmentPeriod : rule.période)
|
||||
|
|
|
@ -101,6 +101,7 @@ Part employeur: Employer share
|
|||
Part salariale: Employee share
|
||||
Total des retenues: Total withheld
|
||||
Fiche de paie mensuelle: Monthly payslip
|
||||
Fiche de paie: Payslip
|
||||
Détail annuel des cotisations: Annual detail of your contributions
|
||||
Voir la répartition des cotisations: View contribution breakdown
|
||||
Cotisations: Contributions
|
||||
|
@ -120,7 +121,7 @@ Cadre: '"Cadre" status'
|
|||
Temps partiel: Part time
|
||||
Autres: Other situations
|
||||
Mes réponses: My answers
|
||||
Modifier mes réponses: Change my answers
|
||||
Voir mes réponses: See my answers
|
||||
simulation-end:
|
||||
title: No more questions left!
|
||||
text: You have reached the most accurate estimate.
|
||||
|
@ -180,10 +181,6 @@ De: From
|
|||
En-dessous de: Below
|
||||
Au-dessus de: Above
|
||||
Taux final: Final rate
|
||||
|
||||
Créez votre entreprise: Start your business in France
|
||||
Créer votre entreprise: Create your company
|
||||
subtitle: The ultimate how-to guide, from incorporation to hiring.
|
||||
Commencer: Get started
|
||||
Passer: Skip
|
||||
|
||||
|
@ -260,16 +257,16 @@ entreprise:
|
|||
titre: Make a declaration of asset allocation
|
||||
description: >
|
||||
<0>
|
||||
The <1>declaration of asset allocation</1> allows you to separate professional
|
||||
assets from your personal assets, which then becomes unseizable. This procedure
|
||||
The <1>declaration of asset allocation</1> allows you to separate professional
|
||||
assets from your personal assets, which then becomes unseizable. This procedure
|
||||
is free of charge if it is carried out at the time of the creation
|
||||
of a company.
|
||||
</0>
|
||||
<1>
|
||||
To do so, simply declare which assets are allocated to the patrimony of your company.
|
||||
All the contributions necessary for your professional activity must be included
|
||||
(for example: goodwill, trademark, patent, or professional equipment). You can do
|
||||
the valuation of the asset yourself if it does not exceed €30,000.
|
||||
To do so, simply declare which assets are allocated to the patrimony of your company.
|
||||
All the contributions necessary for your professional activity must be included
|
||||
(for example: goodwill, trademark, patent, or professional equipment). You can do
|
||||
the valuation of the asset yourself if it does not exceed €30,000.
|
||||
</1>
|
||||
<2>
|
||||
<0>$t(Plus d'informations)</0>
|
||||
|
@ -329,9 +326,9 @@ autoentrepreneur:
|
|||
titre: Auto-entrepeneur
|
||||
description: >
|
||||
<0>
|
||||
The auto-entrepreneur benefits from a simplified scheme of declaration and payment, for which tax and social contributions
|
||||
are based on the turnover achieved each month. Available for companies whose annual
|
||||
turnover does not exceed €70,000 for services providers or €170,000 when the main activity
|
||||
The auto-entrepreneur benefits from a simplified scheme of declaration and payment, for which tax and social contributions
|
||||
are based on the turnover achieved each month. Available for companies whose annual
|
||||
turnover does not exceed €70,000 for services providers or €170,000 when the main activity
|
||||
is the sale of goods, catering or the provision of housing.
|
||||
</0>
|
||||
<1>
|
||||
|
@ -344,11 +341,11 @@ autoentrepreneur:
|
|||
</2>
|
||||
<3>
|
||||
<0>Note:</0>
|
||||
Some activities are excluded from this status (<2>see the list [fr]</2>). Some activities
|
||||
Some activities are excluded from this status (<2>see the list [fr]</2>). Some activities
|
||||
are regulated with a qualification or a professional experience (<4>see the list [fr])</4>).
|
||||
</3>
|
||||
<4>
|
||||
For all the other cases, it is advised to choose the standard status, which
|
||||
For all the other cases, it is advised to choose the standard status, which
|
||||
is <1>Individual Business.</1>
|
||||
</4>
|
||||
associés:
|
||||
|
@ -358,12 +355,12 @@ associés:
|
|||
titre: Number of partners
|
||||
description: >
|
||||
<0>
|
||||
A company with only one partner is easier to create and manage. A shareholder
|
||||
may be a natural person (an individual) or a legal person (for example,
|
||||
A company with only one partner is easier to create and manage. A shareholder
|
||||
may be a natural person (an individual) or a legal person (for example,
|
||||
another company).
|
||||
</0>
|
||||
<1>
|
||||
Note: this choice is not final. You can start your company on your own,
|
||||
Note: this choice is not final. You can start your company on your own,
|
||||
and welcome new partners as your business grows.
|
||||
</1>
|
||||
choix1: Only one partner
|
||||
|
@ -411,6 +408,7 @@ sécu:
|
|||
France has chosen to provide its citizens with a high-quality social safety net. This mandatory system is based on solidarity and designed to ensure the <strong>general welfare of its people
|
||||
</1>
|
||||
video: Social security explained visually
|
||||
entrepriseCrée: If you already own a company, we can <2>automatically customize</2> your simulations to your situation. All you have to do is <5>enter the name of your company</5>.
|
||||
|
||||
Votre entreprise: Your company
|
||||
Ce n'est pas mon entreprise: This is not my company
|
||||
|
@ -460,7 +458,7 @@ embauche:
|
|||
titre: Choose a payslip software
|
||||
description: >
|
||||
With fewer than 20 employees, payslips and declarations can be
|
||||
handled online by the <2> Tese (Fr)</2>, a tool developped by the french
|
||||
handled online by the <2> Tese (Fr)</2>, a tool developped by the french
|
||||
social administration. You can also use <5>a private payslip software (Fr)</5>
|
||||
registre:
|
||||
titre: Keep an updated staff register
|
||||
|
@ -486,6 +484,13 @@ embauche:
|
|||
</1>
|
||||
<2>Get an example payslip</2>
|
||||
|
||||
simulateur-salarié:
|
||||
page:
|
||||
titre: Estimate employee hiring cost
|
||||
description: Simulate an employee's contributions to the social security. Official complete calculation of all contributions. Discover the counterparties guaranteed by social security
|
||||
titre: Estimate social contributions for an employee
|
||||
description: As soon as an employee's employment is declared and paid, he or she is covered by the general social security system (health, maternity, invalidity, old age, occupational disease and accidents) and unemployment.
|
||||
|
||||
Guide du statut juridique: Legal status guide
|
||||
Démarches de création: Creation process checklist
|
||||
|
||||
|
@ -494,7 +499,7 @@ path:
|
|||
index: '/company'
|
||||
votreEntreprise: '/my-company'
|
||||
créer: '/create-a-{{companyStatus}}'
|
||||
autoEntrepreneur: '/become-{{companyStatus}}'
|
||||
devenirAutoEntrepreneur: '/become-{{autoEntrepreneur}}'
|
||||
trouver: '/find'
|
||||
après: '/after-registration'
|
||||
statutJuridique:
|
||||
|
@ -517,13 +522,13 @@ auto-entrepreneur-EIRL: auto-entrepreneur-with-EIRL-option
|
|||
privacyContent: >
|
||||
<0>$t(Vie privée)</0>
|
||||
<1>
|
||||
We do not store any personal data on our servers. All the information
|
||||
you provide (salaries, company postal code, SIREN etc.) is saved only
|
||||
We do not store any personal data on our servers. All the information
|
||||
you provide (salaries, company postal code, SIREN etc.) is saved only
|
||||
on your browser. No one else can have access to it but you.
|
||||
</1>
|
||||
<2>
|
||||
However, we do collect anonymous statistics on site usage, which we use
|
||||
for the sole purpose of improving the service, in accordance with the
|
||||
However, we do collect anonymous statistics on site usage, which we use
|
||||
for the sole purpose of improving the service, in accordance with the
|
||||
<2>recommendations of the CNIL</2> and the DPRG directive.
|
||||
</2>
|
||||
<3>You can opt out below.</3>
|
||||
|
@ -555,7 +560,24 @@ Année: Year
|
|||
mois: month
|
||||
an: year
|
||||
par: per
|
||||
Explorez notre base de règles: Explore our rules
|
||||
Explorez notre documentation: Explore our documentation
|
||||
|
||||
maj2019: The simulation is up-to-date in 2019.
|
||||
siteName: mycompanyinfrance.fr
|
||||
siteName: My company in France
|
||||
|
||||
Simuler ma situation: Simulate my situation
|
||||
Exemples: Examples
|
||||
Intégrer le simulateur: Integrate the simulator
|
||||
|
||||
# Landing infrance
|
||||
Que souhaitez vous faire ?: What do you want to do?
|
||||
Créer votre entreprise: Create your company
|
||||
subtitle: The official guide for entrepreneurs
|
||||
Connaître les démarches d'embauche: Know the hiring procedures
|
||||
Estimer les cotisations et les taxes: Estimate contributions and taxes
|
||||
Créer une entreprise: Create a company in France
|
||||
Déclarer mon activité d'économie collaborative: Declare my activity in the sharing economy
|
||||
prochainement: soon
|
||||
|
||||
Estimer les cotisations sociales pour une embauche: Estimate the social security contributions for a hiring
|
||||
À quoi servent mes cotisations ?: How are my contributions distributed?
|
||||
|
|
|
@ -4,7 +4,7 @@ import { analyse, analyseMany, parseAll } from 'Engine/traverse';
|
|||
import { add, contains, difference, equals, head, intersection, isNil, mergeDeepWith, pick } from 'ramda';
|
||||
import { getFormValues } from 'redux-form';
|
||||
import { createSelector, createSelectorCreator, defaultMemoize } from 'reselect';
|
||||
import { softCatch } from '../utils';
|
||||
import { mapOrApply, softCatch } from '../utils';
|
||||
|
||||
// create a "selector creator" that uses deep equal instead of ===
|
||||
const createDeepEqualSelector = createSelectorCreator(defaultMemoize, equals)
|
||||
|
@ -16,7 +16,6 @@ const createDeepEqualSelector = createSelectorCreator(defaultMemoize, equals)
|
|||
*
|
||||
* */
|
||||
|
||||
const mapOrApply = (fn, x) => (Array.isArray(x) ? x.map(fn) : fn(x))
|
||||
|
||||
export let flatRulesSelector = createSelector(
|
||||
state => state.lang,
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import LangSwitcher from 'Components/LangSwitcher'
|
||||
import React, { Component } from 'react'
|
||||
import { withRouter } from 'react-router'
|
||||
import { T } from "Components";
|
||||
import { Link } from 'react-router-dom'
|
||||
import { withNamespaces } from 'react-i18next'
|
||||
import Logo from '../images/logo/logo-simulateur.svg'
|
||||
|
@ -58,16 +59,16 @@ export const Header = compose(
|
|||
let Links = ({ toggle }) => (
|
||||
<div id="links" onClick={toggle}>
|
||||
<Link className="menu-item" to="/exemples">
|
||||
Exemples
|
||||
<T>Exemples</T>
|
||||
</Link>
|
||||
<Link className="menu-item" to="/intégrer">
|
||||
Intégrer le module
|
||||
<T>Intégrer le simulateur</T>
|
||||
</Link>
|
||||
<Link className="menu-item" to="/règles">
|
||||
Nos règles
|
||||
<Link className="menu-item" to="/documentation">
|
||||
<T>Documentation</T>
|
||||
</Link>
|
||||
<Link className="menu-item" to="/à-propos">
|
||||
À propos
|
||||
<T>À propos</T>
|
||||
</Link>
|
||||
</div>
|
||||
)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import { Component, React, T } from 'Components'
|
||||
import SearchBar from 'Components/SearchBar'
|
||||
import { connect } from 'react-redux'
|
||||
import 'react-select/dist/react-select.css'
|
||||
import { flatRulesSelector } from 'Selectors/analyseSelectors'
|
||||
import './RulesList.css'
|
||||
import { Component, React, T } from 'Components';
|
||||
import SearchBar from 'Components/SearchBar';
|
||||
import { connect } from 'react-redux';
|
||||
import 'react-select/dist/react-select.css';
|
||||
import { flatRulesSelector } from 'Selectors/analyseSelectors';
|
||||
import './RulesList.css';
|
||||
|
||||
export default connect(state => ({
|
||||
flatRules: flatRulesSelector(state)
|
||||
|
@ -14,7 +14,7 @@ export default connect(state => ({
|
|||
return (
|
||||
<div id="RulesList" className="ui__ container">
|
||||
<h1>
|
||||
<T>Explorez notre base de règles</T>
|
||||
<T>Explorez notre documentation</T>
|
||||
</h1>
|
||||
<SearchBar showDefaultList={true} rules={flatRules} />
|
||||
</div>
|
||||
|
|
|
@ -1,32 +1,29 @@
|
|||
import RulePage from 'Components/RulePage'
|
||||
import TrackPageView from 'Components/utils/TrackPageView'
|
||||
import withSitePaths from 'Components/utils/withSitePaths'
|
||||
import { defaultTracker } from 'Components/utils/withTracker'
|
||||
import { compose } from 'ramda'
|
||||
import createRavenMiddleware from 'raven-for-redux'
|
||||
import Raven from 'raven-js'
|
||||
import React, { Component } from 'react'
|
||||
import Helmet from 'react-helmet'
|
||||
import { withNamespaces } from 'react-i18next'
|
||||
import { Route, Switch } from 'react-router-dom'
|
||||
import 'Ui/index.css'
|
||||
import Provider from '../../Provider'
|
||||
import {
|
||||
persistEverything,
|
||||
retrievePersistedState
|
||||
} from '../../storage/persistEverything'
|
||||
import ReactPiwik from '../../Tracker'
|
||||
import './App.css'
|
||||
import Footer from './layout/Footer/Footer'
|
||||
import Navigation from './layout/Navigation/Navigation'
|
||||
import ProgressHeader from './layout/ProgressHeader/ProgressHeader'
|
||||
import trackSimulatorActions from './middlewares/trackSimulatorActions'
|
||||
import CompanyIndex from './pages/Company'
|
||||
import HiringProcess from './pages/HiringProcess'
|
||||
import Landing from './pages/Landing'
|
||||
import Sitemap from './pages/Sitemap'
|
||||
import SocialSecurity from './pages/SocialSecurity'
|
||||
import sitePaths from './sitePaths'
|
||||
import RulePage from 'Components/RulePage';
|
||||
import TrackPageView from 'Components/utils/TrackPageView';
|
||||
import withSitePaths from 'Components/utils/withSitePaths';
|
||||
import { defaultTracker } from 'Components/utils/withTracker';
|
||||
import { compose } from 'ramda';
|
||||
import createRavenMiddleware from 'raven-for-redux';
|
||||
import Raven from 'raven-js';
|
||||
import React, { Component } from 'react';
|
||||
import Helmet from 'react-helmet';
|
||||
import { withNamespaces } from 'react-i18next';
|
||||
import { Route, Switch } from 'react-router-dom';
|
||||
import 'Ui/index.css';
|
||||
import Provider from '../../Provider';
|
||||
import { persistEverything, retrievePersistedState } from '../../storage/persistEverything';
|
||||
import ReactPiwik from '../../Tracker';
|
||||
import './App.css';
|
||||
import Footer from './layout/Footer/Footer';
|
||||
import Navigation from './layout/Navigation/Navigation';
|
||||
import ProgressHeader from './layout/ProgressHeader/ProgressHeader';
|
||||
import trackSimulatorActions from './middlewares/trackSimulatorActions';
|
||||
import CompanyIndex from './pages/Company';
|
||||
import HiringProcess from './pages/HiringProcess';
|
||||
import Landing from './pages/Landing';
|
||||
import Sitemap from './pages/Sitemap';
|
||||
import SocialSecurity from './pages/SocialSecurity';
|
||||
import sitePaths from './sitePaths';
|
||||
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
Raven.config(
|
||||
|
@ -88,7 +85,7 @@ const App = compose(
|
|||
withNamespaces()
|
||||
)(({ sitePaths, t }) => (
|
||||
<div className="app-container">
|
||||
<Helmet titleTemplate={`%s | ${t(['siteName', 'mon-entreprise.fr'])}`} />
|
||||
<Helmet titleTemplate={`%s | ${t(['siteName', 'Mon-entreprise.fr'])}`} />
|
||||
{/* Passing location down to prevent update blocking */}
|
||||
<Navigation location={location} />
|
||||
<div className="app-content">
|
||||
|
|
|
@ -1,22 +1,19 @@
|
|||
/* @flow */
|
||||
import {
|
||||
checkCompanyCreationItem,
|
||||
initializeCompanyCreationChecklist
|
||||
} from 'Actions/companyCreationChecklistActions'
|
||||
import { goToCompanyStatusChoice } from 'Actions/companyStatusActions'
|
||||
import { React, T } from 'Components'
|
||||
import Scroll from 'Components/utils/Scroll'
|
||||
import withSitePaths from 'Components/utils/withSitePaths'
|
||||
import { compose } from 'ramda'
|
||||
import Helmet from 'react-helmet'
|
||||
import { withNamespaces } from 'react-i18next'
|
||||
import { connect } from 'react-redux'
|
||||
import { Link } from 'react-router-dom'
|
||||
import * as Animate from 'Ui/animate'
|
||||
import { CheckItem, Checklist } from 'Ui/Checklist'
|
||||
import { LANDING_LEGAL_STATUS_LIST } from '../../sitePaths'
|
||||
import Page404 from '../404'
|
||||
import StatusDescription from './StatusDescription'
|
||||
import { checkCompanyCreationItem, initializeCompanyCreationChecklist } from 'Actions/companyCreationChecklistActions';
|
||||
import { goToCompanyStatusChoice } from 'Actions/companyStatusActions';
|
||||
import { React, T } from 'Components';
|
||||
import Scroll from 'Components/utils/Scroll';
|
||||
import withSitePaths from 'Components/utils/withSitePaths';
|
||||
import { compose } from 'ramda';
|
||||
import Helmet from 'react-helmet';
|
||||
import { withNamespaces } from 'react-i18next';
|
||||
import { connect } from 'react-redux';
|
||||
import { Link } from 'react-router-dom';
|
||||
import * as Animate from 'Ui/animate';
|
||||
import { CheckItem, Checklist } from 'Ui/Checklist';
|
||||
import { LANDING_LEGAL_STATUS_LIST } from '../../sitePaths';
|
||||
import Page404 from '../404';
|
||||
import StatusDescription from './StatusDescription';
|
||||
|
||||
import type { Match } from 'react-router'
|
||||
import type { TFunction } from 'react-i18next'
|
||||
|
@ -45,6 +42,7 @@ const CreateCompany = ({
|
|||
const companyStatus = LANDING_LEGAL_STATUS_LIST.find(
|
||||
status => t(status) === match.params.status
|
||||
)
|
||||
console.log('yopyop', status, companyStatus)
|
||||
const isAutoentrepreneur = [
|
||||
'auto-entrepreneur',
|
||||
'auto-entrepreneur-EIRL'
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
import withSitePaths from 'Components/utils/withSitePaths'
|
||||
import { compose } from 'ramda'
|
||||
import React from 'react'
|
||||
import { withNamespaces } from 'react-i18next'
|
||||
import { connect } from 'react-redux'
|
||||
import { Redirect, Route, Switch } from 'react-router'
|
||||
import * as Animate from 'Ui/animate'
|
||||
import AfterRegistration from './AfterRegistration'
|
||||
import AutoEntrepreneur from './AutoEntrepreneur'
|
||||
import CreationChecklist from './CreationChecklist'
|
||||
import DefineDirectorStatus from './DirectorStatus'
|
||||
import Find from './Find'
|
||||
import Home from './Home'
|
||||
import Liability from './Liability'
|
||||
import MinorityDirector from './MinorityDirector'
|
||||
import NumberOfAssociate from './NumberOfAssociate'
|
||||
import PickLegalStatus from './PickLegalStatus'
|
||||
import YourCompany from './YourCompany'
|
||||
import withSitePaths from 'Components/utils/withSitePaths';
|
||||
import { compose } from 'ramda';
|
||||
import React from 'react';
|
||||
import { withNamespaces } from 'react-i18next';
|
||||
import { connect } from 'react-redux';
|
||||
import { Redirect, Route, Switch } from 'react-router';
|
||||
import * as Animate from 'Ui/animate';
|
||||
import AfterRegistration from './AfterRegistration';
|
||||
import AutoEntrepreneur from './AutoEntrepreneur';
|
||||
import CreationChecklist from './CreationChecklist';
|
||||
import DefineDirectorStatus from './DirectorStatus';
|
||||
import Find from './Find';
|
||||
import Home from './Home';
|
||||
import Liability from './Liability';
|
||||
import MinorityDirector from './MinorityDirector';
|
||||
import NumberOfAssociate from './NumberOfAssociate';
|
||||
import PickLegalStatus from './PickLegalStatus';
|
||||
import YourCompany from './YourCompany';
|
||||
const withAnimation = Component => {
|
||||
const AnimateRouteComponent = (...props) => (
|
||||
<Animate.fromBottom>
|
||||
|
@ -32,6 +32,7 @@ const CreateMyCompany = ({
|
|||
existingCompany,
|
||||
sitePaths
|
||||
}) => {
|
||||
console.log('sitapath', sitePaths.entreprise.créer(':status'))
|
||||
return (
|
||||
<>
|
||||
<Animate.fromBottom>
|
||||
|
@ -40,10 +41,7 @@ const CreateMyCompany = ({
|
|||
path={sitePaths.entreprise.votreEntreprise}
|
||||
component={YourCompany}
|
||||
/>
|
||||
<Route
|
||||
path={sitePaths.entreprise.créer(':status')}
|
||||
component={CreationChecklist}
|
||||
/>
|
||||
{sitePaths.entreprise.créer(':status').map(path => <Route path={path} key={path} component={CreationChecklist} />)}
|
||||
<Route path={sitePaths.entreprise.trouver} component={Find} />
|
||||
<Route
|
||||
path={sitePaths.entreprise.après}
|
||||
|
|
|
@ -85,8 +85,7 @@
|
|||
.landing__choice--soon img {
|
||||
filter: saturate(0%);
|
||||
}
|
||||
.landing__choice--soon::after {
|
||||
content: 'prochainement';
|
||||
.landing__choice-label {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
font-size: 66%;
|
||||
|
|
|
@ -1,34 +1,40 @@
|
|||
/* @flow */
|
||||
|
||||
import withColours from 'Components/utils/withColours'
|
||||
import withSitePaths from 'Components/utils/withSitePaths'
|
||||
import marianneSvg from 'Images/marianne.svg'
|
||||
import urssafSvg from 'Images/urssaf.svg'
|
||||
import { compose } from 'ramda'
|
||||
import React from 'react'
|
||||
import emoji from 'react-easy-emoji'
|
||||
import { Trans, withNamespaces } from 'react-i18next'
|
||||
import { Link } from 'react-router-dom'
|
||||
import Animate from 'Ui/animate'
|
||||
import Footer from '../layout/Footer/Footer'
|
||||
import './Landing.css'
|
||||
import { T } from 'Components';
|
||||
import withColours from 'Components/utils/withColours';
|
||||
import withSitePaths from 'Components/utils/withSitePaths';
|
||||
import marianneSvg from 'Images/marianne.svg';
|
||||
import urssafSvg from 'Images/urssaf.svg';
|
||||
import { compose } from 'ramda';
|
||||
import React from 'react';
|
||||
import emoji from 'react-easy-emoji';
|
||||
import { withNamespaces } from 'react-i18next';
|
||||
import { Link } from 'react-router-dom';
|
||||
import Animate from 'Ui/animate';
|
||||
import Footer from '../layout/Footer/Footer';
|
||||
import './Landing.css';
|
||||
import type {ThemeColours} from 'Components/utils/withColours'
|
||||
import type {SitePaths} from 'Components/utils/withSitePaths'
|
||||
|
||||
type Props = {
|
||||
colours: ThemeColours,
|
||||
sitePaths: SitePaths
|
||||
}
|
||||
export default compose(
|
||||
withNamespaces(),
|
||||
withSitePaths,
|
||||
withColours,
|
||||
withSitePaths
|
||||
)(({ colours: { colour }, sitePaths }) => (
|
||||
<>
|
||||
withNamespaces(),
|
||||
)(({ colours: { colour }, sitePaths }: Props) => (
|
||||
<div className="app-content">
|
||||
<section className="landing__banner" style={{ backgroundColor: colour }}>
|
||||
<header>
|
||||
<h1>
|
||||
<Trans>Mon-entreprise.fr</Trans>
|
||||
<T k="siteName">Mon-entreprise.fr</T>
|
||||
</h1>
|
||||
<p className="ui__ lead" style={{ maxWidth: '35rem' }}>
|
||||
<Trans i18nKey="subtitle">
|
||||
Les ressources pour créer et administrer votre activité en toute
|
||||
simplicité.
|
||||
</Trans>
|
||||
<T k="subtitle">
|
||||
Le guide officiel du créateur d'entreprise
|
||||
</T>
|
||||
</p>
|
||||
|
||||
<svg
|
||||
|
@ -39,36 +45,35 @@ export default compose(
|
|||
</svg>
|
||||
</header>
|
||||
</section>
|
||||
<section className="ui__ container">
|
||||
<section className="ui__ container" style={{flex: 1}}>
|
||||
<div className="landing__header">
|
||||
<img alt="logo marianne" src={marianneSvg} />
|
||||
<img alt="logo urssaf" src={urssafSvg} />
|
||||
</div>
|
||||
<h2 style={{ textAlign: 'center', marginBottom: '2rem' }}>
|
||||
Que souhaitez vous faire ?
|
||||
<T>Que souhaitez vous faire ?</T>
|
||||
</h2>
|
||||
<Animate.fromBottom>
|
||||
<Link className="landing__choice " to={sitePaths.entreprise.index}>
|
||||
{emoji('💡')} Créer une entreprise
|
||||
{emoji('💡')} <T>Créer une entreprise</T>
|
||||
</Link>
|
||||
|
||||
<Link className="landing__choice " to={sitePaths.sécuritéSociale.index}>
|
||||
{emoji('💶')} Estimer les cotisations et les taxes
|
||||
{emoji('💶')} <T>Estimer les cotisations et les taxes</T>
|
||||
</Link>
|
||||
|
||||
<Link className="landing__choice" to={sitePaths.démarcheEmbauche.index}>
|
||||
{emoji('🤝')} Connaître les démarches d'embauche
|
||||
{emoji('🤝')} <T>Connaître les démarches d'embauche</T>
|
||||
</Link>
|
||||
<Link className="landing__choice landing__choice--soon" to={'/'}>
|
||||
{emoji('🏡')} Déclarer mon activité d'économie collaborative
|
||||
<span className="landing__choice-label"><T>prochainement</T></span>
|
||||
{emoji('🏡')} <T>Déclarer mon activité d'économie collaborative</T>
|
||||
</Link>
|
||||
|
||||
{/*
|
||||
<Link className="landing__choice landing__choice--soon" to={'/'}>
|
||||
{emoji('🌍')} Démarrer une activité en France en tant qu'entrepreneur
|
||||
étranger
|
||||
</Link>
|
||||
</Link> */}
|
||||
</Animate.fromBottom>
|
||||
</section>
|
||||
<Footer />
|
||||
</>
|
||||
</div>
|
||||
))
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
/* @flow */
|
||||
|
||||
import { Component, React, T } from 'Components';
|
||||
import { ScrollToTop } from 'Components/utils/Scroll';
|
||||
import withLanguage from 'Components/utils/withLanguage';
|
||||
import withSitePaths from 'Components/utils/withSitePaths';
|
||||
import { compose } from 'ramda';
|
||||
import emoji from 'react-easy-emoji';
|
||||
import Helmet from 'react-helmet';
|
||||
import { withNamespaces } from 'react-i18next';
|
||||
import { connect } from 'react-redux';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { régimeSelector } from 'Selectors/companyStatusSelectors';
|
||||
import * as Animate from 'Ui/animate';
|
||||
import Video from './Video';
|
||||
import { Component, React, T } from 'Components'
|
||||
import { ScrollToTop } from 'Components/utils/Scroll'
|
||||
import withLanguage from 'Components/utils/withLanguage'
|
||||
import withSitePaths from 'Components/utils/withSitePaths'
|
||||
import { compose } from 'ramda'
|
||||
import emoji from 'react-easy-emoji'
|
||||
import Helmet from 'react-helmet'
|
||||
import { withNamespaces } from 'react-i18next'
|
||||
import { connect } from 'react-redux'
|
||||
import { Link } from 'react-router-dom'
|
||||
import { régimeSelector } from 'Selectors/companyStatusSelectors'
|
||||
import * as Animate from 'Ui/animate'
|
||||
import Video from './Video'
|
||||
|
||||
import type { Match, Location } from 'react-router'
|
||||
import type { TFunction } from 'react-i18next'
|
||||
|
@ -52,39 +52,48 @@ class SocialSecurity extends Component<Props, {}> {
|
|||
</T>
|
||||
{showFindYourCompanyLink && (
|
||||
<p>
|
||||
Si vous possédez déjà une entreprise, nous pouvons{' '}
|
||||
<strong>automatiquement personnaliser</strong> vos simulations à
|
||||
votre situation. Il vous suffit juste de{' '}
|
||||
<Link to={sitePaths.entreprise.trouver}>
|
||||
renseigner le nom de votre entreprise.
|
||||
</Link>
|
||||
<T k="sécu.entrepriseCrée">
|
||||
Si vous possédez déjà une entreprise, nous pouvons{' '}
|
||||
<strong>automatiquement personnaliser</strong> vos simulations
|
||||
à votre situation. Il vous suffit juste de{' '}
|
||||
<Link to={sitePaths.entreprise.trouver}>
|
||||
renseigner le nom de votre entreprise.
|
||||
</Link>
|
||||
</T>
|
||||
</p>
|
||||
)}
|
||||
{!['mycompanyinfrance.fr', 'mon-entreprise.fr'].includes(window.location.hostname) ? <>
|
||||
<br />
|
||||
<h2 style={{ textAlign: 'center', marginBottom: '2rem' }}>
|
||||
Que souhaitez vous estimer ?
|
||||
</h2>
|
||||
<Link
|
||||
className="landing__choice "
|
||||
to={
|
||||
régime
|
||||
? sitePaths.sécuritéSociale[régime]
|
||||
: sitePaths.sécuritéSociale.comparaison
|
||||
}>
|
||||
{emoji('👔')} La rémunération du dirigeant
|
||||
</Link>
|
||||
<Link
|
||||
className="landing__choice "
|
||||
to={sitePaths.sécuritéSociale.salarié}>
|
||||
{emoji('👥')} Le salaire d'un employé
|
||||
</Link>
|
||||
<br />
|
||||
</> : <Link
|
||||
className="landing__choice "
|
||||
to={sitePaths.sécuritéSociale.salarié}>
|
||||
{emoji('👥')} Estimer les cotisations sociales pour une embauche
|
||||
</Link>}
|
||||
{['mycompanyinfrance.fr', 'mon-entreprise.fr'].includes(
|
||||
window.location.hostname
|
||||
) ? (
|
||||
<>
|
||||
<br />
|
||||
<h2 style={{ textAlign: 'center', marginBottom: '2rem' }}>
|
||||
Que souhaitez vous estimer ?
|
||||
</h2>
|
||||
<Link
|
||||
className="landing__choice "
|
||||
to={
|
||||
régime
|
||||
? sitePaths.sécuritéSociale[régime]
|
||||
: sitePaths.sécuritéSociale.comparaison
|
||||
}>
|
||||
{emoji('👔')} La rémunération du dirigeant
|
||||
</Link>
|
||||
<Link
|
||||
className="landing__choice "
|
||||
to={sitePaths.sécuritéSociale.salarié}>
|
||||
{emoji('👥')} Le salaire d'un employé
|
||||
</Link>
|
||||
<br />
|
||||
</>
|
||||
) : (
|
||||
<Link
|
||||
className="landing__choice "
|
||||
to={sitePaths.sécuritéSociale.salarié}>
|
||||
{emoji('👥')}{' '}
|
||||
<T>Estimer les cotisations sociales pour une embauche</T>
|
||||
</Link>
|
||||
)}
|
||||
|
||||
<Video />
|
||||
</Animate.fromBottom>
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
import { React, T } from 'Components'
|
||||
import SalaryExplanation from 'Components/SalaryExplanation'
|
||||
import Simulation from 'Components/Simulation'
|
||||
import salariéConfig from 'Components/simulationConfigs/salarié.yaml'
|
||||
import withSimulationConfig from 'Components/simulationConfigs/withSimulationConfig'
|
||||
import TargetSelection from 'Components/TargetSelection'
|
||||
import withSitePaths from 'Components/utils/withSitePaths'
|
||||
import { Helmet } from 'react-helmet'
|
||||
import { Link } from 'react-router-dom'
|
||||
import { React, T } from 'Components';
|
||||
import SalaryExplanation from 'Components/SalaryExplanation';
|
||||
import Simulation from 'Components/Simulation';
|
||||
import salariéConfig from 'Components/simulationConfigs/salarié.yaml';
|
||||
import withSimulationConfig from 'Components/simulationConfigs/withSimulationConfig';
|
||||
import TargetSelection from 'Components/TargetSelection';
|
||||
import withSitePaths from 'Components/utils/withSitePaths';
|
||||
import { compose } from 'ramda';
|
||||
import { Helmet } from 'react-helmet';
|
||||
import { withNamespaces } from 'react-i18next';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
export let SalarySimulation = withSitePaths(({ sitePaths }) => (
|
||||
<Simulation
|
||||
|
@ -30,24 +32,25 @@ export let SalarySimulation = withSitePaths(({ sitePaths }) => (
|
|||
/>
|
||||
))
|
||||
|
||||
const Salarié = () => (
|
||||
const Salarié = ({t}) => (
|
||||
<>
|
||||
<Helmet>
|
||||
<title>
|
||||
Salarié au régime général : cotisations et protection sociale{' '}
|
||||
{t(['simulateur-salarié.page.titre', 'Salarié au régime général : cotisations et protection sociale'])}
|
||||
</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="Simulez les cotisations d'un salarié au régime général. Calcul complet de toutes les cotisations. Découvrez les contreparties garanties par sécurité sociale"
|
||||
content={t(['simulateur-salarié.page.description', "Simulez les cotisations d'un salarié au régime général. Calcul complet de toutes les cotisations. Découvrez les contreparties garanties par sécurité sociale"])}
|
||||
/>
|
||||
</Helmet>
|
||||
<h1>Salarié au régime général</h1>
|
||||
<p>
|
||||
<h1><T k="simulateur-salarié.titre">Salarié au régime général</T></h1>
|
||||
<p><T k="simulateur-salarié.description">
|
||||
Dès que l'embauche d'un salarié est déclarée et qu'il est payé, il est
|
||||
couvert par le régime général de la Sécurité sociale (santé, maternité,
|
||||
invalidité, vieillesse, maladie professionnelle et accidents) et chômage.
|
||||
</T>
|
||||
</p>
|
||||
<SalarySimulation />
|
||||
</>
|
||||
)
|
||||
export default withSimulationConfig(salariéConfig)(Salarié)
|
||||
export default compose(withNamespaces(), withSimulationConfig(salariéConfig))(Salarié)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* @flow */
|
||||
import { reduce, toPairs, zipObj } from 'ramda'
|
||||
import i18n from '../../i18n'
|
||||
import { constructSitePaths } from '../../utils'
|
||||
import { reduce, toPairs, zipObj } from 'ramda';
|
||||
import i18n from '../../i18n';
|
||||
import { constructSitePaths } from '../../utils';
|
||||
import type { LegalStatus } from 'Selectors/companyStatusSelectors'
|
||||
|
||||
export const LANDING_LEGAL_STATUS_LIST: Array<LegalStatus> = [
|
||||
|
@ -34,15 +34,15 @@ const constructLocalizedSitePath = language => {
|
|||
),
|
||||
créer: (companyStatus: LegalStatus | ':status') =>
|
||||
companyStatus === ':status'
|
||||
? `(${t('path.entreprise.créer', '/créer-une-{{companyStatus}}', {
|
||||
? [t('path.entreprise.créer', '/créer-une-{{companyStatus}}',{
|
||||
companyStatus: ':status'
|
||||
})}|${t(
|
||||
}), t(
|
||||
'path.entreprise.devenirAutoEntrepreneur',
|
||||
'/devenir-{{autoEntrepreneur}}',
|
||||
{
|
||||
autoEntrepreneur: ':status'
|
||||
}
|
||||
)})`
|
||||
)]
|
||||
: companyStatus.includes('auto-entrepreneur')
|
||||
? t(
|
||||
'path.entreprise.devenirAutoEntrepreneur',
|
||||
|
@ -52,7 +52,7 @@ const constructLocalizedSitePath = language => {
|
|||
}
|
||||
)
|
||||
: t('path.entreprise.créer', '/créer-une-{{companyStatus}}', {
|
||||
companyStatus: ':status'
|
||||
companyStatus
|
||||
}),
|
||||
|
||||
trouver: t('path.entreprise.trouver', '/retrouver-votre-entreprise'),
|
||||
|
|
|
@ -82,6 +82,8 @@ export function softCatch<ArgType: any, ReturnType: any>(
|
|||
}
|
||||
}
|
||||
}
|
||||
export const mapOrApply = (fn, x) => (Array.isArray(x) ? x.map(fn) : fn(x))
|
||||
|
||||
|
||||
export const constructSitePaths = (
|
||||
root: string,
|
||||
|
@ -93,7 +95,7 @@ export const constructSitePaths = (
|
|||
typeof value === 'string'
|
||||
? root + index + value
|
||||
: typeof value === 'function'
|
||||
? (...args) => root + index + value(...args)
|
||||
? (...args) => mapOrApply(x => root + index + x, value(...args))
|
||||
: constructSitePaths(root + index, value),
|
||||
sitePaths
|
||||
)
|
||||
|
|
|
@ -59,12 +59,12 @@ module.exports = {
|
|||
template: 'index.html',
|
||||
chunks: ['mon-entreprise'],
|
||||
title:
|
||||
'Mon-entreprise.fr : Le guide officiel pour créer et administrer votre activité',
|
||||
"Mon-entreprise.fr : Le guide officiel du créateur d'entreprise",
|
||||
description:
|
||||
'Du statut juridique à la première embauche, en passant par la simulation des cotisations, vous trouverez ici toutes les ressources pour démarrer votre activité.',
|
||||
filename: 'mon-entreprise.html'
|
||||
}),
|
||||
|
||||
|
||||
new CopyPlugin([
|
||||
'./manifest.webmanifest',
|
||||
'./source/sites/embauche.gouv.fr/images/logo',
|
||||
|
|
Loading…
Reference in New Issue