@fayz-ai/admin 0.45.0 → 0.46.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.
@@ -1 +1 @@
1
- {"version":3,"file":"ChatFab.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatFab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAiB9B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,yBAAyB,GAAG,KAAK,CAAA;IACzC,KAAK,CAAC,EAAE,eAAe,CAAA;CAIxB;AAwID,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,YAAY,4BA0iB3F"}
1
+ {"version":3,"file":"ChatFab.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatFab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAiB9B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,yBAAyB,GAAG,KAAK,CAAA;IACzC,KAAK,CAAC,EAAE,eAAe,CAAA;CAIxB;AAwID,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,YAAY,4BA6iB3F"}
@@ -47,6 +47,8 @@ interface CrudFormPageProps {
47
47
  * posting it does not have to hand.
48
48
  */
49
49
  essentialFirst?: boolean;
50
+ /** Opens with the empty required fields already marked, for a caller that came to complete the record. */
51
+ highlightMissing?: boolean;
50
52
  /**
51
53
  * Render the fields in a <div> instead of a <form>, and hand the host a way
52
54
  * to submit them (`submitRef`).
@@ -1 +1 @@
1
- {"version":3,"file":"CrudFormPage.d.ts","sourceRoot":"","sources":["../../src/crud/CrudFormPage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA0C,MAAM,OAAO,CAAA;AA2B9D,OAAO,KAAK,EAAE,QAAQ,EAAc,SAAS,EAAE,MAAM,eAAe,CAAA;AA2CpE,UAAU,iBAAiB;IACzB,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC;0EACsE;IACtE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;IACtF;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,GAAG,IAAI,KAAK,IAAI,CAAA;IAC1D,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;iFAC6E;IAC7E,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;CACxD;AAaD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKpD;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,QAAQ,EAAE,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,QAAQ,EAAE,CAcZ;AAmTD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,4BAsC9L;AAkPD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,qBASpD"}
1
+ {"version":3,"file":"CrudFormPage.d.ts","sourceRoot":"","sources":["../../src/crud/CrudFormPage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA0C,MAAM,OAAO,CAAA;AA2B9D,OAAO,KAAK,EAAE,QAAQ,EAAc,SAAS,EAAE,MAAM,eAAe,CAAA;AA2CpE,UAAU,iBAAiB;IACzB,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC;0EACsE;IACtE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;IACtF;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,GAAG,IAAI,KAAK,IAAI,CAAA;IAC1D,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;iFAC6E;IAC7E,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,0GAA0G;IAC1G,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;CACxD;AAaD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKpD;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,QAAQ,EAAE,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,QAAQ,EAAE,CAcZ;AAmTD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,4BAsC9L;AAkPD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,qBASpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"CrudListView.d.ts","sourceRoot":"","sources":["../../src/crud/CrudListView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CrudListView.d.ts","sourceRoot":"","sources":["../../src/crud/CrudListView.tsx"],"names":[],"mappings":"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"}
@@ -28,6 +28,8 @@ export interface CrudRecordModalProps {
28
28
  emptyLabel?: React.ReactNode;
29
29
  /** Opens showing only required fields, with a link to the rest. */
30
30
  essentialFirst?: boolean;
31
+ /** Opens with the empty required fields already marked (see CrudFormPage). */
32
+ highlightMissing?: boolean;
31
33
  }
32
- export declare function CrudRecordModal({ open, onClose, onSaved, entityDef, mode, load, initialData, save, title, description, emptyLabel, essentialFirst, notice, }: CrudRecordModalProps): React.JSX.Element;
34
+ export declare function CrudRecordModal({ open, onClose, onSaved, entityDef, mode, load, initialData, save, title, description, emptyLabel, essentialFirst, highlightMissing, notice, }: CrudRecordModalProps): React.JSX.Element;
33
35
  //# sourceMappingURL=CrudRecordModal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CrudRecordModal.d.ts","sourceRoot":"","sources":["../../src/crud/CrudRecordModal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAsB9C,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAA;IAC/C,SAAS,EAAE,SAAS,CAAA;IACpB,kFAAkF;IAClF,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;IACxB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IAChD,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC,mEAAmE;IACnE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IACxE;;;;;OAKG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,yCAAyC;IACzC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,mEAAmE;IACnE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,mEAAmE;IACnE,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAa,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EACzE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,GACvD,EAAE,oBAAoB,qBAuGtB"}
