@egose/shadcn-theme 0.0.50 → 0.0.51
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/{chunk-IPTLI5N5.mjs → chunk-2BKV4IJV.mjs} +4 -4
- package/chunk-2BKV4IJV.mjs.map +1 -0
- package/{chunk-2H5WIGQU.js → chunk-4FD63HEQ.js} +5 -5
- package/chunk-4FD63HEQ.js.map +1 -0
- package/chunk-4XC6EXHZ.mjs +112 -0
- package/chunk-4XC6EXHZ.mjs.map +1 -0
- package/{chunk-7TCN3MNY.js → chunk-5HD5BGK7.js} +1 -1
- package/chunk-5HD5BGK7.js.map +1 -0
- package/{chunk-WA2Z3OWJ.js → chunk-6KUUJF3I.js} +3 -3
- package/chunk-6KUUJF3I.js.map +1 -0
- package/{chunk-LPZRXLKK.mjs → chunk-ACE5WNTU.mjs} +6 -6
- package/chunk-ACE5WNTU.mjs.map +1 -0
- package/{chunk-NJDC3RMA.mjs → chunk-ARQYTBBZ.mjs} +1 -1
- package/chunk-ARQYTBBZ.mjs.map +1 -0
- package/chunk-CE4PBEIL.js +88 -0
- package/chunk-CE4PBEIL.js.map +1 -0
- package/{chunk-MWA2HHI7.mjs → chunk-CPGH6LBC.mjs} +1 -1
- package/chunk-CPGH6LBC.mjs.map +1 -0
- package/{chunk-2WDZS5E5.mjs → chunk-CTYAFVU5.mjs} +2 -2
- package/chunk-CTYAFVU5.mjs.map +1 -0
- package/{chunk-N4QVNSAY.js → chunk-DGYAXPSD.js} +1 -1
- package/chunk-DGYAXPSD.js.map +1 -0
- package/{chunk-V5IL3OBF.mjs → chunk-DMATER3M.mjs} +1 -1
- package/chunk-DMATER3M.mjs.map +1 -0
- package/chunk-DTJ43DCW.mjs +87 -0
- package/chunk-DTJ43DCW.mjs.map +1 -0
- package/{chunk-U3HF6HPN.js → chunk-DYUS5722.js} +1 -1
- package/chunk-DYUS5722.js.map +1 -0
- package/{chunk-R3RMWOGE.mjs → chunk-EJQJ3BCF.mjs} +1 -1
- package/chunk-EJQJ3BCF.mjs.map +1 -0
- package/{chunk-LVFEXEXE.mjs → chunk-FMYITAWN.mjs} +1 -1
- package/chunk-FMYITAWN.mjs.map +1 -0
- package/{chunk-PSQGNWKT.js → chunk-GI222XFX.js} +1 -1
- package/chunk-GI222XFX.js.map +1 -0
- package/chunk-I64GW5SA.js +113 -0
- package/chunk-I64GW5SA.js.map +1 -0
- package/{chunk-ALDDTRY5.js → chunk-I6AFNWVY.js} +1 -1
- package/chunk-I6AFNWVY.js.map +1 -0
- package/{chunk-YT6UTIPP.js → chunk-IQYZKNJZ.js} +3 -3
- package/chunk-IQYZKNJZ.js.map +1 -0
- package/chunk-JW7N7IR5.mjs +120 -0
- package/chunk-JW7N7IR5.mjs.map +1 -0
- package/{chunk-4QOQOMZB.mjs → chunk-LXILG667.mjs} +1 -1
- package/chunk-LXILG667.mjs.map +1 -0
- package/{chunk-DMO25T5J.mjs → chunk-NTYWTGYX.mjs} +1 -1
- package/chunk-NTYWTGYX.mjs.map +1 -0
- package/{chunk-3YDM2NYL.js → chunk-NVBZVKIT.js} +1 -1
- package/chunk-NVBZVKIT.js.map +1 -0
- package/{chunk-5RW6O56P.mjs → chunk-OXCN3BD6.mjs} +1 -1
- package/chunk-OXCN3BD6.mjs.map +1 -0
- package/{chunk-E77FKWFS.js → chunk-PCR4GC74.js} +1 -1
- package/chunk-PCR4GC74.js.map +1 -0
- package/{chunk-273TIMKM.js → chunk-PS3LNHTA.js} +1 -1
- package/chunk-PS3LNHTA.js.map +1 -0
- package/{chunk-UQTHHSJN.mjs → chunk-R4SF7CSA.mjs} +1 -1
- package/chunk-R4SF7CSA.mjs.map +1 -0
- package/chunk-RMDDLEPA.js +121 -0
- package/chunk-RMDDLEPA.js.map +1 -0
- package/{chunk-FQG3C7OR.js → chunk-XJ7GBFHV.js} +1 -1
- package/chunk-XJ7GBFHV.js.map +1 -0
- package/{chunk-5UUXFHU3.mjs → chunk-YQZZ6RRI.mjs} +1 -1
- package/chunk-YQZZ6RRI.mjs.map +1 -0
- package/{chunk-XCHWNZWB.js → chunk-YWWFTM23.js} +1 -1
- package/chunk-YWWFTM23.js.map +1 -0
- package/components/form/checkbox.js +2 -2
- package/components/form/checkbox.mjs +1 -1
- package/components/form/date-picker.js +3 -3
- package/components/form/date-picker.mjs +2 -2
- package/components/form/date-range-picker.js +2 -2
- package/components/form/date-range-picker.js.map +1 -1
- package/components/form/date-range-picker.mjs +3 -3
- package/components/form/date-range-picker.mjs.map +1 -1
- package/components/form/hook-checkbox.js +2 -2
- package/components/form/hook-checkbox.js.map +1 -1
- package/components/form/hook-checkbox.mjs +1 -1
- package/components/form/hook-checkbox.mjs.map +1 -1
- package/components/form/hook-date-picker.js +3 -3
- package/components/form/hook-date-picker.js.map +1 -1
- package/components/form/hook-date-picker.mjs +2 -2
- package/components/form/hook-date-picker.mjs.map +1 -1
- package/components/form/hook-native-select.js +2 -2
- package/components/form/hook-native-select.js.map +1 -1
- package/components/form/hook-native-select.mjs +1 -1
- package/components/form/hook-native-select.mjs.map +1 -1
- package/components/form/hook-searchable-select.d.mts +12 -0
- package/components/form/hook-searchable-select.d.ts +12 -0
- package/components/form/hook-searchable-select.js +74 -0
- package/components/form/hook-searchable-select.js.map +1 -0
- package/components/form/hook-searchable-select.mjs +73 -0
- package/components/form/hook-searchable-select.mjs.map +1 -0
- package/components/form/hook-select.js +2 -2
- package/components/form/hook-select.js.map +1 -1
- package/components/form/hook-select.mjs +1 -1
- package/components/form/hook-select.mjs.map +1 -1
- package/components/form/hook-text-input.js +2 -2
- package/components/form/hook-text-input.js.map +1 -1
- package/components/form/hook-text-input.mjs +1 -1
- package/components/form/hook-text-input.mjs.map +1 -1
- package/components/form/hook-textarea.js +2 -2
- package/components/form/hook-textarea.js.map +1 -1
- package/components/form/hook-textarea.mjs +1 -1
- package/components/form/hook-textarea.mjs.map +1 -1
- package/components/form/hook-time-input.js +3 -3
- package/components/form/hook-time-input.js.map +1 -1
- package/components/form/hook-time-input.mjs +2 -2
- package/components/form/hook-time-input.mjs.map +1 -1
- package/components/form/native-select.js +2 -2
- package/components/form/native-select.mjs +1 -1
- package/components/form/searchable-select.d.mts +26 -0
- package/components/form/searchable-select.d.ts +26 -0
- package/components/form/searchable-select.js +17 -0
- package/components/form/searchable-select.js.map +1 -0
- package/components/form/searchable-select.mjs +16 -0
- package/components/form/searchable-select.mjs.map +1 -0
- package/components/form/select.js +2 -2
- package/components/form/select.mjs +1 -1
- package/components/form/text-input.js +2 -2
- package/components/form/text-input.mjs +1 -1
- package/components/form/textarea.js +2 -2
- package/components/form/textarea.mjs +1 -1
- package/components/form/time-input.js +3 -3
- package/components/form/time-input.mjs +2 -2
- package/components/ui/badge.js +5 -113
- package/components/ui/badge.js.map +1 -1
- package/components/ui/badge.mjs +5 -113
- package/components/ui/badge.mjs.map +1 -1
- package/components/ui/command.d.mts +7 -7
- package/components/ui/command.d.ts +7 -7
- package/components/ui/command.js +26 -111
- package/components/ui/command.js.map +1 -1
- package/components/ui/command.mjs +13 -98
- package/components/ui/command.mjs.map +1 -1
- package/components/ui/extension/file-input.d.mts +10 -0
- package/components/ui/extension/file-input.d.ts +10 -0
- package/components/ui/extension/file-input.js +28 -0
- package/components/ui/extension/file-input.js.map +1 -0
- package/components/ui/extension/file-input.mjs +27 -0
- package/components/ui/extension/file-input.mjs.map +1 -0
- package/components/ui/extension/multi-select.d.mts +53 -0
- package/components/ui/extension/multi-select.d.ts +53 -0
- package/components/ui/extension/multi-select.js +312 -0
- package/components/ui/extension/multi-select.js.map +1 -0
- package/components/ui/extension/multi-select.mjs +311 -0
- package/components/ui/extension/multi-select.mjs.map +1 -0
- package/components/ui/resizable.d.mts +1 -1
- package/components/ui/resizable.d.ts +1 -1
- package/components/ui/toaster.js +2 -2
- package/components/ui/toaster.mjs +1 -1
- package/components/widgets/dialog-manager/index.js +3 -3
- package/components/widgets/dialog-manager/index.js.map +1 -1
- package/components/widgets/dialog-manager/index.mjs +2 -2
- package/components/widgets/dialog-manager/provider.js +2 -2
- package/components/widgets/dialog-manager/provider.mjs +1 -1
- package/hooks/use-toast.js +2 -2
- package/hooks/use-toast.mjs +1 -1
- package/layouts/sidebar1/LinkWrapper.js.map +1 -1
- package/layouts/sidebar1/LinkWrapper.mjs.map +1 -1
- package/layouts/sidebar1/app-sidebar.js +5 -5
- package/layouts/sidebar1/app-sidebar.mjs +4 -4
- package/layouts/sidebar1/context-switcher.js +2 -2
- package/layouts/sidebar1/context-switcher.mjs +1 -1
- package/layouts/sidebar1/index.js +7 -7
- package/layouts/sidebar1/index.js.map +1 -1
- package/layouts/sidebar1/index.mjs +6 -6
- package/layouts/sidebar1/nav-menus.js +2 -2
- package/layouts/sidebar1/nav-menus.mjs +1 -1
- package/layouts/sidebar1/nav-user.js +2 -2
- package/layouts/sidebar1/nav-user.mjs +1 -1
- package/package.json +1 -1
- package/chunk-273TIMKM.js.map +0 -1
- package/chunk-2H5WIGQU.js.map +0 -1
- package/chunk-2WDZS5E5.mjs.map +0 -1
- package/chunk-3YDM2NYL.js.map +0 -1
- package/chunk-4QOQOMZB.mjs.map +0 -1
- package/chunk-5RW6O56P.mjs.map +0 -1
- package/chunk-5UUXFHU3.mjs.map +0 -1
- package/chunk-7TCN3MNY.js.map +0 -1
- package/chunk-ALDDTRY5.js.map +0 -1
- package/chunk-DMO25T5J.mjs.map +0 -1
- package/chunk-E77FKWFS.js.map +0 -1
- package/chunk-FQG3C7OR.js.map +0 -1
- package/chunk-IPTLI5N5.mjs.map +0 -1
- package/chunk-LPZRXLKK.mjs.map +0 -1
- package/chunk-LVFEXEXE.mjs.map +0 -1
- package/chunk-MWA2HHI7.mjs.map +0 -1
- package/chunk-N4QVNSAY.js.map +0 -1
- package/chunk-NJDC3RMA.mjs.map +0 -1
- package/chunk-PSQGNWKT.js.map +0 -1
- package/chunk-R3RMWOGE.mjs.map +0 -1
- package/chunk-U3HF6HPN.js.map +0 -1
- package/chunk-UQTHHSJN.mjs.map +0 -1
- package/chunk-V5IL3OBF.mjs.map +0 -1
- package/chunk-WA2Z3OWJ.js.map +0 -1
- package/chunk-XCHWNZWB.js.map +0 -1
- package/chunk-YT6UTIPP.js.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Calendar
|
|
3
|
+
} from "./chunk-PS7WGOZH.mjs";
|
|
1
4
|
import {
|
|
2
5
|
Popover,
|
|
3
6
|
PopoverContent,
|
|
4
7
|
PopoverTrigger
|
|
5
8
|
} from "./chunk-TMC4JKD5.mjs";
|
|
6
|
-
import {
|
|
7
|
-
Calendar
|
|
8
|
-
} from "./chunk-PS7WGOZH.mjs";
|
|
9
9
|
import {
|
|
10
10
|
Button
|
|
11
11
|
} from "./chunk-4NMFJSJN.mjs";
|
|
@@ -99,4 +99,4 @@ function FormDatePicker({
|
|
|
99
99
|
export {
|
|
100
100
|
FormDatePicker
|
|
101
101
|
};
|
|
102
|
-
//# sourceMappingURL=chunk-
|
|
102
|
+
//# sourceMappingURL=chunk-2BKV4IJV.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../components/form/date-picker.tsx"],"sourcesContent":["\"use client\";\nimport React, { useEffect, useState } from 'react';\nimport { addDays, format, isEqual } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isNil from 'lodash-es/isNil';\nimport _isUndefined from 'lodash-es/isUndefined';\nimport _isString from 'lodash-es/isString';\n\nimport { isEqualDate } from '../../lib/date';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Label } from '../ui/label';\nimport { Calendar } from '../ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nfunction formatDate(date: Date) {\n return format(date, 'LLL dd, y');\n}\n\nfunction getStartOfDay(date: Date) {\n const startOfDay = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n return startOfDay;\n}\n\nexport interface FormDatePickerProps {\n id?: string;\n name: string;\n label?: string;\n required?: boolean;\n disabled?: boolean;\n initialValue?: Date | string;\n value?: Date | string;\n onChange: (value?: Date) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n button?: string;\n };\n}\n\nexport function FormDatePicker({\n id,\n name,\n label,\n required = false,\n disabled = false,\n initialValue,\n value,\n onChange,\n classNames,\n}: FormDatePickerProps) {\n const [date, setDate] = useState<Date | undefined>(undefined);\n const [initialized, setInitialized] = useState(false);\n\n useEffect(() => {\n if (!initialized) {\n const dt = initialValue ? getStartOfDay(new Date(initialValue)) : getStartOfDay(new Date());\n\n setDate(dt);\n setInitialized(true);\n }\n }, [initialized, initialValue]);\n\n useEffect(() => {\n if (_isUndefined(value)) {\n if (!_isUndefined(date)) {\n setDate(undefined);\n }\n } else {\n const dt = _isString(value) ? new Date(value) : value;\n if (!isEqualDate(date, dt)) {\n setDate(getStartOfDay(dt));\n }\n }\n }, [value]);\n\n useEffect(() => {\n if (initialized) {\n onChange(date);\n }\n }, [date, initialized]);\n\n if (!id) id = _kebabCase(name);\n\n const display = !initialized ? <span></span> : date ? <>{formatDate(date)}</> : <span>Pick a date</span>;\n\n return (\n <div className={cn('date-picker', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n\n <div className={cn('grid gap-2')}>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant={date ? 'secondary' : 'muted'}\n appearance=\"outline\"\n className={cn('min-w-[145px] justify-start text-left font-normal', classNames?.button)}\n >\n <CalendarIcon />\n {display}\n </Button>\n </PopoverTrigger>\n\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n defaultMonth={date}\n selected={date}\n onSelect={(newdate) => {\n if (!isEqualDate(date, newdate)) {\n setDate(newdate);\n }\n }}\n />\n </PopoverContent>\n </Popover>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,SAAS,WAAW,gBAAgB;AAC3C,SAAkB,cAAuB;AACzC,SAAS,oBAAoB;AAC7B,OAAO,gBAAgB;AAEvB,OAAO,kBAAkB;AACzB,OAAO,eAAe;AAStB,SAAS,WAAW,MAAY;AAC9B,SAAO,OAAO,MAAM,WAAW;AACjC;AAEA,SAAS,cAAc,MAAY;AACjC,QAAM,aAAa,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,GAAG,KAAK,QAAQ,CAAC;AAC/E,SAAO;AACT;AAkBO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AACtB,QAAM,CAAC,MAAM,OAAO,IAAI,SAA2B,MAAS;AAC5D,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AAEpD,YAAU,MAAM;AACd,QAAI,CAAC,aAAa;AAChB,YAAM,KAAK,eAAe,cAAc,IAAI,KAAK,YAAY,CAAC,IAAI,cAAc,oBAAI,KAAK,CAAC;AAE1F,cAAQ,EAAE;AACV,qBAAe,IAAI;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,aAAa,YAAY,CAAC;AAE9B,YAAU,MAAM;AACd,QAAI,aAAa,KAAK,GAAG;AACvB,UAAI,CAAC,aAAa,IAAI,GAAG;AACvB,gBAAQ,MAAS;AAAA,MACnB;AAAA,IACF,OAAO;AACL,YAAM,KAAK,UAAU,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI;AAChD,UAAI,CAAC,YAAY,MAAM,EAAE,GAAG;AAC1B,gBAAQ,cAAc,EAAE,CAAC;AAAA,MAC3B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,YAAU,MAAM;AACd,QAAI,aAAa;AACf,eAAS,IAAI;AAAA,IACf;AAAA,EACF,GAAG,CAAC,MAAM,WAAW,CAAC;AAEtB,MAAI,CAAC,GAAI,MAAK,WAAW,IAAI;AAE7B,QAAM,UAAU,CAAC,cAAc,oCAAC,YAAK,IAAU,OAAO,0DAAG,WAAW,IAAI,CAAE,IAAM,oCAAC,cAAK,aAAW;AAEjG,SACE,oCAAC,SAAI,WAAW,GAAG,eAAe,yCAAY,OAAO,KAClD,SACC,oCAAC,SAAM,SAAS,IAAI,WAAW,yCAAY,OAAO,YAC/C,KACH,GAGF,oCAAC,SAAI,WAAW,GAAG,YAAY,KAC7B,oCAAC,eACC,oCAAC,kBAAe,SAAO,QACrB;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,OAAO,cAAc;AAAA,MAC9B,YAAW;AAAA,MACX,WAAW,GAAG,qDAAqD,yCAAY,MAAM;AAAA;AAAA,IAErF,oCAAC,kBAAa;AAAA,IACb;AAAA,EACH,CACF,GAEA,oCAAC,kBAAe,WAAU,cAAa,OAAM,WAC3C;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAc;AAAA,MACd,UAAU;AAAA,MACV,UAAU,CAAC,YAAY;AACrB,YAAI,CAAC,YAAY,MAAM,OAAO,GAAG;AAC/B,kBAAQ,OAAO;AAAA,QACjB;AAAA,MACF;AAAA;AAAA,EACF,CACF,CACF,CACF,CACF;AAEJ;","names":[]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
"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; } }
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkPCR4GC74js = require('./chunk-PCR4GC74.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunk5HD5BGK7js = require('./chunk-5HD5BGK7.js');
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkDYUS5722js = require('./chunk-DYUS5722.js');
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
@@ -29,7 +29,7 @@ function AppSidebar(_a) {
|
|
|
29
29
|
var props = _chunk2NMEKWO5js.__objRest.call(void 0, _a, []);
|
|
30
30
|
var _b;
|
|
31
31
|
const _a2 = props, { data, aslink } = _a2, rest = _chunk2NMEKWO5js.__objRest.call(void 0, _a2, ["data", "aslink"]);
|
|
32
|
-
return /* @__PURE__ */ React.createElement(_chunkMYO4WRNBjs.Sidebar, _chunk2NMEKWO5js.__spreadValues.call(void 0, { collapsible: "icon" }, rest), /* @__PURE__ */ React.createElement(_chunkMYO4WRNBjs.SidebarHeader, null, /* @__PURE__ */ React.createElement(
|
|
32
|
+
return /* @__PURE__ */ React.createElement(_chunkMYO4WRNBjs.Sidebar, _chunk2NMEKWO5js.__spreadValues.call(void 0, { collapsible: "icon" }, rest), /* @__PURE__ */ React.createElement(_chunkMYO4WRNBjs.SidebarHeader, null, /* @__PURE__ */ React.createElement(_chunkDYUS5722js.ContextSwitcher, { items: data.contexts })), /* @__PURE__ */ React.createElement(_chunkMYO4WRNBjs.SidebarContent, null, /* @__PURE__ */ React.createElement(_chunkPCR4GC74js.NavMenus, { menus: data.menus, aslink })), /* @__PURE__ */ React.createElement(_chunkMYO4WRNBjs.SidebarFooter, null, data.user ? /* @__PURE__ */ React.createElement(_chunk5HD5BGK7js.NavUser, { user: data.user, menus: data.userMenus, aslink, onLogout: (_b = data.events) == null ? void 0 : _b.logout }) : /* @__PURE__ */ React.createElement(
|
|
33
33
|
_chunkEZZ2YCUUjs.Button,
|
|
34
34
|
{
|
|
35
35
|
variant: "primary",
|
|
@@ -47,4 +47,4 @@ function AppSidebar(_a) {
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
exports.AppSidebar = AppSidebar;
|
|
50
|
-
//# sourceMappingURL=chunk-
|
|
50
|
+
//# sourceMappingURL=chunk-4FD63HEQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-4FD63HEQ.js","../layouts/sidebar1/app-sidebar.tsx"],"names":["_a"],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACA;ACvBA,2EAAuB;AAoBhB,SAAS,UAAA,CAAW,EAAA,EAKxB;AALwB,EAAA,IACtB,MAAA,EAAA,wCAAA,EADsB,EACtB,CAAA,CAAA,CAAA;AAtBL,EAAA,IAAA,EAAA;AA2BE,EAAA,MAAkCA,IAAAA,EAAA,KAAA,EAA1B,EAAA,IAAA,EAAM,OA3BhB,EAAA,EA2BoCA,GAAAA,EAAT,KAAA,EAAA,wCAAA,GAASA,EAAT,CAAjB,MAAA,EAAM,QAAA,CAAA,CAAA;AAEd,EAAA,uBACE,KAAA,CAAA,aAAA,CAAC,wBAAA,EAAA,6CAAA,EAAQ,WAAA,EAAY,OAAA,CAAA,EAAW,IAAA,CAAA,kBAC9B,KAAA,CAAA,aAAA,CAAC,8BAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,gCAAA,EAAA,EAAgB,KAAA,EAAO,IAAA,CAAK,SAAA,CAAU,CACzC,CAAA,kBAEA,KAAA,CAAA,aAAA,CAAC,+BAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,yBAAA,EAAA,EAAS,KAAA,EAAO,IAAA,CAAK,KAAA,EAAO,OAAA,CAAgB,CAC/C,CAAA,kBAEA,KAAA,CAAA,aAAA,CAAC,8BAAA,EAAA,IAAA,EACE,IAAA,CAAK,KAAA,kBACJ,KAAA,CAAA,aAAA,CAAC,wBAAA,EAAA,EAAQ,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,KAAA,EAAO,IAAA,CAAK,SAAA,EAAW,MAAA,EAAgB,QAAA,EAAA,CAAU,GAAA,EAAA,IAAA,CAAK,MAAA,EAAA,GAAL,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAa,OAAA,CAAQ,EAAA,kBAEhG,KAAA,CAAA,aAAA;AAAA,IAAC,uBAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAQ,SAAA;AAAA,MACR,OAAA,EAAS,CAAA,EAAA,GAAM;AA7C3B,QAAA,IAAAA,GAAAA;AA8Cc,QAAA,GAAA,CAAA,CAAIA,IAAAA,EAAA,IAAA,CAAK,MAAA,EAAA,GAAL,KAAA,EAAA,KAAA,EAAA,EAAAA,GAAAA,CAAa,KAAA,EAAO;AACtB,UAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,CAAA;AAAA,QACpB;AAAA,MACF;AAAA,IAAA,CAAA;AAAA,IACD;AAAA,EAED,CAEJ,CAAA,kBAEA,KAAA,CAAA,aAAA,CAAC,4BAAA,EAAA,IAAY,CACf,CAAA;AAEJ;ADfA;AACA;AACE;AACF,gCAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-4FD63HEQ.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { NavMenus } from './nav-menus';\nimport { NavUser, INavUser, INavUserMenuItem } from './nav-user';\nimport { ContextSwitcher, INavContext } from './context-switcher';\nimport { INavMenu } from './nav-menus';\nimport { Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarRail } from '../../components/ui/sidebar';\nimport { Button } from '../../components/ui/button';\nimport { cn } from '../../lib/utils';\n\nexport interface ISidebarData {\n user?: INavUser;\n contexts: INavContext[];\n menus: INavMenu[];\n userMenus: INavUserMenuItem[];\n events?: {\n login?: () => void;\n logout?: (user: INavUser) => void;\n };\n}\n\nexport function AppSidebar({\n ...props\n}: React.ComponentProps<typeof Sidebar> & {\n data: ISidebarData;\n aslink: React.ElementType;\n}) {\n const { data, aslink, ...rest } = props;\n\n return (\n <Sidebar collapsible=\"icon\" {...rest}>\n <SidebarHeader>\n <ContextSwitcher items={data.contexts} />\n </SidebarHeader>\n\n <SidebarContent>\n <NavMenus menus={data.menus} aslink={aslink} />\n </SidebarContent>\n\n <SidebarFooter>\n {data.user ? (\n <NavUser user={data.user} menus={data.userMenus} aslink={aslink} onLogout={data.events?.logout} />\n ) : (\n <Button\n variant=\"primary\"\n onClick={() => {\n if (data.events?.login) {\n data.events.login();\n }\n }}\n >\n Sign in\n </Button>\n )}\n </SidebarFooter>\n\n <SidebarRail />\n </Sidebar>\n );\n}\n"]}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Dialog,
|
|
3
|
+
DialogContent
|
|
4
|
+
} from "./chunk-YAPKDLRQ.mjs";
|
|
5
|
+
import {
|
|
6
|
+
cn
|
|
7
|
+
} from "./chunk-F5XCCSBC.mjs";
|
|
8
|
+
import {
|
|
9
|
+
__objRest,
|
|
10
|
+
__spreadValues
|
|
11
|
+
} from "./chunk-YOSPWY5K.mjs";
|
|
12
|
+
|
|
13
|
+
// components/ui/command.tsx
|
|
14
|
+
import * as React from "react";
|
|
15
|
+
import { Command as CommandPrimitive } from "cmdk";
|
|
16
|
+
import { Search } from "lucide-react";
|
|
17
|
+
var Command = React.forwardRef((_a, ref) => {
|
|
18
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
19
|
+
return /* @__PURE__ */ React.createElement(
|
|
20
|
+
CommandPrimitive,
|
|
21
|
+
__spreadValues({
|
|
22
|
+
ref,
|
|
23
|
+
className: cn(
|
|
24
|
+
"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",
|
|
25
|
+
className
|
|
26
|
+
)
|
|
27
|
+
}, props)
|
|
28
|
+
);
|
|
29
|
+
});
|
|
30
|
+
Command.displayName = CommandPrimitive.displayName;
|
|
31
|
+
var CommandDialog = (_a) => {
|
|
32
|
+
var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
|
|
33
|
+
return /* @__PURE__ */ React.createElement(Dialog, __spreadValues({}, props), /* @__PURE__ */ React.createElement(DialogContent, { className: "overflow-hidden p-0" }, /* @__PURE__ */ React.createElement(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5" }, children)));
|
|
34
|
+
};
|
|
35
|
+
var CommandInput = React.forwardRef((_a, ref) => {
|
|
36
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
37
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "" }, /* @__PURE__ */ React.createElement(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }), /* @__PURE__ */ React.createElement(
|
|
38
|
+
CommandPrimitive.Input,
|
|
39
|
+
__spreadValues({
|
|
40
|
+
ref,
|
|
41
|
+
className: cn(
|
|
42
|
+
"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
43
|
+
className
|
|
44
|
+
)
|
|
45
|
+
}, props)
|
|
46
|
+
));
|
|
47
|
+
});
|
|
48
|
+
CommandInput.displayName = CommandPrimitive.Input.displayName;
|
|
49
|
+
var CommandList = React.forwardRef((_a, ref) => {
|
|
50
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
51
|
+
return /* @__PURE__ */ React.createElement(
|
|
52
|
+
CommandPrimitive.List,
|
|
53
|
+
__spreadValues({
|
|
54
|
+
ref,
|
|
55
|
+
className: cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className)
|
|
56
|
+
}, props)
|
|
57
|
+
);
|
|
58
|
+
});
|
|
59
|
+
CommandList.displayName = CommandPrimitive.List.displayName;
|
|
60
|
+
var CommandEmpty = React.forwardRef((props, ref) => /* @__PURE__ */ React.createElement(CommandPrimitive.Empty, __spreadValues({ ref, className: "py-6 text-center text-sm" }, props)));
|
|
61
|
+
CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
|
|
62
|
+
var CommandGroup = React.forwardRef((_a, ref) => {
|
|
63
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
64
|
+
return /* @__PURE__ */ React.createElement(
|
|
65
|
+
CommandPrimitive.Group,
|
|
66
|
+
__spreadValues({
|
|
67
|
+
ref,
|
|
68
|
+
className: cn(
|
|
69
|
+
"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",
|
|
70
|
+
className
|
|
71
|
+
)
|
|
72
|
+
}, props)
|
|
73
|
+
);
|
|
74
|
+
});
|
|
75
|
+
CommandGroup.displayName = CommandPrimitive.Group.displayName;
|
|
76
|
+
var CommandSeparator = React.forwardRef((_a, ref) => {
|
|
77
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
78
|
+
return /* @__PURE__ */ React.createElement(CommandPrimitive.Separator, __spreadValues({ ref, className: cn("-mx-1 h-px bg-border", className) }, props));
|
|
79
|
+
});
|
|
80
|
+
CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
|
|
81
|
+
var CommandItem = React.forwardRef((_a, ref) => {
|
|
82
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
83
|
+
return /* @__PURE__ */ React.createElement(
|
|
84
|
+
CommandPrimitive.Item,
|
|
85
|
+
__spreadValues({
|
|
86
|
+
ref,
|
|
87
|
+
className: cn(
|
|
88
|
+
"relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
89
|
+
className
|
|
90
|
+
)
|
|
91
|
+
}, props)
|
|
92
|
+
);
|
|
93
|
+
});
|
|
94
|
+
CommandItem.displayName = CommandPrimitive.Item.displayName;
|
|
95
|
+
var CommandShortcut = (_a) => {
|
|
96
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
97
|
+
return /* @__PURE__ */ React.createElement("span", __spreadValues({ className: cn("ml-auto text-xs tracking-widest text-muted-foreground", className) }, props));
|
|
98
|
+
};
|
|
99
|
+
CommandShortcut.displayName = "CommandShortcut";
|
|
100
|
+
|
|
101
|
+
export {
|
|
102
|
+
Command,
|
|
103
|
+
CommandDialog,
|
|
104
|
+
CommandInput,
|
|
105
|
+
CommandList,
|
|
106
|
+
CommandEmpty,
|
|
107
|
+
CommandGroup,
|
|
108
|
+
CommandSeparator,
|
|
109
|
+
CommandItem,
|
|
110
|
+
CommandShortcut
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=chunk-4XC6EXHZ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../components/ui/command.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { type DialogProps } from '@radix-ui/react-dialog';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { Search } from 'lucide-react';\n\nimport { cn } from '../../lib/utils';\nimport { Dialog, DialogContent } from './dialog';\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n 'flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground',\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn('max-h-[300px] overflow-y-auto overflow-x-hidden', className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-sm\" {...props} />);\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n 'overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground',\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator ref={ref} className={cn('-mx-1 h-px bg-border', className)} {...props} />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return <span className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)} {...props} />;\n};\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n"],"mappings":";;;;;;;;;;;;;AACA,YAAY,WAAW;AAEvB,SAAS,WAAW,wBAAwB;AAC5C,SAAS,cAAc;AAKvB,IAAM,UAAgB,iBAGpB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAZL,IAYG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AACD,QAAQ,cAAc,iBAAiB;AAEvC,IAAM,gBAAgB,CAAC,OAAwC;AAAxC,eAAE,WAxBzB,IAwBuB,IAAe,kBAAf,IAAe,CAAb;AACvB,SACE,oCAAC,2BAAW,QACV,oCAAC,iBAAc,WAAU,yBACvB,oCAAC,WAAQ,WAAU,iXAChB,QACH,CACF,CACF;AAEJ;AAEA,IAAM,eAAqB,iBAGzB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAvCL,IAuCG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,6CAAC,SAAI,WAAU,mCAAkC,sBAAmB,MAClE,oCAAC,UAAO,WAAU,oCAAmC,GACrD;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN,CACF;AAAA,CACD;AAED,aAAa,cAAc,iBAAiB,MAAM;AAElD,IAAM,cAAoB,iBAGxB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA1DL,IA0DG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA,WAAW,GAAG,mDAAmD,SAAS;AAAA,OACtE;AAAA,EACN;AAAA,CACD;AAED,YAAY,cAAc,iBAAiB,KAAK;AAEhD,IAAM,eAAqB,iBAGzB,CAAC,OAAO,QAAQ,oCAAC,iBAAiB,OAAjB,iBAAuB,KAAU,WAAU,8BAA+B,MAAO,CAAE;AAEtG,aAAa,cAAc,iBAAiB,MAAM;AAElD,IAAM,eAAqB,iBAGzB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA9EL,IA8EG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AAED,aAAa,cAAc,iBAAiB,MAAM;AAElD,IAAM,mBAAyB,iBAG7B,CAAC,IAAyB,QAAK;AAA9B,eAAE,YA9FL,IA8FG,IAAgB,kBAAhB,IAAgB,CAAd;AACH,6CAAC,iBAAiB,WAAjB,iBAA2B,KAAU,WAAW,GAAG,wBAAwB,SAAS,KAAO,MAAO;AAAA,CACpG;AACD,iBAAiB,cAAc,iBAAiB,UAAU;AAE1D,IAAM,cAAoB,iBAGxB,CAAC,IAAyB,QAAK;AAA9B,eAAE,YAtGL,IAsGG,IAAgB,kBAAhB,IAAgB,CAAd;AACH;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,OACI;AAAA,EACN;AAAA,CACD;AAED,YAAY,cAAc,iBAAiB,KAAK;AAEhD,IAAM,kBAAkB,CAAC,OAAmE;AAAnE,eAAE,YAnH3B,IAmHyB,IAAgB,kBAAhB,IAAgB,CAAd;AACzB,SAAO,oCAAC,yBAAK,WAAW,GAAG,yDAAyD,SAAS,KAAO,MAAO;AAC7G;AACA,gBAAgB,cAAc;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-5HD5BGK7.js","../layouts/sidebar1/nav-user.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-5HD5BGK7.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { ChevronsUpDown, LogOut, type LucideIcon } from 'lucide-react';\nimport { Avatar, AvatarFallback, AvatarImage } from '../../components/ui/avatar';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../../components/ui/dropdown-menu';\nimport { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar } from '../../components/ui/sidebar';\n\nexport interface INavUser {\n name: string;\n email: string;\n avatar: string;\n}\n\nexport interface INavUserMenuItem {\n title: string;\n url?: string;\n icon?: React.ElementType;\n onClick?: (title: string) => void;\n}\n\nexport function NavUser({\n user,\n menus = [],\n aslink: LinkComponent,\n onLogout,\n}: {\n user: INavUser;\n menus: INavUserMenuItem[];\n aslink?: React.ElementType;\n onLogout?: (user: INavUser) => void;\n}) {\n const { isMobile } = useSidebar();\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <Avatar className=\"h-8 w-8 rounded-lg\">\n <AvatarImage src={user.avatar} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n </Avatar>\n\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{user.name}</span>\n <span className=\"truncate text-xs\">{user.email}</span>\n </div>\n\n <ChevronsUpDown className=\"ml-auto size-4\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n\n <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg bg-white\"\n side={isMobile ? 'bottom' : 'right'}\n align=\"end\"\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"p-0 font-normal\">\n <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n <Avatar className=\"h-8 w-8 rounded-lg\">\n <AvatarImage src={user.avatar} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n </Avatar>\n\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{user.name}</span>\n <span className=\"truncate text-xs\">{user.email}</span>\n </div>\n </div>\n </DropdownMenuLabel>\n {menus.length > 0 && <DropdownMenuSeparator />}\n\n <DropdownMenuGroup>\n {menus.map((menu) => {\n const Comp = LinkComponent && menu.url ? LinkComponent : 'button';\n\n return (\n <Comp\n key={menu.title}\n to={menu.url}\n href={menu.url}\n onClick={() => menu.onClick?.(menu.title)}\n className=\"block w-full\"\n >\n <DropdownMenuItem>\n {menu.icon && <menu.icon />}\n {menu.title}\n </DropdownMenuItem>\n </Comp>\n );\n })}\n </DropdownMenuGroup>\n\n {onLogout && (\n <>\n <DropdownMenuSeparator />\n\n <DropdownMenuItem onClick={() => onLogout(user)}>\n <LogOut />\n Log out\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n );\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkDGYAXPSDjs = require('./chunk-DGYAXPSD.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
@@ -33,10 +33,10 @@ function FormTimeInput(_a) {
|
|
|
33
33
|
const displayText = _chunk4YSHGGKXjs.convertFromHours.call(void 0, value);
|
|
34
34
|
const displayWhole = _chunk4YSHGGKXjs.convertToWholeFromHours.call(void 0, value);
|
|
35
35
|
const title = displayText !== displayWhole ? `${displayText} (${displayWhole})` : displayText;
|
|
36
|
-
return /* @__PURE__ */ _react2.default.createElement(
|
|
36
|
+
return /* @__PURE__ */ _react2.default.createElement(_chunkDGYAXPSDjs.FormTextInput, _chunk2NMEKWO5js.__spreadProps.call(void 0, _chunk2NMEKWO5js.__spreadValues.call(void 0, {}, rest), { value, onChange: handleChange, onBlur: handleBlur, title }));
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
exports.FormTimeInput = FormTimeInput;
|
|
42
|
-
//# sourceMappingURL=chunk-
|
|
42
|
+
//# sourceMappingURL=chunk-6KUUJF3I.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-6KUUJF3I.js","../components/form/time-input.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACA;ACbA,4EAAwD;AAUjD,SAAS,aAAA,CAAc,EAAA,EAAmE;AAAnE,EAAA,IAAA,GAAA,EAAA,EAAA,EAAE,EAAA,KAAA,EAAO,YAAA,EAAc,CAAA,EAAG,SAXxD,EAAA,EAW8B,EAAA,EAAuC,KAAA,EAAA,wCAAA,EAAvC,EAAuC,CAArC,OAAA,EAAwB,UAAA,CAAA,CAAA;AACtD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,EAAA,EAAI,6BAAA,MAAiB,CAAO,WAAW,CAAC,CAAA;AAE9D,EAAA,8BAAA,CAAU,EAAA,GAAM;AACd,IAAA,QAAA,CAAS,MAAA,CAAO,YAAA,GAAA,KAAA,EAAA,YAAA,EAAe,EAAE,CAAC,CAAA;AAAA,EACpC,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,aAAA,EAAe,CAAC,CAAA,EAAA,GAAqC;AACzD,IAAA,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,WAAA,EAAa,CAAC,CAAA,EAAA,GAAqC;AACvD,IAAA,MAAM,SAAA,EAAW,6CAAA,CAAe,CAAE,MAAA,CAAO,KAAK,CAAA;AAC9C,IAAA,MAAM,aAAA,EAAe,MAAA,CAAO,QAAQ,CAAA;AAEpC,IAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,IAAA,SAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,QAAA,CAAW,YAAA,CAAA;AAAA,EACb,CAAA;AAEA,EAAA,MAAM,YAAA,EAAc,+CAAA,KAAsB,CAAA;AAC1C,EAAA,MAAM,aAAA,EAAe,sDAAA,KAA6B,CAAA;AAClD,EAAA,MAAM,MAAA,EAAQ,YAAA,IAAgB,aAAA,EAAe,CAAA,EAAA;AAErC,EAAA;AACV;ADCgD;AACA;AACA;AACA","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-6KUUJF3I.js","sourcesContent":[null,"\"use client\";\nimport React, { useState, useEffect, ChangeEvent } from 'react';\nimport { FormTextInput } from './text-input';\nimport type { FormTextInputProps } from './text-input';\nimport { convertToHours, convertFromHours, convertToWholeFromHours } from '../../lib/number';\n\nexport interface FormTimeInputProps extends Omit<FormTextInputProps, 'onChange' | 'value'> {\n value?: number;\n onChange?: (value: number) => void;\n}\n\nexport function FormTimeInput({ value: parentValue = 0, onChange, ...rest }: FormTimeInputProps) {\n const [value, setValue] = useState<string>(String(parentValue));\n\n useEffect(() => {\n setValue(String(parentValue ?? ''));\n }, [parentValue]);\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value);\n };\n\n const handleBlur = (e: ChangeEvent<HTMLInputElement>) => {\n const newValue = convertToHours(e.target.value);\n const numericValue = Number(newValue);\n\n setValue(newValue);\n onChange?.(numericValue);\n };\n\n const displayText = convertFromHours(value);\n const displayWhole = convertToWholeFromHours(value);\n const title = displayText !== displayWhole ? `${displayText} (${displayWhole})` : displayText;\n\n return <FormTextInput {...rest} value={value} onChange={handleChange} onBlur={handleBlur} title={title} />;\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NavMenus
|
|
3
|
+
} from "./chunk-EJQJ3BCF.mjs";
|
|
1
4
|
import {
|
|
2
5
|
NavUser
|
|
3
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-DMATER3M.mjs";
|
|
4
7
|
import {
|
|
5
8
|
ContextSwitcher
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import {
|
|
8
|
-
NavMenus
|
|
9
|
-
} from "./chunk-R3RMWOGE.mjs";
|
|
9
|
+
} from "./chunk-NTYWTGYX.mjs";
|
|
10
10
|
import {
|
|
11
11
|
Sidebar,
|
|
12
12
|
SidebarContent,
|
|
@@ -46,4 +46,4 @@ function AppSidebar(_a) {
|
|
|
46
46
|
export {
|
|
47
47
|
AppSidebar
|
|
48
48
|
};
|
|
49
|
-
//# sourceMappingURL=chunk-
|
|
49
|
+
//# sourceMappingURL=chunk-ACE5WNTU.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../layouts/sidebar1/app-sidebar.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { NavMenus } from './nav-menus';\nimport { NavUser, INavUser, INavUserMenuItem } from './nav-user';\nimport { ContextSwitcher, INavContext } from './context-switcher';\nimport { INavMenu } from './nav-menus';\nimport { Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarRail } from '../../components/ui/sidebar';\nimport { Button } from '../../components/ui/button';\nimport { cn } from '../../lib/utils';\n\nexport interface ISidebarData {\n user?: INavUser;\n contexts: INavContext[];\n menus: INavMenu[];\n userMenus: INavUserMenuItem[];\n events?: {\n login?: () => void;\n logout?: (user: INavUser) => void;\n };\n}\n\nexport function AppSidebar({\n ...props\n}: React.ComponentProps<typeof Sidebar> & {\n data: ISidebarData;\n aslink: React.ElementType;\n}) {\n const { data, aslink, ...rest } = props;\n\n return (\n <Sidebar collapsible=\"icon\" {...rest}>\n <SidebarHeader>\n <ContextSwitcher items={data.contexts} />\n </SidebarHeader>\n\n <SidebarContent>\n <NavMenus menus={data.menus} aslink={aslink} />\n </SidebarContent>\n\n <SidebarFooter>\n {data.user ? (\n <NavUser user={data.user} menus={data.userMenus} aslink={aslink} onLogout={data.events?.logout} />\n ) : (\n <Button\n variant=\"primary\"\n onClick={() => {\n if (data.events?.login) {\n data.events.login();\n }\n }}\n >\n Sign in\n </Button>\n )}\n </SidebarFooter>\n\n <SidebarRail />\n </Sidebar>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,YAAY,WAAW;AAoBhB,SAAS,WAAW,IAKxB;AALwB,MACtB,kBADsB,IACtB;AAtBL;AA2BE,QAAkCA,MAAA,OAA1B,QAAM,OA3BhB,IA2BoCA,KAAT,iBAASA,KAAT,CAAjB,QAAM;AAEd,SACE,oCAAC,0BAAQ,aAAY,UAAW,OAC9B,oCAAC,qBACC,oCAAC,mBAAgB,OAAO,KAAK,UAAU,CACzC,GAEA,oCAAC,sBACC,oCAAC,YAAS,OAAO,KAAK,OAAO,QAAgB,CAC/C,GAEA,oCAAC,qBACE,KAAK,OACJ,oCAAC,WAAQ,MAAM,KAAK,MAAM,OAAO,KAAK,WAAW,QAAgB,WAAU,UAAK,WAAL,mBAAa,QAAQ,IAEhG;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,SAAS,MAAM;AA7C3B,YAAAA;AA8Cc,aAAIA,MAAA,KAAK,WAAL,gBAAAA,IAAa,OAAO;AACtB,eAAK,OAAO,MAAM;AAAA,QACpB;AAAA,MACF;AAAA;AAAA,IACD;AAAA,EAED,CAEJ,GAEA,oCAAC,iBAAY,CACf;AAEJ;","names":["_a"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../components/form/checkbox.tsx"],"sourcesContent":["\"use client\";\nimport React from 'react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport { cn } from '../../lib/utils';\nimport { Label } from '../ui/label';\nimport { Checkbox } from '../ui/checkbox';\n\nexport interface FormCheckboxProps {\n id?: string;\n name: string;\n label?: string;\n required?: boolean;\n disabled?: boolean;\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n checkbox?: string;\n };\n}\n\nexport function FormCheckbox({\n id,\n name,\n label,\n required,\n disabled,\n checked,\n onCheckedChange,\n classNames,\n}: FormCheckboxProps) {\n const checkboxId = id || _kebabCase(name);\n\n return (\n <div className={cn('flex items-center gap-3', classNames?.wrapper)}>\n <Checkbox\n id={checkboxId}\n name={name}\n disabled={disabled}\n required={required}\n checked={checked}\n onCheckedChange={onCheckedChange}\n className={cn(classNames?.checkbox)}\n />\n\n {label && (\n <Label htmlFor={checkboxId} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;AACA,OAAO,WAAW;AAClB,OAAO,gBAAgB;AAoBhB,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,QAAM,aAAa,MAAM,WAAW,IAAI;AAExC,SACE,oCAAC,SAAI,WAAW,GAAG,2BAA2B,yCAAY,OAAO,KAC/D;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,GAAG,yCAAY,QAAQ;AAAA;AAAA,EACpC,GAEC,SACC,oCAAC,SAAM,SAAS,YAAY,WAAW,yCAAY,OAAO,YACvD,KACH,CAEJ;AAEJ;","names":[]}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkI64GW5SAjs = require('./chunk-I64GW5SA.js');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
var _chunkNK4XTZ5Wjs = require('./chunk-NK4XTZ5W.js');
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
var _chunkEZZ2YCUUjs = require('./chunk-EZZ2YCUU.js');
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
var _chunkTUFO3JJEjs = require('./chunk-TUFO3JJE.js');
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
var _chunk6N4WCMTEjs = require('./chunk-6N4WCMTE.js');
|
|
24
|
+
|
|
25
|
+
// components/form/searchable-select.tsx
|
|
26
|
+
var _react = require('react'); var _react2 = _interopRequireDefault(_react);
|
|
27
|
+
var _kebabCase2 = require('lodash-es/kebabCase'); var _kebabCase3 = _interopRequireDefault(_kebabCase2);
|
|
28
|
+
var _isString2 = require('lodash-es/isString'); var _isString3 = _interopRequireDefault(_isString2);
|
|
29
|
+
var _lucidereact = require('lucide-react');
|
|
30
|
+
function listToSelectOptions(items) {
|
|
31
|
+
return items.map((item) => {
|
|
32
|
+
return { label: item, value: item };
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function FormSearchableSelect({
|
|
36
|
+
id,
|
|
37
|
+
name,
|
|
38
|
+
label,
|
|
39
|
+
placeholder = "",
|
|
40
|
+
data,
|
|
41
|
+
defaultValue,
|
|
42
|
+
value,
|
|
43
|
+
onChange,
|
|
44
|
+
classNames,
|
|
45
|
+
required,
|
|
46
|
+
disabled
|
|
47
|
+
}) {
|
|
48
|
+
var _a, _b;
|
|
49
|
+
let _options = [];
|
|
50
|
+
if (data.length > 0) {
|
|
51
|
+
if (_isString3.default.call(void 0, data[0])) {
|
|
52
|
+
_options = listToSelectOptions(data);
|
|
53
|
+
} else {
|
|
54
|
+
_options = data;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (!id) id = _kebabCase3.default.call(void 0, name);
|
|
58
|
+
const [open, setOpen] = _react2.default.useState(false);
|
|
59
|
+
const [selectedValue, setSelectedValue] = _react2.default.useState((_a = value != null ? value : defaultValue) != null ? _a : "");
|
|
60
|
+
_react2.default.useEffect(() => {
|
|
61
|
+
var _a2;
|
|
62
|
+
setSelectedValue((_a2 = value != null ? value : defaultValue) != null ? _a2 : "");
|
|
63
|
+
}, [value, defaultValue]);
|
|
64
|
+
const handleSelect = (currentValue) => {
|
|
65
|
+
const newValue = currentValue === selectedValue ? "" : currentValue;
|
|
66
|
+
setSelectedValue(newValue);
|
|
67
|
+
onChange(newValue);
|
|
68
|
+
setOpen(false);
|
|
69
|
+
};
|
|
70
|
+
return /* @__PURE__ */ _react2.default.createElement("div", { className: _chunk6N4WCMTEjs.cn.call(void 0, "_searchable-select", classNames == null ? void 0 : classNames.wrapper) }, label && /* @__PURE__ */ _react2.default.createElement(_chunkTUFO3JJEjs.Label, { htmlFor: id, className: classNames == null ? void 0 : classNames.label, required }, label), /* @__PURE__ */ _react2.default.createElement(_chunkNK4XTZ5Wjs.Popover, { open, onOpenChange: setOpen }, /* @__PURE__ */ _react2.default.createElement(_chunkNK4XTZ5Wjs.PopoverTrigger, { asChild: true }, /* @__PURE__ */ _react2.default.createElement(
|
|
71
|
+
_chunkEZZ2YCUUjs.Button,
|
|
72
|
+
{
|
|
73
|
+
variant: "secondary",
|
|
74
|
+
appearance: "outline",
|
|
75
|
+
role: "combobox",
|
|
76
|
+
"aria-expanded": open,
|
|
77
|
+
disabled,
|
|
78
|
+
className: _chunk6N4WCMTEjs.cn.call(void 0, "w-full justify-between border-input!", classNames == null ? void 0 : classNames.input)
|
|
79
|
+
},
|
|
80
|
+
selectedValue ? (_b = _options.find((opt) => opt.value === selectedValue)) == null ? void 0 : _b.label : placeholder || "Select...",
|
|
81
|
+
/* @__PURE__ */ _react2.default.createElement(_lucidereact.ChevronsUpDown, { className: "opacity-50" })
|
|
82
|
+
)), /* @__PURE__ */ _react2.default.createElement(_chunkNK4XTZ5Wjs.PopoverContent, { className: "w-full p-0" }, /* @__PURE__ */ _react2.default.createElement(_chunkI64GW5SAjs.Command, null, /* @__PURE__ */ _react2.default.createElement(_chunkI64GW5SAjs.CommandInput, { placeholder: `Search ${label != null ? label : "option"}...`, className: "h-9" }), /* @__PURE__ */ _react2.default.createElement(_chunkI64GW5SAjs.CommandList, null, /* @__PURE__ */ _react2.default.createElement(_chunkI64GW5SAjs.CommandEmpty, null, "No option found."), /* @__PURE__ */ _react2.default.createElement(_chunkI64GW5SAjs.CommandGroup, null, _options.map((option) => /* @__PURE__ */ _react2.default.createElement(_chunkI64GW5SAjs.CommandItem, { key: option.value, value: option.value, onSelect: handleSelect }, option.label, /* @__PURE__ */ _react2.default.createElement(_lucidereact.Check, { className: _chunk6N4WCMTEjs.cn.call(void 0, "ml-auto", selectedValue === option.value ? "opacity-100" : "opacity-0") })))))))));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
exports.FormSearchableSelect = FormSearchableSelect;
|
|
88
|
+
//# sourceMappingURL=chunk-CE4PBEIL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-CE4PBEIL.js","../components/form/searchable-select.tsx"],"names":["_a"],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-CE4PBEIL.js","sourcesContent":[null,"\"use client\";\nimport React from 'react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isString from 'lodash-es/isString';\nimport { cn } from '../../lib/utils';\nimport { Label } from '../ui/label';\nimport { Button } from '../ui/button';\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '../ui/command';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\nimport { Check, ChevronsUpDown } from 'lucide-react';\n\nexport interface SelectOption {\n label: string;\n value: string;\n}\n\nfunction listToSelectOptions(items: string[]) {\n return items.map((item) => {\n return { label: item, value: item };\n });\n}\n\nexport interface FormSearchableSelectProps {\n id?: string;\n name: string;\n label?: string;\n placeholder?: string;\n data: SelectOption[] | string[];\n defaultValue?: string;\n value?: string;\n onChange: (value?: string) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n input?: string;\n };\n required?: boolean;\n disabled?: boolean;\n}\n\nexport function FormSearchableSelect({\n id,\n name,\n label,\n placeholder = '',\n data,\n defaultValue,\n value,\n onChange,\n classNames,\n required,\n disabled,\n}: FormSearchableSelectProps) {\n let _options: SelectOption[] = [];\n\n if (data.length > 0) {\n if (_isString(data[0])) {\n _options = listToSelectOptions(data as string[]);\n } else {\n _options = data as SelectOption[];\n }\n }\n\n if (!id) id = _kebabCase(name);\n\n const [open, setOpen] = React.useState(false);\n const [selectedValue, setSelectedValue] = React.useState(value ?? defaultValue ?? '');\n\n React.useEffect(() => {\n setSelectedValue(value ?? defaultValue ?? '');\n }, [value, defaultValue]);\n\n const handleSelect = (currentValue: string) => {\n const newValue = currentValue === selectedValue ? '' : currentValue;\n setSelectedValue(newValue);\n onChange(newValue);\n setOpen(false);\n };\n\n return (\n <div className={cn('_searchable-select', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"secondary\"\n appearance=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n disabled={disabled}\n className={cn('w-full justify-between border-input!', classNames?.input)}\n >\n {selectedValue ? _options.find((opt) => opt.value === selectedValue)?.label : placeholder || 'Select...'}\n <ChevronsUpDown className=\"opacity-50\" />\n </Button>\n </PopoverTrigger>\n\n <PopoverContent className=\"w-full p-0\">\n <Command>\n <CommandInput placeholder={`Search ${label ?? 'option'}...`} className=\"h-9\" />\n <CommandList>\n <CommandEmpty>No option found.</CommandEmpty>\n <CommandGroup>\n {_options.map((option) => (\n <CommandItem key={option.value} value={option.value} onSelect={handleSelect}>\n {option.label}\n <Check className={cn('ml-auto', selectedValue === option.value ? 'opacity-100' : 'opacity-0')} />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../components/form/select.tsx"],"sourcesContent":["\"use client\";\nimport React from 'react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isString from 'lodash-es/isString';\nimport { cn } from '../../lib/utils';\nimport { Label } from '../ui/label';\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue } from '../ui/select';\n\nexport interface SelectOption {\n label: string;\n value: string;\n}\n\nfunction listToSelectOptions(items: string[]) {\n return items.map((item) => {\n return { label: item, value: item };\n });\n}\n\nexport interface FormSelectProps {\n id?: string;\n name: string;\n label?: string;\n placeholder?: string;\n data: SelectOption[] | string[];\n defaultValue?: string;\n value?: string;\n onChange: (value?: string) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n input?: string;\n };\n required?: boolean;\n disabled?: boolean;\n}\n\nexport function FormSelect({\n id,\n name,\n label,\n placeholder = '',\n data,\n defaultValue,\n value,\n onChange,\n classNames,\n required,\n disabled,\n ...rest\n}: FormSelectProps) {\n let _options: SelectOption[] = [];\n if (data.length > 0) {\n if (_isString(data[0])) {\n _options = listToSelectOptions(data as string[]);\n } else {\n _options = data as SelectOption[];\n }\n }\n\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('_select', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n\n <Select onValueChange={onChange} defaultValue={defaultValue ?? value ?? ''} value={value}>\n <SelectTrigger className=\"\">\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n\n <SelectContent className={cn(classNames?.input)}>\n {_options.map((option, index) => {\n return (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n );\n })}\n </SelectContent>\n </Select>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AACA,OAAO,WAAW;AAClB,OAAO,gBAAgB;AACvB,OAAO,eAAe;AAUtB,SAAS,oBAAoB,OAAiB;AAC5C,SAAO,MAAM,IAAI,CAAC,SAAS;AACzB,WAAO,EAAE,OAAO,MAAM,OAAO,KAAK;AAAA,EACpC,CAAC;AACH;AAoBO,SAAS,WAAW,IAaP;AAbO,eACzB;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAhDF,IAqC2B,IAYtB,iBAZsB,IAYtB;AAAA,IAXH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAhDF,MAAAA;AAmDE,MAAI,WAA2B,CAAC;AAChC,MAAI,KAAK,SAAS,GAAG;AACnB,QAAI,UAAU,KAAK,CAAC,CAAC,GAAG;AACtB,iBAAW,oBAAoB,IAAgB;AAAA,IACjD,OAAO;AACL,iBAAW;AAAA,IACb;AAAA,EACF;AAEA,MAAI,CAAC,GAAI,MAAK,WAAW,IAAI;AAE7B,SACE,oCAAC,SAAI,WAAW,GAAG,WAAW,yCAAY,OAAO,KAC9C,SACC,oCAAC,SAAM,SAAS,IAAI,WAAW,yCAAY,OAAO,YAC/C,KACH,GAGF,oCAAC,UAAO,eAAe,UAAU,eAAcA,MAAA,sCAAgB,UAAhB,OAAAA,MAAyB,IAAI,SAC1E,oCAAC,iBAAc,WAAU,MACvB,oCAAC,eAAY,aAA0B,CACzC,GAEA,oCAAC,iBAAc,WAAW,GAAG,yCAAY,KAAK,KAC3C,SAAS,IAAI,CAAC,QAAQ,UAAU;AAC/B,WACE,oCAAC,cAAW,KAAK,OAAO,OAAO,OAAO,OAAO,SAC1C,OAAO,KACV;AAAA,EAEJ,CAAC,CACH,CACF,CACF;AAEJ;","names":["_a"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FormTextInput
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LXILG667.mjs";
|
|
4
4
|
import {
|
|
5
5
|
convertFromHours,
|
|
6
6
|
convertToHours,
|
|
@@ -38,4 +38,4 @@ function FormTimeInput(_a) {
|
|
|
38
38
|
export {
|
|
39
39
|
FormTimeInput
|
|
40
40
|
};
|
|
41
|
-
//# sourceMappingURL=chunk-
|
|
41
|
+
//# sourceMappingURL=chunk-CTYAFVU5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../components/form/time-input.tsx"],"sourcesContent":["\"use client\";\nimport React, { useState, useEffect, ChangeEvent } from 'react';\nimport { FormTextInput } from './text-input';\nimport type { FormTextInputProps } from './text-input';\nimport { convertToHours, convertFromHours, convertToWholeFromHours } from '../../lib/number';\n\nexport interface FormTimeInputProps extends Omit<FormTextInputProps, 'onChange' | 'value'> {\n value?: number;\n onChange?: (value: number) => void;\n}\n\nexport function FormTimeInput({ value: parentValue = 0, onChange, ...rest }: FormTimeInputProps) {\n const [value, setValue] = useState<string>(String(parentValue));\n\n useEffect(() => {\n setValue(String(parentValue ?? ''));\n }, [parentValue]);\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value);\n };\n\n const handleBlur = (e: ChangeEvent<HTMLInputElement>) => {\n const newValue = convertToHours(e.target.value);\n const numericValue = Number(newValue);\n\n setValue(newValue);\n onChange?.(numericValue);\n };\n\n const displayText = convertFromHours(value);\n const displayWhole = convertToWholeFromHours(value);\n const title = displayText !== displayWhole ? `${displayText} (${displayWhole})` : displayText;\n\n return <FormTextInput {...rest} value={value} onChange={handleChange} onBlur={handleBlur} title={title} />;\n}\n"],"mappings":";;;;;;;;;;;;;;;AACA,OAAO,SAAS,UAAU,iBAA8B;AAUjD,SAAS,cAAc,IAAmE;AAAnE,eAAE,SAAO,cAAc,GAAG,SAXxD,IAW8B,IAAuC,iBAAvC,IAAuC,CAArC,SAAwB;AACtD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAiB,OAAO,WAAW,CAAC;AAE9D,YAAU,MAAM;AACd,aAAS,OAAO,oCAAe,EAAE,CAAC;AAAA,EACpC,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,eAAe,CAAC,MAAqC;AACzD,aAAS,EAAE,OAAO,KAAK;AAAA,EACzB;AAEA,QAAM,aAAa,CAAC,MAAqC;AACvD,UAAM,WAAW,eAAe,EAAE,OAAO,KAAK;AAC9C,UAAM,eAAe,OAAO,QAAQ;AAEpC,aAAS,QAAQ;AACjB,yCAAW;AAAA,EACb;AAEA,QAAM,cAAc,iBAAiB,KAAK;AAC1C,QAAM,eAAe,wBAAwB,KAAK;AAClD,QAAM,QAAQ,gBAAgB,eAAe,GAAG,WAAW,KAAK,YAAY,MAAM;AAElF,SAAO,oCAAC,gDAAkB,OAAlB,EAAwB,OAAc,UAAU,cAAc,QAAQ,YAAY,QAAc;AAC1G;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-DGYAXPSD.js","../components/form/text-input.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACA;ACdA,4EAA2C;AAC3C,wGAAuB;AAOvB,IAAM,WAAA,EAAa,EAAA;AAcZ,SAAS,aAAA,CAAc,EAAA,EAUP;AAVO,EAAA,IAAA,GAAA,EAAA,EAAA,EAC5B;AAAA,IAAA,EAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA,EAAO,MAAA;AAAA,IACP,UAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA,EAAa,CAAC;AAAA,EA/BhB,EAAA,EAuB8B,EAAA,EASzB,KAAA,EAAA,wCAAA,EATyB,EASzB;AAAA,IARH,IAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,EAAA,CAAA,CAAA;AAGA,EAAA,GAAA,CAAI,CAAC,EAAA,EAAI,GAAA,EAAK,iCAAA,IAAe,CAAA;AAE7B,EAAA,uBACE,eAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iCAAA,aAAG,EAAe,WAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,UAAA,CAAY,OAAO,EAAA,CAAA,EAClD,MAAA,mBACC,eAAA,CAAA,aAAA,CAAC,sBAAA,EAAA,EAAM,OAAA,EAAS,EAAA,EAAI,SAAA,EAAW,WAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,UAAA,CAAY,KAAA,EAAO,SAAA,CAAA,EAC/C,KACH,CAAA,kBAGF,eAAA,CAAA,aAAA;AAAA,IAAC,sBAAA;AAAA,IAAA,4CAAA,6CAAA,6CAAA;AAAA,MACC,IAAA;AAAA,MACA,EAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA,EAAa;AAAA,IAAA,CAAA,EACT,UAAA,CAAA,EACA,IAAA,CAAA,EARL;AAAA,MASC,SAAA,EAAW,iCAAA,UAAG,EAAY,WAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,UAAA,CAAY,KAAK;AAAA,IAAA,CAAA;AAAA,EAC7C,CACF,CAAA;AAEJ;ADHA;AACA;AACE;AACF,sCAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-DGYAXPSD.js","sourcesContent":[null,"\"use client\";\nimport React, { InputHTMLAttributes } from 'react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport { cn } from '../../lib/utils';\nimport { Label } from '../ui/label';\nimport { Input } from '../ui/input';\n\ninterface InputProps extends InputHTMLAttributes<HTMLInputElement> {}\n\nconst inputClass = '';\n\nexport interface FormTextInputProps extends InputProps {\n id?: string;\n name: string;\n label?: string;\n inputProps?: InputProps;\n classNames?: {\n wrapper?: string;\n label?: string;\n input?: string;\n };\n}\n\nexport function FormTextInput({\n id,\n name,\n label,\n type = 'text',\n classNames,\n required,\n disabled,\n inputProps = {},\n ...rest\n}: FormTextInputProps) {\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('_text-input', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n\n <Input\n type={type}\n id={id}\n name={name}\n required={required}\n disabled={disabled}\n autoComplete=\"off\"\n {...inputProps}\n {...rest}\n className={cn(inputClass, classNames?.input)}\n />\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../layouts/sidebar1/nav-user.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { ChevronsUpDown, LogOut, type LucideIcon } from 'lucide-react';\nimport { Avatar, AvatarFallback, AvatarImage } from '../../components/ui/avatar';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../../components/ui/dropdown-menu';\nimport { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar } from '../../components/ui/sidebar';\n\nexport interface INavUser {\n name: string;\n email: string;\n avatar: string;\n}\n\nexport interface INavUserMenuItem {\n title: string;\n url?: string;\n icon?: React.ElementType;\n onClick?: (title: string) => void;\n}\n\nexport function NavUser({\n user,\n menus = [],\n aslink: LinkComponent,\n onLogout,\n}: {\n user: INavUser;\n menus: INavUserMenuItem[];\n aslink?: React.ElementType;\n onLogout?: (user: INavUser) => void;\n}) {\n const { isMobile } = useSidebar();\n\n return (\n <SidebarMenu>\n <SidebarMenuItem>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <SidebarMenuButton\n size=\"lg\"\n className=\"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground\"\n >\n <Avatar className=\"h-8 w-8 rounded-lg\">\n <AvatarImage src={user.avatar} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n </Avatar>\n\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{user.name}</span>\n <span className=\"truncate text-xs\">{user.email}</span>\n </div>\n\n <ChevronsUpDown className=\"ml-auto size-4\" />\n </SidebarMenuButton>\n </DropdownMenuTrigger>\n\n <DropdownMenuContent\n className=\"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg bg-white\"\n side={isMobile ? 'bottom' : 'right'}\n align=\"end\"\n sideOffset={4}\n >\n <DropdownMenuLabel className=\"p-0 font-normal\">\n <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n <Avatar className=\"h-8 w-8 rounded-lg\">\n <AvatarImage src={user.avatar} alt={user.name} />\n <AvatarFallback className=\"rounded-lg\">CN</AvatarFallback>\n </Avatar>\n\n <div className=\"grid flex-1 text-left text-sm leading-tight\">\n <span className=\"truncate font-semibold\">{user.name}</span>\n <span className=\"truncate text-xs\">{user.email}</span>\n </div>\n </div>\n </DropdownMenuLabel>\n {menus.length > 0 && <DropdownMenuSeparator />}\n\n <DropdownMenuGroup>\n {menus.map((menu) => {\n const Comp = LinkComponent && menu.url ? LinkComponent : 'button';\n\n return (\n <Comp\n key={menu.title}\n to={menu.url}\n href={menu.url}\n onClick={() => menu.onClick?.(menu.title)}\n className=\"block w-full\"\n >\n <DropdownMenuItem>\n {menu.icon && <menu.icon />}\n {menu.title}\n </DropdownMenuItem>\n </Comp>\n );\n })}\n </DropdownMenuGroup>\n\n {onLogout && (\n <>\n <DropdownMenuSeparator />\n\n <DropdownMenuItem onClick={() => onLogout(user)}>\n <LogOut />\n Log out\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </SidebarMenuItem>\n </SidebarMenu>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,YAAY,WAAW;AACvB,SAAS,gBAAgB,cAA+B;AA0BjD,SAAS,QAAQ;AAAA,EACtB;AAAA,EACA,QAAQ,CAAC;AAAA,EACT,QAAQ;AAAA,EACR;AACF,GAKG;AACD,QAAM,EAAE,SAAS,IAAI,WAAW;AAEhC,SACE,oCAAC,mBACC,oCAAC,uBACC,oCAAC,oBACC,oCAAC,uBAAoB,SAAO,QAC1B;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA;AAAA,IAEV,oCAAC,UAAO,WAAU,wBAChB,oCAAC,eAAY,KAAK,KAAK,QAAQ,KAAK,KAAK,MAAM,GAC/C,oCAAC,kBAAe,WAAU,gBAAa,IAAE,CAC3C;AAAA,IAEA,oCAAC,SAAI,WAAU,iDACb,oCAAC,UAAK,WAAU,4BAA0B,KAAK,IAAK,GACpD,oCAAC,UAAK,WAAU,sBAAoB,KAAK,KAAM,CACjD;AAAA,IAEA,oCAAC,kBAAe,WAAU,kBAAiB;AAAA,EAC7C,CACF,GAEA;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAM,WAAW,WAAW;AAAA,MAC5B,OAAM;AAAA,MACN,YAAY;AAAA;AAAA,IAEZ,oCAAC,qBAAkB,WAAU,qBAC3B,oCAAC,SAAI,WAAU,2DACb,oCAAC,UAAO,WAAU,wBAChB,oCAAC,eAAY,KAAK,KAAK,QAAQ,KAAK,KAAK,MAAM,GAC/C,oCAAC,kBAAe,WAAU,gBAAa,IAAE,CAC3C,GAEA,oCAAC,SAAI,WAAU,iDACb,oCAAC,UAAK,WAAU,4BAA0B,KAAK,IAAK,GACpD,oCAAC,UAAK,WAAU,sBAAoB,KAAK,KAAM,CACjD,CACF,CACF;AAAA,IACC,MAAM,SAAS,KAAK,oCAAC,2BAAsB;AAAA,IAE5C,oCAAC,yBACE,MAAM,IAAI,CAAC,SAAS;AACnB,YAAM,OAAO,iBAAiB,KAAK,MAAM,gBAAgB;AAEzD,aACE;AAAA,QAAC;AAAA;AAAA,UACC,KAAK,KAAK;AAAA,UACV,IAAI,KAAK;AAAA,UACT,MAAM,KAAK;AAAA,UACX,SAAS,MAAG;AA9FhC;AA8FmC,8BAAK,YAAL,8BAAe,KAAK;AAAA;AAAA,UACnC,WAAU;AAAA;AAAA,QAEV,oCAAC,wBACE,KAAK,QAAQ,oCAAC,KAAK,MAAL,IAAU,GACxB,KAAK,KACR;AAAA,MACF;AAAA,IAEJ,CAAC,CACH;AAAA,IAEC,YACC,0DACE,oCAAC,2BAAsB,GAEvB,oCAAC,oBAAiB,SAAS,MAAM,SAAS,IAAI,KAC5C,oCAAC,YAAO,GAAE,SAEZ,CACF;AAAA,EAEJ,CACF,CACF,CACF;AAEJ;","names":[]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Command,
|
|
3
|
+
CommandEmpty,
|
|
4
|
+
CommandGroup,
|
|
5
|
+
CommandInput,
|
|
6
|
+
CommandItem,
|
|
7
|
+
CommandList
|
|
8
|
+
} from "./chunk-4XC6EXHZ.mjs";
|
|
9
|
+
import {
|
|
10
|
+
Popover,
|
|
11
|
+
PopoverContent,
|
|
12
|
+
PopoverTrigger
|
|
13
|
+
} from "./chunk-TMC4JKD5.mjs";
|
|
14
|
+
import {
|
|
15
|
+
Button
|
|
16
|
+
} from "./chunk-4NMFJSJN.mjs";
|
|
17
|
+
import {
|
|
18
|
+
Label
|
|
19
|
+
} from "./chunk-JWENANTO.mjs";
|
|
20
|
+
import {
|
|
21
|
+
cn
|
|
22
|
+
} from "./chunk-F5XCCSBC.mjs";
|
|
23
|
+
|
|
24
|
+
// components/form/searchable-select.tsx
|
|
25
|
+
import React from "react";
|
|
26
|
+
import _kebabCase from "lodash-es/kebabCase";
|
|
27
|
+
import _isString from "lodash-es/isString";
|
|
28
|
+
import { Check, ChevronsUpDown } from "lucide-react";
|
|
29
|
+
function listToSelectOptions(items) {
|
|
30
|
+
return items.map((item) => {
|
|
31
|
+
return { label: item, value: item };
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
function FormSearchableSelect({
|
|
35
|
+
id,
|
|
36
|
+
name,
|
|
37
|
+
label,
|
|
38
|
+
placeholder = "",
|
|
39
|
+
data,
|
|
40
|
+
defaultValue,
|
|
41
|
+
value,
|
|
42
|
+
onChange,
|
|
43
|
+
classNames,
|
|
44
|
+
required,
|
|
45
|
+
disabled
|
|
46
|
+
}) {
|
|
47
|
+
var _a, _b;
|
|
48
|
+
let _options = [];
|
|
49
|
+
if (data.length > 0) {
|
|
50
|
+
if (_isString(data[0])) {
|
|
51
|
+
_options = listToSelectOptions(data);
|
|
52
|
+
} else {
|
|
53
|
+
_options = data;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (!id) id = _kebabCase(name);
|
|
57
|
+
const [open, setOpen] = React.useState(false);
|
|
58
|
+
const [selectedValue, setSelectedValue] = React.useState((_a = value != null ? value : defaultValue) != null ? _a : "");
|
|
59
|
+
React.useEffect(() => {
|
|
60
|
+
var _a2;
|
|
61
|
+
setSelectedValue((_a2 = value != null ? value : defaultValue) != null ? _a2 : "");
|
|
62
|
+
}, [value, defaultValue]);
|
|
63
|
+
const handleSelect = (currentValue) => {
|
|
64
|
+
const newValue = currentValue === selectedValue ? "" : currentValue;
|
|
65
|
+
setSelectedValue(newValue);
|
|
66
|
+
onChange(newValue);
|
|
67
|
+
setOpen(false);
|
|
68
|
+
};
|
|
69
|
+
return /* @__PURE__ */ React.createElement("div", { className: cn("_searchable-select", classNames == null ? void 0 : classNames.wrapper) }, label && /* @__PURE__ */ React.createElement(Label, { htmlFor: id, className: classNames == null ? void 0 : classNames.label, required }, label), /* @__PURE__ */ React.createElement(Popover, { open, onOpenChange: setOpen }, /* @__PURE__ */ React.createElement(PopoverTrigger, { asChild: true }, /* @__PURE__ */ React.createElement(
|
|
70
|
+
Button,
|
|
71
|
+
{
|
|
72
|
+
variant: "secondary",
|
|
73
|
+
appearance: "outline",
|
|
74
|
+
role: "combobox",
|
|
75
|
+
"aria-expanded": open,
|
|
76
|
+
disabled,
|
|
77
|
+
className: cn("w-full justify-between border-input!", classNames == null ? void 0 : classNames.input)
|
|
78
|
+
},
|
|
79
|
+
selectedValue ? (_b = _options.find((opt) => opt.value === selectedValue)) == null ? void 0 : _b.label : placeholder || "Select...",
|
|
80
|
+
/* @__PURE__ */ React.createElement(ChevronsUpDown, { className: "opacity-50" })
|
|
81
|
+
)), /* @__PURE__ */ React.createElement(PopoverContent, { className: "w-full p-0" }, /* @__PURE__ */ React.createElement(Command, null, /* @__PURE__ */ React.createElement(CommandInput, { placeholder: `Search ${label != null ? label : "option"}...`, className: "h-9" }), /* @__PURE__ */ React.createElement(CommandList, null, /* @__PURE__ */ React.createElement(CommandEmpty, null, "No option found."), /* @__PURE__ */ React.createElement(CommandGroup, null, _options.map((option) => /* @__PURE__ */ React.createElement(CommandItem, { key: option.value, value: option.value, onSelect: handleSelect }, option.label, /* @__PURE__ */ React.createElement(Check, { className: cn("ml-auto", selectedValue === option.value ? "opacity-100" : "opacity-0") })))))))));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export {
|
|
85
|
+
FormSearchableSelect
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=chunk-DTJ43DCW.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../components/form/searchable-select.tsx"],"sourcesContent":["\"use client\";\nimport React from 'react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isString from 'lodash-es/isString';\nimport { cn } from '../../lib/utils';\nimport { Label } from '../ui/label';\nimport { Button } from '../ui/button';\nimport { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '../ui/command';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\nimport { Check, ChevronsUpDown } from 'lucide-react';\n\nexport interface SelectOption {\n label: string;\n value: string;\n}\n\nfunction listToSelectOptions(items: string[]) {\n return items.map((item) => {\n return { label: item, value: item };\n });\n}\n\nexport interface FormSearchableSelectProps {\n id?: string;\n name: string;\n label?: string;\n placeholder?: string;\n data: SelectOption[] | string[];\n defaultValue?: string;\n value?: string;\n onChange: (value?: string) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n input?: string;\n };\n required?: boolean;\n disabled?: boolean;\n}\n\nexport function FormSearchableSelect({\n id,\n name,\n label,\n placeholder = '',\n data,\n defaultValue,\n value,\n onChange,\n classNames,\n required,\n disabled,\n}: FormSearchableSelectProps) {\n let _options: SelectOption[] = [];\n\n if (data.length > 0) {\n if (_isString(data[0])) {\n _options = listToSelectOptions(data as string[]);\n } else {\n _options = data as SelectOption[];\n }\n }\n\n if (!id) id = _kebabCase(name);\n\n const [open, setOpen] = React.useState(false);\n const [selectedValue, setSelectedValue] = React.useState(value ?? defaultValue ?? '');\n\n React.useEffect(() => {\n setSelectedValue(value ?? defaultValue ?? '');\n }, [value, defaultValue]);\n\n const handleSelect = (currentValue: string) => {\n const newValue = currentValue === selectedValue ? '' : currentValue;\n setSelectedValue(newValue);\n onChange(newValue);\n setOpen(false);\n };\n\n return (\n <div className={cn('_searchable-select', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"secondary\"\n appearance=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n disabled={disabled}\n className={cn('w-full justify-between border-input!', classNames?.input)}\n >\n {selectedValue ? _options.find((opt) => opt.value === selectedValue)?.label : placeholder || 'Select...'}\n <ChevronsUpDown className=\"opacity-50\" />\n </Button>\n </PopoverTrigger>\n\n <PopoverContent className=\"w-full p-0\">\n <Command>\n <CommandInput placeholder={`Search ${label ?? 'option'}...`} className=\"h-9\" />\n <CommandList>\n <CommandEmpty>No option found.</CommandEmpty>\n <CommandGroup>\n {_options.map((option) => (\n <CommandItem key={option.value} value={option.value} onSelect={handleSelect}>\n {option.label}\n <Check className={cn('ml-auto', selectedValue === option.value ? 'opacity-100' : 'opacity-0')} />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,WAAW;AAClB,OAAO,gBAAgB;AACvB,OAAO,eAAe;AAMtB,SAAS,OAAO,sBAAsB;AAOtC,SAAS,oBAAoB,OAAiB;AAC5C,SAAO,MAAM,IAAI,CAAC,SAAS;AACzB,WAAO,EAAE,OAAO,MAAM,OAAO,KAAK;AAAA,EACpC,CAAC;AACH;AAoBO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA8B;AApD9B;AAqDE,MAAI,WAA2B,CAAC;AAEhC,MAAI,KAAK,SAAS,GAAG;AACnB,QAAI,UAAU,KAAK,CAAC,CAAC,GAAG;AACtB,iBAAW,oBAAoB,IAAgB;AAAA,IACjD,OAAO;AACL,iBAAW;AAAA,IACb;AAAA,EACF;AAEA,MAAI,CAAC,GAAI,MAAK,WAAW,IAAI;AAE7B,QAAM,CAAC,MAAM,OAAO,IAAI,MAAM,SAAS,KAAK;AAC5C,QAAM,CAAC,eAAe,gBAAgB,IAAI,MAAM,UAAS,6BAAS,iBAAT,YAAyB,EAAE;AAEpF,QAAM,UAAU,MAAM;AApExB,QAAAA;AAqEI,sBAAiBA,MAAA,wBAAS,iBAAT,OAAAA,MAAyB,EAAE;AAAA,EAC9C,GAAG,CAAC,OAAO,YAAY,CAAC;AAExB,QAAM,eAAe,CAAC,iBAAyB;AAC7C,UAAM,WAAW,iBAAiB,gBAAgB,KAAK;AACvD,qBAAiB,QAAQ;AACzB,aAAS,QAAQ;AACjB,YAAQ,KAAK;AAAA,EACf;AAEA,SACE,oCAAC,SAAI,WAAW,GAAG,sBAAsB,yCAAY,OAAO,KACzD,SACC,oCAAC,SAAM,SAAS,IAAI,WAAW,yCAAY,OAAO,YAC/C,KACH,GAGF,oCAAC,WAAQ,MAAY,cAAc,WACjC,oCAAC,kBAAe,SAAO,QACrB;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,YAAW;AAAA,MACX,MAAK;AAAA,MACL,iBAAe;AAAA,MACf;AAAA,MACA,WAAW,GAAG,wCAAwC,yCAAY,KAAK;AAAA;AAAA,IAEtE,iBAAgB,cAAS,KAAK,CAAC,QAAQ,IAAI,UAAU,aAAa,MAAlD,mBAAqD,QAAQ,eAAe;AAAA,IAC7F,oCAAC,kBAAe,WAAU,cAAa;AAAA,EACzC,CACF,GAEA,oCAAC,kBAAe,WAAU,gBACxB,oCAAC,eACC,oCAAC,gBAAa,aAAa,UAAU,wBAAS,QAAQ,OAAO,WAAU,OAAM,GAC7E,oCAAC,mBACC,oCAAC,oBAAa,kBAAgB,GAC9B,oCAAC,oBACE,SAAS,IAAI,CAAC,WACb,oCAAC,eAAY,KAAK,OAAO,OAAO,OAAO,OAAO,OAAO,UAAU,gBAC5D,OAAO,OACR,oCAAC,SAAM,WAAW,GAAG,WAAW,kBAAkB,OAAO,QAAQ,gBAAgB,WAAW,GAAG,CACjG,CACD,CACH,CACF,CACF,CACF,CACF,CACF;AAEJ;","names":["_a"]}
|