@greatapps/common 1.1.539 → 1.1.540

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.
@@ -1,6 +1,7 @@
1
1
  "use client";
2
- import { jsx } from "react/jsx-runtime";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Slot } from "@radix-ui/react-slot";
4
+ import { IconLoader2 } from "@tabler/icons-react";
4
5
  import { cva } from "class-variance-authority";
5
6
  import { cn } from "../../../infra/utils/clsx";
6
7
  import { useIsDefaultWhitelabel } from "../../../providers/whitelabel.provider";
@@ -34,19 +35,28 @@ function Button({
34
35
  variant,
35
36
  size,
36
37
  asChild = false,
38
+ loading = false,
39
+ children,
40
+ disabled,
37
41
  ...props
38
42
  }) {
39
43
  const isDefaultWl = useIsDefaultWhitelabel();
40
44
  const Comp = asChild ? Slot : "button";
45
+ const content = asChild ? children : /* @__PURE__ */ jsxs(Fragment, { children: [
46
+ loading && /* @__PURE__ */ jsx(IconLoader2, { className: "size-4 animate-spin" }),
47
+ children
48
+ ] });
41
49
  return /* @__PURE__ */ jsx(
42
50
  Comp,
43
51
  {
44
52
  "data-slot": "button",
53
+ disabled: disabled || loading,
45
54
  className: cn(
46
55
  buttonVariants({ variant, size, className }),
47
56
  variant === "brand" && (isDefaultWl ? "bg-cyan-300 hover:bg-cyan-200" : "bg-zinc-300 hover:bg-zinc-200")
48
57
  ),
49
- ...props
58
+ ...props,
59
+ children: content
50
60
  }
51
61
  );
52
62
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ui/buttons/Button.tsx"],"sourcesContent":["'use client';\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../../../infra/utils/clsx\"\nimport { useIsDefaultWhitelabel } from \"../../../providers/whitelabel.provider\"\n\nconst buttonVariants = cva(\n \"paragraph-small-semibold cursor-pointer flex items-center justify-center gap-1.5 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\",\n {\n variants: {\n variant: {\n default: \" bg-gray-950 text-white hover:bg-gray-950/90\",\n secondary:\n \"bg-white text-gray-950 border-gray-200 hover:border-gray-400 border\",\n ghost:\n \"text-gray-600 hover:bg-accent hover:text-gray-950 dark:hover:bg-accent/50\",\n brand: \"text-gray-950\",\n },\n size: {\n default: \"h-12 px-4 py-2 has-[>svg]:px-3\",\n sm: \"rounded-md gap-1.5 px-2 py-2 has-[>svg]:px-2.5\",\n lg: \"rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const isDefaultWl = useIsDefaultWhitelabel();\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(\n buttonVariants({ variant, size, className }),\n variant === \"brand\" && (isDefaultWl ? \"bg-cyan-300 hover:bg-cyan-200\" : \"bg-zinc-300 hover:bg-zinc-200\")\n )}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n"],"mappings":";AAkDI;AA/CJ,SAAS,YAAY;AACrB,SAAS,WAA8B;AACvC,SAAS,UAAU;AACnB,SAAS,8BAA8B;AAEvC,MAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WACE;AAAA,QACF,OACE;AAAA,QACF,OAAO;AAAA,MACT;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,OAAO;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,GAGK;AACH,QAAM,cAAc,uBAAuB;AAC3C,QAAM,OAAO,UAAU,OAAO;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC;AAAA,QAC3C,YAAY,YAAY,cAAc,kCAAkC;AAAA,MAC1E;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/ui/buttons/Button.tsx"],"sourcesContent":["'use client';\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { IconLoader2 } from \"@tabler/icons-react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../../../infra/utils/clsx\"\nimport { useIsDefaultWhitelabel } from \"../../../providers/whitelabel.provider\"\n\nconst buttonVariants = cva(\n \"paragraph-small-semibold cursor-pointer flex items-center justify-center gap-1.5 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\",\n {\n variants: {\n variant: {\n default: \" bg-gray-950 text-white hover:bg-gray-950/90\",\n secondary:\n \"bg-white text-gray-950 border-gray-200 hover:border-gray-400 border\",\n ghost:\n \"text-gray-600 hover:bg-accent hover:text-gray-950 dark:hover:bg-accent/50\",\n brand: \"text-gray-950\",\n },\n size: {\n default: \"h-12 px-4 py-2 has-[>svg]:px-3\",\n sm: \"rounded-md gap-1.5 px-2 py-2 has-[>svg]:px-2.5\",\n lg: \"rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n loading = false,\n children,\n disabled,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n loading?: boolean\n }) {\n const isDefaultWl = useIsDefaultWhitelabel();\n const Comp = asChild ? Slot : \"button\"\n\n const content = asChild ? children : (\n <>\n {loading && <IconLoader2 className=\"size-4 animate-spin\" />}\n {children}\n </>\n )\n\n return (\n <Comp\n data-slot=\"button\"\n disabled={disabled || loading}\n className={cn(\n buttonVariants({ variant, size, className }),\n variant === \"brand\" && (isDefaultWl ? \"bg-cyan-300 hover:bg-cyan-200\" : \"bg-zinc-300 hover:bg-zinc-200\")\n )}\n {...props}\n >\n {content}\n </Comp>\n )\n}\n\nexport { Button, buttonVariants }\n"],"mappings":";AAuDI,mBACc,KADd;AApDJ,SAAS,YAAY;AACrB,SAAS,mBAAmB;AAC5B,SAAS,WAA8B;AACvC,SAAS,UAAU;AACnB,SAAS,8BAA8B;AAEvC,MAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WACE;AAAA,QACF,OACE;AAAA,QACF,OAAO;AAAA,MACT;AAAA,MACA,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,OAAO;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAIK;AACH,QAAM,cAAc,uBAAuB;AAC3C,QAAM,OAAO,UAAU,OAAO;AAE9B,QAAM,UAAU,UAAU,WACxB,iCACG;AAAA,eAAW,oBAAC,eAAY,WAAU,uBAAsB;AAAA,IACxD;AAAA,KACH;AAGF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,UAAU,YAAY;AAAA,MACtB,WAAW;AAAA,QACT,eAAe,EAAE,SAAS,MAAM,UAAU,CAAC;AAAA,QAC3C,YAAY,YAAY,cAAc,kCAAkC;AAAA,MAC1E;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@greatapps/common",
3
- "version": "1.1.539",
3
+ "version": "1.1.540",
4
4
  "description": "Shared library for GreatApps frontend applications",
