@fullstackunicorn/create-root 1.0.16 → 1.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/root.fullstackunicorn.dev/.gitlab-ci.yml +42 -0
- package/assets/root.fullstackunicorn.dev/assets/.env +6 -0
- package/assets/root.fullstackunicorn.dev/assets/config.cmd.sh +86 -0
- package/assets/root.fullstackunicorn.dev/assets/index.cmd.js +30 -0
- package/assets/root.fullstackunicorn.dev/assets/index.def.js +190 -0
- package/assets/root.fullstackunicorn.dev/assets/index.dep.js +20 -0
- package/assets/root.fullstackunicorn.dev/assets/index.init.js +8 -0
- package/assets/root.fullstackunicorn.dev/assets/index.js +4 -0
- package/assets/root.fullstackunicorn.dev/assets/modules/sync.auth.js +3 -0
- package/assets/root.fullstackunicorn.dev/assets/modules/sync.js +430 -0
- package/assets/root.fullstackunicorn.dev/assets/modules/sync.local.js +117 -0
- package/assets/root.fullstackunicorn.dev/assets/modules/sync.tools.js +102 -0
- package/assets/root.fullstackunicorn.dev/assets/package.json +32 -0
- package/assets/root.fullstackunicorn.dev/assets/package.md +13 -0
- package/assets/root.fullstackunicorn.dev/assets/webapp.runner.js +63 -0
- package/assets/root.fullstackunicorn.dev/backend/.env +13 -0
- package/assets/root.fullstackunicorn.dev/backend/config.cmd.sh +79 -0
- package/assets/root.fullstackunicorn.dev/backend/dockerfile +12 -0
- package/assets/root.fullstackunicorn.dev/backend/index.def.js +15 -0
- package/assets/root.fullstackunicorn.dev/backend/index.dep.js +19 -0
- package/assets/root.fullstackunicorn.dev/backend/index.init.js +25 -0
- package/assets/root.fullstackunicorn.dev/backend/index.js +15 -0
- package/assets/root.fullstackunicorn.dev/backend/modules/cookies.js +64 -0
- package/assets/root.fullstackunicorn.dev/backend/modules/loader.js +103 -0
- package/assets/root.fullstackunicorn.dev/backend/modules/loader.tools.js +22 -0
- package/assets/root.fullstackunicorn.dev/backend/modules/stripe.js +299 -0
- package/assets/root.fullstackunicorn.dev/backend/modules/stripe.session.js +1 -0
- package/assets/root.fullstackunicorn.dev/backend/modules/stripe.tools.js +126 -0
- package/assets/root.fullstackunicorn.dev/backend/package.json +35 -0
- package/assets/root.fullstackunicorn.dev/backend/server/errors.js +29 -0
- package/assets/root.fullstackunicorn.dev/backend/server/errors.list.js +69 -0
- package/assets/root.fullstackunicorn.dev/backend/server/middleware.auth.js +4 -0
- package/assets/root.fullstackunicorn.dev/backend/server/middleware.js +29 -0
- package/assets/root.fullstackunicorn.dev/backend/server/middleware.prod.js +18 -0
- package/assets/root.fullstackunicorn.dev/backend/server/resolvers.js +21 -0
- package/assets/root.fullstackunicorn.dev/backend/server/router.js +60 -0
- package/assets/root.fullstackunicorn.dev/config.cmd.sh +178 -0
- package/assets/root.fullstackunicorn.dev/config.code-workspace +7 -0
- package/assets/root.fullstackunicorn.dev/config.reduce.js +84 -0
- package/assets/root.fullstackunicorn.dev/frontend/.env +3 -0
- package/assets/root.fullstackunicorn.dev/frontend/App.js +23 -0
- package/assets/root.fullstackunicorn.dev/frontend/App.sw.js +12 -0
- package/assets/root.fullstackunicorn.dev/frontend/App.tracking.js +13 -0
- package/assets/root.fullstackunicorn.dev/frontend/App.uri.js +63 -0
- package/assets/root.fullstackunicorn.dev/frontend/abstracts/abs.js +148 -0
- package/assets/root.fullstackunicorn.dev/frontend/abstracts/dateTime.js +120 -0
- package/assets/root.fullstackunicorn.dev/frontend/abstracts/err.js +31 -0
- package/assets/root.fullstackunicorn.dev/frontend/abstracts/img.js +38 -0
- package/assets/root.fullstackunicorn.dev/frontend/assets/index.webmanifest +21 -0
- package/assets/root.fullstackunicorn.dev/frontend/assets/llms.dev.txt +2 -0
- package/assets/root.fullstackunicorn.dev/frontend/assets/llms.txt +8 -0
- package/assets/root.fullstackunicorn.dev/frontend/assets/robots.dev.txt +2 -0
- package/assets/root.fullstackunicorn.dev/frontend/assets/robots.txt +4 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/account/@use.js +95 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/account/AccountCard.js +37 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/account/AccountLogo.js +27 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/account/AccountLogo.pod.js +34 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/alerts/@use.js +7 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/alerts/Alert.js +24 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/alerts/Alert.pod.js +28 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/alerts/Alerts.js +35 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/callout/Callout.js +16 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/callout/Callout.pod.js +25 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/checkout/@tools.js +41 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/checkout/@use.js +34 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/checkout/CheckoutCard.js +29 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/checkout/CheckoutCard.pod.js +25 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/cookies/@tools.js +67 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/cookies/@use.js +218 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/cookies/CookiesCard.js +19 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/errors/@use.js +7 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/errors/Errors.js +14 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/language/@tools.js +45 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/language/@use.js +144 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/language/LanguageButton.js +18 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/language/LanguageCard.js +20 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/layout/@use.js +91 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/layout/Footer.js +5 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/layout/Footer.pod.js +19 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/layout/Header.js +22 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/layout/Header.pod.js +37 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/layout/Layout.js +41 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/layout/Layout.pod.js +30 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/layout/menus/@use.js +21 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/layout/menus/MenuTwo.js +41 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/layout/menus/MenuTwo.pod.js +38 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/layout/sideTwo/@use.js +48 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/layout/sideTwo/IconTwo.js +30 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/layout/sideTwo/IconTwo.pod.js +22 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/layout/sideTwo/SidebarTwo.js +46 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/layout/sideTwo/SidebarTwo.pod.js +29 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/legals/LegalCard.js +17 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/legals/LegalsCard.js +20 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/loader/@tools.js +111 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/loader/@use.js +35 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/loader/Loader.js +20 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/loader/Normalizer.js +58 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/loader/Starter.js +17 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/lookups/@use.js +85 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/modals/@use.js +67 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/modals/Modal.js +42 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/modals/Modal.pod.js +43 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/modals/ModalPopup.pod.js +41 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/modals/Modals.js +12 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/router/@tools.js +26 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/router/@use.js +212 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/router/Router.js +21 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/statics/@use.js +46 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/theme/@use.js +28 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/theme/ThemeCard.js +21 -0
- package/assets/root.fullstackunicorn.dev/frontend/client/@api.js +15 -0
- package/assets/root.fullstackunicorn.dev/frontend/client/auth.js +213 -0
- package/assets/root.fullstackunicorn.dev/frontend/client/cookies.js +41 -0
- package/assets/root.fullstackunicorn.dev/frontend/client/fonts.js +19 -0
- package/assets/root.fullstackunicorn.dev/frontend/client/load.js +26 -0
- package/assets/root.fullstackunicorn.dev/frontend/client/statics.js +47 -0
- package/assets/root.fullstackunicorn.dev/frontend/client/stripe.js +38 -0
- package/assets/root.fullstackunicorn.dev/frontend/config.cmd.sh +94 -0
- package/assets/root.fullstackunicorn.dev/frontend/config.cmd.vite.js +205 -0
- package/assets/root.fullstackunicorn.dev/frontend/config.meta.js +0 -0
- package/assets/root.fullstackunicorn.dev/frontend/config.style.js +86 -0
- package/assets/root.fullstackunicorn.dev/frontend/configure/cache.json +4 -0
- package/assets/root.fullstackunicorn.dev/frontend/configure/env.json +8 -0
- package/assets/root.fullstackunicorn.dev/frontend/configure/env.prod.json +8 -0
- package/assets/root.fullstackunicorn.dev/frontend/configure/layout.json +9 -0
- package/assets/root.fullstackunicorn.dev/frontend/configure/logo.json +4 -0
- package/assets/root.fullstackunicorn.dev/frontend/configure/services.json +10 -0
- package/assets/root.fullstackunicorn.dev/frontend/configure/trademark.json +9 -0
- package/assets/root.fullstackunicorn.dev/frontend/eslint.config.js +41 -0
- package/assets/root.fullstackunicorn.dev/frontend/features/legal/Legal.js +15 -0
- package/assets/root.fullstackunicorn.dev/frontend/features/legal/Legal.pod.js +11 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/animated/Button.js +66 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/animated/Crossfader.js +32 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/animated/Fader.js +46 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/animated/HoverCard.js +31 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/animated/Layout.js +68 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/animated/Layout.use.js +33 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/animated/Layout.vars.js +20 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/animated/Root.js +26 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/cache.js +81 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/client.js +248 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Backdrop.js +21 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Background.js +21 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Background.pod.js +20 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Href.js +22 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Iframe.js +13 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Img.js +88 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Img.pod.js +69 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/InputFile.js +26 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/InputTextItem.js +23 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/InputTextarea.js +39 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/InputTextline.js +23 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Json.js +19 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Link.js +105 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/List.js +18 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Main.js +7 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Pressable.js +14 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Scrollable.js +27 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Svg.js +23 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Svg.pod.js +24 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Text.js +118 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/View.js +13 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/fonts/tools.js +72 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/fonts/use.js +52 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/head/Head.js +39 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/npm.js +20 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/router.js +21 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/scroll/@use.js +85 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/scroll/scroll.js +33 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/service.js +27 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/storage.js +48 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/use.js +62 -0
- package/assets/root.fullstackunicorn.dev/frontend/index.html +36 -0
- package/assets/root.fullstackunicorn.dev/frontend/jsconfig.json +18 -0
- package/assets/root.fullstackunicorn.dev/frontend/menus/@use.js +15 -0
- package/assets/root.fullstackunicorn.dev/frontend/menus/Main.js +33 -0
- package/assets/root.fullstackunicorn.dev/frontend/menus/Main.use.js +22 -0
- package/assets/root.fullstackunicorn.dev/frontend/modals/countries/countries.js +39 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/buttons/IconTextButton.js +17 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/buttons/IconTextButton.pod.js +24 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/buttons/TextButton.js +47 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/buttons/TextButton.pod.js +94 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/core/Back.js +26 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/core/Back.pod.js +37 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/core/Bulleted.js +37 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/core/Icon.js +20 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/core/Icon.pod.js +28 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/core/Img.js +19 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/core/Img.pod.js +26 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/core/Link.js +35 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/core/Link.pod.js +28 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/core/Slider.js +1 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/core/Slider.pod.js +30 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/page/PageBox.js +15 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/trademarks/@use.js +25 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/trademarks/Logo.js +19 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/trademarks/Logo.pod.js +17 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/trademarks/Trademark.js +20 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/trademarks/Trademark.pod.js +17 -0
- package/assets/root.fullstackunicorn.dev/frontend/package.json +58 -0
- package/assets/root.fullstackunicorn.dev/frontend/pages/@use.js +50 -0
- package/assets/root.fullstackunicorn.dev/frontend/pages/app/Checkout.js +10 -0
- package/assets/root.fullstackunicorn.dev/frontend/pages/app/Home.abs.js +11 -0
- package/assets/root.fullstackunicorn.dev/frontend/pages/app/Home.api.js +18 -0
- package/assets/root.fullstackunicorn.dev/frontend/pages/app/Home.js +23 -0
- package/assets/root.fullstackunicorn.dev/frontend/pages/root/Callout.api.js +31 -0
- package/assets/root.fullstackunicorn.dev/frontend/pages/root/Callout.js +13 -0
- package/assets/root.fullstackunicorn.dev/frontend/pages/root/Legal.api.js +35 -0
- package/assets/root.fullstackunicorn.dev/frontend/pages/root/Legal.js +15 -0
- package/assets/root.fullstackunicorn.dev/frontend/pages/root/Legals.api.js +19 -0
- package/assets/root.fullstackunicorn.dev/frontend/pages/root/Legals.js +29 -0
- package/assets/root.fullstackunicorn.dev/frontend/pages/root/User.api.js +18 -0
- package/assets/root.fullstackunicorn.dev/frontend/pages/root/User.js +25 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/card/book/BookCard.js +58 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/card/book/BookCard.pod.js +37 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/card/book/BookProse.js +22 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/cards/Account.js +26 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/cards/Account.pod.js +48 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/cards/Launcher.js +19 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/cards/Launcher.pod.js +38 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/cards/Linker.js +20 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/cards/Linker.pod.js +38 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/cards/Slider.js +22 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/cards/Slider.pod.js +39 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/error/ErrorPage.js +12 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/error/ErrorPage.pod.js +23 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/grid/book/Grid.js +115 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/grid/book/Grid.pod.js +65 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/grid/book/Item.js +3 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/grid/book/Item.pod.js +50 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/layout/Bottom.js +12 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/layout/Bottom.pod.js +40 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/layout/PageTitle.js +3 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/layout/PageTitle.pod.js +21 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/page/PageScrollable.js +13 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/page/PageScrollable.pod.js +85 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/prose/@formatter.js +113 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/prose/@use.js +21 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/prose/Basic.js +30 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/prose/Basic.pod.js +16 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/prose/Prose.js +84 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/prose/Prose.pod.js +58 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/selectors/actions/Actions.js +45 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/selectors/actions/Actions.pod.js +19 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/selectors/actions/SelectPicked.js +21 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/selectors/actions/SelectPicked.pod.js +35 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/selectors/popup/PopupModal.js +54 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/selectors/select/SelectItem.js +20 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/selectors/select/SelectItem.pod.js +33 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/selectors/select/SelectModal.js +52 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/selectors/select/SelectPage.js +33 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/selectors/select/SelectPage.pod.js +18 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/shopper/bookstore/Buy.js +19 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/shopper/bookstore/Buy.pod.js +17 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/shopper/bookstore/Shopper.js +39 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/shopper/bookstore/Shopper.pod.js +187 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/slider/Slider.js +138 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/slider/Slider.pod.js +102 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/sliders/actions/Actions.js +12 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/sliders/actions/Actions.pod.js +22 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/sliders/slider/SliderItem.js +30 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/sliders/slider/SliderItem.pod.js +39 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/sliders/slider/SliderModal.js +39 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/sliders/slider/SliderPage.js +37 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/sliders/slider/SliderPage.pod.js +24 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/wrapper/fixed/Wrapper.js +25 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/wrapper/fixed/Wrapper.pod.js +23 -0
- package/assets/root.fullstackunicorn.dev/frontend/preloader/@use.js +14 -0
- package/assets/root.fullstackunicorn.dev/frontend/preloader/Preloader.js +46 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/constants.js +4 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/constants.root.js +15 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/constants.scope.js +5 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/errors.js +4 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/errors.root.js +6 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/errors.scope.js +6 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/menus.js +9 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/menus.root.js +6 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/menus.scope.js +6 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/modals.js +4 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/modals.root.js +11 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/modals.scope.js +5 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/pages.js +4 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/pages.root.js +12 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/pages.scope.js +11 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/preload.js +18 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/preload.root.js +30 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/preload.scope.js +33 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/routes.js +7 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/routes.root.js +47 -0
- package/assets/root.fullstackunicorn.dev/frontend/root/routes.scope.js +31 -0
- package/assets/root.fullstackunicorn.dev/frontend/sworker/sw.js +104 -0
- package/assets/root.fullstackunicorn.dev/frontend/templates/cards.js +25 -0
- package/assets/root.fullstackunicorn.dev/frontend/templates/index.js +11 -0
- package/assets/root.fullstackunicorn.dev/frontend/templates/page.js +16 -0
- package/assets/root.fullstackunicorn.dev/frontend/templates/root.js +32 -0
- package/assets/root.fullstackunicorn.dev/frontend/tracking/errors.js +5 -0
- package/assets/root.fullstackunicorn.dev/frontend/tracking/logging.js +5 -0
- package/assets/root.fullstackunicorn.dev/frontend/tracking/performance.js +5 -0
- package/assets/root.fullstackunicorn.dev/frontend/tracking/vitals.js +5 -0
- package/assets/root.fullstackunicorn.dev/frontend/vite.config.js +64 -0
- package/assets/root.fullstackunicorn.dev/frontend/vite.jsx.js +10 -0
- package/assets/root.fullstackunicorn.dev/frontend/vite.sworker.js +56 -0
- package/assets/root.fullstackunicorn.dev/frontend/vite.volume.js +94 -0
- package/assets/root.fullstackunicorn.dev/manager/.env +10 -0
- package/assets/root.fullstackunicorn.dev/manager/config.cmd.sh +81 -0
- package/assets/root.fullstackunicorn.dev/manager/dockerfile +12 -0
- package/assets/root.fullstackunicorn.dev/manager/index.def.js +17 -0
- package/assets/root.fullstackunicorn.dev/manager/index.dep.js +17 -0
- package/assets/root.fullstackunicorn.dev/manager/index.init.js +38 -0
- package/assets/root.fullstackunicorn.dev/manager/index.js +17 -0
- package/assets/root.fullstackunicorn.dev/manager/modules/clone.js +65 -0
- package/assets/root.fullstackunicorn.dev/manager/modules/sync.server.js +65 -0
- package/assets/root.fullstackunicorn.dev/manager/modules/sync.tools.js +55 -0
- package/assets/root.fullstackunicorn.dev/manager/modules/workspace.js +77 -0
- package/assets/root.fullstackunicorn.dev/manager/modules/workspace.tools.js +49 -0
- package/assets/root.fullstackunicorn.dev/manager/package.json +36 -0
- package/assets/root.fullstackunicorn.dev/manager/server/errors.js +30 -0
- package/assets/root.fullstackunicorn.dev/manager/server/errors.list.js +24 -0
- package/assets/root.fullstackunicorn.dev/manager/server/middleware.auth.js +4 -0
- package/assets/root.fullstackunicorn.dev/manager/server/middleware.js +29 -0
- package/assets/root.fullstackunicorn.dev/manager/server/middleware.prod.js +18 -0
- package/assets/root.fullstackunicorn.dev/manager/server/resolvers.js +21 -0
- package/assets/root.fullstackunicorn.dev/manager/server/router.js +58 -0
- package/assets/root.fullstackunicorn.dev/package.json +16 -0
- package/assets/root.fullstackunicorn.dev/package.md +26 -0
- package/assets/root.fullstackunicorn.dev/root.config.app.js +85 -0
- package/package.json +1 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
class DateTime {
|
|
2
|
+
|
|
3
|
+
getDate(v, lookup) {
|
|
4
|
+
|
|
5
|
+
const raw = this.parse(v);
|
|
6
|
+
if (!this.validateLength(raw)) return { render: 'text', text: v };
|
|
7
|
+
|
|
8
|
+
const components = this.extractComponents(raw);
|
|
9
|
+
if (!this.validateComponents(components)) return { render: 'text', text: v };
|
|
10
|
+
if (!this.validateDate(components)) return { render: 'text', text: v };
|
|
11
|
+
if (!this.validateTime(components)) return { render: 'text', text: v };
|
|
12
|
+
return this.format(components, lookup);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
parse(v) {
|
|
16
|
+
return v.replace(/\D+/g, '');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
validateLength(raw) {
|
|
20
|
+
const validLengths = [4, 6, 8, 10, 12, 14];
|
|
21
|
+
return validLengths.includes(raw.length);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
extractComponents(raw) {
|
|
25
|
+
const year = raw.slice(0, 4);
|
|
26
|
+
const month = raw.length >= 6 ? raw.slice(4, 6) : '';
|
|
27
|
+
const day = raw.length >= 8 ? raw.slice(6, 8) : '';
|
|
28
|
+
const hour = raw.length >= 10 ? raw.slice(8, 10) : '';
|
|
29
|
+
const minute = raw.length >= 12 ? raw.slice(10, 12) : '';
|
|
30
|
+
const second = raw.length >= 14 ? raw.slice(12, 14) : '';
|
|
31
|
+
|
|
32
|
+
return {
|
|
33
|
+
year, month, day, hour, minute, second,
|
|
34
|
+
yearNum: parseInt(year, 10),
|
|
35
|
+
monthNum: month ? parseInt(month, 10) : 0,
|
|
36
|
+
dayNum: day ? parseInt(day, 10) : 0,
|
|
37
|
+
hourNum: hour ? parseInt(hour, 10) : -1,
|
|
38
|
+
minuteNum: minute ? parseInt(minute, 10) : -1,
|
|
39
|
+
secondNum: second ? parseInt(second, 10) : -1
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
validateComponents({ yearNum, month, monthNum, dayNum }) {
|
|
44
|
+
if (isNaN(yearNum) || yearNum < 0 || yearNum > 9999) return false;
|
|
45
|
+
if (month && (monthNum < 1 || monthNum > 12)) return false;
|
|
46
|
+
if (dayNum < 0) return false;
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
validateDate({ yearNum, monthNum, day, dayNum }) {
|
|
51
|
+
if (!day) return true;
|
|
52
|
+
|
|
53
|
+
const daysInMonth = [
|
|
54
|
+
31, (yearNum % 4 === 0 && (yearNum % 100 !== 0 || yearNum % 400 === 0)) ? 29 : 28,
|
|
55
|
+
31, 30, 31, 30, 31, 31, 30, 31, 30, 31
|
|
56
|
+
];
|
|
57
|
+
if (dayNum > daysInMonth[monthNum - 1]) return false;
|
|
58
|
+
|
|
59
|
+
const date = new Date(yearNum, monthNum - 1, dayNum);
|
|
60
|
+
return (
|
|
61
|
+
!isNaN(date.getTime()) &&
|
|
62
|
+
date.getFullYear() === yearNum &&
|
|
63
|
+
date.getMonth() === monthNum - 1 &&
|
|
64
|
+
date.getDate() === dayNum
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
validateTime({ hour, minute, second, hourNum, minuteNum, secondNum }) {
|
|
69
|
+
if (hour && (hourNum < 0 || hourNum > 23)) return false;
|
|
70
|
+
if (minute && (minuteNum < 0 || minuteNum > 59)) return false;
|
|
71
|
+
if (second && (secondNum < 0 || secondNum > 59)) return false;
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
format(components, lookup) {
|
|
76
|
+
const {
|
|
77
|
+
yearNum, monthNum, dayNum,
|
|
78
|
+
hourNum, minuteNum,
|
|
79
|
+
month, day, hour, minute
|
|
80
|
+
} = components;
|
|
81
|
+
|
|
82
|
+
let output = [];
|
|
83
|
+
let monthSlug = '';
|
|
84
|
+
let weekdaySlug = '';
|
|
85
|
+
|
|
86
|
+
output.push(yearNum.toString());
|
|
87
|
+
|
|
88
|
+
if (month) {
|
|
89
|
+
const monthIndex = monthNum - 1;
|
|
90
|
+
monthSlug = lookup.logic.months[monthIndex];
|
|
91
|
+
const verbalMonth = lookup.verbal.months[monthSlug] || monthSlug;
|
|
92
|
+
output.unshift(verbalMonth.charAt(0).toUpperCase() + verbalMonth.slice(1));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (day) {
|
|
96
|
+
const date = new Date(yearNum, monthNum - 1, dayNum);
|
|
97
|
+
const weekdayNum = (date.getDay() + 6) % 7;
|
|
98
|
+
weekdaySlug = lookup.logic.weekdays[weekdayNum];
|
|
99
|
+
const verbalWeekday = lookup.verbal.weekdays[weekdaySlug] || weekdaySlug;
|
|
100
|
+
output.unshift(verbalWeekday.toLowerCase());
|
|
101
|
+
output.splice(1, 0, dayNum.toString().padStart(2, '0'));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (hour) {
|
|
105
|
+
const timeParts = [hourNum.toString().padStart(2, '0')];
|
|
106
|
+
if (minute) timeParts.push(minuteNum.toString().padStart(2, '0'));
|
|
107
|
+
output.push(timeParts.join('.'));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
let formatted = output.join(' ');
|
|
111
|
+
if (output.length > 3) {
|
|
112
|
+
const timeIndex = output.length - 1;
|
|
113
|
+
formatted = output.slice(0, timeIndex).join(' ') + ', ' + output[timeIndex];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return { render: 'text', text: formatted };
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export const dateTime = new DateTime()
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
class Err {
|
|
2
|
+
|
|
3
|
+
isOffline = (error={}) => {
|
|
4
|
+
return (
|
|
5
|
+
error.code === 'ECONNABORTED' ||
|
|
6
|
+
error.code === 'ERR_NETWORK' ||
|
|
7
|
+
error.message.includes('Network Error') ||
|
|
8
|
+
error.message.includes('timeout')
|
|
9
|
+
)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
cache = async (error, cached) => {
|
|
13
|
+
F3.logs(error, 'xaa cache error')
|
|
14
|
+
if (!this.isOffline(error)) return { isError: true }
|
|
15
|
+
if (cached) return cached
|
|
16
|
+
return { isOffline: true }
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
handle = (error) => {
|
|
20
|
+
if (!this.isOffline(error)) return { isError: true }
|
|
21
|
+
return { isOffline: true }
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
cleanup = (func, item) => {
|
|
25
|
+
if (func) func()
|
|
26
|
+
return item
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export const err = new Err ()
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { uri } from '#@/App.uri.js'
|
|
2
|
+
|
|
3
|
+
class Img {
|
|
4
|
+
|
|
5
|
+
loaded = new Set()
|
|
6
|
+
|
|
7
|
+
getPictureSize = width => {
|
|
8
|
+
let size = 'TL'
|
|
9
|
+
if (width <= 64) size = 'TS'
|
|
10
|
+
if (width > 64 && width <= 256) size = 'TM'
|
|
11
|
+
if (width > 256 && width <= 512) size = 'TL'
|
|
12
|
+
if (width > 512 && width <= 960) size = 'SD'
|
|
13
|
+
if (width > 960 && width <= 1440) size = 'MD'
|
|
14
|
+
if (width > 1440) size = 'HD'
|
|
15
|
+
return size
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
getSrc = (picture = {}) => {
|
|
19
|
+
const { src, max = 'HD', size = 'SD' } = picture
|
|
20
|
+
const compareSizes = (max, size) => {
|
|
21
|
+
const sizes = { TS: 1, TM: 2, TL: 3, SD: 4, MD: 5, HD: 6 }
|
|
22
|
+
return sizes[size] > sizes[max] ? max : size
|
|
23
|
+
}
|
|
24
|
+
const nextSize = compareSizes(max, size)
|
|
25
|
+
const path = src.split(/\/TS\/|\/TM\/|\/TL\/|\/SD\/|\/MD\/|\/HD\//).join(`/${nextSize}/`)
|
|
26
|
+
return F3.fabUrl(uri.media, {path})
|
|
27
|
+
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
getImage = (picture = {}) => {
|
|
31
|
+
if (!picture.src) return { isNoImage: true }
|
|
32
|
+
const newPicture = { ...picture }
|
|
33
|
+
newPicture.src = this.getSrc(picture)
|
|
34
|
+
return newPicture
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export const img = new Img()
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Scientology Kirken",
|
|
3
|
+
"short_name": "Scientology Kirken",
|
|
4
|
+
"background_color": "#ffffff",
|
|
5
|
+
"display": "fullscreen",
|
|
6
|
+
"icons": [
|
|
7
|
+
{
|
|
8
|
+
"src": "/icons/icon-192.png",
|
|
9
|
+
"sizes": "192x192",
|
|
10
|
+
"type": "image/png",
|
|
11
|
+
"purpose": "maskable"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"src": "/icons/icon-512.png",
|
|
15
|
+
"sizes": "512x512",
|
|
16
|
+
"type": "image/png",
|
|
17
|
+
"purpose": "maskable"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"theme_color": "#ffffff"
|
|
21
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { atom, useAtom, useSetAtom, useGetAtom, makeId } from '#@/imports/npm.js'
|
|
2
|
+
import { useNavigateUrl } from '#@/imports/router.js'
|
|
3
|
+
import { storage } from '#@/imports/storage.js'
|
|
4
|
+
import { uri } from '#@/App.uri.js'
|
|
5
|
+
import { abs } from '#@/abstracts/abs.js'
|
|
6
|
+
import { api } from '#@/client/@api.js'
|
|
7
|
+
import { useUrl } from '#@/base/router/@use.js'
|
|
8
|
+
import { constants } from '#@/root/constants.js'
|
|
9
|
+
|
|
10
|
+
export const user = atom({})
|
|
11
|
+
|
|
12
|
+
export const isUserInitialized = atom(false)
|
|
13
|
+
export const initializeUser = atom(
|
|
14
|
+
(get) => get(isUserInitialized),
|
|
15
|
+
async (get, set, value) => {
|
|
16
|
+
|
|
17
|
+
const userInit = await api.auth.init()
|
|
18
|
+
const userInitialized = userInit?.id ? userInit : {}
|
|
19
|
+
|
|
20
|
+
set(user, userInitialized)
|
|
21
|
+
set(isUserInitialized, true)
|
|
22
|
+
}
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
export const useInitializeUser = () => useAtom(initializeUser)
|
|
26
|
+
|
|
27
|
+
export const useUser = () => useAtom(user)
|
|
28
|
+
export const useSetUser = () => useSetAtom(user)
|
|
29
|
+
export const useGetUser = () => useGetAtom(user)
|
|
30
|
+
|
|
31
|
+
export const useAuthLogin = () => {
|
|
32
|
+
|
|
33
|
+
const navigateUrl = useNavigateUrl()
|
|
34
|
+
const types = ['signup', 'login']
|
|
35
|
+
const { env } = constants
|
|
36
|
+
|
|
37
|
+
const authLogin = async (type) => {
|
|
38
|
+
|
|
39
|
+
if (!types.includes(type)) return
|
|
40
|
+
|
|
41
|
+
const tokenRaw = {}
|
|
42
|
+
tokenRaw.nonce = makeId()
|
|
43
|
+
tokenRaw.request_type = type
|
|
44
|
+
tokenRaw.client_id = env.CLIENT_ID
|
|
45
|
+
tokenRaw.protocol = env.PROTOCOL_AUTH
|
|
46
|
+
|
|
47
|
+
storage.set(type, tokenRaw.nonce)
|
|
48
|
+
|
|
49
|
+
const token = abs.jwt.encode(tokenRaw)
|
|
50
|
+
const authLink = F3.fabUrl(uri.auth.user.login, { type, token })
|
|
51
|
+
|
|
52
|
+
navigateUrl(authLink)
|
|
53
|
+
}
|
|
54
|
+
return authLogin
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export const useAuthLogout = () => {
|
|
58
|
+
|
|
59
|
+
const { lang } = useUrl()
|
|
60
|
+
const setUser = useSetUser()
|
|
61
|
+
|
|
62
|
+
const authLogout = async () => {
|
|
63
|
+
|
|
64
|
+
const response = await api.auth.logout()
|
|
65
|
+
|
|
66
|
+
if (response.isOffline) setAlerts({ id: 'offline' })
|
|
67
|
+
else if (response.isError) {
|
|
68
|
+
const message = response.error || 'logout-failed'
|
|
69
|
+
navigate(F3.fabUrl(uri.errors, { message, lang }))
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
storage.remove('accessToken')
|
|
73
|
+
storage.remove('refreshToken')
|
|
74
|
+
setUser({})
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return authLogout
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export const useAuthAccount = () => {
|
|
81
|
+
|
|
82
|
+
const navigateUrl = useNavigateUrl()
|
|
83
|
+
const { env } = constants
|
|
84
|
+
|
|
85
|
+
const tokenRaw = {}
|
|
86
|
+
tokenRaw.client_id = env.CLIENT_ID
|
|
87
|
+
tokenRaw.protocol = env.PROTOCOL_AUTH
|
|
88
|
+
|
|
89
|
+
const authAccount = () => {
|
|
90
|
+
const token = abs.jwt.encode(tokenRaw)
|
|
91
|
+
const accountLink = F3.fabUrl(uri.auth.user.account, { token })
|
|
92
|
+
navigateUrl(accountLink)
|
|
93
|
+
}
|
|
94
|
+
return authAccount
|
|
95
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { useGetUser, useAuthLogin, useAuthLogout, useAuthAccount } from '#@/base/account/@use.js'
|
|
2
|
+
import { useGetStatics } from '#@/base/statics/@use.js'
|
|
3
|
+
import { Account } from '#@/panels/cards/Account.js'
|
|
4
|
+
|
|
5
|
+
export const AccountCard = ({ api }) => {
|
|
6
|
+
|
|
7
|
+
const statics = useGetStatics()
|
|
8
|
+
|
|
9
|
+
const user = useGetUser()
|
|
10
|
+
|
|
11
|
+
const authLogin = useAuthLogin()
|
|
12
|
+
const authLogout = useAuthLogout()
|
|
13
|
+
const authAccount = useAuthAccount()
|
|
14
|
+
|
|
15
|
+
const onSignup = () => authLogin('signup')
|
|
16
|
+
const onLogin = () => authLogin('login')
|
|
17
|
+
const onLogout = () => authLogout()
|
|
18
|
+
const onAccount = () => authAccount()
|
|
19
|
+
|
|
20
|
+
const key = user.id ? 'user' : 'guest'
|
|
21
|
+
const onPressAction = user.id ? onLogout : onSignup
|
|
22
|
+
const onPress = user.id ? onAccount : onLogin
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<Account
|
|
26
|
+
title={api[key].title}
|
|
27
|
+
description={api[key].description}
|
|
28
|
+
descriptionPress={api[key].descriptionPress}
|
|
29
|
+
label={api[key].label}
|
|
30
|
+
onPressAction={onPressAction}
|
|
31
|
+
logo_src={statics.visual.img.minderable.src}
|
|
32
|
+
logo_alt={statics.visual.img.minderable.alt}
|
|
33
|
+
svg={statics.visual.svg.arrowChevronRight}
|
|
34
|
+
onPress={onPress}
|
|
35
|
+
/>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { routes } from '#@/root/routes.js'
|
|
2
|
+
import { useUrl } from '#@/base/router/@use.js'
|
|
3
|
+
import { useGetStatics } from '#@/base/statics/@use.js'
|
|
4
|
+
import { useGetUser } from '#@/base/account/@use.js'
|
|
5
|
+
import { useGetHistory } from '#@/base/router/@use.js'
|
|
6
|
+
import { AccountLogoPod } from './AccountLogo.pod.js'
|
|
7
|
+
|
|
8
|
+
export const AccountLogo = () => {
|
|
9
|
+
|
|
10
|
+
const { lang, isUrl } = useUrl()
|
|
11
|
+
const statics = useGetStatics()
|
|
12
|
+
const history = useGetHistory()
|
|
13
|
+
const userPath = F3.fabUrl(routes.public.user.path, { lang })
|
|
14
|
+
const isUrlUser = isUrl(userPath)
|
|
15
|
+
const linkTo = isUrlUser ? history[1] : userPath
|
|
16
|
+
const user = useGetUser()
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<AccountLogoPod
|
|
20
|
+
svg={statics.visual.svg.profile}
|
|
21
|
+
logo={user.logo}
|
|
22
|
+
isUser={!!user.id}
|
|
23
|
+
isUrlUser={isUrlUser}
|
|
24
|
+
linkTo={linkTo}
|
|
25
|
+
/>
|
|
26
|
+
)
|
|
27
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useStyle } from '#@/style/@use.js'
|
|
2
|
+
import { ImgData } from '#@/imports/core/Img.js'
|
|
3
|
+
import { Link } from '#@/modules/core/Link.js'
|
|
4
|
+
import { Icon } from '#@/modules/core/Icon.js'
|
|
5
|
+
|
|
6
|
+
export const AccountLogoPod = ({ svg, logo, isUser, isUrlUser, linkTo }) => {
|
|
7
|
+
|
|
8
|
+
const { s, c, f, t, F, B, S, I, H } = useStyle()
|
|
9
|
+
|
|
10
|
+
B.hoverFalseUserFalse = isUrlUser ? [c.base_NN_B400, c.item_WW] : [c.item_NN_B400]
|
|
11
|
+
B.hoverFalseUserTrue = isUrlUser ? [c.base_C1, c.item_WW] : [c.item_C1]
|
|
12
|
+
B.hoverTrueUserFalse = isUrlUser ? [c.base_NN_B200, c.item_WW] : [c.base_NN_W700, c.item_NN_B400]
|
|
13
|
+
B.hoverTrueUserTrue = isUrlUser ? [c.base_C1_W200, c.item_WW] : [c.base_C1_W700, c.item_C1]
|
|
14
|
+
|
|
15
|
+
B.hoverFalse = isUser ? B.hoverFalseUserTrue : B.hoverFalseUserFalse
|
|
16
|
+
B.hoverTrue = isUser ? B.hoverTrueUserTrue : B.hoverTrueUserFalse
|
|
17
|
+
|
|
18
|
+
H.icon = [B.hoverTrue, B.hoverFalse]
|
|
19
|
+
|
|
20
|
+
S.link = [s.row_cXcY, s.XY40, s.marginX4, s.marginY12]
|
|
21
|
+
S.logo = [s.XY40, s.radiusRound, s.border2, c.item_WW, c.line_C1]
|
|
22
|
+
S.icon = [s.row_cXcY, s.XY40, s.radiusRound]
|
|
23
|
+
|
|
24
|
+
if (isUser && logo) return (
|
|
25
|
+
<Link classes={S.link} linkTo={linkTo}>
|
|
26
|
+
<ImgData classes={S.logo} src={logo} hover={H.icon} />
|
|
27
|
+
</Link>
|
|
28
|
+
)
|
|
29
|
+
return (
|
|
30
|
+
<Link classes={S.link} linkTo={linkTo}>
|
|
31
|
+
<Icon classes={S.icon} svg={svg} hover={H.icon} />
|
|
32
|
+
</Link>
|
|
33
|
+
)
|
|
34
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { atom, useAtom, useSetAtom, useGetAtom } from '#@/imports/npm.js'
|
|
2
|
+
|
|
3
|
+
export const alerts = atom({})
|
|
4
|
+
|
|
5
|
+
export const useAlerts = () => useAtom(alerts)
|
|
6
|
+
export const useSetAlerts = () => useSetAtom(alerts)
|
|
7
|
+
export const useGetAlerts = () => useGetAtom(alerts)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useGetStatics } from '#@/base/statics/@use.js'
|
|
2
|
+
import { TextButton } from '#@/modules/buttons/TextButton.js'
|
|
3
|
+
import { AlertPod } from './Alert.pod.js'
|
|
4
|
+
|
|
5
|
+
export const Alert = ({ message, onClose, isError }) => {
|
|
6
|
+
|
|
7
|
+
const statics = useGetStatics()
|
|
8
|
+
|
|
9
|
+
return (
|
|
10
|
+
<AlertPod
|
|
11
|
+
isError={isError}
|
|
12
|
+
svg={isError ? statics.visual.svg.error : statics.visual.svg.warning}
|
|
13
|
+
message={message}
|
|
14
|
+
close={
|
|
15
|
+
<TextButton
|
|
16
|
+
text={statics.verbal.buttons.close}
|
|
17
|
+
color='C1'
|
|
18
|
+
type='fill'
|
|
19
|
+
onPress={onClose}
|
|
20
|
+
/>
|
|
21
|
+
}
|
|
22
|
+
/>
|
|
23
|
+
)
|
|
24
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { useStyle } from '#@/style/@use.js'
|
|
2
|
+
import { View } from '#@/imports/core/View.js'
|
|
3
|
+
import { Text } from '#@/imports/core/Text.js'
|
|
4
|
+
import { Icon } from '#@/modules/core/Icon.js'
|
|
5
|
+
|
|
6
|
+
export const AlertPod = ({ close, message, svg, isError }) => {
|
|
7
|
+
|
|
8
|
+
const { s, c, f, t, F, B, S, I, H } = useStyle()
|
|
9
|
+
|
|
10
|
+
F.message = [s.fs16, s.lh24, s.fw500]
|
|
11
|
+
|
|
12
|
+
B.color = isError ? c.item_RR : c.item_OR
|
|
13
|
+
|
|
14
|
+
S.overlay = [s.row_cXsY, s.absolute, s.overflowXYh, s.paddingY96, s.paddingX32, s.XY, s.G1, s.Z15, c.base_NN_B750_40]
|
|
15
|
+
S.alert = [s.col_cX, s.X330, s.overflowXYh, s.padding32, s.radius20, c.base_NN_W700]
|
|
16
|
+
S.message = [...F.message, s.row_cXcY, s.textC, s.marginY16, c.item_NN_B400]
|
|
17
|
+
S.icon = [s.row_cXcY, s.XY40, B.color]
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<View classes={S.overlay}>
|
|
21
|
+
<View classes={S.alert}>
|
|
22
|
+
<Icon classes={S.icon} svg={svg}/>
|
|
23
|
+
<Text classes={S.message} font={f.f1} text={message} />
|
|
24
|
+
{close}
|
|
25
|
+
</View>
|
|
26
|
+
</View>
|
|
27
|
+
)
|
|
28
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { abs } from '#@/abstracts/abs.js'
|
|
2
|
+
import { useGetStatics } from '#@/base/statics/@use.js'
|
|
3
|
+
import { useAlerts } from '#@/base/alerts/@use.js'
|
|
4
|
+
import { Alert } from '#@/base/alerts/Alert.js'
|
|
5
|
+
|
|
6
|
+
export const Alerts = () => {
|
|
7
|
+
|
|
8
|
+
const [alerts, setAlerts] = useAlerts({})
|
|
9
|
+
|
|
10
|
+
const statics = useGetStatics()
|
|
11
|
+
|
|
12
|
+
if (!alerts.id) return null
|
|
13
|
+
|
|
14
|
+
const isError = alerts.id.includes('error')
|
|
15
|
+
const defaultId = isError ? 'error' : 'warning'
|
|
16
|
+
const currentId = statics.verbal.alerts?.[alerts.id]
|
|
17
|
+
|
|
18
|
+
let message
|
|
19
|
+
if (!currentId) message = statics.verbal.alerts[defaultId]
|
|
20
|
+
message = abs.replacer(currentId, alerts.params)
|
|
21
|
+
|
|
22
|
+
const onClose = () => {
|
|
23
|
+
if (alerts.onClose) alerts.onClose()
|
|
24
|
+
setAlerts({})
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<Alert
|
|
29
|
+
isError={isError}
|
|
30
|
+
onClose={onClose}
|
|
31
|
+
message={message}
|
|
32
|
+
/>
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { routes } from '#@/root/routes.js'
|
|
2
|
+
import { useGetStatics } from '#@/base/statics/@use.js'
|
|
3
|
+
import { CalloutPod } from './Callout.pod.js'
|
|
4
|
+
|
|
5
|
+
export const Callout = () => {
|
|
6
|
+
|
|
7
|
+
const statics = useGetStatics()
|
|
8
|
+
|
|
9
|
+
return (
|
|
10
|
+
<CalloutPod
|
|
11
|
+
text={statics.verbal.callout.text}
|
|
12
|
+
link={statics.verbal.callout.link}
|
|
13
|
+
linkTo={routes.public.callout.path}
|
|
14
|
+
/>
|
|
15
|
+
)
|
|
16
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useStyle } from '#@/style/@use.js'
|
|
2
|
+
import { View } from '#@/imports/core/View.js'
|
|
3
|
+
import { Textline } from '#@/imports/core/Text.js'
|
|
4
|
+
import { Link } from '#@/modules/core/Link.js'
|
|
5
|
+
|
|
6
|
+
export const CalloutPod = ({ text, link, linkTo }) => {
|
|
7
|
+
|
|
8
|
+
const { s, c, f, t, F, B, S, I, H } = useStyle()
|
|
9
|
+
|
|
10
|
+
F.text = [s.fs16, s.lh24, s.fw500]
|
|
11
|
+
|
|
12
|
+
// S.alpha = [s.col_cXcY, s.absolute, s.bottom0, s.Y64, s.X, c.base_RR]
|
|
13
|
+
S.alpha = [s.col_cXcY, s.Y64, s.X, c.base_RR_B400]
|
|
14
|
+
S.link = [s.row_cXcY, s.Xc, ]
|
|
15
|
+
S.text = [...F.text, s.textC, s.Xx, c.item_NN_W700]
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<View classes={S.alpha}>
|
|
19
|
+
<Textline classes={S.text} font={f.f1} text={text}/>
|
|
20
|
+
<Link classes={S.link} linkTo={linkTo}>
|
|
21
|
+
<Textline classes={S.text} font={f.f1} text={link}/>
|
|
22
|
+
</Link>
|
|
23
|
+
</View>
|
|
24
|
+
)
|
|
25
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { abs } from '#@/abstracts/abs.js'
|
|
2
|
+
|
|
3
|
+
class Tools {
|
|
4
|
+
|
|
5
|
+
getPayload = token => {
|
|
6
|
+
try {
|
|
7
|
+
if (!token) return {}
|
|
8
|
+
return abs.jwt.decode(token)
|
|
9
|
+
} catch {
|
|
10
|
+
return {}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
getRoute = ({ payload, lang }) => {
|
|
15
|
+
if (payload?.type !== 'checkout') return ''
|
|
16
|
+
if (payload?.status === 'success') return `/${lang}/checkout/success`
|
|
17
|
+
if (payload?.status === 'cancel') return `/${lang}/checkout/cancel`
|
|
18
|
+
return ''
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
handlePay = ({ setCheckout, setIsPayRun, navigate, query, lang, homePath }) => {
|
|
22
|
+
|
|
23
|
+
// const params = new URLSearchParams(query)
|
|
24
|
+
// const token = params.get('token') || ''
|
|
25
|
+
// const payload = this.getPayload(token)
|
|
26
|
+
const route = null // this.getRoute({ payload, lang })
|
|
27
|
+
|
|
28
|
+
setIsPayRun(false)
|
|
29
|
+
|
|
30
|
+
if (!route) {
|
|
31
|
+
navigate(homePath)
|
|
32
|
+
return
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// setCheckout(payload)
|
|
36
|
+
// navigate(route)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export const tools = new Tools()
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { atom, useAtom, useSetAtom, useGetAtom } from '#@/imports/npm.js'
|
|
2
|
+
import { useNavigateUrl } from '#@/imports/router.js'
|
|
3
|
+
import { api } from '#@/client/@api.js'
|
|
4
|
+
|
|
5
|
+
export const checkout = atom({})
|
|
6
|
+
export const handleCheckout = atom(
|
|
7
|
+
(get) => get(checkout),
|
|
8
|
+
(get, set, value = {}) => {
|
|
9
|
+
set(checkout, value)
|
|
10
|
+
}
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
export const useCheckout = () => useAtom(handleCheckout)
|
|
14
|
+
export const useSetCheckout = () => useSetAtom(handleCheckout)
|
|
15
|
+
export const useGetCheckout = () => useGetAtom(handleCheckout)
|
|
16
|
+
|
|
17
|
+
export const useCheckoutStart = () => {
|
|
18
|
+
|
|
19
|
+
const navigateUrl = useNavigateUrl()
|
|
20
|
+
|
|
21
|
+
const start = async ({ product, seller = {} }) => {
|
|
22
|
+
|
|
23
|
+
const response = await api.stripe.set({ product, seller })
|
|
24
|
+
|
|
25
|
+
if (response?.isOffline) return response
|
|
26
|
+
if (response?.isError) return response
|
|
27
|
+
if (!response?.url) return { isError: true }
|
|
28
|
+
|
|
29
|
+
navigateUrl(response.url)
|
|
30
|
+
return { isValid: true }
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return start
|
|
34
|
+
}
|