mock GitHub API responses instead of finished cards

This commit is contained in:
martin-mfg
2025-11-22 10:39:54 +01:00
parent b511f45e75
commit 31ce8fc978
17 changed files with 3181 additions and 1034 deletions
+90 -13
View File
@@ -1,5 +1,18 @@
import axios from 'axios';
import { setupCache } from 'axios-cache-interceptor';
import { useSelector } from 'react-redux';
import { HOST } from './constants';
import additionalUserStars from './mockData/additional_user_stars.json' with { type: 'json' };
import commentedIssues from './mockData/commented_issues.json' with { type: 'json' };
import commentedPrs from './mockData/commented_prs.json' with { type: 'json' };
import commits from './mockData/commits.json' with { type: 'json' };
import gist from './mockData/gist.json' with { type: 'json' };
import repository from './mockData/repository.json' with { type: 'json' };
import reviewedPrs from './mockData/reviewed_prs.json' with { type: 'json' };
import topLanguages from './mockData/top_languages.json' with { type: 'json' };
import userStats from './mockData/user_stats.json' with { type: 'json' };
import wakatimeProxy from './mockData/wakatime_proxy.json' with { type: 'json' };
const cachedAxios = setupCache(axios, {
// Cache for 30 minutes
@@ -9,24 +22,88 @@ const cachedAxios = setupCache(axios, {
methods: ['get', 'post'],
});
// mock username=anuraghazra requests
function createResolvedPromise(data, config) {
return Promise.resolve({
data,
status: 200,
statusText: 'OK',
headers: {},
config,
});
}
// mock responses to unauthenticated "anuraghazra" requests
cachedAxios.interceptors.request.use(
(config) => {
const userId = useSelector((state) => state.user.userId);
const isAuthenticated = userId && userId.length > 0;
if (isAuthenticated) {
return config;
}
const params = new URL(config.url).entries || {};
if (
params.username === 'anuraghazra' ||
(params.repo && params.repo.startsWith('anuraghazra/'))
) {
// Return a promise that resolves with a mocked response
return Promise.resolve({
data: 'hello anuraghazra!',
status: 200,
statusText: 'OK',
headers: {},
config,
});
config.url === 'https://api.github.com/graphql' &&
config.data.query.includes(
'query userInfo($login: String!, $after: String, $includeMergedPullRequests:',
) &&
config.data.data.variables.login === 'anuraghazra'
) {
return createResolvedPromise(userStats, config);
}
if (
config.url === 'https://api.github.com/graphql' &&
config.data.query.includes(
'query userInfo($login: String!, $after: String, $ownerAffiliations:',
) &&
config.data.data.variables.login === 'anuraghazra'
) {
return createResolvedPromise(additionalUserStars, config);
}
if (
config.url === 'https://api.github.com/graphql' &&
config.data.query.includes(
'query userInfo($login: String!, $ownerAffiliations:',
) &&
config.data.data.variables.login === 'anuraghazra'
) {
return createResolvedPromise(topLanguages, config);
}
if (
config.url === 'https://api.github.com/graphql' &&
config.data.query.includes('fragment RepoInfo on Repository {') &&
config.data.data.variables.login === 'anuraghazra' &&
config.data.data.variables.repo === 'github-readme-stats'
) {
return createResolvedPromise(repository, config);
}
if (
config.url === 'https://api.github.com/graphql' &&
config.data.query.includes('query gistInfo(') &&
config.data.data.variables.login === 'anuraghazra'
) {
return createResolvedPromise(gist, config);
}
switch (config.url) {
case 'https://api.github.com/search/commits?per_page=1&q=author:anuraghazra':
return createResolvedPromise(commits, config);
case 'https://api.github.com/search/issues?per_page=1&q=commenter:anuraghazra+-author:anuraghazra+type:pr':
return createResolvedPromise(commentedPrs, config);
case 'https://api.github.com/search/issues?per_page=1&q=reviewed-by:anuraghazra+-author:anuraghazra+type:pr':
return createResolvedPromise(reviewedPrs, config);
case 'https://api.github.com/search/issues?per_page=1&q=commenter:anuraghazra+-author:anuraghazra+type:issue':
return createResolvedPromise(commentedIssues, config);
case `https://${HOST}/api/wakatime-proxy?username=ffflabs`:
return createResolvedPromise(wakatimeProxy, config);
default:
return config;
}
return config;
},
(error) => {
return Promise.reject(error);
+19 -51
View File
@@ -11,13 +11,6 @@ import 'react-loading-skeleton/dist/skeleton.css';
import { createMockReq, createMockRes } from '../../mock-http';
import { default as router } from '../../backend/.vercel/output/functions/api.func/router.js';
import axios from 'axios';
import { HOST } from '../../constants';
import { DEMO_STATS_CARD } from './demoData/statsCard';
import { DEMO_TOPLANGS_CARD } from './demoData/topLangsCard';
import { DEMO_PIN_CARD } from './demoData/pinCard';
import { DEMO_GIST_CARD } from './demoData/gistCard';
import { DEMO_WAKATIME_CARD } from './demoData/wakatimeCard';
const SvgInline = (props) => {
const [svg, setSvg] = useState(null);
@@ -36,57 +29,32 @@ const SvgInline = (props) => {
let body;
let status;
switch (url) {
case `https://${HOST}/api?username=anuraghazra&include_all_commits=true&client=wizard`:
status = 200;
body = DEMO_STATS_CARD;
break;
case `https://${HOST}/api/top-langs?username=anuraghazra&langs_count=4&client=wizard`:
status = 200;
body = DEMO_TOPLANGS_CARD;
break;
case `https://${HOST}/api/pin?repo=anuraghazra/github-readme-stats&client=wizard`:
status = 200;
body = DEMO_PIN_CARD;
break;
case `https://${HOST}/api/gist?id=bbfce31e0217a3689c8d961a356cb10d&client=wizard`:
status = 200;
body = DEMO_GIST_CARD;
break;
case `https://${HOST}/api/wakatime?username=ffflabs&langs_count=6&card_width=450&client=wizard`:
status = 200;
body = DEMO_WAKATIME_CARD;
break;
const isAuthenticated = userId && userId.length > 0;
if (isAuthenticated && (!userToken || userToken === 'placeholderPAT')) {
// waiting for backend call to private-access
return;
}
default:
const isAuthenticated = userId && userId.length > 0;
if (
isAuthenticated &&
(!userToken || userToken === 'placeholderPAT')
) {
// waiting for backend call to private-access
return;
}
if (isAuthenticated) {
const req = createMockReq({
method: 'GET',
url: url,
});
const res = createMockRes();
await router(req, res);
body = res._getBody();
status = res._getStatusCode();
// if (isAuthenticated) {
const req = createMockReq({
method: 'GET',
url: url,
});
const res = createMockRes();
await router(req, res);
body = res._getBody();
status = res._getStatusCode();
/*
} else {
let res = await axios.get(url);
body = res.data;
status = res.status;
}
*/
if (status >= 300) {
console.error('failed to fetch/generate SVG');
return;
}
if (status >= 300) {
console.error('failed to fetch/generate SVG');
return;
}
setSvg(body);
@@ -1,135 +0,0 @@
export const DEMO_GIST_CARD = `
<svg
width="400"
height="192"
viewBox="0 0 400 192"
fill="none"
xmlns="http://www.w3.org/2000/svg"
role="img"
aria-labelledby="descId"
>
<title id="titleId"></title>
<desc id="descId"></desc>
<style>
.header {
font: 600 18px 'Segoe UI', Ubuntu, Sans-Serif;
fill: #2f80ed;
animation: fadeInAnimation 0.8s ease-in-out forwards;
}
@supports(-moz-appearance: auto) {
/* Selector detects Firefox */
.header { font-size: 15.5px; }
}
.description { font: 400 13px 'Segoe UI', Ubuntu, Sans-Serif; fill: #434d58 }
.gray { font: 400 12px 'Segoe UI', Ubuntu, Sans-Serif; fill: #434d58 }
.icon { fill: #586069 }
/* Animations */
@keyframes scaleInAnimation {
from {
transform: translate(-5px, 5px) scale(0);
}
to {
transform: translate(-5px, 5px) scale(1);
}
}
@keyframes fadeInAnimation {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
</style>
<rect
data-testid="card-bg"
x="0.5"
y="0.5"
rx="4.5"
height="99%"
stroke="#e4e2e2"
width="399"
fill="#fffefe"
stroke-opacity="1"
/>
<g
data-testid="card-title"
transform="translate(25, 35)"
>
<g transform="translate(0, 0)">
<svg
class="icon"
x="0"
y="-13"
viewBox="0 0 16 16"
version="1.1"
width="16"
height="16"
>
<path fill-rule="evenodd" d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z" />
</svg>
</g><g transform="translate(25, 0)">
<text
x="0"
y="0"
class="header"
data-testid="header"
>countries.json</text>
</g>
</g>
<g
data-testid="main-card-body"
transform="translate(0, 55)"
>
<text class="description" x="25" y="-5">
<tspan dy="1.2em" x="25">List of countries and territories in English and Spanish:</tspan><tspan dy="1.2em" x="25">name, continent, capital, dial code, country codes, TLD,</tspan><tspan dy="1.2em" x="25">and area in sq km. Lista de pa&#237;ses y territorios en</tspan><tspan dy="1.2em" x="25">Ingl&#233;s y Espa&#241;ol: nombre, continente, capital,</tspan><tspan dy="1.2em" x="25">c&#243;digo de tel&#233;fono, c&#243;digos de pa&#237;s,</tspan><tspan dy="1.2em" x="25">dominio y &#225;rea en km cuadrados. Updated 2024</tspan>
</text>
<g transform="translate(30, 117)">
<g transform="translate(0, 0)">
<g data-testid="primary-lang">
<circle data-testid="lang-color" cx="0" cy="-5" r="6" fill="#292929" />
<text data-testid="lang-name" class="gray" x="15">JSON</text>
</g>
</g><g transform="translate(56.96875, 0)"><g transform="translate(0, 0)">
<svg
class="icon"
y="-12"
viewBox="0 0 16 16"
version="1.1"
width="16"
height="16"
>
<path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"/>
</svg>
</g><g transform="translate(20, 0)"><text data-testid="starsCount" class="gray">41</text></g></g><g transform="translate(111.28125, 0)"><g transform="translate(0, 0)">
<svg
class="icon"
y="-12"
viewBox="0 0 16 16"
version="1.1"
width="16"
height="16"
>
<path fill-rule="evenodd" d="M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"></path>
</svg>
</g><g transform="translate(20, 0)"><text data-testid="forksCount" class="gray">14</text></g></g>
</g>
</g>
</svg>
`;
@@ -1,155 +0,0 @@
export const DEMO_PIN_CARD = `
<svg
width="400"
height="120"
viewBox="0 0 400 120"
fill="none"
xmlns="http://www.w3.org/2000/svg"
role="img"
aria-labelledby="descId"
>
<title id="titleId"></title>
<desc id="descId"></desc>
<style>
.header {
font: 600 18px 'Segoe UI', Ubuntu, Sans-Serif;
fill: #2f80ed;
animation: fadeInAnimation 0.8s ease-in-out forwards;
}
@supports(-moz-appearance: auto) {
/* Selector detects Firefox */
.header { font-size: 15.5px; }
}
.description { font: 400 13px 'Segoe UI', Ubuntu, Sans-Serif; fill: #434d58 }
.gray { font: 400 12px 'Segoe UI', Ubuntu, Sans-Serif; fill: #434d58 }
.badge { font: 600 11px 'Segoe UI', Ubuntu, Sans-Serif; }
.badge rect { opacity: 0.2 }
.stat { font: 400 12px 'Segoe UI', Ubuntu, Sans-Serif; fill: #434d58 }
.stagger {
opacity: 0;
animation: fadeInAnimation 0.3s ease-in-out forwards;
}
.not_bold { font-weight: 400 }
.bold { font-weight: 700 }
.icon {
fill: #586069;
display: block;
}
/* Animations */
@keyframes scaleInAnimation {
from {
transform: translate(-5px, 5px) scale(0);
}
to {
transform: translate(-5px, 5px) scale(1);
}
}
@keyframes fadeInAnimation {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
* { animation-duration: 0s !important; animation-delay: 0s !important; }
</style>
<rect
data-testid="card-bg"
x="0.5"
y="0.5"
rx="4.5"
height="99%"
stroke="#e4e2e2"
width="399"
fill="#fffefe"
stroke-opacity="1"
/>
<g
data-testid="card-title"
transform="translate(25, 35)"
>
<g transform="translate(0, 0)">
<svg
class="icon"
x="0"
y="-13"
viewBox="0 0 16 16"
version="1.1"
width="16"
height="16"
>
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"/>
</svg>
</g><g transform="translate(25, 0)">
<text
x="0"
y="0"
class="header"
data-testid="header"
>github-readme-stats</text>
</g>
</g>
<g
data-testid="main-card-body"
transform="translate(0, 55)"
>
<text class="description" x="25" y="-5">
<tspan dy="1.2em" x="25">&#9889; Dynamically generated stats for your github readmes</tspan>
</text>
<g transform="translate(30, 45)">
<g transform="translate(0, 0)">
<g data-testid="primary-lang">
<circle data-testid="lang-color" cx="0" cy="-5" r="6" fill="#f1e05a" />
<text data-testid="lang-name" class="gray" x="15">JavaScript</text>
</g>
</g><g transform="translate(80.93125, 0)"><g transform="translate(0, 0)">
<svg
class="icon"
y="-12"
viewBox="0 0 16 16"
version="1.1"
width="16"
height="16"
>
<path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"/>
</svg>
</g><g transform="translate(20, 0)"><text data-testid="stargazers" class="gray">76.9k</text></g></g><g transform="translate(151.21875, 0)"><g transform="translate(0, 0)">
<svg
class="icon"
y="-12"
viewBox="0 0 16 16"
version="1.1"
width="16"
height="16"
>
<path fill-rule="evenodd" d="M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"></path>
</svg>
</g><g transform="translate(20, 0)"><text data-testid="forkcount" class="gray">26.8k</text></g></g>
</g>
<svg x="0" y="0"><g transform="translate(-3, 68)">
</g></svg>
</g>
</svg>
`;
@@ -1,212 +0,0 @@
export const DEMO_STATS_CARD = `
<svg
width="450"
height="195"
viewBox="0 0 450 195"
fill="none"
xmlns="http://www.w3.org/2000/svg"
role="img"
aria-labelledby="descId"
>
<title id="titleId">Anurag Hazra's GitHub Stats, Rank: S</title>
<desc id="descId">Total Stars Earned: 81043, Total Commits : 27218, Total PRs: 820, Total Issues: 180, Contributed to (last year): 1</desc>
<style>
.header {
font: 600 18px 'Segoe UI', Ubuntu, Sans-Serif;
fill: #2f80ed;
animation: fadeInAnimation 0.8s ease-in-out forwards;
}
@supports(-moz-appearance: auto) {
/* Selector detects Firefox */
.header { font-size: 15.5px; }
}
.stat {
font: 600 14px 'Segoe UI', Ubuntu, "Helvetica Neue", Sans-Serif; fill: #434d58;
}
@supports(-moz-appearance: auto) {
/* Selector detects Firefox */
.stat { font-size:12px; }
}
.stagger {
opacity: 0;
animation: fadeInAnimation 0.3s ease-in-out forwards;
}
.rank-text {
font: 800 24px 'Segoe UI', Ubuntu, Sans-Serif; fill: #434d58;
animation: scaleInAnimation 0.3s ease-in-out forwards;
}
.rank-percentile-header {
font-size: 14px;
}
.rank-percentile-text {
font-size: 16px;
}
.not_bold { font-weight: 400 }
.bold { font-weight: 700 }
.icon {
fill: #4c71f2;
display: none;
}
.rank-circle-rim {
stroke: #2f80ed;
fill: none;
stroke-width: 6;
opacity: 0.2;
}
.rank-circle {
stroke: #2f80ed;
stroke-dasharray: 250;
fill: none;
stroke-width: 6;
stroke-linecap: round;
opacity: 0.8;
transform-origin: -10px 8px;
transform: rotate(-90deg);
animation: rankAnimation 1s forwards ease-in-out;
}
@keyframes rankAnimation {
from {
stroke-dashoffset: 251.32741228718345;
}
to {
stroke-dashoffset: 0.20935681155589697;
}
}
/* Animations */
@keyframes scaleInAnimation {
from {
transform: translate(-5px, 5px) scale(0);
}
to {
transform: translate(-5px, 5px) scale(1);
}
}
@keyframes fadeInAnimation {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
</style>
<rect
data-testid="card-bg"
x="0.5"
y="0.5"
rx="4.5"
height="99%"
stroke="#e4e2e2"
width="449"
fill="#fffefe"
stroke-opacity="1"
/>
<g
data-testid="card-title"
transform="translate(25, 35)"
>
<g transform="translate(0, 0)">
<text
x="0"
y="0"
class="header"
data-testid="header"
>Anurag Hazra's GitHub Stats</text>
</g>
</g>
<g
data-testid="main-card-body"
transform="translate(0, 55)"
>
<g data-testid="rank-circle"
transform="translate(365, 47.5)">
<circle class="rank-circle-rim" cx="-10" cy="8" r="40" />
<circle class="rank-circle" cx="-10" cy="8" r="40" />
<g class="rank-text">
<text x="-5" y="3" alignment-baseline="central" dominant-baseline="central" text-anchor="middle" data-testid="level-rank-icon">
S
</text>
</g>
</g>
<svg x="0" y="0">
<g transform="translate(0, 0)">
<g class="stagger" style="animation-delay: 450ms" transform="translate(25, 0)">
<text class="stat bold" y="12.5">Total Stars Earned:</text>
<text
class="stat bold"
x="204.01"
y="12.5"
data-testid="stars"
>81k</text>
</g>
</g><g transform="translate(0, 25)">
<g class="stagger" style="animation-delay: 600ms" transform="translate(25, 0)">
<text class="stat bold" y="12.5">Total Commits:</text>
<text
class="stat bold"
x="204.01"
y="12.5"
data-testid="commits"
>27.2k</text>
</g>
</g><g transform="translate(0, 50)">
<g class="stagger" style="animation-delay: 750ms" transform="translate(25, 0)">
<text class="stat bold" y="12.5">Total PRs:</text>
<text
class="stat bold"
x="204.01"
y="12.5"
data-testid="prs"
>820</text>
</g>
</g><g transform="translate(0, 75)">
<g class="stagger" style="animation-delay: 900ms" transform="translate(25, 0)">
<text class="stat bold" y="12.5">Total Issues:</text>
<text
class="stat bold"
x="204.01"
y="12.5"
data-testid="issues"
>180</text>
</g>
</g><g transform="translate(0, 100)">
<g class="stagger" style="animation-delay: 1050ms" transform="translate(25, 0)">
<text class="stat bold" y="12.5">Contributed to (last year):</text>
<text
class="stat bold"
x="204.01"
y="12.5"
data-testid="contribs"
>1</text>
</g>
</g>
</svg>
</g>
</svg>
`;
@@ -1,203 +0,0 @@
export const DEMO_TOPLANGS_CARD = `
<svg
width="300"
height="245"
viewBox="0 0 300 245"
fill="none"
xmlns="http://www.w3.org/2000/svg"
role="img"
aria-labelledby="descId"
>
<title id="titleId"></title>
<desc id="descId"></desc>
<style>
.header {
font: 600 18px 'Segoe UI', Ubuntu, Sans-Serif;
fill: #2f80ed;
animation: fadeInAnimation 0.8s ease-in-out forwards;
}
@supports(-moz-appearance: auto) {
/* Selector detects Firefox */
.header { font-size: 15.5px; }
}
@keyframes slideInAnimation {
from {
width: 0;
}
to {
width: calc(100%-100px);
}
}
@keyframes growWidthAnimation {
from {
width: 0;
}
to {
width: 100%;
}
}
.stat {
font: 600 14px 'Segoe UI', Ubuntu, "Helvetica Neue", Sans-Serif; fill: #434d58;
}
@supports(-moz-appearance: auto) {
/* Selector detects Firefox */
.stat { font-size:12px; }
}
.bold { font-weight: 700 }
.lang-name {
font: 400 11px "Segoe UI", Ubuntu, Sans-Serif;
fill: #434d58;
}
.stagger {
opacity: 0;
animation: fadeInAnimation 0.3s ease-in-out forwards;
}
#rect-mask rect{
animation: slideInAnimation 1s ease-in-out forwards;
}
.lang-progress{
animation: growWidthAnimation 0.6s ease-in-out forwards;
}
/* Animations */
@keyframes scaleInAnimation {
from {
transform: translate(-5px, 5px) scale(0);
}
to {
transform: translate(-5px, 5px) scale(1);
}
}
@keyframes fadeInAnimation {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
</style>
<rect
data-testid="card-bg"
x="0.5"
y="0.5"
rx="4.5"
height="99%"
stroke="#e4e2e2"
width="299"
fill="#fffefe"
stroke-opacity="1"
/>
<g
data-testid="card-title"
transform="translate(25, 35)"
>
<g transform="translate(0, 0)">
<text
x="0"
y="0"
class="header"
data-testid="header"
>Most Used Languages</text>
</g>
</g>
<g
data-testid="main-card-body"
transform="translate(0, 55)"
>
<svg data-testid="lang-items" x="25">
<g transform="translate(0, 0)">
<g class="stagger" style="animation-delay: 450ms">
<text data-testid="lang-name" x="2" y="15" class="lang-name">JavaScript</text>
<text x="215" y="34" class="lang-name">72.12%</text>
<svg width="205" x="0" y="25">
<rect rx="5" ry="5" x="0" y="0" width="205" height="8" fill="#ddd"></rect>
<svg data-testid="lang-progress" width="72.12085614682329%">
<rect
height="8"
fill="#f1e05a"
rx="5" ry="5" x="0" y="0"
class="lang-progress"
style="animation-delay: 750ms;"
/>
</svg>
</svg>
</g>
</g><g transform="translate(0, 40)">
<g class="stagger" style="animation-delay: 600ms">
<text data-testid="lang-name" x="2" y="15" class="lang-name">HTML</text>
<text x="215" y="34" class="lang-name">14.66%</text>
<svg width="205" x="0" y="25">
<rect rx="5" ry="5" x="0" y="0" width="205" height="8" fill="#ddd"></rect>
<svg data-testid="lang-progress" width="14.661710097224756%">
<rect
height="8"
fill="#e34c26"
rx="5" ry="5" x="0" y="0"
class="lang-progress"
style="animation-delay: 900ms;"
/>
</svg>
</svg>
</g>
</g><g transform="translate(0, 80)">
<g class="stagger" style="animation-delay: 750ms">
<text data-testid="lang-name" x="2" y="15" class="lang-name">TypeScript</text>
<text x="215" y="34" class="lang-name">9.43%</text>
<svg width="205" x="0" y="25">
<rect rx="5" ry="5" x="0" y="0" width="205" height="8" fill="#ddd"></rect>
<svg data-testid="lang-progress" width="9.42778724861599%">
<rect
height="8"
fill="#3178c6"
rx="5" ry="5" x="0" y="0"
class="lang-progress"
style="animation-delay: 1050ms;"
/>
</svg>
</svg>
</g>
</g><g transform="translate(0, 120)">
<g class="stagger" style="animation-delay: 900ms">
<text data-testid="lang-name" x="2" y="15" class="lang-name">CSS</text>
<text x="215" y="34" class="lang-name">3.79%</text>
<svg width="205" x="0" y="25">
<rect rx="5" ry="5" x="0" y="0" width="205" height="8" fill="#ddd"></rect>
<svg data-testid="lang-progress" width="3.7896465073359704%">
<rect
height="8"
fill="#663399"
rx="5" ry="5" x="0" y="0"
class="lang-progress"
style="animation-delay: 1200ms;"
/>
</svg>
</svg>
</g>
</g>
</svg>
</g>
</svg>
`;
@@ -1,265 +0,0 @@
export const DEMO_WAKATIME_CARD = `
<svg
width="450"
height="220"
viewBox="0 0 450 220"
fill="none"
xmlns="http://www.w3.org/2000/svg"
role="img"
aria-labelledby="descId"
>
<title id="titleId"></title>
<desc id="descId"></desc>
<style>
.header {
font: 600 18px 'Segoe UI', Ubuntu, Sans-Serif;
fill: #2f80ed;
animation: fadeInAnimation 0.8s ease-in-out forwards;
}
@supports(-moz-appearance: auto) {
/* Selector detects Firefox */
.header { font-size: 15.5px; }
}
.stat {
font: 600 14px 'Segoe UI', Ubuntu, "Helvetica Neue", Sans-Serif; fill: #434d58;
}
@supports(-moz-appearance: auto) {
/* Selector detects Firefox */
.stat { font-size:12px; }
}
.stagger {
opacity: 0;
animation: fadeInAnimation 0.3s ease-in-out forwards;
}
.not_bold { font-weight: 400 }
.bold { font-weight: 700 }
@keyframes slideInAnimation {
from {
width: 0;
}
to {
width: calc(100%-100px);
}
}
@keyframes growWidthAnimation {
from {
width: 0;
}
to {
width: 100%;
}
}
.lang-name { font: 400 11px 'Segoe UI', Ubuntu, Sans-Serif; fill: #434d58 }
#rect-mask rect{
animation: slideInAnimation 1s ease-in-out forwards;
}
.lang-progress{
animation: growWidthAnimation 0.6s ease-in-out forwards;
}
/* Animations */
@keyframes scaleInAnimation {
from {
transform: translate(-5px, 5px) scale(0);
}
to {
transform: translate(-5px, 5px) scale(1);
}
}
@keyframes fadeInAnimation {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
</style>
<rect
data-testid="card-bg"
x="0.5"
y="0.5"
rx="4.5"
height="99%"
stroke="#e4e2e2"
width="449"
fill="#fffefe"
stroke-opacity="1"
/>
<g
data-testid="card-title"
transform="translate(25, 35)"
>
<g transform="translate(0, 0)">
<text
x="0"
y="0"
class="header"
data-testid="header"
>WakaTime Stats (last year)</text>
</g>
</g>
<g
data-testid="main-card-body"
transform="translate(0, 55)"
>
<svg x="0" y="0" width="100%">
<g transform="translate(0, 0)">
<g class="stagger" style="animation-delay: 450ms" transform="translate(25, 0)">
<text class="stat bold" y="12.5" data-testid="Other">Other:</text>
<text
class="stat"
x="305"
y="12.5"
>143 hrs 35 mins</text>
<svg width="175" x="110" y="4">
<rect rx="5" ry="5" x="0" y="0" width="175" height="8" fill="#434d58"></rect>
<svg data-testid="lang-progress" width="67.3%">
<rect
height="8"
fill="#2f80ed"
rx="5" ry="5" x="0" y="0"
class="lang-progress"
style="animation-delay: 750ms;"
/>
</svg>
</svg>
</g>
</g><g transform="translate(0, 25)">
<g class="stagger" style="animation-delay: 600ms" transform="translate(25, 0)">
<text class="stat bold" y="12.5" data-testid="TypeScript">TypeScript:</text>
<text
class="stat"
x="305"
y="12.5"
>25 hrs 21 mins</text>
<svg width="175" x="110" y="4">
<rect rx="5" ry="5" x="0" y="0" width="175" height="8" fill="#434d58"></rect>
<svg data-testid="lang-progress" width="11.88%">
<rect
height="8"
fill="#2f80ed"
rx="5" ry="5" x="0" y="0"
class="lang-progress"
style="animation-delay: 900ms;"
/>
</svg>
</svg>
</g>
</g><g transform="translate(0, 50)">
<g class="stagger" style="animation-delay: 750ms" transform="translate(25, 0)">
<text class="stat bold" y="12.5" data-testid="PHP">PHP:</text>
<text
class="stat"
x="305"
y="12.5"
>18 hrs 56 mins</text>
<svg width="175" x="110" y="4">
<rect rx="5" ry="5" x="0" y="0" width="175" height="8" fill="#434d58"></rect>
<svg data-testid="lang-progress" width="8.88%">
<rect
height="8"
fill="#2f80ed"
rx="5" ry="5" x="0" y="0"
class="lang-progress"
style="animation-delay: 1050ms;"
/>
</svg>
</svg>
</g>
</g><g transform="translate(0, 75)">
<g class="stagger" style="animation-delay: 900ms" transform="translate(25, 0)">
<text class="stat bold" y="12.5" data-testid="Blade Template">Blade Template:</text>
<text
class="stat"
x="305"
y="12.5"
>10 hrs 58 mins</text>
<svg width="175" x="110" y="4">
<rect rx="5" ry="5" x="0" y="0" width="175" height="8" fill="#434d58"></rect>
<svg data-testid="lang-progress" width="5.14%">
<rect
height="8"
fill="#2f80ed"
rx="5" ry="5" x="0" y="0"
class="lang-progress"
style="animation-delay: 1200ms;"
/>
</svg>
</svg>
</g>
</g><g transform="translate(0, 100)">
<g class="stagger" style="animation-delay: 1050ms" transform="translate(25, 0)">
<text class="stat bold" y="12.5" data-testid="Vue.js">Vue.js:</text>
<text
class="stat"
x="305"
y="12.5"
>7 hrs 31 mins</text>
<svg width="175" x="110" y="4">
<rect rx="5" ry="5" x="0" y="0" width="175" height="8" fill="#434d58"></rect>
<svg data-testid="lang-progress" width="3.52%">
<rect
height="8"
fill="#2f80ed"
rx="5" ry="5" x="0" y="0"
class="lang-progress"
style="animation-delay: 1350ms;"
/>
</svg>
</svg>
</g>
</g><g transform="translate(0, 125)">
<g class="stagger" style="animation-delay: 1200ms" transform="translate(25, 0)">
<text class="stat bold" y="12.5" data-testid="JavaScript">JavaScript:</text>
<text
class="stat"
x="305"
y="12.5"
>7 hrs 28 mins</text>
<svg width="175" x="110" y="4">
<rect rx="5" ry="5" x="0" y="0" width="175" height="8" fill="#434d58"></rect>
<svg data-testid="lang-progress" width="3.51%">
<rect
height="8"
fill="#2f80ed"
rx="5" ry="5" x="0" y="0"
class="lang-progress"
style="animation-delay: 1500ms;"
/>
</svg>
</svg>
</g>
</g>
</svg>
</g>
</svg>
`;
@@ -0,0 +1,84 @@
{
"data": {
"user": {
"repositories": {
"totalCount": 139,
"nodes": [
{ "name": "classicLogo", "stargazers": { "totalCount": 1 } },
{ "name": "creativechat", "stargazers": { "totalCount": 1 } },
{ "name": "verlet_tests", "stargazers": { "totalCount": 1 } },
{
"name": "blade-checkout-ui-demo",
"stargazers": { "totalCount": 0 }
},
{
"name": "tslint-plugin-analytics",
"stargazers": { "totalCount": 0 }
},
{ "name": "stargazer", "stargazers": { "totalCount": 0 } },
{
"name": "react-smooth-range-input",
"stargazers": { "totalCount": 0 }
},
{
"name": "csb-git-integration-bug",
"stargazers": { "totalCount": 0 }
},
{ "name": "covid-nepal-web", "stargazers": { "totalCount": 0 } },
{
"name": "shrijan00003.github.io",
"stargazers": { "totalCount": 0 }
},
{ "name": "TheBigCB.com", "stargazers": { "totalCount": 0 } },
{ "name": "html2commonmark", "stargazers": { "totalCount": 0 } },
{ "name": "test-myaction", "stargazers": { "totalCount": 0 } },
{ "name": "react-emoji-render", "stargazers": { "totalCount": 0 } },
{ "name": "sajilo-editor", "stargazers": { "totalCount": 0 } },
{
"name": "coder-aayush.github.io",
"stargazers": { "totalCount": 0 }
},
{ "name": "codesandbox-client", "stargazers": { "totalCount": 0 } },
{ "name": "product-sans", "stargazers": { "totalCount": 0 } },
{ "name": "NodejsBlogSystem", "stargazers": { "totalCount": 0 } },
{ "name": "native-javascript", "stargazers": { "totalCount": 0 } },
{ "name": "p5.js", "stargazers": { "totalCount": 0 } },
{ "name": "gatsbytutorials.com", "stargazers": { "totalCount": 0 } },
{
"name": "hello-world-docker-action",
"stargazers": { "totalCount": 0 }
},
{ "name": "glugmvit.github.io", "stargazers": { "totalCount": 0 } },
{
"name": "react-map-interaction",
"stargazers": { "totalCount": 0 }
},
{ "name": "react-external-image", "stargazers": { "totalCount": 0 } },
{ "name": "gatsby-boilerplate", "stargazers": { "totalCount": 0 } },
{ "name": "YouBackup", "stargazers": { "totalCount": 0 } },
{ "name": "npm-expansions", "stargazers": { "totalCount": 0 } },
{
"name": "Toy-Neural-Network-JS",
"stargazers": { "totalCount": 0 }
},
{ "name": "LSystemCreator", "stargazers": { "totalCount": 0 } },
{ "name": "Happy-2019", "stargazers": { "totalCount": 0 } },
{ "name": "jquery-navScroll", "stargazers": { "totalCount": 0 } },
{ "name": "strml.net", "stargazers": { "totalCount": 0 } },
{ "name": "Logo", "stargazers": { "totalCount": 0 } },
{ "name": "website", "stargazers": { "totalCount": 0 } },
{
"name": "anuraghazra.github.io-old",
"stargazers": { "totalCount": 0 }
},
{ "name": "Quintus", "stargazers": { "totalCount": 0 } },
{ "name": "Electron_experiments", "stargazers": { "totalCount": 0 } }
],
"pageInfo": {
"hasNextPage": false,
"endCursor": "Y3Vyc29yOnYyOpIAzgd5N08="
}
}
}
}
}
@@ -0,0 +1,124 @@
{
"total_count": 583,
"incomplete_results": false,
"items": [
{
"url": "https://api.github.com/repos/razorpay/blade/issues/2622",
"repository_url": "https://api.github.com/repos/razorpay/blade",
"labels_url": "https://api.github.com/repos/razorpay/blade/issues/2622/labels{/name}",
"comments_url": "https://api.github.com/repos/razorpay/blade/issues/2622/comments",
"events_url": "https://api.github.com/repos/razorpay/blade/issues/2622/events",
"html_url": "https://github.com/razorpay/blade/issues/2622",
"id": 3019250106,
"node_id": "I_kwDODhyVk86z9hm6",
"number": 2622,
"title": "Phone input lags when all countries are enabled",
"user": {
"login": "roylen-john",
"id": 32672004,
"node_id": "MDQ6VXNlcjMyNjcyMDA0",
"avatar_url": "https://avatars.githubusercontent.com/u/32672004?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/roylen-john",
"html_url": "https://github.com/roylen-john",
"followers_url": "https://api.github.com/users/roylen-john/followers",
"following_url": "https://api.github.com/users/roylen-john/following{/other_user}",
"gists_url": "https://api.github.com/users/roylen-john/gists{/gist_id}",
"starred_url": "https://api.github.com/users/roylen-john/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/roylen-john/subscriptions",
"organizations_url": "https://api.github.com/users/roylen-john/orgs",
"repos_url": "https://api.github.com/users/roylen-john/repos",
"events_url": "https://api.github.com/users/roylen-john/events{/privacy}",
"received_events_url": "https://api.github.com/users/roylen-john/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"labels": [
],
"state": "closed",
"locked": false,
"assignee": {
"login": "saurabhdaware",
"id": 30949385,
"node_id": "MDQ6VXNlcjMwOTQ5Mzg1",
"avatar_url": "https://avatars.githubusercontent.com/u/30949385?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/saurabhdaware",
"html_url": "https://github.com/saurabhdaware",
"followers_url": "https://api.github.com/users/saurabhdaware/followers",
"following_url": "https://api.github.com/users/saurabhdaware/following{/other_user}",
"gists_url": "https://api.github.com/users/saurabhdaware/gists{/gist_id}",
"starred_url": "https://api.github.com/users/saurabhdaware/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/saurabhdaware/subscriptions",
"organizations_url": "https://api.github.com/users/saurabhdaware/orgs",
"repos_url": "https://api.github.com/users/saurabhdaware/repos",
"events_url": "https://api.github.com/users/saurabhdaware/events{/privacy}",
"received_events_url": "https://api.github.com/users/saurabhdaware/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"assignees": [
{
"login": "saurabhdaware",
"id": 30949385,
"node_id": "MDQ6VXNlcjMwOTQ5Mzg1",
"avatar_url": "https://avatars.githubusercontent.com/u/30949385?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/saurabhdaware",
"html_url": "https://github.com/saurabhdaware",
"followers_url": "https://api.github.com/users/saurabhdaware/followers",
"following_url": "https://api.github.com/users/saurabhdaware/following{/other_user}",
"gists_url": "https://api.github.com/users/saurabhdaware/gists{/gist_id}",
"starred_url": "https://api.github.com/users/saurabhdaware/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/saurabhdaware/subscriptions",
"organizations_url": "https://api.github.com/users/saurabhdaware/orgs",
"repos_url": "https://api.github.com/users/saurabhdaware/repos",
"events_url": "https://api.github.com/users/saurabhdaware/events{/privacy}",
"received_events_url": "https://api.github.com/users/saurabhdaware/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
}
],
"milestone": null,
"comments": 2,
"created_at": "2025-04-25T07:37:15Z",
"updated_at": "2025-05-08T07:31:13Z",
"closed_at": "2025-05-08T07:30:57Z",
"author_association": "NONE",
"type": null,
"active_lock_reason": null,
"sub_issues_summary": {
"total": 0,
"completed": 0,
"percent_completed": 0
},
"issue_dependencies_summary": {
"blocked_by": 0,
"total_blocked_by": 0,
"blocking": 0,
"total_blocking": 0
},
"body": "The PhoneInput component is causing lag in the onboarding-sdk when all countries are enabled. If we reduce the supported countries to a smaller array, it works fine. We need to show all countries as this is a requirement from product.\n\nPossible reason could be the huge number of dom elements along with other elements from the app. This is not replicable in the example shown in docs.\n\nPossible solution would be to add virtualisation to the dropdown.\n\nhttps://github.com/user-attachments/assets/9089eff6-4339-4178-82e0-7304206480c6",
"reactions": {
"url": "https://api.github.com/repos/razorpay/blade/issues/2622/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"timeline_url": "https://api.github.com/repos/razorpay/blade/issues/2622/timeline",
"performed_via_github_app": null,
"state_reason": "completed",
"score": 1.0
}
]
}
@@ -0,0 +1,81 @@
{
"total_count": 1464,
"incomplete_results": false,
"items": [
{
"url": "https://api.github.com/repos/razorpay/blade/issues/3020",
"repository_url": "https://api.github.com/repos/razorpay/blade",
"labels_url": "https://api.github.com/repos/razorpay/blade/issues/3020/labels{/name}",
"comments_url": "https://api.github.com/repos/razorpay/blade/issues/3020/comments",
"events_url": "https://api.github.com/repos/razorpay/blade/issues/3020/events",
"html_url": "https://github.com/razorpay/blade/pull/3020",
"id": 3637156493,
"node_id": "PR_kwDODhyVk860D02D",
"number": 3020,
"title": "Added Link Component to Svelte | Cursor Rules for Effecient React to Svelte Migration",
"user": {
"login": "kashishbehl",
"id": 104421875,
"node_id": "U_kgDOBjlZ8w",
"avatar_url": "https://avatars.githubusercontent.com/u/104421875?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/kashishbehl",
"html_url": "https://github.com/kashishbehl",
"followers_url": "https://api.github.com/users/kashishbehl/followers",
"following_url": "https://api.github.com/users/kashishbehl/following{/other_user}",
"gists_url": "https://api.github.com/users/kashishbehl/gists{/gist_id}",
"starred_url": "https://api.github.com/users/kashishbehl/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/kashishbehl/subscriptions",
"organizations_url": "https://api.github.com/users/kashishbehl/orgs",
"repos_url": "https://api.github.com/users/kashishbehl/repos",
"events_url": "https://api.github.com/users/kashishbehl/events{/privacy}",
"received_events_url": "https://api.github.com/users/kashishbehl/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"labels": [
],
"state": "open",
"locked": false,
"assignee": null,
"assignees": [
],
"milestone": null,
"comments": 2,
"created_at": "2025-11-18T09:48:46Z",
"updated_at": "2025-11-21T06:50:10Z",
"closed_at": null,
"author_association": "NONE",
"type": null,
"active_lock_reason": null,
"draft": true,
"pull_request": {
"url": "https://api.github.com/repos/razorpay/blade/pulls/3020",
"html_url": "https://github.com/razorpay/blade/pull/3020",
"diff_url": "https://github.com/razorpay/blade/pull/3020.diff",
"patch_url": "https://github.com/razorpay/blade/pull/3020.patch",
"merged_at": null
},
"body": "## Description\r\nAdded Initial Changes for Blade Svelte Migration\r\n\r\n1. Cursor Rules for migrating to Svelte\r\n2. Migrated Link Component to blade-svelte\r\n3. Added common utils to blade-core\r\n\r\n|Link type|Screenshot|\r\n|---------|------------|\r\n|Anchor link|<img width=\"352\" height=\"184\" alt=\"image\" src=\"https://github.com/user-attachments/assets/36d39328-aa53-4b2b-abd3-f292905d3d71\" />|\r\n|Button Link|<img width=\"258\" height=\"105\" alt=\"image\" src=\"https://github.com/user-attachments/assets/bb4c566b-4ce2-4579-b5cf-5a383f7ed12a\" />|\r\n|Link with colors|<img width=\"284\" height=\"157\" alt=\"image\" src=\"https://github.com/user-attachments/assets/59cc96f1-8a8b-4b11-9758-280d8ccbc0de\" />|\r\n<!-- Briefly explain the purpose of your PR -->\r\n\r\n## Changes\r\n\r\n<!-- List the specific changes made, consider adding screenshots if relevant -->\r\n\r\n## Additional Information\r\n\r\n<!-- Include any relevant details, links to issues, or additional messages -->\r\n\r\n## Component Checklist\r\n\r\n<!-- Ensure that the following tasks are completed before submitting your PR. Tick the applicable boxes -->\r\n\r\n- [ ] Update Component Status Page\r\n- [ ] Perform Manual Testing in Other Browsers\r\n- [ ] Add KitchenSink Story\r\n- [ ] Add Interaction Tests (if applicable)\r\n- [ ] Add changeset\r\n",
"reactions": {
"url": "https://api.github.com/repos/razorpay/blade/issues/3020/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"timeline_url": "https://api.github.com/repos/razorpay/blade/issues/3020/timeline",
"performed_via_github_app": null,
"state_reason": null,
"score": 1.0
}
]
}
+150
View File
@@ -0,0 +1,150 @@
{
"total_count": 27219,
"incomplete_results": false,
"items": [
{
"url": "https://api.github.com/repos/soham2008xyz/product-sans/commits/ee082f134309ca7cffe0378521ada84bcf8a9ef9",
"sha": "ee082f134309ca7cffe0378521ada84bcf8a9ef9",
"node_id": "MDY6Q29tbWl0MTY3OTEzMjExOmVlMDgyZjEzNDMwOWNhN2NmZmUwMzc4NTIxYWRhODRiY2Y4YTllZjk=",
"html_url": "https://github.com/soham2008xyz/product-sans/commit/ee082f134309ca7cffe0378521ada84bcf8a9ef9",
"comments_url": "https://api.github.com/repos/soham2008xyz/product-sans/commits/ee082f134309ca7cffe0378521ada84bcf8a9ef9/comments",
"commit": {
"url": "https://api.github.com/repos/soham2008xyz/product-sans/git/commits/ee082f134309ca7cffe0378521ada84bcf8a9ef9",
"author": {
"date": "2019-12-30T21:17:53.000+05:30",
"name": "Anurag Hazra",
"email": "hazru.anurag@gmail.com"
},
"committer": {
"date": "2019-12-30T21:17:53.000+05:30",
"name": "GitHub",
"email": "noreply@github.com"
},
"message": "chore: specified format for @font-face",
"tree": {
"url": "https://api.github.com/repos/soham2008xyz/product-sans/git/trees/3727e52a68d1be36cfaa2a5b3c3c9f7e2fbf956a",
"sha": "3727e52a68d1be36cfaa2a5b3c3c9f7e2fbf956a"
},
"comment_count": 0
},
"author": {
"login": "anuraghazra",
"id": 35374649,
"node_id": "MDQ6VXNlcjM1Mzc0NjQ5",
"avatar_url": "https://avatars.githubusercontent.com/u/35374649?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/anuraghazra",
"html_url": "https://github.com/anuraghazra",
"followers_url": "https://api.github.com/users/anuraghazra/followers",
"following_url": "https://api.github.com/users/anuraghazra/following{/other_user}",
"gists_url": "https://api.github.com/users/anuraghazra/gists{/gist_id}",
"starred_url": "https://api.github.com/users/anuraghazra/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/anuraghazra/subscriptions",
"organizations_url": "https://api.github.com/users/anuraghazra/orgs",
"repos_url": "https://api.github.com/users/anuraghazra/repos",
"events_url": "https://api.github.com/users/anuraghazra/events{/privacy}",
"received_events_url": "https://api.github.com/users/anuraghazra/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"committer": {
"login": "web-flow",
"id": 19864447,
"node_id": "MDQ6VXNlcjE5ODY0NDQ3",
"avatar_url": "https://avatars.githubusercontent.com/u/19864447?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/web-flow",
"html_url": "https://github.com/web-flow",
"followers_url": "https://api.github.com/users/web-flow/followers",
"following_url": "https://api.github.com/users/web-flow/following{/other_user}",
"gists_url": "https://api.github.com/users/web-flow/gists{/gist_id}",
"starred_url": "https://api.github.com/users/web-flow/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/web-flow/subscriptions",
"organizations_url": "https://api.github.com/users/web-flow/orgs",
"repos_url": "https://api.github.com/users/web-flow/repos",
"events_url": "https://api.github.com/users/web-flow/events{/privacy}",
"received_events_url": "https://api.github.com/users/web-flow/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"parents": [
{
"url": "https://api.github.com/repos/soham2008xyz/product-sans/commits/e4ef4077272a5fa89304f7126578693491d85653",
"html_url": "https://github.com/soham2008xyz/product-sans/commit/e4ef4077272a5fa89304f7126578693491d85653",
"sha": "e4ef4077272a5fa89304f7126578693491d85653"
}
],
"repository": {
"id": 167913211,
"node_id": "MDEwOlJlcG9zaXRvcnkxNjc5MTMyMTE=",
"name": "product-sans",
"full_name": "soham2008xyz/product-sans",
"private": false,
"owner": {
"login": "soham2008xyz",
"id": 7334295,
"node_id": "MDQ6VXNlcjczMzQyOTU=",
"avatar_url": "https://avatars.githubusercontent.com/u/7334295?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/soham2008xyz",
"html_url": "https://github.com/soham2008xyz",
"followers_url": "https://api.github.com/users/soham2008xyz/followers",
"following_url": "https://api.github.com/users/soham2008xyz/following{/other_user}",
"gists_url": "https://api.github.com/users/soham2008xyz/gists{/gist_id}",
"starred_url": "https://api.github.com/users/soham2008xyz/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/soham2008xyz/subscriptions",
"organizations_url": "https://api.github.com/users/soham2008xyz/orgs",
"repos_url": "https://api.github.com/users/soham2008xyz/repos",
"events_url": "https://api.github.com/users/soham2008xyz/events{/privacy}",
"received_events_url": "https://api.github.com/users/soham2008xyz/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"html_url": "https://github.com/soham2008xyz/product-sans",
"description": "Product Sans webfont from Google",
"fork": false,
"url": "https://api.github.com/repos/soham2008xyz/product-sans",
"forks_url": "https://api.github.com/repos/soham2008xyz/product-sans/forks",
"keys_url": "https://api.github.com/repos/soham2008xyz/product-sans/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/soham2008xyz/product-sans/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/soham2008xyz/product-sans/teams",
"hooks_url": "https://api.github.com/repos/soham2008xyz/product-sans/hooks",
"issue_events_url": "https://api.github.com/repos/soham2008xyz/product-sans/issues/events{/number}",
"events_url": "https://api.github.com/repos/soham2008xyz/product-sans/events",
"assignees_url": "https://api.github.com/repos/soham2008xyz/product-sans/assignees{/user}",
"branches_url": "https://api.github.com/repos/soham2008xyz/product-sans/branches{/branch}",
"tags_url": "https://api.github.com/repos/soham2008xyz/product-sans/tags",
"blobs_url": "https://api.github.com/repos/soham2008xyz/product-sans/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/soham2008xyz/product-sans/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/soham2008xyz/product-sans/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/soham2008xyz/product-sans/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/soham2008xyz/product-sans/statuses/{sha}",
"languages_url": "https://api.github.com/repos/soham2008xyz/product-sans/languages",
"stargazers_url": "https://api.github.com/repos/soham2008xyz/product-sans/stargazers",
"contributors_url": "https://api.github.com/repos/soham2008xyz/product-sans/contributors",
"subscribers_url": "https://api.github.com/repos/soham2008xyz/product-sans/subscribers",
"subscription_url": "https://api.github.com/repos/soham2008xyz/product-sans/subscription",
"commits_url": "https://api.github.com/repos/soham2008xyz/product-sans/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/soham2008xyz/product-sans/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/soham2008xyz/product-sans/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/soham2008xyz/product-sans/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/soham2008xyz/product-sans/contents/{+path}",
"compare_url": "https://api.github.com/repos/soham2008xyz/product-sans/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/soham2008xyz/product-sans/merges",
"archive_url": "https://api.github.com/repos/soham2008xyz/product-sans/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/soham2008xyz/product-sans/downloads",
"issues_url": "https://api.github.com/repos/soham2008xyz/product-sans/issues{/number}",
"pulls_url": "https://api.github.com/repos/soham2008xyz/product-sans/pulls{/number}",
"milestones_url": "https://api.github.com/repos/soham2008xyz/product-sans/milestones{/number}",
"notifications_url": "https://api.github.com/repos/soham2008xyz/product-sans/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/soham2008xyz/product-sans/labels{/name}",
"releases_url": "https://api.github.com/repos/soham2008xyz/product-sans/releases{/id}",
"deployments_url": "https://api.github.com/repos/soham2008xyz/product-sans/deployments"
},
"score": 1.0
}
]
}
+25
View File
@@ -0,0 +1,25 @@
{
"data": {
"viewer": {
"gist": {
"description": "List of countries and territories in English and Spanish: name, continent, capital, dial code, country codes, TLD, and area in sq km. Lista de países y territorios en Inglés y Español: nombre, continente, capital, código de teléfono, códigos de país, dominio y área en km cuadrados. Updated 2024",
"owner": {
"login": "Yizack"
},
"stargazerCount": 41,
"forks": {
"totalCount": 14
},
"files": [
{
"name": "countries.json",
"language": {
"name": "JSON"
},
"size": 88350
}
]
}
}
}
}
@@ -0,0 +1,39 @@
{
"data": {
"user": {
"repository": {
"name": "github-readme-stats",
"nameWithOwner": "anuraghazra/github-readme-stats",
"isPrivate": false,
"isArchived": false,
"isTemplate": false,
"stargazers": {
"totalCount": 76994
},
"description": ":zap: Dynamically generated stats for your github readmes",
"primaryLanguage": {
"color": "#f1e05a",
"id": "MDg6TGFuZ3VhZ2UxNDA=",
"name": "JavaScript"
},
"forkCount": 26873
}
},
"organization": null
},
"errors": [
{
"type": "NOT_FOUND",
"path": [
"organization"
],
"locations": [
{
"line": 25,
"column": 9
}
],
"message": "Could not resolve to an Organization with the login of 'anuraghazra'."
}
]
}
@@ -0,0 +1,81 @@
{
"total_count": 796,
"incomplete_results": false,
"items": [
{
"url": "https://api.github.com/repos/razorpay/blade/issues/3020",
"repository_url": "https://api.github.com/repos/razorpay/blade",
"labels_url": "https://api.github.com/repos/razorpay/blade/issues/3020/labels{/name}",
"comments_url": "https://api.github.com/repos/razorpay/blade/issues/3020/comments",
"events_url": "https://api.github.com/repos/razorpay/blade/issues/3020/events",
"html_url": "https://github.com/razorpay/blade/pull/3020",
"id": 3637156493,
"node_id": "PR_kwDODhyVk860D02D",
"number": 3020,
"title": "Added Link Component to Svelte | Cursor Rules for Effecient React to Svelte Migration",
"user": {
"login": "kashishbehl",
"id": 104421875,
"node_id": "U_kgDOBjlZ8w",
"avatar_url": "https://avatars.githubusercontent.com/u/104421875?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/kashishbehl",
"html_url": "https://github.com/kashishbehl",
"followers_url": "https://api.github.com/users/kashishbehl/followers",
"following_url": "https://api.github.com/users/kashishbehl/following{/other_user}",
"gists_url": "https://api.github.com/users/kashishbehl/gists{/gist_id}",
"starred_url": "https://api.github.com/users/kashishbehl/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/kashishbehl/subscriptions",
"organizations_url": "https://api.github.com/users/kashishbehl/orgs",
"repos_url": "https://api.github.com/users/kashishbehl/repos",
"events_url": "https://api.github.com/users/kashishbehl/events{/privacy}",
"received_events_url": "https://api.github.com/users/kashishbehl/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"labels": [
],
"state": "open",
"locked": false,
"assignee": null,
"assignees": [
],
"milestone": null,
"comments": 2,
"created_at": "2025-11-18T09:48:46Z",
"updated_at": "2025-11-21T06:50:10Z",
"closed_at": null,
"author_association": "NONE",
"type": null,
"active_lock_reason": null,
"draft": true,
"pull_request": {
"url": "https://api.github.com/repos/razorpay/blade/pulls/3020",
"html_url": "https://github.com/razorpay/blade/pull/3020",
"diff_url": "https://github.com/razorpay/blade/pull/3020.diff",
"patch_url": "https://github.com/razorpay/blade/pull/3020.patch",
"merged_at": null
},
"body": "## Description\r\nAdded Initial Changes for Blade Svelte Migration\r\n\r\n1. Cursor Rules for migrating to Svelte\r\n2. Migrated Link Component to blade-svelte\r\n3. Added common utils to blade-core\r\n\r\n|Link type|Screenshot|\r\n|---------|------------|\r\n|Anchor link|<img width=\"352\" height=\"184\" alt=\"image\" src=\"https://github.com/user-attachments/assets/36d39328-aa53-4b2b-abd3-f292905d3d71\" />|\r\n|Button Link|<img width=\"258\" height=\"105\" alt=\"image\" src=\"https://github.com/user-attachments/assets/bb4c566b-4ce2-4579-b5cf-5a383f7ed12a\" />|\r\n|Link with colors|<img width=\"284\" height=\"157\" alt=\"image\" src=\"https://github.com/user-attachments/assets/59cc96f1-8a8b-4b11-9758-280d8ccbc0de\" />|\r\n<!-- Briefly explain the purpose of your PR -->\r\n\r\n## Changes\r\n\r\n<!-- List the specific changes made, consider adding screenshots if relevant -->\r\n\r\n## Additional Information\r\n\r\n<!-- Include any relevant details, links to issues, or additional messages -->\r\n\r\n## Component Checklist\r\n\r\n<!-- Ensure that the following tasks are completed before submitting your PR. Tick the applicable boxes -->\r\n\r\n- [ ] Update Component Status Page\r\n- [ ] Perform Manual Testing in Other Browsers\r\n- [ ] Add KitchenSink Story\r\n- [ ] Add Interaction Tests (if applicable)\r\n- [ ] Add changeset\r\n",
"reactions": {
"url": "https://api.github.com/repos/razorpay/blade/issues/3020/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"timeline_url": "https://api.github.com/repos/razorpay/blade/issues/3020/timeline",
"performed_via_github_app": null,
"state_reason": null,
"score": 1.0
}
]
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,196 @@
{
"data": {
"user": {
"name": "Anurag Hazra",
"login": "anuraghazra",
"commits": { "totalCommitContributions": 48 },
"reviews": { "totalPullRequestReviewContributions": 150 },
"repositoriesContributedTo": { "totalCount": 1 },
"pullRequests": { "totalCount": 820 },
"openIssues": { "totalCount": 72 },
"closedIssues": { "totalCount": 108 },
"followers": { "totalCount": 14409 },
"repositories": {
"totalCount": 139,
"nodes": [
{
"name": "github-readme-stats",
"stargazers": { "totalCount": 76994 }
},
{ "name": "Verly.js", "stargazers": { "totalCount": 696 } },
{
"name": "anuraghazra.github.io",
"stargazers": { "totalCount": 608 }
},
{ "name": "anuraghazra", "stargazers": { "totalCount": 375 } },
{ "name": "type-trident", "stargazers": { "totalCount": 359 } },
{ "name": "BugVilla", "stargazers": { "totalCount": 232 } },
{ "name": "convoychat", "stargazers": { "totalCount": 214 } },
{ "name": "CanvasFun", "stargazers": { "totalCount": 211 } },
{ "name": "EvolutionAquerium", "stargazers": { "totalCount": 192 } },
{ "name": "typelevel-parser", "stargazers": { "totalCount": 147 } },
{ "name": "VerlyRangeSlider", "stargazers": { "totalCount": 135 } },
{
"name": "vscode-strip-ts-copy",
"stargazers": { "totalCount": 72 }
},
{ "name": "react-folder-tree", "stargazers": { "totalCount": 54 } },
{ "name": "Atomic.js", "stargazers": { "totalCount": 53 } },
{ "name": "ToyLang", "stargazers": { "totalCount": 51 } },
{
"name": "design-patterns-everyday",
"stargazers": { "totalCount": 46 }
},
{ "name": "gatsby", "stargazers": { "totalCount": 36 } },
{ "name": "Slime", "stargazers": { "totalCount": 35 } },
{ "name": "Candy.js", "stargazers": { "totalCount": 34 } },
{ "name": "ShaderExpo", "stargazers": { "totalCount": 33 } },
{ "name": "Nothing", "stargazers": { "totalCount": 32 } },
{
"name": "peerlist-profile-action",
"stargazers": { "totalCount": 30 }
},
{
"name": "facebook-reaction-animation",
"stargazers": { "totalCount": 29 }
},
{
"name": "react-stripe-dropdown",
"stargazers": { "totalCount": 27 }
},
{ "name": "QuickerPoll", "stargazers": { "totalCount": 27 } },
{
"name": "playground-format-on-save",
"stargazers": { "totalCount": 24 }
},
{ "name": "ParticleBrush", "stargazers": { "totalCount": 23 } },
{ "name": "graphql-oauth", "stargazers": { "totalCount": 21 } },
{ "name": "parasites", "stargazers": { "totalCount": 21 } },
{
"name": "twitter-banner-jokes",
"stargazers": { "totalCount": 18 }
},
{ "name": "verly-cpp", "stargazers": { "totalCount": 16 } },
{
"name": "gatsby-github-issues-blog",
"stargazers": { "totalCount": 16 }
},
{ "name": "NikeHyperAce", "stargazers": { "totalCount": 12 } },
{ "name": "rust-particles", "stargazers": { "totalCount": 11 } },
{ "name": "VerletDrawing", "stargazers": { "totalCount": 10 } },
{
"name": "graphql-jwt-auth-test",
"stargazers": { "totalCount": 9 }
},
{
"name": "anuraghazra.github.io-old-react",
"stargazers": { "totalCount": 9 }
},
{ "name": "react18-ssr-test", "stargazers": { "totalCount": 8 } },
{ "name": "GyroDodge", "stargazers": { "totalCount": 8 } },
{ "name": "go-phyllotaxis", "stargazers": { "totalCount": 6 } },
{ "name": "graphql-oauth-client", "stargazers": { "totalCount": 6 } },
{ "name": "code-runner-action", "stargazers": { "totalCount": 6 } },
{
"name": "GithubActionsPlayground",
"stargazers": { "totalCount": 6 }
},
{ "name": "Loader.js", "stargazers": { "totalCount": 6 } },
{ "name": "ts-essentials", "stargazers": { "totalCount": 5 } },
{ "name": "chakra-ui", "stargazers": { "totalCount": 5 } },
{ "name": "text-to-handwriting", "stargazers": { "totalCount": 5 } },
{ "name": "build-your-own-x", "stargazers": { "totalCount": 5 } },
{
"name": "nodejs-dynamic-restapi",
"stargazers": { "totalCount": 5 }
},
{ "name": "DevYouTubeList", "stargazers": { "totalCount": 5 } },
{ "name": "FlockingBlackHole", "stargazers": { "totalCount": 5 } },
{ "name": "webgpu-boids", "stargazers": { "totalCount": 4 } },
{ "name": "test-githubblock", "stargazers": { "totalCount": 4 } },
{
"name": "renderless-components",
"stargazers": { "totalCount": 4 }
},
{ "name": "reakit", "stargazers": { "totalCount": 4 } },
{ "name": "micro-open-graph", "stargazers": { "totalCount": 4 } },
{ "name": "rest-and-graphql", "stargazers": { "totalCount": 4 } },
{ "name": "abell-issues-blog", "stargazers": { "totalCount": 4 } },
{ "name": "VanillaMVC", "stargazers": { "totalCount": 4 } },
{ "name": "covid19-sim", "stargazers": { "totalCount": 4 } },
{ "name": "YoutubeDownloader", "stargazers": { "totalCount": 4 } },
{ "name": "WebGL.js", "stargazers": { "totalCount": 4 } },
{ "name": "verlet.js", "stargazers": { "totalCount": 4 } },
{ "name": "test-github-ts", "stargazers": { "totalCount": 3 } },
{
"name": "tw-dynamic-interpolation",
"stargazers": { "totalCount": 3 }
},
{
"name": "ts-string-interpolator",
"stargazers": { "totalCount": 3 }
},
{ "name": "AnuReact", "stargazers": { "totalCount": 3 } },
{ "name": "CanvasBalls", "stargazers": { "totalCount": 3 } },
{ "name": "circleci-test", "stargazers": { "totalCount": 3 } },
{
"name": "gatsby-starter-netlify-cms",
"stargazers": { "totalCount": 3 }
},
{ "name": "test-fork-workflow", "stargazers": { "totalCount": 2 } },
{
"name": "test-codesandbox-projects",
"stargazers": { "totalCount": 2 }
},
{
"name": "codesandbox-template-astro",
"stargazers": { "totalCount": 2 }
},
{ "name": "apollo", "stargazers": { "totalCount": 2 } },
{ "name": "api-docs", "stargazers": { "totalCount": 2 } },
{ "name": "Buddies-movie", "stargazers": { "totalCount": 2 } },
{ "name": "2k76", "stargazers": { "totalCount": 2 } },
{
"name": "gatsby-remark-embedder",
"stargazers": { "totalCount": 2 }
},
{ "name": "weird-hello-worlds", "stargazers": { "totalCount": 2 } },
{
"name": "rn-tabview-test-repro",
"stargazers": { "totalCount": 1 }
},
{ "name": "tailwindcss-jit", "stargazers": { "totalCount": 1 } },
{ "name": "DefinitelyTyped", "stargazers": { "totalCount": 1 } },
{
"name": "server-components-demo",
"stargazers": { "totalCount": 1 }
},
{ "name": "volant-vo", "stargazers": { "totalCount": 1 } },
{ "name": "react-spectrum", "stargazers": { "totalCount": 1 } },
{ "name": "webhooks-test", "stargazers": { "totalCount": 1 } },
{ "name": "react-showdown", "stargazers": { "totalCount": 1 } },
{ "name": "transcode", "stargazers": { "totalCount": 1 } },
{ "name": "awake-yet-action", "stargazers": { "totalCount": 1 } },
{ "name": "bradgarropy.com", "stargazers": { "totalCount": 1 } },
{
"name": "gatsby-plugin-social-banners",
"stargazers": { "totalCount": 1 }
},
{ "name": "Tour360", "stargazers": { "totalCount": 1 } },
{ "name": "blizard.js", "stargazers": { "totalCount": 1 } },
{ "name": "keep-a-changelog", "stargazers": { "totalCount": 1 } },
{ "name": "vulnerabilities", "stargazers": { "totalCount": 1 } },
{ "name": "harleydavidson", "stargazers": { "totalCount": 1 } },
{ "name": "awesome-webgl", "stargazers": { "totalCount": 1 } },
{ "name": "NewtonsInterpolation", "stargazers": { "totalCount": 1 } },
{ "name": "now-github-starter", "stargazers": { "totalCount": 1 } },
{ "name": "simplerockets", "stargazers": { "totalCount": 1 } }
],
"pageInfo": {
"hasNextPage": true,
"endCursor": "Y3Vyc29yOnYyOpIBzgh5q48="
}
}
}
}
}
@@ -0,0 +1,361 @@
{
"id": "10d3dbf0-217c-451a-b39d-7125faca6776",
"user_id": "2dd5e7c6-e792-422f-9f0e-e76985af66e2",
"range": "last_year",
"timeout": 15,
"writes_only": false,
"holidays": 231,
"status": "ok",
"is_stuck": false,
"days_minus_holidays": 134,
"percent_calculated": 100,
"is_already_updating": false,
"is_up_to_date": true,
"total_seconds": 263996.570273,
"days_including_holidays": 365,
"total_seconds_including_other_language": 770251.949874,
"daily_average_including_other_language": 5748,
"daily_average": 1970,
"human_readable_total_including_other_language": "213 hrs 57 mins",
"operating_systems": [
{
"total_seconds": 496480.13012,
"name": "Unknown OS",
"percent": 64.46,
"digital": "137:54",
"decimal": "137.90",
"text": "137 hrs 54 mins",
"hours": 137,
"minutes": 54
},
{
"total_seconds": 272853.07107,
"name": "Linux",
"percent": 35.42,
"digital": "75:47",
"decimal": "75.78",
"text": "75 hrs 47 mins",
"hours": 75,
"minutes": 47
},
{
"total_seconds": 918.748684,
"name": "Windows",
"percent": 0.12,
"digital": "0:15",
"decimal": "0.25",
"text": "15 mins",
"hours": 0,
"minutes": 15
}
],
"categories": [
{
"name": "Meeting",
"total_seconds": 496480.13012,
"percent": 64.46,
"digital": "137:54",
"decimal": "137.90",
"text": "137 hrs 54 mins",
"hours": 137,
"minutes": 54
},
{
"name": "Coding",
"total_seconds": 273771.819754,
"percent": 35.54,
"digital": "76:02",
"decimal": "76.03",
"text": "76 hrs 2 mins",
"hours": 76,
"minutes": 2
}
],
"editors": [
{
"total_seconds": 496480.13012,
"name": "Google Calendar",
"percent": 64.46,
"digital": "137:54",
"decimal": "137.90",
"text": "137 hrs 54 mins",
"hours": 137,
"minutes": 54
},
{
"total_seconds": 250778.595434,
"name": "VS Code",
"percent": 32.56,
"digital": "69:39",
"decimal": "69.65",
"text": "69 hrs 39 mins",
"hours": 69,
"minutes": 39
},
{
"total_seconds": 22993.22432,
"name": "DataGrip",
"percent": 2.99,
"digital": "6:23",
"decimal": "6.38",
"text": "6 hrs 23 mins",
"hours": 6,
"minutes": 23
}
],
"human_readable_daily_average_including_other_language": "1 hr 35 mins",
"is_up_to_date_pending_future": false,
"human_readable_total": "73 hrs 19 mins",
"languages": [
{
"name": "Other",
"total_seconds": 506255.379601,
"percent": 65.73,
"digital": "140:37",
"decimal": "140.62",
"text": "140 hrs 37 mins",
"hours": 140,
"minutes": 37
},
{
"name": "TypeScript",
"total_seconds": 74336.229167,
"percent": 9.65,
"digital": "20:38",
"decimal": "20.63",
"text": "20 hrs 38 mins",
"hours": 20,
"minutes": 38
},
{
"name": "PHP",
"total_seconds": 41144.797498,
"percent": 5.34,
"digital": "11:25",
"decimal": "11.42",
"text": "11 hrs 25 mins",
"hours": 11,
"minutes": 25
},
{
"name": "Vue.js",
"total_seconds": 27060.047966,
"percent": 3.51,
"digital": "7:31",
"decimal": "7.52",
"text": "7 hrs 31 mins",
"hours": 7,
"minutes": 31
},
{
"name": "JavaScript",
"total_seconds": 26924.099536,
"percent": 3.5,
"digital": "7:28",
"decimal": "7.47",
"text": "7 hrs 28 mins",
"hours": 7,
"minutes": 28
},
{
"name": "JSON",
"total_seconds": 26366.784244,
"percent": 3.42,
"digital": "7:19",
"decimal": "7.32",
"text": "7 hrs 19 mins",
"hours": 7,
"minutes": 19
},
{
"name": "SQL",
"total_seconds": 23022.426581,
"percent": 2.99,
"digital": "6:23",
"decimal": "6.38",
"text": "6 hrs 23 mins",
"hours": 6,
"minutes": 23
},
{
"name": "Blade Template",
"total_seconds": 15362.231057,
"percent": 1.99,
"digital": "4:16",
"decimal": "4.27",
"text": "4 hrs 16 mins",
"hours": 4,
"minutes": 16
},
{
"name": "Bash",
"total_seconds": 8844.393415,
"percent": 1.15,
"digital": "2:27",
"decimal": "2.45",
"text": "2 hrs 27 mins",
"hours": 2,
"minutes": 27
},
{
"name": "HTML",
"total_seconds": 8555.093038,
"percent": 1.11,
"digital": "2:22",
"decimal": "2.37",
"text": "2 hrs 22 mins",
"hours": 2,
"minutes": 22
},
{
"name": "Markdown",
"total_seconds": 3799.950136,
"percent": 0.49,
"digital": "1:03",
"decimal": "1.05",
"text": "1 hr 3 mins",
"hours": 1,
"minutes": 3
},
{
"name": "Python",
"total_seconds": 3182.262429,
"percent": 0.41,
"digital": "0:53",
"decimal": "0.88",
"text": "53 mins",
"hours": 0,
"minutes": 53
},
{
"name": "SCSS",
"total_seconds": 1421.7404,
"percent": 0.18,
"digital": "0:23",
"decimal": "0.38",
"text": "23 mins",
"hours": 0,
"minutes": 23
},
{
"name": "TSConfig",
"total_seconds": 1184.367779,
"percent": 0.15,
"digital": "0:19",
"decimal": "0.32",
"text": "19 mins",
"hours": 0,
"minutes": 19
},
{
"name": "TOML",
"total_seconds": 1073.305056,
"percent": 0.14,
"digital": "0:17",
"decimal": "0.28",
"text": "17 mins",
"hours": 0,
"minutes": 17
},
{
"name": "Image (svg)",
"total_seconds": 1065.634724,
"percent": 0.14,
"digital": "0:17",
"decimal": "0.28",
"text": "17 mins",
"hours": 0,
"minutes": 17
},
{
"name": "Text",
"total_seconds": 220.856383,
"percent": 0.03,
"digital": "0:03",
"decimal": "0.05",
"text": "3 mins",
"hours": 0,
"minutes": 3
},
{
"name": "CSS",
"total_seconds": 205.648265,
"percent": 0.03,
"digital": "0:03",
"decimal": "0.05",
"text": "3 mins",
"hours": 0,
"minutes": 3
},
{
"name": "Git Config",
"total_seconds": 89.248561,
"percent": 0.01,
"digital": "0:01",
"decimal": "0.02",
"text": "1 min",
"hours": 0,
"minutes": 1
},
{
"name": "Makefile",
"total_seconds": 77.397983,
"percent": 0.01,
"digital": "0:01",
"decimal": "0.02",
"text": "1 min",
"hours": 0,
"minutes": 1
},
{
"name": "Diff",
"total_seconds": 36.762629,
"percent": 0,
"digital": "0:00",
"decimal": "0.00",
"text": "0 secs",
"hours": 0,
"minutes": 0
},
{
"name": "GitIgnore file",
"total_seconds": 8.992,
"percent": 0,
"digital": "0:00",
"decimal": "0.00",
"text": "0 secs",
"hours": 0,
"minutes": 0
},
{
"name": "YAML",
"total_seconds": 8.961989,
"percent": 0,
"digital": "0:00",
"decimal": "0.00",
"text": "0 secs",
"hours": 0,
"minutes": 0
},
{
"name": "Docker",
"total_seconds": 5.339437,
"percent": 0,
"digital": "0:00",
"decimal": "0.00",
"text": "0 secs",
"hours": 0,
"minutes": 0
}
],
"human_readable_daily_average": "32 mins",
"is_cached": true,
"username": "ffflabs",
"is_including_today": false,
"human_readable_range": "last year",
"is_coding_activity_visible": true,
"is_language_usage_visible": true,
"is_editor_usage_visible": true,
"is_category_usage_visible": true,
"is_os_usage_visible": true
}