{ "version": 3, "sources": ["../../../../../../internal/esbuild/entrypoints/modern/backer-backoffice.ts", "sentry-debug-id-stub:_sentry-debug-id-injection-stub?sentry-module-id=c1865b9a-54fd-4959-9bdd-1f542ed18ba3", "../../../../../../internal/esbuild/entrypoints/modern/backer-backoffice.ts", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/index.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/App.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/Router.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/paths.ts", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/layout/FullWidthLayout.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/hooks/useHasAccess.ts", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/layout/MenuLayout.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/components/Menu/index.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/hooks/useBacker.ts", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/hooks/useBackerOrders.ts", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/hooks/useUserProjects.ts", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/components/Menu/MenuLink.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/UserDelete/index.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/UserDelete/Cases.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/hooks/usePublicUser.ts", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/UserDelete/Modal.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/UserDelete/Form.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/hooks/useLoggedinAuth.ts", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/UserDelete/Information.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/index.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/AddressSection.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/BackLink.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/BankwireSection.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/CancelSubscriptionRequestModal.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/EditSubscriptionSection.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/FAQSection.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/InstructionSection.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/membership/MembershipPaymentInfo.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/membership/OrderMembershipSection.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/components/ProjectStatus.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/TaxDeduction.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/components/Banner.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/Anonymous.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/Price.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/CancelUnsubscriptionRequestModal.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/OrderSection.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/PaymentInfo.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/OrderItem.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/RewardTaxDeductionModal.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/SubscriptionHistorySection.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/hooks/useSubscriptions.ts", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/hooks/useHasAccessToOrder.ts", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/MondialRelayAddress/index.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/MondialRelayAddress/types.ts", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/MondialRelayAddress/BillingSection.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/MondialRelayAddress/MondialRelaySection.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/MondialRelayAddress/MondialRelayStep1.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/MondialRelayAddress/StepTitle.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/MondialRelayAddress/MondialRelayStep2.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/MondialRelayAddress/validation.ts", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderDetail/Discord.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderList/index.tsx", "../../../../../../owl-nest/common/duvet/src/UserBackofficeListingItem.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderList/Pagination.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/OrderList/OrderCard.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/components/StatusBanner.ts", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/ProjectList/index.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/ProjectList/Pagination.tsx", "../../../../../../owl-nest/ulule/features/backer-backoffice/src/views/ProjectList/ProjectCard.tsx"], "sourcesContent": ["\n import \"_sentry-debug-id-injection-stub\";\n import * as OriginalModule from \"./internal/esbuild/entrypoints/modern/backer-backoffice.ts\";\n export default OriginalModule.default;\n export * from \"./internal/esbuild/entrypoints/modern/backer-backoffice.ts\";", "!function(){try{var e=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:{};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]=\"9a781e3c-86cf-4139-8fb9-0f5b1dbc2101\",e._sentryDebugIdIdentifier=\"sentry-dbid-9a781e3c-86cf-4139-8fb9-0f5b1dbc2101\");}catch(e){}}();", "import '@owl-nest/backer-backoffice'\n", "import * as React from 'react'\nimport * as ReactDOM from 'react-dom/client'\nimport * as jotai from 'jotai'\n\nimport { Header } from '@ulule/header'\n\nimport * as service from '@owl-nest/services'\nimport { initializeLocalization, t } from '@owl-nest/localize'\nimport { getDispatch } from '@owl-nest/hooks'\nimport * as env from '@owl-nest/config'\nimport * as logger from '@owl-nest/logger'\n\nimport { App } from './App'\nimport { setInitialBacker } from './hooks/useBacker'\n\nconst PATHNAME_REGEXP = /\\/users\\/(.+)\\/backoffice\\/.*/\n\nconst authDispatch = getDispatch(service.user.AUTH_ATOM, jotai.getDefaultStore())\n\ninit()\n\nasync function init(): Promise {\n await env.initUserConfig()\n const userConfig = env.getUserConfig()\n\n await Promise.all([\n initializeLocalization(userConfig.lang, env.LOCALE_FILES[userConfig.lang]),\n authDispatch(service.user.actions.initialize()),\n setInitialBacker(jotai.getDefaultStore(), getUserIdFromUrl(), {withToken: true}),\n ])\n\n document.title = `${t('My contributions')} - Ulule`\n\n renderHeader()\n\n const container = document.querySelector('#js-backer-backoffice')\n if (container) {\n const root = ReactDOM.createRoot(container)\n root.render(React.createElement(App))\n }\n}\n\nexport function getUserIdFromUrl(): number {\n const match = window.location.pathname.match(PATHNAME_REGEXP)\n\n if (match !== null) {\n const userId = match[1]\n return Number(userId)\n }\n\n throw Error('no user id found in the url')\n}\n\nfunction renderHeader(): void {\n const headerContainer = document.querySelector('#react-ulule-header')\n\n // FIXME: Missing context for Router\n if (headerContainer) {\n const headerRoot = ReactDOM.createRoot(headerContainer)\n headerRoot.render(
)\n } else {\n logger.err('Header container is missing')\n }\n}\n", "import * as React from 'react'\nimport { BrowserRouter } from 'react-router'\nimport { useDramaticallyInefficientGlobalCss, css } from '@owl-nest/yak/extra-runtime'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as messages from '@owl-nest/messages'\n\nimport { Router } from './Router'\nimport { EulaModalWithAuthContext } from '@owl-nest/eula-modal'\n\nexport function App(): React.ReactElement {\n return (\n \n \n \n \n \n \n \n \n )\n}\n\nfunction GlobalStyle() {\n useDramaticallyInefficientGlobalCss(css`\n body {\n background: ${plume.COLORS.PRIMARY_SAND_100};\n }\n `)\n\n return <>\n}\n", "import * as React from 'react'\nimport { Routes, Route } from 'react-router'\n\nimport * as path from './paths'\nimport { FullWidthLayout } from './layout/FullWidthLayout'\nimport { MenuLayout } from './layout/MenuLayout'\nimport { UserDelete } from './views/UserDelete'\nimport { OrderDetail } from './views/OrderDetail'\nimport { OrderList } from './views/OrderList'\nimport { ProjectList } from './views/ProjectList'\n\nexport function Router(): React.ReactElement {\n return (\n \n \n \n \n }\n />\n \n \n \n }\n />\n \n \n \n }\n />\n\n \n \n \n }\n />\n \n )\n}\n", "import { useParams } from 'react-router'\n\nexport const ORDERS_LIST = '/users/:userId/backoffice/contributions/'\nexport const ORDERS_DETAIL = '/users/:userId/backoffice/contributions/:orderId/'\nexport const USER_DELETE = '/users/:userId/backoffice/delete'\nexport const PROJECTS_LIST = '/users/:userId/backoffice/projects/'\n\ntype OrderListParams = {\n userId: number\n}\n\nexport function hrefOrderList({ userId }: OrderListParams): string {\n return `/users/${userId}/backoffice/contributions/`\n}\n\nexport function hrefProjectList({ userId }: OrderListParams): string {\n return `/users/${userId}/backoffice/projects/`\n}\n\ntype OrderDetailParams = {\n userId: number\n orderId: number\n}\n\nexport function hrefOrderDetail({ userId, orderId }: OrderDetailParams): string {\n return `/users/${userId}/backoffice/contributions/${orderId}/`\n}\n\ntype ParsedParams = Partial\n\nexport function useParsedParams(): ParsedParams {\n const params = useParams<{ userId: string; orderId: string }>()\n\n const userId = Number(params.userId)\n const orderId = Number(params.orderId)\n\n return {\n userId: Number.isNaN(userId) ? undefined : userId,\n orderId: Number.isNaN(orderId) ? undefined : orderId,\n }\n}\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport { useHasAccess } from '../hooks/useHasAccess'\n\ntype FullWidthLayoutProps = {\n children: React.ReactNode\n}\n\nexport function FullWidthLayout({ children }: FullWidthLayoutProps): React.ReactElement {\n const hasAccess = useHasAccess()\n\n if (!hasAccess) {\n // TODO: skeletons ?\n return <>\n }\n\n return {children}\n}\n\nconst Wrapper = styled.div`\n max-width: 1294px;\n width: 100%;\n padding: 24px 0 30px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n margin: 0 auto;\n padding: 64px 30px 20px;\n box-sizing: border-box;\n }\n`\n", "import * as React from 'react'\nimport * as jotai from 'jotai'\n\nimport * as service from '@owl-nest/services'\nimport * as env from '@owl-nest/config'\n\nimport * as path from '../paths'\n\nconst forbiddenRedirectAtom = jotai.atom({\n redirectUrl: (next: string, lang: string) => `/forbidden/?next=${next}&lang=${lang}`,\n})\nfunction useForbiddenRedirectValue(): {\n redirectUrl: (next: string, lang: string) => string\n} {\n return jotai.useAtomValue(forbiddenRedirectAtom)\n}\nexport function useSetForbiddenRedirect() {\n return jotai.useSetAtom(forbiddenRedirectAtom)\n}\n\nexport function useHasAccess(): boolean {\n const { userId } = path.useParsedParams()\n const auth = service.user.useAuth()\n const userConfig = env.useUserEnv()\n\n const forbiddenRedirectValue = useForbiddenRedirectValue()\n\n const [hasAccess, setHasAccess] = React.useState(false)\n\n React.useEffect(() => {\n if (userId === undefined || auth.type === 'initial') {\n return\n }\n\n const next = encodeURIComponent(window.location.href)\n const lang = userConfig.lang\n\n const forbidden = forbiddenRedirectValue.redirectUrl(next, lang)\n\n if (auth.type !== 'loggedin') {\n window.location.href = forbidden\n } else if (auth.user.id !== userId && !auth.user.is_staff) {\n window.location.href = forbidden\n } else {\n setHasAccess(true)\n }\n }, [auth.type, userId])\n\n return hasAccess\n}\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport { Menu } from '../components/Menu'\nimport { useHasAccess } from '../hooks/useHasAccess'\n\ntype MenuLayoutProps = {\n children: React.ReactNode\n}\n\nexport function MenuLayout({ children }: MenuLayoutProps) {\n const hasAccess = useHasAccess()\n\n if (!hasAccess) {\n // TODO: skeletons ?\n return <>\n }\n\n return (\n \n \n
{children}
\n \n )\n}\n\nconst Wrapper = styled.div`\n display: flex;\n max-width: 1354px;\n width: 100%;\n align-items: flex-start;\n padding: 0 0 30px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n margin: 0 auto;\n padding: 64px 30px 20px;\n box-sizing: border-box;\n\n ${Menu} {\n flex: 0 0 248px;\n margin-right: 40px;\n }\n }\n`\n\nconst Main = styled.section`\n flex: 1 1 auto;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n margin: 0;\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as model from '@owl-nest/models'\nimport * as env from '@owl-nest/config'\nimport * as plume from '@ulule/owl-kit-components/next'\nimport { tp, t } from '@owl-nest/localize'\nimport { ResponsiveMenu } from '@owl-nest/project-manager-nav/src/ResponsiveMenu'\nimport * as hooks from '@owl-nest/hooks'\n\nimport * as PATH from '../../paths'\nimport { useBacker } from '../../hooks/useBacker'\nimport { useBackerOrders } from '../../hooks/useBackerOrders'\nimport { useUserProjects } from '../../hooks/useUserProjects'\n\nimport { MenuLink } from './MenuLink'\n\nconst LABEL_MARGIN = 16\nexport const CLOSED_MENU_HEIGHT = 53\n\ntype MenuProps = {\n className?: string\n}\n\nfunction MenuComponent({ className }: MenuProps): React.ReactElement {\n const backer = useBacker()\n const backerOrders = useBackerOrders()\n const userProjectList = useUserProjects()\n const projectData = hooks.data(userProjectList.response)\n\n const userTag = model.user.tag(backer)\n\n const hasOrders = (backerOrders.response.data?.orders.length ?? 0) > 0\n const hasProjects = projectData?.projects && projectData.projects.length > 0\n\n return (\n \n {({ setActiveTopPosition }) => {\n return (\n <>\n {model.user.username(backer)}\n {userTag && {userTag.label}}\n\n \n
  • \n \n {t('My profile')}\n \n
  • \n\n {hasProjects && (\n
  • \n \n {t('My projects')}\n \n
  • \n )}\n\n {hasOrders && (\n
  • \n \n {tp('My contributions', 'User menu')}\n \n
  • \n )}\n
  • \n \n {t('My messages')}\n \n
  • \n
  • \n \n {t('Settings')}\n \n
  • \n
  • \n \n {t('Sign out')}\n \n
  • \n
    \n \n )\n }}\n
    \n )\n}\n\nconst LinkList = styled.ul`\n margin: 16px 0 24px;\n padding: 0;\n list-style: none;\n`\n\nexport const Menu = styled(MenuComponent)`\n ${plume.RoleTag} {\n margin-top: 4px;\n margin-left: 24px;\n }\n\n ${plume.styles.heading.XS} {\n margin-top: 24px;\n margin-left: 24px;\n }\n\n display: none;\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n border-radius: 8px;\n overflow: hidden;\n display: block;\n }\n`\n", "import * as jotai from 'jotai'\n\nimport * as service from '@owl-nest/services'\nimport * as hooks from '@owl-nest/hooks'\nimport * as env from '@owl-nest/config'\nimport { useParsedParams } from '../paths'\n\nexport async function setInitialBacker(\n store: ReturnType,\n userId: number,\n { withToken = false }: { withToken?: boolean } = {},\n): Promise {\n const response = await service.user.getPublicUser(userId, { withToken: withToken })\n\n // FIXME: This is a temporary fix to redirect to the signup page if the user is not found\n response.caseOf({\n left: () => {\n document.location.href = env.SIGNUP_URL\n },\n right: () => {},\n })\n\n service.user.setInitialPublicUser(store, response.doThrow())\n}\n\nexport function useBacker() {\n const { userId } = useParsedParams()\n const { response } = service.user.usePublicUser(userId)\n return hooks.assertData(response)\n}\n", "import * as React from 'react'\nimport * as service from '@owl-nest/services'\nimport * as hooks from '@owl-nest/hooks'\nimport { useBacker } from './useBacker'\n\n// the hook makes available the last visited page. Used by the detail vue, to\n// know on wich page we need to go back with the back to listing link\nexport let LAST_VISITED_PAGE = 1\n\ntype BackerOrderParams = {\n page?: number\n message?: string\n}\n\nexport function useBackerOrders(\n config: Omit = {},\n): service.order.UseUserOrders & {\n params: BackerOrderParams\n setParams: (set: (params: BackerOrderParams) => BackerOrderParams) => void\n} {\n const backer = useBacker()\n const [params, setParams] = hooks.useQueryParams({}, fromURLSearchParams, toURLSearchParams)\n\n React.useLayoutEffect(() => {\n scroll(0, 0)\n }, [params.page])\n\n const paramsWithPrivateDefaults = { limit: 10, page: 1, context: 'contributions', ...params }\n\n const queryOrders = service.order.useUserOrders(backer.id, {\n ...config,\n params: paramsWithPrivateDefaults,\n })\n\n LAST_VISITED_PAGE = paramsWithPrivateDefaults.page\n\n return { ...queryOrders, params, setParams }\n}\n\nexport function toURLSearchParams({ page, message }: BackerOrderParams): URLSearchParams {\n const searchParams = new URLSearchParams()\n if (page !== undefined && page !== 1) {\n searchParams.set('page', String(page))\n }\n\n if (message !== undefined) {\n searchParams.set('message', String(message))\n }\n\n return searchParams\n}\n\nexport function fromURLSearchParams(searchParams: URLSearchParams): BackerOrderParams {\n const params: BackerOrderParams = {}\n\n const rawPage = searchParams.get('page')\n if (rawPage) {\n const page = Math.floor(Number(rawPage))\n if (!Number.isNaN(page) && Number.isFinite(page)) {\n params.page = page\n }\n }\n\n const rawMessage = searchParams.get('message')\n if (rawMessage) {\n params.message = rawMessage\n }\n\n return params\n}\n", "import * as React from 'react'\nimport * as service from '@owl-nest/services'\nimport * as hooks from '@owl-nest/hooks'\nimport { useBacker } from './useBacker'\nimport * as api from '@owl-nest/api-client/latest'\n\n// the hook makes available the last visited page. Used by the detail vue, to\n// know on wich page we need to go back with the back to listing link\nexport let LAST_VISITED_PAGE = 1\n\nexport function useUserProjects(\n config: Omit = {},\n): service.user.project.UseUserProjects & {\n params: service.user.project.UseUserProjectsParams\n setParams: (\n set: (params: service.user.project.UseUserProjectsParams) => service.user.project.UseUserProjectsParams,\n ) => void\n} {\n const backer = useBacker()\n const [params, setParams] = hooks.useQueryParams(\n {},\n fromURLSearchParams,\n toURLSearchParams,\n )\n\n const paramsWithPrivateDefaults = { limit: 10, role: 'collaborator' as api.UserProjectRole, page: 1, ...params }\n\n const queryProjects = service.user.project.useUserProjects(backer.id, {\n ...config,\n params: paramsWithPrivateDefaults,\n })\n\n LAST_VISITED_PAGE = paramsWithPrivateDefaults.page\n\n return { ...queryProjects, params, setParams }\n}\n\nexport function toURLSearchParams({ page }: service.user.project.UseUserProjectsParams): URLSearchParams {\n const searchParams = new URLSearchParams()\n if (page !== undefined && page !== 1) {\n searchParams.set('page', String(page))\n }\n\n return searchParams\n}\n\nexport function fromURLSearchParams(searchParams: URLSearchParams): service.user.project.UseUserProjectsParams {\n const params: service.user.project.UseUserProjectsParams = {}\n\n const rawPage = searchParams.get('page')\n if (rawPage) {\n const page = Math.floor(Number(rawPage))\n if (!Number.isNaN(page) && Number.isFinite(page)) {\n params.page = page\n }\n }\n\n return params\n}\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\nimport { useMatch, useNavigate } from 'react-router'\n\nimport * as hooks from '@owl-nest/hooks'\nimport * as plume from '@ulule/owl-kit-components/next'\nimport type { PolymorphicComponent, YakComponentOf } from '@owl-nest/yak/extra-runtime'\n\ntype MenuLinkProps = React.AnchorHTMLAttributes & {\n external?: boolean\n setActiveTopPosition?: (top: number) => void\n navigationAware?: boolean\n path?: string\n}\n\nexport function MenuLink({\n navigationAware,\n external,\n href,\n children,\n onClick,\n path,\n setActiveTopPosition,\n ...rest\n}: MenuLinkProps) {\n const match = path ? useMatch(path) : null\n const navigate = useNavigate()\n const linkClickHandler = hooks.useLinkClickHandler({\n navigate: () => {\n if (!href) {\n return\n }\n\n if (!external) {\n navigate(href)\n } else {\n location.href = href\n }\n },\n onClick,\n })\n\n const ref = React.useRef(null)\n\n React.useEffect(() => {\n if (match !== null && ref.current !== null && setActiveTopPosition) {\n const { top } = ref.current.getBoundingClientRect()\n setActiveTopPosition(top)\n }\n }, [match])\n\n if (match === null || !navigationAware) {\n return (\n \n \n {children}\n \n \n )\n } else {\n return (\n \n \n {children}\n \n \n )\n }\n}\n\nexport const Link = styled(plume.Link)`\n text-transform: uppercase;\n line-height: 34px;\n margin-left: 24px;\n` as YakComponentOf>\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { t } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport { Cases } from './Cases'\nimport { Information } from './Information'\n\nexport function UserDelete(): React.ReactElement {\n return (\n <>\n {t('Delete my account')}\n \n \n \n \n \n )\n}\n\nconst Title = styled(plume.styles.heading.L)`\n margin-bottom: 30px;\n padding-left: 20px;\n padding-top: 20px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n padding: 0;\n }\n`\n\nconst Container = styled.section`\n background-color: ${plume.COLORS.PRIMARY_GREY_000};\n padding: 20px;\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as api from '@owl-nest/api-client/next'\nimport { t, tc } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport { usePublicUser } from '../../hooks/usePublicUser'\n\nimport { Modal } from './Modal'\n\nexport function Cases(): React.ReactElement {\n const publicUser = usePublicUser({ withToken: true })\n\n React.useEffect(() => {\n publicUser?.deleteUser(true)\n }, [])\n\n const [isModalOpen, setIsModalOpen] = React.useState(false)\n\n const isSubmitDisabled = publicUser?.dryRunDeleteUser?.can_delete?.some((canDelete) => canDelete.level === 'blocked')\n\n const priorityOrder = ['blocked', 'warning', 'info']\n\n const sortedCanDelete = publicUser?.dryRunDeleteUser?.can_delete?.sort((a, b) => {\n const priorityA = priorityOrder.indexOf(a.level)\n const priorityB = priorityOrder.indexOf(b.level)\n\n if (priorityA < priorityB) {\n return -1\n } else if (priorityA > priorityB) {\n return 1\n } else {\n return 0\n }\n })\n\n return (\n <>\n {sortedCanDelete?.map((canDelete, index) => (\n \n {getCalloutMessage(canDelete)}\n \n ))}\n\n \n\n setIsModalOpen(false)} />\n \n )\n}\n\nfunction getCalloutType(level: 'blocked' | 'info' | 'warning'): 'info' | 'alert' | 'error' {\n if (level === 'blocked') {\n return 'error'\n }\n if (level === 'info') {\n return 'info'\n }\n if (level === 'warning') {\n return 'alert'\n }\n\n return 'info'\n}\n\nfunction getCalloutMessage(canDelete: api.DeleteUserResponse['can_delete'][number]): React.ReactNode {\n switch (canDelete.message_code) {\n case 'user_scratch_project': {\n return t('You currently have a project in preparation, by deleting your account, this project will be cancelled.')\n }\n case 'user_live_project_must_end': {\n return tc(\n 'You currently have a live project, to delete your account you must first end that project. [link: End my project]',\n { link: },\n )\n }\n case 'user_project_must_wait_withdrawal_transfer': {\n return tc(\n 'You currently have a funds transfer in progress on a project, this transfer must be completed before you can delete your account. [link: View the status of the transfer]',\n {\n link: ,\n },\n )\n }\n case 'user_live_project_contact_team': {\n return tc(\n 'You currently have a live project, to delete your account you must first contact our team in order to end that project. [link: Contact the team]',\n { link: },\n )\n }\n case 'user_completed_project_less_18_months': {\n return tc(\n 'You have a project that has been completed for less than 18 months, to delete your account you must first contact the team to archive the project. [link: Contact the team]',\n { link: },\n )\n }\n case 'user_cancelable_order': {\n return tc(\n 'If you have a contribution to an ongoing project, it will not be cancelled by deleting your account and the data associated with this contribution will still be visible to the project team. [link: Cancel my contribution]',\n {\n link: ,\n },\n )\n }\n case 'user_not_cancelable_order': {\n return t(\n 'The shipping information you have provided to the projects you have contributed to will still be visible to these projects but publicly anonymized.',\n )\n }\n case 'user_finished_projets': {\n return tc(\n 'You have a finished project, deleting your account will not hide this project. [link: How to archive a finished project]',\n { link: },\n )\n }\n }\n}\n\nconst Button = styled(plume.Button)`\n display: block;\n margin-left: auto;\n margin-right: auto;\n margin-top: 24px;\n\n @media screen and (${plume.BREAKPOINTS.TABLET}) {\n margin-left: 0;\n margin-right: 0;\n }\n`\n\nconst Callout = styled(plume.Callout)`\n margin-top: 24px;\n`\n\nconst CalloutLink = styled(plume.Link)`\n display: block;\n`\n", "import * as services from '@owl-nest/services'\n\nimport { useParsedParams } from '../paths'\n\nexport function usePublicUser({ withToken = false }: services.user.PublicUserConfig = {}): services.user.UsePublicUser | undefined {\n const { userId } = useParsedParams()\n const usePublicUser = services.user.usePublicUser(userId, { withToken: withToken })\n\n if (userId === undefined) {\n return undefined\n }\n\n return usePublicUser\n}\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { t } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport { Form } from './Form'\n\nexport function Modal({ isOpen, onClose }: { isOpen: boolean; onClose: () => void }): React.ReactElement {\n return (\n \n \n \n \n\n {t('Are you sure you want to delete your account?')}\n\n \n {t('Deleting an account is an irreversible action: you will no longer be able to connect to Ulule.')}\n \n\n
    \n\n \n {t('No, I keep my account')}\n \n \n )\n}\n\nconst WarningSignContainer = styled.div`\n height: 50px;\n`\n\nconst StyledModal = styled(plume.Modal)`\n ${plume.styles.modal.Wrapper} {\n max-width: 395px;\n overflow: visible;\n padding-bottom: 10px;\n }\n\n ${plume.illustrations.Illustration} {\n display: block;\n margin: auto auto 5px;\n transform: translateY(-80px);\n }\n`\n\nconst Description = styled(plume.styles.copy.M.light)`\n margin: 16px 0 32px;\n`\n\nconst Link = styled(plume.Link)`\n display: block;\n margin-top: 16px;\n text-align: center;\n`\n", "import * as React from 'react'\nimport * as formik from 'formik'\nimport { styled } from 'next-yak'\n\nimport * as auth from '@owl-nest/auth'\nimport { t } from '@owl-nest/localize'\nimport * as messages from '@owl-nest/messages'\nimport * as yup from '@owl-nest/validators'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport { useSetForbiddenRedirect } from '../../hooks/useHasAccess'\nimport { useLoggedinAuth } from '../../hooks/useLoggedinAuth'\nimport { usePublicUser } from '../../hooks/usePublicUser'\n\ntype PasswordForm = { password: string }\ntype EmailForm = { email: string }\n\nconst withEmailSchema = (email: string): yup.ObjectSchema =>\n yup.object().shape({\n email: yup.string().equals([email]).required(),\n })\n\nconst withPasswordSchema = yup.object().shape({\n password: yup.string().min(7).required(),\n})\n\nexport function Form(): React.ReactElement {\n const loggedinAuth = useLoggedinAuth({\n // WARNING: Sometimes, javascript fails you. And its failing us here. Some might say it's a πŸ’© language.\n // But we're not here to judge. We're here to fix πŸ”¨. That's our job, our duty, our raison d'Γͺtre.\n // So here what happens:\n // This is a newly added onLogout callback, created to handle a manual redirect.\n // It looks quite innocent, but it's not. It's a hack. A hack to fix a bug.\n // Higher in our react 🌳, we have a useHasAccess hook. It checks the auth type, and if it's not the right one, it redirects the user.\n // We're relying on an atom with reducers to handle auth, but when dispatching our LOGOUT_SUCCESS action, no rerender is triggered.\n // So the useHasAccess hook doesn't see the new auth type, and doesn't redirect the user accordingly.\n // So we're doing it here, by πŸ–. Because we can. Thanks javascript.\n onLogout: () => {\n window.location.href = '/'\n },\n })\n\n const publicUser = usePublicUser({ withToken: true })\n const user = publicUser?.response.data\n\n const setForbiddenRedirect = useSetForbiddenRedirect()\n const messenger = messages.useMessage()\n const sameUser = loggedinAuth?.user.id === user?.id\n\n if (user?.has_usable_password && sameUser) {\n return (\n ) => Promise}\n validationSchema={withPasswordSchema}\n >\n {({ dirty, isValid, isSubmitting }) => (\n \n \n {({ field, meta }: formik.FieldProps) => (\n \n )}\n \n \n \n )}\n \n )\n }\n\n return (\n ) => Promise}\n validationSchema={withEmailSchema(user?.email ?? '')}\n >\n {({ dirty, isValid, isSubmitting }) => (\n \n \n {({ field, meta }: formik.FieldProps) => (\n \n )}\n \n \n \n )}\n \n )\n\n async function onSubmit(\n values: PasswordForm | EmailForm,\n formikBag: formik.FormikHelpers,\n ): Promise {\n if ('password' in values && user?.username) {\n const response = await auth.login({\n username: user.username,\n password: values.password,\n 'stay-connected': true,\n })\n await response.caseOf({\n left: () => {\n formikBag.setFieldError('password', t('Your password was entered incorrectly. Please enter it again.'))\n },\n right: () => handleUserDelete(),\n })\n } else {\n await handleUserDelete()\n }\n }\n\n async function handleUserDelete(): Promise {\n const deleteUserResponse = await publicUser?.deleteUser()\n deleteUserResponse?.caseOf({\n left: () => {\n messenger.error({\n message: t('Oups, something went wrong. Please retry.'),\n type: 'toast',\n context: 'delete',\n onClose: () => {\n //\n },\n forceClose: true,\n })\n },\n right: () => {\n setForbiddenRedirect({ redirectUrl: () => '/' })\n if (sameUser) {\n localStorage.setItem('ul_delete_user_logout', 'true')\n loggedinAuth?.logout()\n }\n },\n })\n }\n}\n\nconst Button = styled(plume.Button)`\n width: 100%;\n margin-top: 32px;\n`\n", "import * as service from '@owl-nest/services'\n\nexport function useLoggedinAuth(\n authOptions?: service.user.AuthOptions | undefined,\n): service.user.UseAuthLoggedin | service.user.UseAuthLoggedinGuest | undefined {\n const auth = service.user.useAuth(authOptions)\n\n if (service.user.isLoggedIn(auth)) {\n return auth\n }\n\n return undefined\n}\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { tc, t } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport { usePublicUser } from '../../hooks/usePublicUser'\n\nexport function Information(): React.ReactElement {\n const publicUser = usePublicUser({ withToken: true })\n\n const firstList = [\n t(\n 'Anonymize all your personal data from our databases and from being displayed on our website (projects, contributions and comments)',\n ),\n t('Delete your profile page'),\n t('Unsubscribe you from all email notifications, including projects you follow or have supported'),\n ]\n\n const secondList = [\n t('Delete your comments on projects, only anonymize them'),\n t('Delete your contributions to projects, only anonymize them'),\n tc('Archive or delete your projects ([link: How to archive my project])', {\n link: (\n \n ),\n }),\n t('Cancel your contributions to ongoing projects'),\n t('Delete your contributions to completed projects'),\n ]\n\n return (\n <>\n {t('We are sorry to see you go!')}\n \n {tc(\n 'Deleting your account is an irreversible action: you will no longer be able to log in to Ulule. If you have any problems using Ulule, we invite you to update [notificationsSettings: your email notifications], [privacySettings: your privacy settings], or to [contact: contact us].',\n {\n notificationsSettings: (\n \n ),\n privacySettings: (\n \n ),\n contact: ,\n },\n )}\n \n {t('Deleting your account will:')}\n
      \n {firstList.map((item) => (\n
    • \n {item}\n
    • \n ))}\n
    \n {t('Deleting your account will not:')}\n
      \n {secondList.map((item, index) => (\n
    • \n {item}\n
    • \n ))}\n
    \n \n )\n}\n\nconst Heading = styled(plume.styles.heading.XS)`\n margin-bottom: 24px;\n`\n\nconst Description = styled(plume.styles.copy.S.regular)`\n margin-bottom: 24px;\n`\n\nconst ListHeading = styled(plume.styles.copy.S.semiBold)``\n", "import * as React from 'react'\nimport { styled, css } from 'next-yak'\n\nimport * as api from '@owl-nest/api-client/latest'\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as models from '@owl-nest/models'\nimport { t } from '@owl-nest/localize'\nimport * as hooks from '@owl-nest/hooks'\nimport * as messages from '@owl-nest/messages'\n\nimport { AddressSection } from './AddressSection'\nimport { BackLink } from './BackLink'\nimport { BankwireSection } from './BankwireSection'\nimport { CancelSubscriptionRequestModal } from './CancelSubscriptionRequestModal'\nimport { EditSubscriptionSection } from './EditSubscriptionSection'\nimport { FAQSection } from './FAQSection'\nimport { InstructionSection } from './InstructionSection'\nimport { MembershipPaymentInfo } from './membership/MembershipPaymentInfo'\nimport { OrderMembershipSection } from './membership/OrderMembershipSection'\nimport { OrderSection } from './OrderSection'\nimport { RewardTaxDeductionModal } from './RewardTaxDeductionModal'\nimport { StatusBanner } from '../../components/StatusBanner'\nimport { SubscriptionHistorySection } from './SubscriptionHistorySection'\nimport { useAuthenticatedUser } from '../../hooks/useAuthenticatedUser'\nimport { useHasAccessToOrder } from '../../hooks/useHasAccessToOrder'\nimport { MondialRelayAddress } from './MondialRelayAddress'\nimport { Discord } from './Discord'\n\nfunction isOrderCancelable(order: api.Order): boolean {\n if (order.type === api.OrderType.SINGLE && order.is_cancellable) {\n return true\n }\n\n if (order.type === api.OrderType.MONTHLY && order.subscription?.is_cancellable) {\n return true\n }\n\n return false\n}\n\nexport function OrderDetail() {\n const order = useHasAccessToOrder()\n const user = useAuthenticatedUser()\n const [isCancelSubscriptionRequestModalOpen, setIsCancelSubscriptionRequestModalOpen] = hooks.useModal('CancelSubscription')\n\n const messenger = messages.useMessage()\n\n React.useEffect(() => {\n const searchParams = new URLSearchParams(document.location.search)\n const toastSearchParam = searchParams.get('toast')\n const paymentMethodUpdateSuccess = searchParams.get('success')\n ? t('Your payment method has been updated.')\n : undefined\n const paymentMethodUpdateFailure = searchParams.get('failed')\n ? t('An error occurred while updating the payment method. Please, try again.')\n : undefined\n\n if (toastSearchParam || paymentMethodUpdateSuccess) {\n messenger.confirm({\n type: 'toast',\n context: 'order',\n message: toastSearchParam ?? paymentMethodUpdateSuccess,\n onClose: () => {\n //noop\n },\n forceClose: true,\n })\n }\n\n if (paymentMethodUpdateFailure) {\n messenger.error({\n type: 'toast',\n context: 'order',\n message: paymentMethodUpdateFailure,\n onClose: () => {\n //noop\n },\n forceClose: true,\n })\n }\n\n searchParams.delete('toast')\n searchParams.delete('success')\n searchParams.delete('failed')\n }, [])\n\n if (order === undefined) {\n return <>\n }\n\n const isCancelable = isOrderCancelable(order)\n const orderStatus = models.order.getOrderStatus(order, order.project, user)\n const isRecurrent = order.type !== api.OrderType.SINGLE\n const address = order.shipping_address || order.billing_address\n\n const isProjectMembership = models.project.isMembership(order.project)\n\n const hasDiscordRoleAssigned = isProjectMembership && order.project.discord_guild_id\n\n return (\n <>\n \n\n {isProjectMembership && !order.is_one_time_donation ? (\n \n ) : (\n \n )}\n\n {orderStatus === models.order.OrderStatus.AWAITING_BANKWIRE &&\n !models.project.isFinished(order.project) &&\n order.bankwire && }\n\n {!order.is_one_time_donation && order.order_total !== 0 && order.subscription && (\n \n )}\n\n {order.subscription?.edit_url && (\n \n )}\n\n {order.pickup_point ? (\n \n ) : order.shipping_address?.delivery_type === 'mondial_relay' ? (\n \n ) : order.initial_shipping_address_required ||\n order.initial_billing_address_required ||\n order.shipping_address ||\n order.billing_address ? (\n // Address section must be displayed:\n // - when a billing address or a shipping address is set\n // - when a billing address or a shipping address is required\n \n ) : (\n <>\n )}\n\n {isProjectMembership && }\n\n {hasDiscordRoleAssigned && }\n\n \n\n \n\n {isCancelable && (\n setIsCancelSubscriptionRequestModalOpen(true)}>\n {isProjectMembership\n ? t('Stop my membership')\n : isRecurrent\n ? t('Stop my contribution')\n : t('Cancel my contribution')}\n \n )}\n\n setIsCancelSubscriptionRequestModalOpen(false)}\n />\n\n item.reward as any)}\n hasTip={order.tip !== 0}\n />\n \n )\n}\n\nconst CancelOrderButton = styled(plume.LinkAsButton)`\n color: ${plume.COLORS.PRIMARY_RED_500};\n width: 100%;\n\n &&:hover {\n color: ${plume.COLORS.PRIMARY_RED_500};\n }\n`\n\nconst sectionCss = css`\n background: ${plume.COLORS.PRIMARY_GREY_000};\n padding: 24px 16px;\n margin: 16px 0;\n\n ${StatusBanner} {\n margin-left: -16px;\n margin-right: -16px;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n padding: 40px 43px;\n }\n`\n\nconst DiscordSectionStyled = styled(Discord)`\n ${sectionCss}\n`\n\nconst OrderSectionStyled = styled(OrderSection)`\n ${sectionCss}\n`\n\nconst OrderMembershipStyled = styled(OrderMembershipSection)`\n ${sectionCss}\n`\n\nconst SubscriptionHistorySectionStyled = styled(SubscriptionHistorySection)`\n ${sectionCss}\n`\n\nconst AddressSectionStyled = styled(AddressSection)`\n ${sectionCss}\n`\n\nconst MondialRelayAddressSectionStyled = styled(MondialRelayAddress)`\n ${sectionCss}\n`\n\nconst InstructionSectionStyled = styled(InstructionSection)`\n ${sectionCss}\n`\n\nconst BankwireSectionStyled = styled(BankwireSection)`\n ${sectionCss}\n`\n\nconst EditSubscriptionSectionStyled = styled(EditSubscriptionSection)`\n ${sectionCss}\n`\n\nconst MembershipPaymentInfoStyled = styled(MembershipPaymentInfo)`\n ${sectionCss}\n`\n\nconst FAQSectionStyled = styled(FAQSection)`\n ${sectionCss}\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\nimport * as formik from 'formik'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport * as api from '@owl-nest/api-client/latest'\nimport { AutocompleteSubForm, model as addressModel } from '@owl-nest/address'\nimport { t } from '@owl-nest/localize'\nimport * as logger from '@owl-nest/logger'\nimport * as messages from '@owl-nest/messages'\nimport * as model from '@owl-nest/models'\nimport * as hooks from '@owl-nest/hooks'\nimport * as service from '@owl-nest/services'\nimport * as yup from '@owl-nest/validators'\nimport * as utils from '@owl-nest/utils'\nimport * as env from '@owl-nest/config'\n\nimport { useBacker } from '../../hooks/useBacker'\n\ntype AddressSectionProps = {\n className?: string\n order: api.Order\n orderStatus?: model.order.OrderStatus\n} & (\n | {\n pickupPoint: api.PickupPoint\n }\n | {\n address: api.Address | undefined\n }\n)\n\nexport function AddressSectionComponent({\n order,\n className,\n orderStatus,\n ...rest\n}: AddressSectionProps): React.ReactElement {\n const backer = useBacker()\n const [mode, setMode] = React.useState<'read' | 'write'>('read')\n\n const useOrder = service.order.useOrder(order.id, { params: { context: 'contributions' } })\n const orderData = hooks.data(useOrder.response)\n\n const backerShippingAddress = orderData?.shipping_address\n // HACK: for some reason, some home delivery addresses wound up in database\n // with some forbidden field (reserved for dropoff addresses). To avoid future\n // problems, we premptively delete those forbidden field. Either they are not\n // there, or they shouldn't be there. Either way we remove them.\n if (backerShippingAddress?.delivery_type === 'home_delivery') {\n delete backerShippingAddress.longitude\n delete backerShippingAddress.latitude\n delete backerShippingAddress.dropoff_id\n delete backerShippingAddress.dropoff_name\n }\n const backerBillingAddress = orderData?.billing_address\n const pickupPoint = 'address' in rest ? undefined : rest.pickupPoint\n\n if (mode === 'write') {\n return (\n setMode('read')}\n />\n )\n }\n\n return (\n \n {t('Contact details')}\n {pickupPoint ? (\n \n \n {t('Pickup point')}\n {formatPickupPoint(pickupPoint)}\n \n {model.pickup.description(pickupPoint)}\n \n \n {backerBillingAddress && (\n \n {t('Billing address')}\n \n {addressModel.format(backerBillingAddress, env.COUNTRIES)}\n \n \n )}\n \n ) : backerShippingAddress ? (\n \n \n {t('Shipping address')}\n {orderData.project.shipping_addresses_locked && (\n \n {t('The project team has blocked the editing of the delivery address.')}\n \n )}\n \n {addressModel.format(backerShippingAddress, env.COUNTRIES)}\n \n \n \n {t('Billing address')}\n \n \n {addressModel.format(orderData.billing_address ?? backerShippingAddress, env.COUNTRIES)}\n \n \n \n ) : backerBillingAddress ? (\n \n \n {t('Billing address')}\n \n {addressModel.format(backerBillingAddress, env.COUNTRIES)}\n \n \n \n ) : (\n <>\n )}\n setMode('write')}\n >\n {t('Edit')}\n \n \n )\n\n function formatPickupPoint(pickupPoint: api.PickupPoint): string {\n const format = []\n if (backer.first_name || backer.last_name) {\n format.push([backer.first_name, backer.last_name])\n }\n if (pickupPoint.address) {\n format.push([addressModel.format(pickupPoint.address, env.COUNTRIES)])\n }\n format.push([model.pickup.city(pickupPoint)])\n\n return format.map((line) => line.join(' ')).join('\\n')\n }\n}\n\ntype EditAddressProps = {\n className?: string\n onDone: () => void\n order: api.Order\n shippingAddress?: api.Address<''>\n billingAddress: api.Address<''>\n}\n\nfunction EditAddressComponent({\n className,\n order,\n shippingAddress,\n billingAddress,\n onDone,\n}: EditAddressProps): React.ReactElement {\n const address = shippingAddress || billingAddress\n const [phoneCountryCode, setPhoneCountryCode] = React.useState(undefined)\n\n const backer = useBacker()\n const useOrder = service.order.useOrder(order.id, { params: { context: 'contributions' } })\n const orderData = hooks.data(useOrder.response)\n const messenger = messages.useMessage()\n const userConfig = env.useUserEnv()\n\n const addressEditingLocked = Boolean(orderData && orderData.project.shipping_addresses_locked)\n\n const accountStatusLabels = {\n [api.AddressType.PERSONAL]: t('Individual person'),\n [api.AddressType.BUSINESS]: t('Company or self-business'),\n [api.AddressType.ASSOCIATION]: t('Association'),\n }\n\n return (\n {\n const result = await useOrder.update(getPayload())\n\n const params = { context: 'order', type: 'toast', forceClose: true }\n\n result?.caseOf({\n left: () => {\n logger.err('Failed address update', { backer, payload: shippingAddress })\n messenger.error({\n ...params,\n message: t(\n 'Oops... an error occured. Please refresh the page to retry. If the error persists, please contact support.',\n ),\n type: 'toast',\n forceClose: true,\n })\n },\n right: () => {\n messenger.confirm({\n context: 'order',\n message: t('Your address has been successfully updated'),\n type: 'toast',\n forceClose: true,\n })\n },\n })\n onDone()\n\n function getPayload() {\n const shippingAddress = values.shippingAddress\n if (values.shippingAddress.type === api.AddressType.PERSONAL) {\n delete shippingAddress.entity_name\n }\n\n const billingAddress = values.billingAddress\n if (values.billingAddress.type === api.AddressType.PERSONAL) {\n delete billingAddress.entity_name\n }\n\n if (values.same) {\n if (values.shippingAddress.type === api.AddressType.PERSONAL) {\n return {\n billing_and_shipping_address: addressModel.address(shippingAddress),\n }\n }\n\n return {\n billing_and_shipping_address: addressModel.address(values.shippingAddress),\n }\n }\n\n return {\n shipping_address:\n values.shippingAddress.type && !addressEditingLocked ? addressModel.address(shippingAddress) : undefined,\n billing_address: addressModel.address(billingAddress),\n }\n }\n }}\n validationSchema={yup.lazy(({ same }) =>\n same\n ? yup.object({\n shippingAddress: addressModel.schema(address ? address.phone_number.length !== 0 : true),\n })\n : order.shipping_address\n ? yup.object({\n shippingAddress: addressModel.schema(address.phone_number.length !== 0),\n billingAddress: addressModel.schema(false),\n })\n : yup.object({\n billingAddress: addressModel.schema(false),\n }),\n )}\n validateOnBlur={false}\n validateOnChange={false}\n validateOnMount={true}\n >\n {(formikBag) => {\n return (\n \n {/* Shipping address must be available:\n - when a personal address is already defined on the order\n - when a shipping address is required but not defined\n */}\n {((order.initial_shipping_address_required && order.shipping_type === api.OrderShippingType.NO_SHIPPING) ||\n (order.shipping_address && order.shipping_type === api.OrderShippingType.USER_ADDRESS)) && (\n \n {t('Shipping address')}\n {addressEditingLocked && (\n \n {t('The project team has blocked the editing of the delivery address.')}\n \n )}\n \n \n {Object.values(api.AddressType).map((accountStatus) => (\n {\n formikBag.setFieldValue('shippingAddress.type', event.currentTarget.value)\n }}\n disabled={addressEditingLocked}\n />\n ))}\n \n \n \n \n {(formikBag.values.shippingAddress.type === api.AddressType.ASSOCIATION ||\n formikBag.values.shippingAddress.type === api.AddressType.BUSINESS) && (\n {\n formikBag.setFieldValue('shippingAddress.entity_name', event.currentTarget.value)\n }}\n error={\n formikBag.touched.shippingAddress?.entity_name &&\n formikBag.errors.shippingAddress?.entity_name\n }\n disabled={addressEditingLocked}\n />\n )}\n \n {formikBag.values.shippingAddress.type === api.AddressType.PERSONAL && (\n <>\n {\n formikBag.setFieldValue('shippingAddress.first_name', event.currentTarget.value)\n }}\n error={\n formikBag.touched.shippingAddress?.first_name &&\n formikBag.errors.shippingAddress?.first_name\n }\n disabled={addressEditingLocked}\n />\n {\n formikBag.setFieldValue('shippingAddress.last_name', event.currentTarget.value)\n }}\n error={\n formikBag.touched.shippingAddress?.last_name &&\n formikBag.errors.shippingAddress?.last_name\n }\n disabled={addressEditingLocked}\n />\n \n )}\n {(formikBag.values.shippingAddress.type === api.AddressType.ASSOCIATION ||\n formikBag.values.shippingAddress.type === api.AddressType.BUSINESS) && (\n <>\n {\n formikBag.setFieldValue('shippingAddress.first_name', event.currentTarget.value)\n }}\n error={\n formikBag.touched.shippingAddress?.first_name &&\n formikBag.errors.shippingAddress?.first_name\n }\n disabled={addressEditingLocked}\n />\n {\n formikBag.setFieldValue('shippingAddress.last_name', event.currentTarget.value)\n }}\n error={\n formikBag.touched.shippingAddress?.last_name &&\n formikBag.errors.shippingAddress?.last_name\n }\n disabled={addressEditingLocked}\n />\n \n )}\n \n\n {\n setPhoneCountryCode(phone.country)\n formikBag.setFieldValue('shippingAddress.phone_number', phone.number)\n formikBag.setFieldValue(\n 'shippingAddress.phone_number_country',\n phone.country as utils.phone.CountryCode,\n )\n }}\n label={t('Phone number')}\n error={\n formikBag.touched.shippingAddress?.phone_number &&\n formikBag.errors.shippingAddress?.phone_number\n }\n disabled={addressEditingLocked}\n />\n \n \n \n country.code === address?.country || ''\n ? {\n ...country,\n content:\n order.order_shipping_total > 0\n ? `${country.label()} (+${plume.accounting.localeMoney(order.order_shipping_total, {\n currency: order.project.currency,\n lang: userConfig.lang,\n })})`\n : country.label(),\n }\n : country,\n )}\n countryFilter={address ? [address.country] : undefined}\n disableCountry={!!address}\n hideState\n initialEmpty={false}\n label={t('Search for address')}\n language=\"fr\"\n onChange={(baseAddress) => {\n const addressWithoutLongLat = { ...baseAddress }\n delete addressWithoutLongLat.latitude\n delete addressWithoutLongLat.longitude\n\n formikBag.setValues({\n ...formikBag.values,\n shippingAddress: {\n ...formikBag.values.shippingAddress,\n ...addressWithoutLongLat,\n },\n })\n }}\n touched={formikBag.touched.shippingAddress ?? {}}\n errors={formikBag.errors.shippingAddress ?? {}}\n disabled={addressEditingLocked}\n />\n \n \n {\n formikBag.setFieldValue('same', !formikBag.values.same)\n }}\n />\n {formikBag.values.same && (\n formikBag.submitForm()}\n disabled={useOrder.response.status === hooks.QueryStatus.PENDING || addressEditingLocked}\n >\n {t('Save')}\n \n )}\n \n )}\n\n {(order.billing_address || !formikBag.values.same) && (\n <>\n {!formikBag.values.same && (\n \n {t('Billing address')}\n \n \n {Object.values(api.AddressType).map((accountStatus) => (\n {\n formikBag.setFieldValue('billingAddress.type', event.currentTarget.value)\n }}\n />\n ))}\n \n \n \n \n {(formikBag.values.billingAddress.type === api.AddressType.ASSOCIATION ||\n formikBag.values.billingAddress.type === api.AddressType.BUSINESS) && (\n {\n formikBag.setFieldValue('billingAddress.entity_name', event.currentTarget.value)\n }}\n error={\n formikBag.touched.billingAddress?.entity_name &&\n formikBag.errors.billingAddress?.entity_name\n }\n />\n )}\n \n {formikBag.values.billingAddress.type === api.AddressType.PERSONAL && (\n <>\n {\n formikBag.setFieldValue('billingAddress.first_name', event.currentTarget.value)\n }}\n error={\n formikBag.touched.billingAddress?.first_name &&\n formikBag.errors.billingAddress?.first_name\n }\n />\n {\n formikBag.setFieldValue('billingAddress.last_name', event.currentTarget.value)\n }}\n error={\n formikBag.touched.billingAddress?.last_name &&\n formikBag.errors.billingAddress?.last_name\n }\n />\n \n )}\n {(formikBag.values.billingAddress.type === api.AddressType.ASSOCIATION ||\n formikBag.values.billingAddress.type === api.AddressType.BUSINESS) && (\n <>\n {\n formikBag.setFieldValue('billingAddress.first_name', event.currentTarget.value)\n }}\n error={\n formikBag.touched.billingAddress?.first_name &&\n formikBag.errors.billingAddress?.first_name\n }\n />\n {\n formikBag.setFieldValue('billingAddress.last_name', event.currentTarget.value)\n }}\n error={\n formikBag.touched.billingAddress?.last_name &&\n formikBag.errors.billingAddress?.last_name\n }\n />\n \n )}\n \n\n {\n setPhoneCountryCode(phone.country)\n formikBag.setFieldValue('billingAddress.phone_number', phone.number)\n formikBag.setFieldValue(\n 'billingAddress.phone_number_country',\n phone.country as utils.phone.CountryCode,\n )\n }}\n label={t('Phone number')}\n error={\n formikBag.touched.billingAddress?.phone_number &&\n formikBag.errors.billingAddress?.phone_number\n }\n />\n \n\n \n {\n const addressWithoutLongLat = { ...baseAddress }\n delete addressWithoutLongLat.latitude\n delete addressWithoutLongLat.longitude\n\n formikBag.setValues({\n ...formikBag.values,\n billingAddress: { ...formikBag.values.billingAddress, ...addressWithoutLongLat },\n })\n }}\n touched={formikBag.touched.billingAddress ?? {}}\n errors={formikBag.errors.billingAddress ?? {}}\n />\n \n \n {!formikBag.values.same && (\n formikBag.submitForm()}\n disabled={useOrder.response.status === hooks.QueryStatus.PENDING}\n >\n {t('Save')}\n \n )}\n \n )}\n \n )}\n \n )\n }}\n \n )\n}\n\nconst EntityNameField = styled(plume.TextField)`\n margin-top: 5px;\n margin-bottom: 20px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n padding-right: 49%;\n margin-right: 10px;\n }\n`\n\nconst AddressColumn = styled.div`\n // yak does not give a class to non exported styled-component with no css.\n // this is an issue because this component is used as a selector later in the file\n // to fix this we need to add a bogus css rule to force yak to generate a class\n // see : https://github.com/DigitecGalaxus/next-yak/issues/373\n --bogus-style: 0;\n`\n\nconst RadioGroupField = styled(plume.RadioGroupField)`\n margin-top: 10px;\n margin-bottom: 13px;\n\n ${plume.RadioFieldWrapper} {\n margin-bottom: 10px;\n }\n\n ${plume.SmallRadioList} {\n flex-wrap: wrap;\n }\n`\n\nconst AddressGroup = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n\n ${plume.CheckboxField} {\n margin-bottom: 32px;\n }\n\n ${AddressColumn} {\n flex: 1;\n\n &:first-of-type {\n margin-right: 20px;\n }\n }\n`\n\nconst ReadAddress = styled.div`\n display: flex;\n flex-direction: column;\n\n ${plume.styles.heading.XS} {\n margin-bottom: 16px;\n }\n\n ${plume.Button} {\n margin-top: 16px;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n ${plume.Button} {\n align-self: end;\n }\n }\n`\n\nconst AddressFormGroup = styled.div`\n display: flex;\n flex-direction: column;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n flex-direction: row;\n }\n`\n\nconst AddressDisplay = styled(plume.styles.copy.S.regular)`\n white-space: pre;\n`\n\nconst DifferentBillingCheckbox = styled(plume.CheckboxField)`\n margin: 8px 0 24px;\n`\n\nconst DisabledAddressColumn = styled(AddressColumn)`\n ${plume.styles.heading.XS}, ${AddressDisplay} {\n color: ${plume.COLORS.PRIMARY_SAND_700};\n }\n`\n\nconst LeftColumn = styled.div`\n flex: 1;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n margin-right: 24px;\n }\n`\n\nconst RightColumn = styled.div`\n flex: 1;\n\n ${plume.Button} {\n margin-top: 16px;\n }\n`\n\nconst EditAddress = styled(EditAddressComponent)`\n display: flex;\n flex-direction: column;\n\n ${plume.Button} {\n align-self: end;\n }\n`\n\nconst StyledPhoneField = styled(plume.PhoneField)`\n margin: 23px 0 20px;\n`\n\nexport const IdentityGroup = styled(plume.styles.controls.Group)`\n margin: 5px 0 20px;\n flex-direction: column;\n\n ${plume.styles.field.Title} {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n\n ${plume.TextField} {\n flex: 1;\n &:first-child {\n margin-bottom: 20px;\n }\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n flex-direction: row;\n\n ${plume.TextField}:first-child {\n margin-right: 10px;\n margin-bottom: 0;\n }\n }\n`\n\nconst WriteAddress = styled.div`\n ${plume.styles.heading.XS} {\n margin-bottom: 16px;\n }\n`\n\nconst StyledCallout = styled(plume.Callout)`\n margin-bottom: 16px;\n`\n\nexport const AddressSection = styled(AddressSectionComponent)``\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\nimport { useNavigate } from 'react-router'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport { t } from '@owl-nest/localize'\nimport * as hooks from '@owl-nest/hooks'\n\nimport { useBacker } from '../../hooks/useBacker'\nimport { LAST_VISITED_PAGE } from '../../hooks/useBackerOrders'\nimport * as path from '../../paths'\n\ntype BackLinkProps = {\n className?: string\n}\n\nfunction BackLinkComponent({ className }: BackLinkProps) {\n const navigate = useNavigate()\n const backer = useBacker()\n\n const urlSearchParams = new URLSearchParams()\n if (LAST_VISITED_PAGE > 1) {\n urlSearchParams.set('page', String(LAST_VISITED_PAGE))\n }\n const href = `${path.hrefOrderList({ userId: backer.id })}?${urlSearchParams.toString()}`\n const onClick = hooks.useLinkClickHandler({\n navigate: () => navigate(href),\n })\n\n return (\n \n \n {t('Back to the list')}\n \n )\n}\n\nexport const BackLink = styled(BackLinkComponent)`\n margin: 0 16px 24px;\n display: block;\n\n ${plume.glyphs.stroke.ArrowLeft} {\n color: ${plume.COLORS.TEXT_TERTIARY};\n margin-right: 8px;\n }\n\n ${plume.styles.copy.S.regular} {\n color: ${plume.COLORS.TEXT_TERTIARY};\n display: inline-block;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n margin: 0 0 24px 0;\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as api from '@owl-nest/api-client/latest'\nimport { t } from '@owl-nest/localize'\n\ntype BankwireSectionProps = {\n className?: string\n bankwire: Exclude\n}\n\nfunction BankwireSectionComponent({ className, bankwire }: BankwireSectionProps) {\n // since the component might not be mounted on first render, we need to watch\n // if the id is in the url and fake-mutate the location object to trigger\n // the scroll that should happen automatically\n React.useEffect(() => {\n if (location.hash === '#bankwire-section') {\n location.hash = ''\n location.hash = 'bankwire-section'\n }\n }, [])\n\n return (\n
    \n {t('Paid by bank transfer')}\n \n {t('The transfer must be made from your bank interface using the information below.')}\n \n {t('Step 1 - Add the bank account beneficiary')}\n \n {t('Log in to your banking interface and add a beneficiary using this information:')}\n \n \n \n {t('Name')}\n {bankwire.owner_name}\n \n \n IBAN\n {bankwire.account_number}\n \n \n BIC\n {bankwire.routing_number}\n \n \n {t('Step 2 - Create the bank transfer')}\n \n {t(\n 'Once the beneficiary account has been validated by your bank, create a transfer of the amount of your contribution and specify this identifier as a reference:',\n )}\n \n \n {bankwire.wire_reference}\n \n
    \n )\n}\n\nconst Boxed = styled.div`\n border: 1px solid ${plume.COLORS.PRIMARY_SAND_200};\n border-radius: 4px;\n padding: 21px 33px;\n`\n\nconst BankwireInfoLabel = styled(plume.styles.copy.L.light)`\n text-transform: uppercase;\n`\nconst BankwireInfoLine = styled.div`\n display: flex;\n\n ${BankwireInfoLabel} {\n width: 67px;\n }\n`\n\nexport const BankwireSection = styled(BankwireSectionComponent)`\n display: flex;\n flex-direction: column;\n\n ${Boxed} {\n align-self: center;\n }\n\n ${plume.styles.heading.M} {\n margin-bottom: 16px;\n }\n\n ${plume.styles.heading.XS}, & > ${plume.styles.copy.L.light} {\n margin: 16px 0;\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { t } from '@owl-nest/localize'\nimport * as api from '@owl-nest/api-client/latest'\nimport * as date from '@owl-nest/date'\nimport * as hooks from '@owl-nest/hooks'\nimport * as messages from '@owl-nest/messages'\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as service from '@owl-nest/services'\nimport * as models from '@owl-nest/models'\n\nimport * as path from '../../paths'\n\ntype CancelSubscriptionRequestModalProps = {\n isRecurrent: boolean\n className?: string\n open: boolean\n onClose: () => void\n order: api.Order\n}\n\nfunction CancelSubscriptionRequestModalComponent({\n className,\n order,\n isRecurrent,\n open,\n onClose,\n}: CancelSubscriptionRequestModalProps) {\n const params = path.useParsedParams()\n const useOrder = service.order.useOrder(params.orderId, { params: { context: 'contributions' } })\n const messenger = messages.useMessage()\n\n const isProjectMembership = order.project.type === api.ProjectType.Membership\n const isFreeMembership = isProjectMembership && order.order_total === 0\n const isMembershipRecurringDonation = models.subscription.isMembershipRecurringDonation(\n order.subscription,\n order.project,\n )\n\n // HACK: next_payment_expected_at has no time information. For\n // a canadian user (GMT -5), parsing this date will give a\n // Date for the day before. Adding time info fixes the issue.\n const fixedNextPaymentExpectedAt = order.subscription?.next_payment_expected_at\n ? new Date(`${order.subscription.next_payment_expected_at} 00:00:00`)\n : undefined\n\n return (\n {\n const result = await useOrder.cancel()\n window.scrollTo({ top: 0, behavior: 'smooth' })\n\n result?.caseOf({\n left: () => {\n messenger.error({\n type: 'toast',\n message: t('Oops... An internal error has occured. Please, retry.'),\n context: 'subscription',\n forceClose: true,\n })\n },\n right: () => {\n messenger.confirm({\n type: 'toast',\n message: isProjectMembership\n ? t('Your unsubscribe request has been processed.')\n : isRecurrent\n ? t('Your monthly donation has been stopped, you will receive a confirmation email.')\n : t(\n 'The cancellation of your contribution has been taken into account, you will receive a confirmation email',\n ),\n context: 'subscription',\n forceClose: true,\n })\n onClose()\n },\n })\n },\n color: 'red',\n children: isProjectMembership\n ? t('Yes, stop my membership')\n : isRecurrent\n ? t('Yes, stop my contribution')\n : t('Yes, cancel my contribution'),\n },\n },\n {\n type: 'linkAsButton',\n props: {\n onClick: onClose,\n disabled: useOrder.response.status === hooks.QueryStatus.PENDING,\n kind: 'secondary',\n children: t('No, keep it'),\n },\n },\n ]}\n >\n {isProjectMembership ? (\n <>\n {t('Stop my membership?')}\n\n {isMembershipRecurringDonation ? (\n \n {t('Your monthly donation will be stopped.')}\n
    \n {t('You will no longer be notified of new free posts.')}\n
    \n ) : fixedNextPaymentExpectedAt ? (\n \n {t('You will no longer have access to paid posts and direct debits will cease on %(date)s.', {\n date: date.format(fixedNextPaymentExpectedAt, 'dd MMMM yyyy'),\n })}\n \n ) : (\n \n {isFreeMembership\n ? t('You will no longer be notified of new free posts.')\n : t('You will no longer have access to paid posts.')}\n \n )}\n \n ) : (\n <>\n \n {isRecurrent ? t('Stop the contribution') : t('Cancel my contribution')}\n \n\n \n {isRecurrent\n ? t('You will no longer participate to the project and the fund transfers will end.')\n : t(\n 'If you have paid your contribution by credit card, it will be refunded to the same account within 3 business days.',\n )}\n \n \n )}\n \n )\n}\n\nexport const CancelSubscriptionRequestModal = styled(CancelSubscriptionRequestModalComponent)`\n ${plume.styles.heading.S} {\n margin-bottom: 8px;\n text-align: center;\n }\n\n ${plume.styles.copy.L.light} {\n text-align: center;\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as api from '@owl-nest/api-client/latest'\nimport * as date from '@owl-nest/date'\nimport { t } from '@owl-nest/localize'\nimport * as env from '@owl-nest/config'\n\ntype EditSubscriptionSectionProps = {\n className?: string\n order: api.Order\n subscription: api.Subscription\n editUrl: string\n}\n\nfunction EditSubscriptionSectionComponent({ className, order, subscription, editUrl }: EditSubscriptionSectionProps) {\n const userConfig = env.useUserEnv()\n\n return (\n
    \n {t('Monthly donation')}\n \n {t(\n 'You have subscribed to a monthly donation of %(total)s. Your next funds transfer will take place on %(day)s of each month.',\n {\n total: plume.accounting.localeMoney(subscription.total, {\n currency: order.project.currency,\n lang: userConfig.lang,\n }),\n day: date.format(new Date(subscription.created_at), 'dd'),\n },\n )}\n \n {t('Edit my contribution')}\n
    \n )\n}\n\nexport const EditSubscriptionSection = styled(EditSubscriptionSectionComponent)`\n display: flex;\n flex-direction: column;\n\n ${plume.styles.heading.M} {\n margin-bottom: 18px;\n }\n\n ${plume.ButtonAsLink} {\n margin-top: 18px;\n align-self: end;\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport { t } from '@owl-nest/localize'\nimport * as models from '@owl-nest/models'\nimport * as api from '@owl-nest/api-client/latest'\n\ntype FAQSectionProps = {\n className?: string\n order: api.Order\n}\n\nfunction FAQSectionComponent({ order, className }: FAQSectionProps) {\n const isProjectMembership = models.project.isMembership(order.project)\n const isProjectDeleted = models.project.isDeleted(order.project)\n\n if (isProjectDeleted) {\n return DeletedProjectFAQ(isProjectMembership)\n }\n\n return (\n
    \n {t('Frequently asked questions')}\n\n {isProjectMembership ? : }\n
    \n )\n\n function MembershipFAQ() {\n return (\n <>\n \n {t('I have a general question about how membership work.')}\n\n {SupportLinks()}\n \n\n \n {t('I have a specific question about my membership.')}\n\n \n {t('Contact the project team')}\n \n \n \n )\n }\n\n function BasicFAQ() {\n return (\n <>\n \n {t('I want to know more about the progress of the project.')}\n\n \n {t('View project posts')}\n \n \n\n \n {t('I have a question about the project.')}\n\n \n {t('Consult the FAQ')}\n \n \n\n \n {t('I have a general question about how contributions work.')}\n\n {SupportLinks()}\n \n\n \n {t('I have a specific question about my contribution.')}\n\n \n {t('Contact the project team')}\n \n \n \n )\n }\n\n function DeletedProjectFAQ(isProjectMembership: boolean) {\n return (\n
    \n \n {isProjectMembership ? (\n {t('I have a general question about how membership work.')}\n ) : (\n {t('I have a general question about how contributions work.')}\n )}\n\n {SupportLinks()}\n \n
    \n )\n }\n}\n\nfunction SupportLinks() {\n return (\n \n {t('Consult the Ulule support center')}\n \n )\n}\n\nexport const FAQSection = styled(FAQSectionComponent)`\n ${plume.styles.heading.XS} {\n margin-bottom: 16px;\n }\n\n ${plume.styles.copy.S.regular} {\n display: flex;\n flex-direction: column;\n align-items: baseline;\n justify-content: flex-start;\n border-bottom: 1px solid ${plume.COLORS.PRIMARY_SAND_200};\n padding: 16px 0;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n ${plume.styles.copy.S.regular} {\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n }\n\n ${plume.Link} {\n margin-bottom: 0px;\n }\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as api from '@owl-nest/api-client/latest'\nimport * as models from '@owl-nest/models'\nimport * as service from '@owl-nest/services'\nimport * as hooks from '@owl-nest/hooks'\nimport { t } from '@owl-nest/localize'\n\ntype InstructionSectionProps = {\n className?: string\n order: api.Order\n orderStatus?: models.order.OrderStatus\n}\n\nfunction InstructionSectionComponent({ className, order, orderStatus }: InstructionSectionProps) {\n const [mode, setMode] = React.useState<'read' | 'write'>('read')\n const hasInstruction = (order.private_note ?? '').trim().length !== 0\n\n const isProjectMembership = models.project.isMembership(order.project)\n\n return (\n
    \n {t('Instruction')}\n {mode === 'read' ? (\n <>\n {isProjectMembership ? (\n \n {hasInstruction\n ? order.private_note\n : t('By adding an instruction, you can inform the team about information related to your membership.')}\n \n ) : (\n \n {hasInstruction\n ? order.private_note\n : t(\n 'By adding an instruction, you can inform the project team about delivery information, reward specific notes, additional sizes...',\n )}\n \n )}\n \n setMode('write')}\n >\n {hasInstruction ? t('Edit') : t('Add')}\n \n \n \n ) : (\n setMode('read')} />\n )}\n
    \n )\n}\n\ntype EditInstructionProps = {\n onDone: () => void\n order: api.Order\n}\n\nfunction EditInstruction({ order, onDone }: EditInstructionProps) {\n const [note, setNote] = React.useState(order.private_note)\n const useOrder = service.order.useOrder(order.id, { params: { context: 'contributions' }})\n\n return (\n <>\n \n {t(\n 'By adding an instruction, you can inform the project team about delivery information, reward specific notes, additional sizes...',\n )}\n \n setNote(event.currentTarget.value)}\n rows={4}\n />\n \n onDone()}>\n {t('Cancel')}\n \n {\n await useOrder.update({ private_note: '' })\n onDone()\n }}\n >\n {t('Delete')}\n \n {\n await useOrder.update({ private_note: note })\n onDone()\n }}\n >\n {t('Save')}\n \n \n \n )\n}\n\nconst CancelButton = styled(plume.Button)`\n // yak does not give a class to non exported styled-component with no css.\n // this is an issue because this component is used as a selector later in the file\n // to fix this we need to add a bogus css rule to force yak to generate a class\n // see : https://github.com/DigitecGalaxus/next-yak/issues/373\n --bogus-style: 0;\n`\n\nconst Actions = styled.div`\n display: flex;\n flex-wrap: wrap;\n\n ${plume.Button} {\n flex: 1 0 100%;\n margin: 18px 0;\n order: 1;\n\n &${CancelButton} {\n order: 3;\n flex: 1;\n margin-left: 10px;\n margin-right: 10px;\n }\n }\n\n ${plume.LinkAsButton} {\n order: 2;\n flex: 1;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n ${plume.Button} {\n flex: 1 0 auto;\n order: 3;\n\n & ${CancelButton} {\n order: 2;\n flex: auto;\n }\n }\n\n ${plume.LinkAsButton} {\n order: 1;\n flex: auto;\n }\n }\n`\n\nexport const InstructionSection = styled(InstructionSectionComponent)`\n display: flex;\n flex-direction: column;\n\n ${plume.styles.heading.XS} {\n margin-bottom: 16px;\n }\n\n ${plume.TextAreaField} {\n margin-top: 18px;\n textarea {\n resize: vertical;\n }\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n ${plume.styles.heading.XS} {\n margin-bottom: 18px;\n }\n\n ${Actions} {\n align-self: end;\n }\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport { t } from '@owl-nest/localize'\nimport * as api from '@owl-nest/api-client/latest'\nimport { payment } from '@owl-nest/utils'\nimport * as date from '@owl-nest/date'\n\ntype MembershipPaymentInfoProps = {\n className?: string\n order: api.Order\n}\n\nfunction MembershipPaymentInfoComponent({ order, className }: MembershipPaymentInfoProps) {\n if (!order.subscription || !order.subscription.card_number) {\n return null\n }\n\n let cardUrl\n if (order.subscription.card_url) {\n cardUrl = new URL(order.subscription.card_url)\n cardUrl.searchParams.set('return_url', window.location.href)\n }\n\n return (\n
    \n {t('Payment method')}\n\n \n \n {t('Type')} :\n {payment.getMethodName(order.payment_method)}\n \n\n \n {t('Number')} :\n {order.subscription.card_number}\n \n \n {t('Owner')} :\n {order.subscription.card_holder_name}\n \n \n {t('Expires')} :\n {order.subscription.card_date_expiration && (\n {date.format(new Date(order.subscription.card_date_expiration), 'MM/yyyy')}\n )}\n \n \n\n {cardUrl && (\n \n {t('Change my card')}\n \n )}\n
    \n )\n}\n\nexport const MembershipPaymentInfo = styled(MembershipPaymentInfoComponent)`\n display: flex;\n flex-direction: column;\n\n ${plume.styles.heading.XS} {\n margin-bottom: 18px;\n }\n`\n\nconst InfoWrapper = styled.div`\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n grid-column-gap: 0px;\n grid-row-gap: 18px;\n max-width: 480px;\n`\n\nconst InfoLine = styled.div``\n\nconst InfoLabel = styled(plume.styles.heading.XXXXXS)`\n color: ${plume.COLORS.TEXT_TERTIARY};\n display: inline-block;\n margin-right: 5px;\n`\n\nconst InfoValue = styled(plume.styles.heading.XXXXXS)`\n color: ${plume.COLORS.PRIMARY_GREY_900};\n display: inline-block;\n`\n\nconst CTAModifyCard = styled(plume.Link)`\n text-align: right;\n margin-top: 16px;\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as api from '@owl-nest/api-client/latest'\nimport * as date from '@owl-nest/date'\nimport { MembershipOrderItem } from '@ulule/duvet/MembershipCardOrderItem.tsx'\nimport * as hooks from '@owl-nest/hooks'\nimport { t, tc } from '@owl-nest/localize'\nimport * as models from '@owl-nest/models'\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as env from '@owl-nest/config'\n\nimport { useAuthenticatedUser } from '../../../hooks/useAuthenticatedUser'\nimport { ProjectStatus } from '../../../components/ProjectStatus'\nimport { PaymentInfo } from '../PaymentInfo'\nimport { TaxDeduction } from '../TaxDeduction'\nimport { Banner } from '../../../components/Banner'\nimport { Anonymous } from '../Anonymous'\nimport { Price } from '../Price'\nimport { CancelUnsubscriptionRequestModal } from '../CancelUnsubscriptionRequestModal'\n\ntype OrderMembershipSectionProps = {\n className?: string\n order: api.Order\n}\n\nfunction OrderMembershipSectionComponent({ order, className }: OrderMembershipSectionProps) {\n const user = useAuthenticatedUser()\n const userConfig = env.useUserEnv()\n\n // TODO: LOT 2 showOtherSubscription\n const [isCancelModalOpen, setIsCancelModalOpen] = hooks.useModal('CancelSubscription')\n\n // TODO: LOT 2 showOtherSubscription\n const [showOtherSubscription, setShowOtherSubscription] = React.useState(false)\n\n const orderReward = order.subscription?.reward as unknown as models.reward.Reward | undefined\n\n const isRecurringDonation = models.subscription.isMembershipRecurringDonation(order.subscription, order.project)\n const isPayingSubscription = models.subscription.isMembershipPayingSubscription(order.subscription, order.project)\n\n if (!order.subscription || orderReward === undefined) {\n return <>\n }\n\n if (order === undefined) {\n return <>\n }\n\n return (\n
    \n {user.is_staff && 😎}\n\n \n {tc('Your membership to [Project]', {\n Project: () => (\n \n {models.project.name(order.project)}\n \n ),\n })}\n \n \n\n \n \n\n {isRecurringDonation && (\n \n {tc(\n 'This monthly donation automatically gives you access to the [italicFree: \"Free\"] subscription level.',\n {\n italicFree: ,\n },\n )}\n \n )}\n \n\n \n \n <>{t('Membership #%(id)d', { id: order.id })}\n {order.subscription !== undefined &&\n (order.subscription.status !== api.SubscriptionStatus.CANCELED &&\n order.subscription.status !== api.SubscriptionStatus.FAILED ? (\n \n {t('Enabled')}\n \n ) : order.subscription.is_active_until_canceled ? (\n \n {t('Enabled')}\n \n ) : (\n \n {t('Disabled')}\n \n ))}\n \n\n \n {t('Started on %(date)s at %(time)s', {\n date: date.format(new Date(order.created_at), 'dd/MM/yyyy'),\n time: date.format(new Date(order.created_at), \"HH'h'mm\"),\n })}\n \n \n\n \n\n {Boolean(order.service_fee) && (\n \n \n {t('Service fees')}\n \n \n \n \n {t(\n 'This service fee of 10 cts + %(serviceFeesRate)s incl. VAT enables us to continue improving our service, guaranteeing contributors the best possible experience and responsive customer service. This fee is refunded if the contribution is reimbursed, and includes VAT.',\n {\n serviceFeesRate: `${new Intl.NumberFormat(userConfig.lang).format(2.2)}\\u00A0%`,\n },\n )}\n \n \n \n \n\n \n +{'\\u00A0'}\n \n \n \n )}\n\n {Boolean(order.service_fee) && (\n \n {t('Total')}\n \n \n \n \n )}\n\n {order.tax_deductible && (\n \n \n \n )}\n\n \n \n \n\n \n\n {/* TODO: LOT 2 */}\n {/*\n Chacher le bouton aussi quand la sub est annulé etc ?\n {!showOtherSubscription && {\n setShowOtherSubscription(true)\n }}\n >\n {tf('Modifier mon abonnement')}\n }\n\n {showOtherSubscription && (\n
    \n {tf('Choisir un autre abonnement')}\n\n \n \n\n \n\n {order?.project?.rewards?.map((reward) => {\n const OrderProjectReward = reward as unknown as models.reward.Reward\n\n return (\n \n )\n })}\n \n
    \n )}\n */}\n\n {/* {\n setIsCancelModalOpen(true)\n }}\n >\n {tf('ArrΓͺter mon abonnement')}\n \n\n {\n setIsCancelModalOpen(false)\n }}\n >\n {tf('Annuler')}\n \n */}\n
    \n )\n}\n\nconst OrderHead = styled.div`\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n\n ${plume.styles.heading.M} {\n display: inline;\n margin-right: 16px;\n\n ${plume.Tag} {\n transform: translateY(-3px);\n margin-left: 9px;\n }\n }\n\n ${plume.styles.copy.S.regular} {\n color: ${plume.COLORS.PRIMARY_SAND_500};\n margin: 4px 0;\n flex: 1 0 100%;\n }\n`\n\nconst SectionWrapper = styled.div`\n border: 1px solid ${plume.COLORS.PRIMARY_SAND_200};\n padding: 21px 24px;\n`\n\nconst AdminLink = styled(plume.styles.link.Base)`\n // yak does not give a class to non exported styled-component with no css.\n // this is an issue because this component is used as a selector later in the file\n // to fix this we need to add a bogus css rule to force yak to generate a class\n // see : https://github.com/DigitecGalaxus/next-yak/issues/373\n --bogus-style: 0;\n`\n\nexport const OrderMembershipSection = styled(OrderMembershipSectionComponent)`\n display: flex;\n flex-direction: column;\n position: relative;\n\n & > ${plume.styles.heading.L} {\n margin-bottom: 32px;\n text-align: center;\n\n //HACK: link set its own font-weight, but we want the one from heading.L\n\n ${plume.Link} {\n font-weight: 900;\n }\n\n ${ProjectStatus} {\n margin: 9px;\n display: inline-flex;\n transform: translateY(-3px);\n }\n }\n\n ${AdminLink} {\n display: block;\n position: absolute;\n top: 0;\n width: 24px;\n right: 0;\n text-align: center;\n padding: 10px;\n }\n\n ${PaymentInfo} {\n align-self: end;\n margin-top: 24px;\n }\n\n ${SectionWrapper} {\n margin-top: 32px;\n }\n`\n\nconst OtherSubscriptions = styled.div`\n ${MembershipOrderItem} {\n margin-bottom: 16px;\n }\n`\n\nconst LinkModifySubscription = styled(plume.LinkAsButton)`\n text-align: right;\n`\n\nconst CloseSubscription = styled(plume.Link)`\n margin-top: 30px;\n`\n\nconst CancelLink = styled(plume.Link)`\n margin-top: 30px;\n text-align: center;\n`\nconst AmountLine = styled.div<{ titleFontWeight: number; amountFontWeight?: number }>`\n display: flex;\n justify-content: end;\n align-items: baseline;\n margin-top: 20px;\n\n ${plume.styles.copy.S.regular} {\n color: ${plume.COLORS.TEXT_TERTIARY};\n font-weight: ${(props) => props.titleFontWeight}; // HACK: illegal font manipulation\n }\n\n ${plume.styles.copy.L.light} {\n display: contents;\n font-weight: ${(props) =>\n props.amountFontWeight ? props.amountFontWeight : 300}; // HACK: illegal font manipulation\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n margin-top: 20px;\n }\n`\n\nconst TotalLine = styled.div`\n display: flex;\n justify-content: end;\n align-items: baseline;\n margin-top: 24px;\n\n ${plume.styles.heading.XXXS} {\n color: ${plume.COLORS.TEXT_TERTIARY};\n text-transform: uppercase;\n margin-right: 16px;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n margin-top: 20px;\n }\n`\n\nconst PaymentReceiptLink = styled(plume.Link)`\n display: flex;\n justify-content: end;\n margin-top: 16px;\n padding: 0;\n text-align: right;\n width: 100%;\n`\n\nexport const ServiceFeesIconWrapper = styled.div`\n position: relative;\n\n ${plume.Tooltip} {\n display: none;\n }\n\n &:hover {\n ${plume.Tooltip} {\n display: block;\n }\n }\n`\n\nexport const ServiceFeesWrapper = styled.div`\n display: flex;\n position: relative;\n align-items: baseline;\n\n ${plume.glyphs.stroke.Info} {\n margin-left: 5px;\n margin-right: 16px;\n color: ${plume.COLORS.TEXT_TERTIARY};\n position: relative;\n }\n`\n\nconst Banners = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 32px;\n\n &:empty {\n display: none;\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as api from '@owl-nest/api-client/latest'\nimport * as model from '@owl-nest/models'\nimport * as plume from '@ulule/owl-kit-components/next'\nimport { t } from '@owl-nest/localize'\n\ntype ProjectStatusProps = {\n className?: string\n project: api.Project\n}\n\nfunction ProjectStatusComponent({ project, className }: ProjectStatusProps) {\n const status = model.project.lifecycleStatus(project)\n\n const { color, label } = {\n [model.project.LifecycleStatus.FAILURE]: {\n color: 'grey',\n label: t('Failed'),\n },\n [model.project.LifecycleStatus.ONGOING]: {\n color: 'blue',\n label: t('Ongoing'),\n },\n [model.project.LifecycleStatus.EXTENDED]: {\n color: 'blue',\n label: t('Extended'),\n },\n [model.project.LifecycleStatus.SUCCESS]: {\n color: 'green',\n label: t('Funded'),\n },\n [model.project.LifecycleStatus.REFUSED]: {\n color: 'red',\n label: t('Refused'),\n },\n [model.project.LifecycleStatus.CANCELLED]: {\n color: 'grey',\n label: t('Cancelled'),\n },\n [model.project.LifecycleStatus.CLOSED]: {\n color: 'grey',\n label: t('Closed'),\n },\n [model.project.LifecycleStatus.OFFLINE]: {\n color: 'orange',\n label: t('In progress'),\n },\n }[status]\n\n return (\n \n {label}\n \n )\n}\n\nexport const ProjectStatus = styled(ProjectStatusComponent)`\n align-items: center;\n display: flex;\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { t, tc } from '@owl-nest/localize'\nimport * as api from '@owl-nest/api-client/next'\nimport * as messages from '@owl-nest/messages'\nimport * as models from '@owl-nest/models'\nimport * as plume from '@ulule/owl-kit-components/next'\n\ntype TaxDeduction = {\n className?: string\n order: api.Order\n user: api.AuthenticatedUser\n}\n\nfunction TaxDeductionComponent({ className, order, user }: TaxDeduction) {\n const showCallout =\n !order.tax_receipt || (!models.project.isFinished(order.project) && !models.project.isDonationBased(order.project))\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n {t('Tax reduction')}\n \n \n {order.tax_receipt ? : }\n \n \n\n {showCallout && (\n \n {tc(\n 'Your billing address is used to issue your tax receipt. You can change it in the [Link:Contact details section].',\n {\n Link: ({ children }: React.PropsWithChildren<{}>) => {\n return (\n \n {children}\n \n )\n },\n },\n )}\n \n )}\n
    \n )\n}\n\ntype OwnerReceiptProps = { order: api.Order }\n\nfunction OwnerReceipt({ order }: OwnerReceiptProps) {\n const taxDeductibleRate = Number(order?.project?.tax_deductible_rate ?? 66)\n const isProjectMembership = models.project.isMembership(order.project)\n\n return (\n \n \n {isProjectMembership\n ? t(\n `This membership is tax deductible up to %(rate)s. The tax receipt is issued and sent by the project team.`,\n {\n rate: `${taxDeductibleRate}%`,\n },\n )\n : t(\n `This donation is tax deductible up to %(rate)s. The tax receipt is issued and sent by the project team.`,\n {\n rate: `${taxDeductibleRate}%`,\n },\n )}\n \n \n )\n}\n\ntype UluleReceiptProps = { order: api.Order; user: api.AuthenticatedUser }\n\nfunction UluleReceipt({ order, user }: UluleReceiptProps) {\n const messenger = messages.useMessage()\n const taxDeductibleRate = Number(order?.project?.tax_deductible_rate ?? 66)\n const isProjectMembership = models.project.isMembership(order.project)\n\n if (models.project.isDonationBased(order.project)) {\n if (order.type === api.OrderType.MONTHLY) {\n return (\n \n \n {isProjectMembership\n ? t(\n `This membership is tax deductible up to %(rate)s. Find each tax receipt in your donation history below.`,\n {\n rate: `${taxDeductibleRate}%`,\n },\n )\n : t(\n `This donation is tax deductible up to %(rate)s. Find each tax receipt in your donation history below.`,\n {\n rate: `${taxDeductibleRate}%`,\n },\n )}\n \n\n {\n if (order?.subscription?.id === undefined) {\n messenger.error({\n type: 'toast',\n message: t('Oops... An internal error has occured. Please, retry.'),\n context: 'subscription',\n })\n\n return\n }\n\n const response = await api.client('POST /subscriptions/:id/exports', {\n urlParams: { id: String(order.subscription.id) },\n })\n\n response.caseOf({\n right: () => {\n messenger.confirm({\n type: 'toast',\n message: tc(\n `The export of your tax receipts will be sent to you shortly at the following email address: [email]`,\n {\n email: () => user.email,\n },\n ),\n context: 'subscription',\n })\n },\n left: () => {\n messenger.error({\n type: 'toast',\n message: t('Oops... An internal error has occured. Please, retry.'),\n context: 'subscription',\n })\n },\n })\n }}\n >\n \n {t('Download all tax receipts issued')}\n \n \n )\n } else {\n return (\n \n \n {isProjectMembership\n ? t(`This membership is tax deductible up to %(rate)s.`, {\n rate: `${taxDeductibleRate}%`,\n })\n : t(`This donation is tax deductible up to %(rate)s.`, {\n rate: `${taxDeductibleRate}%`,\n })}\n \n\n \n \n {t('Tax receipt')}\n \n \n )\n }\n }\n\n if (order.tax_receipt_url) {\n return (\n \n \n {isProjectMembership\n ? t(`This membership is tax deductible up to %(rate)s.`, {\n rate: `${taxDeductibleRate}%`,\n })\n : t(`This donation is tax deductible up to %(rate)s.`, {\n rate: `${taxDeductibleRate}%`,\n })}\n \n \n\n \n \n {t('Tax receipt')}\n \n \n )\n }\n\n return (\n \n \n {isProjectMembership\n ? t(\n `This membership is tax deductible up to %(rate)s. On the 1st of next month, you can download your tax receipt here.`,\n {\n rate: `${taxDeductibleRate}%`,\n },\n )\n : t(\n `This donation is tax deductible up to %(rate)s. At the end of the initial project duration, you can download your tax receipt here.`,\n {\n rate: `${taxDeductibleRate}%`,\n },\n )}\n \n \n \n )\n}\n\nconst Grid = styled.div`\n align-items: center;\n display: grid;\n grid-column-gap: 0px;\n grid-row-gap: 8px;\n grid-template-columns: max-content 1fr;\n grid-template-rows: repeat(2, max-content);\n`\n\nconst LogoCell = styled.div`\n grid-area: 1 / 1 / 2 / 2;\n margin-right: 12px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n grid-area: 1 / 1 / 3 / 2;\n margin-right: 16px;\n }\n`\n\nconst TitleCell = styled.div`\n grid-area: 1 / 2 / 2 / 3;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n grid-area: 1 / 2 / 2 / 3;\n }\n`\n\nconst DescriptionCell = styled.div`\n grid-area: 2 / 1 / 3 / 3;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n grid-area: 2 / 2 / 3 / 3;\n\n ${plume.Link} {\n display: block;\n }\n }\n`\n\nconst Content = styled.div`\n ${plume.styles.heading.XS} {\n margin-bottom: 8px;\n }\n\n ${plume.Link} {\n margin-top: 8px;\n }\n\n ${plume.LinkAsButton} {\n padding: 0px;\n margin-top: 8px;\n text-align: left;\n }\n`\n\nexport const TaxDeduction = styled(TaxDeductionComponent)`\n ${plume.Callout} {\n flex: 0 0 100%;\n margin-top: 16px;\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport { t, tc } from '@owl-nest/localize'\nimport * as hooks from '@owl-nest/hooks'\nimport * as service from '@owl-nest/services'\nimport * as models from '@owl-nest/models'\nimport * as date from '@owl-nest/date'\nimport * as api from '@owl-nest/api-client/latest'\n\nimport { useAuthenticatedUser } from '../hooks/useAuthenticatedUser'\n\ntype BannerProps = {\n order: api.Order\n}\n\nfunction getSubscriptionCanceledMessage(order: api.Order, onCancelRequest: () => void): React.ReactNode {\n const isProjectMembership = models.project.isMembership(order.project)\n\n let cancelableAt: Date | null = null\n if (order.subscription?.cancelable_at) {\n cancelableAt = new Date(order.subscription?.cancelable_at)\n const now = new Date()\n if (cancelableAt < now) {\n cancelableAt = null\n }\n }\n\n if (isProjectMembership) {\n if (cancelableAt) {\n return tc(\n 'Your unsubscribe request has been processed. It will take place on [Bold]. [CancelLink: Cancel request]',\n {\n Bold: () => {date.format(cancelableAt as Date, 'dd/MM/yyyy')},\n CancelLink: ,\n },\n )\n }\n\n return t(\n 'Your membership has been deactivated at your request or because the project team has stopped the fundraising.',\n )\n }\n\n return t(\n 'Your monthly donation has been deactivated at your request or because the project team has stopped the fundraising.',\n )\n}\n\nexport function Banner({ order }: BannerProps) {\n const user = useAuthenticatedUser()\n const useOrder = service.order.useOrder(order.id, { params: { context: 'contributions' } })\n const setIsCancelUnsubscriptionModalOpen = hooks.useSetModal('CancelUnsubscriptionRequest')\n\n const orderStatus = models.order.getOrderStatus(order, order.project, user)\n const lastDelivery = models.order.getLastDelivery(order, order.project)\n const isProjectMembership = models.project.isMembership(order.project)\n const isProjectDonationBased = models.project.isDonationBased(order.project)\n\n let cancelableAt\n if (order.subscription?.cancelable_at) {\n cancelableAt = new Date(order.subscription?.cancelable_at)\n const now = new Date()\n if (cancelableAt < now) {\n cancelableAt = null\n }\n }\n\n const isProjectCancelled = models.project.isCancelled(order.project)\n\n if ((isProjectMembership || isProjectDonationBased) && isProjectCancelled) {\n return (\n \n \n {isProjectMembership\n ? t(\n 'The project has been cancelled by the project team. If you have not yet received your refund, you will receive it in the next few days on the bank account used to pay your membership.',\n )\n : t(\n 'The project has been cancelled by the project team. If you have not yet received your refund, you will receive it in the next few days on the bank account used to pay your contribution.',\n )}\n \n \n )\n }\n\n if (orderStatus === models.order.OrderStatus.AWAITING_BANKWIRE && models.project.isFinished(order.project)) {\n return (\n \n \n {t('You did not make the bank transfer in time. Your contribution has not been taken into account.')}\n \n \n )\n }\n\n if (orderStatus === models.order.OrderStatus.SUBSCRIPTION_CANCELED) {\n return (\n \n \n {getSubscriptionCanceledMessage(order, () => setIsCancelUnsubscriptionModalOpen(true, { orderId: order.id }))}\n \n \n )\n }\n\n if (orderStatus === models.order.OrderStatus.AWAITING_BANKWIRE) {\n return (\n \n \n {tc(\n 'You have chosen a bank transfer as your payment method. We invite you to [Link: consult the instructions] to proceed with the payment. If you have already done so, this message will disappear as soon as we have received your transfer.',\n {\n Link: ,\n },\n )}\n \n \n )\n }\n\n if (orderStatus === models.order.OrderStatus.PAYMENT_REIMBURSED) {\n if (order.provider === 'stripe') {\n return (\n \n \n {t('The campaign was unsuccessful, you will not be debited.')}\n \n \n )\n }\n return (\n \n \n {tc('The campaign was unsuccessful, so we proceeded with the refund on [Bold]', {\n Bold: () => {date.format(new Date(order.project.date_end ?? ''), 'dd/MM/yyyy')},\n })}\n \n \n )\n }\n\n if (orderStatus === models.order.OrderStatus.PAYMENT_CANCELED) {\n if (order.provider === 'stripe') {\n return (\n \n \n {isProjectMembership\n ? t('You have requested to cancel your membership. Your bank account will not be debited.')\n : t('You have requested to cancel your contribution. Your bank account will not be debited.')}\n \n \n )\n }\n\n return (\n \n \n {isProjectMembership\n ? t(\n 'You have requested the cancellation of your membership. If you have not yet received the refund, you will receive it in the next few days on the bank account used to pay your contribution.',\n )\n : t(\n 'You have requested the cancellation of your contribution. If you have not yet received the refund, you will receive it in the next few days on the bank account used to pay your contribution.',\n )}\n \n \n )\n }\n\n if (orderStatus === models.order.OrderStatus.REIMBURSMENT_FAILURE) {\n return (\n \n \n {tc('The refund failed. In order to receive a refund, [Link: please fill in your chosen refund method.].', {\n Link: ,\n })}\n \n \n )\n }\n\n if (orderStatus === models.order.OrderStatus.PAYMENT_FAILURE) {\n return (\n \n \n {models.project.isFinished(order.project)\n ? t(\n 'The credit card payment failed. The campaign has ended and your contribution has not been taken into account.',\n )\n : tc(\n 'The credit card payment failed. [Link: Please make a new contribution] if you still wish to participate in the project.',\n {\n Link: ,\n },\n )}\n \n \n )\n }\n\n if (orderStatus === models.order.OrderStatus.PAYMENT_INVALID) {\n return (\n \n \n {isProjectMembership\n ? tc(\n 'Your payment has failed and without action on your part, your membership will not be taken into account. We invite you to [Link: renew the payment].',\n {\n Link: ,\n },\n )\n : tc(\n 'Your payment has failed and without action on your part, your contribution will not be taken into account. We invite you to [Link: renew the payment].',\n {\n Link: ,\n },\n )}\n \n \n )\n }\n\n if (orderStatus === models.order.OrderStatus.AWAITING_DELIVERY && lastDelivery) {\n return (\n \n \n {tc(\n 'The delivery of your reward was planned for %(deliveryDate)s, did you receive it? [Button: Yes, I confirm receiving my reward]',\n {\n deliveryDate: date.format(lastDelivery, 'MMMM yyyy'),\n Button: useOrder.toggleDelivered()} />,\n },\n )}\n \n \n )\n }\n\n if (order.shipping_status === api.ShippingStatus.DELIVERED) {\n return (\n \n \n {tc('You have confirmed that you have received your reward. [Button: Cancel]', {\n Button: useOrder.toggleDelivered()} />,\n })}\n \n \n )\n }\n\n return <>\n}\n\nconst StyledCallout = styled(plume.Callout)`\n ${plume.LinkAsButton} {\n padding-top: 0;\n padding-bottom: 0;\n }\n`\n", "import * as React from 'react'\nimport { styled, css } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as api from '@owl-nest/api-client/latest'\nimport { t, tc } from '@owl-nest/localize'\nimport * as service from '@owl-nest/services'\nimport * as models from '@owl-nest/models'\nimport * as hooks from '@owl-nest/hooks'\n\ntype AnonymousProps = {\n order: api.Order\n className?: string\n}\n\nfunction AnonymousComponent({ className, order }: AnonymousProps) {\n const useOrder = service.order.useOrder(order.id, { params: { context: 'contributions' }})\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n {t('Anonymous')}\n \n\n \n {\n useOrder.update({\n hidden: event.currentTarget.checked,\n })\n }}\n disabled={useOrder.response.status === hooks.QueryStatus.PENDING}\n />\n \n \n\n \n \n {tc(\n 'Activate the option if you wish to make your contribution anonymous, but it will remain visible for the project team. [Link: See more]',\n {\n Link: (\n \n ),\n },\n )}\n \n \n \n
    \n )\n}\n\nconst Grid = styled.div`\n align-items: center;\n display: grid;\n grid-column-gap: 0px;\n grid-row-gap: 8px;\n grid-template-columns: max-content 1fr max-content;\n grid-template-rows: repeat(2, max-content);\n`\n\nconst IconInactiveStroke = styled.g`\n transform-origin: 0 0;\n transition: transform 0.2s;\n`\n\nconst IconActiveStroke = styled.g`\n transform-origin: 0 0;\n transition: transform 0.2s;\n`\n\nconst IconBackground = styled.circle`\n transition: fill 0.2s;\n`\n\nconst LogoCell = styled.div<{ $active: boolean }>`\n grid-area: 1 / 1 / 2 / 2;\n margin-right: 12px;\n\n ${({ $active }) => {\n if ($active) {\n return css`\n ${plume.illustrations.Illustration} {\n ${IconBackground} {\n fill: ${plume.COLORS.PRIMARY_BLUE_900};\n }\n\n ${IconInactiveStroke} {\n transform: translate(48px, 0);\n }\n\n ${IconActiveStroke} {\n transform: translate(0, 0);\n }\n }\n `\n } else {\n return css`\n ${plume.illustrations.Illustration} {\n ${IconBackground} {\n fill: ${plume.COLORS.PRIMARY_SAND_500};\n }\n\n ${IconInactiveStroke} {\n transform: translate(0, 0);\n }\n\n ${IconActiveStroke} {\n transform: translate(-48px, 0);\n }\n }\n `\n }\n }}\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n grid-area: 1 / 1 / 3 / 2;\n margin-right: 16px;\n }\n`\n\nconst TitleCell = styled.div`\n grid-area: 1 / 2 / 2 / 3;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n grid-area: 1 / 2 / 2 / 3;\n }\n`\n\nconst ToggleCell = styled.div`\n position: relative;\n grid-area: 1 / 3 / 2 / 4;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n grid-area: 1 / 3 / 3 / 4;\n margin-top: 6px;\n }\n`\n\nconst DescriptionCell = styled.div`\n grid-area: 2 / 1 / 3 / 4;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n grid-area: 2 / 2 / 3 / 3;\n\n ${plume.Link} {\n display: block;\n }\n }\n`\n\nconst Toggle = styled.label`\n width: 57px;\n height: 28px;\n display: inline-block;\n border-radius: 14px;\n transition: background 0.2s;\n position: relative;\n\n &::before {\n content: '';\n display: inline-block;\n height: 22px;\n width: 22px;\n border: 3px solid transparent;\n border-radius: 14px;\n background: ${plume.COLORS.PRIMARY_GREY_000};\n position: absolute;\n top: 0;\n transition:\n border-color 0.2s,\n left 0.2s;\n }\n`\n\nexport const Anonymous = styled(AnonymousComponent)`\n ${plume.styles.input.HiddenFocusableInput} {\n right: 0;\n top: 0;\n bottom: 0;\n width: 57px;\n height: 57px;\n\n &:not(:checked) {\n & ~ ${Toggle} {\n background: ${plume.COLORS.PRIMARY_SAND_200};\n\n &::before {\n border-color: ${plume.COLORS.PRIMARY_SAND_200};\n left: 0;\n }\n }\n }\n\n &:checked {\n & ~ ${Toggle} {\n background: ${plume.COLORS.SECONDARY_GREEN_500};\n\n &::before {\n border-color: ${plume.COLORS.SECONDARY_GREEN_500};\n left: 29px;\n }\n }\n }\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\nimport { tc } from '@owl-nest/localize'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as env from '@owl-nest/config'\n\ntype PriceComponent = {\n className?: string\n amount: number\n currency: string\n recurring?: boolean\n}\n\nfunction PriceComponent({ className, amount, currency, recurring }: PriceComponent): React.ReactElement {\n const userConfig = env.useUserEnv()\n\n return (\n \n {recurring ? (\n <>\n {tc('[amount] / month', {\n amount: ,\n })}\n \n ) : (\n \n )}\n \n )\n}\n\nexport const Price = styled(PriceComponent)``\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { t } from '@owl-nest/localize'\nimport * as hooks from '@owl-nest/hooks'\nimport * as messages from '@owl-nest/messages'\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as service from '@owl-nest/services'\n\nfunction CancelUnsubscriptionRequestModalComponent({ className }: { className?: string }) {\n const [isOpen, setIsOpen] = hooks.useModal('CancelUnsubscriptionRequest')\n const params = hooks.useModalParams('CancelUnsubscriptionRequest')\n const useOrder = service.order.useOrder(params?.orderId, { params: { context: 'contributions' } })\n const messenger = messages.useMessage()\n\n async function onCancelRequest() {\n const result = await useOrder.reactivate()\n\n if (!result) return\n\n result.caseOf({\n left: () => {\n messenger.error({\n type: 'toast',\n message: t('Oops... An internal error has occurred. Please, retry.'),\n context: 'subscription',\n forceClose: true,\n })\n },\n right: () => {\n messenger.confirm({\n type: 'toast',\n message: t('Your unsubscription cancellation has been processed.'),\n context: 'subscription',\n forceClose: true,\n })\n setIsOpen(false)\n },\n })\n }\n\n return (\n setIsOpen(false)}\n buttons={[\n {\n type: 'button',\n props: {\n disabled: useOrder.response.status === hooks.QueryStatus.PENDING,\n color: 'red',\n onClick: onCancelRequest,\n children: t('Cancel request'),\n },\n },\n {\n type: 'linkAsButton',\n props: {\n disabled: useOrder.response.status === hooks.QueryStatus.PENDING,\n kind: 'secondary',\n onClick: () => setIsOpen(false),\n children: t('Back'),\n },\n },\n ]}\n >\n {t('Cancel unsubscribe request?')}\n \n {t(\n 'If you cancel your request, your membership will continue as normal and the next debit will be made on the usual date.',\n )}\n \n \n )\n}\n\nexport const CancelUnsubscriptionRequestModal = styled(CancelUnsubscriptionRequestModalComponent)`\n ${plume.styles.heading.S} {\n margin-bottom: 8px;\n text-align: center;\n }\n\n ${plume.styles.copy.L.light} {\n text-align: center;\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport { t, tc } from '@owl-nest/localize'\nimport * as model from '@owl-nest/models'\nimport * as date from '@owl-nest/date'\nimport * as api from '@owl-nest/api-client/latest'\nimport * as hooks from '@owl-nest/hooks'\nimport * as env from '@owl-nest/config'\n\nimport { Banner } from '../../components/Banner'\nimport { useAuthenticatedUser } from '../../hooks/useAuthenticatedUser'\nimport { ProjectStatus } from '../../components/ProjectStatus'\nimport { Price } from './Price'\nimport { PaymentInfo } from './PaymentInfo'\nimport { OrderItem } from './OrderItem'\nimport { Anonymous } from './Anonymous'\nimport { TaxDeduction } from './TaxDeduction'\n\ntype OrderSectionProps = {\n className?: string\n order: api.Order\n}\n\nfunction OrderSectionComponent({ order, className }: OrderSectionProps): React.ReactElement {\n const shippingCountryName = env.COUNTRIES.find((country) => country.code === order.shipping_address?.country)?.label\n const user = useAuthenticatedUser()\n const setIsRewardTaxDeductionModalOpen = hooks.useSetModal('RewardTaxDeductionInfo')\n const userConfig = env.useUserEnv()\n const isProjectDeleted = model.project.isDeleted(order?.project)\n const isOrderReimbursed = order.status === api.OrderStatus.PAYMENT_REIMBURSED\n\n return (\n
    \n {user.is_staff && 😎}\n\n \n {tc('Your contribution to [Link]', {\n Link: () => (\n \n {model.project.name(order?.project)}\n \n ),\n })}\n\n \n \n\n \n \n \n\n \n \n {`${t('Contribution #')}${order.id}`}\n\n {order.subscription !== undefined &&\n (order.subscription.status !== api.SubscriptionStatus.CANCELED &&\n order.subscription.status !== api.SubscriptionStatus.FAILED ? (\n {t('Enabled')}\n ) : (\n {t('Disabled')}\n ))}\n \n\n \n {t('Started on %(date)s at %(time)s', {\n date: date.format(new Date(order.created_at), 'dd/MM/yyyy'),\n time: date.format(new Date(order.created_at), \"HH'h'mm\"),\n })}\n \n \n\n \n {order.items?.map((orderItem, i) => {\n return \n })}\n\n {order.tip !== 0 && }\n\n {order.subscription !== undefined && (\n \n )}\n \n\n {order.order_shipping_total !== 0 && shippingCountryName && (\n \n \n {t('+ delivery country %(country)s', { country: shippingCountryName })}\n \n\n \n \n \n \n )}\n\n {order.pickup_point && (\n \n {t('Pickup point')}\n\n {t('Free')}\n \n )}\n\n {Boolean(order.service_fee) &&\n order.items &&\n (order.items.length > 1 || (order.items?.length === 1 && order.tip > 0)) && (\n \n {t('Total contribution')}\n\n \n \n \n \n )}\n\n {Boolean(order.service_fee) && (\n \n \n {t('Service fees')}\n \n \n \n \n {t(\n 'This service fee of 10 cts + %(serviceFeesRate)s incl. VAT enables us to continue improving our service, guaranteeing contributors the best possible experience and responsive customer service. This fee is refunded if the contribution is reimbursed, and includes VAT.',\n {\n serviceFeesRate: `${new Intl.NumberFormat(userConfig.lang).format(2.2)}\\u00A0%`,\n },\n )}\n \n \n \n \n\n \n +{'\\u00A0'}\n \n \n \n )}\n\n \n {t('Total')}\n\n \n \n \n \n\n {order.tax_deductible && (\n setIsRewardTaxDeductionModalOpen(true)}>\n \n\n {t('%(price)s after tax reduction', {\n price: plume.accounting.localeMoney(order.tax_deductible_total, {\n currency: order.project.currency,\n lang: userConfig.lang,\n }),\n })}\n \n )}\n {order.payment_receipt_url && !isOrderReimbursed && (\n \n \n \n {t('Payment receipt')}\n \n \n )}\n\n \n\n \n \n \n\n {order.tax_deductible && !isOrderReimbursed && (\n \n \n \n )}\n
    \n )\n}\n\nconst TotalLine = styled.div`\n display: flex;\n justify-content: end;\n align-items: baseline;\n margin-top: 24px;\n\n ${plume.styles.heading.XXXS} {\n color: ${plume.COLORS.TEXT_TERTIARY};\n text-transform: uppercase;\n margin-right: 16px;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n margin-top: 20px;\n }\n`\n\nconst AmountLine = styled.div<{ titleFontWeight: number; amountFontWeight?: number; noMargin?: boolean }>`\n display: flex;\n justify-content: end;\n align-items: baseline;\n margin-top: 20px;\n\n ${plume.styles.copy.S.regular} {\n color: ${plume.COLORS.TEXT_TERTIARY};\n margin-right: ${(props) => (props.noMargin ? 0 : '16px')};\n font-weight: ${(props) => props.titleFontWeight}; // HACK: illegal font manipulation\n }\n\n ${plume.styles.copy.L.light} {\n display: contents;\n font-weight: ${(props) =>\n props.amountFontWeight ? props.amountFontWeight : 300}; // HACK: illegal font manipulation\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n margin-top: 20px;\n }\n`\n\nconst OrderList = styled.ul`\n list-style: none;\n padding: 0;\n margin: 0;\n`\n\nconst OrderHead = styled.div`\n margin-bottom: 8px;\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n\n ${plume.styles.heading.M} {\n display: inline;\n margin-right: 16px;\n\n ${plume.Tag} {\n transform: translateY(-3px);\n margin-left: 9px;\n }\n }\n\n ${plume.styles.copy.S.regular} {\n color: ${plume.COLORS.PRIMARY_SAND_500};\n margin: 4px 0;\n flex: 1 0 100%;\n }\n`\n\nconst SectionWrapper = styled.div`\n border: 1px solid ${plume.COLORS.PRIMARY_SAND_200};\n padding: 21px 24px;\n`\n\nconst AdminLink = styled(plume.styles.link.Base)`\n // yak does not give a class to non exported styled-component with no css.\n // this is an issue because this component is used as a selector later in the file\n // to fix this we need to add a bogus css rule to force yak to generate a class\n // see : https://github.com/DigitecGalaxus/next-yak/issues/373\n --bogus-style: 0;\n`\n\nexport const OrderSection = styled(OrderSectionComponent)`\n display: flex;\n flex-direction: column;\n position: relative;\n\n & > ${plume.styles.heading.L} {\n margin-bottom: 32px;\n text-align: center;\n\n //HACK: link set its own font-weight, but we want the one from heading.L\n ${plume.Link} {\n font-weight: 900;\n }\n\n ${ProjectStatus} {\n margin: 9px;\n display: inline-flex;\n transform: translateY(-3px);\n }\n }\n\n ${AdminLink} {\n display: block;\n position: absolute;\n top: 0;\n width: 24px;\n right: 0;\n text-align: center;\n padding: 10px;\n }\n\n ${PaymentInfo} {\n align-self: end;\n margin-top: 24px;\n }\n\n ${SectionWrapper} {\n margin-top: 32px;\n }\n`\n\nconst TaxInfo = styled(plume.LinkAsButton)`\n margin-top: 5px;\n text-align: right;\n width: 100%;\n padding: 0;\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 PaymentReceiptLink = styled(plume.Link)`\n display: flex;\n justify-content: end;\n margin-top: 16px;\n padding: 0;\n text-align: right;\n width: 100%;\n`\n\nexport const ServiceFeesIconWrapper = styled.div`\n position: relative;\n\n ${plume.Tooltip} {\n display: none;\n }\n\n &:hover {\n ${plume.Tooltip} {\n display: block;\n }\n }\n`\n\nexport const ServiceFeesWrapper = styled.div`\n display: flex;\n position: relative;\n align-items: baseline;\n\n ${plume.glyphs.stroke.Info} {\n margin-left: 5px;\n margin-right: 16px;\n color: ${plume.COLORS.TEXT_TERTIARY};\n position: relative;\n }\n`\n\nconst Banners = styled.div`\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 32px;\n\n &:empty {\n display: none;\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport { t } from '@owl-nest/localize'\nimport * as api from '@owl-nest/api-client/latest'\nimport { payment } from '@owl-nest/utils'\n\ntype PaymentInfoProps = {\n className?: string\n order: api.Order\n}\n\nfunction PaymentInfoComponent({ order, className }: PaymentInfoProps) {\n const [isOpen, setIsOpen] = React.useState(false)\n\n return (\n
    \n setIsOpen(!isOpen)}>\n {t('View payment method')}\n {isOpen ? : }\n \n {isOpen && (\n \n \n {t('Type')} :\n {payment.getMethodName(order.payment_method)}\n \n {order.subscription && (\n <>\n \n {t('Number')} :\n {order.subscription?.card_number}\n \n \n {t('Owner')} :\n {order.subscription?.card_holder_name}\n \n \n {t('Expires')} :\n {order.subscription?.card_date_expiration}\n \n \n )}\n \n )}\n
    \n )\n}\n\nexport const PaymentInfo = styled(PaymentInfoComponent)`\n width: 446px;\n display: flex;\n flex-direction: column;\n\n ${plume.LinkAsButton} {\n margin: 0;\n padding: 0;\n align-self: end;\n\n ${plume.glyphs.Icon} {\n margin-left: 7px;\n color: ${plume.COLORS.PRIMARY_SAND_500};\n }\n }\n`\n\nconst InfoWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n justify-content: end;\n`\n\nconst InfoLine = styled.div`\n flex: 0 0 50%;\n`\n\nconst InfoLabel = styled(plume.styles.heading.XXXXXS)`\n color: ${plume.COLORS.TEXT_TERTIARY};\n display: inline-block;\n width: 71px;\n`\n\nconst InfoValue = styled(plume.styles.heading.XXXXXS)`\n color: ${plume.COLORS.TEXT_PRIMARY};\n display: inline-block;\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as api from '@owl-nest/api-client/latest'\nimport * as env from '@owl-nest/config'\nimport * as date from '@owl-nest/date'\nimport { tc, t } from '@owl-nest/localize'\nimport * as models from '@owl-nest/models'\nimport { MoneyDisplayer } from '@owl-nest/money'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport { Price } from './Price'\n\ntype OrderItemProps = {\n className?: string\n project: api.Project\n} & (\n | {\n kind: 'reward'\n orderItem: api.OrderItem\n }\n | {\n kind: 'tip'\n tip: number\n recurring?: boolean\n }\n)\n\nfunction OrderItemComponent(props: OrderItemProps) {\n if (props.kind === 'tip') {\n return \n }\n return \n}\n\ntype TipOrderItemProps = {\n className?: string\n project: api.Project\n tip: number\n recurring?: boolean\n}\n\nfunction TipOrderItem({ tip, project, className, recurring }: TipOrderItemProps) {\n return (\n
  • \n \n \n {recurring\n ? t('Monthly donation')\n : models.project.isDonationBased(project) || models.project.isMembership(project)\n ? t('One-time donation')\n : t('Donation without reward')}\n \n \n \n \n \n \n \n
  • \n )\n}\n\ntype RewardOrderItemProps = {\n className?: string\n orderItem: api.OrderItem\n project: api.Project\n}\n\nfunction RewardOrderItem({ orderItem, project, className }: RewardOrderItemProps) {\n const [isOpen, setIsOpen] = React.useState(false)\n const userConfig = env.useUserEnv()\n\n const reward = models.orderItem.getReward(orderItem, project)\n const variant = models.orderItem.getVariant(orderItem, project)\n if (reward === undefined) {\n return <>\n }\n\n const additionalCost = variant && variant.additional_cost\n const deliveryDate = models.reward.formattedDeliveryDate(reward)\n const image = variant ? models.variant.image(variant) : models.reward.image(reward)\n const rewardTitle = models.reward.title(reward)\n\n return (\n
  • \n \n {image && }\n \n \n {rewardTitle ? (\n <>\n {rewardTitle}\n {additionalCost && (\n <>\n {'\\u00A0'}()\n \n )}\n \n ) : (\n tc('For [price] or more', {\n price: (\n \n ),\n })\n )}\n \n {variant && (\n \n {models.variant.description(variant)}\n \n {additionalCost && (\n <>\n {'\\u00A0'}(+{'\\u00A0'}\n )\n \n )}\n \n \n )}\n \n setIsOpen(!isOpen)}>\n {t('View details')}\n {isOpen ? : }\n \n {isOpen && (\n \n \n {deliveryDate && (\n {t('Expected shipping date: %(date)s', { date: deliveryDate })}\n )}\n \n )}\n \n \n {orderItem.quantity > 1 && {orderItem.quantity} x}\n \n \n \n \n
  • \n )\n}\n\nconst DeliveryDate = styled(plume.styles.copy.S.regular)`\n color: ${plume.COLORS.TEXT_TERTIARY};\n margin-top: 14px;\n`\n\nconst RewardDescription = styled.div`\n // yak does not give a class to non exported styled-component with no css.\n // this is an issue because this component is used as a selector later in the file\n // to fix this we need to add a bogus css rule to force yak to generate a class\n // see : https://github.com/DigitecGalaxus/next-yak/issues/373\n --bogus-style: 0;\n`\n\nconst RewardTitle = styled.div`\n display: flex;\n flex-direction: column;\n\n ${plume.styles.copy.XS.regular}, ${plume.styles.copy.S.regular} {\n margin-top: 4px;\n color: ${plume.COLORS.TEXT_TERTIARY};\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n overflow: hidden;\n }\n\n ${plume.styles.heading.XXS} {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n overflow: hidden;\n }\n`\n\nconst RewardImage = styled.img`\n // yak does not give a class to non exported styled-component with no css.\n // this is an issue because this component is used as a selector later in the file\n // to fix this we need to add a bogus css rule to force yak to generate a class\n // see : https://github.com/DigitecGalaxus/next-yak/issues/373\n --bogus-style: 0;\n`\n\nconst RewardDetail = styled.div`\n padding: 16px;\n border: 1px solid ${plume.COLORS.PRIMARY_SAND_200};\n display: flex;\n flex-wrap: wrap;\n flex-direction: column;\n align-items: center;\n margin-top: 24px;\n\n ${RewardImage} {\n flex: 0 0 auto;\n margin-bottom: 8px;\n width: 100%;\n }\n\n ${RewardTitle} {\n flex: 1 1 auto;\n align-self: start;\n }\n\n ${plume.LinkAsButton} {\n flex: 0 0 auto;\n padding: 0;\n margin-top: 8px;\n\n ${plume.glyphs.Icon} {\n margin-left: 7px;\n color: ${plume.COLORS.PRIMARY_SAND_500};\n }\n }\n\n ${RewardDescription} {\n flex: 0 0 100%;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n flex-direction: row;\n margin-top: 8px;\n\n ${RewardImage} {\n height: 87px;\n margin-bottom: 0px;\n margin-right: 16px;\n width: auto;\n }\n\n ${RewardTitle} {\n align-self: auto;\n }\n\n ${plume.LinkAsButton} {\n margin-top: 0px;\n }\n }\n`\n\nconst Quantity = styled(plume.styles.heading.XS)`\n color: ${plume.COLORS.TEXT_TERTIARY};\n`\n\nconst OrderItemDetail = styled.div`\n display: flex;\n justify-content: end;\n\n ${Price} {\n margin-left: 12px;\n }\n`\n\nexport const OrderItem = styled(OrderItemComponent)`\n display: flex;\n flex-direction: column;\n align-items: stretch;\n\n ${RewardDetail} {\n flex: 1;\n }\n\n ${OrderItemDetail} {\n margin-top: 8px;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n flex-direction: row;\n align-items: center;\n\n ${OrderItemDetail} {\n flex: 0 0 114px;\n }\n }\n`\n\nconst VariantDescription = styled.span`\n align-items: baseline;\n display: flex;\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport * as hooks from '@owl-nest/hooks'\nimport { t, tc } from '@owl-nest/localize'\nimport * as models from '@owl-nest/models'\nimport * as api from '@owl-nest/api-client/latest'\n\ntype TipTaxReceiptInfoProps = {\n project: api.Project\n rewards: api.Reward[]\n hasTip: boolean\n}\n\nexport function RewardTaxDeductionModal({ project, rewards, hasTip }: TipTaxReceiptInfoProps): React.ReactElement {\n const [isTaxReceiptModalOpen, setIsTaxReceiptModalOpen] = hooks.useModal('RewardTaxDeductionInfo')\n\n if (!project.tax_deductible) {\n return <>\n }\n\n const taxDeductibleRate = Number(project?.tax_deductible_rate ?? 66)\n\n const filteredRewards = rewards ? rewards.filter((reward) => reward.tax_deductible) : []\n\n return (\n 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={}\n svgScale={0.9}\n >\n \n {t('The following items are %(rate)s tax-deductible:', {\n rate: `${taxDeductibleRate}%`,\n })}\n \n
      \n {hasTip && (\n
    • \n {t('Donation (without reward)')}\n
    • \n )}\n {filteredRewards.length > 0 &&\n filteredRewards.map((reward) => {\n return (\n
    • \n \n {models.reward.title(models.reward.Reward(reward, project))}\n \n
    • \n )\n })}\n
    \n\n {project.tax_receipt_enabled ? (\n \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:
    ,\n rate: `${taxDeductibleRate}%`,\n maximumRate: '20%',\n },\n )}\n
    \n ) : (\n \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:
    ,\n rate: `${taxDeductibleRate}%`,\n maximumRate: '20%',\n },\n )}\n
    \n )}\n \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", "import * as React from 'react'\nimport { styled, css } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as hooks from '@owl-nest/hooks'\nimport * as api from '@owl-nest/api-client/latest'\nimport * as date from '@owl-nest/date'\nimport { t } from '@owl-nest/localize'\nimport * as models from '@owl-nest/models'\nimport * as env from '@owl-nest/config'\n\nimport { useSubscriptions, subscriptionsParamsToURLSearchParams } from '../../hooks/useSubscriptions'\n\ntype SubscriptionHistorySectionProps = {\n className?: string\n order: api.Order\n}\n\nfunction SubscriptionHistorySectionComponent({ order, className }: SubscriptionHistorySectionProps) {\n const { useSubscriptionsOrders, params } = useSubscriptions(order?.subscription?.id, {\n fetchOnMount: 'force',\n limit: 5,\n })\n const metadata = useSubscriptionsOrders.meta\n const pageCount = metadata && Math.ceil(metadata.total_count / metadata.limit)\n const selectedPage = params.subscriptionsPage ?? 1\n\n const paginatedSubscriptions = hooks.data(useSubscriptionsOrders.response)\n\n const isProjectMembership = models.project.isMembership(order.project)\n const userConfig = env.useUserEnv()\n\n // HACK: next_payment_expected_at has no time information. For\n // a canadian user (GMT -5), parsing this date will give a\n // Date for the day before. Adding time info fixes the issue.\n const fixedNextPaymentExpectedAt = order.subscription?.next_payment_expected_at\n ? new Date(`${order.subscription.next_payment_expected_at} 00:00:00`)\n : undefined\n\n const nbRowElements =\n 2 + (order.tax_receipt_url !== undefined ? 1 : 0) + (order.payment_receipt_url !== undefined ? 1 : 0)\n\n if (\n useSubscriptionsOrders.response.status !== hooks.QueryStatus.SUCCESS &&\n !Boolean(paginatedSubscriptions?.length)\n ) {\n return (\n
    \n {isProjectMembership ? t('History') : t('Donation history')}\n \n \n \n \n \n \n
    \n )\n }\n\n return (\n
    \n {isProjectMembership ? t('History') : t('Donation history')}\n {fixedNextPaymentExpectedAt &&\n selectedPage === 1 &&\n order.subscription &&\n order.subscription.status !== api.SubscriptionStatus.CANCELED &&\n !models.project.isFinished(order.project) && (\n \n \n \n {plume.utils.isMobile() ? (\n <>{date.format(fixedNextPaymentExpectedAt, 'dd/MM/yyyy')}\n ) : (\n <>{date.format(fixedNextPaymentExpectedAt, 'd MMMM yyyy')}\n )}\n \n \n\n \n \n \n \n \n \n \n {isProjectMembership ? t('Upcoming payment') : t('Next donation')}\n \n \n \n )}\n {paginatedSubscriptions?.map((page) => {\n return page.orders.map((childOrder) => {\n const nbChildOrderRowElements =\n 2 +\n (childOrder.tax_receipt_url !== undefined ? 1 : 0) +\n (childOrder.payment_receipt_url !== undefined ? 1 : 0)\n\n return (\n \n \n \n {plume.utils.isMobile() ? (\n <>{date.format(new Date(childOrder.created_at), 'dd/MM/yyyy')}\n ) : (\n <>{date.format(new Date(childOrder.created_at), 'd MMMM yyyy')}\n )}\n \n \n\n \n \n \n \n \n \n \n {(childOrder.status === api.OrderStatus.PAYMENT_COMPLETED ||\n childOrder.status === api.OrderStatus.PAYMENT_DONE) && (\n {t('Payment done')}\n )}\n\n {(childOrder.status === api.OrderStatus.ERROR ||\n childOrder.status === api.OrderStatus.PAYMENT_INVALID) && (\n {t('Payment invalid')}\n )}\n \n {childOrder.payment_receipt_url && (\n \n \n \n \n {t('Payment receipt')}\n \n \n \n )}\n {childOrder.tax_receipt_url && (\n \n \n \n \n {t('Tax receipt')}\n \n \n \n )}\n \n \n )\n })\n })}\n {pageCount && (\n \n '#'}\n onNavigate={() => undefined}\n />\n \n )}\n
    \n )\n\n function PaginationLink({ children, page }: { children: React.ReactNode; page: number }): React.ReactElement {\n const { params, setParams } = useSubscriptions(order?.subscription?.id, {\n fetchOnMount: false,\n })\n\n const linkClickHandler = hooks.useLinkClickHandler({\n navigate: () => navigate(page),\n })\n\n return (\n \n {children}\n \n )\n\n function href(subscriptionsPage: number): string {\n const searchParams = subscriptionsParamsToURLSearchParams({\n ...params,\n subscriptionsPage,\n })\n\n return `?${searchParams.toString()}`\n }\n\n function navigate(subscriptionsPage: number): void {\n setParams((params) => ({\n ...params,\n subscriptionsPage,\n }))\n }\n }\n}\n\nconst HistoryGrid = styled.div`\n align-items: baseline;\n border-bottom: 1px solid rgb(227, 221, 211);\n display: grid;\n grid-auto-rows: auto;\n grid-template-columns: 1fr 190px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n align-items: center;\n grid-template-columns: 2fr 1fr;\n }\n`\n\nconst SkeletonGrid = styled.div`\n align-items: baseline;\n\n border-bottom: 1px solid rgb(227, 221, 211);\n display: grid;\n grid-auto-rows: auto;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n align-items: center;\n }\n`\n\nconst MoreCell = styled.div<{ $nbElement: number }>`\n align-items: center;\n display: flex;\n justify-content: end;\n flex-wrap: wrap;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n display: grid;\n ${({ $nbElement }) => {\n if ($nbElement === 2) {\n return css`\n grid-template-columns: max-content 140px;\n `\n } else if ($nbElement === 3) {\n return css`\n grid-template-columns: max-content 140px max-content;\n `\n } else {\n return css`\n grid-template-columns: max-content 140px max-content max-content;\n `\n }\n }};\n }\n`\n\nconst SubscriptionSkeleton = styled(plume.styles.skeleton.Text)`\n height: 58px;\n margin: 10px 0;\n`\n\nconst Cell = styled.div`\n align-items: center;\n display: flex;\n padding: 8px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n padding: 0 17px;\n height: 58px;\n }\n`\n\nconst DateCell = styled(Cell)`\n padding-left: 0px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n padding-left: 8px;\n }\n`\n\nconst PriceCell = styled(Cell)`\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n justify-content: end;\n }\n`\n\nconst StatusCell = styled(Cell)`\n justify-self: center;\n padding-right: 0px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n justify-self: end;\n padding-right: 8px;\n }\n`\n\nconst ReceiptCell = styled(Cell)`\n padding-right: 0px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n padding-right: 8px;\n }\n`\n\nexport const SubscriptionHistorySection = styled(SubscriptionHistorySectionComponent)`\n display: flex;\n flex-direction: column;\n\n ${plume.styles.heading.M} {\n margin-bottom: 18px;\n }\n\n ${plume.Button} {\n align-self: center;\n margin-top: 18px;\n }\n`\n\nconst Pagination = styled.div`\n align-items: center;\n display: flex;\n justify-content: center;\n margin-top: 32px;\n\n /* NOT SCREEN */\n @media not screen and ${plume.BREAKPOINTS.TABLET} {\n ${plume.Button} {\n width: 100%;\n margin: 10px;\n }\n }\n`\n", "import * as hooks from '@owl-nest/hooks'\nimport * as services from '@owl-nest/services'\n\nexport function useSubscriptions(\n subscriptionId?: number,\n config: {\n fetchOnMount?: boolean | 'force'\n limit?: number\n } = {},\n) {\n const [params, setParams] = useSubscriptionsQueryParams()\n\n const paramsWithLimit = {\n ...params,\n limit: 5,\n }\n\n const useSubscriptionsOrders = services.order.useSubscriptionOrders(subscriptionId, {\n fetchOnMount: config.fetchOnMount ?? true,\n params: paramsWithLimit,\n })\n\n return { useSubscriptionsOrders, params: paramsWithLimit, setParams }\n}\n\nexport function useSubscriptionsQueryParams(): [\n services.order.SubscriptionsOrdersParams<''>,\n (\n set: (params: services.order.SubscriptionsOrdersParams<''>) => services.order.SubscriptionsOrdersParams<''>,\n navigateOptions?: { replace?: boolean },\n ) => void,\n] {\n return hooks.useQueryParams({}, subscriptionsParamsFromURLSearchParams, subscriptionsParamsToURLSearchParams)\n}\n\nexport function subscriptionsParamsToURLSearchParams(\n params: services.order.SubscriptionsOrdersParams<''>,\n): URLSearchParams {\n const searchParams = new URLSearchParams()\n\n if (params === undefined) {\n return searchParams\n }\n\n if (params.page !== undefined && params.page !== 1) {\n searchParams.set('page', String(params.page))\n }\n\n if (params.subscriptionsPage !== undefined && params.subscriptionsPage !== 1) {\n searchParams.set('subscriptionsPage', String(params.subscriptionsPage))\n }\n\n return searchParams\n}\n\nexport function subscriptionsParamsFromURLSearchParams(\n searchParams: URLSearchParams,\n): services.order.SubscriptionsOrdersParams<''> {\n const params: services.order.SubscriptionsOrdersParams<''> = {}\n\n const rawPage = searchParams.get('page')\n if (rawPage) {\n const page = Math.floor(Number(rawPage))\n if (!Number.isNaN(page) && Number.isFinite(page)) {\n params.page = page\n }\n }\n const rawSubscriptionsPage = searchParams.get('subscriptionsPage')\n if (rawSubscriptionsPage) {\n const subscriptionsPage = Math.floor(Number(rawSubscriptionsPage))\n if (!Number.isNaN(subscriptionsPage) && Number.isFinite(subscriptionsPage)) {\n params.subscriptionsPage = subscriptionsPage\n }\n }\n\n return params\n}\n", "import * as React from 'react'\nimport { useNavigate } from 'react-router'\n\nimport * as hooks from '@owl-nest/hooks'\nimport * as service from '@owl-nest/services'\n\nimport { useBacker } from './useBacker'\nimport * as path from '../paths'\n\nexport function useHasAccessToOrder() {\n const backer = useBacker()\n const params = path.useParsedParams()\n const useOrder = service.order.useOrder(params.orderId, { params: { context: 'contributions' }})\n const order = hooks.data(useOrder.response)\n const navigate = useNavigate()\n const href = path.hrefOrderList({ userId: backer.id })\n\n React.useEffect(() => {\n if (\n (order === undefined && useOrder.response.status === hooks.QueryStatus.SUCCESS) ||\n useOrder.response.status === hooks.QueryStatus.FAILURE\n ) {\n navigate(href)\n }\n }, [useOrder.response.status])\n\n return order\n}\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\nimport * as formik from 'formik'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport { model as addressModel } from '@owl-nest/address'\nimport { t } from '@owl-nest/localize'\nimport * as api from '@owl-nest/api-client/latest'\nimport * as hooks from '@owl-nest/hooks'\nimport * as logger from '@owl-nest/logger'\nimport * as messages from '@owl-nest/messages'\nimport * as model from '@owl-nest/models'\nimport * as service from '@owl-nest/services'\nimport * as env from '@owl-nest/config'\nimport * as utils from '@owl-nest/utils'\n\nimport { type AddressForm, AddressField } from './types'\nimport { BillingSection } from './BillingSection'\nimport { MondialRelaySection } from './MondialRelaySection'\nimport { useBacker } from '../../../hooks/useBacker'\nimport { validationSchema } from './validation'\n\ntype MondialRelayAddressProps = {\n className?: string\n order: api.Order\n orderStatus?: model.order.OrderStatus\n}\n\nfunction MondialRelayAddressComponent({\n order,\n className,\n orderStatus,\n}: MondialRelayAddressProps): React.ReactElement {\n const [mode, setMode] = React.useState<'read' | 'write'>('read')\n\n if (mode === 'write') {\n return setMode('read')} />\n }\n\n const billingAdress = order?.billing_address\n\n return (\n \n \n
    \n {t('Mondial Relay delivery')}\n {order?.project?.shipping_addresses_locked && (\n \n {t('The project team has blocked the editing of the delivery address.')}\n \n )}\n\n {order?.shipping_address !== undefined && (\n \n \n {t('Recipient')}\n\n \n {order.shipping_address.first_name} {order.shipping_address.last_name}\n \n\n {order.shipping_address.phone_number}\n \n\n \n {t('Drop-off point')}\n\n \n {addressModel.formatMondialRelay(order.shipping_address, env.COUNTRIES)}\n \n\n \n {t('View on a map')}\n \n \n \n )}\n
    \n\n {billingAdress !== undefined && (\n
    \n {t('Billing')}\n\n \n {addressModel.format(billingAdress, env.COUNTRIES)}\n \n
    \n )}\n
    \n\n setMode('write')}\n >\n {t('Edit')}\n \n
    \n )\n}\n\nexport const MondialRelayAddress = styled(MondialRelayAddressComponent)``\n\ntype EditAddressProps = {\n className?: string\n onDone: () => void\n order: api.Order\n}\n\nfunction EditAddressComponent({ className, order, onDone }: EditAddressProps): React.ReactElement {\n const backer = useBacker()\n const useOrder = service.order.useOrder(order.id, { params: { context: 'contributions' } })\n const messenger = messages.useMessage()\n\n return (\n
    \n \n initialValues={getInitialValues(order)}\n onSubmit={onSubmit}\n validationSchema={validationSchema}\n validateOnBlur={false}\n validateOnChange={false}\n validateOnMount={true}\n >\n {(formikBag) => {\n hooks.useScrollToFirstError(formikBag)\n return (\n
    \n \n \n\n {t('Save')}\n \n )\n }}\n \n
    \n )\n\n function getInitialValues(order: api.Order): AddressForm {\n const shippingAddress = order.shipping_address\n const billingAddress = order.billing_address\n\n return {\n [AddressField.ADDRESS]: {\n address1: shippingAddress?.address1 ?? '',\n address2: shippingAddress?.address2 ?? '',\n city: shippingAddress?.city ?? '',\n country: shippingAddress?.country ?? '',\n dropoff_id: shippingAddress?.dropoff_id ?? '',\n dropoff_name: shippingAddress?.dropoff_name ?? '',\n latitude: shippingAddress?.latitude ?? 0,\n longitude: shippingAddress?.longitude ?? 0,\n postal_code: shippingAddress?.postal_code ?? '',\n state: shippingAddress?.state ?? '',\n },\n [AddressField.BILLING_ADRESS]: {\n address1: billingAddress?.address1 ?? '',\n address2: billingAddress?.address2 ?? '',\n city: billingAddress?.city ?? '',\n country: billingAddress?.country ?? '',\n entity_name: billingAddress?.entity_name ?? '',\n first_name: billingAddress?.first_name ?? '',\n last_name: billingAddress?.last_name ?? '',\n latitude: 0,\n longitude: 0,\n phone_number: billingAddress?.phone_number\n ? { number: billingAddress?.phone_number, country: '' as utils.phone.CountryCode }\n : { number: '', country: '' as utils.phone.CountryCode },\n postal_code: billingAddress?.postal_code ?? '',\n state: billingAddress?.state ?? '',\n type: billingAddress?.type ?? api.AddressType.PERSONAL,\n },\n [AddressField.FIRST_NAME]: shippingAddress?.first_name ?? '',\n [AddressField.LAST_NAME]: shippingAddress?.last_name ?? '',\n [AddressField.PHONE_NUMBER]: {\n number: shippingAddress?.phone_number ?? '',\n country: '' as utils.phone.CountryCode,\n },\n }\n }\n\n async function onSubmit(values: AddressForm): Promise {\n const payload = getPayload()\n const result = await useOrder.update(payload)\n const params = { context: 'order', type: 'toast', forceClose: true }\n\n result?.caseOf({\n left: () => {\n logger.err('Failed address update', { backer, payload })\n messenger.error({\n ...params,\n message: t(\n 'Oops... an error occured. Please refresh the page to retry. If the error persists, please contact support.',\n ),\n type: 'toast',\n forceClose: true,\n })\n },\n right: () => {\n messenger.confirm({\n context: 'order',\n message: t('Your address has been successfully updated'),\n type: 'toast',\n forceClose: true,\n })\n },\n })\n\n onDone()\n\n function getPayload() {\n const phoneNumber = utils.phone.normalizePhoneNumber(\n values[AddressField.PHONE_NUMBER].number,\n values[AddressField.PHONE_NUMBER].country as utils.phone.CountryCode,\n )\n\n const billingPhoneNumber = utils.phone.normalizePhoneNumber(\n values[AddressField.BILLING_ADRESS].phone_number.number,\n values[AddressField.BILLING_ADRESS].phone_number.country as utils.phone.CountryCode,\n )\n\n const shippingAddress = {\n ...values[AddressField.ADDRESS],\n first_name: values[AddressField.FIRST_NAME],\n last_name: values[AddressField.LAST_NAME],\n phone_number: phoneNumber,\n }\n\n const billingAddress = {\n ...values[AddressField.BILLING_ADRESS],\n phone_number: billingPhoneNumber,\n ...(values[AddressField.BILLING_ADRESS].type !== api.AddressType.PERSONAL && {\n entity_name: values[AddressField.BILLING_ADRESS].entity_name,\n }),\n }\n\n delete billingAddress.latitude\n delete billingAddress.longitude\n\n return {\n shipping_address: shippingAddress,\n billing_address: billingAddress,\n }\n }\n }\n}\n\nconst Section = styled.div``\n\nconst Sections = styled.div`\n column-gap: 40px;\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n`\n\nconst AddressColumn = styled.div`\n // yak does not give a class to non exported styled-component with no css.\n // this is an issue because this component is used as a selector later in the file\n // to fix this we need to add a bogus css rule to force yak to generate a class\n // see : https://github.com/DigitecGalaxus/next-yak/issues/373\n --bogus-style: 0;\n`\n\nconst AddressGroup = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n\n ${plume.CheckboxField} {\n margin-bottom: 32px;\n }\n\n ${AddressColumn} {\n flex: 1;\n\n &:first-of-type {\n margin-right: 20px;\n }\n }\n`\n\nconst ReadAddress = styled.div`\n display: flex;\n flex-direction: column;\n\n ${plume.styles.heading.XS} {\n margin-bottom: 16px;\n }\n\n ${plume.Button} {\n margin-top: 16px;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n ${plume.Button} {\n align-self: end;\n }\n }\n`\n\nconst AddressDisplay = styled(plume.styles.copy.S.regular)`\n white-space: pre;\n`\n\nconst EditAddress = styled(EditAddressComponent)`\n display: flex;\n flex-direction: column;\n\n ${plume.Button} {\n align-self: end;\n }\n`\n\nexport const IdentityGroup = styled(plume.styles.controls.Group)`\n margin: 5px 0 20px;\n flex-direction: column;\n\n ${plume.styles.field.Title} {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n\n ${plume.TextField} {\n flex: 1;\n &:first-child {\n margin-bottom: 20px;\n }\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n flex-direction: row;\n\n ${plume.TextField}:first-child {\n margin-right: 10px;\n margin-bottom: 0;\n }\n }\n`\n\nconst SmallTitle = styled(plume.styles.copy.S.regular)`\n color: ${plume.COLORS.PRIMARY_SAND_700};\n text-transform: uppercase;\n`\n\nconst StyledCallout = styled(plume.Callout)`\n margin-bottom: 16px;\n`\n", "import * as api from '@owl-nest/api-client/latest'\nimport * as Enum from '@owl-nest/legacy-enum'\nimport * as utils from '@owl-nest/utils'\n\nexport const AddressField = Enum.create({\n ADDRESS: 'address',\n BILLING_ADRESS: 'billingAddress',\n FIRST_NAME: 'firstName',\n LAST_NAME: 'lastName',\n PHONE_NUMBER: 'phoneNumber',\n})\n\nexport type AddressForm = {\n [AddressField.ADDRESS]: {\n address1: string\n address2: string\n city: string\n country: string\n dropoff_id: string\n dropoff_name: string\n latitude: number\n longitude: number\n postal_code: string\n state: string\n }\n [AddressField.BILLING_ADRESS]: {\n address1: string\n address2: string\n city: string\n country: string\n entity_name: string\n first_name: string\n last_name: string\n latitude?: number\n longitude?: number\n phone_number: { number: string; country: utils.phone.CountryCode }\n postal_code: string\n state: string\n type: api.AddressType\n }\n [AddressField.FIRST_NAME]: string\n [AddressField.LAST_NAME]: string\n [AddressField.PHONE_NUMBER]: { number: string; country: utils.phone.CountryCode }\n}\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\nimport * as formik from 'formik'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport { AutocompleteSubForm } from '@owl-nest/address'\nimport { t } from '@owl-nest/localize'\nimport * as api from '@owl-nest/api-client/latest'\nimport * as env from '@owl-nest/config'\nimport * as utils from '@owl-nest/utils'\n\nimport { type AddressForm, AddressField } from './types'\n\ntype BillingSectionProps = {\n className?: string\n}\n\nexport function BillingSection({ className }: BillingSectionProps) {\n const formikBag = formik.useFormikContext()\n\n const [phoneCountryCode, setPhoneCountryCode] = React.useState(undefined)\n const type = formikBag.values[AddressField.BILLING_ADRESS].type\n\n const accountStatusLabels = {\n [api.AddressType.PERSONAL]: t('Individual person'),\n [api.AddressType.BUSINESS]: t('Company or self-business'),\n [api.AddressType.ASSOCIATION]: t('Association'),\n }\n\n return (\n \n {t('Billing')}\n\n \n {({ field, meta, form }: formik.FieldProps) => {\n return (\n \n \n {Object.values(api.AddressType).map((accountStatus) => (\n {\n form.setFieldValue(AddressField.BILLING_ADRESS, {\n ...field.value,\n type: event.currentTarget.value,\n })\n }}\n />\n ))}\n \n \n )\n }}\n \n\n \n \n {(type === api.AddressType.ASSOCIATION || type === api.AddressType.BUSINESS) && (\n \n {({\n field,\n meta,\n form,\n }: formik.FieldProps) => {\n return (\n {\n form.setFieldValue(AddressField.BILLING_ADRESS, {\n ...field.value,\n entity_name: event.currentTarget.value,\n })\n }}\n error={meta.touched && formik.getIn(form.errors, `${field.name}.entity_name`)}\n />\n )\n }}\n \n )}\n\n \n \n {({\n field,\n meta,\n form,\n }: formik.FieldProps) => {\n return (\n {\n form.setFieldValue(AddressField.BILLING_ADRESS, {\n ...field.value,\n first_name: event.currentTarget.value,\n })\n }}\n error={meta.touched && formik.getIn(form.errors, `${field.name}.first_name`)}\n />\n )\n }}\n \n\n \n {({\n field,\n meta,\n form,\n }: formik.FieldProps) => {\n return (\n {\n form.setFieldValue(AddressField.BILLING_ADRESS, {\n ...field.value,\n last_name: event.currentTarget.value,\n })\n }}\n error={meta.touched && formik.getIn(form.errors, `${field.name}.last_name`)}\n />\n )\n }}\n \n \n\n \n {({\n field,\n meta,\n form,\n }: formik.FieldProps) => {\n return (\n {\n setPhoneCountryCode(phone.country)\n form.setFieldValue(AddressField.BILLING_ADRESS, {\n ...field.value,\n phone_number: { number: phone.number, country: phone.country as utils.phone.CountryCode },\n })\n }}\n onBlur={field.onBlur}\n label={t('Phone number')}\n error={meta.touched && formik.getIn(form.errors, `${field.name}.phone_number.number`)}\n />\n )\n }}\n \n \n\n \n \n {({\n field,\n meta,\n form,\n }: formik.FieldProps) => {\n return (\n {\n const addressWithoutLongLat = { ...baseAddress }\n delete addressWithoutLongLat.latitude\n delete addressWithoutLongLat.longitude\n\n form.setFieldValue(AddressField.BILLING_ADRESS, {\n ...field.value,\n ...baseAddress,\n })\n }}\n touched={form.touched[AddressField.BILLING_ADRESS] ?? {}}\n errors={form.errors[AddressField.BILLING_ADRESS] ?? {}}\n />\n )\n }}\n \n \n \n \n )\n}\n\nconst Wrapper = styled.div`\n margin-top: 40px;\n\n ${plume.styles.heading.XS} {\n margin-bottom: 18px;\n }\n`\n\nconst AddressFormGroup = styled.div`\n display: flex;\n flex-direction: column;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n flex-direction: row;\n }\n`\n\nconst LeftColumn = styled.div`\n flex: 1;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n margin-right: 24px;\n }\n`\n\nconst RightColumn = styled.div`\n flex: 1;\n\n ${plume.Button} {\n margin-top: 16px;\n }\n`\n\nconst EntityNameField = styled(plume.TextField)`\n margin-top: 5px;\n margin-bottom: 20px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n padding-right: 49%;\n margin-right: 10px;\n }\n`\n\nexport const IdentityGroup = styled(plume.styles.controls.Group)`\n margin: 5px 0 20px;\n flex-direction: column;\n\n ${plume.styles.field.Title} {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n\n ${plume.TextField} {\n flex: 1;\n &:first-child {\n margin-bottom: 20px;\n }\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n flex-direction: row;\n\n ${plume.TextField}:first-child {\n margin-right: 10px;\n margin-bottom: 0;\n }\n }\n`\n\nconst StyledPhoneField = styled(plume.PhoneField)`\n margin: 23px 0 20px;\n`\n\nconst RadioGroupField = styled(plume.RadioGroupField)`\n ${plume.SmallRadioList} {\n flex-wrap: wrap;\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as api from '@owl-nest/api-client/latest'\nimport { t } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport { MondialRelayStep1 } from './MondialRelayStep1'\nimport { MondialRelayStep2 } from './MondialRelayStep2'\n\ntype MondialRelaySectionProps = {\n order: api.Order\n}\n\nexport function MondialRelaySection({ order }: MondialRelaySectionProps) {\n return (\n
    \n {t('Mondial Relay delivery')}\n {order?.project?.shipping_addresses_locked && (\n \n {t('The project team has blocked the editing of the delivery address.')}\n \n )}\n\n \n \n \n \n
    \n )\n}\n\nconst Wrapper = styled.div`\n margin-top: 16px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n display: grid;\n grid-column-gap: 16px;\n grid-row-gap: 0px;\n grid-template-columns: repeat(2, 1fr);\n margin-top: 18px;\n }\n`\n\nconst StyledCallout = styled(plume.Callout)`\n margin: 16px 0px;\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\nimport * as formik from 'formik'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport { t } from '@owl-nest/localize'\nimport * as api from '@owl-nest/api-client/next'\nimport * as env from '@owl-nest/config'\nimport * as utils from '@owl-nest/utils'\n\nimport { StepTitle } from './StepTitle'\n\nimport { AddressField, type AddressForm } from './types'\n\ntype MondialRelayStep1Props = {\n order: api.Order\n}\n\nexport function MondialRelayStep1({ order }: MondialRelayStep1Props) {\n const [phoneCountryCode, setPhoneCountryCode] = React.useState(undefined)\n\n const defaultPhoneCountry = env.COUNTRIES.find((country) => country.code === env.USER_COUNTRY) || env.COUNTRIES[0]\n const deliveryCountries = [env.COUNTRIES.find((country) => country.code === order.shipping_address?.country)]\n\n const isEditingLocked = order?.project?.shipping_addresses_locked\n\n return (\n \n {t('Enter your contact details')}\n\n \n \n {({ field, meta, form }: formik.FieldProps) => {\n return (\n {\n form.setFieldValue(AddressField.FIRST_NAME, event.target.value)\n }}\n value={field.value}\n disabled={isEditingLocked}\n />\n )\n }}\n \n\n \n {({ field, meta, form }: formik.FieldProps) => {\n return (\n {\n form.setFieldValue(AddressField.LAST_NAME, event.target.value)\n }}\n value={field.value}\n disabled={isEditingLocked}\n />\n )\n }}\n \n \n\n \n {({ field, meta, form }: formik.FieldProps) => {\n return (\n {\n setPhoneCountryCode(phone.country)\n form.setFieldValue(AddressField.PHONE_NUMBER, {\n number: phone.number,\n country: phone.country as utils.phone.CountryCode,\n })\n }}\n value={{ number: field.value.number, country: phoneCountryCode }}\n disabled={isEditingLocked}\n />\n )\n }}\n \n\n \n {deliveryCountries.map((option) => {\n if (!option?.code && !option?.label) {\n return <>\n }\n return \n })}\n \n \n )\n}\n\nconst Wrapper = styled.div`\n ${plume.Select} {\n z-index: 3;\n }\n\n ${plume.PhoneField} {\n margin-bottom: 16px;\n }\n`\n\nexport const IdentityGroup = styled(plume.styles.controls.Group)`\n margin-bottom: 20px;\n\n ${plume.TextField} {\n flex: 1;\n\n &:first-child {\n margin-right: 10px;\n }\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\ntype StepTitleProps = {\n index: number\n className?: string\n children: React.ReactNode\n}\n\nfunction StepTitleComponent({ index, children, className }: StepTitleProps) {\n return (\n
    \n {index}\n {children}\n
    \n )\n}\n\nexport const StepTitle = styled(StepTitleComponent)`\n display: flex;\n margin-bottom: 19px;\n\n ${plume.styles.copy.S.regular} {\n align-items: baseline;\n background-color: ${plume.COLORS.PRIMARY_SAND_100};\n border-radius: 28px;\n box-sizing: border-box;\n color: ${plume.COLORS.PRIMARY_SAND_700};\n display: flex;\n height: 27px;\n justify-content: center;\n margin-right: 8px;\n padding-top: 1px;\n width: 27px;\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\nimport * as formik from 'formik'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport { DropoffPicker } from '@ulule/duvet/DropoffPicker.tsx'\n\nimport * as api from '@owl-nest/api-client/next'\nimport { t } from '@owl-nest/localize'\nimport * as env from '@owl-nest/config'\n\nimport { StepTitle } from './StepTitle'\nimport { AddressField, type AddressForm } from './types'\n\ntype MondialRelayStep1Props = {\n order: api.Order\n}\n\nexport function MondialRelayStep2({ order }: MondialRelayStep1Props) {\n return (\n \n {t('Find a drop-off point')}\n\n \n {({ field, form }: formik.FieldProps) => {\n return (\n {\n form.setFieldValue(AddressField.ADDRESS, {\n ...field.value,\n address1: location.address,\n city: location.city,\n country: field?.value?.country ?? '',\n dropoff_id: location.id,\n dropoff_name: location.name,\n latitude: location.coordinates.lat,\n longitude: location.coordinates.lon,\n postal_code: location.postal_code,\n })\n }}\n addressQuery={{\n address1: field?.value?.address1 ?? '',\n address2: field?.value?.address2 ?? '',\n city: field?.value?.city ?? '',\n country: field?.value?.country ?? '',\n latitude: field?.value?.latitude ?? 0,\n longitude: field?.value?.longitude ?? 0,\n postal_code: field?.value?.postal_code ?? '',\n state: field?.value?.state ?? '',\n }}\n onAddressChange={() => {}}\n projectId={order.project_id}\n countries={env.COUNTRIES}\n mapboxApiKey={env.MAPBOX_API_KEY}\n />\n )\n }}\n \n \n )\n}\n\nconst Wrapper = styled.div`\n margin-top: 16px;\n\n ${plume.AutocompleteField} {\n margin-top: 19px;\n z-index: 3;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n margin-top: 0px;\n }\n`\n", "import * as phone from 'libphonenumber-js'\n\nimport * as yup from '@owl-nest/validators'\nimport { model } from '@owl-nest/address'\n\nimport { AddressField } from './types'\n\nexport const validationSchema = yup.lazy((values) =>\n yup.object({\n [AddressField.ADDRESS]: model.baseSchema(false),\n [AddressField.BILLING_ADRESS]: yup.object({\n address1: yup.string().required(),\n address2: yup.string(),\n city: yup.string().required(),\n country: yup.string().required(),\n entity_name: yup.string(),\n first_name: yup.string().required(),\n last_name: yup.string().required(),\n phone_number: yup.object({\n number: yup\n .phone({ country: values?.[AddressField.BILLING_ADRESS]?.phone_number?.country as phone.CountryCode })\n .required(),\n }),\n postal_code: yup.string().required(),\n state: yup.string(),\n }),\n [AddressField.FIRST_NAME]: yup.string().required(),\n [AddressField.LAST_NAME]: yup.string().required(),\n [AddressField.PHONE_NUMBER]: yup.object({\n number: yup.phone({ country: values?.[AddressField.PHONE_NUMBER]?.country as phone.CountryCode }).required(),\n }),\n }),\n)\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport * as hooks from '@owl-nest/hooks'\nimport * as api from '@owl-nest/api-client/next'\nimport { t, tnc } from '@owl-nest/localize'\nimport * as messages from '@owl-nest/messages'\nimport { formatDiscordRoles, discordRoleListString } from '@ulule/duvet/DiscordRoleList.tsx'\n\ntype DiscordProps = {\n order: api.Order\n className?: string\n}\n\nfunction DiscordComponent({ className, order }: DiscordProps) {\n const userDiscordSocial = order.user?.socials?.find((social) => social.provider === 'discord')\n const [isConnectedToDiscord, setIsConnectedToDiscord] = React.useState(\n userDiscordSocial ? true : undefined,\n )\n const messenger = messages.useMessage()\n\n const reward = order?.items?.[0].reward as api.Reward | undefined\n const socials = reward?.socials\n const [isDiscordLogoutModalOpen, setIsDiscordLogoutModalOpen] = hooks.useModal('DiscordLogout')\n\n if (socials === undefined) {\n return <>\n }\n\n const serverName = order.project.discord_guild_name\n const discordGuildId = order.project.discord_guild_id\n\n return (\n
    \n \n {tnc(\n 'This subscription gives you access to the [roles] role',\n 'This subscription gives you access to the [roles] roles',\n socials.length,\n {\n roles: () => {formatDiscordRoles(socials)},\n },\n )}\n \n \n {isConnectedToDiscord ? (\n <>\n {t(`You are logged in to Discord with the account %(username)s.`, {\n username: userDiscordSocial!.username,\n })}\n \n ) : (\n serverName && (\n <>\n {t(\n `Login to Discord to get the role. You'll automatically be added to the %(serverName)s server if you haven't already. `,\n {\n serverName: serverName,\n },\n )}\n \n )\n )}\n \n\n {!isConnectedToDiscord ? (\n \n \n window.open(\n `/social/login/discord/?next=${document.location.href}?toast=${t(\n `Account successfully connected! You have been successfully added to the %(serverName)s server. You now have the role %(roles)s.`,\n {\n serverName: serverName!,\n roles: discordRoleListString(socials),\n },\n )}`,\n '_blank',\n )\n }\n >\n {t('Login to Discord')}\n \n \n ) : serverName && discordGuildId ? (\n <>\n \n \n \n {t(`Open %(serverName)s server`, {\n serverName: serverName!,\n })}{' '}\n \n \n \n\n \n {\n setIsDiscordLogoutModalOpen(true)\n }}\n kind=\"important\"\n withIcon\n type=\"button\"\n >\n {t('Log out of Discord')}\n \n \n \n ) : (\n <>\n )}\n\n {\n setIsDiscordLogoutModalOpen(false)\n }}\n buttons={[\n {\n type: 'button',\n props: {\n type: 'button',\n color: 'red',\n onClick: async () => {\n const response = await api.client('POST /users/social/unlink', {\n body: {\n provider: 'discord',\n },\n withToken: true,\n })\n\n response.caseOf({\n left: () => {\n messenger.error({\n context: 'order',\n message: t(\n 'Oops... an error occured. Please refresh the page to retry. If the error persists, please contact support.',\n ),\n type: 'toast',\n forceClose: true,\n })\n },\n right: () => {\n setIsConnectedToDiscord(false)\n messenger.confirm({\n context: 'order',\n message: t('Your Ulule account has been disconnected from Discord'),\n type: 'toast',\n forceClose: true,\n })\n },\n })\n\n setIsDiscordLogoutModalOpen(false)\n },\n children: t('Yes, log out'),\n },\n },\n {\n type: 'linkAsButton',\n props: {\n onClick: () => {\n setIsDiscordLogoutModalOpen(false)\n },\n kind: 'secondary',\n children: t('No, stay logged in'),\n },\n },\n ]}\n >\n {t('Log out of Discord?')}\n \n {t(\n `Your Discord account will be logged out of Ulule, but you won't lose your access to the server or the role(s) associated with your subscription.`,\n )}\n \n \n
    \n )\n}\n\nexport const Discord = styled(DiscordComponent)`\n ${plume.styles.copy.S.regular} {\n margin-top: 8px;\n margin-bottom: 20px;\n }\n\n ${plume.SocialButton} {\n width: fit-content;\n }\n\n ${plume.LinkAsButton} {\n padding: 0;\n }\n\n ${plume.Modal} {\n text-align: center;\n\n ${plume.styles.heading.S} {\n margin-bottom: 16px;\n }\n }\n`\n\nconst DiscordLink = styled(plume.Link)`\n align-items: center;\n border-radius: 4px;\n border: 1px solid ${plume.COLORS.BORDER_PRIMARY};\n display: grid;\n gap: 8px;\n grid-template-columns: 34px 1fr 20px;\n margin-bottom: 16px;\n padding: 16px;\n width: 255px;\n\n ${plume.glyphs.stroke.ArrowRight} {\n color: ${plume.COLORS.PRIMARY_SAND_500};\n }\n\n ${plume.glyphs.thirdParty.Discord} {\n color: ${plume.COLORS.TERTIARY_DISCORD};\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as userBackofficeListingItem from '@ulule/duvet/UserBackofficeListingItem.tsx'\n\nimport * as hooks from '@owl-nest/hooks'\nimport * as plume from '@ulule/owl-kit-components/next'\nimport { tn, t } from '@owl-nest/localize'\nimport * as messages from '@owl-nest/messages'\nimport { getCookie, removeCookie } from '@owl-nest/cookie-helper'\nimport * as env from '@owl-nest/config'\nimport { Pagination } from './Pagination'\nimport { useBackerOrders } from '../../hooks/useBackerOrders'\nimport { OrderCard } from './OrderCard'\n\nexport function OrderList() {\n const userOrders = useBackerOrders({ fetchOnMount: 'force' })\n const data = hooks.data(userOrders.response)\n const messenger = messages.useMessage()\n\n const KKBBToken = getCookie(env.ACCESS_TOKEN_KISSKISS_COOKIE_NAME)\n if (KKBBToken) {\n removeCookie(env.ACCESS_TOKEN_KISSKISS_COOKIE_NAME)\n }\n\n const refreshKKBBToken = getCookie(env.REFRESH_TOKEN_KISSKISS_COOKIE_NAME)\n if (refreshKKBBToken) {\n removeCookie(env.REFRESH_TOKEN_KISSKISS_COOKIE_NAME)\n }\n\n React.useEffect(() => {\n const messageFromParam = userOrders.params.message\n\n if (messageFromParam) {\n messenger.confirm({\n context: 'merge',\n message: messageFromParam,\n type: 'toast',\n forceClose: true,\n })\n\n userOrders.setParams((params) => ({ ...params, message: undefined }))\n }\n }, [userOrders.response.status])\n\n if (data === undefined) {\n return <>\n }\n\n if (data.meta.total_count === 0) {\n return (\n \n {t('%d contribution', [data.meta.total_count])}\n \n \n \n {t('You have not contributed to any project at this time.')}\n \n {t('Discover the projects being funded')}\n \n \n )\n }\n\n return (\n \n \n {tn('%d contribution', '%d contributions', data.meta.total_count)}\n \n\n \n {t('Project')}\n {t('Amount')}\n {t('Reward')}\n {t('Shipping')}\n \n {data.orders.map((order) => {\n return \n })}\n \n\n \n \n )\n}\n\nconst EmptyWrapper = styled.div`\n padding: 80px;\n background: ${plume.COLORS.PRIMARY_GREY_000};\n display: flex;\n flex-direction: column;\n align-items: center;\n\n ${plume.styles.heading.XXXS} {\n text-align: center;\n margin: 8px 0 24px;\n }\n`\n\nconst Wrapper = styled.div`\n & > ${plume.styles.heading.S} {\n margin-left: 16px;\n margin-bottom: 12px;\n margin-top: 28px;\n }\n\n ${plume.Pagination} {\n margin: 40px 0;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n & > ${plume.styles.heading.S} {\n margin-left: 0;\n margin-bottom: 24px;\n margin-top: 0;\n }\n }\n\n ${userBackofficeListingItem.Wrapper} {\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n grid-template:\n 'project total delivery details' / minmax(250px, 370px) minmax(90px, 12fr) minmax(119px, 15fr)\n minmax(65px, 12fr);\n }\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n grid-template:\n 'project total reward delivery details' / minmax(250px, 370px) minmax(70px, 12fr) minmax(10px, 250px) minmax(\n 119px,\n 15fr\n )\n minmax(65px, 12fr);\n }\n }\n`\n\nconst Header = styled(plume.styles.heading.XXXXXS)`\n margin: 0 0 16px 0;\n display: none;\n color: ${plume.COLORS.TEXT_TERTIARY};\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n padding: 0 10px;\n display: block;\n }\n`\n\nconst ProjectHeader = styled(Header)`\n grid-column: project / span 1;\n margin-left: 6px;\n`\n\nconst TotalHeader = styled(Header)`\n grid-column: total / span 1;\n`\n\nconst RewardHeader = styled(Header)`\n display: none;\n grid-column: reward / span 1;\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n display: block;\n }\n`\n\nconst DeliveryHeader = styled(Header)`\n grid-column: delivery / span 1;\n`\n\nconst DetailsHeader = styled(Header)`\n grid-column: details / span 1;\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nexport function UserBackofficeListingItem({\n className,\n children,\n adminCta,\n onClick,\n statusBanner,\n}: {\n className?: string\n children: React.ReactNode\n adminCta?: React.ReactNode\n onClick?: (e: React.MouseEvent) => void\n statusBanner?: React.ReactNode\n}) {\n return (\n \n {adminCta}\n {children}\n {statusBanner}\n \n )\n}\n\nexport const BaseCell = styled.div`\n display: flex;\n align-items: flex-start;\n flex-direction: column;\n padding: 0 33px 0 16px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n align-items: center;\n flex-direction: row;\n padding: 0 8px;\n }\n`\n\nexport const Wrapper = styled.div`\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n display: grid;\n grid-auto-rows: auto;\n }\n`\nconst Card = styled.div`\n overflow: hidden;\n margin-bottom: 16px;\n padding-top: 18px;\n background-color: ${plume.COLORS.PRIMARY_GREY_000};\n position: relative;\n cursor: pointer;\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as hooks from '@owl-nest/hooks'\nimport { t } from '@owl-nest/localize'\n\nimport { toURLSearchParams, useBackerOrders } from '../../hooks/useBackerOrders'\n\nexport function Pagination() {\n const userOrders = useBackerOrders()\n const data = hooks.data(userOrders.response)\n\n if (data === undefined) {\n return <>\n }\n\n const pageCount = Math.floor(data.meta.total_count / data.meta.limit) + 1\n const selectedPage = userOrders.params.page ?? 1\n\n return (\n '#'}\n onNavigate={() => undefined}\n countTranslation={t('Page %(page)d on %(total)d', { page: selectedPage, total: pageCount })}\n />\n )\n}\n\ntype LinkProps = { children: React.ReactNode; page: number }\n\nfunction Link({ children, page }: LinkProps) {\n const userOrders = useBackerOrders()\n const linkClickHandler = hooks.useLinkClickHandler({\n navigate: () => navigate(page),\n })\n\n return (\n \n {children}\n \n )\n\n function href(page: number): string {\n const searchParams = toURLSearchParams({\n ...userOrders.params,\n page,\n })\n\n return `?${searchParams.toString()}`\n }\n\n function navigate(page: number): void {\n userOrders.setParams((params) => ({\n ...params,\n page,\n }))\n }\n}\n\nconst StyledPagination = styled(plume.Pagination)`\n ${plume.styles.pagination.Count} {\n //HACK: reversed media query (buttons where done desktop first)\n @media not screen and ${plume.BREAKPOINTS.TABLET} {\n display: block;\n }\n }\n\n ${plume.styles.pagination.EllipsisItem} {\n //HACK: reversed media query (buttons where done desktop first)\n @media not screen and ${plume.BREAKPOINTS.TABLET} {\n display: none;\n }\n }\n`\n", "import * as React from 'react'\nimport { styled, css } from 'next-yak'\nimport { useNavigate } from 'react-router'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport { MembershipDefaultBanner } from '@ulule/duvet/MembershipDefaultBanner.tsx'\nimport * as userBackofficeListingItem from '@ulule/duvet/UserBackofficeListingItem.tsx'\nimport * as models from '@owl-nest/models'\n\nimport * as api from '@owl-nest/api-client/latest'\nimport * as hooks from '@owl-nest/hooks'\nimport * as model from '@owl-nest/models'\nimport { tn, tc, t } from '@owl-nest/localize'\nimport * as dateUtils from '@owl-nest/date'\nimport * as env from '@owl-nest/config'\n\nimport { ProjectStatus } from '../../components/ProjectStatus'\nimport { StatusBanner } from '../../components/StatusBanner'\nimport { useAuthenticatedUser } from '../../hooks/useAuthenticatedUser'\nimport { useBacker } from '../../hooks/useBacker'\nimport * as path from '../../paths'\n\ntype OrderCardProps = {\n order: api.Order\n className?: string\n markAsDelivered: (orderId: number) => Promise\n}\n\nfunction OrderCardComponent({ order, className, markAsDelivered }: OrderCardProps) {\n const user = useAuthenticatedUser()\n const backer = useBacker()\n const lastDelivery = model.order.getLastDelivery(order, order.project)\n const orderStatus = model.order.getOrderStatus(order, order.project, user)\n const navigate = useNavigate()\n const href = path.hrefOrderDetail({ userId: backer.id, orderId: order.id })\n const onClick = hooks.useLinkClickHandler({\n navigate: () => navigate(href),\n })\n\n const hrefBankwireSection = `${href}#bankwire-section`\n const onClickBankwireSection = hooks.useLinkClickHandler({\n navigate: () => navigate(hrefBankwireSection),\n })\n\n const orderTag = getOrderTag()\n\n const mainImage =\n model.project.mainImage(order.project, 'small') ?? plume.utils.svg.toDataUrl(MembershipDefaultBanner, {})\n const userConfig = env.useUserEnv()\n\n const isRecurring =\n models.subscription.isMembershipRecurringDonation(order.subscription, order.project) ||\n models.subscription.isMembershipPayingSubscription(order.subscription, order.project)\n\n return (\n \n {user.is_staff && (\n 😎\n )}\n \n }\n onClick={onClick}\n statusBanner={<>{getStatusBanner()}}\n >\n <>\n \n \n \n {model.project.name(order.project)}\n \n \n \n {order.order_total !== 0 && (\n \n \n {isRecurring && `/${t('month')}`}\n \n )}\n {orderTag}\n \n \n \n {getRewards(order).map(({ label, isExtra }, i) => {\n return (\n \n {label}\n \n )\n })}\n \n \n {lastDelivery && !orderTag && (\n \n {order.shipping_status !== api.ShippingStatus.DELIVERED ? (\n \n ) : (\n \n )}\n {dateUtils.format(lastDelivery, 'MMMM yyyy')}\n \n )}\n \n \n \n \n {t('Details')}\n \n \n \n \n )\n\n function getStatusBanner() {\n if (orderStatus === model.order.OrderStatus.AWAITING_PAYMENT) {\n return (\n \n \n {t('Awaiting payment')}\n \n )\n }\n if (orderStatus === model.order.OrderStatus.AWAITING_BANKWIRE && !model.project.isFinished(order.project)) {\n return (\n \n \n \n {tc(\n 'You have chosen a bank transfer as your payment method. We invite you to [Link: consult the instructions] to proceed with the payment. If you have already done so, this message will disappear as soon as we have received your transfer.',\n {\n Link: ,\n },\n )}\n \n \n )\n }\n if (orderStatus === model.order.OrderStatus.REIMBURSMENT_FAILURE) {\n return (\n \n \n \n {tc('The refund failed. In order to receive a refund, [Link: please fill in your chosen refund method].', {\n Link: ,\n })}\n \n \n )\n }\n if (orderStatus === model.order.OrderStatus.PAYMENT_FAILURE && !model.project.isFinished(order.project)) {\n return (\n \n \n \n {tc(\n 'The credit card payment failed. Please [Link: make a new contribution] if you still wish to participate in the project.',\n {\n Link: ,\n },\n )}\n \n \n )\n }\n if (orderStatus === model.order.OrderStatus.PAYMENT_INVALID) {\n return (\n \n \n \n {tc(\n 'Your payment has failed and without action on your part, your contribution will not be taken into account. We invite you to [Link: renew payment].',\n {\n Link: ,\n },\n )}\n \n \n )\n }\n if (orderStatus === model.order.OrderStatus.AWAITING_DELIVERY && lastDelivery) {\n return (\n \n \n \n {tc(\n 'The delivery of your reward was planned for %(deliveryDate)s, did you receive it? [Button: Yes, I confirm receiving my reward]',\n {\n deliveryDate: dateUtils.format(lastDelivery, 'MMMM yyyy'),\n Button: markAsDelivered(order.id)} />,\n },\n )}\n \n \n )\n }\n return <>\n }\n\n function getOrderTag() {\n if (order.subscription !== undefined) {\n if (\n order.subscription.status !== api.SubscriptionStatus.CANCELED &&\n order.subscription.status !== api.SubscriptionStatus.FAILED\n ) {\n return (\n \n {t('Enabled')}\n \n )\n } else if (order.subscription.is_active_until_canceled) {\n return (\n \n {t('Enabled')}\n \n )\n } else {\n return (\n \n {t('Disabled')}\n \n )\n }\n }\n\n if (\n orderStatus === model.order.OrderStatus.PAYMENT_REIMBURSED ||\n orderStatus === model.order.OrderStatus.PAYMENT_CANCELED\n ) {\n return (\n \n {t('Refunded')}\n \n )\n }\n\n if (\n (orderStatus === model.order.OrderStatus.PAYMENT_FAILURE && model.project.isFinished(order.project)) ||\n (orderStatus === model.order.OrderStatus.AWAITING_BANKWIRE && model.project.isFinished(order.project))\n ) {\n return (\n \n {t('Payment failure')}\n \n )\n }\n }\n\n function getRewards(order: api.Order): { label: string; isExtra?: boolean }[] {\n const rewards: { label: string; isExtra?: boolean }[] = []\n const isMembershipRecurringDonation = model.subscription.isMembershipRecurringDonation(\n order.subscription,\n order.project,\n )\n\n if (order.tip !== 0) {\n if (order.project.type === api.ProjectType.Presale || order.project.type === api.ProjectType.Project) {\n rewards.push({ label: t('Donation without reward') })\n } else if (order.project.type === api.ProjectType.Membership) {\n if (model.subscription.isMembershipRecurringDonation(order.subscription, order.project)) {\n rewards.push({ label: t('Monthly donation') })\n } else {\n rewards.push({ label: t('One-time donation') })\n }\n }\n }\n\n if (models.project.isDonationBased(order.project)) {\n if (order.type === api.OrderType.MONTHLY) {\n rewards.push({ label: t('Monthly donation') })\n } else {\n rewards.push({ label: t('One-time donation') })\n }\n }\n\n const safeOrderItems = order.items ?? []\n const titles: string[] = []\n let hasLegacy = false\n safeOrderItems.forEach((item) => {\n const reward = order.subscription?.reward\n ? model.subscription.getReward(order.subscription, order.project)\n : model.orderItem.getReward(item, order.project)\n\n if (reward) {\n if (order.project.type === api.ProjectType.Membership) {\n if (isMembershipRecurringDonation) {\n titles.push(t('Monthly donation'))\n }\n\n const title = model.reward.title(reward)\n if (title !== undefined) {\n titles.push(title)\n } else {\n titles.push(t('Free membership'))\n }\n } else {\n const title = model.reward.title(reward)\n if (title !== undefined) {\n if (item.quantity === 1) {\n titles.push(title)\n } else if (item.quantity > 1) {\n titles.push(`${item.quantity}x ${title}`)\n }\n } else {\n hasLegacy = true\n }\n }\n }\n })\n\n if (safeOrderItems.length == 0 && order.subscription?.reward) {\n const reward = model.subscription.getReward(order.subscription, order.project)\n if (reward) {\n if (order.project.type === api.ProjectType.Membership) {\n if (isMembershipRecurringDonation) {\n titles.push(t('Monthly donation'))\n }\n\n const title = model.reward.title(reward)\n if (title !== undefined) {\n titles.push(title)\n } else {\n titles.push(t('Free membership'))\n }\n } else {\n const title = model.reward.title(reward)\n if (title !== undefined) {\n titles.push(title)\n } else {\n hasLegacy = true\n }\n }\n }\n }\n\n if (hasLegacy) {\n rewards.push({ label: tn('%d reward', '%d rewards', safeOrderItems.length), isExtra: true })\n } else {\n Object.values(titles).forEach((title) => {\n rewards.push({ label: title })\n })\n }\n\n if (rewards.length > 3) {\n const rest = rewards.length - 2\n rewards.splice(2, rest, { label: tn('+ %d reward', '+ %d rewards', rest), isExtra: true })\n }\n\n return rewards\n }\n}\n\nexport const OrderCard = styled(OrderCardComponent)`\n grid-column-start: project;\n grid-column-end: details;\n\n ${StatusBanner} {\n cursor: default;\n }\n\n & > ${plume.styles.link.Base} {\n display: block;\n position: absolute;\n top: 0;\n width: 24px;\n right: 0;\n text-align: center;\n padding: 10px;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n padding-top: 0;\n border-radius: 10px;\n }\n\n ${userBackofficeListingItem.Wrapper} {\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n grid-template:\n 'project total delivery details' / minmax(250px, 370px) minmax(90px, 12fr) minmax(119px, 15fr)\n minmax(65px, 12fr);\n }\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n grid-template:\n 'project total reward delivery details' / minmax(250px, 370px) minmax(70px, 12fr) minmax(10px, 250px) minmax(\n 119px,\n 15fr\n )\n minmax(65px, 12fr);\n }\n }\n`\n\nconst ProjectCell = styled(userBackofficeListingItem.BaseCell)`\n grid-column-start: project;\n position: relative;\n\n ${ProjectStatus} {\n position: absolute;\n top: 12px;\n left: 12px;\n border-width: 1px;\n }\n\n ${plume.styles.copy.S.semiBold} {\n display: -webkit-box;\n margin: 16px 0 16px 24px;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n @media not screen and ${plume.BREAKPOINTS.TABLET} {\n ${plume.styles.copy.S.semiBold} {\n margin: 4px 0px;\n -webkit-line-clamp: 1;\n }\n\n ${ProjectStatus} {\n position: static;\n border-width: 0px;\n padding: 0;\n }\n }\n`\n\nconst RewardItem = styled(plume.styles.copy.S.regular)<{ isExtra?: boolean }>`\n color: ${plume.COLORS.PRIMARY_SAND_900};\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: 100%;\n\n ${({ isExtra }) => {\n if (!isExtra) {\n return css`\n &::before {\n content: 'β€’';\n margin-right: 0.3em;\n }\n `\n }\n }}\n`\n\nconst ProjectImage = styled.img`\n width: 186px;\n height: 104px;\n object-fit: cover;\n display: none;\n margin-left: -10px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n display: block;\n }\n`\n\nconst TotalWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n white-space: nowrap;\n\n ${plume.styles.copy.S.regular} {\n color: ${plume.COLORS.PRIMARY_SAND_900};\n margin-right: 8px;\n }\n`\n\nconst TotalCell = styled(userBackofficeListingItem.BaseCell)`\n grid-column-start: total;\n margin-bottom: 18px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n margin-bottom: 0;\n }\n`\n\nconst RewardCell = styled(userBackofficeListingItem.BaseCell)`\n grid-column-start: reward;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n display: none;\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n display: flex;\n }\n`\n\nconst DeliveryCell = styled(userBackofficeListingItem.BaseCell)`\n display: none;\n grid-column-start: delivery;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n display: flex;\n }\n`\n\nconst DeliveryLine = styled.div`\n display: flex;\n\n ${plume.glyphs.Icon} {\n margin-right: 6px;\n margin-top: 7px;\n }\n\n ${plume.glyphs.stroke.Hourglass} {\n color: ${plume.COLORS.PRIMARY_SAND_500};\n }\n\n ${plume.glyphs.stroke.CheckCircle} {\n color: ${plume.COLORS.SECONDARY_GREEN_500};\n }\n\n ${plume.styles.copy.S.regular} {\n color: ${plume.COLORS.TEXT_SECONDARY};\n }\n`\n\nconst DetailsCell = styled(userBackofficeListingItem.BaseCell)`\n grid-column-start: details;\n justify-content: center;\n\n ${plume.glyphs.stroke.CaretRight} {\n color: ${plume.COLORS.PRIMARY_SAND_500};\n display: none;\n }\n\n ${plume.styles.heading.XXXXXS} {\n text-transform: capitalize;\n color: ${plume.COLORS.TEXT_TERTIARY};\n }\n\n // WARN: inverted media query to preserve some padding values\n @media not screen and ${plume.BREAKPOINTS.TABLET} {\n ${plume.Link} {\n position: absolute;\n top: 47px;\n right: 16px;\n padding: 0;\n\n & > ${plume.styles.heading.XXXXXS} {\n display: none;\n }\n }\n\n ${plume.glyphs.stroke.CaretRight} {\n display: block;\n }\n }\n`\n", "import { styled, css } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nexport const StatusBanner = styled.div<{ $color: 'grey' | 'blue' | 'red' | 'yellow' | 'green' }>`\n grid-column-start: project;\n grid-column-end: details;\n padding: 12px 16px;\n display: flex;\n align-items: flex-start;\n\n ${plume.glyphs.Icon} {\n width: 18px;\n height: 22px;\n flex: 0 0 18px;\n margin-right: 16px;\n }\n\n ${plume.glyphs.fill.PackageOpen}, ${plume.glyphs.fill.PackageClosed} {\n width: 25px;\n height: 25px;\n flex: 0 0 25px;\n }\n\n ${plume.LinkAsButton} {\n padding-top: 0;\n padding-bottom: 0;\n }\n\n ${({ $color }) => {\n switch ($color) {\n case 'yellow': {\n return css`\n background-color: ${plume.COLORS.SECONDARY_YELLOW_200};\n\n ${plume.glyphs.Icon} {\n color: ${plume.COLORS.SECONDARY_YELLOW_500};\n }\n `\n }\n case 'red': {\n return css`\n background-color: ${plume.utils.colors.hexToRgb(plume.COLORS.PRIMARY_RED_500, 0.15)};\n\n ${plume.glyphs.Icon} {\n color: ${plume.COLORS.PRIMARY_RED_500};\n }\n `\n }\n case 'blue': {\n return css`\n background-color: ${plume.utils.colors.hexToRgb(plume.COLORS.PRIMARY_BLUE_500, 0.15)};\n\n ${plume.glyphs.Icon} {\n color: ${plume.COLORS.PRIMARY_BLUE_500};\n }\n `\n }\n case 'grey': {\n return css`\n background-color: ${plume.COLORS.PRIMARY_SAND_200};\n\n ${plume.glyphs.Icon} {\n color: ${plume.COLORS.TEXT_SECONDARY};\n }\n `\n }\n case 'green': {\n return css`\n background-color: ${plume.utils.colors.hexToRgb(plume.COLORS.SECONDARY_GREEN_500, 0.15)};\n\n ${plume.glyphs.Icon} {\n color: ${plume.COLORS.SECONDARY_GREEN_500};\n }\n `\n }\n }\n }};\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as hooks from '@owl-nest/hooks'\nimport * as plume from '@ulule/owl-kit-components/next'\nimport { tn, t, tp } from '@owl-nest/localize'\nimport * as userBackofficeListingItem from '@ulule/duvet/UserBackofficeListingItem.tsx'\n\nimport { Pagination } from './Pagination'\nimport { useUserProjects } from '../../hooks/useUserProjects'\nimport { ProjectCard } from './ProjectCard'\n\nexport function ProjectList() {\n const userProjectList = useUserProjects({ fetchOnMount: 'force' })\n const data = hooks.data(userProjectList.response)\n hooks.useScrollRestoration()\n\n if (data === undefined) {\n return <>\n }\n\n if (data.meta.total_count === 0) {\n return (\n \n \n {tn('%d project', '%d projects', data.meta.total_count)}\n \n \n \n {t(\"You haven't created any project at this time.\")}\n \n \n )\n }\n\n return (\n \n \n {tn('%d project', '%d projects', data.meta.total_count)}\n \n\n \n {t('Name')}\n {t('Collected')}\n {t('Contributions')}\n {tp('Type', 'project list')}\n \n\n {data.projects.map((project) => {\n return \n })}\n \n\n \n \n )\n}\n\nconst EmptyWrapper = styled.div`\n padding: 80px;\n background: ${plume.COLORS.PRIMARY_GREY_000};\n display: flex;\n flex-direction: column;\n align-items: center;\n\n ${plume.styles.heading.XXXS} {\n text-align: center;\n margin: 8px 0 24px;\n }\n`\n\nconst Wrapper = styled.div`\n & > ${plume.styles.heading.S} {\n margin-left: 16px;\n margin-bottom: 12px;\n margin-top: 28px;\n }\n\n ${plume.Pagination} {\n margin: 40px 0;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n & > ${plume.styles.heading.S} {\n margin-left: 0;\n margin-bottom: 24px;\n margin-top: 0;\n }\n }\n\n ${userBackofficeListingItem.Wrapper} {\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n grid-template:\n 'project amount member details' / minmax(360px, 420px) minmax(130px, 14fr) minmax(100px, 12fr)\n minmax(30px, 80px);\n }\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n grid-template:\n 'project amount member type details' / minmax(300px, 24fr) minmax(130px, 10fr) minmax(111px, 130px)\n minmax(100px, 120px) minmax(30px, 110px);\n }\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP_L} {\n grid-template:\n 'project amount member type details' / 420px minmax(180px, 12fr) minmax(100px, 160px)\n minmax(90px, 15fr) minmax(65px, 12fr);\n }\n }\n`\n\nconst Header = styled(plume.styles.heading.XXXXXS)`\n margin: 0 0 16px 0;\n display: none;\n color: ${plume.COLORS.TEXT_TERTIARY};\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n padding: 0 8px;\n display: block;\n }\n`\n\nconst ProjectHeader = styled(Header)`\n grid-column: project / span 1;\n margin-left: 6px;\n`\n\nconst AmountHeader = styled(Header)`\n grid-column: amount / span 1;\n`\n\nconst MemberHeader = styled(Header)`\n grid-column: member / span 1;\n`\n\nconst TypeHeader = styled(Header)`\n grid-column: type / span 1;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n display: none;\n }\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n display: flex;\n }\n`\n\nconst DetailsHeader = styled(Header)`\n grid-column: details / span 1;\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as hooks from '@owl-nest/hooks'\nimport { t } from '@owl-nest/localize'\n\nimport { toURLSearchParams, useUserProjects } from '../../hooks/useUserProjects'\n\nexport function Pagination() {\n const userUsersProjects = useUserProjects()\n const data = hooks.data(userUsersProjects.response)\n\n if (data === undefined) {\n return <>\n }\n\n const pageCount = Math.floor(data.meta.total_count / data.meta.limit) + 1\n const selectedPage = userUsersProjects.params.page ?? 1\n\n return (\n '#'}\n onNavigate={() => undefined}\n countTranslation={t('Page %(page)d on %(total)d', { page: selectedPage, total: pageCount })}\n />\n )\n}\n\ntype LinkProps = { children: React.ReactNode; page: number }\n\nfunction Link({ children, page }: LinkProps) {\n const userUsersProject = useUserProjects()\n const linkClickHandler = hooks.useLinkClickHandler({\n navigate: () => navigate(page),\n })\n\n return (\n \n {children}\n \n )\n\n function href(page: number): string {\n const searchParams = toURLSearchParams({\n ...userUsersProject.params,\n page,\n })\n\n return `?${searchParams.toString()}`\n }\n\n function navigate(page: number): void {\n userUsersProject.setParams((params) => ({\n ...params,\n page,\n }))\n }\n}\n\nconst StyledPagination = styled(plume.Pagination)`\n ${plume.styles.pagination.Count} {\n //HACK: reversed media query (buttons where done desktop first)\n @media not screen and ${plume.BREAKPOINTS.TABLET} {\n display: block;\n }\n }\n\n ${plume.styles.pagination.EllipsisItem} {\n //HACK: reversed media query (buttons where done desktop first)\n @media not screen and ${plume.BREAKPOINTS.TABLET} {\n display: none;\n }\n }\n`\n", "import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport { MembershipDefaultBanner } from '@ulule/duvet/MembershipDefaultBanner.tsx'\nimport * as userBackofficeListingItem from '@ulule/duvet/UserBackofficeListingItem.tsx'\n\nimport * as api from '@owl-nest/api-client/latest'\nimport * as hooks from '@owl-nest/hooks'\nimport * as models from '@owl-nest/models'\nimport { tn, t } from '@owl-nest/localize'\nimport * as env from '@owl-nest/config'\n\nimport { ProjectStatus } from '../../components/ProjectStatus'\nimport { StatusBanner } from '../../components/StatusBanner'\nimport { useAuthenticatedUser } from '../../hooks/useAuthenticatedUser'\n\ntype ProjectCardProps = {\n project: api.Project\n className?: string\n}\n\nfunction ProjectCardComponent({ project, className }: ProjectCardProps) {\n const user = useAuthenticatedUser()\n const userConfig = env.useUserEnv()\n\n const href = project.absolute_url\n const onClick = hooks.useLinkClickHandler({\n navigate: () => (window.location.href = href),\n })\n\n const mainImage = models.project.mainImage(project, 'small') ?? plume.utils.svg.toDataUrl(MembershipDefaultBanner, {})\n\n const hideCounters = (\n [\n models.project.LifecycleStatus.REFUSED,\n models.project.LifecycleStatus.CANCELLED,\n models.project.LifecycleStatus.OFFLINE,\n models.project.LifecycleStatus.FAILURE,\n ] as models.project.LifecycleStatus[]\n ).includes(models.project.lifecycleStatus(project))\n\n const priceOptions = {\n ...plume.accounting.NUMBER_FORMAT_CONFIG[userConfig.lang],\n thousand: '',\n }\n\n return (\n \n {user.is_staff && (\n 😎\n )}\n \n }\n onClick={onClick}\n statusBanner={<>}\n >\n <>\n \n \n \n \n {models.project.name(project) ?? t('Untitled Project')}\n \n \n\n \n \n {project.amount_raised !== 0 && getAmount()}\n\n {/* // Only for mobile */}\n {getMemberCount()}\n \n \n\n {getMemberCount()}\n\n {getTypeTag()} \n\n \n \n \n {t('See project')}\n \n \n \n \n )\n\n function getAmount() {\n if (hideCounters) return <>\n\n return (\n \n {models.project.isMembership(project) && project.subscriptions_amount ? (\n <>\n {`${t('%(currency)s%(amount)s', {\n amount: plume.accounting.formatNumber(project.subscriptions_amount, priceOptions),\n currency: env.CURRENCIES_SYMBOL[project.currency].symbol,\n })}\\u00A0`}\n {t('/ month')}\n \n ) : project.type === api.ProjectType.Presale ? (\n <>\n {`${plume.accounting.formatNumber(project.committed, priceOptions)}\\u00A0`}\n {tn('presale', 'presales', project.committed)}\n \n ) : (\n \n )}\n \n )\n }\n\n function getMemberCount() {\n if (hideCounters) return <>\n\n return (\n \n {models.project.isMembership(project) && project.subscriptions_count ? (\n <>\n {`${plume.accounting.formatNumber(project.subscriptions_count, priceOptions)}\\u00A0`}\n {tn('member', 'members', project.subscriptions_count)}\n \n ) : (\n project.orders_count && (\n <>\n {project.orders_count} {tn('contribution', 'contributions', project.orders_count)}\n \n )\n )}\n \n )\n }\n\n function getTypeTag() {\n if (models.project.isDonationBased(project)) {\n return {t('Donation-based')}\n }\n\n if (models.project.isMembership(project)) {\n return {t('Memberships')}\n }\n\n return {t('Reward-based')}\n }\n}\n\nexport const ProjectCard = styled(ProjectCardComponent)`\n grid-column-start: project;\n grid-column-end: details;\n\n ${StatusBanner} {\n cursor: default;\n }\n\n & > ${plume.styles.link.Base} {\n display: block;\n position: absolute;\n top: 0;\n width: 24px;\n right: 0;\n text-align: center;\n padding: 8px;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n padding-top: 0;\n border-radius: 8px;\n }\n\n ${userBackofficeListingItem.Wrapper} {\n // NOT SCREEN\n @media not screen and ${plume.BREAKPOINTS.TABLET} {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n grid-template-rows: repeat(2, 1fr);\n }\n }\n`\n\nconst ProjectCell = styled(userBackofficeListingItem.BaseCell)`\n grid-column-start: project;\n position: relative;\n\n // NOT SCREEN\n @media not screen and ${plume.BREAKPOINTS.TABLET} {\n grid-area: 1 / 1 / 2 / 3;\n }\n\n ${ProjectStatus} {\n border-width: 1px;\n left: 12px;\n position: absolute;\n top: 12px;\n }\n\n ${plume.styles.copy.S.semiBold} {\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 3;\n display: -webkit-box;\n margin: 16px 0 16px 24px;\n overflow: hidden;\n }\n\n // NOT SCREEN\n @media not screen and ${plume.BREAKPOINTS.TABLET} {\n ${plume.styles.copy.S.semiBold} {\n margin: 8px 0 4px 0;\n -webkit-line-clamp: 1;\n }\n\n ${ProjectStatus} {\n position: static;\n border-width: 0px;\n padding: 0;\n }\n }\n`\n\nconst ProjectImage = styled.img`\n display: none;\n height: 104px;\n margin-left: -10px;\n object-fit: cover;\n width: 186px;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n display: block;\n }\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n width: 146px;\n display: block;\n }\n\n @media screen and (min-width: 1200px) {\n width: 186px;\n }\n`\n\nconst AmountWrapper = styled.div`\n align-items: center;\n display: flex;\n white-space: nowrap;\n\n ${plume.styles.copy.S.regular} {\n margin-right: 8px;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n flex-direction: column;\n\n ${plume.styles.copy.S.regular} + ${plume.styles.copy.S.regular} {\n display: none;\n }\n }\n`\n\nconst AmountCell = styled(userBackofficeListingItem.BaseCell)`\n grid-column-start: amount;\n margin-bottom: 18px;\n\n ${plume.styles.copy.S.regular} {\n color: ${plume.COLORS.PRIMARY_SAND_900};\n }\n\n // NOT SCREEN\n @media not screen and ${plume.BREAKPOINTS.TABLET} {\n grid-area: 2 / 1 / 3 / 3;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n margin-bottom: 0;\n }\n`\n\nconst MemberCell = styled(userBackofficeListingItem.BaseCell)`\n align-items: start;\n display: none;\n flex-direction: column;\n justify-content: center;\n white-space: nowrap;\n\n ${plume.styles.copy.S.regular} {\n color: ${plume.COLORS.PRIMARY_SAND_900};\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n display: flex;\n }\n`\n\nconst TypeCell = styled(userBackofficeListingItem.BaseCell)`\n align-items: flex-end;\n grid-column-start: type;\n left: 0;\n position: absolute;\n right: 0;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n display: none;\n }\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n display: flex;\n align-items: center;\n justify-content: start;\n position: relative;\n }\n`\n\nconst DetailsCell = styled(userBackofficeListingItem.BaseCell)`\n grid-column-start: details;\n justify-content: center;\n\n ${plume.glyphs.stroke.CaretRight} {\n color: ${plume.COLORS.PRIMARY_SAND_500};\n display: block;\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP_L} {\n display: none;\n }\n }\n\n ${plume.styles.heading.XXXXXS} {\n color: ${plume.COLORS.TEXT_TERTIARY};\n display: none;\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP_L} {\n display: block;\n }\n }\n\n // WARN: inverted media query to preserve some padding values\n @media not screen and ${plume.BREAKPOINTS.TABLET} {\n ${plume.Link} {\n padding: 0;\n position: absolute;\n right: 16px;\n top: 60px;\n }\n }\n`\n"], "mappings": "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", "names": ["init_define_process_env", "init_sentry_injection_stub", "init_define_process_env", "init_sentry_injection_stub", "n", "init_define_process_env", "init_sentry_injection_stub", "init_define_process_env", "init_sentry_injection_stub", "React", "ReactDOM", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "ORDERS_LIST", "ORDERS_DETAIL", "USER_DELETE", "PROJECTS_LIST", "hrefOrderList", "userId", "hrefProjectList", "hrefOrderDetail", "orderId", "useParsedParams", "params", "useParams", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "forbiddenRedirectAtom", "atom", "next", "lang", "useForbiddenRedirectValue", "useAtomValue", "useSetForbiddenRedirect", "useSetAtom", "useHasAccess", "userId", "useParsedParams", "auth", "user_exports", "userConfig", "useUserEnv", "forbiddenRedirectValue", "hasAccess", "setHasAccess", "forbidden", "FullWidthLayout", "children", "useHasAccess", "Wrapper", "styled", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "setInitialBacker", "store", "userId", "withToken", "response", "user_exports", "SIGNUP_URL", "useBacker", "useParsedParams", "assertData", "init_define_process_env", "init_sentry_injection_stub", "React", "LAST_VISITED_PAGE", "useBackerOrders", "config", "backer", "useBacker", "params", "setParams", "useQueryParams", "fromURLSearchParams", "toURLSearchParams", "paramsWithPrivateDefaults", "queryOrders", "order_exports", "page", "message", "searchParams", "rawPage", "rawMessage", "init_define_process_env", "init_sentry_injection_stub", "LAST_VISITED_PAGE", "useUserProjects", "config", "backer", "useBacker", "params", "setParams", "useQueryParams", "fromURLSearchParams", "toURLSearchParams", "paramsWithPrivateDefaults", "queryProjects", "user_exports", "page", "searchParams", "rawPage", "init_define_process_env", "init_sentry_injection_stub", "React", "MenuLink", "navigationAware", "external", "href", "children", "onClick", "path", "setActiveTopPosition", "rest", "match", "useMatch", "navigate", "useNavigate", "linkClickHandler", "useLinkClickHandler", "location", "ref", "useRef", "useEffect", "current", "top", "getBoundingClientRect", "styles", "heading", "XXXXXS", "Link", "as", "tinted", "styled", "LABEL_MARGIN", "CLOSED_MENU_HEIGHT", "MenuComponent", "className", "backer", "useBacker", "backerOrders", "useBackerOrders", "userProjectList", "useUserProjects", "projectData", "data", "response", "userTag", "user", "tag", "hasOrders", "orders", "length", "hasProjects", "projects", "ResponsiveMenu", "labelMargin", "closedMenuHeight", "setActiveTopPosition", "styles", "heading", "XS", "username", "RoleTag", "backgroundColor", "label", "LinkList", "li", "MenuLink", "href", "absolute_url", "external", "t", "path", "PROJECTS_LIST", "navigationAware", "hrefProjectList", "userId", "id", "ORDERS_LIST", "hrefOrderList", "tp", "DISCUSSIONS_URL", "SIGNOUT_URL", "styled", "Menu", "MenuLayout", "children", "useHasAccess", "Wrapper", "Menu", "Main", "styled", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "usePublicUser", "withToken", "userId", "useParsedParams", "user_exports", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "useLoggedinAuth", "authOptions", "auth", "user_exports", "withEmailSchema", "email", "object", "shape", "string", "equals", "required", "withPasswordSchema", "password", "min", "Form", "loggedinAuth", "useLoggedinAuth", "onLogout", "window", "location", "href", "publicUser", "usePublicUser", "withToken", "user", "response", "data", "setForbiddenRedirect", "useSetForbiddenRedirect", "messenger", "useMessage", "sameUser", "id", "has_usable_password", "Formik", "initialValues", "onSubmit", "validationSchema", "dirty", "isValid", "isSubmitting", "Field", "name", "field", "meta", "PasswordField", "error", "touched", "undefined", "label", "t", "Button", "color", "type", "disabled", "TextField", "values", "formikBag", "username", "login", "caseOf", "left", "setFieldError", "right", "handleUserDelete", "deleteUser", "message", "context", "onClose", "forceClose", "redirectUrl", "localStorage", "setItem", "logout", "styled", "Modal", "isOpen", "onClose", "StyledModal", "open", "lockScroll", "WarningSignContainer", "illustrations", "twoToned", "WarningSign", "size", "styles", "heading", "S", "t", "Description", "Form", "Link", "kind", "onClick", "styled", "copy", "M", "light", "Cases", "publicUser", "usePublicUser", "withToken", "useEffect", "deleteUser", "isModalOpen", "setIsModalOpen", "useState", "isSubmitDisabled", "dryRunDeleteUser", "can_delete", "some", "canDelete", "level", "priorityOrder", "sortedCanDelete", "sort", "a", "b", "priorityA", "indexOf", "priorityB", "map", "index", "Callout", "key", "type", "getCalloutType", "getCalloutMessage", "Button", "color", "disabled", "onClick", "t", "Modal", "isOpen", "onClose", "message_code", "tc", "link", "CalloutLink", "href", "kind", "underlined", "styled", "Link", "init_define_process_env", "init_sentry_injection_stub", "React", "Information", "publicUser", "usePublicUser", "withToken", "firstList", "t", "secondList", "tc", "link", "Link", "href", "kind", "target", "tinted", "rel", "Heading", "Description", "notificationsSettings", "response", "data", "id", "privacySettings", "contact", "ListHeading", "ul", "map", "item", "li", "key", "styles", "copy", "S", "regular", "index", "styled", "heading", "XS", "semiBold", "UserDelete", "Title", "t", "Container", "Information", "Cases", "styled", "styles", "heading", "L", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "AddressSectionComponent", "order", "className", "orderStatus", "rest", "backer", "useBacker", "mode", "setMode", "useState", "useOrder", "id", "params", "context", "orderData", "data", "response", "backerShippingAddress", "shipping_address", "delivery_type", "longitude", "latitude", "dropoff_id", "dropoff_name", "backerBillingAddress", "billing_address", "pickupPoint", "undefined", "EditAddress", "shippingAddress", "billingAddress", "onDone", "ReadAddress", "styles", "heading", "XS", "asDesktop", "t", "AddressGroup", "AddressColumn", "AddressDisplay", "formatPickupPoint", "copy", "S", "regular", "pickup", "description", "addressModel", "format", "COUNTRIES", "project", "shipping_addresses_locked", "StyledCallout", "type", "DisabledAddressColumn", "CheckboxField", "disabled", "checked", "label", "Button", "OrderStatus", "AWAITING_BANKWIRE", "PAYMENT_REIMBURSED", "PAYMENT_CANCELED", "PAYMENT_FAILURE", "onClick", "first_name", "last_name", "push", "address", "city", "map", "line", "join", "EditAddressComponent", "phoneCountryCode", "setPhoneCountryCode", "messenger", "useMessage", "userConfig", "useUserEnv", "addressEditingLocked", "Boolean", "accountStatusLabels", "AddressType", "PERSONAL", "BUSINESS", "ASSOCIATION", "Formik", "initialValues", "same", "onSubmit", "values", "result", "update", "getPayload", "forceClose", "caseOf", "left", "err", "payload", "error", "message", "right", "confirm", "entity_name", "billing_and_shipping_address", "validationSchema", "lazy", "object", "schema", "phone_number", "length", "validateOnBlur", "validateOnChange", "validateOnMount", "formikBag", "form", "initial_shipping_address_required", "shipping_type", "OrderShippingType", "NO_SHIPPING", "USER_ADDRESS", "WriteAddress", "Field", "RadioGroupField", "touched", "errors", "Object", "accountStatus", "RadioField", "key", "value", "onChange", "event", "setFieldValue", "currentTarget", "AddressFormGroup", "LeftColumn", "EntityNameField", "IdentityGroup", "TextField", "StyledPhoneField", "countries", "defaultCountry", "country", "number", "phone", "RightColumn", "AutocompleteSubForm", "code", "content", "order_shipping_total", "accounting", "localeMoney", "currency", "lang", "countryFilter", "disableCountry", "hideState", "initialEmpty", "language", "baseAddress", "addressWithoutLongLat", "setValues", "DifferentBillingCheckbox", "tax_deductible", "submitForm", "status", "QueryStatus", "PENDING", "styled", "PhoneField", "controls", "Group", "Callout", "AddressSection", "init_define_process_env", "init_sentry_injection_stub", "React", "BackLinkComponent", "className", "navigate", "useNavigate", "backer", "useBacker", "urlSearchParams", "URLSearchParams", "LAST_VISITED_PAGE", "set", "String", "href", "hrefOrderList", "userId", "id", "toString", "onClick", "useLinkClickHandler", "Link", "glyphs", "stroke", "ArrowLeft", "size", "styles", "copy", "S", "regular", "t", "BackLink", "styled", "init_define_process_env", "init_sentry_injection_stub", "React", "BankwireSectionComponent", "className", "bankwire", "React", "useEffect", "location", "hash", "div", "id", "styles", "heading", "M", "t", "Callout", "type", "XS", "copy", "L", "light", "Boxed", "BankwireInfoLine", "BankwireInfoLabel", "owner_name", "account_number", "routing_number", "wire_reference", "styled", "BankwireSection", "init_define_process_env", "init_sentry_injection_stub", "React", "CancelSubscriptionRequestModalComponent", "className", "order", "isRecurrent", "open", "onClose", "params", "useParsedParams", "useOrder", "orderId", "context", "messenger", "useMessage", "isProjectMembership", "project", "type", "ProjectType", "Membership", "isFreeMembership", "order_total", "isMembershipRecurringDonation", "subscription", "fixedNextPaymentExpectedAt", "next_payment_expected_at", "Date", "undefined", "Modal", "closable", "buttons", "props", "disabled", "response", "status", "QueryStatus", "PENDING", "onClick", "result", "cancel", "window", "scrollTo", "top", "behavior", "caseOf", "left", "error", "message", "t", "forceClose", "right", "confirm", "color", "children", "kind", "styles", "heading", "S", "copy", "L", "light", "br", "date", "format", "CancelSubscriptionRequestModal", "styled", "init_define_process_env", "init_sentry_injection_stub", "React", "EditSubscriptionSectionComponent", "className", "order", "subscription", "editUrl", "userConfig", "useUserEnv", "div", "styles", "heading", "M", "t", "copy", "L", "light", "total", "accounting", "localeMoney", "currency", "project", "lang", "day", "format", "Date", "created_at", "ButtonAsLink", "href", "EditSubscriptionSection", "styled", "init_define_process_env", "init_sentry_injection_stub", "React", "FAQSectionComponent", "order", "className", "isProjectMembership", "project", "isMembership", "isDeleted", "DeletedProjectFAQ", "div", "styles", "heading", "XS", "asDesktop", "t", "MembershipFAQ", "BasicFAQ", "copy", "S", "regular", "span", "SupportLinks", "Link", "tinted", "href", "owner", "id", "absolute_url", "i18n", "get", "en", "es", "it", "nl", "fr", "FAQSection", "styled", "init_define_process_env", "init_sentry_injection_stub", "React", "InstructionSectionComponent", "className", "order", "orderStatus", "mode", "setMode", "useState", "hasInstruction", "private_note", "trim", "length", "isProjectMembership", "project", "isMembership", "div", "styles", "heading", "XS", "asDesktop", "t", "copy", "M", "light", "Actions", "Button", "disabled", "OrderStatus", "AWAITING_BANKWIRE", "PAYMENT_REIMBURSED", "PAYMENT_CANCELED", "PAYMENT_FAILURE", "onClick", "EditInstruction", "onDone", "note", "setNote", "useOrder", "id", "params", "context", "TextAreaField", "maxLength", "value", "onChange", "event", "currentTarget", "rows", "LinkAsButton", "kind", "CancelButton", "color", "response", "status", "QueryStatus", "PENDING", "update", "styled", "InstructionSection", "init_define_process_env", "init_sentry_injection_stub", "React", "MembershipPaymentInfoComponent", "order", "className", "subscription", "card_number", "cardUrl", "card_url", "URL", "searchParams", "set", "window", "location", "href", "div", "styles", "heading", "XS", "asDesktop", "t", "InfoWrapper", "InfoLine", "InfoLabel", "InfoValue", "payment", "getMethodName", "payment_method", "card_holder_name", "card_date_expiration", "format", "Date", "CTAModifyCard", "toString", "tinted", "MembershipPaymentInfo", "styled", "XXXXXS", "Link", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "ProjectStatusComponent", "project", "className", "status", "lifecycleStatus", "color", "label", "LifecycleStatus", "FAILURE", "t", "ONGOING", "EXTENDED", "SUCCESS", "REFUSED", "CANCELLED", "CLOSED", "OFFLINE", "StatusPill", "as", "bordered", "ProjectStatus", "styled", "init_define_process_env", "init_sentry_injection_stub", "React", "TaxDeductionComponent", "className", "order", "user", "showCallout", "tax_receipt", "project", "isFinished", "isDonationBased", "div", "Grid", "LogoCell", "illustrations", "Illustration", "size", "utils", "isMobile", "name", "viewBox", "circle", "cx", "cy", "r", "fill", "g", "transform", "path", "fillRule", "clipRule", "d", "TitleCell", "styles", "heading", "XS", "t", "DescriptionCell", "UluleReceipt", "OwnerReceipt", "Callout", "type", "tc", "Link", "children", "underlined", "href", "taxDeductibleRate", "Number", "tax_deductible_rate", "isProjectMembership", "isMembership", "Content", "copy", "S", "regular", "rate", "messenger", "useMessage", "OrderType", "MONTHLY", "LinkAsButton", "withIcon", "tinted", "onClick", "subscription", "id", "undefined", "error", "message", "context", "client", "urlParams", "String", "caseOf", "right", "confirm", "email", "left", "glyphs", "stroke", "Download", "tax_receipt_url", "styled", "TaxDeduction", "init_define_process_env", "init_sentry_injection_stub", "React", "getSubscriptionCanceledMessage", "order", "onCancelRequest", "isProjectMembership", "project", "isMembership", "cancelableAt", "subscription", "cancelable_at", "Date", "tc", "Bold", "strong", "format", "CancelLink", "Link", "underlined", "onClick", "t", "Banner", "user", "useAuthenticatedUser", "useOrder", "id", "params", "context", "setIsCancelUnsubscriptionModalOpen", "useSetModal", "orderStatus", "getOrderStatus", "lastDelivery", "getLastDelivery", "isProjectDonationBased", "isDonationBased", "isProjectCancelled", "isCancelled", "StyledCallout", "type", "styles", "copy", "S", "regular", "OrderStatus", "AWAITING_BANKWIRE", "isFinished", "SUBSCRIPTION_CANCELED", "orderId", "href", "PAYMENT_REIMBURSED", "provider", "date_end", "PAYMENT_CANCELED", "REIMBURSMENT_FAILURE", "renew_url", "PAYMENT_FAILURE", "PAYMENT_INVALID", "AWAITING_DELIVERY", "customIcon", "glyphs", "fill", "PackageClosed", "customIconSize", "deliveryDate", "Button", "LinkAsButton", "toggleDelivered", "shipping_status", "ShippingStatus", "DELIVERED", "PackageOpen", "styled", "Callout", "init_define_process_env", "init_sentry_injection_stub", "React", "AnonymousComponent", "className", "order", "useOrder", "id", "params", "context", "div", "Grid", "LogoCell", "$active", "is_hidden", "illustrations", "Illustration", "size", "utils", "isMobile", "name", "viewBox", "IconBackground", "cx", "cy", "r", "fill", "mask", "x", "y", "width", "height", "style", "maskType", "maskUnits", "circle", "IconInactiveStroke", "stroke", "IconActiveStroke", "path", "d", "TitleCell", "styles", "heading", "XS", "t", "ToggleCell", "input", "HiddenFocusableInput", "type", "checked", "onChange", "event", "update", "hidden", "currentTarget", "disabled", "response", "status", "QueryStatus", "PENDING", "Toggle", "htmlFor", "DescriptionCell", "copy", "S", "regular", "tc", "Link", "kind", "underlined", "href", "i18n", "get", "en", "es", "fr", "styled", "css", "Anonymous", "init_define_process_env", "init_sentry_injection_stub", "React", "PriceComponent", "className", "amount", "currency", "recurring", "userConfig", "useUserEnv", "styles", "copy", "M", "semiBold", "tc", "LocaleMoneyDisplayer", "localeFormat", "lang", "Price", "styled", "init_define_process_env", "init_sentry_injection_stub", "React", "CancelUnsubscriptionRequestModalComponent", "className", "isOpen", "setIsOpen", "useModal", "params", "useModalParams", "useOrder", "order", "orderId", "context", "messenger", "useMessage", "onCancelRequest", "result", "reactivate", "caseOf", "left", "error", "type", "message", "t", "forceClose", "right", "confirm", "Modal", "open", "closable", "onClose", "buttons", "props", "disabled", "response", "status", "QueryStatus", "PENDING", "color", "onClick", "children", "kind", "styles", "heading", "S", "copy", "L", "light", "CancelUnsubscriptionRequestModal", "styled", "OrderMembershipSectionComponent", "order", "className", "user", "useAuthenticatedUser", "userConfig", "useUserEnv", "isCancelModalOpen", "setIsCancelModalOpen", "useModal", "showOtherSubscription", "setShowOtherSubscription", "useState", "orderReward", "subscription", "reward", "isRecurringDonation", "isMembershipRecurringDonation", "project", "isPayingSubscription", "isMembershipPayingSubscription", "undefined", "div", "is_staff", "AdminLink", "href", "id", "styles", "heading", "L", "tc", "Project", "Link", "underlined", "absolute_url", "name", "ProjectStatus", "Banners", "Banner", "Callout", "type", "title", "t", "italicFree", "i", "OrderHead", "M", "status", "SubscriptionStatus", "CANCELED", "FAILED", "Tag", "color", "size", "is_active_until_canceled", "copy", "S", "regular", "date", "format", "Date", "created_at", "time", "MembershipOrderItem", "isSubscriber", "subscribeUrl", "Boolean", "service_fee", "AmountLine", "titleFontWeight", "ServiceFeesWrapper", "ServiceFeesIconWrapper", "glyphs", "stroke", "Info", "Tooltip", "open", "position", "serviceFeesRate", "Intl", "NumberFormat", "lang", "light", "Price", "amount", "Number", "currency", "recurring", "TotalLine", "XXXS", "order_total_with_fees", "order_total", "tax_deductible", "SectionWrapper", "TaxDeduction", "Anonymous", "CancelUnsubscriptionRequestModal", "styled", "link", "Base", "OrderMembershipSection", "AmountLine", "styled", "props", "titleFontWeight", "amountFontWeight", "TotalLine", "ServiceFeesIconWrapper", "styled", "ServiceFeesWrapper", "Banners", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "PaymentInfoComponent", "order", "className", "isOpen", "setIsOpen", "useState", "div", "LinkAsButton", "onClick", "t", "glyphs", "stroke", "CaretUp", "size", "CaretDown", "InfoWrapper", "InfoLine", "InfoLabel", "InfoValue", "payment", "getMethodName", "payment_method", "subscription", "card_number", "card_holder_name", "card_date_expiration", "PaymentInfo", "styled", "styles", "heading", "XXXXXS", "init_define_process_env", "init_sentry_injection_stub", "React", "OrderItemComponent", "props", "kind", "TipOrderItem", "RewardOrderItem", "tip", "project", "className", "recurring", "li", "RewardDetail", "styles", "heading", "XXS", "t", "isDonationBased", "isMembership", "OrderItemDetail", "XS", "Price", "amount", "currency", "orderItem", "isOpen", "setIsOpen", "useState", "userConfig", "useUserEnv", "reward", "getReward", "variant", "getVariant", "undefined", "additionalCost", "additional_cost", "deliveryDate", "formattedDeliveryDate", "image", "rewardTitle", "title", "RewardImage", "src", "RewardTitle", "MoneyDisplayer", "price", "tc", "LocaleMoneyDisplayer", "localeFormat", "lang", "VariantDescription", "copy", "S", "regular", "description", "LinkAsButton", "onClick", "glyphs", "stroke", "CaretUp", "size", "CaretDown", "RewardDescription", "Description", "dangerouslySetInnerHTML", "__html", "DeliveryDate", "date", "quantity", "Quantity", "unit_price", "styled", "OrderItem", "OrderSectionComponent", "order", "className", "shippingCountryName", "COUNTRIES", "find", "country", "code", "shipping_address", "label", "user", "useAuthenticatedUser", "setIsRewardTaxDeductionModalOpen", "useSetModal", "userConfig", "useUserEnv", "isProjectDeleted", "project", "isDeleted", "isOrderReimbursed", "status", "OrderStatus", "PAYMENT_REIMBURSED", "div", "is_staff", "AdminLink", "href", "id", "styles", "heading", "L", "tc", "Link", "disabled", "underlined", "absolute_url", "name", "ProjectStatus", "Banners", "Banner", "OrderHead", "M", "t", "subscription", "undefined", "SubscriptionStatus", "CANCELED", "FAILED", "Tag", "color", "copy", "S", "regular", "date", "format", "Date", "created_at", "time", "OrderList", "items", "map", "orderItem", "i", "OrderItem", "key", "kind", "tip", "recurring", "total", "order_shipping_total", "AmountLine", "titleFontWeight", "light", "Price", "amount", "currency", "pickup_point", "Boolean", "service_fee", "length", "amountFontWeight", "order_total", "noMargin", "ServiceFeesWrapper", "ServiceFeesIconWrapper", "glyphs", "stroke", "Info", "size", "Tooltip", "open", "position", "serviceFeesRate", "Intl", "NumberFormat", "lang", "Number", "TotalLine", "XXXS", "order_total_with_fees", "tax_deductible", "TaxInfo", "tinted", "type", "onClick", "Percent", "price", "accounting", "localeMoney", "tax_deductible_total", "payment_receipt_url", "PaymentReceiptLink", "withIcon", "Download", "PaymentInfo", "SectionWrapper", "Anonymous", "TaxDeduction", "styled", "props", "link", "Base", "OrderSection", "LinkAsButton", "init_define_process_env", "init_sentry_injection_stub", "React", "RewardTaxDeductionModal", "project", "rewards", "hasTip", "isTaxReceiptModalOpen", "setIsTaxReceiptModalOpen", "useModal", "tax_deductible", "taxDeductibleRate", "Number", "tax_deductible_rate", "filteredRewards", "filter", "reward", "ModalWithIcon", "open", "closable", "onClose", "buttons", "type", "props", "kind", "onClick", "children", "t", "icon", "illustrations", "twoToned", "SecurePaymentMedium", "size", "svgScale", "styles", "heading", "S", "rate", "ul", "li", "copy", "M", "light", "length", "map", "key", "id", "title", "Reward", "tax_receipt_enabled", "tc", "br", "maximumRate", "styled", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "useSubscriptions", "subscriptionId", "config", "params", "setParams", "useSubscriptionsQueryParams", "paramsWithLimit", "order_exports", "useQueryParams", "subscriptionsParamsFromURLSearchParams", "subscriptionsParamsToURLSearchParams", "searchParams", "rawPage", "page", "rawSubscriptionsPage", "subscriptionsPage", "SubscriptionHistorySectionComponent", "order", "className", "useSubscriptionsOrders", "params", "useSubscriptions", "subscription", "id", "fetchOnMount", "limit", "metadata", "meta", "pageCount", "Math", "ceil", "total_count", "selectedPage", "subscriptionsPage", "paginatedSubscriptions", "data", "response", "isProjectMembership", "project", "isMembership", "userConfig", "useUserEnv", "fixedNextPaymentExpectedAt", "next_payment_expected_at", "Date", "undefined", "nbRowElements", "tax_receipt_url", "payment_receipt_url", "status", "QueryStatus", "SUCCESS", "length", "div", "styles", "heading", "M", "t", "SkeletonGrid", "SubscriptionSkeleton", "SubscriptionStatus", "CANCELED", "isFinished", "HistoryGrid", "DateCell", "copy", "light", "asDesktop", "utils", "isMobile", "format", "MoreCell", "$nbElement", "PriceCell", "semiBold", "LocaleMoneyDisplayer", "amount", "total", "service_fee_total", "currency", "localeFormat", "lang", "StatusCell", "Tag", "color", "map", "page", "orders", "childOrder", "nbChildOrderRowElements", "key", "created_at", "order_total_with_fees", "order_total", "OrderStatus", "PAYMENT_COMPLETED", "PAYMENT_DONE", "ERROR", "PAYMENT_INVALID", "ReceiptCell", "S", "regular", "Link", "href", "withIcon", "tinted", "glyphs", "stroke", "Download", "size", "Pagination", "arrowNavigation", "linkComponent", "PaginationLink", "onNavigate", "children", "setParams", "linkClickHandler", "useLinkClickHandler", "navigate", "a", "onClickCapture", "subscriptionsParamsToURLSearchParams", "toString", "styled", "css", "skeleton", "Text", "Cell", "SubscriptionHistorySection", "init_define_process_env", "init_sentry_injection_stub", "React", "useHasAccessToOrder", "backer", "useBacker", "params", "useParsedParams", "useOrder", "order_exports", "order", "data", "navigate", "useNavigate", "href", "hrefOrderList", "QueryStatus", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "AddressField", "create", "init_define_process_env", "init_sentry_injection_stub", "React", "BillingSection", "className", "formikBag", "useFormikContext", "phoneCountryCode", "setPhoneCountryCode", "useState", "undefined", "type", "values", "AddressField", "BILLING_ADRESS", "accountStatusLabels", "AddressType", "PERSONAL", "t", "BUSINESS", "ASSOCIATION", "Wrapper", "styles", "heading", "XS", "asDesktop", "Field", "name", "field", "meta", "form", "label", "RadioGroupField", "Object", "map", "accountStatus", "RadioField", "key", "checked", "value", "onBlur", "onChange", "event", "setFieldValue", "currentTarget", "AddressFormGroup", "LeftColumn", "EntityNameField", "entity_name", "error", "touched", "getIn", "errors", "IdentityGroup", "TextField", "first_name", "last_name", "StyledPhoneField", "countries", "COUNTRIES", "defaultCountry", "country", "number", "phone_number", "phone", "RightColumn", "AutocompleteSubForm", "address", "hideState", "initialEmpty", "language", "baseAddress", "addressWithoutLongLat", "latitude", "longitude", "styled", "controls", "Group", "PhoneField", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "StepTitleComponent", "index", "children", "className", "div", "styles", "copy", "S", "regular", "M", "semiBold", "StepTitle", "styled", "MondialRelayStep1", "order", "phoneCountryCode", "setPhoneCountryCode", "useState", "undefined", "defaultPhoneCountry", "COUNTRIES", "find", "country", "code", "USER_COUNTRY", "deliveryCountries", "shipping_address", "isEditingLocked", "project", "shipping_addresses_locked", "Wrapper", "StepTitle", "index", "t", "IdentityGroup", "Field", "name", "AddressField", "FIRST_NAME", "field", "meta", "form", "TextField", "error", "label", "onBlur", "onChange", "event", "setFieldValue", "target", "value", "disabled", "LAST_NAME", "PHONE_NUMBER", "PhoneField", "context", "countries", "defaultCountry", "touched", "getIn", "errors", "phone", "number", "SelectField", "length", "selected", "map", "option", "Option", "key", "styled", "styles", "controls", "Group", "init_define_process_env", "init_sentry_injection_stub", "React", "MondialRelayStep2", "order", "Wrapper", "StepTitle", "index", "t", "Field", "name", "AddressField", "ADDRESS", "field", "form", "DropoffPicker", "disabled", "project", "shipping_addresses_locked", "minified", "selected", "value", "dropoff_id", "onSelect", "location", "setFieldValue", "address1", "address", "city", "country", "id", "dropoff_name", "latitude", "coordinates", "lat", "longitude", "lon", "postal_code", "addressQuery", "address2", "state", "onAddressChange", "projectId", "project_id", "countries", "COUNTRIES", "mapboxApiKey", "MAPBOX_API_KEY", "styled", "MondialRelaySection", "order", "div", "styles", "heading", "XS", "asDesktop", "t", "project", "shipping_addresses_locked", "StyledCallout", "type", "Wrapper", "MondialRelayStep1", "MondialRelayStep2", "styled", "Callout", "init_define_process_env", "init_sentry_injection_stub", "validationSchema", "create", "values", "create$3", "AddressField", "model_exports", "create$6", "phone", "MondialRelayAddressComponent", "order", "className", "orderStatus", "mode", "setMode", "useState", "EditAddress", "onDone", "billingAdress", "billing_address", "ReadAddress", "id", "Sections", "Section", "styles", "heading", "XS", "asDesktop", "t", "project", "shipping_addresses_locked", "StyledCallout", "type", "shipping_address", "undefined", "AddressGroup", "AddressColumn", "SmallTitle", "AddressDisplay", "first_name", "last_name", "phone_number", "addressModel", "formatMondialRelay", "COUNTRIES", "Link", "href", "target", "rel", "format", "Button", "disabled", "OrderStatus", "AWAITING_BANKWIRE", "PAYMENT_REIMBURSED", "PAYMENT_CANCELED", "PAYMENT_FAILURE", "onClick", "MondialRelayAddress", "styled", "EditAddressComponent", "backer", "useBacker", "useOrder", "params", "context", "messenger", "useMessage", "div", "Formik", "initialValues", "getInitialValues", "onSubmit", "validationSchema", "validateOnBlur", "validateOnChange", "validateOnMount", "formikBag", "useScrollToFirstError", "form", "handleSubmit", "noValidate", "MondialRelaySection", "BillingSection", "shippingAddress", "billingAddress", "AddressField", "ADDRESS", "address1", "address2", "city", "country", "dropoff_id", "dropoff_name", "latitude", "longitude", "postal_code", "state", "BILLING_ADRESS", "entity_name", "number", "AddressType", "PERSONAL", "FIRST_NAME", "LAST_NAME", "PHONE_NUMBER", "values", "payload", "getPayload", "result", "update", "forceClose", "caseOf", "left", "err", "error", "message", "right", "confirm", "phoneNumber", "phone", "normalizePhoneNumber", "billingPhoneNumber", "copy", "S", "regular", "SmallTitle", "styled", "styles", "copy", "S", "regular", "StyledCallout", "Callout", "init_define_process_env", "init_sentry_injection_stub", "React", "DiscordComponent", "className", "order", "userDiscordSocial", "user", "socials", "find", "social", "provider", "isConnectedToDiscord", "setIsConnectedToDiscord", "useState", "undefined", "messenger", "useMessage", "items", "reward", "isDiscordLogoutModalOpen", "setIsDiscordLogoutModalOpen", "useModal", "serverName", "project", "discord_guild_name", "discordGuildId", "discord_guild_id", "div", "styles", "heading", "XS", "tnc", "length", "roles", "em", "formatDiscordRoles", "copy", "S", "regular", "t", "username", "DiscordLink", "href", "target", "glyphs", "thirdParty", "Discord", "size", "stroke", "ArrowRight", "LinkAsButton", "onClick", "kind", "withIcon", "type", "Link", "SocialButton", "platform", "window", "open", "document", "location", "discordRoleListString", "Modal", "closable", "onClose", "buttons", "props", "color", "client", "body", "withToken", "caseOf", "left", "error", "context", "message", "forceClose", "right", "confirm", "children", "M", "light", "styled", "isOrderCancelable", "order", "type", "OrderType", "SINGLE", "is_cancellable", "MONTHLY", "subscription", "OrderDetail", "useHasAccessToOrder", "user", "useAuthenticatedUser", "isCancelSubscriptionRequestModalOpen", "setIsCancelSubscriptionRequestModalOpen", "useModal", "messenger", "useMessage", "useEffect", "searchParams", "URLSearchParams", "document", "location", "search", "toastSearchParam", "get", "paymentMethodUpdateSuccess", "t", "undefined", "paymentMethodUpdateFailure", "confirm", "context", "message", "onClose", "forceClose", "error", "delete", "isCancelable", "orderStatus", "getOrderStatus", "project", "isRecurrent", "address", "shipping_address", "billing_address", "isProjectMembership", "isMembership", "hasDiscordRoleAssigned", "discord_guild_id", "BackLink", "is_one_time_donation", "OrderMembershipStyled", "OrderSectionStyled", "OrderStatus", "AWAITING_BANKWIRE", "isFinished", "bankwire", "BankwireSectionStyled", "order_total", "SubscriptionHistorySectionStyled", "edit_url", "EditSubscriptionSectionStyled", "editUrl", "pickup_point", "AddressSectionStyled", "pickupPoint", "delivery_type", "MondialRelayAddressSectionStyled", "initial_shipping_address_required", "initial_billing_address_required", "MembershipPaymentInfoStyled", "DiscordSectionStyled", "InstructionSectionStyled", "FAQSectionStyled", "CancelOrderButton", "underlined", "onClick", "CancelSubscriptionRequestModal", "open", "RewardTaxDeductionModal", "rewards", "items", "map", "item", "reward", "hasTip", "tip", "styled", "LinkAsButton", "DiscordSectionStyled", "styled", "Discord", "OrderSectionStyled", "OrderSection", "OrderMembershipStyled", "OrderMembershipSection", "SubscriptionHistorySectionStyled", "SubscriptionHistorySection", "AddressSectionStyled", "AddressSection", "MondialRelayAddressSectionStyled", "MondialRelayAddress", "InstructionSectionStyled", "InstructionSection", "BankwireSectionStyled", "BankwireSection", "EditSubscriptionSectionStyled", "EditSubscriptionSection", "MembershipPaymentInfoStyled", "MembershipPaymentInfo", "FAQSectionStyled", "FAQSection", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "UserBackofficeListingItem", "className", "children", "adminCta", "onClick", "statusBanner", "Card", "Wrapper", "BaseCell", "styled", "init_define_process_env", "init_sentry_injection_stub", "React", "Pagination", "userOrders", "useBackerOrders", "data", "response", "undefined", "pageCount", "Math", "floor", "meta", "total_count", "limit", "selectedPage", "params", "page", "StyledPagination", "arrowNavigation", "linkComponent", "Link", "href", "onNavigate", "countTranslation", "t", "total", "children", "linkClickHandler", "useLinkClickHandler", "navigate", "a", "onClickCapture", "toURLSearchParams", "toString", "setParams", "styled", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "StatusBanner", "styled", "$color", "css", "utils", "colors", "hexToRgb", "COLORS", "PRIMARY_RED_500", "PRIMARY_BLUE_500", "SECONDARY_GREEN_500", "OrderCardComponent", "order", "className", "markAsDelivered", "user", "useAuthenticatedUser", "backer", "useBacker", "lastDelivery", "getLastDelivery", "project", "orderStatus", "getOrderStatus", "navigate", "useNavigate", "href", "hrefOrderDetail", "userId", "id", "orderId", "onClick", "useLinkClickHandler", "hrefBankwireSection", "onClickBankwireSection", "orderTag", "getOrderTag", "mainImage", "utils", "svg", "toDataUrl", "MembershipDefaultBanner", "userConfig", "useUserEnv", "isRecurring", "subscription", "isMembershipRecurringDonation", "isMembershipPayingSubscription", "UserBackofficeListingItem", "adminCta", "is_staff", "styles", "link", "Base", "statusBanner", "getStatusBanner", "ProjectCell", "ProjectImage", "src", "ProjectStatus", "copy", "S", "semiBold", "name", "TotalCell", "TotalWrapper", "order_total", "regular", "LocaleMoneyDisplayer", "localeFormat", "lang", "amount", "order_total_with_fees", "currency", "t", "RewardCell", "getRewards", "map", "label", "isExtra", "i", "RewardItem", "key", "DeliveryCell", "DeliveryLine", "shipping_status", "ShippingStatus", "DELIVERED", "glyphs", "stroke", "Hourglass", "size", "CheckCircle", "format", "DetailsCell", "Link", "kind", "CaretRight", "heading", "XXXXXS", "OrderStatus", "AWAITING_PAYMENT", "StatusBanner", "$color", "fill", "Info", "AWAITING_BANKWIRE", "isFinished", "Alert", "tc", "underlined", "REIMBURSMENT_FAILURE", "TimesCircle", "renew_url", "PAYMENT_FAILURE", "PAYMENT_INVALID", "AWAITING_DELIVERY", "PackageClosed", "deliveryDate", "Button", "LinkAsButton", "undefined", "status", "SubscriptionStatus", "CANCELED", "FAILED", "Tag", "color", "is_active_until_canceled", "PAYMENT_REIMBURSED", "PAYMENT_CANCELED", "rewards", "tip", "type", "ProjectType", "Presale", "Project", "push", "Membership", "isDonationBased", "OrderType", "MONTHLY", "safeOrderItems", "items", "titles", "hasLegacy", "forEach", "item", "reward", "getReward", "orderItem", "title", "quantity", "length", "tn", "Object", "values", "rest", "splice", "OrderCard", "styled", "BaseCell", "css", "OrderList", "userOrders", "useBackerOrders", "fetchOnMount", "data", "response", "messenger", "useMessage", "getCookie", "ACCESS_TOKEN_KISSKISS_COOKIE_NAME", "removeCookie", "REFRESH_TOKEN_KISSKISS_COOKIE_NAME", "useEffect", "messageFromParam", "params", "message", "confirm", "context", "type", "forceClose", "setParams", "undefined", "status", "meta", "total_count", "Wrapper", "styles", "heading", "S", "asDesktop", "t", "EmptyWrapper", "illustrations", "twoToned", "Funds", "size", "XXXS", "ButtonAsLink", "href", "tn", "ProjectHeader", "TotalHeader", "RewardHeader", "DeliveryHeader", "DetailsHeader", "orders", "map", "order", "OrderCard", "key", "id", "markAsDelivered", "Pagination", "styled", "Header", "XXXXXS", "init_define_process_env", "init_sentry_injection_stub", "React", "init_define_process_env", "init_sentry_injection_stub", "React", "Pagination", "userUsersProjects", "useUserProjects", "data", "response", "undefined", "pageCount", "Math", "floor", "meta", "total_count", "limit", "selectedPage", "params", "page", "StyledPagination", "arrowNavigation", "linkComponent", "Link", "href", "onNavigate", "countTranslation", "t", "total", "children", "userUsersProject", "linkClickHandler", "useLinkClickHandler", "navigate", "a", "onClickCapture", "toURLSearchParams", "toString", "setParams", "styled", "init_define_process_env", "init_sentry_injection_stub", "React", "ProjectCardComponent", "project", "className", "user", "useAuthenticatedUser", "userConfig", "useUserEnv", "href", "absolute_url", "onClick", "useLinkClickHandler", "navigate", "window", "location", "mainImage", "utils", "svg", "toDataUrl", "MembershipDefaultBanner", "hideCounters", "LifecycleStatus", "REFUSED", "CANCELLED", "OFFLINE", "FAILURE", "includes", "lifecycleStatus", "priceOptions", "accounting", "NUMBER_FORMAT_CONFIG", "lang", "thousand", "UserBackofficeListingItem", "adminCta", "is_staff", "styles", "link", "Base", "id", "statusBanner", "ProjectCell", "ProjectImage", "src", "ProjectStatus", "copy", "S", "semiBold", "name", "t", "AmountCell", "AmountWrapper", "amount_raised", "getAmount", "getMemberCount", "MemberCell", "TypeCell", "getTypeTag", "DetailsCell", "Link", "kind", "glyphs", "stroke", "CaretRight", "size", "heading", "XXXXXS", "regular", "isMembership", "subscriptions_amount", "amount", "formatNumber", "currency", "CURRENCIES_SYMBOL", "symbol", "span", "type", "ProjectType", "Presale", "committed", "tn", "LocaleMoneyDisplayer", "localeFormat", "subscriptions_count", "orders_count", "isDonationBased", "RoleTag", "backgroundColor", "ProjectCard", "styled", "BaseCell", "ProjectList", "userProjectList", "useUserProjects", "fetchOnMount", "data", "response", "useScrollRestoration", "undefined", "meta", "total_count", "Wrapper", "styles", "heading", "S", "asDesktop", "tn", "EmptyWrapper", "illustrations", "twoToned", "CrackedEgg", "size", "XXXS", "t", "ProjectHeader", "AmountHeader", "MemberHeader", "TypeHeader", "tp", "DetailsHeader", "projects", "map", "project", "ProjectCard", "key", "id", "Pagination", "styled", "Header", "XXXXXS", "Router", "Routes", "Route", "ORDERS_LIST", "MenuLayout", "OrderList", "ORDERS_DETAIL", "FullWidthLayout", "OrderDetail", "USER_DELETE", "UserDelete", "PROJECTS_LIST", "ProjectList", "App", "BrowserRouter", "GlobalStyle", "EulaModalWithAuthContext", "MessagesProvider", "ToastDisplayer", "Router", "useDramaticallyInefficientGlobalCss", "css", "colors_exports", "PATHNAME_REGEXP", "authDispatch", "getDispatch", "user_exports", "getDefaultStore", "init", "initUserConfig", "userConfig", "getUserConfig", "initializeLocalization", "LOCALE_FILES", "setInitialBacker", "getUserIdFromUrl", "renderHeader", "container", "App", "match", "userId", "headerContainer", "Header", "err", "backer_backoffice_default"] }