1
+ {"version":3,"file":"CrudRecordModal.d.ts","sourceRoot":"","sources":["../../src/crud/CrudRecordModal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAsB9C,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAA;IAC/C,SAAS,EAAE,SAAS,CAAA;IACpB,kFAAkF;IAClF,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;IACxB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IAChD,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC,mEAAmE;IACnE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IACxE;;;;;OAKG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,yCAAyC;IACzC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,mEAAmE;IACnE,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,mEAAmE;IACnE,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAa,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EACzE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,GACzE,EAAE,oBAAoB,qBAyGtB"}
package/dist/index.js CHANGED
@@ -22,7 +22,7 @@ import * as React133 from 'react';
22
22
  import React133__default, { createContext, useMemo, useState, useRef, useCallback, useEffect, useLayoutEffect, useContext, createElement } from 'react';
23
23
  import * as LucideIcons from 'lucide-react';
24
24
  import { RotateCcw, WifiOff, Pencil, Copy, Trash2, Upload, Search, ArrowDown, ArrowUp, ArrowUpDown, Check, Download, ChevronLeft, ChevronRight, AlertTriangle, Building2, Inbox, Package, Sparkles, Plug, DollarSign, Clock, X, WandSparkles, Loader2, ArrowDownToLine, ArrowUpFromLine, CheckCircle2, Crown, ArrowRight, History, SquarePen, Settings2, Mic, User, Plus, Minus, ListChecks, ChevronDown, ArrowLeft, Calendar, ClipboardList, BookOpen, Lock, PinOff, Pin, Eye, Users, StickyNote, CheckSquare2, Square, Globe, LayoutTemplate, Store, ChevronsUpDown, ExternalLink, PenSquare, RefreshCw, XCircle, Edit, Camera, Star, Link2Off, Layers, ShoppingBag, MoreHorizontal, ChevronUp, List, LayoutGrid, CircleDollarSign, Receipt, Settings, Mail, MessageCircle, Cake, HelpCircle, Wrench, ShieldCheck, MessageSquare, Paperclip, Infinity, CheckCheck, PartyPopper, Compass, Play, MapPin, Landmark, LocateFixed, ArrowUpCircle, ArrowUpRight, Pause, CalendarDays, CircleCheckBig, UserX, Ban, CircleAlert, CircleEllipsis, FileText, CircleDashed, Power, ArrowRightLeft, File as File$1, FileImage, FileSpreadsheet, AlertCircle, CreditCard, SlidersHorizontal, Puzzle, Shield, Palette, Blocks, ShieldAlert, UserCog, LogOut, Bell, Database, Radio, Zap, Save, ImagePlus, UserPlus, Contact, UserMinus, Send, Sun, Moon, Monitor, Languages, Info, Link2, KeyRound, Ellipsis, Phone, Bug, Home, Heart, Briefcase, BarChart3, Tag, Truck, Globe2 } from 'lucide-react';
25
- import { reportAppError, toDataError, tl, createDebug, fetchAppConfig, getSupabaseClientOptional, payeeAccountFields, maskCpfCnpj, recordRailFields, RECORD_GROUP, activeFacet, createSafeDataProvider, isKnownMissing, rememberIfMissing, deriveEntityKey, registerEntity, getActiveTenantId, resolveDataProvider, bulkRemove, emitDomainEvent, entityEventKey, errorMessage, useTranslation, describeError, useDataChanged, emitDataChanged, exportCSV, getScopedResource, formatDateTime as formatDateTime$1, formatDate as formatDate$1, formatCurrency as formatCurrency$1, bulkCreate, matchesRange, isConnectorCategory, usePluginRuntimeOptional, useDataVersion, getWidgetsForZone, resolvePluginComponent, useUnitMode, invalidateAppConfig, toTenantPluginBindings, setCurrentLocale, resolveLocale, resolvePluginRuntime, PluginRuntimeProvider, I18nProvider, getAllEntities, resolveIntegrationSurface, defineApp, registerScaffold, subscribeHouseCurrency, getHouseCurrency, resolveCurrency, useActiveTenantId, onDataChanged, useConnectorsForPlugin, renderApp as renderApp$1, parseRangeFilter, isFilterObject, connectionKey, useManifest, registerEventSink, formatPostalCode, isValidPostalCode, lookupPostalCode, usePluginRuntime, useConnectivity, RECONNECTED_EVENT, installGlobalErrorHandlers, registerErrorReporter, getConnectivity, applyNavComposition, mergeTranslations, coreTranslations, attachPersistentCache, getPersistentCache, createMockProvider, listConnections, connectorPlanes, connectorPermissions, connectorEntities, preferredPlane, connectorDirection, countByTenant, isAddressIncomplete, isBankIncomplete, payeeMethodOf, getCurrentLocale, searchEverything, readImpersonation, getComponent, getPluginFactory, connectorSettings, groupedPermissions, invocationPlane, missingRequiredSettings, isBankEmpty, isAddressEmpty, writeImpersonation, isSettingSet, getEntityByKey, connectorSubscribesTo, eventKeyMatches } from '@fayz-ai/core';
25
+ import { reportAppError, toDataError, tl, createDebug, fetchAppConfig, getSupabaseClientOptional, payeeAccountFields, maskCpfCnpj, recordRailFields, RECORD_GROUP, activeFacet, createSafeDataProvider, isKnownMissing, rememberIfMissing, deriveEntityKey, registerEntity, getActiveTenantId, resolveDataProvider, bulkRemove, emitDomainEvent, entityEventKey, errorMessage, useTranslation, describeError, useDataChanged, emitDataChanged, exportCSV, getScopedResource, formatDateTime as formatDateTime$1, formatDate as formatDate$1, formatCurrency as formatCurrency$1, bulkCreate, matchesRange, isConnectorCategory, usePluginRuntimeOptional, useDataVersion, getWidgetsForZone, resolvePluginComponent, useUnitMode, invalidateAppConfig, toTenantPluginBindings, setCurrentLocale, resolveLocale, resolvePluginRuntime, PluginRuntimeProvider, I18nProvider, getAllEntities, resolveIntegrationSurface, defineApp, registerScaffold, subscribeHouseCurrency, getHouseCurrency, resolveCurrency, useActiveTenantId, onDataChanged, useConnectorsForPlugin, renderApp as renderApp$1, parseRangeFilter, isFilterObject, connectionKey, useManifest, registerEventSink, isAddressIncomplete, isBankIncomplete, formatPostalCode, isValidPostalCode, lookupPostalCode, usePluginRuntime, useConnectivity, RECONNECTED_EVENT, installGlobalErrorHandlers, registerErrorReporter, getConnectivity, applyNavComposition, mergeTranslations, coreTranslations, attachPersistentCache, getPersistentCache, createMockProvider, listConnections, connectorPlanes, connectorPermissions, connectorEntities, preferredPlane, connectorDirection, countByTenant, payeeMethodOf, getCurrentLocale, searchEverything, readImpersonation, getComponent, getPluginFactory, connectorSettings, groupedPermissions, invocationPlane, missingRequiredSettings, isBankEmpty, isAddressEmpty, writeImpersonation, isSettingSet, getEntityByKey, connectorSubscribesTo, eventKeyMatches } from '@fayz-ai/core';
26
26
  export { ConnectorRuntimeTokenUnavailableError, createSafeDataProvider, formatDate, formatDateTime, getActiveLocale, getActiveTenantId, getConnectorRuntimeTokenSource, getCurrentLocale, getSupabaseClientOptional, preloadLocale, resolveBackendEnv, setConnectorRuntimeTokenSource, setCurrentLocale, tl, useActiveTenantId } from '@fayz-ai/core';
27
27
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
28
28
  import { usePasswordSetupGate, SetPasswordPage, AuthGate, AuthProvider, createAuthRuntime } from '@fayz-ai/plugin-auth';
@@ -7622,12 +7622,13 @@ function ChatFab({ className, apiEndpoint, systemPrompt, agent, voice }) {
7622
7622
  "div",
7623
7623
  {
7624
7624
  className: cn(
7625
- "absolute bottom-0 right-0 flex items-center overflow-hidden rounded-full shadow-lg",
7625
+ "absolute bottom-0 right-0 flex items-center overflow-hidden shadow-lg",
7626
7626
  // Same fill as the FAB: the pill is the FAB stretching out, not a
7627
7627
  // second black object parked next to a purple one. Reserving
7628
7628
  // exactly the circle's width also closes the dead gap the dismiss
7629
- // button used to float in.
7630
- "bg-primary text-primary-foreground"
7629
+ // button used to float in. Over a mascot there is no circle to
7630
+ // stretch, so it speaks in the greeting's bubble instead.
7631
+ hasFace ? "rounded-2xl rounded-br-md border border-border bg-popover text-popover-foreground" : "rounded-full bg-primary text-primary-foreground"
7631
7632
  ),
7632
7633
  style: {
7633
7634
  ...pillSeat,
@@ -23301,6 +23302,40 @@ function PersonFormLayout({ fields: allFields, fieldGroups, values, onChange, re
23301
23302
  notesField && /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsx(CardContent, { className: cardPad, children: /* @__PURE__ */ jsx(FieldItem, { field: notesField, value: values[notesField.key], values, onChange: (val) => onChange(notesField.key, val), renderField: renderField2, compact }) }) })
23302
23303
  ] });
23303
23304
  }
