summaryrefslogtreecommitdiff
path: root/packages/ui
diff options
context:
space:
mode:
authorMaze <167211895+mazeincoding@users.noreply.github.com>2026-01-31 00:20:04 +0100
committerGitHub <noreply@github.com>2026-01-31 00:20:04 +0100
commit7bf0984698e43b9aa2dd879f65951318ed410390 (patch)
treeccf2cd590a47d550152afc07129cb55c71a9ec35 /packages/ui
parent0173db99448d1c4c6415dcf15272e17551b48b04 (diff)
downloadopencut-7bf0984698e43b9aa2dd879f65951318ed410390.tar.gz
codebase overhaul (#697)
Diffstat (limited to 'packages/ui')
-rw-r--r--packages/ui/package.json19
-rw-r--r--packages/ui/src/icons/brand.tsx67
-rw-r--r--packages/ui/src/icons/index.tsx2
-rw-r--r--packages/ui/src/icons/ui.tsx32
-rw-r--r--packages/ui/tsconfig.json20
5 files changed, 140 insertions, 0 deletions
diff --git a/packages/ui/package.json b/packages/ui/package.json
new file mode 100644
index 00000000..81dbae68
--- /dev/null
+++ b/packages/ui/package.json
@@ -0,0 +1,19 @@
+{
+ "name": "@opencut/ui",
+ "version": "0.0.0",
+ "description": "UI package for OpenCut",
+ "main": "./src/index.ts",
+ "types": "./src/index.ts",
+ "exports": {
+ "./icons": "./src/icons/index.tsx"
+ },
+ "dependencies": {
+ "@iconify/react": "^6.0.2",
+ "@types/react": "^19.2.7",
+ "react": "^19.2.0"
+ },
+ "devDependencies": {
+ "@types/bun": "latest",
+ "typescript": "^5.8.3"
+ }
+}
diff --git a/packages/ui/src/icons/brand.tsx b/packages/ui/src/icons/brand.tsx
new file mode 100644
index 00000000..26aabf86
--- /dev/null
+++ b/packages/ui/src/icons/brand.tsx
@@ -0,0 +1,67 @@
+export function OcVercelIcon({ className }: { className?: string }) {
+ return (
+ <svg
+ className={className}
+ width="20"
+ height="18"
+ viewBox="0 0 76 65"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>Vercel</title>
+ <path d="M37.5274 0L75.0548 65H0L37.5274 0Z" fill="currentColor" />
+ </svg>
+ );
+}
+
+export function OcMarbleIcon({
+ className = "",
+ size = 32,
+}: {
+ className?: string;
+ size?: number;
+}) {
+ return (
+ <svg
+ xmlns="http://www.w3.org/2000/svg"
+ width={size}
+ height={size}
+ className={className}
+ fill="none"
+ viewBox="0 0 256 256"
+ >
+ <title>Marble</title>
+ <path fill="#202027" d="M0 0h256v256H0z" />
+ <path
+ fill="#fff"
+ d="M116.032 94.016q1.408.256 6.272 9.856 4.856 9.472 11.904 24.576l4.096 8.576a42.4 42.4 0 0 0 4.992-6.784q2.304-3.96 5.76-10.624 3.96-7.56 5.504-9.728 6.144-9.344 13.312-19.84.896-1.408 3.2-1.92a4.8 4.8 0 0 1 1.28-.128q3.072 0 6.784 2.56 3.84 2.56 4.992 5.248a4.8 4.8 0 0 1 .256 1.92q0 1.28-.128 1.92l-.64 2.944q-.256 1.664-.512 3.968a3200 3200 0 0 0-5.888 46.848 56 56 0 0 0-.512 8.064l-.256 4.096a32 32 0 0 0-.128 2.944q0 1.672-.384 2.304-.384.64-1.408.64-.768 0-2.304-.384-4.096-.896-6.272-3.2-2.176-2.432-2.432-6.656-.128-2.176-.128-6.784 0-4.736.256-14.464l.128-7.04.256-10.112q-1.152 1.024-5.888 8.064a328 328 0 0 0-9.088 14.464q-4.48 7.56-5.888 11.648-1.28 3.2-2.56 4.736-1.152 1.536-2.816 1.536-1.536 0-3.968-1.408-6.912-4.224-8.448-11.648a336 336 0 0 0-6.016-23.68 40 40 0 0 0-2.56-6.272q-1.792-3.968-2.304-4.992l-1.664-3.328q-18.68 24.832-25.344 45.568-1.28 4.352-2.432 6.272-1.152 1.792-2.688 1.792-2.432 0-6.912-4.352Q72 158.144 72 154.304q0-2.04.768-4.096a108 108 0 0 1 16-30.08l3.968-5.248a432 432 0 0 0 12.16-16.64q3.072-4.48 8.192-4.48.896 0 2.944.256"
+ />
+ </svg>
+ );
+}
+
+export function OcDataBuddyIcon({
+ className = "",
+ size = 32,
+}: {
+ className?: string;
+ size?: number;
+}) {
+ return (
+ <svg
+ xmlns="http://www.w3.org/2000/svg"
+ width={size}
+ height={size}
+ className={className}
+ viewBox="0 0 8 8"
+ shapeRendering="crispEdges"
+ >
+ <title>Data Buddy</title>
+ <path d="M0 0h8v8H0z" />
+ <path
+ fill="#fff"
+ d="M1 1h1v6H1zm1 0h4v1H2zm4 1h1v1H6zm0 1h1v1H6zm0 1h1v1H6zm0 1h1v1H6zM2 6h4v1H2zm1-3h1v1H3zm1 1h1v1H4z"
+ />
+ </svg>
+ );
+}
diff --git a/packages/ui/src/icons/index.tsx b/packages/ui/src/icons/index.tsx
new file mode 100644
index 00000000..2203b633
--- /dev/null
+++ b/packages/ui/src/icons/index.tsx
@@ -0,0 +1,2 @@
+export * from "./brand";
+export * from "./ui";
diff --git a/packages/ui/src/icons/ui.tsx b/packages/ui/src/icons/ui.tsx
new file mode 100644
index 00000000..60231c33
--- /dev/null
+++ b/packages/ui/src/icons/ui.tsx
@@ -0,0 +1,32 @@
+export function OcVideoIcon({
+ className = "",
+ size = 32,
+}: {
+ className?: string;
+ size?: number;
+}) {
+ return (
+ <svg
+ width={size}
+ height={size}
+ className={className}
+ viewBox="0 0 29 24"
+ fill="none"
+ xmlns="http://www.w3.org/2000/svg"
+ >
+ <title>Video</title>
+ <path
+ d="M2.41667 11C2.41667 7.70017 2.41667 6.05025 3.65537 5.02513C4.89405 4 6.88771 4 10.875 4H12.0833C16.0706 4 18.0642 4 19.303 5.02513C20.5417 6.05025 20.5417 7.70017 20.5417 11V13C20.5417 16.2998 20.5417 17.9497 19.303 18.9749C18.0642 20 16.0706 20 12.0833 20H10.875C6.88771 20 4.89405 20 3.65537 18.9749C2.41667 17.9497 2.41667 16.2998 2.41667 13V11Z"
+ stroke="currentColor"
+ strokeWidth="1.5"
+ strokeLinecap="round"
+ />
+ <path
+ d="M20.5417 8.90585L20.6938 8.80196C23.2504 7.05623 24.5287 6.18336 25.556 6.60482C26.5833 7.02628 26.5833 8.42355 26.5833 11.2181V12.7819C26.5833 15.5765 26.5833 16.9737 25.556 17.3952C24.5287 17.8166 23.2504 16.9438 20.6938 15.198L20.5417 15.0941"
+ stroke="currentColor"
+ strokeWidth="1.5"
+ strokeLinecap="round"
+ />
+ </svg>
+ );
+}
diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json
new file mode 100644
index 00000000..d179b7d1
--- /dev/null
+++ b/packages/ui/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "compilerOptions": {
+ "target": "ES2020",
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
+ "module": "ESNext",
+ "skipLibCheck": true,
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "react-jsx",
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true
+ },
+ "include": ["src/**/*"],
+ "exclude": ["node_modules"]
+}