startx 0.1.5 → 0.2.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.
Files changed (67) hide show
  1. package/.editorconfig +20 -20
  2. package/.github/workflows/publish.yml +48 -0
  3. package/LICENSE +21 -21
  4. package/configs/eslint-config/plugins.d.ts +1 -1
  5. package/configs/eslint-config/src/rules/no-argument-spread.ts +96 -96
  6. package/configs/eslint-config/src/rules/no-internal-package-import.ts +40 -40
  7. package/configs/eslint-config/src/rules/no-interpolation-in-regular-string.ts +32 -32
  8. package/configs/eslint-config/src/rules/no-skipped-tests.ts +61 -61
  9. package/configs/eslint-config/src/rules/no-top-level-relative-imports-in-backend-module.ts +27 -27
  10. package/configs/eslint-config/src/rules/no-type-unsafe-event-emitter.ts +33 -33
  11. package/configs/eslint-config/src/rules/no-uncaught-json-parse.test.ts +21 -21
  12. package/configs/eslint-config/src/rules/no-untyped-config-class-field.ts +26 -26
  13. package/configs/eslint-config/src/rules/no-unused-param-catch-clause.ts +33 -33
  14. package/configs/eslint-config/src/rules/no-useless-catch-throw.test.ts +34 -34
  15. package/configs/eslint-config/src/rules/no-useless-catch-throw.ts +47 -47
  16. package/configs/eslint-config/src/utils/json.ts +21 -21
  17. package/package.json +34 -35
  18. package/packages/@repo/constants/src/api.ts +1 -1
  19. package/packages/@repo/constants/src/time.ts +23 -23
  20. package/packages/@repo/db/src/schema/index.ts +1 -1
  21. package/packages/@repo/lib/src/error-handlers-module/index.ts +11 -11
  22. package/packages/cli/dist/index.mjs +2 -2
  23. package/packages/cli/tsdown.config.ts +1 -0
  24. package/packages/ui/src/components/custom/grid-component.tsx +23 -23
  25. package/packages/ui/src/components/custom/hover-tool.tsx +38 -38
  26. package/packages/ui/src/components/custom/image-picker.tsx +109 -109
  27. package/packages/ui/src/components/custom/no-content.tsx +37 -37
  28. package/packages/ui/src/components/custom/page-container.tsx +24 -24
  29. package/packages/ui/src/components/custom/simple-popover.tsx +29 -29
  30. package/packages/ui/src/components/custom/switch-component.tsx +20 -20
  31. package/packages/ui/src/components/custom/theme-provider.tsx +74 -74
  32. package/packages/ui/src/components/hooks/event/use-click.tsx +39 -39
  33. package/packages/ui/src/components/hooks/time/useDebounce.tsx +21 -21
  34. package/packages/ui/src/components/hooks/time/useInterval.tsx +35 -35
  35. package/packages/ui/src/components/hooks/time/useTimeout.tsx +19 -19
  36. package/packages/ui/src/components/hooks/time/useTimer.tsx +51 -51
  37. package/packages/ui/src/components/hooks/use-media-query.tsx +19 -19
  38. package/packages/ui/src/components/hooks/use-persistent-storage.tsx +52 -52
  39. package/packages/ui/src/components/hooks/use-window-dimension.tsx +30 -30
  40. package/packages/ui/src/components/sonner.tsx +1 -1
  41. package/packages/ui/src/components/ui/button.tsx +96 -96
  42. package/packages/ui/src/components/ui/dropdown-menu.tsx +226 -226
  43. package/packages/ui/src/components/ui/label.tsx +24 -24
  44. package/packages/ui/src/components/ui/popover.tsx +42 -42
  45. package/packages/ui/src/components/ui/select.tsx +170 -170
  46. package/packages/ui/src/components/ui/separator.tsx +28 -28
  47. package/packages/ui/src/components/ui/sheet.tsx +130 -130
  48. package/packages/ui/src/components/ui/skeleton.tsx +13 -13
  49. package/packages/ui/src/components/ui/spinner.tsx +16 -16
  50. package/packages/ui/src/components/ui/switch.tsx +28 -28
  51. package/packages/ui/src/components/ui/tabs.tsx +54 -54
  52. package/packages/ui/src/components/ui/tooltip.tsx +30 -30
  53. package/packages/ui/src/components/util/n-formattor.ts +22 -22
  54. package/packages/ui/src/components/util/storage.ts +37 -37
  55. package/packages/ui/src/globals.css +87 -87
  56. package/configs/vitest-config/dist/base.mjs +0 -1
  57. package/configs/vitest-config/dist/frontend.mjs +0 -1
  58. package/configs/vitest-config/dist/node.mjs +0 -1
  59. package/packages/@repo/redis/dist/index.d.mts +0 -3
  60. package/packages/@repo/redis/dist/index.mjs +0 -5
  61. package/packages/@repo/redis/dist/lib/redis-client.d.mts +0 -7
  62. package/packages/@repo/redis/dist/lib/redis-client.mjs +0 -25
  63. package/packages/@repo/redis/dist/lib/redis-client.mjs.map +0 -1
  64. package/packages/@repo/redis/dist/lib/redis-module.d.mts +0 -5
  65. package/packages/@repo/redis/dist/lib/redis-module.mjs +0 -6
  66. package/packages/@repo/redis/dist/lib/redis-module.mjs.map +0 -1
  67. /package/{apps/core-server/.env.example → .env.example} +0 -0
