@egose/shadcn-theme 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/chunk-2NUE7GJ3.js +44 -0
  2. package/chunk-2NUE7GJ3.js.map +1 -0
  3. package/chunk-3PZY5HRH.mjs +82 -0
  4. package/chunk-3PZY5HRH.mjs.map +1 -0
  5. package/{components/ui/extension/multi-select.js → chunk-3TG6ZVFG.js} +63 -62
  6. package/chunk-3TG6ZVFG.js.map +1 -0
  7. package/{chunk-UQJ4A4H2.mjs → chunk-4IDPSNL3.mjs} +2 -2
  8. package/{chunk-GAJQQPUC.mjs → chunk-5CBMRDT7.mjs} +3 -3
  9. package/{components/ui/extension/multi-select.mjs → chunk-7JYFZETL.mjs} +64 -63
  10. package/chunk-7JYFZETL.mjs.map +1 -0
  11. package/{chunk-FCE22MQI.js → chunk-AQIBLBXW.js} +9 -9
  12. package/{chunk-FCE22MQI.js.map → chunk-AQIBLBXW.js.map} +1 -1
  13. package/{chunk-6C4NHVD6.js → chunk-BMAIJZN6.js} +3 -2
  14. package/chunk-BMAIJZN6.js.map +1 -0
  15. package/{chunk-S3CRUBGL.mjs → chunk-CNYC22IA.mjs} +2 -2
  16. package/{chunk-E5TF7QLI.mjs → chunk-D6YGFMSG.mjs} +5 -5
  17. package/{chunk-WHQINNUB.js → chunk-FOEQYO2Q.js} +5 -5
  18. package/{chunk-WHQINNUB.js.map → chunk-FOEQYO2Q.js.map} +1 -1
  19. package/chunk-FSU3BKPK.js +130 -0
  20. package/chunk-FSU3BKPK.js.map +1 -0
  21. package/{chunk-3ZN766EW.js → chunk-G6WKPZTL.js} +3 -3
  22. package/{chunk-3ZN766EW.js.map → chunk-G6WKPZTL.js.map} +1 -1
  23. package/chunk-IQIHYWXX.js +83 -0
  24. package/chunk-IQIHYWXX.js.map +1 -0
  25. package/{chunk-AJLAS62X.js → chunk-LAIO3QZX.js} +4 -4
  26. package/{chunk-AJLAS62X.js.map → chunk-LAIO3QZX.js.map} +1 -1
  27. package/{chunk-MJT6B7OJ.js → chunk-LPDYWZN6.js} +3 -3
  28. package/{chunk-MJT6B7OJ.js.map → chunk-LPDYWZN6.js.map} +1 -1
  29. package/{chunk-KO4TIQLS.mjs → chunk-M6UKU56L.mjs} +2 -1
  30. package/chunk-M6UKU56L.mjs.map +1 -0
  31. package/{chunk-Y6CUGIQB.js → chunk-NRCL342G.js} +9 -9
  32. package/{chunk-Y6CUGIQB.js.map → chunk-NRCL342G.js.map} +1 -1
  33. package/{chunk-4I6SLZWT.mjs → chunk-O6PHWGJH.mjs} +2 -1
  34. package/chunk-O6PHWGJH.mjs.map +1 -0
  35. package/{chunk-KUD4Z2MZ.mjs → chunk-P4DW3EEW.mjs} +2 -2
  36. package/{chunk-WREXRSAA.js → chunk-P4EDRIBH.js} +4 -4
  37. package/{chunk-WREXRSAA.js.map → chunk-P4EDRIBH.js.map} +1 -1
  38. package/{chunk-432PQWGO.mjs → chunk-RJVQU443.mjs} +2 -2
  39. package/{chunk-2UTAR6ZA.js → chunk-SC6IX6NJ.js} +3 -2
  40. package/chunk-SC6IX6NJ.js.map +1 -0
  41. package/chunk-USW6AILM.mjs +43 -0
  42. package/chunk-USW6AILM.mjs.map +1 -0
  43. package/{chunk-SLADFPSL.js → chunk-VBPJD7U3.js} +5 -5
  44. package/{chunk-SLADFPSL.js.map → chunk-VBPJD7U3.js.map} +1 -1
  45. package/{chunk-HKZRXGJ7.mjs → chunk-YDRPNCWF.mjs} +4 -4
  46. package/{chunk-ZMMYQNQV.mjs → chunk-ZFBUIBJH.mjs} +2 -2
  47. package/chunk-ZQK6REIM.mjs +129 -0
  48. package/chunk-ZQK6REIM.mjs.map +1 -0
  49. package/components/form/hook-multi-select.d.mts +14 -0
  50. package/components/form/hook-multi-select.d.ts +14 -0
  51. package/components/form/hook-multi-select.js +76 -0
  52. package/components/form/hook-multi-select.js.map +1 -0
  53. package/components/form/hook-multi-select.mjs +75 -0
  54. package/components/form/hook-multi-select.mjs.map +1 -0
  55. package/components/form/hook-searchable-select.js +5 -5
  56. package/components/form/hook-searchable-select.mjs +4 -4
  57. package/components/form/hook-tag-picker.d.mts +12 -0
  58. package/components/form/hook-tag-picker.d.ts +12 -0
  59. package/components/form/hook-tag-picker.js +66 -0
  60. package/components/form/hook-tag-picker.js.map +1 -0
  61. package/components/form/hook-tag-picker.mjs +65 -0
  62. package/components/form/hook-tag-picker.mjs.map +1 -0
  63. package/components/form/multi-select.d.mts +25 -1
  64. package/components/form/multi-select.d.ts +25 -1
  65. package/components/form/multi-select.js +20 -1
  66. package/components/form/multi-select.js.map +1 -1
  67. package/components/form/multi-select.mjs +19 -0
  68. package/components/form/searchable-select.js +5 -5
  69. package/components/form/searchable-select.mjs +4 -4
  70. package/components/form/tag-picker.d.mts +21 -0
  71. package/components/form/tag-picker.d.ts +21 -0
  72. package/components/form/tag-picker.js +14 -0
  73. package/components/form/tag-picker.js.map +1 -0
  74. package/components/form/tag-picker.mjs +13 -0
  75. package/components/form/tag-picker.mjs.map +1 -0
  76. package/components/ui/aspect-ratio.d.mts +2 -2
  77. package/components/ui/aspect-ratio.d.ts +2 -2
  78. package/components/ui/aspect-ratio.js +2 -1
  79. package/components/ui/aspect-ratio.js.map +1 -1
  80. package/components/ui/aspect-ratio.mjs +1 -0
  81. package/components/ui/aspect-ratio.mjs.map +1 -1
  82. package/components/ui/button-group.d.mts +4 -4
  83. package/components/ui/button-group.d.ts +4 -4
  84. package/components/ui/button-group.js +2 -1
  85. package/components/ui/button-group.js.map +1 -1
  86. package/components/ui/button-group.mjs +1 -0
  87. package/components/ui/button-group.mjs.map +1 -1
  88. package/components/ui/collapsible.d.mts +4 -4
  89. package/components/ui/collapsible.d.ts +4 -4
  90. package/components/ui/collapsible.js +2 -2
  91. package/components/ui/collapsible.mjs +1 -1
  92. package/components/ui/combobox.js +5 -5
  93. package/components/ui/combobox.mjs +2 -2
  94. package/components/ui/command.js +4 -4
  95. package/components/ui/command.mjs +3 -3
  96. package/components/ui/copy-button.d.mts +3 -3
  97. package/components/ui/copy-button.d.ts +3 -3
  98. package/components/ui/copy-button.js +12 -12
  99. package/components/ui/copy-button.js.map +1 -1
  100. package/components/ui/copy-button.mjs +2 -2
  101. package/components/ui/copy-button.mjs.map +1 -1
  102. package/components/ui/empty.d.mts +7 -7
  103. package/components/ui/empty.d.ts +7 -7
  104. package/components/ui/empty.js +2 -1
  105. package/components/ui/empty.js.map +1 -1
  106. package/components/ui/empty.mjs +1 -0
  107. package/components/ui/empty.mjs.map +1 -1
  108. package/components/ui/field.d.mts +11 -11
  109. package/components/ui/field.d.ts +11 -11
  110. package/components/ui/field.js +3 -3
  111. package/components/ui/field.js.map +1 -1
  112. package/components/ui/field.mjs +2 -2
  113. package/components/ui/field.mjs.map +1 -1
  114. package/components/ui/input-group.js +3 -3
  115. package/components/ui/input-group.mjs +2 -2
  116. package/components/ui/kbd.d.mts +3 -3
  117. package/components/ui/kbd.d.ts +3 -3
  118. package/components/ui/kbd.js +2 -1
  119. package/components/ui/kbd.js.map +1 -1
  120. package/components/ui/kbd.mjs +1 -0
  121. package/components/ui/kbd.mjs.map +1 -1
  122. package/components/ui/{extension/multi-select.d.mts → multi-select.d.mts} +4 -3
  123. package/components/ui/{extension/multi-select.d.ts → multi-select.d.ts} +4 -3
  124. package/components/ui/multi-select.js +29 -0
  125. package/components/ui/multi-select.js.map +1 -0
  126. package/components/ui/multi-select.mjs +28 -0
  127. package/components/ui/multi-select.mjs.map +1 -0
  128. package/components/ui/native-select.d.mts +4 -4
  129. package/components/ui/native-select.d.ts +4 -4
  130. package/components/ui/native-select.js +2 -1
  131. package/components/ui/native-select.js.map +1 -1
  132. package/components/ui/native-select.mjs +1 -0
  133. package/components/ui/native-select.mjs.map +1 -1
  134. package/components/ui/resizable.js +1 -0
  135. package/components/ui/resizable.js.map +1 -1
  136. package/components/ui/resizable.mjs +1 -0
  137. package/components/ui/resizable.mjs.map +1 -1
  138. package/components/ui/sidebar.js +3 -3
  139. package/components/ui/sidebar.mjs +2 -2
  140. package/components/ui/skeleton.d.mts +2 -2
  141. package/components/ui/skeleton.d.ts +2 -2
  142. package/components/ui/skeleton.js +2 -2
  143. package/components/ui/skeleton.mjs +1 -1
  144. package/components/ui/tag-picker.d.mts +14 -0
  145. package/components/ui/tag-picker.d.ts +14 -0
  146. package/components/ui/tag-picker.js +12 -0
  147. package/components/ui/tag-picker.js.map +1 -0
  148. package/components/ui/tag-picker.mjs +11 -0
  149. package/components/ui/tag-picker.mjs.map +1 -0
  150. package/components/widgets/dialog-manager/index.js +1 -1
  151. package/components/widgets/dialog-manager/index.js.map +1 -1
  152. package/components/widgets/dialog-manager/index.mjs +1 -1
  153. package/layouts/sidebar1/app-sidebar.js +10 -10
  154. package/layouts/sidebar1/app-sidebar.mjs +9 -9
  155. package/layouts/sidebar1/context-switcher.js +5 -5
  156. package/layouts/sidebar1/context-switcher.mjs +4 -4
  157. package/layouts/sidebar1/index.js +11 -11
  158. package/layouts/sidebar1/index.js.map +1 -1
  159. package/layouts/sidebar1/index.mjs +9 -9
  160. package/layouts/sidebar1/nav-menus.js +5 -5
  161. package/layouts/sidebar1/nav-menus.mjs +4 -4
  162. package/layouts/sidebar1/nav-user.js +6 -6
  163. package/layouts/sidebar1/nav-user.mjs +5 -5
  164. package/layouts/simple/index.js +2 -2
  165. package/layouts/simple/index.mjs +3 -3
  166. package/package.json +1 -1
  167. package/chunk-2UTAR6ZA.js.map +0 -1
  168. package/chunk-4I6SLZWT.mjs.map +0 -1
  169. package/chunk-6C4NHVD6.js.map +0 -1
  170. package/chunk-KO4TIQLS.mjs.map +0 -1
  171. package/components/ui/extension/multi-select.js.map +0 -1
  172. package/components/ui/extension/multi-select.mjs.map +0 -1
  173. /package/{chunk-UQJ4A4H2.mjs.map → chunk-4IDPSNL3.mjs.map} +0 -0
  174. /package/{chunk-GAJQQPUC.mjs.map → chunk-5CBMRDT7.mjs.map} +0 -0
  175. /package/{chunk-S3CRUBGL.mjs.map → chunk-CNYC22IA.mjs.map} +0 -0
  176. /package/{chunk-E5TF7QLI.mjs.map → chunk-D6YGFMSG.mjs.map} +0 -0
  177. /package/{chunk-KUD4Z2MZ.mjs.map → chunk-P4DW3EEW.mjs.map} +0 -0
  178. /package/{chunk-432PQWGO.mjs.map → chunk-RJVQU443.mjs.map} +0 -0
  179. /package/{chunk-HKZRXGJ7.mjs.map → chunk-YDRPNCWF.mjs.map} +0 -0
  180. /package/{chunk-ZMMYQNQV.mjs.map → chunk-ZFBUIBJH.mjs.map} +0 -0
