@regardio/react 0.7.23 → 0.8.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 (54) hide show
  1. package/dist/button/index.d.mts +2 -2
  2. package/dist/button/index.mjs +2 -2
  3. package/dist/button-BllZdqCA.mjs +109 -0
  4. package/dist/carousel/index.mjs +1 -1
  5. package/dist/checkbox/index.mjs +12 -17
  6. package/dist/combobox/index.d.mts +142 -0
  7. package/dist/combobox/index.mjs +238 -0
  8. package/dist/field/index.d.mts +2 -2
  9. package/dist/field/index.mjs +26 -26
  10. package/dist/fieldset/index.d.mts +2 -2
  11. package/dist/fieldset/index.mjs +18 -21
  12. package/dist/icon-button/index.d.mts +1 -1
  13. package/dist/icon-button/index.mjs +1 -1
  14. package/dist/index-BTB1biC_.d.mts +19 -0
  15. package/dist/index-DEHa010W.d.mts +35 -0
  16. package/dist/input/index.d.mts +1 -1
  17. package/dist/input/index.mjs +1 -1
  18. package/dist/input-BHRHF8xW.mjs +62 -0
  19. package/dist/password-input/index.d.mts +2 -2
  20. package/dist/password-input/index.mjs +5 -6
  21. package/dist/radio/index.mjs +12 -17
  22. package/dist/slider/index.mjs +6 -13
  23. package/dist/switch/index.mjs +7 -12
  24. package/dist/text/index.d.mts +6 -3
  25. package/dist/text/index.mjs +6 -3
  26. package/dist/toggle/index.mjs +44 -29
  27. package/package.json +39 -27
  28. package/src/button/button.test.tsx +12 -8
  29. package/src/button/button.tsx +50 -59
  30. package/src/button/index.ts +2 -2
  31. package/src/checkbox/checkbox.tsx +11 -14
  32. package/src/combobox/combobox.stories.tsx +137 -0
  33. package/src/combobox/combobox.tsx +435 -0
  34. package/src/combobox/index.ts +2 -0
  35. package/src/field/field.test.tsx +1 -1
  36. package/src/field/field.tsx +21 -13
  37. package/src/fieldset/fieldset.test.tsx +1 -1
  38. package/src/fieldset/fieldset.tsx +6 -6
  39. package/src/icon-button/icon-button.test.tsx +1 -1
  40. package/src/input/input.stories.tsx +0 -11
  41. package/src/input/input.test.tsx +5 -2
  42. package/src/input/input.tsx +34 -75
  43. package/src/password-input/password-input.tsx +4 -5
  44. package/src/radio/radio.tsx +11 -14
  45. package/src/slider/slider.tsx +6 -8
  46. package/src/storybook.css +27 -0
  47. package/src/switch/switch.tsx +6 -11
  48. package/src/text/text.tsx +6 -3
  49. package/src/toggle/toggle.test.tsx +1 -2
  50. package/src/toggle/toggle.tsx +44 -29
  51. package/dist/button-wigUM1BB.mjs +0 -127
  52. package/dist/index-B_G_f749.d.mts +0 -29
  53. package/dist/index-DH3W0i5O.d.mts +0 -35
  54. package/dist/input-C2SM4-AB.mjs +0 -71
@@ -3,34 +3,31 @@ import { jsx } from "react/jsx-runtime";
3
3
  import { Fieldset as Fieldset$1 } from "@base-ui/react/fieldset";
4
4
  //#region src/fieldset/fieldset.tsx
5
5
  const fieldsetRoot = tv({
6
- base: [
7
- "border",
8
- "border-gray-200",
9
- "rounded-lg",
10
- "p-4"
11
- ],
6
+ base: [],
12
7
  defaultVariants: { variant: "default" },
13
8
  variants: { variant: {
14
- compact: ["space-y-2"],
15
- default: ["space-y-4"]
9
+ compact: [
10
+ "border",
11
+ "border-current",
12
+ "rounded-lg",
13
+ "p-4",
14
+ "space-y-2"
15
+ ],
16
+ default: [
17
+ "border",
18
+ "border-current",
19
+ "rounded-lg",
20
+ "p-4",
21
+ "space-y-4"
22
+ ]
16
23
  } }
17
24
  });
