{
  "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"]
}