@@ -1,13 +1,13 @@
1
- import { cn } from "../lib/utils";
2
-
3
- function Skeleton({ className, ...props }: React.ComponentProps<"div">) {
4
- return (
5
- <div
6
- data-slot="skeleton"
7
- className={cn("bg-accent animate-pulse rounded-md", className)}
8
- {...props}
9
- />
10
- );
11
- }
12
-
13
- export { Skeleton };
1
+ import { cn } from "../lib/utils";
2
+
3
+ function Skeleton({ className, ...props }: React.ComponentProps<"div">) {
4
+ return (
5
+ <div
6
+ data-slot="skeleton"
7
+ className={cn("bg-accent animate-pulse rounded-md", className)}
8
+ {...props}
9
+ />
10
+ );
11
+ }
12
+
13
+ export { Skeleton };
@@ -1,16 +1,16 @@
1
- import { type HTMLProps, forwardRef } from 'react';
2
-
3
- import { cn } from '../lib/utils';
4
-
5
- export const Spinner = forwardRef<HTMLDivElement, HTMLProps<HTMLDivElement>>(
6
- ({ className, ...rest }, ref) => {
7
- const spinnerClass = cn(
8
- 'animate-spin rounded-full border-2 border-current border-t-transparent h-4 w-4',
9
- className,
10
- );
11
-
12
- return <div className={spinnerClass} ref={ref} {...rest} />;
13
- },
14
- );
15
-
16
- Spinner.displayName = 'Spinner';
1
+ import { type HTMLProps, forwardRef } from 'react';
2
+
3
+ import { cn } from '../lib/utils';
4
+
5
+ export const Spinner = forwardRef<HTMLDivElement, HTMLProps<HTMLDivElement>>(
6
+ ({ className, ...rest }, ref) => {
7
+ const spinnerClass = cn(
8
+ 'animate-spin rounded-full border-2 border-current border-t-transparent h-4 w-4',
9
+ className,
10
+ );
11
+
12
+ return <div className={spinnerClass} ref={ref} {...rest} />;
13
+ },
14
+ );
15
+
16
+ Spinner.displayName = 'Spinner';
@@ -1,28 +1,28 @@
1
- 'use client';
2
-
3
- import * as SwitchPrimitive from '@radix-ui/react-switch';
4
- import type * as React from 'react';
5
-
6
- import { cn } from '../lib/utils';
7
-
8
- function Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>) {
9
- return (
10
- <SwitchPrimitive.Root
11
- data-slot="switch"
12
- className={cn(
13
- 'peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
14
- className,
15
- )}
16
- {...props}
17
- >
18
- <SwitchPrimitive.Thumb
19
- data-slot="switch-thumb"
20
- className={cn(
21
- 'bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0',
22
- )}
23
- />
24
- </SwitchPrimitive.Root>
25
- );
26
- }
27
-
28
- export { Switch };
1
+ 'use client';
2
+
3
+ import * as SwitchPrimitive from '@radix-ui/react-switch';
4
+ import type * as React from 'react';
5
+
6
+ import { cn } from '../lib/utils';
7
+
8
+ function Switch({ className, ...props }: React.ComponentProps<typeof SwitchPrimitive.Root>) {
9
+ return (
10
+ <SwitchPrimitive.Root
11
+ data-slot="switch"
12
+ className={cn(
13
+ 'peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
14
+ className,
15
+ )}
16
+ {...props}
17
+ >
18
+ <SwitchPrimitive.Thumb
19
+ data-slot="switch-thumb"
20
+ className={cn(
21
+ 'bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0',
22
+ )}
23
+ />
24
+ </SwitchPrimitive.Root>
25
+ );
26
+ }
27
+
28
+ export { Switch };
@@ -1,54 +1,54 @@
1
- 'use client';
2
-
3
- import * as TabsPrimitive from '@radix-ui/react-tabs';
4
- import type * as React from 'react';
5
-
6
- import { cn } from '../lib/utils';
7
-
8
- function Tabs({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Root>) {
9
- return (
10
- <TabsPrimitive.Root
11
- data-slot="tabs"
12
- className={cn('flex flex-col gap-2', className)}
13
- {...props}
14
- />
15
- );
16
- }
17
-
18
- function TabsList({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.List>) {
19
- return (
20
- <TabsPrimitive.List
21
- data-slot="tabs-list"
22
- className={cn(
23
- 'bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]',
24
- className,
25
- )}
26
- {...props}
27
- />
28
- );
29
- }
30
-
31
- function TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>) {
32
- return (
33
- <TabsPrimitive.Trigger
34
- data-slot="tabs-trigger"
35
- className={cn(
36
- "data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
37
- className,
38
- )}
39
- {...props}
40
- />
41
- );
42
- }
43
-
44
- function TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>) {
45
- return (
46
- <TabsPrimitive.Content
47
- data-slot="tabs-content"
48
- className={cn('flex-1 outline-none', className)}
49
- {...props}
50
- />
51
- );
52
- }
53
-
54
- export { Tabs, TabsList, TabsTrigger, TabsContent };
1
+ 'use client';
2
+
3
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
4
+ import type * as React from 'react';
5
+
6
+ import { cn } from '../lib/utils';
7
+
8
+ function Tabs({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Root>) {
9
+ return (
10
+ <TabsPrimitive.Root
11
+ data-slot="tabs"
12
+ className={cn('flex flex-col gap-2', className)}
13
+ {...props}
14
+ />
15
+ );
16
+ }
17
+
18
+ function TabsList({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.List>) {
19
+ return (
20
+ <TabsPrimitive.List
21
+ data-slot="tabs-list"
22
+ className={cn(
23
+ 'bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]',
24
+ className,
25
+ )}
26
+ {...props}
27
+ />
28
+ );
29
+ }
30
+
31
+ function TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>) {
32
+ return (
33
+ <TabsPrimitive.Trigger
34
+ data-slot="tabs-trigger"
35
+ className={cn(
36
+ "data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
37
+ className,
38
+ )}
39
+ {...props}
40
+ />
41
+ );
42
+ }
43
+
44
+ function TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>) {
45
+ return (
46
+ <TabsPrimitive.Content
47
+ data-slot="tabs-content"
48
+ className={cn('flex-1 outline-none', className)}
49
+ {...props}
50
+ />
51
+ );
52
+ }
53
+
54
+ export { Tabs, TabsList, TabsTrigger, TabsContent };
@@ -1,30 +1,30 @@
1
- 'use client';
2
-
3
- import * as TooltipPrimitive from '@radix-ui/react-tooltip';
4
- import * as React from 'react';
5
-
6
- import { cn } from '../lib/utils';
7
-
8
- const TooltipProvider = TooltipPrimitive.Provider;
9
-
10
- const Tooltip = TooltipPrimitive.Root;
11
-
12
- const TooltipTrigger = TooltipPrimitive.Trigger;
13
-
14
- const TooltipContent = React.forwardRef<
15
- React.ElementRef<typeof TooltipPrimitive.Content>,
16
- React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>
17
- >(({ className, sideOffset = 4, ...props }, ref) => (
18
- <TooltipPrimitive.Content
19
- ref={ref}
20
- sideOffset={sideOffset}
21
- className={cn(
22
- 'z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
23
- className,
24
- )}
25
- {...props}
26
- />
27
- ));
28
- TooltipContent.displayName = TooltipPrimitive.Content.displayName;
29
-
30
- export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
1
+ 'use client';
2
+
3
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
4
+ import * as React from 'react';
5
+
6
+ import { cn } from '../lib/utils';
7
+
8
+ const TooltipProvider = TooltipPrimitive.Provider;
9
+
10
+ const Tooltip = TooltipPrimitive.Root;
11
+
12
+ const TooltipTrigger = TooltipPrimitive.Trigger;
13
+
14
+ const TooltipContent = React.forwardRef<
15
+ React.ElementRef<typeof TooltipPrimitive.Content>,
16
+ React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>
17
+ >(({ className, sideOffset = 4, ...props }, ref) => (
18
+ <TooltipPrimitive.Content
19
+ ref={ref}
20
+ sideOffset={sideOffset}
21
+ className={cn(
22
+ 'z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
23
+ className,
24
+ )}
25
+ {...props}
26
+ />
27
+ ));
28
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
29
+
30
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
@@ -1,22 +1,22 @@
1
- export function nFormatter(num: number, digits?: number) {
2
- if (!num) return "0";
3
- const lookup = [
4
- { value: 1, symbol: "" },
5
- { value: 1e3, symbol: "K" },
6
- { value: 1e6, symbol: "M" },
7
- { value: 1e9, symbol: "B" },
8
- { value: 1e12, symbol: "T" },
9
- { value: 1e15, symbol: "P" },
10
- { value: 1e18, symbol: "E" },
11
- ];
12
- const rx = /\.0+$|(\.[0-9]*[1-9])0+$/;
13
- const item = lookup
14
- .slice()
15
- .reverse()
16
- .find(function (item) {
17
- return num >= item.value;
18
- });
19
- return item
20
- ? (num / item.value).toFixed(digits ?? 1).replace(rx, "$1") + item.symbol
21
- : "0";
22
- }
1
+ export function nFormatter(num: number, digits?: number) {
2
+ if (!num) return "0";
3
+ const lookup = [
4
+ { value: 1, symbol: "" },
5
+ { value: 1e3, symbol: "K" },
6
+ { value: 1e6, symbol: "M" },
7
+ { value: 1e9, symbol: "B" },
8
+ { value: 1e12, symbol: "T" },
9
+ { value: 1e15, symbol: "P" },
10
+ { value: 1e18, symbol: "E" },
11
+ ];
12
+ const rx = /\.0+$|(\.[0-9]*[1-9])0+$/;
13
+ const item = lookup
14
+ .slice()
15
+ .reverse()
16
+ .find(function (item) {
17
+ return num >= item.value;
18
+ });
19
+ return item
20
+ ? (num / item.value).toFixed(digits ?? 1).replace(rx, "$1") + item.symbol
21
+ : "0";
22
+ }
@@ -1,37 +1,37 @@
1
- /* eslint-disable @typescript-eslint/no-unsafe-return */
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
3
- export interface Store<T = Record<string, any>> {
4
- _store: T;
5
- get(key: string): string | null;
6
- set(key: string, value: string): void;
7
- }
8
-
9
- export const InMemoryStorage: Store = {
10
- _store: {},
11
- get(key: string): string | null {
12
- return this._store[key];
13
- },
14
- set(key: string, value: string): void {
15
- this._store[key] = value;
16
- },
17
- };
18
-
19
- export const SessionStorageStore: Store = {
20
- _store: {},
21
- get(key: string): string | null {
22
- return sessionStorage.getItem(key);
23
- },
24
- set(key: string, value: string): void {
25
- sessionStorage.setItem(key, value);
26
- },
27
- };
28
-
29
- export const LocalStorageStore: Store = {
30
- _store: {},
31
- get(key: string): string | null {
32
- return localStorage.getItem(key);
33
- },
34
- set(key: string, value: string): void {
35
- localStorage.setItem(key, value);
36
- },
37
- };
1
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
2
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ export interface Store<T = Record<string, any>> {
4
+ _store: T;
5
+ get(key: string): string | null;
6
+ set(key: string, value: string): void;
7
+ }
8
+
9
+ export const InMemoryStorage: Store = {
10
+ _store: {},
11
+ get(key: string): string | null {
12
+ return this._store[key];
13
+ },
14
+ set(key: string, value: string): void {
15
+ this._store[key] = value;
16
+ },
17
+ };
18
+
19
+ export const SessionStorageStore: Store = {
20
+ _store: {},
21
+ get(key: string): string | null {
22
+ return sessionStorage.getItem(key);
23
+ },
24
+ set(key: string, value: string): void {
25
+ sessionStorage.setItem(key, value);
26
+ },
27
+ };
28
+
29
+ export const LocalStorageStore: Store = {
30
+ _store: {},
31
+ get(key: string): string | null {
32
+ return localStorage.getItem(key);
33
+ },
34
+ set(key: string, value: string): void {
35
+ localStorage.setItem(key, value);
36
+ },
37
+ };
@@ -1,87 +1,87 @@
1
- @import "tailwindcss";
2
- @config "../tailwind.config.ts";
3
- @source "../**/*.{ts,tsx}";
4
-
5
- @custom-variant dark (&:is(.dark *));
6
-
7
- @layer base {
8
- :root {
9
- --background: 0 0% 100%;
10
- --foreground: 224 71.4% 4.1%;
11
- --card: 0 0% 100%;
12
- --card-foreground: 224 71.4% 4.1%;
13
- --popover: 0 0% 100%;
14
- --popover-foreground: 224 71.4% 4.1%;
15
- --primary: 262.1 83.3% 57.8%;
16
- --primary-foreground: 210 20% 98%;
17
- --secondary: 220 14.3% 95.9%;
18
- --secondary-foreground: 220.9 39.3% 11%;
19
- --muted: 220 14.3% 95.9%;
20
- --muted-foreground: 220 8.9% 46.1%;
21
- --accent: 220 14.3% 95.9%;
22
- --accent-foreground: 220.9 39.3% 11%;
23
- --destructive: 0 84.2% 60.2%;
24
- --destructive-foreground: 210 20% 98%;
25
- --border: 220 13% 91%;
26
- --input: 220 13% 91%;
27
- --ring: 262.1 83.3% 57.8%;
28
- --radius: 0.75rem;
29
- --chart-1: 173 58% 39%;
30
- --chart-2: 12 76% 61%;
31
- --chart-3: 197 37% 24%;
32
- --chart-4: 43 74% 66%;
33
- --chart-5: 27 87% 67%;
34
- }
35
-
36
- .dark {
37
- --background: 224 71.4% 4.1%;
38
- --foreground: 210 20% 98%;
39
- --card: 224 71.4% 4.1%;
40
- --card-foreground: 210 20% 98%;
41
- --popover: 224 71.4% 4.1%;
42
- --popover-foreground: 210 20% 98%;
43
- --primary: 263.4 70% 50.4%;
44
- --primary-foreground: 210 20% 98%;
45
- --secondary: 215 27.9% 16.9%;
46
- --secondary-foreground: 210 20% 98%;
47
- --muted: 215 27.9% 16.9%;
48
- --muted-foreground: 217.9 10.6% 64.9%;
49
- --accent: 215 27.9% 16.9%;
50
- --accent-foreground: 210 20% 98%;
51
- --destructive: 0 62.8% 50.6%;
52
- --destructive-foreground: 210 20% 98%;
53
- --border: 215 27.9% 16.9%;
54
- --input: 215 27.9% 16.9%;
55
- --ring: 263.4 70% 50.4%;
56
- --chart-1: 173 58% 39%;
57
- --chart-2: 12 76% 61%;
58
- --chart-3: 197 37% 24%;
59
- --chart-4: 43 74% 66%;
60
- --chart-5: 27 87% 67%;
61
- }
62
- }
63
-
64
- html {
65
- background-color: var(--background);
66
- }
67
- @layer base {
68
- * {
69
- font-family: var(--font-openSans);
70
- }
71
- }
72
-
73
- @layer utilities {
74
- /* Chrome, Safari and Opera */
75
- .no-scrollbar::-webkit-scrollbar {
76
- display: none;
77
- }
78
-
79
- .no-scrollbar {
80
- -ms-overflow-style: none; /* IE and Edge */
81
- scrollbar-width: none; /* Firefox */
82
- }
83
- }
84
-
85
- html {
86
- scroll-behavior: smooth;
87
- }
1
+ @import "tailwindcss";
2
+ @config "../tailwind.config.ts";
3
+ @source "../**/*.{ts,tsx}";
4
+
5
+ @custom-variant dark (&:is(.dark *));
6
+
7
+ @layer base {
8
+ :root {
9
+ --background: 0 0% 100%;
10
+ --foreground: 224 71.4% 4.1%;
11
+ --card: 0 0% 100%;
12
+ --card-foreground: 224 71.4% 4.1%;
13
+ --popover: 0 0% 100%;
14
+ --popover-foreground: 224 71.4% 4.1%;
15
+ --primary: 262.1 83.3% 57.8%;
16
+ --primary-foreground: 210 20% 98%;
17
+ --secondary: 220 14.3% 95.9%;
18
+ --secondary-foreground: 220.9 39.3% 11%;
19
+ --muted: 220 14.3% 95.9%;
20
+ --muted-foreground: 220 8.9% 46.1%;
21
+ --accent: 220 14.3% 95.9%;
22
+ --accent-foreground: 220.9 39.3% 11%;
23
+ --destructive: 0 84.2% 60.2%;
24
+ --destructive-foreground: 210 20% 98%;
25
+ --border: 220 13% 91%;
26
+ --input: 220 13% 91%;
27
+ --ring: 262.1 83.3% 57.8%;
28
+ --radius: 0.75rem;
29
+ --chart-1: 173 58% 39%;
30
+ --chart-2: 12 76% 61%;
31
+ --chart-3: 197 37% 24%;
32
+ --chart-4: 43 74% 66%;
33
+ --chart-5: 27 87% 67%;
34
+ }
35
+
36
+ .dark {
37
+ --background: 224 71.4% 4.1%;
38
+ --foreground: 210 20% 98%;
39
+ --card: 224 71.4% 4.1%;
40
+ --card-foreground: 210 20% 98%;
41
+ --popover: 224 71.4% 4.1%;
42
+ --popover-foreground: 210 20% 98%;
43
+ --primary: 263.4 70% 50.4%;
44
+ --primary-foreground: 210 20% 98%;
45
+ --secondary: 215 27.9% 16.9%;
46
+ --secondary-foreground: 210 20% 98%;
47
+ --muted: 215 27.9% 16.9%;
48
+ --muted-foreground: 217.9 10.6% 64.9%;
49
+ --accent: 215 27.9% 16.9%;
50
+ --accent-foreground: 210 20% 98%;
51
+ --destructive: 0 62.8% 50.6%;
52
+ --destructive-foreground: 210 20% 98%;
53
+ --border: 215 27.9% 16.9%;
54
+ --input: 215 27.9% 16.9%;
55
+ --ring: 263.4 70% 50.4%;
56
+ --chart-1: 173 58% 39%;
57
+ --chart-2: 12 76% 61%;
58
+ --chart-3: 197 37% 24%;
59
+ --chart-4: 43 74% 66%;
60
+ --chart-5: 27 87% 67%;
61
+ }
62
+ }
63
+
64
+ html {
65
+ background-color: var(--background);
66
+ }
67
+ @layer base {
68
+ * {
69
+ font-family: var(--font-openSans);
70
+ }
71
+ }
72
+
73
+ @layer utilities {
74
+ /* Chrome, Safari and Opera */
75
+ .no-scrollbar::-webkit-scrollbar {
76
+ display: none;
77
+ }
78
+
79
+ .no-scrollbar {
80
+ -ms-overflow-style: none; /* IE and Edge */
81
+ scrollbar-width: none; /* Firefox */
82
+ }
83
+ }
84
+
85
+ html {
86
+ scroll-behavior: smooth;
87
+ }
@@ -1 +0,0 @@
1
- import{defineConfig as e}from"vitest/config";const t=process.env.npm_lifecycle_event===`test:dev`,n=(n={})=>e({test:{silent:!0,globals:!0,include:t?[`src/**/*.{test,spec}.{ts,tsx}`]:[`dist/**/*.{test,spec}.{js,mjs,cjs}`],exclude:t?[`**/node_modules/**`,`**/dist/**`]:[`**/node_modules/**`,`**/src/**`],coverage:process.env.COVERAGE_ENABLED===`true`?{enabled:!0,provider:`v8`,...n.coverage}:{enabled:!1},...n}});export{n as baseVitestConfig};
@@ -1 +0,0 @@
1
- import{baseVitestConfig as e}from"./base.mjs";var t=e({environment:`jsdom`,setupFiles:[`./src/__tests__/setup.ts`],css:{modules:{classNameStrategy:`non-scoped`}},coverage:{reporter:[`text-summary`,`lcov`,`html`]}});export{t as default};
@@ -1 +0,0 @@
1
- import{baseVitestConfig as e}from"./base.mjs";var t=e({environment:`node`});export{t as default};
@@ -1,3 +0,0 @@
1
- import { redisClient } from "./lib/redis-client.mjs";
2
- export * from "ioredis";
3
- export { redisClient };
@@ -1,5 +0,0 @@
1
- import { redisClient } from "./lib/redis-client.mjs";
2
-
3
- export * from "ioredis"
4
-
5
- export { redisClient };
@@ -1,7 +0,0 @@
1
- import { Redis } from "ioredis";
2
-
3
- //#region src/lib/redis-client.d.ts
4
- declare const redisClient: Redis;
5
- //#endregion
6
- export { redisClient };
7
- //# sourceMappingURL=redis-client.d.mts.map
@@ -1,25 +0,0 @@
1
- import { Redis } from "ioredis";
2
-
3
- //#region src/lib/redis-client.ts
4
- const redisClient = new Redis({
5
- host: process.env.REDIS_HOST,
6
- port: Number(process.env.REDIS_PORT),
7
- username: process.env.REDIS_USERNAME,
8
- password: process.env.REDIS_PASSWORD
9
- });
10
- function setEventListeners() {
11
- redisClient.on("error", (error) => {
12
- console.log("Could not establish a connection with redis. " + error);
13
- });
14
- redisClient.on("connect", (error) => {
15
- if (error) {
16
- console.log("Could not establish a connection with redis. " + error);
17
- }
18
- console.log("Connected to redis successfully");
19
- });
20
- }
21
- setEventListeners();
22
-
23
- //#endregion
24
- export { redisClient };
25
- //# sourceMappingURL=redis-client.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"redis-client.mjs","names":[],"sources":["../../src/lib/redis-client.ts"],"sourcesContent":["import { Redis } from \"ioredis\";\r\n\r\nexport const redisClient = new Redis({\r\n host: process.env.REDIS_HOST,\r\n port: Number(process.env.REDIS_PORT),\r\n username: process.env.REDIS_USERNAME,\r\n password: process.env.REDIS_PASSWORD,\r\n});\r\n\r\nfunction setEventListeners() {\r\n redisClient.on(\"error\", (error: string) => {\r\n console.log(\"Could not establish a connection with redis. \" + error);\r\n });\r\n redisClient.on(\"connect\", (error: string) => {\r\n if (error) {\r\n console.log(\"Could not establish a connection with redis. \" + error);\r\n }\r\n console.log(\"Connected to redis successfully\");\r\n });\r\n}\r\n\r\nsetEventListeners();\r\n\r\n"],"mappings":";;;AAEA,MAAa,cAAc,IAAI,MAAM;CACnC,MAAM,QAAQ,IAAI;CAClB,MAAM,OAAO,QAAQ,IAAI,WAAW;CACpC,UAAU,QAAQ,IAAI;CACtB,UAAU,QAAQ,IAAI;CACvB,CAAC;AAEF,SAAS,oBAAoB;AAC3B,aAAY,GAAG,UAAU,UAAkB;AACzC,UAAQ,IAAI,kDAAkD,MAAM;GACpE;AACF,aAAY,GAAG,YAAY,UAAkB;AAC3C,MAAI,OAAO;AACT,WAAQ,IAAI,kDAAkD,MAAM;;AAEtE,UAAQ,IAAI,kCAAkC;GAC9C;;AAGJ,mBAAmB"}
@@ -1,5 +0,0 @@
1
- //#region src/lib/redis-module.d.ts
2
- declare class RedisModule {}
3
- //#endregion
4
- export { RedisModule };
5
- //# sourceMappingURL=redis-module.d.mts.map
@@ -1,6 +0,0 @@
1
- //#region src/lib/redis-module.ts
2
- var RedisModule = class {};
3
-
4
- //#endregion
5
- export { RedisModule };
6
- //# sourceMappingURL=redis-module.mjs.map