singularity-components 0.1.151 → 0.1.193

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 (244) hide show
  1. package/README.md +29 -12
  2. package/dist/components/blocks/cards/blogpost-card.d.ts +9 -4
  3. package/dist/components/blocks/cards/blogpost-card.js +37 -23
  4. package/dist/components/blocks/cards/blogpost-card.js.map +1 -1
  5. package/dist/components/blocks/cards/card.js +1 -1
  6. package/dist/components/blocks/cards/card.js.map +1 -1
  7. package/dist/components/blocks/empty-state/EmptyState.d.ts +15 -0
  8. package/dist/components/blocks/empty-state/EmptyState.js +36 -0
  9. package/dist/components/blocks/empty-state/EmptyState.js.map +1 -0
  10. package/dist/components/blocks/index.d.ts +2 -0
  11. package/dist/components/blocks/index.js +4 -2
  12. package/dist/components/blocks/index.js.map +1 -1
  13. package/dist/components/blocks/post-list/post-filters.d.ts +19 -0
  14. package/dist/components/blocks/post-list/post-filters.js +99 -0
  15. package/dist/components/blocks/post-list/post-filters.js.map +1 -0
  16. package/dist/components/blocks/post-list/post-list-with-filters.d.ts +19 -0
  17. package/dist/components/blocks/post-list/post-list-with-filters.js +439 -0
  18. package/dist/components/blocks/post-list/post-list-with-filters.js.map +1 -0
  19. package/dist/components/index.d.ts +42 -12
  20. package/dist/components/index.js +5 -6
  21. package/dist/components/index.js.map +1 -1
  22. package/dist/components/pages/admin/admin-page.d.ts +8 -0
  23. package/dist/components/pages/admin/admin-page.js +299 -0
  24. package/dist/components/pages/admin/admin-page.js.map +1 -0
  25. package/dist/components/pages/blogpost/blogpost.js +440 -0
  26. package/dist/components/pages/blogpost/blogpost.js.map +1 -0
  27. package/dist/components/pages/category/category-page.d.ts +8 -0
  28. package/dist/components/pages/category/category-page.js +69 -0
  29. package/dist/components/pages/category/category-page.js.map +1 -0
  30. package/dist/components/pages/chat/chat-page.d.ts +5 -0
  31. package/dist/components/pages/chat/chat-page.js +209 -0
  32. package/dist/components/pages/chat/chat-page.js.map +1 -0
  33. package/dist/components/pages/index.d.ts +11 -0
  34. package/dist/components/pages/index.js +11 -0
  35. package/dist/components/pages/index.js.map +1 -0
  36. package/dist/components/pages/login/login-page.d.ts +19 -0
  37. package/dist/components/pages/login/login-page.js +108 -0
  38. package/dist/components/pages/login/login-page.js.map +1 -0
  39. package/dist/components/pages/maintenance/maintenance-page.d.ts +5 -0
  40. package/dist/components/pages/maintenance/maintenance-page.js +50 -0
  41. package/dist/components/pages/maintenance/maintenance-page.js.map +1 -0
  42. package/dist/components/pages/not-found/not-found.d.ts +10 -0
  43. package/dist/components/pages/not-found/not-found.js +64 -0
  44. package/dist/components/pages/not-found/not-found.js.map +1 -0
  45. package/dist/components/pages/privacy/privacy-page.d.ts +15 -0
  46. package/dist/components/pages/privacy/privacy-page.js +98 -0
  47. package/dist/components/pages/privacy/privacy-page.js.map +1 -0
  48. package/dist/components/pages/search/search-page.d.ts +5 -0
  49. package/dist/components/pages/search/search-page.js +18 -0
  50. package/dist/components/pages/search/search-page.js.map +1 -0
  51. package/dist/components/pages/startpage/startpage.js +50 -0
  52. package/dist/components/pages/startpage/startpage.js.map +1 -0
  53. package/dist/components/pages/terms/terms-page.d.ts +15 -0
  54. package/dist/components/pages/terms/terms-page.js +98 -0
  55. package/dist/components/pages/terms/terms-page.js.map +1 -0
  56. package/dist/components/primitives/accordion/accordion.js +1 -1
  57. package/dist/components/primitives/accordion/accordion.js.map +1 -1
  58. package/dist/components/primitives/alert/alert.js +1 -1
  59. package/dist/components/primitives/alert/alert.js.map +1 -1
  60. package/dist/components/primitives/avatar/avatar.d.ts +14 -0
  61. package/dist/components/primitives/avatar/avatar.js +103 -0
  62. package/dist/components/primitives/avatar/avatar.js.map +1 -0
  63. package/dist/components/primitives/badge/badge.d.ts +1 -1
  64. package/dist/components/primitives/badge/badge.js +5 -5
  65. package/dist/components/primitives/badge/badge.js.map +1 -1
  66. package/dist/components/primitives/badge/badges.js +1 -1
  67. package/dist/components/primitives/badge/badges.js.map +1 -1
  68. package/dist/components/primitives/{button → buttons}/button.d.ts +8 -7
  69. package/dist/components/primitives/{button → buttons}/button.js +19 -14
  70. package/dist/components/primitives/buttons/button.js.map +1 -0
  71. package/dist/components/primitives/buttons/icon-button.d.ts +33 -0
  72. package/dist/components/primitives/buttons/icon-button.js +61 -0
  73. package/dist/components/primitives/buttons/icon-button.js.map +1 -0
  74. package/dist/components/primitives/{link → buttons}/link-button.d.ts +7 -4
  75. package/dist/components/primitives/buttons/link-button.js +35 -0
  76. package/dist/components/primitives/buttons/link-button.js.map +1 -0
  77. package/dist/components/primitives/collapsible/collapsible.d.ts +9 -0
  78. package/dist/components/primitives/collapsible/collapsible.js +53 -0
  79. package/dist/components/primitives/collapsible/collapsible.js.map +1 -0
  80. package/dist/components/primitives/dropdown-menu/dropdown-menu.d.ts +30 -0
  81. package/dist/components/primitives/dropdown-menu/dropdown-menu.js +164 -0
  82. package/dist/components/primitives/dropdown-menu/dropdown-menu.js.map +1 -0
  83. package/dist/components/primitives/forms/checkbox.d.ts +6 -0
  84. package/dist/components/primitives/forms/checkbox.js +30 -0
  85. package/dist/components/primitives/forms/checkbox.js.map +1 -0
  86. package/dist/components/primitives/forms/field.d.ts +29 -0
  87. package/dist/components/primitives/forms/field.js +218 -0
  88. package/dist/components/primitives/forms/field.js.map +1 -0
  89. package/dist/components/primitives/forms/input.d.ts +6 -0
  90. package/dist/components/primitives/forms/input.js +22 -0
  91. package/dist/components/primitives/forms/input.js.map +1 -0
  92. package/dist/components/primitives/forms/select.d.ts +22 -0
  93. package/dist/components/primitives/forms/select.js +169 -0
  94. package/dist/components/primitives/forms/select.js.map +1 -0
  95. package/dist/components/primitives/forms/textarea.d.ts +6 -0
  96. package/dist/components/primitives/forms/textarea.js +20 -0
  97. package/dist/components/primitives/forms/textarea.js.map +1 -0
  98. package/dist/components/primitives/icon/icon.d.ts +9 -2
  99. package/dist/components/primitives/icon/icon.js +10 -3
  100. package/dist/components/primitives/icon/icon.js.map +1 -1
  101. package/dist/components/primitives/index.d.ts +23 -7
  102. package/dist/components/primitives/index.js +31 -20
  103. package/dist/components/primitives/index.js.map +1 -1
  104. package/dist/components/primitives/label/label.d.ts +6 -0
  105. package/dist/components/primitives/label/label.js +22 -0
  106. package/dist/components/primitives/label/label.js.map +1 -0
  107. package/dist/components/primitives/layout/layout.d.ts +6 -3
  108. package/dist/components/primitives/layout/layout.js +28 -11
  109. package/dist/components/primitives/layout/layout.js.map +1 -1
  110. package/dist/components/primitives/link/link.d.ts +11 -5
  111. package/dist/components/primitives/link/link.js +38 -11
  112. package/dist/components/primitives/link/link.js.map +1 -1
  113. package/dist/components/primitives/separator/separator.js +1 -1
  114. package/dist/components/primitives/separator/separator.js.map +1 -1
  115. package/dist/components/primitives/sheet/sheet.d.ts +29 -0
  116. package/dist/components/primitives/sheet/sheet.js +117 -0
  117. package/dist/components/primitives/sheet/sheet.js.map +1 -0
  118. package/dist/components/primitives/skeleton/skeleton.js +1 -1
  119. package/dist/components/primitives/skeleton/skeleton.js.map +1 -1
  120. package/dist/components/primitives/sonner/sonner.d.ts +7 -0
  121. package/dist/components/primitives/sonner/sonner.js +42 -0
  122. package/dist/components/primitives/sonner/sonner.js.map +1 -0
  123. package/dist/components/primitives/sonner/use-toast.d.ts +24 -0
  124. package/dist/components/primitives/sonner/use-toast.js +21 -0
  125. package/dist/components/primitives/sonner/use-toast.js.map +1 -0
  126. package/dist/components/primitives/spinner/spinner.js +1 -1
  127. package/dist/components/primitives/spinner/spinner.js.map +1 -1
  128. package/dist/components/primitives/stack/stack.d.ts +3 -0
  129. package/dist/components/primitives/stack/stack.js +34 -4
  130. package/dist/components/primitives/stack/stack.js.map +1 -1
  131. package/dist/components/primitives/text/{text-heading.d.ts → heading.d.ts} +5 -5
  132. package/dist/components/primitives/text/{text-heading.js → heading.js} +11 -11
  133. package/dist/components/primitives/text/heading.js.map +1 -0
  134. package/dist/components/primitives/text/internal/text-element.d.ts +7 -3
  135. package/dist/components/primitives/text/internal/text-element.js +4 -2
  136. package/dist/components/primitives/text/internal/text-element.js.map +1 -1
  137. package/dist/components/primitives/text/text-code.d.ts +26 -0
  138. package/dist/components/primitives/text/text-code.js +44 -0
  139. package/dist/components/primitives/text/text-code.js.map +1 -0
  140. package/dist/components/primitives/text/text-div.js +2 -2
  141. package/dist/components/primitives/text/text-div.js.map +1 -1
  142. package/dist/components/primitives/text/text-span.js +2 -2
  143. package/dist/components/primitives/text/text-span.js.map +1 -1
  144. package/dist/components/primitives/text/text-time.js +2 -2
  145. package/dist/components/primitives/text/text-time.js.map +1 -1
  146. package/dist/components/primitives/text/{text-paragraph.d.ts → text.d.ts} +4 -4
  147. package/dist/components/primitives/text/{text-paragraph.js → text.js} +11 -11
  148. package/dist/components/primitives/text/text.js.map +1 -0
  149. package/dist/components/primitives/{ui-image.d.ts → ui-image/ui-image.d.ts} +1 -1
  150. package/dist/components/primitives/{ui-image.js → ui-image/ui-image.js} +3 -3
  151. package/dist/components/primitives/ui-image/ui-image.js.map +1 -0
  152. package/dist/components/primitives/ui-link/ui-link.d.ts +8 -0
  153. package/dist/components/primitives/ui-link/ui-link.js +19 -0
  154. package/dist/components/primitives/ui-link/ui-link.js.map +1 -0
  155. package/dist/components/providers/LinkContext.d.ts +1 -1
  156. package/dist/components/providers/LinkContext.js +1 -1
  157. package/dist/components/providers/LinkContext.js.map +1 -1
  158. package/dist/components/providers/SingularityContext.d.ts +4 -1
  159. package/dist/components/providers/SingularityContext.js +7 -3
  160. package/dist/components/providers/SingularityContext.js.map +1 -1
  161. package/dist/components/providers/auth-provider.d.ts +15 -0
  162. package/dist/components/providers/auth-provider.js +30 -0
  163. package/dist/components/providers/auth-provider.js.map +1 -0
  164. package/dist/components/providers/index.d.ts +3 -0
  165. package/dist/components/providers/index.js +5 -3
  166. package/dist/components/providers/index.js.map +1 -1
  167. package/dist/components/providers/theme-provider.d.ts +27 -0
  168. package/dist/components/providers/theme-provider.js +75 -0
  169. package/dist/components/providers/theme-provider.js.map +1 -0
  170. package/dist/components/templates/container/container.d.ts +20 -0
  171. package/dist/components/templates/container/container.js +58 -0
  172. package/dist/components/templates/container/container.js.map +1 -0
  173. package/dist/components/templates/footer/footer.d.ts +5 -0
  174. package/dist/components/templates/footer/footer.js +12 -0
  175. package/dist/components/templates/footer/footer.js.map +1 -0
  176. package/dist/components/templates/form/form.d.ts +5 -0
  177. package/dist/components/templates/form/form.js +141 -0
  178. package/dist/components/templates/form/form.js.map +1 -0
  179. package/dist/components/templates/hero/hero.d.ts +18 -0
  180. package/dist/components/{sections → templates}/hero/hero.js +52 -22
  181. package/dist/components/templates/hero/hero.js.map +1 -0
  182. package/dist/components/templates/index.d.ts +4 -2
  183. package/dist/components/templates/index.js +4 -2
  184. package/dist/components/templates/index.js.map +1 -1
  185. package/dist/components/templates/navigation/header.d.ts +19 -0
  186. package/dist/components/templates/navigation/header.js +222 -0
  187. package/dist/components/templates/navigation/header.js.map +1 -0
  188. package/dist/components/templates/navigation/index.d.ts +3 -0
  189. package/dist/components/templates/navigation/index.js +2 -0
  190. package/dist/components/templates/navigation/index.js.map +1 -0
  191. package/dist/css/variables.css +2 -2
  192. package/dist/css/variables.css.map +1 -1
  193. package/dist/data/authors.d.ts +12 -0
  194. package/dist/data/authors.js +33 -0
  195. package/dist/data/authors.js.map +1 -0
  196. package/dist/data/posts.d.ts +5 -3
  197. package/dist/data/posts.js +66 -47
  198. package/dist/data/posts.js.map +1 -1
  199. package/dist/index.d.ts +42 -12
  200. package/dist/index.js +1 -1
  201. package/dist/index.js.map +1 -1
  202. package/dist/lib/helpers/index.js +1 -1
  203. package/dist/lib/helpers/index.js.map +1 -1
  204. package/dist/lib/index.js +2 -2
  205. package/dist/lib/index.js.map +1 -1
  206. package/dist/lib/types.d.ts +4 -8
  207. package/dist/main.css +1528 -85
  208. package/dist/main.css.map +1 -1
  209. package/dist/{utils.js → utils/index.js} +1 -1
  210. package/dist/utils/index.js.map +1 -0
  211. package/dist/utils/index.test.js +37 -0
  212. package/dist/utils/index.test.js.map +1 -0
  213. package/package.json +69 -44
  214. package/dist/components/primitives/button/button.js.map +0 -1
  215. package/dist/components/primitives/link/link-button.js +0 -21
  216. package/dist/components/primitives/link/link-button.js.map +0 -1
  217. package/dist/components/primitives/text/text-heading.js.map +0 -1
  218. package/dist/components/primitives/text/text-paragraph.js.map +0 -1
  219. package/dist/components/primitives/ui-image.js.map +0 -1
  220. package/dist/components/primitives/ui-link.d.ts +0 -8
  221. package/dist/components/primitives/ui-link.js +0 -16
  222. package/dist/components/primitives/ui-link.js.map +0 -1
  223. package/dist/components/sections/body/body.d.ts +0 -19
  224. package/dist/components/sections/body/body.js +0 -49
  225. package/dist/components/sections/body/body.js.map +0 -1
  226. package/dist/components/sections/footer/footer.d.ts +0 -12
  227. package/dist/components/sections/footer/footer.js +0 -59
  228. package/dist/components/sections/footer/footer.js.map +0 -1
  229. package/dist/components/sections/hero/hero.d.ts +0 -6
  230. package/dist/components/sections/hero/hero.js.map +0 -1
  231. package/dist/components/sections/index.d.ts +0 -3
  232. package/dist/components/sections/index.js +0 -4
  233. package/dist/components/sections/index.js.map +0 -1
  234. package/dist/components/templates/blogpost/blogpost.js +0 -173
  235. package/dist/components/templates/blogpost/blogpost.js.map +0 -1
  236. package/dist/components/templates/startpage/startpage.js +0 -48
  237. package/dist/components/templates/startpage/startpage.js.map +0 -1
  238. package/dist/components/units/index.js +0 -1
  239. package/dist/components/units/index.js.map +0 -1
  240. package/dist/utils.js.map +0 -1
  241. /package/dist/components/{templates → pages}/blogpost/blogpost.d.ts +0 -0
  242. /package/dist/components/{templates → pages}/startpage/startpage.d.ts +0 -0
  243. /package/dist/{utils.d.ts → utils/index.d.ts} +0 -0
  244. /package/dist/{components/units/index.d.ts → utils/index.test.d.ts} +0 -0