18
25
  const fieldsetLegend = tv({
19
- base: [
20
- "text-lg",
21
- "font-semibold",
22
- "text-gray-900",
23
- "mb-2"
24
- ],
26
+ base: [],
25
27
  defaultVariants: { size: "default" },
26
28
  variants: { size: {
27
- default: [],
28
- small: [
29
- "text-base",
30
- "font-medium",
31
- "text-gray-900",
32
- "mb-1"
33
- ]
29
+ default: ["text-foreground", "mb-2"],
30
+ small: ["text-foreground", "mb-1"]
34
31
  } }
35
32
  });
36
33
  const FieldsetRoot = ({ className, variant, ...props }) => {
@@ -1,4 +1,4 @@
1
- import { t as Button } from "../index-DH3W0i5O.mjs";
1
+ import { t as Button } from "../index-DEHa010W.mjs";
2
2
  import { ComponentProps, ReactNode } from "react";
3
3
 
4
4
  //#region src/icon-button/icon-button.d.ts
@@ -1,4 +1,4 @@
1
- import { t as Button } from "../button-wigUM1BB.mjs";
1
+ import { t as Button } from "../button-BllZdqCA.mjs";
2
2
  import { tv } from "@regardio/tailwind/utils";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region src/icon-button/icon-button.tsx
@@ -0,0 +1,19 @@
1
+ import { ComponentProps } from "react";
2
+ import { Input } from "@base-ui/react/input";
3
+
4
+ //#region src/input/input.d.ts
5
+ type InputVariant = "default" | "error";
6
+ type InputSize = "sm" | "md" | "lg";
7
+ interface InputProps extends Omit<ComponentProps<typeof Input>, "className" | "size"> {
8
+ className?: string;
9
+ size?: InputSize;
10
+ variant?: InputVariant;
11
+ }
12
+ declare const Input$1: ({
13
+ className,
14
+ variant,
15
+ size,
16
+ ...props
17
+ }: InputProps) => React.JSX.Element;
18
+ //#endregion
19
+ export { InputVariant as i, InputProps as n, InputSize as r, Input$1 as t };
@@ -0,0 +1,35 @@
1
+ import { ComponentProps } from "react";
2
+ import { tv } from "@regardio/tailwind/utils";
3
+ import { Button } from "@base-ui/react/button";
4
+
5
+ //#region src/button/button.d.ts
6
+ declare const buttonVariants: {
7
+ readonly destructive: readonly ["inline-flex", "items-center", "justify-center", "transition-colors", "bg-destructive", "text-destructive-foreground", "border-destructive", "hover:bg-destructive-hover", "hover:border-destructive-hover"];
8
+ readonly ghost: readonly ["inline-flex", "items-center", "justify-center", "transition-colors", "bg-transparent", "text-foreground", "border-transparent", "hover:bg-muted"];
9
+ readonly outline: readonly ["inline-flex", "items-center", "justify-center", "transition-colors", "bg-transparent", "text-foreground", "border-current", "hover:bg-muted"];
10
+ readonly primary: readonly ["inline-flex", "items-center", "justify-center", "transition-colors", "bg-primary", "text-primary-foreground", "border-primary", "hover:bg-primary-hover", "hover:border-primary-hover"];
11
+ readonly secondary: readonly ["inline-flex", "items-center", "justify-center", "transition-colors", "bg-secondary", "text-secondary-foreground", "border-secondary", "hover:bg-secondary-hover", "hover:border-secondary-hover"];
12
+ };
13
+ declare const buttonSizes: {
14
+ readonly "2xl": readonly ["px-8", "py-4", "text-xl"];
15
+ readonly lg: readonly ["px-6", "py-3", "text-lg"];
16
+ readonly md: readonly ["px-4", "py-2", "text-base"];
17
+ readonly sm: readonly ["px-3", "py-1.5", "text-sm"];
18
+ readonly xl: readonly ["px-7", "py-3.5", "text-lg"];
19
+ };
20
+ type ButtonVariant = keyof typeof buttonVariants;
21
+ type ButtonSize = keyof typeof buttonSizes;
22
+ interface ButtonProps extends Omit<ComponentProps<typeof Button>, "className"> {
23
+ className?: string;
24
+ size?: ButtonSize;
25
+ variant?: ButtonVariant;
26
+ }
27
+ declare const Button$1: ({
28
+ children,
29
+ className,
30
+ size,
31
+ variant,
32
+ ...props
33
+ }: ButtonProps) => React.JSX.Element;
34
+ //#endregion
35
+ export { buttonVariants as i, ButtonProps as n, ButtonVariant as r, Button$1 as t };
@@ -1,2 +1,2 @@
1
- import { i as InputVariant, n as InputProps, r as InputSize, t as Input } from "../index-B_G_f749.mjs";
1
+ import { i as InputVariant, n as InputProps, r as InputSize, t as Input } from "../index-BTB1biC_.mjs";
2
2
  export { Input, InputProps, InputSize, InputVariant };
@@ -1,2 +1,2 @@
1
- import { t as Input } from "../input-C2SM4-AB.mjs";
1
+ import { t as Input } from "../input-BHRHF8xW.mjs";
2
2
  export { Input };
@@ -0,0 +1,62 @@
1
+ import { tv } from "@regardio/tailwind/utils";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { Input } from "@base-ui/react/input";
4
+ //#region src/input/input.tsx
5
+ const input = tv({
6
+ base: [],
7
+ defaultVariants: {
8
+ size: "md",
9
+ variant: "default"
10
+ },
11
+ variants: {
12
+ size: {
13
+ lg: ["px-4", "py-3"],
14
+ md: ["px-3", "py-2"],
15
+ sm: ["px-2", "py-1"]
16
+ },
17
+ variant: {
18
+ default: [
19
+ "w-full",
20
+ "border",
21
+ "border-current",
22
+ "rounded-md",
23
+ "bg-background-muted",
24
+ "text-foreground",
25
+ "placeholder:text-muted-foreground",
26
+ "focus:outline-none",
27
+ "focus:ring-2",
28
+ "focus:ring-ring",
29
+ "focus:border-ring",
30
+ "transition-colors",
31
+ "duration-200"
32
+ ],
33
+ error: [
34
+ "w-full",
35
+ "border",
36
+ "rounded-md",
37
+ "bg-background-muted",
38
+ "focus:outline-none",
39
+ "focus:ring-2",
40
+ "transition-colors",
41
+ "duration-200",
42
+ "border-destructive",
43
+ "text-destructive",
44
+ "placeholder:text-destructive",
45
+ "focus:ring-destructive",
46
+ "focus:border-destructive"
47
+ ]
48
+ }
49
+ }
50
+ });
51
+ const Input$1 = ({ className, variant, size, ...props }) => {
52
+ return /* @__PURE__ */ jsx(Input, {
53
+ className: input({
54
+ className,
55
+ size,
56
+ variant
57
+ }),
58
+ ...props
59
+ });
60
+ };
61
+ //#endregion
62
+ export { Input$1 as t };
@@ -1,4 +1,4 @@
1
- import { t as Input } from "../index-B_G_f749.mjs";
1
+ import { t as Input } from "../index-BTB1biC_.mjs";
2
2
 
3
3
  //#region src/password-input/password-input.d.ts
4
4
  declare const passwordInputVariants: {
@@ -8,7 +8,7 @@ declare const passwordInputVariants: {
8
8
  type PasswordInputVariant = keyof typeof passwordInputVariants;
9
9
  interface PasswordInputProps extends Omit<React.ComponentProps<typeof Input>, "type" | "variant"> {
10
10
  className?: string;
11
- inputVariant?: "default" | "error" | "success";
11
+ inputVariant?: "default" | "error";
12
12
  showToggle?: boolean;
13
13
  variant?: PasswordInputVariant;
14
14
  }
@@ -1,5 +1,5 @@
1
- import { t as Button } from "../button-wigUM1BB.mjs";
2
- import { t as Input } from "../input-C2SM4-AB.mjs";
1
+ import { t as Button } from "../button-BllZdqCA.mjs";
2
+ import { t as Input } from "../input-BHRHF8xW.mjs";
3
3
  import { useState } from "react";
4
4
  import { tv } from "@regardio/tailwind/utils";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -23,11 +23,11 @@ const toggleButton = tv({ base: [
23
23
  "cursor-pointer",
24
24
  "items-center",
25
25
  "justify-center",
26
- "text-gray-500",
27
- "hover:text-gray-700",
26
+ "text-muted-foreground",
27
+ "hover:text-foreground",
28
28
  "focus:outline-none",
29
29
  "focus:ring-2",
30
- "focus:ring-blue-500",
30
+ "focus:ring-ring",
31
31
  "focus:ring-offset-2",
32
32
  "rounded",
33
33
  "transition-colors",
@@ -53,7 +53,6 @@ const PasswordInput = ({ className, variant = "default", inputVariant = "default
53
53
  "aria-label": showPassword ? "Hide password" : "Show password",
54
54
  className: toggleButton(),
55
55
  onClick: togglePasswordVisibility,
56
- size: "sm",
57
56
  variant: "ghost",
58
57
  children: showPassword ? /* @__PURE__ */ jsx("svg", {
59
58
  className: "h-4 w-4",
@@ -4,22 +4,19 @@ import { Radio as Radio$1 } from "@base-ui/react/radio";
4
4
  //#region src/radio/radio.tsx
5
5
  const radioRoot = tv({
6
6
  base: [
7
- "h-4",
8
- "w-4",
7
+ "flex",
8
+ "items-center",
9
+ "justify-center",
9
10
  "rounded-full",
10
- "border",
11
- "border-gray-300",
12
- "bg-white",
13
- "focus:outline-none",
14
- "focus:ring-2",
15
- "focus:ring-blue-500",
16
- "focus:ring-offset-2",
11
+ "focus-visible:outline-2",
12
+ "focus-visible:outline-offset-2",
13
+ "focus-visible:outline-ring",
17
14
  "disabled:cursor-not-allowed",
18
- "disabled:opacity-50",
19
- "data-[checked]:bg-blue-600",
20
- "data-[checked]:border-blue-600",
15
+ "data-[checked]:bg-primary",
16
+ "data-[unchecked]:border",
17
+ "data-[unchecked]:border-current",
18
+ "data-[unchecked]:bg-background-muted",
21
19
  "transition-colors",
22
- "duration-200",
23
20
  "cursor-pointer"
24
21
  ],
25
22
  defaultVariants: { size: "md" },
@@ -31,10 +28,8 @@ const radioRoot = tv({
31
28
  });
32
29
  const radioIndicator = tv({ base: [
33
30
  "flex",
34
- "items-center",
35
- "justify-center",
36
- "text-white",
37
- "data-[unchecked]:invisible"
31
+ "text-primary-foreground",
32
+ "data-[unchecked]:hidden"
38
33
  ] });
39
34
  const RadioRoot = ({ className, size = "md", ...props }) => {
40
35
  return /* @__PURE__ */ jsx(Radio$1.Root, {
@@ -28,7 +28,7 @@ const sliderTrack = tv({
28
28
  "relative",
29
29
  "w-full",
30
30
  "rounded-full",
31
- "bg-gray-200",
31
+ "bg-muted",
32
32
  "overflow-hidden"
33
33
  ],
34
34
  defaultVariants: { size: "md" },
@@ -41,23 +41,21 @@ const sliderTrack = tv({
41
41
  const sliderIndicator = tv({ base: [
42
42
  "absolute",
43
43
  "h-full",
44
- "bg-blue-600",
44
+ "bg-primary",
45
45
  "rounded-full"
46
46
  ] });
47
47
  const sliderThumb = tv({
48
48
  base: [
49
49
  "block",
50
50
  "rounded-full",
51
- "bg-white",
51
+ "bg-background-muted",
52
52
  "border-2",
53
- "border-blue-600",
54
- "shadow-lg",
53
+ "border-primary",
55
54
  "focus:outline-none",
56
55
  "focus:ring-2",
57
- "focus:ring-blue-500",
56
+ "focus:ring-ring",
58
57
  "focus:ring-offset-2",
59
58
  "disabled:cursor-not-allowed",
60
- "disabled:opacity-50",
61
59
  "cursor-grab",
62
60
  "active:cursor-grabbing"
63
61
  ],
@@ -68,12 +66,7 @@ const sliderThumb = tv({
68
66
  sm: ["h-3", "w-3"]
69
67
  } }
70
68
  });
71
- const sliderValue = tv({ base: [
72
- "text-sm",
73
- "font-medium",
74
- "text-gray-700",
75
- "mb-2"
76
- ] });
69
+ const sliderValue = tv({ base: ["text-foreground", "mb-2"] });
77
70
  const SliderRoot = ({ className, size = "md", ...props }) => {
78
71
  return /* @__PURE__ */ jsx(Slider$1.Root, {
79
72
  className: sliderRoot({
@@ -9,16 +9,13 @@ const switchRoot = tv({
9
9
  "items-center",
10
10
  "rounded-full",
11
11
  "transition-colors",
12
- "duration-200",
13
- "focus:outline-none",
14
- "focus:ring-2",
15
- "focus:ring-blue-500",
16
- "focus:ring-offset-2",
12
+ "focus-visible:outline-2",
13
+ "focus-visible:outline-offset-2",
14
+ "focus-visible:outline-ring",
17
15
  "disabled:cursor-not-allowed",
18
- "disabled:opacity-50",
19
16
  "cursor-pointer",
20
- "bg-gray-300",
21
- "data-[checked]:bg-blue-600"
17
+ "bg-muted",
18
+ "data-[checked]:bg-primary"
22
19
  ],
23
20
  defaultVariants: { size: "md" },
24
21
  variants: { size: {
@@ -32,13 +29,11 @@ const switchThumb = tv({
32
29
  "pointer-events-none",
33
30
  "inline-block",
34
31
  "rounded-full",
35
- "bg-white",
36
- "shadow-lg",
32
+ "bg-background-muted",
37
33
  "ring-0",
38
34
  "transition-transform",
39
35
  "duration-200",
40
- "translate-x-0",
41
- "data-[checked]:translate-x-full"
36
+ "translate-x-0"
42
37
  ],
43
38
  defaultVariants: { size: "md" },
44
39
  variants: { size: {
@@ -5,9 +5,12 @@ declare const themeColorVariants: {
5
5
  readonly primary: readonly [];
6
6
  };
7
7
  declare const textVariants: {
8
- readonly code: readonly ["font-light", "font-monospace"];
9
- readonly primary: readonly [];
10
- readonly subtitle: readonly ["text-lg"];
8
+ readonly code: readonly ["font-mono", "text-sm"];
9
+ readonly muted: readonly ["text-muted-foreground"];
10
+ readonly primary: readonly ["text-foreground"];
11
+ readonly secondary: readonly ["text-muted-foreground"];
12
+ readonly subtitle: readonly ["text-muted-foreground"];
13
+ readonly supertitle: readonly ["text-foreground", "font-semibold"];
11
14
  };
12
15
  type TextThemeColor = keyof typeof themeColorVariants;
13
16
  type TextVariant = keyof typeof textVariants;
@@ -10,9 +10,12 @@ const text = tv({
10
10
  variants: {
11
11
  themeColor: { primary: [] },
12
12
  variant: {
13
- code: ["font-light", "font-monospace"],
14
- primary: [],
15
- subtitle: ["text-lg"]
13
+ code: ["font-mono", "text-sm"],
14
+ muted: ["text-muted-foreground"],
15
+ primary: ["text-foreground"],
16
+ secondary: ["text-muted-foreground"],
17
+ subtitle: ["text-muted-foreground"],
18
+ supertitle: ["text-foreground", "font-semibold"]
16
19
  }
17
20
  }
18
21
  });
@@ -3,22 +3,7 @@ import { jsx } from "react/jsx-runtime";
3
3
  import { Toggle as Toggle$1 } from "@base-ui/react/toggle";
4
4
  //#region src/toggle/toggle.tsx
5
5
  const toggle = tv({
6
- base: [
7
- "inline-flex",
8
- "items-center",
9
- "justify-center",
10
- "rounded-md",
11
- "text-sm",
12
- "font-medium",
13
- "transition-colors",
14
- "duration-200",
15
- "focus:outline-none",
16
- "focus:ring-2",
17
- "focus:ring-blue-500",
18
- "focus:ring-offset-2",
19
- "disabled:pointer-events-none",
20
- "disabled:opacity-50"
21
- ],
6
+ base: [],
22
7
  defaultVariants: {
23
8
  size: "md",
24
9
  variant: "outline"
@@ -42,24 +27,54 @@ const toggle = tv({
42
27
  ]
43
28
  },
44
29
  variant: {
45
- default: [],
30
+ default: [
31
+ "inline-flex",
32
+ "items-center",
33
+ "justify-center",
34
+ "rounded-md",
35
+ "transition-colors",
36
+ "duration-200",
37
+ "focus:outline-none",
38
+ "focus:ring-2",
39
+ "focus:ring-ring",
40
+ "focus:ring-offset-2",
41
+ "disabled:pointer-events-none"
42
+ ],
46
43
  ghost: [
44
+ "inline-flex",
45
+ "items-center",
46
+ "justify-center",
47
+ "rounded-md",
48
+ "transition-colors",
49
+ "duration-200",
50
+ "focus:outline-none",
51
+ "focus:ring-2",
52
+ "focus:ring-ring",
53
+ "focus:ring-offset-2",
54
+ "disabled:pointer-events-none",
47
55
  "bg-transparent",
48
- "text-gray-700",
49
- "hover:bg-gray-100",
50
- "hover:text-gray-900",
51
- "data-[pressed]:bg-gray-200",
52
- "data-[pressed]:text-gray-900"
56
+ "text-foreground",
57
+ "hover:bg-muted",
58
+ "data-[pressed]:bg-muted"
53
59
  ],
54
60
  outline: [
61
+ "inline-flex",
62
+ "items-center",
63
+ "justify-center",
64
+ "rounded-md",
65
+ "transition-colors",
66
+ "duration-200",
67
+ "focus:outline-none",
68
+ "focus:ring-2",
69
+ "focus:ring-ring",
70
+ "focus:ring-offset-2",
71
+ "disabled:pointer-events-none",
55
72
  "border",
56
- "border-gray-300",
57
- "bg-white",
58
- "text-gray-700",
59
- "hover:bg-gray-50",
60
- "hover:text-gray-900",
61
- "data-[pressed]:bg-gray-100",
62
- "data-[pressed]:text-gray-900"
73
+ "border-current",
74
+ "bg-background-muted",
75
+ "text-foreground",
76
+ "hover:bg-muted",
77
+ "data-[pressed]:bg-muted"
63
78
  ]
64
79
  }
65
80
  }
package/package.json CHANGED
@@ -1,10 +1,16 @@
1
1
  {
2
2
  "$schema": "https://www.schemastore.org/package.json",
3
3
  "name": "@regardio/react",
4
- "version": "0.7.23",
4
+ "version": "0.8.0",
5
5
  "private": false,
6
6
  "description": "Regardio React UI components",
7
- "keywords": ["react", "components", "ui", "regardio", "tailwindcss"],
7
+ "keywords": [
8
+ "react",
9
+ "components",
10
+ "ui",
11
+ "regardio",
12
+ "tailwindcss"
13
+ ],
8
14
  "homepage": "https://github.com/regardio/react/blob/main/README.md",
9
15
  "bugs": {
10
16
  "url": "https://github.com/regardio/react/issues"
@@ -15,7 +21,9 @@
15
21
  },
16
22
  "license": "MIT",
17
23
  "author": "Bernd Matzner <bernd.matzner@regard.io>",
18
- "sideEffects": ["./src/tailwind.css"],
24
+ "sideEffects": [
25
+ "./src/tailwind.css"
26
+ ],
19
27
  "type": "module",
20
28
  "exports": {
21
29
  "./background-slideshow": {
@@ -180,7 +188,10 @@
180
188
  "types": "./dist/utils/text/index.d.mts"
181
189
  }
182
190
  },
183
- "files": ["dist", "src"],
191
+ "files": [
192
+ "dist",
193
+ "src"
194
+ ],
184
195
  "scripts": {
185
196
  "build": "tsdown",
186
197
  "clean": "exec-clean .turbo dist",
@@ -206,12 +217,12 @@
206
217
  "typecheck": "exec-tsc --noEmit"
207
218
  },
208
219
  "dependencies": {
209
- "@base-ui/react": "1.2.0",
220
+ "@base-ui/react": "1.3.0",
210
221
  "@maptiler/sdk": "3.11.1",
211
222
  "@mdx-js/react": "3.1.1",
212
- "@regardio/js": "0.8.2",
213
- "@regardio/tailwind": "0.3.10",
214
- "@supabase/supabase-js": "2.99.0",
223
+ "@regardio/js": "^0.9.2",
224
+ "@regardio/tailwind": "^0.3.12",
225
+ "@supabase/supabase-js": "2.99.2",
215
226
  "cmdk": "1.1.1",
216
227
  "embla-carousel": "8.6.0",
217
228
  "embla-carousel-react": "8.6.0",
@@ -224,40 +235,41 @@
224
235
  "react-day-picker": "9.14.0",
225
236
  "react-dom": "19.2.4",
226
237
  "react-hook-form": "7.71.2",
227
- "react-resizable-panels": "4.7.2",
238
+ "react-resizable-panels": "4.7.3",
228
239
  "react-router": "7.13.1",
229
240
  "tailwind-variants": "3.2.2",
230
241
  "vaul": "1.1.2",
231
242
  "zod": "4.3.6"
232
243
  },
233
244
  "devDependencies": {
234
- "@regardio/dev": "1.16.2",
235
- "@storybook/addon-a11y": "10.2.17",
236
- "@storybook/addon-docs": "10.2.17",
237
- "@storybook/addon-vitest": "10.2.17",
238
- "@storybook/react-vite": "10.2.17",
239
- "@tailwindcss/vite": "4.2.1",
245
+ "@regardio/dev": "^1.18.0",
246
+ "@storybook/addon-a11y": "10.3.0",
247
+ "@storybook/addon-docs": "10.3.0",
248
+ "@storybook/addon-vitest": "10.3.0",
249
+ "@storybook/react": "^10.3.0",
250
+ "@storybook/react-vite": "10.3.0",
251
+ "@tailwindcss/vite": "4.2.2",
240
252
  "@testing-library/jest-dom": "6.9.1",
241
253
  "@testing-library/react": "16.3.2",
242
254
  "@total-typescript/ts-reset": "0.6.1",
243
255
  "@types/leaflet": "1.9.21",
244
- "@types/node": "25.4.0",
256
+ "@types/node": "25.5.0",
245
257
  "@types/react": "19.2.14",
246
258
  "@types/react-dom": "19.2.3",
247
- "@vitejs/plugin-react": "5.1.4",
248
- "@vitest/browser-playwright": "4.0.18",
249
- "@vitest/coverage-v8": "4.0.18",
250
- "@vitest/ui": "4.0.18",
251
- "jsdom": "28.1.0",
259
+ "@vitejs/plugin-react": "6.0.1",
260
+ "@vitest/browser-playwright": "4.1.0",
261
+ "@vitest/coverage-v8": "4.1.0",
262
+ "@vitest/ui": "4.1.0",
263
+ "jsdom": "29.0.0",
252
264
  "playwright": "1.58.2",
253
- "storybook": "10.2.17",
254
- "tailwindcss": "4.2.1",
255
- "tsdown": "0.21.1",
265
+ "storybook": "10.3.0",
266
+ "tailwindcss": "4.2.2",
267
+ "tsdown": "0.21.4",
256
268
  "typescript": "5.9.3",
257
- "vite": "7.3.1",
258
- "vitest": "4.0.18"
269
+ "vite": "8.0.0",
270
+ "vitest": "4.1.0"
259
271
  },
260
272
  "engines": {
261
273
  "node": ">=18"
262
274
  }
263
- }
275
+ }
@@ -8,22 +8,27 @@ describe('Button', () => {
8
8
  expect(screen.getByRole('button', { name: 'Click me' })).toBeInTheDocument();
9
9
  });
10
10
 
11
- it('applies default variant and size classes', () => {
11
+ it('applies default variant classes', () => {
12
12
  render(<Button>Default button</Button>);
13
13
  const button = screen.getByRole('button', { name: 'Default button' });
14
- expect(button).toHaveClass('bg-blue-600', 'text-white', 'px-4', 'py-2');
14
+ expect(button).toHaveClass('bg-primary', 'text-primary-foreground');
15
15
  });
16
16
 
17
17
  it('applies variant classes correctly', () => {
18
18
  render(<Button variant="secondary">Secondary button</Button>);
19
19
  const button = screen.getByRole('button', { name: 'Secondary button' });
20
- expect(button).toHaveClass('bg-gray-100', 'text-gray-900');
20
+ expect(button).toHaveClass('bg-secondary', 'text-secondary-foreground');
21
21
  });
22
22
 
23
- it('applies size classes correctly', () => {
24
- render(<Button size="lg">Large button</Button>);
25
- const button = screen.getByRole('button', { name: 'Large button' });
26
- expect(button).toHaveClass('px-6', 'py-3', 'text-lg');
23
+ it('applies base structural classes', () => {
24
+ render(<Button>Button</Button>);
25
+ const button = screen.getByRole('button', { name: 'Button' });
26
+ expect(button).toHaveClass(
27
+ 'inline-flex',
28
+ 'items-center',
29
+ 'justify-center',
30
+ 'transition-colors',
31
+ );
27
32
  });
28
33
 
29
34
  it('applies custom className', () => {
@@ -36,7 +41,6 @@ describe('Button', () => {
36
41
  render(<Button disabled>Disabled button</Button>);
37
42
  const button = screen.getByRole('button', { name: 'Disabled button' });
38
43
  expect(button).toBeDisabled();
39
- expect(button).toHaveClass('disabled:opacity-50', 'disabled:cursor-not-allowed');
40
44
  });
41
45
 
42
46
  it('passes through other props', () => {