@@ -0,0 +1,130 @@
1
+ "use client";
2
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
3
+
4
+ var _chunk2YMMYND2js = require('./chunk-2YMMYND2.js');
5
+
6
+
7
+ var _chunkPSPAJNNBjs = require('./chunk-PSPAJNNB.js');
8
+
9
+ // components/ui/tag-picker.tsx
10
+ var _iconsreact = require('@tabler/icons-react');
11
+ var _react = require('react');
12
+ function normalizeTagName(name) {
13
+ return name.replace(/\s+/g, " ").trim();
14
+ }
15
+ function TagPicker({
16
+ id,
17
+ value,
18
+ onChange,
19
+ suggestions = [],
20
+ placeholder = "Add tags...",
21
+ disabled = false,
22
+ className
23
+ }) {
24
+ const [inputValue, setInputValue] = _react.useState.call(void 0, "");
25
+ const [isFocused, setIsFocused] = _react.useState.call(void 0, false);
26
+ const selectedKeys = _react.useMemo.call(void 0, () => new Set(value.map((item) => item.toLocaleLowerCase())), [value]);
27
+ const normalizedInput = normalizeTagName(inputValue);
28
+ const normalizedInputKey = normalizedInput.toLocaleLowerCase();
29
+ const filteredSuggestions = _react.useMemo.call(void 0, () => {
30
+ return suggestions.filter((suggestion) => !selectedKeys.has(suggestion.toLocaleLowerCase())).filter((suggestion) => {
31
+ if (!normalizedInput) {
32
+ return true;
33
+ }
34
+ return suggestion.toLocaleLowerCase().includes(normalizedInputKey);
35
+ }).slice(0, 8);
36
+ }, [normalizedInput, normalizedInputKey, selectedKeys, suggestions]);
37
+ const canCreate = !!normalizedInput && !selectedKeys.has(normalizedInputKey) && !suggestions.some((suggestion) => suggestion.toLocaleLowerCase() === normalizedInputKey);
38
+ const addTag = (rawName) => {
39
+ const nextName = normalizeTagName(rawName);
40
+ if (!nextName) {
41
+ setInputValue("");
42
+ return;
43
+ }
44
+ const nextKey = nextName.toLocaleLowerCase();
45
+ const matchingSuggestion = suggestions.find((suggestion) => suggestion.toLocaleLowerCase() === nextKey);
46
+ const finalName = matchingSuggestion != null ? matchingSuggestion : nextName;
47
+ if (selectedKeys.has(finalName.toLocaleLowerCase())) {
48
+ setInputValue("");
49
+ return;
50
+ }
51
+ onChange([...value, finalName]);
52
+ setInputValue("");
53
+ };
54
+ const removeTag = (tagName) => {
55
+ onChange(value.filter((item) => item.toLocaleLowerCase() !== tagName.toLocaleLowerCase()));
56
+ };
57
+ const showMenu = !disabled && isFocused && (filteredSuggestions.length > 0 || canCreate);
58
+ return /* @__PURE__ */ React.createElement("div", { className: _chunkPSPAJNNBjs.cn.call(void 0, "space-y-2", className) }, /* @__PURE__ */ React.createElement("div", { className: "relative" }, /* @__PURE__ */ React.createElement(
59
+ "div",
60
+ {
61
+ className: _chunkPSPAJNNBjs.cn.call(void 0,
62
+ "flex min-h-8 flex-wrap items-center gap-1 rounded-lg border bg-background px-2 py-1 text-sm",
63
+ "focus-within:ring-1 focus-within:ring-ring",
64
+ disabled && "cursor-not-allowed opacity-60"
65
+ )
66
+ },
67
+ value.map((tagName) => /* @__PURE__ */ React.createElement(_chunk2YMMYND2js.Badge, { key: tagName, variant: "secondary", className: "flex items-center gap-1 rounded-md px-1.5" }, /* @__PURE__ */ React.createElement("span", { className: "text-xs" }, tagName), !disabled && /* @__PURE__ */ React.createElement(
68
+ "button",
69
+ {
70
+ type: "button",
71
+ 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",
72
+ onMouseDown: (event) => event.preventDefault(),
73
+ onClick: () => removeTag(tagName),
74
+ "aria-label": `Remove ${tagName}`
75
+ },
76
+ /* @__PURE__ */ React.createElement(_iconsreact.IconX, { className: "h-3.5 w-3.5" })
77
+ ))),
78
+ /* @__PURE__ */ React.createElement(
79
+ "input",
80
+ {
81
+ id,
82
+ value: inputValue,
83
+ disabled,
84
+ placeholder: value.length === 0 ? placeholder : "",
85
+ className: "min-w-24 flex-1 border-0 bg-transparent p-0 pl-1 text-sm outline-none placeholder:text-muted-foreground",
86
+ onFocus: () => setIsFocused(true),
87
+ onBlur: () => {
88
+ window.setTimeout(() => setIsFocused(false), 100);
89
+ },
90
+ onChange: (event) => setInputValue(event.target.value),
91
+ onKeyDown: (event) => {
92
+ if ((event.key === "Enter" || event.key === ",") && normalizedInput) {
93
+ event.preventDefault();
94
+ addTag(normalizedInput);
95
+ }
96
+ if (event.key === "Backspace" && !inputValue && value.length > 0) {
97
+ event.preventDefault();
98
+ removeTag(value[value.length - 1]);
99
+ }
100
+ }
101
+ }
102
+ )
103
+ ), showMenu && /* @__PURE__ */ React.createElement("div", { className: "absolute z-50 mt-1 w-full rounded-md border bg-background p-1 shadow-md" }, filteredSuggestions.map((suggestion) => /* @__PURE__ */ React.createElement(
104
+ "button",
105
+ {
106
+ key: suggestion,
107
+ type: "button",
108
+ className: "flex w-full items-center justify-between rounded-sm px-2 py-1.5 text-left text-sm hover:bg-muted",
109
+ onMouseDown: (event) => event.preventDefault(),
110
+ onClick: () => addTag(suggestion)
111
+ },
112
+ /* @__PURE__ */ React.createElement("span", null, suggestion),
113
+ /* @__PURE__ */ React.createElement("span", { className: "text-xs text-muted-foreground" }, "Existing")
114
+ )), canCreate && /* @__PURE__ */ React.createElement(
115
+ "button",
116
+ {
117
+ type: "button",
118
+ className: "flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm hover:bg-muted",
119
+ onMouseDown: (event) => event.preventDefault(),
120
+ onClick: () => addTag(normalizedInput)
121
+ },
122
+ /* @__PURE__ */ React.createElement(_iconsreact.IconPlus, { className: "h-3.5 w-3.5" }),
123
+ /* @__PURE__ */ React.createElement("span", null, 'Create "', normalizedInput, '"')
124
+ ))));
125
+ }
126
+
127
+
128
+
129
+ exports.TagPicker = TagPicker;
130
+ //# sourceMappingURL=chunk-FSU3BKPK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-FSU3BKPK.js","../components/ui/tag-picker.tsx"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;ACNA,iDAAgC;AAChC,8BAAkC;AAKlC,SAAS,gBAAA,CAAiB,IAAA,EAAc;AACtC,EAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,GAAG,CAAA,CAAE,IAAA,CAAK,CAAA;AACxC;AAYO,SAAS,SAAA,CAAU;AAAA,EACxB,EAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA,EAAc,CAAC,CAAA;AAAA,EACf,YAAA,EAAc,aAAA;AAAA,EACd,SAAA,EAAW,KAAA;AAAA,EACX;AACF,CAAA,EAAmB;AACjB,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,EAAA,EAAI,6BAAA,EAAW,CAAA;AAC/C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,EAAA,EAAI,6BAAA,KAAc,CAAA;AAEhD,EAAA,MAAM,aAAA,EAAe,4BAAA,CAAQ,EAAA,GAAM,IAAI,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAA,GAAS,IAAA,CAAK,iBAAA,CAAkB,CAAC,CAAC,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAClG,EAAA,MAAM,gBAAA,EAAkB,gBAAA,CAAiB,UAAU,CAAA;AACnD,EAAA,MAAM,mBAAA,EAAqB,eAAA,CAAgB,iBAAA,CAAkB,CAAA;AAE7D,EAAA,MAAM,oBAAA,EAAsB,4BAAA,CAAQ,EAAA,GAAM;AACxC,IAAA,OAAO,WAAA,CACJ,MAAA,CAAO,CAAC,UAAA,EAAA,GAAe,CAAC,YAAA,CAAa,GAAA,CAAI,UAAA,CAAW,iBAAA,CAAkB,CAAC,CAAC,CAAA,CACxE,MAAA,CAAO,CAAC,UAAA,EAAA,GAAe;AACtB,MAAA,GAAA,CAAI,CAAC,eAAA,EAAiB;AACpB,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,OAAO,UAAA,CAAW,iBAAA,CAAkB,CAAA,CAAE,QAAA,CAAS,kBAAkB,CAAA;AAAA,IACnE,CAAC,CAAA,CACA,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AAAA,EACf,CAAA,EAAG,CAAC,eAAA,EAAiB,kBAAA,EAAoB,YAAA,EAAc,WAAW,CAAC,CAAA;AAEnE,EAAA,MAAM,UAAA,EACJ,CAAC,CAAC,gBAAA,GACF,CAAC,YAAA,CAAa,GAAA,CAAI,kBAAkB,EAAA,GACpC,CAAC,WAAA,CAAY,IAAA,CAAK,CAAC,UAAA,EAAA,GAAe,UAAA,CAAW,iBAAA,CAAkB,EAAA,IAAM,kBAAkB,CAAA;AAEzF,EAAA,MAAM,OAAA,EAAS,CAAC,OAAA,EAAA,GAAoB;AAClC,IAAA,MAAM,SAAA,EAAW,gBAAA,CAAiB,OAAO,CAAA;AACzC,IAAA,GAAA,CAAI,CAAC,QAAA,EAAU;AACb,MAAA,aAAA,CAAc,EAAE,CAAA;AAChB,MAAA,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,EAAU,QAAA,CAAS,iBAAA,CAAkB,CAAA;AAC3C,IAAA,MAAM,mBAAA,EAAqB,WAAA,CAAY,IAAA,CAAK,CAAC,UAAA,EAAA,GAAe,UAAA,CAAW,iBAAA,CAAkB,EAAA,IAAM,OAAO,CAAA;AACtG,IAAA,MAAM,UAAA,EAAY,mBAAA,GAAA,KAAA,EAAA,mBAAA,EAAsB,QAAA;AAExC,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,SAAA,CAAU,iBAAA,CAAkB,CAAC,CAAA,EAAG;AACnD,MAAA,aAAA,CAAc,EAAE,CAAA;AAChB,MAAA,MAAA;AAAA,IACF;AAEA,IAAA,QAAA,CAAS,CAAC,GAAG,KAAA,EAAO,SAAS,CAAC,CAAA;AAC9B,IAAA,aAAA,CAAc,EAAE,CAAA;AAAA,EAClB,CAAA;AAEA,EAAA,MAAM,UAAA,EAAY,CAAC,OAAA,EAAA,GAAoB;AACrC,IAAA,QAAA,CAAS,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,EAAA,GAAS,IAAA,CAAK,iBAAA,CAAkB,EAAA,IAAM,OAAA,CAAQ,iBAAA,CAAkB,CAAC,CAAC,CAAA;AAAA,EAC3F,CAAA;AAEA,EAAA,MAAM,SAAA,EAAW,CAAC,SAAA,GAAY,UAAA,GAAA,CAAc,mBAAA,CAAoB,OAAA,EAAS,EAAA,GAAK,SAAA,CAAA;AAE9E,EAAA,uBACE,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iCAAA,WAAG,EAAa,SAAS,EAAA,CAAA,kBACvC,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,CAAA,kBACb,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,iCAAA;AAAA,QACT,6FAAA;AAAA,QACA,4CAAA;AAAA,QACA,SAAA,GAAY;AAAA,MACd;AAAA,IAAA,CAAA;AAAA,IAEC,KAAA,CAAM,GAAA,CAAI,CAAC,OAAA,EAAA,mBACV,KAAA,CAAA,aAAA,CAAC,sBAAA,EAAA,EAAM,GAAA,EAAK,OAAA,EAAS,OAAA,EAAQ,WAAA,EAAY,SAAA,EAAU,4CAAA,CAAA,kBACjD,KAAA,CAAA,aAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,CAAA,EAAW,OAAQ,CAAA,EAClC,CAAC,SAAA,mBACA,KAAA,CAAA,aAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAU,gLAAA;AAAA,QACV,WAAA,EAAa,CAAC,KAAA,EAAA,GAAU,KAAA,CAAM,cAAA,CAAe,CAAA;AAAA,QAC7C,OAAA,EAAS,CAAA,EAAA,GAAM,SAAA,CAAU,OAAO,CAAA;AAAA,QAChC,YAAA,EAAY,CAAA,OAAA,EAAU,OAAO,CAAA;AAAA,MAAA;AAAA,sBAAA;AAEE,IAAA;AAItC,oBAAA;AAED,MAAA;AAAC,MAAA;AAAA,QAAA;AACC,QAAA;AACO,QAAA;AACP,QAAA;AACgD,QAAA;AACtC,QAAA;AACsB,QAAA;AAE9B,UAAA;AAAgD,QAAA;AAClD,QAAA;AACqD,QAAA;AAEnD,UAAA;AACE,YAAA;AACA,YAAA;AAAsB,UAAA;AAGxB,UAAA;AACE,YAAA;AACA,YAAA;AAAiC,UAAA;AACnC,QAAA;AACF,MAAA;AAAA,IAAA;AACF,EAAA;AAMI,IAAA;AAAC,IAAA;AAAA,MAAA;AACM,MAAA;AACA,MAAA;AACK,MAAA;AACmC,MAAA;AACb,IAAA;AAAA,oBAAA;AAEd,oBAAA;AACsC,EAAA;AAK1D,IAAA;AAAC,IAAA;AAAA,MAAA;AACM,MAAA;AACK,MAAA;AACmC,MAAA;AACR,IAAA;AAAA,oBAAA;AAEH,oBAAA;AACQ,EAAA;AAQ1D;ADvCA;AACA;AACA;AACA","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 &quot;{normalizedInput}&quot;</span>\n </button>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n"]}
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- var _chunkAJLAS62Xjs = require('./chunk-AJLAS62X.js');
9
+ var _chunkLAIO3QZXjs = require('./chunk-LAIO3QZX.js');
10
10
 