@@ -0,0 +1,218 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useMemo } from "react";
4
+ import { cva } from "class-variance-authority";
5
+ import { cn } from "../../../utils/index.js";
6
+ import { Label, Separator } from "../index.js";
7
+ function FieldSet({ className, ...props }) {
8
+ return /* @__PURE__ */ jsx(
9
+ "fieldset",
10
+ {
11
+ "data-slot": "field-set",
12
+ className: cn(
13
+ "sg:flex sg:flex-col sg:gap-6 sg:has-[>[data-slot=checkbox-group]]:gap-3 sg:has-[>[data-slot=radio-group]]:gap-3",
14
+ className
15
+ ),
16
+ ...props
17
+ }
18
+ );
19
+ }
20
+ function FieldLegend({
21
+ className,
22
+ variant = "legend",
23
+ ...props
24
+ }) {
25
+ return /* @__PURE__ */ jsx(
26
+ "legend",
27
+ {
28
+ "data-slot": "field-legend",
29
+ "data-variant": variant,
30
+ className: cn(
31
+ "sg:mb-3 sg:font-medium sg:data-[variant=label]:text-sm sg:data-[variant=legend]:text-base",
32
+ className
33
+ ),
34
+ ...props
35
+ }
36
+ );
37
+ }
38
+ function FieldGroup({ className, ...props }) {
39
+ return /* @__PURE__ */ jsx(
40
+ "div",
41
+ {
42
+ "data-slot": "field-group",
43
+ className: cn(
44
+ "sg:group/field-group sg:@container/field-group sg:flex sg:w-full sg:flex-col sg:gap-7 sg:data-[slot=checkbox-group]:gap-3 sg:*:data-[slot=field-group]:gap-4",
45
+ className
46
+ ),
47
+ ...props
48
+ }
49
+ );
50
+ }
51
+ const fieldVariants = cva(
52
+ "sg:group/field sg:flex sg:w-full sg:gap-3 sg:data-[invalid=true]:text-destructive",
53
+ {
54
+ variants: {
55
+ orientation: {
56
+ vertical: "sg:flex-col sg:*:w-full sg:[&>.sr-only]:w-auto",
57
+ horizontal: "sg:flex-row sg:items-center sg:has-[>[data-slot=field-content]]:items-start sg:*:data-[slot=field-label]:flex-auto sg:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
58
+ responsive: "sg:flex-col sg:*:w-full sg:@md/field-group:flex-row sg:@md/field-group:items-center sg:@md/field-group:*:w-auto sg:@md/field-group:has-[>[data-slot=field-content]]:items-start sg:@md/field-group:*:data-[slot=field-label]:flex-auto sg:[&>.sr-only]:w-auto sg:@md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
59
+ }
60
+ },
61
+ defaultVariants: {
62
+ orientation: "vertical"
63
+ }
64
+ }
65
+ );
66
+ function Field({
67
+ className,
68
+ orientation = "vertical",
69
+ ...props
70
+ }) {
71
+ return /* @__PURE__ */ jsx(
72
+ "div",
73
+ {
74
+ role: "group",
75
+ "data-slot": "field",
76
+ "data-orientation": orientation,
77
+ className: cn(fieldVariants({ orientation }), className),
78
+ ...props
79
+ }
80
+ );
81
+ }
82
+ function FieldContent({ className, ...props }) {
83
+ return /* @__PURE__ */ jsx(
84
+ "div",
85
+ {
86
+ "data-slot": "field-content",
87
+ className: cn(
88
+ "sg:group/field-content sg:flex sg:flex-1 sg:flex-col sg:gap-1 sg:leading-snug",
89
+ className
90
+ ),
91
+ ...props
92
+ }
93
+ );
94
+ }
95
+ function FieldLabel({
96
+ className,
97
+ ...props
98
+ }) {
99
+ return /* @__PURE__ */ jsx(
100
+ Label,
101
+ {
102
+ "data-slot": "field-label",
103
+ className: cn(
104
+ "sg:group/field-label sg:peer/field-label sg:flex sg:w-fit sg:gap-2 sg:leading-snug sg:group-data-[disabled=true]/field:opacity-50 sg:has-data-checked:border-primary/30 sg:has-data-checked:bg-primary/5 sg:has-[>[data-slot=field]]:rounded-xl sg:has-[>[data-slot=field]]:border sg:*:data-[slot=field]:p-4 sg:dark:has-data-checked:border-primary/20 sg:dark:has-data-checked:bg-primary/10",
105
+ "sg:has-[>[data-slot=field]]:w-full sg:has-[>[data-slot=field]]:flex-col",
106
+ className
107
+ ),
108
+ ...props
109
+ }
110
+ );
111
+ }
112
+ function FieldTitle({ className, ...props }) {
113
+ return /* @__PURE__ */ jsx(
114
+ "div",
115
+ {
116
+ "data-slot": "field-label",
117
+ className: cn(
118
+ "sg:flex sg:w-fit sg:items-center sg:gap-2 sg:text-sm sg:leading-snug sg:font-medium sg:group-data-[disabled=true]/field:opacity-50",
119
+ className
120
+ ),
121
+ ...props
122
+ }
123
+ );
124
+ }
125
+ function FieldDescription({ className, ...props }) {
126
+ return /* @__PURE__ */ jsx(
127
+ "p",
128
+ {
129
+ "data-slot": "field-description",
130
+ className: cn(
131
+ "sg:text-left sg:text-sm sg:leading-normal sg:font-normal sg:text-muted-foreground sg:group-has-data-horizontal/field:text-balance sg:[[data-variant=legend]+&]:-mt-1.5",
132
+ "sg:last:mt-0 sg:nth-last-2:-mt-1",
133
+ "sg:[&>a]:underline sg:[&>a]:underline-offset-4 sg:[&>a:hover]:text-primary",
134
+ className
135
+ ),
136
+ ...props
137
+ }
138
+ );
139
+ }
140
+ function FieldSeparator({
141
+ children,
142
+ className,
143
+ ...props
144
+ }) {
145
+ return /* @__PURE__ */ jsxs(
146
+ "div",
147
+ {
148
+ "data-slot": "field-separator",
149
+ "data-content": !!children,
150
+ className: cn(
151
+ "sg:relative sg:-my-2 sg:h-5 sg:text-sm sg:group-data-[variant=outline]/field-group:-mb-2",
152
+ className
153
+ ),
154
+ ...props,
155
+ children: [
156
+ /* @__PURE__ */ jsx(Separator, { className: "sg:absolute sg:inset-0 sg:top-1/2" }),
157
+ children && /* @__PURE__ */ jsx(
158
+ "span",
159
+ {
160
+ className: "sg:relative sg:mx-auto sg:block sg:w-fit sg:bg-background sg:px-2 sg:text-muted-foreground",
161
+ "data-slot": "field-separator-content",
162
+ children
163
+ }
164
+ )
165
+ ]
166
+ }
167
+ );
168
+ }
169
+ function FieldError({
170
+ className,
171
+ children,
172
+ errors,
173
+ ...props
174
+ }) {
175
+ const content = useMemo(() => {
176
+ if (children) {
177
+ return children;
178
+ }
179
+ if (!errors?.length) {
180
+ return null;
181
+ }
182
+ const uniqueErrors = [
183
+ ...new Map(errors.map((error) => [error?.message, error])).values()
184
+ ];
185
+ if (uniqueErrors?.length == 1) {
186
+ return uniqueErrors[0]?.message;
187
+ }
188
+ return /* @__PURE__ */ jsx("ul", { className: "sg:ml-4 sg:flex sg:list-disc sg:flex-col sg:gap-1", children: uniqueErrors.map(
189
+ (error, index) => error?.message && /* @__PURE__ */ jsx("li", { children: error.message }, index)
190
+ ) });
191
+ }, [children, errors]);
192
+ if (!content) {
193
+ return null;
194
+ }
195
+ return /* @__PURE__ */ jsx(
196
+ "div",
197
+ {
198
+ role: "alert",
199
+ "data-slot": "field-error",
200
+ className: cn("sg:text-sm sg:font-normal sg:text-destructive", className),
201
+ ...props,
202
+ children: content
203
+ }
204
+ );
205
+ }
206
+ export {
207
+ Field,
208
+ FieldContent,
209
+ FieldDescription,
210
+ FieldError,
211
+ FieldGroup,
212
+ FieldLabel,
213
+ FieldLegend,
214
+ FieldSeparator,
215
+ FieldSet,
216
+ FieldTitle
217
+ };
218
+ //# sourceMappingURL=field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/primitives/forms/field.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../../utils/index\";\nimport { Label, Separator } from \"../index\";\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"sg:flex sg:flex-col sg:gap-6 sg:has-[>[data-slot=checkbox-group]]:gap-3 sg:has-[>[data-slot=radio-group]]:gap-3\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"sg:mb-3 sg:font-medium sg:data-[variant=label]:text-sm sg:data-[variant=legend]:text-base\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"sg:group/field-group sg:@container/field-group sg:flex sg:w-full sg:flex-col sg:gap-7 sg:data-[slot=checkbox-group]:gap-3 sg:*:data-[slot=field-group]:gap-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst fieldVariants = cva(\n \"sg:group/field sg:flex sg:w-full sg:gap-3 sg:data-[invalid=true]:text-destructive\",\n {\n variants: {\n orientation: {\n vertical: \"sg:flex-col sg:*:w-full sg:[&>.sr-only]:w-auto\",\n horizontal:\n \"sg:flex-row sg:items-center sg:has-[>[data-slot=field-content]]:items-start sg:*:data-[slot=field-label]:flex-auto sg:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"sg:flex-col sg:*:w-full sg:@md/field-group:flex-row sg:@md/field-group:items-center sg:@md/field-group:*:w-auto sg:@md/field-group:has-[>[data-slot=field-content]]:items-start sg:@md/field-group:*:data-[slot=field-label]:flex-auto sg:[&>.sr-only]:w-auto sg:@md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n },\n);\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"sg:group/field-content sg:flex sg:flex-1 sg:flex-col sg:gap-1 sg:leading-snug\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"sg:group/field-label sg:peer/field-label sg:flex sg:w-fit sg:gap-2 sg:leading-snug sg:group-data-[disabled=true]/field:opacity-50 sg:has-data-checked:border-primary/30 sg:has-data-checked:bg-primary/5 sg:has-[>[data-slot=field]]:rounded-xl sg:has-[>[data-slot=field]]:border sg:*:data-[slot=field]:p-4 sg:dark:has-data-checked:border-primary/20 sg:dark:has-data-checked:bg-primary/10\",\n \"sg:has-[>[data-slot=field]]:w-full sg:has-[>[data-slot=field]]:flex-col\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"sg:flex sg:w-fit sg:items-center sg:gap-2 sg:text-sm sg:leading-snug sg:font-medium sg:group-data-[disabled=true]/field:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"sg:text-left sg:text-sm sg:leading-normal sg:font-normal sg:text-muted-foreground sg:group-has-data-horizontal/field:text-balance sg:[[data-variant=legend]+&]:-mt-1.5\",\n \"sg:last:mt-0 sg:nth-last-2:-mt-1\",\n \"sg:[&>a]:underline sg:[&>a]:underline-offset-4 sg:[&>a:hover]:text-primary\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode;\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"sg:relative sg:-my-2 sg:h-5 sg:text-sm sg:group-data-[variant=outline]/field-group:-mb-2\",\n className,\n )}\n {...props}\n >\n <Separator className=\"sg:absolute sg:inset-0 sg:top-1/2\" />\n {children && (\n <span\n className=\"sg:relative sg:mx-auto sg:block sg:w-fit sg:bg-background sg:px-2 sg:text-muted-foreground\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n );\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>;\n}) {\n const content = useMemo(() => {\n if (children) {\n return children;\n }\n\n if (!errors?.length) {\n return null;\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ];\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message;\n }\n\n return (\n <ul className=\"sg:ml-4 sg:flex sg:list-disc sg:flex-col sg:gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>,\n )}\n </ul>\n );\n }, [children, errors]);\n\n if (!content) {\n return null;\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"sg:text-sm sg:font-normal sg:text-destructive\", className)}\n {...props}\n >\n {content}\n </div>\n );\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n};\n"],"mappings":"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","names":[]}
@@ -0,0 +1,6 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+
4
+ declare function Input({ className, type, ...props }: React.ComponentProps<"input">): react_jsx_runtime.JSX.Element;
5
+
6
+ export { Input };
@@ -0,0 +1,22 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { Input as InputPrimitive } from "@base-ui/react";
4
+ import { cn } from "../../../utils/index.js";
5
+ function Input({ className, type, ...props }) {
6
+ return /* @__PURE__ */ jsx(
7
+ InputPrimitive,
8
+ {
9
+ type,
10
+ "data-slot": "input",
11
+ className: cn(
12
+ "sg:flex sg:h-10 sg:w-full sg:rounded-md sg:border sg:border-input sg:bg-background sg:px-3 sg:py-2 sg:text-base sg:ring-offset-background sg:file:border-0 sg:file:bg-transparent sg:file:text-sm sg:file:font-medium sg:file:text-foreground sg:placeholder:text-muted-foreground sg:focus-visible:outline-none sg:focus-visible:ring-2 sg:focus-visible:ring-ring sg:focus-visible:ring-offset-2 sg:disabled:cursor-not-allowed sg:disabled:opacity-50 sg:md:text-sm",
13
+ className
14
+ ),
15
+ ...props
16
+ }
17
+ );
18
+ }
19
+ export {
20
+ Input
21
+ };
22
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/primitives/forms/input.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Input as InputPrimitive } from \"@base-ui/react\";\nimport { cn } from \"../../../utils/index\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"sg:flex sg:h-10 sg:w-full sg:rounded-md sg:border sg:border-input sg:bg-background sg:px-3 sg:py-2 sg:text-base sg:ring-offset-background sg:file:border-0 sg:file:bg-transparent sg:file:text-sm sg:file:font-medium sg:file:text-foreground sg:placeholder:text-muted-foreground sg:focus-visible:outline-none sg:focus-visible:ring-2 sg:focus-visible:ring-ring sg:focus-visible:ring-offset-2 sg:disabled:cursor-not-allowed sg:disabled:opacity-50 sg:md:text-sm\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n"],"mappings":"AAMI;AANJ,YAAY,WAAW;AACvB,SAAS,SAAS,sBAAsB;AACxC,SAAS,UAAU;AAEnB,SAAS,MAAM,EAAE,WAAW,MAAM,GAAG,MAAM,GAAkC;AAC3E,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}
@@ -0,0 +1,22 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as _base_ui_react from '@base-ui/react';
3
+ import { Select as Select$1 } from '@base-ui/react';
4
+ import * as React from 'react';
5
+
6
+ declare const Select: typeof Select$1.Root;
7
+ declare const SelectGroup: React.ForwardRefExoticComponent<Omit<_base_ui_react.SelectGroupProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
8
+ declare const SelectValue: React.ForwardRefExoticComponent<Omit<_base_ui_react.SelectValueProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
9
+ declare function SelectTrigger({ className, size, children, ...props }: Select$1.Trigger.Props & {
10
+ size?: "sm" | "default";
11
+ }): react_jsx_runtime.JSX.Element;
12
+ declare namespace SelectTrigger {
13
+ var displayName: string | undefined;
14
+ }
15
+ declare function SelectContent({ className, children, side, sideOffset, align, alignOffset, alignItemWithTrigger, ...props }: Select$1.Popup.Props & Pick<Select$1.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset" | "alignItemWithTrigger">): react_jsx_runtime.JSX.Element;
16
+ declare function SelectLabel({ className, ...props }: Select$1.GroupLabel.Props): react_jsx_runtime.JSX.Element;
17
+ declare function SelectItem({ className, children, ...props }: Select$1.Item.Props): react_jsx_runtime.JSX.Element;
18
+ declare function SelectSeparator({ className, ...props }: Select$1.Separator.Props): react_jsx_runtime.JSX.Element;
19
+ declare function SelectScrollUpButton({ className, ...props }: React.ComponentProps<typeof Select$1.ScrollUpArrow>): react_jsx_runtime.JSX.Element;
20
+ declare function SelectScrollDownButton({ className, ...props }: React.ComponentProps<typeof Select$1.ScrollDownArrow>): react_jsx_runtime.JSX.Element;
21
+
22
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue };
@@ -0,0 +1,169 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { Select as SelectPrimitive } from "@base-ui/react";
5
+ import { cn } from "../../../utils/index.js";
6
+ import { Icon } from "../icon/icon.js";
7
+ const Select = SelectPrimitive.Root;
8
+ const SelectGroup = SelectPrimitive.Group;
9
+ const SelectValue = SelectPrimitive.Value;
10
+ function SelectTrigger({
11
+ className,
12
+ size = "default",
13
+ children,
14
+ ...props
15
+ }) {
16
+ return /* @__PURE__ */ jsxs(
17
+ SelectPrimitive.Trigger,
18
+ {
19
+ "data-slot": "select-trigger",
20
+ "data-size": size,
21
+ className: cn(
22
+ "sg:flex sg:h-10 sg:w-full sg:items-center sg:justify-between sg:rounded-md sg:border sg:border-input sg:bg-background sg:px-3 sg:py-2 sg:text-sm sg:ring-offset-background sg:placeholder:text-muted-foreground sg:focus:outline-none sg:focus:ring-2 sg:focus:ring-ring sg:focus:ring-offset-2 sg:disabled:cursor-not-allowed sg:disabled:opacity-50 sg:[&>span]:line-clamp-1",
23
+ className
24
+ ),
25
+ ...props,
26
+ children: [
27
+ children,
28
+ /* @__PURE__ */ jsx(SelectPrimitive.Icon, { render: /* @__PURE__ */ jsx(Icon, { icon: "ChevronDown" }) })
29
+ ]
30
+ }
31
+ );
32
+ }
33
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
34
+ function SelectContent({
35
+ className,
36
+ children,
37
+ side = "bottom",
38
+ sideOffset = 4,
39
+ align = "center",
40
+ alignOffset = 0,
41
+ alignItemWithTrigger = true,
42
+ ...props
43
+ }) {
44
+ return /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsx(
45
+ SelectPrimitive.Positioner,
46
+ {
47
+ side,
48
+ sideOffset,
49
+ align,
50
+ alignOffset,
51
+ alignItemWithTrigger,
52
+ className: "sg:isolate sg:z-50",
53
+ children: /* @__PURE__ */ jsxs(
54
+ SelectPrimitive.Popup,
55
+ {
56
+ "data-slot": "select-content",
57
+ "data-align-trigger": alignItemWithTrigger,
58
+ className: cn(
59
+ "sg: sg: sg:relative sg:isolate sg:z-50 sg:max-h-(--available-height) sg:w-(--anchor-width) sg:min-w-36 sg:origin-(--transform-origin) sg:overflow-x-hidden sg:overflow-y-auto sg:rounded-2xl sg:bg-popover sg:text-popover-foreground sg:shadow-2xl sg:ring-1 sg:ring-foreground/5 sg:duration-100 sg:data-[align-trigger=true]:animate-none sg:data-[side=bottom]:slide-in-from-top-2 sg:data-[side=inline-end]:slide-in-from-left-2 sg:data-[side=inline-start]:slide-in-from-right-2 sg:data-[side=left]:slide-in-from-right-2 sg:data-[side=right]:slide-in-from-left-2 sg:data-[side=top]:slide-in-from-bottom-2 sg:data-open:animate-in sg:data-open:fade-in-0 sg:data-open:zoom-in-95 sg:data-closed:animate-out sg:data-closed:fade-out-0 sg:data-closed:zoom-out-95",
60
+ className
61
+ ),
62
+ ...props,
63
+ children: [
64
+ /* @__PURE__ */ jsx(SelectScrollUpButton, {}),
65
+ /* @__PURE__ */ jsx(SelectPrimitive.List, { children }),
66
+ /* @__PURE__ */ jsx(SelectScrollDownButton, {})
67
+ ]
68
+ }
69
+ )
70
+ }
71
+ ) });
72
+ }
73
+ function SelectLabel({
74
+ className,
75
+ ...props
76
+ }) {
77
+ return /* @__PURE__ */ jsx(
78
+ SelectPrimitive.GroupLabel,
79
+ {
80
+ "data-slot": "select-label",
81
+ className: cn(
82
+ "sg:py-1.5 sg:pl-8 sg:pr-2 sg:text-md sg:font-semibold",
83
+ className
84
+ ),
85
+ ...props
86
+ }
87
+ );
88
+ }
89
+ function SelectItem({
90
+ className,
91
+ children,
92
+ ...props
93
+ }) {
94
+ return /* @__PURE__ */ jsxs(
95
+ SelectPrimitive.Item,
96
+ {
97
+ "data-slot": "select-item",
98
+ className: cn(
99
+ "sg:relative sg:flex sg:w-full sg:cursor-default sg:select-none sg:items-center sg:rounded-sm sg:py-1.5 sg:pl-8 sg:pr-2 sg:text-sm sg:outline-none sg:data-disabled:pointer-events-none sg:data-disabled:opacity-50 sg:focus:bg-accent sg:focus:text-accent-foreground",
100
+ className
101
+ ),
102
+ ...props,
103
+ children: [
104
+ /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children }),
105
+ /* @__PURE__ */ jsx("span", { className: "sg:absolute sg:left-2 sg:flex sg:h-3.5 sg:w-3.5 sg:items-center sg:justify-center", children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(Icon, { icon: "Check" }) }) })
106
+ ]
107
+ }
108
+ );
109
+ }
110
+ function SelectSeparator({
111
+ className,
112
+ ...props
113
+ }) {
114
+ return /* @__PURE__ */ jsx(
115
+ SelectPrimitive.Separator,
116
+ {
117
+ "data-slot": "select-separator",
118
+ className: cn("sg:-mx-1 sg:my-1 sg:h-px sg:bg-muted", className),
119
+ ...props
120
+ }
121
+ );
122
+ }
123
+ function SelectScrollUpButton({
124
+ className,
125
+ ...props
126
+ }) {
127
+ return /* @__PURE__ */ jsx(
128
+ SelectPrimitive.ScrollUpArrow,
129
+ {
130
+ "data-slot": "select-scroll-up-button",
131
+ className: cn(
132
+ "sg:flex sg:cursor-default sg:items-center sg:justify-center sg:py-1",
133
+ className
134
+ ),
135
+ ...props,
136
+ children: /* @__PURE__ */ jsx(Icon, { icon: "ChevronUp" })
137
+ }
138
+ );
139
+ }
140
+ function SelectScrollDownButton({
141
+ className,
142
+ ...props
143
+ }) {
144
+ return /* @__PURE__ */ jsx(
145
+ SelectPrimitive.ScrollDownArrow,
146
+ {
147
+ "data-slot": "select-scroll-down-button",
148
+ className: cn(
149
+ "sg:flex sg:cursor-default sg:items-center sg:justify-center sg:py-1",
150
+ className
151
+ ),
152
+ ...props,
153
+ children: /* @__PURE__ */ jsx(Icon, { icon: "ChevronDown" })
154
+ }
155
+ );
156
+ }
157
+ export {
158
+ Select,
159
+ SelectContent,
160
+ SelectGroup,
161
+ SelectItem,
162
+ SelectLabel,
163
+ SelectScrollDownButton,
164
+ SelectScrollUpButton,
165
+ SelectSeparator,
166
+ SelectTrigger,
167
+ SelectValue
168
+ };
169
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/primitives/forms/select.tsx"],"sourcesContent":["\"use client\";\r\nimport * as React from \"react\";\r\nimport { Select as SelectPrimitive } from \"@base-ui/react\";\r\nimport { cn } from \"../../../utils/index\";\r\nimport { Icon } from \"../icon/icon\";\r\n\r\nconst Select = SelectPrimitive.Root;\r\nconst SelectGroup = SelectPrimitive.Group;\r\nconst SelectValue = SelectPrimitive.Value;\r\n\r\nfunction SelectTrigger({\r\n className,\r\n size = \"default\",\r\n children,\r\n ...props\r\n}: SelectPrimitive.Trigger.Props & {\r\n size?: \"sm\" | \"default\";\r\n}) {\r\n return (\r\n <SelectPrimitive.Trigger\r\n data-slot=\"select-trigger\"\r\n data-size={size}\r\n className={cn(\r\n \"sg:flex sg:h-10 sg:w-full sg:items-center sg:justify-between sg:rounded-md sg:border sg:border-input sg:bg-background sg:px-3 sg:py-2 sg:text-sm sg:ring-offset-background sg:placeholder:text-muted-foreground sg:focus:outline-none sg:focus:ring-2 sg:focus:ring-ring sg:focus:ring-offset-2 sg:disabled:cursor-not-allowed sg:disabled:opacity-50 sg:[&>span]:line-clamp-1\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <SelectPrimitive.Icon render={<Icon icon=\"ChevronDown\" />} />\r\n </SelectPrimitive.Trigger>\r\n );\r\n}\r\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\r\n\r\nfunction SelectContent({\r\n className,\r\n children,\r\n side = \"bottom\",\r\n sideOffset = 4,\r\n align = \"center\",\r\n alignOffset = 0,\r\n alignItemWithTrigger = true,\r\n ...props\r\n}: SelectPrimitive.Popup.Props &\r\n Pick<\r\n SelectPrimitive.Positioner.Props,\r\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\r\n >) {\r\n return (\r\n <SelectPrimitive.Portal>\r\n <SelectPrimitive.Positioner\r\n side={side}\r\n sideOffset={sideOffset}\r\n align={align}\r\n alignOffset={alignOffset}\r\n alignItemWithTrigger={alignItemWithTrigger}\r\n className=\"sg:isolate sg:z-50\"\r\n >\r\n <SelectPrimitive.Popup\r\n data-slot=\"select-content\"\r\n data-align-trigger={alignItemWithTrigger}\r\n className={cn(\r\n \"sg: sg: sg:relative sg:isolate sg:z-50 sg:max-h-(--available-height) sg:w-(--anchor-width) sg:min-w-36 sg:origin-(--transform-origin) sg:overflow-x-hidden sg:overflow-y-auto sg:rounded-2xl sg:bg-popover sg:text-popover-foreground sg:shadow-2xl sg:ring-1 sg:ring-foreground/5 sg:duration-100 sg:data-[align-trigger=true]:animate-none sg:data-[side=bottom]:slide-in-from-top-2 sg:data-[side=inline-end]:slide-in-from-left-2 sg:data-[side=inline-start]:slide-in-from-right-2 sg:data-[side=left]:slide-in-from-right-2 sg:data-[side=right]:slide-in-from-left-2 sg:data-[side=top]:slide-in-from-bottom-2 sg:data-open:animate-in sg:data-open:fade-in-0 sg:data-open:zoom-in-95 sg:data-closed:animate-out sg:data-closed:fade-out-0 sg:data-closed:zoom-out-95\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <SelectScrollUpButton />\r\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\r\n <SelectScrollDownButton />\r\n </SelectPrimitive.Popup>\r\n </SelectPrimitive.Positioner>\r\n </SelectPrimitive.Portal>\r\n );\r\n}\r\n\r\nfunction SelectLabel({\r\n className,\r\n ...props\r\n}: SelectPrimitive.GroupLabel.Props) {\r\n return (\r\n <SelectPrimitive.GroupLabel\r\n data-slot=\"select-label\"\r\n className={cn(\r\n \"sg:py-1.5 sg:pl-8 sg:pr-2 sg:text-md sg:font-semibold\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SelectItem({\r\n className,\r\n children,\r\n ...props\r\n}: SelectPrimitive.Item.Props) {\r\n return (\r\n <SelectPrimitive.Item\r\n data-slot=\"select-item\"\r\n className={cn(\r\n \"sg:relative sg:flex sg:w-full sg:cursor-default sg:select-none sg:items-center sg:rounded-sm sg:py-1.5 sg:pl-8 sg:pr-2 sg:text-sm sg:outline-none sg:data-disabled:pointer-events-none sg:data-disabled:opacity-50 sg:focus:bg-accent sg:focus:text-accent-foreground\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\r\n\r\n <span className=\"sg:absolute sg:left-2 sg:flex sg:h-3.5 sg:w-3.5 sg:items-center sg:justify-center\">\r\n <SelectPrimitive.ItemIndicator>\r\n <Icon icon=\"Check\" />\r\n </SelectPrimitive.ItemIndicator>\r\n </span>\r\n </SelectPrimitive.Item>\r\n );\r\n}\r\n\r\nfunction SelectSeparator({\r\n className,\r\n ...props\r\n}: SelectPrimitive.Separator.Props) {\r\n return (\r\n <SelectPrimitive.Separator\r\n data-slot=\"select-separator\"\r\n className={cn(\"sg:-mx-1 sg:my-1 sg:h-px sg:bg-muted\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SelectScrollUpButton({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\r\n return (\r\n <SelectPrimitive.ScrollUpArrow\r\n data-slot=\"select-scroll-up-button\"\r\n className={cn(\r\n \"sg:flex sg:cursor-default sg:items-center sg:justify-center sg:py-1\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <Icon icon=\"ChevronUp\" />\r\n </SelectPrimitive.ScrollUpArrow>\r\n );\r\n}\r\n\r\nfunction SelectScrollDownButton({\r\n className,\r\n ...props\r\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\r\n return (\r\n <SelectPrimitive.ScrollDownArrow\r\n data-slot=\"select-scroll-down-button\"\r\n className={cn(\r\n \"sg:flex sg:cursor-default sg:items-center sg:justify-center sg:py-1\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n <Icon icon=\"ChevronDown\" />\r\n </SelectPrimitive.ScrollDownArrow>\r\n );\r\n}\r\n\r\nexport {\r\n Select,\r\n SelectContent,\r\n SelectGroup,\r\n SelectItem,\r\n SelectLabel,\r\n SelectScrollDownButton,\r\n SelectScrollUpButton,\r\n SelectSeparator,\r\n SelectTrigger,\r\n SelectValue,\r\n};\r\n"],"mappings":"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","names":[]}
@@ -0,0 +1,6 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+
4
+ declare function Textarea({ className, ...props }: React.ComponentProps<"textarea">): react_jsx_runtime.JSX.Element;
5
+
6
+ export { Textarea };
@@ -0,0 +1,20 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "../../../utils/index.js";
4
+ function Textarea({ className, ...props }) {
5
+ return /* @__PURE__ */ jsx(
6
+ "textarea",
7
+ {
8
+ "data-slot": "textarea",
9
+ className: cn(
10
+ "sg:flex sg:min-h-[80px] sg:w-full sg:rounded-md sg:border sg:border-input sg:bg-background sg:px-3 sg:py-2 sg:text-sm sg:ring-offset-background sg:placeholder:text-muted-foreground sg:focus-visible:outline-none sg:focus-visible:ring-2 sg:focus-visible:ring-ring sg:focus-visible:ring-offset-2 sg:disabled:cursor-not-allowed sg:disabled:opacity-50",
11
+ className
12
+ ),
13
+ ...props
14
+ }
15
+ );
16
+ }
17
+ export {
18
+ Textarea
19
+ };
20
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/primitives/forms/textarea.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../../../utils/index\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"sg:flex sg:min-h-[80px] sg:w-full sg:rounded-md sg:border sg:border-input sg:bg-background sg:px-3 sg:py-2 sg:text-sm sg:ring-offset-background sg:placeholder:text-muted-foreground sg:focus-visible:outline-none sg:focus-visible:ring-2 sg:focus-visible:ring-ring sg:focus-visible:ring-offset-2 sg:disabled:cursor-not-allowed sg:disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n"],"mappings":"AAKI;AALJ,YAAY,WAAW;AACvB,SAAS,UAAU;AAEnB,SAAS,SAAS,EAAE,WAAW,GAAG,MAAM,GAAqC;AAC3E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}
@@ -6,22 +6,29 @@ import { LucideIcon, icons } from 'lucide-react';
6
6
 
