@c-rex/components 0.0.8 → 0.0.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.
Files changed (134) hide show
  1. package/dist/autocomplete.cjs.js +215 -0
  2. package/dist/autocomplete.cjs.js.map +1 -0
  3. package/dist/autocomplete.d.cts +10 -0
  4. package/dist/autocomplete.d.ts +10 -0
  5. package/dist/autocomplete.esm.js +154 -0
  6. package/dist/autocomplete.esm.js.map +1 -0
  7. package/dist/blog-card.cjs.js +265 -0
  8. package/dist/blog-card.cjs.js.map +1 -0
  9. package/dist/blog-card.d.cts +19 -0
  10. package/dist/blog-card.d.ts +19 -0
  11. package/dist/blog-card.esm.js +192 -0
  12. package/dist/blog-card.esm.js.map +1 -0
  13. package/dist/blur-image.cjs.js +198 -0
  14. package/dist/blur-image.cjs.js.map +1 -0
  15. package/dist/blur-image.d.cts +7 -0
  16. package/dist/blur-image.d.ts +7 -0
  17. package/dist/blur-image.esm.js +125 -0
  18. package/dist/blur-image.esm.js.map +1 -0
  19. package/dist/breadcrumb.cjs.js +159 -0
  20. package/dist/breadcrumb.cjs.js.map +1 -0
  21. package/dist/breadcrumb.d.cts +10 -0
  22. package/dist/breadcrumb.d.ts +10 -0
  23. package/dist/breadcrumb.esm.js +98 -0
  24. package/dist/breadcrumb.esm.js.map +1 -0
  25. package/dist/empty.cjs.js +79 -0
  26. package/dist/empty.cjs.js.map +1 -0
  27. package/dist/empty.d.cts +5 -0
  28. package/dist/empty.d.ts +5 -0
  29. package/dist/empty.esm.js +18 -0
  30. package/dist/empty.esm.js.map +1 -0
  31. package/dist/navbar.cjs.js +134 -0
  32. package/dist/navbar.cjs.js.map +1 -0
  33. package/dist/navbar.d.cts +9 -0
  34. package/dist/navbar.d.ts +9 -0
  35. package/dist/navbar.esm.js +61 -0
  36. package/dist/navbar.esm.js.map +1 -0
  37. package/dist/providers/search-state-wrapper.cjs.js +113 -0
  38. package/dist/providers/search-state-wrapper.cjs.js.map +1 -0
  39. package/dist/providers/search-state-wrapper.d.cts +14 -0
  40. package/dist/providers/search-state-wrapper.d.ts +14 -0
  41. package/dist/providers/search-state-wrapper.esm.js +51 -0
  42. package/dist/providers/search-state-wrapper.esm.js.map +1 -0
  43. package/dist/result-list.cjs.js +321 -0
  44. package/dist/result-list.cjs.js.map +1 -0
  45. package/dist/result-list.d.cts +9 -0
  46. package/dist/result-list.d.ts +9 -0
  47. package/dist/result-list.esm.js +247 -0
  48. package/dist/result-list.esm.js.map +1 -0
  49. package/dist/result-view/blog-view.stories.cjs.js +372 -0
  50. package/dist/result-view/blog-view.stories.cjs.js.map +1 -0
  51. package/dist/result-view/blog-view.stories.d.cts +11 -0
  52. package/dist/result-view/blog-view.stories.d.ts +11 -0
  53. package/dist/result-view/blog-view.stories.esm.js +295 -0
  54. package/dist/result-view/blog-view.stories.esm.js.map +1 -0
  55. package/dist/result-view/blog.cjs.js +290 -0
  56. package/dist/result-view/blog.cjs.js.map +1 -0
  57. package/dist/result-view/blog.d.cts +9 -0
  58. package/dist/result-view/blog.d.ts +9 -0
  59. package/dist/result-view/blog.esm.js +220 -0
  60. package/dist/result-view/blog.esm.js.map +1 -0
  61. package/dist/result-view/table-view.stories.cjs.js +196 -0
  62. package/dist/result-view/table-view.stories.cjs.js.map +1 -0
  63. package/dist/result-view/table-view.stories.d.cts +11 -0
  64. package/dist/result-view/table-view.stories.d.ts +11 -0
  65. package/dist/result-view/table-view.stories.esm.js +131 -0
  66. package/dist/result-view/table-view.stories.esm.js.map +1 -0
  67. package/dist/result-view/table.cjs.js +116 -0
  68. package/dist/result-view/table.cjs.js.map +1 -0
  69. package/dist/result-view/table.d.cts +9 -0
  70. package/dist/result-view/table.d.ts +9 -0
  71. package/dist/result-view/table.esm.js +59 -0
  72. package/dist/result-view/table.esm.js.map +1 -0
  73. package/dist/sidebar.cjs.js +225 -0
  74. package/dist/sidebar.cjs.js.map +1 -0
  75. package/dist/sidebar.d.cts +12 -0
  76. package/dist/sidebar.d.ts +12 -0
  77. package/dist/sidebar.esm.js +164 -0
  78. package/dist/sidebar.esm.js.map +1 -0
  79. package/dist/stories/blog-card.stories.cjs.js +323 -0
  80. package/dist/stories/blog-card.stories.cjs.js.map +1 -0
  81. package/dist/stories/blog-card.stories.d.cts +9 -0
  82. package/dist/stories/blog-card.stories.d.ts +9 -0
  83. package/dist/stories/blog-card.stories.esm.js +242 -0
  84. package/dist/stories/blog-card.stories.esm.js.map +1 -0
  85. package/dist/stories/blur-image.stories.cjs.js +265 -0
  86. package/dist/stories/blur-image.stories.cjs.js.map +1 -0
  87. package/dist/stories/blur-image.stories.d.cts +37 -0
  88. package/dist/stories/blur-image.stories.d.ts +37 -0
  89. package/dist/stories/blur-image.stories.esm.js +180 -0
  90. package/dist/stories/blur-image.stories.esm.js.map +1 -0
  91. package/dist/stories/breadcrumb.stories.cjs.js +214 -0
  92. package/dist/stories/breadcrumb.stories.cjs.js.map +1 -0
  93. package/dist/stories/breadcrumb.stories.d.cts +9 -0
  94. package/dist/stories/breadcrumb.stories.d.ts +9 -0
  95. package/dist/stories/breadcrumb.stories.esm.js +145 -0
  96. package/dist/stories/breadcrumb.stories.esm.js.map +1 -0
  97. package/dist/stories/empty.stories.cjs.js +93 -0
  98. package/dist/stories/empty.stories.cjs.js.map +1 -0
  99. package/dist/stories/empty.stories.d.cts +13 -0
  100. package/dist/stories/empty.stories.d.ts +13 -0
  101. package/dist/stories/empty.stories.esm.js +28 -0
  102. package/dist/stories/empty.stories.esm.js.map +1 -0
  103. package/dist/stories/navbar.stories.cjs.js +151 -0
  104. package/dist/stories/navbar.stories.cjs.js.map +1 -0
  105. package/dist/stories/navbar.stories.d.cts +8 -0
  106. package/dist/stories/navbar.stories.d.ts +8 -0
  107. package/dist/stories/navbar.stories.esm.js +74 -0
  108. package/dist/stories/navbar.stories.esm.js.map +1 -0
  109. package/dist/stories/sidebar.stories.cjs.js +327 -0
  110. package/dist/stories/sidebar.stories.cjs.js.map +1 -0
  111. package/dist/stories/sidebar.stories.d.cts +30 -0
  112. package/dist/stories/sidebar.stories.d.ts +30 -0
  113. package/dist/stories/sidebar.stories.esm.js +258 -0
  114. package/dist/stories/sidebar.stories.esm.js.map +1 -0
  115. package/package.json +40 -27
  116. package/src/autocomplete.tsx +0 -113
  117. package/src/blog-card.tsx +0 -87
  118. package/src/blur-image.tsx +0 -23
  119. package/src/breadcrumb.tsx +0 -81
  120. package/src/empty.tsx +0 -13
  121. package/src/navbar.tsx +0 -66
  122. package/src/providers/search-state-wrapper.tsx +0 -21
  123. package/src/result-list.tsx +0 -16
  124. package/src/result-view/blog-view.stories.tsx +0 -58
  125. package/src/result-view/blog.tsx +0 -38
  126. package/src/result-view/table-view.stories.tsx +0 -55
  127. package/src/result-view/table.tsx +0 -65
  128. package/src/sidebar.tsx +0 -76
  129. package/src/stories/blog-card.stories.tsx +0 -46
  130. package/src/stories/blur-image.stories.tsx +0 -51
  131. package/src/stories/breadcrumb.stories.tsx +0 -52
  132. package/src/stories/empty.stories.tsx +0 -14
  133. package/src/stories/navbar.stories.tsx +0 -16
  134. package/src/stories/sidebar.stories.tsx +0 -94
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ function _array_like_to_array(arr, len) {
3
+ if (len == null || len > arr.length) len = arr.length;
4
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
5
+ return arr2;
6
+ }
7
+ function _array_with_holes(arr) {
8
+ if (Array.isArray(arr)) return arr;
9
+ }
10
+ function _instanceof(left, right) {
11
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
12
+ return !!right[Symbol.hasInstance](left);
13
+ } else {
14
+ return left instanceof right;
15
+ }
16
+ }
17
+ function _iterable_to_array_limit(arr, i) {
18
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
19
+ if (_i == null) return;
20
+ var _arr = [];
21
+ var _n = true;
22
+ var _d = false;
23
+ var _s, _e;
24
+ try {
25
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
26
+ _arr.push(_s.value);
27
+ if (i && _arr.length === i) break;
28
+ }
29
+ } catch (err) {
30
+ _d = true;
31
+ _e = err;
32
+ } finally{
33
+ try {
34
+ if (!_n && _i["return"] != null) _i["return"]();
35
+ } finally{
36
+ if (_d) throw _e;
37
+ }
38
+ }
39
+ return _arr;
40
+ }
41
+ function _non_iterable_rest() {
42
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
43
+ }
44
+ function _sliced_to_array(arr, i) {
45
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
46
+ }
47
+ function _type_of(obj) {
48
+ "@swc/helpers - typeof";
49
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
50
+ }
51
+ function _unsupported_iterable_to_array(o, minLen) {
52
+ if (!o) return;
53
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
54
+ var n = Object.prototype.toString.call(o).slice(8, -1);
55
+ if (n === "Object" && o.constructor) n = o.constructor.name;
56
+ if (n === "Map" || n === "Set") return Array.from(n);
57
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
58
+ }
59
+ var __defProp = Object.defineProperty;
60
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
61
+ var __getOwnPropNames = Object.getOwnPropertyNames;
62
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
63
+ var __export = function(target, all) {
64
+ for(var name in all)__defProp(target, name, {
65
+ get: all[name],
66
+ enumerable: true
67
+ });
68
+ };
69
+ var __copyProps = function(to, from, except, desc) {
70
+ if (from && (typeof from === "undefined" ? "undefined" : _type_of(from)) === "object" || typeof from === "function") {
71
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
72
+ try {
73
+ var _loop = function() {
74
+ var key = _step.value;
75
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
76
+ get: function() {
77
+ return from[key];
78
+ },
79
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
80
+ });
81
+ };
82
+ for(var _iterator = __getOwnPropNames(from)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
83
+ } catch (err) {
84
+ _didIteratorError = true;
85
+ _iteratorError = err;
86
+ } finally{
87
+ try {
88
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
89
+ _iterator.return();
90
+ }
91
+ } finally{
92
+ if (_didIteratorError) {
93
+ throw _iteratorError;
94
+ }
95
+ }
96
+ }
97
+ }
98
+ return to;
99
+ };
100
+ var __toCommonJS = function(mod) {
101
+ return __copyProps(__defProp({}, "__esModule", {
102
+ value: true
103
+ }), mod);
104
+ };
105
+ // src/autocomplete.tsx
106
+ var autocomplete_exports = {};
107
+ __export(autocomplete_exports, {
108
+ AutoComplete: function() {
109
+ return AutoComplete;
110
+ }
111
+ });
112
+ module.exports = __toCommonJS(autocomplete_exports);
113
+ var import_cmdk = require("cmdk");
114
+ var import_lucide_react = require("lucide-react");
115
+ var import_react = require("react");
116
+ var import_input = require("@c-rex/ui/input");
117
+ var import_command = require("@c-rex/ui/command");
118
+ var import_popover = require("@c-rex/ui/popover");
119
+ var import_jsx_runtime = require("react/jsx-runtime");
120
+ var AutoComplete = function(param) {
121
+ var initialValue = param.initialValue, onSearch = param.onSearch, onSelect = param.onSelect;
122
+ var _ref = _sliced_to_array((0, import_react.useState)(initialValue), 2), query = _ref[0], setQuery = _ref[1];
123
+ var _ref1 = _sliced_to_array((0, import_react.useState)([]), 2), suggestions = _ref1[0], setSuggestions = _ref1[1];
124
+ var _ref2 = _sliced_to_array((0, import_react.useState)(false), 2), open = _ref2[0], setOpen = _ref2[1];
125
+ (0, import_react.useEffect)(function() {
126
+ var debounceFetch = setTimeout(function() {
127
+ if (query) {
128
+ onSearch(query).then(setSuggestions);
129
+ } else {
130
+ setSuggestions([]);
131
+ }
132
+ }, 300);
133
+ return function() {
134
+ return clearTimeout(debounceFetch);
135
+ };
136
+ }, [
137
+ onSearch,
138
+ query
139
+ ]);
140
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
141
+ className: "flex items-center",
142
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_popover.Popover, {
143
+ open: open,
144
+ onOpenChange: setOpen,
145
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_command.Command, {
146
+ shouldFilter: false,
147
+ children: [
148
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_popover.PopoverAnchor, {
149
+ asChild: true,
150
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_cmdk.Command.Input, {
151
+ asChild: true,
152
+ value: query,
153
+ onValueChange: setQuery,
154
+ onKeyDown: function(e) {
155
+ return setOpen(e.key !== "Escape");
156
+ },
157
+ onMouseDown: function() {
158
+ return setOpen(false);
159
+ },
160
+ onFocus: function() {
161
+ return setOpen(true);
162
+ },
163
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_input.Input, {})
164
+ })
165
+ }),
166
+ !open && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_command.CommandList, {
167
+ "aria-hidden": "true",
168
+ className: "hidden"
169
+ }),
170
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_popover.PopoverContent, {
171
+ asChild: true,
172
+ onOpenAutoFocus: function(e) {
173
+ return e.preventDefault();
174
+ },
175
+ onInteractOutside: function(e) {
176
+ if (_instanceof(e.target, Element) && e.target.hasAttribute("cmdk-input")) {
177
+ e.preventDefault();
178
+ }
179
+ },
180
+ className: "w-[--radix-popover-trigger-width] p-0",
181
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_command.CommandList, {
182
+ children: suggestions.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_command.CommandGroup, {
183
+ children: suggestions.map(function(option) {
184
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_command.CommandItem, {
185
+ value: option,
186
+ onMouseDown: function(e) {
187
+ return e.preventDefault();
188
+ },
189
+ onSelect: function(inputValue) {
190
+ setOpen(false);
191
+ onSelect(inputValue !== null && inputValue !== void 0 ? inputValue : "");
192
+ },
193
+ children: [
194
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Check, {
195
+ className: "mr-2 h-4 w-4 opacity-0"
196
+ }),
197
+ option
198
+ ]
199
+ }, option);
200
+ })
201
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_command.CommandEmpty, {
202
+ children: "No suggestions."
203
+ })
204
+ })
205
+ })
206
+ ]
207
+ })
208
+ })
209
+ });
210
+ };
211
+ // Annotate the CommonJS export names for ESM import in node:
212
+ 0 && (module.exports = {
213
+ AutoComplete: AutoComplete
214
+ });
215
+ //# sourceMappingURL=autocomplete.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/periotto/Desktop/workspace/c-rex.net-web-client-foundation/packages/components/dist/autocomplete.cjs.js","../src/autocomplete.tsx"],"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","autocomplete_exports","AutoComplete","module","exports","import_cmdk","require","import_lucide_react","import_react","import_input","import_command","import_popover","import_jsx_runtime","initialValue","onSearch","onSelect","useState","query","setQuery","suggestions","setSuggestions","open","setOpen","useEffect","debounceFetch","setTimeout","then","clearTimeout","jsx","className","children","Popover","onOpenChange","jsxs","Command","shouldFilter","PopoverAnchor","asChild","CommandPrimitive","Input","onValueChange","onKeyDown","e","onMouseDown","onFocus","CommandList","PopoverContent","onOpenAutoFocus","preventDefault","onInteractOutside","Element","hasAttribute","length","CommandGroup","map","option","CommandItem","inputValue","Check","CommandEmpty"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/autocomplete.tsx\nvar autocomplete_exports = {};\n__export(autocomplete_exports, {\n AutoComplete: () => AutoComplete\n});\nmodule.exports = __toCommonJS(autocomplete_exports);\nvar import_cmdk = require(\"cmdk\");\nvar import_lucide_react = require(\"lucide-react\");\nvar import_react = require(\"react\");\nvar import_input = require(\"@c-rex/ui/input\");\nvar import_command = require(\"@c-rex/ui/command\");\nvar import_popover = require(\"@c-rex/ui/popover\");\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar AutoComplete = ({\n initialValue,\n onSearch,\n onSelect\n}) => {\n const [query, setQuery] = (0, import_react.useState)(initialValue);\n const [suggestions, setSuggestions] = (0, import_react.useState)([]);\n const [open, setOpen] = (0, import_react.useState)(false);\n (0, import_react.useEffect)(() => {\n const debounceFetch = setTimeout(() => {\n if (query) {\n onSearch(query).then(setSuggestions);\n } else {\n setSuggestions([]);\n }\n }, 300);\n return () => clearTimeout(debounceFetch);\n }, [onSearch, query]);\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { className: \"flex items-center\", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_popover.Popover, { open, onOpenChange: setOpen, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_command.Command, { shouldFilter: false, children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_popover.PopoverAnchor, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n import_cmdk.Command.Input,\n {\n asChild: true,\n value: query,\n onValueChange: setQuery,\n onKeyDown: (e) => setOpen(e.key !== \"Escape\"),\n onMouseDown: () => setOpen(false),\n onFocus: () => setOpen(true),\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_input.Input, {})\n }\n ) }),\n !open && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_command.CommandList, { \"aria-hidden\": \"true\", className: \"hidden\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n import_popover.PopoverContent,\n {\n asChild: true,\n onOpenAutoFocus: (e) => e.preventDefault(),\n onInteractOutside: (e) => {\n if (e.target instanceof Element && e.target.hasAttribute(\"cmdk-input\")) {\n e.preventDefault();\n }\n },\n className: \"w-[--radix-popover-trigger-width] p-0\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_command.CommandList, { children: suggestions.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_command.CommandGroup, { children: suggestions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n import_command.CommandItem,\n {\n value: option,\n onMouseDown: (e) => e.preventDefault(),\n onSelect: (inputValue) => {\n setOpen(false);\n onSelect(inputValue ?? \"\");\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Check, { className: \"mr-2 h-4 w-4 opacity-0\" }),\n option\n ]\n },\n option\n )) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_command.CommandEmpty, { children: \"No suggestions.\" }) })\n }\n )\n ] }) }) });\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n AutoComplete\n});\n","import { Command as CommandPrimitive } from \"cmdk\";\nimport { Check } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { Input } from \"@c-rex/ui/input\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandList\n} from \"@c-rex/ui/command\";\nimport {\n Popover,\n PopoverAnchor,\n PopoverContent\n} from \"@c-rex/ui/popover\";\n\ntype Props = {\n initialValue: string;\n onSelect: (value: string) => void;\n onSearch: (value: string) => Promise<string[]>;\n};\n\nexport const AutoComplete = ({\n initialValue,\n onSearch,\n onSelect,\n}: Props) => {\n const [query, setQuery] = useState(initialValue);\n const [suggestions, setSuggestions] = useState<string[]>([]);\n\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n const debounceFetch = setTimeout(() => {\n if (query) {\n onSearch(query).then(setSuggestions);\n } else {\n setSuggestions([]);\n }\n }, 300);\n\n return () => clearTimeout(debounceFetch);\n }, [onSearch, query]);\n\n return (\n <div className=\"flex items-center\">\n <Popover open={open} onOpenChange={setOpen}>\n <Command shouldFilter={false}>\n <PopoverAnchor asChild>\n <CommandPrimitive.Input\n asChild\n value={query}\n onValueChange={setQuery}\n onKeyDown={(e) => setOpen(e.key !== \"Escape\")}\n onMouseDown={() => setOpen(false)}\n onFocus={() => setOpen(true)}\n >\n <Input />\n </CommandPrimitive.Input>\n </PopoverAnchor>\n\n {!open && <CommandList aria-hidden=\"true\" className=\"hidden\" />}\n\n <PopoverContent\n asChild\n onOpenAutoFocus={(e) => e.preventDefault()}\n onInteractOutside={(e) => {\n if (\n e.target instanceof Element &&\n e.target.hasAttribute(\"cmdk-input\")\n ) {\n e.preventDefault();\n }\n }}\n className=\"w-[--radix-popover-trigger-width] p-0\"\n >\n <CommandList>\n {/*isLoading && (\n <CommandPrimitive.Loading>\n <div className=\"p-1\">\n <Skeleton className=\"h-6 w-full\" />\n </div>\n </CommandPrimitive.Loading>\n )*/}\n\n {suggestions.length > 0 ? (\n <CommandGroup>\n {suggestions.map((option) => (\n <CommandItem\n key={option}\n value={option}\n onMouseDown={(e) => e.preventDefault()}\n onSelect={(inputValue) => {\n setOpen(false);\n onSelect(inputValue ?? \"\");\n }}\n >\n <Check className=\"mr-2 h-4 w-4 opacity-0\" />\n {option}\n </CommandItem>\n ))}\n </CommandGroup>\n ) : (\n <CommandEmpty>No suggestions.</CommandEmpty>\n )}\n </CommandList>\n </PopoverContent>\n </Command>\n </Popover>\n </div>\n );\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ type Props = {
4
+ initialValue: string;
5
+ onSelect: (value: string) => void;
6
+ onSearch: (value: string) => Promise<string[]>;
7
+ };
8
+ declare const AutoComplete: ({ initialValue, onSearch, onSelect, }: Props) => react_jsx_runtime.JSX.Element;
9
+
10
+ export { AutoComplete };
@@ -0,0 +1,10 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ type Props = {
4
+ initialValue: string;
5
+ onSelect: (value: string) => void;
6
+ onSearch: (value: string) => Promise<string[]>;
7
+ };
8
+ declare const AutoComplete: ({ initialValue, onSearch, onSelect, }: Props) => react_jsx_runtime.JSX.Element;
9
+
10
+ export { AutoComplete };
@@ -0,0 +1,154 @@
1
+ // src/autocomplete.tsx
2
+ function _array_like_to_array(arr, len) {
3
+ if (len == null || len > arr.length) len = arr.length;
4
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
5
+ return arr2;
6
+ }
7
+ function _array_with_holes(arr) {
8
+ if (Array.isArray(arr)) return arr;
9
+ }
10
+ function _instanceof(left, right) {
11
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
12
+ return !!right[Symbol.hasInstance](left);
13
+ } else {
14
+ return left instanceof right;
15
+ }
16
+ }
17
+ function _iterable_to_array_limit(arr, i) {
18
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
19
+ if (_i == null) return;
20
+ var _arr = [];
21
+ var _n = true;
22
+ var _d = false;
23
+ var _s, _e;
24
+ try {
25
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
26
+ _arr.push(_s.value);
27
+ if (i && _arr.length === i) break;
28
+ }
29
+ } catch (err) {
30
+ _d = true;
31
+ _e = err;
32
+ } finally{
33
+ try {
34
+ if (!_n && _i["return"] != null) _i["return"]();
35
+ } finally{
36
+ if (_d) throw _e;
37
+ }
38
+ }
39
+ return _arr;
40
+ }
41
+ function _non_iterable_rest() {
42
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
43
+ }
44
+ function _sliced_to_array(arr, i) {
45
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
46
+ }
47
+ function _unsupported_iterable_to_array(o, minLen) {
48
+ if (!o) return;
49
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
50
+ var n = Object.prototype.toString.call(o).slice(8, -1);
51
+ if (n === "Object" && o.constructor) n = o.constructor.name;
52
+ if (n === "Map" || n === "Set") return Array.from(n);
53
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
54
+ }
55
+ import { Command as CommandPrimitive } from "cmdk";
56
+ import { Check } from "lucide-react";
57
+ import { useEffect, useState } from "react";
58
+ import { Input } from "@c-rex/ui/input";
59
+ import { Command, CommandEmpty, CommandGroup, CommandItem, CommandList } from "@c-rex/ui/command";
60
+ import { Popover, PopoverAnchor, PopoverContent } from "@c-rex/ui/popover";
61
+ import { jsx, jsxs } from "react/jsx-runtime";
62
+ var AutoComplete = function(param) {
63
+ var initialValue = param.initialValue, onSearch = param.onSearch, onSelect = param.onSelect;
64
+ var _useState = _sliced_to_array(useState(initialValue), 2), query = _useState[0], setQuery = _useState[1];
65
+ var _useState1 = _sliced_to_array(useState([]), 2), suggestions = _useState1[0], setSuggestions = _useState1[1];
66
+ var _useState2 = _sliced_to_array(useState(false), 2), open = _useState2[0], setOpen = _useState2[1];
67
+ useEffect(function() {
68
+ var debounceFetch = setTimeout(function() {
69
+ if (query) {
70
+ onSearch(query).then(setSuggestions);
71
+ } else {
72
+ setSuggestions([]);
73
+ }
74
+ }, 300);
75
+ return function() {
76
+ return clearTimeout(debounceFetch);
77
+ };
78
+ }, [
79
+ onSearch,
80
+ query
81
+ ]);
82
+ return /* @__PURE__ */ jsx("div", {
83
+ className: "flex items-center",
84
+ children: /* @__PURE__ */ jsx(Popover, {
85
+ open: open,
86
+ onOpenChange: setOpen,
87
+ children: /* @__PURE__ */ jsxs(Command, {
88
+ shouldFilter: false,
89
+ children: [
90
+ /* @__PURE__ */ jsx(PopoverAnchor, {
91
+ asChild: true,
92
+ children: /* @__PURE__ */ jsx(CommandPrimitive.Input, {
93
+ asChild: true,
94
+ value: query,
95
+ onValueChange: setQuery,
96
+ onKeyDown: function(e) {
97
+ return setOpen(e.key !== "Escape");
98
+ },
99
+ onMouseDown: function() {
100
+ return setOpen(false);
101
+ },
102
+ onFocus: function() {
103
+ return setOpen(true);
104
+ },
105
+ children: /* @__PURE__ */ jsx(Input, {})
106
+ })
107
+ }),
108
+ !open && /* @__PURE__ */ jsx(CommandList, {
109
+ "aria-hidden": "true",
110
+ className: "hidden"
111
+ }),
112
+ /* @__PURE__ */ jsx(PopoverContent, {
113
+ asChild: true,
114
+ onOpenAutoFocus: function(e) {
115
+ return e.preventDefault();
116
+ },
117
+ onInteractOutside: function(e) {
118
+ if (_instanceof(e.target, Element) && e.target.hasAttribute("cmdk-input")) {
119
+ e.preventDefault();
120
+ }
121
+ },
122
+ className: "w-[--radix-popover-trigger-width] p-0",
123
+ children: /* @__PURE__ */ jsx(CommandList, {
124
+ children: suggestions.length > 0 ? /* @__PURE__ */ jsx(CommandGroup, {
125
+ children: suggestions.map(function(option) {
126
+ return /* @__PURE__ */ jsxs(CommandItem, {
127
+ value: option,
128
+ onMouseDown: function(e) {
129
+ return e.preventDefault();
130
+ },
131
+ onSelect: function(inputValue) {
132
+ setOpen(false);
133
+ onSelect(inputValue !== null && inputValue !== void 0 ? inputValue : "");
134
+ },
135
+ children: [
136
+ /* @__PURE__ */ jsx(Check, {
137
+ className: "mr-2 h-4 w-4 opacity-0"
138
+ }),
139
+ option
140
+ ]
141
+ }, option);
142
+ })
143
+ }) : /* @__PURE__ */ jsx(CommandEmpty, {
144
+ children: "No suggestions."
145
+ })
146
+ })
147
+ })
148
+ ]
149
+ })
150
+ })
151
+ });
152
+ };
153
+ export { AutoComplete };
154
+ //# sourceMappingURL=autocomplete.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/periotto/Desktop/workspace/c-rex.net-web-client-foundation/packages/components/dist/autocomplete.esm.js","../src/autocomplete.tsx"],"names":["Command","CommandPrimitive","Check","useEffect","useState","Input","CommandEmpty","CommandGroup","CommandItem","CommandList","Popover","PopoverAnchor","PopoverContent","jsx","jsxs","AutoComplete","initialValue","onSearch","onSelect","query","setQuery","suggestions","setSuggestions","open","setOpen","debounceFetch","setTimeout","then","clearTimeout","className","children","onOpenChange","shouldFilter","asChild","value","onValueChange","onKeyDown","e","key","onMouseDown","onFocus","onOpenAutoFocus","preventDefault","onInteractOutside","target","Element","hasAttribute","length","map","option","inputValue"],"mappings":"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","sourcesContent":["// src/autocomplete.tsx\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Check } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { Input } from \"@c-rex/ui/input\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandList\n} from \"@c-rex/ui/command\";\nimport {\n Popover,\n PopoverAnchor,\n PopoverContent\n} from \"@c-rex/ui/popover\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar AutoComplete = ({\n initialValue,\n onSearch,\n onSelect\n}) => {\n const [query, setQuery] = useState(initialValue);\n const [suggestions, setSuggestions] = useState([]);\n const [open, setOpen] = useState(false);\n useEffect(() => {\n const debounceFetch = setTimeout(() => {\n if (query) {\n onSearch(query).then(setSuggestions);\n } else {\n setSuggestions([]);\n }\n }, 300);\n return () => clearTimeout(debounceFetch);\n }, [onSearch, query]);\n return /* @__PURE__ */ jsx(\"div\", { className: \"flex items-center\", children: /* @__PURE__ */ jsx(Popover, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxs(Command, { shouldFilter: false, children: [\n /* @__PURE__ */ jsx(PopoverAnchor, { asChild: true, children: /* @__PURE__ */ jsx(\n CommandPrimitive.Input,\n {\n asChild: true,\n value: query,\n onValueChange: setQuery,\n onKeyDown: (e) => setOpen(e.key !== \"Escape\"),\n onMouseDown: () => setOpen(false),\n onFocus: () => setOpen(true),\n children: /* @__PURE__ */ jsx(Input, {})\n }\n ) }),\n !open && /* @__PURE__ */ jsx(CommandList, { \"aria-hidden\": \"true\", className: \"hidden\" }),\n /* @__PURE__ */ jsx(\n PopoverContent,\n {\n asChild: true,\n onOpenAutoFocus: (e) => e.preventDefault(),\n onInteractOutside: (e) => {\n if (e.target instanceof Element && e.target.hasAttribute(\"cmdk-input\")) {\n e.preventDefault();\n }\n },\n className: \"w-[--radix-popover-trigger-width] p-0\",\n children: /* @__PURE__ */ jsx(CommandList, { children: suggestions.length > 0 ? /* @__PURE__ */ jsx(CommandGroup, { children: suggestions.map((option) => /* @__PURE__ */ jsxs(\n CommandItem,\n {\n value: option,\n onMouseDown: (e) => e.preventDefault(),\n onSelect: (inputValue) => {\n setOpen(false);\n onSelect(inputValue ?? \"\");\n },\n children: [\n /* @__PURE__ */ jsx(Check, { className: \"mr-2 h-4 w-4 opacity-0\" }),\n option\n ]\n },\n option\n )) }) : /* @__PURE__ */ jsx(CommandEmpty, { children: \"No suggestions.\" }) })\n }\n )\n ] }) }) });\n};\nexport {\n AutoComplete\n};\n","import { Command as CommandPrimitive } from \"cmdk\";\nimport { Check } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { Input } from \"@c-rex/ui/input\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandList\n} from \"@c-rex/ui/command\";\nimport {\n Popover,\n PopoverAnchor,\n PopoverContent\n} from \"@c-rex/ui/popover\";\n\ntype Props = {\n initialValue: string;\n onSelect: (value: string) => void;\n onSearch: (value: string) => Promise<string[]>;\n};\n\nexport const AutoComplete = ({\n initialValue,\n onSearch,\n onSelect,\n}: Props) => {\n const [query, setQuery] = useState(initialValue);\n const [suggestions, setSuggestions] = useState<string[]>([]);\n\n const [open, setOpen] = useState(false);\n\n useEffect(() => {\n const debounceFetch = setTimeout(() => {\n if (query) {\n onSearch(query).then(setSuggestions);\n } else {\n setSuggestions([]);\n }\n }, 300);\n\n return () => clearTimeout(debounceFetch);\n }, [onSearch, query]);\n\n return (\n <div className=\"flex items-center\">\n <Popover open={open} onOpenChange={setOpen}>\n <Command shouldFilter={false}>\n <PopoverAnchor asChild>\n <CommandPrimitive.Input\n asChild\n value={query}\n onValueChange={setQuery}\n onKeyDown={(e) => setOpen(e.key !== \"Escape\")}\n onMouseDown={() => setOpen(false)}\n onFocus={() => setOpen(true)}\n >\n <Input />\n </CommandPrimitive.Input>\n </PopoverAnchor>\n\n {!open && <CommandList aria-hidden=\"true\" className=\"hidden\" />}\n\n <PopoverContent\n asChild\n onOpenAutoFocus={(e) => e.preventDefault()}\n onInteractOutside={(e) => {\n if (\n e.target instanceof Element &&\n e.target.hasAttribute(\"cmdk-input\")\n ) {\n e.preventDefault();\n }\n }}\n className=\"w-[--radix-popover-trigger-width] p-0\"\n >\n <CommandList>\n {/*isLoading && (\n <CommandPrimitive.Loading>\n <div className=\"p-1\">\n <Skeleton className=\"h-6 w-full\" />\n </div>\n </CommandPrimitive.Loading>\n )*/}\n\n {suggestions.length > 0 ? (\n <CommandGroup>\n {suggestions.map((option) => (\n <CommandItem\n key={option}\n value={option}\n onMouseDown={(e) => e.preventDefault()}\n onSelect={(inputValue) => {\n setOpen(false);\n onSelect(inputValue ?? \"\");\n }}\n >\n <Check className=\"mr-2 h-4 w-4 opacity-0\" />\n {option}\n </CommandItem>\n ))}\n </CommandGroup>\n ) : (\n <CommandEmpty>No suggestions.</CommandEmpty>\n )}\n </CommandList>\n </PopoverContent>\n </Command>\n </Popover>\n </div>\n );\n}\n"]}