jinrai 1.0.3 → 1.0.6
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/.vscode/launch.json +21 -0
- package/config.ts +1 -0
- package/front.config.json +24 -0
- package/index.ts +6 -1
- package/lib/bin/bin.js +12 -0
- package/lib/config/config.d.ts +1 -0
- package/lib/config/config.js +1 -0
- package/lib/config/src/bin/config/userConfig.d.ts +14 -0
- package/lib/index.d.ts +6 -1
- package/lib/index.js +6 -7
- package/lib/src/front/server-state/DataProxy.d.ts +8 -0
- package/lib/src/front/server-state/DataProxy.js +104 -0
- package/lib/src/front/server-state/SSR.d.ts +4 -0
- package/lib/src/front/server-state/SSR.js +6 -0
- package/lib/src/front/server-state/real.d.ts +1 -0
- package/lib/src/front/server-state/real.js +36 -0
- package/lib/src/front/server-state/serverStates.d.ts +5 -0
- package/lib/src/front/server-state/serverStates.js +29 -0
- package/lib/src/front/server-state/useServerState.d.ts +10 -0
- package/lib/src/front/server-state/useServerState.js +28 -0
- package/lib/src/front/url/JinraiContext.d.ts +6 -0
- package/lib/src/front/url/JinraiContext.js +8 -0
- package/lib/src/front/url/adapter/def.d.ts +2 -0
- package/lib/src/front/url/adapter/def.js +9 -0
- package/lib/src/front/url/adapter/rrd6.d.ts +2 -0
- package/lib/src/front/url/adapter/rrd6.js +12 -0
- package/lib/src/front/url/adapter/rrd7.d.ts +2 -0
- package/lib/src/front/url/adapter/rrd7.js +11 -0
- package/lib/src/front/url/params/useParamsIndex.d.ts +1 -0
- package/lib/src/front/url/params/useParamsIndex.js +15 -0
- package/lib/src/front/url/search/useSearch.d.ts +1 -0
- package/lib/src/front/url/search/useSearch.js +15 -0
- package/lib/src/front/url/search/useSearchValue.d.ts +16 -0
- package/lib/src/front/url/search/useSearchValue.js +49 -0
- package/lib/src/front/wrapper/Custom.d.ts +8 -0
- package/lib/src/front/wrapper/Custom.js +9 -0
- package/lib/vite/plugin.js +1 -0
- package/package.json +42 -7
- package/readme.md +34 -8
- package/rollup.front.config.mjs +57 -0
- package/src/bin/bin.ts +10 -0
- package/src/bin/build/build.ts +69 -0
- package/src/{config → bin/config}/defaultIndexHtml.ts +2 -2
- package/src/{config → bin/config}/userConfig.ts +11 -3
- package/src/bin/content/normalizeContent.ts +7 -0
- package/src/bin/playwright/pageCollector.ts +11 -0
- package/src/{templates.ts → bin/playwright/templates.ts} +28 -21
- package/src/bin/routes/Parser.ts +148 -0
- package/src/{routes → bin/routes}/getRoutes.ts +9 -6
- package/src/bin/routes/replaceDevScripts.ts +16 -0
- package/src/bin/server/vitePreview.ts +13 -0
- package/src/front/server-state/DataProxy.ts +120 -0
- package/src/front/server-state/SSR.ts +4 -0
- package/src/front/server-state/real.ts +41 -0
- package/src/front/server-state/serverStates.ts +36 -0
- package/src/front/server-state/useServerState.ts +44 -0
- package/src/front/url/JinraiContext.tsx +10 -0
- package/src/front/url/adapter/def.tsx +10 -0
- package/src/front/url/adapter/rrd6.tsx +16 -0
- package/src/front/url/adapter/rrd7.tsx +15 -0
- package/src/front/url/params/useParamsIndex.ts +16 -0
- package/src/front/url/search/useSearch.ts +15 -0
- package/src/front/url/search/useSearchValue.ts +72 -0
- package/src/front/wrapper/Custom.tsx +14 -0
- package/tests/content/1.html +12 -0
- package/tests/content/1_result.json +54 -0
- package/tests/content/2.html +16 -0
- package/tests/content/2_result.json +28 -0
- package/tests/content/3.html +21 -0
- package/tests/content/3_result.json +39 -0
- package/tests/content/4.html +4 -0
- package/tests/content/4_result.json +9 -0
- package/tests/content/custom.html +5 -0
- package/tests/content/custom.json +5 -0
- package/tests/content/index.html +543 -0
- package/tests/content/index.json +49 -0
- package/tests/content/index_with_templates.json +31 -0
- package/tests/content/templates.json +13 -0
- package/tests/custom.test.ts +16 -0
- package/tests/parse.test.ts +52 -0
- package/tsconfig.json +2 -2
- package/vite/plugin.ts +83 -0
- package/vitest.config.ts +14 -0
- package/lib/bin.js +0 -3351
- package/lib/generate.js +0 -26
- package/lib/src/config/userConfig.d.ts +0 -7
- package/src/bin.ts +0 -46
- package/src/routes/parser.ts +0 -58
- package/src/routes/splitByTag.ts +0 -38
- package/test/fld.config.ts +0 -13
- package/test/jinrai.config.ts +0 -8
- /package/lib/{src → config/src/bin}/config/define.d.ts +0 -0
- /package/src/{config → bin/config}/define.ts +0 -0
- /package/src/{types → bin/types}/shims.d.ts +0 -0
- /package/src/{ui → bin/ui}/task.tsx +0 -0
|
@@ -0,0 +1,543 @@
|
|
|
1
|
+
<div class="css-dev-only-do-not-override-11mmrso ant-app">
|
|
2
|
+
<div class="flex flex-col gap-3">
|
|
3
|
+
<section
|
|
4
|
+
aria-label="Navbar"
|
|
5
|
+
class="border-0 border-b-[1px] border-gray-200 border-solid flex flex-col sticky top-0 z-50"
|
|
6
|
+
>
|
|
7
|
+
<div class="py-[4px] px-2 relative w-full bg-white" style="z-index: 30">
|
|
8
|
+
<nav class="flex gap-2 items-center justify-end bg-white z-30 pt-1">
|
|
9
|
+
<a class="flex-grow xl:flex-grow-0 ms-2" href="/">
|
|
10
|
+
<div class="md:w-[149px] xl:w-[270px]">
|
|
11
|
+
<img src="/images/public/logo.svg" alt="FLD LOGO" width="90" height="30" />
|
|
12
|
+
</div>
|
|
13
|
+
</a>
|
|
14
|
+
|
|
15
|
+
<ol class="xl:flex flex-grow items-center gap-3 list-none m-0 p-0">
|
|
16
|
+
<li class="p-1 px-2 rounded-lg transition-all cursor-pointer hover:text-gray-800 bg-light">
|
|
17
|
+
<a class="text-gray-700 text-[16px]" href="/">Home</a>
|
|
18
|
+
</li>
|
|
19
|
+
<li
|
|
20
|
+
class="p-1 px-2 rounded-lg transition-all cursor-pointer hover:text-gray-800 text-no_active"
|
|
21
|
+
>
|
|
22
|
+
<a class="text-gray-700 text-[16px]" href="/about">About the company</a>
|
|
23
|
+
</li>
|
|
24
|
+
<li
|
|
25
|
+
class="p-1 px-2 rounded-lg transition-all cursor-pointer hover:text-gray-800 text-no_active"
|
|
26
|
+
>
|
|
27
|
+
<a class="text-gray-700 text-[16px]" href="/contacts">Contacts</a>
|
|
28
|
+
</li>
|
|
29
|
+
<li
|
|
30
|
+
class="p-1 px-2 rounded-lg transition-all cursor-pointer hover:text-gray-800 text-no_active"
|
|
31
|
+
>
|
|
32
|
+
<a class="text-gray-700 text-[16px]" href="/delivery">Delivery and payment</a>
|
|
33
|
+
</li>
|
|
34
|
+
</ol>
|
|
35
|
+
<ol class="sm:flex lg:hidden justify-between gap-2 m-0 p-0">
|
|
36
|
+
<a href="/lk">
|
|
37
|
+
<button
|
|
38
|
+
type="button"
|
|
39
|
+
class="ant-btn css-dev-only-do-not-override-13cgf7g ant-btn-default ant-btn-color-default ant-btn-variant-outlined ant-btn-icon-only flex items-center justify-center"
|
|
40
|
+
>
|
|
41
|
+
<span class="ant-btn-icon"
|
|
42
|
+
><svg
|
|
43
|
+
stroke="currentColor"
|
|
44
|
+
fill="currentColor"
|
|
45
|
+
stroke-width="0"
|
|
46
|
+
viewBox="0 0 24 24"
|
|
47
|
+
color="#969696"
|
|
48
|
+
height="20"
|
|
49
|
+
width="20"
|
|
50
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
51
|
+
style="color: rgb(150, 150, 150)"
|
|
52
|
+
>
|
|
53
|
+
<path fill="none" d="M0 0h24v24H0z"></path>
|
|
54
|
+
<path
|
|
55
|
+
d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"
|
|
56
|
+
></path>
|
|
57
|
+
</svg>
|
|
58
|
+
</span>
|
|
59
|
+
</button>
|
|
60
|
+
</a>
|
|
61
|
+
<a href="/favorite">
|
|
62
|
+
<button
|
|
63
|
+
type="button"
|
|
64
|
+
class="ant-btn css-dev-only-do-not-override-13cgf7g ant-btn-default ant-btn-color-default ant-btn-variant-outlined ant-btn-icon-only flex items-center justify-center"
|
|
65
|
+
>
|
|
66
|
+
<span class="ant-btn-icon">
|
|
67
|
+
<svg
|
|
68
|
+
stroke="currentColor"
|
|
69
|
+
fill="currentColor"
|
|
70
|
+
stroke-width="0"
|
|
71
|
+
viewBox="0 0 24 24"
|
|
72
|
+
color="#969696"
|
|
73
|
+
height="20"
|
|
74
|
+
width="20"
|
|
75
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
76
|
+
style="color: rgb(150, 150, 150)"
|
|
77
|
+
>
|
|
78
|
+
<path fill="none" d="M0 0h24v24H0z"></path>
|
|
79
|
+
<path
|
|
80
|
+
d="m12 21.35-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"
|
|
81
|
+
></path>
|
|
82
|
+
</svg>
|
|
83
|
+
</span>
|
|
84
|
+
</button>
|
|
85
|
+
</a>
|
|
86
|
+
<span class="ant-badge ant-badge-status css-dev-only-do-not-override-13cgf7g">
|
|
87
|
+
<button
|
|
88
|
+
type="button"
|
|
89
|
+
class="ant-btn css-dev-only-do-not-override-13cgf7g ant-btn-default ant-btn-color-default ant-btn-variant-outlined ant-btn-icon-only px-[24px]"
|
|
90
|
+
>
|
|
91
|
+
<span class="ant-btn-icon">
|
|
92
|
+
<svg
|
|
93
|
+
stroke="currentColor"
|
|
94
|
+
fill="currentColor"
|
|
95
|
+
stroke-width="0"
|
|
96
|
+
viewBox="0 0 24 24"
|
|
97
|
+
color="#969696"
|
|
98
|
+
height="22"
|
|
99
|
+
width="22"
|
|
100
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
101
|
+
style="color: rgb(150, 150, 150)"
|
|
102
|
+
>
|
|
103
|
+
<path fill="none" d="M0 0h24v24H0z"></path>
|
|
104
|
+
<path
|
|
105
|
+
d="M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49A1.003 1.003 0 0 0 20 4H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z"
|
|
106
|
+
></path>
|
|
107
|
+
</svg>
|
|
108
|
+
</span>
|
|
109
|
+
</button>
|
|
110
|
+
</span>
|
|
111
|
+
</ol>
|
|
112
|
+
|
|
113
|
+
<a
|
|
114
|
+
class="hidden text-[16px] lg:block text-sm no-underline text-no_active hover:underline hover:text-link"
|
|
115
|
+
href="callto:+7(495)984-41-06"
|
|
116
|
+
>+7 (495) 984-41-06</a
|
|
117
|
+
>
|
|
118
|
+
<button
|
|
119
|
+
type="button"
|
|
120
|
+
class="ant-btn css-dev-only-do-not-override-13cgf7g ant-btn-default ant-btn-color-default ant-btn-variant-outlined hidden lg:flex gap-1 items-center"
|
|
121
|
+
>
|
|
122
|
+
<span class="ant-btn-icon"
|
|
123
|
+
><img class="mr-2 border" src="/images/public/lang/icons/eng.svg" /></span
|
|
124
|
+
><span>Eng</span>
|
|
125
|
+
</button>
|
|
126
|
+
<div class="xl:hidden">
|
|
127
|
+
<button
|
|
128
|
+
aria-describedby=":r3:"
|
|
129
|
+
type="button"
|
|
130
|
+
class="ant-btn css-dev-only-do-not-override-13cgf7g ant-btn-default ant-btn-color-default ant-btn-variant-outlined ant-btn-icon-only flex items-center justify-center"
|
|
131
|
+
>
|
|
132
|
+
<span class="ant-btn-icon"
|
|
133
|
+
><svg
|
|
134
|
+
stroke="currentColor"
|
|
135
|
+
fill="currentColor"
|
|
136
|
+
stroke-width="0"
|
|
137
|
+
viewBox="0 0 24 24"
|
|
138
|
+
color="#969696"
|
|
139
|
+
height="20"
|
|
140
|
+
width="20"
|
|
141
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
142
|
+
style="color: rgb(150, 150, 150)"
|
|
143
|
+
>
|
|
144
|
+
<path fill="none" d="M0 0h24v24H0z"></path>
|
|
145
|
+
<path d="M3 3h18v2H3zM3 19h18v2H3zM3 11h18v2H3z"></path></svg
|
|
146
|
+
></span>
|
|
147
|
+
</button>
|
|
148
|
+
</div>
|
|
149
|
+
</nav>
|
|
150
|
+
</div>
|
|
151
|
+
<div class="py-[4px] px-2 relative w-full bg-white" style="z-index: 30">
|
|
152
|
+
<div class="flex gap-2 items-center relative">
|
|
153
|
+
<button
|
|
154
|
+
aria-describedby=":r5:"
|
|
155
|
+
type="button"
|
|
156
|
+
class="ant-btn css-dev-only-do-not-override-13cgf7g ant-btn-primary ant-btn-color-primary ant-btn-variant-solid catalog h-[40px] flex items-center justify-start md:w-[150px] lg:w-[280px]"
|
|
157
|
+
>
|
|
158
|
+
<span class="ant-btn-icon"
|
|
159
|
+
><svg
|
|
160
|
+
stroke="currentColor"
|
|
161
|
+
fill="currentColor"
|
|
162
|
+
stroke-width="0"
|
|
163
|
+
viewBox="0 0 24 24"
|
|
164
|
+
color="#fff"
|
|
165
|
+
height="24"
|
|
166
|
+
width="24"
|
|
167
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
168
|
+
style="color: rgb(255, 255, 255); margin-top: -2px"
|
|
169
|
+
>
|
|
170
|
+
<path fill="none" d="M0 0h24v24H0V0z"></path>
|
|
171
|
+
<path
|
|
172
|
+
d="M3 18h13v-2H3v2zm0-5h10v-2H3v2zm0-7v2h13V6H3zm18 9.59L17.42 12 21 8.41 19.59 7l-5 5 5 5L21 15.59z"
|
|
173
|
+
></path></svg></span
|
|
174
|
+
><span>Catalog</span>
|
|
175
|
+
</button>
|
|
176
|
+
<div class="flex-grow">
|
|
177
|
+
<section aria-label="Search input">
|
|
178
|
+
<div class="xl:relative">
|
|
179
|
+
<span
|
|
180
|
+
class="ant-input-affix-wrapper css-dev-only-do-not-override-13cgf7g ant-input-outlined border border-1 h-[40px] border-blue-500 text-[16px]"
|
|
181
|
+
><span class="ant-input-prefix"
|
|
182
|
+
><svg
|
|
183
|
+
stroke="currentColor"
|
|
184
|
+
fill="currentColor"
|
|
185
|
+
stroke-width="0"
|
|
186
|
+
viewBox="0 0 24 24"
|
|
187
|
+
color="#969696"
|
|
188
|
+
height="20"
|
|
189
|
+
width="20"
|
|
190
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
191
|
+
style="color: rgb(150, 150, 150)"
|
|
192
|
+
>
|
|
193
|
+
<path fill="none" d="M0 0h24v24H0z"></path>
|
|
194
|
+
<path
|
|
195
|
+
d="M15.5 14h-.79l-.28-.27A6.471 6.471 0 0 0 16 9.5 6.5 6.5 0 1 0 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"
|
|
196
|
+
></path></svg></span
|
|
197
|
+
><input
|
|
198
|
+
placeholder="Search"
|
|
199
|
+
class="ant-input css-dev-only-do-not-override-13cgf7g"
|
|
200
|
+
type="text"
|
|
201
|
+
value=""
|
|
202
|
+
/></span>
|
|
203
|
+
</div>
|
|
204
|
+
</section>
|
|
205
|
+
</div>
|
|
206
|
+
<div class="hidden lg:flex gap-2">
|
|
207
|
+
<a href="/lk"
|
|
208
|
+
><button
|
|
209
|
+
type="button"
|
|
210
|
+
class="ant-btn css-dev-only-do-not-override-13cgf7g ant-btn-default ant-btn-color-default ant-btn-variant-outlined"
|
|
211
|
+
>
|
|
212
|
+
<span class="ant-btn-icon"
|
|
213
|
+
><svg
|
|
214
|
+
stroke="currentColor"
|
|
215
|
+
fill="currentColor"
|
|
216
|
+
stroke-width="0"
|
|
217
|
+
viewBox="0 0 24 24"
|
|
218
|
+
color="#969696"
|
|
219
|
+
height="22"
|
|
220
|
+
width="22"
|
|
221
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
222
|
+
style="color: rgb(150, 150, 150)"
|
|
223
|
+
>
|
|
224
|
+
<path fill="none" d="M0 0h24v24H0z"></path>
|
|
225
|
+
<path
|
|
226
|
+
d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"
|
|
227
|
+
></path></svg></span
|
|
228
|
+
><span>Enter</span>
|
|
229
|
+
</button></a
|
|
230
|
+
><button
|
|
231
|
+
type="button"
|
|
232
|
+
class="ant-btn css-dev-only-do-not-override-13cgf7g ant-btn-default ant-btn-color-default ant-btn-variant-outlined ant-btn-icon-only p-2"
|
|
233
|
+
>
|
|
234
|
+
<span class="ant-btn-icon"
|
|
235
|
+
><svg
|
|
236
|
+
stroke="currentColor"
|
|
237
|
+
fill="currentColor"
|
|
238
|
+
stroke-width="0"
|
|
239
|
+
viewBox="0 0 24 24"
|
|
240
|
+
color="#969696"
|
|
241
|
+
height="22"
|
|
242
|
+
width="22"
|
|
243
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
244
|
+
style="color: rgb(150, 150, 150)"
|
|
245
|
+
>
|
|
246
|
+
<path fill="none" d="M0 0h24v24H0z"></path>
|
|
247
|
+
<path
|
|
248
|
+
d="m12 21.35-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"
|
|
249
|
+
></path></svg
|
|
250
|
+
></span></button
|
|
251
|
+
><span class="ant-badge ant-badge-status css-dev-only-do-not-override-13cgf7g"
|
|
252
|
+
><button
|
|
253
|
+
type="button"
|
|
254
|
+
class="ant-btn css-dev-only-do-not-override-13cgf7g ant-btn-default ant-btn-color-default ant-btn-variant-outlined px-[24px]"
|
|
255
|
+
>
|
|
256
|
+
<span class="ant-btn-icon"
|
|
257
|
+
><svg
|
|
258
|
+
stroke="currentColor"
|
|
259
|
+
fill="currentColor"
|
|
260
|
+
stroke-width="0"
|
|
261
|
+
viewBox="0 0 24 24"
|
|
262
|
+
color="#969696"
|
|
263
|
+
height="22"
|
|
264
|
+
width="22"
|
|
265
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
266
|
+
style="color: rgb(150, 150, 150)"
|
|
267
|
+
>
|
|
268
|
+
<path fill="none" d="M0 0h24v24H0z"></path>
|
|
269
|
+
<path
|
|
270
|
+
d="M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49A1.003 1.003 0 0 0 20 4H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z"
|
|
271
|
+
></path></svg></span
|
|
272
|
+
><span>Basket</span>
|
|
273
|
+
</button></span
|
|
274
|
+
>
|
|
275
|
+
</div>
|
|
276
|
+
</div>
|
|
277
|
+
</div>
|
|
278
|
+
<div class="py-[4px] px-2 relative w-full bg-white" style="z-index: 30">
|
|
279
|
+
<div class="overflow-hidden undefined" style="opacity: 0; height: 0px; visibility: hidden">
|
|
280
|
+
<div class="flex flex-col relative">
|
|
281
|
+
<div class="flex justify-between gap-2 flex-col xl:flex-row">
|
|
282
|
+
<div class="flex gap-2">
|
|
283
|
+
<div class="relative sm:flex-grow xl:flex-grow-0">
|
|
284
|
+
<button
|
|
285
|
+
aria-describedby=":r7:"
|
|
286
|
+
type="button"
|
|
287
|
+
class="ant-btn css-dev-only-do-not-override-13cgf7g ant-btn-default ant-btn-color-default ant-btn-variant-outlined flex items-center w-full"
|
|
288
|
+
>
|
|
289
|
+
<span class="ant-btn-icon"
|
|
290
|
+
><svg
|
|
291
|
+
stroke="currentColor"
|
|
292
|
+
fill="currentColor"
|
|
293
|
+
stroke-width="0"
|
|
294
|
+
viewBox="0 0 24 24"
|
|
295
|
+
height="22px"
|
|
296
|
+
width="22px"
|
|
297
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
298
|
+
style="color: rgb(136, 136, 136)"
|
|
299
|
+
>
|
|
300
|
+
<path fill="none" d="M0 0h24v24H0V0z"></path>
|
|
301
|
+
<path d="M9 18h12v-2H9v2zM3 6v2h18V6H3zm6 7h12v-2H9v2z"></path></svg
|
|
302
|
+
></span>
|
|
303
|
+
<div class="flex-grow truncate">Products</div>
|
|
304
|
+
<div class="ml-5 mr-0 flex items-center">
|
|
305
|
+
<svg
|
|
306
|
+
stroke="currentColor"
|
|
307
|
+
fill="currentColor"
|
|
308
|
+
stroke-width="0"
|
|
309
|
+
viewBox="0 0 24 24"
|
|
310
|
+
height="22px"
|
|
311
|
+
width="22px"
|
|
312
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
313
|
+
style="color: rgb(136, 136, 136)"
|
|
314
|
+
>
|
|
315
|
+
<path fill="none" d="M0 0h24v24H0z"></path>
|
|
316
|
+
<path
|
|
317
|
+
d="M12 5.83 15.17 9l1.41-1.41L12 3 7.41 7.59 8.83 9 12 5.83zm0 12.34L8.83 15l-1.41 1.41L12 21l4.59-4.59L15.17 15 12 18.17z"
|
|
318
|
+
></path>
|
|
319
|
+
</svg>
|
|
320
|
+
</div>
|
|
321
|
+
</button>
|
|
322
|
+
</div>
|
|
323
|
+
<div
|
|
324
|
+
class="flex items-center px-3 gap-2 border border-solid border-[#d9d9d9] rounded-md shadow-popBorder undefined"
|
|
325
|
+
>
|
|
326
|
+
<div role="button" class="cursor-pointer hover:text-link">Available in stock</div>
|
|
327
|
+
<button
|
|
328
|
+
type="button"
|
|
329
|
+
role="switch"
|
|
330
|
+
aria-checked="false"
|
|
331
|
+
class="ant-switch css-dev-only-do-not-override-13cgf7g"
|
|
332
|
+
>
|
|
333
|
+
<div class="ant-switch-handle"></div>
|
|
334
|
+
<span class="ant-switch-inner"
|
|
335
|
+
><span class="ant-switch-inner-checked"></span
|
|
336
|
+
><span class="ant-switch-inner-unchecked"></span
|
|
337
|
+
></span>
|
|
338
|
+
</button>
|
|
339
|
+
</div>
|
|
340
|
+
</div>
|
|
341
|
+
<div class="flex gap-2">
|
|
342
|
+
<button
|
|
343
|
+
aria-describedby=":r9:"
|
|
344
|
+
type="button"
|
|
345
|
+
class="ant-btn css-dev-only-do-not-override-13cgf7g ant-btn-default ant-btn-color-default ant-btn-variant-outlined flex items-center flex-grow lg:flex-grow-0 sm:p-2 md:p-3 w-[170px]"
|
|
346
|
+
>
|
|
347
|
+
<span class="ant-btn-icon"
|
|
348
|
+
><svg
|
|
349
|
+
stroke="currentColor"
|
|
350
|
+
fill="currentColor"
|
|
351
|
+
stroke-width="0"
|
|
352
|
+
viewBox="0 0 24 24"
|
|
353
|
+
height="20"
|
|
354
|
+
width="20"
|
|
355
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
356
|
+
style="color: rgb(136, 136, 136)"
|
|
357
|
+
>
|
|
358
|
+
<path fill="none" d="M0 0h24v24H0z"></path>
|
|
359
|
+
<path
|
|
360
|
+
d="M12 5.83 15.17 9l1.41-1.41L12 3 7.41 7.59 8.83 9 12 5.83zm0 12.34L8.83 15l-1.41 1.41L12 21l4.59-4.59L15.17 15 12 18.17z"
|
|
361
|
+
></path></svg
|
|
362
|
+
></span>
|
|
363
|
+
<div class="truncate text-left lg:text-left flex-grow">Sort</div>
|
|
364
|
+
<div class="sm:w-[40px] lg:w-[0px]"></div></button
|
|
365
|
+
><button
|
|
366
|
+
type="button"
|
|
367
|
+
class="ant-btn css-dev-only-do-not-override-13cgf7g ant-btn-primary ant-btn-color-primary ant-btn-variant-solid flex items-center flex-grow lg:flex-grow-0 sm:p-2 md:p-[10px] w-[170px]"
|
|
368
|
+
>
|
|
369
|
+
<span class="ant-btn-icon"
|
|
370
|
+
><svg
|
|
371
|
+
stroke="currentColor"
|
|
372
|
+
fill="currentColor"
|
|
373
|
+
stroke-width="0"
|
|
374
|
+
viewBox="0 0 24 24"
|
|
375
|
+
color="#fff"
|
|
376
|
+
height="22px"
|
|
377
|
+
width="22px"
|
|
378
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
379
|
+
style="color: rgb(255, 255, 255)"
|
|
380
|
+
>
|
|
381
|
+
<path fill="none" d="M0 0h24v24H0z"></path>
|
|
382
|
+
<path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"></path></svg></span
|
|
383
|
+
><span>All filters</span>
|
|
384
|
+
</button>
|
|
385
|
+
</div>
|
|
386
|
+
</div>
|
|
387
|
+
<div class="flex items-center overflow-hidden gap-3" style="height: 0px; margin-top: 0px">
|
|
388
|
+
<div class="flex-grow overflow-x-auto overflow-y-hidden">
|
|
389
|
+
<div class="flex items-center"></div>
|
|
390
|
+
</div>
|
|
391
|
+
</div>
|
|
392
|
+
</div>
|
|
393
|
+
</div>
|
|
394
|
+
</div>
|
|
395
|
+
<div class="py-[4px] px-2 relative w-full bg-white" style="z-index: 30"></div>
|
|
396
|
+
<div
|
|
397
|
+
class="substrate bg-black transition-all fixed w-full left-0 h-screen z-10 top-0 z-20 pointer-events-none"
|
|
398
|
+
style="opacity: 0; visibility: hidden"
|
|
399
|
+
></div>
|
|
400
|
+
</section>
|
|
401
|
+
<div class="min-h-[calc(100vh-440px)] px-4">
|
|
402
|
+
<div class="text-center m-8 mt-14">
|
|
403
|
+
<h1 class="text-center mb-3">Product catalog</h1>
|
|
404
|
+
<a href="/products"
|
|
405
|
+
><button
|
|
406
|
+
type="button"
|
|
407
|
+
class="ant-btn css-dev-only-do-not-override-13cgf7g ant-btn-default ant-btn-color-default ant-btn-variant-outlined"
|
|
408
|
+
>
|
|
409
|
+
<span>Show all products</span>
|
|
410
|
+
</button></a
|
|
411
|
+
>
|
|
412
|
+
</div>
|
|
413
|
+
<section aria-label="catalog" class="min-h-[50vh]">
|
|
414
|
+
<div class="grid grid-cols-1 xl:grid-cols-2 xl2:grid-cols-3 gap-3">
|
|
415
|
+
<loopwrapper
|
|
416
|
+
>ArrayDataKey=0#/Api/Catalog/GetCatalog@|
|
|
417
|
+
<div
|
|
418
|
+
class="p-3 border border-gray-200 border-solid rounded-lg flex flex-col gap-3 cursor-pointer hover:shadow-md shadow-primary"
|
|
419
|
+
tabindex="0"
|
|
420
|
+
>
|
|
421
|
+
<div class="flex gap-3 items-center">
|
|
422
|
+
<img
|
|
423
|
+
class="rounded-md"
|
|
424
|
+
src="{{0#/Api/Catalog/GetCatalog@/[ITEM=0]/preview}}"
|
|
425
|
+
width="64"
|
|
426
|
+
height="64"
|
|
427
|
+
alt="{{0#/Api/Catalog/GetCatalog@/[ITEM=0]/title}}"
|
|
428
|
+
/>
|
|
429
|
+
<div class="flex-grow">
|
|
430
|
+
<h2 class="max-w-[200px] md:max-w-[310px] my-0 font-semibold truncate">
|
|
431
|
+
{{0#/Api/Catalog/GetCatalog@/[ITEM=0]/title}}
|
|
432
|
+
</h2>
|
|
433
|
+
<a href="/products/{{0#/Api/Catalog/GetCatalog@/[ITEM=0]/url}}"
|
|
434
|
+
><span class="text-black">Series</span></a
|
|
435
|
+
>
|
|
436
|
+
</div>
|
|
437
|
+
<button
|
|
438
|
+
type="button"
|
|
439
|
+
class="ant-btn css-dev-only-do-not-override-13cgf7g ant-btn-default ant-btn-color-default ant-btn-variant-outlined rounded-full w-10 p-0 py-2"
|
|
440
|
+
>
|
|
441
|
+
<svg
|
|
442
|
+
stroke="currentColor"
|
|
443
|
+
fill="currentColor"
|
|
444
|
+
stroke-width="0"
|
|
445
|
+
viewBox="0 0 24 24"
|
|
446
|
+
height="22"
|
|
447
|
+
width="22"
|
|
448
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
449
|
+
style="color: rgb(136, 136, 136)"
|
|
450
|
+
>
|
|
451
|
+
<path fill="none" d="M0 0h24v24H0z"></path>
|
|
452
|
+
<path d="m12 4-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z"></path>
|
|
453
|
+
</svg>
|
|
454
|
+
</button>
|
|
455
|
+
</div>
|
|
456
|
+
<div class="grid grid-cols-1 md:grid-cols-2 gap-3">
|
|
457
|
+
<loopwrapper
|
|
458
|
+
>ArrayDataKey=0#/Api/Catalog/GetCatalog@/[ITEM=0]/children|
|
|
459
|
+
<div>
|
|
460
|
+
<a
|
|
461
|
+
class="flex gap-2 text-gray-800"
|
|
462
|
+
href="/products/{{0#/Api/Catalog/GetCatalog@/[ITEM=0]/children/[ITEM=0]/url}}"
|
|
463
|
+
>{{0#/Api/Catalog/GetCatalog@/[ITEM=0]/children/[ITEM=0]/title}}
|
|
464
|
+
<div>
|
|
465
|
+
<svg
|
|
466
|
+
stroke="currentColor"
|
|
467
|
+
fill="currentColor"
|
|
468
|
+
stroke-width="0"
|
|
469
|
+
viewBox="0 0 24 24"
|
|
470
|
+
height="24"
|
|
471
|
+
width="24"
|
|
472
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
473
|
+
style="color: rgb(136, 136, 136)"
|
|
474
|
+
>
|
|
475
|
+
<path fill="none" d="M0 0h24v24H0V0z"></path>
|
|
476
|
+
<path
|
|
477
|
+
d="M8.59 16.59 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"
|
|
478
|
+
></path>
|
|
479
|
+
</svg></div
|
|
480
|
+
></a></div
|
|
481
|
+
></loopwrapper>
|
|
482
|
+
</div></div
|
|
483
|
+
></loopwrapper>
|
|
484
|
+
</div>
|
|
485
|
+
</section>
|
|
486
|
+
</div>
|
|
487
|
+
<footer aria-label="footer" class="px-4">
|
|
488
|
+
<div class="py-5 border-0 border-gray-200 border-solid border-t-[1px] mt-5">
|
|
489
|
+
<div class="flex flex-col gap-5">
|
|
490
|
+
<section
|
|
491
|
+
aria-label="links"
|
|
492
|
+
class="sm:flex sm:flex-col lg:grid lg:grid-cols-2 xl:grid-cols-6 gap-5 text-gray-500"
|
|
493
|
+
>
|
|
494
|
+
<div class="col-span-3 flex flex-col gap-7 pr-5">
|
|
495
|
+
<div class="w-[288px]">
|
|
496
|
+
<a class="flex-grow xl:flex-grow-0 ms-2" href="/"
|
|
497
|
+
><div class="md:w-[149px] xl:w-[270px]">
|
|
498
|
+
<img src="/images/public/logo.svg" alt="FLD LOGO" width="90" height="30" /></div
|
|
499
|
+
></a>
|
|
500
|
+
</div>
|
|
501
|
+
<p class="text-balance">
|
|
502
|
+
«FLD» is a manufacturer and exclusive distributor of products
|
|
503
|
+
<br />A-Flow, Hy-Lok, Drastar and HiFlux in Russia and the CIS.
|
|
504
|
+
</p>
|
|
505
|
+
<address>
|
|
506
|
+
<p>
|
|
507
|
+
<span>Наш офис и склад находится по адресу 107023, </span>г. Москва, вн. тер. г.
|
|
508
|
+
муниципальный округ Соколиная Гора, пер. Семёновский, д. 15
|
|
509
|
+
</p>
|
|
510
|
+
<p>Telephone: +7 (495) 984-41-06</p>
|
|
511
|
+
<p>Email: mail@fld.ru</p>
|
|
512
|
+
</address>
|
|
513
|
+
</div>
|
|
514
|
+
<div></div>
|
|
515
|
+
<div class="flex flex-col gap-[12px] mt-16">
|
|
516
|
+
<b class="text-gray-800 mb-4">Popular sections</b
|
|
517
|
+
><a class="flex gap-1" href="/products/fitingi">Fittings</a
|
|
518
|
+
><a class="flex gap-1" href="/products/sredstva_izmereniya_urovnya"
|
|
519
|
+
>Level measurement tools</a
|
|
520
|
+
><a class="flex gap-1" href="/products/filtry">Filters</a
|
|
521
|
+
><a class="flex gap-1" href="/products/klapany">Valves</a>
|
|
522
|
+
</div>
|
|
523
|
+
</section>
|
|
524
|
+
<hr class="w-full border-0 border-gray-200 border-solid border-t-[1px]" />
|
|
525
|
+
<section
|
|
526
|
+
aria-label="copyright"
|
|
527
|
+
class="flex gap-4 justify-between text-gray-400 items-center flex-col lg:flex-row"
|
|
528
|
+
>
|
|
529
|
+
<div>© ИП Слободов ОГРНИП 320774600055229 - Все права защищены 2025</div>
|
|
530
|
+
<button
|
|
531
|
+
type="button"
|
|
532
|
+
class="ant-btn css-dev-only-do-not-override-13cgf7g ant-btn-default ant-btn-color-default ant-btn-variant-outlined gap-1 items-center"
|
|
533
|
+
>
|
|
534
|
+
<span class="ant-btn-icon"
|
|
535
|
+
><img class="mr-2 border" src="/images/public/lang/icons/eng.svg" /></span
|
|
536
|
+
><span>Eng</span>
|
|
537
|
+
</button>
|
|
538
|
+
</section>
|
|
539
|
+
</div>
|
|
540
|
+
</div>
|
|
541
|
+
</footer>
|
|
542
|
+
</div>
|
|
543
|
+
</div>
|