@phsa.tec/design-system-react 0.1.6 → 0.1.8

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 (213) hide show
  1. package/README.md +390 -209
  2. package/dist/index.d.mts +485 -0
  3. package/dist/index.d.ts +485 -0
  4. package/dist/index.js +4259 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/index.mjs +4186 -0
  7. package/dist/index.mjs.map +1 -0
  8. package/package.json +46 -6
  9. package/.eslintrc.json +0 -7
  10. package/.github/workflows/deploy-storybook.yml +0 -75
  11. package/.storybook/main.ts +0 -16
  12. package/.storybook/preview.ts +0 -15
  13. package/components.json +0 -21
  14. package/jest.config.ts +0 -25
  15. package/next.config.ts +0 -7
  16. package/postcss.config.mjs +0 -8
  17. package/public/file.svg +0 -1
  18. package/public/globe.svg +0 -1
  19. package/public/next.svg +0 -1
  20. package/public/vercel.svg +0 -1
  21. package/public/window.svg +0 -1
  22. package/src/app/columns.tsx +0 -178
  23. package/src/app/favicon.ico +0 -0
  24. package/src/app/fonts/GeistMonoVF.woff +0 -0
  25. package/src/app/fonts/GeistVF.woff +0 -0
  26. package/src/app/globals.css +0 -94
  27. package/src/app/layout.tsx +0 -35
  28. package/src/app/page.tsx +0 -7
  29. package/src/components/actions/AlertDialog/AlertDialog.tsx +0 -45
  30. package/src/components/actions/AlertDialog/alert-dialog.stories.tsx +0 -21
  31. package/src/components/actions/AlertDialog/index.ts +0 -1
  32. package/src/components/actions/Button/Button.stories.ts +0 -38
  33. package/src/components/actions/Button/Button.tsx +0 -23
  34. package/src/components/actions/Button/index.ts +0 -1
  35. package/src/components/actions/Collapsible/index.ts +0 -1
  36. package/src/components/actions/Dialog/Dialog.stories.tsx +0 -70
  37. package/src/components/actions/Dialog/Dialog.tsx +0 -87
  38. package/src/components/actions/Dialog/components/DialogWithActions/index.tsx +0 -40
  39. package/src/components/actions/Dialog/index.ts +0 -1
  40. package/src/components/actions/Steps/Steps.stories.tsx +0 -25
  41. package/src/components/actions/Steps/Steps.tsx +0 -51
  42. package/src/components/actions/Steps/index.ts +0 -1
  43. package/src/components/actions/index.ts +0 -5
  44. package/src/components/dataDisplay/Avatar/Avatar.stories.tsx +0 -22
  45. package/src/components/dataDisplay/Avatar/Avatar.tsx +0 -21
  46. package/src/components/dataDisplay/Avatar/index.ts +0 -2
  47. package/src/components/dataDisplay/Badge/Badge.stories.tsx +0 -36
  48. package/src/components/dataDisplay/Badge/index.ts +0 -1
  49. package/src/components/dataDisplay/Card/Card.stories.tsx +0 -24
  50. package/src/components/dataDisplay/Card/Card.tsx +0 -34
  51. package/src/components/dataDisplay/Card/index.ts +0 -1
  52. package/src/components/dataDisplay/DataPairList/DataPairList.tsx +0 -56
  53. package/src/components/dataDisplay/DataPairList/data-pair-list.stories.tsx +0 -87
  54. package/src/components/dataDisplay/DataPairList/index.ts +0 -2
  55. package/src/components/dataDisplay/DataPairList/types.ts +0 -10
  56. package/src/components/dataDisplay/DropDownMenu/index.ts +0 -1
  57. package/src/components/dataDisplay/ErrorMessage/ErrorMessage.tsx +0 -6
  58. package/src/components/dataDisplay/ErrorMessage/index.ts +0 -1
  59. package/src/components/dataDisplay/Icon/Icon.stories.tsx +0 -21
  60. package/src/components/dataDisplay/Icon/Icon.tsx +0 -47
  61. package/src/components/dataDisplay/Icon/index.ts +0 -1
  62. package/src/components/dataDisplay/Icon/types.ts +0 -6
  63. package/src/components/dataDisplay/Label/Label.stories.tsx +0 -21
  64. package/src/components/dataDisplay/Label/Label.tsx +0 -10
  65. package/src/components/dataDisplay/Label/index.ts +0 -1
  66. package/src/components/dataDisplay/Table/Table.tsx +0 -173
  67. package/src/components/dataDisplay/Table/columns.tsx +0 -223
  68. package/src/components/dataDisplay/Table/components/DynamicTable/data-table-column-header.tsx +0 -72
  69. package/src/components/dataDisplay/Table/components/DynamicTable/data-table-pagination.tsx +0 -91
  70. package/src/components/dataDisplay/Table/components/DynamicTable/data-table-toolbar.tsx +0 -17
  71. package/src/components/dataDisplay/Table/components/DynamicTable/data-table-view-options.tsx +0 -58
  72. package/src/components/dataDisplay/Table/components/DynamicTable/data-table.stories.tsx +0 -118
  73. package/src/components/dataDisplay/Table/components/DynamicTable/index.tsx +0 -136
  74. package/src/components/dataDisplay/Table/components/DynamicTable/types.ts +0 -43
  75. package/src/components/dataDisplay/Table/custom/CustomTable/data-table-column-header.tsx +0 -71
  76. package/src/components/dataDisplay/Table/custom/CustomTable/data-table-faceted-filter.tsx +0 -147
  77. package/src/components/dataDisplay/Table/custom/CustomTable/data-table-pagination.tsx +0 -97
  78. package/src/components/dataDisplay/Table/custom/CustomTable/data-table-row-actions.tsx +0 -78
  79. package/src/components/dataDisplay/Table/custom/CustomTable/data-table-toolbar.tsx +0 -60
  80. package/src/components/dataDisplay/Table/custom/CustomTable/data-table-view-options.tsx +0 -59
  81. package/src/components/dataDisplay/Table/custom/CustomTable/data-table.tsx +0 -145
  82. package/src/components/dataDisplay/Table/custom/CustomTable/data.ts +0 -71
  83. package/src/components/dataDisplay/Table/custom/CustomTable/index.tsx +0 -34
  84. package/src/components/dataDisplay/Table/custom/CustomTable/schema.ts +0 -11
  85. package/src/components/dataDisplay/Table/index.ts +0 -2
  86. package/src/components/dataDisplay/Table/table.stories.tsx +0 -147
  87. package/src/components/dataDisplay/Table/types.ts +0 -15
  88. package/src/components/dataDisplay/Tabs/Tabs.stories.tsx +0 -34
  89. package/src/components/dataDisplay/Tabs/Tabs.tsx +0 -53
  90. package/src/components/dataDisplay/Tabs/index.ts +0 -1
  91. package/src/components/dataDisplay/Text/Text.stories.tsx +0 -66
  92. package/src/components/dataDisplay/Text/Text.tsx +0 -56
  93. package/src/components/dataDisplay/Text/index.ts +0 -1
  94. package/src/components/dataDisplay/index.ts +0 -8
  95. package/src/components/dataInput/Input/components/Input/Input.stories.tsx +0 -99
  96. package/src/components/dataInput/Input/components/Input/InputBase.tsx +0 -50
  97. package/src/components/dataInput/Input/components/Input/__tests__/input.test.tsx +0 -38
  98. package/src/components/dataInput/Input/components/Input/index.tsx +0 -48
  99. package/src/components/dataInput/Input/components/Input/types.ts +0 -15
  100. package/src/components/dataInput/Input/components/InputBase/index.tsx +0 -31
  101. package/src/components/dataInput/Input/components/MaskInput/__tests__/mask-input.test.tsx +0 -77
  102. package/src/components/dataInput/Input/components/MaskInput/index.ts +0 -1
  103. package/src/components/dataInput/Input/components/MaskInput/mask-input.stories.tsx +0 -85
  104. package/src/components/dataInput/Input/components/MaskInput/mask-input.tsx +0 -73
  105. package/src/components/dataInput/Input/components/MultipleInput/MultipleInput.tsx +0 -105
  106. package/src/components/dataInput/Input/components/MultipleInput/MultipleInputBase.tsx +0 -100
  107. package/src/components/dataInput/Input/components/MultipleInput/MultipleMaskInput.tsx +0 -35
  108. package/src/components/dataInput/Input/components/MultipleInput/MultipleNumberInput.tsx +0 -35
  109. package/src/components/dataInput/Input/components/MultipleInput/__tests__/multiple-input.test.tsx +0 -152
  110. package/src/components/dataInput/Input/components/MultipleInput/index.ts +0 -2
  111. package/src/components/dataInput/Input/components/MultipleInput/multiple-input.stories.tsx +0 -96
  112. package/src/components/dataInput/Input/components/NumberInput/__tests__/number-input.test.tsx +0 -175
  113. package/src/components/dataInput/Input/components/NumberInput/index.ts +0 -1
  114. package/src/components/dataInput/Input/components/NumberInput/number-input.stories.tsx +0 -76
  115. package/src/components/dataInput/Input/components/NumberInput/number-input.tsx +0 -70
  116. package/src/components/dataInput/Input/index.ts +0 -4
  117. package/src/components/dataInput/Select/MultiSelect/MultiSelect.stories.tsx +0 -119
  118. package/src/components/dataInput/Select/MultiSelect/MultiSelectBase.tsx +0 -135
  119. package/src/components/dataInput/Select/MultiSelect/index.tsx +0 -75
  120. package/src/components/dataInput/Select/Select.stories.tsx +0 -61
  121. package/src/components/dataInput/Select/Select.tsx +0 -73
  122. package/src/components/dataInput/Select/SelectBase.tsx +0 -58
  123. package/src/components/dataInput/Select/index.ts +0 -2
  124. package/src/components/dataInput/Switch/Switch.stories.tsx +0 -75
  125. package/src/components/dataInput/Switch/Switch.tsx +0 -52
  126. package/src/components/dataInput/Switch/index.ts +0 -1
  127. package/src/components/dataInput/checkbox/Checkbox.tsx +0 -57
  128. package/src/components/dataInput/checkbox/Checkbox_old.tsx +0 -58
  129. package/src/components/dataInput/checkbox/Checkout.stories.tsx +0 -62
  130. package/src/components/dataInput/checkbox/index.ts +0 -1
  131. package/src/components/dataInput/form/Form.tsx +0 -47
  132. package/src/components/dataInput/form/index.ts +0 -3
  133. package/src/components/dataInput/index.ts +0 -5
  134. package/src/components/feedback/ErrorLabel/index.tsx +0 -24
  135. package/src/components/feedback/Spinner/index.ts +0 -1
  136. package/src/components/feedback/Toast/Toast.stories.tsx +0 -45
  137. package/src/components/feedback/Toast/index.ts +0 -2
  138. package/src/components/feedback/index.ts +0 -2
  139. package/src/components/index.ts +0 -6
  140. package/src/components/layout/Crud/components/Table/index.tsx +0 -183
  141. package/src/components/layout/Crud/components/Table/types.ts +0 -15
  142. package/src/components/layout/Crud/crud.stories.tsx +0 -317
  143. package/src/components/layout/Crud/hook/useCrudLayout/index.tsx +0 -94
  144. package/src/components/layout/Crud/hook/useRequest/index.tsx +0 -156
  145. package/src/components/layout/Crud/index.tsx +0 -295
  146. package/src/components/layout/Crud/store/CrudLayoutStore.ts +0 -75
  147. package/src/components/layout/Crud/types.ts +0 -14
  148. package/src/components/layout/Drawer/CustomDrawer/index.tsx +0 -33
  149. package/src/components/layout/Drawer/Drawer.stories.tsx +0 -80
  150. package/src/components/layout/Drawer/index.ts +0 -2
  151. package/src/components/layout/PageLayout/PageLayout.stories.tsx +0 -42
  152. package/src/components/layout/PageLayout/index.tsx +0 -28
  153. package/src/components/layout/Separator/index.ts +0 -1
  154. package/src/components/layout/Sheet/Sheet.stories.tsx +0 -28
  155. package/src/components/layout/Sheet/Sheet.tsx +0 -22
  156. package/src/components/layout/Sheet/index.ts +0 -1
  157. package/src/components/layout/Sidebar/Sidebar.stories.tsx +0 -116
  158. package/src/components/layout/Sidebar/Sidebar.tsx +0 -50
  159. package/src/components/layout/Sidebar/components/app-sidebar.tsx +0 -203
  160. package/src/components/layout/Sidebar/components/footer-sidebar.tsx +0 -17
  161. package/src/components/layout/Sidebar/components/header-sidebar.tsx +0 -90
  162. package/src/components/layout/Sidebar/components/menus.tsx +0 -55
  163. package/src/components/layout/Sidebar/components/nav-projects.tsx +0 -88
  164. package/src/components/layout/Sidebar/components/nav-user.tsx +0 -114
  165. package/src/components/layout/Sidebar/components/team-switcher.tsx +0 -85
  166. package/src/components/layout/Sidebar/index.ts +0 -2
  167. package/src/components/layout/Sidebar/provider/index.tsx +0 -51
  168. package/src/components/layout/Tabs/Tabs.tsx +0 -51
  169. package/src/components/layout/Tabs/index.ts +0 -1
  170. package/src/components/layout/Tabs/tabs.stories.tsx +0 -57
  171. package/src/components/layout/index.ts +0 -6
  172. package/src/components/navigation/Breadcrumbs/Breadcrumbs.tsx +0 -66
  173. package/src/components/navigation/Breadcrumbs/index.ts +0 -2
  174. package/src/components/navigation/index.ts +0 -1
  175. package/src/components/ui/alert-dialog.tsx +0 -141
  176. package/src/components/ui/alert.tsx +0 -59
  177. package/src/components/ui/avatar.tsx +0 -50
  178. package/src/components/ui/badge.tsx +0 -40
  179. package/src/components/ui/breadcrumb.tsx +0 -115
  180. package/src/components/ui/button.tsx +0 -57
  181. package/src/components/ui/card.tsx +0 -83
  182. package/src/components/ui/checkbox.tsx +0 -34
  183. package/src/components/ui/collapsible.tsx +0 -11
  184. package/src/components/ui/command.tsx +0 -153
  185. package/src/components/ui/dialog.tsx +0 -124
  186. package/src/components/ui/drawer.tsx +0 -117
  187. package/src/components/ui/dropdown-menu.tsx +0 -201
  188. package/src/components/ui/form.tsx +0 -179
  189. package/src/components/ui/input.tsx +0 -24
  190. package/src/components/ui/label.tsx +0 -30
  191. package/src/components/ui/popover.tsx +0 -33
  192. package/src/components/ui/select.tsx +0 -161
  193. package/src/components/ui/separator.tsx +0 -31
  194. package/src/components/ui/sheet.tsx +0 -140
  195. package/src/components/ui/sidebar.tsx +0 -763
  196. package/src/components/ui/skeleton.tsx +0 -15
  197. package/src/components/ui/sonner.tsx +0 -31
  198. package/src/components/ui/spinner.tsx +0 -54
  199. package/src/components/ui/switch.tsx +0 -33
  200. package/src/components/ui/table.tsx +0 -120
  201. package/src/components/ui/tabs.tsx +0 -55
  202. package/src/components/ui/toast.tsx +0 -130
  203. package/src/components/ui/toaster.tsx +0 -35
  204. package/src/components/ui/tooltip.tsx +0 -32
  205. package/src/hooks/use-conditional-controller.tsx +0 -35
  206. package/src/hooks/use-mask.tsx +0 -116
  207. package/src/hooks/use-mobile.tsx +0 -19
  208. package/src/hooks/use-toast.ts +0 -191
  209. package/src/index.ts +0 -1
  210. package/src/introduction.mdx +0 -132
  211. package/src/lib/utils.ts +0 -6
  212. package/tailwind.config.ts +0 -83
  213. package/tsconfig.json +0 -27
