prox-cli 1.3.2 → 1.3.3
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/bin/index.js +1 -1
- package/package.json +1 -1
- package/templates/next@14/.eslintrc.json +11 -2
- package/templates/next@14/src/components/ui/button.tsx +60 -60
- package/templates/next@14/src/components/ui/svgs/npm.tsx +13 -13
- package/templates/next@14/src/components/ui/svgs/npmWordmark.tsx +12 -12
- package/templates/next@14/src/components/welcome-component.tsx +1 -1
- package/templates/next@14/src/lib/storage/local.storage.ts +54 -54
- package/templates/next@14/src/lib/storage/session.storage.ts +54 -54
- package/templates/next@14/src/lib/utils.ts +6 -6
- package/templates/next@14/src/tests/e2e.spec.tsx +5 -7
package/bin/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
{
|
|
2
|
-
"extends": ["next/core-web-vitals", "
|
|
2
|
+
"extends": ["next/core-web-vitals", "eslint:recommended", "prettier"],
|
|
3
|
+
"parser": "@typescript-eslint/parser",
|
|
4
|
+
"parserOptions": {
|
|
5
|
+
"project": "./tsconfig.json"
|
|
6
|
+
},
|
|
3
7
|
"rules": {
|
|
4
8
|
"indent": ["error", 4],
|
|
5
9
|
"semi": ["error", "always"],
|
|
6
10
|
"quotes": ["error", "double", { "avoidEscape": true, "allowTemplateLiterals": true }],
|
|
11
|
+
"no-console": "error",
|
|
7
12
|
"no-var": "error",
|
|
8
|
-
"
|
|
13
|
+
"eqeqeq": ["error", "always"],
|
|
14
|
+
"array-bracket-spacing": ["error", "never"],
|
|
15
|
+
"comma-spacing": ["error", { "before": false, "after": true }],
|
|
16
|
+
"object-curly-spacing": ["error", "always"],
|
|
17
|
+
"key-spacing": ["error", { "beforeColon": false, "afterColon": true }]
|
|
9
18
|
}
|
|
10
19
|
}
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
import { Slot } from "@radix-ui/react-slot"
|
|
3
|
-
import { cva, type VariantProps } from "class-variance-authority"
|
|
4
|
-
|
|
5
|
-
import { cn } from "@/lib/utils/cn.util"
|
|
6
|
-
|
|
7
|
-
const buttonVariants = cva(
|
|
8
|
-
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
|
9
|
-
{
|
|
10
|
-
variants: {
|
|
11
|
-
variant: {
|
|
12
|
-
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
13
|
-
destructive:
|
|
14
|
-
"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
|
15
|
-
outline:
|
|
16
|
-
"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
|
|
17
|
-
secondary:
|
|
18
|
-
"bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
19
|
-
ghost:
|
|
20
|
-
"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
|
|
21
|
-
link: "text-primary underline-offset-4 hover:underline",
|
|
22
|
-
},
|
|
23
|
-
size: {
|
|
24
|
-
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
25
|
-
sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
|
|
26
|
-
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
|
27
|
-
icon: "size-9",
|
|
28
|
-
"icon-sm": "size-8",
|
|
29
|
-
"icon-lg": "size-10",
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
defaultVariants: {
|
|
33
|
-
variant: "default",
|
|
34
|
-
size: "default",
|
|
35
|
-
},
|
|
36
|
-
}
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
function Button({
|
|
40
|
-
className,
|
|
41
|
-
variant,
|
|
42
|
-
size,
|
|
43
|
-
asChild = false,
|
|
44
|
-
...props
|
|
45
|
-
}: React.ComponentProps<"button"> &
|
|
46
|
-
VariantProps<typeof buttonVariants> & {
|
|
47
|
-
asChild?: boolean
|
|
48
|
-
}) {
|
|
49
|
-
const Comp = asChild ? Slot : "button"
|
|
50
|
-
|
|
51
|
-
return (
|
|
52
|
-
<Comp
|
|
53
|
-
data-slot="button"
|
|
54
|
-
className={cn(buttonVariants({ variant, size, className }))}
|
|
55
|
-
{...props}
|
|
56
|
-
/>
|
|
57
|
-
)
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export { Button, buttonVariants }
|
|
1
|
+
import * as React from "react"
|
|
2
|
+
import { Slot } from "@radix-ui/react-slot"
|
|
3
|
+
import { cva, type VariantProps } from "class-variance-authority"
|
|
4
|
+
|
|
5
|
+
import { cn } from "@/lib/utils/cn.util"
|
|
6
|
+
|
|
7
|
+
const buttonVariants = cva(
|
|
8
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
|
9
|
+
{
|
|
10
|
+
variants: {
|
|
11
|
+
variant: {
|
|
12
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
13
|
+
destructive:
|
|
14
|
+
"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
|
15
|
+
outline:
|
|
16
|
+
"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
|
|
17
|
+
secondary:
|
|
18
|
+
"bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
19
|
+
ghost:
|
|
20
|
+
"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
|
|
21
|
+
link: "text-primary underline-offset-4 hover:underline",
|
|
22
|
+
},
|
|
23
|
+
size: {
|
|
24
|
+
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
25
|
+
sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
|
|
26
|
+
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
|
27
|
+
icon: "size-9",
|
|
28
|
+
"icon-sm": "size-8",
|
|
29
|
+
"icon-lg": "size-10",
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
defaultVariants: {
|
|
33
|
+
variant: "default",
|
|
34
|
+
size: "default",
|
|
35
|
+
},
|
|
36
|
+
}
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
function Button({
|
|
40
|
+
className,
|
|
41
|
+
variant,
|
|
42
|
+
size,
|
|
43
|
+
asChild = false,
|
|
44
|
+
...props
|
|
45
|
+
}: React.ComponentProps<"button"> &
|
|
46
|
+
VariantProps<typeof buttonVariants> & {
|
|
47
|
+
asChild?: boolean
|
|
48
|
+
}) {
|
|
49
|
+
const Comp = asChild ? Slot : "button"
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<Comp
|
|
53
|
+
data-slot="button"
|
|
54
|
+
className={cn(buttonVariants({ variant, size, className }))}
|
|
55
|
+
{...props}
|
|
56
|
+
/>
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export { Button, buttonVariants }
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import type { SVGProps } from "react";
|
|
2
|
-
|
|
3
|
-
const Npm = (props: SVGProps<SVGSVGElement>) => (
|
|
4
|
-
<svg {...props} viewBox="0 0 2500 2500">
|
|
5
|
-
<path fill="#c00" d="M0 0h2500v2500H0z" />
|
|
6
|
-
<path
|
|
7
|
-
fill="#fff"
|
|
8
|
-
d="M1241.5 268.5h-973v1962.9h972.9V763.5h495v1467.9h495V268.5z"
|
|
9
|
-
/>
|
|
10
|
-
</svg>
|
|
11
|
-
);
|
|
12
|
-
|
|
13
|
-
export { Npm };
|
|
1
|
+
import type { SVGProps } from "react";
|
|
2
|
+
|
|
3
|
+
const Npm = (props: SVGProps<SVGSVGElement>) => (
|
|
4
|
+
<svg {...props} viewBox="0 0 2500 2500">
|
|
5
|
+
<path fill="#c00" d="M0 0h2500v2500H0z" />
|
|
6
|
+
<path
|
|
7
|
+
fill="#fff"
|
|
8
|
+
d="M1241.5 268.5h-973v1962.9h972.9V763.5h495v1467.9h495V268.5z"
|
|
9
|
+
/>
|
|
10
|
+
</svg>
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
export { Npm };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type { SVGProps } from "react";
|
|
2
|
-
|
|
3
|
-
const NpmWordmark = (props: SVGProps<SVGSVGElement>) => (
|
|
4
|
-
<svg {...props} viewBox="0 0 128 128">
|
|
5
|
-
<path
|
|
6
|
-
fill="#cb3837"
|
|
7
|
-
d="M2 38.5h124v43.71H64v7.29H36.44v-7.29H2Zm6.89 36.43h13.78V53.07h6.89v21.86h6.89V45.79H8.89Zm34.44-29.14v36.42h13.78v-7.28h13.78V45.79Zm13.78 7.29H64v14.56h-6.89Zm20.67-7.29v29.14h13.78V53.07h6.89v21.86h6.89V53.07h6.89v21.86h6.89V45.79Z"
|
|
8
|
-
/>
|
|
9
|
-
</svg>
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
export { NpmWordmark };
|
|
1
|
+
import type { SVGProps } from "react";
|
|
2
|
+
|
|
3
|
+
const NpmWordmark = (props: SVGProps<SVGSVGElement>) => (
|
|
4
|
+
<svg {...props} viewBox="0 0 128 128">
|
|
5
|
+
<path
|
|
6
|
+
fill="#cb3837"
|
|
7
|
+
d="M2 38.5h124v43.71H64v7.29H36.44v-7.29H2Zm6.89 36.43h13.78V53.07h6.89v21.86h6.89V45.79H8.89Zm34.44-29.14v36.42h13.78v-7.28h13.78V45.79Zm13.78 7.29H64v14.56h-6.89Zm20.67-7.29v29.14h13.78V53.07h6.89v21.86h6.89V53.07h6.89v21.86h6.89V45.79Z"
|
|
8
|
+
/>
|
|
9
|
+
</svg>
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
export { NpmWordmark };
|
|
@@ -25,7 +25,7 @@ export default function WelcomeComponent({ className }: WelcomeComponentProps) {
|
|
|
25
25
|
</a>
|
|
26
26
|
</Button>
|
|
27
27
|
<Button size="lg" variant="outline" asChild>
|
|
28
|
-
<a href="https://
|
|
28
|
+
<a href="https://www.npmjs.com/package/prox-cli" target="_blank" className="size-10">
|
|
29
29
|
<NpmWordmark />
|
|
30
30
|
</a>
|
|
31
31
|
</Button>
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Provides a set of utility methods for interacting with the browser's localStorage.
|
|
3
|
-
* The 'local' object includes methods for storing, retrieving, and managing data
|
|
4
|
-
* within local storage, ensuring values are handled with JSON serialization.
|
|
5
|
-
* All methods are immutable due to Object.freeze.
|
|
6
|
-
*/
|
|
7
|
-
export const local = Object.freeze({
|
|
8
|
-
/**
|
|
9
|
-
* The number of key/value pairs currently present in the local storage.
|
|
10
|
-
*/
|
|
11
|
-
length: localStorage.length,
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Retrieves the parsed value associated with the given key from local storage.
|
|
15
|
-
* @param key - The key to retrieve the value for.
|
|
16
|
-
* @returns The parsed value, or null if the key does not exist.
|
|
17
|
-
*/
|
|
18
|
-
get(key: string) {
|
|
19
|
-
return JSON.parse(localStorage.getItem(key) as string);
|
|
20
|
-
},
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Stores a key/value pair in local storage. The value is stringified before storage.
|
|
24
|
-
* @param key - The key to set.
|
|
25
|
-
* @param value - The value to store (will be stringified).
|
|
26
|
-
*/
|
|
27
|
-
set(key: string, value: unknown) {
|
|
28
|
-
return localStorage.setItem(key, JSON.stringify(value));
|
|
29
|
-
},
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Removes the specified key and its associated value from local storage.
|
|
33
|
-
* @param key - The key to remove.
|
|
34
|
-
*/
|
|
35
|
-
delete(key: string) {
|
|
36
|
-
return localStorage.removeItem(key);
|
|
37
|
-
},
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Clears all key/value pairs from local storage.
|
|
41
|
-
*/
|
|
42
|
-
drop() {
|
|
43
|
-
return localStorage.clear();
|
|
44
|
-
},
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Returns the name of the key at the given position in local storage.
|
|
48
|
-
* @param index - The index of the key to retrieve.
|
|
49
|
-
* @returns The name of the key, or null if the index is out of bounds.
|
|
50
|
-
*/
|
|
51
|
-
key(index: number) {
|
|
52
|
-
return localStorage.key(index);
|
|
53
|
-
},
|
|
54
|
-
});
|
|
1
|
+
/**
|
|
2
|
+
* Provides a set of utility methods for interacting with the browser's localStorage.
|
|
3
|
+
* The 'local' object includes methods for storing, retrieving, and managing data
|
|
4
|
+
* within local storage, ensuring values are handled with JSON serialization.
|
|
5
|
+
* All methods are immutable due to Object.freeze.
|
|
6
|
+
*/
|
|
7
|
+
export const local = Object.freeze({
|
|
8
|
+
/**
|
|
9
|
+
* The number of key/value pairs currently present in the local storage.
|
|
10
|
+
*/
|
|
11
|
+
length: localStorage.length,
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Retrieves the parsed value associated with the given key from local storage.
|
|
15
|
+
* @param key - The key to retrieve the value for.
|
|
16
|
+
* @returns The parsed value, or null if the key does not exist.
|
|
17
|
+
*/
|
|
18
|
+
get(key: string) {
|
|
19
|
+
return JSON.parse(localStorage.getItem(key) as string);
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Stores a key/value pair in local storage. The value is stringified before storage.
|
|
24
|
+
* @param key - The key to set.
|
|
25
|
+
* @param value - The value to store (will be stringified).
|
|
26
|
+
*/
|
|
27
|
+
set(key: string, value: unknown) {
|
|
28
|
+
return localStorage.setItem(key, JSON.stringify(value));
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Removes the specified key and its associated value from local storage.
|
|
33
|
+
* @param key - The key to remove.
|
|
34
|
+
*/
|
|
35
|
+
delete(key: string) {
|
|
36
|
+
return localStorage.removeItem(key);
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Clears all key/value pairs from local storage.
|
|
41
|
+
*/
|
|
42
|
+
drop() {
|
|
43
|
+
return localStorage.clear();
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Returns the name of the key at the given position in local storage.
|
|
48
|
+
* @param index - The index of the key to retrieve.
|
|
49
|
+
* @returns The name of the key, or null if the index is out of bounds.
|
|
50
|
+
*/
|
|
51
|
+
key(index: number) {
|
|
52
|
+
return localStorage.key(index);
|
|
53
|
+
},
|
|
54
|
+
});
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Provides a set of utility methods for interacting with the browser's sessionStorage.
|
|
3
|
-
* The 'session' object includes methods for storing, retrieving, and managing data
|
|
4
|
-
* within session storage, ensuring values are handled with JSON serialization.
|
|
5
|
-
* All methods are immutable due to Object.freeze.
|
|
6
|
-
*/
|
|
7
|
-
export const session = Object.freeze({
|
|
8
|
-
/**
|
|
9
|
-
* The number of key/value pairs currently present in the session storage.
|
|
10
|
-
*/
|
|
11
|
-
length: sessionStorage.length,
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Retrieves the parsed value associated with the given key from session storage.
|
|
15
|
-
* @param key - The key to retrieve the value for.
|
|
16
|
-
* @returns The parsed value, or null if the key does not exist.
|
|
17
|
-
*/
|
|
18
|
-
get(key: string) {
|
|
19
|
-
return JSON.parse(sessionStorage.getItem(key) as string);
|
|
20
|
-
},
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Stores a key/value pair in session storage. The value is stringified before storage.
|
|
24
|
-
* @param key - The key to set.
|
|
25
|
-
* @param value - The value to store (will be stringified).
|
|
26
|
-
*/
|
|
27
|
-
set(key: string, value: unknown) {
|
|
28
|
-
return sessionStorage.setItem(key, JSON.stringify(value));
|
|
29
|
-
},
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Removes the specified key and its associated value from session storage.
|
|
33
|
-
* @param key - The key to remove.
|
|
34
|
-
*/
|
|
35
|
-
delete(key: string) {
|
|
36
|
-
return sessionStorage.removeItem(key);
|
|
37
|
-
},
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Clears all key/value pairs from session storage.
|
|
41
|
-
*/
|
|
42
|
-
drop() {
|
|
43
|
-
return sessionStorage.clear();
|
|
44
|
-
},
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Returns the name of the key at the given position in session storage.
|
|
48
|
-
* @param index - The index of the key to retrieve.
|
|
49
|
-
* @returns The name of the key, or null if the index is out of bounds.
|
|
50
|
-
*/
|
|
51
|
-
key(index: number) {
|
|
52
|
-
return sessionStorage.key(index);
|
|
53
|
-
},
|
|
54
|
-
});
|
|
1
|
+
/**
|
|
2
|
+
* Provides a set of utility methods for interacting with the browser's sessionStorage.
|
|
3
|
+
* The 'session' object includes methods for storing, retrieving, and managing data
|
|
4
|
+
* within session storage, ensuring values are handled with JSON serialization.
|
|
5
|
+
* All methods are immutable due to Object.freeze.
|
|
6
|
+
*/
|
|
7
|
+
export const session = Object.freeze({
|
|
8
|
+
/**
|
|
9
|
+
* The number of key/value pairs currently present in the session storage.
|
|
10
|
+
*/
|
|
11
|
+
length: sessionStorage.length,
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Retrieves the parsed value associated with the given key from session storage.
|
|
15
|
+
* @param key - The key to retrieve the value for.
|
|
16
|
+
* @returns The parsed value, or null if the key does not exist.
|
|
17
|
+
*/
|
|
18
|
+
get(key: string) {
|
|
19
|
+
return JSON.parse(sessionStorage.getItem(key) as string);
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Stores a key/value pair in session storage. The value is stringified before storage.
|
|
24
|
+
* @param key - The key to set.
|
|
25
|
+
* @param value - The value to store (will be stringified).
|
|
26
|
+
*/
|
|
27
|
+
set(key: string, value: unknown) {
|
|
28
|
+
return sessionStorage.setItem(key, JSON.stringify(value));
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Removes the specified key and its associated value from session storage.
|
|
33
|
+
* @param key - The key to remove.
|
|
34
|
+
*/
|
|
35
|
+
delete(key: string) {
|
|
36
|
+
return sessionStorage.removeItem(key);
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Clears all key/value pairs from session storage.
|
|
41
|
+
*/
|
|
42
|
+
drop() {
|
|
43
|
+
return sessionStorage.clear();
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Returns the name of the key at the given position in session storage.
|
|
48
|
+
* @param index - The index of the key to retrieve.
|
|
49
|
+
* @returns The name of the key, or null if the index is out of bounds.
|
|
50
|
+
*/
|
|
51
|
+
key(index: number) {
|
|
52
|
+
return sessionStorage.key(index);
|
|
53
|
+
},
|
|
54
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type ClassValue, clsx } from 'clsx';
|
|
2
|
-
import { twMerge } from 'tailwind-merge';
|
|
3
|
-
|
|
4
|
-
export function cn(...inputs: ClassValue[]) {
|
|
5
|
-
return twMerge(clsx(inputs));
|
|
6
|
-
}
|
|
1
|
+
import { type ClassValue, clsx } from 'clsx';
|
|
2
|
+
import { twMerge } from 'tailwind-merge';
|
|
3
|
+
|
|
4
|
+
export function cn(...inputs: ClassValue[]) {
|
|
5
|
+
return twMerge(clsx(inputs));
|
|
6
|
+
}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { render
|
|
3
|
-
import {
|
|
1
|
+
import HomePage from "@app/page";
|
|
2
|
+
import { render } from "@testing-library/react";
|
|
3
|
+
import { it } from "vitest";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
render(<
|
|
7
|
-
// Replace "" with the test id you expect to be present in the component
|
|
8
|
-
expect(screen.getByTestId("home-page")).toBeDefined();
|
|
5
|
+
it("Page", () => {
|
|
6
|
+
render(<HomePage />);
|
|
9
7
|
});
|