singularity-components 0.1.139 → 0.1.151

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 (150) hide show
  1. package/README.md +15 -0
  2. package/dist/components/blocks/cards/blogpost-card.d.ts +8 -0
  3. package/dist/components/blocks/cards/blogpost-card.js +65 -0
  4. package/dist/components/blocks/cards/blogpost-card.js.map +1 -0
  5. package/dist/components/blocks/cards/card.d.ts +14 -0
  6. package/dist/components/blocks/cards/card.js +86 -0
  7. package/dist/components/blocks/cards/card.js.map +1 -0
  8. package/dist/components/blocks/index.d.ts +3 -0
  9. package/dist/components/blocks/index.js +3 -0
  10. package/dist/components/blocks/index.js.map +1 -0
  11. package/dist/components/index.d.ts +9 -6
  12. package/dist/components/index.js +4 -1
  13. package/dist/components/index.js.map +1 -1
  14. package/dist/components/primitives/accordion/accordion.js +1 -1
  15. package/dist/components/primitives/accordion/accordion.js.map +1 -1
  16. package/dist/components/primitives/alert/alert.js +1 -1
  17. package/dist/components/primitives/alert/alert.js.map +1 -1
  18. package/dist/components/primitives/badge/badge.d.ts +12 -4
  19. package/dist/components/primitives/badge/badge.js +15 -15
  20. package/dist/components/primitives/badge/badge.js.map +1 -1
  21. package/dist/components/primitives/button/button.d.ts +12 -7
  22. package/dist/components/primitives/button/button.js +47 -16
  23. package/dist/components/primitives/button/button.js.map +1 -1
  24. package/dist/components/primitives/icon/icon.d.ts +2 -2
  25. package/dist/components/primitives/icon/icon.js +6 -12
  26. package/dist/components/primitives/icon/icon.js.map +1 -1
  27. package/dist/components/primitives/index.d.ts +6 -4
  28. package/dist/components/primitives/index.js +2 -0
  29. package/dist/components/primitives/index.js.map +1 -1
  30. package/dist/components/primitives/layout/layout.d.ts +3 -2
  31. package/dist/components/primitives/layout/layout.js +7 -6
  32. package/dist/components/primitives/layout/layout.js.map +1 -1
  33. package/dist/components/primitives/link/link-button.d.ts +13 -0
  34. package/dist/components/primitives/link/link-button.js +21 -0
  35. package/dist/components/primitives/link/link-button.js.map +1 -0
  36. package/dist/components/primitives/link/link.d.ts +36 -0
  37. package/dist/components/primitives/link/link.js +56 -0
  38. package/dist/components/primitives/link/link.js.map +1 -0
  39. package/dist/components/primitives/separator/separator.js +1 -1
  40. package/dist/components/primitives/separator/separator.js.map +1 -1
  41. package/dist/components/primitives/spinner/spinner.js +1 -1
  42. package/dist/components/primitives/spinner/spinner.js.map +1 -1
  43. package/dist/components/primitives/stack/stack.d.ts +2 -1
  44. package/dist/components/primitives/stack/stack.js +15 -4
  45. package/dist/components/primitives/stack/stack.js.map +1 -1
  46. package/dist/components/primitives/text/internal/text-element.d.ts +25 -3
  47. package/dist/components/primitives/text/internal/text-element.js +20 -12
  48. package/dist/components/primitives/text/internal/text-element.js.map +1 -1
  49. package/dist/components/primitives/text/text-div.d.ts +1 -1
  50. package/dist/components/primitives/text/text-div.js.map +1 -1
  51. package/dist/components/primitives/text/text-heading.js +7 -7
  52. package/dist/components/primitives/text/text-heading.js.map +1 -1
  53. package/dist/components/primitives/text/text-paragraph.d.ts +8 -2
  54. package/dist/components/primitives/text/text-paragraph.js +12 -1
  55. package/dist/components/primitives/text/text-paragraph.js.map +1 -1
  56. package/dist/components/primitives/text/text-span.js.map +1 -1
  57. package/dist/components/primitives/text/text-time.js.map +1 -1
  58. package/dist/components/primitives/ui-image.js +2 -5
  59. package/dist/components/primitives/ui-image.js.map +1 -1
  60. package/dist/components/primitives/ui-link.d.ts +4 -2
  61. package/dist/components/primitives/ui-link.js +5 -11
  62. package/dist/components/primitives/ui-link.js.map +1 -1
  63. package/dist/components/sections/body/body.d.ts +19 -0
  64. package/dist/components/sections/body/body.js +49 -0
  65. package/dist/components/sections/body/body.js.map +1 -0
  66. package/dist/components/sections/footer/footer.d.ts +12 -0
  67. package/dist/components/sections/footer/footer.js +59 -0
  68. package/dist/components/sections/footer/footer.js.map +1 -0
  69. package/dist/components/sections/hero/hero.d.ts +6 -0
  70. package/dist/components/sections/hero/hero.js +271 -0
  71. package/dist/components/sections/hero/hero.js.map +1 -0
  72. package/dist/components/sections/index.d.ts +3 -0
  73. package/dist/components/sections/index.js +4 -0
  74. package/dist/components/sections/index.js.map +1 -0
  75. package/dist/components/templates/blogpost/blogpost.d.ts +5 -0
  76. package/dist/components/templates/blogpost/blogpost.js +173 -0
  77. package/dist/components/templates/blogpost/blogpost.js.map +1 -0
  78. package/dist/components/templates/index.d.ts +3 -0
  79. package/dist/components/templates/index.js +3 -0
  80. package/dist/components/templates/index.js.map +1 -0
  81. package/dist/components/templates/startpage/startpage.d.ts +5 -0
  82. package/dist/components/templates/startpage/startpage.js +48 -0
  83. package/dist/components/templates/startpage/startpage.js.map +1 -0
  84. package/dist/components/units/index.d.ts +2 -5
  85. package/dist/components/units/index.js +0 -3
  86. package/dist/components/units/index.js.map +1 -1
  87. package/dist/css/variables.css +75 -73
  88. package/dist/css/variables.css.map +1 -1
  89. package/dist/data/posts.d.ts +20 -0
  90. package/dist/data/posts.js +266 -0
  91. package/dist/data/posts.js.map +1 -0
  92. package/dist/index.d.ts +9 -6
  93. package/dist/lib/hooks/useIsClient.d.ts +3 -0
  94. package/dist/lib/hooks/useIsClient.js +14 -0
  95. package/dist/lib/hooks/useIsClient.js.map +1 -0
  96. package/dist/lib/index.d.ts +1 -0
  97. package/dist/lib/index.js +1 -0
  98. package/dist/lib/index.js.map +1 -1
  99. package/dist/main.css +712 -584
  100. package/dist/main.css.map +1 -1
  101. package/dist/utils.js.map +1 -1
  102. package/package.json +35 -23
  103. package/dist/components/primitives/accordion/accordion.stories.d.ts +0 -15
  104. package/dist/components/primitives/accordion/accordion.stories.js +0 -60
  105. package/dist/components/primitives/accordion/accordion.stories.js.map +0 -1
  106. package/dist/components/primitives/alert/alert.stories.d.ts +0 -22
  107. package/dist/components/primitives/alert/alert.stories.js +0 -37
  108. package/dist/components/primitives/alert/alert.stories.js.map +0 -1
  109. package/dist/components/primitives/button/button.stories.d.ts +0 -34
  110. package/dist/components/primitives/button/button.stories.js +0 -74
  111. package/dist/components/primitives/button/button.stories.js.map +0 -1
  112. package/dist/components/primitives/button/button_with_icon_variant.d.ts +0 -2
  113. package/dist/components/primitives/button/button_with_icon_variant.js +0 -1
  114. package/dist/components/primitives/button/button_with_icon_variant.js.map +0 -1
  115. package/dist/components/primitives/icon/icon.stories.d.ts +0 -27
  116. package/dist/components/primitives/icon/icon.stories.js +0 -30
  117. package/dist/components/primitives/icon/icon.stories.js.map +0 -1
  118. package/dist/components/primitives/layout/layout.stories.d.ts +0 -32
  119. package/dist/components/primitives/layout/layout.stories.js +0 -72
  120. package/dist/components/primitives/layout/layout.stories.js.map +0 -1
  121. package/dist/components/primitives/separator/separator.stories.d.ts +0 -15
  122. package/dist/components/primitives/separator/separator.stories.js +0 -18
  123. package/dist/components/primitives/separator/separator.stories.js.map +0 -1
  124. package/dist/components/primitives/skeleton/skeleton.stories.d.ts +0 -13
  125. package/dist/components/primitives/skeleton/skeleton.stories.js +0 -16
  126. package/dist/components/primitives/skeleton/skeleton.stories.js.map +0 -1
  127. package/dist/components/primitives/spinner/spinner.stories.d.ts +0 -16
  128. package/dist/components/primitives/spinner/spinner.stories.js +0 -34
  129. package/dist/components/primitives/spinner/spinner.stories.js.map +0 -1
  130. package/dist/components/primitives/stack/stack.stories.d.ts +0 -13
  131. package/dist/components/primitives/stack/stack.stories.js +0 -26
  132. package/dist/components/primitives/stack/stack.stories.js.map +0 -1
  133. package/dist/components/primitives/text/text-div.stories.d.ts +0 -32
  134. package/dist/components/primitives/text/text-div.stories.js +0 -59
  135. package/dist/components/primitives/text/text-div.stories.js.map +0 -1
  136. package/dist/components/primitives/text/text-heading.stories.d.ts +0 -27
  137. package/dist/components/primitives/text/text-heading.stories.js +0 -47
  138. package/dist/components/primitives/text/text-heading.stories.js.map +0 -1
  139. package/dist/components/primitives/text/text-span.stories.d.ts +0 -31
  140. package/dist/components/primitives/text/text-span.stories.js +0 -59
  141. package/dist/components/primitives/text/text-span.stories.js.map +0 -1
  142. package/dist/components/units/cards/blog-card.d.ts +0 -19
  143. package/dist/components/units/cards/blog-card.js +0 -82
  144. package/dist/components/units/cards/blog-card.js.map +0 -1
  145. package/dist/components/units/cards/card.d.ts +0 -15
  146. package/dist/components/units/cards/card.js +0 -89
  147. package/dist/components/units/cards/card.js.map +0 -1
  148. package/dist/components/units/cards/cards.d.ts +0 -17
  149. package/dist/components/units/cards/cards.js +0 -37
  150. package/dist/components/units/cards/cards.js.map +0 -1
