Skip to content
Snippets Groups Projects
Commit d475c846 authored by Štěpán Šonovský's avatar Štěpán Šonovský
Browse files

Merge branch 'master' into 'main'

Initial commit

See merge request !1
parents 5c59bae4 9095b37f
No related branches found
No related tags found
1 merge request!1Initial commit
Showing
with 5339 additions and 0 deletions
{
"extends": "next/core-web-vitals"
}
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
.yarn/install-state.gz
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# local env files
.env*.local
# vercel
.vercel
# typescript
*.tsbuildinfo
next-env.d.ts
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# GitHub Copilot persisted chat sessions
/copilot/chatSessions
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.idea/copilot/chatSessions" />
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
</profile>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/git_app.iml" filepath="$PROJECT_DIR$/.idea/git_app.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
\ No newline at end of file
/** @type {import('next').NextConfig} */
const nextConfig = {};
export default nextConfig;
This diff is collapsed.
{
"name": "git_app",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"@gitbeaker/rest": "^40.0.3",
"axios": "^1.7.2",
"next": "14.2.4",
"react": "^18",
"react-dom": "^18"
},
"devDependencies": {
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"eslint": "^8",
"eslint-config-next": "14.2.4",
"postcss": "^8",
"tailwindcss": "^3.4.1",
"typescript": "^5"
}
}
/** @type {import('postcss-load-config').Config} */
const config = {
plugins: {
tailwindcss: {},
},
};
export default config;
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 283 64"><path fill="black" d="M141 16c-11 0-19 7-19 18s9 18 20 18c7 0 13-3 16-7l-7-5c-2 3-6 4-9 4-5 0-9-3-10-7h28v-3c0-11-8-18-19-18zm-9 15c1-4 4-7 9-7s8 3 9 7h-18zm117-15c-11 0-19 7-19 18s9 18 20 18c6 0 12-3 16-7l-8-5c-2 3-5 4-8 4-5 0-9-3-11-7h28l1-3c0-11-8-18-19-18zm-10 15c2-4 5-7 10-7s8 3 9 7h-19zm-39 3c0 6 4 10 10 10 4 0 7-2 9-5l8 5c-3 5-9 8-17 8-11 0-19-7-19-18s8-18 19-18c8 0 14 3 17 8l-8 5c-2-3-5-5-9-5-6 0-10 4-10 10zm83-29v46h-9V5h9zM37 0l37 64H0L37 0zm92 5-27 48L74 5h10l18 30 17-30h10zm59 12v10l-3-1c-6 0-10 4-10 10v15h-9V17h9v9c0-5 6-9 13-9z"/></svg>
\ No newline at end of file
"use client"
import React, { useState } from 'react';
import CommitList from './CommitList';
import CommitDetail from './CommitDetail';
const App: React.FC = () => {
const [projectId] = useState<string>('xsonovsk/bc');
const [token] = useState<string>('f3Lx-aBfJis12TsRoQtt');
const [selectedCommit, setSelectedCommit] = useState<string | null>(null);
const handleCommitClick = (commitId: string) => {
setSelectedCommit(commitId);
};
return (
<div>
<h1>GitLab Commits</h1>
<CommitList projectId={projectId} token={token} onCommitClick={handleCommitClick} />
{selectedCommit && (
<CommitDetail projectId={projectId} commitId={selectedCommit} token={token} />
)}
</div>
);
};
export default App;
import React, { useEffect, useState } from 'react';
import { Commits } from '@gitbeaker/rest';
import host from '../../utils';
interface CommitDetailProps {
projectId: string;
commitId: string;
token: string;
}
const CommitDetail: React.FC<CommitDetailProps> = ({ projectId, commitId, token }) => {
const [commit, setCommit] = useState<any>(null);
useEffect(() => {
const api = new Commits({ host: host, token });
api.show(projectId, commitId).then(data => {
setCommit(data);
});
}, [projectId, commitId, token]);
if (!commit) return <div>Loading...</div>;
return (
<div>
<h2>Commit Detail</h2>
<p><strong>Title:</strong> {commit.title}</p>
<p><strong>Author:</strong> {commit.author_name}</p>
<p><strong>Date:</strong> {commit.created_at}</p>
<p><strong>Message:</strong> {commit.message}</p>
</div>
);
};
export default CommitDetail;
// src/CommitList.tsx
import React, { useEffect, useState } from 'react';
import { Commits } from '@gitbeaker/rest';
import host from '../../utils';
interface CommitListProps {
projectId: string;
token: string;
onCommitClick: (commitId: string) => void;
}
const CommitList: React.FC<CommitListProps> = ({ projectId, token, onCommitClick }) => {
const [commits, setCommits] = useState<any[]>([]);
useEffect(() => {
const api = new Commits({ host: host, token });
api.all(projectId).then(data => {
setCommits(data);
});
}, [projectId, token]);
return (
<ul>
{commits.map(commit => (
<li key={commit.id} onClick={() => onCommitClick(commit.id)}>
{commit.title}
</li>
))}
</ul>
);
};
export default CommitList;
src/app/favicon.ico

25.3 KiB

@tailwind base;
@tailwind components;
@tailwind utilities;
:root {
--foreground-rgb: 0, 0, 0;
--background-start-rgb: 214, 219, 220;
--background-end-rgb: 255, 255, 255;
}
@media (prefers-color-scheme: dark) {
:root {
--foreground-rgb: 255, 255, 255;
--background-start-rgb: 0, 0, 0;
--background-end-rgb: 0, 0, 0;
}
}
body {
color: rgb(var(--foreground-rgb));
background: linear-gradient(
to bottom,
transparent,
rgb(var(--background-end-rgb))
)
rgb(var(--background-start-rgb));
}
@layer utilities {
.text-balance {
text-wrap: balance;
}
}
// src/hooks/useCommitDetail.ts
import { useEffect, useState } from 'react';
import { Commits } from '@gitbeaker/rest';
import host from "@/utils";
const useCommitDetails = (projectId: string, commitId: string, token: string) => {
const [commit, setCommit] = useState<any>(null);
useEffect(() => {
const api = new Commits({ host: host, token });
api.show(projectId, commitId).then(data => {
setCommit(data);
});
}, [projectId, commitId, token]);
return commit;
};
export default useCommitDetails;
// src/hooks/useCommits.ts
import { useEffect, useState } from 'react';
import { Commits } from '@gitbeaker/rest';
import host from "@/utils";
const useCommits = (projectId: string, token: string) => {
const [commits, setCommits] = useState<any[]>([]);
useEffect(() => {
const api = new Commits({ host: host, token });
api.all(projectId).then(data => {
setCommits(data);
});
}, [projectId, token]);
return commits;
};
export default useCommits;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment