@goplusvn/core 0.1.1 → 0.1.3

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 (223) hide show
  1. package/package.json +31 -175
  2. package/dist/audit/index.d.mts +0 -115
  3. package/dist/audit/index.d.ts +0 -115
  4. package/dist/audit/index.js +0 -204
  5. package/dist/audit/index.js.map +0 -1
  6. package/dist/audit/index.mjs +0 -200
  7. package/dist/audit/index.mjs.map +0 -1
  8. package/dist/auth/index.d.mts +0 -86
  9. package/dist/auth/index.d.ts +0 -86
  10. package/dist/auth/index.js +0 -210
  11. package/dist/auth/index.js.map +0 -1
  12. package/dist/auth/index.mjs +0 -198
  13. package/dist/auth/index.mjs.map +0 -1
  14. package/dist/button-1dWvP9Ib.d.mts +0 -30
  15. package/dist/button-1dWvP9Ib.d.ts +0 -30
  16. package/dist/calendar-2QzdEo1z.d.mts +0 -20
  17. package/dist/calendar-2QzdEo1z.d.ts +0 -20
  18. package/dist/code-generation/index.d.mts +0 -30
  19. package/dist/code-generation/index.d.ts +0 -30
  20. package/dist/code-generation/index.js +0 -31
  21. package/dist/code-generation/index.js.map +0 -1
  22. package/dist/code-generation/index.mjs +0 -28
  23. package/dist/code-generation/index.mjs.map +0 -1
  24. package/dist/configs/index.d.mts +0 -175
  25. package/dist/configs/index.d.ts +0 -175
  26. package/dist/configs/index.js +0 -254
  27. package/dist/configs/index.js.map +0 -1
  28. package/dist/configs/index.mjs +0 -233
  29. package/dist/configs/index.mjs.map +0 -1
  30. package/dist/crud/index.d.mts +0 -646
  31. package/dist/crud/index.d.ts +0 -646
  32. package/dist/crud/index.js +0 -11772
  33. package/dist/crud/index.js.map +0 -1
  34. package/dist/crud/index.mjs +0 -11665
  35. package/dist/crud/index.mjs.map +0 -1
  36. package/dist/crud/server.d.mts +0 -20
  37. package/dist/crud/server.d.ts +0 -20
  38. package/dist/crud/server.js +0 -123
  39. package/dist/crud/server.js.map +0 -1
  40. package/dist/crud/server.mjs +0 -120
  41. package/dist/crud/server.mjs.map +0 -1
  42. package/dist/data-table-skeleton-12NA8Mjx.d.mts +0 -39
  43. package/dist/data-table-skeleton-12NA8Mjx.d.ts +0 -39
  44. package/dist/dialog-bKfjZMTd.d.mts +0 -22
  45. package/dist/dialog-bKfjZMTd.d.ts +0 -22
  46. package/dist/dynamic-icon-DrGIiu2N.d.mts +0 -10
  47. package/dist/dynamic-icon-DrGIiu2N.d.ts +0 -10
  48. package/dist/home/index.d.mts +0 -269
  49. package/dist/home/index.d.ts +0 -269
  50. package/dist/home/index.js +0 -1678
  51. package/dist/home/index.js.map +0 -1
  52. package/dist/home/index.mjs +0 -1635
  53. package/dist/home/index.mjs.map +0 -1
  54. package/dist/hooks/index.d.mts +0 -7
  55. package/dist/hooks/index.d.ts +0 -7
  56. package/dist/hooks/index.js +0 -8316
  57. package/dist/hooks/index.js.map +0 -1
  58. package/dist/hooks/index.mjs +0 -8255
  59. package/dist/hooks/index.mjs.map +0 -1
  60. package/dist/index-50hpiPrV.d.ts +0 -116
  61. package/dist/index-B9zQVEVi.d.mts +0 -116
  62. package/dist/index.d.mts +0 -5
  63. package/dist/index.d.ts +0 -5
  64. package/dist/index.js +0 -123
  65. package/dist/index.js.map +0 -1
  66. package/dist/index.mjs +0 -118
  67. package/dist/index.mjs.map +0 -1
  68. package/dist/infrastructure/index.d.mts +0 -423
  69. package/dist/infrastructure/index.d.ts +0 -423
  70. package/dist/infrastructure/index.js +0 -633
  71. package/dist/infrastructure/index.js.map +0 -1
  72. package/dist/infrastructure/index.mjs +0 -619
  73. package/dist/infrastructure/index.mjs.map +0 -1
  74. package/dist/label-DWTEkNPo.d.ts +0 -226
  75. package/dist/label-LPpdcoBx.d.mts +0 -226
  76. package/dist/layout/index.d.mts +0 -48
  77. package/dist/layout/index.d.ts +0 -48
  78. package/dist/layout/index.js +0 -117
  79. package/dist/layout/index.js.map +0 -1
  80. package/dist/layout/index.mjs +0 -90
  81. package/dist/layout/index.mjs.map +0 -1
  82. package/dist/navigation/index.d.mts +0 -16
  83. package/dist/navigation/index.d.ts +0 -16
  84. package/dist/navigation/index.js +0 -53
  85. package/dist/navigation/index.js.map +0 -1
  86. package/dist/navigation/index.mjs +0 -50
  87. package/dist/navigation/index.mjs.map +0 -1
  88. package/dist/notification/index.d.mts +0 -105
  89. package/dist/notification/index.d.ts +0 -105
  90. package/dist/notification/index.js +0 -278
  91. package/dist/notification/index.js.map +0 -1
  92. package/dist/notification/index.mjs +0 -274
  93. package/dist/notification/index.mjs.map +0 -1
  94. package/dist/organization/index.d.mts +0 -99
  95. package/dist/organization/index.d.ts +0 -99
  96. package/dist/organization/index.js +0 -360
  97. package/dist/organization/index.js.map +0 -1
  98. package/dist/organization/index.mjs +0 -352
  99. package/dist/organization/index.mjs.map +0 -1
  100. package/dist/plugin/index.d.mts +0 -83
  101. package/dist/plugin/index.d.ts +0 -83
  102. package/dist/plugin/index.js +0 -86
  103. package/dist/plugin/index.js.map +0 -1
  104. package/dist/plugin/index.mjs +0 -84
  105. package/dist/plugin/index.mjs.map +0 -1
  106. package/dist/providers/index.d.mts +0 -25
  107. package/dist/providers/index.d.ts +0 -25
  108. package/dist/providers/index.js +0 -84
  109. package/dist/providers/index.js.map +0 -1
  110. package/dist/providers/index.mjs +0 -77
  111. package/dist/providers/index.mjs.map +0 -1
  112. package/dist/rbac/index.d.mts +0 -226
  113. package/dist/rbac/index.d.ts +0 -226
  114. package/dist/rbac/index.js +0 -4784
  115. package/dist/rbac/index.js.map +0 -1
  116. package/dist/rbac/index.mjs +0 -4722
  117. package/dist/rbac/index.mjs.map +0 -1
  118. package/dist/rbac/permissions.d.mts +0 -26
  119. package/dist/rbac/permissions.d.ts +0 -26
  120. package/dist/rbac/permissions.js +0 -94
  121. package/dist/rbac/permissions.js.map +0 -1
  122. package/dist/rbac/permissions.mjs +0 -90
  123. package/dist/rbac/permissions.mjs.map +0 -1
  124. package/dist/rbac/server.d.mts +0 -1
  125. package/dist/rbac/server.d.ts +0 -1
  126. package/dist/rbac/server.js +0 -128
  127. package/dist/rbac/server.js.map +0 -1
  128. package/dist/rbac/server.mjs +0 -124
  129. package/dist/rbac/server.mjs.map +0 -1
  130. package/dist/schemas/index.d.mts +0 -1257
  131. package/dist/schemas/index.d.ts +0 -1257
  132. package/dist/schemas/index.js +0 -572
  133. package/dist/schemas/index.js.map +0 -1
  134. package/dist/schemas/index.mjs +0 -523
  135. package/dist/schemas/index.mjs.map +0 -1
  136. package/dist/server-QuYCTa89.d.mts +0 -83
  137. package/dist/server-QuYCTa89.d.ts +0 -83
  138. package/dist/sonner-C74GlRDQ.d.mts +0 -71
  139. package/dist/sonner-C74GlRDQ.d.ts +0 -71
  140. package/dist/status-BOXZgIqX.d.mts +0 -12
  141. package/dist/status-BOXZgIqX.d.ts +0 -12
  142. package/dist/system/index.d.mts +0 -77
  143. package/dist/system/index.d.ts +0 -77
  144. package/dist/system/index.js +0 -102
  145. package/dist/system/index.js.map +0 -1
  146. package/dist/system/index.mjs +0 -100
  147. package/dist/system/index.mjs.map +0 -1
  148. package/dist/tabs-C6FfBwPY.d.mts +0 -18
  149. package/dist/tabs-C6FfBwPY.d.ts +0 -18
  150. package/dist/tenant-provider-B8eC_Wpb.d.mts +0 -27
  151. package/dist/tenant-provider-B8eC_Wpb.d.ts +0 -27
  152. package/dist/types/index.d.mts +0 -469
  153. package/dist/types/index.d.ts +0 -469
  154. package/dist/types/index.js +0 -25
  155. package/dist/types/index.js.map +0 -1
  156. package/dist/types/index.mjs +0 -21
  157. package/dist/types/index.mjs.map +0 -1
  158. package/dist/ui/auth.d.mts +0 -39
  159. package/dist/ui/auth.d.ts +0 -39
  160. package/dist/ui/auth.js +0 -4941
  161. package/dist/ui/auth.js.map +0 -1
  162. package/dist/ui/auth.mjs +0 -4896
  163. package/dist/ui/auth.mjs.map +0 -1
  164. package/dist/ui/crud.d.mts +0 -2
  165. package/dist/ui/crud.d.ts +0 -2
  166. package/dist/ui/crud.js +0 -4
  167. package/dist/ui/crud.js.map +0 -1
  168. package/dist/ui/crud.mjs +0 -3
  169. package/dist/ui/crud.mjs.map +0 -1
  170. package/dist/ui/data-display.d.mts +0 -596
  171. package/dist/ui/data-display.d.ts +0 -596
  172. package/dist/ui/data-display.js +0 -5307
  173. package/dist/ui/data-display.js.map +0 -1
  174. package/dist/ui/data-display.mjs +0 -5212
  175. package/dist/ui/data-display.mjs.map +0 -1
  176. package/dist/ui/feedback.d.mts +0 -55
  177. package/dist/ui/feedback.d.ts +0 -55
  178. package/dist/ui/feedback.js +0 -2608
  179. package/dist/ui/feedback.js.map +0 -1
  180. package/dist/ui/feedback.mjs +0 -2526
  181. package/dist/ui/feedback.mjs.map +0 -1
  182. package/dist/ui/forms.d.mts +0 -309
  183. package/dist/ui/forms.d.ts +0 -309
  184. package/dist/ui/forms.js +0 -4656
  185. package/dist/ui/forms.js.map +0 -1
  186. package/dist/ui/forms.mjs +0 -4571
  187. package/dist/ui/forms.mjs.map +0 -1
  188. package/dist/ui/index.d.mts +0 -331
  189. package/dist/ui/index.d.ts +0 -331
  190. package/dist/ui/index.js +0 -16953
  191. package/dist/ui/index.js.map +0 -1
  192. package/dist/ui/index.mjs +0 -16598
  193. package/dist/ui/index.mjs.map +0 -1
  194. package/dist/ui/primitives/client.d.mts +0 -61
  195. package/dist/ui/primitives/client.d.ts +0 -61
  196. package/dist/ui/primitives/client.js +0 -3408
  197. package/dist/ui/primitives/client.js.map +0 -1
  198. package/dist/ui/primitives/client.mjs +0 -3256
  199. package/dist/ui/primitives/client.mjs.map +0 -1
  200. package/dist/ui/primitives.d.mts +0 -113
  201. package/dist/ui/primitives.d.ts +0 -113
  202. package/dist/ui/primitives.js +0 -3356
  203. package/dist/ui/primitives.js.map +0 -1
  204. package/dist/ui/primitives.mjs +0 -3227
  205. package/dist/ui/primitives.mjs.map +0 -1
  206. package/dist/user/index.d.mts +0 -228
  207. package/dist/user/index.d.ts +0 -228
  208. package/dist/user/index.js +0 -4306
  209. package/dist/user/index.js.map +0 -1
  210. package/dist/user/index.mjs +0 -4260
  211. package/dist/user/index.mjs.map +0 -1
  212. package/dist/utils/index.d.mts +0 -205
  213. package/dist/utils/index.d.ts +0 -205
  214. package/dist/utils/index.js +0 -574
  215. package/dist/utils/index.js.map +0 -1
  216. package/dist/utils/index.mjs +0 -514
  217. package/dist/utils/index.mjs.map +0 -1
  218. package/dist/workflow/index.d.mts +0 -40
  219. package/dist/workflow/index.d.ts +0 -40
  220. package/dist/workflow/index.js +0 -3710
  221. package/dist/workflow/index.js.map +0 -1
  222. package/dist/workflow/index.mjs +0 -3677
  223. package/dist/workflow/index.mjs.map +0 -1
