uibee 1.6.12 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Readme.md +0 -1
- package/dist/globals.css +710 -8
- package/dist/src/components/index.d.ts +10 -2
- package/dist/src/components/index.js +13 -2
- package/dist/src/components/login/loginPage.js +5 -6
- package/dist/src/components/logo/logo.d.ts +5 -0
- package/dist/src/components/logo/logo.js +6 -0
- package/dist/src/components/logo/logoSmall.d.ts +1 -0
- package/dist/src/components/logo/logoSmall.js +6 -0
- package/dist/src/components/navbar/navbar.d.ts +10 -0
- package/dist/src/components/navbar/navbar.js +36 -0
- package/dist/src/components/navbar/navbarDropdown.d.ts +6 -0
- package/dist/src/components/navbar/navbarDropdown.js +21 -0
- package/dist/src/components/navbar/navbarItem.d.ts +11 -0
- package/dist/src/components/navbar/navbarItem.js +12 -0
- package/dist/src/components/toggle/language.d.ts +4 -0
- package/dist/src/components/toggle/language.js +29 -0
- package/dist/src/components/toggle/theme.d.ts +3 -0
- package/dist/src/components/toggle/theme.js +30 -0
- package/dist/src/components/version/version.d.ts +7 -0
- package/dist/src/components/version/version.js +12 -0
- package/dist/src/scripts/rewriteAlias.js +17 -17
- package/package.json +8 -6
- package/src/components/index.ts +17 -3
- package/src/components/login/loginPage.tsx +8 -14
- package/src/components/logo/logo.tsx +45 -0
- package/src/components/logo/logoSmall.tsx +19 -0
- package/src/components/navbar/navbar.tsx +130 -0
- package/src/components/navbar/navbarDropdown.tsx +77 -0
- package/src/components/navbar/navbarItem.tsx +47 -0
- package/src/components/toggle/language.tsx +45 -0
- package/src/components/toggle/theme.tsx +150 -0
- package/src/components/version/version.tsx +34 -0
- package/src/globals.css +47 -0
- package/src/scripts/rewriteAlias.ts +19 -17
- package/src/types/components.d.ts +4 -0
- package/tsconfig.json +8 -2
- package/dist/images/logo-tekst-white.svg +0 -171
- package/dist/src/types/svg.d.ts +0 -4
- package/dist/src/types/svg.js +0 -1
- package/images/logo-tekst-white.svg +0 -171
- package/src/types/svg.ts +0 -4
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
export { default as LoginPage } from './login/loginPage';
|
|
2
|
-
export { default as Toaster, addToast } from './toast/toaster';
|
|
3
1
|
export { default as Input } from './inputs/input';
|
|
4
2
|
export { default as SwitchInput } from './inputs/switch';
|
|
5
3
|
export { default as TagInput } from './inputs/tag';
|
|
4
|
+
export { default as Logo } from './logo/logo';
|
|
5
|
+
export { default as LogoSmall } from './logo/logoSmall';
|
|
6
|
+
export { default as ThemeToggle } from './toggle/theme';
|
|
7
|
+
export { default as LanguageToggle } from './toggle/language';
|
|
8
|
+
export { default as Navbar } from './navbar/navbar';
|
|
9
|
+
export { default as NavItem } from './navbar/navbarItem';
|
|
10
|
+
export { default as NavDropdown } from './navbar/navbarDropdown';
|
|
11
|
+
export { default as VersionTag } from './version/version';
|
|
12
|
+
export { default as LoginPage } from './login/loginPage';
|
|
13
|
+
export { default as Toaster, addToast } from './toast/toaster';
|
|
@@ -1,6 +1,17 @@
|
|
|
1
|
-
export { default as LoginPage } from './login/loginPage';
|
|
2
|
-
export { default as Toaster, addToast } from './toast/toaster';
|
|
3
1
|
// Input components
|
|
4
2
|
export { default as Input } from './inputs/input';
|
|
5
3
|
export { default as SwitchInput } from './inputs/switch';
|
|
6
4
|
export { default as TagInput } from './inputs/tag';
|
|
5
|
+
// Logos
|
|
6
|
+
export { default as Logo } from './logo/logo';
|
|
7
|
+
export { default as LogoSmall } from './logo/logoSmall';
|
|
8
|
+
// Toggles
|
|
9
|
+
export { default as ThemeToggle } from './toggle/theme';
|
|
10
|
+
export { default as LanguageToggle } from './toggle/language';
|
|
11
|
+
// Navbar
|
|
12
|
+
export { default as Navbar } from './navbar/navbar';
|
|
13
|
+
export { default as NavItem } from './navbar/navbarItem';
|
|
14
|
+
export { default as NavDropdown } from './navbar/navbarDropdown';
|
|
15
|
+
export { default as VersionTag } from './version/version';
|
|
16
|
+
export { default as LoginPage } from './login/loginPage';
|
|
17
|
+
export { default as Toaster, addToast } from './toast/toaster';
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { LogIn } from 'lucide-react';
|
|
3
3
|
import Link from 'next/link';
|
|
4
|
-
import
|
|
5
|
-
import logo from '../../../images/logo-tekst-white.svg';
|
|
4
|
+
import Logo from '../logo/logo';
|
|
6
5
|
export default function LoginPage({ title, description, redirectURL, version, btg, handleSubmit }) {
|
|
7
|
-
return (_jsx("main", { className: 'w-full h-full flex items-center justify-center bg-login-800 p-8', children: _jsxs("div", { className: 'flex flex-col justify-center items-center bg-login-600 px-4 py-12 rounded-xl w-full max-w-md gap-4 md:gap-6', children: [_jsx("div", { className: 'relative aspect-[3/1] w-full', children: _jsx(
|
|
6
|
+
return (_jsx("main", { className: 'w-full h-full flex items-center justify-center bg-login-800 p-8', children: _jsxs("div", { className: 'flex flex-col justify-center items-center bg-login-600 px-4 py-12 rounded-xl w-full max-w-md gap-4 md:gap-6', children: [_jsx("div", { className: 'relative aspect-[3/1] w-full', children: _jsx(Logo, { className: 'object-contain px-6 sm:px-12' }) }), _jsxs("h1", { className: 'text-3xl font-extrabold text-login text-center tracking-tight', children: [title, " ", btg ? ' - Break the Glass' : ''] }), description && (_jsx("p", { className: 'text-center font-medium text-lg mb-2 max-w-xs', children: description })), btg ? (_jsxs("form", { className: 'w-full flex flex-col gap-3 max-w-xs', onSubmit: e => {
|
|
8
7
|
e.preventDefault();
|
|
9
8
|
handleSubmit?.(new FormData(e.currentTarget));
|
|
10
9
|
e.currentTarget.reset();
|
|
11
|
-
}, children: [_jsx("input", { type: 'text', name: 'name', placeholder: 'Name', className: 'py-2 px-3 rounded bg-login-900
|
|
12
|
-
'hover:bg-login/80
|
|
13
|
-
'hover:bg-login/80
|
|
10
|
+
}, children: [_jsx("input", { type: 'text', name: 'name', placeholder: 'Name', className: 'py-2 px-3 rounded bg-login-900 font-medium focus:outline-none', required: true }), _jsx("input", { type: 'password', name: 'token', placeholder: 'Token', className: 'py-2 px-3 rounded bg-login-900 font-medium focus:outline-none', required: true }), _jsx("button", { type: 'submit', className: 'py-2 px-4 rounded-xl bg-login font-bold text-lg ' +
|
|
11
|
+
'hover:bg-login/80 transition-all duration-200 mt-2', children: "Login" })] })) : (_jsx(Link, { href: redirectURL, className: 'w-full flex justify-center', children: _jsxs("button", { className: 'flex items-center justify-center gap-2 w-full max-w-xs py-3 px-6 rounded-xl bg-login font-bold text-lg ' +
|
|
12
|
+
'hover:bg-login/80 transition-all duration-200 mb-2 mt-2', children: ["Login", _jsx(LogIn, { className: 'w-6 h-6' })] }) })), _jsxs("span", { className: 'text-sm mt-2', children: ["v", version] })] }) }));
|
|
14
13
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export default function Logo({ className }) {
|
|
3
|
+
const corner = 'fill-[var(--foreground)] transition-all duration-1000';
|
|
4
|
+
const letter = 'fill-none stroke-[var(--color-login)] stroke-[3.5px]';
|
|
5
|
+
return (_jsxs("svg", { className: `block w-full max-w-2xl mx-auto ${className || ''}`, viewBox: '0 0 147.02299 59.20511', children: [_jsx("path", { className: corner, d: 'm 28.77713,58.37738 v 0.76465 H 25.531 v -5.61816 h 0.91309 v 4.85351 z' }), _jsx("path", { className: corner, d: 'm 30.47831,59.142 h -0.917 v -5.61813 h 0.917 z' }), _jsx("path", { className: corner, d: 'M 36.46268,53.52387 V 59.142 H 35.99881 A 0.36347,0.36347 0 0 1 35.6785,58.98185 L 32.59256,55.018 c 0.0078,0.07617 0.01368,0.15039 0.01758,0.22461 0.0039,0.07422 0.0059,0.14258 0.0059,0.20508 V 59.142 h -0.80371 v -5.61813 h 0.47656 a 0.71321,0.71321 0 0 1 0.09864,0.0059 0.3128,0.3128 0 0 1 0.07617,0.02148 0.22919,0.22919 0 0 1 0.0664,0.04688 0.63781,0.63781 0 0 1 0.06641,0.07812 l 3.08984,3.96779 c -0.0078,-0.08105 -0.01367,-0.16015 -0.01757,-0.23828 -0.0039,-0.07813 -0.0059,-0.15039 -0.0059,-0.21875 v -3.6631 z' }), _jsx("path", { className: corner, d: 'm 39.84549,57.1684 a 2.91264,2.91264 0 0 1 -0.11523,0.84765 1.748,1.748 0 0 1 -0.34375,0.64063 1.52483,1.52483 0 0 1 -0.56543,0.40527 2.00691,2.00691 0 0 1 -0.78223,0.14258 3.23707,3.23707 0 0 1 -0.40234,-0.0254 3.44454,3.44454 0 0 1 -0.41309,-0.0801 l 0.04688,-0.5459 a 0.2079,0.2079 0 0 1 0.06055,-0.125 0.19754,0.19754 0 0 1 0.14257,-0.0469 0.74035,0.74035 0 0 1 0.18067,0.0293 1.36468,1.36468 0 0 0 0.71387,-0.041 0.74722,0.74722 0 0 0 0.3125,-0.2207 0.9864,0.9864 0 0 0 0.1914,-0.38574 2.19551,2.19551 0 0 0 0.06445,-0.57227 v -3.667 h 0.90918 z' }), _jsx("path", { className: corner, d: 'm 44.6326,58.40473 -0.0039,0.7373 h -3.50391 v -5.61816 h 3.50391 v 0.7373 h -2.58692 v 1.69336 h 2.06739 v 0.71387 h -2.06739 v 1.73633 z' }), _jsx("path", { className: corner, d: 'M 46.53592,54.26117 V 56.06 h 2.19629 v 0.7373 h -2.19629 v 2.3447 h -0.917 v -5.61813 h 3.50391 v 0.7373 z' }), _jsx("path", { className: corner, d: 'm 55.25956,56.33344 a 3.18179,3.18179 0 0 1 -0.20215,1.15039 2.6634,2.6634 0 0 1 -0.57227,0.90722 2.59685,2.59685 0 0 1 -0.88476,0.59473 3.17156,3.17156 0 0 1 -2.29492,0 2.62415,2.62415 0 0 1 -0.88672,-0.59473 2.65327,2.65327 0 0 1 -0.57422,-0.90722 3.37717,3.37717 0 0 1 0,-2.30176 2.67118,2.67118 0 0 1 0.57422,-0.90918 2.61491,2.61491 0 0 1 0.88672,-0.59668 3.1717,3.1717 0 0 1 2.29492,0 2.58781,2.58781 0 0 1 0.88476,0.59668 2.68144,2.68144 0 0 1 0.57227,0.90918 3.1871,3.1871 0 0 1 0.20215,1.15137 z m -0.93164,0 a 2.706,2.706 0 0 0 -0.13086,-0.87012 1.821,1.821 0 0 0 -0.375,-0.65527 1.63008,1.63008 0 0 0 -0.59082,-0.41407 2.16795,2.16795 0 0 0 -1.55664,0 1.65415,1.65415 0 0 0 -0.59278,0.41407 1.84212,1.84212 0 0 0 -0.3789,0.65527 2.92611,2.92611 0 0 0 0,1.74316 1.83766,1.83766 0 0 0 0.3789,0.6543 1.64222,1.64222 0 0 0 0.59278,0.40918 2.19564,2.19564 0 0 0 1.55664,0 1.61838,1.61838 0 0 0 0.59082,-0.40918 1.81652,1.81652 0 0 0 0.375,-0.6543 2.71589,2.71589 0 0 0 0.13086,-0.87304 z' }), _jsx("path", { className: corner, d: 'm 60.534,59.142 h -0.81543 a 0.377,0.377 0 0 1 -0.35156,-0.1875 l -1.31055,-1.8916 a 0.4267,0.4267 0 0 0 -0.14453,-0.14063 0.50286,0.50286 0 0 0 -0.23437,-0.043 H 57.17072 V 59.142 H 56.2576 v -5.61813 h 1.6543 a 3.54427,3.54427 0 0 1 0.9541,0.11328 1.80649,1.80649 0 0 1 0.65723,0.32226 1.25606,1.25606 0 0 1 0.37988,0.501 1.76427,1.76427 0 0 1 0.03516,1.19727 1.50418,1.50418 0 0 1 -0.25293,0.46093 1.61283,1.61283 0 0 1 -0.40821,0.3584 2.04861,2.04861 0 0 1 -0.5498,0.23828 0.92346,0.92346 0 0 1 0.28906,0.28516 z m -2.64551,-2.92578 a 1.763,1.763 0 0 0 0.5459,-0.07617 1.11007,1.11007 0 0 0 0.39063,-0.21289 0.87892,0.87892 0 0 0 0.23437,-0.3252 1.10093,1.10093 0 0 0 0.07715,-0.41992 0.84276,0.84276 0 0 0 -0.30371,-0.70215 1.46527,1.46527 0 0 0 -0.9209,-0.24219 h -0.74121 v 1.97852 z' }), _jsx("path", { className: corner, d: 'm 64.72049,58.40473 -0.0039,0.7373 h -3.50391 v -5.61816 h 3.50391 v 0.7373 h -2.58692 v 1.69336 h 2.06739 v 0.71387 h -2.06739 v 1.73633 z' }), _jsx("path", { className: corner, d: 'M 70.35721,53.52387 V 59.142 H 69.89335 A 0.36347,0.36347 0 0 1 69.57303,58.98185 L 66.4871,55.018 c 0.0078,0.07617 0.01367,0.15039 0.01757,0.22461 0.0039,0.07422 0.0059,0.14258 0.0059,0.20508 V 59.142 h -0.80371 v -5.61813 h 0.47656 a 0.71321,0.71321 0 0 1 0.09864,0.0059 0.3128,0.3128 0 0 1 0.07617,0.02148 0.22936,0.22936 0 0 1 0.06641,0.04688 0.63869,0.63869 0 0 1 0.0664,0.07812 l 3.08985,3.96777 c -0.008,-0.08105 -0.0137,-0.16015 -0.0176,-0.23828 -0.004,-0.07813 -0.006,-0.15039 -0.006,-0.21875 v -3.66308 z' }), _jsx("path", { className: corner, d: 'm 72.6121,59.142 h -0.917 v -5.61813 h 0.917 z' }), _jsx("path", { className: corner, d: 'M 78.59794,53.52387 V 59.142 H 78.13358 A 0.36344,0.36344 0 0 1 77.81327,58.98185 L 74.72733,55.018 c 0.008,0.07617 0.0137,0.15039 0.0176,0.22461 0.004,0.07422 0.006,0.14258 0.006,0.20508 V 59.142 h -0.80371 v -5.61813 h 0.47656 a 0.713,0.713 0 0 1 0.0986,0.0059 0.31254,0.31254 0 0 1 0.0762,0.02148 0.22936,0.22936 0 0 1 0.0664,0.04688 0.63869,0.63869 0 0 1 0.0664,0.07812 l 3.08984,3.96777 c -0.008,-0.08105 -0.0137,-0.16015 -0.0176,-0.23828 -0.004,-0.07813 -0.006,-0.15039 -0.006,-0.21875 v -3.66308 z' }), _jsx("path", { className: corner, d: 'M 84.53544,56.37641 V 58.6 a 3.24425,3.24425 0 0 1 -1.9502,0.60449 3.419,3.419 0 0 1 -1.23535,-0.21289 2.7275,2.7275 0 0 1 -0.94141,-0.59277 2.59231,2.59231 0 0 1 -0.60156,-0.90723 3.08634,3.08634 0 0 1 -0.21,-1.1582 3.23536,3.23536 0 0 1 0.20215,-1.165 2.5484,2.5484 0 0 1 1.49414,-1.498 3.29189,3.29189 0 0 1 1.20215,-0.209 3.52605,3.52605 0 0 1 0.62988,0.05273 3.11559,3.11559 0 0 1 0.54,0.14649 2.535,2.535 0 0 1 0.84668,0.52246 l -0.26074,0.418 a 0.26545,0.26545 0 0 1 -0.16016,0.12109 0.27377,0.27377 0 0 1 -0.21094,-0.04688 c -0.0752,-0.04492 -0.15527,-0.09082 -0.24023,-0.14062 a 2.01137,2.01137 0 0 0 -0.29,-0.13867 2.127,2.127 0 0 0 -0.37891,-0.10547 2.72656,2.72656 0 0 0 -0.50683,-0.041 2.09434,2.09434 0 0 0 -0.80176,0.14649 1.70173,1.70173 0 0 0 -0.61035,0.418 1.84692,1.84692 0 0 0 -0.39063,0.65722 2.5766,2.5766 0 0 0 -0.13672,0.86231 2.62333,2.62333 0 0 0 0.14453,0.89844 1.88731,1.88731 0 0 0 0.41016,0.67187 1.74772,1.74772 0 0 0 0.6416,0.419 2.55647,2.55647 0 0 0 1.459,0.0703 2.80344,2.80344 0 0 0 0.53222,-0.207 V 57.07074 H 82.928 a 0.19287,0.19287 0 0 1 -0.13964,-0.04883 0.16848,0.16848 0 0 1 -0.0508,-0.12695 v -0.51855 z' }), _jsx("path", { className: corner, d: 'm 89.1243,58.40473 -0.004,0.7373 h -3.50391 v -5.61816 h 3.50391 v 0.7373 h -2.58692 v 1.69336 h 2.06739 v 0.71387 h -2.06739 v 1.73633 z' }), _jsx("path", { className: corner, d: 'M 94.761,53.52387 V 59.142 H 94.29713 A 0.36347,0.36347 0 0 1 93.97682,58.98185 L 90.8909,55.018 c 0.008,0.07617 0.0137,0.15039 0.0176,0.22461 0.004,0.07422 0.006,0.14258 0.006,0.20508 V 59.142 h -0.80371 v -5.61813 h 0.47656 a 0.71321,0.71321 0 0 1 0.0986,0.0059 0.3128,0.3128 0 0 1 0.0762,0.02148 0.22919,0.22919 0 0 1 0.0664,0.04688 0.63781,0.63781 0 0 1 0.0664,0.07812 l 3.08984,3.96777 c -0.008,-0.08105 -0.0137,-0.16015 -0.0176,-0.23828 -0.004,-0.07813 -0.006,-0.15039 -0.006,-0.21875 v -3.66308 z' }), _jsx("path", { className: corner, d: 'M 98.95829,54.26117 V 56.06 h 2.19629 v 0.7373 h -2.19629 v 2.3447 h -0.917 v -5.61813 h 3.5039 v 0.7373 z' }), _jsx("path", { className: corner, d: 'm 107.68192,56.33344 a 3.18158,3.18158 0 0 1 -0.20215,1.15039 2.66353,2.66353 0 0 1 -0.57226,0.90722 2.597,2.597 0 0 1 -0.88477,0.59473 3.17156,3.17156 0 0 1 -2.29492,0 2.62415,2.62415 0 0 1 -0.88672,-0.59473 2.65327,2.65327 0 0 1 -0.57422,-0.90722 3.37717,3.37717 0 0 1 0,-2.30176 2.67118,2.67118 0 0 1 0.57422,-0.90918 2.61491,2.61491 0 0 1 0.88672,-0.59668 3.1717,3.1717 0 0 1 2.29492,0 2.588,2.588 0 0 1 0.88477,0.59668 2.68157,2.68157 0 0 1 0.57226,0.90918 3.18689,3.18689 0 0 1 0.20215,1.15137 z m -0.93164,0 a 2.706,2.706 0 0 0 -0.13086,-0.87012 1.82066,1.82066 0 0 0 -0.375,-0.65527 1.63,1.63 0 0 0 -0.59082,-0.41407 2.16795,2.16795 0 0 0 -1.55664,0 1.65411,1.65411 0 0 0 -0.59277,0.41407 1.84214,1.84214 0 0 0 -0.37891,0.65527 2.92632,2.92632 0 0 0 0,1.74316 1.83768,1.83768 0 0 0 0.37891,0.6543 1.64218,1.64218 0 0 0 0.59277,0.40918 2.19564,2.19564 0 0 0 1.55664,0 1.61829,1.61829 0 0 0 0.59082,-0.40918 1.81623,1.81623 0 0 0 0.375,-0.6543 2.71589,2.71589 0 0 0 0.13086,-0.87304 z' }), _jsx("path", { className: corner, d: 'm 112.95731,59.142 h -0.81543 a 0.377,0.377 0 0 1 -0.35156,-0.1875 l -1.31055,-1.8916 a 0.4267,0.4267 0 0 0 -0.14453,-0.14063 0.50286,0.50286 0 0 0 -0.23437,-0.043 H 109.594 V 59.142 h -0.91309 v -5.61813 h 1.6543 a 3.54427,3.54427 0 0 1 0.9541,0.11328 1.80649,1.80649 0 0 1 0.65723,0.32226 1.25606,1.25606 0 0 1 0.37988,0.501 1.76427,1.76427 0 0 1 0.0352,1.19727 1.50418,1.50418 0 0 1 -0.25293,0.46093 1.61283,1.61283 0 0 1 -0.40821,0.3584 2.04861,2.04861 0 0 1 -0.5498,0.23828 0.92346,0.92346 0 0 1 0.28906,0.28516 z m -2.64551,-2.92578 a 1.763,1.763 0 0 0 0.5459,-0.07617 1.11007,1.11007 0 0 0 0.39063,-0.21289 0.87892,0.87892 0 0 0 0.23437,-0.3252 1.10093,1.10093 0 0 0 0.0772,-0.41992 0.84276,0.84276 0 0 0 -0.30371,-0.70215 1.46527,1.46527 0 0 0 -0.9209,-0.24219 H 109.594 v 1.97852 z' }), _jsx("path", { className: corner, d: 'm 116.4954,59.142 h -0.917 v -5.61813 h 0.917 z' }), _jsx("path", { className: corner, d: 'm 121.69559,54.28461 h -1.75195 V 59.142 h -0.9082 v -4.85739 h -1.75586 v -0.76074 h 4.416 z' }), _jsx("polyline", { className: letter, style: { strokeMiterlimit: 10 }, points: '47.871 98.1 33.189 98.1 33.189 83.418', transform: 'translate(-31.392,-41.894)' }), _jsx("polyline", { className: letter, style: { strokeMiterlimit: 10 }, points: '33.142 58.326 33.142 43.644 47.824 43.644', transform: 'translate(-31.392,-41.894)' }), _jsx("polyline", { className: letter, style: { strokeMiterlimit: 10 }, points: '161.983 98.122 176.665 98.122 176.665 83.44', transform: 'translate(-31.392,-41.894)' }), _jsx("polyline", { className: letter, style: { strokeMiterlimit: 10 }, points: '176.665 58.372 176.665 43.69 161.983 43.69', transform: 'translate(-31.392,-41.894)' }), _jsx("path", { className: corner, d: 'm 30.02449,40.19351 v 4.12842 H 12.4991 V 13.99038 h 4.92871 v 26.20313 z' }), _jsx("path", { className: corner, d: 'm 61.53523,29.1564 a 17.15942,17.15942 0 0 1 -1.09473,6.21338 14.35971,14.35971 0 0 1 -3.08593,4.89746 14.091,14.091 0 0 1 -4.78125,3.21191 17.1289,17.1289 0 0 1 -12.38575,0 13.98317,13.98317 0 0 1 -7.88867,-8.10937 18.18161,18.18161 0 0 1 0,-12.42725 14.39119,14.39119 0 0 1 3.09668,-4.90771 14.13157,14.13157 0 0 1 4.792,-3.22315 17.13565,17.13565 0 0 1 12.38575,0 14.02046,14.02046 0 0 1 4.78125,3.22315 14.47032,14.47032 0 0 1 3.08593,4.90771 17.16209,17.16209 0 0 1 1.09472,6.21387 z m -5.03418,0 a 14.62587,14.62587 0 0 0 -0.70508,-4.69727 9.9446,9.9446 0 0 0 -2.02246,-3.53906 8.80545,8.80545 0 0 0 -3.1914,-2.23242 11.719,11.719 0 0 0 -8.4043,0 8.90077,8.90077 0 0 0 -3.20117,2.23242 9.96735,9.96735 0 0 0 -2.043,3.53906 15.81644,15.81644 0 0 0 0,9.415 9.847,9.847 0 0 0 2.043,3.52832 8.85094,8.85094 0 0 0 3.20117,2.21192 11.87213,11.87213 0 0 0 8.4043,0 8.75623,8.75623 0 0 0 3.1914,-2.21192 9.82454,9.82454 0 0 0 2.02249,-3.52828 14.69371,14.69371 0 0 0 0.70505,-4.71777 z' }), _jsx("path", { className: corner, d: 'm 91.76082,29.38784 v 12.00635 a 17.5354,17.5354 0 0 1 -10.53125,3.26465 18.41512,18.41512 0 0 1 -6.667,-1.148 14.80254,14.80254 0 0 1 -5.08691,-3.20166 14.0148,14.0148 0 0 1 -3.24316,-4.897 16.691,16.691 0 0 1 -1.1377,-6.25586 17.42935,17.42935 0 0 1 1.09473,-6.2876 13.74023,13.74023 0 0 1 8.06738,-8.08838 17.7222,17.7222 0 0 1 6.48828,-1.127 19.10354,19.10354 0 0 1 3.40137,0.28418 16.85244,16.85244 0 0 1 2.917,0.79 13.68442,13.68442 0 0 1 2.48633,1.22168 13.95372,13.95372 0 0 1 2.085,1.60058 l -1.41113,2.25391 a 1.40229,1.40229 0 0 1 -0.86426,0.65283 1.47784,1.47784 0 0 1 -1.13672,-0.25244 q -0.6123,-0.35816 -1.2959,-0.7583 a 11.33129,11.33129 0 0 0 -1.56933,-0.748 11.53387,11.53387 0 0 0 -2.043,-0.56836 14.78335,14.78335 0 0 0 -2.73828,-0.22119 11.32128,11.32128 0 0 0 -4.32813,0.78955 9.26752,9.26752 0 0 0 -3.29687,2.25391 9.99164,9.99164 0 0 0 -2.10645,3.54931 13.90267,13.90267 0 0 0 -0.7373,4.65528 14.11731,14.11731 0 0 0 0.77929,4.855 10.1425,10.1425 0 0 0 2.21192,3.62305 9.43419,9.43419 0 0 0 3.46484,2.26416 13.81975,13.81975 0 0 0 7.87793,0.3789 15.14816,15.14816 0 0 0 2.875,-1.11621 v -6.02383 h -4.2334 a 1.04883,1.04883 0 0 1 -0.75879,-0.26367 0.90553,0.90553 0 0 1 -0.27343,-0.68457 v -2.80127 z' }), _jsx("path", { className: corner, d: 'M 102.546,44.32193 H 97.59581 V 13.99038 h 4.95019 z' }), _jsx("path", { className: corner, d: 'm 134.8575,13.99038 v 30.33155 h -2.50684 a 2.14219,2.14219 0 0 1 -0.96875,-0.2002 2.26108,2.26108 0 0 1 -0.75879,-0.66357 L 113.962,22.05777 q 0.063,0.61083 0.0947,1.21093 0.0322,0.60058 0.0322,1.106 v 19.94723 h -4.3398 V 13.99038 h 2.57031 a 3.89092,3.89092 0 0 1 0.53711,0.03174 1.53328,1.53328 0 0 1 0.41016,0.11572 1.18964,1.18964 0 0 1 0.35839,0.25293 4.01792,4.01792 0 0 1 0.3584,0.4209 l 16.68164,21.42188 q -0.063,-0.65259 -0.0947,-1.28467 -0.0308,-0.63208 -0.0312,-1.17969 V 13.99038 Z' })] }));
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function LogoSmall(): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export default function LogoSmall() {
|
|
3
|
+
const corner = 'fill-login';
|
|
4
|
+
const letter = 'fill-[var(--foreground)] transition-all duration-1000';
|
|
5
|
+
return (_jsxs("svg", { className: 'block h-full', viewBox: '0 0 100 100', fill: 'none', xmlns: 'http://www.w3.org/2000/svg', children: [_jsx("path", { className: corner, d: 'M0 0H6.6667V28.3333H0V0Z' }), _jsx("path", { className: corner, d: 'M28.3333 0V6.6667H0V0H28.3333Z' }), _jsx("path", { className: corner, d: 'M100 0V6.6667H71.6667V0H100Z' }), _jsx("path", { className: corner, d: 'M100 28.3333H93.3333V0H100V28.3333Z' }), _jsx("path", { className: corner, d: 'M0 100V93.3333H28.3333V100H0Z' }), _jsx("path", { className: corner, d: 'M0 71.6667H6.6667V100H0V71.6667Z' }), _jsx("path", { className: corner, d: 'M100 100H93.3333V71.6667H100V100Z' }), _jsx("path", { className: corner, d: 'M71.6667 100V93.3333H100V100H71.6667Z' }), _jsx("path", { className: letter, d: 'M31.6667 18.3333H43.3334V81.6666H31.6667V18.3333Z' }), _jsx("path", { className: letter, d: 'M31.6667 70H68.3334V81.6667H31.6667V70Z' })] }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Language } from 'uibee/components';
|
|
3
|
+
export type NavbarProps = {
|
|
4
|
+
lang: Language;
|
|
5
|
+
onlyLogo?: boolean;
|
|
6
|
+
theme: string;
|
|
7
|
+
token: string | null;
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
};
|
|
10
|
+
export default function Navbar({ lang, onlyLogo, token, children }: NavbarProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import React, { useState } from 'react';
|
|
4
|
+
import Link from 'next/link';
|
|
5
|
+
import LogoSmall from '../logo/logoSmall';
|
|
6
|
+
import LanguageToggle from '../toggle/language';
|
|
7
|
+
import ThemeToggle from '../toggle/theme';
|
|
8
|
+
import { LogOut } from 'lucide-react';
|
|
9
|
+
function hamburgerStyle(isOpen, isSecond) {
|
|
10
|
+
return `bg-login-50 h-0.5 absolute w-8 transition-all duration-[400ms] left-2 ${isOpen
|
|
11
|
+
? `top-6 ${isSecond ? 'rotate-45' : '-rotate-45'}`
|
|
12
|
+
: isSecond ? 'top-7' : 'top-4'}`;
|
|
13
|
+
}
|
|
14
|
+
export default function Navbar({ lang, onlyLogo, token, children }) {
|
|
15
|
+
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
|
|
16
|
+
return (_jsx("div", { className: `${isMobileMenuOpen ? 'bg-[#181818f0]' : 'bg-[#18181899]'} backdrop-blur-xl fixed top-0 z-900 w-full`, children: _jsxs("div", { className: `flex w-full max-w-6xl m-auto p-2 transition duration-500 800px:justify-between 800px:p-4 ${isMobileMenuOpen ? 'h-screen bg-login-900/20 800px:h-20' : ''}`, children: [_jsx("div", { className: 'block h-12 p-1 800px:p-0', children: _jsx(Link, { href: '/', onClick: () => setIsMobileMenuOpen(false), children: _jsx(LogoSmall, {}) }) }), onlyLogo ? null : (_jsxs(_Fragment, { children: [_jsx("nav", { className: 'hidden 800px:flex 800px:justify-between 800px:items-center 800px:w-fill max-w-[50rem]', children: children }), _jsxs("nav", { className: 'flex w-[calc(100vw-8rem)] justify-end h-12 800px:w-fit', children: [_jsx(ThemeToggle, {}), _jsx(LanguageToggle, { language: lang }), _jsx(AuthButton, { token: token })] }), _jsxs("button", { className: 'w-12 h-12 relative cursor-pointer bg-none border-none 800px:hidden', onClick: () => setIsMobileMenuOpen(!isMobileMenuOpen), children: [_jsx("div", { className: hamburgerStyle(isMobileMenuOpen) }), _jsx("div", { className: hamburgerStyle(isMobileMenuOpen, true) })] }), _jsx("nav", { className: `fixed top-16 w-[calc(100%-2rem)] max-w-[35rem] mx-auto left-0 right-0 800px:hidden
|
|
17
|
+
transition-all duration-500 ease-in-out overflow-hidden
|
|
18
|
+
${isMobileMenuOpen ? 'max-h-[calc(100vh-4rem)] opacity-100' : 'max-h-0 opacity-0'}`, onClick: () => setIsMobileMenuOpen(false), children: React.Children.map(children, (child, index) => (_jsx("div", { className: `transition-all duration-500 ease-out ${isMobileMenuOpen
|
|
19
|
+
? 'opacity-100 transform translate-y-0'
|
|
20
|
+
: 'opacity-0 transform -translate-y-4'}`, style: {
|
|
21
|
+
transitionDelay: isMobileMenuOpen ? `${index * 80}ms` : '0ms'
|
|
22
|
+
}, children: child }, index))) })] }))] }) }));
|
|
23
|
+
}
|
|
24
|
+
function AuthButton({ token }) {
|
|
25
|
+
return (_jsx("div", { className: 'rounded-[0.3rem] hover:bg-[#6464641a] h-12 w-12', children: token ? (_jsx(Link, { href: '/api/logout', prefetch: false, onClick: (e) => {
|
|
26
|
+
e.preventDefault();
|
|
27
|
+
window.location.href = '/api/logout';
|
|
28
|
+
}, className: 'grid items-center justify-center h-full w-full', children: _jsx(LogOut, { size: 24 }) })) : (_jsx(Link, { href: '/api/login', className: 'grid items-center justify-center h-full w-full', children: _jsx("div", { className: `relative w-[30px] h-5
|
|
29
|
+
before:content-[""] before:absolute before:top-0 before:left-1/2 before:-translate-x-1/2
|
|
30
|
+
before:w-[10px] before:h-[10px] before:border-2 before:border-login-50
|
|
31
|
+
before:rounded-full before:bg-transparent
|
|
32
|
+
after:content-[""] after:absolute after:bottom-0 after:left-1/2 after:-translate-x-1/2
|
|
33
|
+
after:w-[18px] after:h-2 after:border-2 after:border-login-50
|
|
34
|
+
after:rounded-t-[22px] after:border-b-0 after:bg-transparent
|
|
35
|
+
` }) })) }));
|
|
36
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { ChevronDown } from 'lucide-react';
|
|
4
|
+
import React, { useRef, useState } from 'react';
|
|
5
|
+
export default function NavDropdown({ children, title }) {
|
|
6
|
+
const [isMobileDropdownOpen, setIsMobileDropdownOpen] = useState(false);
|
|
7
|
+
const navItemRef = useRef(null);
|
|
8
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: 'relative group hidden 800px:block', children: _jsxs("div", { className: 'outline-none', tabIndex: 0, ref: navItemRef, children: [_jsxs("div", { className: `list-none no-underline text-base leading-4 p-3 font-bold cursor-pointer flex flex-row items-center
|
|
9
|
+
transition-colors`, children: [title, _jsx(ChevronDown, { className: 'w-6 h-6 stroke-login ml-1 text-2xl transition-transform duration-300 ease-in-out' })] }), _jsx("div", { className: `absolute pt-2 -ml-4 -translate-y-4 opacity-0 pointer-events-none
|
|
10
|
+
transition-all duration-200 ease-in-out z-10
|
|
11
|
+
group-hover:opacity-100 group-hover:pointer-events-auto group-hover:translate-y-0
|
|
12
|
+
group-focus-within:opacity-100 group-focus-within:pointer-events-auto group-focus-within:translate-y-0`, children: _jsx("ul", { className: 'p-3 px-6 pb-4 rounded-[0.4rem] shadow-[0_0.1rem_0.5rem_rgba(3,3,3,0.5)] bg-login-700/98', children: React.Children.map(children, (child, index) => (_jsx("div", { onClick: () => navItemRef.current?.blur(), className: 'group dropdown', children: child }, index))) }) })] }) }), _jsxs("div", { className: 'block 800px:hidden', children: [_jsx("button", { className: 'bg-none border-none cursor-pointer w-full text-left', onClick: (e) => {
|
|
13
|
+
e.stopPropagation();
|
|
14
|
+
setIsMobileDropdownOpen(!isMobileDropdownOpen);
|
|
15
|
+
}, children: _jsxs("li", { className: `list-none no-underline text-2xl leading-6 overflow-hidden
|
|
16
|
+
w-full pl-4 pr-4 rounded-[0.3rem] transition-all duration-[600ms]
|
|
17
|
+
flex items-center gap-2 opacity-100 min-h-16 py-5 `, children: [_jsx("span", { children: title }), _jsx(ChevronDown, { className: `w-6 h-6 transition-transform duration-400 flex-shrink-0
|
|
18
|
+
${isMobileDropdownOpen ? 'rotate-180' : ''}` })] }) }), _jsx("div", { className: `list-none no-underline text-xl px-6 ${isMobileDropdownOpen ? 'pb-4' : ''}`, children: React.Children.map(children, (child, index) => (_jsx("div", { className: `leading-6 transition-all duration-500 group dropdown
|
|
19
|
+
${isMobileDropdownOpen ? 'h-11 opacity-100' : 'h-0 opacity-0'}
|
|
20
|
+
`, children: child }, index))) })] })] }));
|
|
21
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type NavItemProps = {
|
|
3
|
+
href: string;
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
external?: boolean;
|
|
6
|
+
target?: string;
|
|
7
|
+
rel?: string;
|
|
8
|
+
title?: string;
|
|
9
|
+
icon?: ReactNode;
|
|
10
|
+
};
|
|
11
|
+
export default function NavItem({ href, children, external, target, rel, title, icon }: NavItemProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { ArrowUpRight } from 'lucide-react';
|
|
4
|
+
import Link from 'next/link';
|
|
5
|
+
const commonStyling = 'list-none flex no-underline items-center gap-2 whitespace-nowrap cursor-pointer';
|
|
6
|
+
export default function NavItem({ href, children, external = false, target, rel, title, icon }) {
|
|
7
|
+
const linkProps = { href, target, rel, title };
|
|
8
|
+
return (_jsxs(_Fragment, { children: [_jsx(Link, { ...linkProps, className: 'hidden 800px:block', children: _jsxs("li", { className: `${commonStyling} text-base leading-4 p-3 font-bold transition-colors link-corner-hover
|
|
9
|
+
group-[.dropdown]:p-2.5 group-[.dropdown]:pr-3 group-[.dropdown]:pl-1`, children: [icon, children, external && _jsx(ArrowUpRight, { className: 'w-6 h-6 stroke-login' })] }) }), _jsx(Link, { ...linkProps, className: 'block 800px:hidden', children: _jsxs("li", { className: `${commonStyling} text-2xl leading-6 overflow-hidden w-auto pl-4 rounded-[0.3rem] transition-all
|
|
10
|
+
duration-[600ms] opacity-100 h-16 py-5 group-[.dropdown]:p-0 group-[.dropdown]:text-lg group-[.dropdown]:h-auto
|
|
11
|
+
group-[.dropdown]:py-2.5 group-[.dropdown]:pl-4`, children: [children, external && _jsx(ArrowUpRight, { className: 'w-6 h-6 stroke-login' })] }) })] }));
|
|
12
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useState } from 'react';
|
|
4
|
+
import { getCookie, setCookie } from '../../utils/cookies/cookies';
|
|
5
|
+
import { useRouter } from 'next/navigation';
|
|
6
|
+
import { Globe } from 'lucide-react';
|
|
7
|
+
export default function LanguageToggle({ language }) {
|
|
8
|
+
const [lang, setLang] = useState(language);
|
|
9
|
+
const [jump, setJump] = useState(false);
|
|
10
|
+
const router = useRouter();
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
const savedLang = getCookie('lang');
|
|
13
|
+
if (savedLang) {
|
|
14
|
+
setLang(savedLang);
|
|
15
|
+
}
|
|
16
|
+
}, []);
|
|
17
|
+
function handleClick() {
|
|
18
|
+
const newLang = lang === 'no' ? 'en' : 'no';
|
|
19
|
+
setCookie('lang', newLang);
|
|
20
|
+
setLang(newLang);
|
|
21
|
+
language = newLang;
|
|
22
|
+
setJump(true);
|
|
23
|
+
setTimeout(() => setJump(false), 400);
|
|
24
|
+
router.refresh();
|
|
25
|
+
}
|
|
26
|
+
const buttonClasses = `cursor-pointer p-2 leading-8 text-base w-[4.3rem] text-center rounded
|
|
27
|
+
bg-transparent border-none hover:bg-gray-400/10 flex flex-row items-center justify-center gap-1`;
|
|
28
|
+
return (_jsxs("button", { value: lang, onClick: handleClick, className: buttonClasses, children: [_jsx(Globe, { className: `text-xl leading-8 -mt-0.5 ${jump ? 'animate-jump' : ''}` }), ' ' + lang] }));
|
|
29
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useState } from 'react';
|
|
4
|
+
import { getCookie, setCookie } from '../../utils/cookies/cookies';
|
|
5
|
+
import { useRouter } from 'next/navigation';
|
|
6
|
+
export default function ThemeToggle({ className }) {
|
|
7
|
+
const router = useRouter();
|
|
8
|
+
const [theme, setTheme] = useState('dark');
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
const savedTheme = getCookie('theme');
|
|
11
|
+
if (savedTheme) {
|
|
12
|
+
setTheme(savedTheme);
|
|
13
|
+
}
|
|
14
|
+
document.documentElement.classList.remove('dark', 'light');
|
|
15
|
+
document.documentElement.classList.add(theme);
|
|
16
|
+
}, [theme]);
|
|
17
|
+
function toggleTheme() {
|
|
18
|
+
const newTheme = theme === 'dark' ? 'light' : 'dark';
|
|
19
|
+
setCookie('theme', newTheme);
|
|
20
|
+
setTheme(newTheme);
|
|
21
|
+
router.refresh();
|
|
22
|
+
}
|
|
23
|
+
return (_jsx("div", { className: `grid place-items-center justify-end rounded-md hover:bg-login-300/20 w-fit ${className}`, children: _jsxs("label", { className: 'cursor-pointer', children: [_jsx("input", { type: 'checkbox', checked: theme === 'light', onChange: toggleTheme, className: 'sr-only' }), _jsx(ThemeIcon, { theme: theme })] }) }));
|
|
24
|
+
}
|
|
25
|
+
function ThemeIcon({ theme }) {
|
|
26
|
+
const sunrayClass = `fill-white transition-opacity duration-400 ${theme === 'light' ? 'opacity-0' : 'opacity-100'}`;
|
|
27
|
+
return (_jsxs("svg", { className: 'h-12 p-3', viewBox: '0 0 100 100', xmlns: 'http://www.w3.org/2000/svg', children: [_jsx("defs", { children: _jsxs("mask", { id: 'theme-toggle_clip-path', children: [_jsx("rect", { x: '0', y: '0', width: '100', height: '100', fill: 'white' }), _jsx("circle", { className: `transition-transform duration-400 ${theme === 'dark' ? 'translate-x-8 -translate-y-4' : ''}`, cx: '68', cy: '40', r: '18' })] }) }), _jsx("circle", { className: `origin-center transition-all duration-400 ${theme === 'light'
|
|
28
|
+
? 'scale-[1.9] fill-black'
|
|
29
|
+
: 'scale-100 fill-white'}`, mask: 'url(#theme-toggle_clip-path)', cx: '50', cy: '50', r: '23' }), _jsx("rect", { className: sunrayClass, x: '86', y: '47', width: '14', height: '6', rx: '3' }), _jsx("rect", { className: sunrayClass, y: '47', width: '14', height: '6', rx: '3' }), _jsx("rect", { className: sunrayClass, x: '47', y: '86', width: '6', height: '14', rx: '3' }), _jsx("rect", { className: sunrayClass, x: '75', y: '75', width: '6', height: '14', rx: '3', transform: 'rotate(-45 78 78)' }), _jsx("rect", { className: sunrayClass, x: '84.8995', y: '12', width: '6', height: '14', rx: '3', transform: 'rotate(45 84.8995 12)' }), _jsx("rect", { className: sunrayClass, x: '22.8995', y: '74', width: '6', height: '14', rx: '3', transform: 'rotate(45 22.8995 74)' }), _jsx("rect", { className: sunrayClass, x: '13', y: '16.2426', width: '6', height: '14', rx: '3', transform: 'rotate(-45 13 16.2426)' }), _jsx("rect", { className: sunrayClass, x: '47', y: '0', width: '6', height: '14', rx: '3' })] }));
|
|
30
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import Link from 'next/link';
|
|
3
|
+
export default function VersionTag({ version, url, className }) {
|
|
4
|
+
if (!version) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
const style = `w-fit bg-login-600 px-2 py-1 rounded-md text-white tracking-[0.05em] font-semibold text-lg ${className}`;
|
|
8
|
+
if (url) {
|
|
9
|
+
return (_jsxs(Link, { className: style, target: '_blank', href: url, children: ["v", version] }));
|
|
10
|
+
}
|
|
11
|
+
return (_jsxs("div", { className: style, children: ["v", version] }));
|
|
12
|
+
}
|
|
@@ -2,30 +2,30 @@ import fs from 'fs';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { globSync } from 'glob';
|
|
4
4
|
const DIST_DIR = path.resolve('dist');
|
|
5
|
-
const
|
|
5
|
+
const SRC_DIR = path.join(DIST_DIR, 'src');
|
|
6
6
|
const jsFiles = globSync(`${DIST_DIR}/**/*.js`, { nodir: true });
|
|
7
7
|
jsFiles.forEach((file) => {
|
|
8
8
|
let content = fs.readFileSync(file, 'utf-8');
|
|
9
9
|
const fileDir = path.dirname(file);
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
// Handle @utils/* imports
|
|
11
|
+
content = content.replace(/from ['"]@utils\/(.*?)['"]/g, (_, p1) => {
|
|
12
|
+
const targetPath = path.join(SRC_DIR, 'utils', p1);
|
|
13
|
+
const relative = path.relative(fileDir, targetPath).replace(/\\/g, '/');
|
|
14
|
+
return `from '${relative}'`;
|
|
15
|
+
});
|
|
16
|
+
// Handle @components/* imports
|
|
17
|
+
content = content.replace(/from ['"]@components\/(.*?)['"]/g, (_, p1) => {
|
|
18
|
+
const targetPath = path.join(SRC_DIR, 'components', p1);
|
|
19
|
+
const relative = path.relative(fileDir, targetPath).replace(/\\/g, '/');
|
|
20
|
+
return `from '${relative}'`;
|
|
21
|
+
});
|
|
22
|
+
// Handle @hooks/* imports
|
|
23
|
+
content = content.replace(/from ['"]@hooks\/(.*?)['"]/g, (_, p1) => {
|
|
24
|
+
const targetPath = path.join(SRC_DIR, 'hooks', p1);
|
|
12
25
|
const relative = path.relative(fileDir, targetPath).replace(/\\/g, '/');
|
|
13
26
|
return `from '${relative}'`;
|
|
14
27
|
});
|
|
15
|
-
const inlineImages = content.match(/src: ['"]images\/(.*?)['"]/g);
|
|
16
|
-
if (inlineImages) {
|
|
17
|
-
inlineImages.forEach((match) => {
|
|
18
|
-
const imgPathMatch = match.match(/src: ['"]images\/(.*?)['"]/);
|
|
19
|
-
if (imgPathMatch) {
|
|
20
|
-
const imgRelativePath = imgPathMatch[1];
|
|
21
|
-
const resolvedPath = path.join(IMAGES_DIR, imgRelativePath);
|
|
22
|
-
console.error(`⚠️ Detected inline image in ${file}: ${match}`);
|
|
23
|
-
console.error(` Resolved file path: ${resolvedPath}`);
|
|
24
|
-
console.error(` This is not allowed. Use 'import image from '../../images/${imgRelativePath}'' instead.`);
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
28
|
fs.writeFileSync(file, content, 'utf-8');
|
|
29
29
|
});
|
|
30
|
-
console.log('🐝
|
|
30
|
+
console.log('🐝 All path aliases rewritten');
|
|
31
31
|
console.log('🐝 Build complete');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "uibee",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Shared components, functions and hooks for reuse across Login projects",
|
|
5
5
|
"homepage": "https://github.com/Login-Linjeforening-for-IT/uibee#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -26,10 +26,9 @@
|
|
|
26
26
|
"scripts": {
|
|
27
27
|
"build:clean": "rm -rf dist",
|
|
28
28
|
"build:css": "node --loader ts-node/esm src/scripts/buildCss.ts",
|
|
29
|
-
"build:assets": "cp -r images dist/images",
|
|
30
29
|
"build:rewrite": "node dist/src/scripts/rewriteAlias.js",
|
|
31
30
|
"build:ts": "tsc --declaration",
|
|
32
|
-
"build": "npm run build:clean && npm run build:css && npm run build:ts && npm run build:
|
|
31
|
+
"build": "npm run build:clean && npm run build:css && npm run build:ts && npm run build:rewrite",
|
|
33
32
|
"lint": "eslint --fix ./src"
|
|
34
33
|
},
|
|
35
34
|
"peerDependencies": {
|
|
@@ -38,11 +37,11 @@
|
|
|
38
37
|
},
|
|
39
38
|
"devDependencies": {
|
|
40
39
|
"@eslint/eslintrc": "^3.3.1",
|
|
41
|
-
"@next/eslint-plugin-next": "
|
|
40
|
+
"@next/eslint-plugin-next": "16.0.0",
|
|
42
41
|
"@stylistic/eslint-plugin": "^5.4.0",
|
|
43
42
|
"@tailwindcss/postcss": "^4.1.13",
|
|
44
43
|
"@types/node": "^24.5.2",
|
|
45
|
-
"@types/react": "
|
|
44
|
+
"@types/react": "19.2.2",
|
|
46
45
|
"eslint": "^9.36.0",
|
|
47
46
|
"glob": "^11.0.3",
|
|
48
47
|
"postcss": "^8.5.6",
|
|
@@ -52,6 +51,9 @@
|
|
|
52
51
|
"typescript-eslint": "^8.44.1"
|
|
53
52
|
},
|
|
54
53
|
"dependencies": {
|
|
55
|
-
"lucide-react": "^0.544.0"
|
|
54
|
+
"lucide-react": "^0.544.0",
|
|
55
|
+
"next": "16.0.0",
|
|
56
|
+
"react": "19.2.0",
|
|
57
|
+
"react-dom": "19.2.0"
|
|
56
58
|
}
|
|
57
59
|
}
|
package/src/components/index.ts
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
|
-
export { default as LoginPage } from './login/loginPage'
|
|
2
|
-
export { default as Toaster, addToast } from './toast/toaster'
|
|
3
|
-
|
|
4
1
|
// Input components
|
|
5
2
|
export { default as Input } from './inputs/input'
|
|
6
3
|
export { default as SwitchInput } from './inputs/switch'
|
|
7
4
|
export { default as TagInput } from './inputs/tag'
|
|
5
|
+
|
|
6
|
+
// Logos
|
|
7
|
+
export { default as Logo } from './logo/logo'
|
|
8
|
+
export { default as LogoSmall } from './logo/logoSmall'
|
|
9
|
+
|
|
10
|
+
// Toggles
|
|
11
|
+
export { default as ThemeToggle } from './toggle/theme'
|
|
12
|
+
export { default as LanguageToggle } from './toggle/language'
|
|
13
|
+
|
|
14
|
+
// Navbar
|
|
15
|
+
export { default as Navbar } from './navbar/navbar'
|
|
16
|
+
export { default as NavItem } from './navbar/navbarItem'
|
|
17
|
+
export { default as NavDropdown } from './navbar/navbarDropdown'
|
|
18
|
+
|
|
19
|
+
export { default as VersionTag } from './version/version'
|
|
20
|
+
export { default as LoginPage } from './login/loginPage'
|
|
21
|
+
export { default as Toaster, addToast } from './toast/toaster'
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { LoginPageProps } from 'uibee/components'
|
|
2
2
|
import { LogIn } from 'lucide-react'
|
|
3
3
|
import Link from 'next/link'
|
|
4
|
-
import
|
|
5
|
-
import logo from '@images/logo-tekst-white.svg'
|
|
4
|
+
import Logo from '@components/logo/logo'
|
|
6
5
|
|
|
7
6
|
export default function LoginPage({title, description, redirectURL, version, btg, handleSubmit}: LoginPageProps) {
|
|
8
7
|
return (
|
|
@@ -13,18 +12,13 @@ export default function LoginPage({title, description, redirectURL, version, btg
|
|
|
13
12
|
}
|
|
14
13
|
>
|
|
15
14
|
<div className='relative aspect-[3/1] w-full'>
|
|
16
|
-
<
|
|
17
|
-
src={logo}
|
|
18
|
-
alt='Logo'
|
|
19
|
-
fill
|
|
20
|
-
className='object-contain sm:px-12'
|
|
21
|
-
/>
|
|
15
|
+
<Logo className='object-contain px-6 sm:px-12' />
|
|
22
16
|
</div>
|
|
23
17
|
<h1 className='text-3xl font-extrabold text-login text-center tracking-tight'>
|
|
24
18
|
{title} {btg ? ' - Break the Glass' : ''}
|
|
25
19
|
</h1>
|
|
26
20
|
{description && (
|
|
27
|
-
<p className='text-
|
|
21
|
+
<p className='text-center font-medium text-lg mb-2 max-w-xs'>
|
|
28
22
|
{description}
|
|
29
23
|
</p>
|
|
30
24
|
)}
|
|
@@ -41,21 +35,21 @@ export default function LoginPage({title, description, redirectURL, version, btg
|
|
|
41
35
|
type='text'
|
|
42
36
|
name='name'
|
|
43
37
|
placeholder='Name'
|
|
44
|
-
className='py-2 px-3 rounded bg-login-900
|
|
38
|
+
className='py-2 px-3 rounded bg-login-900 font-medium focus:outline-none'
|
|
45
39
|
required
|
|
46
40
|
/>
|
|
47
41
|
<input
|
|
48
42
|
type='password'
|
|
49
43
|
name='token'
|
|
50
44
|
placeholder='Token'
|
|
51
|
-
className='py-2 px-3 rounded bg-login-900
|
|
45
|
+
className='py-2 px-3 rounded bg-login-900 font-medium focus:outline-none'
|
|
52
46
|
required
|
|
53
47
|
/>
|
|
54
48
|
<button
|
|
55
49
|
type='submit'
|
|
56
50
|
className={
|
|
57
51
|
'py-2 px-4 rounded-xl bg-login font-bold text-lg ' +
|
|
58
|
-
'hover:bg-login/80
|
|
52
|
+
'hover:bg-login/80 transition-all duration-200 mt-2'
|
|
59
53
|
}
|
|
60
54
|
>
|
|
61
55
|
Login
|
|
@@ -66,7 +60,7 @@ export default function LoginPage({title, description, redirectURL, version, btg
|
|
|
66
60
|
<button
|
|
67
61
|
className={
|
|
68
62
|
'flex items-center justify-center gap-2 w-full max-w-xs py-3 px-6 rounded-xl bg-login font-bold text-lg ' +
|
|
69
|
-
'hover:bg-login/80
|
|
63
|
+
'hover:bg-login/80 transition-all duration-200 mb-2 mt-2'
|
|
70
64
|
}
|
|
71
65
|
>
|
|
72
66
|
Login
|
|
@@ -74,7 +68,7 @@ export default function LoginPage({title, description, redirectURL, version, btg
|
|
|
74
68
|
</button>
|
|
75
69
|
</Link>
|
|
76
70
|
)}
|
|
77
|
-
<span className='text-
|
|
71
|
+
<span className='text-sm mt-2'>v{version}</span>
|
|
78
72
|
</div>
|
|
79
73
|
</main>
|
|
80
74
|
)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/* eslint-disable @stylistic/max-len */
|
|
2
|
+
|
|
3
|
+
interface LogoProps {
|
|
4
|
+
className?: string
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export default function Logo({ className }: LogoProps) {
|
|
8
|
+
const corner = 'fill-[var(--foreground)] transition-all duration-1000'
|
|
9
|
+
const letter = 'fill-none stroke-[var(--color-login)] stroke-[3.5px]'
|
|
10
|
+
|
|
11
|
+
return (
|
|
12
|
+
<svg className={`block w-full max-w-2xl mx-auto ${className || ''}`} viewBox='0 0 147.02299 59.20511'>
|
|
13
|
+
<path className={corner} d='m 28.77713,58.37738 v 0.76465 H 25.531 v -5.61816 h 0.91309 v 4.85351 z' />
|
|
14
|
+
<path className={corner} d='m 30.47831,59.142 h -0.917 v -5.61813 h 0.917 z'/>
|
|
15
|
+
<path className={corner} d='M 36.46268,53.52387 V 59.142 H 35.99881 A 0.36347,0.36347 0 0 1 35.6785,58.98185 L 32.59256,55.018 c 0.0078,0.07617 0.01368,0.15039 0.01758,0.22461 0.0039,0.07422 0.0059,0.14258 0.0059,0.20508 V 59.142 h -0.80371 v -5.61813 h 0.47656 a 0.71321,0.71321 0 0 1 0.09864,0.0059 0.3128,0.3128 0 0 1 0.07617,0.02148 0.22919,0.22919 0 0 1 0.0664,0.04688 0.63781,0.63781 0 0 1 0.06641,0.07812 l 3.08984,3.96779 c -0.0078,-0.08105 -0.01367,-0.16015 -0.01757,-0.23828 -0.0039,-0.07813 -0.0059,-0.15039 -0.0059,-0.21875 v -3.6631 z' />
|
|
16
|
+
<path className={corner} d='m 39.84549,57.1684 a 2.91264,2.91264 0 0 1 -0.11523,0.84765 1.748,1.748 0 0 1 -0.34375,0.64063 1.52483,1.52483 0 0 1 -0.56543,0.40527 2.00691,2.00691 0 0 1 -0.78223,0.14258 3.23707,3.23707 0 0 1 -0.40234,-0.0254 3.44454,3.44454 0 0 1 -0.41309,-0.0801 l 0.04688,-0.5459 a 0.2079,0.2079 0 0 1 0.06055,-0.125 0.19754,0.19754 0 0 1 0.14257,-0.0469 0.74035,0.74035 0 0 1 0.18067,0.0293 1.36468,1.36468 0 0 0 0.71387,-0.041 0.74722,0.74722 0 0 0 0.3125,-0.2207 0.9864,0.9864 0 0 0 0.1914,-0.38574 2.19551,2.19551 0 0 0 0.06445,-0.57227 v -3.667 h 0.90918 z' />
|
|
17
|
+
<path className={corner} d='m 44.6326,58.40473 -0.0039,0.7373 h -3.50391 v -5.61816 h 3.50391 v 0.7373 h -2.58692 v 1.69336 h 2.06739 v 0.71387 h -2.06739 v 1.73633 z' />
|
|
18
|
+
<path className={corner} d='M 46.53592,54.26117 V 56.06 h 2.19629 v 0.7373 h -2.19629 v 2.3447 h -0.917 v -5.61813 h 3.50391 v 0.7373 z' />
|
|
19
|
+
<path className={corner} d='m 55.25956,56.33344 a 3.18179,3.18179 0 0 1 -0.20215,1.15039 2.6634,2.6634 0 0 1 -0.57227,0.90722 2.59685,2.59685 0 0 1 -0.88476,0.59473 3.17156,3.17156 0 0 1 -2.29492,0 2.62415,2.62415 0 0 1 -0.88672,-0.59473 2.65327,2.65327 0 0 1 -0.57422,-0.90722 3.37717,3.37717 0 0 1 0,-2.30176 2.67118,2.67118 0 0 1 0.57422,-0.90918 2.61491,2.61491 0 0 1 0.88672,-0.59668 3.1717,3.1717 0 0 1 2.29492,0 2.58781,2.58781 0 0 1 0.88476,0.59668 2.68144,2.68144 0 0 1 0.57227,0.90918 3.1871,3.1871 0 0 1 0.20215,1.15137 z m -0.93164,0 a 2.706,2.706 0 0 0 -0.13086,-0.87012 1.821,1.821 0 0 0 -0.375,-0.65527 1.63008,1.63008 0 0 0 -0.59082,-0.41407 2.16795,2.16795 0 0 0 -1.55664,0 1.65415,1.65415 0 0 0 -0.59278,0.41407 1.84212,1.84212 0 0 0 -0.3789,0.65527 2.92611,2.92611 0 0 0 0,1.74316 1.83766,1.83766 0 0 0 0.3789,0.6543 1.64222,1.64222 0 0 0 0.59278,0.40918 2.19564,2.19564 0 0 0 1.55664,0 1.61838,1.61838 0 0 0 0.59082,-0.40918 1.81652,1.81652 0 0 0 0.375,-0.6543 2.71589,2.71589 0 0 0 0.13086,-0.87304 z' />
|
|
20
|
+
<path className={corner} d='m 60.534,59.142 h -0.81543 a 0.377,0.377 0 0 1 -0.35156,-0.1875 l -1.31055,-1.8916 a 0.4267,0.4267 0 0 0 -0.14453,-0.14063 0.50286,0.50286 0 0 0 -0.23437,-0.043 H 57.17072 V 59.142 H 56.2576 v -5.61813 h 1.6543 a 3.54427,3.54427 0 0 1 0.9541,0.11328 1.80649,1.80649 0 0 1 0.65723,0.32226 1.25606,1.25606 0 0 1 0.37988,0.501 1.76427,1.76427 0 0 1 0.03516,1.19727 1.50418,1.50418 0 0 1 -0.25293,0.46093 1.61283,1.61283 0 0 1 -0.40821,0.3584 2.04861,2.04861 0 0 1 -0.5498,0.23828 0.92346,0.92346 0 0 1 0.28906,0.28516 z m -2.64551,-2.92578 a 1.763,1.763 0 0 0 0.5459,-0.07617 1.11007,1.11007 0 0 0 0.39063,-0.21289 0.87892,0.87892 0 0 0 0.23437,-0.3252 1.10093,1.10093 0 0 0 0.07715,-0.41992 0.84276,0.84276 0 0 0 -0.30371,-0.70215 1.46527,1.46527 0 0 0 -0.9209,-0.24219 h -0.74121 v 1.97852 z' />
|
|
21
|
+
<path className={corner} d='m 64.72049,58.40473 -0.0039,0.7373 h -3.50391 v -5.61816 h 3.50391 v 0.7373 h -2.58692 v 1.69336 h 2.06739 v 0.71387 h -2.06739 v 1.73633 z' />
|
|
22
|
+
<path className={corner} d='M 70.35721,53.52387 V 59.142 H 69.89335 A 0.36347,0.36347 0 0 1 69.57303,58.98185 L 66.4871,55.018 c 0.0078,0.07617 0.01367,0.15039 0.01757,0.22461 0.0039,0.07422 0.0059,0.14258 0.0059,0.20508 V 59.142 h -0.80371 v -5.61813 h 0.47656 a 0.71321,0.71321 0 0 1 0.09864,0.0059 0.3128,0.3128 0 0 1 0.07617,0.02148 0.22936,0.22936 0 0 1 0.06641,0.04688 0.63869,0.63869 0 0 1 0.0664,0.07812 l 3.08985,3.96777 c -0.008,-0.08105 -0.0137,-0.16015 -0.0176,-0.23828 -0.004,-0.07813 -0.006,-0.15039 -0.006,-0.21875 v -3.66308 z' />
|
|
23
|
+
<path className={corner} d='m 72.6121,59.142 h -0.917 v -5.61813 h 0.917 z' />
|
|
24
|
+
<path className={corner} d='M 78.59794,53.52387 V 59.142 H 78.13358 A 0.36344,0.36344 0 0 1 77.81327,58.98185 L 74.72733,55.018 c 0.008,0.07617 0.0137,0.15039 0.0176,0.22461 0.004,0.07422 0.006,0.14258 0.006,0.20508 V 59.142 h -0.80371 v -5.61813 h 0.47656 a 0.713,0.713 0 0 1 0.0986,0.0059 0.31254,0.31254 0 0 1 0.0762,0.02148 0.22936,0.22936 0 0 1 0.0664,0.04688 0.63869,0.63869 0 0 1 0.0664,0.07812 l 3.08984,3.96777 c -0.008,-0.08105 -0.0137,-0.16015 -0.0176,-0.23828 -0.004,-0.07813 -0.006,-0.15039 -0.006,-0.21875 v -3.66308 z' />
|
|
25
|
+
<path className={corner} d='M 84.53544,56.37641 V 58.6 a 3.24425,3.24425 0 0 1 -1.9502,0.60449 3.419,3.419 0 0 1 -1.23535,-0.21289 2.7275,2.7275 0 0 1 -0.94141,-0.59277 2.59231,2.59231 0 0 1 -0.60156,-0.90723 3.08634,3.08634 0 0 1 -0.21,-1.1582 3.23536,3.23536 0 0 1 0.20215,-1.165 2.5484,2.5484 0 0 1 1.49414,-1.498 3.29189,3.29189 0 0 1 1.20215,-0.209 3.52605,3.52605 0 0 1 0.62988,0.05273 3.11559,3.11559 0 0 1 0.54,0.14649 2.535,2.535 0 0 1 0.84668,0.52246 l -0.26074,0.418 a 0.26545,0.26545 0 0 1 -0.16016,0.12109 0.27377,0.27377 0 0 1 -0.21094,-0.04688 c -0.0752,-0.04492 -0.15527,-0.09082 -0.24023,-0.14062 a 2.01137,2.01137 0 0 0 -0.29,-0.13867 2.127,2.127 0 0 0 -0.37891,-0.10547 2.72656,2.72656 0 0 0 -0.50683,-0.041 2.09434,2.09434 0 0 0 -0.80176,0.14649 1.70173,1.70173 0 0 0 -0.61035,0.418 1.84692,1.84692 0 0 0 -0.39063,0.65722 2.5766,2.5766 0 0 0 -0.13672,0.86231 2.62333,2.62333 0 0 0 0.14453,0.89844 1.88731,1.88731 0 0 0 0.41016,0.67187 1.74772,1.74772 0 0 0 0.6416,0.419 2.55647,2.55647 0 0 0 1.459,0.0703 2.80344,2.80344 0 0 0 0.53222,-0.207 V 57.07074 H 82.928 a 0.19287,0.19287 0 0 1 -0.13964,-0.04883 0.16848,0.16848 0 0 1 -0.0508,-0.12695 v -0.51855 z' />
|
|
26
|
+
<path className={corner} d='m 89.1243,58.40473 -0.004,0.7373 h -3.50391 v -5.61816 h 3.50391 v 0.7373 h -2.58692 v 1.69336 h 2.06739 v 0.71387 h -2.06739 v 1.73633 z' />
|
|
27
|
+
<path className={corner} d='M 94.761,53.52387 V 59.142 H 94.29713 A 0.36347,0.36347 0 0 1 93.97682,58.98185 L 90.8909,55.018 c 0.008,0.07617 0.0137,0.15039 0.0176,0.22461 0.004,0.07422 0.006,0.14258 0.006,0.20508 V 59.142 h -0.80371 v -5.61813 h 0.47656 a 0.71321,0.71321 0 0 1 0.0986,0.0059 0.3128,0.3128 0 0 1 0.0762,0.02148 0.22919,0.22919 0 0 1 0.0664,0.04688 0.63781,0.63781 0 0 1 0.0664,0.07812 l 3.08984,3.96777 c -0.008,-0.08105 -0.0137,-0.16015 -0.0176,-0.23828 -0.004,-0.07813 -0.006,-0.15039 -0.006,-0.21875 v -3.66308 z' />
|
|
28
|
+
<path className={corner} d='M 98.95829,54.26117 V 56.06 h 2.19629 v 0.7373 h -2.19629 v 2.3447 h -0.917 v -5.61813 h 3.5039 v 0.7373 z' />
|
|
29
|
+
<path className={corner} d='m 107.68192,56.33344 a 3.18158,3.18158 0 0 1 -0.20215,1.15039 2.66353,2.66353 0 0 1 -0.57226,0.90722 2.597,2.597 0 0 1 -0.88477,0.59473 3.17156,3.17156 0 0 1 -2.29492,0 2.62415,2.62415 0 0 1 -0.88672,-0.59473 2.65327,2.65327 0 0 1 -0.57422,-0.90722 3.37717,3.37717 0 0 1 0,-2.30176 2.67118,2.67118 0 0 1 0.57422,-0.90918 2.61491,2.61491 0 0 1 0.88672,-0.59668 3.1717,3.1717 0 0 1 2.29492,0 2.588,2.588 0 0 1 0.88477,0.59668 2.68157,2.68157 0 0 1 0.57226,0.90918 3.18689,3.18689 0 0 1 0.20215,1.15137 z m -0.93164,0 a 2.706,2.706 0 0 0 -0.13086,-0.87012 1.82066,1.82066 0 0 0 -0.375,-0.65527 1.63,1.63 0 0 0 -0.59082,-0.41407 2.16795,2.16795 0 0 0 -1.55664,0 1.65411,1.65411 0 0 0 -0.59277,0.41407 1.84214,1.84214 0 0 0 -0.37891,0.65527 2.92632,2.92632 0 0 0 0,1.74316 1.83768,1.83768 0 0 0 0.37891,0.6543 1.64218,1.64218 0 0 0 0.59277,0.40918 2.19564,2.19564 0 0 0 1.55664,0 1.61829,1.61829 0 0 0 0.59082,-0.40918 1.81623,1.81623 0 0 0 0.375,-0.6543 2.71589,2.71589 0 0 0 0.13086,-0.87304 z' />
|
|
30
|
+
<path className={corner} d='m 112.95731,59.142 h -0.81543 a 0.377,0.377 0 0 1 -0.35156,-0.1875 l -1.31055,-1.8916 a 0.4267,0.4267 0 0 0 -0.14453,-0.14063 0.50286,0.50286 0 0 0 -0.23437,-0.043 H 109.594 V 59.142 h -0.91309 v -5.61813 h 1.6543 a 3.54427,3.54427 0 0 1 0.9541,0.11328 1.80649,1.80649 0 0 1 0.65723,0.32226 1.25606,1.25606 0 0 1 0.37988,0.501 1.76427,1.76427 0 0 1 0.0352,1.19727 1.50418,1.50418 0 0 1 -0.25293,0.46093 1.61283,1.61283 0 0 1 -0.40821,0.3584 2.04861,2.04861 0 0 1 -0.5498,0.23828 0.92346,0.92346 0 0 1 0.28906,0.28516 z m -2.64551,-2.92578 a 1.763,1.763 0 0 0 0.5459,-0.07617 1.11007,1.11007 0 0 0 0.39063,-0.21289 0.87892,0.87892 0 0 0 0.23437,-0.3252 1.10093,1.10093 0 0 0 0.0772,-0.41992 0.84276,0.84276 0 0 0 -0.30371,-0.70215 1.46527,1.46527 0 0 0 -0.9209,-0.24219 H 109.594 v 1.97852 z' />
|
|
31
|
+
<path className={corner} d='m 116.4954,59.142 h -0.917 v -5.61813 h 0.917 z' />
|
|
32
|
+
<path className={corner} d='m 121.69559,54.28461 h -1.75195 V 59.142 h -0.9082 v -4.85739 h -1.75586 v -0.76074 h 4.416 z' />
|
|
33
|
+
<polyline className={letter} style={{strokeMiterlimit: 10}} points='47.871 98.1 33.189 98.1 33.189 83.418' transform='translate(-31.392,-41.894)' />
|
|
34
|
+
<polyline className={letter} style={{strokeMiterlimit: 10}} points='33.142 58.326 33.142 43.644 47.824 43.644' transform='translate(-31.392,-41.894)' />
|
|
35
|
+
<polyline className={letter} style={{strokeMiterlimit: 10}} points='161.983 98.122 176.665 98.122 176.665 83.44' transform='translate(-31.392,-41.894)' />
|
|
36
|
+
<polyline className={letter} style={{strokeMiterlimit: 10}} points='176.665 58.372 176.665 43.69 161.983 43.69' transform='translate(-31.392,-41.894)' />
|
|
37
|
+
<path className={corner} d='m 30.02449,40.19351 v 4.12842 H 12.4991 V 13.99038 h 4.92871 v 26.20313 z' />
|
|
38
|
+
<path className={corner} d='m 61.53523,29.1564 a 17.15942,17.15942 0 0 1 -1.09473,6.21338 14.35971,14.35971 0 0 1 -3.08593,4.89746 14.091,14.091 0 0 1 -4.78125,3.21191 17.1289,17.1289 0 0 1 -12.38575,0 13.98317,13.98317 0 0 1 -7.88867,-8.10937 18.18161,18.18161 0 0 1 0,-12.42725 14.39119,14.39119 0 0 1 3.09668,-4.90771 14.13157,14.13157 0 0 1 4.792,-3.22315 17.13565,17.13565 0 0 1 12.38575,0 14.02046,14.02046 0 0 1 4.78125,3.22315 14.47032,14.47032 0 0 1 3.08593,4.90771 17.16209,17.16209 0 0 1 1.09472,6.21387 z m -5.03418,0 a 14.62587,14.62587 0 0 0 -0.70508,-4.69727 9.9446,9.9446 0 0 0 -2.02246,-3.53906 8.80545,8.80545 0 0 0 -3.1914,-2.23242 11.719,11.719 0 0 0 -8.4043,0 8.90077,8.90077 0 0 0 -3.20117,2.23242 9.96735,9.96735 0 0 0 -2.043,3.53906 15.81644,15.81644 0 0 0 0,9.415 9.847,9.847 0 0 0 2.043,3.52832 8.85094,8.85094 0 0 0 3.20117,2.21192 11.87213,11.87213 0 0 0 8.4043,0 8.75623,8.75623 0 0 0 3.1914,-2.21192 9.82454,9.82454 0 0 0 2.02249,-3.52828 14.69371,14.69371 0 0 0 0.70505,-4.71777 z' />
|
|
39
|
+
<path className={corner} d='m 91.76082,29.38784 v 12.00635 a 17.5354,17.5354 0 0 1 -10.53125,3.26465 18.41512,18.41512 0 0 1 -6.667,-1.148 14.80254,14.80254 0 0 1 -5.08691,-3.20166 14.0148,14.0148 0 0 1 -3.24316,-4.897 16.691,16.691 0 0 1 -1.1377,-6.25586 17.42935,17.42935 0 0 1 1.09473,-6.2876 13.74023,13.74023 0 0 1 8.06738,-8.08838 17.7222,17.7222 0 0 1 6.48828,-1.127 19.10354,19.10354 0 0 1 3.40137,0.28418 16.85244,16.85244 0 0 1 2.917,0.79 13.68442,13.68442 0 0 1 2.48633,1.22168 13.95372,13.95372 0 0 1 2.085,1.60058 l -1.41113,2.25391 a 1.40229,1.40229 0 0 1 -0.86426,0.65283 1.47784,1.47784 0 0 1 -1.13672,-0.25244 q -0.6123,-0.35816 -1.2959,-0.7583 a 11.33129,11.33129 0 0 0 -1.56933,-0.748 11.53387,11.53387 0 0 0 -2.043,-0.56836 14.78335,14.78335 0 0 0 -2.73828,-0.22119 11.32128,11.32128 0 0 0 -4.32813,0.78955 9.26752,9.26752 0 0 0 -3.29687,2.25391 9.99164,9.99164 0 0 0 -2.10645,3.54931 13.90267,13.90267 0 0 0 -0.7373,4.65528 14.11731,14.11731 0 0 0 0.77929,4.855 10.1425,10.1425 0 0 0 2.21192,3.62305 9.43419,9.43419 0 0 0 3.46484,2.26416 13.81975,13.81975 0 0 0 7.87793,0.3789 15.14816,15.14816 0 0 0 2.875,-1.11621 v -6.02383 h -4.2334 a 1.04883,1.04883 0 0 1 -0.75879,-0.26367 0.90553,0.90553 0 0 1 -0.27343,-0.68457 v -2.80127 z' />
|
|
40
|
+
<path className={corner} d='M 102.546,44.32193 H 97.59581 V 13.99038 h 4.95019 z' />
|
|
41
|
+
<path className={corner} d='m 134.8575,13.99038 v 30.33155 h -2.50684 a 2.14219,2.14219 0 0 1 -0.96875,-0.2002 2.26108,2.26108 0 0 1 -0.75879,-0.66357 L 113.962,22.05777 q 0.063,0.61083 0.0947,1.21093 0.0322,0.60058 0.0322,1.106 v 19.94723 h -4.3398 V 13.99038 h 2.57031 a 3.89092,3.89092 0 0 1 0.53711,0.03174 1.53328,1.53328 0 0 1 0.41016,0.11572 1.18964,1.18964 0 0 1 0.35839,0.25293 4.01792,4.01792 0 0 1 0.3584,0.4209 l 16.68164,21.42188 q -0.063,-0.65259 -0.0947,-1.28467 -0.0308,-0.63208 -0.0312,-1.17969 V 13.99038 Z' />
|
|
42
|
+
</svg>
|
|
43
|
+
|
|
44
|
+
)
|
|
45
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export default function LogoSmall() {
|
|
2
|
+
const corner = 'fill-login'
|
|
3
|
+
const letter = 'fill-[var(--foreground)] transition-all duration-1000'
|
|
4
|
+
|
|
5
|
+
return (
|
|
6
|
+
<svg className='block h-full' viewBox='0 0 100 100' fill='none' xmlns='http://www.w3.org/2000/svg'>
|
|
7
|
+
<path className={corner} d='M0 0H6.6667V28.3333H0V0Z'/>
|
|
8
|
+
<path className={corner} d='M28.3333 0V6.6667H0V0H28.3333Z'/>
|
|
9
|
+
<path className={corner} d='M100 0V6.6667H71.6667V0H100Z'/>
|
|
10
|
+
<path className={corner} d='M100 28.3333H93.3333V0H100V28.3333Z'/>
|
|
11
|
+
<path className={corner} d='M0 100V93.3333H28.3333V100H0Z'/>
|
|
12
|
+
<path className={corner} d='M0 71.6667H6.6667V100H0V71.6667Z'/>
|
|
13
|
+
<path className={corner} d='M100 100H93.3333V71.6667H100V100Z'/>
|
|
14
|
+
<path className={corner} d='M71.6667 100V93.3333H100V100H71.6667Z'/>
|
|
15
|
+
<path className={letter} d='M31.6667 18.3333H43.3334V81.6666H31.6667V18.3333Z'/>
|
|
16
|
+
<path className={letter} d='M31.6667 70H68.3334V81.6667H31.6667V70Z'/>
|
|
17
|
+
</svg>
|
|
18
|
+
)
|
|
19
|
+
}
|