23305
+ function TabStripSkeleton() {
23306
+ return /* @__PURE__ */ jsxs("div", { className: "inline-flex h-10 items-center gap-1 rounded-button bg-muted p-1", children: [
23307
+ /* @__PURE__ */ jsx("div", { className: "h-8 w-28 rounded-button bg-background" }),
23308
+ /* @__PURE__ */ jsx("div", { className: "h-3 w-16 mx-3 rounded bg-muted-foreground/15" }),
23309
+ /* @__PURE__ */ jsx("div", { className: "h-3 w-20 mx-3 rounded bg-muted-foreground/15" }),
23310
+ /* @__PURE__ */ jsx("div", { className: "h-3 w-14 mx-3 rounded bg-muted-foreground/15" })
23311
+ ] });
23312
+ }
23313
+ function CrudDetailSkeleton(_props = {}) {
23314
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-6 animate-pulse", children: [
23315
+ /* @__PURE__ */ jsx(TabStripSkeleton, {}),
23316
+ /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsx("div", { className: "divide-y", children: Array.from({ length: 4 }).map((_, i) => /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-3 gap-4 px-5 py-3", children: [
23317
+ /* @__PURE__ */ jsx("div", { className: "h-4 w-20 rounded bg-muted" }),
23318
+ /* @__PURE__ */ jsx("div", { className: "col-span-2 h-4 w-32 rounded bg-muted" })
23319
+ ] }, i)) }) })
23320
+ ] });
23321
+ }
23322
+ function CrudFormSkeleton({ groups = 2, twoColumn, tabs } = {}) {
23323
+ const section = (key, rows) => /* @__PURE__ */ jsxs(Card, { className: "p-5", children: [
23324
+ /* @__PURE__ */ jsx("div", { className: "mb-4 h-4 w-32 rounded bg-muted" }),
23325
+ /* @__PURE__ */ jsx("div", { className: "fz-fields fz-fields-2 gap-4", children: Array.from({ length: rows }).map((_, i) => /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
23326
+ /* @__PURE__ */ jsx("div", { className: "h-3 w-24 rounded bg-muted" }),
23327
+ /* @__PURE__ */ jsx("div", { className: "h-9 w-full rounded-input bg-muted" })
23328
+ ] }, i)) })
23329
+ ] }, key);
23330
+ const main = /* @__PURE__ */ jsx("div", { className: "space-y-5", children: Array.from({ length: groups }).map((_, i) => section(i, i === 0 ? 4 : 2)) });
23331
+ return /* @__PURE__ */ jsxs("div", { className: "w-full animate-pulse", children: [
23332
+ tabs && /* @__PURE__ */ jsx("div", { className: "mb-4", children: /* @__PURE__ */ jsx(TabStripSkeleton, {}) }),
23333
+ /* @__PURE__ */ jsx("div", { className: `fz-container mx-auto w-full space-y-5 ${twoColumn ? "max-w-6xl" : "max-w-3xl"}`, children: twoColumn ? /* @__PURE__ */ jsxs("div", { className: "fz-split", children: [
23334
+ /* @__PURE__ */ jsx("div", { children: main }),
23335
+ /* @__PURE__ */ jsx("div", { className: "space-y-5", children: section(99, 2) })
23336
+ ] }) : main })
23337
+ ] });
23338
+ }
23304
23339
 
