@egose/shadcn-theme 0.1.7 → 0.1.9
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-3PZY5HRH.mjs → chunk-AGPEWIPR.mjs} +3 -3
- package/{chunk-3PZY5HRH.mjs.map → chunk-AGPEWIPR.mjs.map} +1 -1
- package/{chunk-USW6AILM.mjs → chunk-ELSPE6GB.mjs} +2 -2
- package/{chunk-ZQK6REIM.mjs → chunk-NCJI2DCV.mjs} +2 -1
- package/chunk-NCJI2DCV.mjs.map +1 -0
- package/{chunk-2NUE7GJ3.js → chunk-P6L4JTWO.js} +3 -3
- package/{chunk-2NUE7GJ3.js.map → chunk-P6L4JTWO.js.map} +1 -1
- package/{chunk-7JYFZETL.mjs → chunk-RNKMPQDZ.mjs} +3 -2
- package/chunk-RNKMPQDZ.mjs.map +1 -0
- package/{chunk-FSU3BKPK.js → chunk-WK4MG4VT.js} +4 -3
- package/chunk-WK4MG4VT.js.map +1 -0
- package/{chunk-3TG6ZVFG.js → chunk-WXEEDLLR.js} +19 -18
- package/chunk-WXEEDLLR.js.map +1 -0
- package/{chunk-IQIHYWXX.js → chunk-YEGS4ETW.js} +7 -7
- package/chunk-YEGS4ETW.js.map +1 -0
- package/components/form/hook-multi-select.d.mts +2 -2
- package/components/form/hook-multi-select.d.ts +2 -2
- package/components/form/hook-multi-select.js +8 -7
- package/components/form/hook-multi-select.js.map +1 -1
- package/components/form/hook-multi-select.mjs +3 -2
- package/components/form/hook-multi-select.mjs.map +1 -1
- package/components/form/hook-tag-picker.d.mts +2 -2
- package/components/form/hook-tag-picker.d.ts +2 -2
- package/components/form/hook-tag-picker.js +8 -7
- package/components/form/hook-tag-picker.js.map +1 -1
- package/components/form/hook-tag-picker.mjs +3 -2
- package/components/form/hook-tag-picker.mjs.map +1 -1
- package/components/form/multi-select.js +3 -3
- package/components/form/multi-select.mjs +2 -2
- package/components/form/tag-picker.js +3 -3
- package/components/form/tag-picker.mjs +2 -2
- package/components/ui/multi-select.d.mts +22 -22
- package/components/ui/multi-select.d.ts +22 -22
- package/components/ui/multi-select.js +2 -2
- package/components/ui/multi-select.mjs +1 -1
- package/components/ui/tag-picker.js +2 -2
- package/components/ui/tag-picker.mjs +1 -1
- package/package.json +1 -1
- package/chunk-3TG6ZVFG.js.map +0 -1
- package/chunk-7JYFZETL.mjs.map +0 -1
- package/chunk-FSU3BKPK.js.map +0 -1
- package/chunk-IQIHYWXX.js.map +0 -1
- package/chunk-ZQK6REIM.mjs.map +0 -1
- /package/{chunk-USW6AILM.mjs.map → chunk-ELSPE6GB.mjs.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/components/form/hook-multi-select.js","../../../components/form/hook-multi-select.tsx"],"names":["_a"],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/components/form/hook-multi-select.js","../../../components/form/hook-multi-select.tsx"],"names":["_a"],"mappings":"AAAA,qLAAY;AACZ;AACE;AACF,0DAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC;AACE;AACF,0DAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC;AACE;AACF,0DAAgC;AAChC;AACE;AACA;AACF,0DAAgC;AAChC;AACA;ACzBA,4EAAkB;AAClB,gDAAwE;AASjE,SAAS,mBAAA,CAA2C,EAAA,EAaxD;AAbwD,EAAA,IAAA,GAAA,EAAA,EAAA,EACzD;AAAA,IAAA,EAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW;AAAA,EAlBb,EAAA,EAW2D,EAAA,EAQtD,KAAA,EAAA,wCAAA,EARsD,EAQtD;AAAA,IAPH,IAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,EAAA,CAAA,CAAA;AAOA,EAAA,MAAM,EAAE,QAAQ,EAAA,EAAI,2CAAA,CAAkB;AACtC,EAAA,MAAuCA,IAAAA,EAAA,WAAA,GAAA,KAAA,EAAA,WAAA,EAAc,CAAC,CAAA,EAA9C,EAAA,QA1BV,EAAA,EA0ByCA,GAAAA,EAAnB,eAAA,EAAA,wCAAA,GAAmBA,EAAnB,CAAZ,SAAA,CAAA,CAAA;AAER,EAAA,uBACE,eAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iCAAA,oBAAG,EAAsB,OAAO,EAAA,CAAA,kBAC9C,eAAA,CAAA,aAAA;AAAA,IAAC,yBAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,EAAE,QAAA,EAAU,MAAM,EAAE,CAAA,EAAA,GAAM;AAC1C,QAAA,uBACE,eAAA,CAAA,aAAA;AAAA,UAAC,gCAAA;AAAA,UAAA,6CAAA;AAAA,YACC,EAAA;AAAA,YACA,IAAA;AAAA,YACA,KAAA;AAAA,YACA,KAAA,EAAO,MAAA,GAAA,KAAA,EAAA,MAAA,EAAS,CAAC,CAAA;AAAA,YACjB,QAAA;AAAA,YACA,QAAA;AAAA,YACA,UAAA,EAAY;AAAA,UAAA,CAAA,EACR,IAAA;AAAA,QACN,CAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EACF,CAAA,kBAEA,eAAA,CAAA,aAAA,CAAC,0BAAA,EAAA,EAAU,KAAA,EAAO,IAAA,EAAM,SAAA,EAAU,MAAA,EAAO,OAAA,EAAS,MAAA,CAAO,CAC3D,CAAA;AAEJ;ADmBA;AACE;AACF,kDAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/components/form/hook-multi-select.js","sourcesContent":[null,"\"use client\";\nimport React from 'react';\nimport { Controller, type FieldValues, type Path, useFormContext } from 'react-hook-form';\n\nimport { cn } from '../../utils/ui';\nimport { FormError } from './error';\nimport { FormMultiSelect } from './multi-select';\n\nimport type { FormMultiSelectProps } from './multi-select';\nimport type { HookFormRules } from './types';\n\nexport function HookFormMultiSelect<T extends FieldValues>({\n id,\n name,\n label,\n error,\n rules,\n classNames,\n disabled = false,\n ...rest\n}: Omit<FormMultiSelectProps, 'name' | 'onChange' | 'value'> & {\n rules?: HookFormRules<T>;\n name: Path<T>;\n error?: string;\n}) {\n const { control } = useFormContext<T>();\n const { wrapper, ...restClassnames } = classNames ?? {};\n\n return (\n <div className={cn('$hook-multi-select', wrapper)}>\n <Controller\n control={control}\n name={name}\n rules={rules}\n render={({ field: { onChange, value } }) => {\n return (\n <FormMultiSelect\n id={id}\n name={name}\n label={label}\n value={value ?? []}\n onChange={onChange}\n disabled={disabled}\n classNames={restClassnames}\n {...rest}\n />\n );\n }}\n />\n\n <FormError field={name} className=\"mt-1\" message={error} />\n </div>\n );\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
FormMultiSelect
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
4
|
+
} from "../../chunk-AGPEWIPR.mjs";
|
|
5
|
+
import "../../chunk-RNKMPQDZ.mjs";
|
|
6
6
|
import "../../chunk-ZFBUIBJH.mjs";
|
|
7
7
|
import "../../chunk-YDRPNCWF.mjs";
|
|
8
8
|
import "../../chunk-OPNHC6JN.mjs";
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
} from "../../chunk-YOSPWY5K.mjs";
|
|
26
26
|
|
|
27
27
|
// components/form/hook-multi-select.tsx
|
|
28
|
+
import React from "react";
|
|
28
29
|
import { Controller, useFormContext } from "react-hook-form";
|
|
29
30
|
function HookFormMultiSelect(_a) {
|
|
30
31
|
var _b = _a, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/form/hook-multi-select.tsx"],"sourcesContent":["\"use client\";\nimport { Controller, type FieldValues, type Path, useFormContext } from 'react-hook-form';\n\nimport { cn } from '../../utils/ui';\nimport { FormError } from './error';\nimport { FormMultiSelect } from './multi-select';\n\nimport type { FormMultiSelectProps } from './multi-select';\nimport type { HookFormRules } from './types';\n\nexport function HookFormMultiSelect<T extends FieldValues>({\n id,\n name,\n label,\n error,\n rules,\n classNames,\n disabled = false,\n ...rest\n}: Omit<FormMultiSelectProps, 'name' | 'onChange' | 'value'> & {\n rules?: HookFormRules<T>;\n name: Path<T>;\n error?: string;\n}) {\n const { control } = useFormContext<T>();\n const { wrapper, ...restClassnames } = classNames ?? {};\n\n return (\n <div className={cn('$hook-multi-select', wrapper)}>\n <Controller\n control={control}\n name={name}\n rules={rules}\n render={({ field: { onChange, value } }) => {\n return (\n <FormMultiSelect\n id={id}\n name={name}\n label={label}\n value={value ?? []}\n onChange={onChange}\n disabled={disabled}\n classNames={restClassnames}\n {...rest}\n />\n );\n }}\n />\n\n <FormError field={name} className=\"mt-1\" message={error} />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,YAAyC,sBAAsB;AASjE,SAAS,oBAA2C,IAaxD;AAbwD,eACzD;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../components/form/hook-multi-select.tsx"],"sourcesContent":["\"use client\";\nimport React from 'react';\nimport { Controller, type FieldValues, type Path, useFormContext } from 'react-hook-form';\n\nimport { cn } from '../../utils/ui';\nimport { FormError } from './error';\nimport { FormMultiSelect } from './multi-select';\n\nimport type { FormMultiSelectProps } from './multi-select';\nimport type { HookFormRules } from './types';\n\nexport function HookFormMultiSelect<T extends FieldValues>({\n id,\n name,\n label,\n error,\n rules,\n classNames,\n disabled = false,\n ...rest\n}: Omit<FormMultiSelectProps, 'name' | 'onChange' | 'value'> & {\n rules?: HookFormRules<T>;\n name: Path<T>;\n error?: string;\n}) {\n const { control } = useFormContext<T>();\n const { wrapper, ...restClassnames } = classNames ?? {};\n\n return (\n <div className={cn('$hook-multi-select', wrapper)}>\n <Controller\n control={control}\n name={name}\n rules={rules}\n render={({ field: { onChange, value } }) => {\n return (\n <FormMultiSelect\n id={id}\n name={name}\n label={label}\n value={value ?? []}\n onChange={onChange}\n disabled={disabled}\n classNames={restClassnames}\n {...rest}\n />\n );\n }}\n />\n\n <FormError field={name} className=\"mt-1\" message={error} />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,WAAW;AAClB,SAAS,YAAyC,sBAAsB;AASjE,SAAS,oBAA2C,IAaxD;AAbwD,eACzD;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,EAlBb,IAW2D,IAQtD,iBARsD,IAQtD;AAAA,IAPH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAOA,QAAM,EAAE,QAAQ,IAAI,eAAkB;AACtC,QAAuCA,MAAA,kCAAc,CAAC,GAA9C,UA1BV,IA0ByCA,KAAnB,2BAAmBA,KAAnB,CAAZ;AAER,SACE,oCAAC,SAAI,WAAW,GAAG,sBAAsB,OAAO,KAC9C;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,MAAM,EAAE,MAAM;AAC1C,eACE;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA,OAAO,wBAAS,CAAC;AAAA,YACjB;AAAA,YACA;AAAA,YACA,YAAY;AAAA,aACR;AAAA,QACN;AAAA,MAEJ;AAAA;AAAA,EACF,GAEA,oCAAC,aAAU,OAAO,MAAM,WAAU,QAAO,SAAS,OAAO,CAC3D;AAEJ;","names":["_a"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React__default from 'react';
|
|
2
2
|
import { FieldValues, Path } from 'react-hook-form';
|
|
3
3
|
import { FormTagPickerProps } from './tag-picker.mjs';
|
|
4
4
|
import { HookFormRules } from './types.mjs';
|
|
@@ -7,6 +7,6 @@ declare function HookFormTagPicker<T extends FieldValues>({ id, name, label, err
|
|
|
7
7
|
rules?: HookFormRules<T>;
|
|
8
8
|
name: Path<T>;
|
|
9
9
|
error?: string;
|
|
10
|
-
}):
|
|
10
|
+
}): React__default.JSX.Element;
|
|
11
11
|
|
|
12
12
|
export { HookFormTagPicker };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React__default from 'react';
|
|
2
2
|
import { FieldValues, Path } from 'react-hook-form';
|
|
3
3
|
import { FormTagPickerProps } from './tag-picker.js';
|
|
4
4
|
import { HookFormRules } from './types.js';
|
|
@@ -7,6 +7,6 @@ declare function HookFormTagPicker<T extends FieldValues>({ id, name, label, err
|
|
|
7
7
|
rules?: HookFormRules<T>;
|
|
8
8
|
name: Path<T>;
|
|
9
9
|
error?: string;
|
|
10
|
-
}):
|
|
10
|
+
}): React__default.JSX.Element;
|
|
11
11
|
|
|
12
12
|
export { HookFormTagPicker };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
require('../../chunk-
|
|
5
|
+
var _chunkP6L4JTWOjs = require('../../chunk-P6L4JTWO.js');
|
|
6
|
+
require('../../chunk-WK4MG4VT.js');
|
|
7
7
|
require('../../chunk-2YMMYND2.js');
|
|
8
8
|
|
|
9
9
|
|
|
@@ -18,6 +18,7 @@ var _chunkPSPAJNNBjs = require('../../chunk-PSPAJNNB.js');
|
|
|
18
18
|
var _chunk2NMEKWO5js = require('../../chunk-2NMEKWO5.js');
|
|
19
19
|
|
|
20
20
|
// components/form/hook-tag-picker.tsx
|
|
21
|
+
var _react = require('react'); var _react2 = _interopRequireDefault(_react);
|
|
21
22
|
var _reacthookform = require('react-hook-form');
|
|
22
23
|
function HookFormTagPicker(_a) {
|
|
23
24
|
var _b = _a, {
|
|
@@ -39,14 +40,14 @@ function HookFormTagPicker(_a) {
|
|
|
39
40
|
]);
|
|
40
41
|
const { control } = _reacthookform.useFormContext.call(void 0, );
|
|
41
42
|
const _a2 = classNames != null ? classNames : {}, { wrapper } = _a2, restClassnames = _chunk2NMEKWO5js.__objRest.call(void 0, _a2, ["wrapper"]);
|
|
42
|
-
return /* @__PURE__ */
|
|
43
|
+
return /* @__PURE__ */ _react2.default.createElement("div", { className: _chunkPSPAJNNBjs.cn.call(void 0, "$hook-tag-picker", wrapper) }, /* @__PURE__ */ _react2.default.createElement(
|
|
43
44
|
_reacthookform.Controller,
|
|
44
45
|
{
|
|
45
46
|
control,
|
|
46
47
|
name,
|
|
47
48
|
rules,
|
|
48
|
-
render: ({ field: { onChange, value } }) => /* @__PURE__ */
|
|
49
|
-
|
|
49
|
+
render: ({ field: { onChange, value } }) => /* @__PURE__ */ _react2.default.createElement(
|
|
50
|
+
_chunkP6L4JTWOjs.FormTagPicker,
|
|
50
51
|
_chunk2NMEKWO5js.__spreadValues.call(void 0, {
|
|
51
52
|
id,
|
|
52
53
|
name,
|
|
@@ -58,7 +59,7 @@ function HookFormTagPicker(_a) {
|
|
|
58
59
|
}, rest)
|
|
59
60
|
)
|
|
60
61
|
}
|
|
61
|
-
), /* @__PURE__ */
|
|
62
|
+
), /* @__PURE__ */ _react2.default.createElement(_chunk6POWZMNDjs.FormError, { field: name, className: "mt-1", message: error }));
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/components/form/hook-tag-picker.js","../../../components/form/hook-tag-picker.tsx"],"names":["_a"],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/components/form/hook-tag-picker.js","../../../components/form/hook-tag-picker.tsx"],"names":["_a"],"mappings":"AAAA,qLAAY;AACZ;AACE;AACF,0DAAgC;AAChC,mCAAgC;AAChC,mCAAgC;AAChC;AACE;AACF,0DAAgC;AAChC,mCAAgC;AAChC;AACE;AACF,0DAAgC;AAChC;AACE;AACA;AACF,0DAAgC;AAChC;AACA;ACjBA,4EAAkB;AAClB,gDAAwE;AASjE,SAAS,iBAAA,CAAyC,EAAA,EAatD;AAbsD,EAAA,IAAA,GAAA,EAAA,EAAA,EACvD;AAAA,IAAA,EAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW;AAAA,EAlBb,EAAA,EAWyD,EAAA,EAQpD,KAAA,EAAA,wCAAA,EARoD,EAQpD;AAAA,IAPH,IAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,EAAA,CAAA,CAAA;AAOA,EAAA,MAAM,EAAE,QAAQ,EAAA,EAAI,2CAAA,CAAkB;AACtC,EAAA,MAAuCA,IAAAA,EAAA,WAAA,GAAA,KAAA,EAAA,WAAA,EAAc,CAAC,CAAA,EAA9C,EAAA,QA1BV,EAAA,EA0ByCA,GAAAA,EAAnB,eAAA,EAAA,wCAAA,GAAmBA,EAAnB,CAAZ,SAAA,CAAA,CAAA;AAER,EAAA,uBACE,eAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iCAAA,kBAAG,EAAoB,OAAO,EAAA,CAAA,kBAC5C,eAAA,CAAA,aAAA;AAAA,IAAC,yBAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,EAAE,QAAA,EAAU,MAAM,EAAE,CAAA,EAAA,mBACpC,eAAA,CAAA,aAAA;AAAA,QAAC,8BAAA;AAAA,QAAA,6CAAA;AAAA,UACC,EAAA;AAAA,UACA,IAAA;AAAA,UACA,KAAA;AAAA,UACA,KAAA,EAAO,MAAA,GAAA,KAAA,EAAA,MAAA,EAAS,CAAC,CAAA;AAAA,UACjB,QAAA;AAAA,UACA,QAAA;AAAA,UACA,UAAA,EAAY;AAAA,QAAA,CAAA,EACR,IAAA;AAAA,MACN;AAAA,IAAA;AAAA,EAEJ,CAAA,kBAEA,eAAA,CAAA,aAAA,CAAC,0BAAA,EAAA,EAAU,KAAA,EAAO,IAAA,EAAM,SAAA,EAAU,MAAA,EAAO,OAAA,EAAS,MAAA,CAAO,CAC3D,CAAA;AAEJ;ADWA;AACE;AACF,8CAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/components/form/hook-tag-picker.js","sourcesContent":[null,"\"use client\";\nimport React from 'react';\nimport { Controller, type FieldValues, type Path, useFormContext } from 'react-hook-form';\n\nimport { cn } from '../../utils/ui';\nimport { FormError } from './error';\nimport { FormTagPicker } from './tag-picker';\n\nimport type { FormTagPickerProps } from './tag-picker';\nimport type { HookFormRules } from './types';\n\nexport function HookFormTagPicker<T extends FieldValues>({\n id,\n name,\n label,\n error,\n rules,\n classNames,\n disabled = false,\n ...rest\n}: Omit<FormTagPickerProps, 'name' | 'onChange' | 'value'> & {\n rules?: HookFormRules<T>;\n name: Path<T>;\n error?: string;\n}) {\n const { control } = useFormContext<T>();\n const { wrapper, ...restClassnames } = classNames ?? {};\n\n return (\n <div className={cn('$hook-tag-picker', wrapper)}>\n <Controller\n control={control}\n name={name}\n rules={rules}\n render={({ field: { onChange, value } }) => (\n <FormTagPicker\n id={id}\n name={name}\n label={label}\n value={value ?? []}\n onChange={onChange}\n disabled={disabled}\n classNames={restClassnames}\n {...rest}\n />\n )}\n />\n\n <FormError field={name} className=\"mt-1\" message={error} />\n </div>\n );\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
FormTagPicker
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
4
|
+
} from "../../chunk-ELSPE6GB.mjs";
|
|
5
|
+
import "../../chunk-NCJI2DCV.mjs";
|
|
6
6
|
import "../../chunk-WIISPZZE.mjs";
|
|
7
7
|
import {
|
|
8
8
|
FormError
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
} from "../../chunk-YOSPWY5K.mjs";
|
|
18
18
|
|
|
19
19
|
// components/form/hook-tag-picker.tsx
|
|
20
|
+
import React from "react";
|
|
20
21
|
import { Controller, useFormContext } from "react-hook-form";
|
|
21
22
|
function HookFormTagPicker(_a) {
|
|
22
23
|
var _b = _a, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/form/hook-tag-picker.tsx"],"sourcesContent":["\"use client\";\nimport { Controller, type FieldValues, type Path, useFormContext } from 'react-hook-form';\n\nimport { cn } from '../../utils/ui';\nimport { FormError } from './error';\nimport { FormTagPicker } from './tag-picker';\n\nimport type { FormTagPickerProps } from './tag-picker';\nimport type { HookFormRules } from './types';\n\nexport function HookFormTagPicker<T extends FieldValues>({\n id,\n name,\n label,\n error,\n rules,\n classNames,\n disabled = false,\n ...rest\n}: Omit<FormTagPickerProps, 'name' | 'onChange' | 'value'> & {\n rules?: HookFormRules<T>;\n name: Path<T>;\n error?: string;\n}) {\n const { control } = useFormContext<T>();\n const { wrapper, ...restClassnames } = classNames ?? {};\n\n return (\n <div className={cn('$hook-tag-picker', wrapper)}>\n <Controller\n control={control}\n name={name}\n rules={rules}\n render={({ field: { onChange, value } }) => (\n <FormTagPicker\n id={id}\n name={name}\n label={label}\n value={value ?? []}\n onChange={onChange}\n disabled={disabled}\n classNames={restClassnames}\n {...rest}\n />\n )}\n />\n\n <FormError field={name} className=\"mt-1\" message={error} />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AACA,SAAS,YAAyC,sBAAsB;AASjE,SAAS,kBAAyC,IAatD;AAbsD,eACvD;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../components/form/hook-tag-picker.tsx"],"sourcesContent":["\"use client\";\nimport React from 'react';\nimport { Controller, type FieldValues, type Path, useFormContext } from 'react-hook-form';\n\nimport { cn } from '../../utils/ui';\nimport { FormError } from './error';\nimport { FormTagPicker } from './tag-picker';\n\nimport type { FormTagPickerProps } from './tag-picker';\nimport type { HookFormRules } from './types';\n\nexport function HookFormTagPicker<T extends FieldValues>({\n id,\n name,\n label,\n error,\n rules,\n classNames,\n disabled = false,\n ...rest\n}: Omit<FormTagPickerProps, 'name' | 'onChange' | 'value'> & {\n rules?: HookFormRules<T>;\n name: Path<T>;\n error?: string;\n}) {\n const { control } = useFormContext<T>();\n const { wrapper, ...restClassnames } = classNames ?? {};\n\n return (\n <div className={cn('$hook-tag-picker', wrapper)}>\n <Controller\n control={control}\n name={name}\n rules={rules}\n render={({ field: { onChange, value } }) => (\n <FormTagPicker\n id={id}\n name={name}\n label={label}\n value={value ?? []}\n onChange={onChange}\n disabled={disabled}\n classNames={restClassnames}\n {...rest}\n />\n )}\n />\n\n <FormError field={name} className=\"mt-1\" message={error} />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AACA,OAAO,WAAW;AAClB,SAAS,YAAyC,sBAAsB;AASjE,SAAS,kBAAyC,IAatD;AAbsD,eACvD;AAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,EAlBb,IAWyD,IAQpD,iBARoD,IAQpD;AAAA,IAPH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAOA,QAAM,EAAE,QAAQ,IAAI,eAAkB;AACtC,QAAuCA,MAAA,kCAAc,CAAC,GAA9C,UA1BV,IA0ByCA,KAAnB,2BAAmBA,KAAnB,CAAZ;AAER,SACE,oCAAC,SAAI,WAAW,GAAG,oBAAoB,OAAO,KAC5C;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,MAAM,EAAE,MACpC;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO,wBAAS,CAAC;AAAA,UACjB;AAAA,UACA;AAAA,UACA,YAAY;AAAA,WACR;AAAA,MACN;AAAA;AAAA,EAEJ,GAEA,oCAAC,aAAU,OAAO,MAAM,WAAU,QAAO,SAAS,OAAO,CAC3D;AAEJ;","names":["_a"]}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
require('../../chunk-
|
|
5
|
+
var _chunkYEGS4ETWjs = require('../../chunk-YEGS4ETW.js');
|
|
6
|
+
require('../../chunk-WXEEDLLR.js');
|
|
7
7
|
require('../../chunk-LAIO3QZX.js');
|
|
8
8
|
require('../../chunk-LPDYWZN6.js');
|
|
9
9
|
require('../../chunk-RFORRZRN.js');
|
|
@@ -18,5 +18,5 @@ require('../../chunk-PSPAJNNB.js');
|
|
|
18
18
|
require('../../chunk-2NMEKWO5.js');
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
exports.FormMultiSelect =
|
|
21
|
+
exports.FormMultiSelect = _chunkYEGS4ETWjs.FormMultiSelect;
|
|
22
22
|
//# sourceMappingURL=multi-select.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
FormMultiSelect
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
4
|
+
} from "../../chunk-AGPEWIPR.mjs";
|
|
5
|
+
import "../../chunk-RNKMPQDZ.mjs";
|
|
6
6
|
import "../../chunk-ZFBUIBJH.mjs";
|
|
7
7
|
import "../../chunk-YDRPNCWF.mjs";
|
|
8
8
|
import "../../chunk-OPNHC6JN.mjs";
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
require('../../chunk-
|
|
5
|
+
var _chunkP6L4JTWOjs = require('../../chunk-P6L4JTWO.js');
|
|
6
|
+
require('../../chunk-WK4MG4VT.js');
|
|
7
7
|
require('../../chunk-2YMMYND2.js');
|
|
8
8
|
require('../../chunk-CKGMFUU2.js');
|
|
9
9
|
require('../../chunk-PSPAJNNB.js');
|
|
10
10
|
require('../../chunk-2NMEKWO5.js');
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
exports.FormTagPicker =
|
|
13
|
+
exports.FormTagPicker = _chunkP6L4JTWOjs.FormTagPicker;
|
|
14
14
|
//# sourceMappingURL=tag-picker.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
FormTagPicker
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
4
|
+
} from "../../chunk-ELSPE6GB.mjs";
|
|
5
|
+
import "../../chunk-NCJI2DCV.mjs";
|
|
6
6
|
import "../../chunk-WIISPZZE.mjs";
|
|
7
7
|
import "../../chunk-MM5OJOOR.mjs";
|
|
8
8
|
import "../../chunk-KGUUDFJE.mjs";
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
1
2
|
import { Command } from 'cmdk';
|
|
2
|
-
import React__default from 'react';
|
|
3
3
|
|
|
4
4
|
type MultiSelectValue = {
|
|
5
5
|
value: string;
|
|
6
6
|
label: string;
|
|
7
7
|
};
|
|
8
|
-
interface MultiSelectorProps extends
|
|
8
|
+
interface MultiSelectorProps extends React.ComponentPropsWithoutRef<typeof Command> {
|
|
9
9
|
values: MultiSelectValue[];
|
|
10
10
|
onValuesChange: (value: MultiSelectValue[]) => void;
|
|
11
11
|
loop?: boolean;
|
|
12
12
|
className?: string;
|
|
13
|
-
children?:
|
|
13
|
+
children?: React.ReactNode;
|
|
14
14
|
dir?: 'ltr' | 'rtl';
|
|
15
15
|
disabled?: boolean;
|
|
16
16
|
}
|
|
17
|
-
declare const MultiSelector: ({ values: value, onValuesChange: onValueChange, loop, className, children, dir, disabled, ...props }: MultiSelectorProps) =>
|
|
18
|
-
declare const MultiSelectorTrigger:
|
|
19
|
-
declare const MultiSelectorInput:
|
|
20
|
-
ref?:
|
|
17
|
+
declare const MultiSelector: ({ values: value, onValuesChange: onValueChange, loop, className, children, dir, disabled, ...props }: MultiSelectorProps) => React.JSX.Element;
|
|
18
|
+
declare const MultiSelectorTrigger: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
19
|
+
declare const MultiSelectorInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "key" | keyof React.InputHTMLAttributes<HTMLInputElement>> & {
|
|
20
|
+
ref?: React.Ref<HTMLInputElement>;
|
|
21
21
|
} & {
|
|
22
22
|
asChild?: boolean;
|
|
23
|
-
}, "key" | "asChild" | keyof
|
|
23
|
+
}, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "type" | "value" | "onChange"> & {
|
|
24
24
|
value?: string;
|
|
25
25
|
onValueChange?: (search: string) => void;
|
|
26
|
-
} &
|
|
27
|
-
declare const MultiSelectorContent:
|
|
28
|
-
declare const MultiSelectorList:
|
|
29
|
-
children?:
|
|
30
|
-
} & Pick<Pick<
|
|
31
|
-
ref?:
|
|
26
|
+
} & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
27
|
+
declare const MultiSelectorContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
28
|
+
declare const MultiSelectorList: React.ForwardRefExoticComponent<Omit<{
|
|
29
|
+
children?: React.ReactNode;
|
|
30
|
+
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
31
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
32
32
|
} & {
|
|
33
33
|
asChild?: boolean;
|
|
34
|
-
}, "key" | "asChild" | keyof
|
|
34
|
+
}, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
35
35
|
label?: string;
|
|
36
|
-
} &
|
|
37
|
-
declare const MultiSelectorItem:
|
|
36
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
37
|
+
declare const MultiSelectorItem: React.ForwardRefExoticComponent<{
|
|
38
38
|
value: string;
|
|
39
39
|
label: string;
|
|
40
40
|
} & Omit<{
|
|
41
|
-
children?:
|
|
42
|
-
} & Omit<Pick<Pick<
|
|
43
|
-
ref?:
|
|
41
|
+
children?: React.ReactNode;
|
|
42
|
+
} & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
43
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
44
44
|
} & {
|
|
45
45
|
asChild?: boolean;
|
|
46
|
-
}, "key" | "asChild" | keyof
|
|
46
|
+
}, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "disabled" | "value" | "onSelect"> & {
|
|
47
47
|
disabled?: boolean;
|
|
48
48
|
onSelect?: (value: string) => void;
|
|
49
49
|
value?: string;
|
|
50
50
|
keywords?: string[];
|
|
51
51
|
forceMount?: boolean;
|
|
52
|
-
} &
|
|
52
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
53
53
|
|
|
54
54
|
export { type MultiSelectValue, MultiSelector, MultiSelectorContent, MultiSelectorInput, MultiSelectorItem, MultiSelectorList, MultiSelectorTrigger };
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
1
2
|
import { Command } from 'cmdk';
|
|
2
|
-
import React__default from 'react';
|
|
3
3
|
|
|
4
4
|
type MultiSelectValue = {
|
|
5
5
|
value: string;
|
|
6
6
|
label: string;
|
|
7
7
|
};
|
|
8
|
-
interface MultiSelectorProps extends
|
|
8
|
+
interface MultiSelectorProps extends React.ComponentPropsWithoutRef<typeof Command> {
|
|
9
9
|
values: MultiSelectValue[];
|
|
10
10
|
onValuesChange: (value: MultiSelectValue[]) => void;
|
|
11
11
|
loop?: boolean;
|
|
12
12
|
className?: string;
|
|
13
|
-
children?:
|
|
13
|
+
children?: React.ReactNode;
|
|
14
14
|
dir?: 'ltr' | 'rtl';
|
|
15
15
|
disabled?: boolean;
|
|
16
16
|
}
|
|
17
|
-
declare const MultiSelector: ({ values: value, onValuesChange: onValueChange, loop, className, children, dir, disabled, ...props }: MultiSelectorProps) =>
|
|
18
|
-
declare const MultiSelectorTrigger:
|
|
19
|
-
declare const MultiSelectorInput:
|
|
20
|
-
ref?:
|
|
17
|
+
declare const MultiSelector: ({ values: value, onValuesChange: onValueChange, loop, className, children, dir, disabled, ...props }: MultiSelectorProps) => React.JSX.Element;
|
|
18
|
+
declare const MultiSelectorTrigger: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
19
|
+
declare const MultiSelectorInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "key" | keyof React.InputHTMLAttributes<HTMLInputElement>> & {
|
|
20
|
+
ref?: React.Ref<HTMLInputElement>;
|
|
21
21
|
} & {
|
|
22
22
|
asChild?: boolean;
|
|
23
|
-
}, "key" | "asChild" | keyof
|
|
23
|
+
}, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "type" | "value" | "onChange"> & {
|
|
24
24
|
value?: string;
|
|
25
25
|
onValueChange?: (search: string) => void;
|
|
26
|
-
} &
|
|
27
|
-
declare const MultiSelectorContent:
|
|
28
|
-
declare const MultiSelectorList:
|
|
29
|
-
children?:
|
|
30
|
-
} & Pick<Pick<
|
|
31
|
-
ref?:
|
|
26
|
+
} & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
27
|
+
declare const MultiSelectorContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
28
|
+
declare const MultiSelectorList: React.ForwardRefExoticComponent<Omit<{
|
|
29
|
+
children?: React.ReactNode;
|
|
30
|
+
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
31
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
32
32
|
} & {
|
|
33
33
|
asChild?: boolean;
|
|
34
|
-
}, "key" | "asChild" | keyof
|
|
34
|
+
}, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
35
35
|
label?: string;
|
|
36
|
-
} &
|
|
37
|
-
declare const MultiSelectorItem:
|
|
36
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
37
|
+
declare const MultiSelectorItem: React.ForwardRefExoticComponent<{
|
|
38
38
|
value: string;
|
|
39
39
|
label: string;
|
|
40
40
|
} & Omit<{
|
|
41
|
-
children?:
|
|
42
|
-
} & Omit<Pick<Pick<
|
|
43
|
-
ref?:
|
|
41
|
+
children?: React.ReactNode;
|
|
42
|
+
} & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
43
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
44
44
|
} & {
|
|
45
45
|
asChild?: boolean;
|
|
46
|
-
}, "key" | "asChild" | keyof
|
|
46
|
+
}, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "disabled" | "value" | "onSelect"> & {
|
|
47
47
|
disabled?: boolean;
|
|
48
48
|
onSelect?: (value: string) => void;
|
|
49
49
|
value?: string;
|
|
50
50
|
keywords?: string[];
|
|
51
51
|
forceMount?: boolean;
|
|
52
|
-
} &
|
|
52
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
53
53
|
|
|
54
54
|
export { type MultiSelectValue, MultiSelector, MultiSelectorContent, MultiSelectorInput, MultiSelectorItem, MultiSelectorList, MultiSelectorTrigger };
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkWXEEDLLRjs = require('../../chunk-WXEEDLLR.js');
|
|
11
11
|
require('../../chunk-LAIO3QZX.js');
|
|
12
12
|
require('../../chunk-LPDYWZN6.js');
|
|
13
13
|
require('../../chunk-RFORRZRN.js');
|
|
@@ -25,5 +25,5 @@ require('../../chunk-2NMEKWO5.js');
|
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
exports.MultiSelector =
|
|
28
|
+
exports.MultiSelector = _chunkWXEEDLLRjs.MultiSelector; exports.MultiSelectorContent = _chunkWXEEDLLRjs.MultiSelectorContent; exports.MultiSelectorInput = _chunkWXEEDLLRjs.MultiSelectorInput; exports.MultiSelectorItem = _chunkWXEEDLLRjs.MultiSelectorItem; exports.MultiSelectorList = _chunkWXEEDLLRjs.MultiSelectorList; exports.MultiSelectorTrigger = _chunkWXEEDLLRjs.MultiSelectorTrigger;
|
|
29
29
|
//# sourceMappingURL=multi-select.js.map
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkWK4MG4VTjs = require('../../chunk-WK4MG4VT.js');
|
|
6
6
|
require('../../chunk-2YMMYND2.js');
|
|
7
7
|
require('../../chunk-PSPAJNNB.js');
|
|
8
8
|
require('../../chunk-2NMEKWO5.js');
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
exports.TagPicker =
|
|
11
|
+
exports.TagPicker = _chunkWK4MG4VTjs.TagPicker;
|
|
12
12
|
//# sourceMappingURL=tag-picker.js.map
|
package/package.json
CHANGED
package/chunk-3TG6ZVFG.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-3TG6ZVFG.js","../components/ui/multi-select.tsx"],"names":["_a","_b"],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-3TG6ZVFG.js","sourcesContent":[null,"\"use client\";\nimport { IconCheck, IconX } from '@tabler/icons-react';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport React, { type KeyboardEvent, createContext, forwardRef, useCallback, useContext, useState } from 'react';\n\nimport { cn } from '../../utils/ui';\nimport { Badge } from './badge';\nimport { Command, CommandEmpty, CommandItem, CommandList } from './command';\n\nexport type MultiSelectValue = {\n value: string;\n label: string;\n};\n\ninterface MultiSelectorProps extends React.ComponentPropsWithoutRef<typeof CommandPrimitive> {\n values: MultiSelectValue[];\n onValuesChange: (value: MultiSelectValue[]) => void;\n loop?: boolean;\n className?: string;\n children?: React.ReactNode;\n dir?: 'ltr' | 'rtl';\n disabled?: boolean;\n}\n\ninterface MultiSelectContextProps {\n value: MultiSelectValue[];\n onValueChange: (value: MultiSelectValue) => void;\n open: boolean;\n setOpen: (value: boolean) => void;\n inputValue: string;\n setInputValue: React.Dispatch<React.SetStateAction<string>>;\n activeIndex: number;\n setActiveIndex: React.Dispatch<React.SetStateAction<number>>;\n ref: React.RefObject<HTMLInputElement | null>;\n disabled: boolean;\n}\n\nconst MultiSelectContext = createContext<MultiSelectContextProps | null>(null);\n\nconst useMultiSelect = () => {\n const context = useContext(MultiSelectContext);\n if (!context) {\n throw new Error('useMultiSelect must be used within MultiSelectProvider');\n }\n return context;\n};\n\nfunction searchForValue(source: MultiSelectValue[], value: MultiSelectValue) {\n for (let i = 0; i < source.length; i++) {\n if (source[i].value === value.value) {\n return i;\n }\n }\n return -1;\n}\n\nconst MultiSelector = ({\n values: value,\n onValuesChange: onValueChange,\n loop = false,\n className,\n children,\n dir,\n disabled = false,\n ...props\n}: MultiSelectorProps) => {\n const [inputValue, setInputValue] = useState('');\n const [open, setOpen] = useState<boolean>(false);\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const onValueChangeHandler = useCallback(\n (val: MultiSelectValue) => {\n if (disabled) return;\n\n const exists = value.some((currentValue) => currentValue.value === val.value);\n if (exists) {\n onValueChange(value.filter((currentValue) => currentValue.value !== val.value));\n } else {\n onValueChange([...value, val]);\n }\n },\n [disabled, onValueChange, value],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n e.stopPropagation();\n\n if (disabled) return;\n\n const target = inputRef.current;\n\n if (!target) return;\n\n const selectionStart = target.selectionStart ?? 0;\n const selectionEnd = target.selectionEnd ?? 0;\n\n if (selectionStart !== selectionEnd) {\n return;\n }\n\n const moveNext = () => {\n const nextIndex = activeIndex + 1;\n setActiveIndex(nextIndex > value.length - 1 ? (loop ? 0 : -1) : nextIndex);\n };\n\n const movePrev = () => {\n const prevIndex = activeIndex - 1;\n setActiveIndex(prevIndex < 0 ? value.length - 1 : prevIndex);\n };\n\n const moveCurrent = () => {\n const newIndex = activeIndex - 1 <= 0 ? (value.length - 1 === 0 ? -1 : 0) : activeIndex - 1;\n setActiveIndex(newIndex);\n };\n\n switch (e.key) {\n case 'ArrowLeft':\n if (dir === 'rtl') {\n if (value.length > 0 && (activeIndex !== -1 || loop)) {\n moveNext();\n }\n } else if (value.length > 0 && target.selectionStart === 0) {\n movePrev();\n }\n break;\n\n case 'ArrowRight':\n if (dir === 'rtl') {\n if (value.length > 0 && target.selectionStart === 0) {\n movePrev();\n }\n } else if (value.length > 0 && (activeIndex !== -1 || loop)) {\n moveNext();\n }\n break;\n\n case 'Backspace':\n case 'Delete':\n if (value.length > 0) {\n if (activeIndex !== -1 && activeIndex < value.length) {\n onValueChangeHandler(value[activeIndex]);\n moveCurrent();\n } else if (target.selectionStart === 0) {\n onValueChangeHandler(value[value.length - 1]);\n }\n }\n break;\n\n case 'Enter':\n setOpen(true);\n break;\n\n case 'Escape':\n if (activeIndex !== -1) {\n setActiveIndex(-1);\n } else if (open) {\n setInputValue('');\n setOpen(false);\n }\n break;\n }\n },\n [activeIndex, dir, disabled, loop, onValueChangeHandler, open, value],\n );\n\n return (\n <MultiSelectContext.Provider\n value={{\n value,\n onValueChange: onValueChangeHandler,\n open,\n setOpen,\n inputValue,\n setInputValue,\n activeIndex,\n setActiveIndex,\n ref: inputRef,\n disabled,\n }}\n >\n <Command\n onKeyDown={handleKeyDown}\n className={cn('flex flex-col overflow-visible bg-transparent', className)}\n dir={dir}\n {...props}\n >\n {children}\n </Command>\n </MultiSelectContext.Provider>\n );\n};\n\nconst MultiSelectorTrigger = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => {\n const { value, onValueChange, activeIndex, disabled } = useMultiSelect();\n\n const mousePreventDefault = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-wrap gap-1 rounded-lg border bg-background px-2 py-1',\n activeIndex === -1 && 'focus-within:ring-1 focus-within:ring-ring',\n disabled && 'cursor-not-allowed opacity-60',\n className,\n )}\n {...props}\n >\n {value.map((item, index) => (\n <Badge\n key={item.value}\n className={cn(\n 'flex items-center gap-1 rounded-md px-1.5',\n activeIndex === index && 'ring-2 ring-muted-foreground',\n )}\n variant=\"secondary\"\n >\n <span className=\"text-xs\">{item.label}</span>\n <button\n aria-label={`Remove ${item.label} option`}\n type=\"button\"\n disabled={disabled}\n onMouseDown={mousePreventDefault}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n\n onValueChange(item);\n }}\n className=\"inline-flex cursor-pointer items-center justify-center rounded-md p-1 transition-colors hover:bg-red-50 hover:text-red-700 focus-visible:bg-red-100 focus-visible:outline-none disabled:cursor-not-allowed\"\n >\n <span className=\"sr-only\">Remove {item.label} option</span>\n <IconX className=\"h-3.5 w-3.5\" />\n </button>\n </Badge>\n ))}\n {children}\n </div>\n );\n },\n);\n\nMultiSelectorTrigger.displayName = 'MultiSelectorTrigger';\n\nconst MultiSelectorInput = forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, disabled: disabledProp, ...props }, ref) => {\n const { setOpen, inputValue, setInputValue, activeIndex, setActiveIndex, ref: inputRef, disabled } = useMultiSelect();\n\n return (\n <CommandPrimitive.Input\n {...props}\n tabIndex={0}\n ref={inputRef}\n value={inputValue}\n disabled={disabled || disabledProp}\n onValueChange={activeIndex === -1 ? setInputValue : undefined}\n onBlur={() => {\n setInputValue('');\n setOpen(false);\n }}\n onFocus={() => setOpen(true)}\n onClick={() => setActiveIndex(-1)}\n className={cn(\n 'flex-1 border-none bg-transparent p-0 text-sm outline-none placeholder:text-muted-foreground focus:outline-none focus:ring-0',\n className,\n activeIndex !== -1 && 'caret-transparent',\n )}\n />\n );\n});\n\nMultiSelectorInput.displayName = 'MultiSelectorInput';\n\nconst MultiSelectorContent = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({ children }, ref) => {\n const { open } = useMultiSelect();\n\n if (!open) return null;\n\n return (\n <div ref={ref} className=\"relative\">\n {children}\n </div>\n );\n});\n\nMultiSelectorContent.displayName = 'MultiSelectorContent';\n\nconst MultiSelectorList = forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, children }, ref) => {\n return (\n <CommandList\n ref={ref}\n className={cn(\n 'absolute top-0 z-100 flex w-full flex-col gap-2 rounded-md border border-muted bg-background p-2 shadow-md scrollbar-thin scrollbar-track-transparent scrollbar-thumb-rounded-lg scrollbar-thumb-muted-foreground transition-colors dark:scrollbar-thumb-muted',\n className,\n )}\n >\n {children}\n <CommandEmpty>\n <span className=\"text-muted-foreground\">No results found</span>\n </CommandEmpty>\n </CommandList>\n );\n});\n\nMultiSelectorList.displayName = 'MultiSelectorList';\n\nconst MultiSelectorItem = forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n { value: string; label: string } & React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, value, label, children, disabled: disabledProp, ...props }, ref) => {\n const { value: options, onValueChange, setInputValue, disabled } = useMultiSelect();\n\n const mousePreventDefault = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n const isIncluded =\n searchForValue(options, {\n value,\n label,\n }) !== -1;\n\n const isDisabled = disabled || disabledProp;\n\n return (\n <CommandItem\n ref={ref}\n {...props}\n disabled={isDisabled}\n onSelect={() => {\n if (isDisabled) return;\n\n onValueChange({\n value,\n label,\n });\n setInputValue('');\n }}\n className={cn(\n 'flex cursor-pointer justify-between rounded-md px-2 py-1 transition-colors',\n className,\n isIncluded && 'cursor-default opacity-50',\n isDisabled && 'cursor-not-allowed opacity-50',\n )}\n onMouseDown={mousePreventDefault}\n >\n {children}\n {isIncluded && <IconCheck className=\"h-4 w-4\" />}\n </CommandItem>\n );\n});\n\nMultiSelectorItem.displayName = 'MultiSelectorItem';\n\nexport {\n MultiSelector,\n MultiSelectorTrigger,\n MultiSelectorInput,\n MultiSelectorContent,\n MultiSelectorList,\n MultiSelectorItem,\n};\n"]}
|
package/chunk-7JYFZETL.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../components/ui/multi-select.tsx"],"sourcesContent":["\"use client\";\nimport { IconCheck, IconX } from '@tabler/icons-react';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport React, { type KeyboardEvent, createContext, forwardRef, useCallback, useContext, useState } from 'react';\n\nimport { cn } from '../../utils/ui';\nimport { Badge } from './badge';\nimport { Command, CommandEmpty, CommandItem, CommandList } from './command';\n\nexport type MultiSelectValue = {\n value: string;\n label: string;\n};\n\ninterface MultiSelectorProps extends React.ComponentPropsWithoutRef<typeof CommandPrimitive> {\n values: MultiSelectValue[];\n onValuesChange: (value: MultiSelectValue[]) => void;\n loop?: boolean;\n className?: string;\n children?: React.ReactNode;\n dir?: 'ltr' | 'rtl';\n disabled?: boolean;\n}\n\ninterface MultiSelectContextProps {\n value: MultiSelectValue[];\n onValueChange: (value: MultiSelectValue) => void;\n open: boolean;\n setOpen: (value: boolean) => void;\n inputValue: string;\n setInputValue: React.Dispatch<React.SetStateAction<string>>;\n activeIndex: number;\n setActiveIndex: React.Dispatch<React.SetStateAction<number>>;\n ref: React.RefObject<HTMLInputElement | null>;\n disabled: boolean;\n}\n\nconst MultiSelectContext = createContext<MultiSelectContextProps | null>(null);\n\nconst useMultiSelect = () => {\n const context = useContext(MultiSelectContext);\n if (!context) {\n throw new Error('useMultiSelect must be used within MultiSelectProvider');\n }\n return context;\n};\n\nfunction searchForValue(source: MultiSelectValue[], value: MultiSelectValue) {\n for (let i = 0; i < source.length; i++) {\n if (source[i].value === value.value) {\n return i;\n }\n }\n return -1;\n}\n\nconst MultiSelector = ({\n values: value,\n onValuesChange: onValueChange,\n loop = false,\n className,\n children,\n dir,\n disabled = false,\n ...props\n}: MultiSelectorProps) => {\n const [inputValue, setInputValue] = useState('');\n const [open, setOpen] = useState<boolean>(false);\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const onValueChangeHandler = useCallback(\n (val: MultiSelectValue) => {\n if (disabled) return;\n\n const exists = value.some((currentValue) => currentValue.value === val.value);\n if (exists) {\n onValueChange(value.filter((currentValue) => currentValue.value !== val.value));\n } else {\n onValueChange([...value, val]);\n }\n },\n [disabled, onValueChange, value],\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n e.stopPropagation();\n\n if (disabled) return;\n\n const target = inputRef.current;\n\n if (!target) return;\n\n const selectionStart = target.selectionStart ?? 0;\n const selectionEnd = target.selectionEnd ?? 0;\n\n if (selectionStart !== selectionEnd) {\n return;\n }\n\n const moveNext = () => {\n const nextIndex = activeIndex + 1;\n setActiveIndex(nextIndex > value.length - 1 ? (loop ? 0 : -1) : nextIndex);\n };\n\n const movePrev = () => {\n const prevIndex = activeIndex - 1;\n setActiveIndex(prevIndex < 0 ? value.length - 1 : prevIndex);\n };\n\n const moveCurrent = () => {\n const newIndex = activeIndex - 1 <= 0 ? (value.length - 1 === 0 ? -1 : 0) : activeIndex - 1;\n setActiveIndex(newIndex);\n };\n\n switch (e.key) {\n case 'ArrowLeft':\n if (dir === 'rtl') {\n if (value.length > 0 && (activeIndex !== -1 || loop)) {\n moveNext();\n }\n } else if (value.length > 0 && target.selectionStart === 0) {\n movePrev();\n }\n break;\n\n case 'ArrowRight':\n if (dir === 'rtl') {\n if (value.length > 0 && target.selectionStart === 0) {\n movePrev();\n }\n } else if (value.length > 0 && (activeIndex !== -1 || loop)) {\n moveNext();\n }\n break;\n\n case 'Backspace':\n case 'Delete':\n if (value.length > 0) {\n if (activeIndex !== -1 && activeIndex < value.length) {\n onValueChangeHandler(value[activeIndex]);\n moveCurrent();\n } else if (target.selectionStart === 0) {\n onValueChangeHandler(value[value.length - 1]);\n }\n }\n break;\n\n case 'Enter':\n setOpen(true);\n break;\n\n case 'Escape':\n if (activeIndex !== -1) {\n setActiveIndex(-1);\n } else if (open) {\n setInputValue('');\n setOpen(false);\n }\n break;\n }\n },\n [activeIndex, dir, disabled, loop, onValueChangeHandler, open, value],\n );\n\n return (\n <MultiSelectContext.Provider\n value={{\n value,\n onValueChange: onValueChangeHandler,\n open,\n setOpen,\n inputValue,\n setInputValue,\n activeIndex,\n setActiveIndex,\n ref: inputRef,\n disabled,\n }}\n >\n <Command\n onKeyDown={handleKeyDown}\n className={cn('flex flex-col overflow-visible bg-transparent', className)}\n dir={dir}\n {...props}\n >\n {children}\n </Command>\n </MultiSelectContext.Provider>\n );\n};\n\nconst MultiSelectorTrigger = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => {\n const { value, onValueChange, activeIndex, disabled } = useMultiSelect();\n\n const mousePreventDefault = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-wrap gap-1 rounded-lg border bg-background px-2 py-1',\n activeIndex === -1 && 'focus-within:ring-1 focus-within:ring-ring',\n disabled && 'cursor-not-allowed opacity-60',\n className,\n )}\n {...props}\n >\n {value.map((item, index) => (\n <Badge\n key={item.value}\n className={cn(\n 'flex items-center gap-1 rounded-md px-1.5',\n activeIndex === index && 'ring-2 ring-muted-foreground',\n )}\n variant=\"secondary\"\n >\n <span className=\"text-xs\">{item.label}</span>\n <button\n aria-label={`Remove ${item.label} option`}\n type=\"button\"\n disabled={disabled}\n onMouseDown={mousePreventDefault}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n\n onValueChange(item);\n }}\n className=\"inline-flex cursor-pointer items-center justify-center rounded-md p-1 transition-colors hover:bg-red-50 hover:text-red-700 focus-visible:bg-red-100 focus-visible:outline-none disabled:cursor-not-allowed\"\n >\n <span className=\"sr-only\">Remove {item.label} option</span>\n <IconX className=\"h-3.5 w-3.5\" />\n </button>\n </Badge>\n ))}\n {children}\n </div>\n );\n },\n);\n\nMultiSelectorTrigger.displayName = 'MultiSelectorTrigger';\n\nconst MultiSelectorInput = forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, disabled: disabledProp, ...props }, ref) => {\n const { setOpen, inputValue, setInputValue, activeIndex, setActiveIndex, ref: inputRef, disabled } = useMultiSelect();\n\n return (\n <CommandPrimitive.Input\n {...props}\n tabIndex={0}\n ref={inputRef}\n value={inputValue}\n disabled={disabled || disabledProp}\n onValueChange={activeIndex === -1 ? setInputValue : undefined}\n onBlur={() => {\n setInputValue('');\n setOpen(false);\n }}\n onFocus={() => setOpen(true)}\n onClick={() => setActiveIndex(-1)}\n className={cn(\n 'flex-1 border-none bg-transparent p-0 text-sm outline-none placeholder:text-muted-foreground focus:outline-none focus:ring-0',\n className,\n activeIndex !== -1 && 'caret-transparent',\n )}\n />\n );\n});\n\nMultiSelectorInput.displayName = 'MultiSelectorInput';\n\nconst MultiSelectorContent = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(({ children }, ref) => {\n const { open } = useMultiSelect();\n\n if (!open) return null;\n\n return (\n <div ref={ref} className=\"relative\">\n {children}\n </div>\n );\n});\n\nMultiSelectorContent.displayName = 'MultiSelectorContent';\n\nconst MultiSelectorList = forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, children }, ref) => {\n return (\n <CommandList\n ref={ref}\n className={cn(\n 'absolute top-0 z-100 flex w-full flex-col gap-2 rounded-md border border-muted bg-background p-2 shadow-md scrollbar-thin scrollbar-track-transparent scrollbar-thumb-rounded-lg scrollbar-thumb-muted-foreground transition-colors dark:scrollbar-thumb-muted',\n className,\n )}\n >\n {children}\n <CommandEmpty>\n <span className=\"text-muted-foreground\">No results found</span>\n </CommandEmpty>\n </CommandList>\n );\n});\n\nMultiSelectorList.displayName = 'MultiSelectorList';\n\nconst MultiSelectorItem = forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n { value: string; label: string } & React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, value, label, children, disabled: disabledProp, ...props }, ref) => {\n const { value: options, onValueChange, setInputValue, disabled } = useMultiSelect();\n\n const mousePreventDefault = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n }, []);\n\n const isIncluded =\n searchForValue(options, {\n value,\n label,\n }) !== -1;\n\n const isDisabled = disabled || disabledProp;\n\n return (\n <CommandItem\n ref={ref}\n {...props}\n disabled={isDisabled}\n onSelect={() => {\n if (isDisabled) return;\n\n onValueChange({\n value,\n label,\n });\n setInputValue('');\n }}\n className={cn(\n 'flex cursor-pointer justify-between rounded-md px-2 py-1 transition-colors',\n className,\n isIncluded && 'cursor-default opacity-50',\n isDisabled && 'cursor-not-allowed opacity-50',\n )}\n onMouseDown={mousePreventDefault}\n >\n {children}\n {isIncluded && <IconCheck className=\"h-4 w-4\" />}\n </CommandItem>\n );\n});\n\nMultiSelectorItem.displayName = 'MultiSelectorItem';\n\nexport {\n MultiSelector,\n MultiSelectorTrigger,\n MultiSelectorInput,\n MultiSelectorContent,\n MultiSelectorList,\n MultiSelectorItem,\n};\n"],"mappings":"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","names":["_a","_b"]}
|
package/chunk-FSU3BKPK.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-FSU3BKPK.js","../components/ui/tag-picker.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-FSU3BKPK.js","sourcesContent":[null,"\"use client\";\nimport { IconPlus, IconX } from '@tabler/icons-react';\nimport { useMemo, useState } from 'react';\n\nimport { cn } from '../../utils/ui';\nimport { Badge } from './badge';\n\nfunction normalizeTagName(name: string) {\n return name.replace(/\\s+/g, ' ').trim();\n}\n\nexport interface TagPickerProps {\n id?: string;\n value: string[];\n onChange: (values: string[]) => void;\n suggestions?: string[];\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport function TagPicker({\n id,\n value,\n onChange,\n suggestions = [],\n placeholder = 'Add tags...',\n disabled = false,\n className,\n}: TagPickerProps) {\n const [inputValue, setInputValue] = useState('');\n const [isFocused, setIsFocused] = useState(false);\n\n const selectedKeys = useMemo(() => new Set(value.map((item) => item.toLocaleLowerCase())), [value]);\n const normalizedInput = normalizeTagName(inputValue);\n const normalizedInputKey = normalizedInput.toLocaleLowerCase();\n\n const filteredSuggestions = useMemo(() => {\n return suggestions\n .filter((suggestion) => !selectedKeys.has(suggestion.toLocaleLowerCase()))\n .filter((suggestion) => {\n if (!normalizedInput) {\n return true;\n }\n return suggestion.toLocaleLowerCase().includes(normalizedInputKey);\n })\n .slice(0, 8);\n }, [normalizedInput, normalizedInputKey, selectedKeys, suggestions]);\n\n const canCreate =\n !!normalizedInput &&\n !selectedKeys.has(normalizedInputKey) &&\n !suggestions.some((suggestion) => suggestion.toLocaleLowerCase() === normalizedInputKey);\n\n const addTag = (rawName: string) => {\n const nextName = normalizeTagName(rawName);\n if (!nextName) {\n setInputValue('');\n return;\n }\n\n const nextKey = nextName.toLocaleLowerCase();\n const matchingSuggestion = suggestions.find((suggestion) => suggestion.toLocaleLowerCase() === nextKey);\n const finalName = matchingSuggestion ?? nextName;\n\n if (selectedKeys.has(finalName.toLocaleLowerCase())) {\n setInputValue('');\n return;\n }\n\n onChange([...value, finalName]);\n setInputValue('');\n };\n\n const removeTag = (tagName: string) => {\n onChange(value.filter((item) => item.toLocaleLowerCase() !== tagName.toLocaleLowerCase()));\n };\n\n const showMenu = !disabled && isFocused && (filteredSuggestions.length > 0 || canCreate);\n\n return (\n <div className={cn('space-y-2', className)}>\n <div className=\"relative\">\n <div\n className={cn(\n 'flex min-h-8 flex-wrap items-center gap-1 rounded-lg border bg-background px-2 py-1 text-sm',\n 'focus-within:ring-1 focus-within:ring-ring',\n disabled && 'cursor-not-allowed opacity-60',\n )}\n >\n {value.map((tagName) => (\n <Badge key={tagName} variant=\"secondary\" className=\"flex items-center gap-1 rounded-md px-1.5\">\n <span className=\"text-xs\">{tagName}</span>\n {!disabled && (\n <button\n type=\"button\"\n className=\"inline-flex cursor-pointer items-center justify-center rounded-md p-1 transition-colors hover:bg-red-50 hover:text-red-700 focus-visible:bg-red-100 focus-visible:outline-none\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => removeTag(tagName)}\n aria-label={`Remove ${tagName}`}\n >\n <IconX className=\"h-3.5 w-3.5\" />\n </button>\n )}\n </Badge>\n ))}\n\n <input\n id={id}\n value={inputValue}\n disabled={disabled}\n placeholder={value.length === 0 ? placeholder : ''}\n className=\"min-w-24 flex-1 border-0 bg-transparent p-0 pl-1 text-sm outline-none placeholder:text-muted-foreground\"\n onFocus={() => setIsFocused(true)}\n onBlur={() => {\n window.setTimeout(() => setIsFocused(false), 100);\n }}\n onChange={(event) => setInputValue(event.target.value)}\n onKeyDown={(event) => {\n if ((event.key === 'Enter' || event.key === ',') && normalizedInput) {\n event.preventDefault();\n addTag(normalizedInput);\n }\n\n if (event.key === 'Backspace' && !inputValue && value.length > 0) {\n event.preventDefault();\n removeTag(value[value.length - 1]);\n }\n }}\n />\n </div>\n\n {showMenu && (\n <div className=\"absolute z-50 mt-1 w-full rounded-md border bg-background p-1 shadow-md\">\n {filteredSuggestions.map((suggestion) => (\n <button\n key={suggestion}\n type=\"button\"\n className=\"flex w-full items-center justify-between rounded-sm px-2 py-1.5 text-left text-sm hover:bg-muted\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => addTag(suggestion)}\n >\n <span>{suggestion}</span>\n <span className=\"text-xs text-muted-foreground\">Existing</span>\n </button>\n ))}\n\n {canCreate && (\n <button\n type=\"button\"\n className=\"flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm hover:bg-muted\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => addTag(normalizedInput)}\n >\n <IconPlus className=\"h-3.5 w-3.5\" />\n <span>Create "{normalizedInput}"</span>\n </button>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n"]}
|