slicejs-web-framework 3.2.3 → 3.3.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.
Files changed (124) hide show
  1. package/.opencode/opencode.json +13 -13
  2. package/LICENSE +21 -21
  3. package/README.md +97 -174
  4. package/Slice/Components/Structural/ContextManager/ContextManager.js +369 -369
  5. package/Slice/Components/Structural/ContextManager/ContextManagerDebugger.js +420 -297
  6. package/Slice/Components/Structural/Controller/Controller.js +1129 -1131
  7. package/Slice/Components/Structural/Debugger/Debugger.html +72 -72
  8. package/Slice/Components/Structural/Debugger/Debugger.js +1497 -1547
  9. package/Slice/Components/Structural/EventManager/EventManager.js +338 -338
  10. package/Slice/Components/Structural/EventManager/EventManagerDebugger.js +476 -361
  11. package/Slice/Components/Structural/Logger/Log.js +10 -10
  12. package/Slice/Components/Structural/Logger/Logger.js +145 -146
  13. package/Slice/Components/Structural/Router/Router.js +752 -721
  14. package/Slice/Components/Structural/StylesManager/StylesManager.js +78 -78
  15. package/Slice/Components/Structural/StylesManager/ThemeManager/ThemeManager.js +84 -84
  16. package/Slice/Slice.js +530 -542
  17. package/Slice/tests/build-bundled-component-without-category.test.js +103 -103
  18. package/Slice/tests/build-js-only-visual-components.test.js +144 -144
  19. package/Slice/tests/bundle-v2-runtime-contract.test.js +728 -728
  20. package/Slice/tests/public-env-runtime-accessors.test.js +44 -44
  21. package/Slice/tests/router-loading-finally.test.js +68 -68
  22. package/api/index.js +286 -286
  23. package/api/middleware/securityMiddleware.js +252 -252
  24. package/api/tests/public-env-resolver.test.js +193 -193
  25. package/api/utils/publicEnvResolver.js +117 -117
  26. package/package.json +40 -38
  27. package/sliceConfig.schema.json +109 -109
  28. package/src/App/index.html +16 -22
  29. package/src/App/index.js +20 -23
  30. package/src/App/style.css +11 -40
  31. package/src/Components/AppComponents/AboutSection/AboutSection.css +9 -0
  32. package/src/Components/AppComponents/AboutSection/AboutSection.html +8 -0
  33. package/src/Components/AppComponents/AboutSection/AboutSection.js +12 -0
  34. package/src/Components/AppComponents/AppShell/AppShell.css +10 -0
  35. package/src/Components/AppComponents/AppShell/AppShell.html +4 -0
  36. package/src/Components/AppComponents/AppShell/AppShell.js +36 -0
  37. package/src/Components/AppComponents/HomeSection/HomeSection.css +20 -0
  38. package/src/Components/AppComponents/HomeSection/HomeSection.html +10 -0
  39. package/src/Components/AppComponents/HomeSection/HomeSection.js +19 -0
  40. package/src/Components/components.js +8 -27
  41. package/src/Styles/sliceStyles.css +34 -34
  42. package/src/Themes/Dark.css +42 -42
  43. package/src/Themes/Light.css +31 -31
  44. package/src/Themes/Slice.css +47 -47
  45. package/src/routes.js +9 -15
  46. package/src/sliceConfig.json +74 -73
  47. package/types/index.d.ts +207 -207
  48. package/Slice/Components/Structural/Debugger/Debugger.css +0 -620
  49. package/src/Components/AppComponents/HomePage/HomePage.css +0 -201
  50. package/src/Components/AppComponents/HomePage/HomePage.html +0 -37
  51. package/src/Components/AppComponents/HomePage/HomePage.js +0 -210
  52. package/src/Components/AppComponents/Playground/Playground.css +0 -12
  53. package/src/Components/AppComponents/Playground/Playground.html +0 -0
  54. package/src/Components/AppComponents/Playground/Playground.js +0 -111
  55. package/src/Components/Service/FetchManager/FetchManager.js +0 -133
  56. package/src/Components/Service/IndexedDbManager/IndexedDbManager.js +0 -141
  57. package/src/Components/Service/LocalStorageManager/LocalStorageManager.js +0 -45
  58. package/src/Components/Visual/Button/Button.css +0 -47
  59. package/src/Components/Visual/Button/Button.html +0 -5
  60. package/src/Components/Visual/Button/Button.js +0 -93
  61. package/src/Components/Visual/Card/Card.css +0 -68
  62. package/src/Components/Visual/Card/Card.html +0 -7
  63. package/src/Components/Visual/Card/Card.js +0 -107
  64. package/src/Components/Visual/Checkbox/Checkbox.css +0 -87
  65. package/src/Components/Visual/Checkbox/Checkbox.html +0 -8
  66. package/src/Components/Visual/Checkbox/Checkbox.js +0 -86
  67. package/src/Components/Visual/CodeVisualizer/CodeVisualizer.css +0 -130
  68. package/src/Components/Visual/CodeVisualizer/CodeVisualizer.html +0 -4
  69. package/src/Components/Visual/CodeVisualizer/CodeVisualizer.js +0 -262
  70. package/src/Components/Visual/Details/Details.css +0 -70
  71. package/src/Components/Visual/Details/Details.html +0 -9
  72. package/src/Components/Visual/Details/Details.js +0 -76
  73. package/src/Components/Visual/DropDown/DropDown.css +0 -60
  74. package/src/Components/Visual/DropDown/DropDown.html +0 -5
  75. package/src/Components/Visual/DropDown/DropDown.js +0 -63
  76. package/src/Components/Visual/Grid/Grid.css +0 -7
  77. package/src/Components/Visual/Grid/Grid.html +0 -1
  78. package/src/Components/Visual/Grid/Grid.js +0 -57
  79. package/src/Components/Visual/Icon/Icon.css +0 -510
  80. package/src/Components/Visual/Icon/Icon.html +0 -1
  81. package/src/Components/Visual/Icon/Icon.js +0 -89
  82. package/src/Components/Visual/Icon/slc.eot +0 -0
  83. package/src/Components/Visual/Icon/slc.json +0 -555
  84. package/src/Components/Visual/Icon/slc.styl +0 -507
  85. package/src/Components/Visual/Icon/slc.svg +0 -1485
  86. package/src/Components/Visual/Icon/slc.symbol.svg +0 -1059
  87. package/src/Components/Visual/Icon/slc.ttf +0 -0
  88. package/src/Components/Visual/Icon/slc.woff +0 -0
  89. package/src/Components/Visual/Icon/slc.woff2 +0 -0
  90. package/src/Components/Visual/Input/Input.css +0 -91
  91. package/src/Components/Visual/Input/Input.html +0 -4
  92. package/src/Components/Visual/Input/Input.js +0 -215
  93. package/src/Components/Visual/Layout/Layout.css +0 -0
  94. package/src/Components/Visual/Layout/Layout.html +0 -0
  95. package/src/Components/Visual/Layout/Layout.js +0 -49
  96. package/src/Components/Visual/Link/Link.css +0 -8
  97. package/src/Components/Visual/Link/Link.html +0 -1
  98. package/src/Components/Visual/Link/Link.js +0 -63
  99. package/src/Components/Visual/Loading/Loading.css +0 -56
  100. package/src/Components/Visual/Loading/Loading.html +0 -83
  101. package/src/Components/Visual/Loading/Loading.js +0 -38
  102. package/src/Components/Visual/MultiRoute/MultiRoute.js +0 -93
  103. package/src/Components/Visual/Navbar/Navbar.css +0 -115
  104. package/src/Components/Visual/Navbar/Navbar.html +0 -44
  105. package/src/Components/Visual/Navbar/Navbar.js +0 -141
  106. package/src/Components/Visual/NotFound/NotFound.css +0 -117
  107. package/src/Components/Visual/NotFound/NotFound.html +0 -24
  108. package/src/Components/Visual/NotFound/NotFound.js +0 -16
  109. package/src/Components/Visual/Route/Route.js +0 -93
  110. package/src/Components/Visual/Select/Select.css +0 -84
  111. package/src/Components/Visual/Select/Select.html +0 -8
  112. package/src/Components/Visual/Select/Select.js +0 -195
  113. package/src/Components/Visual/Switch/Switch.css +0 -76
  114. package/src/Components/Visual/Switch/Switch.html +0 -8
  115. package/src/Components/Visual/Switch/Switch.js +0 -102
  116. package/src/Components/Visual/TreeItem/TreeItem.css +0 -36
  117. package/src/Components/Visual/TreeItem/TreeItem.html +0 -1
  118. package/src/Components/Visual/TreeItem/TreeItem.js +0 -126
  119. package/src/Components/Visual/TreeView/TreeView.css +0 -8
  120. package/src/Components/Visual/TreeView/TreeView.html +0 -1
  121. package/src/Components/Visual/TreeView/TreeView.js +0 -48
  122. package/src/images/Slice.js-logo.png +0 -0
  123. package/src/images/im2/Slice.js-logo.png +0 -0
  124. package/src/testing.js +0 -888
