@codefast/ui 0.2.35 → 0.2.37
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/CHANGELOG.md +26 -0
- package/dist/chunk-25YVEZ64.cjs.map +1 -1
- package/dist/chunk-2HEVHJKK.cjs.map +1 -1
- package/dist/chunk-2MN3L273.cjs.map +1 -1
- package/dist/chunk-2NGMMHVD.cjs.map +1 -1
- package/dist/chunk-3H3UNZUP.cjs.map +1 -1
- package/dist/chunk-3JCHUM2E.cjs.map +1 -1
- package/dist/chunk-3KHRUHYT.cjs.map +1 -1
- package/dist/chunk-3XKK56VS.cjs.map +1 -1
- package/dist/chunk-3YNM2FAF.cjs.map +1 -1
- package/dist/chunk-45XT7WPV.cjs.map +1 -1
- package/dist/chunk-4SZM4OZX.cjs.map +1 -1
- package/dist/chunk-74METGII.cjs.map +1 -1
- package/dist/chunk-7CCZJ647.cjs.map +1 -1
- package/dist/chunk-AAAIMKE6.cjs.map +1 -1
- package/dist/chunk-ASEUIM44.cjs.map +1 -1
- package/dist/chunk-BGHCFQCV.cjs.map +1 -1
- package/dist/chunk-BROQJJQQ.cjs +2 -0
- package/dist/chunk-BROQJJQQ.cjs.map +1 -0
- package/dist/chunk-BTEH3T5W.cjs.map +1 -1
- package/dist/chunk-BUUK5B4I.js +2 -0
- package/dist/chunk-BUUK5B4I.js.map +1 -0
- package/dist/chunk-BZPP4CU7.cjs.map +1 -1
- package/dist/chunk-CT4OIAD4.cjs.map +1 -1
- package/dist/chunk-E627ZOLH.cjs.map +1 -1
- package/dist/chunk-EMPC5HNU.cjs.map +1 -1
- package/dist/chunk-GBDXWKYX.cjs.map +1 -1
- package/dist/chunk-GDOXPS6I.cjs.map +1 -1
- package/dist/chunk-GPPLLR2C.cjs.map +1 -1
- package/dist/chunk-HD2FCRL3.cjs.map +1 -1
- package/dist/chunk-HFJKDL4E.cjs.map +1 -1
- package/dist/chunk-HPWHFFV6.cjs.map +1 -1
- package/dist/chunk-IDELSFHC.cjs.map +1 -1
- package/dist/chunk-IK76PHGB.cjs.map +1 -1
- package/dist/chunk-J7FLM6VE.cjs.map +1 -1
- package/dist/chunk-JJW4VWZS.cjs.map +1 -1
- package/dist/chunk-JW6C57Y5.cjs.map +1 -1
- package/dist/chunk-K4Y4Y2YP.cjs.map +1 -1
- package/dist/chunk-KEF3RCSW.cjs.map +1 -1
- package/dist/chunk-KOVXL4P6.cjs.map +1 -1
- package/dist/chunk-MCMCMOW6.cjs.map +1 -1
- package/dist/chunk-MKBJXYE2.cjs +4 -0
- package/dist/chunk-MKBJXYE2.cjs.map +1 -0
- package/dist/chunk-NHKDM4JU.cjs.map +1 -1
- package/dist/chunk-NJZ3TDB6.cjs.map +1 -1
- package/dist/chunk-NOJBMCCJ.cjs.map +1 -1
- package/dist/chunk-OBHL2EPC.cjs.map +1 -1
- package/dist/chunk-OP6TXGBC.js +2 -0
- package/dist/chunk-OP6TXGBC.js.map +1 -0
- package/dist/chunk-OSBDYGS3.cjs.map +1 -1
- package/dist/chunk-OT65LUKH.cjs.map +1 -1
- package/dist/chunk-P5KMECT7.cjs +2 -0
- package/dist/chunk-P5KMECT7.cjs.map +1 -0
- package/dist/chunk-P6OP3EXT.cjs.map +1 -1
- package/dist/chunk-POJOZ7HM.cjs.map +1 -1
- package/dist/chunk-PQPCVOZX.cjs.map +1 -1
- package/dist/chunk-PWZWNYMT.cjs.map +1 -1
- package/dist/chunk-Q24HBDJY.cjs.map +1 -1
- package/dist/chunk-QHTSSIGW.cjs.map +1 -1
- package/dist/chunk-QQHIPYWF.cjs.map +1 -1
- package/dist/chunk-R4SOGOXT.cjs.map +1 -1
- package/dist/chunk-RNLUQH6E.cjs.map +1 -1
- package/dist/chunk-SLXE24VS.cjs.map +1 -1
- package/dist/chunk-SMJEDCFP.cjs.map +1 -1
- package/dist/chunk-SRP463XH.cjs.map +1 -1
- package/dist/chunk-TRPIIBAS.cjs.map +1 -1
- package/dist/chunk-TUAQU25Y.cjs.map +1 -1
- package/dist/chunk-U7UJHUBW.js +4 -0
- package/dist/chunk-U7UJHUBW.js.map +1 -0
- package/dist/chunk-UAS5UKTZ.cjs.map +1 -1
- package/dist/chunk-US2PK6G5.cjs.map +1 -1
- package/dist/chunk-UYWVE5DL.cjs.map +1 -1
- package/dist/chunk-VSTEK27Z.cjs.map +1 -1
- package/dist/chunk-W7IUS6U5.cjs.map +1 -1
- package/dist/chunk-WOGISN3L.cjs.map +1 -1
- package/dist/chunk-X5CR4RIL.cjs.map +1 -1
- package/dist/chunk-XO4K654G.cjs.map +1 -1
- package/dist/chunk-XRB4CGMN.cjs.map +1 -1
- package/dist/chunk-XXUOW3ID.cjs.map +1 -1
- package/dist/chunk-YQARPTSR.cjs.map +1 -1
- package/dist/chunk-YX4V3LJU.cjs.map +1 -1
- package/dist/components/accordion.cjs.map +1 -1
- package/dist/components/alert-dialog.cjs.map +1 -1
- package/dist/components/alert.cjs.map +1 -1
- package/dist/components/aspect-ratio.cjs.map +1 -1
- package/dist/components/avatar.cjs.map +1 -1
- package/dist/components/badge.cjs.map +1 -1
- package/dist/components/blockquote.cjs.map +1 -1
- package/dist/components/box.cjs.map +1 -1
- package/dist/components/breadcrumb.cjs.map +1 -1
- package/dist/components/button.cjs.map +1 -1
- package/dist/components/calendar.cjs.map +1 -1
- package/dist/components/card.cjs.map +1 -1
- package/dist/components/carousel.cjs.map +1 -1
- package/dist/components/chart.cjs +1 -1
- package/dist/components/chart.cjs.map +1 -1
- package/dist/components/chart.d.cts +42 -15
- package/dist/components/chart.d.ts +42 -15
- package/dist/components/chart.js +1 -1
- package/dist/components/checkbox-cards.cjs.map +1 -1
- package/dist/components/checkbox-group.cjs.map +1 -1
- package/dist/components/checkbox.cjs.map +1 -1
- package/dist/components/code.cjs.map +1 -1
- package/dist/components/collapsible.cjs.map +1 -1
- package/dist/components/command.cjs.map +1 -1
- package/dist/components/container.cjs.map +1 -1
- package/dist/components/context-menu.cjs.map +1 -1
- package/dist/components/data-table.cjs.map +1 -1
- package/dist/components/dialog.cjs.map +1 -1
- package/dist/components/drawer.cjs.map +1 -1
- package/dist/components/dropdown-menu.cjs.map +1 -1
- package/dist/components/em.cjs.map +1 -1
- package/dist/components/form.cjs.map +1 -1
- package/dist/components/heading.cjs.map +1 -1
- package/dist/components/hover-card.cjs.map +1 -1
- package/dist/components/inline.cjs.map +1 -1
- package/dist/components/input-date.cjs.map +1 -1
- package/dist/components/input-number.cjs.map +1 -1
- package/dist/components/input-otp.cjs +1 -1
- package/dist/components/input-otp.cjs.map +1 -1
- package/dist/components/input-otp.js +1 -1
- package/dist/components/input-password.cjs.map +1 -1
- package/dist/components/input-search.cjs.map +1 -1
- package/dist/components/input-time.cjs.map +1 -1
- package/dist/components/input.cjs.map +1 -1
- package/dist/components/kbd.cjs.map +1 -1
- package/dist/components/label.cjs.map +1 -1
- package/dist/components/menubar.cjs.map +1 -1
- package/dist/components/navigation-menu.cjs.map +1 -1
- package/dist/components/pagination.cjs.map +1 -1
- package/dist/components/popover.cjs.map +1 -1
- package/dist/components/pre.cjs.map +1 -1
- package/dist/components/progress-circle.cjs.map +1 -1
- package/dist/components/progress.cjs.map +1 -1
- package/dist/components/quote.cjs.map +1 -1
- package/dist/components/radio-cards.cjs.map +1 -1
- package/dist/components/radio-group.cjs.map +1 -1
- package/dist/components/radio.cjs.map +1 -1
- package/dist/components/resizable.cjs.map +1 -1
- package/dist/components/scroll-area.cjs.map +1 -1
- package/dist/components/section.cjs.map +1 -1
- package/dist/components/select.cjs.map +1 -1
- package/dist/components/separator.cjs.map +1 -1
- package/dist/components/sheet.cjs.map +1 -1
- package/dist/components/sidebar.cjs +1 -1
- package/dist/components/sidebar.cjs.map +1 -1
- package/dist/components/sidebar.d.cts +1 -1
- package/dist/components/sidebar.d.ts +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/skeleton.cjs.map +1 -1
- package/dist/components/slider.cjs.map +1 -1
- package/dist/components/sonner.cjs.map +1 -1
- package/dist/components/spinner.cjs.map +1 -1
- package/dist/components/strong.cjs.map +1 -1
- package/dist/components/switch.cjs.map +1 -1
- package/dist/components/table.cjs.map +1 -1
- package/dist/components/tabs.cjs.map +1 -1
- package/dist/components/text.cjs.map +1 -1
- package/dist/components/textarea.cjs.map +1 -1
- package/dist/components/toggle-group.cjs.map +1 -1
- package/dist/components/toggle.cjs.map +1 -1
- package/dist/components/tooltip.cjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/logger.cjs.map +1 -1
- package/dist/lib/utils.cjs.map +1 -1
- package/package.json +14 -13
- package/dist/chunk-GGIVV535.cjs +0 -2
- package/dist/chunk-GGIVV535.cjs.map +0 -1
- package/dist/chunk-IP3FM7M3.cjs +0 -2
- package/dist/chunk-IP3FM7M3.cjs.map +0 -1
- package/dist/chunk-JFVNFELS.js +0 -4
- package/dist/chunk-JFVNFELS.js.map +0 -1
- package/dist/chunk-TCK3JQ5Q.js +0 -2
- package/dist/chunk-TCK3JQ5Q.js.map +0 -1
- package/dist/chunk-WJ52PDQT.js +0 -2
- package/dist/chunk-WJ52PDQT.js.map +0 -1
- package/dist/chunk-ZESL6WID.cjs +0 -4
- package/dist/chunk-ZESL6WID.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/box.tsx"],"names":["Box","asChild","props","jsx","Slot"],"mappings":"AAEA,0HAAqB,+CAcZ,SARAA,CAAAA,CAAI,CACX,OAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAEgB,CAGd,OAAOC,6BAAAA,CAFWF,CAAUG,eAAAA,CAAO,KAAA,CAE3B,CAAU,WAAA,CAAU,KAAA,CAAO,GAAGF,CAAAA,CAAO,CAC/C,CAAA,cAAA","file":"/
|
|
1
|
+
{"version":3,"sources":["../src/components/box.tsx"],"names":["Box","asChild","props","jsx","Slot"],"mappings":"AAEA,0HAAqB,+CAcZ,SARAA,CAAAA,CAAI,CACX,OAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAEgB,CAGd,OAAOC,6BAAAA,CAFWF,CAAUG,eAAAA,CAAO,KAAA,CAE3B,CAAU,WAAA,CAAU,KAAA,CAAO,GAAGF,CAAAA,CAAO,CAC/C,CAAA,cAAA","file":"/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-KEF3RCSW.cjs","sourcesContent":["import type { ComponentProps, JSX } from 'react';\n\nimport { Slot } from '@radix-ui/react-slot';\n\n/* -----------------------------------------------------------------------------\n * Component: Box\n * -------------------------------------------------------------------------- */\n\nfunction Box({\n asChild,\n ...props\n}: ComponentProps<'div'> & {\n asChild?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'div';\n\n return <Component data-slot=\"box\" {...props} />;\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { Box };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/
|
|
1
|
+
{"version":3,"sources":["/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-KOVXL4P6.cjs","../src/components/toggle-group.tsx"],"names":["ToggleGroupPrimitive","useToggleGroupScope","createToggleGroupScope","ToggleGroupProvider","useToggleGroupContext","createToggleGroupContext","TOGGLE_GROUP_NAME","ToggleGroup","children","className","props","toggleGroupScope","jsx","size","cn","variant","TOGGLE_GROUP_ITEM_NAME","__scopeToggleGroup","jsxs","toggleVariants","prefix"],"mappings":"AAAA,uWAAY,CAAC,wDAAwC,wDCM5C,uDACGA,oHACH,+CASiB,IAAA,CAAA,CAAA,aAIuE,CAE3FC,CAAAA,CAAsBC,CAAAA,CAAuB,8CAAA,CAE5CC,CAAAA,CAAqBC,wCAAqB,CAAA,CAC/CC,CAAAA,CAA8DC,CAAiB,sDAAA,CAMjF,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAASC,CAAAA,CAAY,CACnB,CAAA,SAAA,CAAA,CAAA,CAAA,kBACAC,CACA,CAAA,CAAA,QAAAC,CAAAA,CACA,CAAA,SACA,CAAA,CAAA,CAAA,IACA,CAAA,CAAA,CAAGC,OAEH,CAAMC,CAAAA,CAAmBV,GAAsC,CAAA,CAE/D,CAAA,CAAA,IAAA,CACEW,CAAAA,CAACT,CAAAA,CAAA,CAAoB,CAAA,OAA2B,6BAAA,CAAA,CAAA,CAAMU,KAAM,CAAA,CAAA,CAAA,IAC1D,CAAA,CAAA,CAAA,OAAAD,CAAsB,CAAA,CAAA,QACpB,CAAA,6BAAA,CAAA,CAAA,IAAWE,CAAG,CAAA,SAAA,CAAA,iCAAA,mEACd,CAAA,CAAA,CAAWD,CAAAA,WACX,CAAA,CAAU,CAAA,WAAA,CAAA,cACV,CAAA,cAIC,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,GACH,CAAA,CACF,QAQ2B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,iBAG7B,CAAA,SAAA,CAAA,CAAA,CAAA,kBACAL,CACA,CAAA,CAAA,QAAAC,CAAAA,CACA,CAAA,SACA,CAAA,CAAA,CAAA,MACA,CAAA,CAAGC,CACL,MAMQ,CAAE,CAAA,CAAA,GAAA,CAAA,CAAA,CAAAK,CAAAA,GAAS,CAAA,OAA+BC,CAAAA,CAAwBC,CAAkB,IACjEhB,CAAAA,CAAoBgB,CAAkB,CAAA,CAE/D,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACEC,CAAAA,CAAsB,CAAA,CAAA,CAAA,CAAA,OACpB,8BAAA,CAAA,CAAA,IAAWC,CAAe,CACxB,SAAA,CAAW,iCACT,CAAA,SAAA,CAAA,CAAA,qHAIF,CAAA,CAAA,CAAA,CAAA,IACD,CAAA,CACD,CAAA,OAAA,CAAA,CAAA,CAAA,CAAU,CAAA,WAAA,CAAA,mBACV,CAAA,cAIC,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,GAAAC,CACAZ,CAAAA,QAIP,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,6BAAA","file":"/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-KOVXL4P6.cjs","sourcesContent":[null,"'use client';\n\nimport type { Scope } from '@radix-ui/react-context';\nimport type { ComponentProps, JSX, ReactNode } from 'react';\nimport type { VariantProps } from 'tailwind-variants';\n\nimport { createContextScope } from '@radix-ui/react-context';\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';\nimport { createToggleGroupScope } from '@radix-ui/react-toggle-group';\n\nimport { toggleVariants } from '@/components/toggle';\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Context: ToggleGroup\n * -------------------------------------------------------------------------- */\n\nconst TOGGLE_GROUP_NAME = 'ToggleGroup';\n\ntype ScopedProps<P> = P & { __scopeToggleGroup?: Scope };\n\nconst [createToggleGroupContext] = createContextScope(TOGGLE_GROUP_NAME, [createToggleGroupScope]);\n\nconst useToggleGroupScope = createToggleGroupScope();\n\nconst [ToggleGroupProvider, useToggleGroupContext] =\n createToggleGroupContext<VariantProps<typeof toggleVariants>>(TOGGLE_GROUP_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: ToggleGroup\n * -------------------------------------------------------------------------- */\n\nfunction ToggleGroup({\n __scopeToggleGroup,\n children,\n className,\n size,\n variant,\n ...props\n}: ScopedProps<ComponentProps<typeof ToggleGroupPrimitive.Root> & VariantProps<typeof toggleVariants>>): JSX.Element {\n const toggleGroupScope = useToggleGroupScope(__scopeToggleGroup);\n\n return (\n <ToggleGroupProvider scope={__scopeToggleGroup} size={size} variant={variant}>\n <ToggleGroupPrimitive.Root\n className={cn('group/toggle-group flex w-fit items-center -space-x-px rounded-md', className)}\n data-size={size}\n data-slot=\"toggle-group\"\n data-variant={variant}\n {...toggleGroupScope}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Root>\n </ToggleGroupProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: ToggleGroupItem\n * -------------------------------------------------------------------------- */\n\nconst TOGGLE_GROUP_ITEM_NAME = 'ToggleGroupItem';\n\nfunction ToggleGroupItem({\n __scopeToggleGroup,\n children,\n className,\n prefix,\n suffix,\n ...props\n}: ScopedProps<\n Omit<ComponentProps<typeof ToggleGroupPrimitive.Item>, 'prefix'> & {\n prefix?: ReactNode;\n suffix?: ReactNode;\n }\n>): JSX.Element {\n const { variant, size } = useToggleGroupContext(TOGGLE_GROUP_ITEM_NAME, __scopeToggleGroup);\n const toggleGroupScope = useToggleGroupScope(__scopeToggleGroup);\n\n return (\n <ToggleGroupPrimitive.Item\n className={toggleVariants({\n className: [\n 'min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10',\n className,\n ],\n size,\n variant,\n })}\n data-slot=\"toggle-group-item\"\n data-variant={variant}\n {...toggleGroupScope}\n {...props}\n >\n {prefix}\n {children}\n {suffix}\n </ToggleGroupPrimitive.Item>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { ToggleGroup, ToggleGroupItem };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/
|
|
1
|
+
{"version":3,"sources":["/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-MCMCMOW6.cjs","../src/components/container.tsx"],"names":["Container","asChild","className","props","jsx","Slot","cn"],"mappings":"AAAA,iIAAwC,iDCEnB,+CAiBZ,SATAA,CAAAA,CAAU,CACjB,OAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAEgB,CAGd,OAAOC,6BAAAA,CAFWH,CAAUI,eAAAA,CAAO,KAAA,CAE3B,CAAU,SAAA,CAAWC,iCAAAA,WAAG,CAAaJ,CAAS,CAAA,CAAG,WAAA,CAAU,WAAA,CAAa,GAAGC,CAAAA,CAAO,CAC5F,CAAA,cAAA","file":"/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-MCMCMOW6.cjs","sourcesContent":[null,"import type { ComponentProps, JSX } from 'react';\n\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Component: Container\n * -------------------------------------------------------------------------- */\n\nfunction Container({\n asChild,\n className,\n ...props\n}: ComponentProps<'div'> & {\n asChild?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'div';\n\n return <Component className={cn('container', className)} data-slot=\"container\" {...props} />;\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { Container };\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
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 _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";var _chunkSMJEDCFPcjs = require('./chunk-SMJEDCFP.cjs');var _reactcontext = require('@radix-ui/react-context');var _react = require('react');var _recharts = require('recharts'); var C = _interopRequireWildcard(_recharts);var _jsxruntime = require('react/jsx-runtime');var k="ChartProvider",L={dark:".dark",light:""},[j,G]=_reactcontext.createContextScope.call(void 0, k),[A,w]=j(k);function B({__scopeChart:e,id:t,children:r,className:o,config:i,...c}){let l=_react.useId.call(void 0, ),s=`chart-${t||l}`;return _jsxruntime.jsx.call(void 0, A,{config:i,scope:e,children:_jsxruntime.jsxs.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-surface]:outline-hidden flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-sector[stroke='#fff']]:stroke-transparent",o),"data-chart":s,"data-slot":"chart",...c,children:[_jsxruntime.jsx.call(void 0, K,{config:i,id:s}),_jsxruntime.jsx.call(void 0, C.ResponsiveContainer,{children:r})]})})}function K({id:e,config:t}){let r=_react.useMemo.call(void 0, ()=>z(e,t),[e,t]);return _jsxruntime.jsx.call(void 0, "style",{dangerouslySetInnerHTML:{__html:r}})}var Q=C.Tooltip,$="ChartTooltipContent";function U({__scopeChart:e,active:t,className:r,color:o,formatter:i,hideIndicator:c=!1,hideLabel:l=!1,indicator:s="dot",label:f,labelClassName:u,labelFormatter:y,labelKey:b,nameKey:I,payload:g}){let{config:m}=w($,e),_=_react.useMemo.call(void 0, ()=>{if(l||!_optionalChain([g, 'optionalAccess', _2 => _2.length]))return null;let[n]=g,P=`${b||n.dataKey||n.name||"value"}`,T=x(m,n,P),h=!b&&typeof f=="string"?_optionalChain([m, 'access', _3 => _3[f], 'optionalAccess', _4 => _4.label])||f:_optionalChain([T, 'optionalAccess', _5 => _5.label]);return y?_jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "font-medium",u),children:y(h,g)}):h?_jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "font-medium",u),children:h}):null},[m,l,f,u,y,b,g]);if(!t||!_optionalChain([g, 'optionalAccess', _6 => _6.length]))return null;let v=g.length===1&&s!=="dot";return _jsxruntime.jsxs.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "bg-background grid min-w-32 items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl",r),children:[v?null:_,_jsxruntime.jsx.call(void 0, "div",{className:"grid gap-1.5",children:g.map((n,P)=>{let T=`${I||n.name||n.dataKey||"value"}`,h=x(m,n,T),R=o||n.payload.fill||n.color;return _jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:size-2.5",s==="dot"&&"items-center"),children:i&&n.value!==void 0&&n.name?i(n.value,n.name,n,P,n.payload):_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_optionalChain([h, 'optionalAccess', _7 => _7.icon])?_jsxruntime.jsx.call(void 0, h.icon,{}):!c&&_jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "border-(--color-border) bg-(--color-bg) rounded-xs shrink-0",{"h-2.5 w-2.5":s==="dot","my-0.5":v&&s==="dashed","w-0 border border-dashed bg-transparent":s==="dashed","w-1":s==="line"}),style:{"--color-bg":R,"--color-border":R}}),_jsxruntime.jsxs.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "flex flex-1 justify-between leading-none",v?"items-end":"items-center"),children:[_jsxruntime.jsxs.call(void 0, "div",{className:"grid gap-1.5",children:[v?_:null,_jsxruntime.jsx.call(void 0, "span",{className:"text-muted-foreground",children:_optionalChain([h, 'optionalAccess', _8 => _8.label])||n.name})]}),n.value?_jsxruntime.jsx.call(void 0, "span",{className:"text-foreground font-mono font-medium tabular-nums",children:n.value.toLocaleString()}):null]})]})},n.dataKey)})})]})}var W=C.Legend,M="ChartLegendContent";function Y({__scopeChart:e,className:t,hideIcon:r=!1,nameKey:o,payload:i,verticalAlign:c="bottom"}){let{config:l}=w(M,e);return _optionalChain([i, 'optionalAccess', _9 => _9.length])?_jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "flex items-center justify-center gap-4",c==="top"?"pb-3":"pt-3",t),children:i.map(s=>{let f="value";o?f=o:s.dataKey&&(f=String(s.dataKey));let u=x(l,s,f);return _jsxruntime.jsxs.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:size-3"),children:[_optionalChain([u, 'optionalAccess', _10 => _10.icon])&&!r?_jsxruntime.jsx.call(void 0, u.icon,{}):_jsxruntime.jsx.call(void 0, "div",{className:"size-2 shrink-0 rounded-md",style:{backgroundColor:s.color}}),_optionalChain([u, 'optionalAccess', _11 => _11.label])]},String(s.value))})}):null}function x(e,t,r){if(!N(t))return;let o="payload"in t&&N(t.payload)?t.payload:void 0,i=V(t,o,r);return i in e?e[i]:e[r]}function N(e){return typeof e=="object"&&e!==null}function V(e,t,r){return r in e&&typeof e[r]=="string"?e[r]:t&&r in t&&typeof t[r]=="string"?t[r]:r}function H(e,t,r){let o=[];o.push(`${L[e]} [data-chart=${t}] {`);for(let[i,c]of r){let l=_optionalChain([c, 'optionalAccess', _12 => _12.theme, 'optionalAccess', _13 => _13[e]])||_optionalChain([c, 'optionalAccess', _14 => _14.color]);l&&o.push(` --color-${i}: ${l};`)}return o.push("}"),o.join(`
|
|
2
|
+
`)}function z(e,t){let r=Object.entries(t).filter(([i,c])=>_optionalChain([c, 'optionalAccess', _15 => _15.theme])||_optionalChain([c, 'optionalAccess', _16 => _16.color])),o=[];for(let i of Object.keys(L)){let c=H(i,e,r);o.push(c)}return o.join(`
|
|
3
|
+
`)}exports.a = G; exports.b = B; exports.c = K; exports.d = Q; exports.e = U; exports.f = W; exports.g = Y;
|
|
4
|
+
//# sourceMappingURL=chunk-MKBJXYE2.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-MKBJXYE2.cjs","../src/components/chart.tsx"],"names":["RechartsPrimitive","createChartContext","createChartScope","CHART_PROVIDER_NAME","ChartContextProvider","useChartContext","ChartContainer","__scopeChart","children","className","props","uniqueId","useId","chartId","id","jsx"],"mappings":"AAAA,22BAAY,CAAC,wDCMJ,uDACA,8BACGA,gFAsNI,+CA9MY,IAAA,CAAA,CAAA,eAapB,CAAA,CAAA,CAAA,CACN,IAAA,CAAA,OAgDKC,CAAoBC,KAAuCC,CAAmB,EAE/E,CAACC,CAAAA,CAAsBC,CAAe,CAAA,CAAIJ,CAAAA,CAAsCE,8CAAmB,CAMzG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAASG,CAAAA,CAAe,CACtB,CAAA,SAAA,CAAA,CAAA,CAAAC,YAEA,CAAA,CAAA,CAAA,EAAAC,CACA,CAAA,CAAA,QAAAC,CAAAA,CACA,CAAA,SACA,CAAA,CAAGC,CACL,MAME,CAAMC,CAAAA,CAAWC,GAAM,CACjBC,CAAAA,CAAU,CAAA,IAAA,CAAA,CAAA,0BAAA,CAASC,CAAAA,CAAMH,CAAQ,CAAA,MAEvC,EAAA,CACEI,EAACX,CAAAA,CAAA,CAAA;AA6VkB;AACvB","file":"/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-MKBJXYE2.cjs","sourcesContent":[null,"'use client';\n\nimport type { Scope } from '@radix-ui/react-context';\nimport type { ComponentProps, ComponentType, CSSProperties, JSX, ReactNode } from 'react';\nimport type { NameType, Payload, ValueType } from 'recharts/types/component/DefaultTooltipContent';\n\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useId, useMemo } from 'react';\nimport * as RechartsPrimitive from 'recharts';\n\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Context: ChartProvider\n * ---------------------------------------------------------------------------*/\n\nconst CHART_PROVIDER_NAME = 'ChartProvider';\n\ntype ScopedProps<P> = P & { __scopeChart?: Scope };\n\n/**\n * Supported themes in the application\n */\ntype Theme = 'dark' | 'light';\n\n/**\n * Mapping between themes and their corresponding CSS classes\n */\nconst THEMES: Record<Theme, string> = {\n dark: '.dark',\n light: '',\n};\n\n/**\n * Configuration for icon and label display in charts\n */\ninterface IconLabelConfig {\n /** Icon to display with data */\n icon?: ComponentType;\n /** Label to display with data */\n label?: ReactNode;\n}\n\n/**\n * Single color configuration for chart elements\n */\ntype ColorConfig = {\n /** Valid CSS color (hex, rgba, etc.) */\n color?: string;\n} & { theme?: never };\n\n/**\n * Theme-based color configuration for chart elements\n */\ntype ThemeConfig = {\n /** Map of colors for each theme mode */\n theme: Record<Theme, string>;\n} & { color?: never };\n\n/**\n * Complete configuration for a chart element\n */\ntype ChartConfigItem = (ColorConfig | ThemeConfig) & IconLabelConfig;\n\n/**\n * Configuration for the entire chart organized by series/data keys\n * Where keys are the names of data in the chart\n */\ntype ChartConfig = Record<string, ChartConfigItem | undefined>;\n\n/**\n * Value provided by Chart Context\n */\ninterface ChartContextValue {\n /** Display configuration for the chart */\n config: ChartConfig;\n}\n\nconst [createChartContext, createChartScope] = createContextScope(CHART_PROVIDER_NAME);\n\nconst [ChartContextProvider, useChartContext] = createChartContext<ChartContextValue>(CHART_PROVIDER_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: Chart\n * -------------------------------------------------------------------------- */\n\nfunction ChartContainer({\n __scopeChart,\n id,\n children,\n className,\n config,\n ...props\n}: ScopedProps<\n ComponentProps<'div'> & {\n children: ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>['children'];\n config: ChartConfig;\n }\n>): JSX.Element {\n const uniqueId = useId();\n const chartId = `chart-${id || uniqueId}`;\n\n return (\n <ChartContextProvider config={config} scope={__scopeChart}>\n <div\n className={cn(\n \"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-surface]:outline-hidden flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-sector[stroke='#fff']]:stroke-transparent\",\n className,\n )}\n data-chart={chartId}\n data-slot=\"chart\"\n {...props}\n >\n <ChartStyle config={config} id={chartId} />\n <RechartsPrimitive.ResponsiveContainer>{children}</RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContextProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: ChartStyle\n * -------------------------------------------------------------------------- */\n\nfunction ChartStyle({ id, config }: { config: ChartConfig; id: string }): ReactNode {\n const cssString = useMemo(() => generateCSS(id, config), [id, config]);\n\n return <style dangerouslySetInnerHTML={{ __html: cssString }} />;\n}\n\n/* -----------------------------------------------------------------------------\n * Component: ChartTooltip\n * -------------------------------------------------------------------------- */\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\n/* -----------------------------------------------------------------------------\n * Component: ChartTooltipContent\n * -------------------------------------------------------------------------- */\n\nconst CHART_TOOLTIP_CONTENT_NAME = 'ChartTooltipContent';\n\nfunction ChartTooltipContent({\n __scopeChart,\n active,\n className,\n color,\n formatter,\n hideIndicator = false,\n hideLabel = false,\n indicator = 'dot',\n label,\n labelClassName,\n labelFormatter,\n labelKey,\n nameKey,\n payload,\n}: ScopedProps<\n ComponentProps<typeof RechartsPrimitive.Tooltip> &\n Omit<ComponentProps<'div'>, 'content'> & {\n hideIndicator?: boolean;\n hideLabel?: boolean;\n indicator?: 'dashed' | 'dot' | 'line';\n labelKey?: string;\n nameKey?: string;\n }\n>): ReactNode {\n const { config } = useChartContext(CHART_TOOLTIP_CONTENT_NAME, __scopeChart);\n\n const tooltipLabel = useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n\n const key = `${labelKey || item.dataKey || item.name || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value = !labelKey && typeof label === 'string' ? config[label]?.label || label : itemConfig?.label;\n\n if (labelFormatter) {\n return <div className={cn('font-medium', labelClassName)}>{labelFormatter(value, payload)}</div>;\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [config, hideLabel, label, labelClassName, labelFormatter, labelKey, payload]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== 'dot';\n\n return (\n <div\n className={cn(\n 'bg-background grid min-w-32 items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl',\n className,\n )}\n >\n {nestLabel ? null : tooltipLabel}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || (item.payload as { fill?: string }).fill || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n '[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:size-2.5',\n indicator === 'dot' && 'items-center',\n )}\n >\n {formatter && item.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload as Payload<ValueType, NameType>[])\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn('border-(--color-border) bg-(--color-bg) rounded-xs shrink-0', {\n 'h-2.5 w-2.5': indicator === 'dot',\n 'my-0.5': nestLabel && indicator === 'dashed',\n 'w-0 border border-dashed bg-transparent': indicator === 'dashed',\n 'w-1': indicator === 'line',\n })}\n style={\n {\n '--color-bg': indicatorColor,\n '--color-border': indicatorColor,\n } as CSSProperties\n }\n />\n )\n )}\n <div\n className={cn('flex flex-1 justify-between leading-none', nestLabel ? 'items-end' : 'items-center')}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">{itemConfig?.label || item.name}</span>\n </div>\n {item.value ? (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\n </span>\n ) : null}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: ChartLegend\n * -------------------------------------------------------------------------- */\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\n/* -----------------------------------------------------------------------------\n * Component: ChartLegendContent\n * -------------------------------------------------------------------------- */\n\nconst CHART_LEGEND_CONTENT_NAME = 'ChartLegendContent';\n\nfunction ChartLegendContent({\n __scopeChart,\n className,\n hideIcon = false,\n nameKey,\n payload,\n verticalAlign = 'bottom',\n}: ScopedProps<\n ComponentProps<'div'> &\n Pick<RechartsPrimitive.LegendProps, 'payload' | 'verticalAlign'> & {\n hideIcon?: boolean;\n nameKey?: string;\n }\n>): ReactNode {\n const { config } = useChartContext(CHART_LEGEND_CONTENT_NAME, __scopeChart);\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div className={cn('flex items-center justify-center gap-4', verticalAlign === 'top' ? 'pb-3' : 'pt-3', className)}>\n {payload.map((item) => {\n let key = 'value';\n\n if (nameKey) {\n key = nameKey;\n } else if (item.dataKey) {\n key = String(item.dataKey);\n }\n\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={String(item.value)}\n className={cn('[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:size-3')}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"size-2 shrink-0 rounded-md\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Helpers\n * -------------------------------------------------------------------------- */\n\n/**\n * Extracts and returns the appropriate configuration object from\n * the payload based on the specified key.\n *\n * @param config - The chart configuration object that contains various\n * settings.\n * @param payload - The payload object that might contain nested payload data.\n * @param key - The key used to retrieve the specific configuration from the\n * chart config.\n * @returns Returns a configuration object with optional properties `icon`,\n * `label`, `color` or `theme`, or `undefined` if the payload is invalid or\n * no configuration is found for the provided key.\n */\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string): ChartConfigItem | undefined {\n if (!isValidObject(payload)) {\n return undefined;\n }\n\n const nestedPayload = 'payload' in payload && isValidObject(payload.payload) ? payload.payload : undefined;\n\n const configLabelKey = getConfigLabelKey(payload, nestedPayload, key);\n\n return configLabelKey in config ? config[configLabelKey] : config[key];\n}\n\n/**\n * Checks if the provided value is a valid object.\n *\n * @param obj - The value to check.\n * @returns - Returns true if the value is an object and not null, false\n * otherwise.\n */\nfunction isValidObject(obj: unknown): obj is Record<string, unknown> {\n return typeof obj === 'object' && obj !== null;\n}\n\n/**\n * Retrieves the configuration label key from either the payload or\n * nestedPayload. If the key exists in the payload and is a string, the\n * corresponding value is returned. Otherwise, if the key exists in the\n * nestedPayload and is a string, its value is returned. If the key is not\n * found as a string in either object, the key itself is returned.\n *\n * @param payload - The primary payload containing key-value pairs.\n * @param nestedPayload - An optional nested payload containing additional\n * key-value pairs.\n * @param key - The key to search for within the payload and nestedPayload.\n *\n * @returns The string value associated with the key if found; otherwise, the\n * key itself.\n */\nfunction getConfigLabelKey(\n payload: Record<string, unknown>,\n nestedPayload: Record<string, unknown> | undefined,\n key: string,\n): string {\n if (key in payload && typeof payload[key] === 'string') {\n return payload[key];\n }\n\n if (nestedPayload && key in nestedPayload && typeof nestedPayload[key] === 'string') {\n return nestedPayload[key];\n }\n\n return key;\n}\n\n/**\n * Generates CSS for a specified theme and chart configuration.\n *\n * @param theme - The theme to be used (for example, 'light', 'dark').\n * @param id - The unique identifier of the chart.\n * @param configEntries - A list of configuration entries, each containing a\n * key and a chart configuration.\n * @returns The generated CSS as a string.\n */\nfunction generateThemeCSS(theme: Theme, id: string, configEntries: [string, ChartConfig[string]][]): string {\n const rules: string[] = [];\n\n rules.push(`${THEMES[theme]} [data-chart=${id}] {`);\n\n for (const [key, itemConfig] of configEntries) {\n const color = itemConfig?.theme?.[theme] || itemConfig?.color;\n\n if (color) {\n rules.push(` --color-${key}: ${color};`);\n }\n }\n\n rules.push('}');\n\n return rules.join('\\n');\n}\n\n/**\n * Generates CSS styles for a chart based on the provided configuration and\n * themes.\n *\n * @param id - The unique identifier for the chart element.\n * @param config - Configuration object for the chart. This includes theme and\n * color settings.\n * @returns A string containing the generated CSS rules.\n */\nfunction generateCSS(id: string, config: ChartConfig): string {\n const themeOrColorConfig = Object.entries(config).filter(([_, itemConfig]) => itemConfig?.theme || itemConfig?.color);\n\n const allRules: string[] = [];\n\n for (const theme of Object.keys(THEMES)) {\n const themeCSS = generateThemeCSS(theme as Theme, id, themeOrColorConfig);\n\n allRules.push(themeCSS);\n }\n\n return allRules.join('\\n');\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport type { ChartConfig };\nexport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n ChartTooltip,\n ChartTooltipContent,\n createChartScope,\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/
|
|
1
|
+
{"version":3,"sources":["/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-NHKDM4JU.cjs","../src/components/slider.tsx"],"names":["Slider","className","defaultValue","value","min","max","props","_values","useMemo","jsxs","cn","jsx","_","index"],"mappings":"AAAA,mZAAwC,oGCAP,8BACsB,+CAyBnD,SAjBKA,CAAAA,CAAO,CACd,SAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,GAAA,CAAAC,CAAAA,CAAM,CAAA,CACN,GAAA,CAAAC,CAAAA,CAAM,GAAA,CACN,GAAGC,CACL,CAAA,CAA6D,CAC3D,IAAMC,CAAAA,CAAUC,4BAAAA,CAAQ,CAAA,EAClB,KAAA,CAAM,OAAA,CAAQL,CAAK,CAAA,CACdA,CAAAA,CAGF,KAAA,CAAM,OAAA,CAAQD,CAAY,CAAA,CAAIA,CAAAA,CAAe,CAACE,CAAAA,CAAKC,CAAG,CAAA,CAC5D,CAACF,CAAAA,CAAOD,CAAAA,CAAcE,CAAAA,CAAKC,CAAG,CAAC,CAAA,CAElC,OACEI,8BAAAA,CAAiB,CAAA,IAAA,CAAhB,CACC,SAAA,CAAWC,iCAAAA,mOACT,CACAT,CACF,CAAA,CACA,WAAA,CAAU,QAAA,CACV,YAAA,CAAcC,CAAAA,CACd,GAAA,CAAKG,CAAAA,CACL,GAAA,CAAKD,CAAAA,CACL,KAAA,CAAOD,CAAAA,CACN,GAAGG,CAAAA,CAEJ,QAAA,CAAA,CAAAK,6BAAAA,CAAiB,CAAA,KAAA,CAAhB,CACC,SAAA,CAAU,sMAAA,CACV,WAAA,CAAU,cAAA,CAEV,QAAA,CAAAA,6BAAAA,CAAiB,CAAA,KAAA,CAAhB,CACC,SAAA,CAAU,6FAAA,CACV,WAAA,CAAU,cAAA,CACZ,CAAA,CACF,CAAA,CACC,KAAA,CAAM,IAAA,CAAK,CAAE,MAAA,CAAQJ,CAAAA,CAAQ,MAAO,CAAA,CAAG,CAACK,CAAAA,CAAGC,CAAAA,CAAAA,EAC1CF,6BAAAA,CAAiB,CAAA,KAAA,CAAhB,CAEC,YAAA,CAAW,QAAA,CACX,SAAA,CAAWD,iCAAAA,qUAEX,CAAA,CACA,WAAA,CAAU,cAAA,CAAA,CALLG,CAMP,CACD,CAAA,CAAA,CACH,CAEJ,CAAA,cAAA","file":"/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-NHKDM4JU.cjs","sourcesContent":[null,"import * as SliderPrimitive from '@radix-ui/react-slider';\nimport { type ComponentProps, type JSX, useMemo } from 'react';\n\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Component: Slider\n * -------------------------------------------------------------------------- */\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: ComponentProps<typeof SliderPrimitive.Root>): JSX.Element {\n const _values = useMemo(() => {\n if (Array.isArray(value)) {\n return value;\n }\n\n return Array.isArray(defaultValue) ? defaultValue : [min, max];\n }, [value, defaultValue, min, max]);\n\n return (\n <SliderPrimitive.Root\n className={cn(\n 'data-disabled:opacity-50 relative flex w-full touch-none select-none items-center data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col',\n className,\n )}\n data-slot=\"slider\"\n defaultValue={defaultValue}\n max={max}\n min={min}\n value={value}\n {...props}\n >\n <SliderPrimitive.Track\n className=\"bg-input relative w-full grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1 data-[orientation=vertical]:h-full data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-1\"\n data-slot=\"slider-track\"\n >\n <SliderPrimitive.Range\n className=\"bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n data-slot=\"slider-range\"\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n key={index}\n aria-label=\"Volume\"\n className={cn(\n 'border-primary bg-primary after:bg-background active:not-data-disabled:after:size-1 focus-visible:ring-primary/20 dark:focus-visible:ring-primary/40 outline-hidden flex size-4 items-center justify-center rounded-full border-2 shadow-sm after:size-full after:rounded-full after:transition-[width,height] focus-visible:ring-4',\n )}\n data-slot=\"slider-thumb\"\n />\n ))}\n </SliderPrimitive.Root>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { Slider };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/
|
|
1
|
+
{"version":3,"sources":["/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-NJZ3TDB6.cjs","../src/components/input-password.tsx"],"names":["InputPrimitive","root","InputPassword","className","disabled","readOnly","props","type","setType","useState","togglePasswordVisibility","prev","jsxs","suffix","spinner","jsx","Spinner","Button","EyeOffIcon","PasswordInput"],"mappings":"AAAA,uWAAY,CAAC,wDAAwC,wDAAyC,wDCKlFA,oFACH,2CACA,8BA4CiB,+CAlCX,GAAA,CAAAC,KAAuB,CAAA,CAMtC,CAAA,IAAA,CAAA,CAAA,CAAA,CAASC,iCAAAA,CACP,CAAA,SAAAC,CAAAA,CACA,CAAA,SAAAC,CACA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAA,cAEA,CAAA,CAAA,CAAA,OACA,CAAA,CAAA,CAAA,MAAAC,CACA,CAAA,CAAA,QACA,CAAA,CAAA,CAAA,OACA,CAAA,CAAGC,CACL,MAGQ,CAACC,CAAAA,CAAMC,GAAWC,CAAAA,CAA8B,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,6BAE1DC,UACKC,CAAAA,CAAAA,CAAUA,CAAAA,gCAAAA,CAAS,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAa,UAAS,CAAA,MACpD,CAAG,UAEH,CACEC,CAAAA,CAAgB,CAAA,CAAA,CAAA,CAAA,OACd,8BAAA,CAAA,CAAA,IAAWX,CAAK,CAAE,SAAA,CAAW,CAAC,CAACY,CAAAA,SAAU,CAAA,CAAUV,CAAS,CAAE,EAAC,QAC/D,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,WAAA,CAAA,gBAEV,CAAA,QAAA,CAAA,CAAA,CAAA,cAEA,CAAA,CAAA,CAAA,OACA,CAAA,CAAA,CAAA,MAAUE,CACV,CAAA,CAAA,QAASS,CAAWC,CAAAA,CAACC,OACrB,CAAA,CAAA,EAAA,6BAAA,mBAAQH,CAER,CAAA,CAAA,CAAA,CAAA,MAAAE,CAAAA,CAAgB,CAAA,QACd,CAAA,CAAA,6BAAA,CAAA,CAAA,IAAA,CAAA,CAAA,cACA,CAAA,MAAiB,CAAA,SACjB,CAAA,CAAA,CAAA,CAAU,CAAA,WAAA,CAAA,qBAGZ,CAAA,IACCE,CAAA,CACC,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,6BAAA,mBAAA,CAAA,CAAYV,YAAS,CAAA,CAAA,GAAa,UAAA,CAAA,eAAkB,CAAA,eAC1C,CAAA,SAAA,CAAA,8EACA,CAAA,WAAA,CAAA,uBAEV,CAAA,QAAQA,CAAS,CAAA,CAAA,MAAA,CAAA,CAAA,GAAcW,UAAiB,CAAA,6BAAQ,uBACxD,CAAA,CAAA,CAAA,CAAA,CAAK,6BAAA,oBAAA,CAAA,CAAA,CAAA,CACL,CAAA,IAAA,CAAA,MAAQ,CAAA,OACR,CAAA,OACF,CACF,OAaEC,CAAgBjB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,6BAAAA","file":"/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-NJZ3TDB6.cjs","sourcesContent":[null,"'use client';\n\nimport type { ComponentProps, JSX, MouseEventHandler } from 'react';\nimport type { VariantProps } from 'tailwind-variants';\n\nimport * as InputPrimitive from '@codefast-ui/input';\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\nimport { useCallback, useState } from 'react';\n\nimport { Button } from '@/components/button';\nimport { inputVariants } from '@/components/input';\nimport { Spinner } from '@/components/spinner';\n\n/* -----------------------------------------------------------------------------\n * Variant: InputPassword\n * -------------------------------------------------------------------------- */\n\nconst { input, root } = inputVariants();\n\n/* -----------------------------------------------------------------------------\n * Component: InputPassword\n * -------------------------------------------------------------------------- */\n\nfunction InputPassword({\n className,\n disabled,\n loaderPosition,\n loading,\n prefix,\n readOnly,\n spinner,\n suffix,\n ...props\n}: ComponentProps<typeof InputPrimitive.Root> &\n Omit<ComponentProps<typeof InputPrimitive.Item>, 'prefix' | 'type'> &\n VariantProps<typeof inputVariants>): JSX.Element {\n const [type, setType] = useState<'password' | 'text'>('password');\n\n const togglePasswordVisibility = useCallback<MouseEventHandler<HTMLButtonElement>>(() => {\n setType((prev) => (prev === 'password' ? 'text' : 'password'));\n }, []);\n\n return (\n <InputPrimitive.Root\n className={root({ className: [!suffix && 'pr-1.5', className] })}\n data-slot=\"input-password\"\n disabled={disabled}\n loaderPosition={loaderPosition}\n loading={loading}\n prefix={prefix}\n readOnly={readOnly}\n spinner={spinner || <Spinner />}\n suffix={suffix}\n >\n <InputPrimitive.Item\n autoCapitalize=\"none\"\n className={input()}\n data-slot=\"input-password-item\"\n type={type}\n {...props}\n />\n <Button\n aria-label={type === 'password' ? 'Show password' : 'Hide password'}\n className=\"focus-visible:not-disabled:bg-input size-7 rounded-full focus-visible:ring-0\"\n data-slot=\"input-password-toggle\"\n disabled={disabled}\n prefix={type === 'password' ? <EyeOffIcon /> : <EyeIcon />}\n size=\"icon\"\n variant=\"ghost\"\n onClick={togglePasswordVisibility}\n />\n </InputPrimitive.Root>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Deprecated\n * -------------------------------------------------------------------------- */\n\n/**\n * @deprecated\n * This component is an alias of the Input component.\n * Please use the Input component instead to ensure consistency.\n */\nconst PasswordInput = InputPassword;\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { InputPassword, PasswordInput };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/
|
|
1
|
+
{"version":3,"sources":["/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-NOJBMCCJ.cjs","../src/components/form.tsx"],"names":["createFormFieldContext","FormFieldProvider","useFormFieldContext","FORM_FIELD_NAME","useFormItem","consumerName","scope","id","useFormItemContext","name","fieldState","getFieldState"],"mappings":"AAAA,ylBAAY,CAAC,wDAAwC,wDCO5C,uDACA,iDACA,8BACA,gDAyEH,+CA1DkB,IAAA,CAAA,CAAA,2BAAA,CAAA,CAIlB,CAACA,WASAC,CAAAA,CAAmBC,CAAmB,CAAA,CAAIF,CAAAA,CAA8CG,8CAAe,CAE9G,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAASC,CAAAA,CACPC,CAAAA,CACAC,SAaQ,CAAAC,CAAG,CAAA,CAAIC,CAAAA,CAAmBH,CAAAA,GAAmB,CAC/C,EAAE,CAAA,CAAA,CAAA,CAAAI,CAAK,CAAA,CAAIP,CAAAA,CAAoBG,CAAAA,CAAcC,CAAK,IAChD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,aACyB,CAAA,CAAA,CAAA,CAAA,2CAAAG,CAAM,CAAA,CACjCC,CAAAA,yCAAaC,CAAcF,IAAe,CAEhD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CACL,CAAA,CAAA,CAAAF,CAAAA,CACA,CAAA,MACA,CAAA,EAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,iBAAmB,CAAA,CAAA,sBACnB,EAAA,CAAA,CAAY,CAAA","file":"/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-NOJBMCCJ.cjs","sourcesContent":[null,"'use client';\n\nimport type { Scope } from '@radix-ui/react-context';\nimport type * as LabelPrimitive from '@radix-ui/react-label';\nimport type { ComponentProps, JSX, ReactNode } from 'react';\nimport type { ControllerProps, FieldError, FieldPath, FieldValues } from 'react-hook-form';\n\nimport { createContextScope } from '@radix-ui/react-context';\nimport { Slot } from '@radix-ui/react-slot';\nimport { useId } from 'react';\nimport { Controller, FormProvider, useFormContext, useFormState } from 'react-hook-form';\n\nimport { Label } from '@/components/label';\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Component: Form\n * -------------------------------------------------------------------------- */\n\nconst Form = FormProvider;\n\n/* -----------------------------------------------------------------------------\n * Context: FormField\n * -------------------------------------------------------------------------- */\n\nconst FORM_FIELD_NAME = 'FormField';\n\ntype ScopedProps<P> = P & { __scopeFormField?: Scope };\n\nconst [createFormFieldContext, createFormFieldScope] = createContextScope(FORM_FIELD_NAME);\n\ninterface FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> {\n name: TName;\n}\n\nconst [FormFieldProvider, useFormFieldContext] = createFormFieldContext<FormFieldContextValue>(FORM_FIELD_NAME);\n\nfunction useFormItem(\n consumerName: string,\n scope: Scope,\n): {\n formDescriptionId: string;\n formItemId: string;\n formMessageId: string;\n id: string;\n invalid: boolean;\n isDirty: boolean;\n isTouched: boolean;\n isValidating: boolean;\n name: string;\n error?: FieldError;\n} {\n const { id } = useFormItemContext(consumerName, scope);\n const { name } = useFormFieldContext(consumerName, scope);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name });\n const fieldState = getFieldState(name, formState);\n\n return {\n id,\n name,\n formDescriptionId: `form-item-description-${id}`,\n formItemId: `form-item-${id}`,\n formMessageId: `form-item-message-${id}`,\n ...fieldState,\n };\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormField\n * -------------------------------------------------------------------------- */\n\nfunction FormField<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(formFieldProps: ScopedProps<ControllerProps<TFieldValues, TName>>): JSX.Element {\n const { __scopeFormField, ...props } = formFieldProps;\n\n return (\n <FormFieldProvider name={props.name} scope={__scopeFormField}>\n <Controller {...props} />\n </FormFieldProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Context: FormItem\n * -------------------------------------------------------------------------- */\n\nconst FORM_ITEM_NAME = 'FormItem';\n\ninterface FormItemContextValue {\n id: string;\n}\n\nconst [FormItemProvider, useFormItemContext] = createFormFieldContext<FormItemContextValue>(FORM_ITEM_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: FormItem\n * -------------------------------------------------------------------------- */\n\nfunction FormItem({ __scopeFormField, className, ...props }: ScopedProps<ComponentProps<'div'>>): JSX.Element {\n const id = useId();\n\n return (\n <FormItemProvider id={id} scope={__scopeFormField}>\n <div className={cn('grid gap-2', className)} data-slot=\"form-item\" {...props} />\n </FormItemProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormLabel\n * -------------------------------------------------------------------------- */\n\nconst FORM_LABEL_NAME = 'FormLabel';\n\nfunction FormLabel({\n __scopeFormField,\n ...props\n}: ScopedProps<ComponentProps<typeof LabelPrimitive.Root>>): JSX.Element {\n const { formItemId, error } = useFormItem(FORM_LABEL_NAME, __scopeFormField);\n\n return <Label data-invalid={error ? true : undefined} data-slot=\"form-label\" htmlFor={formItemId} {...props} />;\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormControl\n * -------------------------------------------------------------------------- */\n\nconst FORM_CONTROL_NAME = 'FormControl';\n\nfunction FormControl({ __scopeFormField, ...props }: ScopedProps<ComponentProps<typeof Slot>>): JSX.Element {\n const { formDescriptionId, formItemId, formMessageId, error } = useFormItem(FORM_CONTROL_NAME, __scopeFormField);\n\n return (\n <Slot\n aria-describedby={error ? `${formDescriptionId} ${formMessageId}` : formDescriptionId}\n aria-invalid={Boolean(error)}\n data-slot=\"form-control\"\n id={formItemId}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormDescription\n * -------------------------------------------------------------------------- */\n\nfunction FormDescription({ __scopeFormField, className, ...props }: ScopedProps<ComponentProps<'p'>>): JSX.Element {\n const { formDescriptionId } = useFormItem(FORM_MESSAGE_NAME, __scopeFormField);\n\n return (\n <p\n className={cn('text-muted-foreground text-xs', className)}\n data-slot=\"form-description\"\n id={formDescriptionId}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: FormMessage\n * -------------------------------------------------------------------------- */\n\nconst FORM_MESSAGE_NAME = 'FormMessage';\n\nfunction FormMessage({ __scopeFormField, children, className, ...props }: ScopedProps<ComponentProps<'p'>>): ReactNode {\n const { formMessageId, error } = useFormItem(FORM_MESSAGE_NAME, __scopeFormField);\n const body = error?.message ? String(error.message) : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n className={cn('text-xs', error?.message ? 'text-destructive font-medium' : 'text-muted-foreground', className)}\n data-slot=\"form-message\"\n id={formMessageId}\n {...props}\n >\n {body}\n </p>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { createFormFieldScope, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/chunk-OBHL2EPC.cjs","../src/components/data-table.tsx"],"names":["jsxs","DropdownMenu","DropdownMenuTrigger","buttonVariants","jsx","Settings2Icon","DropdownMenuContent","DropdownMenuLabel","column","DropdownMenuCheckboxItem","DataTablePagination","className","props","pageSize","table","cn","SelectTrigger","SelectValue","size","SelectItem","Button","DataTableColumnHeader","DropdownMenuItem","ChevronUpIcon","ChevronDownIcon","DropdownMenuSeparator","EyeOffIcon","Fragment","title","SortIcon","sorted"],"mappings":"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","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-OBHL2EPC.cjs","sourcesContent":[null,"'use client';\n\nimport type * as ReactTable from '@tanstack/react-table';\nimport type { ComponentProps, JSX } from 'react';\n\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronsLeftIcon,\n ChevronsRightIcon,\n ChevronsUpDownIcon,\n ChevronUpIcon,\n EyeOffIcon,\n Settings2Icon,\n} from 'lucide-react';\n\nimport { Button, buttonVariants } from '@/components/button';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/components/dropdown-menu';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/select';\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Component: DataTableViewOptions\n * -------------------------------------------------------------------------- */\n\nfunction DataTableViewOptions<TData>({ table }: { table: ReactTable.Table<TData> }): JSX.Element {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger className={buttonVariants({ size: 'sm', variant: 'outline' })}>\n <Settings2Icon className=\"size-4\" />\n View\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-36\">\n <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => column.accessorFn !== undefined && column.getCanHide())\n .map((column) => (\n <DropdownMenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n className=\"capitalize\"\n onCheckedChange={(value) => {\n column.toggleVisibility(Boolean(value));\n }}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DataTablePagination\n * -------------------------------------------------------------------------- */\n\nfunction DataTablePagination<TData>({\n className,\n table,\n ...props\n}: ComponentProps<'div'> & {\n table: ReactTable.Table<TData>;\n}): JSX.Element {\n const pageSize = table.getState().pagination.pageSize;\n\n return (\n <div className={cn('flex flex-wrap items-center justify-between gap-4 px-2', className)} {...props}>\n <div className=\"text-muted-foreground min-w-max flex-1 text-sm\">\n {table.getFilteredSelectedRowModel().rows.length} of {table.getFilteredRowModel().rows.length} row(s) selected.\n </div>\n <div className=\"flex grow flex-wrap items-center justify-between gap-4 md:justify-end md:gap-x-6 lg:gap-x-8\">\n <div className=\"flex flex-wrap items-center gap-x-2 gap-y-4\">\n <p className=\"text-sm font-medium\">Rows per page</p>\n <Select\n value={pageSize.toString()}\n onValueChange={(value) => {\n table.setPageSize(Number(value));\n }}\n >\n <SelectTrigger className=\"w-18 h-8\">\n <SelectValue placeholder={pageSize} />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {[10, 20, 30, 40, 50].map((size) => (\n <SelectItem key={size} value={String(size)}>\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex flex-wrap items-center justify-center text-sm font-medium\">\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n </div>\n <div className=\"flex flex-wrap items-center gap-x-2 gap-y-4\">\n <Button\n className=\"size-8 max-md:hidden\"\n disabled={!table.getCanPreviousPage()}\n size=\"icon\"\n variant=\"outline\"\n onClick={() => {\n table.setPageIndex(0);\n }}\n >\n <span className=\"sr-only\">Go to first page</span>\n <ChevronsLeftIcon className=\"size-4\" />\n </Button>\n <Button\n className=\"size-8\"\n disabled={!table.getCanPreviousPage()}\n size=\"icon\"\n variant=\"outline\"\n onClick={() => {\n table.previousPage();\n }}\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n <Button\n className=\"size-8\"\n disabled={!table.getCanNextPage()}\n size=\"icon\"\n variant=\"outline\"\n onClick={() => {\n table.nextPage();\n }}\n >\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRightIcon className=\"size-4\" />\n </Button>\n <Button\n className=\"size-8 max-md:hidden\"\n disabled={!table.getCanNextPage()}\n size=\"icon\"\n variant=\"outline\"\n onClick={() => {\n table.setPageIndex(table.getPageCount() - 1);\n }}\n >\n <span className=\"sr-only\">Go to last page</span>\n <ChevronsRightIcon className=\"size-4\" />\n </Button>\n </div>\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DataTableColumnHeader\n * -------------------------------------------------------------------------- */\n\nfunction DataTableColumnHeader<TData, TValue>({\n column,\n title,\n}: {\n column: ReactTable.Column<TData, TValue>;\n title: string;\n}): JSX.Element {\n if (!column.getCanSort()) {\n return <>{title}</>;\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n className={cn('hover:not-disabled:bg-initial p-0 text-sm focus-visible:ring-0')}\n size=\"sm\"\n suffix={<SortIcon className=\"opacity-50\" sorted={column.getIsSorted()} />}\n variant=\"ghost\"\n >\n {title}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\">\n <DropdownMenuItem\n onClick={() => {\n column.toggleSorting(false);\n }}\n >\n <ChevronUpIcon className=\"size-4 opacity-50\" />\n Asc\n </DropdownMenuItem>\n <DropdownMenuItem\n onClick={() => {\n column.toggleSorting(true);\n }}\n >\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n Desc\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={() => {\n column.toggleVisibility(false);\n }}\n >\n <EyeOffIcon className=\"size-4 opacity-50\" />\n Hide\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nfunction SortIcon({\n sorted,\n className,\n}: {\n sorted: false | ReactTable.SortDirection;\n className?: string;\n}): JSX.Element {\n switch (sorted) {\n case 'desc': {\n return <ChevronDownIcon className={className} />;\n }\n\n case 'asc': {\n return <ChevronUpIcon className={className} />;\n }\n\n default: {\n return <ChevronsUpDownIcon className={className} />;\n }\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { DataTableColumnHeader, DataTablePagination, DataTableViewOptions };\n"]}
|
|
1
|
+
{"version":3,"sources":["/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-OBHL2EPC.cjs","../src/components/data-table.tsx"],"names":["jsxs","DropdownMenu","DropdownMenuTrigger","buttonVariants","jsx","Settings2Icon","DropdownMenuContent","DropdownMenuLabel","column","DropdownMenuCheckboxItem","DataTablePagination","className","props","pageSize","table","cn","SelectTrigger","SelectValue","size","SelectItem","Button","DataTableColumnHeader","DropdownMenuItem","ChevronUpIcon","ChevronDownIcon","DropdownMenuSeparator","EyeOffIcon","Fragment","title","SortIcon","sorted"],"mappings":"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","file":"/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-OBHL2EPC.cjs","sourcesContent":[null,"'use client';\n\nimport type * as ReactTable from '@tanstack/react-table';\nimport type { ComponentProps, JSX } from 'react';\n\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronsLeftIcon,\n ChevronsRightIcon,\n ChevronsUpDownIcon,\n ChevronUpIcon,\n EyeOffIcon,\n Settings2Icon,\n} from 'lucide-react';\n\nimport { Button, buttonVariants } from '@/components/button';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/components/dropdown-menu';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/select';\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Component: DataTableViewOptions\n * -------------------------------------------------------------------------- */\n\nfunction DataTableViewOptions<TData>({ table }: { table: ReactTable.Table<TData> }): JSX.Element {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger className={buttonVariants({ size: 'sm', variant: 'outline' })}>\n <Settings2Icon className=\"size-4\" />\n View\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-36\">\n <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => column.accessorFn !== undefined && column.getCanHide())\n .map((column) => (\n <DropdownMenuCheckboxItem\n key={column.id}\n checked={column.getIsVisible()}\n className=\"capitalize\"\n onCheckedChange={(value) => {\n column.toggleVisibility(Boolean(value));\n }}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DataTablePagination\n * -------------------------------------------------------------------------- */\n\nfunction DataTablePagination<TData>({\n className,\n table,\n ...props\n}: ComponentProps<'div'> & {\n table: ReactTable.Table<TData>;\n}): JSX.Element {\n const pageSize = table.getState().pagination.pageSize;\n\n return (\n <div className={cn('flex flex-wrap items-center justify-between gap-4 px-2', className)} {...props}>\n <div className=\"text-muted-foreground min-w-max flex-1 text-sm\">\n {table.getFilteredSelectedRowModel().rows.length} of {table.getFilteredRowModel().rows.length} row(s) selected.\n </div>\n <div className=\"flex grow flex-wrap items-center justify-between gap-4 md:justify-end md:gap-x-6 lg:gap-x-8\">\n <div className=\"flex flex-wrap items-center gap-x-2 gap-y-4\">\n <p className=\"text-sm font-medium\">Rows per page</p>\n <Select\n value={pageSize.toString()}\n onValueChange={(value) => {\n table.setPageSize(Number(value));\n }}\n >\n <SelectTrigger className=\"w-18 h-8\">\n <SelectValue placeholder={pageSize} />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {[10, 20, 30, 40, 50].map((size) => (\n <SelectItem key={size} value={String(size)}>\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex flex-wrap items-center justify-center text-sm font-medium\">\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n </div>\n <div className=\"flex flex-wrap items-center gap-x-2 gap-y-4\">\n <Button\n className=\"size-8 max-md:hidden\"\n disabled={!table.getCanPreviousPage()}\n size=\"icon\"\n variant=\"outline\"\n onClick={() => {\n table.setPageIndex(0);\n }}\n >\n <span className=\"sr-only\">Go to first page</span>\n <ChevronsLeftIcon className=\"size-4\" />\n </Button>\n <Button\n className=\"size-8\"\n disabled={!table.getCanPreviousPage()}\n size=\"icon\"\n variant=\"outline\"\n onClick={() => {\n table.previousPage();\n }}\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeftIcon className=\"size-4\" />\n </Button>\n <Button\n className=\"size-8\"\n disabled={!table.getCanNextPage()}\n size=\"icon\"\n variant=\"outline\"\n onClick={() => {\n table.nextPage();\n }}\n >\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRightIcon className=\"size-4\" />\n </Button>\n <Button\n className=\"size-8 max-md:hidden\"\n disabled={!table.getCanNextPage()}\n size=\"icon\"\n variant=\"outline\"\n onClick={() => {\n table.setPageIndex(table.getPageCount() - 1);\n }}\n >\n <span className=\"sr-only\">Go to last page</span>\n <ChevronsRightIcon className=\"size-4\" />\n </Button>\n </div>\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: DataTableColumnHeader\n * -------------------------------------------------------------------------- */\n\nfunction DataTableColumnHeader<TData, TValue>({\n column,\n title,\n}: {\n column: ReactTable.Column<TData, TValue>;\n title: string;\n}): JSX.Element {\n if (!column.getCanSort()) {\n return <>{title}</>;\n }\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n className={cn('hover:not-disabled:bg-initial p-0 text-sm focus-visible:ring-0')}\n size=\"sm\"\n suffix={<SortIcon className=\"opacity-50\" sorted={column.getIsSorted()} />}\n variant=\"ghost\"\n >\n {title}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\">\n <DropdownMenuItem\n onClick={() => {\n column.toggleSorting(false);\n }}\n >\n <ChevronUpIcon className=\"size-4 opacity-50\" />\n Asc\n </DropdownMenuItem>\n <DropdownMenuItem\n onClick={() => {\n column.toggleSorting(true);\n }}\n >\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n Desc\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={() => {\n column.toggleVisibility(false);\n }}\n >\n <EyeOffIcon className=\"size-4 opacity-50\" />\n Hide\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nfunction SortIcon({\n sorted,\n className,\n}: {\n sorted: false | ReactTable.SortDirection;\n className?: string;\n}): JSX.Element {\n switch (sorted) {\n case 'desc': {\n return <ChevronDownIcon className={className} />;\n }\n\n case 'asc': {\n return <ChevronUpIcon className={className} />;\n }\n\n default: {\n return <ChevronsUpDownIcon className={className} />;\n }\n }\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { DataTableColumnHeader, DataTablePagination, DataTableViewOptions };\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use client";import{a as r}from"./chunk-OKUFCFYT.js";import{OTPInput as p,OTPInputContext as u}from"input-otp";import{MinusIcon as l}from"lucide-react";import{use as c}from"react";import{REGEXP_ONLY_CHARS as E,REGEXP_ONLY_DIGITS as N,REGEXP_ONLY_DIGITS_AND_CHARS as T}from"input-otp";import{jsx as e,jsxs as m}from"react/jsx-runtime";function b({className:t,containerClassName:a,...i}){return e(p,{"aria-label":"One-time password",className:r(t),containerClassName:r("flex items-center gap-2 has-disabled:opacity-50",a),"data-slot":"input-otp",...i})}function x({className:t,...a}){return e("div",{className:r("flex items-center -space-x-px",t),"data-slot":"input-otp-group",role:"group",...a})}function I({className:t,index:a,...i}){let n=c(u),{isActive:o,char:s,hasFakeCaret:d}=n.slots[a];return m("div",{className:r("border-input data-[active=true]:ring-3 data-[active=true]:border-ring data-[active=true]:ring-ring/50 not-has-disabled:shadow-xs outline-hidden data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 relative flex size-9 items-center justify-center border text-sm transition-all first:rounded-l-lg last:rounded-r-lg data-[active=true]:z-10",t),"data-active":o,"data-slot":"input-otp-slot",...i,children:[s,d?e("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center",children:e("div",{className:"animate-caret-blink bg-foreground animation-duration-1000 h-4 w-px"})}):null]})}function O({...t}){return e("div",{"data-slot":"input-otp-separator",role:"separator",...t,children:e(l,{})})}export{b as a,x as b,I as c,O as d,E as e,N as f,T as g};
|
|
2
|
+
//# sourceMappingURL=chunk-OP6TXGBC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/input-otp.tsx"],"names":["OTPInput","OTPInputContext","MinusIcon","use","REGEXP_ONLY_CHARS","REGEXP_ONLY_DIGITS","REGEXP_ONLY_DIGITS_AND_CHARS","jsx","jsxs","InputOTP","className","containerClassName","props","cn","InputOTPGroup","InputOTPSlot","index","inputOTPContext","isActive","char","hasFakeCaret","InputOTPSeparator"],"mappings":"wCAIA,OAAS,YAAAA,EAAU,mBAAAC,MAAuB,YAC1C,OAAS,aAAAC,MAAiB,eAC1B,OAAS,OAAAC,MAAW,QAqFpB,OAAS,qBAAAC,EAAmB,sBAAAC,EAAoB,gCAAAC,MAAoC,YA3EhF,cAAAC,EAwCA,QAAAC,MAxCA,oBAFJ,SAASC,EAAS,CAAE,UAAAC,EAAW,mBAAAC,EAAoB,GAAGC,CAAM,EAAiD,CAC3G,OACEL,EAACP,EAAA,CACC,aAAW,oBACX,UAAWa,EAAGH,CAAS,EACvB,mBAAoBG,EAAG,kDAAmDF,CAAkB,EAC5F,YAAU,YACT,GAAGC,EACN,CAEJ,CAMA,SAASE,EAAc,CAAE,UAAAJ,EAAW,GAAGE,CAAM,EAAuC,CAClF,OACEL,EAAC,OACC,UAAWM,EAAG,gCAAiCH,CAAS,EACxD,YAAU,kBACV,KAAK,QACJ,GAAGE,EACN,CAEJ,CAMA,SAASG,EAAa,CACpB,UAAAL,EACA,MAAAM,EACA,GAAGJ,CACL,EAEgB,CACd,IAAMK,EAAkBd,EAAIF,CAAe,EACrC,CAAE,SAAAiB,EAAU,KAAAC,EAAM,aAAAC,CAAa,EAAIH,EAAgB,MAAMD,CAAK,EAEpE,OACER,EAAC,OACC,UAAWK,EACT,+eACAH,CACF,EACA,cAAaQ,EACb,YAAU,iBACT,GAAGN,EAEH,UAAAO,EACAC,EACCb,EAAC,OAAI,UAAU,wEACb,SAAAA,EAAC,OAAI,UAAU,qEAAqE,EACtF,EACE,MACN,CAEJ,CAMA,SAASc,EAAkB,CAAE,GAAGT,CAAM,EAAuC,CAC3E,OACEL,EAAC,OAAI,YAAU,sBAAsB,KAAK,YAAa,GAAGK,EACxD,SAAAL,EAACL,EAAA,EAAU,EACb,CAEJ","sourcesContent":["'use client';\n\nimport type { ComponentProps, JSX } from 'react';\n\nimport { OTPInput, OTPInputContext } from 'input-otp';\nimport { MinusIcon } from 'lucide-react';\nimport { use } from 'react';\n\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Component: InputOtp\n * -------------------------------------------------------------------------- */\n\nfunction InputOTP({ className, containerClassName, ...props }: ComponentProps<typeof OTPInput>): JSX.Element {\n return (\n <OTPInput\n aria-label=\"One-time password\"\n className={cn(className)}\n containerClassName={cn('flex items-center gap-2 has-disabled:opacity-50', containerClassName)}\n data-slot=\"input-otp\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: InputOTPGroup\n * -------------------------------------------------------------------------- */\n\nfunction InputOTPGroup({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('flex items-center -space-x-px', className)}\n data-slot=\"input-otp-group\"\n role=\"group\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: InputOTPSlot\n * -------------------------------------------------------------------------- */\n\nfunction InputOTPSlot({\n className,\n index,\n ...props\n}: ComponentProps<'div'> & {\n index: number;\n}): JSX.Element {\n const inputOTPContext = use(OTPInputContext);\n const { isActive, char, hasFakeCaret } = inputOTPContext.slots[index];\n\n return (\n <div\n className={cn(\n 'border-input data-[active=true]:ring-3 data-[active=true]:border-ring data-[active=true]:ring-ring/50 not-has-disabled:shadow-xs outline-hidden data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 relative flex size-9 items-center justify-center border text-sm transition-all first:rounded-l-lg last:rounded-r-lg data-[active=true]:z-10',\n className,\n )}\n data-active={isActive}\n data-slot=\"input-otp-slot\"\n {...props}\n >\n {char}\n {hasFakeCaret ? (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-caret-blink bg-foreground animation-duration-1000 h-4 w-px\" />\n </div>\n ) : null}\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: InputOTPSeparator\n * -------------------------------------------------------------------------- */\n\nfunction InputOTPSeparator({ ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n <MinusIcon />\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from 'input-otp';\nexport { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/
|
|
1
|
+
{"version":3,"sources":["/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-OSBDYGS3.cjs","../src/components/button.tsx"],"names":["buttonVariants","tv","Button","children","className","disabled","loaderPosition","loading","prefix","size","spinner","suffix","variant","props","jsxs","jsx","Spinner"],"mappings":"AAAA,iIAAwC,qDCGrB,+CA6Df,IArDEA,CAAAA,CAAiBC,kCAAAA,CACrB,IAAA,CAAM,8OAAA,CACN,QAAA,CAAU,CACR,IAAA,CAAM,CACJ,EAAA,CAAI,4BAAA,CACJ,EAAA,CAAI,0BAAA,CACJ,EAAA,CAAI,2BAAA,CACJ,IAAA,CAAM,QACR,CAAA,CACA,OAAA,CAAS,CACP,OAAA,CACE,sIAAA,CACF,SAAA,CAAW,sGAAA,CACX,WAAA,CACE,gKAAA,CACF,OAAA,CACE,udAAA,CACF,KAAA,CACE,iJAAA,CACF,IAAA,CAAM,yFACR,CACF,CAAA,CACA,eAAA,CAAiB,CACf,IAAA,CAAM,IAAA,CACN,OAAA,CAAS,SACX,CACF,CAAC,CAAA,CAMD,SAASC,CAAAA,CAAO,CACd,QAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,cAAA,CAAAC,CAAAA,CAAiB,QAAA,CACjB,OAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CAOkB,CAChB,OACEC,8BAAAA,QAAC,CAAA,CACC,SAAA,CAAWd,CAAAA,CAAe,CAAE,SAAA,CAAAI,CAAAA,CAAW,IAAA,CAAAK,CAAAA,CAAM,OAAA,CAAAG,CAAQ,CAAC,CAAA,CACtD,WAAA,CAAU,QAAA,CACV,cAAA,CAAcA,CAAAA,CACd,QAAA,CAAUL,CAAAA,EAAWF,CAAAA,CACrB,IAAA,CAAK,QAAA,CACJ,GAAGQ,CAAAA,CAEH,QAAA,CAAA,CAAAN,CAAAA,EAAWD,CAAAA,GAAmB,QAAA,CAAWI,CAAAA,EAAWK,6BAAAA,mBAACC,CAAA,CAAA,CAAQ,CAAA,CAAKR,CAAAA,CAClEL,CAAAA,CACAI,CAAAA,EAAWD,CAAAA,GAAmB,QAAA,CAAWI,CAAAA,EAAWK,6BAAAA,mBAACC,CAAA,CAAA,CAAQ,CAAA,CAAKL,CAAAA,CAAAA,CACrE,CAEJ,CAAA,6BAAA","file":"/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-OSBDYGS3.cjs","sourcesContent":[null,"import type { ComponentProps, JSX, ReactNode } from 'react';\nimport type { VariantProps } from 'tailwind-variants';\n\nimport { tv } from 'tailwind-variants';\n\nimport { Spinner } from '@/components/spinner';\n\n/* -----------------------------------------------------------------------------\n * Variant: Button\n * -------------------------------------------------------------------------- */\n\nconst buttonVariants = tv({\n base: \"focus-visible:ring-3 outline-hidden inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-lg text-sm font-medium transition disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0\",\n variants: {\n size: {\n sm: 'h-8 px-3 has-[>svg]:px-2.5', // 32px\n md: 'h-9 px-4 has-[>svg]:px-3', // 36px\n lg: 'h-10 px-6 has-[>svg]:px-4', // 40px\n icon: 'size-9',\n },\n variant: {\n default:\n 'bg-primary text-primary-foreground focus-visible:ring-primary/20 dark:focus-visible:ring-primary/40 hover:not-disabled:bg-primary/80',\n secondary: 'bg-secondary text-secondary-foreground hover:not-disabled:bg-secondary/80 focus-visible:ring-ring/50',\n destructive:\n 'bg-destructive dark:bg-destructive/60 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 hover:not-disabled:bg-destructive/90 text-white',\n outline:\n 'border-input shadow-xs hover:not-disabled:bg-secondary hover:not-disabled:text-secondary-foreground focus-visible:ring-ring/50 focus-visible:border-ring aria-invalid:border-destructive dark:aria-invalid:border-destructive/70 hover:not-disabled:aria-invalid:border-destructive/60 focus-within:aria-invalid:ring-destructive/20 dark:focus-within:aria-invalid:ring-destructive/40 dark:bg-input/30 dark:hover:not-disabled:bg-input/50 hover:not-disabled:border-ring/60 border',\n ghost:\n 'hover:not-disabled:bg-secondary hover:not-disabled:text-secondary-foreground focus-visible:ring-ring/50 dark:hover:not-disabled:bg-secondary/50',\n link: 'text-primary hover:not-disabled:underline focus-visible:ring-ring/50 underline-offset-4',\n },\n },\n defaultVariants: {\n size: 'md',\n variant: 'default',\n },\n});\n\n/* -----------------------------------------------------------------------------\n * Component: Button\n * -------------------------------------------------------------------------- */\n\nfunction Button({\n children,\n className,\n disabled,\n loaderPosition = 'prefix',\n loading,\n prefix,\n size,\n spinner,\n suffix,\n variant,\n ...props\n}: Omit<ComponentProps<'button'>, 'prefix'> &\n VariantProps<typeof buttonVariants> & {\n loaderPosition?: 'prefix' | 'suffix';\n loading?: boolean;\n prefix?: ReactNode;\n spinner?: ReactNode;\n suffix?: ReactNode;\n }): JSX.Element {\n return (\n <button\n className={buttonVariants({ className, size, variant })}\n data-slot=\"button\"\n data-variant={variant}\n disabled={loading || disabled}\n type=\"button\"\n {...props}\n >\n {loading && loaderPosition === 'prefix' ? spinner || <Spinner /> : prefix}\n {children}\n {loading && loaderPosition === 'suffix' ? spinner || <Spinner /> : suffix}\n </button>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport { Button, buttonVariants };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/codefast/codefast/packages/ui/dist/chunk-OT65LUKH.cjs","../src/components/command.tsx"],"names":["className","CommandPrimitive","cn","props","CommandDialog","children","Dialog","DialogContent","VisuallyHidden","jsx","DialogTitle","CommandInput","SearchIcon","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","CommandLoading","CommandShortcut"],"mappings":"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","file":"/home/runner/work/codefast/codefast/packages/ui/dist/chunk-OT65LUKH.cjs","sourcesContent":[null,"'use client';\n\nimport type { ComponentProps, JSX } from 'react';\n\nimport { VisuallyHidden } from '@radix-ui/react-visually-hidden';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { SearchIcon } from 'lucide-react';\n\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from '@/components/dialog';\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Component: Command\n * -------------------------------------------------------------------------- */\n\nfunction Command({ className, ...props }: ComponentProps<typeof CommandPrimitive>): JSX.Element {\n return (\n <CommandPrimitive\n className={cn(\n 'bg-popover text-popover-foreground outline-hidden flex flex-col overflow-hidden rounded-[inherit]',\n className,\n )}\n data-slot=\"command\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandDialog\n * -------------------------------------------------------------------------- */\n\nfunction CommandDialog({ children, ...props }: ComponentProps<typeof Dialog>): JSX.Element {\n return (\n <Dialog data-slot=\"command-dialog\" {...props}>\n <DialogContent className=\"rounded-t-lg sm:rounded-lg\" data-slot=\"command-dialog-content\">\n <VisuallyHidden>\n <DialogTitle>Search command</DialogTitle>\n <DialogDescription>Use the search bar to find and select the desired command.</DialogDescription>\n </VisuallyHidden>\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input]]:h-12\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandInput\n * -------------------------------------------------------------------------- */\n\nfunction CommandInput({ className, ...props }: ComponentProps<typeof CommandPrimitive.Input>): JSX.Element {\n return (\n <div className=\"flex items-center gap-2 border-b px-3\" cmdk-input-wrapper=\"\" data-slot=\"command-input-wrapper\">\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n className={cn(\n 'placeholder:text-muted-foreground outline-hidden flex h-10 w-full text-base disabled:opacity-50 md:text-sm',\n className,\n )}\n data-slot=\"command-input\"\n {...props}\n />\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandList\n * -------------------------------------------------------------------------- */\n\nfunction CommandList({ className, ...props }: ComponentProps<typeof CommandPrimitive.List>): JSX.Element {\n return (\n <CommandPrimitive.List\n className={cn('max-h-75 overflow-y-auto overflow-x-hidden', className)}\n data-slot=\"command-list\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandEmpty\n * -------------------------------------------------------------------------- */\n\nfunction CommandEmpty({ className, ...props }: ComponentProps<typeof CommandPrimitive.Empty>): JSX.Element {\n return (\n <CommandPrimitive.Empty\n className={cn('py-6 text-center text-sm', className)}\n data-slot=\"command-empty\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandGroup\n * -------------------------------------------------------------------------- */\n\nfunction CommandGroup({ className, ...props }: ComponentProps<typeof CommandPrimitive.Group>): JSX.Element {\n return (\n <CommandPrimitive.Group\n className={cn(\n 'text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium',\n className,\n )}\n data-slot=\"command-group\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandSeparator\n * -------------------------------------------------------------------------- */\n\nfunction CommandSeparator({ className, ...props }: ComponentProps<typeof CommandPrimitive.Separator>): JSX.Element {\n return (\n <CommandPrimitive.Separator\n className={cn('bg-border -mx-1 h-px', className)}\n data-slot=\"command-separator\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandItem\n * -------------------------------------------------------------------------- */\n\nfunction CommandItem({ className, ...props }: ComponentProps<typeof CommandPrimitive.Item>): JSX.Element {\n return (\n <CommandPrimitive.Item\n className={cn(\n \"aria-selected:bg-accent aria-selected:text-accent-foreground outline-hidden group/command-item [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default select-none items-center gap-x-2 rounded-sm px-2 py-1.5 text-sm aria-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n data-slot=\"command-item\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandLoading\n * -------------------------------------------------------------------------- */\n\nfunction CommandLoading({ className, ...props }: ComponentProps<typeof CommandPrimitive.Loading>): JSX.Element {\n return (\n <CommandPrimitive.Loading\n className={cn('flex justify-center p-2', className)}\n data-slot=\"command-loading\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandShortcut\n * -------------------------------------------------------------------------- */\n\nfunction CommandShortcut({ className, ...props }: ComponentProps<'span'>): JSX.Element {\n return (\n <span\n className={cn('text-muted-foreground ml-auto text-xs tracking-widest', className)}\n data-slot=\"command-shortcut\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandLoading,\n CommandSeparator,\n CommandShortcut,\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-OT65LUKH.cjs","../src/components/command.tsx"],"names":["className","CommandPrimitive","cn","props","CommandDialog","children","Dialog","DialogContent","VisuallyHidden","jsx","DialogTitle","CommandInput","SearchIcon","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","CommandLoading","CommandShortcut"],"mappings":"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","file":"/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-OT65LUKH.cjs","sourcesContent":[null,"'use client';\n\nimport type { ComponentProps, JSX } from 'react';\n\nimport { VisuallyHidden } from '@radix-ui/react-visually-hidden';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { SearchIcon } from 'lucide-react';\n\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from '@/components/dialog';\nimport { cn } from '@/lib/utils';\n\n/* -----------------------------------------------------------------------------\n * Component: Command\n * -------------------------------------------------------------------------- */\n\nfunction Command({ className, ...props }: ComponentProps<typeof CommandPrimitive>): JSX.Element {\n return (\n <CommandPrimitive\n className={cn(\n 'bg-popover text-popover-foreground outline-hidden flex flex-col overflow-hidden rounded-[inherit]',\n className,\n )}\n data-slot=\"command\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandDialog\n * -------------------------------------------------------------------------- */\n\nfunction CommandDialog({ children, ...props }: ComponentProps<typeof Dialog>): JSX.Element {\n return (\n <Dialog data-slot=\"command-dialog\" {...props}>\n <DialogContent className=\"rounded-t-lg sm:rounded-lg\" data-slot=\"command-dialog-content\">\n <VisuallyHidden>\n <DialogTitle>Search command</DialogTitle>\n <DialogDescription>Use the search bar to find and select the desired command.</DialogDescription>\n </VisuallyHidden>\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input]]:h-12\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandInput\n * -------------------------------------------------------------------------- */\n\nfunction CommandInput({ className, ...props }: ComponentProps<typeof CommandPrimitive.Input>): JSX.Element {\n return (\n <div className=\"flex items-center gap-2 border-b px-3\" cmdk-input-wrapper=\"\" data-slot=\"command-input-wrapper\">\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n className={cn(\n 'placeholder:text-muted-foreground outline-hidden flex h-10 w-full text-base disabled:opacity-50 md:text-sm',\n className,\n )}\n data-slot=\"command-input\"\n {...props}\n />\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandList\n * -------------------------------------------------------------------------- */\n\nfunction CommandList({ className, ...props }: ComponentProps<typeof CommandPrimitive.List>): JSX.Element {\n return (\n <CommandPrimitive.List\n className={cn('max-h-75 overflow-y-auto overflow-x-hidden', className)}\n data-slot=\"command-list\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandEmpty\n * -------------------------------------------------------------------------- */\n\nfunction CommandEmpty({ className, ...props }: ComponentProps<typeof CommandPrimitive.Empty>): JSX.Element {\n return (\n <CommandPrimitive.Empty\n className={cn('py-6 text-center text-sm', className)}\n data-slot=\"command-empty\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandGroup\n * -------------------------------------------------------------------------- */\n\nfunction CommandGroup({ className, ...props }: ComponentProps<typeof CommandPrimitive.Group>): JSX.Element {\n return (\n <CommandPrimitive.Group\n className={cn(\n 'text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium',\n className,\n )}\n data-slot=\"command-group\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandSeparator\n * -------------------------------------------------------------------------- */\n\nfunction CommandSeparator({ className, ...props }: ComponentProps<typeof CommandPrimitive.Separator>): JSX.Element {\n return (\n <CommandPrimitive.Separator\n className={cn('bg-border -mx-1 h-px', className)}\n data-slot=\"command-separator\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandItem\n * -------------------------------------------------------------------------- */\n\nfunction CommandItem({ className, ...props }: ComponentProps<typeof CommandPrimitive.Item>): JSX.Element {\n return (\n <CommandPrimitive.Item\n className={cn(\n \"aria-selected:bg-accent aria-selected:text-accent-foreground outline-hidden group/command-item [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default select-none items-center gap-x-2 rounded-sm px-2 py-1.5 text-sm aria-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n data-slot=\"command-item\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandLoading\n * -------------------------------------------------------------------------- */\n\nfunction CommandLoading({ className, ...props }: ComponentProps<typeof CommandPrimitive.Loading>): JSX.Element {\n return (\n <CommandPrimitive.Loading\n className={cn('flex justify-center p-2', className)}\n data-slot=\"command-loading\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: CommandShortcut\n * -------------------------------------------------------------------------- */\n\nfunction CommandShortcut({ className, ...props }: ComponentProps<'span'>): JSX.Element {\n return (\n <span\n className={cn('text-muted-foreground ml-auto text-xs tracking-widest', className)}\n data-slot=\"command-shortcut\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\n\nexport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandLoading,\n CommandSeparator,\n CommandShortcut,\n};\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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";var _chunkIDELSFHCcjs = require('./chunk-IDELSFHC.cjs');var _chunkSRP463XHcjs = require('./chunk-SRP463XH.cjs');var _chunk3H3UNZUPcjs = require('./chunk-3H3UNZUP.cjs');var _chunkX5CR4RILcjs = require('./chunk-X5CR4RIL.cjs');var _chunkPOJOZ7HMcjs = require('./chunk-POJOZ7HM.cjs');var _chunkOSBDYGS3cjs = require('./chunk-OSBDYGS3.cjs');var _chunkSMJEDCFPcjs = require('./chunk-SMJEDCFP.cjs');var _hooks = require('@codefast/hooks');var _reactcontext = require('@radix-ui/react-context');var _reactslot = require('@radix-ui/react-slot');var _lucidereact = require('lucide-react');var _react = require('react');var _tailwindvariants = require('tailwind-variants');var _jsxruntime = require('react/jsx-runtime');var L="sidebar_state",V=60*60*24*7,$="16rem",U="18rem",W="3.0625rem",j="b",q="SidebarProvider",[F,h]=_reactcontext.createContext.call(void 0, q);function ge({defaultOpen:t=!0,open:e,onOpenChange:n,className:r,style:i,children:d,...p}){let l=_hooks.useIsMobile.call(void 0, ),[m,u]=_react.useState.call(void 0, !1),[g,z]=_react.useState.call(void 0, t),v=_nullishCoalesce(e, () => (g)),S=_react.useCallback.call(void 0, s=>{let b=typeof s=="function"?s(v):s;n?n(b):z(b),document.cookie=`${L}=${b}; path=/; max-age=${V}`},[n,v]),x=_react.useCallback.call(void 0, ()=>{l?u(s=>!s):S(s=>!s)},[l,S,u]);return _react.useEffect.call(void 0, ()=>{let s=b=>{b.key===j&&(b.metaKey||b.ctrlKey)&&(b.preventDefault(),x())};return window.addEventListener("keydown",s),()=>{window.removeEventListener("keydown",s)}},[x]),_jsxruntime.jsx.call(void 0, F,{isMobile:l,open:v,openMobile:m,setOpen:S,setOpenMobile:u,state:v?"expanded":"collapsed",toggleSidebar:x,children:_jsxruntime.jsx.call(void 0, _chunkIDELSFHCcjs.a,{delayDuration:0,children:_jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",r),"data-slot":"sidebar-wrapper",style:{"--sidebar-width":$,"--sidebar-width-icon":W,...i},...p,children:d})})})}var Y="Sidebar";function ve({side:t="left",variant:e="sidebar",collapsible:n="offcanvas",className:r,children:i,...d}){let{isMobile:p,state:l,openMobile:m,setOpenMobile:u}=h(Y);return n==="none"?_jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "bg-sidebar text-sidebar-foreground w-(--sidebar-width) flex h-full flex-col",r),"data-slot":"sidebar",...d,children:i}):p?_jsxruntime.jsx.call(void 0, _chunk3H3UNZUPcjs.a,{open:m,onOpenChange:u,...d,children:_jsxruntime.jsxs.call(void 0, _chunk3H3UNZUPcjs.c,{className:"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden","data-mobile":"true","data-sidebar":"sidebar","data-slot":"sidebar",side:t,style:{"--sidebar-width":U},children:[_jsxruntime.jsxs.call(void 0, _chunk3H3UNZUPcjs.d,{className:"sr-only",children:[_jsxruntime.jsx.call(void 0, _chunk3H3UNZUPcjs.g,{children:"Sidebar"}),_jsxruntime.jsx.call(void 0, _chunk3H3UNZUPcjs.h,{children:"Displays the mobile sidebar."})]}),_jsxruntime.jsx.call(void 0, "div",{className:"flex h-full w-full flex-col",children:i})]})}):_jsxruntime.jsxs.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "text-sidebar-foreground group peer hidden md:block",r),"data-collapsible":l==="collapsed"?n:"","data-side":t,"data-slot":"sidebar","data-state":l,"data-variant":e,children:[_jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "w-(--sidebar-width) relative 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)"),"data-slot":"sidebar-gap"}),_jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "w-(--sidebar-width) fixed inset-y-0 z-10 hidden h-svh transition-[left,right,width] duration-200 ease-linear md:flex",t==="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) group-data-[side=left]:border-r group-data-[side=right]:border-l",r),"data-slot":"sidebar-container",...d,children:_jsxruntime.jsx.call(void 0, "div",{className:"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm","data-sidebar":"sidebar","data-slot":"sidebar-inner",children:i})})]})}var Q="SidebarTrigger";function he({className:t,onClick:e,...n}){let{toggleSidebar:r}=h(Q);return _jsxruntime.jsxs.call(void 0, _chunkOSBDYGS3cjs.b,{className:_chunkSMJEDCFPcjs.a.call(void 0, "size-7",t),"data-sidebar":"trigger","data-slot":"sidebar-trigger",size:"icon",variant:"ghost",onClick:i=>{_optionalChain([e, 'optionalCall', _2 => _2(i)]),r()},...n,children:[_jsxruntime.jsx.call(void 0, _lucidereact.PanelLeftIcon,{}),_jsxruntime.jsx.call(void 0, "span",{className:"sr-only",children:"Toggle Sidebar"})]})}var Z="SidebarRail";function Se({className:t,...e}){let{toggleSidebar:n}=h(Z);return _jsxruntime.jsx.call(void 0, "button",{className:_chunkSMJEDCFPcjs.a.call(void 0, "hover:after:bg-sidebar-border in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize hover:group-data-[collapsible=offcanvas]:bg-sidebar 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] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full sm:flex [[data-side=left][data-collapsible=offcanvas]_&]:-right-2 [[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-collapsible=offcanvas]_&]:-left-2 [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",t),"data-sidebar":"rail","data-slot":"sidebar-rail",title:"Toggle Sidebar",type:"button",onClick:n,...e})}function xe({className:t,...e}){return _jsxruntime.jsx.call(void 0, "main",{className:_chunkSMJEDCFPcjs.a.call(void 0, "bg-background relative flex w-full flex-1 flex-col md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm",t),"data-slot":"sidebar-inset",...e})}function we({className:t,...e}){return _jsxruntime.jsx.call(void 0, _chunkPOJOZ7HMcjs.b,{className:_chunkSMJEDCFPcjs.a.call(void 0, "bg-background h-8 w-full shadow-none",t),"data-sidebar":"input","data-slot":"sidebar-input",...e})}function Ce({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "flex flex-col gap-2 p-2",t),"data-sidebar":"header","data-slot":"sidebar-header",...e})}function Ee({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "flex flex-col gap-2 p-2",t),"data-sidebar":"footer","data-slot":"sidebar-footer",...e})}function ye({className:t,...e}){return _jsxruntime.jsx.call(void 0, _chunkSRP463XHcjs.a,{className:_chunkSMJEDCFPcjs.a.call(void 0, "bg-sidebar-border mx-2 w-auto",t),"data-sidebar":"separator","data-slot":"sidebar-separator",...e})}function Pe({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",t),"data-sidebar":"content","data-slot":"sidebar-content",...e})}function Ne({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "relative flex w-full min-w-0 flex-col p-2",t),"data-sidebar":"group","data-slot":"sidebar-group",...e})}function Me({className:t,asChild:e=!1,...n}){return _jsxruntime.jsx.call(void 0, e?_reactslot.Slot:"div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "text-sidebar-foreground/70 ring-sidebar-ring outline-hidden focus-visible:ring-3 flex h-8 shrink-0 items-center truncate rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 [&>svg]:size-4 [&>svg]:shrink-0",t),"data-sidebar":"group-label","data-slot":"sidebar-group-label",...n})}function _e({className:t,asChild:e=!1,...n}){return _jsxruntime.jsx.call(void 0, e?_reactslot.Slot:"button",{className:_chunkSMJEDCFPcjs.a.call(void 0, "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",t),"data-sidebar":"group-action","data-slot":"sidebar-group-action",...n})}function Ie({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "w-full text-sm",t),"data-sidebar":"group-content","data-slot":"sidebar-group-content",...e})}function Ae({className:t,...e}){return _jsxruntime.jsx.call(void 0, "ul",{className:_chunkSMJEDCFPcjs.a.call(void 0, "flex w-full min-w-0 flex-col gap-1",t),"data-sidebar":"menu","data-slot":"sidebar-menu",...e})}function ke({className:t,...e}){return _jsxruntime.jsx.call(void 0, "li",{className:_chunkSMJEDCFPcjs.a.call(void 0, "group/menu-item relative",t),"data-sidebar":"menu-item","data-slot":"sidebar-menu-item",...e})}var ee=_tailwindvariants.tv.call(void 0, {base:"peer/menu-button outline-hidden ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground group-has-data-[sidebar=menu-action]/menu-item:pr-8 data-[active=true]:bg-sidebar-accent 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! focus-visible:ring-3 flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm transition-[width,height,padding] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:font-medium [&>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 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{sm:"h-7 text-xs",md:"h-8 text-sm",lg:"group-data-[collapsible=icon]:p-0! h-12 text-sm"}},defaultVariants:{variant:"default",size:"md"}}),te="SidebarMenuButton";function Xe({asChild:t=!1,isActive:e=!1,variant:n="default",size:r="md",tooltip:i,className:d,...p}){let l=t?_reactslot.Slot:"button",{isMobile:m,state:u}=h(te),g=_jsxruntime.jsx.call(void 0, l,{className:_chunkSMJEDCFPcjs.a.call(void 0, ee({variant:n,size:r}),d),"data-active":e,"data-sidebar":"menu-button","data-size":r,"data-slot":"sidebar-menu-button",...p});return i?(typeof i=="string"&&(i={children:i}),_jsxruntime.jsxs.call(void 0, _chunkIDELSFHCcjs.b,{children:[_jsxruntime.jsx.call(void 0, _chunkIDELSFHCcjs.c,{asChild:!0,children:g}),_jsxruntime.jsx.call(void 0, _chunkIDELSFHCcjs.d,{align:"center",hidden:u!=="collapsed"||m,side:"right",...i})]})):g}function De({className:t,asChild:e=!1,showOnHover:n=!1,...r}){return _jsxruntime.jsx.call(void 0, e?_reactslot.Slot:"button",{className:_chunkSMJEDCFPcjs.a.call(void 0, "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0",n&&"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0",t),"data-sidebar":"menu-action","data-slot":"sidebar-menu-action",...r})}function Je({className:t,...e}){return _jsxruntime.jsx.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground 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 group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1",t),"data-sidebar":"menu-badge","data-slot":"sidebar-menu-badge",...e})}function Te({className:t,showIcon:e=!1,...n}){let r=_react.useMemo.call(void 0, ()=>`${Math.floor(Math.random()*40)+50}%`,[]);return _jsxruntime.jsxs.call(void 0, "div",{className:_chunkSMJEDCFPcjs.a.call(void 0, "flex h-8 items-center gap-2 rounded-md px-2",t),"data-sidebar":"menu-skeleton","data-slot":"sidebar-menu-skeleton",...n,children:[e?_jsxruntime.jsx.call(void 0, _chunkX5CR4RILcjs.a,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}):null,_jsxruntime.jsx.call(void 0, _chunkX5CR4RILcjs.a,{className:"max-w-(--skeleton-width) h-4 flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":r}})]})}function ze({className:t,...e}){return _jsxruntime.jsx.call(void 0, "ul",{className:_chunkSMJEDCFPcjs.a.call(void 0, "border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden",t),"data-sidebar":"menu-sub","data-slot":"sidebar-menu-sub",...e})}function Be({className:t,...e}){return _jsxruntime.jsx.call(void 0, "li",{className:_chunkSMJEDCFPcjs.a.call(void 0, "group/menu-sub-item relative",t),"data-sidebar":"menu-sub-item","data-slot":"sidebar-menu-sub-item",...e})}function Oe({asChild:t=!1,size:e="md",isActive:n=!1,className:r,...i}){return _jsxruntime.jsx.call(void 0, t?_reactslot.Slot:"a",{className:_chunkSMJEDCFPcjs.a.call(void 0, "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 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",e==="sm"&&"text-xs",e==="md"&&"text-sm","group-data-[collapsible=icon]:hidden",r),"data-active":n,"data-sidebar":"menu-sub-button","data-size":e,"data-slot":"sidebar-menu-sub-button",...i})}exports.a = h; exports.b = ge; exports.c = ve; exports.d = he; exports.e = Se; exports.f = xe; exports.g = we; exports.h = Ce; exports.i = Ee; exports.j = ye; exports.k = Pe; exports.l = Ne; exports.m = Me; exports.n = _e; exports.o = Ie; exports.p = Ae; exports.q = ke; exports.r = Xe; exports.s = De; exports.t = Je; exports.u = Te; exports.v = ze; exports.w = Be; exports.x = Oe;
|
|
2
|
+
//# sourceMappingURL=chunk-P5KMECT7.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-P5KMECT7.cjs","../src/components/sidebar.tsx"],"names":["SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_KEYBOARD_SHORTCUT","SidebarProvider","defaultOpen","setOpenProp","className","children","isMobile","useIsMobile","openMobile","setOpenMobile","useState","isOpen","setIsOpen","open","openProp","setOpen","useCallback","value","openState"],"mappings":"AAAA,6rBAAY,CAAC,wDAA6D,wDAAyC,wDAAqE,wDAAyC,wDAAyC,wDAAyC,wDCK1S,wCACA,uDACA,iDACA,2CACA,8BACA,qDAmHD,+CAzGoB,IAAA,CAAA,CAAA,eACkB,CACxCA,CAAAA,CAAgB,EAAA,CAAA,EAAA,CAAA,EAChBC,CAAAA,CAAuB,CAAA,CAAA,CAAA,OACF,CAAA,CAAA,CAAA,OAAA,CAAA,CACrBC,CAAAA,WAgBwB,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,iBAQ9B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,yCAASC,CAAAA,CAAgB,CACvB,SAAA,EAAA,CAAAC,CAAAA,WAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAcC,YACdC,CAAAA,CACA,CAAA,SACA,CAAA,CAAA,CAAA,KAAAC,CACA,CAAA,CAAA,QAMA,CAAMC,CAAAA,CAAWC,GAAY,CACvB,CAACC,CAAAA,CAAYC,IAAiBC,CAAS,CAAA,gCAAK,CAI5C,CAACC,CAAAA,CAAQC,CAAS,CAAA,CAAIF,CAAAA,6BAASR,CAAW,CAC1CW,CAAAA,CAAOC,CAAAA,CAAAA,CAAYH,CAAAA,CACnBI,CAAAA,6BAAUC,CACbC,CAAAA,CAAAA,CAAmD,kBAClD,CAAA,SAAA,GAAMC,CAAAA,CAAY,CAAA,gCAAA,CAAA,EAAA,CAAOD,IAAU,CAAA,CAAA,OAAA,CAAaA,EAAMJ,UAG/B,CAAA,CAErBD,CAAAA,CAAUM,CAAS,CAAA,CAIrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAA,CAAA,CAAA,CAAA,QAA+B,CAAA,MAAa,CAAA,CAAA,EAAA","file":"/Users/vuongphan/Projects/codefastlabs/codefast/packages/ui/dist/chunk-P5KMECT7.cjs","sourcesContent":[null,"'use client';\n\nimport type { ComponentProps, CSSProperties, Dispatch, JSX, SetStateAction } from 'react';\nimport type { VariantProps } from 'tailwind-variants';\n\nimport { useIsMobile } from '@codefast/hooks';\nimport { createContext } from '@radix-ui/react-context';\nimport { Slot } from '@radix-ui/react-slot';\nimport { PanelLeftIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { tv } from 'tailwind-variants';\n\nimport { Button } from '@/components/button';\nimport { Input } from '@/components/input';\nimport { Separator } from '@/components/separator';\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from '@/components/sheet';\nimport { Skeleton } from '@/components/skeleton';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/tooltip';\nimport { cn } from '@/lib/utils';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3.0625rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ninterface SidebarContextProps {\n isMobile: boolean;\n open: boolean;\n openMobile: boolean;\n setOpen: (open: boolean) => void;\n setOpenMobile: Dispatch<SetStateAction<boolean>>;\n state: 'collapsed' | 'expanded';\n toggleSidebar: () => void;\n}\n\n/* -----------------------------------------------------------------------------\n * Context: SidebarProvider\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_PROVIDER_NAME = 'SidebarProvider';\n\nconst [SidebarProviderProvider, useSidebar] = createContext<SidebarContextProps>(SIDEBAR_PROVIDER_NAME);\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarProvider\n * -------------------------------------------------------------------------- */\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: ComponentProps<'div'> & {\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n open?: boolean;\n}): JSX.Element {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const open = openProp ?? isOpen;\n const setOpen = useCallback(\n (value: ((value: boolean) => boolean) | boolean) => {\n const openState = typeof value === 'function' ? value(open) : value;\n\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n setIsOpen(openState);\n }\n\n // eslint-disable-next-line unicorn/no-document-cookie -- This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = useCallback(() => {\n if (isMobile) {\n setOpenMobile((currentValue) => !currentValue);\n } else {\n setOpen((currentValue) => !currentValue);\n }\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n useEffect(() => {\n const handleKeyDown: (event: KeyboardEvent) => void = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n return (\n <SidebarProviderProvider\n isMobile={isMobile}\n open={open}\n openMobile={openMobile}\n setOpen={setOpen}\n setOpenMobile={setOpenMobile}\n state={state}\n toggleSidebar={toggleSidebar}\n >\n <TooltipProvider delayDuration={0}>\n <div\n className={cn('group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full', className)}\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarProviderProvider>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: Sidebar\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_NAME = 'Sidebar';\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: ComponentProps<'div'> & {\n collapsible?: 'icon' | 'none' | 'offcanvas';\n side?: 'left' | 'right';\n variant?: 'floating' | 'inset' | 'sidebar';\n}): JSX.Element {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar(SIDEBAR_NAME);\n\n if (collapsible === 'none') {\n return (\n <div\n className={cn('bg-sidebar text-sidebar-foreground w-(--sidebar-width) flex h-full flex-col', className)}\n data-slot=\"sidebar\"\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 className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n data-mobile=\"true\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n side={side}\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as CSSProperties\n }\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 className={cn('text-sidebar-foreground group peer hidden md:block', className)}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-side={side}\n data-slot=\"sidebar\"\n data-state={state}\n data-variant={variant}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'w-(--sidebar-width) relative bg-transparent transition-[width] duration-200 ease-linear group-data-[collapsible=offcanvas]:w-0 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 data-slot=\"sidebar-gap\"\n />\n <div\n className={cn(\n 'w-(--sidebar-width) fixed inset-y-0 z-10 hidden h-svh 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 // Adjust the padding for floating and inset variants.\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) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className,\n )}\n data-slot=\"sidebar-container\"\n {...props}\n >\n <div\n className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm\"\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarTrigger\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_TRIGGER_NAME = 'SidebarTrigger';\n\nfunction SidebarTrigger({ className, onClick, ...props }: ComponentProps<typeof Button>): JSX.Element {\n const { toggleSidebar } = useSidebar(SIDEBAR_TRIGGER_NAME);\n\n return (\n <Button\n className={cn('size-7', className)}\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarRail\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_RAIL_NAME = 'SidebarRail';\n\nfunction SidebarRail({ className, ...props }: ComponentProps<'button'>): JSX.Element {\n const { toggleSidebar } = useSidebar(SIDEBAR_RAIL_NAME);\n\n return (\n <button\n className={cn(\n 'hover:after:bg-sidebar-border in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize hover:group-data-[collapsible=offcanvas]:bg-sidebar 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] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full sm:flex [[data-side=left][data-collapsible=offcanvas]_&]:-right-2 [[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-collapsible=offcanvas]_&]:-left-2 [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n className,\n )}\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n title=\"Toggle Sidebar\"\n type=\"button\"\n onClick={toggleSidebar}\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarInset\n * -------------------------------------------------------------------------- */\n\nfunction SidebarInset({ className, ...props }: ComponentProps<'main'>): JSX.Element {\n return (\n <main\n className={cn(\n 'bg-background relative flex w-full flex-1 flex-col md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm',\n className,\n )}\n data-slot=\"sidebar-inset\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarInput\n * -------------------------------------------------------------------------- */\n\nfunction SidebarInput({ className, ...props }: ComponentProps<typeof Input>): JSX.Element {\n return (\n <Input\n className={cn('bg-background h-8 w-full shadow-none', className)}\n data-sidebar=\"input\"\n data-slot=\"sidebar-input\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarHeader\n * -------------------------------------------------------------------------- */\n\nfunction SidebarHeader({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('flex flex-col gap-2 p-2', className)}\n data-sidebar=\"header\"\n data-slot=\"sidebar-header\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarFooter\n * -------------------------------------------------------------------------- */\n\nfunction SidebarFooter({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('flex flex-col gap-2 p-2', className)}\n data-sidebar=\"footer\"\n data-slot=\"sidebar-footer\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarSeparator\n * -------------------------------------------------------------------------- */\n\nfunction SidebarSeparator({ className, ...props }: ComponentProps<typeof Separator>): JSX.Element {\n return (\n <Separator\n className={cn('bg-sidebar-border mx-2 w-auto', className)}\n data-sidebar=\"separator\"\n data-slot=\"sidebar-separator\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarContent\n * -------------------------------------------------------------------------- */\n\nfunction SidebarContent({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className,\n )}\n data-sidebar=\"content\"\n data-slot=\"sidebar-content\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroup\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroup({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('relative flex w-full min-w-0 flex-col p-2', className)}\n data-sidebar=\"group\"\n data-slot=\"sidebar-group\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroupLabel\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n ...props\n}: ComponentProps<'div'> & {\n asChild?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'div';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground/70 ring-sidebar-ring outline-hidden focus-visible:ring-3 flex h-8 shrink-0 items-center truncate rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 [&>svg]:size-4 [&>svg]:shrink-0',\n className,\n )}\n data-sidebar=\"group-label\"\n data-slot=\"sidebar-group-label\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroupAction\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n ...props\n}: ComponentProps<'button'> & {\n asChild?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'button';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0',\n className,\n )}\n data-sidebar=\"group-action\"\n data-slot=\"sidebar-group-action\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarGroupContent\n * -------------------------------------------------------------------------- */\n\nfunction SidebarGroupContent({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn('w-full text-sm', className)}\n data-sidebar=\"group-content\"\n data-slot=\"sidebar-group-content\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenu\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenu({ className, ...props }: ComponentProps<'ul'>): JSX.Element {\n return (\n <ul\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n data-sidebar=\"menu\"\n data-slot=\"sidebar-menu\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuItem\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuItem({ className, ...props }: ComponentProps<'li'>): JSX.Element {\n return (\n <li\n className={cn('group/menu-item relative', className)}\n data-sidebar=\"menu-item\"\n data-slot=\"sidebar-menu-item\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Variant: SidebarMenuButton\n * -------------------------------------------------------------------------- */\n\nconst sidebarMenuButtonVariants = tv({\n base: 'peer/menu-button outline-hidden ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground group-has-data-[sidebar=menu-action]/menu-item:pr-8 data-[active=true]:bg-sidebar-accent 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! focus-visible:ring-3 flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm transition-[width,height,padding] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:font-medium [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n sm: 'h-7 text-xs',\n md: 'h-8 text-sm',\n lg: 'group-data-[collapsible=icon]:p-0! h-12 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n});\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuButton\n * -------------------------------------------------------------------------- */\n\nconst SIDEBAR_MENU_BUTTON_NAME = 'SidebarMenuButton';\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'md',\n tooltip,\n className,\n ...props\n}: ComponentProps<'button'> &\n VariantProps<typeof sidebarMenuButtonVariants> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: ComponentProps<typeof TooltipContent> | string;\n }): JSX.Element {\n const Component = asChild ? Slot : 'button';\n const { isMobile, state } = useSidebar(SIDEBAR_MENU_BUTTON_NAME);\n\n const button = (\n <Component\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n data-active={isActive}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-slot=\"sidebar-menu-button\"\n {...props}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === 'string') {\n // eslint-disable-next-line no-param-reassign -- convert it to an object with default properties\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent align=\"center\" hidden={state !== 'collapsed' || isMobile} side=\"right\" {...tooltip} />\n </Tooltip>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuAction\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n ...props\n}: ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n}): JSX.Element {\n const Component = asChild ? Slot : 'button';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform after:absolute after:-inset-2 group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0',\n showOnHover &&\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0',\n className,\n )}\n data-sidebar=\"menu-action\"\n data-slot=\"sidebar-menu-action\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuBadge\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuBadge({ className, ...props }: ComponentProps<'div'>): JSX.Element {\n return (\n <div\n className={cn(\n 'text-sidebar-foreground peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground 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 group-data-[collapsible=icon]:hidden peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1',\n className,\n )}\n data-sidebar=\"menu-badge\"\n data-slot=\"sidebar-menu-badge\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSkeleton\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: ComponentProps<'div'> & {\n showIcon?: boolean;\n}): JSX.Element {\n // Random width between 50 to 90%.\n const width = useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n className={cn('flex h-8 items-center gap-2 rounded-md px-2', className)}\n data-sidebar=\"menu-skeleton\"\n data-slot=\"sidebar-menu-skeleton\"\n {...props}\n >\n {showIcon ? <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" /> : null}\n <Skeleton\n className=\"max-w-(--skeleton-width) h-4 flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as CSSProperties\n }\n />\n </div>\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSub\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSub({ className, ...props }: ComponentProps<'ul'>): JSX.Element {\n return (\n <ul\n className={cn(\n 'border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5 group-data-[collapsible=icon]:hidden',\n className,\n )}\n data-sidebar=\"menu-sub\"\n data-slot=\"sidebar-menu-sub\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSubItem\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSubItem({ className, ...props }: ComponentProps<'li'>): JSX.Element {\n return (\n <li\n className={cn('group/menu-sub-item relative', className)}\n data-sidebar=\"menu-sub-item\"\n data-slot=\"sidebar-menu-sub-item\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Component: SidebarMenuSubButton\n * -------------------------------------------------------------------------- */\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: ComponentProps<'a'> & {\n asChild?: boolean;\n isActive?: boolean;\n size?: 'md' | 'sm';\n}): JSX.Element {\n const Component = asChild ? Slot : 'a';\n\n return (\n <Component\n className={cn(\n 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground outline-hidden focus-visible:ring-3 data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 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',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n data-active={isActive}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-slot=\"sidebar-menu-sub-button\"\n {...props}\n />\n );\n}\n\n/* -----------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------- */\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"]}
|