@@ -1,3356 +0,0 @@
1
- 'use strict';
2
-
3
- var clsx = require('clsx');
4
- var tailwindMerge = require('tailwind-merge');
5
- var React10 = require('react');
6
- var classVarianceAuthority = require('class-variance-authority');
7
- var reactSlot = require('@radix-ui/react-slot');
8
- var jsxRuntime = require('react/jsx-runtime');
9
- var CheckboxPrimitive = require('@radix-ui/react-checkbox');
10
- var lucideReact = require('lucide-react');
11
- var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
12
- var DialogPrimitive = require('@radix-ui/react-dialog');
13
- var TabsPrimitive = require('@radix-ui/react-tabs');
14
- var Link = require('next/link');
15
- var reactDayPicker = require('react-day-picker');
16
- var ScrollAreaPrimitive = require('@radix-ui/react-scroll-area');
17
- var SelectPrimitive = require('@radix-ui/react-select');
18
- var PopoverPrimitive = require('@radix-ui/react-popover');
19
- var SwitchPrimitives = require('@radix-ui/react-switch');
20
- var LabelPrimitive = require('@radix-ui/react-label');
21
- var TooltipPrimitive = require('@radix-ui/react-tooltip');
22
- var ResizablePrimitive = require('react-resizable-panels');
23
- var SliderPrimitive = require('@radix-ui/react-slider');
24
- var TogglePrimitive = require('@radix-ui/react-toggle');
25
- var ToggleGroupPrimitive = require('@radix-ui/react-toggle-group');
26
- var MenubarPrimitive = require('@radix-ui/react-menubar');
27
- var NavigationMenuPrimitive = require('@radix-ui/react-navigation-menu');
28
- require('@radix-ui/react-context-menu');
29
- require('vaul');
30
- require('@radix-ui/react-progress');
31
- require('sonner');
32
- require('@radix-ui/react-alert-dialog');
33
- require('next/navigation');
34
- require('react-use');
35
- require('@radix-ui/react-direction');
36
-
37
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
38
-
39
- function _interopNamespace(e) {
40
- if (e && e.__esModule) return e;
41
- var n = Object.create(null);
42
- if (e) {
43
- Object.keys(e).forEach(function (k) {
44
- if (k !== 'default') {
45
- var d = Object.getOwnPropertyDescriptor(e, k);
46
- Object.defineProperty(n, k, d.get ? d : {
47
- enumerable: true,
48
- get: function () { return e[k]; }
49
- });
50
- }
51
- });
52
- }
53
- n.default = e;
54
- return Object.freeze(n);
55
- }
56
-
57
- var React10__namespace = /*#__PURE__*/_interopNamespace(React10);
58
- var CheckboxPrimitive__namespace = /*#__PURE__*/_interopNamespace(CheckboxPrimitive);
59
- var DropdownMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(DropdownMenuPrimitive);
60
- var DialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(DialogPrimitive);
61
- var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
62
- var Link__default = /*#__PURE__*/_interopDefault(Link);
63
- var ScrollAreaPrimitive__namespace = /*#__PURE__*/_interopNamespace(ScrollAreaPrimitive);
64
- var SelectPrimitive__namespace = /*#__PURE__*/_interopNamespace(SelectPrimitive);
65
- var PopoverPrimitive__namespace = /*#__PURE__*/_interopNamespace(PopoverPrimitive);
66
- var SwitchPrimitives__namespace = /*#__PURE__*/_interopNamespace(SwitchPrimitives);
67
- var LabelPrimitive__namespace = /*#__PURE__*/_interopNamespace(LabelPrimitive);
68
- var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespace(TooltipPrimitive);
69
- var ResizablePrimitive__namespace = /*#__PURE__*/_interopNamespace(ResizablePrimitive);
70
- var SliderPrimitive__namespace = /*#__PURE__*/_interopNamespace(SliderPrimitive);
71
- var TogglePrimitive__namespace = /*#__PURE__*/_interopNamespace(TogglePrimitive);
72
- var ToggleGroupPrimitive__namespace = /*#__PURE__*/_interopNamespace(ToggleGroupPrimitive);
73
- var MenubarPrimitive__namespace = /*#__PURE__*/_interopNamespace(MenubarPrimitive);
74
- var NavigationMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(NavigationMenuPrimitive);
75
-
76
- var __getOwnPropNames = Object.getOwnPropertyNames;
77
- var __esm = (fn, res) => function __init() {
78
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
79
- };
80
-
81
- // src/configs/status.ts
82
- var STATUS_ACTIVE, STATUS_INACTIVE, STATUS_COLORS;
83
- var init_status = __esm({
84
- "src/configs/status.ts"() {
85
- STATUS_ACTIVE = "active";
86
- STATUS_INACTIVE = "inactive";
87
- STATUS_COLORS = {
88
- [STATUS_ACTIVE]: "success",
89
- [STATUS_INACTIVE]: "warning"
90
- };
91
- }
92
- });
93
- function cn(...inputs) {
94
- return tailwindMerge.twMerge(clsx.clsx(inputs));
95
- }
96
- var Logger;
97
- var init_utils = __esm({
98
- "src/utils/index.ts"() {
99
- init_status();
100
- Logger = class {
101
- log(level, message, context, error) {
102
- const entry = {
103
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
104
- level,
105
- message,
106
- context
107
- };
108
- if (error instanceof Error) {
109
- entry.error = {
110
- name: error.name,
111
- message: error.message,
112
- stack: error.stack
113
- };
114
- } else if (error) {
115
- entry.error = error;
116
- }
117
- const logString = JSON.stringify(entry);
118
- switch (level) {
119
- case "error":
120
- console.error(logString);
121
- break;
122
- case "warn":
123
- console.warn(logString);
124
- break;
125
- case "debug":
126
- if (process.env.NODE_ENV === "development") console.debug(logString);
127
- break;
128
- default:
129
- console.log(logString);
130
- }
131
- }
132
- info(message, context) {
133
- this.log("info", message, context);
134
- }
135
- warn(message, context) {
136
- this.log("warn", message, context);
137
- }
138
- error(message, error, context) {
139
- this.log("error", message, context, error);
140
- }
141
- debug(message, context) {
142
- this.log("debug", message, context);
143
- }
144
- };
145
- new Logger();
146
- }
147
- });
148
- exports.buttonVariants = void 0; exports.Button = void 0;
149
- var init_button = __esm({
150
- "src/ui/primitives/button.tsx"() {
151
- init_utils();
152
- exports.buttonVariants = classVarianceAuthority.cva(
153
- "inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
154
- {
155
- variants: {
156
- variant: {
157
- // Existing variants (backwards-compatible)
158
- default: "bg-primary text-primary-foreground hover:bg-primary/90",
159
- destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
160
- outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
161
- secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
162
- ghost: "hover:bg-accent hover:text-accent-foreground",
163
- link: "text-primary underline-offset-4 hover:underline",
164
- // New Plane-inspired variants using semantic tokens
165
- accent: "bg-accent-primary text-text-on-color hover:bg-accent-primary-hover active:bg-accent-primary-active disabled:bg-layer-disabled disabled:text-text-disabled",
166
- danger: "bg-danger text-text-on-color hover:bg-danger-hover active:bg-danger-hover disabled:bg-layer-disabled disabled:text-text-disabled",
167
- "danger-outline": "border border-danger bg-layer-2 text-danger-text hover:bg-danger-subtle active:bg-danger-subtle disabled:border-border-subtle disabled:bg-layer-2 disabled:text-text-disabled",
168
- success: "bg-success-semantic text-text-on-color hover:bg-success-semantic/90 active:bg-success-semantic/80 disabled:bg-layer-disabled disabled:text-text-disabled",
169
- tertiary: "bg-layer-3 text-text-secondary hover:bg-layer-3-hover active:bg-layer-3-hover disabled:bg-transparent disabled:text-text-disabled"
170
- },
171
- size: {
172
- // Existing sizes (backwards-compatible)
173
- default: "h-10 px-4 py-2",
174
- sm: "h-9 rounded-md px-3",
175
- lg: "h-11 rounded-md px-8",
176
- icon: "h-10 w-10",
177
- // New ERP-specific compact sizes
178
- xs: "h-7 rounded-sm px-2 text-xs",
179
- compact: "h-8 rounded-md px-3 text-xs",
180
- "icon-sm": "h-8 w-8",
181
- "icon-xs": "h-7 w-7"
182
- }
183
- },
184
- defaultVariants: {
185
- variant: "default",
186
- size: "default"
187
- }
188
- }
189
- );
190
- exports.Button = React10__namespace.forwardRef(
191
- ({ className, variant, size, asChild = false, loading = false, prependIcon, appendIcon, children, disabled, ...props }, ref) => {
192
- if (asChild) {
193
- return /* @__PURE__ */ jsxRuntime.jsx(
194
- reactSlot.Slot,
195
- {
196
- className: cn(exports.buttonVariants({ variant, size }), className),
197
- ref,
198
- ...{ disabled: disabled || loading },
199
- ...props,
200
- children: React10__namespace.isValidElement(children) && (prependIcon || appendIcon) ? React10__namespace.cloneElement(children, {}, /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
201
- prependIcon && React10__namespace.cloneElement(prependIcon, {
202
- className: cn("shrink-0", size === "xs" || size === "compact" ? "size-3.5" : "size-4")
203
- }),
204
- children.props.children,
205
- appendIcon && React10__namespace.cloneElement(appendIcon, {
206
- className: cn("shrink-0", size === "xs" || size === "compact" ? "size-3.5" : "size-4")
207
- })
208
- ] })) : children
209
- }
210
- );
211
- }
212
- return /* @__PURE__ */ jsxRuntime.jsxs(
213
- "button",
214
- {
215
- className: cn(exports.buttonVariants({ variant, size }), className),
216
- ref,
217
- disabled: disabled || loading,
218
- ...props,
219
- children: [
220
- prependIcon && React10__namespace.cloneElement(prependIcon, {
221
- className: cn("shrink-0", size === "xs" || size === "compact" ? "size-3.5" : "size-4")
222
- }),
223
- children,
224
- appendIcon && React10__namespace.cloneElement(appendIcon, {
225
- className: cn("shrink-0", size === "xs" || size === "compact" ? "size-3.5" : "size-4")
226
- })
227
- ]
228
- }
229
- );
230
- }
231
- );
232
- exports.Button.displayName = "Button";
233
- }
234
- });
235
- function Badge({ className, variant, size, ...props }) {
236
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn(exports.badgeVariants({ variant, size }), className), ...props });
237
- }
238
- exports.badgeVariants = void 0;
239
- var init_badge = __esm({
240
- "src/ui/primitives/badge.tsx"() {
241
- init_utils();
242
- exports.badgeVariants = classVarianceAuthority.cva(
243
- "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
244
- {
245
- variants: {
246
- variant: {
247
- // Existing variants (backwards-compatible)
248
- default: "border-transparent bg-primary text-primary-foreground",
249
- secondary: "border-transparent bg-secondary text-secondary-foreground",
250
- destructive: "border-transparent bg-destructive text-destructive-foreground",
251
- outline: "text-foreground",
252
- // Enhanced semantic variants (using Design Tokens)
253
- success: "border-transparent bg-success-subtle text-success-text",
254
- warning: "border-transparent bg-warning-subtle text-warning-text",
255
- danger: "border-transparent bg-danger-subtle text-danger-text",
256
- info: "border-transparent bg-info-subtle text-info-text",
257
- accent: "border-transparent bg-accent-primary-subtle text-accent-primary"
258
- },
259
- size: {
260
- default: "",
261
- sm: "px-1.5 py-0 text-[10px]",
262
- lg: "px-3 py-1 text-sm"
263
- }
264
- },
265
- defaultVariants: {
266
- variant: "default",
267
- size: "default"
268
- }
269
- }
270
- );
271
- }
272
- });
273
- exports.Input = void 0;
274
- var init_input = __esm({
275
- "src/ui/primitives/input.tsx"() {
276
- init_utils();
277
- exports.Input = React10__namespace.forwardRef(
278
- ({ className, type, ...props }, ref) => {
279
- return /* @__PURE__ */ jsxRuntime.jsx(
280
- "input",
281
- {
282
- type,
283
- className: cn(
284
- "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
285
- className
286
- ),
287
- ref,
288
- ...props
289
- }
290
- );
291
- }
292
- );
293
- exports.Input.displayName = "Input";
294
- }
295
- });
296
- exports.Checkbox = void 0;
297
- var init_checkbox = __esm({
298
- "src/ui/primitives/checkbox.tsx"() {
299
- "use client";
300
- init_utils();
301
- exports.Checkbox = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
302
- CheckboxPrimitive__namespace.Root,
303
- {
304
- ref,
305
- className: cn(
306
- "peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
307
- className
308
- ),
309
- ...props,
310
- children: /* @__PURE__ */ jsxRuntime.jsx(
311
- CheckboxPrimitive__namespace.Indicator,
312
- {
313
- className: cn("flex items-center justify-center text-current"),
314
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" })
315
- }
316
- )
317
- }
318
- ));
319
- exports.Checkbox.displayName = CheckboxPrimitive__namespace.Root.displayName;
320
- }
321
- });
322
- exports.Card = void 0; exports.CardHeader = void 0; exports.CardTitle = void 0; exports.CardDescription = void 0; exports.CardContent = void 0; exports.CardFooter = void 0;
323
- var init_card = __esm({
324
- "src/ui/primitives/card.tsx"() {
325
- init_utils();
326
- exports.Card = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
327
- "div",
328
- {
329
- ref,
330
- className: cn(
331
- "rounded-lg border bg-card text-card-foreground shadow-sm",
332
- className
333
- ),
334
- ...props
335
- }
336
- ));
337
- exports.Card.displayName = "Card";
338
- exports.CardHeader = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
339
- "div",
340
- {
341
- ref,
342
- className: cn("flex flex-col space-y-1.5 p-6", className),
343
- ...props
344
- }
345
- ));
346
- exports.CardHeader.displayName = "CardHeader";
347
- exports.CardTitle = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
348
- "h3",
349
- {
350
- ref,
351
- className: cn(
352
- "text-2xl font-semibold leading-none tracking-tight",
353
- className
354
- ),
355
- ...props
356
- }
357
- ));
358
- exports.CardTitle.displayName = "CardTitle";
359
- exports.CardDescription = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
360
- "p",
361
- {
362
- ref,
363
- className: cn("text-sm text-muted-foreground", className),
364
- ...props
365
- }
366
- ));
367
- exports.CardDescription.displayName = "CardDescription";
368
- exports.CardContent = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("p-6 pt-0", className), ...props }));
369
- exports.CardContent.displayName = "CardContent";
370
- exports.CardFooter = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
371
- "div",
372
- {
373
- ref,
374
- className: cn("flex items-center p-6 pt-0", className),
375
- ...props
376
- }
377
- ));
378
- exports.CardFooter.displayName = "CardFooter";
379
- }
380
- });
381
- function SeparatorWithText({
382
- className,
383
- orientation = "horizontal",
384
- children,
385
- ...props
386
- }) {
387
- return /* @__PURE__ */ jsxRuntime.jsxs(
388
- "div",
389
- {
390
- className: cn(
391
- "flex justify-between items-center",
392
- orientation === "horizontal" ? "w-full" : "flex-col h-full",
393
- className
394
- ),
395
- children: [
396
- /* @__PURE__ */ jsxRuntime.jsx(exports.Separator, { orientation, className: "shrink", ...props }),
397
- /* @__PURE__ */ jsxRuntime.jsx(
398
- "span",
399
- {
400
- className: cn(
401
- "shrink-0 px-2 text-sm text-muted-foreground uppercase",
402
- orientation === "vertical" && "-rotate-90 rtl:rotate-90"
403
- ),
404
- children
405
- }
406
- ),
407
- /* @__PURE__ */ jsxRuntime.jsx(exports.Separator, { orientation, className: "shrink", ...props })
408
- ]
409
- }
410
- );
411
- }
412
- exports.Separator = void 0;
413
- var init_separator = __esm({
414
- "src/ui/primitives/separator.tsx"() {
415
- init_utils();
416
- exports.Separator = React10__namespace.forwardRef(
417
- ({ className, orientation = "horizontal", ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
418
- "div",
419
- {
420
- ref,
421
- className: cn(
422
- "shrink-0 bg-border",
423
- orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
424
- className
425
- ),
426
- ...props
427
- }
428
- )
429
- );
430
- exports.Separator.displayName = "Separator";
431
- }
432
- });
433
- exports.Table = void 0; exports.TableHeader = void 0; exports.TableBody = void 0; exports.TableFooter = void 0; exports.TableRow = void 0; exports.TableHead = void 0; exports.TableCell = void 0; exports.TableCaption = void 0;
434
- var init_table = __esm({
435
- "src/ui/primitives/table.tsx"() {
436
- init_utils();
437
- exports.Table = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsxRuntime.jsx(
438
- "table",
439
- {
440
- ref,
441
- className: cn("w-max min-w-full caption-bottom text-xs", className),
442
- ...props
443
- }
444
- ) }));
445
- exports.Table.displayName = "Table";
446
- exports.TableHeader = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
447
- exports.TableHeader.displayName = "TableHeader";
448
- exports.TableBody = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
449
- "tbody",
450
- {
451
- ref,
452
- className: cn("[&_tr:last-child]:border-0", className),
453
- ...props
454
- }
455
- ));
456
- exports.TableBody.displayName = "TableBody";
457
- exports.TableFooter = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
458
- "tfoot",
459
- {
460
- ref,
461
- className: cn(
462
- "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",
463
- className
464
- ),
465
- ...props
466
- }
467
- ));
468
- exports.TableFooter.displayName = "TableFooter";
469
- exports.TableRow = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
470
- "tr",
471
- {
472
- ref,
473
- className: cn(
474
- "border-b transition-colors even:bg-muted/30 data-[state=selected]:bg-muted",
475
- className
476
- ),
477
- ...props
478
- }
479
- ));
480
- exports.TableRow.displayName = "TableRow";
481
- exports.TableHead = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
482
- "th",
483
- {
484
- ref,
485
- className: cn(
486
- "h-9 px-3 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
487
- className
488
- ),
489
- ...props
490
- }
491
- ));
492
- exports.TableHead.displayName = "TableHead";
493
- exports.TableCell = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
494
- "td",
495
- {
496
- ref,
497
- className: cn("px-3 py-1.5 align-middle [&:has([role=checkbox])]:pr-0 text-xs", className),
498
- ...props
499
- }
500
- ));
501
- exports.TableCell.displayName = "TableCell";
502
- exports.TableCaption = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
503
- "caption",
504
- {
505
- ref,
506
- className: cn("mt-4 text-sm text-muted-foreground", className),
507
- ...props
508
- }
509
- ));
510
- exports.TableCaption.displayName = "TableCaption";
511
- }
512
- });
513
- function DropdownMenu({
514
- ...props
515
- }) {
516
- return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Root, { "data-slot": "dropdown-menu", ...props });
517
- }
518
- function DropdownMenuPortal({
519
- ...props
520
- }) {
521
- return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { "data-slot": "dropdown-menu-portal", ...props });
522
- }
523
- function DropdownMenuTrigger({
524
- className,
525
- ...props
526
- }) {
527
- return /* @__PURE__ */ jsxRuntime.jsx(
528
- DropdownMenuPrimitive__namespace.Trigger,
529
- {
530
- "data-slot": "dropdown-menu-trigger",
531
- className: cn("cursor-pointer", className),
532
- ...props
533
- }
534
- );
535
- }
536
- function DropdownMenuGroup({
537
- ...props
538
- }) {
539
- return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Group, { "data-slot": "dropdown-menu-group", ...props });
540
- }
541
- function DropdownMenuRadioGroup({
542
- ...props
543
- }) {
544
- return /* @__PURE__ */ jsxRuntime.jsx(
545
- DropdownMenuPrimitive__namespace.RadioGroup,
546
- {
547
- "data-slot": "dropdown-menu-radio-group",
548
- ...props
549
- }
550
- );
551
- }
552
- function DropdownMenuSub({
553
- ...props
554
- }) {
555
- return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Sub, { "data-slot": "dropdown-menu-sub", ...props });
556
- }
557
- function DropdownMenuSubTrigger({
558
- className,
559
- inset,
560
- children,
561
- ...props
562
- }) {
563
- return /* @__PURE__ */ jsxRuntime.jsxs(
564
- DropdownMenuPrimitive__namespace.SubTrigger,
565
- {
566
- "data-slot": "dropdown-menu-sub-trigger",
567
- "data-inset": inset,
568
- className: cn(
569
- "cursor-pointer flex items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:ps-8 focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
570
- className
571
- ),
572
- ...props,
573
- children: [
574
- children,
575
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "ms-auto h-4 w-4 rtl:-scale-100" })
576
- ]
577
- }
578
- );
579
- }
580
- function DropdownMenuSubContent({
581
- className,
582
- ...props
583
- }) {
584
- return /* @__PURE__ */ jsxRuntime.jsx(
585
- DropdownMenuPrimitive__namespace.SubContent,
586
- {
587
- "data-slot": "dropdown-menu-sub-content",
588
- className: cn(
589
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
590
- className
591
- ),
592
- ...props
593
- }
594
- );
595
- }
596
- function DropdownMenuContent({
597
- className,
598
- sideOffset = 4,
599
- ...props
600
- }) {
601
- return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
602
- DropdownMenuPrimitive__namespace.Content,
603
- {
604
- "data-slot": "dropdown-menu-content",
605
- sideOffset,
606
- className: cn(
607
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
608
- className
609
- ),
610
- ...props
611
- }
612
- ) });
613
- }
614
- function DropdownMenuItem({
615
- className,
616
- inset,
617
- ...props
618
- }) {
619
- return /* @__PURE__ */ jsxRuntime.jsx(
620
- DropdownMenuPrimitive__namespace.Item,
621
- {
622
- "data-slot": "dropdown-menu-item",
623
- "data-inset": inset,
624
- className: cn(
625
- "relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 data-[inset]:ps-8",
626
- className
627
- ),
628
- ...props
629
- }
630
- );
631
- }
632
- function DropdownMenuCheckboxItem({
633
- className,
634
- children,
635
- checked,
636
- ...props
637
- }) {
638
- return /* @__PURE__ */ jsxRuntime.jsxs(
639
- DropdownMenuPrimitive__namespace.CheckboxItem,
640
- {
641
- "data-slot": "dropdown-menu-checkbox-item",
642
- className: cn(
643
- "relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
644
- className
645
- ),
646
- checked,
647
- ...props,
648
- children: [
649
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" }) }) }),
650
- children
651
- ]
652
- }
653
- );
654
- }
655
- function DropdownMenuRadioItem({
656
- className,
657
- children,
658
- ...props
659
- }) {
660
- return /* @__PURE__ */ jsxRuntime.jsxs(
661
- DropdownMenuPrimitive__namespace.RadioItem,
662
- {
663
- "data-slot": "dropdown-menu-radio-item",
664
- className: cn(
665
- "relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
666
- className
667
- ),
668
- ...props,
669
- children: [
670
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Dot, { className: "h-4 w-4 fill-current" }) }) }),
671
- children
672
- ]
673
- }
674
- );
675
- }
676
- function DropdownMenuLabel({
677
- className,
678
- inset,
679
- ...props
680
- }) {
681
- return /* @__PURE__ */ jsxRuntime.jsx(
682
- DropdownMenuPrimitive__namespace.Label,
683
- {
684
- "data-slot": "dropdown-menu-label",
685
- "data-inset": inset,
686
- className: cn(
687
- "px-2 py-1.5 text-sm font-semibold data-[inset]:ps-8",
688
- className
689
- ),
690
- ...props
691
- }
692
- );
693
- }
694
- function DropdownMenuSeparator({
695
- className,
696
- ...props
697
- }) {
698
- return /* @__PURE__ */ jsxRuntime.jsx(
699
- DropdownMenuPrimitive__namespace.Separator,
700
- {
701
- "data-slot": "dropdown-menu-separator",
702
- className: cn("-mx-1 my-1 h-px bg-muted", className),
703
- ...props
704
- }
705
- );
706
- }
707
- function DropdownMenuShortcut({
708
- className,
709
- ...props
710
- }) {
711
- return /* @__PURE__ */ jsxRuntime.jsx(
712
- "span",
713
- {
714
- "data-slot": "dropdown-menu-shortcut",
715
- className: cn("ml-auto text-xs tracking-widest opacity-60", className),
716
- ...props
717
- }
718
- );
719
- }
720
- var init_dropdown_menu = __esm({
721
- "src/ui/primitives/dropdown-menu.tsx"() {
722
- "use client";
723
- init_utils();
724
- }
725
- });
726
- exports.Dialog = void 0; exports.DialogTrigger = void 0; exports.DialogPortal = void 0; exports.DialogClose = void 0; exports.DialogOverlay = void 0; exports.DialogContent = void 0; exports.DialogHeader = void 0; exports.DialogFooter = void 0; exports.DialogTitle = void 0; exports.DialogDescription = void 0;
727
- var init_dialog = __esm({
728
- "src/ui/primitives/dialog.tsx"() {
729
- "use client";
730
- init_utils();
731
- exports.Dialog = DialogPrimitive__namespace.Root;
732
- exports.DialogTrigger = DialogPrimitive__namespace.Trigger;
733
- exports.DialogPortal = DialogPrimitive__namespace.Portal;
734
- exports.DialogClose = DialogPrimitive__namespace.Close;
735
- exports.DialogOverlay = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
736
- DialogPrimitive__namespace.Overlay,
737
- {
738
- ref,
739
- className: cn(
740
- "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
741
- className
742
- ),
743
- ...props
744
- }
745
- ));
746
- exports.DialogOverlay.displayName = DialogPrimitive__namespace.Overlay.displayName;
747
- exports.DialogContent = React10__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(exports.DialogPortal, { children: [
748
- /* @__PURE__ */ jsxRuntime.jsx(exports.DialogOverlay, {}),
749
- /* @__PURE__ */ jsxRuntime.jsxs(
750
- DialogPrimitive__namespace.Content,
751
- {
752
- ref,
753
- className: cn(
754
- "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
755
- className
756
- ),
757
- ...props,
758
- children: [
759
- children,
760
- /* @__PURE__ */ jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
761
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
762
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
763
- ] })
764
- ]
765
- }
766
- )
767
- ] }));
768
- exports.DialogContent.displayName = DialogPrimitive__namespace.Content.displayName;
769
- exports.DialogHeader = ({
770
- className,
771
- ...props
772
- }) => /* @__PURE__ */ jsxRuntime.jsx(
773
- "div",
774
- {
775
- className: cn(
776
- "flex flex-col space-y-1.5 text-center sm:text-left",
777
- className
778
- ),
779
- ...props
780
- }
781
- );
782
- exports.DialogHeader.displayName = "DialogHeader";
783
- exports.DialogFooter = ({
784
- className,
785
- ...props
786
- }) => /* @__PURE__ */ jsxRuntime.jsx(
787
- "div",
788
- {
789
- className: cn(
790
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
791
- className
792
- ),
793
- ...props
794
- }
795
- );
796
- exports.DialogFooter.displayName = "DialogFooter";
797
- exports.DialogTitle = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
798
- DialogPrimitive__namespace.Title,
799
- {
800
- ref,
801
- className: cn(
802
- "text-lg font-semibold leading-none tracking-tight",
803
- className
804
- ),
805
- ...props
806
- }
807
- ));
808
- exports.DialogTitle.displayName = DialogPrimitive__namespace.Title.displayName;
809
- exports.DialogDescription = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
810
- DialogPrimitive__namespace.Description,
811
- {
812
- ref,
813
- className: cn("text-sm text-muted-foreground", className),
814
- ...props
815
- }
816
- ));
817
- exports.DialogDescription.displayName = DialogPrimitive__namespace.Description.displayName;
818
- }
819
- });
820
- exports.Tabs = void 0; exports.TabsList = void 0; exports.TabsTrigger = void 0; exports.TabsContent = void 0;
821
- var init_tabs = __esm({
822
- "src/ui/primitives/tabs.tsx"() {
823
- "use client";
824
- init_utils();
825
- exports.Tabs = TabsPrimitive__namespace.Root;
826
- exports.TabsList = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
827
- TabsPrimitive__namespace.List,
828
- {
829
- ref,
830
- className: cn(
831
- "inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",
832
- className
833
- ),
834
- ...props
835
- }
836
- ));
837
- exports.TabsList.displayName = TabsPrimitive__namespace.List.displayName;
838
- exports.TabsTrigger = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
839
- TabsPrimitive__namespace.Trigger,
840
- {
841
- ref,
842
- className: cn(
843
- "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",
844
- className
845
- ),
846
- ...props
847
- }
848
- ));
849
- exports.TabsTrigger.displayName = TabsPrimitive__namespace.Trigger.displayName;
850
- exports.TabsContent = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
851
- TabsPrimitive__namespace.Content,
852
- {
853
- ref,
854
- className: cn(
855
- "mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
856
- className
857
- ),
858
- ...props
859
- }
860
- ));
861
- exports.TabsContent.displayName = TabsPrimitive__namespace.Content.displayName;
862
- }
863
- });
864
- function Breadcrumb({ ...props }) {
865
- return /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", ...props });
866
- }
867
- function BreadcrumbList({ className, ...props }) {
868
- return /* @__PURE__ */ jsxRuntime.jsx(
869
- "ol",
870
- {
871
- "data-slot": "breadcrumb-list",
872
- className: cn(
873
- "flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",
874
- className
875
- ),
876
- ...props
877
- }
878
- );
879
- }
880
- function BreadcrumbItem({ className, ...props }) {
881
- return /* @__PURE__ */ jsxRuntime.jsx(
882
- "li",
883
- {
884
- "data-slot": "breadcrumb-item",
885
- className: cn("inline-flex items-center gap-1.5", className),
886
- ...props
887
- }
888
- );
889
- }
890
- function BreadcrumbLink({
891
- asChild,
892
- className,
893
- ...props
894
- }) {
895
- const Comp = asChild ? reactSlot.Slot : "a";
896
- return /* @__PURE__ */ jsxRuntime.jsx(
897
- Comp,
898
- {
899
- "data-slot": "breadcrumb-link",
900
- className: cn("transition-colors hover:text-foreground", className),
901
- ...props
902
- }
903
- );
904
- }
905
- function BreadcrumbPage({
906
- className,
907
- ...props
908
- }) {
909
- return /* @__PURE__ */ jsxRuntime.jsx(
910
- "span",
911
- {
912
- "data-slot": "breadcrumb-page",
913
- role: "link",
914
- "aria-disabled": "true",
915
- "aria-current": "page",
916
- className: cn("font-normal text-foreground", className),
917
- ...props
918
- }
919
- );
920
- }
921
- function BreadcrumbSeparator({
922
- children,
923
- className,
924
- ...props
925
- }) {
926
- return /* @__PURE__ */ jsxRuntime.jsx(
927
- "li",
928
- {
929
- "data-slot": "breadcrumb-separator",
930
- role: "presentation",
931
- "aria-hidden": "true",
932
- className: cn("[&>svg]:size-3.5", className),
933
- ...props,
934
- children: children ?? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, {})
935
- }
936
- );
937
- }
938
- function BreadcrumbEllipsis({
939
- className,
940
- ...props
941
- }) {
942
- return /* @__PURE__ */ jsxRuntime.jsx(
943
- "span",
944
- {
945
- "data-slot": "breadcrumb-ellipsis",
946
- role: "presentation",
947
- "aria-hidden": "true",
948
- "aria-label": "More",
949
- className: cn("flex h-9 w-9 items-center justify-center", className),
950
- ...props,
951
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Ellipsis, { className: "h-4 w-4" })
952
- }
953
- );
954
- }
955
- var init_breadcrumb = __esm({
956
- "src/ui/primitives/breadcrumb.tsx"() {
957
- init_utils();
958
- }
959
- });
960
- function Keyboard({
961
- className,
962
- children,
963
- ...props
964
- }) {
965
- return /* @__PURE__ */ jsxRuntime.jsx(
966
- "kbd",
967
- {
968
- "data-slot": "keyboard",
969
- className: cn(
970
- "pointer-events-none select-none h-5 inline-flex items-center gap-x-1 px-1.5 bg-muted text-sm text-muted-foreground font-mono border rounded-sm",
971
- "before:content-['\u2318']",
972
- className
973
- ),
974
- ...props,
975
- children
976
- }
977
- );
978
- }
979
- var init_keyboard = __esm({
980
- "src/ui/primitives/keyboard.tsx"() {
981
- init_utils();
982
- }
983
- });
984
- function Pagination({ className, ...props }) {
985
- return /* @__PURE__ */ jsxRuntime.jsx(
986
- "nav",
987
- {
988
- "data-slot": "pagination",
989
- role: "navigation",
990
- className: cn("mx-auto flex w-full justify-center", className),
991
- "aria-label": "pagination",
992
- ...props
993
- }
994
- );
995
- }
996
- function PaginationContent({
997
- className,
998
- ...props
999
- }) {
1000
- return /* @__PURE__ */ jsxRuntime.jsx(
1001
- "ul",
1002
- {
1003
- "data-slot": "pagination-content",
1004
- className: cn("flex flex-row items-center gap-1", className),
1005
- ...props
1006
- }
1007
- );
1008
- }
1009
- function PaginationItem({ ...props }) {
1010
- return /* @__PURE__ */ jsxRuntime.jsx("li", { "data-slot": "pagination-item", ...props });
1011
- }
1012
- function PaginationLink({
1013
- className,
1014
- isActive,
1015
- size = "icon",
1016
- href = "",
1017
- ...props
1018
- }) {
1019
- return /* @__PURE__ */ jsxRuntime.jsx(
1020
- Link__default.default,
1021
- {
1022
- "data-slot": "pagination-link",
1023
- className: cn(
1024
- exports.buttonVariants({
1025
- variant: isActive ? "outline" : "ghost",
1026
- size
1027
- }),
1028
- className
1029
- ),
1030
- href,
1031
- "aria-current": isActive ? "page" : void 0,
1032
- ...props
1033
- }
1034
- );
1035
- }
1036
- function PaginationPrevious({
1037
- className,
1038
- ...props
1039
- }) {
1040
- return /* @__PURE__ */ jsxRuntime.jsxs(
1041
- PaginationLink,
1042
- {
1043
- size: "default",
1044
- className: cn("gap-1 ps-2.5", className),
1045
- "aria-label": "Go to previous page",
1046
- ...props,
1047
- children: [
1048
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "h-4 w-4 rtl:-scale-100" }),
1049
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Previous" })
1050
- ]
1051
- }
1052
- );
1053
- }
1054
- function PaginationNext({
1055
- className,
1056
- ...props
1057
- }) {
1058
- return /* @__PURE__ */ jsxRuntime.jsxs(
1059
- PaginationLink,
1060
- {
1061
- size: "default",
1062
- className: cn("gap-1 pe-2.5", className),
1063
- "aria-label": "Go to next page",
1064
- ...props,
1065
- children: [
1066
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Next" }),
1067
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4 rtl:-scale-100" })
1068
- ]
1069
- }
1070
- );
1071
- }
1072
- function PaginationEllipsis({
1073
- className,
1074
- ...props
1075
- }) {
1076
- return /* @__PURE__ */ jsxRuntime.jsx(
1077
- "span",
1078
- {
1079
- "data-slot": "pagination-ellipsis",
1080
- className: cn("flex h-9 w-9 items-center justify-center", className),
1081
- "aria-label": "More pages",
1082
- "aria-hidden": true,
1083
- ...props,
1084
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "h-4 w-4" })
1085
- }
1086
- );
1087
- }
1088
- var init_pagination = __esm({
1089
- "src/ui/primitives/pagination.tsx"() {
1090
- init_utils();
1091
- init_button();
1092
- }
1093
- });
1094
- function StatusBadge({
1095
- status,
1096
- className,
1097
- label: customLabel
1098
- }) {
1099
- const statusStr = String(status);
1100
- const variant = STATUS_COLORS[statusStr] || "secondary";
1101
- let badgeClass = "";
1102
- if (variant === "success") {
1103
- badgeClass = "bg-green-500 hover:bg-green-600 text-white border-transparent";
1104
- } else if (variant === "warning") {
1105
- badgeClass = "bg-yellow-500 hover:bg-yellow-600 text-white border-transparent";
1106
- }
1107
- let label = customLabel || statusStr;
1108
- if (!customLabel) {
1109
- if (statusStr === STATUS_ACTIVE) label = "Active";
1110
- }
1111
- return /* @__PURE__ */ jsxRuntime.jsx(
1112
- Badge,
1113
- {
1114
- variant: variant === "success" || variant === "warning" ? "default" : variant,
1115
- className: cn(badgeClass, className),
1116
- children: label
1117
- }
1118
- );
1119
- }
1120
- var init_status_badge = __esm({
1121
- "src/ui/primitives/status-badge.tsx"() {
1122
- init_badge();
1123
- init_utils();
1124
- init_utils();
1125
- }
1126
- });
1127
- function Calendar({
1128
- className,
1129
- classNames,
1130
- showOutsideDays = true,
1131
- ...props
1132
- }) {
1133
- return /* @__PURE__ */ jsxRuntime.jsx(
1134
- reactDayPicker.DayPicker,
1135
- {
1136
- showOutsideDays,
1137
- className: cn("p-3", className),
1138
- classNames: {
1139
- month: "space-y-4",
1140
- month_caption: "flex justify-center pt-1 items-center",
1141
- caption_label: "text-sm font-medium",
1142
- nav: "relative gap-x-1 flex items-center",
1143
- button_previous: cn(
1144
- exports.buttonVariants({ variant: "outline" }),
1145
- "absolute top-0 start-0 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"
1146
- ),
1147
- button_next: cn(
1148
- exports.buttonVariants({ variant: "outline" }),
1149
- "absolute top-0 end-0 h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"
1150
- ),
1151
- month_grid: "w-full border-collapse space-y-1",
1152
- weekdays: "flex",
1153
- weekday: "text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]",
1154
- week: "flex w-full mt-2",
1155
- day: cn(
1156
- exports.buttonVariants({ variant: "ghost" }),
1157
- "relative h-8 w-8 p-0 font-normal text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-e-md"
1158
- ),
1159
- day_button: "cursor-pointer h-full w-full aria-selected:opacity-100",
1160
- range_start: "rounded-md!",
1161
- range_end: "rounded-md!",
1162
- selected: cn(
1163
- "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",
1164
- props.mode === "range" && "rounded-none"
1165
- ),
1166
- today: "bg-accent text-accent-foreground",
1167
- outside: "day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30",
1168
- disabled: "text-muted-foreground opacity-50",
1169
- range_middle: "aria-selected:bg-accent aria-selected:text-accent-foreground",
1170
- hidden: "invisible",
1171
- ...classNames
1172
- },
1173
- components: {
1174
- Chevron: (props2) => {
1175
- if (props2.orientation === "left") {
1176
- return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "h-4 w-4" });
1177
- }
1178
- return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4" });
1179
- }
1180
- },
1181
- ...props
1182
- }
1183
- );
1184
- }
1185
- var init_calendar = __esm({
1186
- "src/ui/primitives/calendar.tsx"() {
1187
- "use client";
1188
- init_utils();
1189
- init_button();
1190
- Calendar.displayName = "Calendar";
1191
- }
1192
- });
1193
- function ScrollArea({
1194
- orientation,
1195
- className,
1196
- children,
1197
- ...props
1198
- }) {
1199
- return /* @__PURE__ */ jsxRuntime.jsxs(
1200
- ScrollAreaPrimitive__namespace.Root,
1201
- {
1202
- "data-slot": "scroll-area",
1203
- className: cn("relative overflow-hidden", className),
1204
- ...props,
1205
- children: [
1206
- /* @__PURE__ */ jsxRuntime.jsx(
1207
- ScrollAreaPrimitive__namespace.Viewport,
1208
- {
1209
- "data-slot": "scroll-area-viewport",
1210
- className: "h-full w-full rounded-[inherit]",
1211
- children
1212
- }
1213
- ),
1214
- /* @__PURE__ */ jsxRuntime.jsx(ScrollBar, { orientation }),
1215
- /* @__PURE__ */ jsxRuntime.jsx(ScrollAreaPrimitive__namespace.Corner, {})
1216
- ]
1217
- }
1218
- );
1219
- }
1220
- function ScrollBar({
1221
- className,
1222
- orientation = "vertical",
1223
- ...props
1224
- }) {
1225
- return /* @__PURE__ */ jsxRuntime.jsx(
1226
- ScrollAreaPrimitive__namespace.ScrollAreaScrollbar,
1227
- {
1228
- "data-slot": "scroll-area-scrollbar",
1229
- orientation,
1230
- className: cn(
1231
- "flex touch-none select-none transition-colors",
1232
- orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
1233
- orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
1234
- className
1235
- ),
1236
- ...props,
1237
- children: /* @__PURE__ */ jsxRuntime.jsx(ScrollAreaPrimitive__namespace.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
1238
- }
1239
- );
1240
- }
1241
- var init_scroll_area = __esm({
1242
- "src/ui/primitives/scroll-area.tsx"() {
1243
- "use client";
1244
- init_utils();
1245
- }
1246
- });
1247
- function Combobox({
1248
- options,
1249
- value,
1250
- onValueChange,
1251
- placeholder = "Select option...",
1252
- searchPlaceholder = "Search...",
1253
- emptyText = "No option found.",
1254
- disabled = false,
1255
- className,
1256
- id
1257
- }) {
1258
- const [open, setOpen] = React10.useState(false);
1259
- const [searchValue, setSearchValue] = React10.useState("");
1260
- const containerRef = React10.useRef(null);
1261
- const searchInputRef = React10.useRef(null);
1262
- const dropdownRef = React10.useRef(null);
1263
- const selectedOption = options.find(
1264
- (option) => String(option.value) === String(value)
1265
- );
1266
- const filteredOptions = React10.useMemo(() => {
1267
- if (!searchValue.trim()) {
1268
- return options;
1269
- }
1270
- const searchLower = searchValue.toLowerCase();
1271
- return options.filter(
1272
- (option) => option.label.toLowerCase().includes(searchLower) || String(option.value).toLowerCase().includes(searchLower)
1273
- );
1274
- }, [options, searchValue]);
1275
- React10.useEffect(() => {
1276
- if (!open) {
1277
- setSearchValue("");
1278
- }
1279
- }, [open]);
1280
- React10.useEffect(() => {
1281
- if (open && searchInputRef.current) {
1282
- setTimeout(() => {
1283
- searchInputRef.current?.focus();
1284
- }, 50);
1285
- }
1286
- }, [open]);
1287
- React10.useEffect(() => {
1288
- if (!open) return;
1289
- const handleClickOutside = (event) => {
1290
- const target = event.target;
1291
- if (containerRef.current && !containerRef.current.contains(target) && dropdownRef.current && !dropdownRef.current.contains(target)) {
1292
- if (target.closest('[data-slot="dialog-content"]')) {
1293
- return;
1294
- }
1295
- setOpen(false);
1296
- }
1297
- };
1298
- const handleEscape = (event) => {
1299
- if (event.key === "Escape" && open) {
1300
- event.stopPropagation();
1301
- setOpen(false);
1302
- }
1303
- };
1304
- document.addEventListener("mousedown", handleClickOutside, true);
1305
- document.addEventListener("keydown", handleEscape, true);
1306
- return () => {
1307
- document.removeEventListener("mousedown", handleClickOutside, true);
1308
- document.removeEventListener("keydown", handleEscape, true);
1309
- };
1310
- }, [open]);
1311
- const handleSelect = React10.useCallback(
1312
- (optionValue) => {
1313
- if (onValueChange) {
1314
- onValueChange(optionValue);
1315
- setOpen(false);
1316
- }
1317
- },
1318
- [onValueChange]
1319
- );
1320
- const handleClear = React10.useCallback(
1321
- (e) => {
1322
- e.preventDefault();
1323
- e.stopPropagation();
1324
- if (onValueChange) {
1325
- onValueChange(void 0);
1326
- }
1327
- },
1328
- [onValueChange]
1329
- );
1330
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: containerRef, className: "relative w-full", children: [
1331
- /* @__PURE__ */ jsxRuntime.jsxs(
1332
- exports.Button,
1333
- {
1334
- type: "button",
1335
- variant: "outline",
1336
- role: "combobox",
1337
- "aria-expanded": open,
1338
- disabled,
1339
- className: cn("w-full justify-between", className),
1340
- id,
1341
- onClick: (e) => {
1342
- e.stopPropagation();
1343
- setOpen(!open);
1344
- },
1345
- children: [
1346
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: selectedOption ? selectedOption.label : placeholder }),
1347
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-2 flex items-center gap-1 shrink-0", children: [
1348
- selectedOption && /* @__PURE__ */ jsxRuntime.jsx(
1349
- "div",
1350
- {
1351
- role: "button",
1352
- tabIndex: 0,
1353
- className: "h-4 w-4 p-0 hover:bg-transparent cursor-pointer flex items-center justify-center",
1354
- onClick: handleClear,
1355
- onKeyDown: (e) => {
1356
- if (e.key === "Enter" || e.key === " ") {
1357
- e.preventDefault();
1358
- e.stopPropagation();
1359
- handleClear(e);
1360
- }
1361
- },
1362
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-3.5 w-3.5 text-red-500 hover:text-red-600" })
1363
- }
1364
- ),
1365
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronsUpDown, { className: "h-4 w-4 opacity-50" })
1366
- ] })
1367
- ]
1368
- }
1369
- ),
1370
- open && /* @__PURE__ */ jsxRuntime.jsx(
1371
- "div",
1372
- {
1373
- ref: dropdownRef,
1374
- className: "absolute z-[100] mt-1 w-full rounded-md border bg-popover text-popover-foreground shadow-md",
1375
- style: {
1376
- top: "100%",
1377
- left: 0
1378
- },
1379
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
1380
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center border-b px-3 py-2", children: [
1381
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
1382
- /* @__PURE__ */ jsxRuntime.jsx(
1383
- exports.Input,
1384
- {
1385
- ref: searchInputRef,
1386
- placeholder: searchPlaceholder,
1387
- value: searchValue,
1388
- onChange: (e) => {
1389
- e.stopPropagation();
1390
- setSearchValue(e.target.value);
1391
- },
1392
- onKeyDown: (e) => {
1393
- e.stopPropagation();
1394
- if (e.key === "Escape") {
1395
- e.preventDefault();
1396
- setOpen(false);
1397
- }
1398
- if (e.key === "Enter") {
1399
- e.preventDefault();
1400
- if (filteredOptions.length > 0) {
1401
- handleSelect(filteredOptions[0].value);
1402
- }
1403
- }
1404
- },
1405
- onClick: (e) => {
1406
- e.stopPropagation();
1407
- },
1408
- onFocus: (e) => {
1409
- e.stopPropagation();
1410
- },
1411
- className: "border-0 focus-visible:ring-0 focus-visible:ring-offset-0 h-9 bg-transparent px-0"
1412
- }
1413
- ),
1414
- searchValue && /* @__PURE__ */ jsxRuntime.jsx(
1415
- exports.Button,
1416
- {
1417
- type: "button",
1418
- variant: "ghost",
1419
- size: "sm",
1420
- className: "h-6 w-6 p-0",
1421
- onClick: (e) => {
1422
- e.stopPropagation();
1423
- setSearchValue("");
1424
- searchInputRef.current?.focus();
1425
- },
1426
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-3 w-3" })
1427
- }
1428
- )
1429
- ] }),
1430
- /* @__PURE__ */ jsxRuntime.jsx(ScrollArea, { className: "max-h-[300px]", children: filteredOptions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: emptyText }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-1", children: filteredOptions.map((option) => {
1431
- const isSelected = String(value) === String(option.value);
1432
- return /* @__PURE__ */ jsxRuntime.jsxs(
1433
- "div",
1434
- {
1435
- role: "option",
1436
- "aria-selected": isSelected,
1437
- className: cn(
1438
- "relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none",
1439
- "hover:bg-accent hover:text-accent-foreground",
1440
- isSelected && "bg-accent text-accent-foreground"
1441
- ),
1442
- onMouseDown: (e) => {
1443
- e.preventDefault();
1444
- e.stopPropagation();
1445
- handleSelect(option.value);
1446
- },
1447
- onClick: (e) => {
1448
- e.preventDefault();
1449
- e.stopPropagation();
1450
- handleSelect(option.value);
1451
- },
1452
- children: [
1453
- /* @__PURE__ */ jsxRuntime.jsx(
1454
- lucideReact.Check,
1455
- {
1456
- className: cn(
1457
- "mr-2 h-4 w-4 shrink-0",
1458
- isSelected ? "opacity-100" : "opacity-0"
1459
- )
1460
- }
1461
- ),
1462
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 truncate", children: option.label })
1463
- ]
1464
- },
1465
- String(option.value)
1466
- );
1467
- }) }) })
1468
- ] })
1469
- }
1470
- )
1471
- ] });
1472
- }
1473
- var init_combobox = __esm({
1474
- "src/ui/primitives/combobox.tsx"() {
1475
- "use client";
1476
- init_utils();
1477
- init_button();
1478
- init_input();
1479
- init_scroll_area();
1480
- }
1481
- });
1482
- function Select({
1483
- ...props
1484
- }) {
1485
- return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Root, { "data-slot": "select", ...props });
1486
- }
1487
- function SelectGroup({
1488
- ...props
1489
- }) {
1490
- return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Group, { "data-slot": "select-group", ...props });
1491
- }
1492
- function SelectValue({
1493
- ...props
1494
- }) {
1495
- return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Value, { "data-slot": "select-value", ...props });
1496
- }
1497
- function SelectTrigger({
1498
- className,
1499
- children,
1500
- ...props
1501
- }) {
1502
- return /* @__PURE__ */ jsxRuntime.jsxs(
1503
- SelectPrimitive__namespace.Trigger,
1504
- {
1505
- "data-slot": "select-trigger",
1506
- className: cn(
1507
- "cursor-pointer flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-hidden focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
1508
- className
1509
- ),
1510
- ...props,
1511
- children: [
1512
- children,
1513
- /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 opacity-50" }) })
1514
- ]
1515
- }
1516
- );
1517
- }
1518
- function SelectScrollUpButton({
1519
- className,
1520
- ...props
1521
- }) {
1522
- return /* @__PURE__ */ jsxRuntime.jsx(
1523
- SelectPrimitive__namespace.ScrollUpButton,
1524
- {
1525
- "data-slot": "select-scroll-up-button",
1526
- className: cn(
1527
- "flex cursor-pointer items-center justify-center py-1",
1528
- className
1529
- ),
1530
- ...props,
1531
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { className: "h-4 w-4" })
1532
- }
1533
- );
1534
- }
1535
- function SelectScrollDownButton({
1536
- className,
1537
- ...props
1538
- }) {
1539
- return /* @__PURE__ */ jsxRuntime.jsx(
1540
- SelectPrimitive__namespace.ScrollDownButton,
1541
- {
1542
- "data-slot": "select-scroll-down-button",
1543
- className: cn(
1544
- "flex cursor-pointer items-center justify-center py-1",
1545
- className
1546
- ),
1547
- ...props,
1548
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4" })
1549
- }
1550
- );
1551
- }
1552
- function SelectContent({
1553
- className,
1554
- children,
1555
- position = "popper",
1556
- ...props
1557
- }) {
1558
- return /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
1559
- SelectPrimitive__namespace.Content,
1560
- {
1561
- "data-slot": "select-content",
1562
- className: cn(
1563
- "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1564
- position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
1565
- className
1566
- ),
1567
- position,
1568
- ...props,
1569
- children: [
1570
- /* @__PURE__ */ jsxRuntime.jsx(SelectScrollUpButton, {}),
1571
- /* @__PURE__ */ jsxRuntime.jsx(
1572
- SelectPrimitive__namespace.Viewport,
1573
- {
1574
- className: cn(
1575
- "p-1",
1576
- position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
1577
- ),
1578
- children
1579
- }
1580
- ),
1581
- /* @__PURE__ */ jsxRuntime.jsx(SelectScrollDownButton, {})
1582
- ]
1583
- }
1584
- ) });
1585
- }
1586
- function SelectLabel({
1587
- className,
1588
- ...props
1589
- }) {
1590
- return /* @__PURE__ */ jsxRuntime.jsx(
1591
- SelectPrimitive__namespace.Label,
1592
- {
1593
- "data-slot": "select-label",
1594
- className: cn("px-2 py-1.5 text-sm font-semibold", className),
1595
- ...props
1596
- }
1597
- );
1598
- }
1599
- function SelectItem({
1600
- className,
1601
- children,
1602
- ...props
1603
- }) {
1604
- return /* @__PURE__ */ jsxRuntime.jsxs(
1605
- SelectPrimitive__namespace.Item,
1606
- {
1607
- "data-slot": "select-item",
1608
- className: cn(
1609
- "relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
1610
- className
1611
- ),
1612
- ...props,
1613
- children: [
1614
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" }) }) }),
1615
- /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.ItemText, { children })
1616
- ]
1617
- }
1618
- );
1619
- }
1620
- function SelectSeparator({
1621
- className,
1622
- ...props
1623
- }) {
1624
- return /* @__PURE__ */ jsxRuntime.jsx(
1625
- SelectPrimitive__namespace.Separator,
1626
- {
1627
- "data-slot": "select-separator",
1628
- className: cn("-mx-1 my-1 h-px bg-muted", className),
1629
- ...props
1630
- }
1631
- );
1632
- }
1633
- var init_select = __esm({
1634
- "src/ui/primitives/select.tsx"() {
1635
- "use client";
1636
- init_utils();
1637
- }
1638
- });
1639
- function Popover({
1640
- ...props
1641
- }) {
1642
- return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Root, { "data-slot": "popover", ...props });
1643
- }
1644
- function PopoverTrigger({
1645
- className,
1646
- ...props
1647
- }) {
1648
- return /* @__PURE__ */ jsxRuntime.jsx(
1649
- PopoverPrimitive__namespace.Trigger,
1650
- {
1651
- "data-slot": "popover-trigger",
1652
- className: cn("cursor-pointer", className),
1653
- ...props
1654
- }
1655
- );
1656
- }
1657
- function PopoverAnchor({
1658
- ...props
1659
- }) {
1660
- return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Anchor, { "data-slot": "popover-anchor", ...props });
1661
- }
1662
- function PopoverContent({
1663
- className,
1664
- align = "center",
1665
- sideOffset = 4,
1666
- container,
1667
- ...props
1668
- }) {
1669
- return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { container, children: /* @__PURE__ */ jsxRuntime.jsx(
1670
- PopoverPrimitive__namespace.Content,
1671
- {
1672
- "data-slot": "popover-content",
1673
- align,
1674
- sideOffset,
1675
- className: cn(
1676
- "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1677
- className
1678
- ),
1679
- ...props
1680
- }
1681
- ) });
1682
- }
1683
- var init_popover = __esm({
1684
- "src/ui/primitives/popover.tsx"() {
1685
- "use client";
1686
- init_utils();
1687
- }
1688
- });
1689
- function Switch({ className, ...props }) {
1690
- return /* @__PURE__ */ jsxRuntime.jsx(
1691
- SwitchPrimitives__namespace.Root,
1692
- {
1693
- "data-slot": "switch",
1694
- className: cn(
1695
- "peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
1696
- className
1697
- ),
1698
- ...props,
1699
- children: /* @__PURE__ */ jsxRuntime.jsx(
1700
- SwitchPrimitives__namespace.Thumb,
1701
- {
1702
- "data-slot": "switch-thumb",
1703
- className: cn(
1704
- "pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0 rtl:data-[state=checked]:-translate-x-4"
1705
- )
1706
- }
1707
- )
1708
- }
1709
- );
1710
- }
1711
- var init_switch = __esm({
1712
- "src/ui/primitives/switch.tsx"() {
1713
- "use client";
1714
- init_utils();
1715
- }
1716
- });
1717
- exports.Label = void 0;
1718
- var init_label = __esm({
1719
- "src/ui/primitives/label.tsx"() {
1720
- "use client";
1721
- init_utils();
1722
- exports.Label = React10__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1723
- LabelPrimitive__namespace.Root,
1724
- {
1725
- ref,
1726
- className: cn(
1727
- "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
1728
- className
1729
- ),
1730
- ...props
1731
- }
1732
- ));
1733
- exports.Label.displayName = LabelPrimitive__namespace.Root.displayName;
1734
- }
1735
- });
1736
- function TooltipProvider({
1737
- delayDuration = 0,
1738
- ...props
1739
- }) {
1740
- return /* @__PURE__ */ jsxRuntime.jsx(
1741
- TooltipPrimitive__namespace.Provider,
1742
- {
1743
- "data-slot": "tooltip-provider",
1744
- delayDuration,
1745
- ...props
1746
- }
1747
- );
1748
- }
1749
- function Tooltip({
1750
- ...props
1751
- }) {
1752
- return /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Root, { "data-slot": "tooltip", ...props }) });
1753
- }
1754
- function TooltipTrigger({
1755
- className,
1756
- ...props
1757
- }) {
1758
- return /* @__PURE__ */ jsxRuntime.jsx(
1759
- TooltipPrimitive__namespace.Trigger,
1760
- {
1761
- "data-slot": "tooltip-trigger",
1762
- className: cn("cursor-pointer", className),
1763
- ...props
1764
- }
1765
- );
1766
- }
1767
- function TooltipContent({
1768
- className,
1769
- sideOffset = 0,
1770
- ...props
1771
- }) {
1772
- return /* @__PURE__ */ jsxRuntime.jsx(
1773
- TooltipPrimitive__namespace.Content,
1774
- {
1775
- "data-slot": "tooltip-content",
1776
- sideOffset,
1777
- className: cn(
1778
- "z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-sm text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
1779
- className
1780
- ),
1781
- ...props
1782
- }
1783
- );
1784
- }
1785
- var init_tooltip = __esm({
1786
- "src/ui/primitives/tooltip.tsx"() {
1787
- "use client";
1788
- init_utils();
1789
- }
1790
- });
1791
- function ResizablePanelGroup({
1792
- className,
1793
- ...props
1794
- }) {
1795
- return /* @__PURE__ */ jsxRuntime.jsx(
1796
- ResizablePrimitive__namespace.PanelGroup,
1797
- {
1798
- "data-slot": "resizable-panel-group",
1799
- className: cn(
1800
- "flex h-full w-full data-[panel-group-direction=vertical]:flex-col",
1801
- className
1802
- ),
1803
- ...props
1804
- }
1805
- );
1806
- }
1807
- function ResizablePanel({
1808
- ...props
1809
- }) {
1810
- return /* @__PURE__ */ jsxRuntime.jsx(ResizablePrimitive__namespace.Panel, { "data-slot": "resizable-panel", ...props });
1811
- }
1812
- function ResizableHandle({
1813
- withHandle,
1814
- className,
1815
- ...props
1816
- }) {
1817
- return /* @__PURE__ */ jsxRuntime.jsx(
1818
- ResizablePrimitive__namespace.PanelResizeHandle,
1819
- {
1820
- "data-slot": "resizable-handle",
1821
- className: cn(
1822
- "relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
1823
- className
1824
- ),
1825
- ...props,
1826
- children: withHandle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.GripVertical, { className: "h-2.5 w-2.5" }) })
1827
- }
1828
- );
1829
- }
1830
- var init_resizable = __esm({
1831
- "src/ui/primitives/resizable.tsx"() {
1832
- "use client";
1833
- init_utils();
1834
- }
1835
- });
1836
- function Slider({
1837
- className,
1838
- ...props
1839
- }) {
1840
- return /* @__PURE__ */ jsxRuntime.jsxs(
1841
- SliderPrimitive__namespace.Root,
1842
- {
1843
- className: cn(
1844
- "relative flex w-full touch-none select-none items-center",
1845
- className
1846
- ),
1847
- ...props,
1848
- children: [
1849
- /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20", children: /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Range, { className: "absolute h-full bg-primary" }) }),
1850
- /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Thumb, { className: "cursor-pointer block h-4 w-4 rounded-full border border-primary/50 bg-background shadow-sm transition-colors focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50" })
1851
- ]
1852
- }
1853
- );
1854
- }
1855
- var init_slider = __esm({
1856
- "src/ui/primitives/slider.tsx"() {
1857
- "use client";
1858
- init_utils();
1859
- }
1860
- });
1861
- function Toggle({
1862
- className,
1863
- variant,
1864
- size,
1865
- ...props
1866
- }) {
1867
- return /* @__PURE__ */ jsxRuntime.jsx(
1868
- TogglePrimitive__namespace.Root,
1869
- {
1870
- "data-slot": "toggle",
1871
- className: cn(exports.toggleVariants({ variant, size, className })),
1872
- ...props
1873
- }
1874
- );
1875
- }
1876
- exports.toggleVariants = void 0;
1877
- var init_toggle = __esm({
1878
- "src/ui/primitives/toggle.tsx"() {
1879
- "use client";
1880
- init_utils();
1881
- exports.toggleVariants = classVarianceAuthority.cva(
1882
- "cursor-pointer inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",
1883
- {
1884
- variants: {
1885
- variant: {
1886
- default: "bg-transparent",
1887
- outline: "border border-input bg-transparent hover:bg-accent hover:text-accent-foreground"
1888
- },
1889
- size: {
1890
- default: "h-9 px-3",
1891
- sm: "h-8 px-2",
1892
- lg: "h-10 px-3"
1893
- }
1894
- },
1895
- defaultVariants: {
1896
- variant: "default",
1897
- size: "default"
1898
- }
1899
- }
1900
- );
1901
- }
1902
- });
1903
- function ToggleGroup({
1904
- className,
1905
- variant,
1906
- size,
1907
- children,
1908
- ...props
1909
- }) {
1910
- return /* @__PURE__ */ jsxRuntime.jsx(
1911
- ToggleGroupPrimitive__namespace.Root,
1912
- {
1913
- "data-slot": "toggle-group",
1914
- className: cn("flex items-center justify-center gap-1", className),
1915
- ...props,
1916
- children: /* @__PURE__ */ jsxRuntime.jsx(ToggleGroupContext.Provider, { value: { variant, size }, children })
1917
- }
1918
- );
1919
- }
1920
- function ToggleGroupItem({
1921
- className,
1922
- children,
1923
- variant,
1924
- size,
1925
- ...props
1926
- }) {
1927
- const context = React10.useContext(ToggleGroupContext);
1928
- return /* @__PURE__ */ jsxRuntime.jsx(
1929
- ToggleGroupPrimitive__namespace.Item,
1930
- {
1931
- "data-slot": "toggle-group-item",
1932
- className: cn(
1933
- exports.toggleVariants({
1934
- variant: context.variant || variant,
1935
- size: context.size || size
1936
- }),
1937
- className
1938
- ),
1939
- ...props,
1940
- children
1941
- }
1942
- );
1943
- }
1944
- var ToggleGroupContext;
1945
- var init_toggle_group = __esm({
1946
- "src/ui/primitives/toggle-group.tsx"() {
1947
- "use client";
1948
- init_utils();
1949
- init_toggle();
1950
- ToggleGroupContext = React10.createContext({
1951
- size: "default",
1952
- variant: "default"
1953
- });
1954
- }
1955
- });
1956
- function MenubarMenu({
1957
- ...props
1958
- }) {
1959
- return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Menu, { "data-slot": "menubar-menu", ...props });
1960
- }
1961
- function MenubarGroup({
1962
- ...props
1963
- }) {
1964
- return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Group, { "data-slot": "menubar-group", ...props });
1965
- }
1966
- function MenubarPortal({
1967
- ...props
1968
- }) {
1969
- return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Portal, { "data-slot": "menubar-portal", ...props });
1970
- }
1971
- function MenubarRadioGroup({
1972
- ...props
1973
- }) {
1974
- return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.RadioGroup, { "data-slot": "menubar-radio-group", ...props });
1975
- }
1976
- function Menubar({
1977
- className,
1978
- ...props
1979
- }) {
1980
- return /* @__PURE__ */ jsxRuntime.jsx(
1981
- MenubarPrimitive__namespace.Root,
1982
- {
1983
- "data-slot": "menubar",
1984
- className: cn(
1985
- "flex h-9 items-center gap-x-1 rounded-md border bg-background p-1",
1986
- className
1987
- ),
1988
- ...props
1989
- }
1990
- );
1991
- }
1992
- function MenubarTrigger({
1993
- className,
1994
- ...props
1995
- }) {
1996
- return /* @__PURE__ */ jsxRuntime.jsx(
1997
- MenubarPrimitive__namespace.Trigger,
1998
- {
1999
- "data-slot": "menubar-trigger",
2000
- className: cn(
2001
- "flex cursor-pointer select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-hidden focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
2002
- className
2003
- ),
2004
- ...props
2005
- }
2006
- );
2007
- }
2008
- function MenubarSubTrigger({
2009
- className,
2010
- inset,
2011
- children,
2012
- ...props
2013
- }) {
2014
- return /* @__PURE__ */ jsxRuntime.jsxs(
2015
- MenubarPrimitive__namespace.SubTrigger,
2016
- {
2017
- "data-slot": "menubar-sub-trigger",
2018
- "data-inset": inset,
2019
- className: cn(
2020
- "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground cursor-pointer flex items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:ps-8",
2021
- className
2022
- ),
2023
- ...props,
2024
- children: [
2025
- children,
2026
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "ms-auto h-4 w-4 rtl:-scale-x-100" })
2027
- ]
2028
- }
2029
- );
2030
- }
2031
- function MenubarSub({
2032
- ...props
2033
- }) {
2034
- return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Sub, { "data-slot": "menubar-sub", ...props });
2035
- }
2036
- function MenubarSubContent({
2037
- className,
2038
- ...props
2039
- }) {
2040
- return /* @__PURE__ */ jsxRuntime.jsx(
2041
- MenubarPrimitive__namespace.SubContent,
2042
- {
2043
- "data-slot": "menubar-sub-content",
2044
- className: cn(
2045
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
2046
- className
2047
- ),
2048
- ...props
2049
- }
2050
- );
2051
- }
2052
- function MenubarContent({
2053
- className,
2054
- align = "start",
2055
- alignOffset = -4,
2056
- sideOffset = 8,
2057
- ...props
2058
- }) {
2059
- return /* @__PURE__ */ jsxRuntime.jsx(MenubarPortal, { children: /* @__PURE__ */ jsxRuntime.jsx(
2060
- MenubarPrimitive__namespace.Content,
2061
- {
2062
- "data-slot": "menubar-content",
2063
- align,
2064
- alignOffset,
2065
- sideOffset,
2066
- className: cn(
2067
- "z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
2068
- className
2069
- ),
2070
- ...props
2071
- }
2072
- ) });
2073
- }
2074
- function MenubarItem({
2075
- className,
2076
- inset,
2077
- variant = "default",
2078
- ...props
2079
- }) {
2080
- return /* @__PURE__ */ jsxRuntime.jsx(
2081
- MenubarPrimitive__namespace.Item,
2082
- {
2083
- "data-slot": "menubar-item",
2084
- "data-inset": inset,
2085
- "data-variant": variant,
2086
- className: cn(
2087
- "relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground",
2088
- className
2089
- ),
2090
- ...props
2091
- }
2092
- );
2093
- }
2094
- function MenubarCheckboxItem({
2095
- className,
2096
- children,
2097
- checked,
2098
- ...props
2099
- }) {
2100
- return /* @__PURE__ */ jsxRuntime.jsxs(
2101
- MenubarPrimitive__namespace.CheckboxItem,
2102
- {
2103
- "data-slot": "menubar-checkbox-item",
2104
- className: cn(
2105
- "relative flex cursor-pointer select-none items-center rounded-sm py-1.5 ps-8 pe-2 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2106
- className
2107
- ),
2108
- checked,
2109
- ...props,
2110
- children: [
2111
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" }) }) }),
2112
- children
2113
- ]
2114
- }
2115
- );
2116
- }
2117
- function MenubarRadioItem({
2118
- className,
2119
- children,
2120
- ...props
2121
- }) {
2122
- return /* @__PURE__ */ jsxRuntime.jsxs(
2123
- MenubarPrimitive__namespace.RadioItem,
2124
- {
2125
- "data-slot": "menubar-radio-item",
2126
- className: cn(
2127
- "relative flex cursor-pointer select-none items-center rounded-sm py-1.5 ps-8 pe-2 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2128
- className
2129
- ),
2130
- ...props,
2131
- children: [
2132
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute start-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Dot, { className: "h-4 w-4 fill-current" }) }) }),
2133
- children
2134
- ]
2135
- }
2136
- );
2137
- }
2138
- function MenubarLabel({
2139
- className,
2140
- inset,
2141
- ...props
2142
- }) {
2143
- return /* @__PURE__ */ jsxRuntime.jsx(
2144
- MenubarPrimitive__namespace.Label,
2145
- {
2146
- "data-slot": "menubar-label",
2147
- className: cn(
2148
- "px-2 py-1.5 text-sm font-semibold",
2149
- inset && "ps-8",
2150
- className
2151
- ),
2152
- ...props
2153
- }
2154
- );
2155
- }
2156
- function MenubarSeparator({
2157
- className,
2158
- ...props
2159
- }) {
2160
- return /* @__PURE__ */ jsxRuntime.jsx(
2161
- MenubarPrimitive__namespace.Separator,
2162
- {
2163
- "data-slot": "menubar-separator",
2164
- className: cn("-mx-1 my-1 h-px bg-muted", className),
2165
- ...props
2166
- }
2167
- );
2168
- }
2169
- function MenubarShortcut({
2170
- className,
2171
- ...props
2172
- }) {
2173
- return /* @__PURE__ */ jsxRuntime.jsx(
2174
- "span",
2175
- {
2176
- "data-slot": "menubar-shortcut",
2177
- className: cn(
2178
- "ms-auto text-xs tracking-widest text-muted-foreground",
2179
- className
2180
- ),
2181
- ...props
2182
- }
2183
- );
2184
- }
2185
- var init_menubar = __esm({
2186
- "src/ui/primitives/menubar.tsx"() {
2187
- "use client";
2188
- init_utils();
2189
- }
2190
- });
2191
- function NavigationMenu({
2192
- className,
2193
- children,
2194
- viewport = true,
2195
- ...props
2196
- }) {
2197
- return /* @__PURE__ */ jsxRuntime.jsxs(
2198
- NavigationMenuPrimitive__namespace.Root,
2199
- {
2200
- "data-slot": "navigation-menu",
2201
- "data-viewport": viewport,
2202
- className: cn(
2203
- "group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",
2204
- className
2205
- ),
2206
- ...props,
2207
- children: [
2208
- children,
2209
- viewport && /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuViewport, {})
2210
- ]
2211
- }
2212
- );
2213
- }
2214
- function NavigationMenuList({
2215
- className,
2216
- ...props
2217
- }) {
2218
- return /* @__PURE__ */ jsxRuntime.jsx(
2219
- NavigationMenuPrimitive__namespace.List,
2220
- {
2221
- "data-slot": "navigation-menu-list",
2222
- className: cn(
2223
- "group flex flex-1 list-none items-center justify-center gap-1",
2224
- className
2225
- ),
2226
- ...props
2227
- }
2228
- );
2229
- }
2230
- function NavigationMenuItem({
2231
- className,
2232
- ...props
2233
- }) {
2234
- return /* @__PURE__ */ jsxRuntime.jsx(
2235
- NavigationMenuPrimitive__namespace.Item,
2236
- {
2237
- "data-slot": "navigation-menu-item",
2238
- className: cn("relative", className),
2239
- ...props
2240
- }
2241
- );
2242
- }
2243
- function NavigationMenuTrigger({
2244
- className,
2245
- children,
2246
- ...props
2247
- }) {
2248
- return /* @__PURE__ */ jsxRuntime.jsxs(
2249
- NavigationMenuPrimitive__namespace.Trigger,
2250
- {
2251
- "data-slot": "navigation-menu-trigger",
2252
- className: cn(exports.navigationMenuTriggerStyle(), "group", className),
2253
- ...props,
2254
- children: [
2255
- children,
2256
- " ",
2257
- /* @__PURE__ */ jsxRuntime.jsx(
2258
- lucideReact.ChevronDown,
2259
- {
2260
- className: "relative top-[1px] ms-1 size-3 transition duration-300 group-data-[state=open]:rotate-180",
2261
- "aria-hidden": "true"
2262
- }
2263
- )
2264
- ]
2265
- }
2266
- );
2267
- }
2268
- function NavigationMenuContent({
2269
- className,
2270
- ...props
2271
- }) {
2272
- return /* @__PURE__ */ jsxRuntime.jsx(
2273
- NavigationMenuPrimitive__namespace.Content,
2274
- {
2275
- "data-slot": "navigation-menu-content",
2276
- className: cn(
2277
- "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto",
2278
- "group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none",
2279
- className
2280
- ),
2281
- ...props
2282
- }
2283
- );
2284
- }
2285
- function NavigationMenuLink({
2286
- className,
2287
- ...props
2288
- }) {
2289
- return /* @__PURE__ */ jsxRuntime.jsx(
2290
- NavigationMenuPrimitive__namespace.Link,
2291
- {
2292
- "data-slot": "navigation-menu-link",
2293
- className: cn(
2294
- "data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4",
2295
- className
2296
- ),
2297
- ...props
2298
- }
2299
- );
2300
- }
2301
- function NavigationMenuViewport({
2302
- className,
2303
- ...props
2304
- }) {
2305
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("absolute start-0 top-full flex justify-center"), children: /* @__PURE__ */ jsxRuntime.jsx(
2306
- NavigationMenuPrimitive__namespace.Viewport,
2307
- {
2308
- "data-slot": "navigation-menu-viewport",
2309
- className: cn(
2310
- "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
2311
- className
2312
- ),
2313
- ...props
2314
- }
2315
- ) });
2316
- }
2317
- function NavigationMenuIndicator({
2318
- className,
2319
- ...props
2320
- }) {
2321
- return /* @__PURE__ */ jsxRuntime.jsx(
2322
- NavigationMenuPrimitive__namespace.Indicator,
2323
- {
2324
- "data-slot": "navigation-menu-indicator",
2325
- className: cn(
2326
- "top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
2327
- className
2328
- ),
2329
- ...props,
2330
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-te-sm bg-border shadow-md" })
2331
- }
2332
- );
2333
- }
2334
- exports.navigationMenuTriggerStyle = void 0;
2335
- var init_navigation_menu = __esm({
2336
- "src/ui/primitives/navigation-menu.tsx"() {
2337
- init_utils();
2338
- exports.navigationMenuTriggerStyle = classVarianceAuthority.cva(
2339
- "group cursor-pointer inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1"
2340
- );
2341
- }
2342
- });
2343
- function Sheet({
2344
- ...props
2345
- }) {
2346
- return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Root, { "data-slot": "sheet", ...props });
2347
- }
2348
- function SheetPortal({
2349
- ...props
2350
- }) {
2351
- return /* @__PURE__ */ jsxRuntime.jsx(DialogPrimitive__namespace.Portal, { "data-slot": "sheet-portal", ...props });
2352
- }
2353
- function SheetOverlay({
2354
- className,
2355
- ...props
2356
- }) {
2357
- return /* @__PURE__ */ jsxRuntime.jsx(
2358
- DialogPrimitive__namespace.Overlay,
2359
- {
2360
- "data-slot": "sheet-overlay",
2361
- className: cn(
2362
- "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
2363
- className
2364
- ),
2365
- ...props
2366
- }
2367
- );
2368
- }
2369
- function SheetContent({
2370
- className,
2371
- children,
2372
- side = "right",
2373
- ...props
2374
- }) {
2375
- return /* @__PURE__ */ jsxRuntime.jsxs(SheetPortal, { children: [
2376
- /* @__PURE__ */ jsxRuntime.jsx(SheetOverlay, {}),
2377
- /* @__PURE__ */ jsxRuntime.jsx(
2378
- DialogPrimitive__namespace.Content,
2379
- {
2380
- "data-slot": "sheet-content",
2381
- className: cn(sheetVariants({ side }), className),
2382
- ...props,
2383
- children
2384
- }
2385
- )
2386
- ] });
2387
- }
2388
- function SheetTitle({
2389
- className,
2390
- ...props
2391
- }) {
2392
- return /* @__PURE__ */ jsxRuntime.jsx(
2393
- DialogPrimitive__namespace.Title,
2394
- {
2395
- "data-slot": "sheet-title",
2396
- className: cn("text-lg font-semibold text-foreground", className),
2397
- ...props
2398
- }
2399
- );
2400
- }
2401
- var sheetVariants;
2402
- var init_sheet = __esm({
2403
- "src/ui/feedback/sheet.tsx"() {
2404
- "use client";
2405
- init_utils();
2406
- sheetVariants = classVarianceAuthority.cva(
2407
- "fixed z-50 gap-4 bg-background p-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",
2408
- {
2409
- variants: {
2410
- side: {
2411
- top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
2412
- bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
2413
- left: "inset-y-0 left-0 h-full w-72 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
2414
- right: "inset-y-0 right-0 h-full w-72 border-s data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm",
2415
- start: "inset-y-0 start-0 h-full w-72 border-e data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left data-[state=closed]:rtl:slide-out-to-right data-[state=open]:rtl:slide-in-from-right sm:max-w-sm",
2416
- end: "inset-y-0 end-0 h-full w-72 border-s data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right data-[state=closed]:rtl:slide-out-to-left data-[state=open]:rtl:slide-in-from-left sm:max-w-sm"
2417
- }
2418
- },
2419
- defaultVariants: {
2420
- side: "right"
2421
- }
2422
- }
2423
- );
2424
- }
2425
- });
2426
- var init_context_menu = __esm({
2427
- "src/ui/feedback/context-menu.tsx"() {
2428
- "use client";
2429
- }
2430
- });
2431
- var init_drawer = __esm({
2432
- "src/ui/feedback/drawer.tsx"() {
2433
- "use client";
2434
- }
2435
- });
2436
- var init_progress = __esm({
2437
- "src/ui/feedback/progress.tsx"() {
2438
- "use client";
2439
- }
2440
- });
2441
- var init_sonner = __esm({
2442
- "src/ui/feedback/sonner.tsx"() {
2443
- "use client";
2444
- }
2445
- });
2446
- var init_alert = __esm({
2447
- "src/ui/feedback/alert.tsx"() {
2448
- classVarianceAuthority.cva(
2449
- "relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",
2450
- {
2451
- variants: {
2452
- variant: {
2453
- default: "bg-background text-foreground",
2454
- destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"
2455
- }
2456
- },
2457
- defaultVariants: {
2458
- variant: "default"
2459
- }
2460
- }
2461
- );
2462
- }
2463
- });
2464
- var GlobalErrorEmitter;
2465
- var init_error_dialog = __esm({
2466
- "src/ui/feedback/error-dialog.tsx"() {
2467
- "use client";
2468
- GlobalErrorEmitter = class {
2469
- constructor() {
2470
- this.listeners = [];
2471
- }
2472
- subscribe(listener) {
2473
- this.listeners.push(listener);
2474
- return () => {
2475
- this.listeners = this.listeners.filter((l) => l !== listener);
2476
- };
2477
- }
2478
- emit(data) {
2479
- this.listeners.forEach((listener) => listener(data));
2480
- }
2481
- };
2482
- new GlobalErrorEmitter();
2483
- React10.createContext(null);
2484
- }
2485
- });
2486
- var init_feedback = __esm({
2487
- "src/ui/feedback/index.tsx"() {
2488
- init_progress();
2489
- init_sheet();
2490
- init_alert();
2491
- init_context_menu();
2492
- init_drawer();
2493
- init_sonner();
2494
- init_error_dialog();
2495
- }
2496
- });
2497
-
2498
- // src/hooks/use-tenant.ts
2499
- var init_use_tenant = __esm({
2500
- "src/hooks/use-tenant.ts"() {
2501
- }
2502
- });
2503
- function useMediaQuery(query) {
2504
- const [matches, setMatches] = React10.useState(false);
2505
- React10.useEffect(() => {
2506
- if (typeof window !== "undefined") {
2507
- const media = window.matchMedia(query);
2508
- setMatches(media.matches);
2509
- const listener = (event) => setMatches(event.matches);
2510
- media.addEventListener("change", listener);
2511
- return () => media.removeEventListener("change", listener);
2512
- }
2513
- }, [query]);
2514
- return matches;
2515
- }
2516
- function useMobile() {
2517
- return useMediaQuery("(max-width: 768px)");
2518
- }
2519
- var init_hooks = __esm({
2520
- "src/hooks/index.tsx"() {
2521
- "use client";
2522
- init_use_tenant();
2523
- React10.createContext(null);
2524
- }
2525
- });
2526
- function useSidebar() {
2527
- const context = React10__namespace.useContext(SidebarContext);
2528
- if (!context) {
2529
- throw new Error("useSidebar must be used within a SidebarProvider.");
2530
- }
2531
- return context;
2532
- }
2533
- var SIDEBAR_WIDTH, SIDEBAR_WIDTH_MOBILE, SIDEBAR_WIDTH_ICON, SIDEBAR_KEYBOARD_SHORTCUT, SidebarContext; exports.SidebarProvider = void 0; exports.Sidebar = void 0; exports.SidebarTrigger = void 0; exports.SidebarRail = void 0; exports.SidebarInset = void 0; exports.SidebarInput = void 0; exports.SidebarHeader = void 0; exports.SidebarFooter = void 0; exports.SidebarSeparator = void 0; exports.SidebarContent = void 0; exports.SidebarGroup = void 0; exports.SidebarGroupLabel = void 0; exports.SidebarGroupAction = void 0; exports.SidebarGroupContent = void 0; exports.SidebarMenu = void 0; exports.SidebarMenuItem = void 0; var sidebarMenuButtonVariants; exports.SidebarMenuButton = void 0; exports.SidebarMenuAction = void 0; exports.SidebarMenuBadge = void 0; exports.SidebarMenuSkeleton = void 0; exports.SidebarMenuSub = void 0; exports.SidebarMenuSubItem = void 0; exports.SidebarMenuSubButton = void 0;
2534
- var init_sidebar = __esm({
2535
- "src/ui/primitives/sidebar.tsx"() {
2536
- "use client";
2537
- init_hooks();
2538
- init_utils();
2539
- init_button();
2540
- init_feedback();
2541
- init_tooltip();
2542
- SIDEBAR_WIDTH = "16rem";
2543
- SIDEBAR_WIDTH_MOBILE = "18rem";
2544
- SIDEBAR_WIDTH_ICON = "3rem";
2545
- SIDEBAR_KEYBOARD_SHORTCUT = "b";
2546
- SidebarContext = React10__namespace.createContext(null);
2547
- exports.SidebarProvider = React10__namespace.forwardRef(
2548
- ({
2549
- defaultOpen = false,
2550
- open: openProp,
2551
- onOpenChange: setOpenProp,
2552
- className,
2553
- style,
2554
- children,
2555
- ...props
2556
- }, ref) => {
2557
- const isMobile = useMobile();
2558
- const [openMobile, setOpenMobile] = React10__namespace.useState(false);
2559
- const [hoverOpen, setHoverOpen] = React10__namespace.useState(false);
2560
- const [_open, _setOpen] = React10__namespace.useState(defaultOpen);
2561
- const open = openProp ?? _open;
2562
- const setOpen = React10__namespace.useCallback(
2563
- (value) => {
2564
- if (setOpenProp) {
2565
- return setOpenProp(typeof value === "function" ? value(open) : value);
2566
- }
2567
- _setOpen(value);
2568
- },
2569
- [setOpenProp, open]
2570
- );
2571
- const toggleSidebar = React10__namespace.useCallback(() => {
2572
- return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
2573
- }, [isMobile, setOpen, setOpenMobile]);
2574
- React10__namespace.useEffect(() => {
2575
- const handleKeyDown = (event) => {
2576
- if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
2577
- event.preventDefault();
2578
- toggleSidebar();
2579
- }
2580
- };
2581
- window.addEventListener("keydown", handleKeyDown);
2582
- return () => window.removeEventListener("keydown", handleKeyDown);
2583
- }, [toggleSidebar]);
2584
- const state = open ? "expanded" : "collapsed";
2585
- const isHoverExpanded = !open && hoverOpen;
2586
- const contextValue = React10__namespace.useMemo(
2587
- () => ({
2588
- state,
2589
- open,
2590
- setOpen,
2591
- isMobile,
2592
- openMobile,
2593
- setOpenMobile,
2594
- toggleSidebar,
2595
- hoverOpen,
2596
- setHoverOpen,
2597
- isHoverExpanded
2598
- }),
2599
- [
2600
- state,
2601
- open,
2602
- setOpen,
2603
- isMobile,
2604
- openMobile,
2605
- setOpenMobile,
2606
- toggleSidebar,
2607
- hoverOpen,
2608
- setHoverOpen,
2609
- isHoverExpanded
2610
- ]
2611
- );
2612
- return /* @__PURE__ */ jsxRuntime.jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsxRuntime.jsx(
2613
- "div",
2614
- {
2615
- style: {
2616
- "--sidebar-width": SIDEBAR_WIDTH,
2617
- "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
2618
- ...style
2619
- },
2620
- className: cn(
2621
- "group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar",
2622
- className
2623
- ),
2624
- ref,
2625
- ...props,
2626
- children
2627
- }
2628
- ) }) });
2629
- }
2630
- );
2631
- exports.SidebarProvider.displayName = "SidebarProvider";
2632
- exports.Sidebar = React10__namespace.forwardRef(
2633
- ({
2634
- side = "left",
2635
- variant = "sidebar",
2636
- collapsible = "offcanvas",
2637
- hoverExpandEnabled = true,
2638
- className,
2639
- children,
2640
- ...props
2641
- }, ref) => {
2642
- const {
2643
- isMobile,
2644
- state,
2645
- openMobile,
2646
- setOpenMobile,
2647
- setHoverOpen,
2648
- isHoverExpanded
2649
- } = useSidebar();
2650
- const handleMouseEnter = React10__namespace.useCallback(() => {
2651
- if (hoverExpandEnabled && state === "collapsed" && collapsible === "icon") {
2652
- setHoverOpen(true);
2653
- }
2654
- }, [hoverExpandEnabled, state, collapsible, setHoverOpen]);
2655
- const handleMouseLeave = React10__namespace.useCallback(() => {
2656
- if (hoverExpandEnabled) {
2657
- setHoverOpen(false);
2658
- }
2659
- }, [hoverExpandEnabled, setHoverOpen]);
2660
- if (collapsible === "none") {
2661
- return /* @__PURE__ */ jsxRuntime.jsx(
2662
- "div",
2663
- {
2664
- className: cn(
2665
- "flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",
2666
- className
2667
- ),
2668
- ref,
2669
- ...props,
2670
- children
2671
- }
2672
- );
2673
- }
2674
- if (isMobile) {
2675
- return /* @__PURE__ */ jsxRuntime.jsx(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(
2676
- SheetContent,
2677
- {
2678
- "data-sidebar": "sidebar",
2679
- "data-mobile": "true",
2680
- className: "w-(--sidebar-width) bg-background p-0 text-foreground [&>button]:hidden",
2681
- style: {
2682
- "--sidebar-width": SIDEBAR_WIDTH_MOBILE
2683
- },
2684
- side,
2685
- children: [
2686
- /* @__PURE__ */ jsxRuntime.jsx(SheetTitle, { className: "sr-only", children: "Mobile Menu" }),
2687
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full w-full flex-col", children })
2688
- ]
2689
- }
2690
- ) });
2691
- }
2692
- return /* @__PURE__ */ jsxRuntime.jsxs(
2693
- "div",
2694
- {
2695
- ref,
2696
- className: cn(
2697
- "group peer hidden md:block transition-colors duration-200",
2698
- // Blue bg + white text when collapsed, white bg + dark text when expanded/hover
2699
- state === "collapsed" && !isHoverExpanded ? "text-sidebar-foreground" : "text-foreground"
2700
- ),
2701
- "data-state": state,
2702
- "data-hover-expanded": isHoverExpanded,
2703
- "data-collapsible": state === "collapsed" ? collapsible : "",
2704
- "data-variant": variant,
2705
- "data-side": side,
2706
- onMouseEnter: handleMouseEnter,
2707
- onMouseLeave: handleMouseLeave,
2708
- children: [
2709
- /* @__PURE__ */ jsxRuntime.jsx(
2710
- "div",
2711
- {
2712
- className: cn(
2713
- "duration-200 relative h-svh w-(--sidebar-width) bg-transparent transition-[width] ease-linear",
2714
- "group-data-[collapsible=offcanvas]:w-0",
2715
- "group-data-[collapsible=icon]:w-(--sidebar-width-icon)",
2716
- variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
2717
- )
2718
- }
2719
- ),
2720
- /* @__PURE__ */ jsxRuntime.jsx(
2721
- "div",
2722
- {
2723
- className: cn(
2724
- "duration-200 fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] ease-linear md:flex",
2725
- side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
2726
- // Adjustments for collapsible=icon
2727
- variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_8px)] group-data-[collapsible=icon]:px-2.5" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[collapsible=icon]:border-r group-data-[collapsible=icon]:px-0",
2728
- // Hover expand - override icon width to full width on hover
2729
- "group-data-[hover-expanded=true]:!w-(--sidebar-width) group-data-[hover-expanded=true]:shadow-xl group-data-[hover-expanded=true]:z-[100]",
2730
- className
2731
- ),
2732
- ...props,
2733
- children: /* @__PURE__ */ jsxRuntime.jsx(
2734
- "div",
2735
- {
2736
- "data-sidebar": "sidebar",
2737
- className: cn(
2738
- "flex h-full w-full flex-col border-r transition-colors duration-200",
2739
- // Blue background when collapsed, white when expanded/hover
2740
- "group-data-[state=collapsed]:bg-sidebar group-data-[state=collapsed]:border-sidebar-border",
2741
- "group-data-[state=expanded]:bg-background group-data-[state=expanded]:border-border",
2742
- "group-data-[hover-expanded=true]:!bg-background group-data-[hover-expanded=true]:!border-border",
2743
- "group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow"
2744
- ),
2745
- children
2746
- }
2747
- )
2748
- }
2749
- )
2750
- ]
2751
- }
2752
- );
2753
- }
2754
- );
2755
- exports.Sidebar.displayName = "Sidebar";
2756
- exports.SidebarTrigger = React10__namespace.forwardRef(({ className, onClick, ...props }, ref) => {
2757
- const { toggleSidebar } = useSidebar();
2758
- return /* @__PURE__ */ jsxRuntime.jsxs(
2759
- exports.Button,
2760
- {
2761
- ref,
2762
- "data-sidebar": "trigger",
2763
- variant: "ghost",
2764
- size: "icon",
2765
- className: cn("h-7 w-7", className),
2766
- onClick: (event) => {
2767
- onClick?.(event);
2768
- toggleSidebar();
2769
- },
2770
- ...props,
2771
- children: [
2772
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PanelLeft, {}),
2773
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Toggle Sidebar" })
2774
- ]
2775
- }
2776
- );
2777
- });
2778
- exports.SidebarTrigger.displayName = "SidebarTrigger";
2779
- exports.SidebarRail = React10__namespace.forwardRef(({ className, ...props }, ref) => {
2780
- const { toggleSidebar } = useSidebar();
2781
- return /* @__PURE__ */ jsxRuntime.jsx(
2782
- "button",
2783
- {
2784
- ref,
2785
- "data-sidebar": "rail",
2786
- "aria-label": "Toggle Sidebar",
2787
- tabIndex: -1,
2788
- onClick: toggleSidebar,
2789
- title: "Toggle Sidebar",
2790
- className: cn(
2791
- "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex",
2792
- "[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize",
2793
- "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
2794
- "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar",
2795
- "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
2796
- "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
2797
- className
2798
- ),
2799
- ...props
2800
- }
2801
- );
2802
- });
2803
- exports.SidebarRail.displayName = "SidebarRail";
2804
- exports.SidebarInset = React10__namespace.forwardRef(({ className, ...props }, ref) => {
2805
- return /* @__PURE__ */ jsxRuntime.jsx(
2806
- "main",
2807
- {
2808
- ref,
2809
- className: cn(
2810
- "relative flex min-h-svh flex-1 flex-col bg-muted/40 transition-[margin] duration-200 ease-linear",
2811
- "peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",
2812
- className
2813
- ),
2814
- ...props
2815
- }
2816
- );
2817
- });
2818
- exports.SidebarInset.displayName = "SidebarInset";
2819
- exports.SidebarInput = React10__namespace.forwardRef(({ className, ...props }, ref) => {
2820
- return /* @__PURE__ */ jsxRuntime.jsx(
2821
- "input",
2822
- {
2823
- ref,
2824
- "data-sidebar": "input",
2825
- className: cn(
2826
- "flex h-8 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sidebar-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
2827
- className
2828
- ),
2829
- ...props
2830
- }
2831
- );
2832
- });
2833
- exports.SidebarInput.displayName = "SidebarInput";
2834
- exports.SidebarHeader = React10__namespace.forwardRef(({ className, ...props }, ref) => {
2835
- return /* @__PURE__ */ jsxRuntime.jsx(
2836
- "div",
2837
- {
2838
- ref,
2839
- "data-sidebar": "header",
2840
- className: cn("flex flex-col gap-2 p-2", className),
2841
- ...props
2842
- }
2843
- );
2844
- });
2845
- exports.SidebarHeader.displayName = "SidebarHeader";
2846
- exports.SidebarFooter = React10__namespace.forwardRef(({ className, ...props }, ref) => {
2847
- return /* @__PURE__ */ jsxRuntime.jsx(
2848
- "div",
2849
- {
2850
- ref,
2851
- "data-sidebar": "footer",
2852
- className: cn("flex flex-col gap-2 p-2", className),
2853
- ...props
2854
- }
2855
- );
2856
- });
2857
- exports.SidebarFooter.displayName = "SidebarFooter";
2858
- exports.SidebarSeparator = React10__namespace.forwardRef(({ className, ...props }, ref) => {
2859
- return /* @__PURE__ */ jsxRuntime.jsx(
2860
- "div",
2861
- {
2862
- ref,
2863
- "data-sidebar": "separator",
2864
- className: cn("mx-2 h-[1px] w-auto bg-sidebar-border", className),
2865
- ...props
2866
- }
2867
- );
2868
- });
2869
- exports.SidebarSeparator.displayName = "SidebarSeparator";
2870
- exports.SidebarContent = React10__namespace.forwardRef(({ className, ...props }, ref) => {
2871
- return /* @__PURE__ */ jsxRuntime.jsx(
2872
- "div",
2873
- {
2874
- ref,
2875
- "data-sidebar": "content",
2876
- className: cn(
2877
- "flex min-h-0 flex-1 flex-col gap-2 overflow-auto",
2878
- // Hide overflow when collapsed, but show when hover-expanded
2879
- "group-data-[collapsible=icon]:overflow-hidden group-data-[hover-expanded=true]:!overflow-auto",
2880
- className
2881
- ),
2882
- ...props
2883
- }
2884
- );
2885
- });
2886
- exports.SidebarContent.displayName = "SidebarContent";
2887
- exports.SidebarGroup = React10__namespace.forwardRef(({ className, ...props }, ref) => {
2888
- return /* @__PURE__ */ jsxRuntime.jsx(
2889
- "div",
2890
- {
2891
- ref,
2892
- "data-sidebar": "group",
2893
- className: cn("relative flex w-full min-w-0 flex-col p-2", className),
2894
- ...props
2895
- }
2896
- );
2897
- });
2898
- exports.SidebarGroup.displayName = "SidebarGroup";
2899
- exports.SidebarGroupLabel = React10__namespace.forwardRef(({ className, asChild = false, ...props }, ref) => {
2900
- const Comp = asChild ? reactSlot.Slot : "div";
2901
- return /* @__PURE__ */ jsxRuntime.jsx(
2902
- Comp,
2903
- {
2904
- ref,
2905
- "data-sidebar": "group-label",
2906
- className: cn(
2907
- "duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-bold text-primary uppercase tracking-wider outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
2908
- // Hide when collapsed, show when hover-expanded
2909
- "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
2910
- "group-data-[hover-expanded=true]:!mt-0 group-data-[hover-expanded=true]:!opacity-100",
2911
- className
2912
- ),
2913
- ...props
2914
- }
2915
- );
2916
- });
2917
- exports.SidebarGroupLabel.displayName = "SidebarGroupLabel";
2918
- exports.SidebarGroupAction = React10__namespace.forwardRef(({ className, asChild = false, ...props }, ref) => {
2919
- const Comp = asChild ? reactSlot.Slot : "button";
2920
- return /* @__PURE__ */ jsxRuntime.jsx(
2921
- Comp,
2922
- {
2923
- ref,
2924
- "data-sidebar": "group-action",
2925
- className: cn(
2926
- "absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
2927
- // Increases the hit area of the button on mobile.
2928
- "after:absolute after:-inset-2 after:md:hidden",
2929
- "group-data-[collapsible=icon]:hidden",
2930
- className
2931
- ),
2932
- ...props
2933
- }
2934
- );
2935
- });
2936
- exports.SidebarGroupAction.displayName = "SidebarGroupAction";
2937
- exports.SidebarGroupContent = React10__namespace.forwardRef(({ className, ...props }, ref) => {
2938
- return /* @__PURE__ */ jsxRuntime.jsx(
2939
- "div",
2940
- {
2941
- ref,
2942
- "data-sidebar": "group-content",
2943
- className: cn("w-full text-sm", className),
2944
- ...props
2945
- }
2946
- );
2947
- });
2948
- exports.SidebarGroupContent.displayName = "SidebarGroupContent";
2949
- exports.SidebarMenu = React10__namespace.forwardRef(({ className, ...props }, ref) => {
2950
- return /* @__PURE__ */ jsxRuntime.jsx(
2951
- "ul",
2952
- {
2953
- ref,
2954
- "data-sidebar": "menu",
2955
- className: cn("flex w-full min-w-0 flex-col gap-1", className),
2956
- ...props
2957
- }
2958
- );
2959
- });
2960
- exports.SidebarMenu.displayName = "SidebarMenu";
2961
- exports.SidebarMenuItem = React10__namespace.forwardRef(({ className, ...props }, ref) => {
2962
- return /* @__PURE__ */ jsxRuntime.jsx(
2963
- "li",
2964
- {
2965
- ref,
2966
- "data-sidebar": "menu-item",
2967
- className: cn("group/menu-item relative", className),
2968
- ...props
2969
- }
2970
- );
2971
- });
2972
- exports.SidebarMenuItem.displayName = "SidebarMenuItem";
2973
- sidebarMenuButtonVariants = classVarianceAuthority.cva(
2974
- // Base styles + hover-expand overrides
2975
- "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 group-data-[hover-expanded=true]:!size-auto group-data-[hover-expanded=true]:!w-full group-data-[hover-expanded=true]:!p-2",
2976
- {
2977
- variants: {
2978
- variant: {
2979
- default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
2980
- outline: "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"
2981
- },
2982
- size: {
2983
- default: "h-8 text-sm",
2984
- sm: "h-7 text-xs",
2985
- lg: "h-12 text-sm group-data-[collapsible=icon]:!p-0"
2986
- },
2987
- isActive: {
2988
- true: "bg-primary/10 text-primary font-bold"
2989
- }
2990
- },
2991
- defaultVariants: {
2992
- variant: "default",
2993
- size: "default"
2994
- }
2995
- }
2996
- );
2997
- exports.SidebarMenuButton = React10__namespace.forwardRef(
2998
- ({
2999
- asChild = false,
3000
- isActive = false,
3001
- variant = "default",
3002
- size = "default",
3003
- tooltip,
3004
- className,
3005
- ...props
3006
- }, ref) => {
3007
- const Comp = asChild ? reactSlot.Slot : "button";
3008
- const { isMobile, state } = useSidebar();
3009
- const button = /* @__PURE__ */ jsxRuntime.jsx(
3010
- Comp,
3011
- {
3012
- ref,
3013
- "data-sidebar": "menu-button",
3014
- "data-size": size,
3015
- "data-active": isActive,
3016
- className: cn(
3017
- sidebarMenuButtonVariants({ variant, size, isActive }),
3018
- className
3019
- ),
3020
- ...props
3021
- }
3022
- );
3023
- if (!tooltip) {
3024
- return button;
3025
- }
3026
- if (typeof tooltip === "string") {
3027
- tooltip = {
3028
- children: tooltip
3029
- };
3030
- }
3031
- return /* @__PURE__ */ jsxRuntime.jsxs(Tooltip, { children: [
3032
- /* @__PURE__ */ jsxRuntime.jsx(TooltipTrigger, { asChild: true, children: button }),
3033
- /* @__PURE__ */ jsxRuntime.jsx(
3034
- TooltipContent,
3035
- {
3036
- side: "right",
3037
- align: "center",
3038
- hidden: state !== "collapsed" || isMobile,
3039
- ...tooltip
3040
- }
3041
- )
3042
- ] });
3043
- }
3044
- );
3045
- exports.SidebarMenuButton.displayName = "SidebarMenuButton";
3046
- exports.SidebarMenuAction = React10__namespace.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
3047
- const Comp = asChild ? reactSlot.Slot : "button";
3048
- return /* @__PURE__ */ jsxRuntime.jsx(
3049
- Comp,
3050
- {
3051
- ref,
3052
- "data-sidebar": "menu-action",
3053
- className: cn(
3054
- "absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
3055
- // Increases the hit area of the button on mobile.
3056
- "after:absolute after:-inset-2 after:md:hidden",
3057
- "peer-data-[size=sm]/menu-button:top-1",
3058
- "peer-data-[size=default]/menu-button:top-1.5",
3059
- "peer-data-[size=lg]/menu-button:top-2.5",
3060
- "group-data-[collapsible=icon]:hidden",
3061
- showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0",
3062
- className
3063
- ),
3064
- ...props
3065
- }
3066
- );
3067
- });
3068
- exports.SidebarMenuAction.displayName = "SidebarMenuAction";
3069
- exports.SidebarMenuBadge = React10__namespace.forwardRef(({ className, ...props }, ref) => {
3070
- return /* @__PURE__ */ jsxRuntime.jsx(
3071
- "div",
3072
- {
3073
- ref,
3074
- "data-sidebar": "menu-badge",
3075
- className: cn(
3076
- "pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground select-none",
3077
- "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
3078
- "peer-data-[size=sm]/menu-button:top-1",
3079
- "peer-data-[size=default]/menu-button:top-1.5",
3080
- "peer-data-[size=lg]/menu-button:top-2.5",
3081
- "group-data-[collapsible=icon]:hidden",
3082
- className
3083
- ),
3084
- ...props
3085
- }
3086
- );
3087
- });
3088
- exports.SidebarMenuBadge.displayName = "SidebarMenuBadge";
3089
- exports.SidebarMenuSkeleton = React10__namespace.forwardRef(({ className, showIcon = false, ...props }, ref) => {
3090
- const width = React10__namespace.useMemo(() => {
3091
- return `${Math.floor(Math.random() * 40) + 50}%`;
3092
- }, []);
3093
- return /* @__PURE__ */ jsxRuntime.jsxs(
3094
- "div",
3095
- {
3096
- ref,
3097
- "data-sidebar": "menu-skeleton",
3098
- className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
3099
- ...props,
3100
- children: [
3101
- showIcon && /* @__PURE__ */ jsxRuntime.jsx(
3102
- "div",
3103
- {
3104
- className: "size-4 rounded-md animate-pulse bg-muted",
3105
- "data-sidebar": "menu-skeleton-icon"
3106
- }
3107
- ),
3108
- /* @__PURE__ */ jsxRuntime.jsx(
3109
- "div",
3110
- {
3111
- className: "h-4 flex-1 max-w-[--skeleton-width] animate-pulse bg-muted rounded-full",
3112
- "data-sidebar": "menu-skeleton-text",
3113
- style: {
3114
- "--skeleton-width": width
3115
- }
3116
- }
3117
- )
3118
- ]
3119
- }
3120
- );
3121
- });
3122
- exports.SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
3123
- exports.SidebarMenuSub = React10__namespace.forwardRef(({ className, ...props }, ref) => {
3124
- return /* @__PURE__ */ jsxRuntime.jsx(
3125
- "ul",
3126
- {
3127
- ref,
3128
- "data-sidebar": "menu-sub",
3129
- className: cn(
3130
- "mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5",
3131
- // Hide when collapsed, show when hover-expanded
3132
- "group-data-[collapsible=icon]:hidden group-data-[hover-expanded=true]:!flex",
3133
- className
3134
- ),
3135
- ...props
3136
- }
3137
- );
3138
- });
3139
- exports.SidebarMenuSub.displayName = "SidebarMenuSub";
3140
- exports.SidebarMenuSubItem = React10__namespace.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("li", { ref, ...props }));
3141
- exports.SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
3142
- exports.SidebarMenuSubButton = React10__namespace.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
3143
- const Comp = asChild ? reactSlot.Slot : "a";
3144
- return /* @__PURE__ */ jsxRuntime.jsx(
3145
- Comp,
3146
- {
3147
- ref,
3148
- "data-sidebar": "menu-sub-button",
3149
- "data-size": size,
3150
- "data-active": isActive,
3151
- className: cn(
3152
- "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 text-xs",
3153
- "data-[active=true]:bg-primary/15 data-[active=true]:!text-primary data-[active=true]:font-bold",
3154
- size === "sm" && "text-xs",
3155
- size === "md" && "text-sm",
3156
- className
3157
- ),
3158
- ...props
3159
- }
3160
- );
3161
- });
3162
- exports.SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
3163
- }
3164
- });
3165
- function Spinner({ size = "md", className }) {
3166
- const sizeClasses = {
3167
- sm: "h-4 w-4",
3168
- md: "h-6 w-6",
3169
- lg: "h-8 w-8"
3170
- };
3171
- return /* @__PURE__ */ jsxRuntime.jsx(
3172
- "div",
3173
- {
3174
- className: cn(
3175
- "animate-spin rounded-full border-2 border-current border-t-transparent",
3176
- sizeClasses[size],
3177
- className
3178
- )
3179
- }
3180
- );
3181
- }
3182
- function Skeleton({
3183
- className,
3184
- ...props
3185
- }) {
3186
- return /* @__PURE__ */ jsxRuntime.jsx(
3187
- "div",
3188
- {
3189
- className: cn("animate-pulse rounded-md bg-muted", className),
3190
- ...props
3191
- }
3192
- );
3193
- }
3194
- exports.Textarea = void 0; exports.ButtonLoading = void 0;
3195
- var init_primitives = __esm({
3196
- "src/ui/primitives/index.tsx"() {
3197
- init_utils();
3198
- init_button();
3199
- init_badge();
3200
- init_button();
3201
- init_input();
3202
- init_checkbox();
3203
- init_card();
3204
- init_separator();
3205
- init_card();
3206
- init_table();
3207
- init_dropdown_menu();
3208
- init_dialog();
3209
- init_tabs();
3210
- init_breadcrumb();
3211
- init_keyboard();
3212
- init_pagination();
3213
- init_status_badge();
3214
- init_sidebar();
3215
- init_popover();
3216
- init_scroll_area();
3217
- init_calendar();
3218
- init_resizable();
3219
- init_slider();
3220
- init_switch();
3221
- init_tooltip();
3222
- init_select();
3223
- init_menubar();
3224
- init_navigation_menu();
3225
- init_toggle();
3226
- init_toggle_group();
3227
- init_combobox();
3228
- init_label();
3229
- exports.Textarea = React10__namespace.forwardRef(
3230
- ({ className, ...props }, ref) => {
3231
- return /* @__PURE__ */ jsxRuntime.jsx(
3232
- "textarea",
3233
- {
3234
- className: cn(
3235
- "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
3236
- className
3237
- ),
3238
- ref,
3239
- ...props
3240
- }
3241
- );
3242
- }
3243
- );
3244
- exports.Textarea.displayName = "Textarea";
3245
- exports.ButtonLoading = React10__namespace.forwardRef(({ className, isLoading, children, disabled, ...props }, ref) => {
3246
- return /* @__PURE__ */ jsxRuntime.jsxs(
3247
- exports.Button,
3248
- {
3249
- className: cn("gap-2", className),
3250
- disabled: isLoading || disabled,
3251
- ref,
3252
- ...props,
3253
- children: [
3254
- isLoading && /* @__PURE__ */ jsxRuntime.jsx(Spinner, { size: "sm" }),
3255
- children
3256
- ]
3257
- }
3258
- );
3259
- });
3260
- exports.ButtonLoading.displayName = "ButtonLoading";
3261
- }
3262
- });
3263
- init_primitives();
3264
-
3265
- exports.Badge = Badge;
3266
- exports.Breadcrumb = Breadcrumb;
3267
- exports.BreadcrumbEllipsis = BreadcrumbEllipsis;
3268
- exports.BreadcrumbItem = BreadcrumbItem;
3269
- exports.BreadcrumbLink = BreadcrumbLink;
3270
- exports.BreadcrumbList = BreadcrumbList;
3271
- exports.BreadcrumbPage = BreadcrumbPage;
3272
- exports.BreadcrumbSeparator = BreadcrumbSeparator;
3273
- exports.Calendar = Calendar;
3274
- exports.Combobox = Combobox;
3275
- exports.DropdownMenu = DropdownMenu;
3276
- exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem;
3277
- exports.DropdownMenuContent = DropdownMenuContent;
3278
- exports.DropdownMenuGroup = DropdownMenuGroup;
3279
- exports.DropdownMenuItem = DropdownMenuItem;
3280
- exports.DropdownMenuLabel = DropdownMenuLabel;
3281
- exports.DropdownMenuPortal = DropdownMenuPortal;
3282
- exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup;
3283
- exports.DropdownMenuRadioItem = DropdownMenuRadioItem;
3284
- exports.DropdownMenuSeparator = DropdownMenuSeparator;
3285
- exports.DropdownMenuShortcut = DropdownMenuShortcut;
3286
- exports.DropdownMenuSub = DropdownMenuSub;
3287
- exports.DropdownMenuSubContent = DropdownMenuSubContent;
3288
- exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger;
3289
- exports.DropdownMenuTrigger = DropdownMenuTrigger;
3290
- exports.Keyboard = Keyboard;
3291
- exports.Menubar = Menubar;
3292
- exports.MenubarCheckboxItem = MenubarCheckboxItem;
3293
- exports.MenubarContent = MenubarContent;
3294
- exports.MenubarGroup = MenubarGroup;
3295
- exports.MenubarItem = MenubarItem;
3296
- exports.MenubarLabel = MenubarLabel;
3297
- exports.MenubarMenu = MenubarMenu;
3298
- exports.MenubarPortal = MenubarPortal;
3299
- exports.MenubarRadioGroup = MenubarRadioGroup;
3300
- exports.MenubarRadioItem = MenubarRadioItem;
3301
- exports.MenubarSeparator = MenubarSeparator;
3302
- exports.MenubarShortcut = MenubarShortcut;
3303
- exports.MenubarSub = MenubarSub;
3304
- exports.MenubarSubContent = MenubarSubContent;
3305
- exports.MenubarSubTrigger = MenubarSubTrigger;
3306
- exports.MenubarTrigger = MenubarTrigger;
3307
- exports.NavigationMenu = NavigationMenu;
3308
- exports.NavigationMenuContent = NavigationMenuContent;
3309
- exports.NavigationMenuIndicator = NavigationMenuIndicator;
3310
- exports.NavigationMenuItem = NavigationMenuItem;
3311
- exports.NavigationMenuLink = NavigationMenuLink;
3312
- exports.NavigationMenuList = NavigationMenuList;
3313
- exports.NavigationMenuTrigger = NavigationMenuTrigger;
3314
- exports.NavigationMenuViewport = NavigationMenuViewport;
3315
- exports.Pagination = Pagination;
3316
- exports.PaginationContent = PaginationContent;
3317
- exports.PaginationEllipsis = PaginationEllipsis;
3318
- exports.PaginationItem = PaginationItem;
3319
- exports.PaginationLink = PaginationLink;
3320
- exports.PaginationNext = PaginationNext;
3321
- exports.PaginationPrevious = PaginationPrevious;
3322
- exports.Popover = Popover;
3323
- exports.PopoverAnchor = PopoverAnchor;
3324
- exports.PopoverContent = PopoverContent;
3325
- exports.PopoverTrigger = PopoverTrigger;
3326
- exports.ResizableHandle = ResizableHandle;
3327
- exports.ResizablePanel = ResizablePanel;
3328
- exports.ResizablePanelGroup = ResizablePanelGroup;
3329
- exports.ScrollArea = ScrollArea;
3330
- exports.ScrollBar = ScrollBar;
3331
- exports.Select = Select;
3332
- exports.SelectContent = SelectContent;
3333
- exports.SelectGroup = SelectGroup;
3334
- exports.SelectItem = SelectItem;
3335
- exports.SelectLabel = SelectLabel;
3336
- exports.SelectScrollDownButton = SelectScrollDownButton;
3337
- exports.SelectScrollUpButton = SelectScrollUpButton;
3338
- exports.SelectSeparator = SelectSeparator;
3339
- exports.SelectTrigger = SelectTrigger;
3340
- exports.SelectValue = SelectValue;
3341
- exports.SeparatorWithText = SeparatorWithText;
3342
- exports.Skeleton = Skeleton;
3343
- exports.Slider = Slider;
3344
- exports.Spinner = Spinner;
3345
- exports.StatusBadge = StatusBadge;
3346
- exports.Switch = Switch;
3347
- exports.Toggle = Toggle;
3348
- exports.ToggleGroup = ToggleGroup;
3349
- exports.ToggleGroupItem = ToggleGroupItem;
3350
- exports.Tooltip = Tooltip;
3351
- exports.TooltipContent = TooltipContent;
3352
- exports.TooltipProvider = TooltipProvider;
3353
- exports.TooltipTrigger = TooltipTrigger;
3354
- exports.useSidebar = useSidebar;
3355
- //# sourceMappingURL=primitives.js.map
3356
- //# sourceMappingURL=primitives.js.map