@sikka/hawa 0.24.3-next → 0.24.5-next

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 (151) hide show
  1. package/dist/accordion/index.d.mts +1 -2
  2. package/dist/accordion/index.d.ts +1 -2
  3. package/dist/accordion/index.mjs +219 -7
  4. package/dist/alert/index.d.mts +1 -1
  5. package/dist/alert/index.d.ts +1 -1
  6. package/dist/appLayout/index.d.mts +126 -0
  7. package/dist/appLayout/index.d.ts +126 -0
  8. package/dist/appLayout/index.js +1325 -0
  9. package/dist/appLayout/index.mjs +1285 -0
  10. package/dist/appMenubar/index.d.mts +33 -0
  11. package/dist/appMenubar/index.d.ts +33 -0
  12. package/dist/appMenubar/index.js +281 -0
  13. package/dist/appMenubar/index.mjs +224 -0
  14. package/dist/appTabs/index.d.mts +18 -0
  15. package/dist/appTabs/index.d.ts +18 -0
  16. package/dist/appTabs/index.js +92 -0
  17. package/dist/appTabs/index.mjs +50 -0
  18. package/dist/appTopbar/index.d.mts +44 -0
  19. package/dist/appTopbar/index.d.ts +44 -0
  20. package/dist/appTopbar/index.js +483 -0
  21. package/dist/appTopbar/index.mjs +441 -0
  22. package/dist/avatar/index.d.mts +5 -4
  23. package/dist/avatar/index.d.ts +5 -4
  24. package/dist/backToTop/index.mjs +353 -3
  25. package/dist/badge/index.d.mts +2 -2
  26. package/dist/badge/index.d.ts +2 -2
  27. package/dist/checkbox/index.d.mts +1 -2
  28. package/dist/checkbox/index.d.ts +1 -2
  29. package/dist/chip/index.d.mts +36 -2
  30. package/dist/chip/index.d.ts +36 -2
  31. package/dist/chip/index.mjs +83 -3
  32. package/dist/chunk-62GI5F2P.mjs +442 -0
  33. package/dist/chunk-7NCNPRCL.mjs +120 -0
  34. package/dist/{chunk-TNAHW35O.mjs → chunk-C2UYTGUD.mjs} +8 -4
  35. package/dist/{chunk-26FHSPJI.mjs → chunk-DGWAHQRX.mjs} +1 -101
  36. package/dist/chunk-LRLLDOQZ.mjs +178 -0
  37. package/dist/chunk-ND4BWUKH.mjs +34 -0
  38. package/dist/codeBlock/index.mjs +684 -310
  39. package/dist/colorPicker/index.d.mts +2 -1
  40. package/dist/colorPicker/index.d.ts +2 -1
  41. package/dist/colorPicker/index.mjs +2 -167
  42. package/dist/combobox/index.d.mts +9 -1
  43. package/dist/combobox/index.d.ts +9 -1
  44. package/dist/combobox/index.mjs +61 -393
  45. package/dist/command/index.mjs +10 -425
  46. package/dist/commonTypes-3J1E3b61.d.mts +6 -0
  47. package/dist/commonTypes-3J1E3b61.d.ts +6 -0
  48. package/dist/commonTypes-GhKAraJw.d.mts +4 -0
  49. package/dist/commonTypes-GhKAraJw.d.ts +4 -0
  50. package/dist/commonTypes-LrR8QrYP.d.mts +5 -0
  51. package/dist/commonTypes-LrR8QrYP.d.ts +5 -0
  52. package/dist/commonTypes-WPhcN3Vr.d.mts +5 -0
  53. package/dist/commonTypes-WPhcN3Vr.d.ts +5 -0
  54. package/dist/commonTypes-ko_NGEoT.d.mts +3 -0
  55. package/dist/commonTypes-ko_NGEoT.d.ts +3 -0
  56. package/dist/copyrights/index.d.mts +17 -0
  57. package/dist/copyrights/index.d.ts +17 -0
  58. package/dist/copyrights/index.js +45 -0
  59. package/dist/copyrights/index.mjs +8 -0
  60. package/dist/count/index.d.mts +11 -0
  61. package/dist/count/index.d.ts +11 -0
  62. package/dist/count/index.js +45 -0
  63. package/dist/count/index.mjs +8 -0
  64. package/dist/dataTable/index.d.mts +1 -1
  65. package/dist/dataTable/index.d.ts +1 -1
  66. package/dist/destroyableCard/index.d.mts +1 -1
  67. package/dist/destroyableCard/index.d.ts +1 -1
  68. package/dist/dialog/index.d.mts +1 -1
  69. package/dist/dialog/index.d.ts +1 -1
  70. package/dist/docsLayout/index.d.mts +37 -0
  71. package/dist/docsLayout/index.d.ts +37 -0
  72. package/dist/docsLayout/index.js +926 -0
  73. package/dist/docsLayout/index.mjs +886 -0
  74. package/dist/docsSidebar/index.d.mts +11 -0
  75. package/dist/docsSidebar/index.d.ts +11 -0
  76. package/dist/docsSidebar/index.js +111 -0
  77. package/dist/docsSidebar/index.mjs +69 -0
  78. package/dist/index.d.mts +11 -4
  79. package/dist/index.d.ts +11 -4
  80. package/dist/index.js +44 -35
  81. package/dist/index.mjs +44 -35
  82. package/dist/input/index.d.mts +2 -9
  83. package/dist/input/index.d.ts +2 -9
  84. package/dist/input/index.mjs +14 -98
  85. package/dist/interfaceSettings/index.d.mts +1 -1
  86. package/dist/interfaceSettings/index.d.ts +1 -1
  87. package/dist/interfaceSettings/index.mjs +24 -110
  88. package/dist/label/index.d.mts +1 -1
  89. package/dist/label/index.d.ts +1 -1
  90. package/dist/label/index.mjs +2 -87
  91. package/dist/layout/index.d.mts +11 -4
  92. package/dist/layout/index.d.ts +11 -4
  93. package/dist/layout/index.js +47 -38
  94. package/dist/layout/index.mjs +44 -35
  95. package/dist/navbar/index.d.mts +17 -0
  96. package/dist/navbar/index.d.ts +17 -0
  97. package/dist/navbar/index.js +166 -0
  98. package/dist/navbar/index.mjs +126 -0
  99. package/dist/pagination/index.d.mts +1 -1
  100. package/dist/pagination/index.d.ts +1 -1
  101. package/dist/passwordInput/index.mjs +27 -137
  102. package/dist/phoneInput/index.mjs +19 -129
  103. package/dist/radio/index.d.mts +1 -4
  104. package/dist/radio/index.d.ts +1 -4
  105. package/dist/scrollArea/index.d.mts +1 -1
  106. package/dist/scrollArea/index.d.ts +1 -1
  107. package/dist/select/index.d.mts +1 -1
  108. package/dist/select/index.d.ts +1 -1
  109. package/dist/separator/index.d.mts +1 -1
  110. package/dist/separator/index.d.ts +1 -1
  111. package/dist/sidebar/index.d.mts +48 -0
  112. package/dist/sidebar/index.d.ts +48 -0
  113. package/dist/sidebar/index.js +341 -0
  114. package/dist/sidebar/index.mjs +298 -0
  115. package/dist/simpleTable/index.d.mts +4 -3
  116. package/dist/simpleTable/index.d.ts +4 -3
  117. package/dist/simpleTable/index.mjs +21 -45
  118. package/dist/skeleton/index.d.mts +3 -3
  119. package/dist/skeleton/index.d.ts +3 -3
  120. package/dist/skeleton/index.mjs +3 -29
  121. package/dist/sortButton/index.mjs +9 -260
  122. package/dist/splitButton/index.d.mts +4 -3
  123. package/dist/splitButton/index.d.ts +4 -3
  124. package/dist/splitButton/index.mjs +10 -259
  125. package/dist/stats/index.d.mts +19 -0
  126. package/dist/stats/index.d.ts +19 -0
  127. package/dist/stats/index.js +191 -0
  128. package/dist/stats/index.mjs +154 -0
  129. package/dist/stopPropagationWrapper/index.d.mts +2 -2
  130. package/dist/stopPropagationWrapper/index.d.ts +2 -2
  131. package/dist/switch/index.d.mts +2 -1
  132. package/dist/switch/index.d.ts +2 -1
  133. package/dist/tabs/index.d.mts +19 -1
  134. package/dist/tabs/index.d.ts +19 -1
  135. package/dist/tabs/index.mjs +94 -14
  136. package/dist/textarea/index.d.mts +8 -1
  137. package/dist/textarea/index.d.ts +8 -1
  138. package/dist/textarea/index.mjs +92 -8
  139. package/dist/toast/index.d.mts +1 -1
  140. package/dist/toast/index.d.ts +1 -1
  141. package/package.json +1 -1
  142. package/dist/Label-fkQ4ebuH.d.mts +0 -12
  143. package/dist/Label-fkQ4ebuH.d.ts +0 -12
  144. package/dist/chunk-72HYR6WB.mjs +0 -88
  145. package/dist/chunk-JYSC6GKM.mjs +0 -229
  146. package/dist/commonTypes-3k5cNB1s.d.mts +0 -4
  147. package/dist/commonTypes-3k5cNB1s.d.ts +0 -4
  148. package/dist/commonTypes-N7XOVCit.d.mts +0 -5
  149. package/dist/commonTypes-N7XOVCit.d.ts +0 -5
  150. package/dist/index-DUZFcPRO.d.mts +0 -38
  151. package/dist/index-DUZFcPRO.d.ts +0 -38