package/README.md CHANGED
@@ -8,6 +8,7 @@ Export from main.ts
8
8
 
9
9
  ## Publish to npm
10
10
 
11
+ npm login (if needed)
11
12
  npm publish
12
13
 
13
14
  ## Start Storybook:
@@ -17,3 +18,17 @@ npm run storybook
17
18
  ## Pack locally
18
19
 
19
20
  npm pack singularity-components
21
+ Can check with npm pack --dry-run
22
+ Or run npx npm pack
23
+
24
+ Creates a singularity-components-1.0.0.tgz
25
+
26
+ In other proj add:
27
+
28
+ {
29
+ "dependencies": {
30
+ "singularity-components": "file:../path-to-tarball/singularity-components-1.X.X.tgz"
31
+ }
32
+ }
33
+
34
+ and npm install
@@ -0,0 +1,8 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { BlogPost } from '../../../data/posts.js';
3
+
4
+ declare function BlogPostCard({ post }: {
5
+ post: BlogPost;
6
+ }): react_jsx_runtime.JSX.Element;
7
+
8
+ export { BlogPostCard as default };
@@ -0,0 +1,65 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Card, CardContent } from "./card";
3
+ import { Link } from "../../primitives/link/link";
4
+ import {
5
+ TextTime,
6
+ TextHeading,
7
+ TextParagraph,
8
+ TextSpan
9
+ } from "../../primitives";
10
+ import { UiImage } from "../../primitives/ui-image";
11
+ function BlogPostCard({ post }) {
12
+ return /* @__PURE__ */ jsx(
13
+ Link,
14
+ {
15
+ href: `/posts/${post.slug}`,
16
+ variant: "card",
17
+ className: "sg:group sg:block",
18
+ children: /* @__PURE__ */ jsxs(Card, { className: "sg:overflow-hidden sg:transition-shadow sg:hover:shadow-lg", children: [
19
+ /* @__PURE__ */ jsx("div", { className: "sg:aspect-16/10 sg:overflow-hidden", children: /* @__PURE__ */ jsx(
20
+ UiImage,
21
+ {
22
+ src: post.image,
23
+ alt: post.title,
24
+ className: "sg:h-full sg:w-full sg:object-cover sg:transition-transform sg:duration-300 sg:group-hover:scale-105",
25
+ loading: "lazy"
26
+ }
27
+ ) }),
28
+ /* @__PURE__ */ jsxs(CardContent, { className: "sg:p-5", children: [
29
+ /* @__PURE__ */ jsx(TextTime, { size: "xs", foreground: "muted-foreground", children: post.date }),
30
+ /* @__PURE__ */ jsx(
31
+ TextHeading,
32
+ {
33
+ variant: "h6",
34
+ as: "h3",
35
+ className: "sg:mt-1 sg:group-hover:text-primary sg:transition-colors",
36
+ children: post.title
37
+ }
38
+ ),
39
+ /* @__PURE__ */ jsx(
40
+ TextParagraph,
41
+ {
42
+ size: "sm",
43
+ foreground: "muted-foreground",
44
+ className: "sg:mt-2 sg:line-clamp-2",
45
+ children: post.excerpt
46
+ }
47
+ ),
48
+ /* @__PURE__ */ jsx(
49
+ TextSpan,
50
+ {
51
+ size: "sm",
52
+ foreground: "primary",
53
+ className: "sg:mt-3 sg:inline-block",
54
+ children: "Read more \u2192"
55
+ }
56
+ )
57
+ ] })
58
+ ] })
59
+ }
60
+ );
61
+ }
62
+ export {
63
+ BlogPostCard as default
64
+ };
65
+ //# sourceMappingURL=blogpost-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/blocks/cards/blogpost-card.tsx"],"sourcesContent":["import { Card, CardContent } from \"./card\";\r\nimport type { BlogPost } from \"../../../data/posts\";\r\nimport { Link } from \"../../primitives/link/link\";\r\nimport {\r\n TextTime,\r\n TextHeading,\r\n TextParagraph,\r\n TextSpan,\r\n} from \"../../primitives\";\r\nimport { UiImage } from \"../../primitives/ui-image\";\r\n\r\nexport default function BlogPostCard({ post }: { post: BlogPost }) {\r\n return (\r\n <Link\r\n href={`/posts/${post.slug}`}\r\n variant=\"card\"\r\n className=\"sg:group sg:block\"\r\n >\r\n <Card className=\"sg:overflow-hidden sg:transition-shadow sg:hover:shadow-lg\">\r\n <div className=\"sg:aspect-16/10 sg:overflow-hidden\">\r\n <UiImage\r\n src={post.image}\r\n alt={post.title}\r\n className=\"sg:h-full sg:w-full sg:object-cover sg:transition-transform sg:duration-300 sg:group-hover:scale-105\"\r\n loading=\"lazy\"\r\n />\r\n </div>\r\n <CardContent className=\"sg:p-5\">\r\n <TextTime size=\"xs\" foreground=\"muted-foreground\">\r\n {post.date}\r\n </TextTime>\r\n <TextHeading\r\n variant=\"h6\"\r\n as=\"h3\"\r\n className=\"sg:mt-1 sg:group-hover:text-primary sg:transition-colors\"\r\n >\r\n {post.title}\r\n </TextHeading>\r\n <TextParagraph\r\n size=\"sm\"\r\n foreground=\"muted-foreground\"\r\n className=\"sg:mt-2 sg:line-clamp-2\"\r\n >\r\n {post.excerpt}\r\n </TextParagraph>\r\n <TextSpan\r\n size=\"sm\"\r\n foreground=\"primary\"\r\n className=\"sg:mt-3 sg:inline-block\"\r\n >\r\n Read more →\r\n </TextSpan>\r\n </CardContent>\r\n </Card>\r\n </Link>\r\n );\r\n}\r\n"],"mappings":"AAoBU,cAOF,YAPE;AApBV,SAAS,MAAM,mBAAmB;AAElC,SAAS,YAAY;AACrB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,eAAe;AAET,SAAR,aAA8B,EAAE,KAAK,GAAuB;AACjE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,UAAU,KAAK,IAAI;AAAA,MACzB,SAAQ;AAAA,MACR,WAAU;AAAA,MAEV,+BAAC,QAAK,WAAU,8DACd;AAAA,4BAAC,SAAI,WAAU,sCACb;AAAA,UAAC;AAAA;AAAA,YACC,KAAK,KAAK;AAAA,YACV,KAAK,KAAK;AAAA,YACV,WAAU;AAAA,YACV,SAAQ;AAAA;AAAA,QACV,GACF;AAAA,QACA,qBAAC,eAAY,WAAU,UACrB;AAAA,8BAAC,YAAS,MAAK,MAAK,YAAW,oBAC5B,eAAK,MACR;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,SAAQ;AAAA,cACR,IAAG;AAAA,cACH,WAAU;AAAA,cAET,eAAK;AAAA;AAAA,UACR;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,YAAW;AAAA,cACX,WAAU;AAAA,cAET,eAAK;AAAA;AAAA,UACR;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,YAAW;AAAA,cACX,WAAU;AAAA,cACX;AAAA;AAAA,UAED;AAAA,WACF;AAAA,SACF;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -0,0 +1,14 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+
4
+ declare function Card({ className, size, ...props }: React.ComponentProps<"div"> & {
5
+ size?: "default" | "sm";
6
+ }): react_jsx_runtime.JSX.Element;
7
+ declare function CardHeader({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
8
+ declare function CardTitle({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
9
+ declare function CardDescription({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
10
+ declare function CardAction({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
11
+ declare function CardContent({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
12
+ declare function CardFooter({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
13
+
14
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
@@ -0,0 +1,86 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "../../../utils";
4
+ function Card({
5
+ className,
6
+ size = "default",
7
+ ...props
8
+ }) {
9
+ return /* @__PURE__ */ jsx(
10
+ "div",
11
+ {
12
+ "data-slot": "card",
13
+ "data-size": size,
14
+ className: cn(
15
+ "sg:ring-foreground/10 sg:bg-card sg:gap-6 sg:overflow-hidden sg:rounded-2xl sg:ring-1 sg:has-[>img:first-child]:pt-0 sg:data-[size=sm]:gap-4 sg:data-[size=sm]:py-4 sg:*:[img:first-child]:rounded-t-xl sg:*:[img:last-child]:rounded-b-xl sg:group/card sg:flex sg:flex-col",
16
+ className
17
+ ),
18
+ ...props
19
+ }
20
+ );
21
+ }
22
+ function CardHeader({ className, ...props }) {
23
+ return /* @__PURE__ */ jsx(
24
+ "div",
25
+ {
26
+ "data-slot": "card-header",
27
+ className: cn(
28
+ "sg:gap-2 sg:rounded-t-xl sg:px-6 sg:group-data-[size=sm]/card:px-4 sg:[.border-b]:pb-6 sg:group-data-[size=sm]/card:[.border-b]:pb-4 sg:group/card-header sg:@container/card-header sg:grid sg:auto-rows-min sg:items-start sg:has-data-[slot=card-action]:grid-cols-[1fr_auto] sg:has-data-[slot=card-description]:grid-rows-[auto_auto]",
29
+ className
30
+ ),
31
+ ...props
32
+ }
33
+ );
34
+ }
35
+ function CardTitle({ className, ...props }) {
36
+ return /* @__PURE__ */ jsx("div", { "data-slot": "card-title", ...props });
37
+ }
38
+ function CardDescription({ className, ...props }) {
39
+ return /* @__PURE__ */ jsx("div", { "data-slot": "card-description", ...props });
40
+ }
41
+ function CardAction({ className, ...props }) {
42
+ return /* @__PURE__ */ jsx(
43
+ "div",
44
+ {
45
+ "data-slot": "card-action",
46
+ className: cn(
47
+ "sg:col-start-2 sg:row-span-2 sg:row-start-1 sg:self-start sg:justify-self-end",
48
+ className
49
+ ),
50
+ ...props
51
+ }
52
+ );
53
+ }
54
+ function CardContent({ className, ...props }) {
55
+ return /* @__PURE__ */ jsx(
56
+ "div",
57
+ {
58
+ "data-slot": "card-content",
59
+ className: cn("sg:px-6 sg:group-data-[size=sm]/card:px-4", className),
60
+ ...props
61
+ }
62
+ );
63
+ }
64
+ function CardFooter({ className, ...props }) {
65
+ return /* @__PURE__ */ jsx(
66
+ "div",
67
+ {
68
+ "data-slot": "card-footer",
69
+ className: cn(
70
+ "sg:rounded-b-xl sg:px-6 sg:group-data-[size=sm]/card:px-4 sg:[.border-t]:pt-6 sg:group-data-[size=sm]/card:[.border-t]:pt-4 sg:flex sg:items-center",
71
+ className
72
+ ),
73
+ ...props
74
+ }
75
+ );
76
+ }
77
+ export {
78
+ Card,
79
+ CardAction,
80
+ CardContent,
81
+ CardDescription,
82
+ CardFooter,
83
+ CardHeader,
84
+ CardTitle
85
+ };
86
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/blocks/cards/card.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../../utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n \"sg:ring-foreground/10 sg:bg-card sg:gap-6 sg:overflow-hidden sg:rounded-2xl sg:ring-1 sg:has-[>img:first-child]:pt-0 sg:data-[size=sm]:gap-4 sg:data-[size=sm]:py-4 sg:*:[img:first-child]:rounded-t-xl sg:*:[img:last-child]:rounded-b-xl sg:group/card sg:flex sg:flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"sg:gap-2 sg:rounded-t-xl sg:px-6 sg:group-data-[size=sm]/card:px-4 sg:[.border-b]:pb-6 sg:group-data-[size=sm]/card:[.border-b]:pb-4 sg:group/card-header sg:@container/card-header sg:grid sg:auto-rows-min sg:items-start sg:has-data-[slot=card-action]:grid-cols-[1fr_auto] sg:has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"card-title\" {...props} />;\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"card-description\" {...props} />;\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"sg:col-start-2 sg:row-span-2 sg:row-start-1 sg:self-start sg:justify-self-end\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"sg:px-6 sg:group-data-[size=sm]/card:px-4\", className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\n \"sg:rounded-b-xl sg:px-6 sg:group-data-[size=sm]/card:px-4 sg:[.border-t]:pt-6 sg:group-data-[size=sm]/card:[.border-t]:pt-4 sg:flex sg:items-center\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n"],"mappings":"AASI;AATJ,YAAY,WAAW;AACvB,SAAS,UAAU;AAEnB,SAAS,KAAK;AAAA,EACZ;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,GAA8D;AAC5D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,aAAW;AAAA,MACX,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAgC;AACvE,SAAO,oBAAC,SAAI,aAAU,cAAc,GAAG,OAAO;AAChD;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAAgC;AAC7E,SAAO,oBAAC,SAAI,aAAU,oBAAoB,GAAG,OAAO;AACtD;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,6CAA6C,SAAS;AAAA,MACnE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}
@@ -0,0 +1,3 @@
1
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './cards/card.js';
2
+ import 'react/jsx-runtime';
3
+ import 'react';
@@ -0,0 +1,3 @@
1
+ export * from "./cards/card";
2
+ export * from "./cards/blogpost-card";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/blocks/index.ts"],"sourcesContent":["export * from \"./cards/card\";\r\nexport * from \"./cards/blogpost-card\";\r\n"],"mappings":"AAAA,cAAc;AACd,cAAc;","names":[]}
@@ -1,27 +1,30 @@
1
1
  export { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from './primitives/accordion/accordion.js';
2
2
  export { Alert, AlertAction, AlertDescription, AlertTitle, alertVariants } from './primitives/alert/alert.js';
3
- export { Badge, badgeVariants } from './primitives/badge/badge.js';
3
+ export { Badge, badgeVariants, badgeVariantsProps } from './primitives/badge/badge.js';
4
4
  export { Badges, BadgesProps } from './primitives/badge/badges.js';
5
5
  export { Button, buttonVariants, buttonVariantsProps } from './primitives/button/button.js';
6
6
  export { Icon, iconVariants, iconVariantsProps } from './primitives/icon/icon.js';
7
7
  export { Layout, LayoutProps, layoutVariants, layoutVariantsProps } from './primitives/layout/layout.js';
8
+ export { Link, linkVariants } from './primitives/link/link.js';
9
+ export { LinkButton } from './primitives/link/link-button.js';
8
10
  export { Separator } from './primitives/separator/separator.js';
9
11
  export { Skeleton } from './primitives/skeleton/skeleton.js';
10
12
  export { Spinner } from './primitives/spinner/spinner.js';
11
13
  export { Stack, StackProps, stackVariants } from './primitives/stack/stack.js';
12
14
  export { TextDiv } from './primitives/text/text-div.js';
13
15
  export { TextHeading, TextHeadingProps, textHeadingVariants, textHeadingVariantsProps } from './primitives/text/text-heading.js';
14
- export { TextParagraph } from './primitives/text/text-paragraph.js';
16
+ export { TextParagraph, textParagraphVariants, textParagraphVariantsProps } from './primitives/text/text-paragraph.js';
15
17
  export { TextSpan } from './primitives/text/text-span.js';
16
18
  export { TextTime } from './primitives/text/text-time.js';
17
19
  export { UiImage } from './primitives/ui-image.js';
18
20
  export { UiLink } from './primitives/ui-link.js';
21
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './blocks/cards/card.js';
22
+ export { Body } from './sections/body/body.js';
23
+ export { BlogPost } from './templates/blogpost/blogpost.js';
24
+ export { StartPage } from './templates/startpage/startpage.js';
19
25
  export { BaseImageProps, DefaultImage, ImageComponentType, ImageProvider, useImage } from './providers/ImageContext.js';
20
26
  export { BaseLinkProps, DefaultLink, LinkComponentType, LinkProvider, useLink } from './providers/LinkContext.js';
21
27
  export { SingularityProvider } from './providers/SingularityContext.js';
22
- export { BlogPost } from './units/cards/blog-card.js';
23
- export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardImage, CardTitle } from './units/cards/card.js';
24
- export { Cards, CardsProps, getGridColsClass } from './units/cards/cards.js';
25
28
  import 'react/jsx-runtime';
26
29
  import '@base-ui/react/accordion';
27
30
  import 'class-variance-authority/types';
@@ -31,5 +34,5 @@ import '@base-ui/react/use-render';
31
34
  import '@base-ui/react/button';
32
35
  import 'lucide-react';
33
36
  import '@base-ui/react/separator';
34
- import './primitives/text/internal/text-element.js';
35
37
  import '../lib/types.js';
38
+ import './primitives/text/internal/text-element.js';
@@ -1,4 +1,7 @@
1
1
  export * from "./primitives";
2
- export * from "./providers";
3
2
  export * from "./units";
3
+ export * from "./blocks";
4
+ export * from "./sections";
5
+ export * from "./templates";
6
+ export * from "./providers";
4
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/index.ts"],"sourcesContent":["export * from \"./primitives\";\r\nexport * from \"./providers\";\r\nexport * from \"./units\";\r\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/components/index.ts"],"sourcesContent":["export * from \"./primitives\";\r\nexport * from \"./units\";\r\nexport * from \"./blocks\";\r\nexport * from \"./sections\";\r\nexport * from \"./templates\";\r\nexport * from \"./providers\";\r\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -2,7 +2,7 @@
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Accordion as AccordionPrimitive } from "@base-ui/react/accordion";
4
4
  import { ChevronDownIcon, ChevronUpIcon } from "lucide-react";
5
- import { cn } from "@/utils";
5
+ import { cn } from "../../../utils";
6
6
  function Accordion({ className, ...props }) {
7
7
  return /* @__PURE__ */ jsx(
8
8
  AccordionPrimitive.Root,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/primitives/accordion/accordion.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\";\r\nimport { ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\r\nimport { cn } from \"@/utils\";\r\n\r\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\r\n return (\r\n <AccordionPrimitive.Root\r\n data-slot=\"accordion\"\r\n className={cn(\r\n \"sg:overflow-hidden sg:rounded-2xl sg:border sg:flex sg:w-full sg:flex-col\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\r\n return (\r\n <AccordionPrimitive.Item\r\n data-slot=\"accordion-item\"\r\n className={cn(\"sg:data-open:bg-muted/50 sg:not-last:border-b\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction AccordionTrigger({\r\n className,\r\n children,\r\n ...props\r\n}: AccordionPrimitive.Trigger.Props) {\r\n return (\r\n <AccordionPrimitive.Header className=\"sg:flex\">\r\n <AccordionPrimitive.Trigger\r\n data-slot=\"accordion-trigger\"\r\n className={cn(\r\n \"sg:**:data-[slot=accordion-trigger-icon]:text-muted-foreground sg:gap-6 sg:p-4 sg:text-start sg:text-sm sg:font-medium sg:hover:underline sg:**:data-[slot=accordion-trigger-icon]:ms-auto sg:**:data-[slot=accordion-trigger-icon]:size-4 sg:group/accordion-trigger sg:relative sg:flex sg:flex-1 sg:items-start sg:justify-between sg:border sg:border-transparent sg:transition-all sg:outline-none sg:disabled:pointer-events-none sg:disabled:opacity-50\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronDownIcon\r\n data-slot=\"accordion-trigger-icon\"\r\n className=\"sg:pointer-events-none sg:shrink-0 sg:group-aria-expanded/accordion-trigger:hidden\"\r\n />\r\n <ChevronUpIcon\r\n data-slot=\"accordion-trigger-icon\"\r\n className=\"sg:pointer-events-none sg:hidden sg:shrink-0 sg:group-aria-expanded/accordion-trigger:inline\"\r\n />\r\n </AccordionPrimitive.Trigger>\r\n </AccordionPrimitive.Header>\r\n );\r\n}\r\n\r\nfunction AccordionContent({\r\n className,\r\n children,\r\n ...props\r\n}: AccordionPrimitive.Panel.Props) {\r\n return (\r\n <AccordionPrimitive.Panel\r\n data-slot=\"accordion-content\"\r\n className=\"sg:data-open:animate-accordion-down sg:data-closed:animate-accordion-up sg:px-4 sg:text-sm sg:overflow-hidden\"\r\n {...props}\r\n >\r\n <div\r\n className={cn(\r\n \"sg:pt-0 sg:pb-4 sg:[&_a]:hover:text-foreground sg:h-(--accordion-panel-height) sg:data-ending-style:h-0 sg:data-starting-style:h-0 sg:[&_a]:underline sg:[&_a]:underline-offset-3 sg:[&_p:not(:last-child)]:mb-4\",\r\n className,\r\n )}\r\n >\r\n {children}\r\n </div>\r\n </AccordionPrimitive.Panel>\r\n );\r\n}\r\n\r\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\r\n"],"mappings":";AAQI,cA4BE,YA5BF;AANJ,SAAS,aAAa,0BAA0B;AAChD,SAAS,iBAAiB,qBAAqB;AAC/C,SAAS,UAAU;AAEnB,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAkC;AACzE,SACE;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAkC;AAC7E,SACE;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iDAAiD,SAAS;AAAA,MACvE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAqC;AACnC,SACE,oBAAC,mBAAmB,QAAnB,EAA0B,WAAU,WACnC;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA;AAAA,QACZ;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA;AAAA,QACZ;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAmC;AACjC,SACE;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MACT,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UAEC;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/primitives/accordion/accordion.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { Accordion as AccordionPrimitive } from \"@base-ui/react/accordion\";\r\nimport { ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\r\nimport { cn } from \"../../../utils\";\r\n\r\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\r\n return (\r\n <AccordionPrimitive.Root\r\n data-slot=\"accordion\"\r\n className={cn(\r\n \"sg:overflow-hidden sg:rounded-2xl sg:border sg:flex sg:w-full sg:flex-col\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {\r\n return (\r\n <AccordionPrimitive.Item\r\n data-slot=\"accordion-item\"\r\n className={cn(\"sg:data-open:bg-muted/50 sg:not-last:border-b\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction AccordionTrigger({\r\n className,\r\n children,\r\n ...props\r\n}: AccordionPrimitive.Trigger.Props) {\r\n return (\r\n <AccordionPrimitive.Header className=\"sg:flex\">\r\n <AccordionPrimitive.Trigger\r\n data-slot=\"accordion-trigger\"\r\n className={cn(\r\n \"sg:**:data-[slot=accordion-trigger-icon]:text-muted-foreground sg:gap-6 sg:p-4 sg:text-start sg:text-sm sg:font-medium sg:hover:underline sg:**:data-[slot=accordion-trigger-icon]:ms-auto sg:**:data-[slot=accordion-trigger-icon]:size-4 sg:group/accordion-trigger sg:relative sg:flex sg:flex-1 sg:items-start sg:justify-between sg:border sg:border-transparent sg:transition-all sg:outline-none sg:disabled:pointer-events-none sg:disabled:opacity-50\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronDownIcon\r\n data-slot=\"accordion-trigger-icon\"\r\n className=\"sg:pointer-events-none sg:shrink-0 sg:group-aria-expanded/accordion-trigger:hidden\"\r\n />\r\n <ChevronUpIcon\r\n data-slot=\"accordion-trigger-icon\"\r\n className=\"sg:pointer-events-none sg:hidden sg:shrink-0 sg:group-aria-expanded/accordion-trigger:inline\"\r\n />\r\n </AccordionPrimitive.Trigger>\r\n </AccordionPrimitive.Header>\r\n );\r\n}\r\n\r\nfunction AccordionContent({\r\n className,\r\n children,\r\n ...props\r\n}: AccordionPrimitive.Panel.Props) {\r\n return (\r\n <AccordionPrimitive.Panel\r\n data-slot=\"accordion-content\"\r\n className=\"sg:data-open:animate-accordion-down sg:data-closed:animate-accordion-up sg:px-4 sg:text-sm sg:overflow-hidden\"\r\n {...props}\r\n >\r\n <div\r\n className={cn(\r\n \"sg:pt-0 sg:pb-4 sg:[&_a]:hover:text-foreground sg:h-(--accordion-panel-height) sg:data-ending-style:h-0 sg:data-starting-style:h-0 sg:[&_a]:underline sg:[&_a]:underline-offset-3 sg:[&_p:not(:last-child)]:mb-4\",\r\n className,\r\n )}\r\n >\r\n {children}\r\n </div>\r\n </AccordionPrimitive.Panel>\r\n );\r\n}\r\n\r\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\r\n"],"mappings":";AAQI,cA4BE,YA5BF;AANJ,SAAS,aAAa,0BAA0B;AAChD,SAAS,iBAAiB,qBAAqB;AAC/C,SAAS,UAAU;AAEnB,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAkC;AACzE,SACE;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,cAAc,EAAE,WAAW,GAAG,MAAM,GAAkC;AAC7E,SACE;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,iDAAiD,SAAS;AAAA,MACvE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAqC;AACnC,SACE,oBAAC,mBAAmB,QAAnB,EAA0B,WAAU,WACnC;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA;AAAA,QACZ;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,WAAU;AAAA;AAAA,QACZ;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAmC;AACjC,SACE;AAAA,IAAC,mBAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAU;AAAA,MACT,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UACF;AAAA,UAEC;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { cva } from "class-variance-authority";
4
- import { cn } from "@/utils";
4
+ import { cn } from "../../../utils";
5
5
  const alertVariants = {
6
6
  variant: {
7
7
  default: "sg:bg-card sg:text-card-foreground",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/primitives/alert/alert.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"@/utils\";\r\n\r\nconst alertVariants = {\r\n variant: {\r\n default: \"sg:bg-card sg:text-card-foreground\",\r\n destructive:\r\n \"sg:text-destructive sg:bg-card sg:*:data-[slot=alert-description]:text-destructive/90 sg:*:[svg]:text-current\",\r\n },\r\n};\r\n\r\nconst alertVariantsProps = cva(\r\n \"sg:grid sg:gap-0.5 sg:rounded-lg sg:border sg:px-4 sg:py-3 sg:text-start sg:text-sm sg:has-data-[slot=alert-action]:relative sg:has-data-[slot=alert-action]:pe-18 sg:has-[>svg]:grid-cols-[auto_1fr] sg:has-[>svg]:gap-x-2.5 sg:*:[svg]:row-span-2 sg:*:[svg]:translate-y-0.5 sg:*:[svg]:text-current sg:*:[svg:not([class*=size-])]:size-4 sg:w-full sg:relative sg:group/alert\",\r\n {\r\n variants: alertVariants,\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n },\r\n);\r\n\r\nfunction Alert({\r\n className,\r\n variant,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariantsProps>) {\r\n return (\r\n <div\r\n data-slot=\"alert\"\r\n role=\"alert\"\r\n className={cn(alertVariantsProps({ variant }), className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"alert-title\"\r\n className={cn(\r\n \"sg:font-medium sg:group-has-[>svg]/alert:col-start-2 sg:[&_a]:hover:text-foreground sg:[&_a]:underline sg:[&_a]:underline-offset-3\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction AlertDescription({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"alert-description\"\r\n className={cn(\r\n \"sg:text-muted-foreground sg:text-sm sg:text-balance sg:md:text-pretty sg:[&_p:not(:last-child)]:mb-4 sg:[&_a]:hover:text-foreground sg:[&_a]:underline sg:[&_a]:underline-offset-3\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"alert-action\"\r\n className={cn(\"sg:absolute sg:top-2.5 sg:end-3\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport { Alert, AlertTitle, AlertDescription, AlertAction, alertVariants };\r\n"],"mappings":"AA4BI;AA5BJ,YAAY,WAAW;AACvB,SAAS,WAA8B;AACvC,SAAS,UAAU;AAEnB,MAAM,gBAAgB;AAAA,EACpB,SAAS;AAAA,IACP,SAAS;AAAA,IACT,aACE;AAAA,EACJ;AACF;AAEA,MAAM,qBAAqB;AAAA,EACzB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,IACV,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,MAAM;AAAA,EACb;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA0E;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAW,GAAG,mBAAmB,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,GAAG;AACL,GAAgC;AAC9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,mCAAmC,SAAS;AAAA,MACzD,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/primitives/alert/alert.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../../utils\";\r\n\r\nconst alertVariants = {\r\n variant: {\r\n default: \"sg:bg-card sg:text-card-foreground\",\r\n destructive:\r\n \"sg:text-destructive sg:bg-card sg:*:data-[slot=alert-description]:text-destructive/90 sg:*:[svg]:text-current\",\r\n },\r\n};\r\n\r\nconst alertVariantsProps = cva(\r\n \"sg:grid sg:gap-0.5 sg:rounded-lg sg:border sg:px-4 sg:py-3 sg:text-start sg:text-sm sg:has-data-[slot=alert-action]:relative sg:has-data-[slot=alert-action]:pe-18 sg:has-[>svg]:grid-cols-[auto_1fr] sg:has-[>svg]:gap-x-2.5 sg:*:[svg]:row-span-2 sg:*:[svg]:translate-y-0.5 sg:*:[svg]:text-current sg:*:[svg:not([class*=size-])]:size-4 sg:w-full sg:relative sg:group/alert\",\r\n {\r\n variants: alertVariants,\r\n defaultVariants: {\r\n variant: \"default\",\r\n },\r\n },\r\n);\r\n\r\nfunction Alert({\r\n className,\r\n variant,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariantsProps>) {\r\n return (\r\n <div\r\n data-slot=\"alert\"\r\n role=\"alert\"\r\n className={cn(alertVariantsProps({ variant }), className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"alert-title\"\r\n className={cn(\r\n \"sg:font-medium sg:group-has-[>svg]/alert:col-start-2 sg:[&_a]:hover:text-foreground sg:[&_a]:underline sg:[&_a]:underline-offset-3\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction AlertDescription({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"alert-description\"\r\n className={cn(\r\n \"sg:text-muted-foreground sg:text-sm sg:text-balance sg:md:text-pretty sg:[&_p:not(:last-child)]:mb-4 sg:[&_a]:hover:text-foreground sg:[&_a]:underline sg:[&_a]:underline-offset-3\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"alert-action\"\r\n className={cn(\"sg:absolute sg:top-2.5 sg:end-3\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport { Alert, AlertTitle, AlertDescription, AlertAction, alertVariants };\r\n"],"mappings":"AA4BI;AA5BJ,YAAY,WAAW;AACvB,SAAS,WAA8B;AACvC,SAAS,UAAU;AAEnB,MAAM,gBAAgB;AAAA,EACpB,SAAS;AAAA,IACP,SAAS;AAAA,IACT,aACE;AAAA,EACJ;AACF;AAEA,MAAM,qBAAqB;AAAA,EACzB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,IACV,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,MAAM;AAAA,EACb;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA0E;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAW,GAAG,mBAAmB,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,MACvD,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,MAAM,GAAgC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA,GAAG;AACL,GAAgC;AAC9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAgC;AACzE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,mCAAmC,SAAS;AAAA,MACzD,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}
@@ -3,9 +3,17 @@ import * as class_variance_authority_types from 'class-variance-authority/types'
3
3
  import { useRender } from '@base-ui/react/use-render';
4
4
  import { VariantProps } from 'class-variance-authority';
5
5
 
6
- declare const badgeVariants: (props?: ({
7
- variant?: "link" | "default" | "destructive" | "secondary" | "outline" | "ghost" | null | undefined;
6
+ declare const badgeVariants: {
7
+ variant: {
8
+ default: string;
9
+ secondary: string;
10
+ destructive: string;
11
+ outline: string;
12
+ };
13
+ };
14
+ declare const badgeVariantsProps: (props?: ({
15
+ variant?: "default" | "destructive" | "secondary" | "outline" | null | undefined;
8
16
  } & class_variance_authority_types.ClassProp) | undefined) => string;
9
- declare function Badge({ className, variant, render, ...props }: useRender.ComponentProps<"span"> & VariantProps<typeof badgeVariants>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
17
+ declare function Badge({ className, variant, render, ...props }: useRender.ComponentProps<"span"> & VariantProps<typeof badgeVariantsProps>): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
10
18
 
11
- export { Badge, badgeVariants };
19
+ export { Badge, badgeVariants, badgeVariantsProps };
@@ -1,20 +1,19 @@
1
- import { cn } from "@/utils";
1
+ import { cn } from "../../../utils";
2
2
  import { mergeProps } from "@base-ui/react/merge-props";
3
3
  import { useRender } from "@base-ui/react/use-render";
4
4
  import { cva } from "class-variance-authority";
5
- const badgeVariants = cva(
6
- "sg:h-5 sg:gap-1 sg:rounded-4xl sg:border sg:border-transparent sg:px-2 sg:py-0.5 sg:text-xs sg:font-medium sg:transition-all sg:has-data-[icon=inline-end]:pe-1.5 sg:has-data-[icon=inline-start]:ps-1.5 sg:[&>svg]:size-3! sg:inline-flex sg:items-center sg:justify-center sg:w-fit sg:whitespace-nowrap sg:shrink-0 sg:[&>svg]:pointer-events-none sg:focus-visible:border-ring sg:focus-visible:ring-ring/50 sg:focus-visible:ring-[3px] sg:aria-invalid:ring-destructive/20 sg:dark:aria-invalid:ring-destructive/40 sg:aria-invalid:border-destructive sg:overflow-hidden sg:group/badge",
5
+ const badgeVariants = {
6
+ variant: {
7
+ default: "sg:border-transparent sg:bg-primary sg:text-primary-foreground sg:hover:bg-primary/80",
8
+ secondary: "sg:border-transparent sg:bg-secondary sg:text-secondary-foreground sg:hover:bg-secondary/80",
9
+ destructive: "sg:border-transparent sg:bg-destructive sg:text-destructive-foreground sg:hover:bg-destructive/80",
10
+ outline: "sg:text-foreground"
11
+ }
12
+ };
13
+ const badgeVariantsProps = cva(
14
+ "sg:inline-flex sg:items-center sg:rounded-full sg:border sg:px-2.5 sg:py-0.5 sg:text-xs sg:font-semibold sg:transition-colors sg:focus:outline-none sg:focus:ring-2 sg:focus:ring-ring sg:focus:ring-offset-2",
7
15
  {
8
- variants: {
9
- variant: {
10
- default: "sg:bg-primary sg:text-primary-foreground sg:[a]:hover:bg-primary/80",
11
- secondary: "sg:bg-secondary sg:text-secondary-foreground sg:[a]:hover:bg-secondary/80",
12
- destructive: "sg:bg-destructive/10 sg:[a]:hover:bg-destructive/20 sg:focus-visible:ring-destructive/20 sg:dark:focus-visible:ring-destructive/40 sg:text-destructive sg:dark:bg-destructive/20",
13
- outline: "sg:border-border sg:text-foreground sg:[a]:hover:bg-muted sg:[a]:hover:text-muted-foreground sg:bg-input/30",
14
- ghost: "sg:hover:bg-muted sg:hover:text-muted-foreground sg:dark:hover:bg-muted/50",
15
- link: "sg:text-primary sg:underline-offset-4 sg:hover:underline"
16
- }
17
- },
16
+ variants: badgeVariants,
18
17
  defaultVariants: {
19
18
  variant: "default"
20
19
  }
@@ -30,7 +29,7 @@ function Badge({
30
29
  defaultTagName: "span",
31
30
  props: mergeProps(
32
31
  {
33
- className: cn(badgeVariants({ className, variant }))
32
+ className: cn(badgeVariantsProps({ className, variant }))
34
33
  },
35
34
  props
36
35
  ),
@@ -43,6 +42,7 @@ function Badge({
43
42
  }
44
43
  export {
45
44
  Badge,
46
- badgeVariants
45
+ badgeVariants,
46
+ badgeVariantsProps
47
47
  };
48
48
  //# sourceMappingURL=badge.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/primitives/badge/badge.tsx"],"sourcesContent":["import { cn } from \"@/utils\";\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nconst badgeVariants = cva(\n \"sg:h-5 sg:gap-1 sg:rounded-4xl sg:border sg:border-transparent sg:px-2 sg:py-0.5 sg:text-xs sg:font-medium sg:transition-all sg:has-data-[icon=inline-end]:pe-1.5 sg:has-data-[icon=inline-start]:ps-1.5 sg:[&>svg]:size-3! sg:inline-flex sg:items-center sg:justify-center sg:w-fit sg:whitespace-nowrap sg:shrink-0 sg:[&>svg]:pointer-events-none sg:focus-visible:border-ring sg:focus-visible:ring-ring/50 sg:focus-visible:ring-[3px] sg:aria-invalid:ring-destructive/20 sg:dark:aria-invalid:ring-destructive/40 sg:aria-invalid:border-destructive sg:overflow-hidden sg:group/badge\",\n {\n variants: {\n variant: {\n default:\n \"sg:bg-primary sg:text-primary-foreground sg:[a]:hover:bg-primary/80\",\n secondary:\n \"sg:bg-secondary sg:text-secondary-foreground sg:[a]:hover:bg-secondary/80\",\n destructive:\n \"sg:bg-destructive/10 sg:[a]:hover:bg-destructive/20 sg:focus-visible:ring-destructive/20 sg:dark:focus-visible:ring-destructive/40 sg:text-destructive sg:dark:bg-destructive/20\",\n outline:\n \"sg:border-border sg:text-foreground sg:[a]:hover:bg-muted sg:[a]:hover:text-muted-foreground sg:bg-input/30\",\n ghost:\n \"sg:hover:bg-muted sg:hover:text-muted-foreground sg:dark:hover:bg-muted/50\",\n link: \"sg:text-primary sg:underline-offset-4 sg:hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ className, variant })),\n },\n props,\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n });\n}\n\nexport { Badge, badgeVariants };\n"],"mappings":"AAAA,SAAS,UAAU;AACnB,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B,SAAS,WAA8B;AAEvC,MAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,WACE;AAAA,QACF,aACE;AAAA,QACF,SACE;AAAA,QACF,OACE;AAAA,QACF,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,MAAM;AAAA,EACb;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,GAA0E;AACxE,SAAO,UAAU;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAO;AAAA,MACL;AAAA,QACE,WAAW,GAAG,cAAc,EAAE,WAAW,QAAQ,CAAC,CAAC;AAAA,MACrD;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,IACF;AAAA,EACF,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/primitives/badge/badge.tsx"],"sourcesContent":["import { cn } from \"../../../utils\";\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nconst badgeVariants = {\n variant: {\n default:\n \"sg:border-transparent sg:bg-primary sg:text-primary-foreground sg:hover:bg-primary/80\",\n secondary:\n \"sg:border-transparent sg:bg-secondary sg:text-secondary-foreground sg:hover:bg-secondary/80\",\n destructive:\n \"sg:border-transparent sg:bg-destructive sg:text-destructive-foreground sg:hover:bg-destructive/80\",\n outline: \"sg:text-foreground\",\n },\n};\n\nconst badgeVariantsProps = cva(\n \"sg:inline-flex sg:items-center sg:rounded-full sg:border sg:px-2.5 sg:py-0.5 sg:text-xs sg:font-semibold sg:transition-colors sg:focus:outline-none sg:focus:ring-2 sg:focus:ring-ring sg:focus:ring-offset-2\",\n {\n variants: badgeVariants,\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariantsProps>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariantsProps({ className, variant })),\n },\n props,\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n });\n}\n\nexport { Badge, badgeVariantsProps, badgeVariants };\n"],"mappings":"AAAA,SAAS,UAAU;AACnB,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B,SAAS,WAA8B;AAEvC,MAAM,gBAAgB;AAAA,EACpB,SAAS;AAAA,IACP,SACE;AAAA,IACF,WACE;AAAA,IACF,aACE;AAAA,IACF,SAAS;AAAA,EACX;AACF;AAEA,MAAM,qBAAqB;AAAA,EACzB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,IACV,iBAAiB;AAAA,MACf,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,MAAM;AAAA,EACb;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,GAAG;AACL,GAA+E;AAC7E,SAAO,UAAU;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAO;AAAA,MACL;AAAA,QACE,WAAW,GAAG,mBAAmB,EAAE,WAAW,QAAQ,CAAC,CAAC;AAAA,MAC1D;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN;AAAA,IACF;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -2,31 +2,36 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as class_variance_authority_types from 'class-variance-authority/types';
3
3
  import { Button as Button$1 } from '@base-ui/react/button';
4
4
  import { VariantProps } from 'class-variance-authority';
5
+ import { icons } from 'lucide-react';
5
6
 
6
7
  declare const buttonVariants: {
7
8
  variant: {
8
9
  default: string;
10
+ destructive: string;
9
11
  outline: string;
10
12
  secondary: string;
11
13
  ghost: string;
12
- destructive: string;
13
14
  link: string;
14
15
  };
15
16
  size: {
16
- default: string;
17
- xs: string;
18
17
  sm: string;
18
+ default: string;
19
19
  lg: string;
20
- icon: string;
21
- "icon-xs": string;
22
20
  "icon-sm": string;
21
+ "icon-md": string;
23
22
  "icon-lg": string;
24
23
  };
25
24
  };
26
25
  declare const buttonVariantsProps: (props?: ({
27
26
  variant?: "link" | "default" | "destructive" | "secondary" | "outline" | "ghost" | null | undefined;
28
- size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
27
+ size?: "default" | "sm" | "lg" | "icon-sm" | "icon-md" | "icon-lg" | null | undefined;
29
28
  } & class_variance_authority_types.ClassProp) | undefined) => string;
30
- declare function Button({ className, variant, size, ...props }: Button$1.Props & VariantProps<typeof buttonVariantsProps>): react_jsx_runtime.JSX.Element;
29
+ type Props = Button$1.Props & VariantProps<typeof buttonVariantsProps> & {
30
+ iconStart?: keyof typeof icons;
31
+ iconStartAnimate?: boolean;
32
+ iconEnd?: keyof typeof icons;
33
+ iconEndAnimate?: boolean;
34
+ };
35
+ declare function Button({ className, variant, size, iconStart, iconStartAnimate, iconEnd, iconEndAnimate, ...props }: Props): react_jsx_runtime.JSX.Element;
31
36
 
32
37
  export { Button, buttonVariants, buttonVariantsProps };
@@ -1,30 +1,29 @@
1
1
  "use client";
2
- import { jsx } from "react/jsx-runtime";
3
- import { cn } from "@/utils";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { cn } from "../../../utils";
4
4
  import { Button as ButtonPrimitive } from "@base-ui/react/button";
5
5
  import { cva } from "class-variance-authority";
6
+ import { icons } from "lucide-react";
6
7
  const buttonVariants = {
7
8
  variant: {
8
- default: "sg:bg-primary sg:text-primary-foreground sg:hover:bg-primary/80",
9
- outline: "sg:border-border sg:bg-input/30 sg:hover:bg-input/50 sg:hover:text-foreground sg:aria-expanded:bg-muted sg:aria-expanded:text-foreground",
10
- secondary: "sg:bg-secondary sg:text-secondary-foreground sg:hover:bg-secondary/80 sg:aria-expanded:bg-secondary sg:aria-expanded:text-secondary-foreground",
11
- ghost: "sg:hover:bg-muted sg:hover:text-foreground sg:dark:hover:bg-muted/50 sg:aria-expanded:bg-muted sg:aria-expanded:text-foreground",
12
- destructive: "sg:bg-destructive/10 sg:hover:bg-destructive/20 sg:focus-visible:ring-destructive/20 sg:dark:focus-visible:ring-destructive/40 sg:dark:bg-destructive/20 sg:text-destructive sg:focus-visible:border-destructive/40 sg:dark:hover:bg-destructive/30",
9
+ default: "sg:bg-primary sg:text-primary-foreground sg:hover:brightness-110",
10
+ destructive: "sg:bg-destructive sg:text-destructive-foreground sg:hover:brightness-110",
11
+ outline: "sg:border sg:border-input sg:bg-background sg:hover:bg-muted sg:hover:text-foreground",
12
+ secondary: "sg:bg-secondary sg:text-secondary-foreground sg:hover:brightness-90",
13
+ ghost: "sg:hover:bg-muted sg:hover:text-foreground",
13
14
  link: "sg:text-primary sg:underline-offset-4 sg:hover:underline"
14
15
  },
15
16
  size: {
16
- default: "sg:h-9 sg:gap-1.5 sg:px-3 sg:has-data-[icon=inline-end]:pe-2.5 sg:has-data-[icon=inline-start]:ps-2.5",
17
- xs: "sg:h-6 sg:gap-1 sg:px-2.5 sg:text-xs sg:has-data-[icon=inline-end]:pe-2 sg:has-data-[icon=inline-start]:ps-2 sg:[&_svg:not([class*=size-])]:size-3",
18
- sm: "sg:h-8 sg:gap-1 sg:px-3 sg:has-data-[icon=inline-end]:pe-2 sg:has-data-[icon=inline-start]:ps-2",
19
- lg: "sg:h-10 sg:gap-1.5 sg:px-4 sg:has-data-[icon=inline-end]:pe-3 sg:has-data-[icon=inline-start]:ps-3",
20
- icon: "sg:size-9",
21
- "icon-xs": "sg:size-6 sg:[&_svg:not([class*=size-])]:size-3",
17
+ sm: "sg:h-8 sg:gap-1 sg:px-3 sg:has-data-[icon=inline-end]:pr-2 sg:has-data-[icon=inline-start]:pl-2",
18
+ default: "sg:h-9 sg:gap-1.5 sg:px-3 sg:has-data-[icon=inline-end]:pr-2.5 sg:has-data-[icon=inline-start]:pl-2.5",
19
+ lg: "sg:h-10 sg:gap-1.5 sg:px-4 sg:has-data-[icon=inline-end]:pr-3 sg:has-data-[icon=inline-start]:pl-3",
22
20
  "icon-sm": "sg:size-8",
21
+ "icon-md": "sg:size-9",
23
22
  "icon-lg": "sg:size-10"
24
23
  }
25
24
  };
26
25
  const buttonVariantsProps = cva(
27
- "sg:focus-visible:border-ring sg:focus-visible:ring-ring/50 sg:aria-invalid:ring-destructive/20 sg:dark:aria-invalid:ring-destructive/40 sg:aria-invalid:border-destructive sg:dark:aria-invalid:border-destructive/50 sg:rounded-4xl sg:border sg:border-transparent sg:bg-clip-padding sg:text-sm sg:font-medium sg:focus-visible:ring-[3px] sg:aria-invalid:ring-[3px] sg:[&_svg:not([class*=size-])]:size-4 sg:inline-flex sg:items-center sg:justify-center sg:whitespace-nowrap sg:transition-all sg:disabled:pointer-events-none sg:disabled:opacity-50 sg:[&_svg]:pointer-events-none sg:shrink-0 sg:[&_svg]:shrink-0 sg:outline-none sg:group/button sg:select-none",
26
+ "sg:inline-flex sg:items-center sg:justify-center sg:gap-2 sg:whitespace-nowrap sg:rounded-md sg:text-sm sg:font-medium sg:ring-offset-background sg:transition-colors sg:focus-visible:outline-none sg:focus-visible:ring-2 sg:focus-visible:ring-ring sg:focus-visible:ring-offset-2 sg:disabled:pointer-events-none sg:disabled:opacity-50 sg:[&_svg]:pointer-events-none sg:[&_svg]:size-4 sg:[&_svg]:shrink-0",
28
27
  {
29
28
  variants: buttonVariants,
30
29
  defaultVariants: {
@@ -37,14 +36,46 @@ function Button({
37
36
  className,
38
37
  variant = "default",
39
38
  size = "default",
39
+ iconStart,
40
+ iconStartAnimate,
41
+ iconEnd,
42
+ iconEndAnimate,
40
43
  ...props
41
44
  }) {
42
- return /* @__PURE__ */ jsx(
45
+ const iconAnimateCss = "sg:animate-spin";
46
+ const LucideIconStart = iconStart && icons[iconStart];
47
+ const LucideIconEnd = iconEnd && icons[iconEnd];
48
+ return /* @__PURE__ */ jsxs(
43
49
  ButtonPrimitive,
44
50
  {
45
51
  "data-slot": "button",
46
52
  className: cn(buttonVariantsProps({ variant, size, className })),
47
- ...props
53
+ ...props,
54
+ children: [
55
+ LucideIconStart && /* @__PURE__ */ jsx(
56
+ LucideIconStart,
57
+ {
58
+ className: cn(
59
+ "sg:size-4",
60
+ iconStartAnimate && iconAnimateCss,
61
+ props.disabled && "sg:opacity-50"
62
+ ),
63
+ "data-icon": "inline-start"
64
+ }
65
+ ),
66
+ props.children,
67
+ LucideIconEnd && /* @__PURE__ */ jsx(
68
+ LucideIconEnd,
69
+ {
70
+ className: cn(
71
+ "sg:size-4",
72
+ iconEndAnimate && iconAnimateCss,
73
+ props.disabled && "sg:opacity-50"
74
+ ),
75
+ "data-icon": "inline-end"
76
+ }
77
+ )
78
+ ]
48
79
  }
49
80
  );
50
81
  }