{ "version": 3, "sources": ["../../../../../../owl-nest/common/tip/src/index.tsx", "../../../../../../owl-nest/common/tip/src/components/input/StandaloneTipInput.tsx", "../../../../../../owl-nest/common/tip/src/components/TipFrequencySwitch.tsx", "../../../../../../owl-nest/common/tip/src/components/input/TipInput.tsx", "../../../../../../owl-nest/common/tip/src/components/TipPreset.tsx", "../../../../../../owl-nest/common/tip/src/components/TaxDeductionModal.tsx"], "sourcesContent": ["import * as React from 'react'\n\nimport { Formik, Field, Form } from 'formik'\nimport styled from 'styled-components'\n\nimport type * as api from '@owl-nest/api-client/latest'\nimport { t, tc } from '@owl-nest/localize'\nimport * as money from '@owl-nest/money'\nimport * as models from '@owl-nest/models'\nimport * as shadow from '@owl-nest/shadow'\nimport * as hooks from '@owl-nest/hooks'\nimport * as services from '@owl-nest/services'\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as env from '@owl-nest/config'\nimport * as yup from '@owl-nest/validators'\n\nimport { StandaloneTipInput } from './components/input/StandaloneTipInput'\nimport { TipFrequencySwitch } from './components/TipFrequencySwitch'\nimport { TipInput } from './components/input/TipInput'\nimport { TipPreset } from './components/TipPreset'\n\n// FIXME: remove this style and add @container css directly on TipView/TipFrenquence\n// when we update style-component to v6\n// don't forget to remove the two classname too\nimport './style.css'\n\nexport { TaxDeductionModal } from './components/TaxDeductionModal'\n\ntype TipProps = {\n allowNullValue?: boolean\n className?: string\n context?: string\n disableCta?: boolean\n frequency?: models.project.DonationFrequency\n handleFormSubmit: (values: FormValues) => void\n preFilledTip?: {\n amount?: number\n frequency?: models.project.DonationFrequency\n }\n presetsTip?: number[]\n project: api.Project\n removable?: boolean\n translations?: {\n placeholder?: string\n submit: React.ReactNode\n }\n withDisclaimer?: boolean\n withFromMention?: boolean\n withPresets?: boolean\n callout?: React.ReactNode\n}\n\nexport type FormValues = {\n donation: number\n frequency?: models.project.DonationFrequency\n inputValue: string\n}\n\nfunction TipComponent({\n allowNullValue = false,\n className,\n callout,\n context = 'checkout',\n disableCta = false,\n frequency,\n handleFormSubmit,\n preFilledTip,\n presetsTip,\n project,\n removable,\n translations,\n withDisclaimer = false,\n withPresets = false,\n withFromMention = false,\n}: TipProps): React.ReactElement<TipProps> {\n const allowedFrequency = models.project.allowedDonationFrequency(project)\n const currency = env.CURRENCIES_SYMBOL[project.currency].symbol\n const initialFrequency = allowedFrequency === 'all' ? frequency || 'one-time' : allowedFrequency\n const [donationFrequency, setDonationFrequency] = React.useState(initialFrequency)\n\n const [isInformativeModalOpen, setInformativeModalAsOpen] = React.useState(false)\n const setIsTaxDeductionModalOpen = hooks.useSetModal('DonationTaxDeductionInfo')\n const [amountAfterTaxReduction, setAmountAfterTaxReduction] = React.useState(0)\n\n const isDonationBasedProject = models.project.isDonationBased(project)\n const isMembershipProject = models.project.isMembership(project)\n\n const presets = getPresets()\n\n const schema = yup.object({\n donation: yup\n .numberWithComma()\n .min(0)\n .typeError(() => t('This field must be a number')),\n })\n const tracking = shadow.useTracking()\n const userConfig = env.useUserEnv()\n\n return (\n <TipView className={className}>\n <Formik\n initialValues={{\n donation: preFilledTip?.amount && presets?.includes(preFilledTip?.amount) ? preFilledTip?.amount : 0,\n frequency: isDonationBasedProject ? donationFrequency : undefined,\n inputValue:\n preFilledTip?.amount && (!withPresets || (withPresets && !presets?.includes(preFilledTip?.amount)))\n ? String(preFilledTip?.amount)\n : '',\n }}\n validationSchema={schema}\n onSubmit={onSubmit}\n >\n {({ errors, resetForm, setFieldValue, values }) => {\n React.useEffect(() => {\n resetForm()\n if (isDonationBasedProject) {\n setFieldValue('frequency', donationFrequency)\n }\n }, [donationFrequency])\n\n React.useEffect(() => {\n if (values.donation > 0 && project.tax_deductible) {\n services.order\n .create(project.id, {\n dry_run: true,\n tip: values.donation,\n // fake data that is required by the endpoint, but useless for\n // a dry_run\n payment_method: 'credit',\n return_url: location.href,\n })\n .then((result) => {\n result.next((response) => {\n setAmountAfterTaxReduction(response.tax_deductible_total ?? 0)\n })\n })\n }\n }, [values.donation])\n\n const handleInputChange = (value: string) => {\n setFieldValue('inputValue', value)\n setFieldValue('donation', Number(value.replace(/,/g, '.')))\n }\n\n const handlePresetChange = (value: number) => {\n setFieldValue('donation', value)\n setFieldValue('inputValue', '')\n }\n\n const resetSubmit = () => {\n setFieldValue('donation', undefined)\n setFieldValue('inputValue', '')\n }\n\n return (\n <Form>\n <TipContainerWrapper>\n {isDonationBasedProject && allowedFrequency === 'all' && (\n <TipFrequencySwitch\n className={'tip-frenquency-tip-component'}\n frequency={donationFrequency}\n setFrequency={setDonationFrequency}\n />\n )}\n {withPresets ? (\n <TipPresetsWrapper>\n {presets.map((amount) => (\n <TipPreset\n amount={<money.MoneyDisplayer amount={amount} project={project} />}\n checked={values.donation === amount && !values.inputValue}\n id={`${context}-tip-preset-${amount}`}\n key={amount}\n name={`${context}_tip_preset_${amount}`}\n onChange={() => {\n handlePresetChange(amount)\n }}\n />\n ))}\n\n <TipInput\n symbol={models.project.currencySymbol(project)}\n error={errors.donation !== undefined}\n onChange={handleInputChange}\n selected={!!values.inputValue}\n translations={translations}\n value={values.inputValue}\n />\n </TipPresetsWrapper>\n ) : (\n <StandaloneTipInput\n symbol={models.project.currencySymbol(project)}\n onChange={handleInputChange}\n selected={!!values.inputValue}\n translations={translations}\n value={values.inputValue}\n error={errors.donation}\n />\n )}\n </TipContainerWrapper>\n\n {callout}\n\n <>\n <StyledCallToAction\n type=\"submit\"\n disabled={disableCta || (!allowNullValue ? !values.donation && !values.inputValue : false)}\n >\n {isDonationBasedProject ? (\n <>\n {values.donation > 0 || values.inputValue ? (\n <>\n {donationFrequency === 'monthly'\n ? t('Donate %(amount)s per month', {\n amount: t('%(currency)s%(amount)s', {\n amount: values.donation > 0 ? values.donation : values.inputValue,\n currency,\n }),\n })\n : t('Donate %(amount)s', {\n amount: t('%(currency)s%(amount)s', {\n amount: values.donation > 0 ? values.donation : values.inputValue,\n currency,\n }),\n })}\n </>\n ) : (\n <>\n {withFromMention ? (\n <>\n {donationFrequency === 'monthly'\n ? t('Donate from %(amount)s per month', {\n amount: t('%(currency)s%(amount)s', {\n amount: 1,\n currency,\n }),\n })\n : t('Donate from %(amount)s', {\n amount: t('%(currency)s%(amount)s', {\n amount: 1,\n currency,\n }),\n })}\n </>\n ) : (\n <>{donationFrequency === 'monthly' ? t('Donate each month') : t('Donate')}</>\n )}\n </>\n )}\n </>\n ) : (\n <>{translations?.submit ? translations.submit : t('Back now')}</>\n )}\n </StyledCallToAction>\n\n {project.tax_deductible && withPresets && (\n <>\n <TaxInfo kind=\"primary\" tinted type=\"button\" onClick={() => setIsTaxDeductionModalOpen(true)}>\n <plume.glyphs.stroke.Percent size={18} />\n {!values.donation\n ? t('This donation is tax-deductible!')\n : donationFrequency === 'monthly'\n ? t('%(price)s after tax reduction', {\n price: plume.accounting.localeMoney(amountAfterTaxReduction, {\n currency: project.currency,\n lang: userConfig.lang,\n }),\n })\n : t('%(price)s after tax reduction', {\n price: plume.accounting.localeMoney(amountAfterTaxReduction, {\n currency: project.currency,\n lang: userConfig.lang,\n }),\n })}\n </TaxInfo>\n </>\n )}\n\n {removable && (\n <RemoveButton\n kind=\"secondary\"\n onClick={() => {\n resetSubmit()\n }}\n >\n {t('Remove')}\n </RemoveButton>\n )}\n </>\n\n {donationFrequency === 'monthly' && withDisclaimer && (\n <MonthlyDonationCallout customIcon={plume.glyphs.stroke.Reroll} type=\"info\">\n {tc(\n '[strong: Monthly donation:] first payment today and then every month on this date. No commitment, you stop when you want.',\n { strong: <strong /> },\n )}\n </MonthlyDonationCallout>\n )}\n\n {withDisclaimer && (\n <>\n {isDonationBasedProject && (\n <>\n <Disclaimer>\n {tc(\n \"[strong: You are making a donation to a fundraiser.] Ulule does not guarantee that the project will be completed and is not responsible for the project team's commitment to their backers.\",\n { strong: <strong /> },\n )}\n </Disclaimer>\n <plume.styles.copy.XS>\n <ModalTriggerLink\n kind=\"secondary\"\n onClick={() => setInformativeModalAsOpen(true)}\n type=\"button\"\n underlined\n withIcon\n >\n <plume.glyphs.stroke.Lock size={16} />\n {t('Secure and final payment')}\n </ModalTriggerLink>\n </plume.styles.copy.XS>\n <money.SecurePaymentModal\n open={isInformativeModalOpen}\n projectIsDonationBased\n setOpen={setInformativeModalAsOpen}\n />\n </>\n )}\n </>\n )}\n </Form>\n )\n }}\n </Formik>\n </TipView>\n )\n\n function getPresets(): number[] {\n if (isDonationBasedProject || isMembershipProject) {\n if (donationFrequency === 'monthly' || isMembershipProject) {\n return [5, 10, 20]\n }\n\n return presetsTip ?? [10, 25, 50]\n }\n\n return presetsTip ?? [25, 50, 100]\n }\n\n function onSubmit(values: FormValues) {\n // We add this condition because values.donation is undefined when a tip is removed\n if (values.donation) {\n tracking.ecommerce.track('add_to_cart', {\n currency: project.currency,\n value: values.donation,\n items: [\n {\n item_id: 'tip',\n item_name: 'tip',\n item_brand: models.project.name(project),\n price: values.donation,\n quantity: 1,\n },\n ],\n })\n }\n handleFormSubmit(values)\n }\n}\n\nexport const Tip = styled(TipComponent)<TipProps>``\n\nexport const RemoveButton = styled(plume.LinkAsButton)``\n\nconst TaxInfo = styled(plume.LinkAsButton)`\n align-items: center;\n display: flex;\n flex: 0 0 100%;\n justify-content: center;\n margin-top: 16px;\n padding: 0;\n text-align: center;\n width: 100%;\n\n ${plume.glyphs.stroke.Percent} {\n color: ${plume.COLORS.PRIMARY_SAND_500};\n margin-right: 6px;\n margin-top: -1px;\n }\n`\n\nconst Disclaimer = styled(plume.styles.copy.S)`\n margin: 20px auto;\n`\n\nconst ModalTriggerLink = styled(plume.LinkAsButton)`\n margin: 0 auto;\n padding: 2px;\n`\n\nconst MonthlyDonationCallout = styled(plume.Callout)`\n margin-top: 20px;\n\n ${plume.glyphs.stroke.Reroll} {\n color: ${plume.COLORS.PRIMARY_BLUE_700};\n }\n`\n\nconst TipView = styled.div``\n\nexport const TipPresetsWrapper = styled.div`\n align-items: center;\n display: flex;\n width: 100%;\n gap: 8px;\n flex-wrap: wrap;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n flex-wrap: nowrap;\n gap: 14px;\n }\n`\n\nconst StyledCallToAction = styled(plume.Button)`\n margin-top: 16px;\n width: 100%;\n`\n\nexport const TipContainerWrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n position: relative;\n`\n\n// FIXME: Used elsewhere, why? We need to clean this up.\n\nexport const InputRadioWrapper = styled.div`\n min-height: 50px;\n width: calc(20% - 5px);\n`\n\nconst TipCurrency = styled(plume.styles.copy.S)`\n align-items: center;\n color: ${plume.COLORS.PRIMARY_GREY_500};\n display: flex;\n justify-content: space-between;\n padding: 0;\n width: 100%;\n\n ${money.CurrencyWrapper} {\n ${plume.styles.copy._mediumStyle};\n align-items: center;\n color: ${plume.COLORS.PRIMARY_GREY_500};\n display: flex;\n flex: 1;\n justify-content: center;\n min-width: 40px;\n padding: 13px 0;\n }\n`\n\nconst TipInputField = styled(Field)`\n ${plume.styles.copy._smallStyle}\n border: 0px;\n box-sizing: border-box;\n height: 48px;\n padding: 15px 10px;\n width: 92%;\n\n &::placeholder {\n ${plume.styles.copy._smallStyle}\n color: ${plume.COLORS.PRIMARY_GREY_500};\n }\n\n &:required {\n box-shadow: none;\n }\n\n &:invalid {\n box-shadow: 0 0 0 transparent;\n }\n\n &:hover,\n &:focus {\n outline: none;\n }\n`\n\ntype InputWrapperProps = {\n isSelected: boolean\n}\n\nexport const InputWrapper = styled.div<InputWrapperProps>`\n align-items: center;\n border: 1px solid ${({ isSelected }) => (isSelected ? plume.COLORS.PRIMARY_BLUE_500 : plume.COLORS.PRIMARY_SAND_200)};\n box-sizing: border-box;\n color: ${({ isSelected }) => (isSelected ? plume.COLORS.PRIMARY_BLUE_500 : plume.COLORS.PRIMARY_SAND_200)};\n display: flex;\n justify-content: space-between;\n margin-right: 0;\n transition: 0.3s ease;\n width: 100%;\n\n ${TipCurrency}, ${money.CurrencyWrapper} {\n color: ${({ isSelected }) => (isSelected ? plume.COLORS.PRIMARY_BLUE_500 : plume.COLORS.PRIMARY_SAND_200)};\n }\n\n ${money.CurrencyWrapper} + ${TipInputField} {\n border-left: 1px solid\n ${({ isSelected }) => (isSelected ? plume.COLORS.PRIMARY_BLUE_500 : plume.COLORS.PRIMARY_SAND_200)};\n }\n\n ${TipInputField} + ${money.CurrencyWrapper} {\n border-left: 1px solid\n ${({ isSelected }) => (isSelected ? plume.COLORS.PRIMARY_BLUE_500 : plume.COLORS.PRIMARY_SAND_200)};\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n margin-right: 9px;\n\n &:hover {\n border-color: ${plume.COLORS.PRIMARY_BLUE_500};\n cursor: pointer;\n }\n }\n`\n\nexport { TipFrequencySwitch }\n", "import * as React from 'react'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport * as money from '@owl-nest/money'\nimport * as env from '@owl-nest/config'\n\nimport { InputProps } from './types'\n\nexport function StandaloneTipInput({\n symbol,\n onChange,\n selected,\n translations,\n value,\n error,\n}: InputProps & {\n error?: string\n}): React.ReactElement<InputProps> {\n const userConfig = env.useUserEnv()\n\n return (\n <plume.MoneyField\n placeholder={translations?.placeholder}\n selected={selected}\n symbol={symbol}\n symbolPosition={money.getPosition(userConfig.lang)}\n value={value}\n onChange={(event) => {\n onChange?.(event.target.value)\n }}\n error={error}\n />\n )\n}\n", "import * as React from 'react'\nimport styled, { css } from 'styled-components'\n\nimport { t } from '@owl-nest/localize'\nimport * as models from '@owl-nest/models'\nimport * as plume from '@ulule/owl-kit-components/next'\n\ntype FrequencySwitchProps = {\n className?: string | undefined\n frequency: models.project.DonationFrequency\n setFrequency: React.Dispatch<React.SetStateAction<models.project.DonationFrequency>>\n}\n\nexport function FrequencySwitch({ className, frequency, setFrequency }: FrequencySwitchProps): React.ReactElement {\n const leftLabel = t('One-time')\n const rightLabel = t('Monthly')\n\n const { containerWidth, leftOffset, pillWidth } = React.useMemo(() => {\n const containerWidth = (leftLabel.length + rightLabel.length) * 10 + 10\n const pillWidth = containerWidth / 2\n const leftOffset = (leftLabel.length + rightLabel.length) * 5\n\n return {\n containerWidth,\n leftOffset,\n pillWidth,\n }\n }, [])\n\n return (\n <Wrapper className={className}>\n <Container width={containerWidth}>\n <Checkbox\n checked={frequency === 'monthly'}\n leftOffset={leftOffset}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => {\n setFrequency(event.target.checked ? 'monthly' : 'one-time')\n }}\n />\n <Pill secondLabel={rightLabel} width={pillWidth}>\n <Label>{leftLabel}</Label>\n </Pill>\n <Structure></Structure>\n </Container>\n </Wrapper>\n )\n}\n\nexport const TipFrequencySwitch = styled(FrequencySwitch)`\n margin: 16px auto;\n height: fit-content;\n`\n\nconst Container = styled.div<{ width: number }>`\n margin: -20px auto 0 auto;\n position: relative;\n height: 26px;\n\n ${({ width }) => {\n if (width) {\n return css`\n width: ${width}px;\n `\n }\n }};\n`\n\nconst Label = styled(plume.styles.copy.S)`\n color: ${plume.COLORS.PRIMARY_WHITE};\n display: inline-block;\n z-index: 1;\n`\n\nconst Pill = styled.div<{ secondLabel: string; width: number }>`\n z-index: 2;\n\n &::after,\n &::before,\n ${Label} {\n border-radius: 2px;\n height: 8px;\n line-height: 0.3;\n padding: 9px 4px;\n position: absolute;\n text-align: center;\n transition: 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) all;\n\n ${({ width }) => {\n if (width) {\n return css`\n width: ${width}px;\n `\n }\n }};\n }\n\n ${({ secondLabel }) => {\n if (secondLabel) {\n return css`\n &::after {\n ${plume.styles.copy._smallStyle};\n color: ${plume.COLORS.GREY_SHADE_2};\n content: '${secondLabel}';\n right: 0;\n }\n `\n }\n }};\n\n &::before {\n background-color: ${plume.COLORS.PRIMARY_BLUE};\n border-radius: 24px;\n content: '';\n left: 0;\n }\n`\n\nconst Checkbox = styled.input.attrs({ type: 'checkbox' })<{ leftOffset: number }>`\n cursor: pointer;\n height: 100%;\n margin: 0;\n opacity: 0;\n padding: 0;\n position: relative;\n width: 100%;\n z-index: 3;\n\n // FIXME: Replace 'div' with named element?\n &:checked + div > ${plume.styles.copy.S} {\n color: ${plume.COLORS.GREY_SHADE_2};\n }\n\n &:checked + ${Pill}::after {\n color: ${plume.COLORS.PRIMARY_WHITE};\n }\n\n &:checked + ${Pill}::before {\n background-color: ${plume.COLORS.PRIMARY_BLUE};\n border-radius: 24px;\n\n ${({ leftOffset }) => {\n if (leftOffset) {\n return css`\n left: ${leftOffset}px;\n `\n }\n }};\n }\n`\n\nconst Structure = styled.div`\n background-color: ${plume.COLORS.PRIMARY_WHITE};\n border-radius: 24px;\n border: 1px solid ${plume.COLORS.GREY_SHADE_5};\n box-sizing: border-box;\n transition: 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) all;\n width: 100%;\n z-index: 1;\n`\n\nconst Wrapper = styled.div`\n ${Structure}, ${Pill} {\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n }\n`\n", "import * as React from 'react'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport * as money from '@owl-nest/money'\nimport * as env from '@owl-nest/config'\n\nimport { InputProps } from './types'\n\ntype TipInputProps = InputProps & {\n error: boolean\n}\n\nexport function TipInput({\n symbol,\n error,\n onChange,\n selected,\n translations,\n value,\n}: TipInputProps): React.ReactElement<TipInputProps> {\n const userConfig = env.useUserEnv()\n\n return (\n <plume.MoneyField\n symbol={symbol}\n error={error}\n symbolPosition={money.getPosition(userConfig.lang)}\n selected={selected}\n onChange={(event) => {\n onChange?.(event.target.value)\n }}\n placeholder={translations?.placeholder}\n value={value}\n min=\"1\"\n />\n )\n}\n", "import * as React from 'react'\nimport styled, { css } from 'styled-components'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\ntype TipPresetProps = React.HTMLAttributes<HTMLDivElement> & {\n amount: React.ReactNode\n checked: boolean\n id: string\n name: string\n onChange: () => void\n}\n\nexport function TipPreset({ amount, checked, id, name, onChange }: TipPresetProps): React.ReactElement<TipPresetProps> {\n return (\n <InputRadioWrapper>\n <RadioInput type=\"radio\" checked={checked} id={id} name={name} onChange={onChange} onClick={onChange} />\n <RadioLabel htmlFor={id}>\n <Amount checked={checked}>{amount}</Amount>\n </RadioLabel>\n </InputRadioWrapper>\n )\n}\n\nconst Amount = styled(plume.styles.heading.XXXS)<{ checked?: boolean }>`\n ${({ checked = false, theme }) => {\n if (checked) {\n return css`\n color: ${theme?.colors?.primary ?? plume.COLORS.PRIMARY_BLUE_500};\n `\n }\n }};\n`\n\n// FIXME: Put input in label instead?\nexport const InputRadioWrapper = styled.div`\n min-height: 50px;\n min-width: 60px;\n flex-grow: 1;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n width: calc(31% - 5px);\n }\n`\n\nconst RadioInput = styled.input`\n display: none;\n\n &:checked + label {\n border-color: ${({ theme }) => `${theme?.colors?.primary ?? plume.COLORS.PRIMARY_BLUE_500}`};\n }\n`\n\nconst RadioLabel = styled.label`\n border: 1px solid ${plume.COLORS.GREY_SHADE_5};\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 50px;\n box-sizing: border-box;\n transition: 0.3s ease;\n line-height: 50px;\n border-radius: 2px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n &:hover {\n border-color: ${({ theme }) => `${theme?.colors?.primary ?? plume.COLORS.PRIMARY_BLUE_500}`};\n cursor: pointer;\n }\n }\n`\n", "import * as React from 'react'\nimport styled from 'styled-components'\n\nimport * as hooks from '@owl-nest/hooks'\nimport { t, tc } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport * as api from '@owl-nest/api-client/latest'\n\ntype TipTaxReceiptInfoProps = {\n project: api.Project<any>\n}\n\nexport function TaxDeductionModal({ project }: TipTaxReceiptInfoProps): React.ReactElement {\n const [isTaxReceiptModalOpen, setIsTaxReceiptModalOpen] = hooks.useModal('DonationTaxDeductionInfo')\n\n if (!project.tax_deductible) {\n return <></>\n }\n\n const taxDeductibleRate = Number(project?.tax_deductible_rate ?? 66)\n\n return (\n <ModalWithIcon\n open={isTaxReceiptModalOpen}\n closable\n onClose={() => setIsTaxReceiptModalOpen(false)}\n buttons={[\n {\n type: 'button',\n props: {\n kind: 'primary',\n type: 'button',\n onClick: () => setIsTaxReceiptModalOpen(false),\n children: t('Close'),\n },\n },\n ]}\n icon={<plume.illustrations.twoToned.SecurePaymentMedium size={127} />}\n svgScale={0.9}\n >\n <plume.styles.heading.S>\n {t('This donation is %(rate)s tax deductible', {\n rate: `${taxDeductibleRate}%`,\n })}\n </plume.styles.heading.S>\n\n {project.tax_receipt_enabled ? (\n <plume.styles.copy.M>\n {tc(\n 'The owner of this fundraiser declares itself to be an organization of general interest or recognized public utility. [br][br] Following payment, you will receive by email a tax receipt that can give rise to an income tax reduction of up to %(rate)s, within the limit of %(maximumRate)s of your taxable income (only if you are taxed on income in France).',\n {\n br: <br />,\n rate: `${taxDeductibleRate}%`,\n maximumRate: '20%',\n },\n )}\n </plume.styles.copy.M>\n ) : (\n <plume.styles.copy.M>\n {tc(\n 'The owner of this fundraiser declares themself as an organization of general interest or recognized public utility.[br][br]They will provide you with a tax receipt that can allow you up to a %(rate)s income tax reduction for a maximum of %(maximumRate)s of your taxable income (only if you are taxed on income in France).',\n {\n br: <br />,\n rate: `${taxDeductibleRate}%`,\n maximumRate: '20%',\n },\n )}\n </plume.styles.copy.M>\n )}\n </ModalWithIcon>\n )\n}\n\nconst ModalWithIcon = styled(plume.ModalWithIcon)`\n ${plume.ModalIconWrapper} {\n margin-bottom: 10px;\n }\n\n ${plume.styles.heading.S} {\n margin-bottom: 10px;\n }\n`\n"], "mappings": "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", "names": ["init_define_process_env", "React", "init_define_process_env", "React", "StandaloneTipInput", "symbol", "onChange", "selected", "translations", "value", "error", "userConfig", "useUserEnv", "MoneyField", "getPosition", "event", "init_define_process_env", "React", "FrequencySwitch", "className", "frequency", "setFrequency", "leftLabel", "rightLabel", "containerWidth", "leftOffset", "pillWidth", "Wrapper", "Container", "Checkbox", "event", "Pill", "Label", "Structure", "_a", "TipFrequencySwitch", "src_default", "__template", "_b", "_c", "width", "css", "_d", "styles_exports", "colors_exports", "_e", "_f", "_g", "secondLabel", "_h", "_i", "_j", "_k", "init_define_process_env", "React", "TipInput", "symbol", "error", "onChange", "selected", "translations", "value", "userConfig", "useUserEnv", "MoneyField", "getPosition", "event", "init_define_process_env", "React", "TipPreset", "amount", "checked", "id", "name", "onChange", "InputRadioWrapper", "RadioInput", "RadioLabel", "Amount", "_a", "_b", "src_default", "styles_exports", "__template", "theme", "css", "colors_exports", "_c", "breakpoints_exports", "_d", "_e", "init_define_process_env", "React", "TaxDeductionModal", "project", "_a", "isTaxReceiptModalOpen", "setIsTaxReceiptModalOpen", "useModal", "taxDeductibleRate", "ModalWithIcon", "illustrations_exports", "styles_exports", "src_default", "__template", "ModalIconWrapper", "TipComponent", "allowNullValue", "className", "callout", "context", "disableCta", "frequency", "handleFormSubmit", "preFilledTip", "presetsTip", "project", "removable", "translations", "withDisclaimer", "withPresets", "withFromMention", "allowedFrequency", "project_exports", "currency", "CURRENCIES_SYMBOL", "initialFrequency", "donationFrequency", "setDonationFrequency", "isInformativeModalOpen", "setInformativeModalAsOpen", "setIsTaxDeductionModalOpen", "useSetModal", "amountAfterTaxReduction", "setAmountAfterTaxReduction", "isDonationBasedProject", "isMembershipProject", "presets", "getPresets", "schema", "create$3", "numberWithComma", "tracking", "useTracking", "userConfig", "useUserEnv", "TipView", "Formik", "onSubmit", "errors", "resetForm", "setFieldValue", "values", "order_exports", "result", "response", "_a", "handleInputChange", "value", "handlePresetChange", "resetSubmit", "Form", "TipContainerWrapper", "TipFrequencySwitch", "TipPresetsWrapper", "amount", "TipPreset", "MoneyDisplayer", "TipInput", "StandaloneTipInput", "StyledCallToAction", "TaxInfo", "glyphs_exports", "accounting_exports", "RemoveButton", "MonthlyDonationCallout", "Disclaimer", "styles_exports", "ModalTriggerLink", "SecurePaymentModal", "Tip", "src_default", "__template", "_b", "LinkAsButton", "_c", "colors_exports", "_d", "_e", "_f", "Callout", "_g", "_h", "breakpoints_exports", "_i", "Button", "_j", "_k", "InputRadioWrapper", "_l", "TipCurrency", "CurrencyWrapper", "_m", "TipInputField", "Field", "_n", "InputWrapper", "isSelected"] }