@rovula/ui 0.0.8 → 0.0.10

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 (129) hide show
  1. package/dist/cjs/bundle.css +497 -4
  2. package/dist/cjs/bundle.js +1 -1
  3. package/dist/cjs/bundle.js.map +1 -1
  4. package/dist/cjs/types/components/AlertDialog/Alert.stories.d.ts +20 -0
  5. package/dist/cjs/types/components/AlertDialog/AlertDialog.d.ts +20 -0
  6. package/dist/cjs/types/components/Button/Button.styles.d.ts +1 -1
  7. package/dist/cjs/types/components/Checkbox/Checkbox.d.ts +4 -0
  8. package/dist/cjs/types/components/Checkbox/Checkbox.stories.d.ts +308 -0
  9. package/dist/cjs/types/components/Dialog/Dialog.d.ts +19 -0
  10. package/dist/cjs/types/components/Dialog/Dialog.stories.d.ts +25 -0
  11. package/dist/cjs/types/components/Dropdown/Dropdown.d.ts +26 -0
  12. package/dist/cjs/types/components/Dropdown/Dropdown.stories.d.ts +367 -0
  13. package/dist/cjs/types/components/Dropdown/Dropdown.styles.d.ts +11 -0
  14. package/dist/cjs/types/components/Input/Input.d.ts +5 -0
  15. package/dist/cjs/types/components/Input/Input.stories.d.ts +314 -0
  16. package/dist/cjs/types/components/Label/Label.d.ts +5 -0
  17. package/dist/cjs/types/components/Label/Label.stories.d.ts +286 -0
  18. package/dist/cjs/types/components/RadioGroup/RadioGroup.d.ts +5 -0
  19. package/dist/cjs/types/components/RadioGroup/RadioGroup.stories.d.ts +299 -0
  20. package/dist/cjs/types/components/Table/Datagrid.d.ts +11 -0
  21. package/dist/cjs/types/components/Table/Table.d.ts +10 -11
  22. package/dist/cjs/types/components/Table/Table.stories.d.ts +283 -0
  23. package/dist/cjs/types/components/Tabs/Tabs.d.ts +7 -5
  24. package/dist/cjs/types/components/Tabs/Tabs.stories.d.ts +49 -0
  25. package/dist/cjs/types/components/TextInput/TextInput.d.ts +3 -2
  26. package/dist/cjs/types/components/TextInput/TextInput.stories.d.ts +2 -16
  27. package/dist/cjs/types/index.d.ts +8 -2
  28. package/dist/cjs/types/utils/cn.d.ts +2 -0
  29. package/dist/components/AlertDialog/Alert.stories.js +39 -0
  30. package/dist/components/AlertDialog/AlertDialog.js +73 -0
  31. package/dist/components/Button/Button.js +3 -3
  32. package/dist/components/Button/Button.styles.js +1 -1
  33. package/dist/components/Checkbox/Checkbox.js +37 -0
  34. package/dist/components/Checkbox/Checkbox.stories.js +49 -0
  35. package/dist/components/Dialog/Dialog.js +63 -0
  36. package/dist/components/Dialog/Dialog.stories.js +52 -0
  37. package/dist/components/Dropdown/Dropdown.js +58 -0
  38. package/dist/components/{Select/Select.stories.js → Dropdown/Dropdown.stories.js} +8 -11
  39. package/dist/components/Dropdown/Dropdown.styles.js +47 -0
  40. package/dist/components/Input/Input.js +31 -0
  41. package/dist/components/Input/Input.stories.js +37 -0
  42. package/dist/components/Label/Label.js +35 -0
  43. package/dist/components/Label/Label.stories.js +38 -0
  44. package/dist/components/RadioGroup/RadioGroup.js +41 -0
  45. package/dist/components/RadioGroup/RadioGroup.stories.js +44 -0
  46. package/dist/components/Table/Datagrid.js +6 -0
  47. package/dist/components/Table/Table.js +65 -5
  48. package/dist/components/Table/Table.stories.js +32 -0
  49. package/dist/components/Tabs/Tabs.js +10 -4
  50. package/dist/components/Tabs/Tabs.stories.js +60 -0
  51. package/dist/components/TextInput/TextInput.js +3 -3
  52. package/dist/esm/bundle.css +497 -4
  53. package/dist/esm/bundle.js +1 -1
  54. package/dist/esm/bundle.js.map +1 -1
  55. package/dist/esm/types/components/AlertDialog/Alert.stories.d.ts +20 -0
  56. package/dist/esm/types/components/AlertDialog/AlertDialog.d.ts +20 -0
  57. package/dist/esm/types/components/Button/Button.styles.d.ts +1 -1
  58. package/dist/esm/types/components/Checkbox/Checkbox.d.ts +4 -0
  59. package/dist/esm/types/components/Checkbox/Checkbox.stories.d.ts +308 -0
  60. package/dist/esm/types/components/Dialog/Dialog.d.ts +19 -0
  61. package/dist/esm/types/components/Dialog/Dialog.stories.d.ts +25 -0
  62. package/dist/esm/types/components/Dropdown/Dropdown.d.ts +26 -0
  63. package/dist/esm/types/components/Dropdown/Dropdown.stories.d.ts +367 -0
  64. package/dist/esm/types/components/Dropdown/Dropdown.styles.d.ts +11 -0
  65. package/dist/esm/types/components/Input/Input.d.ts +5 -0
  66. package/dist/esm/types/components/Input/Input.stories.d.ts +314 -0
  67. package/dist/esm/types/components/Label/Label.d.ts +5 -0
  68. package/dist/esm/types/components/Label/Label.stories.d.ts +286 -0
  69. package/dist/esm/types/components/RadioGroup/RadioGroup.d.ts +5 -0
  70. package/dist/esm/types/components/RadioGroup/RadioGroup.stories.d.ts +299 -0
  71. package/dist/esm/types/components/Table/Datagrid.d.ts +11 -0
  72. package/dist/esm/types/components/Table/Table.d.ts +10 -11
  73. package/dist/esm/types/components/Table/Table.stories.d.ts +283 -0
  74. package/dist/esm/types/components/Tabs/Tabs.d.ts +7 -5
  75. package/dist/esm/types/components/Tabs/Tabs.stories.d.ts +49 -0
  76. package/dist/esm/types/components/TextInput/TextInput.d.ts +3 -2
  77. package/dist/esm/types/components/TextInput/TextInput.stories.d.ts +2 -16
  78. package/dist/esm/types/index.d.ts +8 -2
  79. package/dist/esm/types/utils/cn.d.ts +2 -0
  80. package/dist/index.d.ts +88 -30
  81. package/dist/index.js +8 -2
  82. package/dist/src/theme/global.css +598 -4
  83. package/dist/theme/global.css +57 -0
  84. package/dist/theme/main-preset.js +29 -1
  85. package/dist/theme/presets/colors.js +19 -0
  86. package/dist/utils/cn.js +9 -0
  87. package/package.json +9 -1
  88. package/src/components/AlertDialog/Alert.stories.tsx +67 -0
  89. package/src/components/AlertDialog/AlertDialog.tsx +142 -0
  90. package/src/components/Button/Button.styles.ts +1 -1
  91. package/src/components/Button/Button.tsx +4 -4
  92. package/src/components/Checkbox/Checkbox.stories.tsx +91 -0
  93. package/src/components/Checkbox/Checkbox.tsx +36 -0
  94. package/src/components/Dialog/Dialog.stories.tsx +118 -0
  95. package/src/components/Dialog/Dialog.tsx +119 -0
  96. package/src/components/{Select/Select.stories.tsx → Dropdown/Dropdown.stories.tsx} +11 -14
  97. package/src/components/Dropdown/Dropdown.styles.ts +54 -0
  98. package/src/components/Dropdown/Dropdown.tsx +151 -0
  99. package/src/components/Input/Input.stories.tsx +40 -0
  100. package/src/components/Input/Input.tsx +25 -0
  101. package/src/components/Label/Label.stories.tsx +45 -0
  102. package/src/components/Label/Label.tsx +26 -0
  103. package/src/components/RadioGroup/RadioGroup.stories.tsx +71 -0
  104. package/src/components/RadioGroup/RadioGroup.tsx +59 -0
  105. package/src/components/Table/Datagrid.tsx +36 -0
  106. package/src/components/Table/Table.stories.tsx +79 -0
  107. package/src/components/Table/Table.tsx +116 -35
  108. package/src/components/Tabs/Tabs.stories.tsx +75 -0
  109. package/src/components/Tabs/Tabs.tsx +39 -10
  110. package/src/components/TextInput/TextInput.tsx +11 -2
  111. package/src/index.ts +9 -2
  112. package/src/theme/global.css +57 -0
  113. package/src/theme/main-preset.js +29 -1
  114. package/src/theme/presets/colors.js +19 -0
  115. package/src/utils/cn.ts +6 -0
  116. package/dist/cjs/types/components/Select/Select copy.d.ts +0 -23
  117. package/dist/cjs/types/components/Select/Select.d.ts +0 -23
  118. package/dist/cjs/types/components/Select/Select.stories.d.ts +0 -348
  119. package/dist/cjs/types/components/Select/Select.styles.d.ts +0 -14
  120. package/dist/components/Select/Select copy.js +0 -42
  121. package/dist/components/Select/Select.js +0 -21
  122. package/dist/components/Select/Select.styles.js +0 -100
  123. package/dist/esm/types/components/Select/Select copy.d.ts +0 -23
  124. package/dist/esm/types/components/Select/Select.d.ts +0 -23
  125. package/dist/esm/types/components/Select/Select.stories.d.ts +0 -348
  126. package/dist/esm/types/components/Select/Select.styles.d.ts +0 -14
  127. package/src/components/Select/Select copy.tsx +0 -103
  128. package/src/components/Select/Select.styles.ts +0 -111
  129. package/src/components/Select/Select.tsx +0 -54
