@fayz-ai/ui 0.35.0 → 0.36.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/dist/{chunk-63BB2CNP.js → chunk-7SEWMFO3.js} +101 -16
- package/dist/chunk-7SEWMFO3.js.map +1 -0
- package/dist/{chunk-CUCIVYCV.js → chunk-BJNV7RJQ.js} +4 -4
- package/dist/{chunk-CUCIVYCV.js.map → chunk-BJNV7RJQ.js.map} +1 -1
- package/dist/chunk-FKYFYGAS.js +143 -0
- package/dist/chunk-FKYFYGAS.js.map +1 -0
- package/dist/{chunk-OBWOHU5E.js → chunk-IA3QZZSC.js} +173 -134
- package/dist/chunk-IA3QZZSC.js.map +1 -0
- package/dist/{chunk-OB2ULDBD.js → chunk-IN2DFMJV.js} +4 -4
- package/dist/{chunk-OB2ULDBD.js.map → chunk-IN2DFMJV.js.map} +1 -1
- package/dist/{chunk-XQTGXHT6.js → chunk-N6LNCYOT.js} +3 -3
- package/dist/{chunk-XQTGXHT6.js.map → chunk-N6LNCYOT.js.map} +1 -1
- package/dist/{chunk-2CRN3BOD.js → chunk-P4764AWQ.js} +6 -6
- package/dist/{chunk-2CRN3BOD.js.map → chunk-P4764AWQ.js.map} +1 -1
- package/dist/{chunk-FNGCA3XR.js → chunk-URDLBXAS.js} +4 -4
- package/dist/{chunk-FNGCA3XR.js.map → chunk-URDLBXAS.js.map} +1 -1
- package/dist/{chunk-GLRLWBBF.js → chunk-ZJ7C2P64.js} +17 -102
- package/dist/chunk-ZJ7C2P64.js.map +1 -0
- package/dist/{chunk-ATDIWKBD.js → chunk-ZTS5S6BZ.js} +4 -3
- package/dist/chunk-ZTS5S6BZ.js.map +1 -0
- package/dist/dashboard/index.js +5 -5
- package/dist/icons.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -16
- package/dist/layout/AppShell.d.ts.map +1 -1
- package/dist/layout/ModulePage.d.ts.map +1 -1
- package/dist/layout/SaveBar.d.ts.map +1 -1
- package/dist/layout/index.js +5 -5
- package/dist/layout/rail-flyout.d.ts.map +1 -1
- package/dist/primitives/ai-action-button.d.ts +13 -0
- package/dist/primitives/ai-action-button.d.ts.map +1 -0
- package/dist/primitives/date-picker.d.ts.map +1 -1
- package/dist/primitives/index.d.ts +2 -0
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +7 -7
- package/dist/primitives/inline-link.d.ts +29 -0
- package/dist/primitives/inline-link.d.ts.map +1 -0
- package/dist/primitives/search-select.d.ts +4 -1
- package/dist/primitives/search-select.d.ts.map +1 -1
- package/dist/wizard/index.js +3 -3
- package/package.json +2 -2
- package/dist/chunk-63BB2CNP.js.map +0 -1
- package/dist/chunk-ATDIWKBD.js.map +0 -1
- package/dist/chunk-GLRLWBBF.js.map +0 -1
- package/dist/chunk-OBWOHU5E.js.map +0 -1
- package/dist/chunk-OKZ6WQB3.js +0 -57
- package/dist/chunk-OKZ6WQB3.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { cn } from './chunk-
|
|
2
|
-
import { ICON_MAP } from './chunk-
|
|
1
|
+
import { cn, ConfirmDialog } from './chunk-FKYFYGAS.js';
|
|
2
|
+
import { ICON_MAP } from './chunk-ZTS5S6BZ.js';
|
|
3
3
|
import * as React12 from 'react';
|
|
4
4
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
5
5
|
import { X, Loader2, ChevronLeft, ArrowLeft, Bell, PanelLeft, PanelLeftClose, Search, CornerDownLeft, Menu, Crown, ChevronsRight, ChevronsLeft, ChevronDown, ChevronRight, Info, ExternalLink, CreditCard, Sparkles, Home, ChevronUp, Plus, Settings, UserCog, LogOut } from 'lucide-react';
|
|
@@ -116,6 +116,16 @@ var HIDDEN = { visible: false, saving: false };
|
|
|
116
116
|
var SaveBarApiContext = React12.createContext(null);
|
|
117
117
|
var SaveBarStateContext = React12.createContext({ visible: false, saving: false });
|
|
118
118
|
var _saveBarVisible = false;
|
|
119
|
+
var saveFlow = { current: null };
|
|
120
|
+
var requestSave = (onSave) => {
|
|
121
|
+
saveFlow.current = { at: Date.now(), started: false };
|
|
122
|
+
onSave?.();
|
|
123
|
+
};
|
|
124
|
+
var requestDiscard = (onDiscard) => {
|
|
125
|
+
saveFlow.current = { at: Date.now(), started: true };
|
|
126
|
+
onDiscard?.();
|
|
127
|
+
};
|
|
128
|
+
var dialogOpen = () => typeof document !== "undefined" && !!document.querySelector('[role="dialog"], [role="alertdialog"]');
|
|
119
129
|
var _saveBarSubs = /* @__PURE__ */ new Set();
|
|
120
130
|
function setSaveBarVisibleSignal(v) {
|
|
121
131
|
if (v === _saveBarVisible) return;
|
|
@@ -153,15 +163,54 @@ function SaveBarProvider({ children }) {
|
|
|
153
163
|
React12.useEffect(() => {
|
|
154
164
|
setSaveBarVisibleSignal(state.visible);
|
|
155
165
|
}, [state.visible]);
|
|
166
|
+
const [leaveTo, setLeaveTo] = React12.useState(null);
|
|
167
|
+
const bypass = React12.useRef(false);
|
|
168
|
+
if (state.saving && saveFlow.current) saveFlow.current.started = true;
|
|
169
|
+
const t = useTranslation();
|
|
170
|
+
React12.useEffect(() => {
|
|
171
|
+
if (!state.dirty || state.host || typeof window === "undefined") return;
|
|
172
|
+
const guarded = window.location.href;
|
|
173
|
+
const onNav = (e) => {
|
|
174
|
+
if (bypass.current || window.location.href === guarded) return;
|
|
175
|
+
const flow = saveFlow.current;
|
|
176
|
+
if (flow && (flow.started || state.saving) && Date.now() - flow.at < 15e3) return;
|
|
177
|
+
e.stopImmediatePropagation();
|
|
178
|
+
const target = window.location.href;
|
|
179
|
+
window.history.replaceState(window.history.state, "", guarded);
|
|
180
|
+
setLeaveTo(target);
|
|
181
|
+
};
|
|
182
|
+
const onUnload = (e) => {
|
|
183
|
+
e.preventDefault();
|
|
184
|
+
e.returnValue = "";
|
|
185
|
+
};
|
|
186
|
+
window.addEventListener("popstate", onNav, true);
|
|
187
|
+
window.addEventListener("hashchange", onNav, true);
|
|
188
|
+
window.addEventListener("beforeunload", onUnload);
|
|
189
|
+
return () => {
|
|
190
|
+
window.removeEventListener("popstate", onNav, true);
|
|
191
|
+
window.removeEventListener("hashchange", onNav, true);
|
|
192
|
+
window.removeEventListener("beforeunload", onUnload);
|
|
193
|
+
};
|
|
194
|
+
}, [state.dirty, state.host, state.saving]);
|
|
195
|
+
const leave = () => {
|
|
196
|
+
const target = leaveTo;
|
|
197
|
+
setLeaveTo(null);
|
|
198
|
+
if (!target) return;
|
|
199
|
+
bypass.current = true;
|
|
200
|
+
window.location.href = target;
|
|
201
|
+
setTimeout(() => {
|
|
202
|
+
bypass.current = false;
|
|
203
|
+
}, 0);
|
|
204
|
+
};
|
|
156
205
|
React12.useEffect(() => {
|
|
157
206
|
function onKey(e) {
|
|
158
207
|
if (state.visible && !state.saving) {
|
|
159
208
|
if (e.key === "Enter" && (e.metaKey || e.ctrlKey)) {
|
|
160
209
|
e.preventDefault();
|
|
161
|
-
handlers.current.onSave
|
|
162
|
-
} else if (e.key === "Escape") {
|
|
210
|
+
requestSave(handlers.current.onSave);
|
|
211
|
+
} else if (e.key === "Escape" && !e.defaultPrevented && !dialogOpen()) {
|
|
163
212
|
e.preventDefault();
|
|
164
|
-
handlers.current.onDiscard
|
|
213
|
+
requestDiscard(handlers.current.onDiscard);
|
|
165
214
|
}
|
|
166
215
|
return;
|
|
167
216
|
}
|
|
@@ -179,7 +228,22 @@ function SaveBarProvider({ children }) {
|
|
|
179
228
|
window.addEventListener("keydown", onKey);
|
|
180
229
|
return () => window.removeEventListener("keydown", onKey);
|
|
181
230
|
}, [state.visible, state.saving]);
|
|
182
|
-
return /* @__PURE__ */ jsx(SaveBarApiContext.Provider, { value: api, children: /* @__PURE__ */ jsx(BackNavApiContext.Provider, { value: backApi, children: /* @__PURE__ */
|
|
231
|
+
return /* @__PURE__ */ jsx(SaveBarApiContext.Provider, { value: api, children: /* @__PURE__ */ jsx(BackNavApiContext.Provider, { value: backApi, children: /* @__PURE__ */ jsxs(SaveBarStateContext.Provider, { value: state, children: [
|
|
232
|
+
children,
|
|
233
|
+
/* @__PURE__ */ jsx(
|
|
234
|
+
ConfirmDialog,
|
|
235
|
+
{
|
|
236
|
+
open: leaveTo !== null,
|
|
237
|
+
variant: "warning",
|
|
238
|
+
title: t("saveBar.leaveTitle"),
|
|
239
|
+
description: t("saveBar.leaveDescription"),
|
|
240
|
+
confirmLabel: t("saveBar.leaveConfirm"),
|
|
241
|
+
cancelLabel: t("saveBar.leaveCancel"),
|
|
242
|
+
onConfirm: leave,
|
|
243
|
+
onCancel: () => setLeaveTo(null)
|
|
244
|
+
}
|
|
245
|
+
)
|
|
246
|
+
] }) }) });
|
|
183
247
|
}
|
|
184
248
|
var BackNavApiContext = React12.createContext(null);
|
|
185
249
|
function isEditableTarget(target) {
|
|
@@ -265,8 +329,8 @@ function SaveBar({ className }) {
|
|
|
265
329
|
closing ? "animate-out fade-out slide-out-to-bottom-2" : "animate-in fade-in slide-in-from-bottom-2"
|
|
266
330
|
), children: [
|
|
267
331
|
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2 text-sm font-medium", children: [
|
|
268
|
-
/* @__PURE__ */ jsx("span", { className: "h-2 w-2 shrink-0 rounded-full bg-amber-400" }),
|
|
269
|
-
message ?? t("saveBar.unsaved")
|
|
332
|
+
/* @__PURE__ */ jsx("span", { className: cn("h-2 w-2 shrink-0 rounded-full", state.dirty === false ? "bg-background/40" : "bg-amber-400") }),
|
|
333
|
+
message ?? t(state.dirty === false ? "saveBar.clean" : "saveBar.unsaved")
|
|
270
334
|
] }),
|
|
271
335
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
272
336
|
/* @__PURE__ */ jsx(
|
|
@@ -275,7 +339,7 @@ function SaveBar({ className }) {
|
|
|
275
339
|
type: "button",
|
|
276
340
|
"data-tour": "savebar.discard",
|
|
277
341
|
disabled: saving,
|
|
278
|
-
onClick: () => api.handlers.current.onDiscard
|
|
342
|
+
onClick: () => requestDiscard(api.handlers.current.onDiscard),
|
|
279
343
|
className: "rounded-full px-3 py-1.5 text-sm font-medium text-background/70 transition-colors hover:bg-background/10 hover:text-background disabled:opacity-50",
|
|
280
344
|
children: discardLabel ?? t("common.discard")
|
|
281
345
|
}
|
|
@@ -286,7 +350,7 @@ function SaveBar({ className }) {
|
|
|
286
350
|
type: "button",
|
|
287
351
|
"data-tour": "savebar.save",
|
|
288
352
|
disabled: saving,
|
|
289
|
-
onClick: () => api.handlers.current.onSave
|
|
353
|
+
onClick: () => requestSave(api.handlers.current.onSave),
|
|
290
354
|
className: "inline-flex items-center rounded-full bg-background px-4 py-1.5 text-sm font-semibold text-foreground transition-colors hover:bg-background/90 disabled:opacity-60",
|
|
291
355
|
children: [
|
|
292
356
|
saving && /* @__PURE__ */ jsx(Loader2, { className: "mr-1.5 h-3.5 w-3.5 animate-spin" }),
|
|
@@ -669,7 +733,20 @@ function useRailFlyout({
|
|
|
669
733
|
"div",
|
|
670
734
|
{
|
|
671
735
|
ref: panelRef,
|
|
672
|
-
style: {
|
|
736
|
+
style: {
|
|
737
|
+
borderTopLeftRadius: 2,
|
|
738
|
+
borderBottomLeftRadius: 2,
|
|
739
|
+
// A cor vai em `style` e vem acompanhada de blur. Só a classe
|
|
740
|
+
// `bg-sidebar` deixava o painel atravessável sempre que
|
|
741
|
+
// `hsl(var(--sidebar))` nao resolvia — o tema da conta escreve esse
|
|
742
|
+
// token em runtime, e um valor que o `hsl()` nao aceita faz o
|
|
743
|
+
// navegador DESCARTAR a declaracao inteira, sem erro e so em
|
|
744
|
+
// producao. O blur e a rede embaixo disso: mesmo sem cor nenhuma, a
|
|
745
|
+
// pagina nao atravessa mais o texto do menu.
|
|
746
|
+
backgroundColor: "hsl(var(--sidebar) / 0.9)",
|
|
747
|
+
backdropFilter: "blur(16px) saturate(140%)",
|
|
748
|
+
WebkitBackdropFilter: "blur(16px) saturate(140%)"
|
|
749
|
+
},
|
|
673
750
|
className: cn(
|
|
674
751
|
// Sidebar tone, sidebar border: the panel is the menu leaning out,
|
|
675
752
|
// not a popover from the page underneath it.
|
|
@@ -681,7 +758,12 @@ function useRailFlyout({
|
|
|
681
758
|
"span",
|
|
682
759
|
{
|
|
683
760
|
"aria-hidden": true,
|
|
684
|
-
style: {
|
|
761
|
+
style: {
|
|
762
|
+
top: pos.arrow,
|
|
763
|
+
backgroundColor: "hsl(var(--sidebar) / 0.9)",
|
|
764
|
+
backdropFilter: "blur(16px) saturate(140%)",
|
|
765
|
+
WebkitBackdropFilter: "blur(16px) saturate(140%)"
|
|
766
|
+
},
|
|
685
767
|
className: "absolute -left-[5px] h-2.5 w-2.5 -translate-y-1/2 rotate-45 border-b border-l border-sidebar-border bg-sidebar"
|
|
686
768
|
}
|
|
687
769
|
),
|
|
@@ -2050,6 +2132,7 @@ function SidebarLayout({
|
|
|
2050
2132
|
sidebarNavChildConnector,
|
|
2051
2133
|
railOpen
|
|
2052
2134
|
}) {
|
|
2135
|
+
const saveBarVisible = useSaveBarVisible();
|
|
2053
2136
|
const sidebarCollapsed = useLayoutStore((s) => s.sidebarCollapsed);
|
|
2054
2137
|
const rawClaimed = usePageHeaderClaimed();
|
|
2055
2138
|
const hasOutlet = useHasPageHeaderOutlet();
|
|
@@ -2249,7 +2332,7 @@ function SidebarLayout({
|
|
|
2249
2332
|
/* @__PURE__ */ jsxs("div", { className: "relative flex min-w-0 min-h-0 flex-1 overflow-hidden", children: [
|
|
2250
2333
|
/* @__PURE__ */ jsx("div", { ref: setPageRailSlot, className: "flex shrink-0 empty:hidden" }),
|
|
2251
2334
|
/* @__PURE__ */ jsxs("div", { className: "relative flex min-w-0 min-h-0 flex-1 flex-col overflow-hidden", children: [
|
|
2252
|
-
/* @__PURE__ */ jsx("main", { className: cn("min-w-0 flex-1 overflow-y-auto pb-16 md:pb-0", menuOpen && "invisible md:visible"), children }),
|
|
2335
|
+
/* @__PURE__ */ jsx("main", { className: cn("min-w-0 flex-1 overflow-y-auto", saveBarVisible ? "pb-24" : "pb-16 md:pb-0", menuOpen && "invisible md:visible"), children }),
|
|
2253
2336
|
/* @__PURE__ */ jsx(SaveBar, {})
|
|
2254
2337
|
] })
|
|
2255
2338
|
] })
|
|
@@ -2340,6 +2423,7 @@ function TopbarLayout({
|
|
|
2340
2423
|
mobileIdentity,
|
|
2341
2424
|
pagePrimary = false
|
|
2342
2425
|
}) {
|
|
2426
|
+
const saveBarVisible = useSaveBarVisible();
|
|
2343
2427
|
const mobileMenuOpen = useLayoutStore((st) => st.mobileDrawerOpen);
|
|
2344
2428
|
const setMobileMenuOpen = useLayoutStore((st) => st.setMobileDrawerOpen);
|
|
2345
2429
|
const [headerSlot, setHeaderSlot] = React12.useState(null);
|
|
@@ -2421,7 +2505,7 @@ function TopbarLayout({
|
|
|
2421
2505
|
),
|
|
2422
2506
|
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 min-h-0 flex-1 overflow-hidden", children: [
|
|
2423
2507
|
/* @__PURE__ */ jsx("div", { ref: setPageRailSlot, className: "flex shrink-0 empty:hidden" }),
|
|
2424
|
-
/* @__PURE__ */ jsx("div", { className: cn("min-w-0 min-h-0 flex-1 overflow-y-auto pb-16 md:pb-0", menuOpen && "invisible md:visible"), children })
|
|
2508
|
+
/* @__PURE__ */ jsx("div", { className: cn("min-w-0 min-h-0 flex-1 overflow-y-auto", saveBarVisible ? "pb-24" : "pb-16 md:pb-0", menuOpen && "invisible md:visible"), children })
|
|
2425
2509
|
] })
|
|
2426
2510
|
] }) }),
|
|
2427
2511
|
/* @__PURE__ */ jsx(SaveBar, {}),
|
|
@@ -3960,6 +4044,7 @@ function RailSections({ sections, search, collapsed }) {
|
|
|
3960
4044
|
}
|
|
3961
4045
|
)
|
|
3962
4046
|
] }),
|
|
4047
|
+
search && collapsed && /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: "mb-2 h-8" }),
|
|
3963
4048
|
sections.map((section, i) => /* @__PURE__ */ jsxs("div", { className: i > 0 ? "mt-3 border-t border-border pt-3" : void 0, children: [
|
|
3964
4049
|
section.heading && !collapsed && /* @__PURE__ */ jsx("p", { className: "px-3 pb-1 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground", children: section.heading }),
|
|
3965
4050
|
/* @__PURE__ */ jsx("div", { className: "space-y-0.5", children: section.items.map((item) => /* @__PURE__ */ jsx(RailNavItem, { item, collapsed }, item.id)) })
|
|
@@ -4476,5 +4561,5 @@ function ModulePage({ title: _title, subtitle, nav, children, className, headerA
|
|
|
4476
4561
|
}
|
|
4477
4562
|
|
|
4478
4563
|
export { AppShell, BackStyleProvider, BottomSheet, COLUMN_WIDTH, CollapsibleColumn, HeaderTabs, Hint, Modal, ModalBody, ModalClose, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalOverlay, ModalPortal, ModalTitle, ModalTrigger, ModuleLayoutProvider, ModulePage, NavTransitionProvider, PageHeader, PageHeaderActions, PageHeaderCrumb, PageHeaderOutlet, PageRail, PageSubNav, PageTabs, PageTitlePortal, PageTrail, PageTransition, PageViewBar, RailColumn, RailNavItem, SUB_NAV_STYLE, SaveBar, SaveBarProvider, SheetCard, SheetRow, ShellSearch, Sidebar, SubpageHeader, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Topbar, ViewTabs, bottomNavReachesAll, isCreateRoute, navigateToCrumb, useBackHandler, useBackStyle, useCrossModuleBack, useCurrentRouteHref, useHasPageActions, useHasPageHeaderBack, useHasPageHeaderHost, useHasPageHeaderOutlet, useLayoutStore, useModalHost, useModuleHeaderActionsSlot, useModuleHeaderSlot, useModuleLayout, useModuleViewLabel, useNavTransition, usePageHeader, usePageHeaderClaimed, usePageHeaderHost, usePageTrail, usePageTrailParent, usePublishModuleViewLabel, useRailRow, useRegisterPageActions, useSaveBar, useSaveBarVisible, useSheetClose, useSheetDrag, useTrailBack };
|
|
4479
|
-
//# sourceMappingURL=chunk-
|
|
4480
|
-
//# sourceMappingURL=chunk-
|
|
4564
|
+
//# sourceMappingURL=chunk-7SEWMFO3.js.map
|
|
4565
|
+
//# sourceMappingURL=chunk-7SEWMFO3.js.map
|