@vicinae/api 0.16.0 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/run.js CHANGED
@@ -3,7 +3,7 @@
3
3
  const { execute } = require("@oclif/core");
4
4
 
5
5
  const main = async () => {
6
- await execute({ dir: __filename });
6
+ await execute({ dir: __filename });
7
7
  };
8
8
 
9
9
  main();
package/dist/api/ai.d.ts CHANGED
@@ -65,8 +65,8 @@ export declare namespace AI {
65
65
  Anthropic_Claude_Opus = "anthropic-claude-opus",
66
66
  Anthropic_Claude_Sonnet = "anthropic-claude-sonnet",
67
67
  MixtraL_8x7B = "mixtral-8x7b",
68
- "Mistral_Nemo" = "mistral-nemo",
69
- "Mistral_Large2" = "mistral-large-2",
68
+ Mistral_Nemo = "mistral-nemo",
69
+ Mistral_Large2 = "mistral-large-2",
70
70
  Llama3_70B = "llama3-70b",
71
71
  "Llama3.1_70B" = "llama3.1-70b",
72
72
  "Llama3.1_8B" = "llama3.1-8b",
package/dist/api/ai.js CHANGED
@@ -33,7 +33,7 @@ var AI;
33
33
  * ```
34
34
  */
35
35
  function ask(prompt, options) {
36
- throw new Error('not implemented');
36
+ throw new Error("not implemented");
37
37
  }
38
38
  AI.ask = ask;
39
39
  /**
@@ -77,6 +77,6 @@ var AI;
77
77
  Model["OpenAI_GPT3.5-turbo"] = "openai-gpt-3.5-turbo";
78
78
  })(Model = AI.Model || (AI.Model = {}));
79
79
  AI.getModels = async () => {
80
- throw new Error('not implemented');
80
+ throw new Error("not implemented");
81
81
  };
82
82
  })(AI || (exports.AI = AI = {}));
package/dist/api/bus.d.ts CHANGED
@@ -94,11 +94,11 @@ declare class Bus {
94
94
  };
95
95
  emit(action: string, data: Record<string, any>): void;
96
96
  sendMessage(message: ipc.ExtensionMessage): void;
97
- addEventHandler(cb: EventListenerInfo['callback']): {
97
+ addEventHandler(cb: EventListenerInfo["callback"]): {
98
98
  id: string;
99
99
  unsubscribe: () => void;
100
100
  };
101
- replaceEventHandler(id: string, handler: EventListenerInfo['callback']): void;
101
+ replaceEventHandler(id: string, handler: EventListenerInfo["callback"]): void;
102
102
  removeEventHandler(id: string): void;
103
103
  private request2;
104
104
  }
package/dist/api/cache.js CHANGED
@@ -58,7 +58,7 @@ class Cache {
58
58
  * @remarks You can use this method to check for entries without affecting the LRU access.
59
59
  */
60
60
  has = (key) => {
61
- return typeof this.index.keys[key] !== 'undefined';
61
+ return typeof this.index.keys[key] !== "undefined";
62
62
  };
63
63
  /**
64
64
  * @returns whether the cache is empty.
@@ -80,7 +80,7 @@ class Cache {
80
80
  let newTotalSize = this.index.size + data.length - (info?.size ?? 0);
81
81
  if (newTotalSize > this.capacity) {
82
82
  this.popLRU();
83
- return this.set(key, data); // FIXME: get rid of recursion
83
+ return this.set(key, data); // FIXME: get rid of recursion
84
84
  }
85
85
  this.index.size = newTotalSize;
86
86
  this.index.keys[key] = { size: data.length };
@@ -131,22 +131,22 @@ class Cache {
131
131
  return this.dataPath(this.keyHash(key));
132
132
  }
133
133
  readKeyData(key) {
134
- return (0, node_fs_1.readFileSync)(this.keyDataPath(key), 'utf8');
134
+ return (0, node_fs_1.readFileSync)(this.keyDataPath(key), "utf8");
135
135
  }
136
136
  writeKeyData(key, data) {
137
137
  (0, node_fs_1.writeFileSync)(this.keyDataPath(key), data);
138
138
  }
139
139
  keyHash(key) {
140
- return (0, node_crypto_1.hash)('md5', key);
140
+ return (0, node_crypto_1.hash)("md5", key);
141
141
  }
142
142
  get dataDir() {
143
- return node_path_1.default.join(this.storageDir, 'data');
143
+ return node_path_1.default.join(this.storageDir, "data");
144
144
  }
145
145
  dataPath(id) {
146
146
  return node_path_1.default.join(this.dataDir, id);
147
147
  }
148
148
  get indexPath() {
149
- return node_path_1.default.join(this.storageDir, 'index.json');
149
+ return node_path_1.default.join(this.storageDir, "index.json");
150
150
  }
151
151
  updateLRU(key) {
152
152
  const idx = this.index.lru.findIndex((entry) => key == entry.key);
@@ -172,7 +172,12 @@ class Cache {
172
172
  return true;
173
173
  }
174
174
  initIndex() {
175
- const index = { revision: this.revision, keys: {}, size: 0, lru: [] };
175
+ const index = {
176
+ revision: this.revision,
177
+ keys: {},
178
+ size: 0,
179
+ lru: [],
180
+ };
176
181
  (0, node_fs_1.mkdirSync)(this.dataDir, { recursive: true });
177
182
  const indexPath = node_path_1.default.join(this.storageDir, "index.json");
178
183
  (0, node_fs_1.writeFileSync)(indexPath, JSON.stringify(index, null, 2));
@@ -182,7 +187,7 @@ class Cache {
182
187
  const indexPath = node_path_1.default.join(this.storageDir, "index.json");
183
188
  if (!(0, node_fs_1.existsSync)(indexPath))
184
189
  return null;
185
- return JSON.parse((0, node_fs_1.readFileSync)(indexPath, 'utf8'));
190
+ return JSON.parse((0, node_fs_1.readFileSync)(indexPath, "utf8"));
186
191
  }
187
192
  removeCacheDirectory() {
188
193
  (0, node_fs_1.rmSync)(this.dataDir, { recursive: true, force: true });
@@ -199,7 +204,7 @@ class Cache {
199
204
  * If we want to change the way the data is stored we just change this,
200
205
  * which will force a full cache clear and use the new format.
201
206
  */
202
- revision = '1';
207
+ revision = "1";
203
208
  capacity;
204
209
  subscribers = [];
205
210
  storageDir;
@@ -56,7 +56,7 @@ var Clipboard;
56
56
  * ```
57
57
  */
58
58
  async function read(options) {
59
- const res = await bus_1.bus.turboRequest('clipboard.readContent', {});
59
+ const res = await bus_1.bus.turboRequest("clipboard.readContent", {});
60
60
  return res.unwrap().content;
61
61
  }
62
62
  Clipboard.read = read;
@@ -79,7 +79,7 @@ var Clipboard;
79
79
  * Clear the current clipboard content.
80
80
  */
81
81
  async function clear() {
82
- await bus_1.bus.turboRequest('clipboard.clear', {});
82
+ await bus_1.bus.turboRequest("clipboard.clear", {});
83
83
  }
84
84
  Clipboard.clear = clear;
85
85
  })(Clipboard || (exports.Clipboard = Clipboard = {}));
