@codesinger0/shared-components 1.1.85 → 1.1.86

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.
Files changed (49) hide show
  1. package/package.json +1 -1
  2. package/dist/components 2/AccessibilityMenu.jsx +0 -474
  3. package/dist/components 2/AdvantagesList.jsx +0 -89
  4. package/dist/components 2/ArticlesList.jsx +0 -269
  5. package/dist/components 2/DualTextCard.jsx +0 -73
  6. package/dist/components 2/FloatingWhatsAppButton.jsx +0 -180
  7. package/dist/components 2/FullscreenCarousel.jsx +0 -292
  8. package/dist/components 2/Hero.jsx +0 -198
  9. package/dist/components 2/IconGrid.jsx +0 -144
  10. package/dist/components 2/IntroSection.jsx +0 -74
  11. package/dist/components 2/LargeItemCard.jsx +0 -267
  12. package/dist/components 2/MasonryItemCard.jsx +0 -247
  13. package/dist/components 2/Menu.d.ts +0 -26
  14. package/dist/components 2/Menu.jsx +0 -268
  15. package/dist/components 2/MyOrdersDisplay.jsx +0 -311
  16. package/dist/components 2/QAAccordion.jsx +0 -212
  17. package/dist/components 2/SmallItemCard.jsx +0 -152
  18. package/dist/components 2/SmallItemsGrid.jsx +0 -313
  19. package/dist/components 2/TextListCards.jsx +0 -107
  20. package/dist/components 2/ToastProvider.jsx +0 -38
  21. package/dist/components 2/UnderConstruction.jsx +0 -76
  22. package/dist/components 2/VideoCard.jsx +0 -88
  23. package/dist/components 2/cart/CartItem.jsx +0 -101
  24. package/dist/components 2/cart/FloatingCartButton.jsx +0 -49
  25. package/dist/components 2/cart/OrderForm.jsx +0 -960
  26. package/dist/components 2/cart/ShoppingCartModal.jsx +0 -229
  27. package/dist/components 2/clubMembership/ClubMembershipModal.jsx +0 -289
  28. package/dist/components 2/clubMembership/ClubPromoModal.jsx +0 -108
  29. package/dist/components 2/elements/CTAButton.jsx +0 -17
  30. package/dist/components 2/elements/FixedWidthHeroVideo.jsx +0 -92
  31. package/dist/components 2/elements/ImageLightbox.jsx +0 -112
  32. package/dist/components 2/elements/RoundButton.jsx +0 -44
  33. package/dist/components 2/elements/SmallButton.jsx +0 -35
  34. package/dist/components 2/elements/Toast.jsx +0 -37
  35. package/dist/components 2/elements/VideoLightbox.jsx +0 -76
  36. package/dist/components 2/modals/ItemDetailsModal.jsx +0 -192
  37. package/dist/components 2/products/CategoryList.jsx +0 -24
  38. package/dist/components 2/products/PriceRangeSlider.jsx +0 -162
  39. package/dist/components 2/products/ProductsDisplay.jsx +0 -40
  40. package/dist/components 2/products/ProductsSidebar.jsx +0 -46
  41. package/dist/components 2/products/SubcategorySection.jsx +0 -37
  42. package/dist/context 2/CartContext.jsx +0 -165
  43. package/dist/context 2/ItemModalContext.jsx +0 -40
  44. package/dist/hooks 2/useScrollLock.js +0 -52
  45. package/dist/index 2.js +0 -45
  46. package/dist/integrations 2/emailService.js +0 -167
  47. package/dist/styles 2/shared-components.css +0 -29
  48. package/dist/utils 2/ScrollManager.jsx +0 -85
  49. package/dist/utils 2/ScrollToTop.jsx +0 -14
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codesinger0/shared-components",
3
- "version": "1.1.85",
3
+ "version": "1.1.86",
4
4
  "description": "Shared React components for customer projects",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -1,474 +0,0 @@