23305
23340
  // src/crud/write-errors.ts
23306
23341
  var SCOPE_COLUMNS = /* @__PURE__ */ new Set(["tenant_id", "org_id", "workspace_id", "unit_id", "account_id"]);
@@ -23355,6 +23390,7 @@ function CrudRecordModal({
23355
23390
  description,
23356
23391
  emptyLabel,
23357
23392
  essentialFirst,
23393
+ highlightMissing,
23358
23394
  notice
23359
23395
  }) {
23360
23396
  const [record, setRecord] = React133.useState(null);
@@ -23362,7 +23398,7 @@ function CrudRecordModal({
23362
23398
  const [saving, setSaving] = React133.useState(false);
23363
23399
  const [error, setError] = React133.useState(null);
23364
23400
  const formId = React133.useId();
23365
- React133.useEffect(() => {
23401
+ React133.useLayoutEffect(() => {
23366
23402
  if (!open) return;
23367
23403
  setError(null);
23368
23404
  if (mode === "create" || !load2) {
@@ -23403,7 +23439,7 @@ function CrudRecordModal({
23403
23439
  description && /* @__PURE__ */ jsx(ModalDescription, { children: description })
23404
23440
  ] }),
23405
23441
  /* @__PURE__ */ jsxs(ModalBody, { className: "-mx-1 px-1", children: [
23406
- loading && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "Carregando\u2026" }),
23442
+ loading && /* @__PURE__ */ jsx("div", { "aria-busy": "true", "data-testid": "crud-record-loading", children: /* @__PURE__ */ jsx(CrudFormSkeleton, {}) }),
23407
23443
  !loading && !record && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: emptyLabel ?? "N\xE3o encontramos esse registro." }),
23408
23444
  error && /* @__PURE__ */ jsx("p", { role: "alert", className: "mb-3 rounded-md border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-800", children: error }),
23409
23445
  notice && /* @__PURE__ */ jsx("div", { className: "mb-3", children: notice }),
@@ -23413,6 +23449,7 @@ function CrudRecordModal({
23413
23449
  embedded: true,
23414
23450
  hideActions: true,
23415
23451
  essentialFirst,
23452
+ highlightMissing,
23416
23453
  formId,
23417
23454
  entityDef,
23418
23455
  mode,
@@ -25506,7 +25543,7 @@ function CrudFormPage(props) {
25506
25543
  const { provider: provider2, flush } = usePendingChildren();
25507
25544
  return /* @__PURE__ */ jsx(PendingChildrenProvider, { value: provider2, children: /* @__PURE__ */ jsx(CrudFormPageBody, { ...props, flushPending: flush }) });
25508
25545
  }
25509
- function CrudFormPageBody({ entityDef, mode, initialData, onSubmit, onSaved, onCancel, namePlural, embedded, hideBreadcrumb, onRecordTab, formId, hideActions, essentialFirst, noForm, submitRef, flushPending }) {
25546
+ function CrudFormPageBody({ entityDef, mode, initialData, onSubmit, onSaved, onCancel, namePlural, embedded, hideBreadcrumb, onRecordTab, formId, hideActions, essentialFirst, highlightMissing, noForm, submitRef, flushPending }) {
25510
25547
  const t = useTranslation();
25511
25548
  const formFields = entityDef.fields.filter((f) => f.showInForm !== false);
25512
25549
  const displayField = entityDef.displayField ?? entityDef.fields[0]?.key ?? "id";
@@ -25520,6 +25557,7 @@ function CrudFormPageBody({ entityDef, mode, initialData, onSubmit, onSaved, onC
25520
25557
  const init = computeInit();
25521
25558
  setValues(init);
25522
25559
  initialRef.current = JSON.stringify(init);
25560
+ if (highlightMissing) setInvalidKeys(new Set(missingRequiredFields(formFields, init).map((f) => f.key)));
25523
25561
  }, [mode, initialData]);
25524
25562
  const computedKeys = new Set(formFields.filter((f) => f.type === "computed").map((f) => f.key));
25525
25563
  const limitKey = entityDef.limitKey;
@@ -25859,40 +25897,6 @@ function CrudFormPageBody({ entityDef, mode, initialData, onSubmit, onSaved, onC
25859
25897
  ) })
25860
25898
  ] }) });
25861
25899
  }
25862
- function TabStripSkeleton() {
25863
- return /* @__PURE__ */ jsxs("div", { className: "inline-flex h-10 items-center gap-1 rounded-button bg-muted p-1", children: [
25864
- /* @__PURE__ */ jsx("div", { className: "h-8 w-28 rounded-button bg-background" }),
25865
- /* @__PURE__ */ jsx("div", { className: "h-3 w-16 mx-3 rounded bg-muted-foreground/15" }),
25866
- /* @__PURE__ */ jsx("div", { className: "h-3 w-20 mx-3 rounded bg-muted-foreground/15" }),
25867
- /* @__PURE__ */ jsx("div", { className: "h-3 w-14 mx-3 rounded bg-muted-foreground/15" })
25868
- ] });
25869
- }
25870
- function CrudDetailSkeleton(_props = {}) {
25871
- return /* @__PURE__ */ jsxs("div", { className: "space-y-6 animate-pulse", children: [
25872
- /* @__PURE__ */ jsx(TabStripSkeleton, {}),
25873
- /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsx("div", { className: "divide-y", children: Array.from({ length: 4 }).map((_, i) => /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-3 gap-4 px-5 py-3", children: [
25874
- /* @__PURE__ */ jsx("div", { className: "h-4 w-20 rounded bg-muted" }),
25875
- /* @__PURE__ */ jsx("div", { className: "col-span-2 h-4 w-32 rounded bg-muted" })
25876
- ] }, i)) }) })
25877
- ] });
25878
- }
25879
- function CrudFormSkeleton({ groups = 2, twoColumn, tabs } = {}) {
25880
- const section = (key, rows) => /* @__PURE__ */ jsxs(Card, { className: "p-5", children: [
25881
- /* @__PURE__ */ jsx("div", { className: "mb-4 h-4 w-32 rounded bg-muted" }),
25882
- /* @__PURE__ */ jsx("div", { className: "fz-fields fz-fields-2 gap-4", children: Array.from({ length: rows }).map((_, i) => /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
25883
- /* @__PURE__ */ jsx("div", { className: "h-3 w-24 rounded bg-muted" }),
25884
- /* @__PURE__ */ jsx("div", { className: "h-9 w-full rounded-input bg-muted" })
25885
- ] }, i)) })
25886
- ] }, key);
25887
- const main = /* @__PURE__ */ jsx("div", { className: "space-y-5", children: Array.from({ length: groups }).map((_, i) => section(i, i === 0 ? 4 : 2)) });
25888
- return /* @__PURE__ */ jsxs("div", { className: "w-full animate-pulse", children: [
25889
- tabs && /* @__PURE__ */ jsx("div", { className: "mb-4", children: /* @__PURE__ */ jsx(TabStripSkeleton, {}) }),
25890
- /* @__PURE__ */ jsx("div", { className: `fz-container mx-auto w-full space-y-5 ${twoColumn ? "max-w-6xl" : "max-w-3xl"}`, children: twoColumn ? /* @__PURE__ */ jsxs("div", { className: "fz-split", children: [
25891
- /* @__PURE__ */ jsx("div", { children: main }),
25892
- /* @__PURE__ */ jsx("div", { className: "space-y-5", children: section(99, 2) })
25893
- ] }) : main })
25894
- ] });
25895
- }
25896
25900
  function formatValue2(field, value) {
25897
25901
  if (value == null || value === "") return null;
25898
25902
  if (field.renderCell) return field.renderCell(value, {});
@@ -26115,12 +26119,12 @@ function AskAIMenuItem({
26115
26119
  askAI({ hint, prompt, draft, media, intro });
26116
26120
  onHandoff?.();
26117
26121
  },
26118
- className: "items-start gap-2 bg-primary/10 py-2 text-primary focus:bg-primary/20 focus:text-primary",
26122
+ className: "fz-ai-action items-start gap-2 py-2",
26119
26123
  children: [
26120
26124
  /* @__PURE__ */ jsx(WandSparkles, { className: "mt-0.5 h-3.5 w-3.5 shrink-0" }),
26121
26125
  /* @__PURE__ */ jsxs("span", { className: "min-w-0", children: [
26122
26126
  /* @__PURE__ */ jsx("span", { className: "block font-medium", children: label3 ?? t("assistant.askAI") }),
26123
- description ? /* @__PURE__ */ jsx("span", { className: "block text-xs font-normal text-primary/70", children: description }) : null
26127
+ description ? /* @__PURE__ */ jsx("span", { className: "block text-xs font-normal opacity-70", children: description }) : null
26124
26128
  ] })
26125
26129
  ]
26126
26130
  }
@@ -26357,6 +26361,7 @@ function CrudListView({
26357
26361
  // Create is the primary even when the assistant route is listed first:
26358
26362
  // the menu's order is about emphasis, the button is about the default.
26359
26363
  intent: qa.id === "new" ? "primary" : "secondary",
26364
+ ai: qa.id === "ai",
26360
26365
  creates: true,
26361
26366
  // A spreadsheet import needs a file picker and a column mapping — a job
26362
26367
  // a phone cannot finish, so the phone is not offered it.