11
11
 
12
12
 
@@ -79,10 +79,10 @@ function FormSearchableSelect({
79
79
  },
80
80
  selectedValue ? (_b = _options.find((opt) => opt.value === selectedValue)) == null ? void 0 : _b.label : placeholder || "Select...",
81
81
  /* @__PURE__ */ _react2.default.createElement(_lucidereact.ChevronsUpDown, { className: "opacity-50" })
82
- )), /* @__PURE__ */ _react2.default.createElement(_chunkQHCOMBHIjs.PopoverContent, { className: "w-full p-0" }, /* @__PURE__ */ _react2.default.createElement(_chunkAJLAS62Xjs.Command, null, /* @__PURE__ */ _react2.default.createElement(_chunkAJLAS62Xjs.CommandInput, { placeholder: `Search ${label != null ? label : "option"}...`, className: "h-9" }), /* @__PURE__ */ _react2.default.createElement(_chunkAJLAS62Xjs.CommandList, null, /* @__PURE__ */ _react2.default.createElement(_chunkAJLAS62Xjs.CommandEmpty, null, "No option found."), /* @__PURE__ */ _react2.default.createElement(_chunkAJLAS62Xjs.CommandGroup, null, _options.map((option) => /* @__PURE__ */ _react2.default.createElement(_chunkAJLAS62Xjs.CommandItem, { key: option.value, value: option.value, onSelect: handleSelect }, option.label, /* @__PURE__ */ _react2.default.createElement(_lucidereact.Check, { className: _chunkPSPAJNNBjs.cn.call(void 0, "ml-auto", selectedValue === option.value ? "opacity-100" : "opacity-0") })))))))));
82
+ )), /* @__PURE__ */ _react2.default.createElement(_chunkQHCOMBHIjs.PopoverContent, { className: "w-full p-0" }, /* @__PURE__ */ _react2.default.createElement(_chunkLAIO3QZXjs.Command, null, /* @__PURE__ */ _react2.default.createElement(_chunkLAIO3QZXjs.CommandInput, { placeholder: `Search ${label != null ? label : "option"}...`, className: "h-9" }), /* @__PURE__ */ _react2.default.createElement(_chunkLAIO3QZXjs.CommandList, null, /* @__PURE__ */ _react2.default.createElement(_chunkLAIO3QZXjs.CommandEmpty, null, "No option found."), /* @__PURE__ */ _react2.default.createElement(_chunkLAIO3QZXjs.CommandGroup, null, _options.map((option) => /* @__PURE__ */ _react2.default.createElement(_chunkLAIO3QZXjs.CommandItem, { key: option.value, value: option.value, onSelect: handleSelect }, option.label, /* @__PURE__ */ _react2.default.createElement(_lucidereact.Check, { className: _chunkPSPAJNNBjs.cn.call(void 0, "ml-auto", selectedValue === option.value ? "opacity-100" : "opacity-0") })))))))));
83
83
  }
