Sergei Argutin commited on
Commit
e922599
Β·
1 Parent(s): b9f2bbe

Make premium animation preview visible

Browse files
Files changed (1) hide show
  1. index.html +57 -3
index.html CHANGED
@@ -79,13 +79,38 @@
79
  .samples img{width:100%;aspect-ratio:1;object-fit:contain}
80
  .samples figcaption{color:var(--mut);font-size:.75rem;margin-top:4px;background:var(--bg);border-radius:6px;padding:2px 4px}
81
  .samples .tag{color:var(--acc);font-weight:700}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  </style>
83
  </head>
84
  <body>
85
  <header>
86
  <h1>Free Exercise Dataset β€” JSON + Images</h1>
87
  <p class="sub">The free tier of <b>RepDB</b>: <b class="jscount">400</b> fitness exercises with flat illustrations, target muscles, equipment, MET, and instructions in English, German &amp; Spanish. Free for personal and commercial in-app use with attribution β€” see <a href="https://github.com/sergei-argutin/exercise-dataset/blob/main/LICENSE-DATA.md">LICENSE-DATA.md</a>. The full paid dataset keeps growing and adds high-res classic images, transparency and animations.</p>
88
- <a class="cta" href="https://repdb.co/pricing">Get the full dataset β†’</a>
89
  </header>
90
 
91
  <div class="bar">
@@ -97,7 +122,7 @@
97
  <main>
98
  <div class="promo">
99
  <span>This is the <b>free tier</b> β€” <b><span class="jscount">400</span> exercises</b>, flat style, 512&nbsp;px, EN/DE/ES, attribution license. The full paid dataset keeps growing and ships classic white-background 1024&nbsp;px images, transparent backgrounds and looping animations.</span>
100
- <a class="cta" href="https://repdb.co/pricing">See pricing β†’</a>
101
  </div>
102
  <div class="count" id="count"></div>
103
  <div class="grid" id="grid"></div>
@@ -105,7 +130,7 @@
105
  <section class="upgrade">
106
  <h2>Upgrade samples β€” Standard tier preview</h2>
107
  <p class="note"><b>Standard tier quality β€” evaluation only, see <a href="https://github.com/sergei-argutin/exercise-dataset/blob/main/LICENSE-DATA.md">LICENSE-DATA.md</a>.</b>
108
- Looping, transparent-background exercise animations β€” the same clips shown on <a href="https://repdb.co">repdb.co</a> (checkerboard shows the transparency). The Standard tier adds looping animations like these for most exercises β†’ <a href="https://repdb.co/pricing">repdb.co/pricing</a>.</p>
109
  <div class="samples">
110
  <figure><img src="https://huggingface.co/datasets/sargutin/exercise-dataset/resolve/main/upgrade-samples/bench-leg-pull-in.webp" alt="Bench Leg Pull-in β€” looping transparent animation" loading="lazy"><figcaption>Bench Leg Pull-in Β· <span class="tag">animation</span></figcaption></figure>
111
  <figure><img src="https://huggingface.co/datasets/sargutin/exercise-dataset/resolve/main/upgrade-samples/cossack-squat.webp" alt="Cossack Squat β€” looping transparent animation" loading="lazy"><figcaption>Cossack Squat Β· <span class="tag">animation</span></figcaption></figure>
@@ -116,11 +141,23 @@
116
  </section>
117
  </main>
118
 
 
 
 
 
 
 
 
 
 
 
 
119
  <dialog id="dlg"><button class="x" aria-label="Close" onclick="dlg.close()">Γ—</button><div class="modal" id="modal"></div></dialog>
120
 
121
  <script>
122
  let DATA=[];
123
  const ASSET_BASE='https://huggingface.co/datasets/sargutin/exercise-dataset/resolve/main/';
 
124
  const grid=document.getElementById('grid'), q=document.getElementById('q'),
125
  bodySel=document.getElementById('body'), equipSel=document.getElementById('equip'),
126
  countEl=document.getElementById('count'), dlg=document.getElementById('dlg'), modal=document.getElementById('modal');
@@ -137,6 +174,23 @@ fetch(ASSET_BASE+'exercises.json').then(r=>r.json()).then(d=>{
137
  });
138
  dlg.onclick=ev=>{ if(ev.target===dlg) dlg.close(); };
