@fullstackunicorn/create-root 1.0.22 → 1.0.24
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/assets/index.def.js +32 -4
- package/assets/root.fullstackunicorn.dev/assets/modules/sync.js +164 -302
- package/assets/root.fullstackunicorn.dev/assets/modules/sync.tools.js +39 -6
- package/assets/root.fullstackunicorn.dev/assets/package.md +9 -2
- package/assets/root.fullstackunicorn.dev/assets/webapp.runner.js +42 -1
- package/assets/root.fullstackunicorn.dev/frontend/base/account/AccountCard.js +1 -1
- package/assets/root.fullstackunicorn.dev/frontend/base/cookies/@use.js +5 -93
- package/assets/root.fullstackunicorn.dev/frontend/base/cookies/CookiesCard.js +1 -1
- package/assets/root.fullstackunicorn.dev/frontend/base/language/@use.js +4 -69
- package/assets/root.fullstackunicorn.dev/frontend/base/language/LanguageCard.js +1 -1
- package/assets/root.fullstackunicorn.dev/frontend/base/layout/Layout.pod.js +2 -2
- package/assets/root.fullstackunicorn.dev/frontend/base/legals/LegalCard.js +1 -1
- package/assets/root.fullstackunicorn.dev/frontend/base/legals/LegalsCard.js +1 -1
- package/assets/root.fullstackunicorn.dev/frontend/base/resources/@use.js +15 -0
- package/assets/root.fullstackunicorn.dev/frontend/base/router/@use.js +2 -1
- package/assets/root.fullstackunicorn.dev/frontend/base/theme/ThemeCard.js +1 -1
- package/assets/root.fullstackunicorn.dev/frontend/config.style.js +21 -9
- package/assets/root.fullstackunicorn.dev/frontend/features/legal/Legal.js +1 -1
- package/assets/root.fullstackunicorn.dev/frontend/imports/animated/Root.js +4 -8
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Scrollable.js +7 -2
- package/assets/root.fullstackunicorn.dev/frontend/imports/core/Viewport.js +29 -0
- package/assets/root.fullstackunicorn.dev/frontend/imports/head/Head.js +16 -26
- package/assets/root.fullstackunicorn.dev/frontend/modals/cookies/cookies.api.js +25 -0
- package/assets/root.fullstackunicorn.dev/frontend/modals/cookies/cookies.js +88 -0
- package/assets/root.fullstackunicorn.dev/frontend/modals/countries/countries.api.js +22 -0
- package/assets/root.fullstackunicorn.dev/frontend/modals/countries/countries.js +58 -37
- package/assets/root.fullstackunicorn.dev/frontend/modals/languages/languages.api.js +23 -0
- package/assets/root.fullstackunicorn.dev/frontend/modals/languages/languages.js +81 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/base/Bottom.js +10 -0
- package/assets/root.fullstackunicorn.dev/frontend/{panels/layout → modules/base}/Bottom.pod.js +1 -4
- package/assets/root.fullstackunicorn.dev/frontend/modules/base/ComingSoon.js +7 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/base/ComingSoon.pod.js +17 -0
- package/assets/root.fullstackunicorn.dev/frontend/{panels/error → modules/base}/ErrorPage.js +4 -4
- package/assets/root.fullstackunicorn.dev/frontend/{panels/error → modules/base}/ErrorPage.pod.js +7 -7
- package/assets/root.fullstackunicorn.dev/frontend/{panels/layout → modules/base}/PageTitle.js +1 -1
- package/assets/root.fullstackunicorn.dev/frontend/{panels/layout → modules/base}/PageTitle.pod.js +4 -6
- package/assets/root.fullstackunicorn.dev/frontend/{panels → modules}/cards/Account.js +9 -8
- package/assets/root.fullstackunicorn.dev/frontend/{panels → modules}/cards/Account.pod.js +28 -18
- package/assets/root.fullstackunicorn.dev/frontend/{panels → modules}/cards/Launcher.js +4 -4
- package/assets/root.fullstackunicorn.dev/frontend/{panels → modules}/cards/Launcher.pod.js +10 -11
- package/assets/root.fullstackunicorn.dev/frontend/{panels → modules}/cards/Linker.js +4 -4
- package/assets/root.fullstackunicorn.dev/frontend/{panels → modules}/cards/Linker.pod.js +11 -12
- package/assets/root.fullstackunicorn.dev/frontend/{panels → modules}/cards/Slider.js +8 -7
- package/assets/root.fullstackunicorn.dev/frontend/{panels → modules}/cards/Slider.pod.js +14 -14
- package/assets/root.fullstackunicorn.dev/frontend/{panels/wrapper/fixed → modules/layout}/Wrapper.js +2 -2
- package/assets/root.fullstackunicorn.dev/frontend/{panels/wrapper/fixed → modules/layout}/Wrapper.pod.js +1 -1
- package/assets/root.fullstackunicorn.dev/frontend/{panels/selectors/actions → modules/modals/select}/Actions.js +1 -1
- package/assets/root.fullstackunicorn.dev/frontend/{panels/selectors → modules/modals}/select/SelectPage.js +2 -2
- package/assets/root.fullstackunicorn.dev/frontend/{panels/sliders → modules/modals}/slider/SliderPage.js +2 -2
- package/assets/root.fullstackunicorn.dev/frontend/{panels → modules}/page/PageScrollable.js +1 -1
- package/assets/root.fullstackunicorn.dev/frontend/modules/page/PageScrollable.pod.js +23 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/prose/@runs.js +52 -0
- package/assets/root.fullstackunicorn.dev/frontend/modules/prose/Prose.js +56 -0
- package/assets/root.fullstackunicorn.dev/frontend/{panels → modules}/prose/Prose.pod.js +2 -14
- package/assets/root.fullstackunicorn.dev/frontend/pages/@use.js +26 -11
- package/assets/root.fullstackunicorn.dev/frontend/pages/root/Callout.api.js +9 -25
- package/assets/root.fullstackunicorn.dev/frontend/pages/root/Callout.js +1 -1
- package/assets/root.fullstackunicorn.dev/frontend/pages/root/Legal.api.js +16 -24
- package/assets/root.fullstackunicorn.dev/frontend/pages/root/Legal.js +2 -2
- package/assets/root.fullstackunicorn.dev/frontend/pages/root/Legals.api.js +14 -8
- package/assets/root.fullstackunicorn.dev/frontend/pages/root/Legals.js +5 -5
- package/assets/root.fullstackunicorn.dev/frontend/pages/root/User.api.js +8 -11
- package/assets/root.fullstackunicorn.dev/frontend/pages/root/User.js +1 -1
- package/assets/root.fullstackunicorn.dev/frontend/pages/{app → scope}/Checkout.js +1 -1
- package/assets/root.fullstackunicorn.dev/frontend/pages/scope/Home.abs.js +18 -0
- package/assets/root.fullstackunicorn.dev/frontend/pages/scope/Home.api.js +15 -0
- package/assets/root.fullstackunicorn.dev/frontend/pages/scope/Home.js +24 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/{slider/Slider.js → slideshows/Slideshow.js} +34 -20
- package/assets/root.fullstackunicorn.dev/frontend/panels/slideshows/Slideshow.map.js +27 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/slideshows/Slideshow.md +90 -0
- package/assets/root.fullstackunicorn.dev/frontend/panels/{slider/Slider.pod.js → slideshows/Slideshow.pod.js} +14 -28
- package/assets/root.fullstackunicorn.dev/frontend/preloader/@use.js +4 -5
- package/assets/root.fullstackunicorn.dev/frontend/root/errors.root.js +1 -1
- package/assets/root.fullstackunicorn.dev/frontend/root/modals.root.js +8 -8
- package/assets/root.fullstackunicorn.dev/frontend/root/pages.scope.js +2 -2
- package/assets/root.fullstackunicorn.dev/frontend/root/preload.scope.js +1 -1
- package/assets/root.fullstackunicorn.dev/package.json +1 -1
- package/assets/root.fullstackunicorn.dev/workspace/config/tabulars_data_content/config/import.json +4 -26
- package/assets/root.fullstackunicorn.dev/workspace/config/tabulars_data_content/objs/A01.metadata.meta.json +72 -79
- package/assets/root.fullstackunicorn.dev/workspace/config/tabulars_data_content/objs/C01.home.data.json +25 -5
- package/assets/root.fullstackunicorn.dev/workspace/volume/data/lookups/cookies/en-US.json +3 -19
- package/assets/root.fullstackunicorn.dev/workspace/volume/data/lookups/cookies/it-IT.json +6 -22
- package/assets/root.fullstackunicorn.dev/workspace/volume/data/root/user/en-US.json +4 -6
- package/assets/root.fullstackunicorn.dev/workspace/volume/data/root/user/it-IT.json +5 -19
- package/modules/init.js +9 -5
- package/package.json +1 -1
- package/assets/root.fullstackunicorn.dev/frontend/pages/app/Home.abs.js +0 -11
- package/assets/root.fullstackunicorn.dev/frontend/pages/app/Home.api.js +0 -18
- package/assets/root.fullstackunicorn.dev/frontend/pages/app/Home.js +0 -23
- package/assets/root.fullstackunicorn.dev/frontend/panels/card/book/BookCard.js +0 -58
- package/assets/root.fullstackunicorn.dev/frontend/panels/card/book/BookCard.pod.js +0 -37
- package/assets/root.fullstackunicorn.dev/frontend/panels/card/book/BookProse.js +0 -22
- package/assets/root.fullstackunicorn.dev/frontend/panels/grid/book/Grid.js +0 -115
- package/assets/root.fullstackunicorn.dev/frontend/panels/grid/book/Grid.pod.js +0 -65
- package/assets/root.fullstackunicorn.dev/frontend/panels/grid/book/Item.js +0 -3
- package/assets/root.fullstackunicorn.dev/frontend/panels/grid/book/Item.pod.js +0 -50
- package/assets/root.fullstackunicorn.dev/frontend/panels/layout/Bottom.js +0 -12
- package/assets/root.fullstackunicorn.dev/frontend/panels/page/PageScrollable.pod.js +0 -85
- package/assets/root.fullstackunicorn.dev/frontend/panels/prose/@use.js +0 -21
- package/assets/root.fullstackunicorn.dev/frontend/panels/prose/Prose.js +0 -84
- package/assets/root.fullstackunicorn.dev/frontend/panels/selectors/popup/PopupModal.js +0 -54
- package/assets/root.fullstackunicorn.dev/frontend/panels/selectors/select/SelectModal.js +0 -52
- package/assets/root.fullstackunicorn.dev/frontend/panels/shopper/bookstore/Buy.js +0 -19
- package/assets/root.fullstackunicorn.dev/frontend/panels/shopper/bookstore/Buy.pod.js +0 -17
- package/assets/root.fullstackunicorn.dev/frontend/panels/shopper/bookstore/Shopper.js +0 -39
- package/assets/root.fullstackunicorn.dev/frontend/panels/shopper/bookstore/Shopper.pod.js +0 -187
- package/assets/root.fullstackunicorn.dev/frontend/panels/sliders/slider/SliderModal.js +0 -39
- /package/assets/root.fullstackunicorn.dev/frontend/{panels/selectors/actions → modules/modals/select}/Actions.pod.js +0 -0
- /package/assets/root.fullstackunicorn.dev/frontend/{panels/selectors → modules/modals}/select/SelectItem.js +0 -0
- /package/assets/root.fullstackunicorn.dev/frontend/{panels/selectors → modules/modals}/select/SelectItem.pod.js +0 -0
- /package/assets/root.fullstackunicorn.dev/frontend/{panels/selectors → modules/modals}/select/SelectPage.pod.js +0 -0
- /package/assets/root.fullstackunicorn.dev/frontend/{panels/selectors/actions → modules/modals/select}/SelectPicked.js +0 -0
- /package/assets/root.fullstackunicorn.dev/frontend/{panels/selectors/actions → modules/modals/select}/SelectPicked.pod.js +0 -0
- /package/assets/root.fullstackunicorn.dev/frontend/{panels/sliders/actions → modules/modals/slider}/Actions.js +0 -0
- /package/assets/root.fullstackunicorn.dev/frontend/{panels/sliders/actions → modules/modals/slider}/Actions.pod.js +0 -0
- /package/assets/root.fullstackunicorn.dev/frontend/{panels/sliders → modules/modals}/slider/SliderItem.js +0 -0
- /package/assets/root.fullstackunicorn.dev/frontend/{panels/sliders → modules/modals}/slider/SliderItem.pod.js +0 -0
- /package/assets/root.fullstackunicorn.dev/frontend/{panels/sliders → modules/modals}/slider/SliderPage.pod.js +0 -0
- /package/assets/root.fullstackunicorn.dev/frontend/{panels → modules}/prose/@formatter.js +0 -0
- /package/assets/root.fullstackunicorn.dev/frontend/{panels → modules}/prose/Basic.js +0 -0
- /package/assets/root.fullstackunicorn.dev/frontend/{panels → modules}/prose/Basic.pod.js +0 -0
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
// // // import { useStyle } from '#@/style/@use.js'
|
|
2
|
-
// // // import { Scrollable } from '#@/imports/core/Scrollable.js'
|
|
3
|
-
// // // import { Fader } from '#@/imports/animated/Fader.js'
|
|
4
|
-
|
|
5
|
-
// // // export const PageScrollablePod = ({ children, type, scrollable = {} }) => {
|
|
6
|
-
|
|
7
|
-
// // // const { s, c, f, t, F, B, S, I, H } = useStyle()
|
|
8
|
-
|
|
9
|
-
// // // S.scrollable = [s.col_cX, s.XYc]
|
|
10
|
-
|
|
11
|
-
// // // return (
|
|
12
|
-
// // // <Scrollable classes={S.scrollable} isPage {...scrollable}>
|
|
13
|
-
// // // <Fader classes={t.page[type]}>
|
|
14
|
-
// // // {children}
|
|
15
|
-
// // // </Fader>
|
|
16
|
-
// // // </Scrollable>
|
|
17
|
-
// // // )
|
|
18
|
-
// // // }
|
|
19
|
-
|
|
20
|
-
// // import { useStyle } from '#@/style/@use.js'
|
|
21
|
-
// // import { Scrollable } from '#@/imports/core/Scrollable.js'
|
|
22
|
-
// // import { Fader } from '#@/imports/animated/Fader.js'
|
|
23
|
-
|
|
24
|
-
// // export const PageScrollablePod = ({ children, type, scrollRef, onScroll }) => {
|
|
25
|
-
|
|
26
|
-
// // const { s, c, f, t, F, B, S, I, H } = useStyle()
|
|
27
|
-
|
|
28
|
-
// // S.scrollable = [s.col_cX, s.XYc]
|
|
29
|
-
|
|
30
|
-
// // return (
|
|
31
|
-
// // <Scrollable classes={S.scrollable} isPage scrollRef={scrollRef} onScroll={onScroll}>
|
|
32
|
-
// // <Fader classes={t.page[type]}>
|
|
33
|
-
// // {children}
|
|
34
|
-
// // </Fader>
|
|
35
|
-
// // </Scrollable>
|
|
36
|
-
// // )
|
|
37
|
-
// // }
|
|
38
|
-
|
|
39
|
-
// import { useStyle } from '#@/style/@use.js'
|
|
40
|
-
// import { Scrollable } from '#@/imports/core/Scrollable.js'
|
|
41
|
-
// import { Fader } from '#@/imports/animated/Page.js'
|
|
42
|
-
|
|
43
|
-
// export const PageScrollablePod = ({ children, type, scrollRef, onScroll }) => {
|
|
44
|
-
|
|
45
|
-
// const { s, c, f, t, F, B, S, I, H } = useStyle()
|
|
46
|
-
|
|
47
|
-
// S.scrollable = [s.col_cX, s.XYc]
|
|
48
|
-
|
|
49
|
-
// return (
|
|
50
|
-
// <Scrollable
|
|
51
|
-
// classes={S.scrollable}
|
|
52
|
-
// scrollRef={scrollRef}
|
|
53
|
-
// onScroll={onScroll}
|
|
54
|
-
// >
|
|
55
|
-
// <Fader classes={t.page[type]}>
|
|
56
|
-
// {children}
|
|
57
|
-
// </Fader>
|
|
58
|
-
// </Scrollable>
|
|
59
|
-
// )
|
|
60
|
-
// }
|
|
61
|
-
|
|
62
|
-
import { useStyle } from '#@/style/@use.js'
|
|
63
|
-
import { Scrollable } from '#@/imports/core/Scrollable.js'
|
|
64
|
-
import { Fader } from '#@/imports/animated/Fader.js'
|
|
65
|
-
|
|
66
|
-
export const PageScrollablePod = ({ children, type, scrollRef, onScroll }) => {
|
|
67
|
-
|
|
68
|
-
const { s, t } = useStyle()
|
|
69
|
-
|
|
70
|
-
const S = {}
|
|
71
|
-
S.scrollable = [s.col_cX, s.XYc]
|
|
72
|
-
|
|
73
|
-
return (
|
|
74
|
-
<Scrollable
|
|
75
|
-
classes={S.scrollable}
|
|
76
|
-
isPage
|
|
77
|
-
scrollRef={scrollRef}
|
|
78
|
-
onScroll={onScroll}
|
|
79
|
-
>
|
|
80
|
-
<Fader classes={t.page[type]}>
|
|
81
|
-
{children}
|
|
82
|
-
</Fader>
|
|
83
|
-
</Scrollable>
|
|
84
|
-
)
|
|
85
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { makeId } from '#@/imports/npm'
|
|
2
|
-
import { useModals } from '#@/base/modals/@use'
|
|
3
|
-
|
|
4
|
-
export const useGlossary = (index, value, { language, attributes={} }) => {
|
|
5
|
-
|
|
6
|
-
const [modals, setModals] = useModals()
|
|
7
|
-
const attribute = attributes[index]
|
|
8
|
-
|
|
9
|
-
if (!language || !value || !attribute) return null
|
|
10
|
-
|
|
11
|
-
const data = {}
|
|
12
|
-
data.language = attribute.lang || language
|
|
13
|
-
data.value = value
|
|
14
|
-
data.def = attribute.def
|
|
15
|
-
|
|
16
|
-
const onPress = () => {
|
|
17
|
-
const id = makeId()
|
|
18
|
-
setModals([...modals, { id, name:'glossary', data }])
|
|
19
|
-
}
|
|
20
|
-
return onPress
|
|
21
|
-
}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { useGetStatics } from '#@/base/statics/@use.js'
|
|
2
|
-
// import { CodeInline } from '#@/panels/code/Code'
|
|
3
|
-
import { formatter } from '#@/panels/prose/@formatter.js'
|
|
4
|
-
import { useGlossary } from '#@/panels/prose/@use.js'
|
|
5
|
-
import { Url, Link } from '#@/panels/prose/Basic.js'
|
|
6
|
-
import { ProsePod, StylePod, SpanPod, TokenPod } from './Prose.pod.js'
|
|
7
|
-
|
|
8
|
-
export const Token = ({ index, value, glossary }) => {
|
|
9
|
-
|
|
10
|
-
const statics = useGetStatics()
|
|
11
|
-
const lookup = { logic: statics.logic.lookup, verbal: statics.verbal.lookup }
|
|
12
|
-
const data = formatter.render(value, lookup)
|
|
13
|
-
|
|
14
|
-
const render = {}
|
|
15
|
-
render.text = <SpanPod {...data} />
|
|
16
|
-
render.phrase = <SpanPod {...data} />
|
|
17
|
-
// render.code = <CodeInline {...data}/>
|
|
18
|
-
render.url = <Url {...data} />
|
|
19
|
-
render.link = <Link {...data} />
|
|
20
|
-
|
|
21
|
-
const onPress = useGlossary(index, data.text, glossary)
|
|
22
|
-
|
|
23
|
-
return (
|
|
24
|
-
<TokenPod onPress={onPress}>
|
|
25
|
-
{render[data.render]}
|
|
26
|
-
</TokenPod>
|
|
27
|
-
)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export const Tokens = ({ sliced, glossary }) => {
|
|
31
|
-
return sliced.map((token, index) => {
|
|
32
|
-
return (
|
|
33
|
-
<Token
|
|
34
|
-
key={index}
|
|
35
|
-
index={index}
|
|
36
|
-
value={token[0]}
|
|
37
|
-
glossary={glossary}
|
|
38
|
-
/>
|
|
39
|
-
)
|
|
40
|
-
})
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export const Style = ({ block = 'p', style = {}, tokens }) => {
|
|
44
|
-
return (
|
|
45
|
-
<StylePod
|
|
46
|
-
block={block}
|
|
47
|
-
style={style}
|
|
48
|
-
tokens={tokens}
|
|
49
|
-
/>
|
|
50
|
-
)
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export const Styles = ({ block = 'p', spans = [], tokens = [], glossary }) => {
|
|
54
|
-
return spans.map((span, index) => {
|
|
55
|
-
const sliced = tokens.slice(span.start, span.end + 1)
|
|
56
|
-
return (
|
|
57
|
-
<Style
|
|
58
|
-
key={index}
|
|
59
|
-
block={block}
|
|
60
|
-
style={F3.obj.safe(span.style)}
|
|
61
|
-
tokens={<Tokens {...{ sliced, glossary }} />}
|
|
62
|
-
/>
|
|
63
|
-
)
|
|
64
|
-
})
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export const Prose = ({ lang = {}, isGlossary }) => {
|
|
68
|
-
|
|
69
|
-
const attributes = F3.obj.safe(lang.attributes)
|
|
70
|
-
const style = F3.obj.safe(lang.style || attributes.style)
|
|
71
|
-
const spansRaw = F3.arr.safe(lang.spans || attributes.spans)
|
|
72
|
-
const language = lang.language
|
|
73
|
-
|
|
74
|
-
const tokens = formatter.tokenize(lang.value)
|
|
75
|
-
const spans = formatter.spans(tokens, spansRaw)
|
|
76
|
-
const glossary = isGlossary ? { language, attributes } : {}
|
|
77
|
-
|
|
78
|
-
return (
|
|
79
|
-
<ProsePod
|
|
80
|
-
style={style}
|
|
81
|
-
styles={<Styles block={style.block} spans={spans} tokens={tokens} glossary={glossary} />}
|
|
82
|
-
/>
|
|
83
|
-
)
|
|
84
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { useState } from 'react'
|
|
2
|
-
import { useGetStatics } from '#@/base/statics/@use.js'
|
|
3
|
-
import { useModalClose } from '#@/base/modals/@use.js'
|
|
4
|
-
import { Modal } from '#@/base/modals/Modal.js'
|
|
5
|
-
import { SelectPage } from '#@/panels/selectors/select/SelectPage.js'
|
|
6
|
-
import { Actions } from '#@/panels/selectors/actions/Actions.js'
|
|
7
|
-
|
|
8
|
-
const PopupModal = ({ id, data }) => {
|
|
9
|
-
|
|
10
|
-
const { value: current, onSetValue, itemLogic, itemVerbal, itemVisual } = data
|
|
11
|
-
|
|
12
|
-
const [value, setValue] = useState(current)
|
|
13
|
-
|
|
14
|
-
const statics = useGetStatics()
|
|
15
|
-
|
|
16
|
-
const isDisabled = value.slug === current.slug
|
|
17
|
-
|
|
18
|
-
const modalClose = useModalClose()
|
|
19
|
-
|
|
20
|
-
const onSave = async () => {
|
|
21
|
-
await onSetValue(value)
|
|
22
|
-
modalClose(id)
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const onRestore = () => setValue(current)
|
|
26
|
-
|
|
27
|
-
return (
|
|
28
|
-
<Modal
|
|
29
|
-
id={id}
|
|
30
|
-
type='popup'
|
|
31
|
-
title={itemVerbal.title}
|
|
32
|
-
svg={statics.visual.svg.edit}
|
|
33
|
-
actions={
|
|
34
|
-
<Actions
|
|
35
|
-
compact
|
|
36
|
-
selected={value}
|
|
37
|
-
onSave={onSave}
|
|
38
|
-
onRestore={onRestore}
|
|
39
|
-
isDisabled={isDisabled}
|
|
40
|
-
/>
|
|
41
|
-
}
|
|
42
|
-
>
|
|
43
|
-
<SelectPage
|
|
44
|
-
itemLogic={itemLogic}
|
|
45
|
-
itemVerbal={itemVerbal}
|
|
46
|
-
itemVisual={itemVisual}
|
|
47
|
-
selected={value}
|
|
48
|
-
setValue={setValue}
|
|
49
|
-
/>
|
|
50
|
-
</Modal>
|
|
51
|
-
)
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export const popup = (modal = {}) => <PopupModal key={modal.id} {...modal} />
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { useState } from 'react'
|
|
2
|
-
import { useGetStatics } from '#@/base/statics/@use.js'
|
|
3
|
-
import { useModalClose } from '#@/base/modals/@use.js'
|
|
4
|
-
import { Modal } from '#@/base/modals/Modal.js'
|
|
5
|
-
import { SelectPage } from '#@/panels/selectors/select/SelectPage.js'
|
|
6
|
-
import { Actions } from '#@/panels/selectors/actions/Actions.js'
|
|
7
|
-
|
|
8
|
-
const SelectModal = ({ id, data }) => {
|
|
9
|
-
|
|
10
|
-
const { value:current, onSetValue, itemLogic, itemVerbal, itemVisual } = data
|
|
11
|
-
|
|
12
|
-
const [value, setValue] = useState(current)
|
|
13
|
-
|
|
14
|
-
const statics = useGetStatics()
|
|
15
|
-
|
|
16
|
-
const isDisabled = value.slug === current.slug
|
|
17
|
-
|
|
18
|
-
const modalClose = useModalClose()
|
|
19
|
-
|
|
20
|
-
const onSave = async () => {
|
|
21
|
-
await onSetValue(value)
|
|
22
|
-
modalClose(id)
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const onRestore = () => setValue(current)
|
|
26
|
-
|
|
27
|
-
return (
|
|
28
|
-
<Modal
|
|
29
|
-
id={id}
|
|
30
|
-
title={itemVerbal.title}
|
|
31
|
-
svg={statics.visual.svg.edit}
|
|
32
|
-
actions={
|
|
33
|
-
<Actions
|
|
34
|
-
selected={value}
|
|
35
|
-
onSave={onSave}
|
|
36
|
-
onRestore={onRestore}
|
|
37
|
-
isDisabled={isDisabled}
|
|
38
|
-
/>
|
|
39
|
-
}
|
|
40
|
-
>
|
|
41
|
-
<SelectPage
|
|
42
|
-
itemLogic={itemLogic}
|
|
43
|
-
itemVerbal={itemVerbal}
|
|
44
|
-
itemVisual={itemVisual}
|
|
45
|
-
selected={value}
|
|
46
|
-
setValue={setValue}
|
|
47
|
-
/>
|
|
48
|
-
</Modal>
|
|
49
|
-
)
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export const selects = (modal={}) => <SelectModal key={modal.id} {...modal}/>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { useCheckoutStart } from '#@/base/checkout/@use.js'
|
|
2
|
-
import { BuyPod } from '#@/panels/shopper/bookstore/Buy.pod.js'
|
|
3
|
-
|
|
4
|
-
export const Buy = ({ product = {}, seller = {}, text, classes = [] }) => {
|
|
5
|
-
|
|
6
|
-
const checkoutStart = useCheckoutStart()
|
|
7
|
-
|
|
8
|
-
const onPress = async () => {
|
|
9
|
-
await checkoutStart({ product, seller })
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
return (
|
|
13
|
-
<BuyPod
|
|
14
|
-
text={text}
|
|
15
|
-
classes={classes}
|
|
16
|
-
onPress={onPress}
|
|
17
|
-
/>
|
|
18
|
-
)
|
|
19
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { useStyle } from '#@/style/@use.js'
|
|
2
|
-
import { Textline } from '#@/imports/core/Text.js'
|
|
3
|
-
import { Pressable } from '#@/imports/core/Pressable.js'
|
|
4
|
-
|
|
5
|
-
export const BuyPod = ({ text, onPress, classes = [] }) => {
|
|
6
|
-
|
|
7
|
-
const { s, c, f, S } = useStyle()
|
|
8
|
-
|
|
9
|
-
S.button = [s.row_cXcY, s.X, s.Y64, s.radius12, s.border1, c.base_CK, c.line_NN_B400, ...classes]
|
|
10
|
-
S.text = [s.fs20, s.lh32, s.fw700, c.item_NN_B400]
|
|
11
|
-
|
|
12
|
-
return (
|
|
13
|
-
<Pressable classes={S.button} onPress={onPress}>
|
|
14
|
-
<Textline classes={S.text} font={f.f1} text={text} />
|
|
15
|
-
</Pressable>
|
|
16
|
-
)
|
|
17
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { useGetStatics } from '#@/base/statics/@use.js'
|
|
2
|
-
import { Buy } from '#@/panels/shopper/bookstore/Buy.js'
|
|
3
|
-
import { ShopperPod } from '#@/panels/shopper/bookstore/Shopper.pod.js'
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export const Shopper = ({
|
|
7
|
-
data = {},
|
|
8
|
-
labels = {},
|
|
9
|
-
settings = {},
|
|
10
|
-
product = {},
|
|
11
|
-
seller = {},
|
|
12
|
-
onPressQuantity,
|
|
13
|
-
onPressLanguage
|
|
14
|
-
}) => {
|
|
15
|
-
|
|
16
|
-
const statics = useGetStatics()
|
|
17
|
-
|
|
18
|
-
const svg = {}
|
|
19
|
-
svg.edit = statics.visual.svg.editInline
|
|
20
|
-
svg.checkbox = statics.visual.svg.checkboxTrueInline
|
|
21
|
-
|
|
22
|
-
return (
|
|
23
|
-
<ShopperPod
|
|
24
|
-
data={data}
|
|
25
|
-
labels={labels}
|
|
26
|
-
settings={settings}
|
|
27
|
-
product={product}
|
|
28
|
-
svg={svg}
|
|
29
|
-
onPressQuantity={onPressQuantity}
|
|
30
|
-
onPressLanguage={onPressLanguage}
|
|
31
|
-
>
|
|
32
|
-
<Buy
|
|
33
|
-
text={labels.button}
|
|
34
|
-
product={product}
|
|
35
|
-
seller={seller}
|
|
36
|
-
/>
|
|
37
|
-
</ShopperPod>
|
|
38
|
-
)
|
|
39
|
-
}
|
|
@@ -1,187 +0,0 @@
|
|
|
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 { Img } from '#@/imports/core/Img.js'
|
|
5
|
-
import { Icon } from '#@/modules/core/Icon.js'
|
|
6
|
-
import { Pressable } from '#@/imports/core/Pressable.js'
|
|
7
|
-
|
|
8
|
-
const PicturePod = ({ picture, settings = {} }) => {
|
|
9
|
-
|
|
10
|
-
const { s, S, I } = useStyle()
|
|
11
|
-
|
|
12
|
-
const maxWidth = settings.pictureMaxWidth ?? 250
|
|
13
|
-
|
|
14
|
-
S.box = [s.radius12, s.overflowXYh]
|
|
15
|
-
S.picture = [s.X]
|
|
16
|
-
|
|
17
|
-
I.box = {
|
|
18
|
-
width: '100%',
|
|
19
|
-
maxWidth: `${maxWidth}px`,
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return (
|
|
23
|
-
<View classes={S.box} inline={I.box}>
|
|
24
|
-
<Img classes={S.picture} picture={picture} />
|
|
25
|
-
</View>
|
|
26
|
-
)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const ShopperOptionPod = ({ label, value, svg, onPress }) => {
|
|
30
|
-
|
|
31
|
-
const { s, c, f, t, F, B, S, I, H } = useStyle()
|
|
32
|
-
|
|
33
|
-
F.label = [s.fs16, s.lh24, s.fw700, c.item_NN_B400]
|
|
34
|
-
F.value = [s.fs16, s.lh24, s.fw500, c.item_NN_B400]
|
|
35
|
-
|
|
36
|
-
S.block = [s.col, s.paddingY8]
|
|
37
|
-
S.action = [s.row_sXcY, s.X]
|
|
38
|
-
S.separator = [s.row_cY, s.Xr, s.paddingX8]
|
|
39
|
-
S.line = [s.Y1, s.Xr, c.base_NN_W500]
|
|
40
|
-
S.label = [...F.label]
|
|
41
|
-
S.value = [...F.value, s.marginE8]
|
|
42
|
-
S.icon = [s.XY14, c.item_NN_B400]
|
|
43
|
-
|
|
44
|
-
return (
|
|
45
|
-
<View classes={S.block}>
|
|
46
|
-
<Pressable classes={S.action} onPress={onPress}>
|
|
47
|
-
<Text classes={S.label} font={f.f1} text={label} />
|
|
48
|
-
<View classes={S.separator}>
|
|
49
|
-
<View classes={S.line}></View>
|
|
50
|
-
</View>
|
|
51
|
-
<Text classes={S.value} font={f.f1} text={value} />
|
|
52
|
-
<Icon classes={S.icon} svg={svg} />
|
|
53
|
-
</Pressable>
|
|
54
|
-
</View>
|
|
55
|
-
)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const ShopperShippingPod = ({ label, value, svg }) => {
|
|
59
|
-
|
|
60
|
-
const { s, c, f, t, F, B, S, I, H } = useStyle()
|
|
61
|
-
|
|
62
|
-
F.label = [s.fs16, s.lh24, s.fw700, c.item_C4_B200]
|
|
63
|
-
F.value = [s.fs16, s.lh24, s.fw500, c.item_C4_B200]
|
|
64
|
-
|
|
65
|
-
S.block = [s.col, s.paddingY8]
|
|
66
|
-
S.action = [s.row_sXcY, s.X]
|
|
67
|
-
S.separator = [s.row_cY, s.Xr, s.paddingX8]
|
|
68
|
-
S.line = [s.Y1, s.Xr, c.base_NN_W500]
|
|
69
|
-
S.label = [...F.label]
|
|
70
|
-
S.value = [...F.value]
|
|
71
|
-
S.icon = [s.XY14, c.item_C4_B200]
|
|
72
|
-
|
|
73
|
-
return (
|
|
74
|
-
<View classes={S.block}>
|
|
75
|
-
<View classes={S.action}>
|
|
76
|
-
<Text classes={S.label} font={f.f1} text={label} />
|
|
77
|
-
<View classes={S.separator}>
|
|
78
|
-
<View classes={S.line}></View>
|
|
79
|
-
</View>
|
|
80
|
-
<Text classes={S.value} font={f.f1} text={value} />
|
|
81
|
-
{/* <Icon classes={S.icon} svg={svg} /> */}
|
|
82
|
-
</View>
|
|
83
|
-
</View>
|
|
84
|
-
)
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export const ShopperPod = ({
|
|
88
|
-
data = {},
|
|
89
|
-
labels = {},
|
|
90
|
-
settings = {},
|
|
91
|
-
product = {},
|
|
92
|
-
svg = {},
|
|
93
|
-
onPressQuantity,
|
|
94
|
-
onPressLanguage,
|
|
95
|
-
children
|
|
96
|
-
}) => {
|
|
97
|
-
|
|
98
|
-
const { s, c, f, t, F, B, S, I, H } = useStyle()
|
|
99
|
-
|
|
100
|
-
F.price = [s.fs28, s.lh36, s.fw700, c.item_C1]
|
|
101
|
-
F.currency = [s.fs28, s.lh36, s.fw700, c.item_NN_W400]
|
|
102
|
-
F.priceInfo = [s.fs16, s.lh24, s.fw400, s.fdI, c.item_NN_B400]
|
|
103
|
-
|
|
104
|
-
S.wrap = [s.X]
|
|
105
|
-
S.box = [s.row_sXsY, s.X, s.padding24, s.radius24, s.overflowXYh, s.border1, c.base_WW, c.line_NN_W600]
|
|
106
|
-
S.pictureWrap = [s.col_sXcY, s.XYr]
|
|
107
|
-
// S.spacer = [s.X32]
|
|
108
|
-
S.content = [s.col, s.XYr]
|
|
109
|
-
S.buyBlock = [s.col_eX]
|
|
110
|
-
S.buyRow = [s.row_eXeY]
|
|
111
|
-
S.price = [...F.price]
|
|
112
|
-
S.currency = [...F.currency, s.marginS8]
|
|
113
|
-
S.priceInfo = [...F.priceInfo]
|
|
114
|
-
|
|
115
|
-
S.separator = [s.X32, s.Yr]
|
|
116
|
-
|
|
117
|
-
S.options = [s.col, s.marginY8]
|
|
118
|
-
S.quantityBlock = [s.col]
|
|
119
|
-
S.languageBlock = [s.col]
|
|
120
|
-
S.shippingBlock = [s.col]
|
|
121
|
-
S.stockBlock = [s.col]
|
|
122
|
-
S.spacerY = [s.Yc]
|
|
123
|
-
|
|
124
|
-
return (
|
|
125
|
-
<View classes={S.wrap}>
|
|
126
|
-
<View classes={S.box}>
|
|
127
|
-
<View classes={S.pictureWrap}>
|
|
128
|
-
<PicturePod picture={data.picture} settings={settings} />
|
|
129
|
-
</View>
|
|
130
|
-
|
|
131
|
-
<View classes={S.separator}>
|
|
132
|
-
<View classes={S.line}></View>
|
|
133
|
-
</View>
|
|
134
|
-
|
|
135
|
-
<View classes={S.content}>
|
|
136
|
-
|
|
137
|
-
<View classes={S.buyBlock}>
|
|
138
|
-
<View classes={S.buyRow}>
|
|
139
|
-
<Text classes={S.price} font={f.f1} text={product.price} />
|
|
140
|
-
<Text classes={S.currency} font={f.f1} text={product.currency} />
|
|
141
|
-
</View>
|
|
142
|
-
<Text classes={S.priceInfo} font={f.f1} text={data.stockDescription} />
|
|
143
|
-
</View>
|
|
144
|
-
|
|
145
|
-
<View classes={S.options}>
|
|
146
|
-
<View classes={S.quantityBlock}>
|
|
147
|
-
<ShopperOptionPod
|
|
148
|
-
label={labels.quantity}
|
|
149
|
-
value={data.quantity}
|
|
150
|
-
svg={svg.edit}
|
|
151
|
-
onPress={onPressQuantity}
|
|
152
|
-
/>
|
|
153
|
-
</View>
|
|
154
|
-
|
|
155
|
-
<View classes={S.languageBlock}>
|
|
156
|
-
<ShopperOptionPod
|
|
157
|
-
label={labels.language}
|
|
158
|
-
value={data.language}
|
|
159
|
-
svg={svg.edit}
|
|
160
|
-
onPress={onPressLanguage}
|
|
161
|
-
/>
|
|
162
|
-
</View>
|
|
163
|
-
|
|
164
|
-
<View classes={S.shippingBlock}>
|
|
165
|
-
<ShopperShippingPod
|
|
166
|
-
label='Shipping'
|
|
167
|
-
value='Free'
|
|
168
|
-
svg={svg.checkbox}
|
|
169
|
-
/>
|
|
170
|
-
</View>
|
|
171
|
-
|
|
172
|
-
<View classes={S.stockBlock}>
|
|
173
|
-
<ShopperShippingPod
|
|
174
|
-
label='Availability'
|
|
175
|
-
value='In Stock'
|
|
176
|
-
svg={svg.checkbox}
|
|
177
|
-
/>
|
|
178
|
-
</View>
|
|
179
|
-
|
|
180
|
-
</View>
|
|
181
|
-
<View classes={S.spacerY}></View>
|
|
182
|
-
{children}
|
|
183
|
-
</View>
|
|
184
|
-
</View>
|
|
185
|
-
</View>
|
|
186
|
-
)
|
|
187
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { Modal } from '#@/base/modals/Modal'
|
|
2
|
-
import { TextButton } from '#@/modules/buttons/TextButton'
|
|
3
|
-
import { SliderPage } from '#@/panels/sliders/slider/SliderPage'
|
|
4
|
-
import { Actions } from '#@/panels/sliders/actions/Actions'
|
|
5
|
-
|
|
6
|
-
const SliderModal = ({ id, data }) => {
|
|
7
|
-
|
|
8
|
-
const { isCloseDisabled, isLanguageButton, svg, onSetValue=()=>{},
|
|
9
|
-
formResult, itemVerbal, itemLogic, itemVisual } = data
|
|
10
|
-
|
|
11
|
-
return (
|
|
12
|
-
<Modal
|
|
13
|
-
id={id}
|
|
14
|
-
isCloseDisabled={isCloseDisabled}
|
|
15
|
-
title={itemVerbal.title}
|
|
16
|
-
svg={svg}
|
|
17
|
-
actions={
|
|
18
|
-
<Actions isLanguageButton={isLanguageButton}>
|
|
19
|
-
<TextButton
|
|
20
|
-
text={itemVerbal.action}
|
|
21
|
-
type='fill'
|
|
22
|
-
color='C1'
|
|
23
|
-
onPress={onSetValue}
|
|
24
|
-
/>
|
|
25
|
-
</Actions>
|
|
26
|
-
}
|
|
27
|
-
>
|
|
28
|
-
<SliderPage
|
|
29
|
-
formResult={formResult}
|
|
30
|
-
sliderLogic={itemLogic}
|
|
31
|
-
sliderVerbal={itemVerbal.data}
|
|
32
|
-
sliderVisual={itemVisual}
|
|
33
|
-
description={itemVerbal.description}
|
|
34
|
-
/>
|
|
35
|
-
</Modal>
|
|
36
|
-
)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export const sliders = (modal={}) => <SliderModal key={modal.id} {...modal}/>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|