@sikka/hawa 0.0.287 → 0.1.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/lib/util.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { type ClassValue } from "clsx";
2
+ export declare function cn(...inputs: ClassValue[]): string;
1
3
  type Palette = {
2
4
  name: string;
3
5
  colors: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sikka/hawa",
3
- "version": "0.0.287",
3
+ "version": "0.1.0",
4
4
  "description": "SaaS Oriented UI Kit",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.es.js",
@@ -106,6 +106,8 @@
106
106
  },
107
107
  "dependencies": {
108
108
  "@radix-ui/react-dropdown-menu": "^2.0.5",
109
+ "@radix-ui/react-label": "^2.0.2",
110
+ "class-variance-authority": "^0.7.0",
109
111
  "clsx": "^1.2.1",
110
112
  "cmdk": "^0.2.0",
111
113
  "react": "^18.2.0",
@@ -114,7 +116,8 @@
114
116
  "react-icons": "^4.10.1",
115
117
  "react-select": "^5.3.2",
116
118
  "slate": "^0.94.1",
117
- "slate-react": "^0.97.1"
119
+ "slate-react": "^0.97.1",
120
+ "tailwind-merge": "^1.14.0"
118
121
  },
119
122
  "readme": "ERROR: No README data found!",
120
123
  "_id": "@sikka/hawa@0.0.285"
@@ -0,0 +1,60 @@
1
+ "use client"
2
+
3
+ import { Icons } from "../../elements/Icons"
4
+ import { Button } from "../../elements/Button"
5
+ import {
6
+ Card,
7
+ CardContent,
8
+ CardDescription,
9
+ CardFooter,
10
+ CardHeader,
11
+ CardTitle,
12
+ } from "../../elements/Card"
13
+ import { Input } from "../../elements/Input"
14
+ import { Label } from "../../elements/Label"
15
+
16
+ export function SignInBlock() {
17
+ return (
18
+ <Card>
19
+ <CardHeader className="space-y-1">
20
+ <CardTitle className="text-2xl">Create an account</CardTitle>
21
+ <CardDescription>
22
+ Enter your email below to create your account
23
+ </CardDescription>
24
+ </CardHeader>
25
+ <CardContent className="grid gap-4">
26
+ <div className="grid grid-cols-2 gap-6">
27
+ <Button variant="outline">
28
+ <Icons.gitHub className="mr-2 h-4 w-4" />
29
+ Github
30
+ </Button>
31
+ <Button variant="outline">
32
+ <Icons.google className="mr-2 h-4 w-4" />
33
+ Google
34
+ </Button>
35
+ </div>
36
+ <div className="relative">
37
+ <div className="absolute inset-0 flex items-center">
38
+ <span className="w-full border-t" />
39
+ </div>
40
+ <div className="relative flex justify-center text-xs uppercase">
41
+ <span className="bg-background px-2 text-muted-foreground">
42
+ Or continue with
43
+ </span>
44
+ </div>
45
+ </div>
46
+ <div className="grid gap-2">
47
+ <Label htmlFor="email">Email</Label>
48
+ <Input id="email" type="email" placeholder="m@example.com" />
49
+ </div>
50
+ <div className="grid gap-2">
51
+ <Label htmlFor="password">Password</Label>
52
+ <Input id="password" type="password" />
53
+ </div>
54
+ </CardContent>
55
+ <CardFooter>
56
+ <Button className="w-full">Create account</Button>
57
+ </CardFooter>
58
+ </Card>
59
+ )
60
+ }
@@ -8,6 +8,8 @@ import {
8
8
  } from "../../elements"
9
9
  import { Controller, useForm } from "react-hook-form"
10
10
  import { HawaContainer } from "../../layout"
11
+ import { Button } from "../../elements/Button"
12
+ import { FaGithub, FaGoogle } from "react-icons/fa"
11
13
 