139
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  function filtered(){
141
  const t=q.value.toLowerCase(), b=bodySel.value, eq=equipSel.value;
142
  return DATA.filter(e=>{
 
79
  .samples img{width:100%;aspect-ratio:1;object-fit:contain}
80
  .samples figcaption{color:var(--mut);font-size:.75rem;margin-top:4px;background:var(--bg);border-radius:6px;padding:2px 4px}
81
  .samples .tag{color:var(--acc);font-weight:700}
82
+ .dock{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;gap:12px;align-items:center;
83
+ max-width:1100px;margin:0 auto;padding:10px 20px calc(10px + env(safe-area-inset-bottom));
84
+ background:rgba(15,17,22,.92);backdrop-filter:blur(10px);border:1px solid var(--line);border-bottom:0;
85
+ border-radius:14px 14px 0 0;box-shadow:0 -10px 30px rgba(0,0,0,.45);
86
+ animation:dock-in .55s .5s cubic-bezier(.2,.8,.2,1) both}
87
+ @keyframes dock-in{from{transform:translateY(130%)}to{transform:translateY(0)}}
88
+ .dock-open{display:flex;gap:12px;align-items:center;flex:1;min-width:0;
89
+ background:0;border:0;padding:0;color:inherit;font:inherit;text-align:left;cursor:pointer}
90
+ .dock-open img{width:80px;height:80px;flex:none;object-fit:contain;border-radius:10px;padding:3px;
91
+ background-image:conic-gradient(#1b1e25 90deg,#0f1217 0 180deg,#1b1e25 0 270deg,#0f1217 0);background-size:12px 12px}
92
+ .dock-open:hover img,.dock-open:focus-visible img{outline:1px solid var(--acc)}
93
+ .dock-open:focus-visible{outline:2px solid var(--acc);outline-offset:3px;border-radius:10px}
94
+ .dock-copy{min-width:0}
95
+ .dock-copy b{display:block;font-size:.92rem}
96
+ .dock-copy b .tag{color:var(--acc)}
97
+ .dock-copy>span{display:block;color:var(--mut);font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
98
+ .dock .cta{flex:none;padding:9px 14px}
99
+ @media (max-width:560px){
100
+ .dock{gap:10px;padding:9px 12px calc(9px + env(safe-area-inset-bottom))}
101
+ .dock-open img{width:68px;height:68px}
102
+ .dock-copy>span,.dock-copy b .tag{display:none}
103
+ .dock-copy b{font-size:.86rem;line-height:1.25}
104
+ .dock .cta{padding:8px 11px;font-size:.85rem}
105
+ }
106
+ @media (prefers-reduced-motion:reduce){.dock{animation:none}}
107
  </style>
108
  </head>
109
  <body>
110
  <header>
111
  <h1>Free Exercise Dataset β€” JSON + Images</h1>
112
  <p class="sub">The free tier of <b>RepDB</b>: <b class="jscount">400</b> fitness exercises with flat illustrations, target muscles, equipment, MET, and instructions in English, German &amp; Spanish. Free for personal and commercial in-app use with attribution β€” see <a href="https://github.com/sergei-argutin/exercise-dataset/blob/main/LICENSE-DATA.md">LICENSE-DATA.md</a>. The full paid dataset keeps growing and adds high-res classic images, transparency and animations.</p>
113
+ <a class="cta" href="https://repdb.co/pricing?utm_source=huggingface">Get the full dataset β†’</a>
114
  </header>
115
 
116
  <div class="bar">
 
122
  <main>
123
  <div class="promo">
124
  <span>This is the <b>free tier</b> β€” <b><span class="jscount">400</span> exercises</b>, flat style, 512&nbsp;px, EN/DE/ES, attribution license. The full paid dataset keeps growing and ships classic white-background 1024&nbsp;px images, transparent backgrounds and looping animations.</span>
125
+ <a class="cta" href="https://repdb.co/pricing?utm_source=huggingface">See pricing β†’</a>
126
  </div>
127
  <div class="count" id="count"></div>
128
  <div class="grid" id="grid"></div>
 
130
  <section class="upgrade">
131
  <h2>Upgrade samples β€” Standard tier preview</h2>
132
  <p class="note"><b>Standard tier quality β€” evaluation only, see <a href="https://github.com/sergei-argutin/exercise-dataset/blob/main/LICENSE-DATA.md">LICENSE-DATA.md</a>.</b>
133
+ Looping, transparent-background exercise animations β€” the same clips shown on <a href="https://repdb.co/?utm_source=huggingface">repdb.co</a> (checkerboard shows the transparency). The Standard tier adds looping animations like these for most exercises β†’ <a href="https://repdb.co/pricing?utm_source=huggingface">repdb.co/pricing</a>.</p>
134
  <div class="samples">
135
  <figure><img src="https://huggingface.co/datasets/sargutin/exercise-dataset/resolve/main/upgrade-samples/bench-leg-pull-in.webp" alt="Bench Leg Pull-in β€” looping transparent animation" loading="lazy"><figcaption>Bench Leg Pull-in Β· <span class="tag">animation</span></figcaption></figure>
136
  <figure><img src="https://huggingface.co/datasets/sargutin/exercise-dataset/resolve/main/upgrade-samples/cossack-squat.webp" alt="Cossack Squat β€” looping transparent animation" loading="lazy"><figcaption>Cossack Squat Β· <span class="tag">animation</span></figcaption></figure>
 
141
  </section>
142
  </main>
143
 
144
+ <aside class="dock" aria-label="Standard tier preview">
145
+ <button class="dock-open" id="premiumDock">
146
+ <img src="https://huggingface.co/datasets/sargutin/exercise-dataset/resolve/main/upgrade-samples/mountain-climbers.webp" alt="Mountain Climbers β€” looping transparent animation" />
147
+ <span class="dock-copy">
148
+ <b>Standard tier preview <span class="tag">β€” see the sample</span></b>
149
+ <span>Transparent looping animations and classic 1024 px images.</span>
150
+ </span>
151
+ </button>
152
+ <a class="cta" href="https://repdb.co/pricing?utm_source=huggingface">See pricing β†’</a>
153
+ </aside>
154
+
155
  <dialog id="dlg"><button class="x" aria-label="Close" onclick="dlg.close()">Γ—</button><div class="modal" id="modal"></div></dialog>
156
 
157
  <script>
158
  let DATA=[];
159
  const ASSET_BASE='https://huggingface.co/datasets/sargutin/exercise-dataset/resolve/main/';
160
+ const PRICING_URL='https://repdb.co/pricing?utm_source=huggingface';
161
  const grid=document.getElementById('grid'), q=document.getElementById('q'),
162
  bodySel=document.getElementById('body'), equipSel=document.getElementById('equip'),
163
  countEl=document.getElementById('count'), dlg=document.getElementById('dlg'), modal=document.getElementById('modal');
 
174
  });
175
  dlg.onclick=ev=>{ if(ev.target===dlg) dlg.close(); };
176
 
177
+ document.getElementById('premiumDock').onclick=()=>{
178
+ const samples = [
179
+ ['bench-leg-pull-in','Bench Leg Pull-in'],
180
+ ['cossack-squat','Cossack Squat'],
181
+ ['bent-arm-barbell-pullover','Bent-arm Barbell Pullover'],
182
+ ['incline-db-curl','Incline Dumbbell Curl'],
183
+ ['mountain-climbers','Mountain Climbers']
184
+ ];
185
+ modal.innerHTML=`<section class="upgrade" style="margin:0;border:0;padding:0">
186
+ <h2>Premium samples - Standard tier preview</h2>
187
+ <p class="note"><b>Standard tier quality.</b> Transparent-background looping animations - the same kind of clips shipped in the paid Standard tier. The checkerboard shows the transparency.</p>
188
+ <div class="samples">${samples.map(([slug,name])=>`<figure><img src="${ASSET_BASE}upgrade-samples/${slug}.webp" alt="${name} - looping transparent animation"><figcaption>${name} Β· <span class="tag">animation</span></figcaption></figure>`).join('')}</div>
189
+ <div class="foot">The full paid dataset keeps growing - classic 1024 px images, transparency &amp; animations at <a href="${PRICING_URL}">repdb.co/pricing</a></div>
190
+ </section>`;
191
+ dlg.showModal();
192
+ };
193
+
194
  function filtered(){
195
  const t=q.value.toLowerCase(), b=bodySel.value, eq=equipSel.value;
196
  return DATA.filter(e=>{