@hubspot/ui-extensions 0.0.1-prealpha.4 → 0.0.1-prealpha.5

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.
@@ -0,0 +1,142 @@
1
+ import type { AlertProps, ButtonProps, ButtonRowProps, CardProps, DescriptionListProps, DescriptionListItemProps, DividerProps, FormProps, HeadingProps, ImageProps, InputProps, LoadingSpinnerProps, ProgressBarProps, SelectProps, TagProps, TextProps, TileProps, StackProps, StatisticsProps, StatisticsItemProps, StatisticsTrendProps, TableProps, TableElementProps } from './types';
2
+ declare const Alert: "Alert" & {
3
+ readonly type?: "Alert" | undefined;
4
+ readonly props?: AlertProps | undefined;
5
+ readonly children?: true | undefined;
6
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"Alert", AlertProps, true>>;
7
+ declare const Button: "Button" & {
8
+ readonly type?: "Button" | undefined;
9
+ readonly props?: ButtonProps | undefined;
10
+ readonly children?: true | undefined;
11
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"Button", ButtonProps, true>>;
12
+ declare const ButtonRow: "ButtonRow" & {
13
+ readonly type?: "ButtonRow" | undefined;
14
+ readonly props?: ButtonRowProps | undefined;
15
+ readonly children?: true | undefined;
16
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"ButtonRow", ButtonRowProps, true>>;
17
+ declare const Card: "Card" & {
18
+ readonly type?: "Card" | undefined;
19
+ readonly props?: CardProps | undefined;
20
+ readonly children?: true | undefined;
21
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"Card", CardProps, true>>;
22
+ declare const DescriptionList: "DescriptionList" & {
23
+ readonly type?: "DescriptionList" | undefined;
24
+ readonly props?: DescriptionListProps | undefined;
25
+ readonly children?: true | undefined;
26
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"DescriptionList", DescriptionListProps, true>>;
27
+ declare const DescriptionListItem: "DescriptionListItem" & {
28
+ readonly type?: "DescriptionListItem" | undefined;
29
+ readonly props?: DescriptionListItemProps | undefined;
30
+ readonly children?: true | undefined;
31
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"DescriptionListItem", DescriptionListItemProps, true>>;
32
+ declare const Divider: "Divider" & {
33
+ readonly type?: "Divider" | undefined;
34
+ readonly props?: DividerProps | undefined;
35
+ readonly children?: true | undefined;
36
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"Divider", DividerProps, true>>;
37
+ declare const Form: "Form" & {
38
+ readonly type?: "Form" | undefined;
39
+ readonly props?: FormProps | undefined;
40
+ readonly children?: true | undefined;
41
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"Form", FormProps, true>>;
42
+ declare const Heading: "Heading" & {
43
+ readonly type?: "Heading" | undefined;
44
+ readonly props?: HeadingProps | undefined;
45
+ readonly children?: true | undefined;
46
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"Heading", HeadingProps, true>>;
47
+ declare const Image: "Image" & {
48
+ readonly type?: "Image" | undefined;
49
+ readonly props?: ImageProps | undefined;
50
+ readonly children?: true | undefined;
51
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"Image", ImageProps, true>>;
52
+ declare const Input: "Input" & {
53
+ readonly type?: "Input" | undefined;
54
+ readonly props?: InputProps | undefined;
55
+ readonly children?: true | undefined;
56
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"Input", InputProps, true>>;
57
+ declare const LoadingSpinner: "LoadingSpinner" & {
58
+ readonly type?: "LoadingSpinner" | undefined;
59
+ readonly props?: LoadingSpinnerProps | undefined;
60
+ readonly children?: true | undefined;
61
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"LoadingSpinner", LoadingSpinnerProps, true>>;
62
+ declare const ProgressBar: "ProgressBar" & {
63
+ readonly type?: "ProgressBar" | undefined;
64
+ readonly props?: ProgressBarProps | undefined;
65
+ readonly children?: true | undefined;
66
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"ProgressBar", ProgressBarProps, true>>;
67
+ declare const Select: "Select" & {
68
+ readonly type?: "Select" | undefined;
69
+ readonly props?: SelectProps | undefined;
70
+ readonly children?: true | undefined;
71
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"Select", SelectProps, true>>;
72
+ declare const Tag: "Tag" & {
73
+ readonly type?: "Tag" | undefined;
74
+ readonly props?: TagProps | undefined;
75
+ readonly children?: true | undefined;
76
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"Tag", TagProps, true>>;
77
+ declare const Text: "Text" & {
78
+ readonly type?: "Text" | undefined;
79
+ readonly props?: TextProps | undefined;
80
+ readonly children?: true | undefined;
81
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"Text", TextProps, true>>;
82
+ declare const Tile: "Tile" & {
83
+ readonly type?: "Tile" | undefined;
84
+ readonly props?: TileProps | undefined;
85
+ readonly children?: true | undefined;
86
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"Tile", TileProps, true>>;
87
+ declare const Stack: "Stack" & {
88
+ readonly type?: "Stack" | undefined;
89
+ readonly props?: StackProps | undefined;
90
+ readonly children?: true | undefined;
91
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"Stack", StackProps, true>>;
92
+ declare const StatisticsItem: "StatisticsItem" & {
93
+ readonly type?: "StatisticsItem" | undefined;
94
+ readonly props?: StatisticsItemProps | undefined;
95
+ readonly children?: true | undefined;
96
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"StatisticsItem", StatisticsItemProps, true>>;
97
+ declare const Statistics: "Statistics" & {
98
+ readonly type?: "Statistics" | undefined;
99
+ readonly props?: StatisticsProps | undefined;
100
+ readonly children?: true | undefined;
101
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"Statistics", StatisticsProps, true>>;
102
+ declare const StatisticsTrend: "StatisticsTrend" & {
103
+ readonly type?: "StatisticsTrend" | undefined;
104
+ readonly props?: StatisticsTrendProps | undefined;
105
+ readonly children?: true | undefined;
106
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"StatisticsTrend", StatisticsTrendProps, true>>;
107
+ declare const Table: "Table" & {
108
+ readonly type?: "Table" | undefined;
109
+ readonly props?: TableProps | undefined;
110
+ readonly children?: true | undefined;
111
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"Table", TableProps, true>>;
112
+ declare const TableFooter: "TableFooter" & {
113
+ readonly type?: "TableFooter" | undefined;
114
+ readonly props?: TableElementProps | undefined;
115
+ readonly children?: true | undefined;
116
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"TableFooter", TableElementProps, true>>;
117
+ declare const TableCell: "TableCell" & {
118
+ readonly type?: "TableCell" | undefined;
119
+ readonly props?: TableElementProps | undefined;
120
+ readonly children?: true | undefined;
121
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"TableCell", TableElementProps, true>>;
122
+ declare const TableRow: "TableRow" & {
123
+ readonly type?: "TableRow" | undefined;
124
+ readonly props?: TableElementProps | undefined;
125
+ readonly children?: true | undefined;
126
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"TableRow", TableElementProps, true>>;
127
+ declare const TableBody: "TableBody" & {
128
+ readonly type?: "TableBody" | undefined;
129
+ readonly props?: TableElementProps | undefined;
130
+ readonly children?: true | undefined;
131
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"TableBody", TableElementProps, true>>;
132
+ declare const TableHeader: "TableHeader" & {
133
+ readonly type?: "TableHeader" | undefined;
134
+ readonly props?: TableElementProps | undefined;
135
+ readonly children?: true | undefined;
136
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"TableHeader", TableElementProps, true>>;
137
+ declare const TableHead: "TableHead" & {
138
+ readonly type?: "TableHead" | undefined;
139
+ readonly props?: TableElementProps | undefined;
140
+ readonly children?: true | undefined;
141
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"TableHead", TableElementProps, true>>;
142
+ export { Alert, Button, ButtonRow, Card, DescriptionList, DescriptionListItem, Divider, Form, Heading, Image, Input, LoadingSpinner, ProgressBar, Select, Stack, Statistics, StatisticsItem, StatisticsTrend, Table, TableFooter, TableCell, TableRow, TableBody, TableHeader, TableHead, Tag, Text, Tile, };
@@ -0,0 +1,30 @@
1
+ import { createRemoteReactComponent } from '@remote-ui/react';
2
+ const Alert = createRemoteReactComponent('Alert');
3
+ const Button = createRemoteReactComponent('Button');
4
+ const ButtonRow = createRemoteReactComponent('ButtonRow');
5
+ const Card = createRemoteReactComponent('Card');
6
+ const DescriptionList = createRemoteReactComponent('DescriptionList');
7
+ const DescriptionListItem = createRemoteReactComponent('DescriptionListItem');
8
+ const Divider = createRemoteReactComponent('Divider');
9
+ const Form = createRemoteReactComponent('Form');
10
+ const Heading = createRemoteReactComponent('Heading');
11
+ const Image = createRemoteReactComponent('Image');
12
+ const Input = createRemoteReactComponent('Input');
13
+ const LoadingSpinner = createRemoteReactComponent('LoadingSpinner');
14
+ const ProgressBar = createRemoteReactComponent('ProgressBar');
15
+ const Select = createRemoteReactComponent('Select');
16
+ const Tag = createRemoteReactComponent('Tag');
17
+ const Text = createRemoteReactComponent('Text');
18
+ const Tile = createRemoteReactComponent('Tile');
19
+ const Stack = createRemoteReactComponent('Stack');
20
+ const StatisticsItem = createRemoteReactComponent('StatisticsItem');
21
+ const Statistics = createRemoteReactComponent('Statistics');
22
+ const StatisticsTrend = createRemoteReactComponent('StatisticsTrend');
23
+ const Table = createRemoteReactComponent('Table');
24
+ const TableFooter = createRemoteReactComponent('TableFooter');
25
+ const TableCell = createRemoteReactComponent('TableCell');
26
+ const TableRow = createRemoteReactComponent('TableRow');
27
+ const TableBody = createRemoteReactComponent('TableBody');
28
+ const TableHeader = createRemoteReactComponent('TableHeader');
29
+ const TableHead = createRemoteReactComponent('TableHead');
30
+ export { Alert, Button, ButtonRow, Card, DescriptionList, DescriptionListItem, Divider, Form, Heading, Image, Input, LoadingSpinner, ProgressBar, Select, Stack, Statistics, StatisticsItem, StatisticsTrend, Table, TableFooter, TableCell, TableRow, TableBody, TableHeader, TableHead, Tag, Text, Tile, };
@@ -0,0 +1,7 @@
1
+ import { CrmPropertyListProps } from '../types';
2
+ declare const CrmPropertyList: "CrmPropertyList" & {
3
+ readonly type?: "CrmPropertyList" | undefined;
4
+ readonly props?: CrmPropertyListProps | undefined;
5
+ readonly children?: true | undefined;
6
+ } & import("@remote-ui/react").ReactComponentTypeFromRemoteComponentType<import("@remote-ui/types").RemoteComponentType<"CrmPropertyList", CrmPropertyListProps, true>>;
7
+ export { CrmPropertyList };
@@ -0,0 +1,3 @@
1
+ import { createExtensionComponent } from '../utils/createExtensionComponent';
2
+ const CrmPropertyList = createExtensionComponent('CrmPropertyList');
3
+ export { CrmPropertyList };
@@ -0,0 +1,2 @@
1
+ import { CrmPropertyList } from './components';
2
+ export { CrmPropertyList };
@@ -0,0 +1,2 @@
1
+ import { CrmPropertyList } from './components';
2
+ export { CrmPropertyList };
@@ -0,0 +1,7 @@
1
+ import { ReactElement } from 'react';
2
+ import type { ExtensionPoints, ExtensionPointApi } from './types';
3
+ export declare const hubspot: {
4
+ extend: typeof render;
5
+ };
6
+ declare function render<ExtensionPointName extends keyof ExtensionPoints>(renderCallback: (api: ExtensionPointApi<ExtensionPointName>) => ReactElement<any>): any;
7
+ export {};
@@ -0,0 +1,17 @@
1
+ /* eslint-disable hubspot-dev/no-confusing-browser-globals */
2
+ import { createRoot } from '@remote-ui/react';
3
+ import { isValidElement } from 'react';
4
+ export const hubspot = {
5
+ extend: render,
6
+ };
7
+ const extend = (...args) => self.extend(...args);
8
+ function render(renderCallback) {
9
+ return extend((root, api) => {
10
+ const renderCallbackResult = renderCallback(api);
11
+ if (!isValidElement(renderCallbackResult)) {
12
+ throw new Error(`[hubspot.extend]: Expected callback function to return a valid element, got: ${renderCallbackResult}`);
13
+ }
14
+ createRoot(root).render(renderCallbackResult);
15
+ root.mount();
16
+ });
17
+ }
@@ -0,0 +1,3 @@
1
+ export { Alert, Button, ButtonRow, Card, DescriptionList, DescriptionListItem, Divider, Form, Heading, Image, Input, LoadingSpinner, ProgressBar, Select, Stack, Statistics, StatisticsItem, StatisticsTrend, Table, TableFooter, TableCell, TableRow, TableBody, TableHeader, TableHead, Tag, Text, Tile, } from './coreComponents';
2
+ export { hubspot } from './hubspot';
3
+ export * from './types';
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { Alert, Button, ButtonRow, Card, DescriptionList, DescriptionListItem, Divider, Form, Heading, Image, Input, LoadingSpinner, ProgressBar, Select, Stack, Statistics, StatisticsItem, StatisticsTrend, Table, TableFooter, TableCell, TableRow, TableBody, TableHeader, TableHead, Tag, Text, Tile, } from './coreComponents';
2
+ export { hubspot } from './hubspot';
3
+ export * from './types';
@@ -0,0 +1,263 @@
1
+ import { ReactNode, ComponentType } from 'react';
2
+ export interface AlertProps {
3
+ title: string;
4
+ body?: string;
5
+ children?: ReactNode;
6
+ variant?: 'info' | 'warning' | 'success' | 'error' | 'danger';
7
+ }
8
+ export interface ButtonProps {
9
+ text: string;
10
+ onClick?: () => void;
11
+ href?: string;
12
+ disabled?: boolean;
13
+ variant?: 'primary' | 'secondary' | 'destructive';
14
+ type?: 'button' | 'reset' | 'submit';
15
+ }
16
+ export interface ButtonRowProps {
17
+ children: ReactNode;
18
+ disableDropdown?: boolean;
19
+ }
20
+ export interface CardProps {
21
+ children: ReactNode;
22
+ }
23
+ export interface DescriptionListItemProps {
24
+ children: ReactNode;
25
+ label: string;
26
+ }
27
+ export interface DescriptionListProps {
28
+ children: ReactNode;
29
+ direction?: 'row' | 'column';
30
+ }
31
+ export interface DividerProps {
32
+ distance?: 'flush' | 'extra-small' | 'small' | 'medium' | 'large' | 'extra-large';
33
+ }
34
+ export interface FormProps {
35
+ children: ReactNode;
36
+ onSubmit?: () => void;
37
+ preventDefault?: boolean;
38
+ }
39
+ export interface HeadingProps {
40
+ text: string;
41
+ format?: 'plaintext' | 'markdown';
42
+ }
43
+ export interface ImageProps {
44
+ alt?: string;
45
+ href?: string;
46
+ onClick?: () => void;
47
+ src: string;
48
+ width?: number;
49
+ }
50
+ export interface InputProps {
51
+ label: string;
52
+ name: string;
53
+ value?: string;
54
+ required?: boolean;
55
+ readonly?: boolean;
56
+ description?: string;
57
+ tooltip?: string;
58
+ placeholder?: string;
59
+ error?: boolean;
60
+ validationMessage?: string;
61
+ onChange: (value: string) => void;
62
+ onInput: (value: string) => void;
63
+ }
64
+ export interface ProgressBarProps {
65
+ title?: string;
66
+ showPercentage?: boolean;
67
+ value?: number;
68
+ valueMax?: number;
69
+ valueDescription?: string;
70
+ variant?: 'success' | 'danger' | 'warning';
71
+ }
72
+ export interface SelectProps {
73
+ label: string;
74
+ name: string;
75
+ value?: string | number | boolean;
76
+ required?: boolean;
77
+ readonly?: boolean;
78
+ description?: string;
79
+ tooltip?: string;
80
+ placeholder?: string;
81
+ error?: boolean;
82
+ validationMessage?: string;
83
+ onChange?: (value: SelectProps['value']) => void;
84
+ options: {
85
+ label: string;
86
+ value: string | number | boolean;
87
+ }[];
88
+ }
89
+ export interface TagProps {
90
+ text: string;
91
+ onClick?: () => void;
92
+ variant?: 'default' | 'warning' | 'success' | 'error';
93
+ }
94
+ export interface TextProps {
95
+ format?: 'plaintext' | 'markdown';
96
+ text: string;
97
+ variant?: 'bodytext' | 'microcopy';
98
+ }
99
+ export interface TileProps {
100
+ children: ReactNode;
101
+ flush?: boolean;
102
+ }
103
+ interface Team {
104
+ id: number;
105
+ name: string;
106
+ teammates: number[];
107
+ }
108
+ export interface UserContext {
109
+ id: number;
110
+ emails: string[];
111
+ email: string;
112
+ firstName: string;
113
+ lastName: string;
114
+ roles: string[];
115
+ teams: Team[];
116
+ locale?: string;
117
+ }
118
+ export interface PortalContext {
119
+ id: number;
120
+ timezone: string;
121
+ }
122
+ export interface Context {
123
+ user: UserContext;
124
+ portal: PortalContext;
125
+ }
126
+ type distanceOptions = 'flush' | 'small';
127
+ export interface StackProps {
128
+ distance?: distanceOptions;
129
+ children?: React.ReactNode;
130
+ }
131
+ export interface StatisticsTrendProps {
132
+ value: string;
133
+ direction: 'increase' | 'decrease';
134
+ }
135
+ export interface StatisticsItemProps {
136
+ id?: string;
137
+ label: string;
138
+ number: string;
139
+ children: ReactNode;
140
+ }
141
+ export interface StatisticsProps {
142
+ children: ReactNode;
143
+ }
144
+ export interface CrmPropertyListProps {
145
+ properties: string[];
146
+ direction?: string;
147
+ }
148
+ export interface ServerlessRunnerParams {
149
+ name: string;
150
+ payload: Record<string, unknown>;
151
+ onError?: () => void;
152
+ }
153
+ export type ServerlessFuncRunner = (params: ServerlessRunnerParams) => Promise<any>;
154
+ export interface ServerlessSuccessResponse {
155
+ logId: string;
156
+ response: {
157
+ message?: {
158
+ type: 'SUCCESS' | 'ERROR';
159
+ body: string;
160
+ } | string;
161
+ context?: Record<string, unknown>;
162
+ section?: Record<string, unknown>;
163
+ };
164
+ }
165
+ export interface ServerlessErrorResponse {
166
+ responseJSON?: {
167
+ message: string;
168
+ correlationId: string;
169
+ category: string;
170
+ subCategory?: string;
171
+ errors?: {
172
+ message: string;
173
+ subCategory: string;
174
+ }[];
175
+ };
176
+ status: number;
177
+ }
178
+ export interface ExtensionCardContextData {
179
+ cardId: string;
180
+ appId: number | string;
181
+ objectId: number | string;
182
+ objectTypeId: string;
183
+ location: keyof ExtensionPoints;
184
+ }
185
+ export type ExtensionPointAction = (...args: any[]) => Promise<any> | void;
186
+ export interface ExtensionPointContract {
187
+ actions?: {
188
+ [k: string]: ExtensionPointAction;
189
+ } | {};
190
+ customComponents: Record<string, ComponentType<any>>;
191
+ }
192
+ type AlertType = 'info' | 'warning' | 'success' | 'danger' | 'tip' | undefined;
193
+ export type AddAlertAction = (args: {
194
+ type?: AlertType;
195
+ message: string;
196
+ }) => void;
197
+ export type ReloadPageAction = () => void;
198
+ export type FetchCrmObjectPropertiesAction = (properties: string[]) => Promise<{
199
+ name: string;
200
+ value: string;
201
+ }[]>;
202
+ export type OpenIframeModalAction = (action: OpenIframeActionPayload) => void;
203
+ export interface CrmMiddleExtensionPoint extends ExtensionPointContract {
204
+ actions: {
205
+ addAlert: AddAlertAction;
206
+ reloadPage: ReloadPageAction;
207
+ fetchCrmObjectProperties: FetchCrmObjectPropertiesAction;
208
+ openIframeModal: OpenIframeModalAction;
209
+ };
210
+ customComponents: {
211
+ CrmPropertyList?: ComponentType<CrmPropertyListProps>;
212
+ };
213
+ }
214
+ interface CrmSidebarExtensionPoint extends ExtensionPointContract {
215
+ actions: {
216
+ reloadPage: ReloadPageAction;
217
+ };
218
+ }
219
+ interface RemotePlaygroundExtensionPoint extends ExtensionPointContract {
220
+ actions: {
221
+ warn: () => void;
222
+ };
223
+ customComponents: {
224
+ ExampleCrmComponent: ComponentType<ExampleCrmComponentProps>;
225
+ };
226
+ }
227
+ export interface ExtensionPoints {
228
+ 'uie.playground.middle': RemotePlaygroundExtensionPoint;
229
+ 'crm.record.tab': CrmMiddleExtensionPoint;
230
+ 'crm.record.sidebar': CrmSidebarExtensionPoint;
231
+ }
232
+ export interface ExampleCrmComponentProps {
233
+ name: string;
234
+ size: 'sm' | 'md' | 'lg';
235
+ count: number;
236
+ }
237
+ export interface ExtensionPointApi<ExtensionPointName extends keyof ExtensionPoints> {
238
+ context: Context;
239
+ runServerlessFunction: ServerlessFuncRunner;
240
+ actions: ExtensionPoints[ExtensionPointName]['actions'];
241
+ customComponents: string[];
242
+ }
243
+ interface OpenIframeActionPayload {
244
+ uri: string;
245
+ height: number;
246
+ width: number;
247
+ associatedObjectProperties?: string[];
248
+ }
249
+ export interface LoadingSpinnerProps {
250
+ label: string;
251
+ showLabel?: boolean;
252
+ size?: 'xs' | 'sm' | 'md';
253
+ layout?: 'inline' | 'centered';
254
+ grow?: boolean;
255
+ }
256
+ export interface TableElementProps {
257
+ children: React.ReactNode;
258
+ }
259
+ export interface TableProps extends TableElementProps {
260
+ flush?: boolean;
261
+ bordered?: boolean;
262
+ }
263
+ export {};
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { RemoteComponentType } from '@remote-ui/core';
2
+ import type { ReactComponentTypeFromRemoteComponentType } from '@remote-ui/react';
3
+ export declare function createExtensionComponent<ComponentType extends string, Props = Record<string, never>, AllowedChildren extends RemoteComponentType<string, any> | boolean = true>(componentType: ComponentType | RemoteComponentType<ComponentType, Props, AllowedChildren>): RemoteComponentType<ComponentType, Props, AllowedChildren> & ReactComponentTypeFromRemoteComponentType<RemoteComponentType<ComponentType, Props, AllowedChildren>>;
@@ -0,0 +1,4 @@
1
+ import { createRemoteReactComponent } from '@remote-ui/react';
2
+ export function createExtensionComponent(componentType) {
3
+ return createRemoteReactComponent(componentType);
4
+ }
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@hubspot/ui-extensions",
3
- "version": "0.0.1-prealpha.4",
3
+ "version": "0.0.1-prealpha.5",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "scripts": {
9
- "build": "rm -rf dist/ && tsc",
10
- "watch": "rm -rf dist/ && tsc --watch"
9
+ "clean": "rm -rf dist/",
10
+ "prepare": "npm run clean && tsc",
11
+ "watch": "npm run clean && tsc --watch"
11
12
  },
12
13
  "files": [
13
14
  "dist/**/*"
14
15
  ],
15
- "prepare": "npm run build",
16
16
  "publishConfig": {
17
17
  "access": "public"
18
18
  },
@@ -47,5 +47,5 @@
47
47
  "devDependencies": {
48
48
  "typescript": "5.0.4"
49
49
  },
50
- "gitHead": "d3ed42de0f9675a2f599416ba1886ba379ecfcd0"
50
+ "gitHead": "a4652eb58cbde813dbebc8b7127c36102b9b6ed6"
51
51
  }