@shepai/cli 1.2.0 → 1.3.1

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 (208) hide show
  1. package/README.md +29 -12
  2. package/dist/eslint.config.d.mts +3 -0
  3. package/dist/eslint.config.d.mts.map +1 -0
  4. package/dist/eslint.config.mjs +188 -0
  5. package/dist/src/application/ports/output/index.d.ts +8 -0
  6. package/dist/src/application/ports/output/index.d.ts.map +1 -0
  7. package/dist/src/application/ports/output/index.js +7 -0
  8. package/dist/src/application/ports/output/settings.repository.interface.d.ts +43 -0
  9. package/dist/src/application/ports/output/settings.repository.interface.d.ts.map +1 -0
  10. package/dist/src/application/ports/output/settings.repository.interface.js +11 -0
  11. package/dist/src/application/use-cases/settings/index.d.ts +9 -0
  12. package/dist/src/application/use-cases/settings/index.d.ts.map +1 -0
  13. package/dist/src/application/use-cases/settings/index.js +8 -0
  14. package/dist/src/application/use-cases/settings/initialize-settings.use-case.d.ts +33 -0
  15. package/dist/src/application/use-cases/settings/initialize-settings.use-case.d.ts.map +1 -0
  16. package/dist/src/application/use-cases/settings/initialize-settings.use-case.js +63 -0
  17. package/dist/src/application/use-cases/settings/load-settings.use-case.d.ts +33 -0
  18. package/dist/src/application/use-cases/settings/load-settings.use-case.d.ts.map +1 -0
  19. package/dist/src/application/use-cases/settings/load-settings.use-case.js +57 -0
  20. package/dist/src/application/use-cases/settings/update-settings.use-case.d.ts +33 -0
  21. package/dist/src/application/use-cases/settings/update-settings.use-case.d.ts.map +1 -0
  22. package/dist/src/application/use-cases/settings/update-settings.use-case.js +56 -0
  23. package/dist/src/domain/factories/index.d.ts +7 -0
  24. package/dist/src/domain/factories/index.d.ts.map +1 -0
  25. package/dist/src/domain/factories/index.js +6 -0
  26. package/dist/src/domain/factories/settings-defaults.factory.d.ts +36 -0
  27. package/dist/src/domain/factories/settings-defaults.factory.d.ts.map +1 -0
  28. package/dist/src/domain/factories/settings-defaults.factory.js +81 -0
  29. package/dist/src/domain/generated/output.d.ts +717 -0
  30. package/dist/src/domain/generated/output.d.ts.map +1 -0
  31. package/dist/src/domain/generated/output.js +93 -0
  32. package/dist/src/index.d.ts.map +1 -0
  33. package/dist/src/infrastructure/di/container.d.ts +27 -0
  34. package/dist/src/infrastructure/di/container.d.ts.map +1 -0
  35. package/dist/src/infrastructure/di/container.js +53 -0
  36. package/dist/src/infrastructure/persistence/sqlite/connection.d.ts +39 -0
  37. package/dist/src/infrastructure/persistence/sqlite/connection.d.ts.map +1 -0
  38. package/dist/src/infrastructure/persistence/sqlite/connection.js +76 -0
  39. package/dist/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +50 -0
  40. package/dist/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -0
  41. package/dist/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +80 -0
  42. package/dist/src/infrastructure/persistence/sqlite/migrations.d.ts +31 -0
  43. package/dist/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -0
  44. package/dist/src/infrastructure/persistence/sqlite/migrations.js +66 -0
  45. package/dist/src/infrastructure/repositories/sqlite-settings.repository.d.ts +40 -0
  46. package/dist/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -0
  47. package/dist/src/infrastructure/repositories/sqlite-settings.repository.js +123 -0
  48. package/dist/src/infrastructure/services/filesystem/shep-directory.service.d.ts +41 -0
  49. package/dist/src/infrastructure/services/filesystem/shep-directory.service.d.ts.map +1 -0
  50. package/dist/src/infrastructure/services/filesystem/shep-directory.service.js +64 -0
  51. package/dist/src/infrastructure/services/settings.service.d.ts +50 -0
  52. package/dist/src/infrastructure/services/settings.service.d.ts.map +1 -0
  53. package/dist/src/infrastructure/services/settings.service.js +67 -0
  54. package/dist/src/infrastructure/services/version.service.d.ts.map +1 -0
  55. package/dist/src/presentation/cli/commands/version.command.d.ts.map +1 -0
  56. package/dist/{presentation → src/presentation}/cli/index.d.ts +1 -1
  57. package/dist/src/presentation/cli/index.d.ts.map +1 -0
  58. package/dist/src/presentation/cli/index.js +86 -0
  59. package/dist/src/presentation/cli/ui/colors.d.ts.map +1 -0
  60. package/dist/src/presentation/cli/ui/formatters.d.ts.map +1 -0
  61. package/dist/src/presentation/cli/ui/index.d.ts.map +1 -0
  62. package/dist/src/presentation/cli/ui/messages.d.ts.map +1 -0
  63. package/dist/src/presentation/cli/ui/symbols.d.ts.map +1 -0
  64. package/dist/src/presentation/web/app/layout.d.ts +7 -0
  65. package/dist/src/presentation/web/app/layout.d.ts.map +1 -0
  66. package/dist/src/presentation/web/app/layout.js +21 -0
  67. package/dist/src/presentation/web/app/not-found.d.ts +2 -0
  68. package/dist/src/presentation/web/app/not-found.d.ts.map +1 -0
  69. package/dist/src/presentation/web/app/not-found.js +4 -0
  70. package/dist/src/presentation/web/app/page.d.ts +2 -0
  71. package/dist/src/presentation/web/app/page.d.ts.map +1 -0
  72. package/dist/src/presentation/web/app/page.js +6 -0
  73. package/dist/src/presentation/web/app/version/page.d.ts +2 -0
  74. package/dist/src/presentation/web/app/version/page.d.ts.map +1 -0
  75. package/dist/src/presentation/web/app/version/page.js +16 -0
  76. package/dist/src/presentation/web/components/features/index.d.ts +2 -0
  77. package/dist/src/presentation/web/components/features/index.d.ts.map +1 -0
  78. package/dist/src/presentation/web/components/features/index.js +2 -0
  79. package/dist/src/presentation/web/components/features/theme-toggle/index.d.ts +2 -0
  80. package/dist/src/presentation/web/components/features/theme-toggle/index.d.ts.map +1 -0
  81. package/dist/src/presentation/web/components/features/theme-toggle/index.js +1 -0
  82. package/dist/src/presentation/web/components/features/theme-toggle/theme-toggle.d.ts +2 -0
  83. package/dist/src/presentation/web/components/features/theme-toggle/theme-toggle.d.ts.map +1 -0
  84. package/dist/src/presentation/web/components/features/theme-toggle/theme-toggle.js +19 -0
  85. package/dist/src/presentation/web/components/features/theme-toggle/theme-toggle.stories.d.ts +8 -0
  86. package/dist/src/presentation/web/components/features/theme-toggle/theme-toggle.stories.d.ts.map +1 -0
  87. package/dist/src/presentation/web/components/features/theme-toggle/theme-toggle.stories.js +17 -0
  88. package/dist/src/presentation/web/components/ui/accordion.d.ts +8 -0
  89. package/dist/src/presentation/web/components/ui/accordion.d.ts.map +1 -0
  90. package/dist/src/presentation/web/components/ui/accordion.js +14 -0
  91. package/dist/src/presentation/web/components/ui/accordion.stories.d.ts +29 -0
  92. package/dist/src/presentation/web/components/ui/accordion.stories.d.ts.map +1 -0
  93. package/dist/src/presentation/web/components/ui/accordion.stories.js +35 -0
  94. package/dist/src/presentation/web/components/ui/alert.d.ts +9 -0
  95. package/dist/src/presentation/web/components/ui/alert.d.ts.map +1 -0
  96. package/dist/src/presentation/web/components/ui/alert.js +22 -0
  97. package/dist/src/presentation/web/components/ui/alert.stories.d.ts +10 -0
  98. package/dist/src/presentation/web/components/ui/alert.stories.d.ts.map +1 -0
  99. package/dist/src/presentation/web/components/ui/alert.stories.js +30 -0
  100. package/dist/src/presentation/web/components/ui/badge.d.ts +10 -0
  101. package/dist/src/presentation/web/components/ui/badge.d.ts.map +1 -0
  102. package/dist/src/presentation/web/components/ui/badge.js +20 -0
  103. package/dist/src/presentation/web/components/ui/badge.stories.d.ts +11 -0
  104. package/dist/src/presentation/web/components/ui/badge.stories.d.ts.map +1 -0
  105. package/dist/src/presentation/web/components/ui/badge.stories.js +44 -0
  106. package/dist/src/presentation/web/components/ui/button.d.ts +12 -0
  107. package/dist/src/presentation/web/components/ui/button.d.ts.map +1 -0
  108. package/dist/src/presentation/web/components/ui/button.js +33 -0
  109. package/dist/src/presentation/web/components/ui/button.stories.d.ts +17 -0
  110. package/dist/src/presentation/web/components/ui/button.stories.d.ts.map +1 -0
  111. package/dist/src/presentation/web/components/ui/button.stories.js +84 -0
  112. package/dist/src/presentation/web/components/ui/card.d.ts +9 -0
  113. package/dist/src/presentation/web/components/ui/card.d.ts.map +1 -0
  114. package/dist/src/presentation/web/components/ui/card.js +16 -0
  115. package/dist/src/presentation/web/components/ui/card.stories.d.ts +10 -0
  116. package/dist/src/presentation/web/components/ui/card.stories.d.ts.map +1 -0
  117. package/dist/src/presentation/web/components/ui/card.stories.js +24 -0
  118. package/dist/src/presentation/web/components/ui/dialog.d.ts +20 -0
  119. package/dist/src/presentation/web/components/ui/dialog.d.ts.map +1 -0
  120. package/dist/src/presentation/web/components/ui/dialog.js +23 -0
  121. package/dist/src/presentation/web/components/ui/dialog.stories.d.ts +9 -0
  122. package/dist/src/presentation/web/components/ui/dialog.stories.d.ts.map +1 -0
  123. package/dist/src/presentation/web/components/ui/dialog.stories.js +23 -0
  124. package/dist/src/presentation/web/components/ui/index.d.ts +13 -0
  125. package/dist/src/presentation/web/components/ui/index.d.ts.map +1 -0
  126. package/dist/src/presentation/web/components/ui/index.js +14 -0
  127. package/dist/src/presentation/web/components/ui/input.d.ts +4 -0
  128. package/dist/src/presentation/web/components/ui/input.d.ts.map +1 -0
  129. package/dist/src/presentation/web/components/ui/input.js +8 -0
  130. package/dist/src/presentation/web/components/ui/input.stories.d.ts +13 -0
  131. package/dist/src/presentation/web/components/ui/input.stories.d.ts.map +1 -0
  132. package/dist/src/presentation/web/components/ui/input.stories.js +55 -0
  133. package/dist/src/presentation/web/components/ui/label.d.ts +6 -0
  134. package/dist/src/presentation/web/components/ui/label.d.ts.map +1 -0
  135. package/dist/src/presentation/web/components/ui/label.js +10 -0
  136. package/dist/src/presentation/web/components/ui/label.stories.d.ts +9 -0
  137. package/dist/src/presentation/web/components/ui/label.stories.d.ts.map +1 -0
  138. package/dist/src/presentation/web/components/ui/label.stories.js +23 -0
  139. package/dist/src/presentation/web/components/ui/popover.d.ts +8 -0
  140. package/dist/src/presentation/web/components/ui/popover.d.ts.map +1 -0
  141. package/dist/src/presentation/web/components/ui/popover.js +11 -0
  142. package/dist/src/presentation/web/components/ui/popover.stories.d.ts +10 -0
  143. package/dist/src/presentation/web/components/ui/popover.stories.d.ts.map +1 -0
  144. package/dist/src/presentation/web/components/ui/popover.stories.js +26 -0
  145. package/dist/src/presentation/web/components/ui/select.d.ts +14 -0
  146. package/dist/src/presentation/web/components/ui/select.d.ts.map +1 -0
  147. package/dist/src/presentation/web/components/ui/select.js +26 -0
  148. package/dist/src/presentation/web/components/ui/select.stories.d.ts +10 -0
  149. package/dist/src/presentation/web/components/ui/select.stories.d.ts.map +1 -0
  150. package/dist/src/presentation/web/components/ui/select.stories.js +23 -0
  151. package/dist/src/presentation/web/components/ui/sonner.d.ts +5 -0
  152. package/dist/src/presentation/web/components/ui/sonner.d.ts.map +1 -0
  153. package/dist/src/presentation/web/components/ui/sonner.js +14 -0
  154. package/dist/src/presentation/web/components/ui/sonner.stories.d.ts +13 -0
  155. package/dist/src/presentation/web/components/ui/sonner.stories.d.ts.map +1 -0
  156. package/dist/src/presentation/web/components/ui/sonner.stories.js +51 -0
  157. package/dist/src/presentation/web/components/ui/tabs.d.ts +8 -0
  158. package/dist/src/presentation/web/components/ui/tabs.d.ts.map +1 -0
  159. package/dist/src/presentation/web/components/ui/tabs.js +13 -0
  160. package/dist/src/presentation/web/components/ui/tabs.stories.d.ts +9 -0
  161. package/dist/src/presentation/web/components/ui/tabs.stories.d.ts.map +1 -0
  162. package/dist/src/presentation/web/components/ui/tabs.stories.js +23 -0
  163. package/dist/src/presentation/web/eslint.config.d.mts +3 -0
  164. package/dist/src/presentation/web/eslint.config.d.mts.map +1 -0
  165. package/dist/src/presentation/web/eslint.config.mjs +15 -0
  166. package/dist/src/presentation/web/hooks/useTheme.d.ts +12 -0
  167. package/dist/src/presentation/web/hooks/useTheme.d.ts.map +1 -0
  168. package/dist/src/presentation/web/hooks/useTheme.js +73 -0
  169. package/dist/src/presentation/web/lib/utils.d.ts +11 -0
  170. package/dist/src/presentation/web/lib/utils.d.ts.map +1 -0
  171. package/dist/src/presentation/web/lib/utils.js +13 -0
  172. package/dist/src/presentation/web/next.config.d.ts +4 -0
  173. package/dist/src/presentation/web/next.config.d.ts.map +1 -0
  174. package/dist/src/presentation/web/next.config.js +9 -0
  175. package/dist/src/presentation/web/postcss.config.d.mts +4 -0
  176. package/dist/src/presentation/web/postcss.config.d.mts.map +1 -0
  177. package/dist/src/presentation/web/postcss.config.mjs +8 -0
  178. package/dist/src/presentation/web/types/theme.d.ts +12 -0
  179. package/dist/src/presentation/web/types/theme.d.ts.map +1 -0
  180. package/dist/src/presentation/web/types/theme.js +5 -0
  181. package/dist/tsconfig.build.tsbuildinfo +1 -0
  182. package/package.json +60 -12
  183. package/dist/index.d.ts.map +0 -1
  184. package/dist/infrastructure/services/version.service.d.ts.map +0 -1
  185. package/dist/presentation/cli/commands/version.command.d.ts.map +0 -1
  186. package/dist/presentation/cli/index.d.ts.map +0 -1
  187. package/dist/presentation/cli/index.js +0 -48
  188. package/dist/presentation/cli/ui/colors.d.ts.map +0 -1
  189. package/dist/presentation/cli/ui/formatters.d.ts.map +0 -1
  190. package/dist/presentation/cli/ui/index.d.ts.map +0 -1
  191. package/dist/presentation/cli/ui/messages.d.ts.map +0 -1
  192. package/dist/presentation/cli/ui/symbols.d.ts.map +0 -1
  193. /package/dist/{index.d.ts → src/index.d.ts} +0 -0
  194. /package/dist/{index.js → src/index.js} +0 -0
  195. /package/dist/{infrastructure → src/infrastructure}/services/version.service.d.ts +0 -0
  196. /package/dist/{infrastructure → src/infrastructure}/services/version.service.js +0 -0
  197. /package/dist/{presentation → src/presentation}/cli/commands/version.command.d.ts +0 -0
  198. /package/dist/{presentation → src/presentation}/cli/commands/version.command.js +0 -0
  199. /package/dist/{presentation → src/presentation}/cli/ui/colors.d.ts +0 -0
  200. /package/dist/{presentation → src/presentation}/cli/ui/colors.js +0 -0
  201. /package/dist/{presentation → src/presentation}/cli/ui/formatters.d.ts +0 -0
  202. /package/dist/{presentation → src/presentation}/cli/ui/formatters.js +0 -0
  203. /package/dist/{presentation → src/presentation}/cli/ui/index.d.ts +0 -0
  204. /package/dist/{presentation → src/presentation}/cli/ui/index.js +0 -0
  205. /package/dist/{presentation → src/presentation}/cli/ui/messages.d.ts +0 -0
  206. /package/dist/{presentation → src/presentation}/cli/ui/messages.js +0 -0
  207. /package/dist/{presentation → src/presentation}/cli/ui/symbols.d.ts +0 -0
  208. /package/dist/{presentation → src/presentation}/cli/ui/symbols.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-toggle.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/theme-toggle/theme-toggle.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAOlC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAOvB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ThemeToggle } from './theme-toggle';