84
84
 
85
85
 
86
86
 
87
87
  exports.FormSearchableSelect = FormSearchableSelect;
88
- //# sourceMappingURL=chunk-3ZN766EW.js.map
88
+ //# sourceMappingURL=chunk-G6WKPZTL.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-3ZN766EW.js","../components/form/searchable-select.tsx"],"names":["_a"],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-3ZN766EW.js","sourcesContent":[null,"\"use client\";\nimport React from 'react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isString from 'lodash-es/isString';\nimport { cn } from '../../utils/ui';\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('$form-searchable-select space-y-1', 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"]}
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-G6WKPZTL.js","../components/form/searchable-select.tsx"],"names":["_a"],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-G6WKPZTL.js","sourcesContent":[null,"\"use client\";\nimport React from 'react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isString from 'lodash-es/isString';\nimport { cn } from '../../utils/ui';\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('$form-searchable-select space-y-1', 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,83 @@
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
+ var _chunk3TG6ZVFGjs = require('./chunk-3TG6ZVFG.js');
9
+
10
+
11
+
12
+
13
+ var _chunkQHCOMBHIjs = require('./chunk-QHCOMBHI.js');
14
+
15
+
16
+ var _chunkCKGMFUU2js = require('./chunk-CKGMFUU2.js');
17
+
18
+
19
+ var _chunkPSPAJNNBjs = require('./chunk-PSPAJNNB.js');
20
+
21
+ // components/form/multi-select.tsx
22
+ var _isString2 = require('lodash-es/isString'); var _isString3 = _interopRequireDefault(_isString2);
23
+ var _kebabCase2 = require('lodash-es/kebabCase'); var _kebabCase3 = _interopRequireDefault(_kebabCase2);
24
+ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
25
+ function FormMultiSelect({
26
+ id,
27
+ name,
28
+ label,
29
+ placeholder = "Select options...",
30
+ data,
31
+ value = [],
32
+ onChange,
33
+ classNames,
34
+ required,
35
+ disabled,
36
+ loop = false
37
+ }) {
38
+ const options = _react2.default.useMemo(() => {
39
+ if (!data || data.length === 0) return [];
40
+ if (_isString3.default.call(void 0, data[0])) {
41
+ return data.map((currentValue) => ({ label: currentValue, value: currentValue }));
42
+ }
43
+ return data;
44
+ }, [data]);
45
+ const selectedValues = _react2.default.useMemo(() => {
46
+ return value.map((currentValue) => options.find((option) => option.value === currentValue)).filter((option) => !!option);
47
+ }, [options, value]);
48
+ const handleValueChange = (newValues) => {
49
+ onChange(newValues.map((currentValue) => currentValue.value));
50
+ };
51
+ if (!id) id = _kebabCase3.default.call(void 0, name);
52
+ return /* @__PURE__ */ _react2.default.createElement("div", { className: _chunkPSPAJNNBjs.cn.call(void 0, "flex flex-col gap-2", classNames == null ? void 0 : classNames.wrapper) }, label && /* @__PURE__ */ _react2.default.createElement(_chunkCKGMFUU2js.Label, { htmlFor: id, className: classNames == null ? void 0 : classNames.label, required }, label), /* @__PURE__ */ _react2.default.createElement(
53
+ _chunk3TG6ZVFGjs.MultiSelector,
54
+ {
55
+ values: selectedValues,
56
+ onValuesChange: handleValueChange,
57
+ loop,
58
+ disabled,
59
+ className: "p-0"
60
+ },
61
+ /* @__PURE__ */ _react2.default.createElement(_chunkQHCOMBHIjs.Popover, null, /* @__PURE__ */ _react2.default.createElement(_chunkQHCOMBHIjs.PopoverTrigger, { asChild: true }, /* @__PURE__ */ _react2.default.createElement(_chunk3TG6ZVFGjs.MultiSelectorTrigger, { className: _chunkPSPAJNNBjs.cn.call(void 0, "cursor-pointer", classNames == null ? void 0 : classNames.trigger) }, /* @__PURE__ */ _react2.default.createElement(
62
+ _chunk3TG6ZVFGjs.MultiSelectorInput,
63
+ {
64
+ id,
65
+ disabled,
66
+ placeholder: selectedValues.length === 0 ? placeholder : "",
67
+ className: classNames == null ? void 0 : classNames.input
68
+ }
69
+ ))), /* @__PURE__ */ _react2.default.createElement(
70
+ _chunkQHCOMBHIjs.PopoverContent,
71
+ {
72
+ align: "start",
73
+ className: _chunkPSPAJNNBjs.cn.call(void 0, "w-[var(--radix-popover-trigger-width)] p-0", classNames == null ? void 0 : classNames.content)
74
+ },
75
+ /* @__PURE__ */ _react2.default.createElement(_chunk3TG6ZVFGjs.MultiSelectorList, { className: "static relative border-none shadow-none" }, options.map((option) => /* @__PURE__ */ _react2.default.createElement(_chunk3TG6ZVFGjs.MultiSelectorItem, { key: option.value, value: option.value, label: option.label }, /* @__PURE__ */ _react2.default.createElement("span", null, option.label))))
76
+ ))
77
+ ));
78
+ }
79
+
80
+
81
+
82
+ exports.FormMultiSelect = FormMultiSelect;
83
+ //# sourceMappingURL=chunk-IQIHYWXX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-IQIHYWXX.js","../components/form/multi-select.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-IQIHYWXX.js","sourcesContent":[null,"\"use client\";\nimport _isString from 'lodash-es/isString';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport React from 'react';\n\nimport { cn } from '../../utils/ui';\nimport { Label } from '../ui/label';\nimport {\n MultiSelector,\n MultiSelectorInput,\n MultiSelectorItem,\n MultiSelectorList,\n MultiSelectorTrigger,\n type MultiSelectValue,\n} from '../ui/multi-select';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nexport interface FormMultiSelectProps {\n id?: string;\n name: string;\n label?: string;\n placeholder?: string;\n data: MultiSelectValue[] | string[];\n value: string[];\n onChange: (values: string[]) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n trigger?: string;\n input?: string;\n content?: string;\n };\n required?: boolean;\n disabled?: boolean;\n loop?: boolean;\n}\n\nexport function FormMultiSelect({\n id,\n name,\n label,\n placeholder = 'Select options...',\n data,\n value = [],\n onChange,\n classNames,\n required,\n disabled,\n loop = false,\n}: FormMultiSelectProps) {\n const options: MultiSelectValue[] = React.useMemo(() => {\n if (!data || data.length === 0) return [];\n if (_isString(data[0])) {\n return (data as string[]).map((currentValue) => ({ label: currentValue, value: currentValue }));\n }\n return data as MultiSelectValue[];\n }, [data]);\n\n const selectedValues = React.useMemo(() => {\n return value\n .map((currentValue) => options.find((option) => option.value === currentValue))\n .filter((option): option is MultiSelectValue => !!option);\n }, [options, value]);\n\n const handleValueChange = (newValues: MultiSelectValue[]) => {\n onChange(newValues.map((currentValue) => currentValue.value));\n };\n\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('flex flex-col gap-2', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n\n <MultiSelector\n values={selectedValues}\n onValuesChange={handleValueChange}\n loop={loop}\n disabled={disabled}\n className=\"p-0\"\n >\n <Popover>\n <PopoverTrigger asChild>\n <MultiSelectorTrigger className={cn('cursor-pointer', classNames?.trigger)}>\n <MultiSelectorInput\n id={id}\n disabled={disabled}\n placeholder={selectedValues.length === 0 ? placeholder : ''}\n className={classNames?.input}\n />\n </MultiSelectorTrigger>\n </PopoverTrigger>\n\n <PopoverContent\n align=\"start\"\n className={cn('w-[var(--radix-popover-trigger-width)] p-0', classNames?.content)}\n >\n <MultiSelectorList className=\"static relative border-none shadow-none\">\n {options.map((option) => (\n <MultiSelectorItem key={option.value} value={option.value} label={option.label}>\n <span>{option.label}</span>\n </MultiSelectorItem>\n ))}\n </MultiSelectorList>\n </PopoverContent>\n </Popover>\n </MultiSelector>\n </div>\n );\n}\n"]}
@@ -2,7 +2,7 @@
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
4
 
5
- var _chunkMJT6B7OJjs = require('./chunk-MJT6B7OJ.js');
5
+ var _chunkLPDYWZN6js = require('./chunk-LPDYWZN6.js');
6
6
 
7
7
 
8
8
 
@@ -60,13 +60,13 @@ function CommandDialog(_a) {
60
60
  }
61
61
  function CommandInput(_a) {
62
62
  var _b = _a, { className } = _b, props = _chunk2NMEKWO5js.__objRest.call(void 0, _b, ["className"]);
63
- return /* @__PURE__ */ React.createElement("div", { "data-slot": "command-input-wrapper", className: "p-1 pb-0" }, /* @__PURE__ */ React.createElement(_chunkMJT6B7OJjs.InputGroup, { className: "bg-input/30 border-input/30 h-8! rounded-lg! shadow-none! *:data-[slot=input-group-addon]:pl-2!" }, /* @__PURE__ */ React.createElement(
63
+ return /* @__PURE__ */ React.createElement("div", { "data-slot": "command-input-wrapper", className: "p-1 pb-0" }, /* @__PURE__ */ React.createElement(_chunkLPDYWZN6js.InputGroup, { className: "bg-input/30 border-input/30 h-8! rounded-lg! shadow-none! *:data-[slot=input-group-addon]:pl-2!" }, /* @__PURE__ */ React.createElement(
64
64
  _cmdk.Command.Input,
65
65
  _chunk2NMEKWO5js.__spreadValues.call(void 0, {
66
66
  "data-slot": "command-input",
67
67
  className: _chunkPSPAJNNBjs.cn.call(void 0, "w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className)
68
68
  }, props)
69
- ), /* @__PURE__ */ React.createElement(_chunkMJT6B7OJjs.InputGroupAddon, null, /* @__PURE__ */ React.createElement(_lucidereact.SearchIcon, { className: "size-4 shrink-0 opacity-50" }))));
69
+ ), /* @__PURE__ */ React.createElement(_chunkLPDYWZN6js.InputGroupAddon, null, /* @__PURE__ */ React.createElement(_lucidereact.SearchIcon, { className: "size-4 shrink-0 opacity-50" }))));
70
70
  }
71
71
  function CommandList(_a) {
72
72
  var _b = _a, { className } = _b, props = _chunk2NMEKWO5js.__objRest.call(void 0, _b, ["className"]);
@@ -151,4 +151,4 @@ function CommandShortcut(_a) {
151
151
 
152
152
 
153
153
  exports.Command = Command; exports.CommandDialog = CommandDialog; exports.CommandInput = CommandInput; exports.CommandList = CommandList; exports.CommandEmpty = CommandEmpty; exports.CommandGroup = CommandGroup; exports.CommandSeparator = CommandSeparator; exports.CommandItem = CommandItem; exports.CommandShortcut = CommandShortcut;
154
- //# sourceMappingURL=chunk-AJLAS62X.js.map
154
+ //# sourceMappingURL=chunk-LAIO3QZX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-AJLAS62X.js","../components/ui/command.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-AJLAS62X.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '../../utils/ui';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from './dialog';\nimport { InputGroup, InputGroupAddon } from './input-group';\nimport { SearchIcon, CheckIcon } from 'lucide-react';\n\nfunction Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n 'bg-popover text-popover-foreground rounded-xl! p-1 flex size-full flex-col overflow-hidden',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n showCloseButton = false,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n className?: string;\n showCloseButton?: boolean;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn('rounded-xl! top-1/3 translate-y-0 overflow-hidden p-0', className)}\n showCloseButton={showCloseButton}\n >\n {children}\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"p-1 pb-0\">\n <InputGroup className=\"bg-input/30 border-input/30 h-8! rounded-lg! shadow-none! *:data-[slot=input-group-addon]:pl-2!\">\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn('w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50', className)}\n {...props}\n />\n <InputGroupAddon>\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n </InputGroupAddon>\n </InputGroup>\n </div>\n );\n}\n\nfunction CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn('no-scrollbar max-h-72 scroll-py-1 outline-none overflow-x-hidden overflow-y-auto', className)}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className={cn('py-6 text-center text-sm', className)}\n {...props}\n />\n );\n}\n\nfunction CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n 'text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn('bg-border -mx-1 h-px', className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({ className, children, ...props }: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-muted data-[selected=true]:text-foreground data-[selected=true]:*:[svg]:text-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! [&_svg:not([class*='size-'])]:size-4 group/command-item data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <CheckIcon className=\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\" />\n </CommandPrimitive.Item>\n );\n}\n\nfunction CommandShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n 'text-muted-foreground group-data-selected/command-item:text-foreground ml-auto text-xs tracking-widest',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n"]}
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-LAIO3QZX.js","../components/ui/command.tsx"],"names":[],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-LAIO3QZX.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '../../utils/ui';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from './dialog';\nimport { InputGroup, InputGroupAddon } from './input-group';\nimport { SearchIcon, CheckIcon } from 'lucide-react';\n\nfunction Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n 'bg-popover text-popover-foreground rounded-xl! p-1 flex size-full flex-col overflow-hidden',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n showCloseButton = false,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n className?: string;\n showCloseButton?: boolean;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn('rounded-xl! top-1/3 translate-y-0 overflow-hidden p-0', className)}\n showCloseButton={showCloseButton}\n >\n {children}\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"p-1 pb-0\">\n <InputGroup className=\"bg-input/30 border-input/30 h-8! rounded-lg! shadow-none! *:data-[slot=input-group-addon]:pl-2!\">\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn('w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50', className)}\n {...props}\n />\n <InputGroupAddon>\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n </InputGroupAddon>\n </InputGroup>\n </div>\n );\n}\n\nfunction CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn('no-scrollbar max-h-72 scroll-py-1 outline-none overflow-x-hidden overflow-y-auto', className)}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className={cn('py-6 text-center text-sm', className)}\n {...props}\n />\n );\n}\n\nfunction CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n 'text-foreground **:[[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn('bg-border -mx-1 h-px', className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({ className, children, ...props }: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-muted data-[selected=true]:text-foreground data-[selected=true]:*:[svg]:text-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! [&_svg:not([class*='size-'])]:size-4 group/command-item data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <CheckIcon className=\"ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-[checked=true]/command-item:opacity-100\" />\n </CommandPrimitive.Item>\n );\n}\n\nfunction CommandShortcut({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n 'text-muted-foreground group-data-selected/command-item:text-foreground ml-auto text-xs tracking-widest',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n"]}
@@ -1,10 +1,10 @@
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 _chunkUFRPUC7Kjs = require('./chunk-UFRPUC7K.js');
4
+ var _chunkRJG7QLDDjs = require('./chunk-RJG7QLDD.js');
5
5
 
6
6
 
7
- var _chunkRJG7QLDDjs = require('./chunk-RJG7QLDD.js');
7
+ var _chunkUFRPUC7Kjs = require('./chunk-UFRPUC7K.js');
8
8
 
9
9
 
10
10
  var _chunkKB6BX6LAjs = require('./chunk-KB6BX6LA.js');
@@ -156,4 +156,4 @@ function InputGroupTextarea(_a) {
156
156
 
157
157
 
158
158
  exports.InputGroup = InputGroup; exports.InputGroupAddon = InputGroupAddon; exports.InputGroupButton = InputGroupButton; exports.InputGroupText = InputGroupText; exports.InputGroupInput = InputGroupInput; exports.InputGroupTextarea = InputGroupTextarea;
159
- //# sourceMappingURL=chunk-MJT6B7OJ.js.map
159
+ //# sourceMappingURL=chunk-LPDYWZN6.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-MJT6B7OJ.js","../components/ui/input-group.tsx"],"names":["_a","_b"],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-MJT6B7OJ.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils/ui';\nimport { Button } from './button';\nimport { Input } from './input';\nimport { Textarea } from './textarea';\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n 'border-input dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-disabled:bg-input/50 dark:has-disabled:bg-input/80 h-8 rounded-lg border transition-colors in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5 group/input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto',\n className,\n )}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n \"text-muted-foreground h-auto gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4 flex cursor-text items-center justify-center select-none\",\n {\n variants: {\n align: {\n 'inline-start': 'pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem] order-first',\n 'inline-end': 'pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem] order-last',\n 'block-start':\n 'px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2 order-first w-full justify-start',\n 'block-end': 'px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2 order-last w-full justify-start',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nfunction InputGroupAddon({\n className,\n align = 'inline-start',\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest('button')) {\n return;\n }\n e.currentTarget.parentElement?.querySelector('input')?.focus();\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva('gap-2 text-sm flex items-center shadow-none', {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: '',\n 'icon-xs': 'size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0',\n 'icon-sm': 'size-8 p-0 has-[>svg]:p-0',\n },\n },\n defaultVariants: {\n size: 'xs',\n },\n});\n\nfunction InputGroupButton({\n className,\n type = 'button',\n variant = 'ghost',\n size = 'xs',\n ...props\n}: Omit<React.ComponentProps<typeof Button>, 'size'> & VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n );\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n className={cn(\n \"text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupInput({ className, ...props }: React.ComponentProps<'input'>) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n 'rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent flex-1',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupTextarea({ className, ...props }: React.ComponentProps<'textarea'>) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n 'rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent flex-1 resize-none',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupText, InputGroupInput, InputGroupTextarea };\n"]}
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-LPDYWZN6.js","../components/ui/input-group.tsx"],"names":["_a","_b"],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-LPDYWZN6.js","sourcesContent":[null,"\"use client\";\nimport * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils/ui';\nimport { Button } from './button';\nimport { Input } from './input';\nimport { Textarea } from './textarea';\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n 'border-input dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-disabled:bg-input/50 dark:has-disabled:bg-input/80 h-8 rounded-lg border transition-colors in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5 group/input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto',\n className,\n )}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n \"text-muted-foreground h-auto gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4 flex cursor-text items-center justify-center select-none\",\n {\n variants: {\n align: {\n 'inline-start': 'pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem] order-first',\n 'inline-end': 'pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem] order-last',\n 'block-start':\n 'px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2 order-first w-full justify-start',\n 'block-end': 'px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2 order-last w-full justify-start',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nfunction InputGroupAddon({\n className,\n align = 'inline-start',\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest('button')) {\n return;\n }\n e.currentTarget.parentElement?.querySelector('input')?.focus();\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva('gap-2 text-sm flex items-center shadow-none', {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: '',\n 'icon-xs': 'size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0',\n 'icon-sm': 'size-8 p-0 has-[>svg]:p-0',\n },\n },\n defaultVariants: {\n size: 'xs',\n },\n});\n\nfunction InputGroupButton({\n className,\n type = 'button',\n variant = 'ghost',\n size = 'xs',\n ...props\n}: Omit<React.ComponentProps<typeof Button>, 'size'> & VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n );\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n className={cn(\n \"text-muted-foreground gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupInput({ className, ...props }: React.ComponentProps<'input'>) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n 'rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent flex-1',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction InputGroupTextarea({ className, ...props }: React.ComponentProps<'textarea'>) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n 'rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent flex-1 resize-none',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupText, InputGroupInput, InputGroupTextarea };\n"]}
@@ -4,6 +4,7 @@ import {
4
4
  } from "./chunk-YOSPWY5K.mjs";
5
5
 
6
6
  // components/ui/collapsible.tsx
7
+ import * as React from "react";
7
8
  import { Collapsible as CollapsiblePrimitive } from "radix-ui";
8
9
  function Collapsible(_a) {
9
10
  var props = __objRest(_a, []);
@@ -23,4 +24,4 @@ export {
23
24
  CollapsibleTrigger,
24
25
  CollapsibleContent
25
26
  };
26
- //# sourceMappingURL=chunk-KO4TIQLS.mjs.map
27
+ //# sourceMappingURL=chunk-M6UKU56L.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../components/ui/collapsible.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { Collapsible as CollapsiblePrimitive } from 'radix-ui';\n\nfunction Collapsible({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return <CollapsiblePrimitive.CollapsibleTrigger data-slot=\"collapsible-trigger\" {...props} />;\n}\n\nfunction CollapsibleContent({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return <CollapsiblePrimitive.CollapsibleContent data-slot=\"collapsible-content\" {...props} />;\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n"],"mappings":";;;;;;AACA,YAAY,WAAW;AACvB,SAAS,eAAe,4BAA4B;AAEpD,SAAS,YAAY,IAAsE;AAAtE,MAAK,kBAAL,IAAK;AACxB,SAAO,oCAAC,qBAAqB,MAArB,iBAA0B,aAAU,iBAAkB,MAAO;AACvE;AAEA,SAAS,mBAAmB,IAAoF;AAApF,MAAK,kBAAL,IAAK;AAC/B,SAAO,oCAAC,qBAAqB,oBAArB,iBAAwC,aAAU,yBAA0B,MAAO;AAC7F;AAEA,SAAS,mBAAmB,IAAoF;AAApF,MAAK,kBAAL,IAAK;AAC/B,SAAO,oCAAC,qBAAqB,oBAArB,iBAAwC,aAAU,yBAA0B,MAAO;AAC7F;","names":[]}
@@ -1,20 +1,20 @@
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 _chunkSLADFPSLjs = require('./chunk-SLADFPSL.js');
4
+ var _chunkVBPJD7U3js = require('./chunk-VBPJD7U3.js');
5
5
 
6
6
 
7
- var _chunkFCE22MQIjs = require('./chunk-FCE22MQI.js');
7
+ var _chunkAQIBLBXWjs = require('./chunk-AQIBLBXW.js');
8
8
 
9
9
 
10
- var _chunkWHQINNUBjs = require('./chunk-WHQINNUB.js');
10
+ var _chunkFOEQYO2Qjs = require('./chunk-FOEQYO2Q.js');
11
11
 
12
12
 
13
13
 
14
14
 
15
15
 
16
16
 
17
- var _chunkWREXRSAAjs = require('./chunk-WREXRSAA.js');
17
+ var _chunkP4EDRIBHjs = require('./chunk-P4EDRIBH.js');
18
18
 
19
19
 
20
20
  var _chunkKB6BX6LAjs = require('./chunk-KB6BX6LA.js');
@@ -30,8 +30,8 @@ function AppSidebar(_a) {
30
30
  var _b;
31
31
  const _a2 = props, { data, aslink } = _a2, rest = _chunk2NMEKWO5js.__objRest.call(void 0, _a2, ["data", "aslink"]);
32
32
  const { context } = data;
33
- return /* @__PURE__ */ React.createElement(_chunkWREXRSAAjs.Sidebar, _chunk2NMEKWO5js.__spreadValues.call(void 0, { collapsible: "icon" }, rest), (context == null ? void 0 : context.items) && context.items.length > 0 && /* @__PURE__ */ React.createElement(_chunkWREXRSAAjs.SidebarHeader, null, /* @__PURE__ */ React.createElement(
34
- _chunkSLADFPSLjs.ContextSwitcher,
33
+ return /* @__PURE__ */ React.createElement(_chunkP4EDRIBHjs.Sidebar, _chunk2NMEKWO5js.__spreadValues.call(void 0, { collapsible: "icon" }, rest), (context == null ? void 0 : context.items) && context.items.length > 0 && /* @__PURE__ */ React.createElement(_chunkP4EDRIBHjs.SidebarHeader, null, /* @__PURE__ */ React.createElement(
34
+ _chunkVBPJD7U3js.ContextSwitcher,
35
35
  {
36
36
  items: context.items,
37
37
  title: context.title,
@@ -50,7 +50,7 @@ function AppSidebar(_a) {
50
50
  }
51
51
  }
52
52
  }
53
- )), /* @__PURE__ */ React.createElement(_chunkWREXRSAAjs.SidebarContent, null, /* @__PURE__ */ React.createElement(_chunkFCE22MQIjs.NavMenus, { menus: data.menus, aslink })), /* @__PURE__ */ React.createElement(_chunkWREXRSAAjs.SidebarFooter, null, data.user ? /* @__PURE__ */ React.createElement(_chunkWHQINNUBjs.NavUser, { user: data.user, menus: data.userMenus, aslink, onLogout: (_b = data.events) == null ? void 0 : _b.logout }) : /* @__PURE__ */ React.createElement(
53
+ )), /* @__PURE__ */ React.createElement(_chunkP4EDRIBHjs.SidebarContent, null, /* @__PURE__ */ React.createElement(_chunkAQIBLBXWjs.NavMenus, { menus: data.menus, aslink })), /* @__PURE__ */ React.createElement(_chunkP4EDRIBHjs.SidebarFooter, null, data.user ? /* @__PURE__ */ React.createElement(_chunkFOEQYO2Qjs.NavUser, { user: data.user, menus: data.userMenus, aslink, onLogout: (_b = data.events) == null ? void 0 : _b.logout }) : /* @__PURE__ */ React.createElement(
54
54
  _chunkKB6BX6LAjs.Button,
55
55
  {
56
56
  variant: "action",
@@ -62,10 +62,10 @@ function AppSidebar(_a) {
62
62
  }
63
63
  },
64
64
  "Sign in"
65
- )), /* @__PURE__ */ React.createElement(_chunkWREXRSAAjs.SidebarRail, null));
65
+ )), /* @__PURE__ */ React.createElement(_chunkP4EDRIBHjs.SidebarRail, null));
66
66
  }
67
67
 
68
68
 
69
69
 
70
70
  exports.AppSidebar = AppSidebar;
71
- //# sourceMappingURL=chunk-Y6CUGIQB.js.map
71
+ //# sourceMappingURL=chunk-NRCL342G.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-Y6CUGIQB.js","../layouts/sidebar1/app-sidebar.tsx"],"names":["_a","context"],"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;AA4BhB,SAAS,UAAA,CAAW,EAAA,EAKxB;AALwB,EAAA,IACtB,MAAA,EAAA,wCAAA,EADsB,EACtB,CAAA,CAAA,CAAA;AA9BL,EAAA,IAAA,EAAA;AAmCE,EAAA,MAAkCA,IAAAA,EAAA,KAAA,EAA1B,EAAA,IAAA,EAAM,OAnChB,EAAA,EAmCoCA,GAAAA,EAAT,KAAA,EAAA,wCAAA,GAASA,EAAT,CAAjB,MAAA,EAAM,QAAA,CAAA,CAAA;AACd,EAAA,MAAM,EAAE,QAAQ,EAAA,EAAI,IAAA;AAEpB,EAAA,uBACE,KAAA,CAAA,aAAA,CAAC,wBAAA,EAAA,6CAAA,EAAQ,WAAA,EAAY,OAAA,CAAA,EAAW,IAAA,CAAA,EAAA,CAC7B,QAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,OAAA,CAAS,KAAA,EAAA,GAAS,OAAA,CAAQ,KAAA,CAAM,OAAA,EAAS,EAAA,mBACxC,KAAA,CAAA,aAAA,CAAC,8BAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA;AAAA,IAAC,gCAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,OAAA,CAAQ,KAAA;AAAA,MACf,KAAA,EAAO,OAAA,CAAQ,KAAA;AAAA,MACf,cAAA,EAAgB,OAAA,CAAQ,OAAA;AAAA,MACxB,MAAA,EAAQ,OAAA,CAAQ,MAAA;AAAA,MAChB,YAAA,EAAc,CAAA,EAAA,GAAM;AA/ChC,QAAA,IAAAA,GAAAA;AAgDc,QAAA,GAAA,CAAA,CAAIA,IAAAA,EAAA,IAAA,CAAK,MAAA,EAAA,GAAL,KAAA,EAAA,KAAA,EAAA,EAAAA,GAAAA,CAAa,UAAA,EAAY;AAC3B,UAAA,IAAA,CAAK,MAAA,CAAO,UAAA,CAAW,CAAA;AAAA,QACzB;AAAA,MACF,CAAA;AAAA,MACA,iBAAA,EAAmB,CAACC,QAAAA,EAAAA,GAAyB;AApDzD,QAAA,IAAAD,GAAAA;AAqDc,QAAA,GAAA,CAAA,CAAIA,IAAAA,EAAA,IAAA,CAAK,MAAA,EAAA,GAAL,KAAA,EAAA,KAAA,EAAA,EAAAA,GAAAA,CAAa,aAAA,EAAe;AAC9B,UAAA,IAAA,CAAK,MAAA,CAAO,aAAA,CAAcC,QAAO,CAAA;AAAA,QACnC;AAAA,MACF;AAAA,IAAA;AAAA,EACF,CACF,CAAA,kBAGF,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,QAAA;AAAA,MACR,OAAA,EAAS,CAAA,EAAA,GAAM;AAvE3B,QAAA,IAAAD,GAAAA;AAwEc,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;ADpBA;AACA;AACE;AACF,gCAAC","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-Y6CUGIQB.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';\n\nexport interface ISidebarContext {\n title?: string;\n addText?: string;\n items?: INavContext[];\n canAdd?: boolean;\n}\n\nexport interface ISidebarData {\n user?: INavUser;\n context?: ISidebarContext;\n menus: INavMenu[];\n userMenus: INavUserMenuItem[];\n events?: {\n login?: () => void;\n logout?: (user: INavUser) => void;\n newContext?: () => void;\n contextSelect?: (context: INavContext) => 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 const { context } = data;\n\n return (\n <Sidebar collapsible=\"icon\" {...rest}>\n {context?.items && context.items.length > 0 && (\n <SidebarHeader>\n <ContextSwitcher\n items={context.items}\n title={context.title}\n newContextText={context.addText}\n canAdd={context.canAdd}\n onContextAdd={() => {\n if (data.events?.newContext) {\n data.events.newContext();\n }\n }}\n onContextSelected={(context: INavContext) => {\n if (data.events?.contextSelect) {\n data.events.contextSelect(context);\n }\n }}\n />\n </SidebarHeader>\n )}\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=\"action\"\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"]}
1
+ {"version":3,"sources":["/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-NRCL342G.js","../layouts/sidebar1/app-sidebar.tsx"],"names":["_a","context"],"mappings":"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","file":"/home/jahn/projects/shadcn-theme/packages/react/dist/chunk-NRCL342G.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';\n\nexport interface ISidebarContext {\n title?: string;\n addText?: string;\n items?: INavContext[];\n canAdd?: boolean;\n}\n\nexport interface ISidebarData {\n user?: INavUser;\n context?: ISidebarContext;\n menus: INavMenu[];\n userMenus: INavUserMenuItem[];\n events?: {\n login?: () => void;\n logout?: (user: INavUser) => void;\n newContext?: () => void;\n contextSelect?: (context: INavContext) => 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 const { context } = data;\n\n return (\n <Sidebar collapsible=\"icon\" {...rest}>\n {context?.items && context.items.length > 0 && (\n <SidebarHeader>\n <ContextSwitcher\n items={context.items}\n title={context.title}\n newContextText={context.addText}\n canAdd={context.canAdd}\n onContextAdd={() => {\n if (data.events?.newContext) {\n data.events.newContext();\n }\n }}\n onContextSelected={(context: INavContext) => {\n if (data.events?.contextSelect) {\n data.events.contextSelect(context);\n }\n }}\n />\n </SidebarHeader>\n )}\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=\"action\"\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"]}
@@ -7,6 +7,7 @@ import {
7
7
  } from "./chunk-YOSPWY5K.mjs";
8
8
 
9
9
  // components/ui/skeleton.tsx
10
+ import * as React from "react";
10
11
  function Skeleton(_a) {
11
12
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
12
13
  return /* @__PURE__ */ React.createElement("div", __spreadValues({ "data-slot": "skeleton", className: cn("bg-muted rounded-md animate-pulse", className) }, props));
@@ -15,4 +16,4 @@ function Skeleton(_a) {
15
16
  export {
16
17
  Skeleton
17
18
  };
18
- //# sourceMappingURL=chunk-4I6SLZWT.mjs.map
19
+ //# sourceMappingURL=chunk-O6PHWGJH.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../components/ui/skeleton.tsx"],"sourcesContent":["\"use client\";\nimport * as React from 'react';\nimport { cn } from '../../utils/ui';\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<'div'>) {\n return <div data-slot=\"skeleton\" className={cn('bg-muted rounded-md animate-pulse', className)} {...props} />;\n}\n\nexport { Skeleton };\n"],"mappings":";;;;;;;;;AACA,YAAY,WAAW;AAGvB,SAAS,SAAS,IAAsD;AAAtD,eAAE,YAJpB,IAIkB,IAAgB,kBAAhB,IAAgB,CAAd;AAClB,SAAO,oCAAC,wBAAI,aAAU,YAAW,WAAW,GAAG,qCAAqC,SAAS,KAAO,MAAO;AAC7G;","names":[]}
@@ -6,7 +6,7 @@ import {
6
6
  SidebarMenuButton,
7
7
  SidebarMenuItem,
8
8
  useSidebar
9
- } from "./chunk-UQJ4A4H2.mjs";
9
+ } from "./chunk-4IDPSNL3.mjs";
10
10
  import {
11
11
  DropdownMenu,
12
12
  DropdownMenuContent,
@@ -77,4 +77,4 @@ function NavUser({
77
77
  export {
78
78
  NavUser
79
79
  };
80
- //# sourceMappingURL=chunk-KUD4Z2MZ.mjs.map
80
+ //# sourceMappingURL=chunk-P4DW3EEW.mjs.map