@sikka/hawa 0.26.30 → 0.26.32

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 (216) hide show
  1. package/dist/{Toast-pOd4uGZz.d.ts → Toast-YaClwi7z.d.ts} +9 -1
  2. package/dist/{Toast-VBd4UvlM.d.mts → Toast-ySvjL_-K.d.mts} +9 -1
  3. package/dist/accordion/index.mjs +7 -4
  4. package/dist/accordion/index.mjs.map +1 -1
  5. package/dist/alert/index.js +4 -4
  6. package/dist/alert/index.js.map +1 -1
  7. package/dist/alert/index.mjs +11 -8
  8. package/dist/alert/index.mjs.map +1 -1
  9. package/dist/appLayout/index.js +2 -1
  10. package/dist/appLayout/index.js.map +1 -1
  11. package/dist/appLayout/index.mjs +9 -5
  12. package/dist/appLayout/index.mjs.map +1 -1
  13. package/dist/appMenubar/index.mjs +9 -4
  14. package/dist/appMenubar/index.mjs.map +1 -1
  15. package/dist/appTabs/index.mjs +9 -4
  16. package/dist/appTabs/index.mjs.map +1 -1
  17. package/dist/appTopbar/index.mjs +9 -4
  18. package/dist/appTopbar/index.mjs.map +1 -1
  19. package/dist/avatar/index.js +2 -1
  20. package/dist/avatar/index.js.map +1 -1
  21. package/dist/avatar/index.mjs +9 -5
  22. package/dist/avatar/index.mjs.map +1 -1
  23. package/dist/backToTop/index.js +6 -3
  24. package/dist/backToTop/index.js.map +1 -1
  25. package/dist/backToTop/index.mjs +13 -7
  26. package/dist/backToTop/index.mjs.map +1 -1
  27. package/dist/badge/index.js +4 -3
  28. package/dist/badge/index.js.map +1 -1
  29. package/dist/badge/index.mjs +13 -7
  30. package/dist/badge/index.mjs.map +1 -1
  31. package/dist/button/index.mjs +7 -4
  32. package/dist/button/index.mjs.map +1 -1
  33. package/dist/card/index.mjs +9 -4
  34. package/dist/card/index.mjs.map +1 -1
  35. package/dist/carousel/index.js +10 -10
  36. package/dist/carousel/index.js.map +1 -1
  37. package/dist/carousel/index.mjs +19 -14
  38. package/dist/carousel/index.mjs.map +1 -1
  39. package/dist/checkbox/index.mjs +9 -4
  40. package/dist/checkbox/index.mjs.map +1 -1
  41. package/dist/chip/index.mjs +9 -4
  42. package/dist/chip/index.mjs.map +1 -1
  43. package/dist/chunk-A3ERTYS4.mjs +29 -0
  44. package/dist/codeBlock/index.mjs +83 -23
  45. package/dist/codeBlock/index.mjs.map +1 -1
  46. package/dist/collapsible/index.mjs +0 -2
  47. package/dist/collapsible/index.mjs.map +1 -1
  48. package/dist/colorPicker/index.js +2 -1
  49. package/dist/colorPicker/index.js.map +1 -1
  50. package/dist/colorPicker/index.mjs +92 -20
  51. package/dist/colorPicker/index.mjs.map +1 -1
  52. package/dist/combobox/index.js +4 -3
  53. package/dist/combobox/index.js.map +1 -1
  54. package/dist/combobox/index.mjs +445 -27
  55. package/dist/combobox/index.mjs.map +1 -1
  56. package/dist/command/index.mjs +429 -11
  57. package/dist/command/index.mjs.map +1 -1
  58. package/dist/dataTable/index.js +36 -27
  59. package/dist/dataTable/index.js.map +1 -1
  60. package/dist/dataTable/index.mjs +43 -31
  61. package/dist/dataTable/index.mjs.map +1 -1
  62. package/dist/destroyableCard/index.js +2 -2
  63. package/dist/destroyableCard/index.js.map +1 -1
  64. package/dist/destroyableCard/index.mjs +9 -6
  65. package/dist/destroyableCard/index.mjs.map +1 -1
  66. package/dist/dialog/index.mjs +9 -4
  67. package/dist/dialog/index.mjs.map +1 -1
  68. package/dist/docsLayout/index.js +2 -2
  69. package/dist/docsLayout/index.js.map +1 -1
  70. package/dist/docsLayout/index.mjs +9 -6
  71. package/dist/docsLayout/index.mjs.map +1 -1
  72. package/dist/docsSidebar/index.js +2 -2
  73. package/dist/docsSidebar/index.js.map +1 -1
  74. package/dist/docsSidebar/index.mjs +11 -6
  75. package/dist/docsSidebar/index.mjs.map +1 -1
  76. package/dist/dropdownMenu/index.mjs +9 -4
  77. package/dist/dropdownMenu/index.mjs.map +1 -1
  78. package/dist/elements/index.d.mts +4 -2
  79. package/dist/elements/index.d.ts +4 -2
  80. package/dist/elements/index.js +7 -134
  81. package/dist/elements/index.mjs +9 -13
  82. package/dist/fileDropzone/index.js +12 -11
  83. package/dist/fileDropzone/index.js.map +1 -1
  84. package/dist/fileDropzone/index.mjs +21 -17
  85. package/dist/fileDropzone/index.mjs.map +1 -1
  86. package/dist/fileUploader/index.js +2 -1
  87. package/dist/fileUploader/index.js.map +1 -1
  88. package/dist/fileUploader/index.mjs +2 -1
  89. package/dist/fileUploader/index.mjs.map +1 -1
  90. package/dist/glow/index.js +24 -17
  91. package/dist/glow/index.js.map +1 -1
  92. package/dist/glow/index.mjs +24 -17
  93. package/dist/glow/index.mjs.map +1 -1
  94. package/dist/hooks/index.d.mts +9 -18
  95. package/dist/hooks/index.d.ts +9 -18
  96. package/dist/hooks/index.mjs +146 -27
  97. package/dist/index.d.mts +18 -17
  98. package/dist/index.d.ts +18 -17
  99. package/dist/index.js +166 -171
  100. package/dist/index.mjs +588 -593
  101. package/dist/input/index.js +3 -2
  102. package/dist/input/index.js.map +1 -1
  103. package/dist/input/index.mjs +118 -19
  104. package/dist/input/index.mjs.map +1 -1
  105. package/dist/interfaceSettings/index.js +6 -4
  106. package/dist/interfaceSettings/index.js.map +1 -1
  107. package/dist/interfaceSettings/index.mjs +130 -28
  108. package/dist/interfaceSettings/index.mjs.map +1 -1
  109. package/dist/label/index.mjs +7 -4
  110. package/dist/label/index.mjs.map +1 -1
  111. package/dist/loading/index.mjs +9 -4
  112. package/dist/loading/index.mjs.map +1 -1
  113. package/dist/navbar/index.js +3 -2
  114. package/dist/navbar/index.js.map +1 -1
  115. package/dist/navbar/index.mjs +10 -6
  116. package/dist/navbar/index.mjs.map +1 -1
  117. package/dist/navigationMenu/index.mjs +9 -4
  118. package/dist/navigationMenu/index.mjs.map +1 -1
  119. package/dist/pagination/index.mjs +9 -4
  120. package/dist/pagination/index.mjs.map +1 -1
  121. package/dist/passwordInput/index.js +3 -2
  122. package/dist/passwordInput/index.js.map +1 -1
  123. package/dist/passwordInput/index.mjs +12 -6
  124. package/dist/passwordInput/index.mjs.map +1 -1
  125. package/dist/phoneInput/index.js +10 -5
  126. package/dist/phoneInput/index.js.map +1 -1
  127. package/dist/phoneInput/index.mjs +19 -11
  128. package/dist/phoneInput/index.mjs.map +1 -1
  129. package/dist/pinInput/index.js +3 -3
  130. package/dist/pinInput/index.js.map +1 -1
  131. package/dist/pinInput/index.mjs +12 -7
  132. package/dist/pinInput/index.mjs.map +1 -1
  133. package/dist/popover/index.mjs +9 -4
  134. package/dist/popover/index.mjs.map +1 -1
  135. package/dist/progress/index.mjs +9 -4
  136. package/dist/progress/index.mjs.map +1 -1
  137. package/dist/progressCircle/index.js +2 -2
  138. package/dist/progressCircle/index.js.map +1 -1
  139. package/dist/progressCircle/index.mjs +11 -6
  140. package/dist/progressCircle/index.mjs.map +1 -1
  141. package/dist/radio/index.js +6 -4
  142. package/dist/radio/index.js.map +1 -1
  143. package/dist/radio/index.mjs +13 -8
  144. package/dist/radio/index.mjs.map +1 -1
  145. package/dist/scrollArea/index.mjs +9 -4
  146. package/dist/scrollArea/index.mjs.map +1 -1
  147. package/dist/scrollIndicator/index.js +2 -1
  148. package/dist/scrollIndicator/index.js.map +1 -1
  149. package/dist/scrollIndicator/index.mjs +2 -1
  150. package/dist/scrollIndicator/index.mjs.map +1 -1
  151. package/dist/select/index.js +6 -2
  152. package/dist/select/index.js.map +1 -1
  153. package/dist/select/index.mjs +15 -8
  154. package/dist/select/index.mjs.map +1 -1
  155. package/dist/separator/index.mjs +9 -4
  156. package/dist/separator/index.mjs.map +1 -1
  157. package/dist/sheet/index.mjs +9 -4
  158. package/dist/sheet/index.mjs.map +1 -1
  159. package/dist/sidebar/index.mjs +9 -4
  160. package/dist/sidebar/index.mjs.map +1 -1
  161. package/dist/signature/index.js +31 -11
  162. package/dist/signature/index.js.map +1 -1
  163. package/dist/signature/index.mjs +40 -15
  164. package/dist/signature/index.mjs.map +1 -1
  165. package/dist/simpleTable/index.js +18 -14
  166. package/dist/simpleTable/index.js.map +1 -1
  167. package/dist/simpleTable/index.mjs +25 -18
  168. package/dist/simpleTable/index.mjs.map +1 -1
  169. package/dist/skeleton/index.mjs +9 -4
  170. package/dist/skeleton/index.mjs.map +1 -1
  171. package/dist/slider/index.mjs +9 -4
  172. package/dist/slider/index.mjs.map +1 -1
  173. package/dist/sortButton/index.mjs +268 -11
  174. package/dist/sortButton/index.mjs.map +1 -1
  175. package/dist/splitButton/index.mjs +267 -12
  176. package/dist/splitButton/index.mjs.map +1 -1
  177. package/dist/switch/index.js +2 -1
  178. package/dist/switch/index.js.map +1 -1
  179. package/dist/switch/index.mjs +11 -5
  180. package/dist/switch/index.mjs.map +1 -1
  181. package/dist/table/index.mjs +9 -4
  182. package/dist/table/index.mjs.map +1 -1
  183. package/dist/tabs/index.mjs +7 -4
  184. package/dist/tabs/index.mjs.map +1 -1
  185. package/dist/textarea/index.js +4 -4
  186. package/dist/textarea/index.js.map +1 -1
  187. package/dist/textarea/index.mjs +11 -8
  188. package/dist/textarea/index.mjs.map +1 -1
  189. package/dist/toast/index.d.mts +9 -1
  190. package/dist/toast/index.d.ts +9 -1
  191. package/dist/toast/index.js +3 -3
  192. package/dist/toast/index.js.map +1 -1
  193. package/dist/toast/index.mjs +145 -10
  194. package/dist/toast/index.mjs.map +1 -1
  195. package/dist/toaster/index.d.mts +5 -0
  196. package/dist/toaster/index.d.ts +5 -0
  197. package/dist/toaster/index.js +17 -142
  198. package/dist/toaster/index.js.map +1 -1
  199. package/dist/toaster/index.mjs +142 -135
  200. package/dist/toaster/index.mjs.map +1 -1
  201. package/package.json +5 -5
  202. package/dist/chunk-3ODWQVIA.mjs +0 -12
  203. package/dist/chunk-3ODWQVIA.mjs.map +0 -1
  204. package/dist/chunk-53OZVR57.mjs +0 -108
  205. package/dist/chunk-53OZVR57.mjs.map +0 -1
  206. package/dist/chunk-CBRGWUZG.mjs +0 -11
  207. package/dist/chunk-CBRGWUZG.mjs.map +0 -1
  208. package/dist/chunk-HYXZRCZW.mjs +0 -265
  209. package/dist/chunk-HYXZRCZW.mjs.map +0 -1
  210. package/dist/chunk-JNUGOUYJ.mjs +0 -154
  211. package/dist/chunk-JX5YLRCU.mjs +0 -443
  212. package/dist/chunk-JX5YLRCU.mjs.map +0 -1
  213. package/dist/chunk-NV3KR5Y7.mjs +0 -82
  214. package/dist/chunk-NV3KR5Y7.mjs.map +0 -1
  215. package/dist/chunk-OQ7MNEYW.mjs +0 -151
  216. package/dist/chunk-OQ7MNEYW.mjs.map +0 -1
