@admin-layout/tailwind-ui 12.2.4-alpha.97 → 12.2.5-alpha.10
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/lib/components/ErrorHandlers/ApplicationErrorHandler.d.ts.map +1 -1
- package/lib/components/ErrorHandlers/ApplicationErrorHandler.js +5 -1
- package/lib/components/ErrorHandlers/ApplicationErrorHandler.js.map +1 -1
- package/lib/components/ErrorHandlers/RemixErrorBoundary.d.ts +11 -0
- package/lib/components/ErrorHandlers/RemixErrorBoundary.d.ts.map +1 -1
- package/lib/components/ErrorHandlers/RemixErrorBoundary.js +134 -3
- package/lib/components/ErrorHandlers/RemixErrorBoundary.js.map +1 -1
- package/lib/components/ErrorHandlers/SPAErrorBoundary.d.ts.map +1 -1
- package/lib/components/ErrorHandlers/SPAErrorBoundary.js +5 -1
- package/lib/components/ErrorHandlers/SPAErrorBoundary.js.map +1 -1
- package/lib/components/ErrorHandlers/__tests__/RemixErrorBoundary.test.d.ts +2 -0
- package/lib/components/ErrorHandlers/__tests__/RemixErrorBoundary.test.d.ts.map +1 -0
- package/lib/components/ErrorPages/403.d.ts.map +1 -1
- package/lib/components/ErrorPages/403.js +3 -2
- package/lib/components/ErrorPages/403.js.map +1 -1
- package/lib/components/ErrorPages/404.d.ts.map +1 -1
- package/lib/components/ErrorPages/404.js +3 -2
- package/lib/components/ErrorPages/404.js.map +1 -1
- package/lib/components/ErrorPages/500.d.ts.map +1 -1
- package/lib/components/ErrorPages/500.js +3 -2
- package/lib/components/ErrorPages/500.js.map +1 -1
- package/lib/components/ErrorPages/useErrorAsset.d.ts +11 -0
- package/lib/components/ErrorPages/useErrorAsset.d.ts.map +1 -0
- package/lib/components/ErrorPages/useErrorAsset.js +24 -0
- package/lib/components/ErrorPages/useErrorAsset.js.map +1 -0
- package/lib/components/InputToolBar/InputToolBar.d.ts.map +1 -1
- package/lib/components/InputToolBar/InputToolBar.js +73 -31
- package/lib/components/InputToolBar/InputToolBar.js.map +1 -1
- package/lib/components/InputToolBar/__tests__/RightOverflowMenu.test.d.ts +8 -0
- package/lib/components/InputToolBar/__tests__/RightOverflowMenu.test.d.ts.map +1 -0
- package/lib/components/InputToolBar/types.d.ts +2 -0
- package/lib/components/InputToolBar/types.d.ts.map +1 -1
- package/lib/components/PageContainer/PageContainer.d.ts +9 -0
- package/lib/components/PageContainer/PageContainer.d.ts.map +1 -1
- package/lib/components/PageContainer/PageContainer.js +24 -8
- package/lib/components/PageContainer/PageContainer.js.map +1 -1
- package/lib/components/PageContainer/__tests__/PageContainer.test.d.ts +7 -0
- package/lib/components/PageContainer/__tests__/PageContainer.test.d.ts.map +1 -0
- package/lib/components/RJSFPreview/PreviewAsyncDropdown.js +111 -0
- package/lib/components/RJSFPreview/PreviewAsyncDropdown.js.map +1 -0
- package/lib/components/RJSFPreview/PreviewCheckboxWidget.js +95 -0
- package/lib/components/RJSFPreview/PreviewCheckboxWidget.js.map +1 -0
- package/lib/components/RJSFPreview/PreviewCustomFieldTemplate.js +235 -0
- package/lib/components/RJSFPreview/PreviewCustomFieldTemplate.js.map +1 -0
- package/lib/components/RJSFPreview/PreviewDateWidget.js +178 -0
- package/lib/components/RJSFPreview/PreviewDateWidget.js.map +1 -0
- package/lib/components/RJSFPreview/PreviewDialog.js +21 -0
- package/lib/components/RJSFPreview/PreviewDialog.js.map +1 -0
- package/lib/components/RJSFPreview/PreviewDropdownWidget.js +66 -0
- package/lib/components/RJSFPreview/PreviewDropdownWidget.js.map +1 -0
- package/lib/components/RJSFPreview/PreviewFieldTemplate.js +69 -0
- package/lib/components/RJSFPreview/PreviewFieldTemplate.js.map +1 -0
- package/lib/components/RJSFPreview/PreviewFileUploadWidget.js +113 -0
- package/lib/components/RJSFPreview/PreviewFileUploadWidget.js.map +1 -0
- package/lib/components/RJSFPreview/PreviewFormRenderer.js +195 -0
- package/lib/components/RJSFPreview/PreviewFormRenderer.js.map +1 -0
- package/lib/components/RJSFPreview/PreviewImageUploadWidget.js +104 -0
- package/lib/components/RJSFPreview/PreviewImageUploadWidget.js.map +1 -0
- package/lib/components/RJSFPreview/PreviewInputWidget.js +70 -0
- package/lib/components/RJSFPreview/PreviewInputWidget.js.map +1 -0
- package/lib/components/RJSFPreview/PreviewObjectFieldTemplate.js +33 -0
- package/lib/components/RJSFPreview/PreviewObjectFieldTemplate.js.map +1 -0
- package/lib/components/RJSFPreview/PreviewRadioWidget.js +55 -0
- package/lib/components/RJSFPreview/PreviewRadioWidget.js.map +1 -0
- package/lib/components/RJSFPreview/PreviewStepper.js +40 -0
- package/lib/components/RJSFPreview/PreviewStepper.js.map +1 -0
- package/lib/components/RJSFPreview/PreviewSwitchWidget.js +75 -0
- package/lib/components/RJSFPreview/PreviewSwitchWidget.js.map +1 -0
- package/lib/components/RJSFPreview/PreviewTab.js +358 -0
- package/lib/components/RJSFPreview/PreviewTab.js.map +1 -0
- package/lib/components/RJSFPreview/PreviewTextareaWidget.js +45 -0
- package/lib/components/RJSFPreview/PreviewTextareaWidget.js.map +1 -0
- package/lib/components/RJSFPreview/generateSchemaWithInputs.js +134 -0
- package/lib/components/RJSFPreview/generateSchemaWithInputs.js.map +1 -0
- package/lib/components/RJSFPreview/index.d.ts +34 -0
- package/lib/components/RJSFPreview/index.d.ts.map +1 -1
- package/lib/components/RJSFPreview/index.js +1 -0
- package/lib/components/RJSFPreview/index.js.map +1 -0
- package/lib/components/ThemeProvider/ThemeProvider.js +1 -1
- package/lib/components/index.d.ts.map +1 -1
- package/lib/hooks/__tests__/useMediaQuery.test.d.ts +2 -0
- package/lib/hooks/__tests__/useMediaQuery.test.d.ts.map +1 -0
- package/lib/hooks/useMediaQuery.d.ts +9 -2
- package/lib/hooks/useMediaQuery.d.ts.map +1 -1
- package/lib/hooks/useMediaQuery.js +39 -31
- package/lib/hooks/useMediaQuery.js.map +1 -1
- package/lib/hooks/useWindowSize.d.ts +4 -0
- package/lib/hooks/useWindowSize.d.ts.map +1 -1
- package/lib/hooks/useWindowSize.js +13 -19
- package/lib/hooks/useWindowSize.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/shardui/chart.d.ts +1 -1
- package/lib/shardui/resizable.d.ts +1 -1
- package/package.json +20 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationErrorHandler.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorHandlers/ApplicationErrorHandler.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ApplicationErrorHandler.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorHandlers/ApplicationErrorHandler.tsx"],"names":[],"mappings":"AAqBA,eAAO,MAAM,uBAAuB,GAAI,UAAK,4CAG5C,CAAC"}
|
|
@@ -8,7 +8,11 @@ import {jsx}from'react/jsx-runtime';import {ApplicationErrorHandlerCommon}from'@
|
|
|
8
8
|
duration: 9000
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
|
-
|
|
11
|
+
// pino-style signature: the merging object must come first - a second
|
|
12
|
+
// positional arg without a printf placeholder is silently dropped.
|
|
13
|
+
logger.error({
|
|
14
|
+
payload: error?.payload
|
|
15
|
+
}, 'Application Backend Error');
|
|
12
16
|
}, []);
|
|
13
17
|
return null;
|
|
14
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationErrorHandler.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ApplicationErrorHandler.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,8 +1,19 @@
|
|
|
1
|
+
export declare function isManifestVersionMismatchError(error: unknown): error is Error;
|
|
2
|
+
/**
|
|
3
|
+
* The reload Remix started commits as soon as the new document's headers arrive.
|
|
4
|
+
* If it has not by then (assignment dropped, blocked, or never started), force one -
|
|
5
|
+
* once - so nobody is left sitting on the reloading screen.
|
|
6
|
+
*/
|
|
7
|
+
export declare const MANIFEST_RELOAD_FALLBACK_MS = 5000;
|
|
1
8
|
/**
|
|
2
9
|
* Remix Route ErrorBoundary Component
|
|
3
10
|
* This is specifically for Remix route errors (404s, loader errors, etc.)
|
|
4
11
|
* Different from React's ErrorBoundary which handles component errors
|
|
5
12
|
*
|
|
13
|
+
* A manifest version mismatch (the browser is on an older build than the server)
|
|
14
|
+
* is not presented as an error: Remix has already started a document reload, so the
|
|
15
|
+
* boundary shows a reloading screen and forces the reload if it does not commit.
|
|
16
|
+
*
|
|
6
17
|
* Uses inline styles as fallback to ensure the error page renders correctly
|
|
7
18
|
* even when Tailwind CSS fails to load or during hydration error recovery.
|
|
8
19
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemixErrorBoundary.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorHandlers/RemixErrorBoundary.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RemixErrorBoundary.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorHandlers/RemixErrorBoundary.tsx"],"names":[],"mappings":"AAwEA,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAE7E;AAED;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,OAAO,CAAC;AA+DhD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,4CA6LjC"}
|
|
@@ -35,11 +35,122 @@ const buttonStyle = {
|
|
|
35
35
|
border: 'none',
|
|
36
36
|
cursor: 'pointer'
|
|
37
37
|
};
|
|
38
|
+
const spinnerStyle = {
|
|
39
|
+
width: '2.5rem',
|
|
40
|
+
height: '2.5rem',
|
|
41
|
+
color: '#2563eb',
|
|
42
|
+
animation: 'remix-error-boundary-spin 1s linear infinite'
|
|
43
|
+
};
|
|
44
|
+
const linkButtonStyle = {
|
|
45
|
+
background: 'none',
|
|
46
|
+
border: 'none',
|
|
47
|
+
padding: 0,
|
|
48
|
+
cursor: 'pointer',
|
|
49
|
+
fontSize: '0.875rem',
|
|
50
|
+
fontWeight: 500,
|
|
51
|
+
color: '#2563eb'
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Thrown by Remix's lazy route discovery (`@remix-run/react` fog-of-war) when the
|
|
55
|
+
* browser hydrated on a previous build and the server now runs a newer one: the
|
|
56
|
+
* `/__manifest` call answers 204 + `X-Remix-Reload-Document`, Remix assigns
|
|
57
|
+
* `window.location.href` to the destination and then throws so the client-side
|
|
58
|
+
* navigation aborts. The reload is already in flight when this boundary renders,
|
|
59
|
+
* so it is a "please wait" state, not an application error.
|
|
60
|
+
*/
|
|
61
|
+
const MANIFEST_VERSION_MISMATCH = /manifest version mismatch/i;
|
|
62
|
+
function isManifestVersionMismatchError(error) {
|
|
63
|
+
return error instanceof Error && MANIFEST_VERSION_MISMATCH.test(error.message);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The reload Remix started commits as soon as the new document's headers arrive.
|
|
67
|
+
* If it has not by then (assignment dropped, blocked, or never started), force one -
|
|
68
|
+
* once - so nobody is left sitting on the reloading screen.
|
|
69
|
+
*/
|
|
70
|
+
const MANIFEST_RELOAD_FALLBACK_MS = 5000;
|
|
71
|
+
function NewBuildReloadScreen() {
|
|
72
|
+
return jsxs("div", {
|
|
73
|
+
className: "flex min-h-screen items-center justify-center bg-gray-50 px-4 py-12 sm:px-6 lg:px-8",
|
|
74
|
+
style: containerStyle,
|
|
75
|
+
role: "status",
|
|
76
|
+
"aria-live": "polite",
|
|
77
|
+
children: [jsx("style", {
|
|
78
|
+
children: '@keyframes remix-error-boundary-spin{to{transform:rotate(360deg)}}'
|
|
79
|
+
}), jsxs("div", {
|
|
80
|
+
className: "w-full max-w-md text-center",
|
|
81
|
+
style: {
|
|
82
|
+
maxWidth: '28rem',
|
|
83
|
+
width: '100%',
|
|
84
|
+
textAlign: 'center'
|
|
85
|
+
},
|
|
86
|
+
children: [jsx("div", {
|
|
87
|
+
className: "mb-4 flex justify-center",
|
|
88
|
+
style: {
|
|
89
|
+
display: 'flex',
|
|
90
|
+
justifyContent: 'center',
|
|
91
|
+
marginBottom: '1rem'
|
|
92
|
+
},
|
|
93
|
+
children: jsxs("svg", {
|
|
94
|
+
className: "h-10 w-10 text-blue-600",
|
|
95
|
+
style: spinnerStyle,
|
|
96
|
+
viewBox: "0 0 24 24",
|
|
97
|
+
fill: "none",
|
|
98
|
+
"aria-hidden": "true",
|
|
99
|
+
children: [jsx("circle", {
|
|
100
|
+
cx: "12",
|
|
101
|
+
cy: "12",
|
|
102
|
+
r: "10",
|
|
103
|
+
stroke: "currentColor",
|
|
104
|
+
strokeOpacity: "0.2",
|
|
105
|
+
strokeWidth: "3"
|
|
106
|
+
}), jsx("path", {
|
|
107
|
+
d: "M22 12a10 10 0 0 0-10-10",
|
|
108
|
+
stroke: "currentColor",
|
|
109
|
+
strokeWidth: "3",
|
|
110
|
+
strokeLinecap: "round"
|
|
111
|
+
})]
|
|
112
|
+
})
|
|
113
|
+
}), jsx("h1", {
|
|
114
|
+
className: "text-2xl font-bold tracking-tight text-gray-900",
|
|
115
|
+
style: {
|
|
116
|
+
fontSize: '1.5rem',
|
|
117
|
+
fontWeight: 700,
|
|
118
|
+
color: '#111827'
|
|
119
|
+
},
|
|
120
|
+
children: "Updating to the latest version"
|
|
121
|
+
}), jsx("p", {
|
|
122
|
+
className: "mt-2 text-base text-gray-600",
|
|
123
|
+
style: {
|
|
124
|
+
marginTop: '0.5rem',
|
|
125
|
+
fontSize: '1rem',
|
|
126
|
+
color: '#4b5563'
|
|
127
|
+
},
|
|
128
|
+
children: "A new version was just released. This page will reload automatically."
|
|
129
|
+
}), jsx("div", {
|
|
130
|
+
className: "mt-6",
|
|
131
|
+
style: {
|
|
132
|
+
marginTop: '1.5rem'
|
|
133
|
+
},
|
|
134
|
+
children: jsx("button", {
|
|
135
|
+
type: "button",
|
|
136
|
+
onClick: () => window.location.reload(),
|
|
137
|
+
className: "text-sm font-medium text-blue-600 hover:text-blue-700",
|
|
138
|
+
style: linkButtonStyle,
|
|
139
|
+
children: "Reload now"
|
|
140
|
+
})
|
|
141
|
+
})]
|
|
142
|
+
})]
|
|
143
|
+
});
|
|
144
|
+
}
|
|
38
145
|
/**
|
|
39
146
|
* Remix Route ErrorBoundary Component
|
|
40
147
|
* This is specifically for Remix route errors (404s, loader errors, etc.)
|
|
41
148
|
* Different from React's ErrorBoundary which handles component errors
|
|
42
149
|
*
|
|
150
|
+
* A manifest version mismatch (the browser is on an older build than the server)
|
|
151
|
+
* is not presented as an error: Remix has already started a document reload, so the
|
|
152
|
+
* boundary shows a reloading screen and forces the reload if it does not commit.
|
|
153
|
+
*
|
|
43
154
|
* Uses inline styles as fallback to ensure the error page renders correctly
|
|
44
155
|
* even when Tailwind CSS fails to load or during hydration error recovery.
|
|
45
156
|
*
|
|
@@ -48,14 +159,34 @@ const buttonStyle = {
|
|
|
48
159
|
*/
|
|
49
160
|
function RemixErrorBoundary() {
|
|
50
161
|
const error = useRouteError();
|
|
162
|
+
const isNewBuild = isManifestVersionMismatchError(error);
|
|
51
163
|
React.useEffect(() => {
|
|
52
|
-
|
|
164
|
+
if (isNewBuild) {
|
|
165
|
+
logger.info({
|
|
166
|
+
err: error
|
|
167
|
+
}, 'Newer build detected during navigation; reloading');
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
// pino-style signature: the merging object must come first - a second
|
|
171
|
+
// positional arg without a printf placeholder is silently dropped, which
|
|
172
|
+
// left every route crash logged as a bare 'Route Error:' with no payload.
|
|
173
|
+
logger.error({
|
|
174
|
+
err: error
|
|
175
|
+
}, 'Route Error');
|
|
53
176
|
console.error('Route Error:', error);
|
|
54
|
-
}, [error]);
|
|
177
|
+
}, [error, isNewBuild]);
|
|
178
|
+
React.useEffect(() => {
|
|
179
|
+
if (!isNewBuild) return undefined;
|
|
180
|
+
const timer = window.setTimeout(() => window.location.reload(), MANIFEST_RELOAD_FALLBACK_MS);
|
|
181
|
+
return () => window.clearTimeout(timer);
|
|
182
|
+
}, [isNewBuild]);
|
|
55
183
|
const handleGoHome = () => {
|
|
56
184
|
// Use direct location change instead of useNavigate to avoid router context issues
|
|
57
185
|
window.location.href = '/';
|
|
58
186
|
};
|
|
187
|
+
if (isNewBuild) {
|
|
188
|
+
return jsx(NewBuildReloadScreen, {});
|
|
189
|
+
}
|
|
59
190
|
if (isRouteErrorResponse(error)) {
|
|
60
191
|
return jsx("div", {
|
|
61
192
|
className: "flex min-h-screen items-center justify-center bg-gray-50 px-4 py-12 sm:px-6 lg:px-8",
|
|
@@ -238,4 +369,4 @@ function RemixErrorBoundary() {
|
|
|
238
369
|
})]
|
|
239
370
|
})
|
|
240
371
|
});
|
|
241
|
-
}export{RemixErrorBoundary};//# sourceMappingURL=RemixErrorBoundary.js.map
|
|
372
|
+
}export{MANIFEST_RELOAD_FALLBACK_MS,RemixErrorBoundary,isManifestVersionMismatchError};//# sourceMappingURL=RemixErrorBoundary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemixErrorBoundary.js","sources":["../../../src/components/ErrorHandlers/RemixErrorBoundary.tsx"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RemixErrorBoundary.js","sources":["../../../src/components/ErrorHandlers/RemixErrorBoundary.tsx"],"sourcesContent":[null],"names":[],"mappings":";AAgFG,MAAA,cAAA,GAAA;AACH,EAAA,OAAA,EAAA,MAAO;AA+DP,EAAA,SAAA,EAAA,OAAA;;;;;;;;;;;;;;AAcG,EAAA,eAAA,EAAA,SAAA;AACH,EAAA,UAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SPAErrorBoundary.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorHandlers/SPAErrorBoundary.tsx"],"names":[],"mappings":"AA6CA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"SPAErrorBoundary.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorHandlers/SPAErrorBoundary.tsx"],"names":[],"mappings":"AA6CA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,4CAgN/B"}
|
|
@@ -56,7 +56,11 @@ const buttonStyle = {
|
|
|
56
56
|
function SPAErrorBoundary() {
|
|
57
57
|
const error = useRouteError();
|
|
58
58
|
React.useEffect(() => {
|
|
59
|
-
|
|
59
|
+
// pino-style signature: the merging object must come first - a second
|
|
60
|
+
// positional arg without a printf placeholder is silently dropped.
|
|
61
|
+
logger.error({
|
|
62
|
+
err: error
|
|
63
|
+
}, 'Root Route Error');
|
|
60
64
|
console.error('Root Route Error:', error);
|
|
61
65
|
}, [error]);
|
|
62
66
|
const handleGoHome = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SPAErrorBoundary.js","sources":["../../../src/components/ErrorHandlers/SPAErrorBoundary.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;AA8DG,EAAA,MAAA,EAAA,MAAA;AACH,EAAA,UAAA,EAAA,QAAA
|
|
1
|
+
{"version":3,"file":"SPAErrorBoundary.js","sources":["../../../src/components/ErrorHandlers/SPAErrorBoundary.tsx"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;AA8DG,EAAA,MAAA,EAAA,MAAA;AACH,EAAA,UAAA,EAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemixErrorBoundary.test.d.ts","sourceRoot":"","sources":["../../../../src/components/ErrorHandlers/__tests__/RemixErrorBoundary.test.tsx"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"403.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorPages/403.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,+
|
|
1
|
+
{"version":3,"file":"403.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorPages/403.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,+CAwBpB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {jsx,jsxs}from'react/jsx-runtime';import {useNavigate}from'@remix-run/react';import
|
|
1
|
+
import {jsx,jsxs}from'react/jsx-runtime';import {useNavigate}from'@remix-run/react';import {useErrorAsset}from'./useErrorAsset.js';const Error403 = () => {
|
|
2
2
|
const navigate = useNavigate();
|
|
3
3
|
const goBack = () => navigate(-1);
|
|
4
|
+
const imgSrc = useErrorAsset('error-403-540x432.png');
|
|
4
5
|
return jsx("div", {
|
|
5
6
|
className: "flex justify-center items-center",
|
|
6
7
|
children: jsxs("div", {
|
|
@@ -13,7 +14,7 @@ import {jsx,jsxs}from'react/jsx-runtime';import {useNavigate}from'@remix-run/rea
|
|
|
13
14
|
}), jsx("div", {
|
|
14
15
|
className: "mt-10",
|
|
15
16
|
children: jsx("img", {
|
|
16
|
-
src:
|
|
17
|
+
src: imgSrc,
|
|
17
18
|
alt: "403 Error"
|
|
18
19
|
})
|
|
19
20
|
}), jsx("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"403.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"403.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"404.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorPages/404.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,+
|
|
1
|
+
{"version":3,"file":"404.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorPages/404.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,+CAwBpB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {jsx,jsxs}from'react/jsx-runtime';import {useNavigate}from'@remix-run/react';import
|
|
1
|
+
import {jsx,jsxs}from'react/jsx-runtime';import {useNavigate}from'@remix-run/react';import {useErrorAsset}from'./useErrorAsset.js';const Error404 = () => {
|
|
2
2
|
const navigate = useNavigate();
|
|
3
3
|
const goBack = () => navigate(-1);
|
|
4
|
+
const imgSrc = useErrorAsset('error-404-540x432.png');
|
|
4
5
|
return jsx("div", {
|
|
5
6
|
className: "flex justify-center items-center",
|
|
6
7
|
children: jsxs("div", {
|
|
@@ -13,7 +14,7 @@ import {jsx,jsxs}from'react/jsx-runtime';import {useNavigate}from'@remix-run/rea
|
|
|
13
14
|
}), jsx("div", {
|
|
14
15
|
className: "mt-10",
|
|
15
16
|
children: jsx("img", {
|
|
16
|
-
src:
|
|
17
|
+
src: imgSrc,
|
|
17
18
|
alt: "404 Error"
|
|
18
19
|
})
|
|
19
20
|
}), jsx("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"404.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"404.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"500.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorPages/500.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,+
|
|
1
|
+
{"version":3,"file":"500.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorPages/500.tsx"],"names":[],"mappings":"AAKA,eAAO,MAAM,QAAQ,+CAwBpB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {jsx,jsxs}from'react/jsx-runtime';import {useNavigate}from'@remix-run/react';import
|
|
1
|
+
import {jsx,jsxs}from'react/jsx-runtime';import {useNavigate}from'@remix-run/react';import {useErrorAsset}from'./useErrorAsset.js';const Error500 = () => {
|
|
2
2
|
const navigate = useNavigate();
|
|
3
3
|
const goBack = () => navigate(-1);
|
|
4
|
+
const imgSrc = useErrorAsset('error-500-252x475.png');
|
|
4
5
|
return jsx("div", {
|
|
5
6
|
className: "flex justify-center items-center",
|
|
6
7
|
children: jsxs("div", {
|
|
@@ -13,7 +14,7 @@ import {jsx,jsxs}from'react/jsx-runtime';import {useNavigate}from'@remix-run/rea
|
|
|
13
14
|
}), jsx("div", {
|
|
14
15
|
className: "mt-10",
|
|
15
16
|
children: jsx("img", {
|
|
16
|
-
src:
|
|
17
|
+
src: imgSrc,
|
|
17
18
|
alt: "500 Error"
|
|
18
19
|
})
|
|
19
20
|
}), jsx("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"500.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"500.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `@admin-layout/assets` barrel bakes EVERY image in as a base64 data URI
|
|
3
|
+
* (~335 KB of JS, ~233 KB gzipped - login backgrounds, logos, error
|
|
4
|
+
* illustrations). A static `import assets from '@admin-layout/assets'` here
|
|
5
|
+
* dragged that whole blob into the initial bundle of every app that imports
|
|
6
|
+
* anything from the tailwind-ui barrel - to show images that only render on
|
|
7
|
+
* ERROR pages. Load the map on demand instead: the blob becomes one async
|
|
8
|
+
* chunk fetched the first time an error page actually renders.
|
|
9
|
+
*/
|
|
10
|
+
export declare function useErrorAsset(key: string): string | undefined;
|
|
11
|
+
//# sourceMappingURL=useErrorAsset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useErrorAsset.d.ts","sourceRoot":"","sources":["../../../src/components/ErrorPages/useErrorAsset.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgB7D"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {useState,useEffect}from'react';/**
|
|
2
|
+
* The `@admin-layout/assets` barrel bakes EVERY image in as a base64 data URI
|
|
3
|
+
* (~335 KB of JS, ~233 KB gzipped - login backgrounds, logos, error
|
|
4
|
+
* illustrations). A static `import assets from '@admin-layout/assets'` here
|
|
5
|
+
* dragged that whole blob into the initial bundle of every app that imports
|
|
6
|
+
* anything from the tailwind-ui barrel - to show images that only render on
|
|
7
|
+
* ERROR pages. Load the map on demand instead: the blob becomes one async
|
|
8
|
+
* chunk fetched the first time an error page actually renders.
|
|
9
|
+
*/
|
|
10
|
+
function useErrorAsset(key) {
|
|
11
|
+
const [src, setSrc] = useState(undefined);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
let cancelled = false;
|
|
14
|
+
import('@admin-layout/assets').then(mod => {
|
|
15
|
+
if (!cancelled) setSrc(mod.default[key]);
|
|
16
|
+
}).catch(() => {
|
|
17
|
+
/* image is decorative - the error text already rendered */
|
|
18
|
+
});
|
|
19
|
+
return () => {
|
|
20
|
+
cancelled = true;
|
|
21
|
+
};
|
|
22
|
+
}, [key]);
|
|
23
|
+
return src;
|
|
24
|
+
}export{useErrorAsset};//# sourceMappingURL=useErrorAsset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useErrorAsset.js","sources":["../../../src/components/ErrorPages/useErrorAsset.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAUG;AACH;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputToolBar.d.ts","sourceRoot":"","sources":["../../../src/components/InputToolBar/InputToolBar.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAER,iBAAiB,EAQpB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"InputToolBar.d.ts","sourceRoot":"","sources":["../../../src/components/InputToolBar/InputToolBar.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAER,iBAAiB,EAQpB,MAAM,SAAS,CAAC;AA4jBjB;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EACzB,SAAS,EACT,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,cAAc,EAC1B,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,QAAQ,EACR,gBAAgB,GACnB,EAAE,iBAAiB,2CAwFnB;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {Lightbulb,Zap,Search,Mic,Paperclip,Image,Camera,WandSparkles,Settings,X,Layout,Check,Plus,StopCircle
|
|
1
|
+
import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {Lightbulb,Zap,Search,Mic,Paperclip,Image,Camera,WandSparkles,Settings,X,Layout,Check,Plus,ArrowUpRight,StopCircle}from'lucide-react';import React__default,{useState,useMemo,useRef,useEffect,useLayoutEffect}from'react';import'../../utils/isBrowser/index.js';import {cn}from'../../utils/util.js';import'fast-deep-equal/react.js';const iconSize = 'h-3.5 w-3.5';
|
|
2
2
|
const iconSizeRight = 'h-4 w-4';
|
|
3
3
|
const defaultLeftIconMap = {
|
|
4
4
|
search: jsx(Search, {
|
|
@@ -70,6 +70,9 @@ const defaultRightIconMap = {
|
|
|
70
70
|
className: iconSizeRight
|
|
71
71
|
})
|
|
72
72
|
};
|
|
73
|
+
/** Stop while loading, otherwise Send (content) or Mic. With `steerable` the Send/Mic button stays
|
|
74
|
+
* mounted to the left of Stop so another turn can be queued mid-response — Stop owns the rightmost
|
|
75
|
+
* slot whenever it is shown, since stopping is the primary action mid-response. */
|
|
73
76
|
function MicSendButton({
|
|
74
77
|
hasContent,
|
|
75
78
|
onSend,
|
|
@@ -77,27 +80,38 @@ function MicSendButton({
|
|
|
77
80
|
disabled,
|
|
78
81
|
isLoading,
|
|
79
82
|
onStop,
|
|
83
|
+
steerable,
|
|
80
84
|
className
|
|
81
85
|
}) {
|
|
82
86
|
const isStop = isLoading === true;
|
|
83
|
-
const
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
"
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
className:
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
87
|
+
const shell = 'inline-flex h-7 w-7 items-center justify-center rounded-2xl transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none';
|
|
88
|
+
const filled = 'bg-primary text-primary-foreground hover:bg-primary/90 active:bg-primary border border-primary';
|
|
89
|
+
// Paired with Stop, Send/Mic steps back to a quiet variant so the two do not compete as primary.
|
|
90
|
+
const quiet = 'bg-secondary/70 text-foreground hover:bg-secondary active:bg-secondary border border-border';
|
|
91
|
+
const sendLabel = hasContent ? 'Send' : 'Start voice input';
|
|
92
|
+
return jsxs(Fragment, {
|
|
93
|
+
children: [(!isStop || steerable === true) && jsx("button", {
|
|
94
|
+
type: "button",
|
|
95
|
+
"aria-label": sendLabel,
|
|
96
|
+
title: sendLabel,
|
|
97
|
+
onClick: hasContent ? onSend : onMic,
|
|
98
|
+
disabled: disabled,
|
|
99
|
+
className: cn(shell, isStop ? quiet : filled, className),
|
|
100
|
+
children: hasContent ? jsx(ArrowUpRight, {
|
|
101
|
+
className: iconSizeRight
|
|
102
|
+
}) : jsx(Mic, {
|
|
103
|
+
className: iconSizeRight
|
|
104
|
+
})
|
|
105
|
+
}), isStop && jsx("button", {
|
|
106
|
+
type: "button",
|
|
107
|
+
"aria-label": "Stop",
|
|
108
|
+
title: "Stop",
|
|
109
|
+
onClick: onStop,
|
|
110
|
+
className: cn(shell, filled, className),
|
|
111
|
+
children: jsx(StopCircle, {
|
|
112
|
+
className: iconSizeRight
|
|
113
|
+
})
|
|
114
|
+
})]
|
|
101
115
|
});
|
|
102
116
|
}
|
|
103
117
|
function ToolbarIconButton({
|
|
@@ -223,13 +237,37 @@ function TemplatePill({
|
|
|
223
237
|
});
|
|
224
238
|
}
|
|
225
239
|
const getRightIcon = id => defaultRightIconMap[id] ?? null;
|
|
226
|
-
|
|
240
|
+
// Layout effects warn during SSR on React 18; the menu is closed on the server anyway.
|
|
241
|
+
const useClientLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;
|
|
242
|
+
/** Gap between the "+" button and its menu (Tailwind `mb-2` / `mt-2`). */
|
|
243
|
+
const MENU_GAP_PX = 8;
|
|
244
|
+
/**
|
|
245
|
+
* Below `lg`, the right action cluster collapses into this "+" button → popover. Send/mic stays inline.
|
|
246
|
+
*
|
|
247
|
+
* The menu opens upward, over the conversation, since the composer normally docks at the bottom.
|
|
248
|
+
* When the composer sits near the top of the screen instead (e.g. a template gallery below it),
|
|
249
|
+
* there is no room above, so it flips below the button. Placement is measured before paint.
|
|
250
|
+
*/
|
|
227
251
|
function RightOverflowMenu({
|
|
228
252
|
items,
|
|
229
253
|
classNames
|
|
230
254
|
}) {
|
|
231
255
|
const [open, setOpen] = useState(false);
|
|
256
|
+
const [placement, setPlacement] = useState('above');
|
|
257
|
+
const rootRef = useRef(null);
|
|
258
|
+
const menuRef = useRef(null);
|
|
259
|
+
useClientLayoutEffect(() => {
|
|
260
|
+
if (!open) return;
|
|
261
|
+
const trigger = rootRef.current?.getBoundingClientRect();
|
|
262
|
+
const menuHeight = menuRef.current?.offsetHeight;
|
|
263
|
+
if (!trigger || !menuHeight) return;
|
|
264
|
+
const spaceAbove = trigger.top;
|
|
265
|
+
const spaceBelow = window.innerHeight - trigger.bottom;
|
|
266
|
+
const fitsAbove = spaceAbove >= menuHeight + MENU_GAP_PX;
|
|
267
|
+
setPlacement(fitsAbove || spaceAbove >= spaceBelow ? 'above' : 'below');
|
|
268
|
+
}, [open]);
|
|
232
269
|
return jsxs("div", {
|
|
270
|
+
ref: rootRef,
|
|
233
271
|
className: "relative",
|
|
234
272
|
children: [jsx("button", {
|
|
235
273
|
type: "button",
|
|
@@ -249,15 +287,24 @@ function RightOverflowMenu({
|
|
|
249
287
|
className: "fixed inset-0 z-40 cursor-default",
|
|
250
288
|
onClick: () => setOpen(false)
|
|
251
289
|
}), jsx("div", {
|
|
290
|
+
ref: menuRef,
|
|
252
291
|
role: "menu",
|
|
253
|
-
className:
|
|
292
|
+
className: cn('absolute right-0 z-50 flex w-56 flex-col gap-0.5 rounded-2xl border border-border bg-card p-1.5 text-foreground shadow-lg', placement === 'above' ? 'bottom-full mb-2' : 'top-full mt-2'),
|
|
254
293
|
children: items.map(item => jsxs("div", {
|
|
255
294
|
role: "menuitem",
|
|
256
|
-
// ponytail: row click forwards to the inner button so the whole row is a hit
|
|
257
|
-
// target — without nesting <button> in <button> (customButton items render their own).
|
|
258
295
|
onClick: e => {
|
|
259
|
-
|
|
260
|
-
|
|
296
|
+
// React bubbles events out of a portal along the COMPONENT tree, so a
|
|
297
|
+
// click inside a dialog or sheet that a customButton portaled out still
|
|
298
|
+
// arrives here. It is not a click on this row: ignore it.
|
|
299
|
+
if (!e.currentTarget.contains(e.target)) return;
|
|
300
|
+
// ponytail: row click forwards to the inner button so the whole row is a hit
|
|
301
|
+
// target — without nesting <button> in <button> (customButton items render their own).
|
|
302
|
+
if (!e.target.closest('button')) {
|
|
303
|
+
e.currentTarget.querySelector('button')?.click();
|
|
304
|
+
}
|
|
305
|
+
// A plain action is done once picked. A customButton owns whatever it opens
|
|
306
|
+
// (a dialog, a sheet); closing the menu would unmount it, so it stays.
|
|
307
|
+
if (!item.customButton && !item.disabled && !item.loading) setOpen(false);
|
|
261
308
|
},
|
|
262
309
|
className: "flex cursor-pointer items-center gap-2.5 rounded-xl px-1.5 py-1 hover:bg-secondary/60",
|
|
263
310
|
children: [jsx(ToolbarIconButton, {
|
|
@@ -308,12 +355,7 @@ function RightSection({
|
|
|
308
355
|
})
|
|
309
356
|
})]
|
|
310
357
|
}), micSendButton != null && jsx(MicSendButton, {
|
|
311
|
-
|
|
312
|
-
onSend: micSendButton.onSend,
|
|
313
|
-
onMic: micSendButton.onMic,
|
|
314
|
-
disabled: micSendButton.disabled,
|
|
315
|
-
isLoading: micSendButton.isLoading,
|
|
316
|
-
onStop: micSendButton.onStop,
|
|
358
|
+
...micSendButton,
|
|
317
359
|
className: classNames?.micSendButton
|
|
318
360
|
})]
|
|
319
361
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputToolBar.js","sources":["../../../src/components/InputToolBar/InputToolBar.tsx"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"InputToolBar.js","sources":["../../../src/components/InputToolBar/InputToolBar.tsx"],"sourcesContent":[null],"names":[],"mappings":"iYA4lBG,MAAA,QAAA,GAAA,aAAA;AACH,MAAA,aAAA,GAAA;AA4GA,MAAA,qBAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The "+" overflow menu that holds the right-hand actions below `lg`. It opens above the button
|
|
3
|
+
* unless there is no room there (a composer near the top of the screen), closes once a plain
|
|
4
|
+
* action is picked, keeps custom buttons (which own their own dialogs) mounted, and ignores
|
|
5
|
+
* clicks that React bubbles out of a customButton's portal.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=RightOverflowMenu.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RightOverflowMenu.test.d.ts","sourceRoot":"","sources":["../../../../src/components/InputToolBar/__tests__/RightOverflowMenu.test.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -49,6 +49,8 @@ export interface MicSendButtonConfig {
|
|
|
49
49
|
/** When true, show stop icon and call onStop on click. */
|
|
50
50
|
isLoading?: boolean;
|
|
51
51
|
onStop?: () => void;
|
|
52
|
+
/** Host supports steering (sending mid-response): keep Send/Mic beside Stop instead of replacing it. */
|
|
53
|
+
steerable?: boolean;
|
|
52
54
|
}
|
|
53
55
|
/** Configuration for the optional template pill: either "+ Template (N)" or selected template name with remove/change */
|
|
54
56
|
export interface TemplateButtonConfig {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/InputToolBar/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/InputToolBar/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { PageContainerProps } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* The tab to highlight for `pathname`: the deepest tab whose path it equals or sits under, so
|
|
5
|
+
* `/billing/plans` owns `/billing/plans/checkout/pro` but not `/billing/plansx`. The bare module path
|
|
6
|
+
* (`/billing`, rendered as its first tab) highlights the first tab. A page outside every listed tab
|
|
7
|
+
* (a page whose own tab is hidden from this viewer) highlights none, instead of passing for the first.
|
|
8
|
+
*/
|
|
9
|
+
export declare function findActiveTabPath(tabList: ReadonlyArray<{
|
|
10
|
+
path: string;
|
|
11
|
+
}>, pathname: string): string | undefined;
|
|
3
12
|
export declare const PageContainer: React.FC<PageContainerProps>;
|
|
4
13
|
//# sourceMappingURL=PageContainer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageContainer.d.ts","sourceRoot":"","sources":["../../../src/components/PageContainer/PageContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"PageContainer.d.ts","sourceRoot":"","sources":["../../../src/components/PageContainer/PageContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAKlD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAWhH;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgEtD,CAAC"}
|