Skip to content

Commit 2fb0efc

Browse files
updated
1 parent 10294e7 commit 2fb0efc

File tree

6 files changed

+156
-38
lines changed

6 files changed

+156
-38
lines changed

kekaAutlogin/assets/index-DYaxoNz0.js renamed to kekaAutlogin/assets/index-f5THs97Z.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

kekaAutlogin/index.html

Lines changed: 32 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,38 @@
11
<!doctype html>
22
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<title>Keka Auto Clock-In Chrome Extension | Automate HR Attendance Management</title>
7+
<meta name="description" content="Professional Chrome extension for automated Keka attendance management. Never miss clock-in or clock-out again. Smart scheduling, automatic updates, and real-time notifications. Lifetime access for $10." />
8+
<meta name="author" content="Keka Auto Clock" />
9+
<meta name="keywords" content="Keka attendance automation, Chrome extension, HR attendance, automatic clock-in, clock-out automation, Keka integration, employee attendance software, time tracking automation" />
10+
<link rel="canonical" href="https://lovable.app/" />
311

4-
<head>
5-
<meta charset="UTF-8" />
6-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7-
<title>Keka Auto Clock-In Chrome Extension | Automate HR Attendance Management</title>
8-
<meta name="description"
9-
content="Professional Chrome extension for automated Keka attendance management. Never miss clock-in or clock-out again. Smart scheduling, automatic updates, and real-time notifications. Lifetime access for $10." />
10-
<meta name="author" content="Keka Auto Clock" />
11-
<meta name="keywords"
12-
content="Keka attendance automation, Chrome extension, HR attendance, automatic clock-in, clock-out automation, Keka integration, employee attendance software, time tracking automation" />
13-
<link rel="canonical" href="https://lovable.app/" />
12+
<!-- Open Graph / Facebook -->
13+
<meta property="og:type" content="website" />
14+
<meta property="og:title" content="Keka Auto Clock-In Chrome Extension | Automate HR Attendance" />
15+
<meta property="og:description" content="Professional Chrome extension for automated Keka attendance management. Smart scheduling, automatic updates, and real-time notifications." />
16+
<meta property="og:url" content="https://lovable.app/" />
1417

15-
<!-- Open Graph / Facebook -->
16-
<meta property="og:type" content="website" />
17-
<meta property="og:title" content="Keka Auto Clock-In Chrome Extension | Automate HR Attendance" />
18-
<meta property="og:description"
19-
content="Professional Chrome extension for automated Keka attendance management. Smart scheduling, automatic updates, and real-time notifications." />
20-
<meta property="og:url" content="https://lovable.app/" />
18+
<!-- Twitter -->
19+
<meta name="twitter:card" content="summary_large_image" />
20+
<meta name="twitter:title" content="Keka Auto Clock-In Chrome Extension" />
21+
<meta name="twitter:description" content="Automate your Keka attendance with professional Chrome extension. Lifetime access for $10." />
22+
<meta name="twitter:site" content="@lovable_dev" />
23+
<meta name="twitter:image" content="https://lovable.dev/opengraph-image-p98pqg.png" />
24+
25+
<!-- Open Graph Image -->
26+
<meta property="og:image" content="https://lovable.dev/opengraph-image-p98pqg.png" />
27+
<script type="module" crossorigin src="./assets/index-f5THs97Z.js"></script>
28+
<link rel="stylesheet" crossorigin href="./assets/index-CAJE3vm5.css">
29+
</head>
2130

22-
<!-- Twitter -->
23-
<meta name="twitter:card" content="summary_large_image" />
24-
<meta name="twitter:title" content="Keka Auto Clock-In Chrome Extension" />
25-
<meta name="twitter:description"
26-
content="Automate your Keka attendance with professional Chrome extension. Lifetime access for $10." />
27-
<meta name="twitter:site" content="@lovable_dev" />
28-
29-
<!-- Open Graph Image -->
30-
<script type="module" crossorigin src="./assets/index-DYaxoNz0.js"></script>
31-
<link rel="stylesheet" crossorigin href="./assets/index-CAJE3vm5.css">
32-
</head>
33-
34-
<body>
35-
<div id="root"></div>
36-
37-
<!-- Structured Data for SEO -->
38-
<script type="application/ld+json">
31+
<body>
32+
<div id="root"></div>
33+
34+
<!-- Structured Data for SEO -->
35+
<script type="application/ld+json">
3936
{
4037
"@context": "https://schema.org",
4138
"@type": "SoftwareApplication",
@@ -56,6 +53,5 @@
5653
"description": "Professional Chrome extension for automated Keka attendance management. Never miss clock-in or clock-out again with smart scheduling and automatic updates."
5754
}
5855
</script>
59-
</body>
60-
61-
</html>
56+
</body>
57+
</html>

