@c-rex/components 0.0.9 → 0.0.11

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 (135) hide show
  1. package/package.json +29 -44
  2. package/src/autocomplete.tsx +113 -0
  3. package/src/blog-card.tsx +87 -0
  4. package/src/blur-image.tsx +23 -0
  5. package/src/breadcrumb.tsx +81 -0
  6. package/src/empty.tsx +13 -0
  7. package/src/navbar/navbar.tsx +69 -0
  8. package/src/navbar/sing-in-out-btns.tsx +29 -0
  9. package/src/providers/search-state-wrapper.tsx +21 -0
  10. package/src/result-list.tsx +16 -0
  11. package/src/result-view/blog-view.stories.tsx +58 -0
  12. package/src/result-view/blog.tsx +38 -0
  13. package/src/result-view/table-view.stories.tsx +55 -0
  14. package/src/result-view/table.tsx +65 -0
  15. package/src/sidebar.tsx +76 -0
  16. package/src/stories/blog-card.stories.tsx +46 -0
  17. package/src/stories/blur-image.stories.tsx +51 -0
  18. package/src/stories/breadcrumb.stories.tsx +52 -0
  19. package/src/stories/empty.stories.tsx +14 -0
  20. package/src/stories/navbar.stories.tsx +16 -0
  21. package/src/stories/sidebar.stories.tsx +94 -0
  22. package/dist/autocomplete.cjs.js +0 -215
  23. package/dist/autocomplete.cjs.js.map +0 -1
  24. package/dist/autocomplete.d.cts +0 -10
  25. package/dist/autocomplete.d.ts +0 -10
  26. package/dist/autocomplete.esm.js +0 -154
  27. package/dist/autocomplete.esm.js.map +0 -1
  28. package/dist/blog-card.cjs.js +0 -265
  29. package/dist/blog-card.cjs.js.map +0 -1
  30. package/dist/blog-card.d.cts +0 -19
  31. package/dist/blog-card.d.ts +0 -19
  32. package/dist/blog-card.esm.js +0 -192
  33. package/dist/blog-card.esm.js.map +0 -1
  34. package/dist/blur-image.cjs.js +0 -198
  35. package/dist/blur-image.cjs.js.map +0 -1
  36. package/dist/blur-image.d.cts +0 -7
  37. package/dist/blur-image.d.ts +0 -7
  38. package/dist/blur-image.esm.js +0 -125
  39. package/dist/blur-image.esm.js.map +0 -1
  40. package/dist/breadcrumb.cjs.js +0 -159
  41. package/dist/breadcrumb.cjs.js.map +0 -1
  42. package/dist/breadcrumb.d.cts +0 -10
  43. package/dist/breadcrumb.d.ts +0 -10
  44. package/dist/breadcrumb.esm.js +0 -98
  45. package/dist/breadcrumb.esm.js.map +0 -1
  46. package/dist/empty.cjs.js +0 -79
  47. package/dist/empty.cjs.js.map +0 -1
  48. package/dist/empty.d.cts +0 -5
  49. package/dist/empty.d.ts +0 -5
  50. package/dist/empty.esm.js +0 -18
  51. package/dist/empty.esm.js.map +0 -1
  52. package/dist/navbar.cjs.js +0 -134
  53. package/dist/navbar.cjs.js.map +0 -1
  54. package/dist/navbar.d.cts +0 -9
  55. package/dist/navbar.d.ts +0 -9
  56. package/dist/navbar.esm.js +0 -61
  57. package/dist/navbar.esm.js.map +0 -1
  58. package/dist/providers/search-state-wrapper.cjs.js +0 -113
  59. package/dist/providers/search-state-wrapper.cjs.js.map +0 -1
  60. package/dist/providers/search-state-wrapper.d.cts +0 -14
  61. package/dist/providers/search-state-wrapper.d.ts +0 -14
  62. package/dist/providers/search-state-wrapper.esm.js +0 -51
  63. package/dist/providers/search-state-wrapper.esm.js.map +0 -1
  64. package/dist/result-list.cjs.js +0 -321
  65. package/dist/result-list.cjs.js.map +0 -1
  66. package/dist/result-list.d.cts +0 -9
  67. package/dist/result-list.d.ts +0 -9
  68. package/dist/result-list.esm.js +0 -247
  69. package/dist/result-list.esm.js.map +0 -1
  70. package/dist/result-view/blog-view.stories.cjs.js +0 -372
  71. package/dist/result-view/blog-view.stories.cjs.js.map +0 -1
  72. package/dist/result-view/blog-view.stories.d.cts +0 -11
  73. package/dist/result-view/blog-view.stories.d.ts +0 -11
  74. package/dist/result-view/blog-view.stories.esm.js +0 -295
  75. package/dist/result-view/blog-view.stories.esm.js.map +0 -1
  76. package/dist/result-view/blog.cjs.js +0 -290
  77. package/dist/result-view/blog.cjs.js.map +0 -1
  78. package/dist/result-view/blog.d.cts +0 -9
  79. package/dist/result-view/blog.d.ts +0 -9
  80. package/dist/result-view/blog.esm.js +0 -220
  81. package/dist/result-view/blog.esm.js.map +0 -1
  82. package/dist/result-view/table-view.stories.cjs.js +0 -196
  83. package/dist/result-view/table-view.stories.cjs.js.map +0 -1
  84. package/dist/result-view/table-view.stories.d.cts +0 -11
  85. package/dist/result-view/table-view.stories.d.ts +0 -11
  86. package/dist/result-view/table-view.stories.esm.js +0 -131
  87. package/dist/result-view/table-view.stories.esm.js.map +0 -1
  88. package/dist/result-view/table.cjs.js +0 -116
  89. package/dist/result-view/table.cjs.js.map +0 -1
  90. package/dist/result-view/table.d.cts +0 -9
  91. package/dist/result-view/table.d.ts +0 -9
  92. package/dist/result-view/table.esm.js +0 -59
  93. package/dist/result-view/table.esm.js.map +0 -1
  94. package/dist/sidebar.cjs.js +0 -225
  95. package/dist/sidebar.cjs.js.map +0 -1
  96. package/dist/sidebar.d.cts +0 -12
  97. package/dist/sidebar.d.ts +0 -12
  98. package/dist/sidebar.esm.js +0 -164
  99. package/dist/sidebar.esm.js.map +0 -1
  100. package/dist/stories/blog-card.stories.cjs.js +0 -323
  101. package/dist/stories/blog-card.stories.cjs.js.map +0 -1
  102. package/dist/stories/blog-card.stories.d.cts +0 -9
  103. package/dist/stories/blog-card.stories.d.ts +0 -9
  104. package/dist/stories/blog-card.stories.esm.js +0 -242
  105. package/dist/stories/blog-card.stories.esm.js.map +0 -1
  106. package/dist/stories/blur-image.stories.cjs.js +0 -265
  107. package/dist/stories/blur-image.stories.cjs.js.map +0 -1
  108. package/dist/stories/blur-image.stories.d.cts +0 -37
  109. package/dist/stories/blur-image.stories.d.ts +0 -37
  110. package/dist/stories/blur-image.stories.esm.js +0 -180
  111. package/dist/stories/blur-image.stories.esm.js.map +0 -1
  112. package/dist/stories/breadcrumb.stories.cjs.js +0 -214
  113. package/dist/stories/breadcrumb.stories.cjs.js.map +0 -1
  114. package/dist/stories/breadcrumb.stories.d.cts +0 -9
  115. package/dist/stories/breadcrumb.stories.d.ts +0 -9
  116. package/dist/stories/breadcrumb.stories.esm.js +0 -145
  117. package/dist/stories/breadcrumb.stories.esm.js.map +0 -1
  118. package/dist/stories/empty.stories.cjs.js +0 -93
  119. package/dist/stories/empty.stories.cjs.js.map +0 -1
  120. package/dist/stories/empty.stories.d.cts +0 -13
  121. package/dist/stories/empty.stories.d.ts +0 -13
  122. package/dist/stories/empty.stories.esm.js +0 -28
  123. package/dist/stories/empty.stories.esm.js.map +0 -1
  124. package/dist/stories/navbar.stories.cjs.js +0 -151
  125. package/dist/stories/navbar.stories.cjs.js.map +0 -1
  126. package/dist/stories/navbar.stories.d.cts +0 -8
  127. package/dist/stories/navbar.stories.d.ts +0 -8
  128. package/dist/stories/navbar.stories.esm.js +0 -74
  129. package/dist/stories/navbar.stories.esm.js.map +0 -1
  130. package/dist/stories/sidebar.stories.cjs.js +0 -327
  131. package/dist/stories/sidebar.stories.cjs.js.map +0 -1
  132. package/dist/stories/sidebar.stories.d.cts +0 -30
  133. package/dist/stories/sidebar.stories.d.ts +0 -30
  134. package/dist/stories/sidebar.stories.esm.js +0 -258
  135. package/dist/stories/sidebar.stories.esm.js.map +0 -1
@@ -1,215 +0,0 @@
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
@@ -1 +0,0 @@
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"]}
@@ -1,10 +0,0 @@
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 };
@@ -1,10 +0,0 @@
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 };
@@ -1,154 +0,0 @@
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
@@ -1 +0,0 @@
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"]}