@@ -0,0 +1,1325 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // components/layout/appLayout/index.ts
31
+ var appLayout_exports = {};
32
+ __export(appLayout_exports, {
33
+ AppLayout: () => AppLayout
34
+ });
35
+ module.exports = __toCommonJS(appLayout_exports);
36
+
37
+ // components/layout/appLayout/AppLayout.tsx
38
+ var import_react4 = __toESM(require("react"));
39
+
40
+ // components/elements/button/Button.tsx
41
+ var React2 = __toESM(require("react"));
42
+ var import_class_variance_authority = require("class-variance-authority");
43
+
44
+ // components/util.ts
45
+ var import_clsx = require("clsx");
46
+ var import_tailwind_merge = require("tailwind-merge");
47
+ function cn(...inputs) {
48
+ return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
49
+ }
50
+
51
+ // components/elements/loading/Loading.tsx
52
+ var import_react = __toESM(require("react"));
53
+ var Loading = ({
54
+ design = "spinner",
55
+ size = "sm",
56
+ themeMode = "light",
57
+ color,
58
+ ...props
59
+ }) => {
60
+ let sizeStyles = {
61
+ button: "hawa-h-4 hawa-w-4",
62
+ xs: "hawa-h-1 hawa-w-1",
63
+ sm: "hawa-h-6 hawa-w-6",
64
+ normal: "hawa-h-8 hawa-w-8",
65
+ lg: "hawa-h-14 hawa-w-14",
66
+ xl: "hawa-h-24 hawa-w-24"
67
+ };
68
+ let animationStyles = {
69
+ pulse: "hawa-animate-in hawa-fade-in hawa-duration-1000",
70
+ bounce: "hawa-animate-bounce"
71
+ };
72
+ switch (design.split("-")[0]) {
73
+ case "dots":
74
+ return /* @__PURE__ */ import_react.default.createElement(
75
+ "div",
76
+ {
77
+ className: cn("hawa-flex hawa-flex-row hawa-gap-2", props.className)
78
+ },
79
+ /* @__PURE__ */ import_react.default.createElement(
80
+ "div",
81
+ {
82
+ className: cn(
83
+ "hawa-animate-bounce hawa-rounded-full hawa-delay-100 hawa-repeat-infinite",
84
+ size === "button" ? "hawa-h-2 hawa-w-2" : sizeStyles[size],
85
+ animationStyles[design.split("-")[1]],
86
+ color ? color : "hawa-bg-primary"
87
+ )
88
+ }
89
+ ),
90
+ /* @__PURE__ */ import_react.default.createElement(
91
+ "div",
92
+ {
93
+ className: cn(
94
+ "hawa-animate-bounce hawa-rounded-full hawa-delay-200 hawa-repeat-infinite",
95
+ size === "button" ? "hawa-h-2 hawa-w-2" : sizeStyles[size],
96
+ animationStyles[design.split("-")[1]],
97
+ color ? color : "hawa-bg-primary"
98
+ )
99
+ }
100
+ ),
101
+ /* @__PURE__ */ import_react.default.createElement(
102
+ "div",
103
+ {
104
+ className: cn(
105
+ "hawa-animate-bounce hawa-rounded-full hawa-delay-300 hawa-repeat-infinite",
106
+ size === "button" ? "hawa-h-2 hawa-w-2" : sizeStyles[size],
107
+ animationStyles[design.split("-")[1]],
108
+ color ? color : "hawa-bg-primary"
109
+ )
110
+ }
111
+ )
112
+ );
113
+ case "square":
114
+ return /* @__PURE__ */ import_react.default.createElement(
115
+ "svg",
116
+ {
117
+ className: cn("squircle-container", sizeStyles[size]),
118
+ viewBox: "0 0 35 35",
119
+ height: "35",
120
+ width: "35"
121
+ },
122
+ /* @__PURE__ */ import_react.default.createElement(
123
+ "rect",
124
+ {
125
+ className: "squircle-track",
126
+ x: "2.5",
127
+ y: "2.5",
128
+ fill: "none",
129
+ strokeWidth: "5px",
130
+ width: "32.5",
131
+ height: "32.5"
132
+ }
133
+ ),
134
+ /* @__PURE__ */ import_react.default.createElement(
135
+ "rect",
136
+ {
137
+ className: "square-car",
138
+ x: "2.5",
139
+ y: "2.5",
140
+ fill: "none",
141
+ strokeWidth: "5px",
142
+ width: "32.5",
143
+ height: "32.5",
144
+ pathLength: "100"
145
+ }
146
+ )
147
+ );
148
+ case "squircle":
149
+ return /* @__PURE__ */ import_react.default.createElement(
150
+ "svg",
151
+ {
152
+ className: cn("squircle-container", sizeStyles[size]),
153
+ x: "0px",
154
+ y: "0px",
155
+ viewBox: "0 0 37 37",
156
+ height: "37",
157
+ width: "37",
158
+ preserveAspectRatio: "xMidYMid meet"
159
+ },
160
+ /* @__PURE__ */ import_react.default.createElement(
161
+ "path",
162
+ {
163
+ className: "squircle-track",
164
+ fill: "none",
165
+ strokeWidth: "5",
166
+ pathLength: "100",
167
+ 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"
168
+ }
169
+ ),
170
+ /* @__PURE__ */ import_react.default.createElement(
171
+ "path",
172
+ {
173
+ className: "squircle-car",
174
+ fill: "none",
175
+ strokeWidth: "5",
176
+ pathLength: "100",
177
+ 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"
178
+ }
179
+ )
180
+ );
181
+ case "progress":
182
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: "progress-loading" });
183
+ case "orbit":
184
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: "orbit-container" });
185
+ default:
186
+ return /* @__PURE__ */ import_react.default.createElement(
187
+ "svg",
188
+ {
189
+ className: cn("circle-container", sizeStyles[size]),
190
+ viewBox: "0 0 40 40",
191
+ height: "40",
192
+ width: "40"
193
+ },
194
+ /* @__PURE__ */ import_react.default.createElement(
195
+ "circle",
196
+ {
197
+ className: cn("circle-track", {
198
+ "hawa-stroke-primary-foreground": themeMode === "dark",
199
+ "hawa-stroke-primary": themeMode === "light"
200
+ }),
201
+ cx: "20",
202
+ cy: "20",
203
+ r: "17.5",
204
+ pathLength: "100",
205
+ strokeWidth: "5px",
206
+ fill: "none"
207
+ }
208
+ ),
209
+ /* @__PURE__ */ import_react.default.createElement(
210
+ "circle",
211
+ {
212
+ className: cn("circle-car", {
213
+ "hawa-stroke-primary-foreground": themeMode === "dark",
214
+ "hawa-stroke-primary": themeMode === "light"
215
+ }),
216
+ cx: "20",
217
+ cy: "20",
218
+ r: "17.5",
219
+ pathLength: "100",
220
+ strokeWidth: "5px",
221
+ fill: "none"
222
+ }
223
+ )
224
+ );
225
+ }
226
+ };
227
+
228
+ // components/elements/button/Button.tsx
229
+ var buttonVariants = (0, import_class_variance_authority.cva)(
230
+ "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",
231
+ {
232
+ variants: {
233
+ variant: {
234
+ default: "hawa-bg-primary hawa-text-primary-foreground hover:hawa-bg-primary/90",
235
+ light: "hawa-bg-primary/20 hawa-text-primary hover:hawa-bg-primary/40",
236
+ destructive: "hawa-bg-destructive hawa-text-destructive-foreground hover:hawa-bg-destructive/90",
237
+ outline: "hawa-border hawa-border-input hawa-bg-transparent hover:hawa-bg-accent hover:hawa-text-accent-foreground",
238
+ secondary: "hawa-bg-secondary hawa-text-secondary-foreground hover:hawa-bg-secondary/80",
239
+ ghost: "hover:hawa-bg-accent hover:hawa-text-accent-foreground",
240
+ link: "hawa-text-primary hawa-underline-offset-4 hover:hawa-underline",
241
+ combobox: "hawa-bg-background hawa-border",
242
+ neoBrutalism: "neo-brutalism"
243
+ // "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",
244
+ },
245
+ size: {
246
+ default: "hawa-h-10 hawa-px-4 hawa-py-2",
247
+ heightless: "hawa-px-4 hawa-py-4",
248
+ xs: "hawa-h-fit hawa-min-h-[25px] hawa-py-1 hawa-text-[10px] hawa-px-2 ",
249
+ sm: "hawa-h-9 hawa-text-[11px] hawa-rounded-md hawa-px-3",
250
+ lg: "hawa-h-11 hawa-rounded-md hawa-px-8",
251
+ xl: "hawa-h-14 hawa-rounded-md hawa-px-10",
252
+ icon: "hawa-h-10 hawa-w-10",
253
+ smallIcon: "hawa-h-7 hawa-w-7"
254
+ }
255
+ },
256
+ defaultVariants: {
257
+ variant: "default",
258
+ size: "default"
259
+ }
260
+ }
261
+ );
262
+ var Button = React2.forwardRef(
263
+ ({
264
+ className,
265
+ variant,
266
+ size,
267
+ asChild = false,
268
+ centered = true,
269
+ isLoading,
270
+ children,
271
+ ...props
272
+ }, ref) => {
273
+ const Comp = "button";
274
+ const loadingColor = variant === "outline" || variant === "ghost" || variant === "neoBrutalism" ? "hawa-bg-primary" : "hawa-bg-primary-foreground";
275
+ return /* @__PURE__ */ React2.createElement(
276
+ Comp,
277
+ {
278
+ className: cn(
279
+ buttonVariants({ variant, size, className }),
280
+ centered && "hawa-justify-center"
281
+ ),
282
+ ref,
283
+ ...props
284
+ },
285
+ isLoading ? /* @__PURE__ */ React2.createElement(
286
+ Loading,
287
+ {
288
+ design: size === "icon" || size === "smallIcon" ? "spinner" : "dots-pulse",
289
+ themeMode: variant === "outline" ? "light" : "dark",
290
+ color: loadingColor,
291
+ size: size === "sm" || size === "xs" ? "xs" : "button"
292
+ }
293
+ ) : children
294
+ );
295
+ }
296
+ );
297
+ Button.displayName = "Button";
298
+
299
+ // components/elements/dropdownMenu/DropdownMenu.tsx
300
+ var React3 = __toESM(require("react"));
301
+ var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"));
302
+ var DropdownMenuRoot = DropdownMenuPrimitive.Root;
303
+ var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
304
+ var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
305
+ var DropdownMenuSub = DropdownMenuPrimitive.Sub;
306
+ var DropdownMenuSubTrigger = React3.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ React3.createElement(
307
+ DropdownMenuPrimitive.SubTrigger,
308
+ {
309
+ ref,
310
+ className: cn(
311
+ "hawa-flex hawa-cursor-default hawa-select-none hawa-items-center hawa-justify-between hawa-rounded-sm hawa-text-sm hawa-outline-none focus:hawa-bg-accent data-[state=open]:hawa-bg-accent",
312
+ inset && "hawa-pl-8",
313
+ className
314
+ ),
315
+ ...props
316
+ },
317
+ /* @__PURE__ */ React3.createElement("div", { className: "hawa-flex hawa-flex-row hawa-items-center hawa-gap-2" }, children),
318
+ " ",
319
+ /* @__PURE__ */ React3.createElement(
320
+ "svg",
321
+ {
322
+ "aria-label": "Chevron Right Icon",
323
+ stroke: "currentColor",
324
+ fill: "currentColor",
325
+ strokeWidth: "0",
326
+ viewBox: "0 0 16 16",
327
+ height: "1em",
328
+ width: "1em",
329
+ className: cn(props.dir === "rtl" ? "hawa-rotate-180" : "")
330
+ },
331
+ /* @__PURE__ */ React3.createElement(
332
+ "path",
333
+ {
334
+ fillRule: "evenodd",
335
+ d: "M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z"
336
+ }
337
+ )
338
+ )
339
+ ));
340
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
341
+ var DropdownMenuSubContent = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React3.createElement(
342
+ DropdownMenuPrimitive.SubContent,
343
+ {
344
+ ref,
345
+ className: cn(
346
+ "hawa-z-50 hawa-min-w-[8rem] hawa-gap-1 hawa-overflow-hidden hawa-rounded-md hawa-border hawa-bg-popover hawa-p-1 hawa-text-popover-foreground hawa-shadow-lg data-[state=open]:hawa-animate-in data-[state=closed]:hawa-animate-out data-[state=closed]:hawa-fade-out-0 data-[state=open]:hawa-fade-in-0 data-[state=closed]:hawa-zoom-out-95 data-[state=open]:hawa-zoom-in-95 data-[side=bottom]:hawa-slide-in-from-top-2 data-[side=left]:hawa-slide-in-from-right-2 data-[side=right]:hawa-slide-in-from-left-2 data-[side=top]:hawa-slide-in-from-bottom-2",
347
+ className
348
+ ),
349
+ ...props
350
+ }
351
+ ));
352
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
353
+ var DropdownMenuContent = React3.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React3.createElement(DropdownMenuPrimitive.Portal, null, /* @__PURE__ */ React3.createElement(
354
+ DropdownMenuPrimitive.Content,
355
+ {
356
+ ref,
357
+ sideOffset,
358
+ className: cn(
359
+ "hawa-z-50 hawa-overflow-hidden hawa-rounded-md hawa-border hawa-bg-popover hawa-p-1 hawa-text-popover-foreground hawa-shadow-md data-[state=open]:hawa-animate-in data-[state=closed]:hawa-animate-out data-[state=closed]:hawa-fade-out-0 data-[state=open]:hawa-fade-in-0 data-[state=closed]:hawa-zoom-out-95 data-[state=open]:hawa-zoom-in-95 data-[side=bottom]:hawa-slide-in-from-top-2 data-[side=left]:hawa-slide-in-from-right-2 data-[side=right]:hawa-slide-in-from-left-2 data-[side=top]:hawa-slide-in-from-bottom-2",
360
+ className
361
+ ),
362
+ ...props
363
+ }
364
+ )));
365
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
366
+ var DropdownMenuItem = React3.forwardRef(({ className, inset, badged, slug, ...props }, ref) => {
367
+ return /* @__PURE__ */ React3.createElement("a", { href: slug }, /* @__PURE__ */ React3.createElement(
368
+ DropdownMenuPrimitive.Item,
369
+ {
370
+ disabled: props.disabled,
371
+ ref,
372
+ className: cn(
373
+ "hawa-relative hawa-flex hawa-cursor-pointer hawa-select-none hawa-items-center hawa-justify-between hawa-rounded-sm hawa-text-sm hawa-outline-none hawa-transition-colors focus:hawa-text-accent-foreground data-[disabled]:hawa-pointer-events-none data-[disabled]:hawa-opacity-50",
374
+ inset && "hawa-pl-8",
375
+ props.end && Array.isArray(props.children) && props.children[1] && "hawa-gap-6",
376
+ className
377
+ ),
378
+ ...props
379
+ },
380
+ /* @__PURE__ */ React3.createElement("div", { className: "hawa-flex hawa-flex-row hawa-items-center hawa-gap-2 " }, props.children),
381
+ props.end && props.end,
382
+ !props.end && props.shortcut && /* @__PURE__ */ React3.createElement(DropdownMenuShortcut, null, props.shortcut),
383
+ !props.end && badged && /* @__PURE__ */ React3.createElement("div", { className: "hawa-h-3 hawa-w-3 hawa-rounded-full hawa-bg-red-500" })
384
+ ));
385
+ });
386
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
387
+ var DropdownMenuCheckboxItem = React3.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ React3.createElement(
388
+ DropdownMenuPrimitive.CheckboxItem,
389
+ {
390
+ ref,
391
+ className: cn(
392
+ "hawa-relative hawa-flex hawa-cursor-default hawa-select-none hawa-items-center hawa-rounded-sm hawa-py-1.5 hawa-pl-8 hawa-pr-2 hawa-text-sm hawa-outline-none hawa-transition-colors focus:hawa-bg-accent focus:hawa-text-accent-foreground data-[disabled]:hawa-pointer-events-none data-[disabled]:hawa-opacity-50",
393
+ className
394
+ ),
395
+ checked,
396
+ ...props
397
+ },
398
+ /* @__PURE__ */ React3.createElement("span", { className: "hawa-absolute hawa-left-2 hawa-flex hawa-h-3.5 hawa-w-3.5 hawa-items-center hawa-justify-center" }, /* @__PURE__ */ React3.createElement(DropdownMenuPrimitive.ItemIndicator, null, /* @__PURE__ */ React3.createElement(
399
+ "svg",
400
+ {
401
+ "aria-label": "Check Mark",
402
+ stroke: "currentColor",
403
+ fill: "currentColor",
404
+ strokeWidth: "0",
405
+ viewBox: "0 0 512 512",
406
+ height: "0.60em",
407
+ width: "0.60em"
408
+ },
409
+ /* @__PURE__ */ React3.createElement("path", { d: "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z" })
410
+ ), " ")),
411
+ children
412
+ ));
413
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
414
+ var DropdownMenuRadioItem = React3.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React3.createElement(
415
+ DropdownMenuPrimitive.RadioItem,
416
+ {
417
+ ref,
418
+ className: cn(
419
+ "hawa-relative hawa-flex hawa-cursor-pointer hawa-select-none hawa-items-center hawa-rounded-sm hawa-py-1.5 hawa-pl-8 hawa-pr-2 hawa-text-sm hawa-outline-none hawa-transition-colors focus:hawa-bg-accent focus:hawa-text-accent-foreground data-[disabled]:hawa-pointer-events-none data-[disabled]:hawa-opacity-50",
420
+ className
421
+ ),
422
+ ...props
423
+ },
424
+ /* @__PURE__ */ React3.createElement("span", { className: "hawa-absolute hawa-left-2 hawa-flex hawa-h-3.5 hawa-w-3.5 hawa-items-center hawa-justify-center" }, /* @__PURE__ */ React3.createElement(DropdownMenuPrimitive.ItemIndicator, null, /* @__PURE__ */ React3.createElement(
425
+ "svg",
426
+ {
427
+ xmlns: "http://www.w3.org/2000/svg",
428
+ width: "24",
429
+ "aria-label": "Circle",
430
+ height: "24",
431
+ viewBox: "0 0 24 24",
432
+ fill: "none",
433
+ stroke: "currentColor",
434
+ strokeWidth: "2",
435
+ strokeLinecap: "round",
436
+ strokeLinejoin: "round",
437
+ className: "hawa-h-2 hawa-w-2 hawa-fill-current"
438
+ },
439
+ /* @__PURE__ */ React3.createElement("circle", { cx: "12", cy: "12", r: "10" })
440
+ ))),
441
+ children
442
+ ));
443
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
444
+ var DropdownMenuLabel = React3.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ React3.createElement(
445
+ DropdownMenuPrimitive.Label,
446
+ {
447
+ ref,
448
+ className: cn(
449
+ "hawa-px-2 hawa-py-1.5 hawa-text-sm hawa-font-semibold",
450
+ inset && "hawa-pl-8",
451
+ className
452
+ ),
453
+ ...props
454
+ }
455
+ ));
456
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
457
+ var DropdownMenuSeparator = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React3.createElement(
458
+ DropdownMenuPrimitive.Separator,
459
+ {
460
+ ref,
461
+ className: cn("hawa--mx-1 hawa-my-1 hawa-h-px hawa-bg-muted", className),
462
+ ...props
463
+ }
464
+ ));
465
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
466
+ var DropdownMenuShortcut = ({
467
+ className,
468
+ ...props
469
+ }) => {
470
+ return /* @__PURE__ */ React3.createElement(
471
+ "span",
472
+ {
473
+ className: cn(
474
+ "hawa-text-xs hawa-tracking-widest hawa-opacity-60",
475
+ className
476
+ ),
477
+ ...props
478
+ }
479
+ );
480
+ };
481
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
482
+ var DropdownMenu = ({
483
+ trigger,
484
+ items,
485
+ direction,
486
+ sideOffset,
487
+ side,
488
+ className,
489
+ triggerClassname,
490
+ align,
491
+ alignOffset,
492
+ onItemSelect,
493
+ size = "default",
494
+ width = "default",
495
+ header,
496
+ onOpenChange,
497
+ open
498
+ }) => {
499
+ const widthStyles = {
500
+ default: "hawa-min-w-[8rem]",
501
+ sm: "hawa-w-fit",
502
+ lg: "hawa-w-[200px]",
503
+ parent: "ddm-w-parent"
504
+ };
505
+ const sizeStyles = {
506
+ default: "hawa-px-2 hawa-py-3 ",
507
+ sm: "hawa-text-xs hawa-px-1.5 hawa-py-1.5 "
508
+ };
509
+ return /* @__PURE__ */ React3.createElement(
510
+ DropdownMenuRoot,
511
+ {
512
+ onOpenChange,
513
+ open,
514
+ modal: false,
515
+ dir: direction
516
+ },
517
+ /* @__PURE__ */ React3.createElement(DropdownMenuTrigger, { asChild: true, className: triggerClassname }, trigger),
518
+ /* @__PURE__ */ React3.createElement(DropdownMenuPortal, null, /* @__PURE__ */ React3.createElement(
519
+ DropdownMenuContent,
520
+ {
521
+ side,
522
+ sideOffset,
523
+ className: cn(
524
+ className,
525
+ widthStyles[width],
526
+ "hawa-flex hawa-flex-col hawa-gap-1"
527
+ ),
528
+ align,
529
+ alignOffset
530
+ },
531
+ header && header,
532
+ items && items.map((item, index) => {
533
+ if (item.itemType === "separator") {
534
+ return /* @__PURE__ */ React3.createElement(DropdownMenuSeparator, { key: index });
535
+ } else if (item.itemType === "label") {
536
+ return /* @__PURE__ */ React3.createElement(DropdownMenuLabel, { key: index }, item.label);
537
+ } else if (item.itemType === "custom") {
538
+ return /* @__PURE__ */ React3.createElement("div", { key: index }, item.content);
539
+ } else {
540
+ return item.subitems ? /* @__PURE__ */ React3.createElement(DropdownMenuSub, { key: index }, /* @__PURE__ */ React3.createElement(
541
+ DropdownMenuSubTrigger,
542
+ {
543
+ className: cn(sizeStyles[size]),
544
+ dir: direction
545
+ },
546
+ item.icon && item.icon,
547
+ item.label && item.label
548
+ ), /* @__PURE__ */ React3.createElement(DropdownMenuPortal, null, /* @__PURE__ */ React3.createElement(DropdownMenuSubContent, null, item.subitems.map((subitem, subIndex) => /* @__PURE__ */ React3.createElement(
549
+ DropdownMenuItem,
550
+ {
551
+ slug: subitem.slug,
552
+ onMouseDown: (event) => {
553
+ if (event.button === 1 || event.button === 0 && event.ctrlKey) {
554
+ event.preventDefault();
555
+ if (subitem.onMiddleClick) {
556
+ subitem.onMiddleClick(item.value);
557
+ }
558
+ }
559
+ },
560
+ key: subIndex,
561
+ className: cn(
562
+ sizeStyles[size],
563
+ !item.icon && !item.label ? "hawa-px-0 hawa-py-0 focus:hawa-bg-transparent" : "focus:hawa-bg-accent"
564
+ ),
565
+ disabled: subitem.disabled,
566
+ onSelect: () => {
567
+ subitem.action && subitem.action();
568
+ if (onItemSelect) {
569
+ onItemSelect(subitem.value);
570
+ }
571
+ }
572
+ },
573
+ subitem.icon && subitem.icon,
574
+ subitem.label && subitem.label
575
+ ))))) : /* @__PURE__ */ React3.createElement(
576
+ DropdownMenuItem,
577
+ {
578
+ slug: item.slug,
579
+ key: index,
580
+ disabled: item.disabled,
581
+ onMouseDown: (event) => {
582
+ if (event.button === 1 || event.button === 0 && event.ctrlKey) {
583
+ event.preventDefault();
584
+ if (item.onMiddleClick) {
585
+ item.onMiddleClick(item.value);
586
+ }
587
+ }
588
+ },
589
+ onClick: (event) => {
590
+ if (item.onClick) {
591
+ item.onClick(item.value);
592
+ }
593
+ },
594
+ onSelect: (e) => {
595
+ if (item.presist) {
596
+ e.preventDefault();
597
+ }
598
+ if (item.action) {
599
+ item.action();
600
+ if (onItemSelect) {
601
+ onItemSelect(item.value);
602
+ }
603
+ } else {
604
+ if (onItemSelect) {
605
+ onItemSelect(item.value);
606
+ }
607
+ }
608
+ },
609
+ end: item.end,
610
+ shortcut: item.shortcut,
611
+ badged: item.badged,
612
+ className: cn(
613
+ sizeStyles[size],
614
+ !item.icon && !item.label ? "hawa-px-0 hawa-py-0 focus:hawa-bg-transparent " : "focus:hawa-bg-accent ",
615
+ item.presist && "focus:hawa-bg-transparent"
616
+ )
617
+ },
618
+ item.icon && item.icon,
619
+ item.label && item.label
620
+ );
621
+ }
622
+ })
623
+ ))
624
+ );
625
+ };
626
+
627
+ // components/elements/tooltip/Tooltip.tsx
628
+ var import_react2 = __toESM(require("react"));
629
+ var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"));
630
+ var TooltipContent = import_react2.default.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ import_react2.default.createElement(
631
+ TooltipPrimitive.Content,
632
+ {
633
+ ref,
634
+ sideOffset,
635
+ className: cn(
636
+ "hawa-z-50 hawa-overflow-hidden hawa-rounded-md hawa-border hawa-bg-popover hawa-px-3 hawa-py-1.5 hawa-text-sm hawa-text-popover-foreground hawa-shadow-md hawa-animate-in hawa-fade-in-0 hawa-zoom-in-95 data-[state=closed]:hawa-animate-out data-[state=closed]:hawa-fade-out-0 data-[state=closed]:hawa-zoom-out-95 data-[side=bottom]:hawa-slide-in-from-top-2 data-[side=left]:hawa-slide-in-from-right-2 data-[side=right]:hawa-slide-in-from-left-2 data-[side=top]:hawa-slide-in-from-bottom-2",
637
+ className
638
+ ),
639
+ ...props
640
+ }
641
+ ));
642
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
643
+ var TooltipArrow = import_react2.default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ import_react2.default.createElement(TooltipPrimitive.Arrow, { ref, className: cn(className), ...props }));
644
+ TooltipArrow.displayName = TooltipPrimitive.Arrow.displayName;
645
+ var Tooltip = ({
646
+ side,
647
+ open,
648
+ content,
649
+ children,
650
+ defaultOpen,
651
+ onOpenChange,
652
+ triggerProps,
653
+ contentProps,
654
+ providerProps,
655
+ delayDuration = 300,
656
+ ...props
657
+ }) => {
658
+ return /* @__PURE__ */ import_react2.default.createElement(
659
+ TooltipPrimitive.TooltipProvider,
660
+ {
661
+ delayDuration,
662
+ ...providerProps
663
+ },
664
+ /* @__PURE__ */ import_react2.default.createElement(
665
+ TooltipPrimitive.Root,
666
+ {
667
+ open,
668
+ defaultOpen,
669
+ onOpenChange,
670
+ ...props
671
+ },
672
+ /* @__PURE__ */ import_react2.default.createElement(TooltipPrimitive.Trigger, { ...triggerProps }, children),
673
+ /* @__PURE__ */ import_react2.default.createElement(TooltipContent, { side, align: "center", ...contentProps }, content)
674
+ )
675
+ );
676
+ };
677
+
678
+ // components/layout/sidebar/Sidebar.tsx
679
+ var React6 = __toESM(require("react"));
680
+ var AccordionPrimitive = __toESM(require("@radix-ui/react-accordion"));
681
+
682
+ // components/elements/chip/Chip.tsx
683
+ var import_react3 = __toESM(require("react"));
684
+ var Chip = import_react3.default.forwardRef(
685
+ ({
686
+ label,
687
+ size = "normal",
688
+ icon,
689
+ color,
690
+ radius = "inherit",
691
+ dotType,
692
+ ...rest
693
+ }, ref) => {
694
+ let defaultStyles = "hawa-flex hawa-flex-row hawa-w-fit hawa-gap-1 hawa-items-center hawa-px-2.5 hawa-py-1 hawa-font-bold ";
695
+ let radiusStyles = {
696
+ inherit: " hawa-rounded",
697
+ full: "hawa-rounded-full",
698
+ none: "hawa-rounded-none"
699
+ };
700
+ let sizeStyles = {
701
+ small: "hawa-h-[15px] hawa-leading-4 hawa-px-0 hawa-py-0 hawa-text-[9px] hawa-gap-0.5 ",
702
+ normal: "hawa-h-fit hawa-text-xs",
703
+ large: "hawa-text-base"
704
+ };
705
+ let dotStyles = {
706
+ small: "hawa-flex hawa-h-1 hawa-w-1 hawa-rounded-full",
707
+ normal: "hawa-flex hawa-h-2 hawa-w-2 hawa-rounded-full",
708
+ large: "hawa-flex hawa-h-3 hawa-w-3 hawa-rounded-full"
709
+ };
710
+ let dotTypeStyles = {
711
+ available: "hawa-bg-green-500",
712
+ unavailable: "hawa-bg-red-500"
713
+ };
714
+ let colorStyles = {
715
+ green: "hawa-bg-green-100 hawa-text-green-500 dark:hawa-bg-green-400 dark:hawa-text-green-800",
716
+ blue: "hawa-bg-blue-100 hawa-text-blue-500 dark:hawa-bg-blue-400 dark:hawa-text-blue-100",
717
+ red: "hawa-bg-red-100 hawa-text-red-500 dark:hawa-bg-red-400 dark:hawa-text-red-100",
718
+ yellow: "hawa-bg-yellow-100 hawa-text-yellow-600 dark:hawa-bg-yellow-400 dark:hawa-text-yellow-800",
719
+ orange: "hawa-bg-orange-100 hawa-text-orange-500 dark:hawa-bg-orange-400 dark:hawa-text-orange-100",
720
+ purple: "hawa-bg-purple-100 hawa-text-purple-500 dark:hawa-bg-purple-400 dark:hawa-text-purple-100",
721
+ cyan: "hawa-bg-cyan-100 hawa-text-cyan-800 dark:hawa-bg-cyan-400 dark:hawa-text-cyan-800",
722
+ hyper: "hawa-text-white hawa-bg-gradient-to-tl hawa-from-pink-500 hawa-via-red-500 hawa-to-yellow-500 ",
723
+ oceanic: "hawa-text-white hawa-bg-gradient-to-bl hawa-from-green-300 hawa-via-blue-500 hawa-to-purple-600"
724
+ };
725
+ if (label) {
726
+ return /* @__PURE__ */ import_react3.default.createElement(
727
+ "span",
728
+ {
729
+ ...rest,
730
+ ref,
731
+ className: cn(
732
+ defaultStyles,
733
+ sizeStyles[size],
734
+ radiusStyles[radius],
735
+ color ? colorStyles[color] : "hawa-border hawa-bg-none"
736
+ )
737
+ },
738
+ dotType && /* @__PURE__ */ import_react3.default.createElement(
739
+ "span",
740
+ {
741
+ className: cn(dotStyles[size], dotTypeStyles[dotType])
742
+ }
743
+ ),
744
+ icon && icon,
745
+ label
746
+ );
747
+ } else {
748
+ return /* @__PURE__ */ import_react3.default.createElement(
749
+ "span",
750
+ {
751
+ ...rest,
752
+ ref,
753
+ className: cn(
754
+ "hawa-h-2 hawa-w-2 hawa-rounded-full",
755
+ color ? colorStyles[color] : "hawa-border hawa-bg-none"
756
+ )
757
+ }
758
+ );
759
+ }
760
+ }
761
+ );
762
+
763
+ // components/layout/sidebar/Sidebar.tsx
764
+ var Accordion = AccordionPrimitive.Root;
765
+ var triggerStyles = "hawa-flex hawa-flex-1 hawa-items-center hawa-duration-75 hawa-select-none hawa-cursor-pointer hawa-rounded hawa-justify-between hawa-p-2 hawa-px-3 hawa-font-medium hawa-transition-all [&[data-state=open]>svg]:hawa--rotate-90";
766
+ var AccordionItem = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React6.createElement(AccordionPrimitive.Item, { ref, className: cn(className), ...props }));
767
+ AccordionItem.displayName = "AccordionItem";
768
+ var AccordionTrigger = React6.forwardRef(({ className, showArrow, children, ...props }, ref) => /* @__PURE__ */ React6.createElement(AccordionPrimitive.Header, { className: "flex" }, /* @__PURE__ */ React6.createElement(
769
+ AccordionPrimitive.Trigger,
770
+ {
771
+ ref,
772
+ className: cn(triggerStyles, className),
773
+ ...props
774
+ },
775
+ children,
776
+ showArrow && /* @__PURE__ */ React6.createElement(
777
+ "svg",
778
+ {
779
+ "aria-label": "Chevron Right Icon",
780
+ stroke: "currentColor",
781
+ fill: "currentColor",
782
+ viewBox: "0 0 16 16",
783
+ height: "1em",
784
+ width: "1em",
785
+ className: "hawa-icon hawa-shrink-0 hawa-rotate-90 hawa-transition-transform hawa-duration-200"
786
+ },
787
+ /* @__PURE__ */ React6.createElement("path", { d: "M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z" })
788
+ )
789
+ )));
790
+ AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
791
+ var AccordionContent = React6.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React6.createElement(
792
+ AccordionPrimitive.Content,
793
+ {
794
+ ref,
795
+ className: cn(
796
+ "hawa-overflow-hidden hawa-text-sm hawa-transition-all data-[state=closed]:hawa-animate-accordion-up data-[state=open]:hawa-animate-accordion-down",
797
+ className
798
+ ),
799
+ ...props
800
+ },
801
+ /* @__PURE__ */ React6.createElement("div", null, children)
802
+ ));
803
+ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
804
+ var SidebarGroup = ({
805
+ title,
806
+ items,
807
+ selectedItem,
808
+ openedItem,
809
+ setOpenedItem,
810
+ onItemClick,
811
+ onSubItemClick,
812
+ direction,
813
+ isOpen
814
+ }) => {
815
+ return /* @__PURE__ */ React6.createElement("div", { className: "hawa-m-2" }, title && /* @__PURE__ */ React6.createElement("h3", { className: "hawa-mb-1 hawa-font-bold" }, title), /* @__PURE__ */ React6.createElement("ul", { className: "hawa-flex hawa-flex-col hawa-gap-2" }, /* @__PURE__ */ React6.createElement(
816
+ Accordion,
817
+ {
818
+ value: openedItem,
819
+ type: "single",
820
+ onValueChange: (e) => {
821
+ setOpenedItem(e);
822
+ },
823
+ collapsible: true,
824
+ className: "hawa-flex hawa-flex-col hawa-gap-1"
825
+ },
826
+ items.map((item, idx) => /* @__PURE__ */ React6.createElement(
827
+ SidebarItem,
828
+ {
829
+ isOpen,
830
+ selectedItem,
831
+ key: idx,
832
+ direction,
833
+ item,
834
+ onItemClick,
835
+ onSubItemClick
836
+ }
837
+ ))
838
+ )));
839
+ };
840
+ var SidebarItem = ({
841
+ item,
842
+ onItemClick,
843
+ onSubItemClick,
844
+ direction,
845
+ isOpen = true,
846
+ ...props
847
+ }) => {
848
+ const getSelectedStyle = (value) => {
849
+ return props.selectedItem === value ? "hawa-bg-primary/90 hawa-text-primary-foreground hawa-cursor-default" : "hover:hawa-bg-primary/10";
850
+ };
851
+ if (item.subitems) {
852
+ return /* @__PURE__ */ React6.createElement(
853
+ AccordionItem,
854
+ {
855
+ value: item.value,
856
+ className: "hawa-overflow-x-clip ",
857
+ dir: direction
858
+ },
859
+ /* @__PURE__ */ React6.createElement(
860
+ AccordionTrigger,
861
+ {
862
+ className: cn(
863
+ "hawa-w-full hawa-overflow-x-clip",
864
+ props.selectedItem === item.value ? "hawa-cursor-default hawa-bg-primary hawa-text-primary-foreground" : "hawa-h-10 hover:hawa-bg-primary/10",
865
+ item.subitems && item.subitems.some(
866
+ (subitem) => props.selectedItem === subitem.value
867
+ ) ? "hawa-bg-primary/80 hawa-text-primary-foreground hover:hawa-bg-primary/80" : ""
868
+ ),
869
+ showArrow: isOpen
870
+ },
871
+ /* @__PURE__ */ React6.createElement(
872
+ "div",
873
+ {
874
+ className: cn(
875
+ "hawa-flex hawa-h-fit hawa-w-fit hawa-flex-row hawa-items-center hawa-gap-2"
876
+ )
877
+ },
878
+ item.icon && item.icon,
879
+ /* @__PURE__ */ React6.createElement(
880
+ "span",
881
+ {
882
+ className: cn(
883
+ "hawa-transition-all ",
884
+ isOpen ? "hawa-opacity-100" : "hawa-opacity-0"
885
+ )
886
+ },
887
+ item.label
888
+ )
889
+ )
890
+ ),
891
+ item.subitems && /* @__PURE__ */ React6.createElement(AccordionContent, { className: "hawa-mt-1 hawa-h-full hawa-rounded" }, /* @__PURE__ */ React6.createElement(
892
+ "div",
893
+ {
894
+ className: cn(
895
+ "hawa-flex hawa-h-full hawa-flex-col hawa-gap-2 hawa-bg-foreground/5 hawa-p-1"
896
+ )
897
+ },
898
+ item.subitems.map((subitem, idx) => /* @__PURE__ */ React6.createElement(
899
+ "a",
900
+ {
901
+ href: subitem.slug,
902
+ key: idx,
903
+ onMouseDown: (e) => {
904
+ if (subitem.onMouseDown) {
905
+ subitem.onMouseDown(e);
906
+ }
907
+ },
908
+ onClick: (e) => {
909
+ e.stopPropagation();
910
+ if (subitem.onClick) {
911
+ subitem.onClick(e);
912
+ }
913
+ if (onSubItemClick) {
914
+ onSubItemClick([item.value, subitem.value]);
915
+ }
916
+ },
917
+ className: cn(
918
+ "hawa-flex hawa-h-full hawa-cursor-pointer hawa-flex-row hawa-items-center hawa-gap-2 hawa-overflow-x-clip hawa-whitespace-nowrap hawa-rounded hawa-p-2 hawa-transition-all",
919
+ // bg-foreground/10
920
+ getSelectedStyle(subitem.value)
921
+ )
922
+ },
923
+ subitem.icon && subitem.icon,
924
+ subitem.label
925
+ ))
926
+ ))
927
+ );
928
+ } else {
929
+ return /* @__PURE__ */ React6.createElement(
930
+ "a",
931
+ {
932
+ href: item.slug,
933
+ dir: direction,
934
+ onMouseDown: (e) => {
935
+ if (item.onMouseDown) {
936
+ item.onMouseDown(e);
937
+ }
938
+ },
939
+ onClick: (e) => {
940
+ if (item.onClick) {
941
+ item.onClick(e);
942
+ }
943
+ if (onItemClick) {
944
+ onItemClick([item.value]);
945
+ }
946
+ },
947
+ className: cn(
948
+ triggerStyles,
949
+ getSelectedStyle(item.value),
950
+ "hawa-overflow-x-clip "
951
+ )
952
+ },
953
+ /* @__PURE__ */ React6.createElement("div", { className: "hawa-flex hawa-flex-row hawa-items-center hawa-gap-2" }, item.icon && item.icon, /* @__PURE__ */ React6.createElement(
954
+ "span",
955
+ {
956
+ className: cn(
957
+ "hawa-flex hawa-flex-row hawa-items-center hawa-gap-2 hawa-whitespace-nowrap hawa-transition-all",
958
+ isOpen ? "hawa-opacity-100" : "hawa-opacity-0"
959
+ )
960
+ },
961
+ item.label,
962
+ " ",
963
+ item.badge && /* @__PURE__ */ React6.createElement(Chip, { label: item.badge.label, color: "hyper", size: "small" })
964
+ ))
965
+ );
966
+ }
967
+ };
968
+
969
+ // components/layout/appLayout/AppLayout.tsx
970
+ var AppLayout = ({
971
+ profileMenuWidth = "default",
972
+ DrawerFooterActions,
973
+ design = "default",
974
+ direction = "ltr",
975
+ drawerSize = "md",
976
+ currentPage,
977
+ clickedItem,
978
+ setKeepOpen,
979
+ keepOpen,
980
+ ...props
981
+ }) => {
982
+ var _a, _b;
983
+ let closeDrawerWidth = 56;
984
+ let openDrawerWidth = 200;
985
+ let drawerSizeStyle = {
986
+ opened: {
987
+ sm: "100",
988
+ md: openDrawerWidth,
989
+ lg: "250"
990
+ },
991
+ closed: {
992
+ sm: closeDrawerWidth,
993
+ md: closeDrawerWidth,
994
+ lg: closeDrawerWidth
995
+ }
996
+ };
997
+ const ref = (0, import_react4.useRef)(null);
998
+ const isRTL = direction === "rtl";
999
+ const [openedSidebarItem, setOpenedSidebarItem] = (0, import_react4.useState)("");
1000
+ const [size, setSize] = (0, import_react4.useState)(1200);
1001
+ const [openSideMenu, setOpenSideMenu] = (0, import_react4.useState)(true);
1002
+ const drawerSizeCondition = size > 600 ? drawerSizeStyle[keepOpen ? "opened" : "closed"][drawerSize] : 0;
1003
+ (0, import_react4.useEffect)(() => {
1004
+ if (typeof window !== "undefined") {
1005
+ const resize = () => {
1006
+ setSize(window.innerWidth);
1007
+ };
1008
+ resize();
1009
+ window.addEventListener("resize", resize);
1010
+ return () => {
1011
+ window.removeEventListener("resize", resize);
1012
+ };
1013
+ }
1014
+ }, []);
1015
+ (0, import_react4.useEffect)(() => {
1016
+ if (size > 600) {
1017
+ setOpenSideMenu(keepOpen);
1018
+ } else {
1019
+ setOpenSideMenu(false);
1020
+ }
1021
+ }, [size]);
1022
+ (0, import_react4.useEffect)(() => {
1023
+ const handleClickOutside = (event) => {
1024
+ if (ref.current && !ref.current.contains(event.target) && !keepOpen) {
1025
+ setOpenSideMenu(false);
1026
+ }
1027
+ };
1028
+ document.addEventListener("click", handleClickOutside, true);
1029
+ return () => {
1030
+ document.removeEventListener("click", handleClickOutside, true);
1031
+ };
1032
+ }, [keepOpen]);
1033
+ return /* @__PURE__ */ import_react4.default.createElement("div", { className: "hawa-fixed hawa-left-0" }, props.topBar && /* @__PURE__ */ import_react4.default.createElement(
1034
+ "div",
1035
+ {
1036
+ className: cn(
1037
+ "hawa-fixed hawa-left-0 hawa-right-0 hawa-top-0 hawa-z-0 hawa-flex hawa-h-14 hawa-w-full hawa-items-center hawa-justify-between hawa-bg-primary-foreground hawa-p-2",
1038
+ isRTL ? "hawa-flex-row-reverse" : "hawa-flex-row"
1039
+ )
1040
+ },
1041
+ size > 600 ? /* @__PURE__ */ import_react4.default.createElement(
1042
+ "div",
1043
+ {
1044
+ className: cn(
1045
+ "dark:hawa-text-white",
1046
+ isRTL ? [
1047
+ size > 600 ? "hawa-mr-14" : "hawa-mr-2",
1048
+ keepOpen ? "hawa-mr-40" : ""
1049
+ ] : [
1050
+ size > 600 ? "hawa-ml-14" : "hawa-ml-2",
1051
+ keepOpen ? "hawa-ml-40" : ""
1052
+ ]
1053
+ ),
1054
+ style: isRTL ? {
1055
+ marginRight: `${drawerSizeStyle[keepOpen ? "opened" : "closed"][drawerSize]}px`
1056
+ } : {
1057
+ marginLeft: `${drawerSizeStyle[keepOpen ? "opened" : "closed"][drawerSize]}px`
1058
+ }
1059
+ },
1060
+ props.pageTitle
1061
+ ) : (
1062
+ // Mobile Drawer Menu Button
1063
+ /* @__PURE__ */ import_react4.default.createElement(
1064
+ "div",
1065
+ {
1066
+ dir: direction,
1067
+ className: "hawa-flex hawa-items-center hawa-justify-center hawa-gap-0.5"
1068
+ },
1069
+ /* @__PURE__ */ import_react4.default.createElement(
1070
+ "div",
1071
+ {
1072
+ onClick: () => setOpenSideMenu(true),
1073
+ className: "hawa-z-40 hawa-mx-1 hawa-cursor-pointer hawa-rounded hawa-p-2 hawa-transition-all hover:hawa-bg-gray-100"
1074
+ },
1075
+ /* @__PURE__ */ import_react4.default.createElement(MenuIcon, null)
1076
+ ),
1077
+ props.pageTitle ? /* @__PURE__ */ import_react4.default.createElement("div", { className: "hawa-text-sm" }, props.pageTitle) : /* @__PURE__ */ import_react4.default.createElement("div", null)
1078
+ )
1079
+ ),
1080
+ /* @__PURE__ */ import_react4.default.createElement(
1081
+ "div",
1082
+ {
1083
+ className: cn(
1084
+ "hawa-flex hawa-gap-2 dark:hawa-text-white",
1085
+ isRTL ? "hawa-flex-row-reverse" : "hawa-flex-row"
1086
+ )
1087
+ },
1088
+ size > 600 ? /* @__PURE__ */ import_react4.default.createElement(
1089
+ "div",
1090
+ {
1091
+ className: isRTL ? "hawa-text-left hawa-text-xs" : "hawa-text-right hawa-text-xs"
1092
+ },
1093
+ /* @__PURE__ */ import_react4.default.createElement("div", { className: "hawa-font-bold" }, props.username),
1094
+ " ",
1095
+ /* @__PURE__ */ import_react4.default.createElement("div", null, props.email)
1096
+ ) : null,
1097
+ /* @__PURE__ */ import_react4.default.createElement(
1098
+ DropdownMenu,
1099
+ {
1100
+ triggerClassname: "hawa-mx-2",
1101
+ align: "end",
1102
+ alignOffset: 8,
1103
+ side: "bottom",
1104
+ sideOffset: 5,
1105
+ width: profileMenuWidth,
1106
+ direction: isRTL ? "rtl" : "ltr",
1107
+ items: props.profileMenuItems,
1108
+ onItemSelect: (e) => console.log("selecting item ", e),
1109
+ trigger: /* @__PURE__ */ import_react4.default.createElement("div", { className: "hawa-relative hawa-h-8 hawa-w-8 hawa-cursor-pointer hawa-overflow-clip hawa-rounded hawa-ring-1 hawa-ring-primary/30 dark:hawa-bg-gray-600" }, props.avatarImage ? /* @__PURE__ */ import_react4.default.createElement("img", { src: props.avatarImage, alt: "User Avatar" }) : /* @__PURE__ */ import_react4.default.createElement(
1110
+ "svg",
1111
+ {
1112
+ "aria-label": "Avatar Icon",
1113
+ className: "hawa-absolute hawa--left-1 hawa-h-10 hawa-w-10 hawa-text-gray-400",
1114
+ fill: "currentColor",
1115
+ viewBox: "0 0 20 20"
1116
+ },
1117
+ /* @__PURE__ */ import_react4.default.createElement(
1118
+ "path",
1119
+ {
1120
+ fillRule: "evenodd",
1121
+ d: "M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z",
1122
+ clipRule: "evenodd"
1123
+ }
1124
+ )
1125
+ ))
1126
+ }
1127
+ )
1128
+ )
1129
+ ), /* @__PURE__ */ import_react4.default.createElement(
1130
+ "div",
1131
+ {
1132
+ className: cn(
1133
+ "hawa-fixed hawa-z-0 hawa-flex hawa-flex-col hawa-justify-between hawa-overflow-x-clip hawa-transition-all",
1134
+ isRTL ? "hawa-right-0 hawa-top-0 hawa-h-14" : "hawa-left-0 hawa-top-0 hawa-h-14",
1135
+ "hawa-h-[calc(100dvh)]"
1136
+ ),
1137
+ style: {
1138
+ width: size > 600 ? openSideMenu ? `${drawerSizeStyle["opened"][drawerSize]}px` : `${drawerSizeStyle["closed"][drawerSize]}px` : openSideMenu ? `${drawerSizeStyle["opened"][drawerSize]}px` : "0px"
1139
+ },
1140
+ onMouseEnter: () => {
1141
+ setOpenSideMenu(true);
1142
+ },
1143
+ onMouseLeave: () => {
1144
+ if (size > 600) {
1145
+ if (keepOpen) {
1146
+ setOpenSideMenu(true);
1147
+ } else {
1148
+ setOpenedSidebarItem("");
1149
+ setOpenSideMenu(false);
1150
+ }
1151
+ } else {
1152
+ setOpenSideMenu(false);
1153
+ }
1154
+ },
1155
+ ref
1156
+ },
1157
+ /* @__PURE__ */ import_react4.default.createElement(
1158
+ "div",
1159
+ {
1160
+ onClick: props.onLogoClick,
1161
+ dir: direction,
1162
+ className: cn(
1163
+ "hawa-fixed hawa-z-50 hawa-mb-2 hawa-flex hawa-h-14 hawa-w-full hawa-flex-row hawa-items-center hawa-justify-center hawa-bg-primary-foreground hawa-transition-all",
1164
+ props.onLogoClick && "hawa-cursor-pointer"
1165
+ ),
1166
+ style: {
1167
+ width: size > 600 ? `${openSideMenu ? openDrawerWidth : 56}px` : `${openSideMenu ? openDrawerWidth : 0}px`
1168
+ }
1169
+ },
1170
+ openSideMenu && props.header && props.header,
1171
+ !props.header && /* @__PURE__ */ import_react4.default.createElement(
1172
+ "img",
1173
+ {
1174
+ className: cn(
1175
+ "hawa-h-9 hawa-opacity-0 hawa-transition-all",
1176
+ !openSideMenu ? "hawa-invisible hawa-opacity-0" : "hawa-visible hawa-opacity-100"
1177
+ ),
1178
+ src: props.logoLink
1179
+ }
1180
+ ),
1181
+ size > 600 ? /* @__PURE__ */ import_react4.default.createElement(
1182
+ "img",
1183
+ {
1184
+ className: cn(
1185
+ "hawa-fixed hawa-h-9 hawa-transition-all",
1186
+ isRTL ? "hawa-right-2.5 hawa-top-2.5" : "hawa-left-2.5 hawa-top-2.5",
1187
+ openSideMenu ? "hawa-invisible hawa-opacity-0" : "hawa-visible hawa-opacity-100"
1188
+ ),
1189
+ src: props.logoSymbol
1190
+ }
1191
+ ) : null
1192
+ ),
1193
+ /* @__PURE__ */ import_react4.default.createElement(
1194
+ "div",
1195
+ {
1196
+ className: cn(
1197
+ "hawa-fixed hawa-bottom-14 hawa-top-14 hawa-bg-primary-foreground hawa-p-0 hawa-py-2 hawa-transition-all",
1198
+ openSideMenu ? "hawa-overflow-auto" : "hawa-overflow-hidden"
1199
+ ),
1200
+ style: {
1201
+ width: size > 600 ? `${openSideMenu ? openDrawerWidth : drawerSizeCondition}px` : `${openSideMenu ? openDrawerWidth : 0}px`
1202
+ }
1203
+ },
1204
+ /* @__PURE__ */ import_react4.default.createElement(
1205
+ SidebarGroup,
1206
+ {
1207
+ direction,
1208
+ onItemClick: (values) => {
1209
+ if (clickedItem) {
1210
+ clickedItem(values);
1211
+ }
1212
+ },
1213
+ onSubItemClick: (values) => {
1214
+ if (clickedItem) {
1215
+ clickedItem(values);
1216
+ }
1217
+ },
1218
+ selectedItem: currentPage,
1219
+ openedItem: openedSidebarItem,
1220
+ setOpenedItem: (e) => setOpenedSidebarItem(e),
1221
+ isOpen: keepOpen || openSideMenu,
1222
+ items: props.drawerItems
1223
+ }
1224
+ )
1225
+ ),
1226
+ /* @__PURE__ */ import_react4.default.createElement(
1227
+ "div",
1228
+ {
1229
+ className: cn(
1230
+ "hawa-fixed hawa-flex hawa-h-14 hawa-items-center hawa-justify-center hawa-gap-2 hawa-overflow-clip hawa-bg-primary-foreground hawa-transition-all",
1231
+ direction === "rtl" ? "hawa-flex-row-reverse" : "hawa-flex-row",
1232
+ "hawa-bottom-0"
1233
+ ),
1234
+ style: {
1235
+ width: size > 600 ? `${openSideMenu ? openDrawerWidth : 56}px` : `${openSideMenu ? openDrawerWidth : 0}px`
1236
+ }
1237
+ },
1238
+ DrawerFooterActions && openSideMenu ? /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, DrawerFooterActions) : null,
1239
+ size > 600 && openSideMenu ? /* @__PURE__ */ import_react4.default.createElement(
1240
+ Tooltip,
1241
+ {
1242
+ side: "left",
1243
+ delayDuration: 500,
1244
+ content: keepOpen ? ((_a = props.texts) == null ? void 0 : _a.collapseSidebar) || "Collapse Sidebar" : ((_b = props.texts) == null ? void 0 : _b.expandSidebar) || "Expand Sidebar",
1245
+ triggerProps: { asChild: true }
1246
+ },
1247
+ /* @__PURE__ */ import_react4.default.createElement(
1248
+ Button,
1249
+ {
1250
+ variant: "outline",
1251
+ onClick: () => {
1252
+ const newKeepOpenState = !keepOpen;
1253
+ if (props.onDrawerExpand) {
1254
+ props.onDrawerExpand(newKeepOpenState);
1255
+ }
1256
+ setKeepOpen(newKeepOpenState);
1257
+ },
1258
+ size: "smallIcon"
1259
+ },
1260
+ /* @__PURE__ */ import_react4.default.createElement(
1261
+ "svg",
1262
+ {
1263
+ className: cn(
1264
+ "hawa-h-6 hawa-w-6 hawa-shrink-0 hawa-text-primary hawa-transition-all disabled:hawa-bg-gray-200 ",
1265
+ keepOpen ? isRTL ? "hawa--rotate-90" : "hawa-rotate-90" : isRTL ? "hawa-rotate-90" : "hawa--rotate-90"
1266
+ ),
1267
+ fill: "currentColor",
1268
+ viewBox: "0 0 20 20"
1269
+ },
1270
+ /* @__PURE__ */ import_react4.default.createElement(
1271
+ "path",
1272
+ {
1273
+ fillRule: "evenodd",
1274
+ d: "M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z",
1275
+ clipRule: "evenodd"
1276
+ }
1277
+ )
1278
+ )
1279
+ )
1280
+ ) : null
1281
+ )
1282
+ ), /* @__PURE__ */ import_react4.default.createElement(
1283
+ "div",
1284
+ {
1285
+ className: "hawa-fixed -hawa-z-10 hawa-overflow-y-auto hawa-transition-all",
1286
+ style: isRTL ? {
1287
+ height: `calc(100% - ${props.topBar ? "56" : "0"}px)`,
1288
+ width: `calc(100% - ${drawerSizeCondition}px)`,
1289
+ left: "0px",
1290
+ top: props.topBar ? "56px" : "0px"
1291
+ } : {
1292
+ height: `calc(100% - ${props.topBar ? "56" : "0"}px)`,
1293
+ width: `calc(100% - ${drawerSizeCondition}px)`,
1294
+ left: `${drawerSizeCondition}px`,
1295
+ top: props.topBar ? "56px" : "0px"
1296
+ }
1297
+ },
1298
+ props.children
1299
+ ));
1300
+ };
1301
+ var MenuIcon = () => /* @__PURE__ */ import_react4.default.createElement(
1302
+ "svg",
1303
+ {
1304
+ "aria-label": "Menu Button",
1305
+ stroke: "currentColor",
1306
+ fill: "currentColor",
1307
+ strokeWidth: 0,
1308
+ viewBox: "0 0 20 20",
1309
+ "aria-hidden": "true",
1310
+ height: "1.6em",
1311
+ width: "1.6em"
1312
+ },
1313
+ /* @__PURE__ */ import_react4.default.createElement(
1314
+ "path",
1315
+ {
1316
+ fillRule: "evenodd",
1317
+ clipRule: "evenodd",
1318
+ d: "M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z"
1319
+ }
1320
+ )
1321
+ );
1322
+ // Annotate the CommonJS export names for ESM import in node:
1323
+ 0 && (module.exports = {
1324
+ AppLayout
1325
+ });