@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,111 @@
|
|
|
1
|
+
import { storage } from '#@/imports/storage.js'
|
|
2
|
+
import { api } from '#@/client/@api.js'
|
|
3
|
+
import { uri } from '#@/App.uri.js'
|
|
4
|
+
import { tools as languageTools } from '#@/base/language/@tools.js'
|
|
5
|
+
|
|
6
|
+
class Tools {
|
|
7
|
+
|
|
8
|
+
handleAuth = async ({ setAlerts, setUser, setIsAuthRun, navigate, query }) => {
|
|
9
|
+
const [request_type, token_encoded] = query.split('?')[1].split('&')
|
|
10
|
+
const user = await api.auth.login(request_type, token_encoded)
|
|
11
|
+
if (user.isOffline) setAlerts({ id: 'offline', onClose: () => setIsAuthRun(true) })
|
|
12
|
+
else if (user.isError) navigate(`/errors/${user.error || 'login-failed'}`)
|
|
13
|
+
else {
|
|
14
|
+
setUser(user)
|
|
15
|
+
navigate('/user')
|
|
16
|
+
}
|
|
17
|
+
setIsAuthRun(false)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
loadData = async () => {
|
|
21
|
+
|
|
22
|
+
const funcs = {}
|
|
23
|
+
funcs.logic = async () => await api.statics.get(uri.data.root.logic, { path: 'statics' })
|
|
24
|
+
funcs.visual = async () => await api.statics.get(uri.data.root.visual, { path: 'statics' })
|
|
25
|
+
funcs.graphic = async () => await api.statics.get(uri.data.root.graphic, { path: 'statics' })
|
|
26
|
+
funcs.logicLanguages = async () => await api.statics.get(uri.data.lookups.logic, { path: 'languages' })
|
|
27
|
+
funcs.logicAlphabets = async () => await api.statics.get(uri.data.lookups.logic, { path: 'alphabets' })
|
|
28
|
+
|
|
29
|
+
const { logic, visual, graphic, logicLanguages, logicAlphabets } = await F3.promises(funcs)
|
|
30
|
+
|
|
31
|
+
const lookups = {}
|
|
32
|
+
lookups.languages = { logic: logicLanguages['@data'].items }
|
|
33
|
+
lookups.alphabets = { logic: logicAlphabets['@data'].items }
|
|
34
|
+
lookups.cookies = {}
|
|
35
|
+
|
|
36
|
+
const { verbal, language } = await this.getVerbal(logic, lookups)
|
|
37
|
+
|
|
38
|
+
const lang = language.language.slug
|
|
39
|
+
|
|
40
|
+
const newFunc = {}
|
|
41
|
+
newFunc.cookiesVerbal = async () => await api.statics.get(uri.data.lookups.verbal, { path: 'cookies', lang })
|
|
42
|
+
|
|
43
|
+
if (logic['@lang'] === lang) {
|
|
44
|
+
|
|
45
|
+
newFunc.languagesVerbal = async () => await api.statics.get(uri.data.lookups.verbal, { path: 'languages', lang })
|
|
46
|
+
const { cookiesVerbal, languagesVerbal } = await F3.promises(newFunc)
|
|
47
|
+
lookups.cookies.verbal = cookiesVerbal['@data']
|
|
48
|
+
lookups.languages.verbal = languagesVerbal['@data']
|
|
49
|
+
lookups.languages.original = lookups.languages.verbal
|
|
50
|
+
|
|
51
|
+
} else {
|
|
52
|
+
|
|
53
|
+
newFunc.languagesVerbal = async () => await api.statics.get(uri.data.lookups.verbal, { path: 'languages', lang })
|
|
54
|
+
newFunc.languagesOriginal = async () => await api.statics.get(uri.data.lookups.verbal, { path: 'languages', lang: logic['@lang'] })
|
|
55
|
+
const { cookiesVerbal, languagesVerbal, languagesOriginal } = await F3.promises(newFunc)
|
|
56
|
+
lookups.cookies.verbal = cookiesVerbal['@data']
|
|
57
|
+
lookups.languages.verbal = languagesVerbal['@data']
|
|
58
|
+
lookups.languages.original = languagesOriginal['@data']
|
|
59
|
+
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const statics = { logic, visual, graphic, verbal }
|
|
63
|
+
|
|
64
|
+
return { statics, lookups, language }
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
getVerbal = async (logic, lookups) => {
|
|
68
|
+
|
|
69
|
+
const defaults = {}
|
|
70
|
+
defaults.language = languageTools.getLanguage(logic['@lang'], lookups)
|
|
71
|
+
defaults.languageContent = languageTools.getLanguage(logic['@lang'], lookups)
|
|
72
|
+
|
|
73
|
+
const saved = {}
|
|
74
|
+
saved.languageContent = storage.getJSON('languageContent')
|
|
75
|
+
saved.language = storage.getJSON('language')
|
|
76
|
+
|
|
77
|
+
const isSavedLanguage = saved.language.slug && saved.language.slug !== defaults.language.slug
|
|
78
|
+
const isSavedLanguageContent = saved.languageContent.slug && saved.languageContent.slug !== defaults.languageContent.slug
|
|
79
|
+
|
|
80
|
+
const result = {}
|
|
81
|
+
result.language = {}
|
|
82
|
+
|
|
83
|
+
if (isSavedLanguageContent) result.language.languageContent = saved.languageContent
|
|
84
|
+
else result.language.languageContent = defaults.languageContent
|
|
85
|
+
|
|
86
|
+
try {
|
|
87
|
+
|
|
88
|
+
if (isSavedLanguage) {
|
|
89
|
+
const response = await api.statics.get(uri.data.root.verbal, { path: 'statics', lang: saved.language.slug })
|
|
90
|
+
if (saved.language.slug === response['@lang']) {
|
|
91
|
+
result.verbal = response['@data']
|
|
92
|
+
result.language.language = saved.language
|
|
93
|
+
return result
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const response = await api.statics.get(uri.data.root.verbal, { path: 'statics', lang: defaults.language.slug })
|
|
98
|
+
result.verbal = response['@data']
|
|
99
|
+
result.language.language = defaults.language
|
|
100
|
+
return result
|
|
101
|
+
|
|
102
|
+
} catch (error) {
|
|
103
|
+
const response = await api.statics.get(uri.data.root.verbal, { path: 'statics', lang: defaults.language.slug })
|
|
104
|
+
result.verbal = response['@data']
|
|
105
|
+
result.language.language = defaults.language
|
|
106
|
+
return result
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export const tools = new Tools()
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { atom, useAtom } from '#@/imports/npm.js'
|
|
2
|
+
import { initializeCookies } from '#@/base/cookies/@use.js'
|
|
3
|
+
import { initializeLayout } from '#@/base/layout/@use.js'
|
|
4
|
+
import { initializeTheme } from '#@/base/theme/@use.js'
|
|
5
|
+
import { initializeLanguage } from '#@/base/language/@use.js'
|
|
6
|
+
import { initializeStatics } from '#@/base/statics/@use.js'
|
|
7
|
+
import { initializeLookups } from '#@/base/lookups/@use.js'
|
|
8
|
+
import { initializeUser } from '#@/base/account/@use.js'
|
|
9
|
+
import { tools } from '#@/base/loader/@tools.js'
|
|
10
|
+
|
|
11
|
+
export const isInitialized = atom(false)
|
|
12
|
+
export const initialize = atom(
|
|
13
|
+
(get) => (
|
|
14
|
+
get(initializeCookies) &&
|
|
15
|
+
get(initializeLayout) &&
|
|
16
|
+
get(initializeTheme) &&
|
|
17
|
+
get(initializeLanguage) &&
|
|
18
|
+
get(initializeStatics) &&
|
|
19
|
+
get(initializeLookups) &&
|
|
20
|
+
get(initializeUser) &&
|
|
21
|
+
get(isInitialized)
|
|
22
|
+
),
|
|
23
|
+
async (get, set, defaults = {}) => {
|
|
24
|
+
const data = await tools.loadData()
|
|
25
|
+
await set(initializeCookies, data.statics)
|
|
26
|
+
await set(initializeLayout, true)
|
|
27
|
+
await set(initializeTheme, defaults.isDark)
|
|
28
|
+
await set(initializeLanguage, data.language)
|
|
29
|
+
await set(initializeStatics, data.statics)
|
|
30
|
+
await set(initializeLookups, data.lookups)
|
|
31
|
+
await set(initializeUser, true)
|
|
32
|
+
await set(isInitialized, true)
|
|
33
|
+
}
|
|
34
|
+
)
|
|
35
|
+
export const useInitialize = () => useAtom(initialize)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { useState } from 'react'
|
|
2
|
+
import { useLoadFonts } from '#@/imports/fonts/use.js'
|
|
3
|
+
import { Root } from '#@/imports/animated/Root.js'
|
|
4
|
+
import { Normalizer } from '#@/base/loader/Normalizer.js'
|
|
5
|
+
import { Starter } from '#@/base/loader/Starter.js'
|
|
6
|
+
import { Router } from '#@/base/router/Router.js'
|
|
7
|
+
import { Preloader } from '#@/preloader/Preloader.js'
|
|
8
|
+
|
|
9
|
+
export const Loader = () => {
|
|
10
|
+
|
|
11
|
+
const [isStarted, setIsStarted] = useState(false)
|
|
12
|
+
const [isLoaded, setIsLoaded] = useState(false)
|
|
13
|
+
const isFontLoaded = useLoadFonts(isLoaded)
|
|
14
|
+
const isRoot = isStarted && isLoaded && isFontLoaded
|
|
15
|
+
|
|
16
|
+
if (isRoot) return <Root isLoaded><Router/><Preloader/></Root>
|
|
17
|
+
else if (isStarted) return <Normalizer setIsLoaded={setIsLoaded}/>
|
|
18
|
+
else return <Starter setIsStarted={setIsStarted}/>
|
|
19
|
+
|
|
20
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react'
|
|
2
|
+
import { useNavigate } from '#@/imports/router.js'
|
|
3
|
+
import { routes } from '#@/root/routes.js'
|
|
4
|
+
import { useUrl } from '#@/base/router/@use.js'
|
|
5
|
+
import { useGetLanguage } from '#@/base/language/@use.js'
|
|
6
|
+
import { useSetAlerts } from '#@/base/alerts/@use.js'
|
|
7
|
+
import { useSetUser } from '#@/base/account/@use.js'
|
|
8
|
+
import { useSetCheckout } from '#@/base/checkout/@use.js'
|
|
9
|
+
import { tools } from '#@/base/loader/@tools.js'
|
|
10
|
+
import { tools as checkoutTools } from '#@/base/checkout/@tools.js'
|
|
11
|
+
|
|
12
|
+
export const Normalizer = ({ setIsLoaded }) => {
|
|
13
|
+
|
|
14
|
+
const [isAuthRun, setIsAuthRun] = useState(true)
|
|
15
|
+
const [isPayRun, setIsPayRun] = useState(true)
|
|
16
|
+
|
|
17
|
+
const { isPlain, lang, path, url, query } = useUrl()
|
|
18
|
+
const navigate = useNavigate()
|
|
19
|
+
const language = useGetLanguage()
|
|
20
|
+
const setAlerts = useSetAlerts()
|
|
21
|
+
const setUser = useSetUser()
|
|
22
|
+
|
|
23
|
+
const setCheckout = useSetCheckout()
|
|
24
|
+
|
|
25
|
+
const isApp = url.startsWith('/app')
|
|
26
|
+
const isAuth = url === '/auth' && isAuthRun
|
|
27
|
+
const isPay = url === '/pay' && isPayRun
|
|
28
|
+
const isHome = url === '/'
|
|
29
|
+
const isWrongLang = lang !== language.slug
|
|
30
|
+
|
|
31
|
+
const homePath = F3.fabUrl(routes.public.home.path, { lang: language.slug })
|
|
32
|
+
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
|
|
35
|
+
if (isApp) {
|
|
36
|
+
setIsLoaded(true)
|
|
37
|
+
return
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (isAuth) {
|
|
41
|
+
tools.handleAuth({ setAlerts, setUser, setIsAuthRun, navigate, query })
|
|
42
|
+
return
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (isPay) {
|
|
46
|
+
checkoutTools.handlePay({ setCheckout, setIsPayRun, navigate, query, lang:language.slug, homePath})
|
|
47
|
+
return
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (isHome) navigate(homePath)
|
|
51
|
+
else if (isPlain) navigate(`/${language.slug}${url}`)
|
|
52
|
+
else if (isWrongLang) navigate(`/${language.slug}/${path}`)
|
|
53
|
+
else setIsLoaded(true)
|
|
54
|
+
|
|
55
|
+
}, [isApp, isAuth, isPay, isHome, isWrongLang, isPlain])
|
|
56
|
+
|
|
57
|
+
return null
|
|
58
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useEffect } from 'react'
|
|
2
|
+
import { useIsDefaultThemeDark } from '#@/imports/use'
|
|
3
|
+
import { useInitialize } from '#@/base/loader/@use'
|
|
4
|
+
|
|
5
|
+
export const Starter = ({ setIsStarted = () => { } }) => {
|
|
6
|
+
|
|
7
|
+
const defaults = {}
|
|
8
|
+
defaults.isDark = useIsDefaultThemeDark()
|
|
9
|
+
|
|
10
|
+
const [isInitialized, setIsInitialized] = useInitialize()
|
|
11
|
+
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
if (isInitialized) setIsStarted(true)
|
|
14
|
+
else setIsInitialized(defaults)
|
|
15
|
+
}, [isInitialized])
|
|
16
|
+
return null
|
|
17
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { atom, useAtom, useSetAtom, useGetAtom } from '#@/imports/npm.js'
|
|
2
|
+
|
|
3
|
+
export const lookups = atom({})
|
|
4
|
+
|
|
5
|
+
export const isLookupsInitialized = atom(false)
|
|
6
|
+
export const initializeLookups = atom(
|
|
7
|
+
(get) => get(isLookupsInitialized),
|
|
8
|
+
async (get, set, init) => {
|
|
9
|
+
set(lookups, init)
|
|
10
|
+
set(isLookupsInitialized, true)
|
|
11
|
+
}
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
export const useInitializeLookups = () => useAtom(initializeLookups)
|
|
15
|
+
|
|
16
|
+
export const useLookups = () => useAtom(lookups)
|
|
17
|
+
export const useSetLookups = () => useSetAtom(lookups)
|
|
18
|
+
export const useGetLookups = () => useGetAtom(lookups)
|
|
19
|
+
|
|
20
|
+
export const setAlphabetsAtom = atom(
|
|
21
|
+
null,
|
|
22
|
+
(get, set, newAlphabets) => {
|
|
23
|
+
const prev = get(lookups)
|
|
24
|
+
const prevAlphabets = prev?.alphabets || {}
|
|
25
|
+
const alphabets = { ...prevAlphabets, ...newAlphabets }
|
|
26
|
+
set(lookups, { ...prev, alphabets })
|
|
27
|
+
}
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
export const setCookiesAtom = atom(
|
|
31
|
+
null,
|
|
32
|
+
(get, set, newCookies) => {
|
|
33
|
+
const prev = get(lookups)
|
|
34
|
+
const prevCookies = prev?.cookies || {}
|
|
35
|
+
const cookies = { ...prevCookies, ...newCookies }
|
|
36
|
+
set(lookups, { ...prev, cookies })
|
|
37
|
+
}
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
export const setCountriesAtom = atom(
|
|
41
|
+
null,
|
|
42
|
+
(get, set, newCountries) => {
|
|
43
|
+
const prev = get(lookups)
|
|
44
|
+
const prevCountries = prev?.countries || {}
|
|
45
|
+
const countries = { ...prevCountries, ...newCountries }
|
|
46
|
+
set(lookups, { ...prev, countries })
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
export const setLanguagesAtom = atom(
|
|
51
|
+
null,
|
|
52
|
+
(get, set, newLanguages) => {
|
|
53
|
+
const prev = get(lookups)
|
|
54
|
+
const prevLanguages = prev?.languages || {}
|
|
55
|
+
const languages = { ...prevLanguages, ...newLanguages }
|
|
56
|
+
set(lookups, { ...prev, languages })
|
|
57
|
+
}
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
export const setMonthsAtom = atom(
|
|
61
|
+
null,
|
|
62
|
+
(get, set, newMonths) => {
|
|
63
|
+
const prev = get(lookups)
|
|
64
|
+
const prevMonths = prev?.months || {}
|
|
65
|
+
const months = { ...prevMonths, ...newMonths }
|
|
66
|
+
set(lookups, { ...prev, months })
|
|
67
|
+
}
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
export const setWeekdaysAtom = atom(
|
|
71
|
+
null,
|
|
72
|
+
(get, set, newWeekdays) => {
|
|
73
|
+
const prev = get(lookups)
|
|
74
|
+
const prevWeekdays = prev?.weekdays || {}
|
|
75
|
+
const weekdays = { ...prevWeekdays, ...newWeekdays }
|
|
76
|
+
set(lookups, { ...prev, weekdays })
|
|
77
|
+
}
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
export const useSetLanguages = () => useSetAtom(setLanguagesAtom)
|
|
81
|
+
export const useSetAlphabets = () => useSetAtom(setAlphabetsAtom)
|
|
82
|
+
export const useSetCountries = () => useSetAtom(setCountriesAtom)
|
|
83
|
+
export const useSetMonths = () => useSetAtom(setMonthsAtom)
|
|
84
|
+
export const useSetWeekdays = () => useSetAtom(setWeekdaysAtom)
|
|
85
|
+
export const useSetCookies = () => useSetAtom(setCookiesAtom)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { atom, useAtom, useSetAtom, useGetAtom } from '#@/imports/npm'
|
|
2
|
+
import { useStyle } from '#@/style/@use'
|
|
3
|
+
// import { useGetSize } from '#@/base/layout/@use'
|
|
4
|
+
|
|
5
|
+
export const modals = atom([])
|
|
6
|
+
export const modalUrl = atom('')
|
|
7
|
+
export const modalError = atom({})
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
export const useModals = () => useAtom(modals)
|
|
11
|
+
export const useSetModals = () => useSetAtom(modals)
|
|
12
|
+
export const useGetModals = () => useGetAtom(modals)
|
|
13
|
+
|
|
14
|
+
export const useModalUrl = () => useAtom(modalUrl)
|
|
15
|
+
export const useSetModalUrl = () => useSetAtom(modalUrl)
|
|
16
|
+
export const useGetModalUrl = () => useGetAtom(modalUrl)
|
|
17
|
+
|
|
18
|
+
export const useModalError = () => useAtom(modalError)
|
|
19
|
+
export const useSetModalError = () => useSetAtom(modalError)
|
|
20
|
+
export const useGetModalError = () => useGetAtom(modalError)
|
|
21
|
+
|
|
22
|
+
export const useModalClose = () => {
|
|
23
|
+
|
|
24
|
+
const [modals, setModals] = useModals()
|
|
25
|
+
const [error={}, setError] = useModalError()
|
|
26
|
+
const setUrl = useSetModalUrl()
|
|
27
|
+
|
|
28
|
+
const modalClose = (modalId) => {
|
|
29
|
+
setUrl('')
|
|
30
|
+
if (error.name) setError({})
|
|
31
|
+
const nextModals = modals.filter(current => current.id !== modalId)
|
|
32
|
+
setModals(nextModals)
|
|
33
|
+
}
|
|
34
|
+
return modalClose
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export const useModalStyle = (type = 'default') => {
|
|
38
|
+
|
|
39
|
+
const { s, c, f, t, F, B, S, I, H } = useStyle()
|
|
40
|
+
// const size = useGetSize()
|
|
41
|
+
// const isFixed = useGetIsFixed()
|
|
42
|
+
// const isOversize = useGetIsOversize()
|
|
43
|
+
// const isSideOneOn = useGetIsSideOneOn()
|
|
44
|
+
// const isSideTwoOn = useGetIsSideTwoOn()
|
|
45
|
+
|
|
46
|
+
// const isSize1 = size === '1'
|
|
47
|
+
// const isSize2 = size === '2'
|
|
48
|
+
// const isSize3 = size === '3'
|
|
49
|
+
|
|
50
|
+
// if (isOversize && isFixed) return { isMax:true, margin:[] }
|
|
51
|
+
|
|
52
|
+
if (type === 'popup') return { type }
|
|
53
|
+
|
|
54
|
+
return { type, isMax:true, margin:[] }
|
|
55
|
+
|
|
56
|
+
// if (isSize1)
|
|
57
|
+
// return { margin:[s.marginX12] }
|
|
58
|
+
|
|
59
|
+
// if (isSize2 && isSideOneOn) return { margin:[s.marginS344, s.marginE12] }
|
|
60
|
+
// if (isSize2 && !isSideOneOn) return { margin:[s.marginX12] }
|
|
61
|
+
|
|
62
|
+
// if (isSize3 && isSideOneOn && isSideTwoOn) return { margin:[s.marginX344] }
|
|
63
|
+
// if (isSize3 && isSideOneOn && !isSideTwoOn) return { margin:[s.marginS344, s.marginE12] }
|
|
64
|
+
// if (isSize3 && !isSideOneOn && isSideTwoOn) return { margin:[s.marginS12, s.marginE344] }
|
|
65
|
+
// if (isSize3 && !isSideOneOn && !isSideTwoOn) return { margin:[s.marginX12] }
|
|
66
|
+
|
|
67
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { useState, useEffect } from 'react'
|
|
2
|
+
import { useGetStatics } from '#@/base/statics/@use.js'
|
|
3
|
+
import { useModalStyle, useGetModalError, useModalClose } from '#@/base/modals/@use.js'
|
|
4
|
+
// import { ErrorsModal } from '#@/base/errors'
|
|
5
|
+
import { ModalPod } from './Modal.pod.js'
|
|
6
|
+
import { ModalPopupPod } from './ModalPopup.pod.js'
|
|
7
|
+
|
|
8
|
+
export const Modal = ({ id, key, children, title, svg, actions, isCloseDisabled, type = 'default' }) => {
|
|
9
|
+
|
|
10
|
+
const statics = useGetStatics()
|
|
11
|
+
|
|
12
|
+
const [isClosed, setIsClosed] = useState(false)
|
|
13
|
+
|
|
14
|
+
const modalClose = useModalClose()
|
|
15
|
+
const handleClose = () => modalClose(id)
|
|
16
|
+
const close = () => isCloseDisabled || isError ? ()=>{} : setIsClosed(true)
|
|
17
|
+
const error = useGetModalError()
|
|
18
|
+
const isError = error?.name
|
|
19
|
+
|
|
20
|
+
const style = useModalStyle(type)
|
|
21
|
+
|
|
22
|
+
useEffect(()=>{
|
|
23
|
+
if (!isClosed) return
|
|
24
|
+
else handleClose()
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
const Pod = type === 'popup' ? ModalPopupPod : ModalPod
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<Pod
|
|
31
|
+
key={key}
|
|
32
|
+
title={title}
|
|
33
|
+
svg={{logo:svg, cancel:statics.visual.svg.confirmFalse}}
|
|
34
|
+
actions={actions}
|
|
35
|
+
isCloseDisabled={isCloseDisabled}
|
|
36
|
+
style={style}
|
|
37
|
+
close={close}
|
|
38
|
+
isClosed={isClosed}
|
|
39
|
+
isError={isError}
|
|
40
|
+
>{children}</Pod>
|
|
41
|
+
)
|
|
42
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { useStyle } from '#@/style/@use.js'
|
|
2
|
+
import { Backdrop, Modal } from '#@/imports/core/Backdrop.js'
|
|
3
|
+
import { View } from '#@/imports/core/View.js'
|
|
4
|
+
import { Scrollable } from '#@/imports/core/Scrollable.js'
|
|
5
|
+
import { Textline } from '#@/imports/core/Text.js'
|
|
6
|
+
import { Icon } from '#@/modules/core/Icon.js'
|
|
7
|
+
|
|
8
|
+
export const ModalPod = ({ children, title, svg, actions, isCloseDisabled, style = {}, close, error, isError, isClosed }) => {
|
|
9
|
+
|
|
10
|
+
const { s, c, f, t, F, B, S, I, H } = useStyle()
|
|
11
|
+
|
|
12
|
+
F.title = [s.fs16, s.lh24, s.fw500]
|
|
13
|
+
|
|
14
|
+
B.disabled = isCloseDisabled ? c.item_NN_B600_30 : c.item_NN_B600
|
|
15
|
+
B.isMax = style.isMax ? [s.Xr, s.Xmax600] : [s.Xr]
|
|
16
|
+
B.margin = style.margin
|
|
17
|
+
|
|
18
|
+
S.overlay = [s.row_cXcY, s.absolute, s.overflowXYh, s.paddingX16, s.XY, s.G1, s.Z10, c.base_NN_B750_40]
|
|
19
|
+
S.modal = [s.col, s.Yr, s.Ymin0, s.overflowXYh, s.paddingX20, s.radius20, s.marginY16, ...B.isMax, ...B.margin, c.base_NN_W700]
|
|
20
|
+
S.layout = [s.col, s.XYc, s.Ymin0]
|
|
21
|
+
S.header = [s.row_cXcY, s.Xr, s.Y40, s.marginY20]
|
|
22
|
+
S.icon = [s.XY32, s.margin4, c.item_NN_B400]
|
|
23
|
+
S.iconCancel = [s.XY32, s.margin4, B.disabled]
|
|
24
|
+
S.title = [s.row_cXcY, s.Xr, ...F.title, c.item_NN_B400]
|
|
25
|
+
S.body = [s.col, s.XYc, s.Ymin0]
|
|
26
|
+
S.footer = [s.row_cXcY, s.Xc, s.Y80, c.base_NN_W700]
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<Backdrop classes={S.overlay} isClosed={isClosed} onPress={close}>
|
|
30
|
+
<Modal classes={S.modal} isClosed={isClosed}>
|
|
31
|
+
<View classes={S.layout}>
|
|
32
|
+
<View classes={S.header}>
|
|
33
|
+
<Icon classes={S.icon} svg={svg.logo} />
|
|
34
|
+
<Textline classes={S.title} font={f.f1} text={title} />
|
|
35
|
+
<Icon classes={S.iconCancel} onPress={close} svg={svg.cancel} />
|
|
36
|
+
</View>
|
|
37
|
+
<Scrollable classes={S.body}>{isError ? error : children}</Scrollable>
|
|
38
|
+
<View classes={S.footer}>{actions}</View>
|
|
39
|
+
</View>
|
|
40
|
+
</Modal>
|
|
41
|
+
</Backdrop>
|
|
42
|
+
)
|
|
43
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { useStyle } from '#@/style/@use.js'
|
|
2
|
+
import { Backdrop, Modal } from '#@/imports/core/Backdrop.js'
|
|
3
|
+
import { View } from '#@/imports/core/View.js'
|
|
4
|
+
import { Scrollable } from '#@/imports/core/Scrollable.js'
|
|
5
|
+
import { Textline } from '#@/imports/core/Text.js'
|
|
6
|
+
import { Icon } from '#@/modules/core/Icon.js'
|
|
7
|
+
|
|
8
|
+
export const ModalPopupPod = ({ children, title, svg, actions, isCloseDisabled, style = {}, close, error, isError, isClosed }) => {
|
|
9
|
+
|
|
10
|
+
const { s, c, f, t, F, B, S, I, H } = useStyle()
|
|
11
|
+
|
|
12
|
+
F.title = [s.fs16, s.lh24, s.fw500]
|
|
13
|
+
|
|
14
|
+
B.disabled = isCloseDisabled ? c.item_NN_B600_30 : c.item_NN_B600
|
|
15
|
+
|
|
16
|
+
S.overlay = [s.row_cXcY, s.absolute, s.overflowXYh, s.paddingX16, s.XY, s.G1, s.Z10, c.base_NN_B750_40]
|
|
17
|
+
S.modal = [s.col, s.Xx360, s.Yy360, s.overflowXYh, s.paddingX20, s.radius20, s.marginY16, c.base_NN_W700]
|
|
18
|
+
S.layout = [s.col, s.X, s.Y]
|
|
19
|
+
S.header = [s.row_cXcY, s.Xr, s.Y40, s.marginY20]
|
|
20
|
+
S.icon = [s.XY32, s.margin4, c.item_NN_B400]
|
|
21
|
+
S.iconCancel = [s.XY32, s.margin4, B.disabled]
|
|
22
|
+
S.title = [s.row_cXcY, s.Xr, ...F.title, c.item_NN_B400]
|
|
23
|
+
S.body = [s.col, s.Xr, s.Ymin0]
|
|
24
|
+
S.footer = [s.row_cXcY, s.Xc, s.Y64, c.base_NN_W700]
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<Backdrop classes={S.overlay} isClosed={isClosed} onPress={close}>
|
|
28
|
+
<Modal classes={S.modal} isClosed={isClosed}>
|
|
29
|
+
<View classes={S.layout}>
|
|
30
|
+
<View classes={S.header}>
|
|
31
|
+
<Icon classes={S.icon} svg={svg.logo} />
|
|
32
|
+
<Textline classes={S.title} font={f.f1} text={title} />
|
|
33
|
+
<Icon classes={S.iconCancel} onPress={close} svg={svg.cancel} />
|
|
34
|
+
</View>
|
|
35
|
+
<Scrollable classes={S.body}>{isError ? error : children}</Scrollable>
|
|
36
|
+
<View classes={S.footer}>{actions}</View>
|
|
37
|
+
</View>
|
|
38
|
+
</Modal>
|
|
39
|
+
</Backdrop>
|
|
40
|
+
)
|
|
41
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useGetModals } from '#@/base/modals/@use'
|
|
2
|
+
import { modals as modalsList } from '#@/root/modals'
|
|
3
|
+
|
|
4
|
+
export const Modals = () => {
|
|
5
|
+
|
|
6
|
+
const modals = useGetModals()
|
|
7
|
+
|
|
8
|
+
if (!modals.length) return null
|
|
9
|
+
|
|
10
|
+
return <>{modals.map((modal={}) => modalsList[modal.name](modal))}</>
|
|
11
|
+
|
|
12
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { pages } from '#@/root/pages'
|
|
2
|
+
import { Route, Navigate } from '#@/imports/router'
|
|
3
|
+
import { PageBox } from '#@/modules/page/PageBox'
|
|
4
|
+
|
|
5
|
+
class Tools {
|
|
6
|
+
|
|
7
|
+
mapRoutes = (datas = {}, user = {}, isPrivate) => Object.keys(datas).map((key) => {
|
|
8
|
+
const { isRoute, path, render } = datas[key]
|
|
9
|
+
if (!isRoute) return null
|
|
10
|
+
if (isPrivate && !user.id) return null
|
|
11
|
+
return <Route key={path} path={path} element={<PageBox>{pages[render]}</PageBox>} />
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
missingRoute = homePath => {
|
|
15
|
+
return <Route path='*' element={<Navigate to={homePath} replace />} />
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
routes = (datas = {}, user, homePath) => <>
|
|
19
|
+
{this.mapRoutes(datas.public, user)}
|
|
20
|
+
{datas.private && this.mapRoutes(datas.private, user, true)}
|
|
21
|
+
{this.missingRoute(homePath)}
|
|
22
|
+
</>
|
|
23
|
+
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export const tools = new Tools()
|