5
5
  "main": "./dist/index.mjs",
6
6
  "types": "./src/index.ts",
@@ -2,6 +2,7 @@
2
2
 
3
3
  import * as React from "react"
4
4
  import { Slot } from "@radix-ui/react-slot"
5
+ import { IconLoader2 } from "@tabler/icons-react"
5
6
  import { cva, type VariantProps } from "class-variance-authority"
6
7
  import { cn } from "../../../infra/utils/clsx"
7
8
  import { useIsDefaultWhitelabel } from "../../../providers/whitelabel.provider"
@@ -39,23 +40,37 @@ function Button({
39
40
  variant,
40
41
  size,
41
42
  asChild = false,
43
+ loading = false,
44
+ children,
45
+ disabled,
42
46
  ...props
43
47
  }: React.ComponentProps<"button"> &
44
48
  VariantProps<typeof buttonVariants> & {
45
49
  asChild?: boolean
50
+ loading?: boolean
46
51
  }) {
47
52
  const isDefaultWl = useIsDefaultWhitelabel();
48
53
  const Comp = asChild ? Slot : "button"
49
54
 
55
+ const content = asChild ? children : (
56
+ <>
57
+ {loading && <IconLoader2 className="size-4 animate-spin" />}
58
+ {children}
59
+ </>
60
+ )
61
+
50
62
  return (
51
63
  <Comp
52
64
  data-slot="button"
65
+ disabled={disabled || loading}
53
66
  className={cn(
54
67
  buttonVariants({ variant, size, className }),
55
68
  variant === "brand" && (isDefaultWl ? "bg-cyan-300 hover:bg-cyan-200" : "bg-zinc-300 hover:bg-zinc-200")
56
69
  )}
57
70
  {...props}
58
- />
71
+ >
72
+ {content}
73
+ </Comp>
59
74
  )
60
75
  }
61
76