webs-sdk 0.19.64 → 0.19.65

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 (100) hide show
  1. package/AGENTS.md +44 -0
  2. package/CLAUDE.md +80 -0
  3. package/README.md +513 -490
  4. package/dist/components/ARFilters/ARFilters.js +54 -54
  5. package/dist/components/ArtGenerator.js +141 -141
  6. package/dist/components/AvatarAI.js +14 -14
  7. package/dist/components/CookieConsent/constants.js +31 -31
  8. package/dist/components/CreativeFaceSwap.js +23 -23
  9. package/dist/components/GifsIa.js +76 -76
  10. package/dist/components/MemeGenerator.js +12 -12
  11. package/dist/components/PasswordReset/constants.js +33 -33
  12. package/dist/components/RecoveryPassword/constants.js +27 -27
  13. package/dist/components/SpinningWheel/SpinningWheel.js +7 -7
  14. package/dist/components/SpinningWheel/index.d.ts +1 -1
  15. package/dist/components/SpinningWheel/index.d.ts.map +1 -1
  16. package/dist/components/SpinningWheel/index.js +2 -1
  17. package/dist/components/SpinningWheel/index.js.map +1 -1
  18. package/dist/components/ui/ConfiguredMediaPlayer.d.ts +49 -0
  19. package/dist/components/ui/ConfiguredMediaPlayer.d.ts.map +1 -0
  20. package/dist/components/ui/ConfiguredMediaPlayer.js +111 -0
  21. package/dist/components/ui/ConfiguredMediaPlayer.js.map +1 -0
  22. package/dist/components/ui/badge.d.ts +1 -0
  23. package/dist/components/ui/badge.d.ts.map +1 -1
  24. package/dist/components/ui/badge.js +1 -1
  25. package/dist/components/ui/badge.js.map +1 -1
  26. package/dist/components/ui/compose-refs.d.ts +6 -0
  27. package/dist/components/ui/compose-refs.d.ts.map +1 -0
  28. package/dist/components/ui/compose-refs.js +57 -0
  29. package/dist/components/ui/compose-refs.js.map +1 -0
  30. package/dist/components/ui/dropdown-menu.d.ts +3 -1
  31. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  32. package/dist/components/ui/dropdown-menu.js +2 -2
  33. package/dist/components/ui/dropdown-menu.js.map +1 -1
  34. package/dist/components/ui/index.d.ts +2 -0
  35. package/dist/components/ui/index.d.ts.map +1 -1
  36. package/dist/components/ui/index.js +2 -0
  37. package/dist/components/ui/index.js.map +1 -1
  38. package/dist/components/ui/media-player.d.ts +127 -0
  39. package/dist/components/ui/media-player.d.ts.map +1 -0
  40. package/dist/components/ui/media-player.js +1633 -0
  41. package/dist/components/ui/media-player.js.map +1 -0
  42. package/dist/components/ui/tooltip.d.ts +3 -1
  43. package/dist/components/ui/tooltip.d.ts.map +1 -1
  44. package/dist/components/ui/tooltip.js +2 -2
  45. package/dist/components/ui/tooltip.js.map +1 -1
  46. package/dist/components/ui/use-lazy-ref.d.ts +4 -0
  47. package/dist/components/ui/use-lazy-ref.d.ts.map +1 -0
  48. package/dist/components/ui/use-lazy-ref.js +45 -0
  49. package/dist/components/ui/use-lazy-ref.js.map +1 -0
  50. package/dist/index.d.ts +1 -1
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +4 -3
  53. package/dist/index.js.map +1 -1
  54. package/dist/network.d.ts +12 -0
  55. package/dist/network.d.ts.map +1 -0
  56. package/dist/network.js +15 -0
  57. package/dist/network.js.map +1 -0
  58. package/dist/server.d.ts +54 -0
  59. package/dist/server.d.ts.map +1 -0
  60. package/dist/server.js +74 -0
  61. package/dist/server.js.map +1 -0
  62. package/dist/types/media-chrome-store-types.d.ts +107 -0
  63. package/dist/types/media-chrome-store-types.d.ts.map +1 -0
  64. package/dist/types/media-chrome-store-types.js +3 -0
  65. package/dist/types/media-chrome-store-types.js.map +1 -0
  66. package/dist/utils/QRCode.d.ts +1 -0
  67. package/dist/utils/QRCode.d.ts.map +1 -0
  68. package/dist/utils/QRCode.js +2 -0
  69. package/dist/utils/QRCode.js.map +1 -0
  70. package/dist/utils/imageValidation.d.ts +6 -0
  71. package/dist/utils/imageValidation.d.ts.map +1 -0
  72. package/dist/utils/imageValidation.js +64 -0
  73. package/dist/utils/imageValidation.js.map +1 -0
  74. package/docs/CONFIGURED_MEDIA_PLAYER.md +40 -0
  75. package/docs/CORP_AUTH_USAGE.md +687 -0
  76. package/docs/EXAMPLES_WALLPAPERSNAME_IMPLEMENTATION.md +1445 -0
  77. package/docs/EXAMPLE_ENDPOINTS_COMUNICATION.md +55 -0
  78. package/docs/EXTERNAL_SDK_GUIDE.md +1340 -0
  79. package/docs/FOR_YOU_360_FACESWAP_FIX.md +400 -0
  80. package/docs/FOR_YOU_IMPLEMENTATION_GUIDE.md +1413 -0
  81. package/docs/FOR_YOU_QUIZ_ARCHITECTURE.md +753 -0
  82. package/docs/FOR_YOU_SDK_WALLPAPERSNAME_BUG.md +106 -0
  83. package/docs/FOR_YOU_WALLPAPERSNAME_ENHANCEMENT_PLAN.md +210 -0
  84. package/docs/LEGAL_USAGE.md +190 -0
  85. package/docs/STREAK_IMPLEMENTATION_GUIDE.md +430 -0
  86. package/package.json +106 -84
  87. package/public/spin2win/assets/border-afristream.svg +26 -26
  88. package/public/spin2win/assets/border-efc.svg +23 -23
  89. package/public/spin2win/assets/border-streetreel.svg +23 -23
  90. package/public/spin2win/assets/border-totalgym.svg +27 -27
  91. package/public/spin2win/assets/border-womantoday.svg +26 -26
  92. package/public/spin2win/assets/indicator-afristream.svg +28 -28
  93. package/public/spin2win/assets/indicator-efc.svg +29 -29
  94. package/public/spin2win/assets/indicator-streetreel.svg +29 -29
  95. package/public/spin2win/assets/indicator-totalgym.svg +29 -29
  96. package/public/spin2win/fonts/switzer/README.md +22 -22
  97. package/scripts/install-agent-skill.cjs +34 -0
  98. package/skills/webs-sdk-package/SKILL.md +11 -0
  99. package/skills/webs-sdk-package/references/components.md +30 -0
  100. package/skills/webs-sdk-package/references/integration.md +32 -0