kekaAutlogin/react-page/src/App.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const App = () => (
1515
<Sonner />
1616
<BrowserRouter>
1717
<Routes>
18-
<Route path="/" element={<Index />} />
18+
<Route path="/kekaAutlogin" element={<Index />} />
1919
{/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */}
2020
<Route path="*" element={<NotFound />} />
2121
</Routes>
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import * as React from "react";
2+
import * as AccordionPrimitive from "@radix-ui/react-accordion";
3+
import { ChevronDown } from "lucide-react";
4+
5+
import { cn } from "@/lib/utils";
6+
7+
const Accordion = AccordionPrimitive.Root;
8+
9+
const AccordionItem = React.forwardRef<
10+
React.ElementRef<typeof AccordionPrimitive.Item>,
11+
React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>
12+
>(({ className, ...props }, ref) => (
13+
<AccordionPrimitive.Item ref={ref} className={cn("border-b", className)} {...props} />
14+
));
15+
AccordionItem.displayName = "AccordionItem";
16+
17+
const AccordionTrigger = React.forwardRef<
18+
React.ElementRef<typeof AccordionPrimitive.Trigger>,
19+
React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>
20+
>(({ className, children, ...props }, ref) => (
21+
<AccordionPrimitive.Header className="flex">
22+
<AccordionPrimitive.Trigger
23+
ref={ref}
24+
className={cn(
25+
"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
26+
className,
27+
)}
28+
{...props}
29+
>
30+
{children}
31+
<ChevronDown className="h-4 w-4 shrink-0 transition-transform duration-200" />
32+
</AccordionPrimitive.Trigger>
33+
</AccordionPrimitive.Header>
34+
));
35+
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
36+
37+
const AccordionContent = React.forwardRef<
38+
React.ElementRef<typeof AccordionPrimitive.Content>,
39+
React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>
40+
>(({ className, children, ...props }, ref) => (
41+
<AccordionPrimitive.Content
42+
ref={ref}
43+
className="overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down"
44+
{...props}
45+
>
46+
<div className={cn("pb-4 pt-0", className)}>{children}</div>
47+
</AccordionPrimitive.Content>
48+
));
49+
50+
AccordionContent.displayName = AccordionPrimitive.Content.displayName;
51+
52+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import * as React from "react";
2+
import { cva, type VariantProps } from "class-variance-authority";
3+
4+
import { cn } from "@/lib/utils";
5+
6+
const alertVariants = cva(
7+
"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",
8+
{
9+
variants: {
10+
variant: {
11+
default: "bg-background text-foreground",
12+
destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",
13+
},
14+
},
15+
defaultVariants: {
16+
variant: "default",
17+
},
18+
},
19+
);
20+
21+
const Alert = React.forwardRef<
22+
HTMLDivElement,
23+
React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>
24+
>(({ className, variant, ...props }, ref) => (
25+
<div ref={ref} role="alert" className={cn(alertVariants({ variant }), className)} {...props} />
26+
));
27+
Alert.displayName = "Alert";
28+
29+
const AlertTitle = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLHeadingElement>>(
30+
({ className, ...props }, ref) => (
31+
<h5 ref={ref} className={cn("mb-1 font-medium leading-none tracking-tight", className)} {...props} />
32+
),
33+
);
34+
AlertTitle.displayName = "AlertTitle";
35+
36+
const AlertDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(
37+
({ className, ...props }, ref) => (
38+
<div ref={ref} className={cn("text-sm [&_p]:leading-relaxed", className)} {...props} />
39+
),
40+
);
41+
AlertDescription.displayName = "AlertDescription";
42+
43+
export { Alert, AlertTitle, AlertDescription };
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import * as React from "react";
2+
import * as SwitchPrimitives from "@radix-ui/react-switch";
3+
4+
import { cn } from "@/lib/utils";
5+
6+
const Switch = React.forwardRef<
7+
React.ElementRef<typeof SwitchPrimitives.Root>,
8+
React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>
9+
>(({ className, ...props }, ref) => (
10+
<SwitchPrimitives.Root
11+
className={cn(
12+
"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50",
13+
className,
14+
)}
15+
{...props}
16+
ref={ref}
17+
>
18+
<SwitchPrimitives.Thumb
19+
className={cn(
20+
"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0",
21+
)}
22+
/>
23+
</SwitchPrimitives.Root>
24+
));
25+
Switch.displayName = SwitchPrimitives.Root.displayName;
26+
27+
export { Switch };

0 commit comments

Comments
 (0)