package/types/index.d.ts CHANGED
@@ -1,207 +1,207 @@
1
- export type SliceMode = 'development' | 'production' | string;
2
-
3
- export interface RouteConfig {
4
- path: string;
5
- component: string;
6
- children?: RouteConfig[];
7
- metadata?: Record<string, unknown>;
8
- fullPath?: string;
9
- parentPath?: string | null;
10
- parentRoute?: RouteConfig | null;
11
- }
12
-
13
- export interface RouteInfo {
14
- path: string;
15
- component: string;
16
- params: Record<string, string>;
17
- query: Record<string, string>;
18
- metadata: Record<string, unknown>;
19
- }
20
-
21
- export interface RouteMatch {
22
- route: RouteConfig | null;
23
- params: Record<string, string>;
24
- childRoute?: RouteConfig;
25
- }
26
-
27
- export type RouterNext = (arg?: void | false | string | { path: string; replace?: boolean }) => void;
28
-
29
- export interface SliceControllerApi {
30
- componentCategories: Map<string, string>;
31
- templates: Map<string, HTMLTemplateElement>;
32
- classes: Map<string, new (...args: any[]) => HTMLElement>;
33
- requestedStyles: Set<string>;
34
- activeComponents: Map<string, HTMLElement>;
35
- getComponent(sliceId: string): HTMLElement | undefined;
36
- getComponentCategory(componentSliceId: string): string | undefined;
37
- fetchText(
38
- componentName: string,
39
- resourceType: 'html' | 'css' | 'theme' | 'styles',
40
- componentCategory?: string,
41
- customPath?: string
42
- ): Promise<string>;
43
- setComponentProps(component: HTMLElement, props: Record<string, unknown>): void;
44
- destroyComponent(components: HTMLElement | string | Array<HTMLElement | string>): number;
45
- destroyByContainer(container: HTMLElement): number;
46
- destroyByPattern(pattern: string | RegExp): number;
47
- }
48
-
49
- export interface SliceStylesManagerApi {
50
- componentStyles: HTMLStyleElement;
51
- themeManager?: SliceThemeManagerApi;
52
- init(): Promise<void>;
53
- appendComponentStyles(cssText: string): void;
54
- registerComponentStyles(componentName: string, cssText: string): void;
55
- }
56
-
57
- export interface SliceThemeManagerApi {
58
- currentTheme: string | null;
59
- applyTheme(themeName: string): Promise<void>;
60
- }
61
-
62
- export interface SliceLoggerApi {
63
- logError(componentSliceId: string, message: string, error?: unknown): void;
64
- logWarning(componentSliceId: string, message: string): void;
65
- logInfo(componentSliceId: string, message: string): void;
66
- getLogs(): unknown[];
67
- clearLogs(): void;
68
- }
69
-
70
- export interface SliceEventBindingApi {
71
- subscribe(eventName: string, callback: (data?: unknown) => void): string | null;
72
- subscribeOnce(eventName: string, callback: (data?: unknown) => void): string | null;
73
- emit(eventName: string, data?: unknown): void;
74
- }
75
-
76
- export interface SliceEventManagerApi {
77
- init(): boolean;
78
- subscribe(
79
- eventName: string,
80
- callback: (data?: unknown) => void,
81
- options?: { component?: HTMLElement }
82
- ): string | null;
83
- subscribeOnce(
84
- eventName: string,
85
- callback: (data?: unknown) => void,
86
- options?: { component?: HTMLElement }
87
- ): string | null;
88
- unsubscribe(eventName: string, subscriptionId: string): boolean;
89
- emit(eventName: string, ...data: unknown[]): void;
90
- bind(component: HTMLElement): SliceEventBindingApi | null;
91
- cleanupComponent(sliceId: string): number;
92
- hasSubscribers(eventName: string): boolean;
93
- subscriberCount(eventName: string): number;
94
- clear(): void;
95
- }
96
-
97
- export interface SliceContextOptions {
98
- persist?: boolean;
99
- storageKey?: string;
100
- }
101
-
102
- export interface SliceContextManagerApi {
103
- init(): boolean;
104
- create(name: string, initialState?: Record<string, unknown>, options?: SliceContextOptions): boolean;
105
- getState<T = unknown>(name: string): T | null;
106
- setState<T = unknown>(name: string, updater: T | ((prevState: T) => T)): void;
107
- watch<TSelected = unknown>(
108
- name: string,
109
- component: HTMLElement,
110
- callback: (value: TSelected) => void,
111
- selector?: (state: unknown) => TSelected
112
- ): string | null;
113
- has(name: string): boolean;
114
- destroy(name: string): boolean;
115
- list(): string[];
116
- }
117
-
118
- export interface SliceRouterApi {
119
- activeRoute: RouteConfig | null;
120
- pathToRouteMap: Map<string, RouteConfig>;
121
- init(): void;
122
- start(): Promise<void>;
123
- beforeEach(guard: (to: RouteInfo, from: RouteInfo, next: RouterNext) => void | Promise<void>): void;
124
- afterEach(guard: (to: RouteInfo, from: RouteInfo) => void): void;
125
- navigate(path: string, redirectChain?: string[], options?: { replace?: boolean }): Promise<void>;
126
- matchRoute(path: string): RouteMatch;
127
- }
128
-
129
- export interface SlicePanelDebuggerApi {
130
- init(): Promise<void>;
131
- toggle(): void;
132
- open(): void;
133
- close(): void;
134
- }
135
-
136
- export interface SliceDebuggerApi {
137
- enableDebugMode(): Promise<boolean>;
138
- attachDebugMode(component: HTMLElement): void;
139
- hide(): void;
140
- }
141
-
142
- export interface SliceLoadingApi {
143
- start?: () => void;
144
- stop?: () => void;
145
- }
146
-
147
- export interface SlicePaths {
148
- routesFile?: string;
149
- themes?: string;
150
- styles?: string;
151
- structuralComponentFolderPath?: string;
152
- components?: Record<string, { path: string; type?: string }>;
153
- [key: string]: unknown;
154
- }
155
-
156
- export interface SliceFrameworkClasses {
157
- Controller?: new () => SliceControllerApi;
158
- StylesManager?: new () => SliceStylesManagerApi;
159
- Router?: new (routes: RouteConfig[]) => SliceRouterApi;
160
- Logger?: new () => SliceLoggerApi;
161
- EventManager?: new () => SliceEventManagerApi;
162
- ContextManager?: new () => SliceContextManagerApi;
163
- Debugger?: new () => SliceDebuggerApi;
164
- EventManagerDebugger?: new () => SlicePanelDebuggerApi;
165
- ContextManagerDebugger?: new () => SlicePanelDebuggerApi;
166
- ThemeManager?: new () => SliceThemeManagerApi;
167
- [key: string]: unknown;
168
- }
169
-
170
- export interface SliceApi {
171
- frameworkClasses: SliceFrameworkClasses | null;
172
- controller: SliceControllerApi;
173
- stylesManager: SliceStylesManagerApi;
174
- logger: SliceLoggerApi;
175
- router: SliceRouterApi;
176
- events: SliceEventManagerApi;
177
- context: SliceContextManagerApi;
178
- debugger?: SliceDebuggerApi;
179
- eventsDebugger?: SlicePanelDebuggerApi;
180
- contextDebugger?: SlicePanelDebuggerApi;
181
- loading?: SliceLoadingApi;
182
- paths: SlicePaths;
183
- _mode: SliceMode;
184
- getClass<T = unknown>(module: string): Promise<T | undefined>;
185
- isProduction(): boolean;
186
- getEnv(name: string, fallbackValue?: string): string | undefined;
187
- getPublicEnv(): Record<string, string>;
188
- getComponent(componentSliceId: string): HTMLElement | undefined;
189
- build<T = HTMLElement>(componentName: string, props?: Record<string, unknown>): Promise<T | null>;
190
- setTheme(themeName: string): Promise<void>;
191
- readonly theme: string | null;
192
- attachTemplate(componentInstance: HTMLElement): void;
193
- }
194
-
195
- declare class Slice {
196
- constructor(sliceConfig: Record<string, unknown>, frameworkClasses?: SliceFrameworkClasses | null);
197
- }
198
-
199
- export default Slice;
200
-
201
- declare global {
202
- interface Window {
203
- slice: SliceApi;
204
- }
205
-
206
- const slice: SliceApi;
207
- }
1
+ export type SliceMode = 'development' | 'production' | string;
2
+
3
+ export interface RouteConfig {
4
+ path: string;
5
+ component: string;
6
+ children?: RouteConfig[];
7
+ metadata?: Record<string, unknown>;
8
+ fullPath?: string;
9
+ parentPath?: string | null;
10
+ parentRoute?: RouteConfig | null;
11
+ }
12
+
13
+ export interface RouteInfo {
14
+ path: string;
15
+ component: string;
16
+ params: Record<string, string>;
17
+ query: Record<string, string>;
18
+ metadata: Record<string, unknown>;
19
+ }
20
+
21
+ export interface RouteMatch {
22
+ route: RouteConfig | null;
23
+ params: Record<string, string>;
24
+ childRoute?: RouteConfig;
25
+ }
26
+
27
+ export type RouterNext = (arg?: void | false | string | { path: string; replace?: boolean }) => void;
28
+
29
+ export interface SliceControllerApi {
30
+ componentCategories: Map<string, string>;
31
+ templates: Map<string, HTMLTemplateElement>;
32
+ classes: Map<string, new (...args: any[]) => HTMLElement>;
33
+ requestedStyles: Set<string>;
34
+ activeComponents: Map<string, HTMLElement>;
35
+ getComponent(sliceId: string): HTMLElement | undefined;
36
+ getComponentCategory(componentSliceId: string): string | undefined;
37
+ fetchText(
38
+ componentName: string,
39
+ resourceType: 'html' | 'css' | 'theme' | 'styles',
40
+ componentCategory?: string,
41
+ customPath?: string
42
+ ): Promise<string>;
43
+ setComponentProps(component: HTMLElement, props: Record<string, unknown>): void;
44
+ destroyComponent(components: HTMLElement | string | Array<HTMLElement | string>): number;
45
+ destroyByContainer(container: HTMLElement): number;
46
+ destroyByPattern(pattern: string | RegExp): number;
47
+ }
48
+
49
+ export interface SliceStylesManagerApi {
50
+ componentStyles: HTMLStyleElement;
51
+ themeManager?: SliceThemeManagerApi;
52
+ init(): Promise<void>;
53
+ appendComponentStyles(cssText: string): void;
54
+ registerComponentStyles(componentName: string, cssText: string): void;
55
+ }
56
+
57
+ export interface SliceThemeManagerApi {
58
+ currentTheme: string | null;
59
+ applyTheme(themeName: string): Promise<void>;
60
+ }
61
+
62
+ export interface SliceLoggerApi {
63
+ logError(componentSliceId: string, message: string, error?: unknown): void;
64
+ logWarning(componentSliceId: string, message: string): void;
65
+ logInfo(componentSliceId: string, message: string): void;
66
+ getLogs(): unknown[];
67
+ clearLogs(): void;
68
+ }
69
+
70
+ export interface SliceEventBindingApi {
71
+ subscribe(eventName: string, callback: (data?: unknown) => void): string | null;
72
+ subscribeOnce(eventName: string, callback: (data?: unknown) => void): string | null;
73
+ emit(eventName: string, data?: unknown): void;
74
+ }
75
+
76
+ export interface SliceEventManagerApi {
77
+ init(): boolean;
78
+ subscribe(
79
+ eventName: string,
80
+ callback: (data?: unknown) => void,
81
+ options?: { component?: HTMLElement }
82
+ ): string | null;
83
+ subscribeOnce(
84
+ eventName: string,
85
+ callback: (data?: unknown) => void,
86
+ options?: { component?: HTMLElement }
87
+ ): string | null;
88
+ unsubscribe(eventName: string, subscriptionId: string): boolean;
89
+ emit(eventName: string, ...data: unknown[]): void;
90
+ bind(component: HTMLElement): SliceEventBindingApi | null;
91
+ cleanupComponent(sliceId: string): number;
92
+ hasSubscribers(eventName: string): boolean;
93
+ subscriberCount(eventName: string): number;
94
+ clear(): void;
95
+ }
96
+
97
+ export interface SliceContextOptions {
98
+ persist?: boolean;
99
+ storageKey?: string;
100
+ }
101
+
102
+ export interface SliceContextManagerApi {
103
+ init(): boolean;
104
+ create(name: string, initialState?: Record<string, unknown>, options?: SliceContextOptions): boolean;
105
+ getState<T = unknown>(name: string): T | null;
106
+ setState<T = unknown>(name: string, updater: T | ((prevState: T) => T)): void;
107
+ watch<TSelected = unknown>(
108
+ name: string,
109
+ component: HTMLElement,
110
+ callback: (value: TSelected) => void,
111
+ selector?: (state: unknown) => TSelected
112
+ ): string | null;
113
+ has(name: string): boolean;
114
+ destroy(name: string): boolean;
115
+ list(): string[];
116
+ }
117
+
118
+ export interface SliceRouterApi {
119
+ activeRoute: RouteConfig | null;
120
+ pathToRouteMap: Map<string, RouteConfig>;
121
+ init(): void;
122
+ start(): Promise<void>;
123
+ beforeEach(guard: (to: RouteInfo, from: RouteInfo, next: RouterNext) => void | Promise<void>): void;
124
+ afterEach(guard: (to: RouteInfo, from: RouteInfo) => void): void;
125
+ navigate(path: string, redirectChain?: string[], options?: { replace?: boolean }): Promise<void>;
126
+ matchRoute(path: string): RouteMatch;
127
+ }
128
+
129
+ export interface SlicePanelDebuggerApi {
130
+ init(): Promise<void>;
131
+ toggle(): void;
132
+ open(): void;
133
+ close(): void;
134
+ }
135
+
136
+ export interface SliceDebuggerApi {
137
+ enableDebugMode(): Promise<boolean>;
138
+ attachDebugMode(component: HTMLElement): void;
139
+ hide(): void;
140
+ }
141
+
142
+ export interface SliceLoadingApi {
143
+ start?: () => void;
144
+ stop?: () => void;
145
+ }
146
+
147
+ export interface SlicePaths {
148
+ routesFile?: string;
149
+ themes?: string;
150
+ styles?: string;
151
+ structuralComponentFolderPath?: string;
152
+ components?: Record<string, { path: string; type?: string }>;
153
+ [key: string]: unknown;
154
+ }
155
+
156
+ export interface SliceFrameworkClasses {
157
+ Controller?: new () => SliceControllerApi;
158
+ StylesManager?: new () => SliceStylesManagerApi;
159
+ Router?: new (routes: RouteConfig[]) => SliceRouterApi;
160
+ Logger?: new () => SliceLoggerApi;
161
+ EventManager?: new () => SliceEventManagerApi;
162
+ ContextManager?: new () => SliceContextManagerApi;
163
+ Debugger?: new () => SliceDebuggerApi;
164
+ EventManagerDebugger?: new () => SlicePanelDebuggerApi;
165
+ ContextManagerDebugger?: new () => SlicePanelDebuggerApi;
166
+ ThemeManager?: new () => SliceThemeManagerApi;
167
+ [key: string]: unknown;
168
+ }
169
+
170
+ export interface SliceApi {
171
+ frameworkClasses: SliceFrameworkClasses | null;
172
+ controller: SliceControllerApi;
173
+ stylesManager: SliceStylesManagerApi;
174
+ logger: SliceLoggerApi;
175
+ router: SliceRouterApi;
176
+ events: SliceEventManagerApi;
177
+ context: SliceContextManagerApi;
178
+ debugger?: SliceDebuggerApi;
179
+ eventsDebugger?: SlicePanelDebuggerApi;
180
+ contextDebugger?: SlicePanelDebuggerApi;
181
+ loading?: SliceLoadingApi;
182
+ paths: SlicePaths;
183
+ _mode: SliceMode;
184
+ getClass<T = unknown>(module: string): Promise<T | undefined>;
185
+ isProduction(): boolean;
186
+ getEnv(name: string, fallbackValue?: string): string | undefined;
187
+ getPublicEnv(): Record<string, string>;
188
+ getComponent(componentSliceId: string): HTMLElement | undefined;
189
+ build<T = HTMLElement>(componentName: string, props?: Record<string, unknown>): Promise<T | null>;
190
+ setTheme(themeName: string): Promise<void>;
191
+ readonly theme: string | null;
192
+ attachTemplate(componentInstance: HTMLElement): void;
193
+ }
194
+
195
+ declare class Slice {
196
+ constructor(sliceConfig: Record<string, unknown>, frameworkClasses?: SliceFrameworkClasses | null);
197
+ }
198
+
199
+ export default Slice;
200
+
201
+ declare global {
202
+ interface Window {
203
+ slice: SliceApi;
204
+ }
205
+
206
+ const slice: SliceApi;
207
+ }