3
+ const meta = {
4
+ title: 'Features/ThemeToggle',
5
+ component: ThemeToggle,
6
+ parameters: {
7
+ layout: 'centered',
8
+ },
9
+ tags: ['autodocs'],
10
+ };
11
+ export default meta;
12
+ export const Default = {
13
+ render: () => _jsx(ThemeToggle, {}),
14
+ };
15
+ export const InContext = {
16
+ render: () => (_jsxs("div", { className: "flex items-center gap-4 rounded-lg border p-4", children: [_jsx("span", { className: "text-muted-foreground text-sm", children: "Toggle theme:" }), _jsx(ThemeToggle, {})] })),
17
+ };
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import { Accordion as AccordionPrimitive } from 'radix-ui';
3
+ declare const Accordion: React.ForwardRefExoticComponent<(AccordionPrimitive.AccordionSingleProps | AccordionPrimitive.AccordionMultipleProps) & React.RefAttributes<HTMLDivElement>>;
4
+ declare const AccordionItem: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
+ declare const AccordionTrigger: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
6
+ declare const AccordionContent: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
7
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
8
+ //# sourceMappingURL=accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/ui/accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAK3D,QAAA,MAAM,SAAS,8JAA0B,CAAC;AAE1C,QAAA,MAAM,aAAa,iKAKjB,CAAC;AAGH,QAAA,MAAM,gBAAgB,0KAiBpB,CAAC;AAGH,QAAA,MAAM,gBAAgB,oKAWpB,CAAC;AAGH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,14 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import { Accordion as AccordionPrimitive } from 'radix-ui';
5
+ import { ChevronDown } from 'lucide-react';
6
+ import { cn } from '@/lib/utils';
7
+ const Accordion = AccordionPrimitive.Root;
8
+ const AccordionItem = React.forwardRef(({ className, ...props }, ref) => (_jsx(AccordionPrimitive.Item, { ref: ref, className: cn('border-b', className), ...props })));
9
+ AccordionItem.displayName = 'AccordionItem';
10
+ const AccordionTrigger = React.forwardRef(({ className, children, ...props }, ref) => (_jsx(AccordionPrimitive.Header, { className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { ref: ref, className: cn('flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180', className), ...props, children: [children, _jsx(ChevronDown, { className: "text-muted-foreground h-4 w-4 shrink-0 transition-transform duration-200" })] }) })));
11
+ AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
12
+ const AccordionContent = React.forwardRef(({ className, children, ...props }, ref) => (_jsx(AccordionPrimitive.Content, { ref: ref, className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm", ...props, children: _jsx("div", { className: cn('pt-0 pb-4', className), children: children }) })));
13
+ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
14
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
@@ -0,0 +1,29 @@
1
+ import type { Meta } from '@storybook/react';
2
+ import { Accordion } from './accordion';
3
+ declare const meta: Meta<typeof Accordion>;
4
+ export default meta;
5
+ export declare const Single: {
6
+ args: {
7
+ type: "single";
8
+ collapsible: boolean;
9
+ className: string;
10
+ children: import("react/jsx-runtime").JSX.Element;
11
+ };
12
+ };
13
+ export declare const Multiple: {
14
+ args: {
15
+ type: "multiple";
16
+ className: string;
17
+ children: import("react/jsx-runtime").JSX.Element;
18
+ };
19
+ };
20
+ export declare const DefaultOpen: {
21
+ args: {
22
+ type: "single";
23
+ collapsible: boolean;
24
+ defaultValue: string;
25
+ className: string;
26
+ children: import("react/jsx-runtime").JSX.Element;
27
+ };
28
+ };
29
+ //# sourceMappingURL=accordion.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.stories.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/ui/accordion.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAqD,MAAM,aAAa,CAAC;AAE3F,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,SAAS,CAOhC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,eAAO,MAAM,MAAM;;;;;;;CA0BlB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;CA2BpB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;CAuBvB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from './accordion';
3
+ const meta = {
4
+ title: 'UI/Accordion',
5
+ component: Accordion,
6
+ parameters: {
7
+ layout: 'centered',
8
+ },
9
+ tags: ['autodocs'],
10
+ };
11
+ export default meta;
12
+ export const Single = {
13
+ args: {
14
+ type: 'single',
15
+ collapsible: true,
16
+ className: 'w-[400px]',
17
+ children: (_jsxs(_Fragment, { children: [_jsxs(AccordionItem, { value: "item-1", children: [_jsx(AccordionTrigger, { children: "Is it accessible?" }), _jsx(AccordionContent, { children: "Yes. It adheres to the WAI-ARIA design pattern." })] }), _jsxs(AccordionItem, { value: "item-2", children: [_jsx(AccordionTrigger, { children: "Is it styled?" }), _jsx(AccordionContent, { children: "Yes. It comes with default styles that matches the other components' aesthetic." })] }), _jsxs(AccordionItem, { value: "item-3", children: [_jsx(AccordionTrigger, { children: "Is it animated?" }), _jsx(AccordionContent, { children: "Yes. It's animated by default, but you can disable it if you prefer." })] })] })),
18
+ },
19
+ };
20
+ export const Multiple = {
21
+ args: {
22
+ type: 'multiple',
23
+ className: 'w-[400px]',
24
+ children: (_jsxs(_Fragment, { children: [_jsxs(AccordionItem, { value: "item-1", children: [_jsx(AccordionTrigger, { children: "Can I open multiple?" }), _jsx(AccordionContent, { children: "Yes! This accordion allows multiple items to be open at the same time." })] }), _jsxs(AccordionItem, { value: "item-2", children: [_jsx(AccordionTrigger, { children: "How does it work?" }), _jsx(AccordionContent, { children: "Just click on any trigger to toggle that section. Other sections will remain unchanged." })] }), _jsxs(AccordionItem, { value: "item-3", children: [_jsx(AccordionTrigger, { children: "What about keyboard?" }), _jsx(AccordionContent, { children: "Full keyboard support is included. Use Tab to navigate and Enter/Space to toggle." })] })] })),
25
+ },
26
+ };
27
+ export const DefaultOpen = {
28
+ args: {
29
+ type: 'single',
30
+ collapsible: true,
31
+ defaultValue: 'item-2',
32
+ className: 'w-[400px]',
33
+ children: (_jsxs(_Fragment, { children: [_jsxs(AccordionItem, { value: "item-1", children: [_jsx(AccordionTrigger, { children: "First item" }), _jsx(AccordionContent, { children: "This is closed by default." })] }), _jsxs(AccordionItem, { value: "item-2", children: [_jsx(AccordionTrigger, { children: "Second item (default open)" }), _jsx(AccordionContent, { children: "This item is open by default when the page loads." })] }), _jsxs(AccordionItem, { value: "item-3", children: [_jsx(AccordionTrigger, { children: "Third item" }), _jsx(AccordionContent, { children: "This is also closed by default." })] })] })),
34
+ },
35
+ };
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare const Alert: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
4
+ variant?: "default" | "destructive" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string> & React.RefAttributes<HTMLDivElement>>;
6
+ declare const AlertTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLParagraphElement>>;
7
+ declare const AlertDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLParagraphElement> & React.RefAttributes<HTMLParagraphElement>>;
8
+ export { Alert, AlertTitle, AlertDescription };
9
+ //# sourceMappingURL=alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/ui/alert.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAoBlE,QAAA,MAAM,KAAK;;sHAKT,CAAC;AAGH,QAAA,MAAM,UAAU,uHAQf,CAAC;AAGF,QAAA,MAAM,gBAAgB,yHAKpB,CAAC;AAGH,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cva } from 'class-variance-authority';
4
+ import { cn } from '@/lib/utils';
5
+ const alertVariants = cva('relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7', {
6
+ variants: {
7
+ variant: {
8
+ default: 'bg-background text-foreground',
9
+ destructive: 'border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive',
10
+ },
11
+ },
12
+ defaultVariants: {
13
+ variant: 'default',
14
+ },
15
+ });
16
+ const Alert = React.forwardRef(({ className, variant, ...props }, ref) => (_jsx("div", { ref: ref, role: "alert", className: cn(alertVariants({ variant }), className), ...props })));
17
+ Alert.displayName = 'Alert';
18
+ const AlertTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx("h5", { ref: ref, className: cn('mb-1 leading-none font-medium tracking-tight', className), ...props })));
19
+ AlertTitle.displayName = 'AlertTitle';
20
+ const AlertDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('text-sm [&_p]:leading-relaxed', className), ...props })));
21
+ AlertDescription.displayName = 'AlertDescription';
22
+ export { Alert, AlertTitle, AlertDescription };
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Alert } from './alert';
3
+ declare const meta: Meta<typeof Alert>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const Destructive: Story;
8
+ export declare const WithoutIcon: Story;
9
+ export declare const TitleOnly: Story;
10
+ //# sourceMappingURL=alert.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.stories.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/ui/alert.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,KAAK,EAAgC,MAAM,SAAS,CAAC;AAE9D,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,CAa5B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAQrB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAQzB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KASzB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAOvB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { AlertCircle, Terminal } from 'lucide-react';
3
+ import { Alert, AlertDescription, AlertTitle } from './alert';
4
+ const meta = {
5
+ title: 'UI/Alert',
6
+ component: Alert,
7
+ parameters: {
8
+ layout: 'centered',
9
+ },
10
+ tags: ['autodocs'],
11
+ argTypes: {
12
+ variant: {
13
+ control: 'select',
14
+ options: ['default', 'destructive'],
15
+ },
16
+ },
17
+ };
18
+ export default meta;
19
+ export const Default = {
20
+ render: () => (_jsxs(Alert, { className: "w-[400px]", children: [_jsx(Terminal, { className: "h-4 w-4" }), _jsx(AlertTitle, { children: "Heads up!" }), _jsx(AlertDescription, { children: "You can add components to your app using the cli." })] })),
21
+ };
22
+ export const Destructive = {
23
+ render: () => (_jsxs(Alert, { variant: "destructive", className: "w-[400px]", children: [_jsx(AlertCircle, { className: "h-4 w-4" }), _jsx(AlertTitle, { children: "Error" }), _jsx(AlertDescription, { children: "Your session has expired. Please log in again." })] })),
24
+ };
25
+ export const WithoutIcon = {
26
+ render: () => (_jsxs(Alert, { className: "w-[400px]", children: [_jsx(AlertTitle, { children: "Note" }), _jsx(AlertDescription, { children: "This is an alert without an icon. It still works great for simple notifications." })] })),
27
+ };
28
+ export const TitleOnly = {
29
+ render: () => (_jsxs(Alert, { className: "w-[400px]", children: [_jsx(Terminal, { className: "h-4 w-4" }), _jsx(AlertTitle, { children: "A simple alert with just a title" })] })),
30
+ };
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare const badgeVariants: (props?: ({
4
+ variant?: "default" | "destructive" | "outline" | "secondary" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
7
+ }
8
+ declare function Badge({ className, variant, ...props }: BadgeProps): import("react/jsx-runtime").JSX.Element;
9
+ export { Badge, badgeVariants };
10
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/ui/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,QAAA,MAAM,aAAa;;8EAiBlB,CAAC;AAEF,MAAM,WAAW,UACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAC1C,YAAY,CAAC,OAAO,aAAa,CAAC;CAAG;AAEzC,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,2CAE1D;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cva } from 'class-variance-authority';
3
+ import { cn } from '@/lib/utils';
4
+ const badgeVariants = cva('inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2', {
5
+ variants: {
6
+ variant: {
7
+ default: 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',
8
+ secondary: 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',
9
+ destructive: 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80',
10
+ outline: 'text-foreground',
11
+ },
12
+ },
13
+ defaultVariants: {
14
+ variant: 'default',
15
+ },
16
+ });
17
+ function Badge({ className, variant, ...props }) {
18
+ return _jsx("div", { className: cn(badgeVariants({ variant }), className), ...props });
19
+ }
20
+ export { Badge, badgeVariants };
@@ -0,0 +1,11 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Badge } from './badge';
3
+ declare const meta: Meta<typeof Badge>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const Secondary: Story;
8
+ export declare const Destructive: Story;
9
+ export declare const Outline: Story;
10
+ export declare const AllVariants: Story;
11
+ //# sourceMappingURL=badge.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.stories.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/ui/badge.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,CAa5B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAKvB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAKzB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KASzB,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Badge } from './badge';
3
+ const meta = {
4
+ title: 'UI/Badge',
5
+ component: Badge,
6
+ parameters: {
7
+ layout: 'centered',
8
+ },
9
+ tags: ['autodocs'],
10
+ argTypes: {
11
+ variant: {
12
+ control: 'select',
13
+ options: ['default', 'secondary', 'destructive', 'outline'],
14
+ },
15
+ },
16
+ };
17
+ export default meta;
18
+ export const Default = {
19
+ args: {
20
+ children: 'Badge',
21
+ variant: 'default',
22
+ },
23
+ };
24
+ export const Secondary = {
25
+ args: {
26
+ children: 'Secondary',
27
+ variant: 'secondary',
28
+ },
29
+ };
30
+ export const Destructive = {
31
+ args: {
32
+ children: 'Destructive',
33
+ variant: 'destructive',
34
+ },
35
+ };
36
+ export const Outline = {
37
+ args: {
38
+ children: 'Outline',
39
+ variant: 'outline',
40
+ },
41
+ };
42
+ export const AllVariants = {
43
+ render: () => (_jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx(Badge, { variant: "default", children: "Default" }), _jsx(Badge, { variant: "secondary", children: "Secondary" }), _jsx(Badge, { variant: "destructive", children: "Destructive" }), _jsx(Badge, { variant: "outline", children: "Outline" })] })),
44
+ };
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare const buttonVariants: (props?: ({
4
+ variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
5
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
8
+ asChild?: boolean;
9
+ }
10
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
11
+ export { Button, buttonVariants };
12
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/ui/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,QAAA,MAAM,cAAc;;;8EAyBnB,CAAC;AAEF,MAAM,WAAW,WACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EACnD,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,QAAA,MAAM,MAAM,uFAOX,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { Slot } from 'radix-ui';
4
+ import { cva } from 'class-variance-authority';
5
+ import { cn } from '@/lib/utils';
6
+ const buttonVariants = cva('inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0', {
7
+ variants: {
8
+ variant: {
9
+ default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',
10
+ destructive: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',
11
+ outline: 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground',
12
+ secondary: 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',
13
+ ghost: 'hover:bg-accent hover:text-accent-foreground',
14
+ link: 'text-primary underline-offset-4 hover:underline',
15
+ },
16
+ size: {
17
+ default: 'h-9 px-4 py-2',
18
+ sm: 'h-8 rounded-md px-3 text-xs',
19
+ lg: 'h-10 rounded-md px-8',
20
+ icon: 'h-9 w-9',
21
+ },
22
+ },
23
+ defaultVariants: {
24
+ variant: 'default',
25
+ size: 'default',
26
+ },
27
+ });
28
+ const Button = React.forwardRef(({ className, variant, size, asChild = false, ...props }, ref) => {
29
+ const Comp = asChild ? Slot.Root : 'button';
30
+ return (_jsx(Comp, { className: cn(buttonVariants({ variant, size, className })), ref: ref, ...props }));
31
+ });
32
+ Button.displayName = 'Button';
33
+ export { Button, buttonVariants };
@@ -0,0 +1,17 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Button } from './button';
3
+ declare const meta: Meta<typeof Button>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const Destructive: Story;
8
+ export declare const Outline: Story;
9
+ export declare const Secondary: Story;
10
+ export declare const Ghost: Story;
11
+ export declare const Link: Story;
12
+ export declare const Small: Story;
13
+ export declare const Large: Story;
14
+ export declare const Disabled: Story;
15
+ export declare const AllVariants: Story;
16
+ export declare const AllSizes: Story;
17
+ //# sourceMappingURL=button.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.stories.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/ui/button.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,MAAM,CAoB7B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAKzB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAKvB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAKlB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAWzB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAQtB,CAAC"}
@@ -0,0 +1,84 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button } from './button';
3
+ const meta = {
4
+ title: 'UI/Button',
5
+ component: Button,
6
+ parameters: {
7
+ layout: 'centered',
8
+ },
9
+ tags: ['autodocs'],
10
+ argTypes: {
11
+ variant: {
12
+ control: 'select',
13
+ options: ['default', 'destructive', 'outline', 'secondary', 'ghost', 'link'],
14
+ },
15
+ size: {
16
+ control: 'select',
17
+ options: ['default', 'sm', 'lg', 'icon'],
18
+ },
19
+ disabled: {
20
+ control: 'boolean',
21
+ },
22
+ },
23
+ };
24
+ export default meta;
25
+ export const Default = {
26
+ args: {
27
+ children: 'Button',
28
+ variant: 'default',
29
+ },
30
+ };
31
+ export const Destructive = {
32
+ args: {
33
+ children: 'Destructive',
34
+ variant: 'destructive',
35
+ },
36
+ };
37
+ export const Outline = {
38
+ args: {
39
+ children: 'Outline',
40
+ variant: 'outline',
41
+ },
42
+ };
43
+ export const Secondary = {
44
+ args: {
45
+ children: 'Secondary',
46
+ variant: 'secondary',
47
+ },
48
+ };
49
+ export const Ghost = {
50
+ args: {
51
+ children: 'Ghost',
52
+ variant: 'ghost',
53
+ },
54
+ };
55
+ export const Link = {
56
+ args: {
57
+ children: 'Link',
58
+ variant: 'link',
59
+ },
60
+ };
61
+ export const Small = {
62
+ args: {
63
+ children: 'Small',
64
+ size: 'sm',
65
+ },
66
+ };
67
+ export const Large = {
68
+ args: {
69
+ children: 'Large',
70
+ size: 'lg',
71
+ },
72
+ };
73
+ export const Disabled = {
74
+ args: {
75
+ children: 'Disabled',
76
+ disabled: true,
77
+ },
78
+ };
79
+ export const AllVariants = {
80
+ render: () => (_jsxs("div", { className: "flex flex-wrap gap-4", children: [_jsx(Button, { variant: "default", children: "Default" }), _jsx(Button, { variant: "destructive", children: "Destructive" }), _jsx(Button, { variant: "outline", children: "Outline" }), _jsx(Button, { variant: "secondary", children: "Secondary" }), _jsx(Button, { variant: "ghost", children: "Ghost" }), _jsx(Button, { variant: "link", children: "Link" })] })),
81
+ };
82
+ export const AllSizes = {
83
+ render: () => (_jsxs("div", { className: "flex items-center gap-4", children: [_jsx(Button, { size: "sm", children: "Small" }), _jsx(Button, { size: "default", children: "Default" }), _jsx(Button, { size: "lg", children: "Large" })] })),
84
+ };
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ declare const Card: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
3
+ declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
4
+ declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
5
+ declare const CardDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
6
+ declare const CardContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
7
+ declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
8
+ export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };
9
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/ui/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,QAAA,MAAM,IAAI,6GAQT,CAAC;AAGF,QAAA,MAAM,UAAU,6GAIf,CAAC;AAGF,QAAA,MAAM,SAAS,6GAQd,CAAC;AAGF,QAAA,MAAM,eAAe,6GAIpB,CAAC;AAGF,QAAA,MAAM,WAAW,6GAIhB,CAAC;AAGF,QAAA,MAAM,UAAU,6GAIf,CAAC;AAGF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cn } from '@/lib/utils';
4
+ const Card = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('bg-card text-card-foreground rounded-xl border shadow', className), ...props })));
5
+ Card.displayName = 'Card';
6
+ const CardHeader = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('flex flex-col space-y-1.5 p-6', className), ...props })));
7
+ CardHeader.displayName = 'CardHeader';
8
+ const CardTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('leading-none font-semibold tracking-tight', className), ...props })));
9
+ CardTitle.displayName = 'CardTitle';
10
+ const CardDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('text-muted-foreground text-sm', className), ...props })));
11
+ CardDescription.displayName = 'CardDescription';
12
+ const CardContent = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('p-6 pt-0', className), ...props })));
13
+ CardContent.displayName = 'CardContent';
14
+ const CardFooter = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('flex items-center p-6 pt-0', className), ...props })));
15
+ CardFooter.displayName = 'CardFooter';
16
+ export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Card } from './card';
3
+ declare const meta: Meta<typeof Card>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const WithFooter: Story;
8
+ export declare const HeaderOnly: Story;
9
+ export declare const ContentOnly: Story;
10
+ //# sourceMappingURL=card.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.stories.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/ui/card.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAmE,MAAM,QAAQ,CAAC;AAG/F,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,CAO3B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAYrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAgBxB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KASxB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAQzB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from './card';
3
+ import { Button } from './button';
4
+ const meta = {
5
+ title: 'UI/Card',
6
+ component: Card,
7
+ parameters: {
8
+ layout: 'centered',
9
+ },
10
+ tags: ['autodocs'],
11
+ };
12
+ export default meta;
13
+ export const Default = {
14
+ render: () => (_jsxs(Card, { className: "w-[350px]", children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Card Title" }), _jsx(CardDescription, { children: "Card description goes here." })] }), _jsx(CardContent, { children: _jsx("p", { children: "Card content goes here. You can put any content you want." }) })] })),
15
+ };
16
+ export const WithFooter = {
17
+ render: () => (_jsxs(Card, { className: "w-[350px]", children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Create project" }), _jsx(CardDescription, { children: "Deploy your new project in one-click." })] }), _jsx(CardContent, { children: _jsx("p", { children: "This is the content area where you can add forms or other content." }) }), _jsxs(CardFooter, { className: "flex justify-between", children: [_jsx(Button, { variant: "outline", children: "Cancel" }), _jsx(Button, { children: "Deploy" })] })] })),
18
+ };
19
+ export const HeaderOnly = {
20
+ render: () => (_jsx(Card, { className: "w-[350px]", children: _jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Notifications" }), _jsx(CardDescription, { children: "You have 3 unread messages." })] }) })),
21
+ };
22
+ export const ContentOnly = {
23
+ render: () => (_jsx(Card, { className: "w-[350px]", children: _jsx(CardContent, { className: "pt-6", children: _jsx("p", { children: "This card only has content, no header or footer." }) }) })),
24
+ };
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ import { Dialog as DialogPrimitive } from 'radix-ui';
3
+ declare const Dialog: React.FC<DialogPrimitive.DialogProps>;
4
+ declare const DialogTrigger: React.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
5
+ declare const DialogPortal: React.FC<DialogPrimitive.DialogPortalProps>;
6
+ declare const DialogClose: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
7
+ declare const DialogOverlay: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
8
+ declare const DialogContent: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
9
+ declare const DialogHeader: {
10
+ ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
11
+ displayName: string;
12
+ };
13
+ declare const DialogFooter: {
14
+ ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
15
+ displayName: string;
16
+ };
17
+ declare const DialogTitle: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
18
+ declare const DialogDescription: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
19
+ export { Dialog, DialogPortal, DialogOverlay, DialogTrigger, DialogClose, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription, };
20
+ //# sourceMappingURL=dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/ui/dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AAKrD,QAAA,MAAM,MAAM,uCAAuB,CAAC;AAEpC,QAAA,MAAM,aAAa,8GAA0B,CAAC;AAE9C,QAAA,MAAM,YAAY,6CAAyB,CAAC;AAE5C,QAAA,MAAM,WAAW,4GAAwB,CAAC;AAE1C,QAAA,MAAM,aAAa,8JAYjB,CAAC;AAGH,QAAA,MAAM,aAAa,8JAqBjB,CAAC;AAGH,QAAA,MAAM,YAAY;8BAA6B,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;;CAElF,CAAC;AAGF,QAAA,MAAM,YAAY;8BAA6B,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;;CAKlF,CAAC;AAGF,QAAA,MAAM,WAAW,oKASf,CAAC;AAGH,QAAA,MAAM,iBAAiB,8KASrB,CAAC;AAGH,OAAO,EACL,MAAM,EACN,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,GAClB,CAAC"}
@@ -0,0 +1,23 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import { Dialog as DialogPrimitive } from 'radix-ui';
5
+ import { X } from 'lucide-react';
6
+ import { cn } from '@/lib/utils';
7
+ const Dialog = DialogPrimitive.Root;
8
+ const DialogTrigger = DialogPrimitive.Trigger;
9
+ const DialogPortal = DialogPrimitive.Portal;
10
+ const DialogClose = DialogPrimitive.Close;
11
+ const DialogOverlay = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Overlay, { ref: ref, className: cn('data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80', className), ...props })));
12
+ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
13
+ const DialogContent = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(DialogPortal, { children: [_jsx(DialogOverlay, {}), _jsxs(DialogPrimitive.Content, { ref: ref, className: cn('bg-background 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%] fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg duration-200 sm:rounded-lg', className), ...props, children: [children, _jsxs(DialogPrimitive.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none", children: [_jsx(X, { className: "h-4 w-4" }), _jsx("span", { className: "sr-only", children: "Close" })] })] })] })));
14
+ DialogContent.displayName = DialogPrimitive.Content.displayName;
15
+ const DialogHeader = ({ className, ...props }) => (_jsx("div", { className: cn('flex flex-col space-y-1.5 text-center sm:text-left', className), ...props }));
16
+ DialogHeader.displayName = 'DialogHeader';
17
+ const DialogFooter = ({ className, ...props }) => (_jsx("div", { className: cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className), ...props }));
18
+ DialogFooter.displayName = 'DialogFooter';
19
+ const DialogTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Title, { ref: ref, className: cn('text-lg leading-none font-semibold tracking-tight', className), ...props })));
20
+ DialogTitle.displayName = DialogPrimitive.Title.displayName;
21
+ const DialogDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Description, { ref: ref, className: cn('text-muted-foreground text-sm', className), ...props })));
22
+ DialogDescription.displayName = DialogPrimitive.Description.displayName;
23
+ export { Dialog, DialogPortal, DialogOverlay, DialogTrigger, DialogClose, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription, };
@@ -0,0 +1,9 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Dialog } from './dialog';
3
+ declare const meta: Meta<typeof Dialog>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const WithForm: Story;
8
+ export declare const Confirmation: Story;
9
+ //# sourceMappingURL=dialog.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.stories.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/components/ui/dialog.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EACL,MAAM,EAOP,MAAM,UAAU,CAAC;AAKlB,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,MAAM,CAO7B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAiCrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KA6BtB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAqB1B,CAAC"}