@@ -10,8 +10,8 @@ const bus_1 = require("./bus");
10
10
  */
11
11
  async function updateCommandMetadata(metadata) {
12
12
  const payload = {};
13
- if (Object.prototype.hasOwnProperty.call(metadata, 'subtitle')) {
13
+ if (Object.prototype.hasOwnProperty.call(metadata, "subtitle")) {
14
14
  payload.subtitle = metadata.subtitle ?? undefined;
15
15
  }
16
- await bus_1.bus.turboRequest('command.updateCommandMetadata', payload);
16
+ await bus_1.bus.turboRequest("command.updateCommandMetadata", payload);
17
17
  }
@@ -13,7 +13,7 @@ const ActionPanelSection = (props) => {
13
13
  return ((0, jsx_runtime_1.jsx)("action-panel-section", { ...nativeProps, children: props.children }));
14
14
  };
15
15
  const ActionPannelSubmenu = ({ children, ...props }) => {
16
- return ((0, jsx_runtime_1.jsx)("action-panel-submenu", { ...props, children: children }));
16
+ return (0, jsx_runtime_1.jsx)("action-panel-submenu", { ...props, children: children });
17
17
  };
18
18
  exports.ActionPanel = Object.assign(ActionPanelRoot, {
19
19
  Section: ActionPanelSection,
@@ -4,6 +4,7 @@ import { ImageLike } from "../image";
4
4
  import { Keyboard } from "../keyboard";
5
5
  import { Application } from "../utils";
6
6
  import { Form } from "./form";
7
+ import { Icon } from "../icon";
7
8
  export type BaseActionProps = {
8
9
  title: string;
9
10
  icon?: ImageLike;
@@ -43,6 +44,16 @@ export type ActionSubmitFormProps = Omit<BaseActionProps, "title"> & {
43
44
  onSubmit: (input: Form.Values) => boolean | void | Promise<boolean | void>;
44
45
  title?: string;
45
46
  };
47
+ export type Quicklink = {
48
+ name?: string;
49
+ link: string;
50
+ application?: string | Application;
51
+ icon?: Icon;
52
+ };
53
+ export type ActionCreateQuicklinkProps = Omit<BaseActionProps, "title"> & {
54
+ title?: string;
55
+ quicklink: Quicklink;
56
+ };
46
57
  export declare const Action: React.FC<ActionProps> & {
47
58
  CopyToClipboard: React.FC<CopyToClipboardProps>;
48
59
  Push: React.FC<ActionPushProps>;
@@ -50,6 +61,7 @@ export declare const Action: React.FC<ActionProps> & {
50
61
  Paste: React.FC<ActionPasteProps>;
51
62
  SubmitForm: React.FC<ActionSubmitFormProps>;
52
63
  OpenInBrowser: React.FC<ActionOpenInBrowserProps>;
64
+ CreateQuicklink: React.FC<ActionCreateQuicklinkProps>;
53
65
  Style: {
54
66
  Regular: "regular";
55
67
  Destructive: "destructive";
@@ -45,7 +45,24 @@ const SubmitForm = ({ title = "Submit", ...props }) => {
45
45
  const nativeProps = {
46
46
  ...props,
47
47
  title,
48
- onAction: () => { }
48
+ onAction: () => { },
49
+ };
50
+ return (0, jsx_runtime_1.jsx)("action", { ...nativeProps });
51
+ };
52
+ const CreateQuicklink = ({ title = "Create Quicklink", quicklink, ...props }) => {
53
+ const nativeProps = {
54
+ ...props,
55
+ title,
56
+ type: "create-quicklink",
57
+ quicklink: {
58
+ link: quicklink.link,
59
+ name: quicklink.name,
60
+ application: typeof quicklink.application === "string"
61
+ ? quicklink.application
62
+ : quicklink.application?.name,
63
+ icon: quicklink.icon,
64
+ },
65
+ onAction: () => { },
49
66
  };
50
67
  return (0, jsx_runtime_1.jsx)("action", { ...nativeProps });
51
68
  };
@@ -56,6 +73,7 @@ exports.Action = Object.assign(ActionRoot, {
56
73
  Paste,
57
74
  SubmitForm,
58
75
  OpenInBrowser,
76
+ CreateQuicklink,
59
77
  Style: {
60
78
  Regular: "regular",
61
79
  Destructive: "destructive",
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Dropdown = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const DropdownRoot = ({ children, ...props }) => {
6
- return ((0, jsx_runtime_1.jsx)("dropdown", { ...props, children: children }));
6
+ return (0, jsx_runtime_1.jsx)("dropdown", { ...props, children: children });
7
7
  };
8
8
  const Item = ({ title, value, icon }) => {
9
- return ((0, jsx_runtime_1.jsx)("dropdown-item", { title: title, value: value, icon: icon }));
9
+ return (0, jsx_runtime_1.jsx)("dropdown-item", { title: title, value: value, icon: icon });
10
10
  };
11
11
  const Section = ({ title, children }) => {
12
12
  return (0, jsx_runtime_1.jsx)("dropdown-section", { title: title, children: children });
@@ -110,5 +110,9 @@ export declare const Form: import("react").FC<FormProps> & {
110
110
  };
111
111
  FilePicker: import("react").FC<FilePickerProps>;
112
112
  Separator: () => import("react/jsx-runtime").JSX.Element;
113
+ LinkAccessory: ({ target, text }: {
114
+ target: string;
115
+ text: string;
116
+ }) => import("react/jsx-runtime").JSX.Element;
113
117
  };
114
118
  export {};
@@ -8,14 +8,14 @@ const wrapFormItemProps = (props) => {
8
8
  return {
9
9
  ...props,
10
10
  onFocus: () => props.onFocus?.({
11
- type: 'focus',
11
+ type: "focus",
12
12
  target: {
13
13
  id: props.id,
14
14
  value: (props.value ?? props.defaultValue),
15
15
  },
16
16
  }),
17
17
  onBlur: () => props.onBlur?.({
18
- type: 'blur',
18
+ type: "blur",
19
19
  target: {
20
20
  id: props.id,
21
21
  value: (props.value ?? props.defaultValue),
@@ -30,7 +30,7 @@ const FormRoot = ({ enableDrafts = false, actions, children, isLoading = false,
30
30
  };
31
31
  const TextField = ({ ref, ...props }) => {
32
32
  (0, use_imperative_form_handle_1.useImperativeFormHandle)(ref);
33
- return ((0, jsx_runtime_1.jsx)("text-field", { ...wrapFormItemProps(props) }));
33
+ return (0, jsx_runtime_1.jsx)("text-field", { ...wrapFormItemProps(props) });
34
34
  };
35
35
  const PasswordField = ({ ref, ...props }) => {
36
36
  (0, use_imperative_form_handle_1.useImperativeFormHandle)(ref);
@@ -42,7 +42,7 @@ const DatePicker = ({ ref, ...props }) => {
42
42
  };
43
43
  const Checkbox = ({ ref, ...props }) => {
44
44
  (0, use_imperative_form_handle_1.useImperativeFormHandle)(ref);
45
- return ((0, jsx_runtime_1.jsx)("checkbox-field", { ...wrapFormItemProps(props) }));
45
+ return (0, jsx_runtime_1.jsx)("checkbox-field", { ...wrapFormItemProps(props) });
46
46
  };
47
47
  //FIXME: we probably need to reuse the existing dropdown in
48
48
  // a smarter way.
@@ -53,7 +53,7 @@ const DropdownRoot = ({ ref, children, ...props }) => {
53
53
  };
54
54
  const Dropdown = Object.assign(DropdownRoot, {
55
55
  Item: dropdown_1.Dropdown.Item,
56
- Section: dropdown_1.Dropdown.Section
56
+ Section: dropdown_1.Dropdown.Section,
57
57
  });
58
58
  const TagPickerRoot = ({ children, ...props }) => {
59
59
  return ((0, jsx_runtime_1.jsx)("tag-picker-field", { ...wrapFormItemProps(props), children: children }));
@@ -62,15 +62,15 @@ const TagPickerItem = ({ icon, ...props }) => {
62
62
  return (0, jsx_runtime_1.jsx)("tag-picker-item", { ...props, icon: icon });
63
63
  };
64
64
  const TagPicker = Object.assign(TagPickerRoot, {
65
- Item: TagPickerItem
65
+ Item: TagPickerItem,
66
66
  });
67
67
  const TextArea = ({ ref, ...props }) => {
68
68
  (0, use_imperative_form_handle_1.useImperativeFormHandle)(ref);
69
- return ((0, jsx_runtime_1.jsx)("text-area-field", { ...wrapFormItemProps(props) }));
69
+ return (0, jsx_runtime_1.jsx)("text-area-field", { ...wrapFormItemProps(props) });
70
70
  };
71
71
  const FilePicker = ({ ref, ...props }) => {
72
72
  (0, use_imperative_form_handle_1.useImperativeFormHandle)(ref);
73
- return ((0, jsx_runtime_1.jsx)("file-picker-field", { ...wrapFormItemProps(props) }));
73
+ return (0, jsx_runtime_1.jsx)("file-picker-field", { ...wrapFormItemProps(props) });
74
74
  };
75
75
  const Description = (props) => {
76
76
  return (0, jsx_runtime_1.jsx)("form-description", { ...props });
@@ -86,4 +86,5 @@ exports.Form = Object.assign(FormRoot, {
86
86
  TagPicker,
87
87
  FilePicker,
88
88
  Separator: () => (0, jsx_runtime_1.jsx)("separator", {}),
89
+ LinkAccessory: ({ target, text }) => ((0, jsx_runtime_1.jsx)("link-accessory", { target: target, text: text })),
89
90
  });
@@ -54,7 +54,7 @@ export declare namespace Grid {
54
54
  export type Fit = GridFit;
55
55
  export type Inset = GridInset;
56
56
  export type ItemSize = GridItemSize;
57
- export type AspectRatio = "1" | "3/2" | "2/3" | "4/3" | "3/4" | "16/9" | "9/16" | '21/9' | '9/21' | '32/9' | '9/32';
57
+ export type AspectRatio = "1" | "3/2" | "2/3" | "4/3" | "3/4" | "16/9" | "9/16" | "21/9" | "9/21" | "32/9" | "9/32";
58
58
  export namespace Item {
59
59
  export type Props = {
60
60
  title?: string;
@@ -24,17 +24,17 @@ var GridItemSize;
24
24
  GridItemSize["Large"] = "large";
25
25
  })(GridItemSize || (GridItemSize = {}));
26
26
  const aspectRatioMap = {
27
- '1': 1,
28
- '3/2': 3 / 2,
29
- '2/3': 2 / 3,
30
- '4/3': 4 / 3,
31
- '3/4': 3 / 4,
32
- '16/9': 16 / 9,
33
- '9/16': 9 / 16,
34
- '21/9': 21 / 9,
35
- '9/21': 9 / 21,
36
- '32/9': 32 / 9,
37
- '9/32': 9 / 32
27
+ "1": 1,
28
+ "3/2": 3 / 2,
29
+ "2/3": 2 / 3,
30
+ "4/3": 4 / 3,
31
+ "3/4": 3 / 4,
32
+ "16/9": 16 / 9,
33
+ "9/16": 9 / 16,
34
+ "21/9": 21 / 9,
35
+ "9/21": 9 / 21,
36
+ "32/9": 32 / 9,
37
+ "9/32": 9 / 32,
38
38
  };
39
39
  var GridFit;
40
40
  (function (GridFit) {
@@ -67,10 +67,10 @@ const popToRootProtoMap = {
67
67
  * @see closeWindow
68
68
  */
69
69
  const showHUD = async (title, options) => {
70
- bus_1.bus.turboRequest('ui.showHud', {
70
+ bus_1.bus.turboRequest("ui.showHud", {
71
71
  text: title,
72
72
  clearRootSearch: options?.clearRootSearch ?? false,
73
- popToRoot: popToRootProtoMap[options?.popToRootType ?? PopToRootType.Default]
73
+ popToRoot: popToRootProtoMap[options?.popToRootType ?? PopToRootType.Default],
74
74
  });
75
75
  };
76
76
  exports.showHUD = showHUD;
@@ -82,7 +82,7 @@ const closeMainWindow = async (options = {}) => {
82
82
  const { clearRootSearch = false, popToRootType = PopToRootType.Default } = options;
83
83
  await bus_1.bus.turboRequest("ui.closeMainWindow", {
84
84
  clearRootSearch,
85
- popToRoot: popToRootProtoMap[popToRootType]
85
+ popToRoot: popToRootProtoMap[popToRootType],
86
86
  });
87
87
  };
88
88
  exports.closeMainWindow = closeMainWindow;
@@ -107,6 +107,8 @@ exports.getSelectedText = getSelectedText;
107
107
  * Pop to the root of the navigation stack, optionally clearing the search bar.
108
108
  */
109
109
  const popToRoot = async (options) => {
110
- await bus_1.bus.turboRequest('ui.popToRoot', { clearSearchBar: options?.clearSearchBar ?? false });
110
+ await bus_1.bus.turboRequest("ui.popToRoot", {
111
+ clearSearchBar: options?.clearSearchBar ?? false,
112
+ });
111
113
  };
112
114
  exports.popToRoot = popToRoot;
@@ -1,4 +1,4 @@
1
- import { FileInfo as ProtoFileInfo } from './proto/file-search';
1
+ import { FileInfo as ProtoFileInfo } from "./proto/file-search";
2
2
  /**
3
3
  * Access Vicinae's built-in file search functionality.
4
4
  *
@@ -24,22 +24,22 @@ export declare namespace FileSearch {
24
24
  type SearchOptions = {};
25
25
  type FileInfo = ProtoFileInfo;
26
26
  /**
27
- * Search for files matching the provided query string.
28
- *
29
- * @param query - Search term (min. 1 character) - the shorter the query the longer the average search takes.
30
- * @param options - Search configuration options
31
- * @returns Promise resolving to array of matching files
32
- *
33
- * @remarks
34
- * Uses prefix matching on filename tokens. For example:
35
- * - File: "invoice-new-motherboard.pdf"
36
- * - Matches: "inv", "new", "mother", "pdf"
37
- * - No match: "board", "oice" (not prefixes)
38
- *
39
- * @example
40
- * ```typescript
41
- * const files = await fileSearch.search('invoice');
42
- * ```
43
- */
27
+ * Search for files matching the provided query string.
28
+ *
29
+ * @param query - Search term (min. 1 character) - the shorter the query the longer the average search takes.
30
+ * @param options - Search configuration options
31
+ * @returns Promise resolving to array of matching files
32
+ *
33
+ * @remarks
34
+ * Uses prefix matching on filename tokens. For example:
35
+ * - File: "invoice-new-motherboard.pdf"
36
+ * - Matches: "inv", "new", "mother", "pdf"
37
+ * - No match: "board", "oice" (not prefixes)
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const files = await fileSearch.search('invoice');
42
+ * ```
43
+ */
44
44
  function search(query: string, _?: FileSearch.SearchOptions): Promise<FileSearch.FileInfo[]>;
45
45
  }
@@ -23,27 +23,26 @@ const bus_1 = require("./bus");
23
23
  var FileSearch;
24
24
  (function (FileSearch) {
25
25
  /**
26
- * Search for files matching the provided query string.
27
- *
28
- * @param query - Search term (min. 1 character) - the shorter the query the longer the average search takes.
29
- * @param options - Search configuration options
30
- * @returns Promise resolving to array of matching files
31
- *
32
- * @remarks
33
- * Uses prefix matching on filename tokens. For example:
34
- * - File: "invoice-new-motherboard.pdf"
35
- * - Matches: "inv", "new", "mother", "pdf"
36
- * - No match: "board", "oice" (not prefixes)
37
- *
38
- * @example
39
- * ```typescript
40
- * const files = await fileSearch.search('invoice');
41
- * ```
42
- */
26
+ * Search for files matching the provided query string.
27
+ *
28
+ * @param query - Search term (min. 1 character) - the shorter the query the longer the average search takes.
29
+ * @param options - Search configuration options
30
+ * @returns Promise resolving to array of matching files
31
+ *
32
+ * @remarks
33
+ * Uses prefix matching on filename tokens. For example:
34
+ * - File: "invoice-new-motherboard.pdf"
35
+ * - Matches: "inv", "new", "mother", "pdf"
36
+ * - No match: "board", "oice" (not prefixes)
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const files = await fileSearch.search('invoice');
41
+ * ```
42
+ */
43
43
  async function search(query, _ = {}) {
44
- const res = await bus_1.bus.turboRequest('fileSearch.search', { query });
44
+ const res = await bus_1.bus.turboRequest("fileSearch.search", { query });
45
45
  return res.unwrap().files;
46
46
  }
47
47
  FileSearch.search = search;
48
48
  })(FileSearch || (exports.FileSearch = FileSearch = {}));
49
- ;
@@ -2,7 +2,7 @@ export type KeyEquivalent = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i"
2
2
  export type KeyModifier = "cmd" | "ctrl" | "opt" | "shift";
3
3
  export declare namespace Keyboard {
4
4
  namespace Shortcut {
5
- type Common = 'copy' | 'copy-deeplink' | 'copy-name' | 'copy-path' | 'save' | 'duplicate' | 'edit' | 'move-down' | 'move-up' | 'new' | 'open' | 'open-with' | 'pin' | 'refresh' | 'remove' | 'remove-all';
5
+ type Common = "copy" | "copy-deeplink" | "copy-name" | "copy-path" | "save" | "duplicate" | "edit" | "move-down" | "move-up" | "new" | "open" | "open-with" | "pin" | "refresh" | "remove" | "remove-all";
6
6
  const Common: {
7
7
  Copy: string;
8
8
  CopyDeeplink: string;
@@ -7,23 +7,21 @@ var Keyboard;
7
7
  (function (Shortcut) {
8
8
  Shortcut.Common = {
9
9
  Copy: "copy",
10
- CopyDeeplink: 'copy',
11
- CopyName: 'copy',
12
- CopyPath: 'copy',
13
- Save: 'save',
14
- Duplicate: 'duplicate',
15
- Edit: 'edit',
16
- MoveDown: 'move-down',
17
- MoveUp: 'move-up',
18
- New: 'new',
19
- Open: 'open',
20
- OpenWith: 'open-with',
21
- Pin: 'pin',
22
- Refresh: 'refresh',
23
- Remove: 'remove',
24
- RemoveAll: 'remove-all',
10
+ CopyDeeplink: "copy",
11
+ CopyName: "copy",
12
+ CopyPath: "copy",
13
+ Save: "save",
14
+ Duplicate: "duplicate",
15
+ Edit: "edit",
16
+ MoveDown: "move-down",
17
+ MoveUp: "move-up",
18
+ New: "new",
19
+ Open: "open",
20
+ OpenWith: "open-with",
21
+ Pin: "pin",
22
+ Refresh: "refresh",
23
+ Remove: "remove",
24
+ RemoveAll: "remove-all",
25
25
  };
26
26
  })(Shortcut = Keyboard.Shortcut || (Keyboard.Shortcut = {}));
27
- ;
28
27
  })(Keyboard || (exports.Keyboard = Keyboard = {}));
29
- ;
@@ -6,6 +6,12 @@ const Ok = (data) => {
6
6
  };
7
7
  exports.Ok = Ok;
8
8
  const Err = (error) => {
9
- return { ok: false, error, unwrap: () => { throw error; } };
9
+ return {
10
+ ok: false,
11
+ error,
12
+ unwrap: () => {
13
+ throw error;
14
+ },
15
+ };
10
16
  };
11
17
  exports.Err = Err;
@@ -8,10 +8,10 @@ const getPreferenceValues = () => {
8
8
  };
9
9
  exports.getPreferenceValues = getPreferenceValues;
10
10
  const openExtensionPreferences = async () => {
11
- console.error('openExtensionPreferences is not implemented');
11
+ console.error("openExtensionPreferences is not implemented");
12
12
  };
13
13
  exports.openExtensionPreferences = openExtensionPreferences;
14
14
  const openCommandPreferences = async () => {
15
- console.error('openCommandPreferences is not implemented');
15
+ console.error("openCommandPreferences is not implemented");
16
16
  };
17
17
  exports.openCommandPreferences = openCommandPreferences;
package/dist/api/utils.js CHANGED
@@ -41,7 +41,7 @@ const getApplications = async (target) => {
41
41
  };
42
42
  exports.getApplications = getApplications;
43
43
  const getDefaultApplication = async (path) => {
44
- const res = await bus_1.bus.turboRequest('app.getDefault', { target: path });
44
+ const res = await bus_1.bus.turboRequest("app.getDefault", { target: path });
45
45
  const app = res.unwrap().app;
46
46
  if (!app)
47
47
  throw new Error(`No default application for target ${path}`);
@@ -1,5 +1,5 @@
1
- import { Application } from './proto/application';
2
- import * as wm from './proto/wm';
1
+ import { Application } from "./proto/application";
2
+ import * as wm from "./proto/wm";
3
3
  /**
4
4
  * Access Vicinae's window management features.
5
5
  *
@@ -7,7 +7,7 @@ const transformWorkspace = (proto) => {
7
7
  id: proto.id,
8
8
  name: proto.name,
9
9
  active: proto.active,
10
- monitorId: proto.monitor
10
+ monitorId: proto.monitor,
11
11
  };
12
12
  };
13
13
  const transformWindow = (proto) => {
@@ -15,8 +15,11 @@ const transformWindow = (proto) => {
15
15
  id: proto.id,
16
16
  workspaceId: proto.workspaceId,
17
17
  active: proto.active,
18
- bounds: { position: { x: proto.x, y: proto.y }, size: { width: proto.width, height: proto.height } },
19
- application: proto.app
18
+ bounds: {
19
+ position: { x: proto.x, y: proto.y },
20
+ size: { width: proto.width, height: proto.height },
21
+ },
22
+ application: proto.app,
20
23
  };
21
24
  };
22
25
  /**
@@ -38,22 +41,22 @@ const transformWindow = (proto) => {
38
41
  var WindowManagement;
39
42
  (function (WindowManagement) {
40
43
  async function ping() {
41
- const res = await bus_1.bus.turboRequest('wm.ping', {});
44
+ const res = await bus_1.bus.turboRequest("wm.ping", {});
42
45
  return res.unwrap().ok;
43
46
  }
44
47
  WindowManagement.ping = ping;
45
48
  async function getWindows(options = {}) {
46
- const res = await bus_1.bus.turboRequest('wm.getWindows', options);
49
+ const res = await bus_1.bus.turboRequest("wm.getWindows", options);
47
50
  return res.unwrap().windows.map(transformWindow);
48
51
  }
49
52
  WindowManagement.getWindows = getWindows;
50
53
  async function getActiveWorkspace() {
51
- const res = await bus_1.bus.turboRequest('wm.getActiveWorkspace', {});
54
+ const res = await bus_1.bus.turboRequest("wm.getActiveWorkspace", {});
52
55
  return transformWorkspace(res.unwrap().workspace);
53
56
  }
54
57
  WindowManagement.getActiveWorkspace = getActiveWorkspace;
55
58
  async function getWorkspaces() {
56
- const res = await bus_1.bus.turboRequest('wm.getWorkspaces', {});
59
+ const res = await bus_1.bus.turboRequest("wm.getWorkspaces", {});
57
60
  return res.unwrap().workspaces.map(transformWorkspace);
58
61
  }
59
62
  WindowManagement.getWorkspaces = getWorkspaces;
@@ -63,13 +66,12 @@ var WindowManagement;
63
66
  }
64
67
  WindowManagement.getWindowsOnActiveWorkspace = getWindowsOnActiveWorkspace;
65
68
  async function setWindowBounds(payload) {
66
- await bus_1.bus.turboRequest('wm.setWindowBounds', payload);
69
+ await bus_1.bus.turboRequest("wm.setWindowBounds", payload);
67
70
  }
68
71
  WindowManagement.setWindowBounds = setWindowBounds;
69
72
  async function getActiveWindow() {
70
- const res = await bus_1.bus.turboRequest('wm.getActiveWindow', {});
73
+ const res = await bus_1.bus.turboRequest("wm.getActiveWindow", {});
71
74
  return transformWindow(res.unwrap().window);
72
75
  }
73
76
  WindowManagement.getActiveWindow = getActiveWindow;
74
77
  })(WindowManagement || (exports.WindowManagement = WindowManagement = {}));
75
- ;
@@ -94,16 +94,18 @@ class Develop extends core_1.Command {
94
94
  };
95
95
  const build = async (outDir) => {
96
96
  /*
97
- logger.logInfo("Started type checking in background thread");
98
- typeCheck().then(({ error, ok }) => {
99
- if (!ok) {
100
- logger.logInfo(`Type checking error: ${error}`);
101
- }
102
-
103
- logger.logInfo("Done type checking");
104
- });
105
- */
106
- const entryPoints = manifest.commands.map((cmd) => (0, node_path_1.join)("src", `${cmd.name}.tsx`)).filter(node_fs_1.existsSync);
97
+ logger.logInfo("Started type checking in background thread");
98
+ typeCheck().then(({ error, ok }) => {
99
+ if (!ok) {
100
+ logger.logInfo(`Type checking error: ${error}`);
101
+ }
102
+
103
+ logger.logInfo("Done type checking");
104
+ });
105
+ */
106
+ const entryPoints = manifest.commands
107
+ .map((cmd) => (0, node_path_1.join)("src", `${cmd.name}.tsx`))
108
+ .filter(node_fs_1.existsSync);
107
109
  logger.logInfo(`entrypoints [${entryPoints.join(", ")}]`);
108
110
  const promises = manifest.commands.map((cmd) => {
109
111
  const base = (0, node_path_1.join)(process.cwd(), "src", `${cmd.name}`);
@@ -190,7 +192,7 @@ class Develop extends core_1.Command {
190
192
  ignoreInitial: true,
191
193
  })
192
194
  .on("all", async (_, path) => {
193
- if (path.endsWith('package.json')) {
195
+ if (path.endsWith("package.json")) {
194
196
  manifest = parseManifest();
195
197
  }
196
198
  logger.logEvent(`changed file ${path}`);
@@ -194,7 +194,8 @@ exports.default = zod_1.z.object({
194
194
  .any()
195
195
  .describe("Extensions can contribute preferences that are shown in Vicinae Preferences > Extensions. You can use preferences for configuration values and passwords or personal access tokens.")
196
196
  .optional(),
197
- categories: zod_1.z.array(zod_1.z.enum([
197
+ categories: zod_1.z
198
+ .array(zod_1.z.enum([
198
199
  "Applications",
199
200
  "Communication",
200
201
  "Data",
@@ -209,8 +210,9 @@ exports.default = zod_1.z.object({
209
210
  "Security",
210
211
  "System",
211
212
  "Web",
212
- "Other"
213
- ])).optional(),
213
+ "Other",
214
+ ]))
215
+ .optional(),
214
216
  contributors: zod_1.z
215
217
  .array(zod_1.z
216
218
  .string()
package/package.json CHANGED
@@ -1,78 +1,75 @@
1
1
  {
2
- "name": "@vicinae/api",
3
- "version": "0.16.0",
4
- "description": "TypeScript SDK to build Vicinae extensions",
5
- "scripts": {
6
- "test": "echo \"Error: no test specified\" && exit 1",
7
- "build": "tsc --outDir dist",
8
- "protogen": "mkdir -p ./src/api/proto && protoc --plugin=./node_modules/.bin/protoc-gen-ts_proto -I../../proto ../../proto/*.proto --ts_proto_out ./src/api/proto",
9
- "pack": "npm run build && npm pack",
10
- "docgen-html": "typedoc src/api/index.ts",
11
- "docgen-md": "typedoc src/api/index.ts --disableSources --readme none --plugin typedoc-plugin-markdown --out ./docs"
12
- },
13
- "bin": {
14
- "vici": "./bin/run.js"
15
- },
16
- "files": [
17
- "dist",
18
- "types"
19
- ],
20
- "keywords": [],
21
- "author": "",
22
- "license": "ISC",
23
- "types": [
24
- "./dist/index.d.ts"
25
- ],
26
- "publishConfig": {
27
- "access": "public"
28
- },
29
- "main": "dist/index.js",
30
- "dependencies": {
31
- "@jgoz/esbuild-plugin-typecheck": "^4.0.3",
32
- "@oclif/core": "^4",
33
- "@oclif/plugin-help": "^6",
34
- "@oclif/plugin-plugins": "^5",
35
- "@types/node": ">=18",
36
- "@types/react": "19.0.10",
37
- "chalk": "^5.6.0",
38
- "chokidar": "^4.0.3",
39
- "esbuild": "^0.25.2",
40
- "react": "19.0.0",
41
- "zod": "^4.0.17"
42
- },
43
- "peerDependencies": {
44
- "@types/node": ">=18",
45
- "@types/react": "19.0.10"
46
- },
47
- "devDependencies": {
48
- "@bufbuild/protobuf": "^2.7.0",
49
- "@eslint/compat": "^1",
50
- "@oclif/prettier-config": "^0.2.1",
51
- "@oclif/test": "^4",
52
- "@types/chai": "^4",
53
- "@types/mocha": "^10",
54
- "chai": "^4",
55
- "eslint": "^9",
56
- "eslint-config-oclif": "^6",
57
- "eslint-config-prettier": "^10",
58
- "mocha": "^10",
59
- "oclif": "^4",
60
- "shx": "^0.3.3",
61
- "ts-node": "^10",
62
- "ts-proto": "^2.7.5",
63
- "typedoc": "^0.28.13",
64
- "typedoc-plugin-markdown": "^4.8.1",
65
- "typescript": "^5"
66
- },
67
- "oclif": {
68
- "bin": "vici",
69
- "dirname": "vici",
70
- "commands": "./dist/commands",
71
- "plugins": [
72
- "@oclif/plugin-help"
73
- ],
74
- "topicSeparator": " ",
75
- "topics": {}
76
- },
77
- "repository": "vicinaehq/vicinae"
2
+ "name": "@vicinae/api",
3
+ "version": "0.16.1",
4
+ "description": "TypeScript SDK to build Vicinae extensions",
5
+ "scripts": {
6
+ "test": "echo \"Error: no test specified\" && exit 1",
7
+ "build": "tsc --outDir dist",
8
+ "protogen": "mkdir -p ./src/api/proto && protoc --plugin=./node_modules/.bin/protoc-gen-ts_proto -I../../proto ../../proto/*.proto --ts_proto_out ./src/api/proto",
9
+ "pack": "npm run build && npm pack",
10
+ "docgen-html": "typedoc src/api/index.ts",
11
+ "docgen-md": "typedoc src/api/index.ts --disableSources --readme none --plugin typedoc-plugin-markdown --out ./docs",
12
+ "format": "biome format --write"
13
+ },
14
+ "bin": {
15
+ "vici": "./bin/run.js"
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "types"
20
+ ],
21
+ "keywords": [],
22
+ "author": "",
23
+ "license": "ISC",
24
+ "types": [
25
+ "./dist/index.d.ts"
26
+ ],
27
+ "publishConfig": {
28
+ "access": "public"
29
+ },
30
+ "main": "dist/index.js",
31
+ "dependencies": {
32
+ "@jgoz/esbuild-plugin-typecheck": "^4.0.3",
33
+ "@oclif/core": "^4",
34
+ "@oclif/plugin-help": "^6",
35
+ "@oclif/plugin-plugins": "^5",
36
+ "@types/node": ">=18",
37
+ "@types/react": "19.0.10",
38
+ "chalk": "^5.6.0",
39
+ "chokidar": "^4.0.3",
40
+ "esbuild": "^0.25.2",
41
+ "react": "19.0.0",
42
+ "zod": "^4.0.17"
43
+ },
44
+ "peerDependencies": {
45
+ "@types/node": ">=18",
46
+ "@types/react": "19.0.10"
47
+ },
48
+ "devDependencies": {
49
+ "@biomejs/biome": "2.3.2",
50
+ "@bufbuild/protobuf": "^2.7.0",
51
+ "@oclif/test": "^4",
52
+ "@types/chai": "^4",
53
+ "@types/mocha": "^10",
54
+ "chai": "^4",
55
+ "mocha": "^10",
56
+ "oclif": "^4",
57
+ "shx": "^0.3.3",
58
+ "ts-node": "^10",
59
+ "ts-proto": "^2.7.5",
60
+ "typedoc": "^0.28.13",
61
+ "typedoc-plugin-markdown": "^4.8.1",
62
+ "typescript": "^5"
63
+ },
64
+ "oclif": {
65
+ "bin": "vici",
66
+ "dirname": "vici",
67
+ "commands": "./dist/commands",
68
+ "plugins": [
69
+ "@oclif/plugin-help"
70
+ ],
71
+ "topicSeparator": " ",
72
+ "topics": {}
73
+ },
74
+ "repository": "vicinaehq/vicinae"
78
75
  }
package/types/jsx.d.ts CHANGED
@@ -1,190 +1,197 @@
1
1
  import * as React from "react";
2
-
2
+
3
3
  import type { ListItemDetailProps } from "../api/components/list";
4
4
  import { ImageLike } from "../api/image";
5
5
  import { SerializedColorLike } from "../api/color";
6
6
  import { Keyboard } from "../api/keyboard";
7
7
  import { Grid } from "../api/components/grid";
8
8
 
9
- import 'react';
10
- import { ImageLike, List } from "../src";
9
+ import "react";
10
+ import type { Application, Quicklink } from "../src";
11
11
 
12
12
  type BaseFormField = {
13
- onBlur?: Function;
14
- onFocus?: Function;
15
- onChange?: Function;
13
+ onBlur?: Function;
14
+ onFocus?: Function;
15
+ onChange?: Function;
16
16
  };
17
17
 
18
18
  declare module "react" {
19
- namespace JSX {
20
- interface IntrinsicElements {
21
- detail: {
22
- navigationTitle?: string;
23
- markdown: string;
24
- };
25
- list: {
26
- children?: React.ReactNode;
27
- filtering?: boolean;
28
- isLoading?: boolean;
29
- isShowingDetail?: boolean;
30
- searchBarPlaceholder?: string;
31
- navigationTitle?: string;
32
- onSearchTextChange?: (text: string) => void;
33
- onSelectionChange?: (selectedItemId: string) => void;
34
- };
35
- "list-section": {
36
- title?: string;
37
- subtitle?: string;
38
- children?: React.ReactNode;
39
- };
40
- "list-item": {
41
- title: string;
42
- id?: string;
43
- subtitle?: string;
44
- icon?: ImageLike;
45
- keywords?: string[];
46
- children?: ReactNode;
47
- };
48
- "list-item-detail": ListItemDetailProps;
49
- "list-item-detail-metadata": any;
19
+ namespace JSX {
20
+ interface IntrinsicElements {
21
+ detail: {
22
+ navigationTitle?: string;
23
+ markdown: string;
24
+ };
25
+ list: {
26
+ children?: React.ReactNode;
27
+ filtering?: boolean;
28
+ isLoading?: boolean;
29
+ isShowingDetail?: boolean;
30
+ searchBarPlaceholder?: string;
31
+ navigationTitle?: string;
32
+ onSearchTextChange?: (text: string) => void;
33
+ onSelectionChange?: (selectedItemId: string) => void;
34
+ };
35
+ "list-section": {
36
+ title?: string;
37
+ subtitle?: string;
38
+ children?: React.ReactNode;
39
+ };
40
+ "list-item": {
41
+ title: string;
42
+ id?: string;
43
+ subtitle?: string;
44
+ icon?: ImageLike;
45
+ keywords?: string[];
46
+ children?: ReactNode;
47
+ };
48
+ "list-item-detail": ListItemDetailProps;
49
+ "list-item-detail-metadata": any;
50
50
 
51
- grid: {
52
- inset?: Grid.Inset;
53
- columns?: number;
54
- fit: Grid.Fit;
55
- aspectRatio: Grid.AspectRatio;
51
+ grid: {
52
+ inset?: Grid.Inset;
53
+ columns?: number;
54
+ fit: Grid.Fit;
55
+ aspectRatio: Grid.AspectRatio;
56
56
 
57
- children?: React.ReactNode;
58
- filtering?: boolean;
59
- isLoading?: boolean;
60
- isShowingDetail?: boolean;
61
- searchBarPlaceholder?: string;
62
- navigationTitle?: string;
63
- onSearchTextChange?: (text: string) => void;
64
- onSelectionChange?: (selectedItemId: string) => void;
65
- };
66
- "grid-section": {
67
- inset?: Grid.Inset;
68
- columns?: number;
69
- fit?: Grid.Fit;
70
- aspectRatio?: Grid.AspectRatio;
57
+ children?: React.ReactNode;
58
+ filtering?: boolean;
59
+ isLoading?: boolean;
60
+ isShowingDetail?: boolean;
61
+ searchBarPlaceholder?: string;
62
+ navigationTitle?: string;
63
+ onSearchTextChange?: (text: string) => void;
64
+ onSelectionChange?: (selectedItemId: string) => void;
65
+ };
66
+ "grid-section": {
67
+ inset?: Grid.Inset;
68
+ columns?: number;
69
+ fit?: Grid.Fit;
70
+ aspectRatio?: Grid.AspectRatio;
71
71
 
72
- title?: string;
73
- subtitle?: string;
74
- children?: React.ReactNode;
75
- };
76
- "grid-item": {
77
- title?: string;
78
- id?: string;
79
- subtitle?: string;
80
- content?: ImageLike | { color: ColorLike } | { value: ImageLike, tooltip?: string };
81
- keywords?: string[];
82
- children?: ReactNode;
83
- };
72
+ title?: string;
73
+ subtitle?: string;
74
+ children?: React.ReactNode;
75
+ };
76
+ "grid-item": {
77
+ title?: string;
78
+ id?: string;
79
+ subtitle?: string;
80
+ content?:
81
+ | ImageLike
82
+ | { color: ColorLike }
83
+ | { value: ImageLike; tooltip?: string };
84
+ keywords?: string[];
85
+ children?: ReactNode;
86
+ };
84
87
 
85
- "empty-view": {
86
- description?: string;
87
- title?: string;
88
- icon?: ImageLike;
89
- };
90
- metadata: {
91
- children?: React.ReactNode;
92
- };
93
- "metadata-label": {
94
- title: string;
95
- text: string;
96
- icon?: ImageLike;
97
- };
98
- "metadata-separator": {};
99
- "metadata-link": {
100
- title: string;
101
- target: string;
102
- text: string;
103
- };
104
- "action-panel": {
105
- title?: string;
106
- children?: React.ReactNode;
107
- };
108
- "action-panel-submenu": {
109
- title: string;
110
- icon?: ImageLike;
111
- onOpen?: () => void;
112
- onSearchTextChange?: (text: string) => void;
113
- children?: React.ReactNode;
114
- };
115
- "action-panel-section": {
116
- title?: string;
117
- children?: React.ReactNode;
118
- };
119
- action: {
120
- title: string;
121
- onAction: () => void;
122
- onSubmit?: Function;
123
- shortcut?: Keyboard.Shortcut;
124
- icon?: ImageLike;
125
- autoFocus?: boolean;
126
- };
127
- "tag-list": {
128
- title?: string;
129
- children?: React.ReactNode;
130
- };
131
- "tag-item": {
132
- color?: SerializedColorLike;
133
- icon?: ImageLike;
134
- text?: string;
135
- onAction?: () => void;
136
- };
137
- form: {
138
- enableDrafts: boolean;
139
- isLoading: boolean;
140
- navigationTitle?: string;
141
- children?: React.ReactNode;
142
- };
143
- "text-field": BaseFormField & {};
144
- "tag-picker-field": BaseFormField & {},
145
- "tag-picker-item": {
146
- title: string;
147
- value: string;
148
- icon?: ImageLike;
149
- },
150
- "text-area-field": BaseFormField & {
151
- }
152
- "file-picker-field": BaseFormField & {
153
- }
154
- "dropdown-field": BaseFormField & {
155
- children?: ReactNode;
156
- };
157
- "date-picker-field": {};
158
- "checkbox-field": BaseFormField & {};
159
- "password-field": {};
160
- "textarea-field": {};
88
+ "empty-view": {
89
+ description?: string;
90
+ title?: string;
91
+ icon?: ImageLike;
92
+ };
93
+ metadata: {
94
+ children?: React.ReactNode;
95
+ };
96
+ "metadata-label": {
97
+ title: string;
98
+ text: string;
99
+ icon?: ImageLike;
100
+ };
101
+ "metadata-separator": {};
102
+ "metadata-link": {
103
+ title: string;
104
+ target: string;
105
+ text: string;
106
+ };
107
+ "action-panel": {
108
+ title?: string;
109
+ children?: React.ReactNode;
110
+ };
111
+ "action-panel-submenu": {
112
+ title: string;
113
+ icon?: ImageLike;
114
+ onOpen?: () => void;
115
+ onSearchTextChange?: (text: string) => void;
116
+ children?: React.ReactNode;
117
+ };
118
+ "action-panel-section": {
119
+ title?: string;
120
+ children?: React.ReactNode;
121
+ };
122
+ action: {
123
+ title: string;
124
+ onAction: () => void;
125
+ onSubmit?: Function;
126
+ shortcut?: Keyboard.Shortcut;
127
+ icon?: ImageLike;
128
+ autoFocus?: boolean;
129
+ type?: string;
130
+ quicklink?: Quicklink;
131
+ };
132
+ "tag-list": {
133
+ title?: string;
134
+ children?: React.ReactNode;
135
+ };
136
+ "tag-item": {
137
+ color?: SerializedColorLike;
138
+ icon?: ImageLike;
139
+ text?: string;
140
+ onAction?: () => void;
141
+ };
142
+ form: {
143
+ enableDrafts: boolean;
144
+ isLoading: boolean;
145
+ navigationTitle?: string;
146
+ children?: React.ReactNode;
147
+ };
148
+ "link-accessory": {
149
+ target: string;
150
+ text: string;
151
+ };
152
+ "text-field": BaseFormField & {};
153
+ "tag-picker-field": BaseFormField & {};
154
+ "tag-picker-item": {
155
+ title: string;
156
+ value: string;
157
+ icon?: ImageLike;
158
+ };
159
+ "text-area-field": BaseFormField & {};
160
+ "file-picker-field": BaseFormField & {};
161
+ "dropdown-field": BaseFormField & {
162
+ children?: ReactNode;
163
+ };
164
+ "date-picker-field": {};
165
+ "checkbox-field": BaseFormField & {};
166
+ "password-field": {};
167
+ "textarea-field": {};
161
168
 
162
- dropdown: {
163
- onChange?: Function;
164
- onSearchTextChange?: (text: string) => void;
165
- children?: ReactNode;
166
- };
167
- "dropdown-section": {
168
- title?: string;
169
- children: ReactNode;
170
- };
171
- "dropdown-item": {
172
- title: string;
173
- value: string;
174
- icon?: ImageLike;
175
- keywords?: string[];
176
- };
169
+ dropdown: {
170
+ onChange?: Function;
171
+ onSearchTextChange?: (text: string) => void;
172
+ children?: ReactNode;
173
+ };
174
+ "dropdown-section": {
175
+ title?: string;
176
+ children: ReactNode;
177
+ };
178
+ "dropdown-item": {
179
+ title: string;
180
+ value: string;
181
+ icon?: ImageLike;
182
+ keywords?: string[];
183
+ };
177
184
 
178
- "form-description": {
179
- title?: string;
180
- text: string;
181
- }
185
+ "form-description": {
186
+ title?: string;
187
+ text: string;
188
+ };
182
189
 
183
- separator: {};
184
- "menu-bar": {};
185
- "menu-bar-item": {};
186
- "menu-bar-submenu": {};
187
- "menu-bar-section": {};
188
- }
189
- }
190
+ separator: {};
191
+ "menu-bar": {};
192
+ "menu-bar-item": {};
193
+ "menu-bar-submenu": {};
194
+ "menu-bar-section": {};
195
+ }
196
+ }
190
197
  }