1
- import React, { useState, useEffect } from 'react';
2
- import { motion, AnimatePresence } from 'framer-motion';
3
- import {
4
- Accessibility,
5
- ZoomIn,
6
- ZoomOut,
7
- Sun,
8
- Moon,
9
- Type,
10
- Eye,
11
- X
12
- } from 'lucide-react';
13
-
14
- const AccessibilityMenu = ({
15
- position = 'bottom-left', // 'bottom-left' or 'bottom-right'
16
- bottomOffset = '1.5rem',
17
- sideOffset = '1.5rem',
18
- size = 'large', // 'small', 'medium', 'large'
19
- className = '',
20
- onSettingChange = null, // callback when settings change
21
- ...props
22
- }) => {
23
- const [isOpen, setIsOpen] = useState(false);
24
- const [settings, setSettings] = useState({
25
- fontSize: 100,
26
- contrast: 'normal',
27
- darkMode: false,
28
- underlineLinks: false,
29
- largerCursor: false
30
- });
31
-
32
- // Size configurations
33
- const sizeClasses = {
34
- small: 'w-12 h-12',
35
- medium: 'w-14 h-14',
36
- large: 'w-16 h-16'
37
- };
38
-
39
- const iconSizes = {
40
- small: 20,
41
- medium: 24,
42
- large: 28
43
- };
44
-
45
- // Position styles for button
46
- const positionStyles = {
47
- 'bottom-left': {
48
- bottom: bottomOffset,
49
- left: sideOffset,
50
- right: 'auto'
51
- },
52
- 'bottom-right': {
53
- bottom: bottomOffset,
54
- right: sideOffset,
55
- left: 'auto'
56
- }
57
- };
58
-
59
- // Menu position styles
60
- const menuPositionStyles = {
61
- 'bottom-left': {
62
- bottom: `calc(${bottomOffset} + ${sizeClasses[size] === 'w-12 h-12' ? '4rem' : sizeClasses[size] === 'w-14 h-14' ? '4.5rem' : '5rem'})`,
63
- left: sideOffset,
64
- right: 'auto'
65
- },
66
- 'bottom-right': {
67
- bottom: `calc(${bottomOffset} + ${sizeClasses[size] === 'w-12 h-12' ? '4rem' : sizeClasses[size] === 'w-14 h-14' ? '4.5rem' : '5rem'})`,
68
- right: sideOffset,
69
- left: 'auto'
70
- }
71
- };
72
-
73
- useEffect(() => {
74
- // Apply font size
75
- document.documentElement.style.fontSize = `${settings.fontSize}%`;
76
-
77
- // Apply contrast
78
- if (settings.contrast === 'high') {
79
- document.documentElement.style.filter = 'contrast(1.5)';
80
- } else {
81
- document.documentElement.style.filter = 'none';
82
- }
83
-
84
- // Apply dark mode
85
- if (settings.darkMode) {
86
- document.documentElement.classList.add('dark-mode-accessibility');
87
- } else {
88
- document.documentElement.classList.remove('dark-mode-accessibility');
89
- }
90
-
91
- // Apply link underline
92
- if (settings.underlineLinks) {
93
- document.documentElement.classList.add('underline-links');
94
- } else {
95
- document.documentElement.classList.remove('underline-links');
96
- }
97
-
98
- // Apply larger cursor
99
- if (settings.largerCursor) {
100
- document.documentElement.classList.add('large-cursor');
101
- } else {
102
- document.documentElement.classList.remove('large-cursor');
103
- }
104
-
105
- // Callback
106
- if (onSettingChange) {
107
- onSettingChange(settings);
108
- }
109
- }, [settings, onSettingChange]);
110
-
111
- const increaseFontSize = () => {
112
- setSettings(prev => ({
113
- ...prev,
114
- fontSize: Math.min(prev.fontSize + 10, 150)
115
- }));
116
- };
117
-
118
- const decreaseFontSize = () => {
119
- setSettings(prev => ({
120
- ...prev,
121
- fontSize: Math.max(prev.fontSize - 10, 80)
122
- }));
123
- };
124
-
125
- const resetSettings = () => {
126
- setSettings({
127
- fontSize: 100,
128
- contrast: 'normal',
129
- darkMode: false,
130
- underlineLinks: false,
131
- largerCursor: false
132
- });
133
- };
134
-
135
- const toggleContrast = () => {
136
- setSettings(prev => ({
137
- ...prev,
138
- contrast: prev.contrast === 'normal' ? 'high' : 'normal'
139
- }));
140
- };
141
-
142
- const toggleDarkMode = () => {
143
- setSettings(prev => ({
144
- ...prev,
145
- darkMode: !prev.darkMode
146
- }));
147
- };
148
-
149
- const toggleUnderlineLinks = () => {
150
- setSettings(prev => ({
151
- ...prev,
152
- underlineLinks: !prev.underlineLinks
153
- }));
154
- };
155
-
156
- const toggleLargerCursor = () => {
157
- setSettings(prev => ({
158
- ...prev,
159
- largerCursor: !prev.largerCursor
160
- }));
161
- };
162
-
163
- return (
164
- <>
165
- {/* Main Button */}
166
- <motion.button
167
- onClick={() => setIsOpen(!isOpen)}
168
- className={`fixed z-50 bg-blue-600 hover:bg-blue-700 text-white rounded-full shadow-lg hover:shadow-xl transition-all duration-300 flex items-center justify-center ${sizeClasses[size]} ${className}`}
169
- style={positionStyles[position]}
170
- initial={{ scale: 0, opacity: 0 }}
171
- animate={{ scale: 1, opacity: 1 }}
172
- whileHover={{ scale: 1.1 }}
173
- whileTap={{ scale: 0.9 }}
174
- transition={{
175
- type: "spring",
176
- stiffness: 300,
177
- damping: 25
178
- }}
179
- aria-label="תפריט נגישות"
180
- {...props}
181
- >
182
- <Accessibility size={iconSizes[size]} />
183
- </motion.button>
184
-
185
- {/* Menu Panel */}
186
- <AnimatePresence>
187
- {isOpen && (
188
- <>
189
- {/* Backdrop */}
190
- <motion.div
191
- initial={{ opacity: 0 }}
192
- animate={{ opacity: 1 }}
193
- exit={{ opacity: 0 }}
194
- className="fixed inset-0 bg-black bg-opacity-20 z-40"
195
- onClick={() => setIsOpen(false)}
196
- />
197
-
198
- {/* Menu */}
199
- <motion.div
200
- initial={{ opacity: 0, scale: 0.8, y: 20 }}
201
- animate={{ opacity: 1, scale: 1, y: 0 }}
202
- exit={{ opacity: 0, scale: 0.8, y: 20 }}
203
- transition={{
204
- type: "spring",
205
- stiffness: 300,
206
- damping: 25
207
- }}
208
- className="fixed z-50 bg-white rounded-lg shadow-2xl p-6 w-80"
209
- style={menuPositionStyles[position]}
210
- dir="rtl"
211
- >
212
- {/* Header */}
213
- <div className="flex justify-between items-center mb-4 pb-3 border-b">
214
- <h3 className="text-lg font-bold text-gray-800">נגישות</h3>
215
- <button
216
- onClick={() => setIsOpen(false)}
217
- className="text-gray-500 hover:text-gray-700 p-1 rounded-full hover:bg-gray-100"
218
- aria-label="סגור"
219
- >
220
- <X size={20} />
221
- </button>
222
- </div>
223
-
224
- {/* Settings */}
225
- <div className="space-y-4">
226
- {/* Font Size */}
227
- <div className="flex items-center justify-between">
228
- <span className="text-sm font-medium text-gray-700 flex items-center gap-2">
229
- <Type size={18} />
230
- גודל טקסט
231
- </span>
232
- <div className="flex gap-2">
233
- <button
234
- onClick={decreaseFontSize}
235
- className="p-2 bg-gray-100 hover:bg-gray-200 rounded-lg transition-colors"
236
- aria-label="הקטן טקסט"
237
- disabled={settings.fontSize <= 80}
238
- >
239
- <ZoomOut size={16} />
240
- </button>
241
- <span className="px-3 py-2 bg-gray-50 rounded-lg text-sm font-medium min-w-[3rem] text-center">
242
- {settings.fontSize}%
243
- </span>
244
- <button
245
- onClick={increaseFontSize}
246
- className="p-2 bg-gray-100 hover:bg-gray-200 rounded-lg transition-colors"
247
- aria-label="הגדל טקסט"
248
- disabled={settings.fontSize >= 150}
249
- >
250
- <ZoomIn size={16} />
251
- </button>
252
- </div>
253
- </div>
254
-
255
- {/* Contrast */}
256
- <button
257
- onClick={toggleContrast}
258
- className={`w-full flex items-center justify-between p-3 rounded-lg transition-colors ${
259
- settings.contrast === 'high'
260
- ? 'bg-blue-50 border-2 border-blue-500'
261
- : 'bg-gray-50 hover:bg-gray-100'
262
- }`}
263
- >
264
- <span className="text-sm font-medium text-gray-700 flex items-center gap-2">
265
- <Eye size={18} />
266
- ניגודיות גבוהה
267
- </span>
268
- <div className={`w-10 h-6 rounded-full transition-colors ${
269
- settings.contrast === 'high' ? 'bg-blue-500' : 'bg-gray-300'
270
- } relative`}>
271
- <div className={`absolute w-4 h-4 bg-white rounded-full top-1 transition-all ${
272
- settings.contrast === 'high' ? 'right-1' : 'right-5'
273
- }`} />
274
- </div>
275
- </button>
276
-
277
- {/* Dark Mode */}
278
- <button
279
- onClick={toggleDarkMode}
280
- className={`w-full flex items-center justify-between p-3 rounded-lg transition-colors ${
281
- settings.darkMode
282
- ? 'bg-blue-50 border-2 border-blue-500'
283
- : 'bg-gray-50 hover:bg-gray-100'
284
- }`}
285
- >
286
- <span className="text-sm font-medium text-gray-700 flex items-center gap-2">
287
- {settings.darkMode ? <Moon size={18} /> : <Sun size={18} />}
288
- מצב כהה
289
- </span>
290
- <div className={`w-10 h-6 rounded-full transition-colors ${
291
- settings.darkMode ? 'bg-blue-500' : 'bg-gray-300'
292
- } relative`}>
293
- <div className={`absolute w-4 h-4 bg-white rounded-full top-1 transition-all ${
294
- settings.darkMode ? 'right-1' : 'right-5'
295
- }`} />
296
- </div>
297
- </button>
298
-
299
- {/* Underline Links */}
300
- <button
301
- onClick={toggleUnderlineLinks}
302
- className={`w-full flex items-center justify-between p-3 rounded-lg transition-colors ${
303
- settings.underlineLinks
304
- ? 'bg-blue-50 border-2 border-blue-500'
305
- : 'bg-gray-50 hover:bg-gray-100'
306
- }`}
307
- >
308
- <span className="text-sm font-medium text-gray-700">
309
- הדגש קישורים
310
- </span>
311
- <div className={`w-10 h-6 rounded-full transition-colors ${
312
- settings.underlineLinks ? 'bg-blue-500' : 'bg-gray-300'
313
- } relative`}>
314
- <div className={`absolute w-4 h-4 bg-white rounded-full top-1 transition-all ${
315
- settings.underlineLinks ? 'right-1' : 'right-5'
316
- }`} />
317
- </div>
318
- </button>
319
-
320
- {/* Larger Cursor */}
321
- <button
322
- onClick={toggleLargerCursor}
323
- className={`w-full flex items-center justify-between p-3 rounded-lg transition-colors ${
324
- settings.largerCursor
325
- ? 'bg-blue-50 border-2 border-blue-500'
326
- : 'bg-gray-50 hover:bg-gray-100'
327
- }`}
328
- >
329
- <span className="text-sm font-medium text-gray-700">
330
- סמן גדול
331
- </span>
332
- <div className={`w-10 h-6 rounded-full transition-colors ${
333
- settings.largerCursor ? 'bg-blue-500' : 'bg-gray-300'
334
- } relative`}>
335
- <div className={`absolute w-4 h-4 bg-white rounded-full top-1 transition-all ${
336
- settings.largerCursor ? 'right-1' : 'right-5'
337
- }`} />
338
- </div>
339
- </button>
340
-
341
- {/* Reset Button */}
342
- <button
343
- onClick={resetSettings}
344
- className="w-full mt-4 p-3 bg-gray-200 hover:bg-gray-300 text-gray-800 font-medium rounded-lg transition-colors"
345
- >
346
- איפוס הגדרות
347
- </button>
348
- </div>
349
- </motion.div>
350
- </>
351
- )}
352
- </AnimatePresence>
353
-
354
- {/* Global Styles */}
355
- <style jsx global>{`
356
- .dark-mode-accessibility {
357
- filter: invert(1) hue-rotate(180deg);
358
- }
359
-
360
- .dark-mode-accessibility img,
361
- .dark-mode-accessibility video,
362
- .dark-mode-accessibility [style*="background-image"] {
363
- filter: invert(1) hue-rotate(180deg);
364
- }
365
-
366
- .underline-links a {
367
- text-decoration: underline !important;
368
- }
369
-
370
- .large-cursor,
371
- .large-cursor * {
372
- cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path d="M8 4 L8 24 L14 18 L18 28 L22 26 L18 16 L26 16 Z" fill="black" stroke="white" stroke-width="1"/></svg>') 0 0, auto !important;
373
- }
374
-
375
- .large-cursor button,
376
- .large-cursor a {
377
- cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><path d="M16 4 L12 12 L4 12 L4 16 L12 16 L16 24 L20 24 L20 16 L28 16 L28 12 L20 12 L20 4 Z" fill="black" stroke="white" stroke-width="1"/></svg>') 16 16, pointer !important;
378
- }
379
- `}</style>
380
- </>
381
- );
382
- };
383
-
384
- // Demo
385
- const Demo = () => {
386
- const handleSettingChange = (settings) => {
387
- console.log('Settings changed:', settings);
388
- };
389
-
390
- return (
391
- <div className="min-h-screen bg-gradient-to-br from-purple-50 to-blue-100 p-8" dir="rtl">
392
- <div className="max-w-4xl mx-auto">
393
- <h1 className="text-4xl font-bold text-gray-800 mb-6 text-center">
394
- Accessibility Menu Demo
395
- </h1>
396
-
397
- <div className="bg-white rounded-xl shadow-lg p-8 mb-8">
398
- <h2 className="text-2xl font-semibold mb-4">תכונות:</h2>
399
- <ul className="space-y-2 text-gray-700">
400
- <li>✅ מיקום גמיש (שמאל/ימין למטה)</li>
401
- <li>✅ שליטה מלאה על המרחקים מהקצוות</li>
402
- <li>✅ 3 גדלים: small, medium, large</li>
403
- <li>✅ שינוי גודל טקסט (80% - 150%)</li>
404
- <li>✅ ניגודיות גבוהה</li>
405
- <li>✅ מצב כהה</li>
406
- <li>✅ הדגשת קישורים</li>
407
- <li>✅ סמן עכבר גדול</li>
408
- <li>✅ Callback לשינויי הגדרות</li>
409
- </ul>
410
- </div>
411
-
412
- <div className="bg-white rounded-xl shadow-lg p-8 mb-8">
413
- <h2 className="text-2xl font-semibold mb-4">דוגמאות שימוש:</h2>
414
-
415
- <div className="space-y-4 text-sm bg-gray-50 p-4 rounded-lg font-mono text-left" dir="ltr">
416
- <div className="bg-white p-3 rounded border">
417
- <div className="text-gray-500 mb-2">// Bottom Left (default)</div>
418
- <code className="text-blue-600">
419
- {`<AccessibilityMenu
420
- position="bottom-left"
421
- bottomOffset="1.5rem"
422
- sideOffset="1.5rem"
423
- />`}
424
- </code>
425
- </div>
426
-
427
- <div className="bg-white p-3 rounded border">
428
- <div className="text-gray-500 mb-2">// Bottom Right with callback</div>
429
- <code className="text-blue-600">
430
- {`<AccessibilityMenu
431
- position="bottom-right"
432
- size="medium"
433
- onSettingChange={(settings) => {
434
- console.log('Settings:', settings);
435
- }}
436
- />`}
437
- </code>
438
- </div>
439
- </div>
440
- </div>
441
-
442
- <div className="bg-white rounded-xl shadow-lg p-8">
443
- <h2 className="text-2xl font-semibold mb-4">טקסט לדוגמה</h2>
444
- <p className="mb-4">
445
- זהו טקסט לדוגמה שיושפע מהגדרות הנגישות. נסה לשנות את גודל הטקסט, הניגודיות והמצב הכהה כדי לראות את ההשפעה.
446
- </p>
447
- <a href="#" className="text-blue-600 hover:underline">זהו קישור לדוגמה</a>
448
- <div className="mt-4 h-96 flex items-center justify-center text-gray-400">
449
- <p>גלול למטה כדי לראות את תפריט הנגישות 👇</p>
450
- </div>
451
- </div>
452
- </div>
453
-
454
- {/* Demo Menus */}
455
- <AccessibilityMenu
456
- position="bottom-left"
457
- bottomOffset="1.5rem"
458
- sideOffset="1.5rem"
459
- size="large"
460
- onSettingChange={handleSettingChange}
461
- />
462
-
463
- <AccessibilityMenu
464
- position="bottom-right"
465
- bottomOffset="1.5rem"
466
- sideOffset="1.5rem"
467
- size="medium"
468
- onSettingChange={handleSettingChange}
469
- />
470
- </div>
471
- );
472
- };
473
-
474
- export default AccessibilityMenu;
@@ -1,89 +0,0 @@
1
- const AdvantagesList = ({
2
- points = [],
3
- title,
4
- subtitle,
5
- className = '',
6
- classNames = {},
7
- ...props
8
- }) => {
9
- const {
10
- title: titleClass = 'main-title',
11
- subtitle: subtitleClass = 'main-subtitle',
12
- content: contentClass = 'content-text'
13
- } = classNames;
14
-
15
- if (!points || points.length === 0) {
16
- return (
17
- <section className={`py-16 px-4 ${className}`} {...props} dir="rtl">
18
- <div className="max-w-6xl mx-auto text-center">
19
- {title && <h2 className={titleClass + " mb-4"}>{title}</h2>}
20
- {subtitle && <h3 className={subtitleClass + " mb-8 whitespace-pre-line"}>{subtitle}</h3>}
21
- <p className={contentClass}>אין נקודות להצגה</p>
22
- </div>
23
- </section>
24
- );
25
- }
26
-
27
- return (
28
- <section className={`py-16 px-4 bg-main ${className}`} {...props} dir="rtl">
29
- <div className="max-w-6xl mx-auto">
30
- {/* Header */}
31
- {(title || subtitle) && (
32
- <div className="text-center mb-12">
33
- {title && <h2 className={titleClass + " mb-4"}>{title}</h2>}
34
- {subtitle && <h3 className={subtitleClass}>{subtitle}</h3>}
35
- </div>
36
- )}
37
-
38
- {/* Points Grid */}
39
- <div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
40
- {points.map((point, index) => (
41
- <div key={index} className="glass-card p-6 hover:scale-105 transition-transform duration-200">
42
- {/* Desktop Layout - Horizontal */}
43
- <div className="hidden lg:flex items-start gap-4">
44
- <div className="flex-shrink-0 w-12 h-12 rounded-full flex items-center justify-center text-primary">
45
- <point.icon size={24} />
46
- </div>
47
- <div className="flex-1">
48
- <span className='content-text leading-relaxed font-semibold'>{point.bold}</span>
49
- <p className="content-text leading-relaxed" style={{ whiteSpace: 'pre-line' }}>{point.text}</p>
50
- {point.subs && point.subs.length > 0 && (
51
- <ul className="mt-3 space-y-2 list-disc list-inside">
52
- {point.subs.map((sub, subIndex) => (
53
- <li key={subIndex} className="subtitle leading-relaxed text-base">
54
- {sub}
55
- </li>
56
- ))}
57
- </ul>
58
- )}
59
- </div>
60
- </div>
61
-
62
- {/* Mobile Layout - Vertical */}
63
- <div className="lg:hidden text-center space-y-2">
64
- <div className="flex justify-center">
65
- <div className="w-14 h-10 rounded-full flex items-center justify-center text-primary">
66
- <point.icon size={26} />
67
- </div>
68
- </div>
69
- <span className='content-text leading-relaxed font-semibold'>{point.bold}</span>
70
- <p className="content-text leading-relaxed" style={{ whiteSpace: 'pre-line' }}>{point.text}</p>
71
- {point.subs && point.subs.length > 0 && (
72
- <ul className="mt-3 space-y-2 list-disc list-inside text-right">
73
- {point.subs.map((sub, subIndex) => (
74
- <li key={subIndex} className="subtitle leading-relaxed text-sm">
75
- {sub}
76
- </li>
77
- ))}
78
- </ul>
79
- )}
80
- </div>
81
- </div>
82
- ))}
83
- </div>
84
- </div>
85
- </section>
86
- );
87
- };
88
-
89
- export default AdvantagesList;