@@ -5,78 +5,78 @@ exports.GifsIaForYouCard = GifsIaForYouCard;
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  const react_1 = require("react");
7
7
  const forYouFetch_1 = require("./for-you/api/forYouFetch");
8
- const GIFSÍA_CSS = `
9
- .gifsía-layout {
10
- display: grid;
11
- grid-template-columns: 1fr;
12
- gap: 12px;
13
- }
14
- @media (min-width: 768px) {
15
- .gifsía-layout {
16
- grid-template-columns: 1fr 1fr;
17
- gap: 20px;
18
- }
19
- }
20
- .gifsía-checker {
21
- background-image: linear-gradient(45deg, #3a3a4a 25%, transparent 25%),
22
- linear-gradient(-45deg, #3a3a4a 25%, transparent 25%),
23
- linear-gradient(45deg, transparent 75%, #3a3a4a 75%),
24
- linear-gradient(-45deg, transparent 75%, #3a3a4a 75%);
25
- background-size: 20px 20px;
26
- background-position: 0 0, 0 10px, 10px -10px, -10px 0px;
27
- background-color: #2a2a3a;
28
- }
29
- .gifsía-gallery-scroll {
30
- display: flex;
31
- gap: 12px;
32
- overflow-x: auto;
33
- scroll-snap-type: x mandatory;
34
- -webkit-overflow-scrolling: touch;
35
- scrollbar-width: none;
36
- -ms-overflow-style: none;
37
- }
38
- .gifsía-gallery-scroll::-webkit-scrollbar {
39
- display: none;
40
- }
41
- .gifsía-gallery-item {
42
- scroll-snap-align: start;
43
- flex: 0 0 280px;
44
- min-width: 280px;
45
- }
46
- @media (max-width: 768px) {
47
- .gifsía-gallery-item {
48
- flex: 0 0 240px;
49
- min-width: 240px;
50
- }
51
- }
52
- @keyframes gifsía-scan {
53
- 0% { top: 0%; }
54
- 100% { top: 100%; }
55
- }
56
- @keyframes gifsía-spin {
57
- from { transform: rotate(0deg); }
58
- to { transform: rotate(360deg); }
59
- }
60
- .gifsía-scan-line {
61
- position: absolute;
62
- left: 0;
63
- width: 100%;
64
- height: 3px;
65
- background: linear-gradient(90deg, transparent, #6C63FF, transparent);
66
- animation: gifsía-scan 1.8s linear infinite;
67
- z-index: 10;
68
- box-shadow: 0 0 8px 2px rgba(108, 99, 255, 0.6);
69
- }
70
- .gifsía-action-buttons {
71
- display: flex;
72
- flex-direction: column;
73
- gap: 10px;
74
- }
75
- @media (min-width: 768px) {
76
- .gifsía-action-buttons {
77
- flex-direction: row;
78
- }
79
- }
8
+ const GIFSÍA_CSS = `
9
+ .gifsía-layout {
10
+ display: grid;
11
+ grid-template-columns: 1fr;
12
+ gap: 12px;
13
+ }
14
+ @media (min-width: 768px) {
15
+ .gifsía-layout {
16
+ grid-template-columns: 1fr 1fr;
17
+ gap: 20px;
18
+ }
19
+ }
20
+ .gifsía-checker {
21
+ background-image: linear-gradient(45deg, #3a3a4a 25%, transparent 25%),
22
+ linear-gradient(-45deg, #3a3a4a 25%, transparent 25%),
23
+ linear-gradient(45deg, transparent 75%, #3a3a4a 75%),
24
+ linear-gradient(-45deg, transparent 75%, #3a3a4a 75%);
25
+ background-size: 20px 20px;
26
+ background-position: 0 0, 0 10px, 10px -10px, -10px 0px;
27
+ background-color: #2a2a3a;
28
+ }
29
+ .gifsía-gallery-scroll {
30
+ display: flex;
31
+ gap: 12px;
32
+ overflow-x: auto;
33
+ scroll-snap-type: x mandatory;
34
+ -webkit-overflow-scrolling: touch;
35
+ scrollbar-width: none;
36
+ -ms-overflow-style: none;
37
+ }
38
+ .gifsía-gallery-scroll::-webkit-scrollbar {
39
+ display: none;
40
+ }
41
+ .gifsía-gallery-item {
42
+ scroll-snap-align: start;
43
+ flex: 0 0 280px;
44
+ min-width: 280px;
45
+ }
46
+ @media (max-width: 768px) {
47
+ .gifsía-gallery-item {
48
+ flex: 0 0 240px;
49
+ min-width: 240px;
50
+ }
51
+ }
52
+ @keyframes gifsía-scan {
53
+ 0% { top: 0%; }
54
+ 100% { top: 100%; }
55
+ }
56
+ @keyframes gifsía-spin {
57
+ from { transform: rotate(0deg); }
58
+ to { transform: rotate(360deg); }
59
+ }
60
+ .gifsía-scan-line {
61
+ position: absolute;
62
+ left: 0;
63
+ width: 100%;
64
+ height: 3px;
65
+ background: linear-gradient(90deg, transparent, #6C63FF, transparent);
66
+ animation: gifsía-scan 1.8s linear infinite;
67
+ z-index: 10;
68
+ box-shadow: 0 0 8px 2px rgba(108, 99, 255, 0.6);
69
+ }
70
+ .gifsía-action-buttons {
71
+ display: flex;
72
+ flex-direction: column;
73
+ gap: 10px;
74
+ }
75
+ @media (min-width: 768px) {
76
+ .gifsía-action-buttons {
77
+ flex-direction: row;
78
+ }
79
+ }
80
80
  `;
81
81
  const defaultTheme = {
82
82
  primaryColor: '#6C63FF',
@@ -487,10 +487,10 @@ function GifsIa({ config, galleryItems: galleryProp, theme = {}, texts = {}, ima
487
487
  processFile(file);
488
488
  };
489
489
  const handleDragOver = (e) => e.preventDefault();
490
- return ((0, jsx_runtime_1.jsxs)("div", { style: { backgroundColor: th.backgroundColor, padding: '24px', borderRadius: '12px' }, children: [(0, jsx_runtime_1.jsx)("style", { children: `
491
- @keyframes gifsía-scan { 0% { top: 0%; } 100% { top: 100%; } }
492
- @keyframes gifsía-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
493
- .gifsía-scan-line { position: absolute; left: 0; width: 100%; height: 3px; background: linear-gradient(90deg, transparent, ${th.primaryColor}, transparent); animation: gifsía-scan 1.8s linear infinite; z-index: 10; box-shadow: 0 0 8px 2px ${th.primaryColor}80; }
490
+ return ((0, jsx_runtime_1.jsxs)("div", { style: { backgroundColor: th.backgroundColor, padding: '24px', borderRadius: '12px' }, children: [(0, jsx_runtime_1.jsx)("style", { children: `
491
+ @keyframes gifsía-scan { 0% { top: 0%; } 100% { top: 100%; } }
492
+ @keyframes gifsía-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
493
+ .gifsía-scan-line { position: absolute; left: 0; width: 100%; height: 3px; background: linear-gradient(90deg, transparent, ${th.primaryColor}, transparent); animation: gifsía-scan 1.8s linear infinite; z-index: 10; box-shadow: 0 0 8px 2px ${th.primaryColor}80; }
494
494
  ` }), (0, jsx_runtime_1.jsx)("input", { ref: fileInputRef, type: "file", accept: config.acceptedFormats || 'image/*', onChange: handleFileChange, style: { display: 'none' } }), (0, jsx_runtime_1.jsxs)("div", { style: { marginBottom: '24px' }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'center', gap: '8px', marginBottom: '12px' }, children: [(0, jsx_runtime_1.jsx)(GifBadge, { color: th.primaryColor }), (0, jsx_runtime_1.jsx)("h3", { style: { margin: 0, fontSize: '18px', fontWeight: 700, color: th.textColor }, children: t.galleryTitle })] }), loadingGallery ? ((0, jsx_runtime_1.jsx)("p", { style: { color: th.textSecondaryColor, fontSize: '14px' }, children: t.loadingGalleryText })) : gallery.length > 0 ? ((0, jsx_runtime_1.jsxs)("div", { style: { position: 'relative' }, children: [(0, jsx_runtime_1.jsx)("button", { onClick: () => { if (galleryScrollRef.current)
495
495
  galleryScrollRef.current.scrollBy({ left: -300, behavior: 'smooth' }); }, style: {
496
496
  position: 'absolute', left: '4px', top: '50%', transform: 'translateY(-50%)',
@@ -32,18 +32,18 @@ const defaultTexts = {
32
32
  noMemes: 'No memes available',
33
33
  };
34
34
  const TEXT_SHADOW = '2px 2px 0 #000, -2px -2px 0 #000, 2px -2px 0 #000, -2px 2px 0 #000';
35
- const MEME_CSS = `
36
- .memegen-grid {
37
- display: grid;
38
- grid-template-columns: 1fr;
39
- gap: 24px;
40
- align-items: stretch;
41
- }
42
- @media (min-width: 1024px) {
43
- .memegen-grid {
44
- grid-template-columns: 1fr 1fr;
45
- }
46
- }
35
+ const MEME_CSS = `
36
+ .memegen-grid {
37
+ display: grid;
38
+ grid-template-columns: 1fr;
39
+ gap: 24px;
40
+ align-items: stretch;
41
+ }
42
+ @media (min-width: 1024px) {
43
+ .memegen-grid {
44
+ grid-template-columns: 1fr 1fr;
45
+ }
46
+ }
47
47
  `;
48
48
  function MemeGenerator({ memes: memesProp, config, fonts = defaultFonts, defaultMemeIndex = 0, theme = {}, texts = {}, imageProxyUrl, onDownload, }) {
49
49
  const mergedTheme = Object.assign(Object.assign({}, defaultTheme), theme);
@@ -23,38 +23,38 @@ exports.DEFAULT_PASSWORD_RULES = {
23
23
  requireNumber: true,
24
24
  requireSpecialChar: false,
25
25
  };
26
- exports.PASSWORD_RESET_CSS = `
27
- .pr-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:24px 16px;box-sizing:border-box}
28
- .pr-logo-wrap{margin-bottom:24px;text-align:center}
29
- .pr-logo{display:block;max-width:200px;max-height:60px;width:auto;height:auto;object-fit:contain;margin:0 auto}
30
- .pr-card{width:100%;max-width:var(--pr-card-max-width,400px);padding:32px 24px;border-radius:16px;box-sizing:border-box}
31
- .pr-title{font-size:32px;font-weight:600;text-align:center;margin:0;line-height:1.2}
32
- .pr-subtitle{font-size:20px;text-align:center;margin:24px 0 0 0;line-height:1.4;font-weight:400;opacity:0.8}
33
- .pr-field{margin-bottom:16px}
34
- .pr-label{display:block;font-size:20px;font-weight:500;margin-bottom:12px}
35
- .pr-input-wrap{position:relative;display:flex;align-items:center}
36
- .pr-input-icon{position:absolute;left:14px;width:20px;height:20px;flex-shrink:0;pointer-events:none;display:flex;align-items:center;justify-content:center}
37
- .pr-input-icon svg{width:20px;height:20px;display:block}
38
- .pr-input{width:100%;padding:14px 44px;border-radius:999px;border:1.5px solid;font-size:16px;outline:none;transition:border-color .18s,opacity .18s;box-sizing:border-box;font-family:inherit;line-height:1.4}
39
- .pr-input::placeholder{color:var(--pr-ph,rgba(255,255,255,0.35))}
40
- .pr-input:disabled{opacity:.6;cursor:not-allowed}
41
- .pr-input-eye{position:absolute;right:14px;background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:opacity .18s;line-height:0}
42
- .pr-input-eye:hover{opacity:.7}
43
- .pr-input-eye svg{width:20px;height:20px;display:block}
44
- .pr-btn{width:100%;padding:16px 24px;border-radius:999px;border:none;font-size:18px;font-weight:700;cursor:pointer;transition:opacity .18s,transform .1s;margin-top:12px;font-family:inherit;display:flex;align-items:center;justify-content:center;gap:8px;line-height:1}
45
- .pr-btn:hover:not(:disabled){opacity:.85}
46
- .pr-btn:active:not(:disabled){transform:scale(.98)}
47
- .pr-btn:disabled{cursor:not-allowed;opacity:.5}
48
- .pr-spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:pr-spin .65s linear infinite;flex-shrink:0}
49
- @keyframes pr-spin{to{transform:rotate(360deg)}}
50
- .pr-error-msg{font-size:15px;text-align:center;margin:16px 0 0 0;line-height:1.5}
51
- .pr-success{text-align:center;padding:8px 0}
52
- .pr-success-icon{font-size:52px;margin-bottom:24px;line-height:1}
53
- .pr-success-text{font-size:18px;line-height:1.65;margin:0}
54
- .pr-rules{margin:14px 0 4px 6px;display:flex;flex-direction:column;gap:10px}
55
- .pr-rule{display:flex;align-items:center;gap:10px;font-size:15px;line-height:1.3;transition:color .2s}
56
- .pr-rule-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;transition:background-color .2s}
57
- @media(min-width:768px){.pr-card{max-width:var(--pr-card-max-width,448px);padding:32px}.pr-subtitle{margin:32px 0 0 0}.pr-field{margin-bottom:20px}}
58
- @media(min-width:1024px){.pr-card{max-width:var(--pr-card-max-width,512px);padding:40px}.pr-subtitle{margin:40px 0 0 0}.pr-field{margin-bottom:24px}}
26
+ exports.PASSWORD_RESET_CSS = `
27
+ .pr-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:24px 16px;box-sizing:border-box}
28
+ .pr-logo-wrap{margin-bottom:24px;text-align:center}
29
+ .pr-logo{display:block;max-width:200px;max-height:60px;width:auto;height:auto;object-fit:contain;margin:0 auto}
30
+ .pr-card{width:100%;max-width:var(--pr-card-max-width,400px);padding:32px 24px;border-radius:16px;box-sizing:border-box}
31
+ .pr-title{font-size:32px;font-weight:600;text-align:center;margin:0;line-height:1.2}
32
+ .pr-subtitle{font-size:20px;text-align:center;margin:24px 0 0 0;line-height:1.4;font-weight:400;opacity:0.8}
33
+ .pr-field{margin-bottom:16px}
34
+ .pr-label{display:block;font-size:20px;font-weight:500;margin-bottom:12px}
35
+ .pr-input-wrap{position:relative;display:flex;align-items:center}
36
+ .pr-input-icon{position:absolute;left:14px;width:20px;height:20px;flex-shrink:0;pointer-events:none;display:flex;align-items:center;justify-content:center}
37
+ .pr-input-icon svg{width:20px;height:20px;display:block}
38
+ .pr-input{width:100%;padding:14px 44px;border-radius:999px;border:1.5px solid;font-size:16px;outline:none;transition:border-color .18s,opacity .18s;box-sizing:border-box;font-family:inherit;line-height:1.4}
39
+ .pr-input::placeholder{color:var(--pr-ph,rgba(255,255,255,0.35))}
40
+ .pr-input:disabled{opacity:.6;cursor:not-allowed}
41
+ .pr-input-eye{position:absolute;right:14px;background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:opacity .18s;line-height:0}
42
+ .pr-input-eye:hover{opacity:.7}
43
+ .pr-input-eye svg{width:20px;height:20px;display:block}
44
+ .pr-btn{width:100%;padding:16px 24px;border-radius:999px;border:none;font-size:18px;font-weight:700;cursor:pointer;transition:opacity .18s,transform .1s;margin-top:12px;font-family:inherit;display:flex;align-items:center;justify-content:center;gap:8px;line-height:1}
45
+ .pr-btn:hover:not(:disabled){opacity:.85}
46
+ .pr-btn:active:not(:disabled){transform:scale(.98)}
47
+ .pr-btn:disabled{cursor:not-allowed;opacity:.5}
48
+ .pr-spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:pr-spin .65s linear infinite;flex-shrink:0}
49
+ @keyframes pr-spin{to{transform:rotate(360deg)}}
50
+ .pr-error-msg{font-size:15px;text-align:center;margin:16px 0 0 0;line-height:1.5}
51
+ .pr-success{text-align:center;padding:8px 0}
52
+ .pr-success-icon{font-size:52px;margin-bottom:24px;line-height:1}
53
+ .pr-success-text{font-size:18px;line-height:1.65;margin:0}
54
+ .pr-rules{margin:14px 0 4px 6px;display:flex;flex-direction:column;gap:10px}
55
+ .pr-rule{display:flex;align-items:center;gap:10px;font-size:15px;line-height:1.3;transition:color .2s}
56
+ .pr-rule-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;transition:background-color .2s}
57
+ @media(min-width:768px){.pr-card{max-width:var(--pr-card-max-width,448px);padding:32px}.pr-subtitle{margin:32px 0 0 0}.pr-field{margin-bottom:20px}}
58
+ @media(min-width:1024px){.pr-card{max-width:var(--pr-card-max-width,512px);padding:40px}.pr-subtitle{margin:40px 0 0 0}.pr-field{margin-bottom:24px}}
59
59
  `;
60
60
  //# sourceMappingURL=constants.js.map
@@ -24,32 +24,32 @@ exports.SENDPIN_ERROR_REASONS = [
24
24
  'ERROR_EN_ENVIO_SMS',
25
25
  'ERROR_EN_ENVIO_MAIL',
26
26
  ];
27
- exports.RECOVERY_CSS = `
28
- .rp-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:24px 16px;box-sizing:border-box}
29
- .rp-logo-wrap{margin-bottom:24px;text-align:center}
30
- .rp-logo{display:block;max-width:200px;max-height:60px;width:auto;height:auto;object-fit:contain;margin:0 auto}
31
- .rp-card{width:100%;max-width:var(--rp-card-max-width,448px);padding:32px 24px;border-radius:16px;box-sizing:border-box}
32
- .rp-title{font-size:24px;font-weight:600;text-align:center;margin:0 0 12px 0;line-height:1.3}
33
- .rp-subtitle{font-size:16px;text-align:center;margin:0 0 24px 0;line-height:1.6;font-weight:400;opacity:0.8}
34
- .rp-field{margin-bottom:16px}
35
- .rp-label{display:block;font-size:15px;font-weight:500;margin-bottom:8px}
36
- .rp-input-wrap{position:relative;display:flex;align-items:center}
37
- .rp-input-icon{position:absolute;left:14px;width:20px;height:20px;flex-shrink:0;pointer-events:none;display:flex;align-items:center;justify-content:center}
38
- .rp-input-icon svg{width:20px;height:20px;display:block}
39
- .rp-input{width:100%;padding:14px 44px;border-radius:999px;border:1.5px solid;font-size:16px;outline:none;transition:border-color .18s,opacity .18s;box-sizing:border-box;font-family:inherit;line-height:1.4}
40
- .rp-input::placeholder{color:var(--rp-ph,rgba(255,255,255,0.35))}
41
- .rp-input:disabled{opacity:.6;cursor:not-allowed}
42
- .rp-btn{width:100%;padding:14px 24px;border-radius:999px;border:none;font-size:16px;font-weight:700;cursor:pointer;transition:opacity .18s,transform .1s;margin-top:8px;font-family:inherit;display:flex;align-items:center;justify-content:center;gap:8px;line-height:1}
43
- .rp-btn:hover:not(:disabled){opacity:.85}
44
- .rp-btn:active:not(:disabled){transform:scale(.98)}
45
- .rp-btn:disabled{cursor:not-allowed;opacity:.5}
46
- .rp-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:rp-spin .65s linear infinite;flex-shrink:0}
47
- @keyframes rp-spin{to{transform:rotate(360deg)}}
48
- .rp-error-msg{font-size:14px;text-align:center;margin:12px 0 0 0;line-height:1.5}
49
- .rp-success{text-align:center;padding:8px 0}
50
- .rp-success-icon{font-size:48px;margin-bottom:20px;line-height:1}
51
- .rp-success-text{font-size:17px;line-height:1.65;margin:0}
52
- @media(min-width:768px){.rp-card{max-width:var(--rp-card-max-width,448px);padding:32px}}
53
- @media(min-width:1024px){.rp-card{max-width:var(--rp-card-max-width,512px);padding:40px}}
27
+ exports.RECOVERY_CSS = `
28
+ .rp-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:24px 16px;box-sizing:border-box}
29
+ .rp-logo-wrap{margin-bottom:24px;text-align:center}
30
+ .rp-logo{display:block;max-width:200px;max-height:60px;width:auto;height:auto;object-fit:contain;margin:0 auto}
31
+ .rp-card{width:100%;max-width:var(--rp-card-max-width,448px);padding:32px 24px;border-radius:16px;box-sizing:border-box}
32
+ .rp-title{font-size:24px;font-weight:600;text-align:center;margin:0 0 12px 0;line-height:1.3}
33
+ .rp-subtitle{font-size:16px;text-align:center;margin:0 0 24px 0;line-height:1.6;font-weight:400;opacity:0.8}
34
+ .rp-field{margin-bottom:16px}
35
+ .rp-label{display:block;font-size:15px;font-weight:500;margin-bottom:8px}
36
+ .rp-input-wrap{position:relative;display:flex;align-items:center}
37
+ .rp-input-icon{position:absolute;left:14px;width:20px;height:20px;flex-shrink:0;pointer-events:none;display:flex;align-items:center;justify-content:center}
38
+ .rp-input-icon svg{width:20px;height:20px;display:block}
39
+ .rp-input{width:100%;padding:14px 44px;border-radius:999px;border:1.5px solid;font-size:16px;outline:none;transition:border-color .18s,opacity .18s;box-sizing:border-box;font-family:inherit;line-height:1.4}
40
+ .rp-input::placeholder{color:var(--rp-ph,rgba(255,255,255,0.35))}
41
+ .rp-input:disabled{opacity:.6;cursor:not-allowed}
42
+ .rp-btn{width:100%;padding:14px 24px;border-radius:999px;border:none;font-size:16px;font-weight:700;cursor:pointer;transition:opacity .18s,transform .1s;margin-top:8px;font-family:inherit;display:flex;align-items:center;justify-content:center;gap:8px;line-height:1}
43
+ .rp-btn:hover:not(:disabled){opacity:.85}
44
+ .rp-btn:active:not(:disabled){transform:scale(.98)}
45
+ .rp-btn:disabled{cursor:not-allowed;opacity:.5}
46
+ .rp-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:rp-spin .65s linear infinite;flex-shrink:0}
47
+ @keyframes rp-spin{to{transform:rotate(360deg)}}
48
+ .rp-error-msg{font-size:14px;text-align:center;margin:12px 0 0 0;line-height:1.5}
49
+ .rp-success{text-align:center;padding:8px 0}
50
+ .rp-success-icon{font-size:48px;margin-bottom:20px;line-height:1}
51
+ .rp-success-text{font-size:17px;line-height:1.65;margin:0}
52
+ @media(min-width:768px){.rp-card{max-width:var(--rp-card-max-width,448px);padding:32px}}
53
+ @media(min-width:1024px){.rp-card{max-width:var(--rp-card-max-width,512px);padding:40px}}
54
54
  `;
55
55
  //# sourceMappingURL=constants.js.map
@@ -232,13 +232,13 @@ function SpinningWheel({ config: configProp, onResult, onError, canSpin = true,
232
232
  }
233
233
  };
234
234
  const backgroundAsset = currentTheme.backgroundAsset;
235
- return ((0, jsx_runtime_1.jsxs)("div", { style: { position: 'relative', display: 'flex', flexDirection: 'column', alignItems: 'center', gap: '32px', padding: '32px', minHeight: '100vh', overflow: 'hidden' }, children: [backgroundAsset && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("style", { children: `
236
- .sw-bg-desktop { display: block; }
237
- .sw-bg-mobile { display: none; }
238
- @media (max-width: 767px) {
239
- .sw-bg-desktop { display: none; }
240
- .sw-bg-mobile { display: block; }
241
- }
235
+ return ((0, jsx_runtime_1.jsxs)("div", { style: { position: 'relative', display: 'flex', flexDirection: 'column', alignItems: 'center', gap: '32px', padding: '32px', minHeight: '100vh', overflow: 'hidden' }, children: [backgroundAsset && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("style", { children: `
236
+ .sw-bg-desktop { display: block; }
237
+ .sw-bg-mobile { display: none; }
238
+ @media (max-width: 767px) {
239
+ .sw-bg-desktop { display: none; }
240
+ .sw-bg-mobile { display: block; }
241
+ }
242
242
  ` }), (0, jsx_runtime_1.jsx)("img", { src: backgroundAsset.desktop, alt: "", className: "sw-bg-desktop", style: {
243
243
  position: 'absolute',
244
244
  top: 0,
@@ -1,6 +1,6 @@
1
1
  export { SpinningWheel, SpinningWheel as default } from './SpinningWheel';
2
2
  export type { SpinningWheelProps, WheelSegment, SpinToWinConfig, WheelTheme, ThemeName } from './types';
3
- export { wheelThemes, vodacomConfig, totalGymConfig, womanTodayConfig, afristreamConfig } from './config';
3
+ export { wheelThemes, vodacomConfig, totalGymConfig, womanTodayConfig, afristreamConfig, efcConfig } from './config';
4
4
  export { SpinningWheelAPI, createSpinningWheelAPI } from './api';
5
5
  export type { SpinAPIConfig } from './api';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SpinningWheel/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,aAAa,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1E,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,UAAU,EACV,SAAS,EACV,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,WAAW,EACX,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,OAAO,CAAC;AACf,YAAY,EACV,aAAa,EACd,MAAM,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SpinningWheel/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,aAAa,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1E,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,UAAU,EACV,SAAS,EACV,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,WAAW,EACX,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACV,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,OAAO,CAAC;AACf,YAAY,EACV,aAAa,EACd,MAAM,OAAO,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createSpinningWheelAPI = exports.SpinningWheelAPI = exports.afristreamConfig = exports.womanTodayConfig = exports.totalGymConfig = exports.vodacomConfig = exports.wheelThemes = exports.default = exports.SpinningWheel = void 0;
3
+ exports.createSpinningWheelAPI = exports.SpinningWheelAPI = exports.efcConfig = exports.afristreamConfig = exports.womanTodayConfig = exports.totalGymConfig = exports.vodacomConfig = exports.wheelThemes = exports.default = exports.SpinningWheel = void 0;
4
4
  var SpinningWheel_1 = require("./SpinningWheel");
5
5
  Object.defineProperty(exports, "SpinningWheel", { enumerable: true, get: function () { return SpinningWheel_1.SpinningWheel; } });
6
6
  Object.defineProperty(exports, "default", { enumerable: true, get: function () { return SpinningWheel_1.SpinningWheel; } });
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "vodacomConfig", { enumerable: true, get: functio
10
10
  Object.defineProperty(exports, "totalGymConfig", { enumerable: true, get: function () { return config_1.totalGymConfig; } });
11
11
  Object.defineProperty(exports, "womanTodayConfig", { enumerable: true, get: function () { return config_1.womanTodayConfig; } });
12
12
  Object.defineProperty(exports, "afristreamConfig", { enumerable: true, get: function () { return config_1.afristreamConfig; } });
13
+ Object.defineProperty(exports, "efcConfig", { enumerable: true, get: function () { return config_1.efcConfig; } });
13
14
  var api_1 = require("./api");
14
15
  Object.defineProperty(exports, "SpinningWheelAPI", { enumerable: true, get: function () { return api_1.SpinningWheelAPI; } });
15
16
  Object.defineProperty(exports, "createSpinningWheelAPI", { enumerable: true, get: function () { return api_1.createSpinningWheelAPI; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/SpinningWheel/index.ts"],"names":[],"mappings":";;;AAKA,iDAA0E;AAAjE,8GAAA,aAAa,OAAA;AAAE,wGAAA,aAAa,OAAW;AAYhD,mCAMkB;AALhB,qGAAA,WAAW,OAAA;AACX,uGAAA,aAAa,OAAA;AACb,wGAAA,cAAc,OAAA;AACd,0GAAA,gBAAgB,OAAA;AAChB,0GAAA,gBAAgB,OAAA;AAIlB,6BAGe;AAFb,uGAAA,gBAAgB,OAAA;AAChB,6GAAA,sBAAsB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/SpinningWheel/index.ts"],"names":[],"mappings":";;;AAKA,iDAA0E;AAAjE,8GAAA,aAAa,OAAA;AAAE,wGAAA,aAAa,OAAW;AAYhD,mCAOkB;AANhB,qGAAA,WAAW,OAAA;AACX,uGAAA,aAAa,OAAA;AACb,wGAAA,cAAc,OAAA;AACd,0GAAA,gBAAgB,OAAA;AAChB,0GAAA,gBAAgB,OAAA;AAChB,mGAAA,SAAS,OAAA;AAIX,6BAGe;AAFb,uGAAA,gBAAgB,OAAA;AAChB,6GAAA,sBAAsB,OAAA"}
@@ -0,0 +1,49 @@
1
+ import * as React from "react";
2
+ import { type MediaPlayerProps } from "./media-player";
3
+ export interface MediaPlayerSource {
4
+ lang: string;
5
+ src: string;
6
+ }
7
+ export interface MediaPlayerTrack {
8
+ src: string;
9
+ srcLang: string;
10
+ label: string;
11
+ kind?: "subtitles" | "captions" | "descriptions" | "chapters" | "metadata";
12
+ default?: boolean;
13
+ }
14
+ export interface ConfiguredMediaPlayerControls {
15
+ play?: boolean;
16
+ seek?: boolean;
17
+ seekButtons?: boolean;
18
+ volume?: boolean;
19
+ time?: boolean;
20
+ speed?: boolean;
21
+ settings?: boolean;
22
+ captions?: boolean;
23
+ loop?: boolean;
24
+ pictureInPicture?: boolean;
25
+ fullscreen?: boolean;
26
+ download?: boolean;
27
+ loading?: boolean;
28
+ error?: boolean;
29
+ }
30
+ export interface ConfiguredMediaPlayerProps extends Omit<MediaPlayerProps, "children"> {
31
+ src: string;
32
+ mediaType?: "video" | "audio";
33
+ poster?: string;
34
+ autoPlay?: boolean;
35
+ preload?: "none" | "metadata" | "auto";
36
+ muted?: boolean;
37
+ loop?: boolean;
38
+ playsInline?: boolean;
39
+ tracks?: MediaPlayerTrack[];
40
+ sources?: MediaPlayerSource[];
41
+ defaultLanguage?: string;
42
+ onLanguageChange?: (language: string) => void;
43
+ controls?: ConfiguredMediaPlayerControls;
44
+ seekSeconds?: number;
45
+ playbackSpeeds?: number[];
46
+ mediaProps?: Omit<React.ComponentProps<"video">, "src" | "poster" | "children" | "autoPlay" | "preload" | "muted" | "loop" | "playsInline" | "ref">;
47
+ }
48
+ export declare function ConfiguredMediaPlayer({ src, mediaType, poster, autoPlay, preload, muted, loop, playsInline, tracks, sources, defaultLanguage, onLanguageChange, controls: controlsProp, seekSeconds, playbackSpeeds, mediaProps, label, autoHide, ...rootProps }: ConfiguredMediaPlayerProps): import("react/jsx-runtime").JSX.Element;
49
+ //# sourceMappingURL=ConfiguredMediaPlayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfiguredMediaPlayer.d.ts","sourceRoot":"","sources":["../../../src/components/ui/ConfiguredMediaPlayer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAqBL,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,UAAU,CAAC;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,6BAA6B;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC;IAEpF,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAE5B,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9C,QAAQ,CAAC,EAAE,6BAA6B,CAAC;IAEzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B,UAAU,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC,CAAC;CACrJ;AAmDD,wBAAgB,qBAAqB,CAAC,EACpC,GAAG,EACH,SAAmB,EACnB,MAAM,EACN,QAAgB,EAChB,OAAoB,EACpB,KAAa,EACb,IAAY,EACZ,WAAkB,EAClB,MAAM,EACN,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,QAAQ,EAAE,YAAY,EACtB,WAAgB,EAChB,cAAc,EACd,UAAU,EACV,KAAsB,EACtB,QAAe,EACf,GAAG,SAAS,EACb,EAAE,0BAA0B,2CAgD5B"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ "use client";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ var __rest = (this && this.__rest) || function (s, e) {
37
+ var t = {};
38
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
39
+ t[p] = s[p];
40
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
41
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
42
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
43
+ t[p[i]] = s[p[i]];
44
+ }
45
+ return t;
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.ConfiguredMediaPlayer = ConfiguredMediaPlayer;
49
+ const jsx_runtime_1 = require("react/jsx-runtime");
50
+ const React = __importStar(require("react"));
51
+ const media_player_1 = require("./media-player");
52
+ const DEFAULT_CONTROLS = {
53
+ play: true,
54
+ seek: true,
55
+ seekButtons: false,
56
+ volume: true,
57
+ time: true,
58
+ speed: false,
59
+ settings: true,
60
+ captions: false,
61
+ loop: false,
62
+ pictureInPicture: false,
63
+ fullscreen: true,
64
+ download: false,
65
+ loading: true,
66
+ error: true,
67
+ };
68
+ function useMediaSource(src, mediaType) {
69
+ const ref = React.useRef(null);
70
+ const isHls = mediaType === "video" && /\.m3u8(?:[?#]|$)/i.test(src);
71
+ React.useEffect(() => {
72
+ const element = ref.current;
73
+ if (!element || !isHls)
74
+ return;
75
+ if (element.canPlayType("application/vnd.apple.mpegurl")) {
76
+ element.src = src;
77
+ return;
78
+ }
79
+ let cancelled = false;
80
+ let instance;
81
+ Promise.resolve().then(() => __importStar(require("hls.js"))).then(({ default: HlsModule }) => {
82
+ if (cancelled || !HlsModule.isSupported())
83
+ return;
84
+ instance = new HlsModule();
85
+ instance.loadSource(src);
86
+ instance.attachMedia(element);
87
+ }).catch((error) => {
88
+ if (!cancelled)
89
+ console.warn("Unable to load HLS playback", error);
90
+ });
91
+ return () => {
92
+ cancelled = true;
93
+ instance === null || instance === void 0 ? void 0 : instance.destroy();
94
+ };
95
+ }, [src, isHls]);
96
+ return { ref, directSrc: isHls ? undefined : src };
97
+ }
98
+ function ConfiguredMediaPlayer(_a) {
99
+ var _b, _c, _d, _e;
100
+ var { src, mediaType = "video", poster, autoPlay = false, preload = "metadata", muted = false, loop = false, playsInline = true, tracks, sources, defaultLanguage, onLanguageChange, controls: controlsProp, seekSeconds = 10, playbackSpeeds, mediaProps, label = "Media player", autoHide = true } = _a, rootProps = __rest(_a, ["src", "mediaType", "poster", "autoPlay", "preload", "muted", "loop", "playsInline", "tracks", "sources", "defaultLanguage", "onLanguageChange", "controls", "seekSeconds", "playbackSpeeds", "mediaProps", "label", "autoHide"]);
101
+ const [language, setLanguage] = React.useState((_c = defaultLanguage !== null && defaultLanguage !== void 0 ? defaultLanguage : (_b = sources === null || sources === void 0 ? void 0 : sources[0]) === null || _b === void 0 ? void 0 : _b.lang) !== null && _c !== void 0 ? _c : "");
102
+ const activeSrc = (_e = (_d = sources === null || sources === void 0 ? void 0 : sources.find((source) => source.lang === language)) === null || _d === void 0 ? void 0 : _d.src) !== null && _e !== void 0 ? _e : src;
103
+ const controls = Object.assign(Object.assign({}, DEFAULT_CONTROLS), controlsProp);
104
+ const { ref, directSrc } = useMediaSource(activeSrc, mediaType);
105
+ const mediaAttributes = Object.assign(Object.assign({}, mediaProps), { src: directSrc, autoPlay, preload, muted, loop, playsInline });
106
+ return ((0, jsx_runtime_1.jsxs)(media_player_1.MediaPlayer, Object.assign({}, rootProps, { label: label, autoHide: autoHide, children: [mediaType === "video" ? ((0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerVideo, Object.assign({}, mediaAttributes, { ref: ref, poster: poster, children: tracks === null || tracks === void 0 ? void 0 : tracks.map((track) => (0, jsx_runtime_1.jsx)("track", Object.assign({}, track), `${track.src}:${track.srcLang}`)) }), `${mediaType}:${activeSrc}`)) : ((0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerAudio, Object.assign({}, mediaAttributes, { ref: ref }), `${mediaType}:${activeSrc}`)), controls.loading && (0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerLoading, {}), controls.error && (0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerError, {}), (0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerControlsOverlay, {}), (0, jsx_runtime_1.jsxs)(media_player_1.MediaPlayerControls, { children: [controls.play && (0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerPlay, { "aria-label": "Play or pause" }), controls.seekButtons && (0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerSeekBackward, { seconds: seekSeconds }), controls.seek && (0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerSeek, { className: "min-w-0 flex-1" }), controls.seekButtons && (0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerSeekForward, { seconds: seekSeconds }), controls.time && (0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerTime, {}), controls.volume && (0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerVolume, {}), sources && sources.length > 1 && ((0, jsx_runtime_1.jsx)("select", { "aria-label": "Media language", value: language, onChange: (event) => {
107
+ setLanguage(event.target.value);
108
+ onLanguageChange === null || onLanguageChange === void 0 ? void 0 : onLanguageChange(event.target.value);
109
+ }, className: "rounded bg-zinc-900 px-2 py-1 text-sm text-white", children: sources.map((source) => (0, jsx_runtime_1.jsx)("option", { value: source.lang, children: source.lang }, source.lang)) })), controls.settings ? (0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerSettings, { speeds: playbackSpeeds }) : controls.speed ? (0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerPlaybackSpeed, { speeds: playbackSpeeds }) : null, mediaType === "video" && controls.captions && (0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerCaptions, {}), controls.loop && (0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerLoop, {}), mediaType === "video" && controls.pictureInPicture && (0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerPiP, {}), mediaType === "video" && controls.fullscreen && (0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerFullscreen, {}), controls.download && (0, jsx_runtime_1.jsx)(media_player_1.MediaPlayerDownload, {})] })] })));
110
+ }
111
+ //# sourceMappingURL=ConfiguredMediaPlayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfiguredMediaPlayer.js","sourceRoot":"","sources":["../../../src/components/ui/ConfiguredMediaPlayer.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmIb,sDAoEC;;AArMD,6CAA+B;AAE/B,iDAsBwB;AAwDxB,MAAM,gBAAgB,GAA4C;IAChE,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,WAAW,EAAE,KAAK;IAClB,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE,KAAK;IACX,gBAAgB,EAAE,KAAK;IACvB,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,SAAS,cAAc,CAAC,GAAW,EAAE,SAA4B;IAC/D,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAsC,IAAI,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,SAAS,KAAK,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAErE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK;YAAE,OAAO;QAC/B,IAAI,OAAO,CAAC,WAAW,CAAC,+BAA+B,CAAC,EAAE,CAAC;YACzD,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,QAAyB,CAAC;QAC9B,kDAAO,QAAQ,IAAE,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;YAC/C,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;gBAAE,OAAO;YAClD,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;YAC3B,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACzB,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,CAAC,SAAS;gBAAE,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;YACjB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,EAAE,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAEjB,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrD,CAAC;AAGD,SAAgB,qBAAqB,CAAC,EAoBT;;QApBS,EACpC,GAAG,EACH,SAAS,GAAG,OAAO,EACnB,MAAM,EACN,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,UAAU,EACpB,KAAK,GAAG,KAAK,EACb,IAAI,GAAG,KAAK,EACZ,WAAW,GAAG,IAAI,EAClB,MAAM,EACN,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,QAAQ,EAAE,YAAY,EACtB,WAAW,GAAG,EAAE,EAChB,cAAc,EACd,UAAU,EACV,KAAK,GAAG,cAAc,EACtB,QAAQ,GAAG,IAAI,OAEY,EADxB,SAAS,cAnBwB,iOAoBrC,CADa;IAEZ,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAA,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,CAAC,CAAC,0CAAE,IAAI,mCAAI,EAAE,CAAC,CAAC;IAC5F,MAAM,SAAS,GAAG,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,0CAAE,GAAG,mCAAI,GAAG,CAAC;IAClF,MAAM,QAAQ,mCAAQ,gBAAgB,GAAK,YAAY,CAAE,CAAC;IAC1D,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAChE,MAAM,eAAe,mCAAQ,UAAU,KAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,GAAE,CAAC;IAEvG,OAAO,CACL,wBAAC,0BAAW,oBAAK,SAAS,IAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,aACzD,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,CACvB,uBAAC,+BAAgB,oBAAuC,eAAe,IAAE,GAAG,EAAE,GAAkC,EAAE,MAAM,EAAE,MAAM,YAC7H,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kDAAiD,KAAK,GAA1C,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAe,CAAC,KAD9D,GAAG,SAAS,IAAI,SAAS,EAAE,CAE/B,CACpB,CAAC,CAAC,CAAC,CACF,uBAAC,+BAAgB,oBAAuC,eAAe,IAAE,GAAG,EAAE,GAAkC,KAAzF,GAAG,SAAS,IAAI,SAAS,EAAE,CAAkE,CACrH,EACA,QAAQ,CAAC,OAAO,IAAI,uBAAC,iCAAkB,KAAG,EAC1C,QAAQ,CAAC,KAAK,IAAI,uBAAC,+BAAgB,KAAG,EACvC,uBAAC,yCAA0B,KAAG,EAC9B,wBAAC,kCAAmB,eACjB,QAAQ,CAAC,IAAI,IAAI,uBAAC,8BAAe,kBAAY,eAAe,GAAG,EAC/D,QAAQ,CAAC,WAAW,IAAI,uBAAC,sCAAuB,IAAC,OAAO,EAAE,WAAW,GAAI,EACzE,QAAQ,CAAC,IAAI,IAAI,uBAAC,8BAAe,IAAC,SAAS,EAAC,gBAAgB,GAAG,EAC/D,QAAQ,CAAC,WAAW,IAAI,uBAAC,qCAAsB,IAAC,OAAO,EAAE,WAAW,GAAI,EACxE,QAAQ,CAAC,IAAI,IAAI,uBAAC,8BAAe,KAAG,EACpC,QAAQ,CAAC,MAAM,IAAI,uBAAC,gCAAiB,KAAG,EACxC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAChC,iDACa,gBAAgB,EAC3B,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;4BAClB,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4BAChC,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBACzC,CAAC,EACD,SAAS,EAAC,kDAAkD,YAE3D,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,mCAA0B,KAAK,EAAE,MAAM,CAAC,IAAI,YAAG,MAAM,CAAC,IAAI,IAA7C,MAAM,CAAC,IAAI,CAA4C,CAAC,GACvF,CACV,EACA,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,uBAAC,kCAAmB,IAAC,MAAM,EAAE,cAAc,GAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAC,uCAAwB,IAAC,MAAM,EAAE,cAAc,GAAI,CAAC,CAAC,CAAC,IAAI,EAClJ,SAAS,KAAK,OAAO,IAAI,QAAQ,CAAC,QAAQ,IAAI,uBAAC,kCAAmB,KAAG,EACrE,QAAQ,CAAC,IAAI,IAAI,uBAAC,8BAAe,KAAG,EACpC,SAAS,KAAK,OAAO,IAAI,QAAQ,CAAC,gBAAgB,IAAI,uBAAC,6BAAc,KAAG,EACxE,SAAS,KAAK,OAAO,IAAI,QAAQ,CAAC,UAAU,IAAI,uBAAC,oCAAqB,KAAG,EACzE,QAAQ,CAAC,QAAQ,IAAI,uBAAC,kCAAmB,KAAG,IACzB,KACV,CACf,CAAC;AACJ,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import * as React from "react";
2
2
  declare function Badge(props: React.ComponentProps<"span"> & {
3
3
  asChild?: boolean;
4
+ variant?: "default" | "outline" | "secondary" | "destructive";
4
5
  }): import("react/jsx-runtime").JSX.Element;
5
6
  export { Badge };
6
7
  //# sourceMappingURL=badge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/components/ui/badge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,iBAAS,KAAK,CACZ,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,2CAMF;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/components/ui/badge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,iBAAS,KAAK,CACZ,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,CAAC;CAC/D,2CAMF;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -16,7 +16,7 @@ exports.Badge = Badge;
16
16
  const jsx_runtime_1 = require("react/jsx-runtime");
17
17
  const react_slot_1 = require("@radix-ui/react-slot");
18
18
  function Badge(props) {
19
- const { asChild } = props, rest = __rest(props, ["asChild"]);
19
+ const { asChild, variant: _variant } = props, rest = __rest(props, ["asChild", "variant"]);
20
20
  const Comp = asChild ? react_slot_1.Slot : "span";
21
21
  return (0, jsx_runtime_1.jsx)(Comp, Object.assign({}, rest));
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../src/components/ui/badge.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAA;;;;;;;;;;;;;AAgBH,sBAAK;;AAbd,qDAA2C;AAE3C,SAAS,KAAK,CACZ,KAEC;IAED,MAAM,EAAE,OAAO,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAA5B,WAAoB,CAAQ,CAAA;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,iBAAI,CAAC,CAAC,CAAC,MAAM,CAAA;IAEpC,OAAO,uBAAC,IAAI,oBAAK,IAAI,EAAI,CAAA;AAC3B,CAAC"}
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../src/components/ui/badge.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAA;;;;;;;;;;;;;AAiBH,sBAAK;;AAdd,qDAA2C;AAE3C,SAAS,KAAK,CACZ,KAGC;IAED,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAA/C,sBAAuC,CAAQ,CAAA;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,iBAAI,CAAC,CAAC,CAAC,MAAM,CAAA;IAEpC,OAAO,uBAAC,IAAI,oBAAK,IAAI,EAAI,CAAA;AAC3B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import * as React from "react";
2
+ type PossibleRef<T> = React.Ref<T> | React.RefCallback<T> | null | undefined;
3
+ declare function composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T>;
4
+ declare function useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T>;
5
+ export { composeRefs, useComposedRefs };
6
+ //# sourceMappingURL=compose-refs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-refs.d.ts","sourceRoot":"","sources":["../../../src/components/ui/compose-refs.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,KAAK,WAAW,CAAC,CAAC,IACd,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GACZ,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GACpB,IAAI,GACJ,SAAS,CAAC;AAoBd,iBAAS,WAAW,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAMvE;AAMD,iBAAS,eAAe,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAG3E;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC"}