@frontmcp/ui 0.12.2 → 1.0.0-beta.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/README.md +279 -72
- package/bridge/adapters/claude.adapter.d.ts.map +1 -1
- package/bridge/adapters/gemini.adapter.d.ts.map +1 -1
- package/bridge/index.js +2 -36
- package/components/Alert/Alert.d.ts +11 -0
- package/components/Alert/Alert.d.ts.map +1 -0
- package/components/Alert/index.d.ts +4 -0
- package/components/Alert/index.d.ts.map +1 -0
- package/components/Alert/index.js +61 -0
- package/components/Avatar/Avatar.d.ts +10 -0
- package/components/Avatar/Avatar.d.ts.map +1 -0
- package/components/Avatar/index.d.ts +4 -0
- package/components/Avatar/index.d.ts.map +1 -0
- package/components/Avatar/index.js +43 -0
- package/components/Badge/Badge.d.ts +13 -0
- package/components/Badge/Badge.d.ts.map +1 -0
- package/components/Badge/index.d.ts +4 -0
- package/components/Badge/index.d.ts.map +1 -0
- package/{render → components/Badge}/index.js +54 -42
- package/components/Button/Button.d.ts +16 -0
- package/components/Button/Button.d.ts.map +1 -0
- package/components/Button/index.d.ts +4 -0
- package/components/Button/index.d.ts.map +1 -0
- package/components/Button/index.js +91 -0
- package/components/Card/Card.d.ts +25 -0
- package/components/Card/Card.d.ts.map +1 -0
- package/components/Card/index.d.ts +4 -0
- package/components/Card/index.d.ts.map +1 -0
- package/components/Card/index.js +110 -0
- package/components/List/List.d.ts +15 -0
- package/components/List/List.d.ts.map +1 -0
- package/components/List/index.d.ts +4 -0
- package/components/List/index.d.ts.map +1 -0
- package/components/List/index.js +58 -0
- package/components/Loader/Loader.d.ts +28 -0
- package/components/Loader/Loader.d.ts.map +1 -0
- package/components/Loader/LoaderContext.d.ts +20 -0
- package/components/Loader/LoaderContext.d.ts.map +1 -0
- package/components/Loader/index.d.ts +6 -0
- package/components/Loader/index.d.ts.map +1 -0
- package/components/Loader/index.js +174 -0
- package/components/Modal/Modal.d.ts +22 -0
- package/components/Modal/Modal.d.ts.map +1 -0
- package/components/Modal/index.d.ts +4 -0
- package/components/Modal/index.d.ts.map +1 -0
- package/components/Modal/index.js +80 -0
- package/components/Select/Select.d.ts +21 -0
- package/components/Select/Select.d.ts.map +1 -0
- package/components/Select/index.d.ts +4 -0
- package/components/Select/index.d.ts.map +1 -0
- package/components/Select/index.js +78 -0
- package/components/Table/Table.d.ts +15 -0
- package/components/Table/Table.d.ts.map +1 -0
- package/components/Table/index.d.ts +4 -0
- package/components/Table/index.d.ts.map +1 -0
- package/components/Table/index.js +70 -0
- package/components/TextField/TextField.d.ts +19 -0
- package/components/TextField/TextField.d.ts.map +1 -0
- package/components/TextField/index.d.ts +4 -0
- package/components/TextField/index.d.ts.map +1 -0
- package/components/TextField/index.js +77 -0
- package/components/index.d.ts +22 -28
- package/components/index.d.ts.map +1 -1
- package/components/index.js +523 -2521
- package/esm/bridge/index.mjs +2 -6
- package/esm/components/Alert/index.mjs +28 -0
- package/esm/components/Avatar/index.mjs +10 -0
- package/esm/components/Badge/index.mjs +56 -0
- package/esm/components/Button/index.mjs +58 -0
- package/esm/components/Card/index.mjs +77 -0
- package/esm/components/List/index.mjs +25 -0
- package/esm/components/Loader/index.mjs +141 -0
- package/esm/components/Modal/index.mjs +47 -0
- package/esm/components/Select/index.mjs +45 -0
- package/esm/components/Table/index.mjs +37 -0
- package/esm/components/TextField/index.mjs +44 -0
- package/esm/components/index.mjs +513 -2415
- package/esm/index.mjs +62 -4652
- package/esm/package.json +372 -16
- package/esm/react/index.mjs +2 -285
- package/esm/renderer/charts/index.mjs +336 -0
- package/esm/renderer/common/index.mjs +135 -0
- package/esm/renderer/csv/index.mjs +193 -0
- package/esm/renderer/flow/index.mjs +259 -0
- package/esm/renderer/html/index.mjs +99 -0
- package/esm/renderer/image/index.mjs +125 -0
- package/esm/renderer/index.mjs +2173 -0
- package/esm/renderer/maps/index.mjs +217 -0
- package/esm/renderer/math/index.mjs +229 -0
- package/esm/renderer/mdx/index.mjs +261 -0
- package/esm/renderer/media/index.mjs +235 -0
- package/esm/renderer/mermaid/index.mjs +220 -0
- package/esm/renderer/pdf/index.mjs +229 -0
- package/esm/renderer/react/index.mjs +230 -0
- package/esm/runtime/index.mjs +194 -0
- package/esm/theme/index.mjs +93 -0
- package/index.d.ts +10 -18
- package/index.d.ts.map +1 -1
- package/index.js +63 -4806
- package/package.json +372 -16
- package/react/index.d.ts +8 -54
- package/react/index.d.ts.map +1 -1
- package/react/index.js +2 -295
- package/renderer/auto-detect.d.ts +39 -0
- package/renderer/auto-detect.d.ts.map +1 -0
- package/renderer/charts/index.d.ts +22 -0
- package/renderer/charts/index.d.ts.map +1 -0
- package/renderer/charts/index.js +367 -0
- package/renderer/common/index.d.ts +5 -0
- package/renderer/common/index.d.ts.map +1 -0
- package/renderer/common/index.js +158 -0
- package/renderer/common/inject-stylesheet.d.ts +9 -0
- package/renderer/common/inject-stylesheet.d.ts.map +1 -0
- package/renderer/common/lazy-import.d.ts +85 -0
- package/renderer/common/lazy-import.d.ts.map +1 -0
- package/renderer/common/use-lazy-module.d.ts +13 -0
- package/renderer/common/use-lazy-module.d.ts.map +1 -0
- package/renderer/common/use-renderer-theme.d.ts +35 -0
- package/renderer/common/use-renderer-theme.d.ts.map +1 -0
- package/renderer/csv/index.d.ts +12 -0
- package/renderer/csv/index.d.ts.map +1 -0
- package/renderer/csv/index.js +224 -0
- package/renderer/flow/index.d.ts +40 -0
- package/renderer/flow/index.d.ts.map +1 -0
- package/renderer/flow/index.js +290 -0
- package/renderer/html/index.d.ts +12 -0
- package/renderer/html/index.d.ts.map +1 -0
- package/renderer/html/index.js +130 -0
- package/renderer/image/index.d.ts +11 -0
- package/renderer/image/index.d.ts.map +1 -0
- package/renderer/image/index.js +156 -0
- package/renderer/index.d.ts +32 -0
- package/renderer/index.d.ts.map +1 -0
- package/renderer/index.js +2206 -0
- package/renderer/maps/index.d.ts +27 -0
- package/renderer/maps/index.d.ts.map +1 -0
- package/renderer/maps/index.js +248 -0
- package/renderer/math/index.d.ts +11 -0
- package/renderer/math/index.d.ts.map +1 -0
- package/renderer/math/index.js +260 -0
- package/renderer/mdx/index.d.ts +10 -0
- package/renderer/mdx/index.d.ts.map +1 -0
- package/renderer/mdx/index.js +292 -0
- package/renderer/media/index.d.ts +20 -0
- package/renderer/media/index.d.ts.map +1 -0
- package/renderer/media/index.js +266 -0
- package/renderer/mermaid/index.d.ts +11 -0
- package/renderer/mermaid/index.d.ts.map +1 -0
- package/renderer/mermaid/index.js +251 -0
- package/renderer/pdf/index.d.ts +10 -0
- package/renderer/pdf/index.d.ts.map +1 -0
- package/renderer/pdf/index.js +260 -0
- package/renderer/react/index.d.ts +45 -0
- package/renderer/react/index.d.ts.map +1 -0
- package/renderer/react/index.js +261 -0
- package/renderer/types.d.ts +24 -0
- package/renderer/types.d.ts.map +1 -0
- package/runtime/babel-runtime.d.ts +70 -0
- package/runtime/babel-runtime.d.ts.map +1 -0
- package/runtime/content-detector.d.ts +43 -0
- package/runtime/content-detector.d.ts.map +1 -0
- package/runtime/index.d.ts +10 -0
- package/runtime/index.d.ts.map +1 -0
- package/runtime/index.js +217 -0
- package/theme/FrontMcpThemeProvider.d.ts +4 -0
- package/theme/FrontMcpThemeProvider.d.ts.map +1 -0
- package/theme/create-theme.d.ts +9 -0
- package/theme/create-theme.d.ts.map +1 -0
- package/theme/index.d.ts +5 -0
- package/theme/index.d.ts.map +1 -0
- package/theme/index.js +126 -0
- package/theme/types.d.ts +28 -0
- package/theme/types.d.ts.map +1 -0
- package/theme/use-theme.d.ts +3 -0
- package/theme/use-theme.d.ts.map +1 -0
- package/bundler/browser-components.d.ts +0 -42
- package/bundler/browser-components.d.ts.map +0 -1
- package/bundler/bundler.d.ts +0 -282
- package/bundler/bundler.d.ts.map +0 -1
- package/bundler/index.d.ts +0 -43
- package/bundler/index.d.ts.map +0 -1
- package/bundler/index.js +0 -3168
- package/bundler/types.d.ts +0 -883
- package/bundler/types.d.ts.map +0 -1
- package/components/alert.d.ts +0 -83
- package/components/alert.d.ts.map +0 -1
- package/components/alert.schema.d.ts +0 -98
- package/components/alert.schema.d.ts.map +0 -1
- package/components/avatar.d.ts +0 -77
- package/components/avatar.d.ts.map +0 -1
- package/components/avatar.schema.d.ts +0 -170
- package/components/avatar.schema.d.ts.map +0 -1
- package/components/badge.d.ts +0 -78
- package/components/badge.d.ts.map +0 -1
- package/components/badge.schema.d.ts +0 -91
- package/components/badge.schema.d.ts.map +0 -1
- package/components/button.d.ts +0 -100
- package/components/button.d.ts.map +0 -1
- package/components/button.schema.d.ts +0 -120
- package/components/button.schema.d.ts.map +0 -1
- package/components/card.d.ts +0 -76
- package/components/card.d.ts.map +0 -1
- package/components/card.schema.d.ts +0 -93
- package/components/card.schema.d.ts.map +0 -1
- package/components/form.d.ts +0 -227
- package/components/form.d.ts.map +0 -1
- package/components/form.schema.d.ts +0 -365
- package/components/form.schema.d.ts.map +0 -1
- package/components/list.d.ts +0 -121
- package/components/list.d.ts.map +0 -1
- package/components/list.schema.d.ts +0 -129
- package/components/list.schema.d.ts.map +0 -1
- package/components/modal.d.ts +0 -100
- package/components/modal.d.ts.map +0 -1
- package/components/modal.schema.d.ts +0 -151
- package/components/modal.schema.d.ts.map +0 -1
- package/components/table.d.ts +0 -91
- package/components/table.d.ts.map +0 -1
- package/components/table.schema.d.ts +0 -123
- package/components/table.schema.d.ts.map +0 -1
- package/esm/bundler/index.mjs +0 -3136
- package/esm/layouts/index.mjs +0 -409
- package/esm/render/index.mjs +0 -45
- package/esm/renderers/index.mjs +0 -621
- package/esm/universal/index.mjs +0 -1946
- package/esm/web-components/index.mjs +0 -2023
- package/layouts/base.d.ts +0 -86
- package/layouts/base.d.ts.map +0 -1
- package/layouts/index.d.ts +0 -8
- package/layouts/index.d.ts.map +0 -1
- package/layouts/index.js +0 -437
- package/layouts/presets.d.ts +0 -134
- package/layouts/presets.d.ts.map +0 -1
- package/react/Alert.d.ts +0 -101
- package/react/Alert.d.ts.map +0 -1
- package/react/Badge.d.ts +0 -100
- package/react/Badge.d.ts.map +0 -1
- package/react/Button.d.ts +0 -108
- package/react/Button.d.ts.map +0 -1
- package/react/Card.d.ts +0 -103
- package/react/Card.d.ts.map +0 -1
- package/react/types.d.ts +0 -105
- package/react/types.d.ts.map +0 -1
- package/render/index.d.ts +0 -8
- package/render/index.d.ts.map +0 -1
- package/render/prerender.d.ts +0 -57
- package/render/prerender.d.ts.map +0 -1
- package/renderers/index.d.ts +0 -26
- package/renderers/index.d.ts.map +0 -1
- package/renderers/index.js +0 -666
- package/renderers/mdx.renderer.d.ts +0 -99
- package/renderers/mdx.renderer.d.ts.map +0 -1
- package/renderers/react.adapter.d.ts +0 -70
- package/renderers/react.adapter.d.ts.map +0 -1
- package/renderers/react.renderer.d.ts +0 -105
- package/renderers/react.renderer.d.ts.map +0 -1
- package/renderers/transpiler.d.ts +0 -49
- package/renderers/transpiler.d.ts.map +0 -1
- package/universal/UniversalApp.d.ts +0 -108
- package/universal/UniversalApp.d.ts.map +0 -1
- package/universal/cached-runtime.d.ts +0 -139
- package/universal/cached-runtime.d.ts.map +0 -1
- package/universal/context.d.ts +0 -122
- package/universal/context.d.ts.map +0 -1
- package/universal/index.d.ts +0 -57
- package/universal/index.d.ts.map +0 -1
- package/universal/index.js +0 -2032
- package/universal/renderers/html.renderer.d.ts +0 -36
- package/universal/renderers/html.renderer.d.ts.map +0 -1
- package/universal/renderers/index.d.ts +0 -112
- package/universal/renderers/index.d.ts.map +0 -1
- package/universal/renderers/markdown.renderer.d.ts +0 -33
- package/universal/renderers/markdown.renderer.d.ts.map +0 -1
- package/universal/renderers/mdx.renderer.d.ts +0 -38
- package/universal/renderers/mdx.renderer.d.ts.map +0 -1
- package/universal/renderers/react.renderer.d.ts +0 -46
- package/universal/renderers/react.renderer.d.ts.map +0 -1
- package/universal/runtime-builder.d.ts +0 -33
- package/universal/runtime-builder.d.ts.map +0 -1
- package/universal/store.d.ts +0 -135
- package/universal/store.d.ts.map +0 -1
- package/universal/types.d.ts +0 -199
- package/universal/types.d.ts.map +0 -1
- package/web-components/core/attribute-parser.d.ts +0 -82
- package/web-components/core/attribute-parser.d.ts.map +0 -1
- package/web-components/core/base-element.d.ts +0 -197
- package/web-components/core/base-element.d.ts.map +0 -1
- package/web-components/core/index.d.ts +0 -9
- package/web-components/core/index.d.ts.map +0 -1
- package/web-components/elements/fmcp-alert.d.ts +0 -46
- package/web-components/elements/fmcp-alert.d.ts.map +0 -1
- package/web-components/elements/fmcp-badge.d.ts +0 -47
- package/web-components/elements/fmcp-badge.d.ts.map +0 -1
- package/web-components/elements/fmcp-button.d.ts +0 -117
- package/web-components/elements/fmcp-button.d.ts.map +0 -1
- package/web-components/elements/fmcp-card.d.ts +0 -53
- package/web-components/elements/fmcp-card.d.ts.map +0 -1
- package/web-components/elements/fmcp-input.d.ts +0 -96
- package/web-components/elements/fmcp-input.d.ts.map +0 -1
- package/web-components/elements/fmcp-select.d.ts +0 -100
- package/web-components/elements/fmcp-select.d.ts.map +0 -1
- package/web-components/elements/index.d.ts +0 -13
- package/web-components/elements/index.d.ts.map +0 -1
- package/web-components/index.d.ts +0 -49
- package/web-components/index.d.ts.map +0 -1
- package/web-components/index.js +0 -2058
- package/web-components/register.d.ts +0 -57
- package/web-components/register.d.ts.map +0 -1
- package/web-components/types.d.ts +0 -122
- package/web-components/types.d.ts.map +0 -1
package/layouts/base.d.ts
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base Layout System
|
|
3
|
-
*
|
|
4
|
-
* Provides the foundation for all FrontMCP UI pages with:
|
|
5
|
-
* - Platform-aware rendering (OpenAI, Claude, etc.)
|
|
6
|
-
* - Theme integration
|
|
7
|
-
* - CDN resource management
|
|
8
|
-
* - Responsive layouts
|
|
9
|
-
*/
|
|
10
|
-
import { type PlatformCapabilities, type ThemeConfig, type DeepPartial } from '@frontmcp/uipack/theme';
|
|
11
|
-
/**
|
|
12
|
-
* Page type determines the layout structure
|
|
13
|
-
*/
|
|
14
|
-
export type PageType = 'auth' | 'consent' | 'error' | 'loading' | 'success' | 'dashboard' | 'widget' | 'resource' | 'custom';
|
|
15
|
-
/**
|
|
16
|
-
* Layout size/width options
|
|
17
|
-
*/
|
|
18
|
-
export type LayoutSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full';
|
|
19
|
-
/**
|
|
20
|
-
* Background style options
|
|
21
|
-
*/
|
|
22
|
-
export type BackgroundStyle = 'solid' | 'gradient' | 'pattern' | 'none';
|
|
23
|
-
/**
|
|
24
|
-
* Layout alignment options
|
|
25
|
-
*/
|
|
26
|
-
export type LayoutAlignment = 'center' | 'top' | 'start';
|
|
27
|
-
/**
|
|
28
|
-
* Base layout configuration options
|
|
29
|
-
*/
|
|
30
|
-
export interface BaseLayoutOptions {
|
|
31
|
-
/** Page title (will be suffixed with branding) */
|
|
32
|
-
title: string;
|
|
33
|
-
/** Page type for layout structure */
|
|
34
|
-
pageType?: PageType;
|
|
35
|
-
/** Content width */
|
|
36
|
-
size?: LayoutSize;
|
|
37
|
-
/** Content alignment */
|
|
38
|
-
alignment?: LayoutAlignment;
|
|
39
|
-
/** Background style */
|
|
40
|
-
background?: BackgroundStyle;
|
|
41
|
-
/** Optional page description for meta tag */
|
|
42
|
-
description?: string;
|
|
43
|
-
/** Target platform capabilities */
|
|
44
|
-
platform?: PlatformCapabilities;
|
|
45
|
-
/** Theme configuration (deep partial - nested properties are also optional) */
|
|
46
|
-
theme?: DeepPartial<ThemeConfig>;
|
|
47
|
-
/** Include HTMX (default: based on platform) */
|
|
48
|
-
includeHtmx?: boolean;
|
|
49
|
-
/** Include Alpine.js (default: false) */
|
|
50
|
-
includeAlpine?: boolean;
|
|
51
|
-
/** Include Lucide icons (default: false) */
|
|
52
|
-
includeIcons?: boolean;
|
|
53
|
-
/** Additional head content */
|
|
54
|
-
headExtra?: string;
|
|
55
|
-
/** Additional body attributes */
|
|
56
|
-
bodyAttrs?: Record<string, string>;
|
|
57
|
-
/** Custom body classes */
|
|
58
|
-
bodyClass?: string;
|
|
59
|
-
/** Title suffix/branding */
|
|
60
|
-
titleSuffix?: string;
|
|
61
|
-
/** Favicon URL */
|
|
62
|
-
favicon?: string;
|
|
63
|
-
/** Open Graph meta tags */
|
|
64
|
-
og?: {
|
|
65
|
-
title?: string;
|
|
66
|
-
description?: string;
|
|
67
|
-
image?: string;
|
|
68
|
-
type?: string;
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
export { escapeHtml } from '@frontmcp/uipack/utils';
|
|
72
|
-
/**
|
|
73
|
-
* Build the complete HTML document
|
|
74
|
-
*
|
|
75
|
-
* @param content - The page content (HTML string)
|
|
76
|
-
* @param options - Layout configuration options
|
|
77
|
-
* @returns Complete HTML document string
|
|
78
|
-
*/
|
|
79
|
-
export declare function baseLayout(content: string, options: BaseLayoutOptions): string;
|
|
80
|
-
/**
|
|
81
|
-
* Create a layout builder with preset options.
|
|
82
|
-
* The returned function accepts optional options that extend/override the defaults.
|
|
83
|
-
* If defaults include `title`, the returned function's options are fully optional.
|
|
84
|
-
*/
|
|
85
|
-
export declare function createLayoutBuilder(defaults: Partial<BaseLayoutOptions>): (content: string, options?: Partial<BaseLayoutOptions>) => string;
|
|
86
|
-
//# sourceMappingURL=base.d.ts.map
|
package/layouts/base.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/layouts/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,WAAW,EAUjB,MAAM,wBAAwB,CAAC;AAOhC;;GAEG;AACH,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,SAAS,GACT,OAAO,GACP,SAAS,GACT,SAAS,GACT,WAAW,GACX,QAAQ,GACR,UAAU,GACV,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,KAAK,GACL,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,UAAU,GACV,SAAS,GACT,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,KAAK,GACL,OAAO,CAAC;AAMZ;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IAEd,qCAAqC;IACrC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB,oBAAoB;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,wBAAwB;IACxB,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B,uBAAuB;IACvB,UAAU,CAAC,EAAE,eAAe,CAAC;IAE7B,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAEhC,+EAA+E;IAC/E,KAAK,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAEjC,gDAAgD;IAChD,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,yCAAyC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,2BAA2B;IAC3B,EAAE,CAAC,EAAE;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAOD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAiGpD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAuG9E;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACnC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAAK,MAAM,CAyBnE"}
|
package/layouts/index.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Layouts Module
|
|
3
|
-
*
|
|
4
|
-
* Provides base layouts and page-specific presets for FrontMCP UI.
|
|
5
|
-
*/
|
|
6
|
-
export { type PageType, type LayoutSize, type BackgroundStyle, type LayoutAlignment, type BaseLayoutOptions, baseLayout, createLayoutBuilder, escapeHtml, } from './base';
|
|
7
|
-
export { type AuthLayoutOptions, type ConsentLayoutOptions, type ErrorLayoutOptions, type LoadingLayoutOptions, type SuccessLayoutOptions, type WidgetLayoutOptions, authLayout, consentLayout, errorLayout, loadingLayout, successLayout, widgetLayout, authLayoutBuilder, consentLayoutBuilder, errorLayoutBuilder, } from './presets';
|
|
8
|
-
//# sourceMappingURL=index.d.ts.map
|
package/layouts/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layouts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,UAAU,EACV,mBAAmB,EACnB,UAAU,GACX,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,UAAU,EACV,aAAa,EACb,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,WAAW,CAAC"}
|
package/layouts/index.js
DELETED
|
@@ -1,437 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// libs/ui/src/layouts/index.ts
|
|
21
|
-
var layouts_exports = {};
|
|
22
|
-
__export(layouts_exports, {
|
|
23
|
-
authLayout: () => authLayout,
|
|
24
|
-
authLayoutBuilder: () => authLayoutBuilder,
|
|
25
|
-
baseLayout: () => baseLayout,
|
|
26
|
-
consentLayout: () => consentLayout,
|
|
27
|
-
consentLayoutBuilder: () => consentLayoutBuilder,
|
|
28
|
-
createLayoutBuilder: () => createLayoutBuilder,
|
|
29
|
-
errorLayout: () => errorLayout,
|
|
30
|
-
errorLayoutBuilder: () => errorLayoutBuilder,
|
|
31
|
-
escapeHtml: () => import_utils2.escapeHtml,
|
|
32
|
-
loadingLayout: () => loadingLayout,
|
|
33
|
-
successLayout: () => successLayout,
|
|
34
|
-
widgetLayout: () => widgetLayout
|
|
35
|
-
});
|
|
36
|
-
module.exports = __toCommonJS(layouts_exports);
|
|
37
|
-
|
|
38
|
-
// libs/ui/src/layouts/base.ts
|
|
39
|
-
var import_theme = require("@frontmcp/uipack/theme");
|
|
40
|
-
var import_utils = require("@frontmcp/uipack/utils");
|
|
41
|
-
var import_utils2 = require("@frontmcp/uipack/utils");
|
|
42
|
-
function getSizeClass(size) {
|
|
43
|
-
const sizeMap = {
|
|
44
|
-
xs: "max-w-sm",
|
|
45
|
-
sm: "max-w-md",
|
|
46
|
-
md: "max-w-lg",
|
|
47
|
-
lg: "max-w-xl",
|
|
48
|
-
xl: "max-w-2xl",
|
|
49
|
-
"2xl": "max-w-3xl",
|
|
50
|
-
"3xl": "max-w-4xl",
|
|
51
|
-
full: "max-w-full"
|
|
52
|
-
};
|
|
53
|
-
return sizeMap[size];
|
|
54
|
-
}
|
|
55
|
-
function getAlignmentClasses(alignment) {
|
|
56
|
-
const alignMap = {
|
|
57
|
-
center: "min-h-screen flex items-center justify-center",
|
|
58
|
-
top: "min-h-screen flex flex-col items-center pt-12",
|
|
59
|
-
start: "min-h-screen"
|
|
60
|
-
};
|
|
61
|
-
return alignMap[alignment];
|
|
62
|
-
}
|
|
63
|
-
function getBackgroundClasses(background) {
|
|
64
|
-
switch (background) {
|
|
65
|
-
case "gradient":
|
|
66
|
-
return "bg-gradient-to-br from-primary to-secondary";
|
|
67
|
-
case "pattern":
|
|
68
|
-
return 'bg-surface bg-[url("data:image/svg+xml,...")]';
|
|
69
|
-
// Pattern would be defined
|
|
70
|
-
case "solid":
|
|
71
|
-
return "bg-background";
|
|
72
|
-
case "none":
|
|
73
|
-
default:
|
|
74
|
-
return "";
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
function buildMetaTags(options) {
|
|
78
|
-
const tags = [];
|
|
79
|
-
if (options.description) {
|
|
80
|
-
tags.push(`<meta name="description" content="${(0, import_utils.escapeHtml)(options.description)}">`);
|
|
81
|
-
}
|
|
82
|
-
if (options.og) {
|
|
83
|
-
if (options.og.title) {
|
|
84
|
-
tags.push(`<meta property="og:title" content="${(0, import_utils.escapeHtml)(options.og.title)}">`);
|
|
85
|
-
}
|
|
86
|
-
if (options.og.description) {
|
|
87
|
-
tags.push(`<meta property="og:description" content="${(0, import_utils.escapeHtml)(options.og.description)}">`);
|
|
88
|
-
}
|
|
89
|
-
if (options.og.image) {
|
|
90
|
-
tags.push(`<meta property="og:image" content="${(0, import_utils.escapeHtml)(options.og.image)}">`);
|
|
91
|
-
}
|
|
92
|
-
if (options.og.type) {
|
|
93
|
-
tags.push(`<meta property="og:type" content="${(0, import_utils.escapeHtml)(options.og.type)}">`);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
if (options.favicon) {
|
|
97
|
-
tags.push(`<link rel="icon" href="${(0, import_utils.escapeHtml)(options.favicon)}">`);
|
|
98
|
-
}
|
|
99
|
-
return tags.join("\n ");
|
|
100
|
-
}
|
|
101
|
-
function buildBodyAttrs(attrs) {
|
|
102
|
-
if (!attrs) return "";
|
|
103
|
-
return Object.entries(attrs).map(([key, value]) => `${key}="${(0, import_utils.escapeHtml)(value)}"`).join(" ");
|
|
104
|
-
}
|
|
105
|
-
function baseLayout(content, options) {
|
|
106
|
-
const {
|
|
107
|
-
title,
|
|
108
|
-
pageType: _pageType = "custom",
|
|
109
|
-
size = "md",
|
|
110
|
-
alignment = "center",
|
|
111
|
-
background = "solid",
|
|
112
|
-
platform = import_theme.OPENAI_PLATFORM,
|
|
113
|
-
theme: themeOverrides,
|
|
114
|
-
includeHtmx,
|
|
115
|
-
includeAlpine = false,
|
|
116
|
-
includeIcons = false,
|
|
117
|
-
headExtra = "",
|
|
118
|
-
bodyAttrs,
|
|
119
|
-
bodyClass = "",
|
|
120
|
-
titleSuffix = "FrontMCP"
|
|
121
|
-
} = options;
|
|
122
|
-
const theme = themeOverrides ? (0, import_theme.mergeThemes)(import_theme.DEFAULT_THEME, themeOverrides) : import_theme.DEFAULT_THEME;
|
|
123
|
-
const shouldIncludeHtmx = includeHtmx ?? platform.supportsHtmx;
|
|
124
|
-
const useCdn = (0, import_theme.canUseCdn)(platform);
|
|
125
|
-
const useInline = (0, import_theme.needsInlineScripts)(platform);
|
|
126
|
-
const fontPreconnect = useCdn ? (0, import_theme.buildFontPreconnect)() : "";
|
|
127
|
-
const fontStylesheets = useCdn ? (0, import_theme.buildFontStylesheets)({ inter: true }) : "";
|
|
128
|
-
const scripts = (0, import_theme.buildCdnScripts)({
|
|
129
|
-
tailwind: platform.supportsTailwind,
|
|
130
|
-
htmx: shouldIncludeHtmx,
|
|
131
|
-
alpine: includeAlpine,
|
|
132
|
-
icons: includeIcons,
|
|
133
|
-
inline: useInline
|
|
134
|
-
});
|
|
135
|
-
const themeCss = (0, import_theme.buildThemeCss)(theme);
|
|
136
|
-
const customCss = theme.customCss || "";
|
|
137
|
-
const styleBlock = platform.supportsTailwind ? `<style type="text/tailwindcss">
|
|
138
|
-
@theme {
|
|
139
|
-
${themeCss}
|
|
140
|
-
}
|
|
141
|
-
${customCss}
|
|
142
|
-
</style>` : "";
|
|
143
|
-
const sizeClass = getSizeClass(size);
|
|
144
|
-
const alignmentClasses = getAlignmentClasses(alignment);
|
|
145
|
-
const backgroundClasses = getBackgroundClasses(background);
|
|
146
|
-
const allBodyClasses = [backgroundClasses, "font-sans antialiased", bodyClass].filter(Boolean).join(" ");
|
|
147
|
-
const metaTags = buildMetaTags(options);
|
|
148
|
-
const bodyAttrStr = buildBodyAttrs(bodyAttrs);
|
|
149
|
-
const wrappedContent = alignment === "center" ? `<div class="${alignmentClasses} p-4">
|
|
150
|
-
<div class="w-full ${sizeClass}">
|
|
151
|
-
${content}
|
|
152
|
-
</div>
|
|
153
|
-
</div>` : `<div class="${alignmentClasses}">
|
|
154
|
-
<div class="w-full ${sizeClass} mx-auto px-4 py-8">
|
|
155
|
-
${content}
|
|
156
|
-
</div>
|
|
157
|
-
</div>`;
|
|
158
|
-
return `<!DOCTYPE html>
|
|
159
|
-
<html lang="en">
|
|
160
|
-
<head>
|
|
161
|
-
<meta charset="UTF-8">
|
|
162
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
163
|
-
<title>${(0, import_utils.escapeHtml)(title)}${titleSuffix ? ` - ${(0, import_utils.escapeHtml)(titleSuffix)}` : ""}</title>
|
|
164
|
-
${metaTags}
|
|
165
|
-
|
|
166
|
-
<!-- Fonts -->
|
|
167
|
-
${fontPreconnect}
|
|
168
|
-
${fontStylesheets}
|
|
169
|
-
|
|
170
|
-
<!-- Tailwind CSS -->
|
|
171
|
-
${scripts}
|
|
172
|
-
${styleBlock}
|
|
173
|
-
|
|
174
|
-
${headExtra}
|
|
175
|
-
</head>
|
|
176
|
-
<body class="${(0, import_utils.escapeHtml)(allBodyClasses)}"${bodyAttrStr ? ` ${bodyAttrStr}` : ""}>
|
|
177
|
-
${wrappedContent}
|
|
178
|
-
</body>
|
|
179
|
-
</html>`;
|
|
180
|
-
}
|
|
181
|
-
function createLayoutBuilder(defaults) {
|
|
182
|
-
return (content, options = {}) => {
|
|
183
|
-
let mergedTheme = import_theme.DEFAULT_THEME;
|
|
184
|
-
if (defaults.theme) {
|
|
185
|
-
mergedTheme = (0, import_theme.mergeThemes)(mergedTheme, defaults.theme);
|
|
186
|
-
}
|
|
187
|
-
if (options.theme) {
|
|
188
|
-
mergedTheme = (0, import_theme.mergeThemes)(mergedTheme, options.theme);
|
|
189
|
-
}
|
|
190
|
-
const merged = {
|
|
191
|
-
...defaults,
|
|
192
|
-
...options,
|
|
193
|
-
theme: mergedTheme
|
|
194
|
-
};
|
|
195
|
-
if (!merged.title) {
|
|
196
|
-
throw new Error("createLayoutBuilder: title is required either in defaults or options");
|
|
197
|
-
}
|
|
198
|
-
return baseLayout(content, merged);
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// libs/ui/src/layouts/presets.ts
|
|
203
|
-
function authLayout(content, options) {
|
|
204
|
-
const { showBranding = true, logo, footer, ...baseOptions } = options;
|
|
205
|
-
const brandingHtml = showBranding && logo ? `<div class="text-center mb-8">${logo}</div>` : showBranding ? `<div class="text-center mb-8">
|
|
206
|
-
<div class="inline-flex items-center justify-center w-16 h-16 rounded-xl bg-gradient-to-br from-primary to-secondary mb-4">
|
|
207
|
-
<svg class="w-8 h-8 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
208
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"/>
|
|
209
|
-
</svg>
|
|
210
|
-
</div>
|
|
211
|
-
</div>` : "";
|
|
212
|
-
const footerHtml = footer ? `<div class="mt-8 text-center text-sm text-text-secondary">${footer}</div>` : "";
|
|
213
|
-
const wrappedContent = `
|
|
214
|
-
<div class="bg-white rounded-2xl shadow-xl p-8">
|
|
215
|
-
${brandingHtml}
|
|
216
|
-
${content}
|
|
217
|
-
</div>
|
|
218
|
-
${footerHtml}
|
|
219
|
-
`;
|
|
220
|
-
return baseLayout(wrappedContent, {
|
|
221
|
-
...baseOptions,
|
|
222
|
-
pageType: "auth",
|
|
223
|
-
size: baseOptions.size ?? "sm",
|
|
224
|
-
alignment: "center",
|
|
225
|
-
background: "gradient"
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
function consentLayout(content, options) {
|
|
229
|
-
const { clientName, clientIcon, userInfo, ...baseOptions } = options;
|
|
230
|
-
const headerHtml = clientName ? `<div class="text-center mb-6">
|
|
231
|
-
${clientIcon ? `<img src="${(0, import_utils2.escapeHtml)(clientIcon)}" alt="${(0, import_utils2.escapeHtml)(
|
|
232
|
-
clientName
|
|
233
|
-
)}" class="w-16 h-16 rounded-xl mx-auto mb-4">` : `<div class="inline-flex items-center justify-center w-16 h-16 rounded-xl bg-gradient-to-br from-primary to-secondary text-white font-bold text-2xl mx-auto mb-4">
|
|
234
|
-
${(0, import_utils2.escapeHtml)(clientName.charAt(0).toUpperCase())}
|
|
235
|
-
</div>`}
|
|
236
|
-
<h1 class="text-2xl font-bold text-text-primary">${(0, import_utils2.escapeHtml)(clientName)}</h1>
|
|
237
|
-
</div>` : "";
|
|
238
|
-
const userInfoHtml = userInfo ? `<div class="flex items-center gap-3 p-3 bg-gray-50 rounded-lg mb-6">
|
|
239
|
-
${userInfo.avatar ? `<img src="${(0, import_utils2.escapeHtml)(userInfo.avatar)}" class="w-10 h-10 rounded-full">` : `<div class="w-10 h-10 rounded-full bg-primary text-white flex items-center justify-center font-medium">
|
|
240
|
-
${(0, import_utils2.escapeHtml)((userInfo.name || userInfo.email || "U").charAt(0).toUpperCase())}
|
|
241
|
-
</div>`}
|
|
242
|
-
<div>
|
|
243
|
-
${userInfo.name ? `<div class="font-medium text-text-primary">${(0, import_utils2.escapeHtml)(userInfo.name)}</div>` : ""}
|
|
244
|
-
${userInfo.email ? `<div class="text-sm text-text-secondary">${(0, import_utils2.escapeHtml)(userInfo.email)}</div>` : ""}
|
|
245
|
-
</div>
|
|
246
|
-
</div>` : "";
|
|
247
|
-
const wrappedContent = `
|
|
248
|
-
${headerHtml}
|
|
249
|
-
${userInfoHtml}
|
|
250
|
-
${content}
|
|
251
|
-
`;
|
|
252
|
-
return baseLayout(wrappedContent, {
|
|
253
|
-
...baseOptions,
|
|
254
|
-
pageType: "consent",
|
|
255
|
-
size: baseOptions.size ?? "lg",
|
|
256
|
-
alignment: "top",
|
|
257
|
-
background: "solid"
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
function errorLayout(content, options) {
|
|
261
|
-
const {
|
|
262
|
-
errorCode,
|
|
263
|
-
errorTitle = "Something went wrong",
|
|
264
|
-
errorMessage,
|
|
265
|
-
showRetry = true,
|
|
266
|
-
retryUrl,
|
|
267
|
-
showHome = true,
|
|
268
|
-
homeUrl = "/",
|
|
269
|
-
...baseOptions
|
|
270
|
-
} = options;
|
|
271
|
-
const errorHtml = `
|
|
272
|
-
<div class="text-center">
|
|
273
|
-
<!-- Error icon -->
|
|
274
|
-
<div class="inline-flex items-center justify-center w-20 h-20 rounded-full bg-danger/10 mb-6">
|
|
275
|
-
<svg class="w-10 h-10 text-danger" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
276
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/>
|
|
277
|
-
</svg>
|
|
278
|
-
</div>
|
|
279
|
-
|
|
280
|
-
${errorCode ? `<p class="text-6xl font-bold text-danger mb-2">${(0, import_utils2.escapeHtml)(errorCode)}</p>` : ""}
|
|
281
|
-
<h1 class="text-2xl font-bold text-text-primary mb-4">${(0, import_utils2.escapeHtml)(errorTitle)}</h1>
|
|
282
|
-
${errorMessage ? `<p class="text-text-secondary mb-8">${(0, import_utils2.escapeHtml)(errorMessage)}</p>` : ""}
|
|
283
|
-
|
|
284
|
-
${content}
|
|
285
|
-
|
|
286
|
-
<div class="flex gap-4 justify-center mt-8">
|
|
287
|
-
${showRetry ? `<button onclick="${retryUrl ? `window.location.href='${(0, import_utils2.escapeHtml)(retryUrl)}'` : "window.location.reload()"}" class="px-6 py-3 bg-primary hover:bg-primary/90 text-white font-medium rounded-lg transition-colors">Try Again</button>` : ""}
|
|
288
|
-
${showHome ? `<a href="${(0, import_utils2.escapeHtml)(
|
|
289
|
-
homeUrl
|
|
290
|
-
)}" class="px-6 py-3 bg-gray-100 hover:bg-gray-200 text-text-primary font-medium rounded-lg transition-colors">Go Home</a>` : ""}
|
|
291
|
-
</div>
|
|
292
|
-
</div>
|
|
293
|
-
`;
|
|
294
|
-
return baseLayout(errorHtml, {
|
|
295
|
-
...baseOptions,
|
|
296
|
-
pageType: "error",
|
|
297
|
-
size: "sm",
|
|
298
|
-
alignment: "center",
|
|
299
|
-
background: "solid",
|
|
300
|
-
title: baseOptions.title ?? errorTitle
|
|
301
|
-
});
|
|
302
|
-
}
|
|
303
|
-
function loadingLayout(content, options) {
|
|
304
|
-
const { message = "Loading...", showSpinner = true, showProgress = false, progress = 0, ...baseOptions } = options;
|
|
305
|
-
const spinnerHtml = showSpinner ? `<div class="inline-flex items-center justify-center w-16 h-16 mb-6">
|
|
306
|
-
<svg class="animate-spin w-12 h-12 text-primary" fill="none" viewBox="0 0 24 24">
|
|
307
|
-
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
|
|
308
|
-
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
|
|
309
|
-
</svg>
|
|
310
|
-
</div>` : "";
|
|
311
|
-
const progressHtml = showProgress ? `<div class="w-full bg-gray-200 rounded-full h-2 mb-4">
|
|
312
|
-
<div class="bg-primary h-2 rounded-full transition-all duration-300" style="width: ${progress}%"></div>
|
|
313
|
-
</div>` : "";
|
|
314
|
-
const loadingHtml = `
|
|
315
|
-
<div class="text-center">
|
|
316
|
-
${spinnerHtml}
|
|
317
|
-
<h2 class="text-xl font-medium text-text-primary mb-2">${(0, import_utils2.escapeHtml)(message)}</h2>
|
|
318
|
-
${progressHtml}
|
|
319
|
-
${content}
|
|
320
|
-
</div>
|
|
321
|
-
`;
|
|
322
|
-
return baseLayout(loadingHtml, {
|
|
323
|
-
...baseOptions,
|
|
324
|
-
pageType: "loading",
|
|
325
|
-
size: "sm",
|
|
326
|
-
alignment: "center",
|
|
327
|
-
background: "solid",
|
|
328
|
-
title: baseOptions.title ?? "Loading"
|
|
329
|
-
});
|
|
330
|
-
}
|
|
331
|
-
function successLayout(content, options) {
|
|
332
|
-
const {
|
|
333
|
-
successTitle = "Success!",
|
|
334
|
-
successMessage,
|
|
335
|
-
continueText = "Continue",
|
|
336
|
-
continueUrl,
|
|
337
|
-
autoClose,
|
|
338
|
-
...baseOptions
|
|
339
|
-
} = options;
|
|
340
|
-
const autoCloseScript = autoClose ? `<script>
|
|
341
|
-
let countdown = ${autoClose};
|
|
342
|
-
const countdownEl = document.getElementById('countdown');
|
|
343
|
-
const interval = setInterval(() => {
|
|
344
|
-
countdown--;
|
|
345
|
-
if (countdownEl) countdownEl.textContent = countdown;
|
|
346
|
-
if (countdown <= 0) {
|
|
347
|
-
clearInterval(interval);
|
|
348
|
-
${continueUrl ? `window.location.href = '${(0, import_utils2.escapeHtml)(continueUrl)}';` : "window.close();"}
|
|
349
|
-
}
|
|
350
|
-
}, 1000);
|
|
351
|
-
</script>` : "";
|
|
352
|
-
const successHtml = `
|
|
353
|
-
<div class="text-center">
|
|
354
|
-
<!-- Success icon -->
|
|
355
|
-
<div class="inline-flex items-center justify-center w-20 h-20 rounded-full bg-success/10 mb-6">
|
|
356
|
-
<svg class="w-10 h-10 text-success" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
357
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
|
|
358
|
-
</svg>
|
|
359
|
-
</div>
|
|
360
|
-
|
|
361
|
-
<h1 class="text-2xl font-bold text-text-primary mb-4">${(0, import_utils2.escapeHtml)(successTitle)}</h1>
|
|
362
|
-
${successMessage ? `<p class="text-text-secondary mb-8">${(0, import_utils2.escapeHtml)(successMessage)}</p>` : ""}
|
|
363
|
-
|
|
364
|
-
${content}
|
|
365
|
-
|
|
366
|
-
${continueUrl ? `<a href="${(0, import_utils2.escapeHtml)(
|
|
367
|
-
continueUrl
|
|
368
|
-
)}" class="inline-block mt-6 px-6 py-3 bg-primary hover:bg-primary/90 text-white font-medium rounded-lg transition-colors">${(0, import_utils2.escapeHtml)(
|
|
369
|
-
continueText
|
|
370
|
-
)}</a>` : ""}
|
|
371
|
-
|
|
372
|
-
${autoClose ? `<p class="mt-4 text-sm text-text-secondary">Closing in <span id="countdown">${autoClose}</span> seconds...</p>` : ""}
|
|
373
|
-
</div>
|
|
374
|
-
${autoCloseScript}
|
|
375
|
-
`;
|
|
376
|
-
return baseLayout(successHtml, {
|
|
377
|
-
...baseOptions,
|
|
378
|
-
pageType: "success",
|
|
379
|
-
size: "sm",
|
|
380
|
-
alignment: "center",
|
|
381
|
-
background: "solid",
|
|
382
|
-
title: baseOptions.title ?? successTitle
|
|
383
|
-
});
|
|
384
|
-
}
|
|
385
|
-
function widgetLayout(content, options) {
|
|
386
|
-
const { maxWidth = "100%", showBorder = false, transparent = true, ...baseOptions } = options;
|
|
387
|
-
const containerClasses = [
|
|
388
|
-
"widget-container",
|
|
389
|
-
showBorder ? "border border-border rounded-lg" : "",
|
|
390
|
-
transparent ? "" : "bg-surface"
|
|
391
|
-
].filter(Boolean).join(" ");
|
|
392
|
-
const wrappedContent = `
|
|
393
|
-
<div class="${containerClasses}" style="max-width: ${(0, import_utils2.escapeHtml)(maxWidth)}">
|
|
394
|
-
${content}
|
|
395
|
-
</div>
|
|
396
|
-
`;
|
|
397
|
-
return baseLayout(wrappedContent, {
|
|
398
|
-
...baseOptions,
|
|
399
|
-
pageType: "widget",
|
|
400
|
-
size: "full",
|
|
401
|
-
alignment: "start",
|
|
402
|
-
background: "none"
|
|
403
|
-
});
|
|
404
|
-
}
|
|
405
|
-
var authLayoutBuilder = createLayoutBuilder({
|
|
406
|
-
pageType: "auth",
|
|
407
|
-
size: "sm",
|
|
408
|
-
alignment: "center",
|
|
409
|
-
background: "gradient"
|
|
410
|
-
});
|
|
411
|
-
var consentLayoutBuilder = createLayoutBuilder({
|
|
412
|
-
pageType: "consent",
|
|
413
|
-
size: "lg",
|
|
414
|
-
alignment: "top",
|
|
415
|
-
background: "solid"
|
|
416
|
-
});
|
|
417
|
-
var errorLayoutBuilder = createLayoutBuilder({
|
|
418
|
-
pageType: "error",
|
|
419
|
-
size: "sm",
|
|
420
|
-
alignment: "center",
|
|
421
|
-
background: "solid"
|
|
422
|
-
});
|
|
423
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
424
|
-
0 && (module.exports = {
|
|
425
|
-
authLayout,
|
|
426
|
-
authLayoutBuilder,
|
|
427
|
-
baseLayout,
|
|
428
|
-
consentLayout,
|
|
429
|
-
consentLayoutBuilder,
|
|
430
|
-
createLayoutBuilder,
|
|
431
|
-
errorLayout,
|
|
432
|
-
errorLayoutBuilder,
|
|
433
|
-
escapeHtml,
|
|
434
|
-
loadingLayout,
|
|
435
|
-
successLayout,
|
|
436
|
-
widgetLayout
|
|
437
|
-
});
|
package/layouts/presets.d.ts
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Layout Presets
|
|
3
|
-
*
|
|
4
|
-
* Pre-configured layouts for common page types:
|
|
5
|
-
* - Auth pages (login, register, etc.)
|
|
6
|
-
* - Consent pages (OAuth, permissions)
|
|
7
|
-
* - Error pages
|
|
8
|
-
* - Loading states
|
|
9
|
-
* - Success pages
|
|
10
|
-
* - Widget mode (embedded)
|
|
11
|
-
* - Resource display (OpenAI SDK)
|
|
12
|
-
*/
|
|
13
|
-
import { type BaseLayoutOptions } from './base';
|
|
14
|
-
/**
|
|
15
|
-
* Auth layout options
|
|
16
|
-
*/
|
|
17
|
-
export interface AuthLayoutOptions extends Omit<BaseLayoutOptions, 'pageType'> {
|
|
18
|
-
/** Show branding/logo */
|
|
19
|
-
showBranding?: boolean;
|
|
20
|
-
/** Custom logo HTML */
|
|
21
|
-
logo?: string;
|
|
22
|
-
/** Footer content */
|
|
23
|
-
footer?: string;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Build auth page layout (login, register, etc.)
|
|
27
|
-
*/
|
|
28
|
-
export declare function authLayout(content: string, options: AuthLayoutOptions): string;
|
|
29
|
-
/**
|
|
30
|
-
* Consent layout options
|
|
31
|
-
*/
|
|
32
|
-
export interface ConsentLayoutOptions extends Omit<BaseLayoutOptions, 'pageType'> {
|
|
33
|
-
/** App/client name requesting consent */
|
|
34
|
-
clientName?: string;
|
|
35
|
-
/** App icon URL */
|
|
36
|
-
clientIcon?: string;
|
|
37
|
-
/** User info display */
|
|
38
|
-
userInfo?: {
|
|
39
|
-
name?: string;
|
|
40
|
-
email?: string;
|
|
41
|
-
avatar?: string;
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Build consent page layout (OAuth consent, permissions)
|
|
46
|
-
*/
|
|
47
|
-
export declare function consentLayout(content: string, options: ConsentLayoutOptions): string;
|
|
48
|
-
/**
|
|
49
|
-
* Error layout options
|
|
50
|
-
*/
|
|
51
|
-
export interface ErrorLayoutOptions extends Omit<BaseLayoutOptions, 'pageType'> {
|
|
52
|
-
/** Error code */
|
|
53
|
-
errorCode?: string;
|
|
54
|
-
/** Error title */
|
|
55
|
-
errorTitle?: string;
|
|
56
|
-
/** Error message */
|
|
57
|
-
errorMessage?: string;
|
|
58
|
-
/** Show retry button */
|
|
59
|
-
showRetry?: boolean;
|
|
60
|
-
/** Retry URL */
|
|
61
|
-
retryUrl?: string;
|
|
62
|
-
/** Show home button */
|
|
63
|
-
showHome?: boolean;
|
|
64
|
-
/** Home URL */
|
|
65
|
-
homeUrl?: string;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Build error page layout
|
|
69
|
-
*/
|
|
70
|
-
export declare function errorLayout(content: string, options: ErrorLayoutOptions): string;
|
|
71
|
-
/**
|
|
72
|
-
* Loading layout options
|
|
73
|
-
*/
|
|
74
|
-
export interface LoadingLayoutOptions extends Omit<BaseLayoutOptions, 'pageType'> {
|
|
75
|
-
/** Loading message */
|
|
76
|
-
message?: string;
|
|
77
|
-
/** Show spinner */
|
|
78
|
-
showSpinner?: boolean;
|
|
79
|
-
/** Show progress bar */
|
|
80
|
-
showProgress?: boolean;
|
|
81
|
-
/** Progress value (0-100) */
|
|
82
|
-
progress?: number;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Build loading page layout
|
|
86
|
-
*/
|
|
87
|
-
export declare function loadingLayout(content: string, options: LoadingLayoutOptions): string;
|
|
88
|
-
/**
|
|
89
|
-
* Success layout options
|
|
90
|
-
*/
|
|
91
|
-
export interface SuccessLayoutOptions extends Omit<BaseLayoutOptions, 'pageType'> {
|
|
92
|
-
/** Success title */
|
|
93
|
-
successTitle?: string;
|
|
94
|
-
/** Success message */
|
|
95
|
-
successMessage?: string;
|
|
96
|
-
/** Continue button text */
|
|
97
|
-
continueText?: string;
|
|
98
|
-
/** Continue URL */
|
|
99
|
-
continueUrl?: string;
|
|
100
|
-
/** Auto-close countdown (seconds) */
|
|
101
|
-
autoClose?: number;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Build success page layout
|
|
105
|
-
*/
|
|
106
|
-
export declare function successLayout(content: string, options: SuccessLayoutOptions): string;
|
|
107
|
-
/**
|
|
108
|
-
* Widget layout options (for embedded widgets)
|
|
109
|
-
*/
|
|
110
|
-
export interface WidgetLayoutOptions extends Omit<BaseLayoutOptions, 'pageType' | 'alignment'> {
|
|
111
|
-
/** Widget max width */
|
|
112
|
-
maxWidth?: string;
|
|
113
|
-
/** Show border */
|
|
114
|
-
showBorder?: boolean;
|
|
115
|
-
/** Transparent background */
|
|
116
|
-
transparent?: boolean;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Build widget layout (for embedding)
|
|
120
|
-
*/
|
|
121
|
-
export declare function widgetLayout(content: string, options: WidgetLayoutOptions): string;
|
|
122
|
-
/**
|
|
123
|
-
* Pre-configured auth layout builder
|
|
124
|
-
*/
|
|
125
|
-
export declare const authLayoutBuilder: (content: string, options?: Partial<BaseLayoutOptions>) => string;
|
|
126
|
-
/**
|
|
127
|
-
* Pre-configured consent layout builder
|
|
128
|
-
*/
|
|
129
|
-
export declare const consentLayoutBuilder: (content: string, options?: Partial<BaseLayoutOptions>) => string;
|
|
130
|
-
/**
|
|
131
|
-
* Pre-configured error layout builder
|
|
132
|
-
*/
|
|
133
|
-
export declare const errorLayoutBuilder: (content: string, options?: Partial<BaseLayoutOptions>) => string;
|
|
134
|
-
//# sourceMappingURL=presets.d.ts.map
|
package/layouts/presets.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/layouts/presets.ts"],"names":[],"mappings":"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"}
|