@@ -1,265 +0,0 @@
1
- // util/index.ts
2
- import { clsx } from "clsx";
3
- import { twMerge } from "tailwind-merge";
4
- function cn(...inputs) {
5
- return twMerge(clsx(inputs));
6
- }
7
-
8
- // elements/button/Button.tsx
9
- import * as React2 from "react";
10
- import { cva } from "class-variance-authority";
11
-
12
- // elements/loading/Loading.tsx
13
- import React from "react";
14
- var Loading = ({
15
- design = "spinner",
16
- size = "sm",
17
- themeMode = "light",
18
- color,
19
- ...props
20
- }) => {
21
- let sizeStyles = {
22
- button: "hawa-h-4 hawa-w-4",
23
- xs: "hawa-h-1 hawa-w-1",
24
- sm: "hawa-h-6 hawa-w-6",
25
- normal: "hawa-h-8 hawa-w-8",
26
- lg: "hawa-h-14 hawa-w-14",
27
- xl: "hawa-h-24 hawa-w-24"
28
- };
29
- let animationStyles = {
30
- pulse: "hawa-animate-in hawa-fade-in hawa-duration-1000",
31
- bounce: "hawa-animate-bounce"
32
- };
33
- switch (design.split("-")[0]) {
34
- case "dots":
35
- return /* @__PURE__ */ React.createElement(
36
- "div",
37
- {
38
- className: cn("hawa-flex hawa-flex-row hawa-gap-2", props.className)
39
- },
40
- /* @__PURE__ */ React.createElement(
41
- "div",
42
- {
43
- className: cn(
44
- "hawa-animate-bounce hawa-rounded-full hawa-delay-100 hawa-repeat-infinite",
45
- size === "button" ? "hawa-h-2 hawa-w-2" : sizeStyles[size],
46
- animationStyles[design.split("-")[1]],
47
- color ? color : "hawa-bg-primary"
48
- )
49
- }
50
- ),
51
- /* @__PURE__ */ React.createElement(
52
- "div",
53
- {
54
- className: cn(
55
- "hawa-animate-bounce hawa-rounded-full hawa-delay-200 hawa-repeat-infinite",
56
- size === "button" ? "hawa-h-2 hawa-w-2" : sizeStyles[size],
57
- animationStyles[design.split("-")[1]],
58
- color ? color : "hawa-bg-primary"
59
- )
60
- }
61
- ),
62
- /* @__PURE__ */ React.createElement(
63
- "div",
64
- {
65
- className: cn(
66
- "hawa-animate-bounce hawa-rounded-full hawa-delay-300 hawa-repeat-infinite",
67
- size === "button" ? "hawa-h-2 hawa-w-2" : sizeStyles[size],
68
- animationStyles[design.split("-")[1]],
69
- color ? color : "hawa-bg-primary"
70
- )
71
- }
72
- )
73
- );
74
- case "square":
75
- return /* @__PURE__ */ React.createElement(
76
- "svg",
77
- {
78
- className: cn("squircle-container", sizeStyles[size]),
79
- viewBox: "0 0 35 35",
80
- height: "35",
81
- width: "35"
82
- },
83
- /* @__PURE__ */ React.createElement(
84
- "rect",
85
- {
86
- className: "squircle-track",
87
- x: "2.5",
88
- y: "2.5",
89
- fill: "none",
90
- strokeWidth: "5px",
91
- width: "32.5",
92
- height: "32.5"
93
- }
94
- ),
95
- /* @__PURE__ */ React.createElement(
96
- "rect",
97
- {
98
- className: "square-car",
99
- x: "2.5",
100
- y: "2.5",
101
- fill: "none",
102
- strokeWidth: "5px",
103
- width: "32.5",
104
- height: "32.5",
105
- pathLength: "100"
106
- }
107
- )
108
- );
109
- case "squircle":
110
- return /* @__PURE__ */ React.createElement(
111
- "svg",
112
- {
113
- className: cn("squircle-container", sizeStyles[size]),
114
- x: "0px",
115
- y: "0px",
116
- viewBox: "0 0 37 37",
117
- height: "37",
118
- width: "37",
119
- preserveAspectRatio: "xMidYMid meet"
120
- },
121
- /* @__PURE__ */ React.createElement(
122
- "path",
123
- {
124
- className: "squircle-track",
125
- fill: "none",
126
- strokeWidth: "5",
127
- pathLength: "100",
128
- d: "M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5"
129
- }
130
- ),
131
- /* @__PURE__ */ React.createElement(
132
- "path",
133
- {
134
- className: "squircle-car",
135
- fill: "none",
136
- strokeWidth: "5",
137
- pathLength: "100",
138
- d: "M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5"
139
- }
140
- )
141
- );
142
- case "progress":
143
- return /* @__PURE__ */ React.createElement("div", { className: "progress-loading" });
144
- case "orbit":
145
- return /* @__PURE__ */ React.createElement("div", { className: "orbit-container" });
146
- default:
147
- return /* @__PURE__ */ React.createElement(
148
- "svg",
149
- {
150
- className: cn("circle-container", sizeStyles[size]),
151
- viewBox: "0 0 40 40",
152
- height: "40",
153
- width: "40"
154
- },
155
- /* @__PURE__ */ React.createElement(
156
- "circle",
157
- {
158
- className: cn("circle-track", {
159
- "hawa-stroke-primary-foreground": themeMode === "dark",
160
- "hawa-stroke-primary": themeMode === "light"
161
- }),
162
- cx: "20",
163
- cy: "20",
164
- r: "17.5",
165
- pathLength: "100",
166
- strokeWidth: "5px",
167
- fill: "none"
168
- }
169
- ),
170
- /* @__PURE__ */ React.createElement(
171
- "circle",
172
- {
173
- className: cn("circle-car", {
174
- "hawa-stroke-primary-foreground": themeMode === "dark",
175
- "hawa-stroke-primary": themeMode === "light"
176
- }),
177
- cx: "20",
178
- cy: "20",
179
- r: "17.5",
180
- pathLength: "100",
181
- strokeWidth: "5px",
182
- fill: "none"
183
- }
184
- )
185
- );
186
- }
187
- };
188
-
189
- // elements/button/Button.tsx
190
- var buttonVariants = cva(
191
- "hawa-inline-flex hawa-items-center hawa-select-none hawa-rounded-md hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-colors focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50",
192
- {
193
- variants: {
194
- variant: {
195
- default: "hawa-bg-primary hawa-text-primary-foreground hover:hawa-bg-primary/90",
196
- light: "hawa-bg-primary/20 hawa-text-primary hover:hawa-bg-primary/40",
197
- destructive: "hawa-bg-destructive hawa-text-destructive-foreground hover:hawa-bg-destructive/90",
198
- outline: "hawa-border hawa-border-input hawa-bg-transparent hover:hawa-bg-accent hover:hawa-text-accent-foreground",
199
- secondary: "hawa-bg-secondary hawa-text-secondary-foreground hover:hawa-bg-secondary/80",
200
- ghost: "hover:hawa-bg-accent hover:hawa-text-accent-foreground",
201
- link: "hawa-text-primary hawa-underline-offset-4 hover:hawa-underline",
202
- combobox: "hawa-bg-background hawa-border",
203
- neoBrutalism: "neo-brutalism"
204
- // "hawa-cursor-pointer hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active shadow-color-primary active:shadow-color-primary-active",
205
- },
206
- size: {
207
- default: "hawa-h-10 hawa-px-4 hawa-py-2",
208
- heightless: "hawa-px-4 hawa-py-4",
209
- xs: "hawa-h-fit hawa-min-h-[25px] hawa-py-1 hawa-text-[10px] hawa-px-2 ",
210
- sm: "hawa-h-9 hawa-text-[11px] hawa-rounded-md hawa-px-3",
211
- lg: "hawa-h-11 hawa-rounded-md hawa-px-8",
212
- xl: "hawa-h-14 hawa-rounded-md hawa-px-10",
213
- icon: "hawa-h-10 hawa-w-10",
214
- smallIcon: "hawa-h-7 hawa-w-7"
215
- }
216
- },
217
- defaultVariants: {
218
- variant: "default",
219
- size: "default"
220
- }
221
- }
222
- );
223
- var Button = React2.forwardRef(
224
- ({
225
- className,
226
- variant,
227
- size,
228
- asChild = false,
229
- centered = true,
230
- isLoading,
231
- children,
232
- ...props
233
- }, ref) => {
234
- const Comp = "button";
235
- const loadingColor = variant === "outline" || variant === "ghost" || variant === "neoBrutalism" ? "hawa-bg-primary" : "hawa-bg-primary-foreground";
236
- return /* @__PURE__ */ React2.createElement(
237
- Comp,
238
- {
239
- className: cn(
240
- buttonVariants({ variant, size, className }),
241
- centered && "hawa-justify-center"
242
- // "hawa-bg-red-500"
243
- ),
244
- ref,
245
- ...props
246
- },
247
- isLoading ? /* @__PURE__ */ React2.createElement(
248
- Loading,
249
- {
250
- design: size === "icon" || size === "smallIcon" ? "spinner" : "dots-pulse",
251
- themeMode: variant === "outline" ? "light" : "dark",
252
- color: loadingColor,
253
- size: size === "sm" || size === "xs" ? "xs" : "button"
254
- }
255
- ) : children
256
- );
257
- }
258
- );
259
- Button.displayName = "Button";
260
-
261
- export {
262
- cn,
263
- Button
264
- };
265
- //# sourceMappingURL=chunk-HYXZRCZW.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../util/index.ts","../elements/button/Button.tsx","../elements/loading/Loading.tsx"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\ntype Palette = {\n name: string;\n colors: {\n [key: number]: string;\n };\n};\ntype Rgb = {\n r: number;\n g: number;\n b: number;\n};\nfunction hexToRgb(hex: string): Rgb | null {\n const sanitizedHex = hex.replaceAll(\"##\", \"#\");\n const colorParts = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n sanitizedHex\n );\n\n if (!colorParts) {\n return null;\n }\n\n const [, r, g, b] = colorParts;\n\n return {\n r: parseInt(r, 16),\n g: parseInt(g, 16),\n b: parseInt(b, 16)\n } as Rgb;\n}\n\nfunction rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number) => `0${c.toString(16)}`.slice(-2);\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n}\n\nexport function getTextColor(color: string): \"#FFF\" | \"#333\" {\n const rgbColor = hexToRgb(color);\n\n if (!rgbColor) {\n return \"#333\";\n }\n\n const { r, g, b } = rgbColor;\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n\n return luma < 120 ? \"#FFF\" : \"#333\";\n}\n\nfunction lighten(hex: string, intensity: number): string {\n const color = hexToRgb(`#${hex}`);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r + (255 - color.r) * intensity);\n const g = Math.round(color.g + (255 - color.g) * intensity);\n const b = Math.round(color.b + (255 - color.b) * intensity);\n\n return rgbToHex(r, g, b);\n}\n\nfunction darken(hex: string, intensity: number): string {\n const color = hexToRgb(hex);\n\n if (!color) {\n return \"\";\n }\n\n const r = Math.round(color.r * intensity);\n const g = Math.round(color.g * intensity);\n const b = Math.round(color.b * intensity);\n\n return rgbToHex(r, g, b);\n}\nconst parseColor = (color: any) => {\n if (color.startsWith(\"#\")) {\n // Convert hex to RGB\n let r = parseInt(color.slice(1, 3), 16);\n let g = parseInt(color.slice(3, 5), 16);\n let b = parseInt(color.slice(5, 7), 16);\n return [r, g, b];\n } else if (color.startsWith(\"rgb\")) {\n // Extract RGB values from rgb() format\n return color.match(/\\d+/g).map(Number);\n }\n // Default to white if format is unrecognized\n return [255, 255, 255];\n};\nexport const calculateLuminance = (color: any) => {\n const [r, g, b] = parseColor(color)?.map((c: any) => {\n c /= 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n });\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nfunction getPallette(baseColor: string): Palette {\n const name = baseColor;\n\n const response: Palette = {\n name,\n colors: {\n 500: `#${baseColor}`.replace(\"##\", \"#\")\n }\n };\n\n const intensityMap: {\n [key: number]: number;\n } = {\n 50: 0.95,\n 100: 0.9,\n 200: 0.75,\n 300: 0.6,\n 400: 0.3,\n 600: 0.9,\n 700: 0.75,\n 800: 0.6,\n 900: 0.49\n };\n\n [50, 100, 200, 300, 400].forEach((level) => {\n response.colors[level] = lighten(baseColor, intensityMap[level]);\n });\n [600, 700, 800, 900].forEach((level) => {\n response.colors[level] = darken(baseColor, intensityMap[level]);\n });\n\n return response as Palette;\n}\n\nexport { getPallette };\n\n// const hexToRgb = (hex) => {\n// let d = hex?.split(\"#\")[1];\n// var aRgbHex = d?.match(/.{1,2}/g);\n// var aRgb = [\n// parseInt(aRgbHex[0], 16),\n// parseInt(aRgbHex[1], 16),\n// parseInt(aRgbHex[2], 16)\n// ];\n// return aRgb;\n// };\n// const getTextColor = (backColor) => {\n// let rgbArray = hexToRgb(backColor);\n// if (rgbArray[0] * 0.299 + rgbArray[1] * 0.587 + rgbArray[2] * 0.114 > 186) {\n// return \"#000000\";\n// } else {\n// return \"#ffffff\";\n// }\n// };\n// const replaceAt = function (string, index, replacement) {\n// // if (replacement == \"\" || replacement == \" \") {\n// // return (\n// // string.substring(0, index) +\n// // string.substring(index + replacement.length )\n// // );\n// // }\n// const replaced = string.substring(0, index) + replacement + string.substring(index + 1)\n// return replaced\n// };\n\n// export { hexToRgb, getTextColor, replaceAt };\n","import * as React from \"react\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@util/index\";\nimport { Loading } from \"../loading/Loading\";\n\nconst buttonVariants = cva(\n \"hawa-inline-flex hawa-items-center hawa-select-none hawa-rounded-md hawa-text-sm hawa-font-medium hawa-ring-offset-background hawa-transition-colors focus-visible:hawa-outline-none focus-visible:hawa-ring-2 focus-visible:hawa-ring-ring focus-visible:hawa-ring-offset-2 disabled:hawa-pointer-events-none disabled:hawa-opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"hawa-bg-primary hawa-text-primary-foreground hover:hawa-bg-primary/90\",\n light: \"hawa-bg-primary/20 hawa-text-primary hover:hawa-bg-primary/40\",\n destructive:\n \"hawa-bg-destructive hawa-text-destructive-foreground hover:hawa-bg-destructive/90\",\n outline:\n \"hawa-border hawa-border-input hawa-bg-transparent hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n secondary:\n \"hawa-bg-secondary hawa-text-secondary-foreground hover:hawa-bg-secondary/80\",\n ghost: \"hover:hawa-bg-accent hover:hawa-text-accent-foreground\",\n link: \"hawa-text-primary hawa-underline-offset-4 hover:hawa-underline\",\n combobox: \"hawa-bg-background hawa-border\",\n neoBrutalism: \"neo-brutalism\"\n // \"hawa-cursor-pointer hawa-transition-all hawa-uppercase hawa-font-mono dark:hawa-bg-black hawa-font-bold hawa-py-2 hawa-px-4 hawa-rounded hawa-border-2 hawa-border-primary hawa-shadow-color-primary hawa-transition-[hawa-transform_50ms, hawa-box-shadow_50ms] active:hawa-translate-x-0.5 active:hawa-translate-y-0.5 active:hawa-shadow-color-primary-active shadow-color-primary active:shadow-color-primary-active\",\n },\n size: {\n default: \"hawa-h-10 hawa-px-4 hawa-py-2\",\n heightless: \"hawa-px-4 hawa-py-4\",\n xs: \"hawa-h-fit hawa-min-h-[25px] hawa-py-1 hawa-text-[10px] hawa-px-2 \",\n sm: \"hawa-h-9 hawa-text-[11px] hawa-rounded-md hawa-px-3\",\n lg: \"hawa-h-11 hawa-rounded-md hawa-px-8\",\n xl: \"hawa-h-14 hawa-rounded-md hawa-px-10\",\n icon: \"hawa-h-10 hawa-w-10\",\n smallIcon: \"hawa-h-7 hawa-w-7\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n centered?: boolean;\n isLoading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n centered = true,\n isLoading,\n children,\n ...props\n },\n ref\n ) => {\n const Comp = \"button\";\n\n // Determine the color for the HawaLoading component based on the variant\n const loadingColor =\n variant === \"outline\" || variant === \"ghost\" || variant === \"neoBrutalism\"\n ? \"hawa-bg-primary\"\n : \"hawa-bg-primary-foreground\";\n\n return (\n <Comp\n className={cn(\n buttonVariants({ variant, size, className }),\n centered && \"hawa-justify-center\",\n // \"hawa-bg-red-500\"\n )}\n ref={ref}\n {...props}\n >\n {isLoading ? (\n <Loading\n design={\n size === \"icon\" || size === \"smallIcon\" ? \"spinner\" : \"dots-pulse\"\n }\n themeMode={variant === \"outline\" ? \"light\" : \"dark\"}\n color={loadingColor}\n size={size === \"sm\" || size === \"xs\" ? \"xs\" : \"button\"}\n />\n ) : (\n children\n )}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import React, { FC } from \"react\";\n\nimport { cn } from \"@util/index\";\n\ntype LoadingTypes = {\n /** Specifies the size of the loading component.*/\n size?: \"button\" | \"xs\" | \"sm\" | \"normal\" | \"lg\" | \"xl\";\n /** Determines the design of the loading animation.*/\n design?:\n | \"spinner\"\n | \"dots-bounce\"\n | \"dots-pulse\"\n | \"pulse\"\n | \"spinner-dots\"\n | \"squircle\"\n | \"square\"\n | \"progress\"\n | \"orbit\";\n /** Specifies the color of the loading component. By default it will inherit the value of <span className=\"inline-code\">--primary</span> global CSS variable*/\n color?: string;\n className?: string;\n themeMode?: \"dark\" | \"light\";\n};\n\nexport const Loading: FC<LoadingTypes> = ({\n design = \"spinner\",\n size = \"sm\",\n themeMode = \"light\",\n color,\n ...props\n}) => {\n let sizeStyles = {\n button: \"hawa-h-4 hawa-w-4\",\n xs: \"hawa-h-1 hawa-w-1\",\n sm: \"hawa-h-6 hawa-w-6\",\n normal: \"hawa-h-8 hawa-w-8\",\n lg: \"hawa-h-14 hawa-w-14\",\n xl: \"hawa-h-24 hawa-w-24\"\n };\n\n let animationStyles: any = {\n pulse: \"hawa-animate-in hawa-fade-in hawa-duration-1000\",\n bounce: \"hawa-animate-bounce\"\n };\n switch (design.split(\"-\")[0]) {\n case \"dots\":\n return (\n <div\n className={cn(\"hawa-flex hawa-flex-row hawa-gap-2\", props.className)}\n >\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-100 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-200 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n <div\n className={cn(\n \"hawa-animate-bounce hawa-rounded-full hawa-delay-300 hawa-repeat-infinite\",\n size === \"button\" ? \"hawa-h-2 hawa-w-2\" : sizeStyles[size],\n animationStyles[design.split(\"-\")[1]],\n color ? color : \"hawa-bg-primary\"\n )}\n ></div>\n </div>\n );\n case \"square\":\n return (\n <svg\n className={cn(\"squircle-container\", sizeStyles[size])}\n viewBox=\"0 0 35 35\"\n height=\"35\"\n width=\"35\"\n >\n <rect\n className=\"squircle-track\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n />\n <rect\n className=\"square-car\"\n x=\"2.5\"\n y=\"2.5\"\n fill=\"none\"\n strokeWidth=\"5px\"\n width=\"32.5\"\n height=\"32.5\"\n pathLength=\"100\"\n />\n </svg>\n );\n case \"squircle\":\n return (\n <svg\n className={cn(\"squircle-container\", sizeStyles[size])}\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 37 37\"\n height=\"37\"\n width=\"37\"\n preserveAspectRatio=\"xMidYMid meet\"\n >\n <path\n className=\"squircle-track\"\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n <path\n className=\"squircle-car\"\n fill=\"none\"\n strokeWidth=\"5\"\n pathLength=\"100\"\n d=\"M0.37 18.5 C0.37 5.772 5.772 0.37 18.5 0.37 S36.63 5.772 36.63 18.5 S31.228 36.63 18.5 36.63 S0.37 31.228 0.37 18.5\"\n ></path>\n </svg>\n );\n case \"progress\":\n return <div className=\"progress-loading\"></div>;\n case \"orbit\":\n return <div className=\"orbit-container\"></div>;\n\n default:\n return (\n <svg\n className={cn(\"circle-container\", sizeStyles[size])}\n viewBox=\"0 0 40 40\"\n height=\"40\"\n width=\"40\"\n >\n <circle\n className={cn(\"circle-track\", {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n })}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n pathLength=\"100\"\n strokeWidth=\"5px\"\n fill=\"none\"\n />\n <circle\n className={cn(\"circle-car\", {\n \"hawa-stroke-primary-foreground\": themeMode === \"dark\",\n \"hawa-stroke-primary\": themeMode === \"light\"\n })}\n cx=\"20\"\n cy=\"20\"\n r=\"17.5\"\n pathLength=\"100\"\n strokeWidth=\"5px\"\n fill=\"none\"\n />\n </svg>\n );\n // return (\n // <div\n // className={cn(\n // \"hawa-flex hawa-flex-row hawa-gap-x-3\",\n // props.className\n // )}\n // >\n // <div aria-label=\"Loading...\" role=\"status\">\n // <svg\n // className={cn(sizeStyles[size], \"hawa-animate-spin\")}\n // viewBox=\"3 3 18 18\"\n // >\n // <path\n // className=\"hawa-fill-primary/20\"\n // d=\"M12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19C15.866 19 19 15.866 19 12C19 8.13401 15.866 5 12 5ZM3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12Z\"\n // ></path>\n // <path\n // className={color ? color : \"hawa-fill-primary\"}\n // d=\"M16.9497 7.05015C14.2161 4.31648 9.78392 4.31648 7.05025 7.05015C6.65973 7.44067 6.02656 7.44067 5.63604 7.05015C5.24551 6.65962 5.24551 6.02646 5.63604 5.63593C9.15076 2.12121 14.8492 2.12121 18.364 5.63593C18.7545 6.02646 18.7545 6.65962 18.364 7.05015C17.9734 7.44067 17.3403 7.44067 16.9497 7.05015Z\"\n // ></path>\n // </svg>\n // </div>\n // </div>\n // );\n }\n};\n"],"mappings":"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","names":["React"]}
@@ -1,154 +0,0 @@
1
- // hooks/useToast.ts
2
- import * as React from "react";
3
- var TOAST_LIMIT = 5;
4
- var TOAST_REMOVE_DELAY = 1e5;
5
- var count = 0;
6
- function genId() {
7
- count = (count + 1) % Number.MAX_VALUE;
8
- return count.toString();
9
- }
10
- var toastTimeouts = /* @__PURE__ */ new Map();
11
- var addToRemoveQueue = (toastId) => {
12
- if (toastTimeouts.has(toastId)) {
13
- return;
14
- }
15
- const timeout = setTimeout(() => {
16
- toastTimeouts.delete(toastId);
17
- dispatch({
18
- type: "REMOVE_TOAST",
19
- toastId
20
- });
21
- }, TOAST_REMOVE_DELAY);
22
- toastTimeouts.set(toastId, timeout);
23
- };
24
- var reducer = (state, action) => {
25
- switch (action.type) {
26
- case "ADD_TOAST":
27
- console.log("adding toast case");
28
- return {
29
- ...state,
30
- toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT)
31
- };
32
- case "UPDATE_TOAST":
33
- return {
34
- ...state,
35
- toasts: state.toasts.map(
36
- (t) => t.id === action.toast.id ? { ...t, ...action.toast } : t
37
- )
38
- };
39
- case "DISMISS_TOAST": {
40
- const { toastId } = action;
41
- if (toastId) {
42
- addToRemoveQueue(toastId);
43
- } else {
44
- state.toasts.forEach((toast2) => {
45
- addToRemoveQueue(toast2.id);
46
- });
47
- }
48
- return {
49
- ...state,
50
- toasts: state.toasts.map(
51
- (t) => t.id === toastId || toastId === void 0 ? { ...t, open: false } : t
52
- )
53
- };
54
- }
55
- case "REMOVE_TOAST":
56
- if (action.toastId === void 0) {
57
- return { ...state, toasts: [] };
58
- }
59
- return {
60
- ...state,
61
- toasts: state.toasts.filter((t) => t.id !== action.toastId)
62
- };
63
- }
64
- };
65
- var listeners = [];
66
- var memoryState = { toasts: [] };
67
- function dispatch(action) {
68
- console.log("dispatching toast");
69
- memoryState = reducer(memoryState, action);
70
- listeners.forEach((listener) => {
71
- console.log("mapping through listerners in dispathc");
72
- listener(memoryState);
73
- });
74
- }
75
- function toast({ ...props }) {
76
- const id = genId();
77
- const update = (props2) => dispatch({
78
- type: "UPDATE_TOAST",
79
- toast: { ...props2, id }
80
- });
81
- const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id });
82
- dispatch({
83
- type: "ADD_TOAST",
84
- toast: {
85
- ...props,
86
- id,
87
- open: true,
88
- onOpenChange: (open) => {
89
- if (!open)
90
- dismiss();
91
- }
92
- }
93
- });
94
- return {
95
- id,
96
- dismiss,
97
- update
98
- };
99
- }
100
- function useToast() {
101
- const [state, setState] = React.useState(memoryState);
102
- React.useEffect(() => {
103
- console.log("useToast triggered in useEffect");
104
- console.log("toast state", state);
105
- console.log("listerners BEFORE", listeners);
106
- console.log("TOAST: setState is ", setState);
107
- listeners.push(setState);
108
- return () => {
109
- const index = listeners.indexOf(setState);
110
- console.log("listerners AFTER", listeners);
111
- if (index > -1) {
112
- listeners.splice(index, 1);
113
- }
114
- };
115
- }, [state]);
116
- return {
117
- ...state,
118
- toast,
119
- dismiss: (toastId) => dispatch({ type: "DISMISS_TOAST", toastId })
120
- };
121
- }
122
-
123
- // hooks/useClipboard.ts
124
- import { useState as useState2 } from "react";
125
- function useClipboard({ timeout = 2e3 } = {}) {
126
- const [error, setError] = useState2(null);
127
- const [copied, setCopied] = useState2(false);
128
- const [copyTimeout, setCopyTimeout] = useState2(null);
129
- const handleCopyResult = (value) => {
130
- clearTimeout(copyTimeout);
131
- setCopyTimeout(setTimeout(() => setCopied(false), timeout));
132
- setCopied(value);
133
- };
134
- const copy = (valueToCopy) => {
135
- if ("clipboard" in navigator) {
136
- navigator.clipboard.writeText(valueToCopy).then(() => handleCopyResult(true)).catch((err) => setError(err));
137
- } else {
138
- setError(new Error("useClipboard: navigator.clipboard is not supported"));
139
- }
140
- };
141
- const reset = () => {
142
- setCopied(false);
143
- setError(null);
144
- clearTimeout(copyTimeout);
145
- };
146
- return { copy, reset, error, copied };
147
- }
148
-
149
- export {
150
- reducer,
151
- toast,
152
- useToast,
153
- useClipboard
154
- };