@@ -0,0 +1,49 @@
1
+ import React from "react";
2
+ declare const meta: {
3
+ title: string;
4
+ component: React.FC<{
5
+ tabs: {
6
+ label: string;
7
+ startTabContent?: React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
8
+ endTabContent?: React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
9
+ content: React.ReactNode;
10
+ }[];
11
+ initialTab?: number | undefined;
12
+ }>;
13
+ tags: string[];
14
+ parameters: {
15
+ layout: string;
16
+ };
17
+ decorators: ((Story: import("@storybook/types").PartialStoryFn<import("@storybook/react").ReactRenderer, {
18
+ tabs: {
19
+ label: string;
20
+ startTabContent?: React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
21
+ endTabContent?: React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
22
+ content: React.ReactNode;
23
+ }[];
24
+ initialTab?: number | undefined;
25
+ }>) => import("react/jsx-runtime").JSX.Element)[];
26
+ };
27
+ export default meta;
28
+ export declare const Default: {
29
+ args: {
30
+ initialTab: number;
31
+ tabs: {
32
+ label: string;
33
+ content: import("react/jsx-runtime").JSX.Element;
34
+ }[];
35
+ };
36
+ render: (args: {}) => import("react/jsx-runtime").JSX.Element;
37
+ };
38
+ export declare const CustomTab: {
39
+ args: {
40
+ initialTab: number;
41
+ tabs: {
42
+ startTabContent: import("react/jsx-runtime").JSX.Element;
43
+ endTabContent: import("react/jsx-runtime").JSX.Element;
44
+ label: string;
45
+ content: import("react/jsx-runtime").JSX.Element;
46
+ }[];
47
+ };
48
+ render: (args: {}) => import("react/jsx-runtime").JSX.Element;
49
+ };
@@ -1,5 +1,5 @@
1
- import React, { FC } from "react";
2
- type InputProps = {
1
+ import React, { FC, ReactNode } from "react";
2
+ export type InputProps = {
3
3
  id?: string;
4
4
  label?: string;
5
5
  size?: "sm" | "md" | "lg";
@@ -13,6 +13,7 @@ type InputProps = {
13
13
  error?: boolean;
14
14
  required?: boolean;
15
15
  hasClearIcon?: boolean;
16
+ endIcon?: ReactNode;
16
17
  className?: string;
17
18
  } & Omit<React.InputHTMLAttributes<HTMLInputElement>, "size">;
18
19
  declare const TextInput: FC<InputProps>;
@@ -1,22 +1,7 @@
1
1
  import React from "react";
2
2
  declare const meta: {
3
3
  title: string;
4
- component: React.FC<{
5
- id?: string | undefined;
6
- label?: string | undefined;
7
- size?: "sm" | "md" | "lg" | undefined;
8
- rounded?: "none" | "normal" | "full" | undefined;
9
- variant?: "outline" | "flat" | "underline" | undefined;
10
- type?: React.HTMLInputTypeAttribute | undefined;
11
- helperText?: string | undefined;
12
- errorMessage?: string | undefined;
13
- fullwidth?: boolean | undefined;
14
- disabled?: boolean | undefined;
15
- error?: boolean | undefined;
16
- required?: boolean | undefined;
17
- hasClearIcon?: boolean | undefined;
18
- className?: string | undefined;
19
- } & Omit<React.InputHTMLAttributes<HTMLInputElement>, "size">>;
4
+ component: React.FC<import("./TextInput").InputProps>;
20
5
  tags: string[];
21
6
  parameters: {
22
7
  layout: string;
@@ -35,6 +20,7 @@ declare const meta: {
35
20
  error?: boolean | undefined;
36
21
  required?: boolean | undefined;
37
22
  hasClearIcon?: boolean | undefined;
23
+ endIcon?: React.ReactNode;
38
24
  className?: string | undefined;
39
25
  color?: string | undefined;
40
26
  title?: string | undefined;
@@ -1,8 +1,14 @@
1
1
  import "./theme/global.css";
2
2
  export { default as Button } from "./components/Button/Button";
3
- export { default as Table } from "./components/Table/Table";
4
3
  export { default as TextInput } from "./components/TextInput/TextInput";
5
4
  export { default as Text } from "./components/Text/Text";
6
5
  export { default as Tabs } from "./components/Tabs/Tabs";
7
- export { default as Select } from "./components/Select/Select";
6
+ export { default as Dropdown } from "./components/Dropdown/Dropdown";
7
+ export { Checkbox } from "./components/Checkbox/Checkbox";
8
+ export { Label } from "./components/Label/Label";
9
+ export { Input } from "./components/Input/Input";
10
+ export * from "./components/Table/Table";
11
+ export * from "./components/Dialog/Dialog";
12
+ export * from "./components/AlertDialog/AlertDialog";
8
13
  export { resloveTimestamp, getStartDateOfDay, getEndDateOfDay, getStartEndTimestampOfDay, getTimestampUTC, } from "./utils/datetime";
14
+ export { cn } from "./utils/cn";
@@ -0,0 +1,2 @@
1
+ import { type ClassValue } from "clsx";
2
+ export declare function cn(...inputs: ClassValue[]): string;
@@ -0,0 +1,39 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from "./AlertDialog";
14
+ // More on how to set up stories at: https://storybook.js.org/docs/7.0/react/writing-stories/introduction
15
+ var meta = {
16
+ title: "Components/Alert",
17
+ component: AlertDialog,
18
+ tags: ["autodocs"],
19
+ parameters: {
20
+ // More on how to position stories at: https://storybook.js.org/docs/7.0/react/configure/story-layout
21
+ layout: "fullscreen",
22
+ },
23
+ decorators: [
24
+ function (Story) { return (_jsx("div", { className: "p-5 flex w-full", children: _jsx(Story, {}) })); },
25
+ ],
26
+ };
27
+ export default meta;
28
+ export var Default = {
29
+ args: {
30
+ // label: "Lorem Ipsum",
31
+ // value: "Lorem Ipsum",
32
+ // fullwidth: true,
33
+ },
34
+ render: function (args) {
35
+ console.log("args ", args);
36
+ var props = __assign({}, args);
37
+ return (_jsx("div", { className: "flex flex-row gap-4 w-full", children: _jsxs(AlertDialog, { children: [_jsx(AlertDialogTrigger, { children: "Open" }), _jsxs(AlertDialogContent, { children: [_jsxs(AlertDialogHeader, { children: [_jsx(AlertDialogTitle, { children: "Are you absolutely sure?" }), _jsx(AlertDialogDescription, { children: "This action cannot be undone. This will permanently delete your account and remove your data from our servers." })] }), _jsxs(AlertDialogFooter, { children: [_jsx(AlertDialogCancel, { children: "Cancel" }), _jsx(AlertDialogAction, { children: "Continue" })] })] })] }) }));
38
+ },
39
+ };
@@ -0,0 +1,73 @@
1
+ "use client";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
25
+ import * as React from "react";
26
+ import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
27
+ import { cn } from "@/utils/cn";
28
+ import { buttonVariants } from "../Button/Button.styles";
29
+ var AlertDialog = AlertDialogPrimitive.Root;
30
+ var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
31
+ var AlertDialogPortal = AlertDialogPrimitive.Portal;
32
+ var AlertDialogOverlay = React.forwardRef(function (_a, ref) {
33
+ var className = _a.className, props = __rest(_a, ["className"]);
34
+ return (_jsx(AlertDialogPrimitive.Overlay, __assign({ className: cn("fixed inset-0 bg-popup-overlay z-50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", className) }, props, { ref: ref })));
35
+ });
36
+ AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
37
+ var AlertDialogContent = React.forwardRef(function (_a, ref) {
38
+ var className = _a.className, props = __rest(_a, ["className"]);
39
+ return (_jsxs(AlertDialogPortal, { children: [_jsx(AlertDialogOverlay, {}), _jsx(AlertDialogPrimitive.Content, __assign({ ref: ref, className: cn("fixed text-textcolor-grey-dark left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-6 border bg-popup-background p-8 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-[var(--popup-rounded)]", className) }, props))] }));
40
+ });
41
+ AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
42
+ var AlertDialogHeader = function (_a) {
43
+ var className = _a.className, props = __rest(_a, ["className"]);
44
+ return (_jsx("div", __assign({ className: cn("flex flex-col space-y-2 text-center sm:text-left", className) }, props)));
45
+ };
46
+ AlertDialogHeader.displayName = "AlertDialogHeader";
47
+ var AlertDialogFooter = function (_a) {
48
+ var className = _a.className, props = __rest(_a, ["className"]);
49
+ return (_jsx("div", __assign({ className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className) }, props)));
50
+ };
51
+ AlertDialogFooter.displayName = "AlertDialogFooter";
52
+ var AlertDialogTitle = React.forwardRef(function (_a, ref) {
53
+ var className = _a.className, props = __rest(_a, ["className"]);
54
+ return (_jsx(AlertDialogPrimitive.Title, __assign({ ref: ref, className: cn("typography-h5", className) }, props)));
55
+ });
56
+ AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
57
+ var AlertDialogDescription = React.forwardRef(function (_a, ref) {
58
+ var className = _a.className, props = __rest(_a, ["className"]);
59
+ return (_jsx(AlertDialogPrimitive.Description, __assign({ ref: ref, className: cn("text-sm", className) }, props)));
60
+ });
61
+ AlertDialogDescription.displayName =
62
+ AlertDialogPrimitive.Description.displayName;
63
+ var AlertDialogAction = React.forwardRef(function (_a, ref) {
64
+ var className = _a.className, props = __rest(_a, ["className"]);
65
+ return (_jsx(AlertDialogPrimitive.Action, __assign({ ref: ref, className: cn(buttonVariants({ fullwidth: false }), className) }, props)));
66
+ });
67
+ AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
68
+ var AlertDialogCancel = React.forwardRef(function (_a, ref) {
69
+ var className = _a.className, props = __rest(_a, ["className"]);
70
+ return (_jsx(AlertDialogPrimitive.Cancel, __assign({ ref: ref, className: cn(buttonVariants({ fullwidth: false, variant: "outline" }), "mt-2 sm:mt-0", className) }, props)));
71
+ });
72
+ AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
73
+ export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
@@ -21,11 +21,11 @@ var __rest = (this && this.__rest) || function (s, e) {
21
21
  return t;
22
22
  };
23
23
  import { Fragment as _Fragment, jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
24
- import { twMerge } from "tailwind-merge";
25
- import { buttonCva } from "./Button.styles";
24
+ import { buttonVariants } from "./Button.styles";
25
+ import { cn } from "@/utils/cn";
26
26
  var Button = function (_a) {
27
27
  var _b = _a.size, size = _b === void 0 ? "md" : _b, _c = _a.color, color = _c === void 0 ? "primary" : _c, _d = _a.variant, variant = _d === void 0 ? "solid" : _d, title = _a.title, children = _a.children, startIcon = _a.startIcon, endIcon = _a.endIcon, _e = _a.disabled, disabled = _e === void 0 ? false : _e, _f = _a.fullwidth, fullwidth = _f === void 0 ? false : _f, _g = _a.isLoading, isLoading = _g === void 0 ? false : _g, className = _a.className, props = __rest(_a, ["size", "color", "variant", "title", "children", "startIcon", "endIcon", "disabled", "fullwidth", "isLoading", "className"]);
28
28
  var isDisabled = disabled || isLoading;
29
- return (_jsx("button", __assign({ type: "button" }, props, { "aria-disabled": isDisabled || undefined, tabIndex: isDisabled ? -1 : 0, className: twMerge(buttonCva({ size: size, color: color, variant: variant, disabled: disabled, fullwidth: fullwidth }), className), disabled: isDisabled, children: _jsxs(_Fragment, { children: [startIcon, children || title, endIcon] }) })));
29
+ return (_jsx("button", __assign({ type: "button" }, props, { "aria-disabled": isDisabled || undefined, tabIndex: isDisabled ? -1 : 0, className: cn(buttonVariants({ size: size, color: color, variant: variant, disabled: disabled, fullwidth: fullwidth }), className), disabled: isDisabled, children: _jsxs(_Fragment, { children: [startIcon, children || title, endIcon] }) })));
30
30
  };
31
31
  export default Button;
@@ -1,5 +1,5 @@
1
1
  import { cva } from "class-variance-authority";
2
- export var buttonCva = cva([
2
+ export var buttonVariants = cva([
3
3
  // "inline-flex items-center justify-center align-middle no-underline transition-colors ease-in-out duration-300",
4
4
  // "font-sans appearance-none select-none rounded-sm border font-medium tracking-[.02857em]",
5
5
  // "aria-disabled:pointer-events-none aria-disabled:opacity-50 aria-disabled:cursor-not-allowed",
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ import { jsx as _jsx } from "react/jsx-runtime";
25
+ import * as React from "react";
26
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
27
+ import { CheckIcon } from "@heroicons/react/16/solid";
28
+ import { cn } from "@/utils/cn";
29
+ var Checkbox = React.forwardRef(function (_a, ref) {
30
+ var className = _a.className, props = __rest(_a, ["className"]);
31
+ return (_jsx(CheckboxPrimitive.Root, __assign({ ref: ref, className: cn("peer h-4 w-4 shrink-0 rounded-sm border border-primary-30 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:border-socondary-120 disabled:border-socondary-110", {
32
+ "data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground": !props.disabled,
33
+ "bg-grey2-300": props.checked && props.disabled,
34
+ }, className) }, props, { children: _jsx(CheckboxPrimitive.Indicator, { className: cn("flex items-center justify-center text-current"), children: _jsx(CheckIcon, { className: "h-4 w-4" }) }) })));
35
+ });
36
+ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
37
+ export { Checkbox };
@@ -0,0 +1,49 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { Checkbox } from "./Checkbox";
14
+ var meta = {
15
+ title: "Components/Checkbox",
16
+ component: Checkbox,
17
+ tags: ["autodocs"],
18
+ parameters: {
19
+ layout: "fullscreen",
20
+ },
21
+ decorators: [
22
+ function (Story) { return (_jsx("div", { className: "p-5 flex w-full", children: _jsx(Story, {}) })); },
23
+ ],
24
+ };
25
+ export default meta;
26
+ export var Default = {
27
+ args: {
28
+ checked: false,
29
+ disabled: false,
30
+ },
31
+ render: function (args) {
32
+ var props = __assign({}, args);
33
+ return (_jsx("div", { className: "flex flex-row gap-4 w-full", children: _jsxs("div", { className: "flex items-center space-x-2", children: [_jsx(Checkbox, __assign({ id: "terms" }, props)), _jsx("label", { htmlFor: "terms", className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", children: "Accept terms and conditions" })] }) }));
34
+ },
35
+ };
36
+ export var WithText = {
37
+ args: {},
38
+ render: function (args) {
39
+ var props = __assign({}, args);
40
+ return (_jsxs("div", { className: "items-top flex space-x-2", children: [_jsx(Checkbox, { id: "terms1" }), _jsxs("div", { className: "grid gap-1.5 leading-none", children: [_jsx("label", { htmlFor: "terms1", className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", children: "Accept terms and conditions" }), _jsx("p", { className: "text-sm text-muted-foreground", children: "You agree to our Terms of Service and Privacy Policy." })] })] }));
41
+ },
42
+ };
43
+ export var Diabled = {
44
+ args: {},
45
+ render: function (args) {
46
+ var props = __assign({}, args);
47
+ return (_jsxs("div", { className: "flex items-center space-x-2", children: [_jsx(Checkbox, { id: "terms2", disabled: true }), _jsx("label", { htmlFor: "terms2", className: "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", children: "Accept terms and conditions" })] }));
48
+ },
49
+ };
@@ -0,0 +1,63 @@
1
+ "use client";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
25
+ import * as React from "react";
26
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
27
+ import { XMarkIcon } from "@heroicons/react/16/solid";
28
+ import { cn } from "@/utils/cn";
29
+ var Dialog = DialogPrimitive.Root;
30
+ var DialogTrigger = DialogPrimitive.Trigger;
31
+ var DialogPortal = DialogPrimitive.Portal;
32
+ var DialogClose = DialogPrimitive.Close;
33
+ var DialogOverlay = React.forwardRef(function (_a, ref) {
34
+ var className = _a.className, props = __rest(_a, ["className"]);
35
+ return (_jsx(DialogPrimitive.Overlay, __assign({ ref: ref, className: cn("fixed inset-0 z-50 bg-popup-overlay data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", className) }, props)));
36
+ });
37
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
38
+ var DialogContent = React.forwardRef(function (_a, ref) {
39
+ var className = _a.className, children = _a.children, props = __rest(_a, ["className", "children"]);
40
+ return (_jsxs(DialogPortal, { children: [_jsx(DialogOverlay, {}), _jsxs(DialogPrimitive.Content, __assign({ ref: ref, className: cn("fixed text-textcolor-grey-dark left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-[var(--popup-rounded)]", className) }, props, { children: [children, _jsxs(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [_jsx(XMarkIcon, { className: "h-4 w-4" }), _jsx("span", { className: "sr-only", children: "Close" })] })] }))] }));
41
+ });
42
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
43
+ var DialogHeader = function (_a) {
44
+ var className = _a.className, props = __rest(_a, ["className"]);
45
+ return (_jsx("div", __assign({ className: cn("flex flex-col space-y-2 text-center sm:text-left", className) }, props)));
46
+ };
47
+ DialogHeader.displayName = "DialogHeader";
48
+ var DialogFooter = function (_a) {
49
+ var className = _a.className, props = __rest(_a, ["className"]);
50
+ return (_jsx("div", __assign({ className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className) }, props)));
51
+ };
52
+ DialogFooter.displayName = "DialogFooter";
53
+ var DialogTitle = React.forwardRef(function (_a, ref) {
54
+ var className = _a.className, props = __rest(_a, ["className"]);
55
+ return (_jsx(DialogPrimitive.Title, __assign({ ref: ref, className: cn("typography-h5 tracking-tight", className) }, props)));
56
+ });
57
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
58
+ var DialogDescription = React.forwardRef(function (_a, ref) {
59
+ var className = _a.className, props = __rest(_a, ["className"]);
60
+ return (_jsx(DialogPrimitive.Description, __assign({ ref: ref, className: cn("text-sm", className) }, props)));
61
+ });
62
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
63
+ export { Dialog, DialogPortal, DialogOverlay, DialogClose, DialogTrigger, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription, };
@@ -0,0 +1,52 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "./Dialog";
14
+ import Button from "../Button/Button";
15
+ import { Label } from "../Label/Label";
16
+ import { Input } from "../Input/Input";
17
+ var meta = {
18
+ title: "Components/Dialog",
19
+ component: Dialog,
20
+ tags: ["autodocs"],
21
+ parameters: {
22
+ layout: "fullscreen",
23
+ },
24
+ decorators: [
25
+ function (Story) { return (_jsx("div", { className: "p-5 flex w-full", children: _jsx(Story, {}) })); },
26
+ ],
27
+ };
28
+ export default meta;
29
+ export var Default = {
30
+ args: {
31
+ // label: "Lorem Ipsum",
32
+ // value: "Lorem Ipsum",
33
+ // fullwidth: true,
34
+ },
35
+ render: function (args) {
36
+ console.log("args ", args);
37
+ var props = __assign({}, args);
38
+ return (_jsx("div", { className: "flex flex-row gap-4 w-full", children: _jsxs(Dialog, { children: [_jsx(DialogTrigger, { children: "Open" }), _jsx(DialogContent, { children: _jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Are you absolutely sure?" }), _jsx(DialogDescription, { children: "This action cannot be undone. This will permanently delete your account and remove your data from our servers." })] }) })] }) }));
39
+ },
40
+ };
41
+ export var Demo = {
42
+ args: {
43
+ // label: "Lorem Ipsum",
44
+ // value: "Lorem Ipsum",
45
+ // fullwidth: true,
46
+ },
47
+ render: function (args) {
48
+ console.log("args ", args);
49
+ var props = __assign({}, args);
50
+ return (_jsx("div", { className: "flex flex-row gap-4 w-full", children: _jsxs(Dialog, { children: [_jsx(DialogTrigger, { asChild: true, children: _jsx(Button, { variant: "outline", children: "Edit Profile" }) }), _jsxs(DialogContent, { className: "sm:max-w-[425px]", children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Edit profile" }), _jsx(DialogDescription, { children: "Make changes to your profile here. Click save when you're done." })] }), _jsxs("div", { className: "grid gap-4 py-4", children: [_jsxs("div", { className: "grid grid-cols-4 items-center gap-4", children: [_jsx(Label, { htmlFor: "name", className: "text-right", children: "Name" }), _jsx(Input, { id: "name", defaultValue: "Pedro Duarte", className: "col-span-3" })] }), _jsxs("div", { className: "grid grid-cols-4 items-center gap-4", children: [_jsx(Label, { htmlFor: "username", className: "text-right", children: "Username" }), _jsx(Input, { id: "username", defaultValue: "@peduarte", className: "col-span-3" })] })] }), _jsx(DialogFooter, { children: _jsx(Button, { type: "submit", children: "Save changes" }) })] })] }) }));
51
+ },
52
+ };
@@ -0,0 +1,58 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
24
+ import { useCallback, useEffect, useMemo, useState } from "react";
25
+ import TextInput from "../TextInput/TextInput";
26
+ import { customInputVariant, dropdownIconVariant, iconWrapperVariant, } from "./Dropdown.styles";
27
+ import { ChevronDownIcon } from "@heroicons/react/16/solid";
28
+ var Dropdown = function (_a) {
29
+ var id = _a.id, options = _a.options, value = _a.value, label = _a.label, _b = _a.size, size = _b === void 0 ? "md" : _b, _c = _a.rounded, rounded = _c === void 0 ? "normal" : _c, _d = _a.variant, variant = _d === void 0 ? "outline" : _d, helperText = _a.helperText, errorMessage = _a.errorMessage, _e = _a.fullwidth, fullwidth = _e === void 0 ? true : _e, _f = _a.disabled, disabled = _f === void 0 ? false : _f, _g = _a.error, error = _g === void 0 ? false : _g, _h = _a.filterMode, filterMode = _h === void 0 ? false : _h, _j = _a.required, required = _j === void 0 ? true : _j, onChangeText = _a.onChangeText, onSelect = _a.onSelect, props = __rest(_a, ["id", "options", "value", "label", "size", "rounded", "variant", "helperText", "errorMessage", "fullwidth", "disabled", "error", "filterMode", "required", "onChangeText", "onSelect"]);
30
+ var _id = id || "".concat(label, "-select");
31
+ var _k = useState(false), isFocused = _k[0], setIsFocused = _k[1];
32
+ var _l = useState(null), selectedOption = _l[0], setSelectedOption = _l[1];
33
+ var _m = useState(""), textValue = _m[0], setTextValue = _m[1];
34
+ useEffect(function () {
35
+ if (value && !selectedOption) {
36
+ setSelectedOption(value);
37
+ }
38
+ }, [value, selectedOption]);
39
+ var handleOnChangeText = useCallback(function (event) {
40
+ onChangeText === null || onChangeText === void 0 ? void 0 : onChangeText(event);
41
+ setTextValue(event.target.value);
42
+ }, [onChangeText]);
43
+ var handleOptionClick = useCallback(function (option) {
44
+ setSelectedOption(option);
45
+ setTextValue(option.label);
46
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(option);
47
+ }, [onSelect]);
48
+ var optionsFiltered = useMemo(function () {
49
+ return options.filter(function (option) {
50
+ var _a;
51
+ return !filterMode ||
52
+ ((_a = option.label) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(textValue === null || textValue === void 0 ? void 0 : textValue.toLowerCase()));
53
+ });
54
+ }, [options, filterMode, textValue]);
55
+ var renderOptions = function () { return (_jsxs("ul", { className: "absolute mt-1 w-full bg-white border border-gray-300 rounded-md shadow-md z-10 max-h-60 overflow-y-auto", children: [optionsFiltered.map(function (option) { return (_jsx("li", { onMouseDown: function () { return handleOptionClick(option); }, className: "px-4 py-2 hover:bg-gray-100 cursor-pointer ".concat((selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.value) === option.value ? " bg-gray-200" : ""), children: option.label }, option.value)); }), optionsFiltered.length === 0 && (_jsx("li", { className: "px-4 py-14 text-center text-input-text", children: "Not found" }))] })); };
56
+ return (_jsxs("div", { className: "relative ".concat(fullwidth ? "w-full" : ""), children: [_jsx(TextInput, __assign({}, props, { readOnly: !filterMode, value: textValue, onChange: handleOnChangeText, label: label, placeholder: " ", type: "text", rounded: rounded, variant: variant, helperText: helperText, errorMessage: errorMessage, fullwidth: fullwidth, error: error, required: required, id: _id, disabled: disabled, hasClearIcon: false, size: size, className: customInputVariant({ size: size }), onFocus: function () { return setIsFocused(true); }, onBlur: function () { return setIsFocused(false); }, endIcon: _jsx("div", { className: iconWrapperVariant({ size: size }), children: _jsx(ChevronDownIcon, { className: dropdownIconVariant({ size: size, isFocus: isFocused }) }) }) })), isFocused && renderOptions()] }));
57
+ };
58
+ export default Dropdown;
@@ -10,11 +10,11 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
- import Select from "./Select";
13
+ import Dropdown from "./Dropdown";
14
14
  // More on how to set up stories at: https://storybook.js.org/docs/7.0/react/writing-stories/introduction
15
15
  var meta = {
16
- title: "Components/Select",
17
- component: Select,
16
+ title: "Components/Dropdown",
17
+ component: Dropdown,
18
18
  tags: ["autodocs"],
19
19
  parameters: {
20
20
  // More on how to position stories at: https://storybook.js.org/docs/7.0/react/configure/story-layout
@@ -25,22 +25,19 @@ var meta = {
25
25
  ],
26
26
  };
27
27
  export default meta;
28
- var options = [
29
- { value: "option1", label: "Option 1" },
30
- { value: "option2", label: "Option 2" },
31
- { value: "option3", label: "Option 3" },
32
- { value: "option4", label: "Option 4" },
33
- ];
28
+ var options = new Array(100).fill("").map(function (__, index) { return ({
29
+ value: "option".concat(index + 1),
30
+ label: "Option ".concat(index + 1),
31
+ }); });
34
32
  export var Default = {
35
33
  args: {
36
34
  label: "Choose an option:",
37
- // value: "",
38
35
  fullwidth: true,
39
36
  options: options,
40
37
  },
41
38
  render: function (args) {
42
39
  console.log("args ", args);
43
40
  var props = __assign({}, args);
44
- return (_jsxs("div", { className: "flex flex-row gap-4 w-full", children: [_jsx(Select, __assign({ id: "1", size: "lg", options: options }, args)), _jsx(Select, __assign({ id: "2", size: "md", options: options }, args)), _jsx(Select, __assign({ id: "3", size: "sm", options: options }, args))] }));
41
+ return (_jsxs("div", { className: "flex flex-row gap-4 w-full", children: [_jsx(Dropdown, __assign({ id: "1", size: "lg", options: options }, args)), _jsx(Dropdown, __assign({ id: "2", size: "md", options: options }, args)), _jsx(Dropdown, __assign({ id: "3", size: "sm", options: options }, args))] }));
45
42
  },
46
43
  };
@@ -0,0 +1,47 @@
1
+ import { cva } from "class-variance-authority";
2
+ export var iconWrapperVariant = cva(["absolute inset-y-0 right-0 flex items-center justify-center"], {
3
+ variants: {
4
+ size: {
5
+ sm: "mr-2",
6
+ md: "mr-3",
7
+ lg: "mr-4",
8
+ },
9
+ },
10
+ defaultVariants: {
11
+ size: "md",
12
+ },
13
+ });
14
+ export var dropdownIconVariant = cva(["transition-all"], {
15
+ variants: {
16
+ size: {
17
+ sm: "size-[14px]",
18
+ md: "size-5",
19
+ lg: "size-6",
20
+ },
21
+ disabled: {
22
+ true: "fill-input-text-disabled",
23
+ false: "fill-input-text",
24
+ },
25
+ isFocus: {
26
+ true: "fill-input-text-active rotate-180",
27
+ false: "",
28
+ },
29
+ },
30
+ defaultVariants: {
31
+ size: "md",
32
+ disabled: false,
33
+ isFocus: false,
34
+ },
35
+ });
36
+ export var customInputVariant = cva([], {
37
+ variants: {
38
+ size: {
39
+ sm: "pe-[30px]",
40
+ md: "pe-[40px]",
41
+ lg: "pe-[48px]",
42
+ },
43
+ },
44
+ defaultVariants: {
45
+ size: "md",
46
+ },
47
+ });