@alkimi.org/ui-kit 0.1.21 → 0.1.23
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.
- package/README.github.md +181 -0
- package/dist/{chunk-LX3KCZOW.js → chunk-54IB54OZ.js} +2 -2
- package/dist/{chunk-LX3KCZOW.js.map → chunk-54IB54OZ.js.map} +1 -1
- package/dist/chunk-5L5DM2X5.js +3 -0
- package/dist/chunk-5L5DM2X5.js.map +1 -0
- package/dist/chunk-6BEVEBGO.mjs +3 -0
- package/dist/chunk-6BEVEBGO.mjs.map +1 -0
- package/dist/chunk-73BUNE7H.mjs +3 -0
- package/dist/chunk-73BUNE7H.mjs.map +1 -0
- package/dist/chunk-7SOZ6MOV.js +3 -0
- package/dist/chunk-7SOZ6MOV.js.map +1 -0
- package/dist/chunk-C5AZO7RU.js +3 -0
- package/dist/chunk-C5AZO7RU.js.map +1 -0
- package/dist/chunk-CNRZOMR4.mjs +3 -0
- package/dist/chunk-CNRZOMR4.mjs.map +1 -0
- package/dist/chunk-HQ6XIPS3.mjs +3 -0
- package/dist/chunk-HQ6XIPS3.mjs.map +1 -0
- package/dist/{chunk-V5ORUPUF.mjs → chunk-HQUUCCZL.mjs} +2 -2
- package/dist/chunk-HQUUCCZL.mjs.map +1 -0
- package/dist/chunk-NCJ5RAGG.js +3 -0
- package/dist/chunk-NCJ5RAGG.js.map +1 -0
- package/dist/chunk-NKYU43T6.js +3 -0
- package/dist/chunk-NKYU43T6.js.map +1 -0
- package/dist/chunk-PY6WBMT2.mjs +3 -0
- package/dist/chunk-PY6WBMT2.mjs.map +1 -0
- package/dist/chunk-QZ2ZUF7Q.js +3 -0
- package/dist/chunk-QZ2ZUF7Q.js.map +1 -0
- package/dist/chunk-YBV4CPVD.mjs +3 -0
- package/dist/chunk-YBV4CPVD.mjs.map +1 -0
- package/dist/components/button.js +1 -1
- package/dist/components/button.mjs +1 -1
- package/dist/components/input.d.mts +7 -0
- package/dist/components/input.d.ts +7 -0
- package/dist/components/input.js +3 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/input.mjs +3 -0
- package/dist/components/input.mjs.map +1 -0
- package/dist/components/separator.d.mts +6 -0
- package/dist/components/separator.d.ts +6 -0
- package/dist/components/separator.js +3 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/separator.mjs +3 -0
- package/dist/components/separator.mjs.map +1 -0
- package/dist/components/sheet.d.mts +29 -0
- package/dist/components/sheet.d.ts +29 -0
- package/dist/components/sheet.js +3 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/sheet.mjs +3 -0
- package/dist/components/sheet.mjs.map +1 -0
- package/dist/components/sidebar.d.mts +74 -0
- package/dist/components/sidebar.d.ts +74 -0
- package/dist/components/sidebar.js +3 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/sidebar.mjs +3 -0
- package/dist/components/sidebar.mjs.map +1 -0
- package/dist/components/skeleton.d.mts +5 -0
- package/dist/components/skeleton.d.ts +5 -0
- package/dist/components/skeleton.js +3 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/skeleton.mjs +3 -0
- package/dist/components/skeleton.mjs.map +1 -0
- package/dist/components/tooltip.d.mts +9 -0
- package/dist/components/tooltip.d.ts +9 -0
- package/dist/components/tooltip.js +3 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/components/tooltip.mjs +3 -0
- package/dist/components/tooltip.mjs.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +12 -1
- package/dist/index.d.ts +12 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/dist/styles.d.mts +2 -0
- package/dist/styles.d.ts +2 -0
- package/package.json +7 -2
- package/dist/chunk-V5ORUPUF.mjs.map +0 -1
package/README.github.md
CHANGED
|
@@ -247,6 +247,187 @@ Make sure to include your custom font using `@font-face` or a web font service l
|
|
|
247
247
|
}
|
|
248
248
|
```
|
|
249
249
|
|
|
250
|
+
## Available Components
|
|
251
|
+
|
|
252
|
+
### Sidebar
|
|
253
|
+
|
|
254
|
+
A collapsible sidebar component with responsive design and keyboard shortcuts. The sidebar supports multiple variants, collapsible modes, and includes all necessary sub-components for building navigation interfaces.
|
|
255
|
+
|
|
256
|
+
#### Basic Usage
|
|
257
|
+
|
|
258
|
+
```tsx
|
|
259
|
+
import {
|
|
260
|
+
Sidebar,
|
|
261
|
+
SidebarContent,
|
|
262
|
+
SidebarHeader,
|
|
263
|
+
SidebarProvider,
|
|
264
|
+
SidebarInset,
|
|
265
|
+
SidebarTrigger,
|
|
266
|
+
} from "@alkimi.org/ui-kit"
|
|
267
|
+
|
|
268
|
+
function App() {
|
|
269
|
+
return (
|
|
270
|
+
<SidebarProvider>
|
|
271
|
+
<Sidebar collapsible="icon">
|
|
272
|
+
<SidebarHeader showTrigger>
|
|
273
|
+
<h2>My App</h2>
|
|
274
|
+
</SidebarHeader>
|
|
275
|
+
<SidebarContent>
|
|
276
|
+
{/* Your sidebar content */}
|
|
277
|
+
</SidebarContent>
|
|
278
|
+
</Sidebar>
|
|
279
|
+
<SidebarInset>
|
|
280
|
+
<header>
|
|
281
|
+
<SidebarTrigger />
|
|
282
|
+
<h1>Main Content Area</h1>
|
|
283
|
+
</header>
|
|
284
|
+
{/* Your main content */}
|
|
285
|
+
</SidebarInset>
|
|
286
|
+
</SidebarProvider>
|
|
287
|
+
)
|
|
288
|
+
}
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
#### Components
|
|
292
|
+
|
|
293
|
+
##### SidebarProvider
|
|
294
|
+
|
|
295
|
+
Wraps your entire layout and provides sidebar context.
|
|
296
|
+
|
|
297
|
+
**Props:**
|
|
298
|
+
- `defaultOpen?: boolean` - Initial sidebar state (default: `true`)
|
|
299
|
+
- `open?: boolean` - Controlled sidebar state
|
|
300
|
+
- `onOpenChange?: (open: boolean) => void` - Callback when sidebar state changes
|
|
301
|
+
|
|
302
|
+
##### Sidebar
|
|
303
|
+
|
|
304
|
+
The main sidebar container.
|
|
305
|
+
|
|
306
|
+
**Props:**
|
|
307
|
+
- `side?: "left" | "right"` - Sidebar position (default: `"left"`)
|
|
308
|
+
- `variant?: "sidebar" | "floating" | "inset"` - Visual style (default: `"sidebar"`)
|
|
309
|
+
- `collapsible?: "offcanvas" | "icon" | "none"` - Collapse behavior (default: `"offcanvas"`)
|
|
310
|
+
- `offcanvas` - Sidebar slides completely off-screen
|
|
311
|
+
- `icon` - Sidebar collapses to icon-only mode
|
|
312
|
+
- `none` - Sidebar is always visible and non-collapsible
|
|
313
|
+
|
|
314
|
+
##### SidebarHeader
|
|
315
|
+
|
|
316
|
+
Header section of the sidebar.
|
|
317
|
+
|
|
318
|
+
**Props:**
|
|
319
|
+
- `showTrigger?: boolean` - Show toggle button in header (default: `false`)
|
|
320
|
+
|
|
321
|
+
##### SidebarContent
|
|
322
|
+
|
|
323
|
+
Scrollable content area of the sidebar.
|
|
324
|
+
|
|
325
|
+
##### SidebarFooter
|
|
326
|
+
|
|
327
|
+
Footer section of the sidebar.
|
|
328
|
+
|
|
329
|
+
##### SidebarTrigger
|
|
330
|
+
|
|
331
|
+
Button to toggle sidebar visibility. Automatically shows appropriate icons for mobile and desktop.
|
|
332
|
+
|
|
333
|
+
##### SidebarInset
|
|
334
|
+
|
|
335
|
+
Main content area wrapper that adapts to sidebar state.
|
|
336
|
+
|
|
337
|
+
##### Navigation Components
|
|
338
|
+
|
|
339
|
+
Build navigation menus using these components:
|
|
340
|
+
|
|
341
|
+
```tsx
|
|
342
|
+
import {
|
|
343
|
+
SidebarMenu,
|
|
344
|
+
SidebarMenuItem,
|
|
345
|
+
SidebarMenuButton,
|
|
346
|
+
SidebarGroup,
|
|
347
|
+
SidebarGroupLabel,
|
|
348
|
+
SidebarGroupContent,
|
|
349
|
+
} from "@alkimi.org/ui-kit"
|
|
350
|
+
|
|
351
|
+
<SidebarGroup>
|
|
352
|
+
<SidebarGroupLabel>Navigation</SidebarGroupLabel>
|
|
353
|
+
<SidebarGroupContent>
|
|
354
|
+
<SidebarMenu>
|
|
355
|
+
<SidebarMenuItem>
|
|
356
|
+
<SidebarMenuButton tooltip="Home">
|
|
357
|
+
<Home />
|
|
358
|
+
<span>Home</span>
|
|
359
|
+
</SidebarMenuButton>
|
|
360
|
+
</SidebarMenuItem>
|
|
361
|
+
</SidebarMenu>
|
|
362
|
+
</SidebarGroupContent>
|
|
363
|
+
</SidebarGroup>
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
**Available Components:**
|
|
367
|
+
- `SidebarGroup` - Groups related menu items
|
|
368
|
+
- `SidebarGroupLabel` - Label for a group
|
|
369
|
+
- `SidebarGroupContent` - Container for group items
|
|
370
|
+
- `SidebarGroupAction` - Action button for a group
|
|
371
|
+
- `SidebarMenu` - Menu list container
|
|
372
|
+
- `SidebarMenuItem` - Individual menu item
|
|
373
|
+
- `SidebarMenuButton` - Interactive menu button with tooltip support
|
|
374
|
+
- `SidebarMenuAction` - Action button for menu items
|
|
375
|
+
- `SidebarMenuBadge` - Badge/count indicator
|
|
376
|
+
- `SidebarMenuSub` - Submenu container
|
|
377
|
+
- `SidebarMenuSubItem` - Submenu item
|
|
378
|
+
- `SidebarMenuSubButton` - Submenu button
|
|
379
|
+
|
|
380
|
+
##### SidebarMenuButton Props
|
|
381
|
+
|
|
382
|
+
- `variant?: "default" | "outline"` - Visual style
|
|
383
|
+
- `size?: "default" | "sm" | "lg"` - Button size
|
|
384
|
+
- `isActive?: boolean` - Highlight as active
|
|
385
|
+
- `tooltip?: string | TooltipProps` - Tooltip text or props
|
|
386
|
+
- `asChild?: boolean` - Render as child component (e.g., for links)
|
|
387
|
+
|
|
388
|
+
##### Utility Components
|
|
389
|
+
|
|
390
|
+
- `SidebarInput` - Styled input for sidebar (e.g., search)
|
|
391
|
+
- `SidebarSeparator` - Visual separator
|
|
392
|
+
- `SidebarRail` - Clickable rail for toggling sidebar
|
|
393
|
+
- `SidebarMenuSkeleton` - Loading skeleton for menu items
|
|
394
|
+
|
|
395
|
+
##### useSidebar Hook
|
|
396
|
+
|
|
397
|
+
Access sidebar state and controls from any component within `SidebarProvider`:
|
|
398
|
+
|
|
399
|
+
```tsx
|
|
400
|
+
import { useSidebar } from "@alkimi.org/ui-kit"
|
|
401
|
+
|
|
402
|
+
function MyComponent() {
|
|
403
|
+
const { state, open, toggleSidebar, isMobile } = useSidebar()
|
|
404
|
+
|
|
405
|
+
return (
|
|
406
|
+
<div>
|
|
407
|
+
Sidebar is {state} {/* "expanded" or "collapsed" */}
|
|
408
|
+
</div>
|
|
409
|
+
)
|
|
410
|
+
}
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
**Returns:**
|
|
414
|
+
- `state: "expanded" | "collapsed"` - Current sidebar state
|
|
415
|
+
- `open: boolean` - Whether sidebar is open (desktop)
|
|
416
|
+
- `setOpen: (open: boolean) => void` - Set sidebar state
|
|
417
|
+
- `openMobile: boolean` - Whether sidebar is open (mobile)
|
|
418
|
+
- `setOpenMobile: (open: boolean) => void` - Set mobile sidebar state
|
|
419
|
+
- `isMobile: boolean` - Whether viewing on mobile
|
|
420
|
+
- `toggleSidebar: () => void` - Toggle sidebar visibility
|
|
421
|
+
|
|
422
|
+
#### Keyboard Shortcuts
|
|
423
|
+
|
|
424
|
+
- `Cmd+B` (Mac) or `Ctrl+B` (Windows/Linux) - Toggle sidebar
|
|
425
|
+
|
|
426
|
+
#### Responsive Behavior
|
|
427
|
+
|
|
428
|
+
- **Desktop**: Sidebar is fixed and collapsible based on the `collapsible` prop
|
|
429
|
+
- **Mobile**: Sidebar automatically becomes a slide-out sheet overlay
|
|
430
|
+
|
|
250
431
|
## Usage
|
|
251
432
|
|
|
252
433
|
You can import components in two ways:
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }"use client";
|
|
2
|
-
var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var a = _interopRequireWildcard(_react);var _reactslot = require('@radix-ui/react-slot');var _classvarianceauthority = require('class-variance-authority');var _jsxruntime = require('react/jsx-runtime');var p=_classvarianceauthority.cva.call(void 0, "inline-flex items-center cursor-pointer justify-center whitespace-nowrap rounded-3xl 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",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-primary-accent hover:bg-muted",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 text-
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var a = _interopRequireWildcard(_react);var _reactslot = require('@radix-ui/react-slot');var _classvarianceauthority = require('class-variance-authority');var _jsxruntime = require('react/jsx-runtime');var p=_classvarianceauthority.cva.call(void 0, "inline-flex items-center cursor-pointer justify-center whitespace-nowrap rounded-3xl 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",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-primary-accent hover:bg-muted",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 text-sm",sm:"h-8 text-xs px-3 py-2",lg:"h-10 px-8 py-2 text-sm",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),m= exports.b =a.forwardRef(({className:i,variant:s,size:d,asChild:c=!1,loading:e=!1,icon:r,...t},u)=>_jsxruntime.jsxs.call(void 0, c?_reactslot.Slot:"button",{className:_chunkFUYXCJOQjs.a.call(void 0, p({variant:s,size:d,className:i})),ref:u,disabled:e||t.disabled,...t,children:[e&&_jsxruntime.jsx.call(void 0, "div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border border-primary-foreground border-t-transparent"}),!e&&r&&_jsxruntime.jsx.call(void 0, "span",{className:"mr-2",children:r}),t.children]}));m.displayName="Button";exports.a = p; exports.b = m;
|
|
3
|
+
//# sourceMappingURL=chunk-54IB54OZ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-54IB54OZ.js","../src/components/button.tsx"],"names":["buttonVariants","cva","Button","className","variant","size","asChild","loading","icon","props","ref","jsxs","Slot","cn","jsx"],"mappings":"AAAA,uWAAY;AACZ,sDAAuC,uECDhB,iDACF,kEACkB,+CAuDjC,IAnDAA,CAAAA,CAAiBC,yCAAAA,gSACrB,CACA,CACE,QAAA,CAAU,CACR,OAAA,CAAS,CACP,OAAA,CAAS,wDAAA,CACT,WAAA,CACE,oEAAA,CACF,OAAA,CACE,gFAAA,CACF,SAAA,CAAW,iDAAA,CACX,KAAA,CAAO,8CAAA,CACP,IAAA,CAAM,iDACR,CAAA,CACA,IAAA,CAAM,CACJ,OAAA,CAAS,uBAAA,CACT,EAAA,CAAI,uBAAA,CACJ,EAAA,CAAI,wBAAA,CACJ,IAAA,CAAM,SACR,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,SAAA,CACT,IAAA,CAAM,SACR,CACF,CACF,CAAA,CAUMC,CAAAA,aAAe,CAAA,CAAA,UAAA,CACnB,CACE,CACE,SAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,CAAA,CAAA,CACV,OAAA,CAAAC,CAAAA,CAAU,CAAA,CAAA,CACV,IAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CACAC,CAAAA,CAAAA,EAIEC,8BAAAA,CAFWL,CAAUM,eAAAA,CAAO,QAAA,CAE3B,CACC,SAAA,CAAWC,gCAAAA,CAAGb,CAAe,CAAE,OAAA,CAAAI,CAAAA,CAAS,IAAA,CAAAC,CAAAA,CAAM,SAAA,CAAAF,CAAU,CAAC,CAAC,CAAA,CAC1D,GAAA,CAAKO,CAAAA,CACL,QAAA,CAAUH,CAAAA,EAAWE,CAAAA,CAAM,QAAA,CAC1B,GAAGA,CAAAA,CAEH,QAAA,CAAA,CAAAF,CAAAA,EACCO,6BAAAA,KAAC,CAAA,CAAI,SAAA,CAAU,8FAAA,CAA+F,CAAA,CAE/G,CAACP,CAAAA,EAAWC,CAAAA,EAAQM,6BAAAA,MAAC,CAAA,CAAK,SAAA,CAAU,MAAA,CAAQ,QAAA,CAAAN,CAAAA,CAAK,CAAA,CACjDC,CAAAA,CAAM,QAAA,CAAA,CACT,CAGN,CAAA,CACAP,CAAAA,CAAO,WAAA,CAAc,QAAA,CAAA,6BAAA","file":"/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-54IB54OZ.js","sourcesContent":[null,"import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center cursor-pointer justify-center whitespace-nowrap rounded-3xl 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\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-primary-accent hover:bg-muted\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 text-sm\",\n sm: \"h-8 text-xs px-3 py-2\",\n lg: \"h-10 px-8 py-2 text-sm\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n loading?: boolean\n icon?: React.ReactNode\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n loading = false,\n icon,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n disabled={loading || props.disabled}\n {...props}\n >\n {loading && (\n <div className=\"mr-2 h-4 w-4 animate-spin rounded-full border border-primary-foreground border-t-transparent\" />\n )}\n {!loading && icon && <span className=\"mr-2\">{icon}</span>}\n {props.children}\n </Comp>\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
2
|
+
var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _jsxruntime = require('react/jsx-runtime');function d({className:t,...n}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunkFUYXCJOQjs.a.call(void 0, "animate-pulse rounded-md bg-muted",t),...n})}exports.a = d;
|
|
3
|
+
//# sourceMappingURL=chunk-5L5DM2X5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-5L5DM2X5.js","../src/components/skeleton.tsx"],"names":["Skeleton","className","props","jsx","cn"],"mappings":"AAAA,qFAAY;AACZ,sDAAuC,+CCMnC,SALKA,CAAAA,CAAS,CAChB,SAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAAyC,CACvC,OACEC,6BAAAA,KAAC,CAAA,CACC,SAAA,CAAWC,gCAAAA,mCAAG,CAAqCH,CAAS,CAAA,CAC3D,GAAGC,CAAAA,CACN,CAEJ,CAAA,cAAA","file":"/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-5L5DM2X5.js","sourcesContent":[null,"import { cn } from \"@/lib/utils\"\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{a as e}from"./chunk-S5TKCF6T.mjs";import*as t from"react";import{jsx as u}from"react/jsx-runtime";var s=t.forwardRef(({className:r,type:o,...n},i)=>u("input",{type:o,className:e("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",r),ref:i,...n}));s.displayName="Input";export{s as a};
|
|
3
|
+
//# sourceMappingURL=chunk-6BEVEBGO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/input.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"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\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n"],"mappings":";yCAAA,UAAYA,MAAW,QAUjB,cAAAC,MAAA,oBAHN,IAAMC,EAAc,aAClB,CAAC,CAAE,UAAAC,EAAW,KAAAC,EAAM,GAAGC,CAAM,EAAGC,IAE5BL,EAAC,SACC,KAAMG,EACN,UAAWG,EACT,+VACAJ,CACF,EACA,IAAKG,EACJ,GAAGD,EACN,CAGN,EACAH,EAAM,YAAc","names":["React","jsx","Input","className","type","props","ref","cn"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{a as s}from"./chunk-S5TKCF6T.mjs";import*as r from"react";import*as e from"@radix-ui/react-dialog";import{cva as f}from"class-variance-authority";import{X as c}from"lucide-react";import{jsx as a,jsxs as n}from"react/jsx-runtime";var x=e.Root,N=e.Trigger,C=e.Close,p=e.Portal,m=r.forwardRef(({className:t,...i},o)=>a(e.Overlay,{className:s("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",t),...i,ref:o}));m.displayName=e.Overlay.displayName;var h=f("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-200 data-[state=open]:duration-500",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),S=r.forwardRef(({side:t="right",className:i,children:o,...l},d)=>n(p,{children:[a(m,{}),n(e.Content,{ref:d,className:s(h({side:t}),i),...l,children:[o,n(e.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-secondary",children:[a(c,{className:"h-4 w-4"}),a("span",{className:"sr-only",children:"Close"})]})]})]}));S.displayName=e.Content.displayName;var v=({className:t,...i})=>a("div",{className:s("flex flex-col space-y-2 text-center sm:text-left",t),...i});v.displayName="SheetHeader";var P=({className:t,...i})=>a("div",{className:s("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...i});P.displayName="SheetFooter";var y=r.forwardRef(({className:t,...i},o)=>a(e.Title,{ref:o,className:s("text-lg font-semibold text-foreground",t),...i}));y.displayName=e.Title.displayName;var u=r.forwardRef(({className:t,...i},o)=>a(e.Description,{ref:o,className:s("text-sm text-muted-foreground",t),...i}));u.displayName=e.Description.displayName;export{x as a,N as b,C as c,p as d,m as e,S as f,v as g,P as h,y as i,u as j};
|
|
3
|
+
//# sourceMappingURL=chunk-73BUNE7H.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/sheet.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n \"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\",\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-200 data-[state=open]:duration-500\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n)\n\ninterface SheetContentProps\n extends\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n <SheetPrimitive.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-secondary\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-foreground\", className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"],"mappings":";yCAEA,UAAYA,MAAW,QACvB,UAAYC,MAAoB,yBAChC,OAAS,OAAAC,MAA8B,2BACvC,OAAS,KAAAC,MAAS,eAgBhB,cAAAC,EA+CI,QAAAC,MA/CJ,oBAZF,IAAMC,EAAuB,OAEvBC,EAA8B,UAE9BC,EAA4B,QAE5BC,EAA6B,SAE7BC,EAAqB,aAGzB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAM,EAAGC,IAC1BT,EAAgB,UAAf,CACC,UAAWU,EACT,0JACAH,CACF,EACC,GAAGC,EACJ,IAAKC,EACP,CACD,EACDH,EAAa,YAA6B,UAAQ,YAElD,IAAMK,EAAgBC,EACpB,mMACA,CACE,SAAU,CACR,KAAM,CACJ,IAAK,oGACL,OACE,6GACF,KAAM,gIACN,MACE,mIACJ,CACF,EACA,gBAAiB,CACf,KAAM,OACR,CACF,CACF,EAOMC,EAAqB,aAGzB,CAAC,CAAE,KAAAC,EAAO,QAAS,UAAAP,EAAW,SAAAQ,EAAU,GAAGP,CAAM,EAAGC,IACpDR,EAACI,EAAA,CACC,UAAAL,EAACM,EAAA,EAAa,EACdL,EAAgB,UAAf,CACC,IAAKQ,EACL,UAAWC,EAAGC,EAAc,CAAE,KAAAG,CAAK,CAAC,EAAGP,CAAS,EAC/C,GAAGC,EAEH,UAAAO,EACDd,EAAgB,QAAf,CAAqB,UAAU,2OAC9B,UAAAD,EAACgB,EAAA,CAAE,UAAU,UAAU,EACvBhB,EAAC,QAAK,UAAU,UAAU,iBAAK,GACjC,GACF,GACF,CACD,EACDa,EAAa,YAA6B,UAAQ,YAElD,IAAMI,EAAc,CAAC,CACnB,UAAAV,EACA,GAAGC,CACL,IACER,EAAC,OACC,UAAWU,EACT,mDACAH,CACF,EACC,GAAGC,EACN,EAEFS,EAAY,YAAc,cAE1B,IAAMC,EAAc,CAAC,CACnB,UAAAX,EACA,GAAGC,CACL,IACER,EAAC,OACC,UAAWU,EACT,gEACAH,CACF,EACC,GAAGC,EACN,EAEFU,EAAY,YAAc,cAE1B,IAAMC,EAAmB,aAGvB,CAAC,CAAE,UAAAZ,EAAW,GAAGC,CAAM,EAAGC,IAC1BT,EAAgB,QAAf,CACC,IAAKS,EACL,UAAWC,EAAG,wCAAyCH,CAAS,EAC/D,GAAGC,EACN,CACD,EACDW,EAAW,YAA6B,QAAM,YAE9C,IAAMC,EAAyB,aAG7B,CAAC,CAAE,UAAAb,EAAW,GAAGC,CAAM,EAAGC,IAC1BT,EAAgB,cAAf,CACC,IAAKS,EACL,UAAWC,EAAG,gCAAiCH,CAAS,EACvD,GAAGC,EACN,CACD,EACDY,EAAiB,YAA6B,cAAY","names":["React","SheetPrimitive","cva","X","jsx","jsxs","Sheet","SheetTrigger","SheetClose","SheetPortal","SheetOverlay","className","props","ref","cn","sheetVariants","cva","SheetContent","side","children","X","SheetHeader","SheetFooter","SheetTitle","SheetDescription"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }"use client";
|
|
2
|
+
var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var e = _interopRequireWildcard(_react);var _reactseparator = require('@radix-ui/react-separator'); var o = _interopRequireWildcard(_reactseparator);var _jsxruntime = require('react/jsx-runtime');var f=e.forwardRef(({className:a,orientation:r="horizontal",decorative:i=!0,...p},m)=>_jsxruntime.jsx.call(void 0, o.Root,{ref:m,decorative:i,orientation:r,className:_chunkFUYXCJOQjs.a.call(void 0, "shrink-0 bg-border",r==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",a),...p}));f.displayName=o.Root.displayName;exports.a = f;
|
|
3
|
+
//# sourceMappingURL=chunk-7SOZ6MOV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-7SOZ6MOV.js","../src/components/separator.tsx"],"names":["Separator","className","orientation","decorative","props","ref","jsx","cn"],"mappings":"AAAA,uWAAY;AACZ,sDAAuC,uECChB,6GACa,+CAYhC,IAREA,CAAAA,CAAkB,CAAA,CAAA,UAAA,CAItB,CACE,CAAE,SAAA,CAAAC,CAAAA,CAAW,WAAA,CAAAC,CAAAA,CAAc,YAAA,CAAc,UAAA,CAAAC,CAAAA,CAAa,CAAA,CAAA,CAAM,GAAGC,CAAM,CAAA,CACrEC,CAAAA,CAAAA,EAEAC,6BAAAA,CAAoB,CAAA,IAAA,CAAnB,CACC,GAAA,CAAKD,CAAAA,CACL,UAAA,CAAYF,CAAAA,CACZ,WAAA,CAAaD,CAAAA,CACb,SAAA,CAAWK,gCAAAA,oBACT,CACAL,CAAAA,GAAgB,YAAA,CAAe,gBAAA,CAAmB,gBAAA,CAClDD,CACF,CAAA,CACC,GAAGG,CAAAA,CACN,CAEJ,CAAA,CACAJ,CAAAA,CAAU,WAAA,CAAiC,CAAA,CAAA,IAAA,CAAK,WAAA,CAAA,cAAA","file":"/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-7SOZ6MOV.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }"use client";
|
|
2
|
+
var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var i = _interopRequireWildcard(_react);var _reacttooltip = require('@radix-ui/react-tooltip'); var o = _interopRequireWildcard(_reacttooltip);var _jsxruntime = require('react/jsx-runtime');var s=o.Provider,l= exports.b =o.Root,f= exports.c =o.Trigger,m= exports.d =i.forwardRef(({className:e,sideOffset:r=4,...a},d)=>_jsxruntime.jsx.call(void 0, o.Content,{ref:d,sideOffset:r,className:_chunkFUYXCJOQjs.a.call(void 0, "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md 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",e),...a}));m.displayName=o.Content.displayName;exports.a = s; exports.b = l; exports.c = f; exports.d = m;
|
|
3
|
+
//# sourceMappingURL=chunk-C5AZO7RU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-C5AZO7RU.js","../src/components/tooltip.tsx"],"names":["TooltipProvider","Tooltip","TooltipTrigger","TooltipContent","className","sideOffset","props","ref","jsx","cn"],"mappings":"AAAA,uWAAY;AACZ,sDAAuC,uECChB,uGACW,+CAchC,IAVIA,CAAAA,CAAmC,CAAA,CAAA,QAAA,CAEnCC,CAAAA,aAA2B,CAAA,CAAA,IAAA,CAE3BC,CAAAA,aAAkC,CAAA,CAAA,OAAA,CAElCC,CAAAA,aAAuB,CAAA,CAAA,UAAA,CAG3B,CAAC,CAAE,SAAA,CAAAC,CAAAA,CAAW,UAAA,CAAAC,CAAAA,CAAa,CAAA,CAAG,GAAGC,CAAM,CAAA,CAAGC,CAAAA,CAAAA,EAC1CC,6BAAAA,CAAkB,CAAA,OAAA,CAAjB,CACC,GAAA,CAAKD,CAAAA,CACL,UAAA,CAAYF,CAAAA,CACZ,SAAA,CAAWI,gCAAAA,oYACT,CACAL,CACF,CAAA,CACC,GAAGE,CAAAA,CACN,CACD,CAAA,CACDH,CAAAA,CAAe,WAAA,CAA+B,CAAA,CAAA,OAAA,CAAQ,WAAA,CAAA,2DAAA","file":"/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-C5AZO7RU.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md 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\",\n className\n )}\n {...props}\n />\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/skeleton.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\"\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n"],"mappings":";yCAOI,cAAAA,MAAA,oBALJ,SAASC,EAAS,CAChB,UAAAC,EACA,GAAGC,CACL,EAAyC,CACvC,OACEH,EAAC,OACC,UAAWI,EAAG,oCAAqCF,CAAS,EAC3D,GAAGC,EACN,CAEJ","names":["jsx","Skeleton","className","props","cn"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{a as T}from"./chunk-6BEVEBGO.mjs";import{a as P}from"./chunk-YBV4CPVD.mjs";import{a as I,f as L,g as H,i as _,j as D}from"./chunk-73BUNE7H.mjs";import{a as y}from"./chunk-CNRZOMR4.mjs";import{a as k,b as B,c as z,d as O}from"./chunk-PY6WBMT2.mjs";import{b as E}from"./chunk-HQUUCCZL.mjs";import{a as i}from"./chunk-S5TKCF6T.mjs";import*as r from"react";import{Slot as h}from"@radix-ui/react-slot";import{cva as j}from"class-variance-authority";import{PanelLeft as q,X as U,Menu as F}from"lucide-react";import*as C from"react";var M=768;function A(){let[a,e]=C.useState(void 0);return C.useEffect(()=>{let t=window.matchMedia(`(max-width: ${M-1}px)`),n=()=>{e(window.innerWidth<M)};return t.addEventListener("change",n),e(window.innerWidth<M),()=>t.removeEventListener("change",n)},[]),!!a}import{jsx as o,jsxs as m}from"react/jsx-runtime";var X="sidebar_state",Y=3600*24*7,J="16rem",G="23rem",Q="4.625rem",Z="b",K=r.createContext(null);function x(){let a=r.useContext(K);if(!a)throw new Error("useSidebar must be used within a SidebarProvider.");return a}var ee=r.forwardRef(({defaultOpen:a=!0,open:e,onOpenChange:t,className:n,style:s,children:d,...c},f)=>{let p=A(),[g,b]=r.useState(!1),[w,W]=r.useState(a),v=e??w,S=r.useCallback(l=>{let u=typeof l=="function"?l(v):l;t?t(u):W(u),document.cookie=`${X}=${u}; path=/; max-age=${Y}`},[t,v]),R=r.useCallback(()=>p?b(l=>!l):S(l=>!l),[p,S,b]);r.useEffect(()=>{let l=u=>{u.key===Z&&(u.metaKey||u.ctrlKey)&&(u.preventDefault(),R())};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[R]);let N=v?"expanded":"collapsed",$=r.useMemo(()=>({state:N,open:v,setOpen:S,isMobile:p,openMobile:g,setOpenMobile:b,toggleSidebar:R}),[N,v,S,p,g,b,R]);return o(K.Provider,{value:$,children:o(k,{delayDuration:0,children:o("div",{style:{"--sidebar-width":J,"--sidebar-width-icon":Q,...s},className:i("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",n),ref:f,...c,children:d})})})});ee.displayName="SidebarProvider";var ae=r.forwardRef(({side:a="left",variant:e="sidebar",collapsible:t="offcanvas",className:n,children:s,...d},c)=>{let{isMobile:f,state:p,openMobile:g,setOpenMobile:b}=x();return t==="none"?o("div",{className:i("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",n),ref:c,...d,children:s}):f?o(I,{open:g,onOpenChange:b,...d,children:m(L,{"data-sidebar":"sidebar","data-mobile":"true",className:"bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{width:G,maxWidth:G},side:a,children:[m(H,{className:"sr-only",children:[o(_,{children:"Sidebar"}),o(D,{children:"Displays the mobile sidebar."})]}),o("div",{className:"flex h-full w-full flex-col",children:s})]})}):m("div",{ref:c,className:"group peer hidden text-sidebar-foreground md:block","data-state":p,"data-collapsible":p==="collapsed"?t:"","data-variant":e,"data-side":a,children:[o("div",{className:i("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180",e==="floating"||e==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),o("div",{className:i("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",a==="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)]",e==="floating"||e==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)",n),...d,children:o("div",{"data-sidebar":"sidebar",className:"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",children:o("div",{className:"m-2.5 rounded-2xl border border-border h-full",children:s})})})]})});ae.displayName="Sidebar";var V=r.forwardRef(({className:a,onClick:e,...t},n)=>{let{toggleSidebar:s,isMobile:d,openMobile:c}=x();return m(E,{ref:n,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:i("h-7 w-7 bg-transparent hover:bg-transparent",a),onClick:f=>{e?.(f),s()},...t,children:[d?c?o("span",{className:"rounded-full border border-border p-2",children:o(U,{size:16})}):o("span",{className:"rounded-full border border-border p-2",children:o(F,{size:16})}):o(q,{size:16}),o("span",{className:"sr-only",children:"Toggle Sidebar"})]})});V.displayName="SidebarTrigger";var te=r.forwardRef(({className:a,...e},t)=>{let{toggleSidebar:n}=x();return o("button",{ref:t,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:n,title:"Toggle Sidebar",className:i("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","in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize","group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",a),...e})});te.displayName="SidebarRail";var oe=r.forwardRef(({className:a,...e},t)=>o("main",{ref:t,className:i("relative flex w-full flex-1 flex-col bg-background","md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",a),...e}));oe.displayName="SidebarInset";var re=r.forwardRef(({className:a,...e},t)=>o(T,{ref:t,"data-sidebar":"input",className:i("h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",a),...e}));re.displayName="SidebarInput";var ne=r.forwardRef(({className:a,showTrigger:e=!1,children:t,...n},s)=>{let{state:d}=x();return m("div",{ref:s,"data-sidebar":"header",className:i("flex flex-row w-full items-center gap-2 p-4",d==="collapsed"?"justify-center":"justify-between",a),...n,children:[d!=="collapsed"&&o("div",{className:"transition-all duration-200 w-full whitespace-nowrap",children:t}),e&&o(V,{})]})});ne.displayName="SidebarHeader";var ie=r.forwardRef(({className:a,...e},t)=>o("div",{ref:t,"data-sidebar":"footer",className:i("flex flex-col gap-2 p-2",a),...e}));ie.displayName="SidebarFooter";var se=r.forwardRef(({className:a,...e},t)=>o(P,{ref:t,"data-sidebar":"separator",className:i("mx-2 w-auto bg-sidebar-border",a),...e}));se.displayName="SidebarSeparator";var de=r.forwardRef(({className:a,...e},t)=>o("div",{ref:t,"data-sidebar":"content",className:i("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden","px-4 group-data-[collapsible=icon]:px-0",a),...e}));de.displayName="SidebarContent";var le=r.forwardRef(({className:a,...e},t)=>o("div",{ref:t,"data-sidebar":"group",className:i("relative flex w-full min-w-0 flex-col","group-data-[collapsible=icon]:p-0",a),...e}));le.displayName="SidebarGroup";var ce=r.forwardRef(({className:a,asChild:e=!1,...t},n)=>o(e?h:"div",{ref:n,"data-sidebar":"group-label",className:i("flex h-8 shrink-0 items-center rounded-md text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",a),...t}));ce.displayName="SidebarGroupLabel";var pe=r.forwardRef(({className:a,asChild:e=!1,...t},n)=>o(e?h:"button",{ref:n,"data-sidebar":"group-action",className:i("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","after:absolute after:-inset-2 after:md:hidden","group-data-[collapsible=icon]:hidden",a),...t}));pe.displayName="SidebarGroupAction";var be=r.forwardRef(({className:a,...e},t)=>o("div",{ref:t,"data-sidebar":"group-content",className:i("w-full text-sm",a),...e}));be.displayName="SidebarGroupContent";var ue=r.forwardRef(({className:a,...e},t)=>o("ul",{ref:t,"data-sidebar":"menu",className:i("flex w-full min-w-0 flex-col gap-1",a),...e}));ue.displayName="SidebarMenu";var fe=r.forwardRef(({className:a,...e},t)=>o("li",{ref:t,"data-sidebar":"menu-item",className:i("group/menu-item relative",a),...e}));fe.displayName="SidebarMenuItem";var me=j("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-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground 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",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",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))]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:!p-0"}},defaultVariants:{variant:"default",size:"default"}}),ge=r.forwardRef(({asChild:a=!1,isActive:e=!1,variant:t="default",size:n="default",tooltip:s,className:d,...c},f)=>{let p=a?h:"button",{isMobile:g,state:b}=x(),w=o(p,{ref:f,"data-sidebar":"menu-button","data-size":n,"data-active":e,className:i(me({variant:t,size:n}),d),...c});return s?(typeof s=="string"&&(s={children:s}),m(B,{children:[o(z,{asChild:!0,children:w}),o(O,{side:"right",align:"center",hidden:b!=="collapsed"||g,...s})]})):w});ge.displayName="SidebarMenuButton";var ve=r.forwardRef(({className:a,asChild:e=!1,showOnHover:t=!1,...n},s)=>o(e?h:"button",{ref:s,"data-sidebar":"menu-action",className:i("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 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",t&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0",a),...n}));ve.displayName="SidebarMenuAction";var he=r.forwardRef(({className:a,...e},t)=>o("div",{ref:t,"data-sidebar":"menu-badge",className:i("pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground","peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",a),...e}));he.displayName="SidebarMenuBadge";var xe=r.forwardRef(({className:a,showIcon:e=!1,...t},n)=>{let s=r.useMemo(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return m("div",{ref:n,"data-sidebar":"menu-skeleton",className:i("flex h-8 items-center gap-2 rounded-md px-2",a),...t,children:[e&&o(y,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}),o(y,{className:"h-4 max-w-[--skeleton-width] flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":s}})]})});xe.displayName="SidebarMenuSkeleton";var we=r.forwardRef(({className:a,...e},t)=>o("ul",{ref:t,"data-sidebar":"menu-sub",className:i("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","group-data-[collapsible=icon]:hidden",a),...e}));we.displayName="SidebarMenuSub";var Se=r.forwardRef(({...a},e)=>o("li",{ref:e,...a}));Se.displayName="SidebarMenuSubItem";var Re=r.forwardRef(({asChild:a=!1,size:e="md",isActive:t,className:n,...s},d)=>o(a?h:"a",{ref:d,"data-sidebar":"menu-sub-button","data-size":e,"data-active":t,className:i("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 [&>svg]:text-sidebar-accent-foreground","data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",e==="sm"&&"text-xs",e==="md"&&"text-sm","group-data-[collapsible=icon]:hidden",n),...s}));Re.displayName="SidebarMenuSubButton";export{A as a,x as b,ee as c,ae as d,V as e,te as f,oe as g,re as h,ne as i,ie as j,se as k,de as l,le as m,ce as n,pe as o,be as p,ue as q,fe as r,ge as s,ve as t,he as u,xe as v,we as w,Se as x,Re as y};
|
|
3
|
+
//# sourceMappingURL=chunk-HQ6XIPS3.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/sidebar.tsx","../src/hooks/use-mobile.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { PanelLeft, X, Menu } from \"lucide-react\"\n\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/button\"\nimport { Input } from \"@/components/input\"\nimport { Separator } from \"@/components/separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@/components/sheet\"\nimport { Skeleton } from \"@/components/skeleton\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/tooltip\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"23rem\"\nconst SIDEBAR_WIDTH_ICON = \"4.625rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n const toggleSidebar = React.useCallback(() => {\n return isMobile\n ? setOpenMobile((open) => !open)\n : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n }\n)\nSidebarProvider.displayName = \"SidebarProvider\"\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n }\n>(\n (\n {\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n },\n ref\n ) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n className={cn(\n \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n width: SIDEBAR_WIDTH_MOBILE,\n maxWidth: SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n ref={ref}\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n >\n <div\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n >\n <div className=\"m-2.5 rounded-2xl border border-border h-full\">\n {children}\n </div>\n </div>\n </div>\n </div>\n )\n }\n)\nSidebar.displayName = \"Sidebar\"\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar, isMobile, openMobile } = useSidebar()\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7 bg-transparent hover:bg-transparent\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n {isMobile ? (\n openMobile ? (\n <span className=\"rounded-full border border-border p-2\">\n <X size={16} />\n </span>\n ) : (\n <span className=\"rounded-full border border-border p-2\">\n <Menu size={16} />\n </span>\n )\n ) : (\n <PanelLeft size={16} />\n )}\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n})\nSidebarTrigger.displayName = \"SidebarTrigger\"\n\nconst SidebarRail = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"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\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarRail.displayName = \"SidebarRail\"\n\nconst SidebarInset = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"main\">\n>(({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n \"relative flex w-full flex-1 flex-col bg-background\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInset.displayName = \"SidebarInset\"\n\nconst SidebarInput = React.forwardRef<\n React.ElementRef<typeof Input>,\n React.ComponentProps<typeof Input>\n>(({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n \"h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInput.displayName = \"SidebarInput\"\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showTrigger?: boolean\n }\n>(({ className, showTrigger = false, children, ...props }, ref) => {\n const { state } = useSidebar()\n\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\n \"flex flex-row w-full items-center gap-2 p-4\",\n state === \"collapsed\" ? \"justify-center\" : \"justify-between\",\n className\n )}\n {...props}\n >\n {state !== \"collapsed\" && (\n <div className=\"transition-all duration-200 w-full whitespace-nowrap\">\n {children}\n </div>\n )}\n\n {showTrigger && <SidebarTrigger />}\n </div>\n )\n})\nSidebarHeader.displayName = \"SidebarHeader\"\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarFooter.displayName = \"SidebarFooter\"\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n {...props}\n />\n )\n})\nSidebarSeparator.displayName = \"SidebarSeparator\"\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n \"px-4 group-data-[collapsible=icon]:px-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarContent.displayName = \"SidebarContent\"\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\n \"relative flex w-full min-w-0 flex-col\",\n \"group-data-[collapsible=icon]:p-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = \"SidebarGroup\"\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n \"flex h-8 shrink-0 items-center rounded-md text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\"\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n \"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\",\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupAction.displayName = \"SidebarGroupAction\"\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n))\nSidebarGroupContent.displayName = \"SidebarGroupContent\"\n\nconst SidebarMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n))\nSidebarMenu.displayName = \"SidebarMenu\"\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n))\nSidebarMenuItem.displayName = \"SidebarMenuItem\"\n\nconst sidebarMenuButtonVariants = cva(\n \"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-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground 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\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"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))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:!p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n }\n)\nSidebarMenuButton.displayName = \"SidebarMenuButton\"\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n \"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 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuAction.displayName = \"SidebarMenuAction\"\n\nconst SidebarMenuBadge = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n \"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n))\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\"\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-[--skeleton-width] flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n})\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\"\n\nconst SidebarMenuSub = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n \"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\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n))\nSidebarMenuSub.displayName = \"SidebarMenuSub\"\n\nconst SidebarMenuSubItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ ...props }, ref) => <li ref={ref} {...props} />)\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\"\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n }\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"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 [&>svg]:text-sidebar-accent-foreground\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\"\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n"],"mappings":"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","names":["React","Slot","cva","PanelLeft","X","Menu","React","MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","mql","onChange","jsx","jsxs","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","ref","isMobile","useIsMobile","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","TooltipProvider","cn","Sidebar","side","variant","collapsible","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","X","Menu","PanelLeft","SidebarRail","SidebarInset","SidebarInput","Input","SidebarHeader","showTrigger","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","cva","SidebarMenuButton","isActive","size","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{a as o}from"./chunk-S5TKCF6T.mjs";import*as a from"react";import{Slot as l}from"@radix-ui/react-slot";import{cva as f}from"class-variance-authority";import{jsx as n,jsxs as
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{a as o}from"./chunk-S5TKCF6T.mjs";import*as a from"react";import{Slot as l}from"@radix-ui/react-slot";import{cva as f}from"class-variance-authority";import{jsx as n,jsxs as b}from"react/jsx-runtime";var p=f("inline-flex items-center cursor-pointer justify-center whitespace-nowrap rounded-3xl 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",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-primary-accent hover:bg-muted",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 text-sm",sm:"h-8 text-xs px-3 py-2",lg:"h-10 px-8 py-2 text-sm",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),m=a.forwardRef(({className:i,variant:s,size:d,asChild:c=!1,loading:e=!1,icon:r,...t},u)=>b(c?l:"button",{className:o(p({variant:s,size:d,className:i})),ref:u,disabled:e||t.disabled,...t,children:[e&&n("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border border-primary-foreground border-t-transparent"}),!e&&r&&n("span",{className:"mr-2",children:r}),t.children]}));m.displayName="Button";export{p as a,m as b};
|
|
3
|
+
//# sourceMappingURL=chunk-HQUUCCZL.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/button.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center cursor-pointer justify-center whitespace-nowrap rounded-3xl 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\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-primary-accent hover:bg-muted\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 text-sm\",\n sm: \"h-8 text-xs px-3 py-2\",\n lg: \"h-10 px-8 py-2 text-sm\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n loading?: boolean\n icon?: React.ReactNode\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n loading = false,\n icon,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n disabled={loading || props.disabled}\n {...props}\n >\n {loading && (\n <div className=\"mr-2 h-4 w-4 animate-spin rounded-full border border-primary-foreground border-t-transparent\" />\n )}\n {!loading && icon && <span className=\"mr-2\">{icon}</span>}\n {props.children}\n </Comp>\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n"],"mappings":";yCAAA,UAAYA,MAAW,QACvB,OAAS,QAAAC,MAAY,uBACrB,OAAS,OAAAC,MAA8B,2BAuDjC,OAOI,OAAAC,EAPJ,QAAAC,MAAA,oBAnDN,IAAMC,EAAiBC,EACrB,iSACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,yDACT,YACE,qEACF,QACE,iFACF,UAAW,kDACX,MAAO,+CACP,KAAM,iDACR,EACA,KAAM,CACJ,QAAS,wBACT,GAAI,wBACJ,GAAI,yBACJ,KAAM,SACR,CACF,EACA,gBAAiB,CACf,QAAS,UACT,KAAM,SACR,CACF,CACF,EAUMC,EAAe,aACnB,CACE,CACE,UAAAC,EACA,QAAAC,EACA,KAAAC,EACA,QAAAC,EAAU,GACV,QAAAC,EAAU,GACV,KAAAC,EACA,GAAGC,CACL,EACAC,IAIEX,EAFWO,EAAUK,EAAO,SAE3B,CACC,UAAWC,EAAGZ,EAAe,CAAE,QAAAI,EAAS,KAAAC,EAAM,UAAAF,CAAU,CAAC,CAAC,EAC1D,IAAKO,EACL,SAAUH,GAAWE,EAAM,SAC1B,GAAGA,EAEH,UAAAF,GACCT,EAAC,OAAI,UAAU,+FAA+F,EAE/G,CAACS,GAAWC,GAAQV,EAAC,QAAK,UAAU,OAAQ,SAAAU,EAAK,EACjDC,EAAM,UACT,CAGN,EACAP,EAAO,YAAc","names":["React","Slot","cva","jsx","jsxs","buttonVariants","cva","Button","className","variant","size","asChild","loading","icon","props","ref","Slot","cn"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
|
+
var _chunkQZ2ZUF7Qjs = require('./chunk-QZ2ZUF7Q.js');var _chunk7SOZ6MOVjs = require('./chunk-7SOZ6MOV.js');var _chunkNKYU43T6js = require('./chunk-NKYU43T6.js');var _chunk5L5DM2X5js = require('./chunk-5L5DM2X5.js');var _chunkC5AZO7RUjs = require('./chunk-C5AZO7RU.js');var _chunk54IB54OZjs = require('./chunk-54IB54OZ.js');var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var r = _interopRequireWildcard(_react); var C = _interopRequireWildcard(_react);var _reactslot = require('@radix-ui/react-slot');var _classvarianceauthority = require('class-variance-authority');var _lucidereact = require('lucide-react');var M=768;function A(){let[a,e]=C.useState(void 0);return C.useEffect(()=>{let t=window.matchMedia(`(max-width: ${M-1}px)`),n=()=>{e(window.innerWidth<M)};return t.addEventListener("change",n),e(window.innerWidth<M),()=>t.removeEventListener("change",n)},[]),!!a}var _jsxruntime = require('react/jsx-runtime');var X="sidebar_state",Y=3600*24*7,J="16rem",G="23rem",Q="4.625rem",Z="b",K=r.createContext(null);function x(){let a=r.useContext(K);if(!a)throw new Error("useSidebar must be used within a SidebarProvider.");return a}var ee=r.forwardRef(({defaultOpen:a=!0,open:e,onOpenChange:t,className:n,style:s,children:d,...c},f)=>{let p=A(),[g,b]=r.useState(!1),[w,W]=r.useState(a),v=_nullishCoalesce(e, () => (w)),S=r.useCallback(l=>{let u=typeof l=="function"?l(v):l;t?t(u):W(u),document.cookie=`${X}=${u}; path=/; max-age=${Y}`},[t,v]),R=r.useCallback(()=>p?b(l=>!l):S(l=>!l),[p,S,b]);r.useEffect(()=>{let l=u=>{u.key===Z&&(u.metaKey||u.ctrlKey)&&(u.preventDefault(),R())};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[R]);let N=v?"expanded":"collapsed",$=r.useMemo(()=>({state:N,open:v,setOpen:S,isMobile:p,openMobile:g,setOpenMobile:b,toggleSidebar:R}),[N,v,S,p,g,b,R]);return _jsxruntime.jsx.call(void 0, K.Provider,{value:$,children:_jsxruntime.jsx.call(void 0, _chunkC5AZO7RUjs.a,{delayDuration:0,children:_jsxruntime.jsx.call(void 0, "div",{style:{"--sidebar-width":J,"--sidebar-width-icon":Q,...s},className:_chunkFUYXCJOQjs.a.call(void 0, "group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",n),ref:f,...c,children:d})})})});ee.displayName="SidebarProvider";var ae=r.forwardRef(({side:a="left",variant:e="sidebar",collapsible:t="offcanvas",className:n,children:s,...d},c)=>{let{isMobile:f,state:p,openMobile:g,setOpenMobile:b}=x();return t==="none"?_jsxruntime.jsx.call(void 0, "div",{className:_chunkFUYXCJOQjs.a.call(void 0, "flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",n),ref:c,...d,children:s}):f?_jsxruntime.jsx.call(void 0, _chunkNKYU43T6js.a,{open:g,onOpenChange:b,...d,children:_jsxruntime.jsxs.call(void 0, _chunkNKYU43T6js.f,{"data-sidebar":"sidebar","data-mobile":"true",className:"bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{width:G,maxWidth:G},side:a,children:[_jsxruntime.jsxs.call(void 0, _chunkNKYU43T6js.g,{className:"sr-only",children:[_jsxruntime.jsx.call(void 0, _chunkNKYU43T6js.i,{children:"Sidebar"}),_jsxruntime.jsx.call(void 0, _chunkNKYU43T6js.j,{children:"Displays the mobile sidebar."})]}),_jsxruntime.jsx.call(void 0, "div",{className:"flex h-full w-full flex-col",children:s})]})}):_jsxruntime.jsxs.call(void 0, "div",{ref:c,className:"group peer hidden text-sidebar-foreground md:block","data-state":p,"data-collapsible":p==="collapsed"?t:"","data-variant":e,"data-side":a,children:[_jsxruntime.jsx.call(void 0, "div",{className:_chunkFUYXCJOQjs.a.call(void 0, "relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180",e==="floating"||e==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),_jsxruntime.jsx.call(void 0, "div",{className:_chunkFUYXCJOQjs.a.call(void 0, "fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",a==="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)]",e==="floating"||e==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)",n),...d,children:_jsxruntime.jsx.call(void 0, "div",{"data-sidebar":"sidebar",className:"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",children:_jsxruntime.jsx.call(void 0, "div",{className:"m-2.5 rounded-2xl border border-border h-full",children:s})})})]})});ae.displayName="Sidebar";var V=r.forwardRef(({className:a,onClick:e,...t},n)=>{let{toggleSidebar:s,isMobile:d,openMobile:c}=x();return _jsxruntime.jsxs.call(void 0, _chunk54IB54OZjs.b,{ref:n,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:_chunkFUYXCJOQjs.a.call(void 0, "h-7 w-7 bg-transparent hover:bg-transparent",a),onClick:f=>{_optionalChain([e, 'optionalCall', _2 => _2(f)]),s()},...t,children:[d?c?_jsxruntime.jsx.call(void 0, "span",{className:"rounded-full border border-border p-2",children:_jsxruntime.jsx.call(void 0, _lucidereact.X,{size:16})}):_jsxruntime.jsx.call(void 0, "span",{className:"rounded-full border border-border p-2",children:_jsxruntime.jsx.call(void 0, _lucidereact.Menu,{size:16})}):_jsxruntime.jsx.call(void 0, _lucidereact.PanelLeft,{size:16}),_jsxruntime.jsx.call(void 0, "span",{className:"sr-only",children:"Toggle Sidebar"})]})});V.displayName="SidebarTrigger";var te=r.forwardRef(({className:a,...e},t)=>{let{toggleSidebar:n}=x();return _jsxruntime.jsx.call(void 0, "button",{ref:t,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:n,title:"Toggle Sidebar",className:_chunkFUYXCJOQjs.a.call(void 0, "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","in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize","group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",a),...e})});te.displayName="SidebarRail";var oe=r.forwardRef(({className:a,...e},t)=>_jsxruntime.jsx.call(void 0, "main",{ref:t,className:_chunkFUYXCJOQjs.a.call(void 0, "relative flex w-full flex-1 flex-col bg-background","md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",a),...e}));oe.displayName="SidebarInset";var re=r.forwardRef(({className:a,...e},t)=>_jsxruntime.jsx.call(void 0, _chunkQZ2ZUF7Qjs.a,{ref:t,"data-sidebar":"input",className:_chunkFUYXCJOQjs.a.call(void 0, "h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",a),...e}));re.displayName="SidebarInput";var ne=r.forwardRef(({className:a,showTrigger:e=!1,children:t,...n},s)=>{let{state:d}=x();return _jsxruntime.jsxs.call(void 0, "div",{ref:s,"data-sidebar":"header",className:_chunkFUYXCJOQjs.a.call(void 0, "flex flex-row w-full items-center gap-2 p-4",d==="collapsed"?"justify-center":"justify-between",a),...n,children:[d!=="collapsed"&&_jsxruntime.jsx.call(void 0, "div",{className:"transition-all duration-200 w-full whitespace-nowrap",children:t}),e&&_jsxruntime.jsx.call(void 0, V,{})]})});ne.displayName="SidebarHeader";var ie=r.forwardRef(({className:a,...e},t)=>_jsxruntime.jsx.call(void 0, "div",{ref:t,"data-sidebar":"footer",className:_chunkFUYXCJOQjs.a.call(void 0, "flex flex-col gap-2 p-2",a),...e}));ie.displayName="SidebarFooter";var se=r.forwardRef(({className:a,...e},t)=>_jsxruntime.jsx.call(void 0, _chunk7SOZ6MOVjs.a,{ref:t,"data-sidebar":"separator",className:_chunkFUYXCJOQjs.a.call(void 0, "mx-2 w-auto bg-sidebar-border",a),...e}));se.displayName="SidebarSeparator";var de=r.forwardRef(({className:a,...e},t)=>_jsxruntime.jsx.call(void 0, "div",{ref:t,"data-sidebar":"content",className:_chunkFUYXCJOQjs.a.call(void 0, "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden","px-4 group-data-[collapsible=icon]:px-0",a),...e}));de.displayName="SidebarContent";var le=r.forwardRef(({className:a,...e},t)=>_jsxruntime.jsx.call(void 0, "div",{ref:t,"data-sidebar":"group",className:_chunkFUYXCJOQjs.a.call(void 0, "relative flex w-full min-w-0 flex-col","group-data-[collapsible=icon]:p-0",a),...e}));le.displayName="SidebarGroup";var ce=r.forwardRef(({className:a,asChild:e=!1,...t},n)=>_jsxruntime.jsx.call(void 0, e?_reactslot.Slot:"div",{ref:n,"data-sidebar":"group-label",className:_chunkFUYXCJOQjs.a.call(void 0, "flex h-8 shrink-0 items-center rounded-md text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",a),...t}));ce.displayName="SidebarGroupLabel";var pe=r.forwardRef(({className:a,asChild:e=!1,...t},n)=>_jsxruntime.jsx.call(void 0, e?_reactslot.Slot:"button",{ref:n,"data-sidebar":"group-action",className:_chunkFUYXCJOQjs.a.call(void 0, "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","after:absolute after:-inset-2 after:md:hidden","group-data-[collapsible=icon]:hidden",a),...t}));pe.displayName="SidebarGroupAction";var be=r.forwardRef(({className:a,...e},t)=>_jsxruntime.jsx.call(void 0, "div",{ref:t,"data-sidebar":"group-content",className:_chunkFUYXCJOQjs.a.call(void 0, "w-full text-sm",a),...e}));be.displayName="SidebarGroupContent";var ue=r.forwardRef(({className:a,...e},t)=>_jsxruntime.jsx.call(void 0, "ul",{ref:t,"data-sidebar":"menu",className:_chunkFUYXCJOQjs.a.call(void 0, "flex w-full min-w-0 flex-col gap-1",a),...e}));ue.displayName="SidebarMenu";var fe=r.forwardRef(({className:a,...e},t)=>_jsxruntime.jsx.call(void 0, "li",{ref:t,"data-sidebar":"menu-item",className:_chunkFUYXCJOQjs.a.call(void 0, "group/menu-item relative",a),...e}));fe.displayName="SidebarMenuItem";var me=_classvarianceauthority.cva.call(void 0, "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-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground 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",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",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))]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:!p-0"}},defaultVariants:{variant:"default",size:"default"}}),ge= exports.s =r.forwardRef(({asChild:a=!1,isActive:e=!1,variant:t="default",size:n="default",tooltip:s,className:d,...c},f)=>{let p=a?_reactslot.Slot:"button",{isMobile:g,state:b}=x(),w=_jsxruntime.jsx.call(void 0, p,{ref:f,"data-sidebar":"menu-button","data-size":n,"data-active":e,className:_chunkFUYXCJOQjs.a.call(void 0, me({variant:t,size:n}),d),...c});return s?(typeof s=="string"&&(s={children:s}),_jsxruntime.jsxs.call(void 0, _chunkC5AZO7RUjs.b,{children:[_jsxruntime.jsx.call(void 0, _chunkC5AZO7RUjs.c,{asChild:!0,children:w}),_jsxruntime.jsx.call(void 0, _chunkC5AZO7RUjs.d,{side:"right",align:"center",hidden:b!=="collapsed"||g,...s})]})):w});ge.displayName="SidebarMenuButton";var ve=r.forwardRef(({className:a,asChild:e=!1,showOnHover:t=!1,...n},s)=>_jsxruntime.jsx.call(void 0, e?_reactslot.Slot:"button",{ref:s,"data-sidebar":"menu-action",className:_chunkFUYXCJOQjs.a.call(void 0, "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 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",t&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0",a),...n}));ve.displayName="SidebarMenuAction";var he=r.forwardRef(({className:a,...e},t)=>_jsxruntime.jsx.call(void 0, "div",{ref:t,"data-sidebar":"menu-badge",className:_chunkFUYXCJOQjs.a.call(void 0, "pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground","peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",a),...e}));he.displayName="SidebarMenuBadge";var xe=r.forwardRef(({className:a,showIcon:e=!1,...t},n)=>{let s=r.useMemo(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return _jsxruntime.jsxs.call(void 0, "div",{ref:n,"data-sidebar":"menu-skeleton",className:_chunkFUYXCJOQjs.a.call(void 0, "flex h-8 items-center gap-2 rounded-md px-2",a),...t,children:[e&&_jsxruntime.jsx.call(void 0, _chunk5L5DM2X5js.a,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}),_jsxruntime.jsx.call(void 0, _chunk5L5DM2X5js.a,{className:"h-4 max-w-[--skeleton-width] flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":s}})]})});xe.displayName="SidebarMenuSkeleton";var we=r.forwardRef(({className:a,...e},t)=>_jsxruntime.jsx.call(void 0, "ul",{ref:t,"data-sidebar":"menu-sub",className:_chunkFUYXCJOQjs.a.call(void 0, "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","group-data-[collapsible=icon]:hidden",a),...e}));we.displayName="SidebarMenuSub";var Se=r.forwardRef(({...a},e)=>_jsxruntime.jsx.call(void 0, "li",{ref:e,...a}));Se.displayName="SidebarMenuSubItem";var Re=r.forwardRef(({asChild:a=!1,size:e="md",isActive:t,className:n,...s},d)=>_jsxruntime.jsx.call(void 0, a?_reactslot.Slot:"a",{ref:d,"data-sidebar":"menu-sub-button","data-size":e,"data-active":t,className:_chunkFUYXCJOQjs.a.call(void 0, "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 [&>svg]:text-sidebar-accent-foreground","data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",e==="sm"&&"text-xs",e==="md"&&"text-sm","group-data-[collapsible=icon]:hidden",n),...s}));Re.displayName="SidebarMenuSubButton";exports.a = A; exports.b = x; exports.c = ee; exports.d = ae; exports.e = V; exports.f = te; exports.g = oe; exports.h = re; exports.i = ne; exports.j = ie; exports.k = se; exports.l = de; exports.m = le; exports.n = ce; exports.o = pe; exports.p = be; exports.q = ue; exports.r = fe; exports.s = ge; exports.t = ve; exports.u = he; exports.v = xe; exports.w = we; exports.x = Se; exports.y = Re;
|
|
3
|
+
//# sourceMappingURL=chunk-NCJ5RAGG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-NCJ5RAGG.js","../src/components/sidebar.tsx","../src/hooks/use-mobile.tsx"],"names":["MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","mql","onChange","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","ref","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState"],"mappings":"AAAA,+8BAAY;AACZ,sDAAuC,sDAAwC,sDAAoE,sDAAwC,sDAA6D,sDAAwC,sDAAwC,gHCCjT,iDACF,kEACkB,2CACJ,ICH7BA,CAAAA,CAAoB,GAAA,CAEnB,SAASC,CAAAA,CAAAA,CAAc,CAC5B,GAAM,CAACC,CAAAA,CAAUC,CAAW,CAAA,CAAU,CAAA,CAAA,QAAA,CAA8B,KAAA,CAAS,CAAA,CAE7E,OAAM,CAAA,CAAA,SAAA,CAAU,CAAA,CAAA,EAAM,CACpB,IAAMC,CAAAA,CAAM,MAAA,CAAO,UAAA,CAAW,CAAA,YAAA,EAAeJ,CAAAA,CAAoB,CAAC,CAAA,GAAA,CAAK,CAAA,CACjEK,CAAAA,CAAW,CAAA,CAAA,EAAM,CACrBF,CAAAA,CAAY,MAAA,CAAO,UAAA,CAAaH,CAAiB,CACnD,CAAA,CACA,OAAAI,CAAAA,CAAI,gBAAA,CAAiB,QAAA,CAAUC,CAAQ,CAAA,CACvCF,CAAAA,CAAY,MAAA,CAAO,UAAA,CAAaH,CAAiB,CAAA,CAC1C,CAAA,CAAA,EAAMI,CAAAA,CAAI,mBAAA,CAAoB,QAAA,CAAUC,CAAQ,CACzD,CAAA,CAAG,CAAC,CAAC,CAAA,CAEE,CAAC,CAACH,CACX,CDmHU,+CAAA,IA1GJI,CAAAA,CAAsB,eAAA,CACtBC,CAAAA,CAAyB,IAAA,CAAU,EAAA,CAAK,CAAA,CACxCC,CAAAA,CAAgB,OAAA,CAChBC,CAAAA,CAAuB,OAAA,CACvBC,CAAAA,CAAqB,UAAA,CACrBC,CAAAA,CAA4B,GAAA,CAY5BC,CAAAA,CAAuB,CAAA,CAAA,aAAA,CAA0C,IAAI,CAAA,CAE3E,SAASC,CAAAA,CAAAA,CAAa,CACpB,IAAMC,CAAAA,CAAgB,CAAA,CAAA,UAAA,CAAWF,CAAc,CAAA,CAC/C,EAAA,CAAI,CAACE,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,mDAAmD,CAAA,CAGrE,OAAOA,CACT,CAEA,IAAMC,EAAAA,CAAwB,CAAA,CAAA,UAAA,CAQ5B,CACE,CACE,WAAA,CAAAC,CAAAA,CAAc,CAAA,CAAA,CACd,IAAA,CAAMC,CAAAA,CACN,YAAA,CAAcC,CAAAA,CACd,SAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CACAC,CAAAA,CAAAA,EACG,CACH,IAAMrB,CAAAA,CAAWD,CAAAA,CAAY,CAAA,CACvB,CAACuB,CAAAA,CAAYC,CAAa,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,CAAA,CAAK,CAAA,CAElD,CAACC,CAAAA,CAAOC,CAAQ,CAAA,CAAU,CAAA,CAAA,QAAA,CAASX,CAAW,CAAA,CAC9CY,CAAAA,kBAAOX,CAAAA,SAAYS,GAAAA,CACnBG,CAAAA,CAAgB,CAAA,CAAA,WAAA,CACnBC,CAAAA,EAAmD,CAClD,IAAMC,CAAAA,CAAY,OAAOD,CAAAA,EAAU,UAAA,CAAaA,CAAAA,CAAMF,CAAI,CAAA,CAAIE,CAAAA,CAC1DZ,CAAAA,CACFA,CAAAA,CAAYa,CAAS,CAAA,CAErBJ,CAAAA,CAASI,CAAS,CAAA,CAGpB,QAAA,CAAS,MAAA,CAAS,CAAA,EAAA","file":"/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-NCJ5RAGG.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { PanelLeft, X, Menu } from \"lucide-react\"\n\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/button\"\nimport { Input } from \"@/components/input\"\nimport { Separator } from \"@/components/separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@/components/sheet\"\nimport { Skeleton } from \"@/components/skeleton\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/tooltip\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"23rem\"\nconst SIDEBAR_WIDTH_ICON = \"4.625rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n const toggleSidebar = React.useCallback(() => {\n return isMobile\n ? setOpenMobile((open) => !open)\n : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n }\n)\nSidebarProvider.displayName = \"SidebarProvider\"\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n }\n>(\n (\n {\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n },\n ref\n ) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n className={cn(\n \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n width: SIDEBAR_WIDTH_MOBILE,\n maxWidth: SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n ref={ref}\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n >\n <div\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n >\n <div className=\"m-2.5 rounded-2xl border border-border h-full\">\n {children}\n </div>\n </div>\n </div>\n </div>\n )\n }\n)\nSidebar.displayName = \"Sidebar\"\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar, isMobile, openMobile } = useSidebar()\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7 bg-transparent hover:bg-transparent\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n {isMobile ? (\n openMobile ? (\n <span className=\"rounded-full border border-border p-2\">\n <X size={16} />\n </span>\n ) : (\n <span className=\"rounded-full border border-border p-2\">\n <Menu size={16} />\n </span>\n )\n ) : (\n <PanelLeft size={16} />\n )}\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n})\nSidebarTrigger.displayName = \"SidebarTrigger\"\n\nconst SidebarRail = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"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\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarRail.displayName = \"SidebarRail\"\n\nconst SidebarInset = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"main\">\n>(({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n \"relative flex w-full flex-1 flex-col bg-background\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInset.displayName = \"SidebarInset\"\n\nconst SidebarInput = React.forwardRef<\n React.ElementRef<typeof Input>,\n React.ComponentProps<typeof Input>\n>(({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n \"h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInput.displayName = \"SidebarInput\"\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showTrigger?: boolean\n }\n>(({ className, showTrigger = false, children, ...props }, ref) => {\n const { state } = useSidebar()\n\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\n \"flex flex-row w-full items-center gap-2 p-4\",\n state === \"collapsed\" ? \"justify-center\" : \"justify-between\",\n className\n )}\n {...props}\n >\n {state !== \"collapsed\" && (\n <div className=\"transition-all duration-200 w-full whitespace-nowrap\">\n {children}\n </div>\n )}\n\n {showTrigger && <SidebarTrigger />}\n </div>\n )\n})\nSidebarHeader.displayName = \"SidebarHeader\"\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarFooter.displayName = \"SidebarFooter\"\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n {...props}\n />\n )\n})\nSidebarSeparator.displayName = \"SidebarSeparator\"\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n \"px-4 group-data-[collapsible=icon]:px-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarContent.displayName = \"SidebarContent\"\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\n \"relative flex w-full min-w-0 flex-col\",\n \"group-data-[collapsible=icon]:p-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = \"SidebarGroup\"\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n \"flex h-8 shrink-0 items-center rounded-md text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\"\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n \"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\",\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupAction.displayName = \"SidebarGroupAction\"\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n))\nSidebarGroupContent.displayName = \"SidebarGroupContent\"\n\nconst SidebarMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n))\nSidebarMenu.displayName = \"SidebarMenu\"\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n))\nSidebarMenuItem.displayName = \"SidebarMenuItem\"\n\nconst sidebarMenuButtonVariants = cva(\n \"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-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground 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\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"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))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:!p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n }\n)\nSidebarMenuButton.displayName = \"SidebarMenuButton\"\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n \"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 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuAction.displayName = \"SidebarMenuAction\"\n\nconst SidebarMenuBadge = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n \"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n))\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\"\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-[--skeleton-width] flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n})\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\"\n\nconst SidebarMenuSub = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n \"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\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n))\nSidebarMenuSub.displayName = \"SidebarMenuSub\"\n\nconst SidebarMenuSubItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ ...props }, ref) => <li ref={ref} {...props} />)\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\"\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n }\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"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 [&>svg]:text-sidebar-accent-foreground\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\"\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n","import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n"]}
|