7
7
  declare const iconVariants: {
8
8
  size: {
9
+ xs: string;
9
10
  sm: string;
10
11
  default: string;
11
12
  lg: string;
13
+ xl: string;
14
+ xxl: string;
12
15
  };
13
16
  color: {
14
17
  default: string;
15
18
  foreground: string;
16
19
  primary: string;
20
+ "primary-foreground": string;
17
21
  secondary: string;
22
+ "secondary-foreground": string;
18
23
  muted: string;
24
+ "muted-foreground": string;
19
25
  destructive: string;
26
+ "destructive-foreground": string;
20
27
  };
21
28
  };
22
29
  declare const iconVariantsProps: (props?: ({
23
- size?: "default" | "sm" | "lg" | null | undefined;
24
- color?: "default" | "destructive" | "secondary" | "foreground" | "primary" | "muted" | null | undefined;
30
+ size?: "default" | "sm" | "xs" | "lg" | "xl" | "xxl" | null | undefined;
31
+ color?: "default" | "foreground" | "primary" | "primary-foreground" | "secondary" | "secondary-foreground" | "muted" | "muted-foreground" | "destructive" | "destructive-foreground" | null | undefined;
25
32
  } & class_variance_authority_types.ClassProp) | undefined) => string;
26
33
  type Props = Omit<React.ComponentProps<LucideIcon>, "size"> & VariantProps<typeof iconVariantsProps> & {
27
34
  icon: keyof typeof icons;
@@ -2,20 +2,27 @@ import { jsx } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { cva } from "class-variance-authority";
4
4
  import { icons } from "lucide-react";
5
- import { cn } from "../../../utils";
5
+ import { cn } from "../../../utils/index.js";
6
6
  const iconVariants = {
7
7
  size: {
8
+ xs: "sg:size-4",
8
9
  sm: "sg:size-8",
9
10
  default: "sg:size-9",
10
- lg: "sg:size-10"
11
+ lg: "sg:size-10",
12
+ xl: "sg:size-12",
13
+ xxl: "sg:size-16"
11
14
  },
12
15
  color: {
13
16
  default: "",
14
17
  foreground: "sg:text-foreground",
15
18
  primary: "sg:text-primary",
19
+ "primary-foreground": "sg:text-primary-foreground",
16
20
  secondary: "sg:text-secondary",
21
+ "secondary-foreground": "sg:text-secondary-foreground",
17
22
  muted: "sg:text-muted",
18
- destructive: "sg:text-destructive"
23
+ "muted-foreground": "sg:text-muted-foreground",
24
+ destructive: "sg:text-destructive",
25
+ "destructive-foreground": "sg:text-destructive-foreground"
19
26
  }
20
27
  };
21
28
  const iconVariantsProps = cva("", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/primitives/icon/icon.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { icons, type LucideIcon } from \"lucide-react\";\r\nimport { cn } from \"../../../utils\";\r\n\r\nconst iconVariants = {\r\n size: {\r\n sm: \"sg:size-8\",\r\n default: \"sg:size-9\",\r\n lg: \"sg:size-10\",\r\n },\r\n color: {\r\n default: \"\",\r\n foreground: \"sg:text-foreground\",\r\n primary: \"sg:text-primary\",\r\n secondary: \"sg:text-secondary\",\r\n muted: \"sg:text-muted\",\r\n destructive: \"sg:text-destructive\",\r\n },\r\n};\r\n\r\nconst iconVariantsProps = cva(\"\", {\r\n variants: iconVariants,\r\n defaultVariants: {\r\n size: \"default\",\r\n color: \"default\",\r\n },\r\n});\r\n\r\ntype Props = Omit<React.ComponentProps<LucideIcon>, \"size\"> &\r\n VariantProps<typeof iconVariantsProps> & {\r\n icon: keyof typeof icons;\r\n spin?: boolean;\r\n };\r\n\r\nfunction Icon({ className, size, color, icon, spin, ...props }: Props) {\r\n const LucideIcon = icons[icon];\r\n\r\n return (\r\n <LucideIcon\r\n className={cn(\r\n iconVariantsProps({ color, size }),\r\n className,\r\n spin && \"sg:animate-spin\",\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport { Icon, iconVariantsProps, iconVariants };\r\n"],"mappings":"AAuCI;AAvCJ,YAAY,WAAW;AACvB,SAAS,WAA8B;AACvC,SAAS,aAA8B;AACvC,SAAS,UAAU;AAEnB,MAAM,eAAe;AAAA,EACnB,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,IAAI;AAAA,EACN;AAAA,EACA,OAAO;AAAA,IACL,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,WAAW;AAAA,IACX,OAAO;AAAA,IACP,aAAa;AAAA,EACf;AACF;AAEA,MAAM,oBAAoB,IAAI,IAAI;AAAA,EAChC,UAAU;AAAA,EACV,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AACF,CAAC;AAQD,SAAS,KAAK,EAAE,WAAW,MAAM,OAAO,MAAM,MAAM,GAAG,MAAM,GAAU;AACrE,QAAM,aAAa,MAAM,IAAI;AAE7B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT,kBAAkB,EAAE,OAAO,KAAK,CAAC;AAAA,QACjC;AAAA,QACA,QAAQ;AAAA,MACV;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/primitives/icon/icon.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { icons, type LucideIcon } from \"lucide-react\";\r\nimport { cn } from \"../../../utils/index\";\r\n\r\nconst iconVariants = {\r\n size: {\r\n xs: \"sg:size-4\",\r\n sm: \"sg:size-8\",\r\n default: \"sg:size-9\",\r\n lg: \"sg:size-10\",\r\n xl: \"sg:size-12\",\r\n xxl: \"sg:size-16\",\r\n },\r\n color: {\r\n default: \"\",\r\n foreground: \"sg:text-foreground\",\r\n primary: \"sg:text-primary\",\r\n \"primary-foreground\": \"sg:text-primary-foreground\",\r\n secondary: \"sg:text-secondary\",\r\n \"secondary-foreground\": \"sg:text-secondary-foreground\",\r\n muted: \"sg:text-muted\",\r\n \"muted-foreground\": \"sg:text-muted-foreground\",\r\n destructive: \"sg:text-destructive\",\r\n \"destructive-foreground\": \"sg:text-destructive-foreground\",\r\n },\r\n};\r\n\r\nconst iconVariantsProps = cva(\"\", {\r\n variants: iconVariants,\r\n defaultVariants: {\r\n size: \"default\",\r\n color: \"default\",\r\n },\r\n});\r\n\r\ntype Props = Omit<React.ComponentProps<LucideIcon>, \"size\"> &\r\n VariantProps<typeof iconVariantsProps> & {\r\n icon: keyof typeof icons;\r\n spin?: boolean;\r\n };\r\n\r\nfunction Icon({ className, size, color, icon, spin, ...props }: Props) {\r\n const LucideIcon = icons[icon];\r\n\r\n return (\r\n <LucideIcon\r\n className={cn(\r\n iconVariantsProps({ color, size }),\r\n className,\r\n spin && \"sg:animate-spin\",\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport { Icon, iconVariantsProps, iconVariants };\r\n"],"mappings":"AA8CI;AA9CJ,YAAY,WAAW;AACvB,SAAS,WAA8B;AACvC,SAAS,aAA8B;AACvC,SAAS,UAAU;AAEnB,MAAM,eAAe;AAAA,EACnB,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,EACP;AAAA,EACA,OAAO;AAAA,IACL,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,sBAAsB;AAAA,IACtB,WAAW;AAAA,IACX,wBAAwB;AAAA,IACxB,OAAO;AAAA,IACP,oBAAoB;AAAA,IACpB,aAAa;AAAA,IACb,0BAA0B;AAAA,EAC5B;AACF;AAEA,MAAM,oBAAoB,IAAI,IAAI;AAAA,EAChC,UAAU;AAAA,EACV,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AACF,CAAC;AAQD,SAAS,KAAK,EAAE,WAAW,MAAM,OAAO,MAAM,MAAM,GAAG,MAAM,GAAU;AACrE,QAAM,aAAa,MAAM,IAAI;AAE7B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT,kBAAkB,EAAE,OAAO,KAAK,CAAC;AAAA,QACjC;AAAA,QACA,QAAQ;AAAA,MACV;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;","names":[]}