12
14
  export const SignInForm: FC<SignInFormTypes> = (props) => {
13
15
  const {
@@ -114,7 +116,7 @@ export const SignInForm: FC<SignInFormTypes> = (props) => {
114
116
  </>
115
117
  )}
116
118
 
117
- <HawaButton
119
+ {/* <HawaButton
118
120
  isLoading={props.isLoading}
119
121
  variant="contained"
120
122
  color="primary"
@@ -122,7 +124,8 @@ export const SignInForm: FC<SignInFormTypes> = (props) => {
122
124
  width="full"
123
125
  >
124
126
  {props.texts.signInText}
125
- </HawaButton>
127
+ </HawaButton> */}
128
+ <Button className="w-full">{props.texts.signInText}</Button>
126
129
  {!props.withoutSignUp && (
127
130
  <div className="p-3 text-center text-sm font-semibold dark:text-gray-300">
128
131
  {props.texts.newUserText}{" "}
@@ -136,6 +139,24 @@ export const SignInForm: FC<SignInFormTypes> = (props) => {
136
139
  )}
137
140
  </form>
138
141
 
142
+ {/* <div className="grid grid-cols-2 gap-6">
143
+ <Button variant="outline">
144
+ <FaGithub className="mr-2 h-4 w-4" /> Github
145
+ </Button>
146
+ <Button variant="outline">
147
+ <FaGoogle className="mr-2 h-4 w-4" /> Google
148
+ </Button>
149
+ </div>
150
+ <div className="relative">
151
+ <div className="absolute inset-0 flex items-center">
152
+ <span className="w-full border-t" />
153
+ </div>
154
+ <div className="relative flex justify-center text-xs uppercase">
155
+ <span className="bg-background px-2 text-muted-foreground">
156
+ Or continue with
157
+ </span>
158
+ </div>
159
+ </div> */}
139
160
  {/* 3rd Party Sign Auth Buttons */}
140
161
  {props.viaGithub || props.viaGoogle || props.viaTwitter ? (
141
162
  <div className="flex flex-col ">
@@ -1,7 +1,8 @@
1
- export * from "./AppLanding";
2
- export * from "./SignInPhone";
3
- export * from "./SignInForm";
4
- export * from "./SignUpForm";
5
- export * from "./NewPasswordForm";
6
- export * from "./ResetPasswordForm";
7
- export * from "./CodeConfirmation";
1
+ export * from "./AppLanding"
2
+ export * from "./SignInPhone"
3
+ export * from "./SignInForm"
4
+ export * from "./SignInBlock"
5
+ export * from "./SignUpForm"
6
+ export * from "./NewPasswordForm"
7
+ export * from "./ResetPasswordForm"
8
+ export * from "./CodeConfirmation"
@@ -121,7 +121,7 @@ const SettlementAccountCard = (props) => {
121
121
  // position={direction === "rtl" ? "right-bottom" : "left-bottom"}
122
122
  // direction={direction}
123
123
  >
124
- <HawaButton variant="outlined" size="icon" >
124
+ <HawaButton variant="outlined" >
125
125
  <svg
126
126
  aria-label="Vertical Three Dots Menu Icon"
127
127
  className="rotate-90"
@@ -0,0 +1,57 @@
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 "../util"
6
+
7
+ const buttonVariants = cva(
8
+ "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
9
+ {
10
+ variants: {
11
+ variant: {
12
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
13
+ destructive:
14
+ "bg-destructive text-destructive-foreground hover:bg-destructive/90",
15
+ outline:
16
+ "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
17
+ secondary:
18
+ "bg-secondary text-secondary-foreground hover:bg-secondary/80",
19
+ ghost: "hover:bg-accent hover:text-accent-foreground",
20
+ link: "text-primary underline-offset-4 hover:underline",
21
+ },
22
+ size: {
23
+ default: "h-10 px-4 py-2",
24
+ sm: "h-9 rounded-md px-3",
25
+ lg: "h-11 rounded-md px-8",
26
+ icon: "h-10 w-10",
27
+ },
28
+ },
29
+ defaultVariants: {
30
+ variant: "default",
31
+ size: "default",
32
+ },
33
+ }
34
+ )
35
+
36
+ export interface ButtonProps
37
+ extends React.ButtonHTMLAttributes<HTMLButtonElement>,
38
+ VariantProps<typeof buttonVariants> {
39
+ asChild?: boolean
40
+ }
41
+
42
+ const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
43
+ ({ className, variant, size, asChild = false, ...props }, ref) => {
44
+ // const Comp = asChild ? Slot : "button"
45
+ const Comp = "button"
46
+ return (
47
+ <Comp
48
+ className={cn(buttonVariants({ variant, size, className }))}
49
+ ref={ref}
50
+ {...props}
51
+ />
52
+ )
53
+ }
54
+ )
55
+ Button.displayName = "Button"
56
+
57
+ export { Button, buttonVariants }
@@ -0,0 +1,78 @@
1
+ import * as React from "react"
2
+ import { cn } from "../util"
3
+
4
+ const Card = React.forwardRef<
5
+ HTMLDivElement,
6
+ React.HTMLAttributes<HTMLDivElement>
7
+ >(({ className, ...props }, ref) => (
8
+ <div
9
+ ref={ref}
10
+ className={cn(
11
+ "rounded-lg border bg-card text-card-foreground shadow-sm",
12
+ className
13
+ )}
14
+ {...props}
15
+ />
16
+ ))
17
+ Card.displayName = "Card"
18
+
19
+ const CardHeader = React.forwardRef<
20
+ HTMLDivElement,
21
+ React.HTMLAttributes<HTMLDivElement>
22
+ >(({ className, ...props }, ref) => (
23
+ <div
24
+ ref={ref}
25
+ className={cn("flex flex-col space-y-1.5 p-6", className)}
26
+ {...props}
27
+ />
28
+ ))
29
+ CardHeader.displayName = "CardHeader"
30
+
31
+ const CardTitle = React.forwardRef<
32
+ HTMLParagraphElement,
33
+ React.HTMLAttributes<HTMLHeadingElement>
34
+ >(({ className, ...props }, ref) => (
35
+ <h3
36
+ ref={ref}
37
+ className={cn(
38
+ "text-2xl font-semibold leading-none tracking-tight",
39
+ className
40
+ )}
41
+ {...props}
42
+ />
43
+ ))
44
+ CardTitle.displayName = "CardTitle"
45
+
46
+ const CardDescription = React.forwardRef<
47
+ HTMLParagraphElement,
48
+ React.HTMLAttributes<HTMLParagraphElement>
49
+ >(({ className, ...props }, ref) => (
50
+ <p
51
+ ref={ref}
52
+ className={cn("text-sm text-muted-foreground", className)}
53
+ {...props}
54
+ />
55
+ ))
56
+ CardDescription.displayName = "CardDescription"
57
+
58
+ const CardContent = React.forwardRef<
59
+ HTMLDivElement,
60
+ React.HTMLAttributes<HTMLDivElement>
61
+ >(({ className, ...props }, ref) => (
62
+ <div ref={ref} className={cn("p-6 pt-0", className)} {...props} />
63
+ ))
64
+ CardContent.displayName = "CardContent"
65
+
66
+ const CardFooter = React.forwardRef<
67
+ HTMLDivElement,
68
+ React.HTMLAttributes<HTMLDivElement>
69
+ >(({ className, ...props }, ref) => (
70
+ <div
71
+ ref={ref}
72
+ className={cn("flex items-center p-6 pt-0", className)}
73
+ {...props}
74
+ />
75
+ ))
76
+ CardFooter.displayName = "CardFooter"
77
+
78
+ export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }
@@ -36,12 +36,12 @@ const disabledVariantSyles = {
36
36
  outlined: "text-gray-300 border-gray-300",
37
37
  }
38
38
  const baseStyles =
39
- "cursor-pointer justify-center items-center text-center font-medium transition-all "
39
+ "cursor-pointer justify-center items-center text-center font-medium transition-all"
40
40
  const sizeStyles = {
41
41
  icon: "h-10 w-10",
42
42
  xs: "px-1.5 py-2 text-[9px] h-fit",
43
43
  small: "text-xs px-2.5 py-1.5",
44
- medium: "text-sm leading-4 px-3 py-2",
44
+ medium: "text-sm leading-4 px-3 py-2 h-[2.36rem] ",
45
45
  default: "h-10 px-4 py-2",
46
46
  large: "text-sm px-4 py-2",
47
47
  noPadding: "p-0",
@@ -90,7 +90,7 @@ export const HawaButton: FC<ButtonProps> = ({
90
90
  className,
91
91
  variant = "contained",
92
92
  color = "default",
93
- size = "default",
93
+ size = "medium",
94
94
  width = "normal",
95
95
  disabled = false,
96
96
  isLoading = false,
@@ -55,7 +55,7 @@ export const HawaTable: FC<TableTypes> = ({
55
55
  size = "normal",
56
56
  bodyColor = "white",
57
57
  headerColor = "gray-200",
58
- borders,
58
+ borders = "all",
59
59
  highlightFirst = false,
60
60
  direction = "ltr",
61
61
  bordersWidth = "1",
@@ -130,7 +130,7 @@ export const HawaTable: FC<TableTypes> = ({
130
130
  <div className="relative flex flex-col gap-2 ">
131
131
  <div className={`overflow-x-auto rounded bg-${headerColor}`}>
132
132
  {props.headerTools && (
133
- <div className="flex flex-row items-center justify-between gap-2 px-4 py-2">
133
+ <div className="flex flex-row items-center justify-between gap-2 border bg-background px-4 py-2">
134
134
  <HawaTextField
135
135
  icon={
136
136
  <svg
@@ -189,7 +189,7 @@ export const HawaTable: FC<TableTypes> = ({
189
189
  <table
190
190
  className={clsx(
191
191
  borders === "outer" || borders === "all"
192
- ? `outline outline-[${bordersWidth}px] -outline-offset-1 outline-gray-300`
192
+ ? `outline outline-[${bordersWidth}px] -outline-offset-1 outline-gray-300 dark:outline-gray-700`
193
193
  : "",
194
194
  "w-full rounded text-left text-sm text-gray-500 dark:text-gray-400",
195
195
  `bg-${headerColor}`
@@ -350,7 +350,7 @@ export const HawaTable: FC<TableTypes> = ({
350
350
  }
351
351
  direction={direction}
352
352
  >
353
- <div className="flex w-fit items-center justify-center rounded p-2 hover:bg-gray-200">
353
+ <div className="flex w-fit cursor-pointer items-center justify-center rounded p-2 hover:bg-gray-200 dark:hover:bg-gray-600">
354
354
  <svg
355
355
  aria-label="Vertical Three Dots Menu Icon"
356
356
  stroke="currentColor"
@@ -384,8 +384,9 @@ export const HawaTable: FC<TableTypes> = ({
384
384
  <td colSpan={20}>
385
385
  <div
386
386
  className={clsx(
387
- "w-full rounded-b bg-white p-5 text-center",
388
- bodyColor ? `bg-${bodyColor}` : "bg-white"
387
+ "w-full rounded-b border p-5 text-center",
388
+ // bodyColor ? `bg-${bodyColor}` : "bg-background"
389
+ "bg-background"
389
390
  )}
390
391
  >
391
392
  {props.texts?.noData ?? "No Data"}
@@ -405,7 +406,7 @@ export const HawaTable: FC<TableTypes> = ({
405
406
  {/* Previous Page Button */}
406
407
  <div
407
408
  className={clsx(
408
- "flex h-6 w-6 rotate-180 items-center justify-center rounded bg-gray-100 p-1 text-xs hover:bg-layoutPrimary-700 "
409
+ "flex h-6 w-6 rotate-180 cursor-pointer items-center justify-center rounded border bg-gray-100 p-1 text-xs hover:bg-layoutPrimary-700 dark:bg-background dark:hover:bg-gray-700 "
409
410
  )}
410
411
  onClick={() =>
411
412
  page <= 1 ? setPage(range.length) : setPage(page - 1)
@@ -500,10 +501,15 @@ export const HawaTable: FC<TableTypes> = ({
500
501
  <button
501
502
  key={index}
502
503
  className={clsx(
503
- "w-10 p-1 text-xs hover:bg-gray-200",
504
+ "w-10 p-1 text-xs hover:bg-gray-200 dark:hover:bg-gray-700",
504
505
  page === el
505
506
  ? "bg-buttonPrimary-500 text-white hover:bg-buttonPrimary-500"
506
- : "bg-gray-100"
507
+ : "border bg-background",
508
+
509
+ index === 0 ? "rounded-l border-r-0" : "",
510
+ index === range.length - 1
511
+ ? "rounded-r border-l-0"
512
+ : ""
507
513
  )}
508
514
  onClick={() => setPage(el)}
509
515
  >
@@ -518,7 +524,7 @@ export const HawaTable: FC<TableTypes> = ({
518
524
  page >= range.length ? setPage(1) : setPage(page + 1)
519
525
  }
520
526
  className={clsx(
521
- "flex h-6 w-6 items-center justify-center rounded bg-gray-100 p-1 text-xs hover:bg-layoutPrimary-700 "
527
+ "flex h-6 w-6 cursor-pointer items-center justify-center rounded border bg-gray-100 p-1 text-xs hover:bg-layoutPrimary-700 dark:bg-background dark:hover:bg-gray-700 "
522
528
  )}
523
529
  >
524
530
  <svg
@@ -542,14 +548,14 @@ export const HawaTable: FC<TableTypes> = ({
542
548
  )}
543
549
  {/* Pagination Settings */}
544
550
  {props.rows ? (
545
- <div className="flex w-fit flex-row items-center gap-2 ">
551
+ <div className="flex w-fit flex-row items-center gap-2 ">
546
552
  <div className="text-xs ">
547
553
  {props.rows.length} {props.texts?.items ?? "Items"}
548
554
  </div>
549
555
 
550
556
  <select
551
557
  value={perPage}
552
- className="h-6 rounded text-xs"
558
+ className="h-6 cursor-pointer rounded border bg-background px-2 text-xs"
553
559
  onChange={(e) => {
554
560
  setPerPage(parseInt(e.target.value))
555
561
  }}
@@ -0,0 +1,142 @@
1
+ type IconProps = React.HTMLAttributes<SVGElement>
2
+
3
+ export const Icons = {
4
+ logo: (props: IconProps) => (
5
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" {...props}>
6
+ <rect width="256" height="256" fill="none" />
7
+ <line
8
+ x1="208"
9
+ y1="128"
10
+ x2="128"
11
+ y2="208"
12
+ fill="none"
13
+ stroke="currentColor"
14
+ strokeLinecap="round"
15
+ strokeLinejoin="round"
16
+ strokeWidth="16"
17
+ />
18
+ <line
19
+ x1="192"
20
+ y1="40"
21
+ x2="40"
22
+ y2="192"
23
+ fill="none"
24
+ stroke="currentColor"
25
+ strokeLinecap="round"
26
+ strokeLinejoin="round"
27
+ strokeWidth="16"
28
+ />
29
+ </svg>
30
+ ),
31
+ twitter: (props: IconProps) => (
32
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
33
+ <path d="M21.543 7.104c.015.211.015.423.015.636 0 6.507-4.954 14.01-14.01 14.01v-.003A13.94 13.94 0 0 1 0 19.539a9.88 9.88 0 0 0 7.287-2.041 4.93 4.93 0 0 1-4.6-3.42 4.916 4.916 0 0 0 2.223-.084A4.926 4.926 0 0 1 .96 9.167v-.062a4.887 4.887 0 0 0 2.235.616A4.928 4.928 0 0 1 1.67 3.148a13.98 13.98 0 0 0 10.15 5.144 4.929 4.929 0 0 1 8.39-4.49 9.868 9.868 0 0 0 3.128-1.196 4.941 4.941 0 0 1-2.165 2.724A9.828 9.828 0 0 0 24 4.555a10.019 10.019 0 0 1-2.457 2.549z" />
34
+ </svg>
35
+ ),
36
+ gitHub: (props: IconProps) => (
37
+ <svg viewBox="0 0 438.549 438.549" {...props}>
38
+ <path
39
+ fill="currentColor"
40
+ d="M409.132 114.573c-19.608-33.596-46.205-60.194-79.798-79.8-33.598-19.607-70.277-29.408-110.063-29.408-39.781 0-76.472 9.804-110.063 29.408-33.596 19.605-60.192 46.204-79.8 79.8C9.803 148.168 0 184.854 0 224.63c0 47.78 13.94 90.745 41.827 128.906 27.884 38.164 63.906 64.572 108.063 79.227 5.14.954 8.945.283 11.419-1.996 2.475-2.282 3.711-5.14 3.711-8.562 0-.571-.049-5.708-.144-15.417a2549.81 2549.81 0 01-.144-25.406l-6.567 1.136c-4.187.767-9.469 1.092-15.846 1-6.374-.089-12.991-.757-19.842-1.999-6.854-1.231-13.229-4.086-19.13-8.559-5.898-4.473-10.085-10.328-12.56-17.556l-2.855-6.57c-1.903-4.374-4.899-9.233-8.992-14.559-4.093-5.331-8.232-8.945-12.419-10.848l-1.999-1.431c-1.332-.951-2.568-2.098-3.711-3.429-1.142-1.331-1.997-2.663-2.568-3.997-.572-1.335-.098-2.43 1.427-3.289 1.525-.859 4.281-1.276 8.28-1.276l5.708.853c3.807.763 8.516 3.042 14.133 6.851 5.614 3.806 10.229 8.754 13.846 14.842 4.38 7.806 9.657 13.754 15.846 17.847 6.184 4.093 12.419 6.136 18.699 6.136 6.28 0 11.704-.476 16.274-1.423 4.565-.952 8.848-2.383 12.847-4.285 1.713-12.758 6.377-22.559 13.988-29.41-10.848-1.14-20.601-2.857-29.264-5.14-8.658-2.286-17.605-5.996-26.835-11.14-9.235-5.137-16.896-11.516-22.985-19.126-6.09-7.614-11.088-17.61-14.987-29.979-3.901-12.374-5.852-26.648-5.852-42.826 0-23.035 7.52-42.637 22.557-58.817-7.044-17.318-6.379-36.732 1.997-58.24 5.52-1.715 13.706-.428 24.554 3.853 10.85 4.283 18.794 7.952 23.84 10.994 5.046 3.041 9.089 5.618 12.135 7.708 17.705-4.947 35.976-7.421 54.818-7.421s37.117 2.474 54.823 7.421l10.849-6.849c7.419-4.57 16.18-8.758 26.262-12.565 10.088-3.805 17.802-4.853 23.134-3.138 8.562 21.509 9.325 40.922 2.279 58.24 15.036 16.18 22.559 35.787 22.559 58.817 0 16.178-1.958 30.497-5.853 42.966-3.9 12.471-8.941 22.457-15.125 29.979-6.191 7.521-13.901 13.85-23.131 18.986-9.232 5.14-18.182 8.85-26.84 11.136-8.662 2.286-18.415 4.004-29.263 5.146 9.894 8.562 14.842 22.077 14.842 40.539v60.237c0 3.422 1.19 6.279 3.572 8.562 2.379 2.279 6.136 2.95 11.276 1.995 44.163-14.653 80.185-41.062 108.068-79.226 27.88-38.161 41.825-81.126 41.825-128.906-.01-39.771-9.818-76.454-29.414-110.049z"
41
+ ></path>
42
+ </svg>
43
+ ),
44
+ radix: (props: IconProps) => (
45
+ <svg viewBox="0 0 25 25" fill="none" {...props}>
46
+ <path
47
+ d="M12 25C7.58173 25 4 21.4183 4 17C4 12.5817 7.58173 9 12 9V25Z"
48
+ fill="currentcolor"
49
+ ></path>
50
+ <path d="M12 0H4V8H12V0Z" fill="currentcolor"></path>
51
+ <path
52
+ d="M17 8C19.2091 8 21 6.20914 21 4C21 1.79086 19.2091 0 17 0C14.7909 0 13 1.79086 13 4C13 6.20914 14.7909 8 17 8Z"
53
+ fill="currentcolor"
54
+ ></path>
55
+ </svg>
56
+ ),
57
+ aria: (props: IconProps) => (
58
+ <svg role="img" viewBox="0 0 24 24" fill="currentColor" {...props}>
59
+ <path d="M13.966 22.624l-1.69-4.281H8.122l3.892-9.144 5.662 13.425zM8.884 1.376H0v21.248zm15.116 0h-8.884L24 22.624Z" />
60
+ </svg>
61
+ ),
62
+ npm: (props: IconProps) => (
63
+ <svg viewBox="0 0 24 24" {...props}>
64
+ <path
65
+ d="M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z"
66
+ fill="currentColor"
67
+ />
68
+ </svg>
69
+ ),
70
+ yarn: (props: IconProps) => (
71
+ <svg viewBox="0 0 24 24" {...props}>
72
+ <path
73
+ d="M12 0C5.375 0 0 5.375 0 12s5.375 12 12 12 12-5.375 12-12S18.625 0 12 0zm.768 4.105c.183 0 .363.053.525.157.125.083.287.185.755 1.154.31-.088.468-.042.551-.019.204.056.366.19.463.375.477.917.542 2.553.334 3.605-.241 1.232-.755 2.029-1.131 2.576.324.329.778.899 1.117 1.825.278.774.31 1.478.273 2.015a5.51 5.51 0 0 0 .602-.329c.593-.366 1.487-.917 2.553-.931.714-.009 1.269.445 1.353 1.103a1.23 1.23 0 0 1-.945 1.362c-.649.158-.95.278-1.821.843-1.232.797-2.539 1.242-3.012 1.39a1.686 1.686 0 0 1-.704.343c-.737.181-3.266.315-3.466.315h-.046c-.783 0-1.214-.241-1.45-.491-.658.329-1.51.19-2.122-.134a1.078 1.078 0 0 1-.58-1.153 1.243 1.243 0 0 1-.153-.195c-.162-.25-.528-.936-.454-1.946.056-.723.556-1.367.88-1.71a5.522 5.522 0 0 1 .408-2.256c.306-.727.885-1.348 1.32-1.737-.32-.537-.644-1.367-.329-2.21.227-.602.412-.936.82-1.08h-.005c.199-.074.389-.153.486-.259a3.418 3.418 0 0 1 2.298-1.103c.037-.093.079-.185.125-.283.31-.658.639-1.029 1.024-1.168a.94.94 0 0 1 .328-.06zm.006.7c-.507.016-1.001 1.519-1.001 1.519s-1.27-.204-2.266.871c-.199.218-.468.334-.746.44-.079.028-.176.023-.417.672-.371.991.625 2.094.625 2.094s-1.186.839-1.626 1.881c-.486 1.144-.338 2.261-.338 2.261s-.843.732-.899 1.487c-.051.663.139 1.2.343 1.515.227.343.51.176.51.176s-.561.653-.037.931c.477.25 1.283.394 1.71-.037.31-.31.371-1.001.486-1.283.028-.065.12.111.209.199.097.093.264.195.264.195s-.755.324-.445 1.066c.102.246.468.403 1.066.398.222-.005 2.664-.139 3.313-.296.375-.088.505-.283.505-.283s1.566-.431 2.998-1.357c.917-.598 1.293-.76 2.034-.936.612-.148.57-1.098-.241-1.084-.839.009-1.575.44-2.196.825-1.163.718-1.742.672-1.742.672l-.018-.032c-.079-.13.371-1.293-.134-2.678-.547-1.515-1.413-1.881-1.344-1.997.297-.5 1.038-1.297 1.334-2.78.176-.899.13-2.377-.269-3.151-.074-.144-.732.241-.732.241s-.616-1.371-.788-1.483a.271.271 0 0 0-.157-.046z"
74
+ fill="currentColor"
75
+ />
76
+ </svg>
77
+ ),
78
+ pnpm: (props: IconProps) => (
79
+ <svg viewBox="0 0 24 24" {...props}>
80
+ <path
81
+ d="M0 0v7.5h7.5V0zm8.25 0v7.5h7.498V0zm8.25 0v7.5H24V0zM8.25 8.25v7.5h7.498v-7.5zm8.25 0v7.5H24v-7.5zM0 16.5V24h7.5v-7.5zm8.25 0V24h7.498v-7.5zm8.25 0V24H24v-7.5z"
82
+ fill="currentColor"
83
+ />
84
+ </svg>
85
+ ),
86
+ react: (props: IconProps) => (
87
+ <svg viewBox="0 0 24 24" {...props}>
88
+ <path
89
+ d="M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z"
90
+ fill="currentColor"
91
+ />
92
+ </svg>
93
+ ),
94
+ tailwind: (props: IconProps) => (
95
+ <svg viewBox="0 0 24 24" {...props}>
96
+ <path
97
+ d="M12.001,4.8c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624 C13.666,10.618,15.027,12,18.001,12c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624 C16.337,6.182,14.976,4.8,12.001,4.8z M6.001,12c-3.2,0-5.2,1.6-6,4.8c1.2-1.6,2.6-2.2,4.2-1.8c0.913,0.228,1.565,0.89,2.288,1.624 c1.177,1.194,2.538,2.576,5.512,2.576c3.2,0,5.2-1.6,6-4.8c-1.2,1.6-2.6,2.2-4.2,1.8c-0.913-0.228-1.565-0.89-2.288-1.624 C10.337,13.382,8.976,12,6.001,12z"
98
+ fill="currentColor"
99
+ />
100
+ </svg>
101
+ ),
102
+ google: (props: IconProps) => (
103
+ <svg role="img" viewBox="0 0 24 24" {...props}>
104
+ <path
105
+ fill="currentColor"
106
+ d="M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z"
107
+ />
108
+ </svg>
109
+ ),
110
+ apple: (props: IconProps) => (
111
+ <svg role="img" viewBox="0 0 24 24" {...props}>
112
+ <path
113
+ d="M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701"
114
+ fill="currentColor"
115
+ />
116
+ </svg>
117
+ ),
118
+ paypal: (props: IconProps) => (
119
+ <svg role="img" viewBox="0 0 24 24" {...props}>
120
+ <path
121
+ d="M7.076 21.337H2.47a.641.641 0 0 1-.633-.74L4.944.901C5.026.382 5.474 0 5.998 0h7.46c2.57 0 4.578.543 5.69 1.81 1.01 1.15 1.304 2.42 1.012 4.287-.023.143-.047.288-.077.437-.983 5.05-4.349 6.797-8.647 6.797h-2.19c-.524 0-.968.382-1.05.9l-1.12 7.106zm14.146-14.42a3.35 3.35 0 0 0-.607-.541c-.013.076-.026.175-.041.254-.93 4.778-4.005 7.201-9.138 7.201h-2.19a.563.563 0 0 0-.556.479l-1.187 7.527h-.506l-.24 1.516a.56.56 0 0 0 .554.647h3.882c.46 0 .85-.334.922-.788.06-.26.76-4.852.816-5.09a.932.932 0 0 1 .923-.788h.58c3.76 0 6.705-1.528 7.565-5.946.36-1.847.174-3.388-.777-4.471z"
122
+ fill="currentColor"
123
+ />
124
+ </svg>
125
+ ),
126
+ spinner: (props: IconProps) => (
127
+ <svg
128
+ xmlns="http://www.w3.org/2000/svg"
129
+ width="24"
130
+ height="24"
131
+ viewBox="0 0 24 24"
132
+ fill="none"
133
+ stroke="currentColor"
134
+ strokeWidth="2"
135
+ strokeLinecap="round"
136
+ strokeLinejoin="round"
137
+ {...props}
138
+ >
139
+ <path d="M21 12a9 9 0 1 1-6.219-8.56" />
140
+ </svg>
141
+ ),
142
+ }
@@ -0,0 +1,25 @@
1
+ import * as React from "react"
2
+
3
+ import { cn } from "../util"
4
+
5
+ export interface InputProps
6
+ extends React.InputHTMLAttributes<HTMLInputElement> {}
7
+
8
+ const Input = React.forwardRef<HTMLInputElement, InputProps>(
9
+ ({ className, type, ...props }, ref) => {
10
+ return (
11
+ <input
12
+ type={type}
13
+ className={cn(
14
+ "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
15
+ className
16
+ )}
17
+ ref={ref}
18
+ {...props}
19
+ />
20
+ )
21
+ }
22
+ )
23
+ Input.displayName = "Input"
24
+
25
+ export { Input }
@@ -0,0 +1,26 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import * as LabelPrimitive from "@radix-ui/react-label"
5
+ import { cva, type VariantProps } from "class-variance-authority"
6
+
7
+ import { cn } from "../util"
8
+
9
+ const labelVariants = cva(
10
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
11
+ )
12
+
13
+ const Label = React.forwardRef<
14
+ React.ElementRef<typeof LabelPrimitive.Root>,
15
+ React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &
16
+ VariantProps<typeof labelVariants>
17
+ >(({ className, ...props }, ref) => (
18
+ <LabelPrimitive.Root
19
+ ref={ref}
20
+ className={cn(labelVariants(), className)}
21
+ {...props}
22
+ />
23
+ ))
24
+ Label.displayName = LabelPrimitive.Root.displayName
25
+
26
+ export { Label }