@@ -1,21 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/nextjs";
2
- import { AlertDialog } from "./AlertDialog";
3
- import { Button } from "../../ui/button";
4
-
5
- const meta: Meta<typeof AlertDialog> = {
6
- title: "Action/AlertDialog",
7
- component: AlertDialog,
8
- tags: ["autodocs"],
9
- };
10
-
11
- export default meta;
12
- type Story = StoryObj<typeof AlertDialog>;
13
-
14
- export const Default: Story = {
15
- args: {
16
- title: "Are you absolutely sure?",
17
- description:
18
- "This action cannot be undone. This will permanently delete your account and remove your data from our servers.",
19
- children: <Button variant="destructive">Delete Account</Button>,
20
- },
21
- };
@@ -1 +0,0 @@
1
- export * from "./AlertDialog";
@@ -1,38 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/nextjs";
2
- import { fn } from "storybook/test";
3
-
4
- import { Button } from "./index";
5
-
6
- const meta = {
7
- title: "Action/Button",
8
- component: Button,
9
- parameters: {
10
- layout: "centered",
11
- },
12
- argTypes: {
13
- variant: {
14
- options: [
15
- "primary",
16
- "secondary",
17
- "destructive",
18
- "outline",
19
- "ghost",
20
- "link",
21
- ],
22
- control: {
23
- type: "select",
24
- },
25
- },
26
- },
27
- tags: ["autodocs"],
28
- args: { onClick: fn() },
29
- } satisfies Meta<typeof Button>;
30
-
31
- export default meta;
32
- type Story = StoryObj<typeof meta>;
33
-
34
- export const Default: Story = {
35
- args: {
36
- children: "Button",
37
- },
38
- };
@@ -1,23 +0,0 @@
1
- import { forwardRef } from "react";
2
- import { Spinner } from "../../../components/feedback";
3
- import {
4
- Button as UIButton,
5
- ButtonProps as UIButtonProps,
6
- } from "../../ui/button";
7
-
8
- export type ButtonProps = UIButtonProps & {
9
- loading?: boolean;
10
- };
11
-
12
- export const Button = forwardRef<HTMLButtonElement, ButtonProps>(
13
- ({ children, disabled, loading, ...rest }, ref) => {
14
- return (
15
- <UIButton {...rest} disabled={disabled || loading} ref={ref}>
16
- {loading && <Spinner className="fill-white" />}
17
- {children}
18
- </UIButton>
19
- );
20
- }
21
- );
22
-
23
- Button.displayName = "Button";
@@ -1 +0,0 @@
1
- export * from "./Button";
@@ -1 +0,0 @@
1
- export * from "../../ui/collapsible";
@@ -1,70 +0,0 @@
1
- import { useState } from "react";
2
- import { DialogWithActions as DialogWithActionsComponent } from "./components/DialogWithActions";
3
- import { Dialog } from "./Dialog";
4
- import type { Meta, StoryObj } from "@storybook/nextjs";
5
- import { Label } from "@/components/dataDisplay/Label";
6
- import { Input } from "@/components/dataInput";
7
-
8
- const meta = {
9
- title: "Action/Dialog",
10
- component: Dialog,
11
- parameters: {
12
- layout: "centered",
13
- },
14
-
15
- tags: ["autodocs"],
16
- } satisfies Meta<typeof Dialog>;
17
-
18
- export default meta;
19
- type Story = StoryObj<typeof meta>;
20
-
21
- export const Default: Story = {
22
- args: {
23
- title: "Dialog Title",
24
- description: "Dialog Description",
25
- footer: () => <button>Footer Button</button>,
26
- },
27
- render: (props) => {
28
- const [open, setOpen] = useState<boolean>(false);
29
- return (
30
- <div>
31
- <button onClick={() => setOpen(true)}>Open Dialog</button>
32
- <Dialog {...props} open={open} onOpenChange={setOpen}>
33
- This action cannot be undone. This will permanently delete your
34
- account and remove your data from our servers.
35
- </Dialog>
36
- </div>
37
- );
38
- },
39
- };
40
-
41
- export const DialogWithActions: Story = {
42
- render: (args) => {
43
- return (
44
- <DialogWithActionsComponent {...args}>
45
- <div className="grid gap-4 py-4">
46
- <div className="grid grid-cols-4 items-center gap-4">
47
- <Label htmlFor="name" className="text-right">
48
- Name
49
- </Label>
50
- <Input
51
- id="name"
52
- defaultValue="Pedro Duarte"
53
- className="col-span-3"
54
- />
55
- </div>
56
- <div className="grid grid-cols-4 items-center gap-4">
57
- <Label htmlFor="username" className="text-right">
58
- Username
59
- </Label>
60
- <Input
61
- id="username"
62
- defaultValue="@peduarte"
63
- className="col-span-3"
64
- />
65
- </div>
66
- </div>
67
- </DialogWithActionsComponent>
68
- );
69
- },
70
- };
@@ -1,87 +0,0 @@
1
- "use client";
2
- import {
3
- Dialog as DialogComponent,
4
- DialogContent,
5
- DialogDescription,
6
- DialogFooter,
7
- DialogHeader,
8
- DialogTitle,
9
- DialogProps as DialogComponentProps,
10
- DialogClose,
11
- } from "../../../components/ui/dialog";
12
- import { PropsWithChildren, useRef } from "react";
13
- import { Button } from "../Button";
14
-
15
- export type DialogProps = DialogComponentProps &
16
- PropsWithChildren & {
17
- className?: string;
18
- title?: string;
19
- description?: string;
20
- footer?: () => React.ReactNode;
21
- };
22
-
23
- export function Dialog({
24
- title,
25
- description,
26
- className,
27
- children,
28
- footer = () => null,
29
- ...props
30
- }: DialogProps) {
31
- return (
32
- <DialogComponent {...props}>
33
- <DialogContent className={className}>
34
- <DialogHeader>
35
- {title && <DialogTitle>{title}</DialogTitle>}
36
- {description && <DialogDescription>{description}</DialogDescription>}
37
- </DialogHeader>
38
- {children}
39
- {footer && <DialogFooter>{footer()}</DialogFooter>}
40
- </DialogContent>
41
- </DialogComponent>
42
- );
43
- }
44
-
45
- export type DialogWithFormProps = DialogProps & {
46
- onSubmit: () => void;
47
- };
48
-
49
- export const DialogWithForm = ({
50
- title,
51
- description,
52
- className,
53
- children,
54
- footer = () => null,
55
- onSubmit = () => {},
56
- ...props
57
- }: DialogWithFormProps) => {
58
- const dialogRef = useRef<HTMLDivElement>(null);
59
-
60
- return (
61
- <DialogComponent {...props}>
62
- <DialogContent className={className} ref={dialogRef}>
63
- <form onSubmit={onSubmit} className="flex flex-col gap-4">
64
- <DialogHeader>
65
- {title && <DialogTitle>{title}</DialogTitle>}
66
- {description && (
67
- <DialogDescription>{description}</DialogDescription>
68
- )}
69
- </DialogHeader>
70
- {children}
71
- {footer && (
72
- <DialogFooter>
73
- <div className="flex justify-between w-full">
74
- <DialogClose asChild>
75
- <Button type="button" variant="secondary">
76
- Fechar
77
- </Button>
78
- </DialogClose>
79
- {footer()}
80
- </div>
81
- </DialogFooter>
82
- )}
83
- </form>
84
- </DialogContent>
85
- </DialogComponent>
86
- );
87
- };
@@ -1,40 +0,0 @@
1
- import React from "react";
2
- import { Button } from "../../../../../components/ui/button";
3
- import {
4
- Dialog,
5
- DialogContent,
6
- DialogDescription,
7
- DialogFooter,
8
- DialogHeader,
9
- DialogTitle,
10
- DialogTrigger,
11
- } from "../../../../../components/ui/dialog";
12
-
13
- type DialogWithActionsProps = React.PropsWithChildren & {
14
- title?: string;
15
- description?: string;
16
- };
17
-
18
- export function DialogWithActions({
19
- children,
20
- title = "Edit profile",
21
- description = "Make changes to your profile here. Click save when you're done.",
22
- }: DialogWithActionsProps) {
23
- return (
24
- <Dialog>
25
- <DialogTrigger asChild>
26
- <Button variant="outline">Edit Profile</Button>
27
- </DialogTrigger>
28
- <DialogContent className="sm:max-w-[425px]">
29
- <DialogHeader>
30
- <DialogTitle>{title}</DialogTitle>
31
- <DialogDescription>{description}</DialogDescription>
32
- </DialogHeader>
33
- {children}
34
- <DialogFooter>
35
- <Button type="submit">Save changes</Button>
36
- </DialogFooter>
37
- </DialogContent>
38
- </Dialog>
39
- );
40
- }
@@ -1 +0,0 @@
1
- export * from "./Dialog";
@@ -1,25 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/nextjs";
2
- import { fn } from "storybook/test";
3
-
4
- import { Steps } from "./Steps";
5
-
6
- const meta = {
7
- title: "Action/Steps",
8
- component: Steps,
9
- parameters: {
10
- layout: "centered",
11
- },
12
- argTypes: {},
13
- tags: ["autodocs"],
14
- args: { onClick: fn() },
15
- } satisfies Meta<typeof Steps>;
16
-
17
- export default meta;
18
- type Story = StoryObj<typeof meta>;
19
-
20
- export const Default: Story = {
21
- args: {
22
- data: [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }, { id: 5 }, { id: 6 }],
23
- value: 3,
24
- },
25
- };
@@ -1,51 +0,0 @@
1
- import { useCallback } from "react";
2
- import { Button } from "../Button";
3
- import { Icon } from "../../../components/dataDisplay";
4
- import { Separator } from "../../../components/layout";
5
- import { cn } from "../../../lib/utils";
6
-
7
- type StepsProps = {
8
- data: {
9
- label?: string;
10
- id: number;
11
- }[];
12
- onClick?: (id: number) => void;
13
- value?: number;
14
- };
15
- export const Steps = ({ data, onClick = () => {}, value }: StepsProps) => {
16
- const renderSteps = useCallback(() => {
17
- return data.map(({ label, id }, index) => {
18
- const isLast = index === data.length - 1;
19
- const isActive = typeof value === "number" && id <= value;
20
-
21
- return (
22
- <div key={index} className={cn(!isLast && "w-full flex items-center")}>
23
- <div>
24
- <Button
25
- onClick={() => onClick && onClick(id)}
26
- variant={isActive ? "default" : "outline"}
27
- size="icon"
28
- className="rounded-full"
29
- >
30
- {isActive ? <Icon name="MdCheck" /> : index + 1}
31
- </Button>
32
- </div>
33
- {label && <p className="absolute">{label}</p>}
34
- {!isLast && (
35
- <Separator
36
- orientation="horizontal"
37
- className={cn(isActive && "bg-primary h-[2px]")}
38
- />
39
- )}
40
- {/* {
41
- <Separator
42
- orientation="horizontal"
43
- className={cn("bg-primary h-[2px]")}
44
- />
45
- } */}
46
- </div>
47
- );
48
- });
49
- }, [data, onClick, value]);
50
- return <div className="flex w-full">{renderSteps()}</div>;
51
- };
@@ -1 +0,0 @@
1
- export * from "./Steps";
@@ -1,5 +0,0 @@
1
- export * from "./Button";
2
- export * from "./Dialog";
3
- export * from "./Collapsible";
4
- export * from "./Steps";
5
- export * from "./AlertDialog";
@@ -1,22 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/nextjs";
2
- import { Avatar } from "./Avatar";
3
-
4
- const meta = {
5
- title: "DataDisplay/Avatar",
6
- component: Avatar,
7
- parameters: {
8
- layout: "centered",
9
- },
10
- tags: ["autodocs"],
11
- } satisfies Meta<typeof Avatar>;
12
-
13
- export default meta;
14
- type Story = StoryObj<typeof meta>;
15
-
16
- export const Default: Story = {
17
- args: {
18
- src: "https://github.com/shadcn.png",
19
- alt: "Avatar",
20
- avatarFallback: "A",
21
- },
22
- };
@@ -1,21 +0,0 @@
1
- import {
2
- Avatar as AvatarComponent,
3
- AvatarFallback,
4
- AvatarImage,
5
- } from "../../../components/ui/avatar";
6
-
7
- type AvatarProps = {
8
- src: string;
9
- alt: string;
10
- className?: string;
11
- avatarFallback: string;
12
- };
13
-
14
- export function Avatar({ src, alt, className, avatarFallback }: AvatarProps) {
15
- return (
16
- <AvatarComponent>
17
- <AvatarImage src={src} alt={alt} className={className} />
18
- <AvatarFallback>{avatarFallback}</AvatarFallback>
19
- </AvatarComponent>
20
- );
21
- }
@@ -1,2 +0,0 @@
1
- // export * from "./Avatar";
2
- export * from "../../ui/avatar";
@@ -1,36 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/nextjs";
2
- import { Badge } from "./index";
3
-
4
- const meta = {
5
- title: "DataDisplay/Badge",
6
- component: Badge,
7
- parameters: {
8
- layout: "centered",
9
- },
10
- tags: ["autodocs"],
11
- } satisfies Meta<typeof Badge>;
12
-
13
- export default meta;
14
- type Story = StoryObj<typeof meta>;
15
-
16
- export const Default: Story = {
17
- argTypes: {
18
- variant: {
19
- control: {
20
- type: "select",
21
- },
22
- options: [
23
- "default",
24
- "primary",
25
- "secondary",
26
- "success",
27
- "warning",
28
- "destructive",
29
- ],
30
- },
31
- },
32
- args: {
33
- children: "Badge",
34
- variant: "default",
35
- },
36
- };
@@ -1 +0,0 @@
1
- export * from "../../ui/badge";
@@ -1,24 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/nextjs";
2
-
3
- import { Card } from "./index";
4
- import { Button } from "../../../components/actions";
5
-
6
- const meta = {
7
- title: "DataDisplay/Card",
8
- component: Card,
9
- parameters: {
10
- layout: "centered",
11
- },
12
- tags: ["autodocs"],
13
- } satisfies Meta<typeof Card>;
14
-
15
- export default meta;
16
- type Story = StoryObj<typeof meta>;
17
-
18
- export const Default: Story = {
19
- args: {
20
- title: "Card title",
21
- description: "Card description",
22
- footer: () => <Button>Card footer</Button>,
23
- },
24
- };
@@ -1,34 +0,0 @@
1
- import React from "react";
2
- import {
3
- Card as CardComponent,
4
- CardContent,
5
- CardDescription,
6
- CardFooter,
7
- CardHeader,
8
- CardTitle,
9
- } from "../../../components/ui/card";
10
-
11
- export type CardProps = {
12
- title?: string;
13
- description?: string;
14
- footer?: () => React.ReactNode | JSX.Element;
15
- children?: React.ReactNode | JSX.Element;
16
- };
17
-
18
- export const Card = ({
19
- title,
20
- children,
21
- description,
22
- footer = () => <></>,
23
- }: CardProps) => {
24
- return (
25
- <CardComponent>
26
- <CardHeader>
27
- {title && <CardTitle>{title}</CardTitle>}
28
- {description && <CardDescription>{description}</CardDescription>}
29
- </CardHeader>
30
- {children && <CardContent>{children}</CardContent>}
31
- {footer && <CardFooter>{footer()}</CardFooter>}
32
- </CardComponent>
33
- );
34
- };
@@ -1 +0,0 @@
1
- export * from "./Card";
@@ -1,56 +0,0 @@
1
- import React from "react";
2
- import { isEmpty } from "lodash";
3
- import { DataPairListProps } from "./types";
4
- import { cn } from "../../../lib/utils";
5
- import { Text } from "../Text";
6
-
7
- export const DataPairList = ({
8
- title,
9
- data,
10
- labels,
11
- className,
12
- infoDirection = "horizontal",
13
- direction = "vertical",
14
- withBorder = false,
15
- header = <></>,
16
- }: DataPairListProps) => {
17
- if (isEmpty(data)) return null;
18
-
19
- return (
20
- <div
21
- className={cn(
22
- "flex flex-col gap-2 rounded-md p-4",
23
- withBorder && "border border-muted",
24
- className
25
- )}
26
- >
27
- <div className="flex gap-3">
28
- {title && <Text variant="title">{title}</Text>}
29
- {header}
30
- </div>
31
- <div
32
- className={cn(
33
- "grid grid-cols-1 mt-5",
34
- direction === "vertical"
35
- ? "gap-3"
36
- : "sm:grid-cols-2 md:grid-cols-4 gap-10"
37
- )}
38
- >
39
- {Object.entries(data || {}).map(([key, value], index) => (
40
- <div
41
- className={cn(
42
- "flex gap-3",
43
- infoDirection === "horizontal" ? "flex-row" : "flex-col"
44
- )}
45
- key={index}
46
- >
47
- <Text className="uppercase text-muted-foreground font-bold">
48
- {labels?.[key] || key}:
49
- </Text>
50
- <Text>{value}</Text>
51
- </div>
52
- ))}
53
- </div>
54
- </div>
55
- );
56
- };
@@ -1,87 +0,0 @@
1
- import type { Meta, StoryObj } from "@storybook/nextjs";
2
- import { DataPairList } from ".";
3
- import { Button } from "@/components/actions";
4
-
5
- const meta = {
6
- title: "DataDisplay/DataPairList",
7
- component: DataPairList,
8
- parameters: {
9
- layout: "centered",
10
- },
11
- tags: ["autodocs"],
12
- } satisfies Meta<typeof DataPairList>;
13
-
14
- export default meta;
15
- type Story = StoryObj<typeof meta>;
16
-
17
- export const Default: Story = {
18
- args: {
19
- title: "Informações Pessoais",
20
- data: {
21
- name: "John Doe",
22
- age: 30,
23
- email: "john@example.com",
24
- phone: "(11) 99999-9999",
25
- },
26
- },
27
- };
28
-
29
- export const WithLabels: Story = {
30
- args: {
31
- title: "Informações Pessoais",
32
- data: {
33
- name: "John Doe",
34
- age: 30,
35
- email: "john@example.com",
36
- phone: "(11) 99999-9999",
37
- },
38
- labels: {
39
- name: "Nome",
40
- age: "Idade",
41
- email: "E-mail",
42
- phone: "Telefone",
43
- },
44
- },
45
- };
46
-
47
- export const WithoutTitle: Story = {
48
- args: {
49
- data: {
50
- name: "John Doe",
51
- age: 30,
52
- email: "john@example.com",
53
- phone: "(11) 99999-9999",
54
- },
55
- },
56
- };
57
-
58
- export const EmptyData: Story = {
59
- args: {
60
- title: "Sem Dados",
61
- data: {},
62
- },
63
- };
64
-
65
- export const WithHeader: Story = {
66
- args: {
67
- title: "Com botão de ação",
68
- data: {
69
- name: "John Doe",
70
- age: 30,
71
- email: "john@example.com",
72
- phone: "(11) 99999-9999",
73
- },
74
- header: <Button>Editar</Button>,
75
- },
76
- };
77
-
78
- export const WithClassName: Story = {
79
- args: {
80
- title: "Com Classe Customizada",
81
- data: {
82
- name: "John Doe",
83
- age: 30,
84
- },
85
- className: "bg-slate-100",
86
- },
87
- };
@@ -1,2 +0,0 @@
1
- export * from "./DataPairList";
2
- export type { DataPairListProps } from "./types";