@fayz-ai/admin 0.22.1 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/{CommandPalette-GQ6SPITD.js → CommandPalette-ANZWU27U.js} +5 -5
  2. package/dist/CommandPalette-ANZWU27U.js.map +1 -0
  3. package/dist/ScheduleEditor-KU4UUG6Q.js +7 -0
  4. package/dist/ScheduleEditor-KU4UUG6Q.js.map +1 -0
  5. package/dist/SubscriptionPage-4EJCCS4I.js +8 -0
  6. package/dist/{SubscriptionPage-Y23PH6US.js.map → SubscriptionPage-4EJCCS4I.js.map} +1 -1
  7. package/dist/app/AdminShell.d.ts +2 -0
  8. package/dist/app/AdminShell.d.ts.map +1 -1
  9. package/dist/app/WrongAppGate.d.ts +46 -0
  10. package/dist/app/WrongAppGate.d.ts.map +1 -0
  11. package/dist/app/admin-app.d.ts.map +1 -1
  12. package/dist/app/app-config-cache.d.ts +13 -0
  13. package/dist/app/app-config-cache.d.ts.map +1 -0
  14. package/dist/app/contextual-nav.store.d.ts +7 -5
  15. package/dist/app/contextual-nav.store.d.ts.map +1 -1
  16. package/dist/app/nav-serving.d.ts +40 -0
  17. package/dist/app/nav-serving.d.ts.map +1 -0
  18. package/dist/app/nav-waiting.d.ts +23 -0
  19. package/dist/app/nav-waiting.d.ts.map +1 -0
  20. package/dist/app/rail-preset.d.ts +38 -0
  21. package/dist/app/rail-preset.d.ts.map +1 -0
  22. package/dist/app/scaffold.d.ts.map +1 -1
  23. package/dist/app/useAppPreset.d.ts +81 -0
  24. package/dist/app/useAppPreset.d.ts.map +1 -0
  25. package/dist/app/useDomainTenant.d.ts +32 -0
  26. package/dist/app/useDomainTenant.d.ts.map +1 -0
  27. package/dist/app/useTenantShell.d.ts +35 -0
  28. package/dist/app/useTenantShell.d.ts.map +1 -0
  29. package/dist/billing/index.js +2 -2
  30. package/dist/{chunk-YBLLTHYP.js → chunk-LB5SV4ZZ.js} +6 -6
  31. package/dist/{chunk-YBLLTHYP.js.map → chunk-LB5SV4ZZ.js.map} +1 -1
  32. package/dist/{ScheduleEditor-B7PLFGVM.js → chunk-NXFFJY2X.js} +44 -8
  33. package/dist/chunk-NXFFJY2X.js.map +1 -0
  34. package/dist/{chunk-NB6X5O5L.js → chunk-R4HQ2HS2.js} +22 -6
  35. package/dist/chunk-R4HQ2HS2.js.map +1 -0
  36. package/dist/{chunk-CTCK5JUQ.js → chunk-U3VX52SE.js} +4 -5
  37. package/dist/chunk-U3VX52SE.js.map +1 -0
  38. package/dist/{chunk-WJ3H3RJN.js → chunk-UQ2NTFQC.js} +4 -2
  39. package/dist/chunk-UQ2NTFQC.js.map +1 -0
  40. package/dist/{chunk-5GWUM4SM.js → chunk-W5IBKM3K.js} +3 -2
  41. package/dist/chunk-W5IBKM3K.js.map +1 -0
  42. package/dist/{chunk-ZKOWNGZT.js → chunk-XJB76FHA.js} +216 -72
  43. package/dist/chunk-XJB76FHA.js.map +1 -0
  44. package/dist/components/RightRail.d.ts.map +1 -1
  45. package/dist/components/chat/AgentAvatar.d.ts +6 -1
  46. package/dist/components/chat/AgentAvatar.d.ts.map +1 -1
  47. package/dist/components/chat/AssistantInvite.d.ts.map +1 -1
  48. package/dist/components/chat/ChatConversation.d.ts.map +1 -1
  49. package/dist/components/chat/ChatFab.d.ts.map +1 -1
  50. package/dist/components/layout/CommandPalette.d.ts +5 -1
  51. package/dist/components/layout/CommandPalette.d.ts.map +1 -1
  52. package/dist/components/layout/PrintChrome.d.ts.map +1 -1
  53. package/dist/components/right-rail.d.ts +2 -0
  54. package/dist/components/right-rail.d.ts.map +1 -1
  55. package/dist/components/settings/AddModulesPanel.d.ts +45 -0
  56. package/dist/components/settings/AddModulesPanel.d.ts.map +1 -0
  57. package/dist/components/settings/BrandingSettings.d.ts.map +1 -1
  58. package/dist/components/settings/ConnectedModulesSettings.d.ts +5 -0
  59. package/dist/components/settings/ConnectedModulesSettings.d.ts.map +1 -0
  60. package/dist/components/settings/ModuleCard.d.ts +26 -0
  61. package/dist/components/settings/ModuleCard.d.ts.map +1 -0
  62. package/dist/components/settings/ModulesSettings.d.ts +48 -0
  63. package/dist/components/settings/ModulesSettings.d.ts.map +1 -0
  64. package/dist/components/settings/SettingsPage.d.ts.map +1 -1
  65. package/dist/components/settings/module-catalog.d.ts +58 -0
  66. package/dist/components/settings/module-catalog.d.ts.map +1 -0
  67. package/dist/crud/CrudFormPage.d.ts.map +1 -1
  68. package/dist/crud/archetypes/OrderDetailView.d.ts +44 -0
  69. package/dist/crud/archetypes/OrderDetailView.d.ts.map +1 -1
  70. package/dist/directory/AppSwitcher.d.ts +6 -2
  71. package/dist/directory/AppSwitcher.d.ts.map +1 -1
  72. package/dist/hooks/useAppConfig.d.ts +8 -0
  73. package/dist/hooks/useAppConfig.d.ts.map +1 -1
  74. package/dist/hooks/useChat.d.ts.map +1 -1
  75. package/dist/hooks/useLayout.d.ts +4 -1
  76. package/dist/hooks/useLayout.d.ts.map +1 -1
  77. package/dist/index.d.ts +4 -1
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +2069 -980
  80. package/dist/index.js.map +1 -1
  81. package/dist/lib/agent-surface.d.ts +8 -1
  82. package/dist/lib/agent-surface.d.ts.map +1 -1
  83. package/dist/lib/ai-tool-handlers.d.ts.map +1 -1
  84. package/dist/lib/brand.d.ts +45 -0
  85. package/dist/lib/brand.d.ts.map +1 -1
  86. package/dist/lib/search-targets.d.ts.map +1 -1
  87. package/dist/org/OrgMark.d.ts +41 -0
  88. package/dist/org/OrgMark.d.ts.map +1 -0
  89. package/dist/org/WorkspaceChooser.d.ts +1 -0
  90. package/dist/org/WorkspaceChooser.d.ts.map +1 -1
  91. package/dist/org/WorkspaceChooserGate.d.ts.map +1 -1
  92. package/dist/org/WorkspaceSwitching.d.ts.map +1 -1
  93. package/dist/org/context.d.ts +13 -1
  94. package/dist/org/context.d.ts.map +1 -1
  95. package/dist/org/index.d.ts +2 -0
  96. package/dist/org/index.d.ts.map +1 -1
  97. package/dist/org/index.js +4 -4
  98. package/dist/org/switching.store.d.ts.map +1 -1
  99. package/dist/org/workspace-search.d.ts +27 -0
  100. package/dist/org/workspace-search.d.ts.map +1 -0
  101. package/dist/permissions/index.js +1 -1
  102. package/dist/permissions/store.d.ts +12 -0
  103. package/dist/permissions/store.d.ts.map +1 -1
  104. package/dist/setup/SetupAgentSurface.d.ts.map +1 -1
  105. package/dist/stores/app-config.store.d.ts +5 -1
  106. package/dist/stores/app-config.store.d.ts.map +1 -1
  107. package/dist/theme/dark.d.ts.map +1 -1
  108. package/dist/theme/light.d.ts.map +1 -1
  109. package/dist/theme/tokens.d.ts +13 -0
  110. package/dist/theme/tokens.d.ts.map +1 -1
  111. package/dist/theme/utils.d.ts.map +1 -1
  112. package/dist/units/UnitSwitcher.d.ts +10 -1
  113. package/dist/units/UnitSwitcher.d.ts.map +1 -1
  114. package/package.json +6 -6
  115. package/dist/CommandPalette-GQ6SPITD.js.map +0 -1
  116. package/dist/ScheduleEditor-B7PLFGVM.js.map +0 -1
  117. package/dist/SubscriptionPage-Y23PH6US.js +0 -8
  118. package/dist/chunk-5GWUM4SM.js.map +0 -1
  119. package/dist/chunk-CTCK5JUQ.js.map +0 -1
  120. package/dist/chunk-NB6X5O5L.js.map +0 -1
  121. package/dist/chunk-RKXZ7RUG.js +0 -20
  122. package/dist/chunk-RKXZ7RUG.js.map +0 -1
  123. package/dist/chunk-WJ3H3RJN.js.map +0 -1
  124. package/dist/chunk-ZKOWNGZT.js.map +0 -1
@@ -71,7 +71,14 @@ export declare function subscribeSurfaces(cb: () => void): () => void;
71
71
  /** Version counter for useSyncExternalStore; bumps when the set of surfaces
72
72
  * changes so `useAITools` recomputes its catalog. */
73
73
  export declare function getSurfaceVersion(): number;
74
- /** Flat list of tool declarations across every mounted surface (for the catalog). */
74
+ /** Flat list of tool declarations across every mounted surface (for the catalog).
75
+ *
76
+ * Most recently mounted surface FIRST. The shell's standing surfaces (setup,
77
+ * handbook) register at boot; the screen the user is looking at registers when
78
+ * its route mounts — last. The toolset cap keeps the head of the catalog, and
79
+ * the one surface that must never be the one cut is the screen in front of the
80
+ * user: this ordering is why "importa esse cardápio" gets the menu's own tools
81
+ * instead of a truncated catalog that ends right before them. */
75
82
  export declare function getSurfaceTools(): PluginAITool[];
76
83
  /** Snapshot + instructions from every mounted surface, read at send time. */
77
84
  export declare function getActiveSurfaceContext(): {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-surface.d.ts","sourceRoot":"","sources":["../../src/lib/agent-surface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,oBAAoB;IACnC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,wEAAwE;IACxE,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAC3F;AAED,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,IAAI,EAAE,YAAY,CAAA;IAClB,iFAAiF;IACjF,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACvE;AAED,MAAM,WAAW,wBAAwB;IACvC,wEAAwE;IACxE,EAAE,EAAE,MAAM,CAAA;IACV,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;mEAC+D;IAC/D,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,oBAAoB,CAAA;IACrC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAC3B;AAED;yDACyD;AACzD,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,wBAAwB,CAAA;CACpC;AAWD,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAGzD;AAED,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAKlD;AAED;iDACiD;AACjD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAG5D;AAED;sDACsD;AACtD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,qFAAqF;AACrF,wBAAgB,eAAe,IAAI,YAAY,EAAE,CAMhD;AAED,6EAA6E;AAC7E,wBAAgB,uBAAuB,IAAI;IACzC,QAAQ,EAAE,oBAAoB,EAAE,CAAA;IAChC,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB,CAeA"}
1
+ {"version":3,"file":"agent-surface.d.ts","sourceRoot":"","sources":["../../src/lib/agent-surface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,oBAAoB;IACnC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,wEAAwE;IACxE,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAC3F;AAED,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,IAAI,EAAE,YAAY,CAAA;IAClB,iFAAiF;IACjF,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACvE;AAED,MAAM,WAAW,wBAAwB;IACvC,wEAAwE;IACxE,EAAE,EAAE,MAAM,CAAA;IACV,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;mEAC+D;IAC/D,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,oBAAoB,CAAA;IACrC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAC3B;AAED;yDACyD;AACzD,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,wBAAwB,CAAA;CACpC;AAWD,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAGzD;AAED,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAKlD;AAED;iDACiD;AACjD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAG5D;AAED;sDACsD;AACtD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;;;kEAOkE;AAClE,wBAAgB,eAAe,IAAI,YAAY,EAAE,CAMhD;AAED,6EAA6E;AAC7E,wBAAgB,uBAAuB,IAAI;IACzC,QAAQ,EAAE,oBAAoB,EAAE,CAAA;IAChC,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB,CAeA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai-tool-handlers.d.ts","sourceRoot":"","sources":["../../src/lib/ai-tool-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-tool-handlers.d.ts","sourceRoot":"","sources":["../../src/lib/ai-tool-handlers.ts"],"names":[],"mappings":"AAwFA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,YAAY,EAEZ,iBAAiB,EACjB,UAAU,EACX,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEvE;;;;;;;;;;;;;;;;;GAiBG;AAEH,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,SAAS,CAAA;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAChC,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,YAAY,GAAG,IAAI,CAAA;IAC/B,OAAO,EAAE,SAAS,EAAE,CAAA;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAA;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,sEAAsE;IACtE,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC/C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC;;;;;OAKG;IACH,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACtC;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACrD;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9C;;;;OAIG;IACH,eAAe,CAAC,EAAE,YAAY,EAAE,CAAA;IAChC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE;QACX,aAAa,EAAE,CACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,UAAU,CAAC,KAChD,OAAO,CAAC,iBAAiB,CAAC,CAAA;QAC/B,aAAa,CAAC,EAAE,CACd,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAC7B,OAAO,CAAC,iBAAiB,CAAC,CAAA;QAC/B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAA;KAC/D,GAAG,IAAI,CAAA;CACT;AAED,MAAM,MAAM,aAAa,GAAG,CAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,sBAAsB,KAC5B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAI/B;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAEhF;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,IAAI,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE1D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AA0DD,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAA;IACX,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAA;CAChB;AAoND,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAmBhC;AAyBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAA;IAC5C,QAAQ,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAA;IACpH,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAA;IAClE,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAA;IAC7C,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAC9E,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAyC9B;AAwxBD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACtC,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B;8CAC0C;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC5B;;6DAEyD;IACzD,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EAAE,EACrB,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,QAA6B,EAAE,EAAE,mBAAmB,GAChG,SAAS,EAAE,CAiCb;AAibD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAAC,qBAAqB,CAAC,CAehC"}
@@ -2,7 +2,25 @@ export interface BrandIdentity {
2
2
  name?: string;
3
3
  tagline?: string;
4
4
  mission?: string;
5
+ /** O wordmark para fundo CLARO. */
5
6
  logoUrl?: string;
7
+ /**
8
+ * O wordmark para fundo ESCURO.
9
+ *
10
+ * Não é luxo: a logo do Espaço Facial no V1 é um SVG branco, que some sobre
11
+ * papel e só existe porque o rail é preto. Uma marca séria tem as duas artes,
12
+ * e um contrato com um campo só obriga a escolher qual dos dois fundos vai
13
+ * ficar errado.
14
+ */
15
+ logoDarkUrl?: string;
16
+ /**
17
+ * O ícone quadrado, numa versão só: a arte CLARA.
18
+ *
19
+ * O ladrilho que a desenha leva o próprio fundo escuro para qualquer
20
+ * superfície, então ela lê no rail, no popover e no seletor pós-login. Duas
21
+ * versões significariam a casa entregar dois arquivos, e um deles envelhecer.
22
+ */
23
+ markUrl?: string;
6
24
  faviconUrl?: string;
7
25
  customDomain?: string;
8
26
  }
@@ -15,6 +33,33 @@ export interface BrandTokens {
15
33
  heading?: string;
16
34
  body?: string;
17
35
  };
36
+ /** O papel: fundo da aplicação, cartão, e a tinta sobre eles. */
37
+ surface?: {
38
+ background?: string;
39
+ card?: string;
40
+ foreground?: string;
41
+ };
42
+ /**
43
+ * O rail — a decisão que a cor primária sozinha não expressa.
44
+ *
45
+ * O V1 guarda um tema inteiro por tenant (`software_profiles.theme`, com
46
+ * `rail` / `surface` / `emphasis`), e o Espaço Facial é preto no rail com
47
+ * bege no item ativo. Com só `color.primary` atravessando, o V2 pintava o
48
+ * bege e herdava o rail do aplicativo — a marca chegava pela metade.
49
+ *
50
+ * Mesmo vocabulário do `SaasTheme.sidebar`, de propósito: o que o banco
51
+ * grava é o que a casca já sabe consumir.
52
+ */
53
+ rail?: {
54
+ background?: string;
55
+ foreground?: string;
56
+ border?: string;
57
+ accent?: string;
58
+ accentForeground?: string;
59
+ muted?: string;
60
+ };
61
+ /** O raio das quinas, em CSS (`0.75rem`). */
62
+ radius?: string;
18
63
  }
19
64
  export interface BrandVoice {
20
65
  tone?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/lib/brand.ts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC3C;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB;qDACiD;IACjD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,aAAa,CAAA;IACvB,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,UAAU,CAAA;CAClB;AAED,eAAO,MAAM,WAAW,EAAE,WAAqD,CAAA;AAS/E;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAiC7G;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAsB/E;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAKtE"}
1
+ {"version":3,"file":"brand.d.ts","sourceRoot":"","sources":["../../src/lib/brand.ts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7C,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1C,iEAAiE;IACjE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACrE;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE;QACL,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB;qDACiD;IACjD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,aAAa,CAAA;IACvB,MAAM,EAAE,WAAW,CAAA;IACnB,KAAK,EAAE,UAAU,CAAA;CAClB;AAED,eAAO,MAAM,WAAW,EAAE,WAAqD,CAAA;AAS/E;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAiD7G;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAsB/E;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAKtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"search-targets.d.ts","sourceRoot":"","sources":["../../src/lib/search-targets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAK5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAoBzD,MAAM,WAAW,yBAAyB;IACxC,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAA;IAC7C,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAC9E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,GAAE,yBAA8B,GAAG,YAAY,EAAE,CAkC1F"}
1
+ {"version":3,"file":"search-targets.d.ts","sourceRoot":"","sources":["../../src/lib/search-targets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAK5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAoBzD,MAAM,WAAW,yBAAyB;IACxC,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAA;IAC7C,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAC9E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,GAAE,yBAA8B,GAAG,YAAY,EAAE,CA2C1F"}
@@ -0,0 +1,41 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * A cara de uma conta: a marca dela, ou as iniciais.
4
+ *
5
+ * Existia em TRÊS cópias — o gatilho do rail, o seletor pós-login e o diálogo
6
+ * de troca — e cada uma aprendeu as regras abaixo separado. As duas primeiras
7
+ * cortavam a marca (`object-cover`), e só uma delas sabia da arte por
8
+ * superfície. Um componente, uma regra.
9
+ *
10
+ * ── As três regras ─────────────────────────────────────────────────────────
11
+ *
12
+ * 1. **Contido, nunca cortado.** O que chega aqui costuma ser um wordmark
13
+ * largo, e cortar o meio dele é o que fazia "Espaço Facial" virar "aço".
14
+ *
15
+ * 2. **O ladrilho JÁ VEM PRONTO na imagem.** `markUrl` aponta para um quadrado
16
+ * acabado — fundo escuro, cantos arredondados, glifo claro dentro — gerado
17
+ * uma vez e guardado. A alternativa era o componente montar isso a cada
18
+ * render (fundo por classe, glifo por cima, uma regra de contraste por
19
+ * superfície), que foi o que fez a marca sumir duas vezes, em direções
20
+ * opostas. Uma imagem pronta lê igual no rail, no popover e no seletor
21
+ * pós-login, e não tem regra para errar.
22
+ *
23
+ * 3. **A marca do documento é só da conta ATIVA.** `app_config()` descreve o
24
+ * inquilino em que a sessão está. Usá-la nas linhas da lista pinta todas as
25
+ * contas com o ícone de uma — e o seletor pós-login nem tem conta ativa
26
+ * ainda, então lá cada linha usa sempre a arte da própria conta.
27
+ */
28
+ export interface OrgMarkProps {
29
+ name: string;
30
+ /** A marca da conta, como a lista a conhece (`tenants.logo_url`). */
31
+ logoUrl?: string;
32
+ className?: string;
33
+ /** A superfície onde o ladrilho está. O popover é claro mesmo num rail escuro. */
34
+ tone?: 'sidebar' | 'popover';
35
+ /** Este ladrilho é o da conta ativa — só ele pode usar o documento de marca. */
36
+ current?: boolean;
37
+ }
38
+ /** Duas letras no máximo: primeira + última palavra ("Artorius Steakhouse" → AS). */
39
+ export declare function orgInitials(name: string): string;
40
+ export declare function OrgMark({ name, logoUrl, className, tone, current }: OrgMarkProps): React.JSX.Element;
41
+ //# sourceMappingURL=OrgMark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrgMark.d.ts","sourceRoot":"","sources":["../../src/org/OrgMark.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kFAAkF;IAClF,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IAC5B,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAgB,EAAE,OAAe,EAAE,EAAE,YAAY,qBA6BpG"}
@@ -17,4 +17,5 @@ export interface WorkspaceChooserProps {
17
17
  * something valid underneath, and there is not.
18
18
  */
19
19
  export declare function WorkspaceChooser({ memberships, suggestedId, onCancel }: WorkspaceChooserProps): React.JSX.Element;
20
+ /** The workspace's face, at picker size: its logo, or its initials. */
20
21
  //# sourceMappingURL=WorkspaceChooser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceChooser.d.ts","sourceRoot":"","sources":["../../src/org/WorkspaceChooser.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAOlD,MAAM,WAAW,qBAAqB;IACpC,yDAAyD;IACzD,WAAW,EAAE,aAAa,EAAE,CAAA;IAC5B,yEAAyE;IACzE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,qBAAqB,qBAmI7F"}
1
+ {"version":3,"file":"WorkspaceChooser.d.ts","sourceRoot":"","sources":["../../src/org/WorkspaceChooser.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAQlD,MAAM,WAAW,qBAAqB;IACpC,yDAAyD;IACzD,WAAW,EAAE,aAAa,EAAE,CAAA;IAC5B,yEAAyE;IACzE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,qBAAqB,qBAiK7F;AAED,uEAAuE"}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceChooserGate.d.ts","sourceRoot":"","sources":["../../src/org/WorkspaceChooserGate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,MAAM,WAAW,yBAAyB;IACxC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,yBAAyB,qBA2BrF"}
1
+ {"version":3,"file":"WorkspaceChooserGate.d.ts","sourceRoot":"","sources":["../../src/org/WorkspaceChooserGate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,MAAM,WAAW,yBAAyB;IACxC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,yBAAyB,qBAoDrF"}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceSwitching.d.ts","sourceRoot":"","sources":["../../src/org/WorkspaceSwitching.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,MAAM,WAAW,uBAAuB;IACtC,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAA;IACf,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6EAA6E;IAC7E,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,uBAAuB,qBAkH1F"}
1
+ {"version":3,"file":"WorkspaceSwitching.d.ts","sourceRoot":"","sources":["../../src/org/WorkspaceSwitching.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,MAAM,WAAW,uBAAuB;IACtC,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAA;IACf,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6EAA6E;IAC7E,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,uBAAuB,qBAkH1F"}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { OrgAdapter, Organization, OrgMembership } from '@fayz-ai/core';
2
+ import { type OrgAdapter, type Organization, type OrgMembership } from '@fayz-ai/core';
3
3
  export declare function useOrgAdapter(): OrgAdapter;
4
4
  export declare function useOrgAdapterOptional(): OrgAdapter | null;
5
5
  export interface TenantContext {
@@ -26,6 +26,18 @@ export interface TenantContext {
26
26
  * "no orgs" as a FACT (the first-run setup gate) has to ask this instead.
27
27
  */
28
28
  orgsKnown: boolean;
29
+ /**
30
+ * A leitura das contas FALHOU — e falhou é diferente de "não tem nenhuma".
31
+ *
32
+ * `orgsKnown: false` já dizia "não sabemos", mas dizia isso também no
33
+ * instante antes de saber, então ninguém podia agir nele. Sem esta mensagem
34
+ * um erro de rede chegava na tela como um sistema de uma linha só e um
35
+ * seletor oferecendo "criar área de trabalho" — a resposta errada,
36
+ * apresentada com a mesma cara da certa.
37
+ */
38
+ loadError: string | null;
39
+ /** Tenta ler as contas de novo, depois de uma falha. */
40
+ retryOrgs: () => void;
29
41
  /** Switch the active org */
30
42
  switchOrg: (orgId: string) => Promise<void>;
31
43
  /** Refresh the current org from the adapter */
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/org/context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAqB5E,wBAAgB,aAAa,IAAI,UAAU,CAM1C;AAED,wBAAgB,qBAAqB,IAAI,UAAU,GAAG,IAAI,CAEzD;AAMD,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,GAAG,EAAE,YAAY,GAAG,IAAI,CAAA;IACxB,2CAA2C;IAC3C,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB;;;;;;;;OAQG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB;;;;;;OAMG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB,4BAA4B;IAC5B,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,+CAA+C;IAC/C,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAChC;AAID;;;GAGG;AACH,wBAAgB,SAAS,IAAI,aAAa,CAMzC;AAED,wBAAgB,iBAAiB,IAAI,aAAa,GAAG,IAAI,CAExD;AAMD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,UAAU,CAAA;IACnB,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAKD,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,UAAkB,EAClB,UAA6B,EAC7B,QAAQ,GACT,EAAE,gBAAgB,qBAmSlB"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/org/context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAgB,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAqBpG,wBAAgB,aAAa,IAAI,UAAU,CAM1C;AAED,wBAAgB,qBAAqB,IAAI,UAAU,GAAG,IAAI,CAEzD;AAMD,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,GAAG,EAAE,YAAY,GAAG,IAAI,CAAA;IACxB,2CAA2C;IAC3C,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB;;;;;;;;OAQG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB;;;;;;OAMG;IACH,SAAS,EAAE,OAAO,CAAA;IAClB;;;;;;;;OAQG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,wDAAwD;IACxD,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,4BAA4B;IAC5B,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,+CAA+C;IAC/C,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAChC;AAID;;;GAGG;AACH,wBAAgB,SAAS,IAAI,aAAa,CAMzC;AAED,wBAAgB,iBAAiB,IAAI,aAAa,GAAG,IAAI,CAExD;AAMD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,UAAU,CAAA;IACnB,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAKD,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,UAAkB,EAClB,UAA6B,EAC7B,QAAQ,GACT,EAAE,gBAAgB,qBA2TlB"}
@@ -18,4 +18,6 @@ export { ORG_CACHE_TTL_MS, readOrgSnapshot, clearOrgSnapshot } from './cache';
18
18
  export type { OrgSnapshot } from './cache';
19
19
  export { OrgProvider, useTenant, useTenantOptional, useOrgAdapter, useOrgAdapterOptional, } from './context';
20
20
  export type { OrgProviderProps, TenantContext } from './context';
21
+ export { OrgMark, orgInitials } from './OrgMark';
22
+ export type { OrgMarkProps } from './OrgMark';
21
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/org/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,YAAY,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAEnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAGtD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC/E,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACpH,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAGvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AAC9D,YAAY,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAGjE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC7E,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAG1C,OAAO,EACL,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,qBAAqB,GACtB,MAAM,WAAW,CAAA;AAClB,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/org/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,YAAY,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAEnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAGtD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC/E,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGvC,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACpH,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAGvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAA;AAC9D,YAAY,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAGjE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC7E,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAG1C,OAAO,EACL,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,qBAAqB,GACtB,MAAM,WAAW,CAAA;AAClB,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAIhE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA"}
package/dist/org/index.js CHANGED
@@ -1,6 +1,6 @@
1
- export { WorkspaceChooser, WorkspaceChooserGate, WorkspaceSwitching, WorkspaceSwitchingHost, createMockOrgAdapter, createSupabaseOrgAdapter, useWorkspaceSwitchingStore } from '../chunk-ZKOWNGZT.js';
2
- export { ORG_CACHE_TTL_MS, OrgProvider, clearOrgSnapshot, decideWorkspaceChoice, getAutoPick, markWorkspaceSwitch, readOrgSnapshot, setAutoPick, takeWorkspaceSwitch, useOrgAdapter, useOrgAdapterOptional, useTenant, useTenantOptional } from '../chunk-NB6X5O5L.js';
3
- import '../chunk-WJ3H3RJN.js';
4
- export { getPersistedOrgId, persistOrgId, useOrganizationStore } from '../chunk-5GWUM4SM.js';
1
+ export { OrgMark, WorkspaceChooser, WorkspaceChooserGate, WorkspaceSwitching, WorkspaceSwitchingHost, createMockOrgAdapter, createSupabaseOrgAdapter, orgInitials, useWorkspaceSwitchingStore } from '../chunk-XJB76FHA.js';
2
+ export { ORG_CACHE_TTL_MS, OrgProvider, clearOrgSnapshot, decideWorkspaceChoice, getAutoPick, markWorkspaceSwitch, readOrgSnapshot, setAutoPick, takeWorkspaceSwitch, useOrgAdapter, useOrgAdapterOptional, useTenant, useTenantOptional } from '../chunk-R4HQ2HS2.js';
3
+ import '../chunk-UQ2NTFQC.js';
4
+ export { getPersistedOrgId, persistOrgId, useOrganizationStore } from '../chunk-W5IBKM3K.js';
5
5
  //# sourceMappingURL=index.js.map
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"switching.store.d.ts","sourceRoot":"","sources":["../../src/org/switching.store.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,sEAAsE;IACtE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,wEAAwE;IACxE,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;IACrC,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B,sFAiBpC,CAAA"}
1
+ {"version":3,"file":"switching.store.d.ts","sourceRoot":"","sources":["../../src/org/switching.store.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,sEAAsE;IACtE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,wEAAwE;IACxE,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;IACrC,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B,sFAyBpC,CAAA"}
@@ -0,0 +1,27 @@
1
+ /** Acima disto o seletor oferece busca. Abaixo, a lista inteira cabe. */
2
+ export declare const WORKSPACE_SEARCH_THRESHOLD = 8;
3
+ /** Quantas linhas o menu mostra de uma vez quando há busca. */
4
+ export declare const WORKSPACE_VISIBLE_LIMIT = 7;
5
+ /** Sem acento e sem caixa: quem procura "Espaco" tem de achar "Espaço". */
6
+ export declare function foldName(value: string): string;
7
+ export interface SearchableWorkspace {
8
+ orgId: string;
9
+ orgName: string;
10
+ }
11
+ export interface WorkspaceSearchResult<T extends SearchableWorkspace> {
12
+ /** As linhas a desenhar agora. */
13
+ visible: T[];
14
+ /** Quantas ficaram de fora do teto — 0 quando a lista coube inteira. */
15
+ hidden: number;
16
+ /** A busca vale a pena nesta lista? */
17
+ searchable: boolean;
18
+ }
19
+ /**
20
+ * Filtra e corta, mantendo a conta ATIVA sempre visível.
21
+ *
22
+ * Ela fica visível mesmo fora do teto e mesmo fora do filtro: o menu é também
23
+ * onde se lê em que conta se está, e esconder a resposta dessa pergunta para
24
+ * caber mais linha é trocar a pergunta principal pela secundária.
25
+ */
26
+ export declare function searchWorkspaces<T extends SearchableWorkspace>(all: T[], query: string, currentId?: string | null, limit?: number): WorkspaceSearchResult<T>;
27
+ //# sourceMappingURL=workspace-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-search.d.ts","sourceRoot":"","sources":["../../src/org/workspace-search.ts"],"names":[],"mappings":"AAeA,yEAAyE;AACzE,eAAO,MAAM,0BAA0B,IAAI,CAAA;AAE3C,+DAA+D;AAC/D,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,mBAAmB;IAClE,kCAAkC;IAClC,OAAO,EAAE,CAAC,EAAE,CAAA;IACZ,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAA;IACd,uCAAuC;IACvC,UAAU,EAAE,OAAO,CAAA;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,mBAAmB,EAC5D,GAAG,EAAE,CAAC,EAAE,EACR,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,KAAK,SAA0B,GAC9B,qBAAqB,CAAC,CAAC,CAAC,CAiB1B"}
@@ -1,3 +1,3 @@
1
- export { PermissionsProvider, useHasPermission, usePermission, usePermissionOptional, usePermissions, usePermissionsStore } from '../chunk-WJ3H3RJN.js';
1
+ export { PermissionsProvider, useHasPermission, usePermission, usePermissionOptional, usePermissions, usePermissionsStore } from '../chunk-UQ2NTFQC.js';
2
2
  //# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map
@@ -10,9 +10,21 @@ export interface PermissionsStore {
10
10
  impersonatedProfile: PermissionProfile | null;
11
11
  /** Whether impersonation is active */
12
12
  isImpersonating: boolean;
13
+ /**
14
+ * De QUEM o perfil em mãos foi respondido — o id do tenant, ou null.
15
+ *
16
+ * `currentProfile === null` não distingue "ainda não sei" de "esta conta não
17
+ * me dá papel nenhum", e as duas pedem telas opostas: a primeira espera, a
18
+ * segunda nega. Sem essa distinção, a janela entre escolher uma conta e a
19
+ * resposta dela chegar virava "Acesso restrito" no meio da tela — a resposta
20
+ * errada, dada com confiança, que some sozinha um instante depois.
21
+ */
22
+ profileKnownFor: string | null;
13
23
  setFeatures: (features: FeatureDeclaration[]) => void;
14
24
  setProfiles: (profiles: PermissionProfile[]) => void;
15
25
  setCurrentProfile: (profile: PermissionProfile | null) => void;
26
+ /** A pergunta "quem sou eu nesta conta" foi respondida — com ou sem papel. */
27
+ setProfileKnownFor: (tenantId: string | null) => void;
16
28
  startImpersonation: (profile: PermissionProfile) => void;
17
29
  stopImpersonation: () => void;
18
30
  reset: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/permissions/store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAM1E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,kBAAkB,EAAE,CAAA;IAC9B,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IAC7B,6EAA6E;IAC7E,cAAc,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACxC,iEAAiE;IACjE,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACrC,0CAA0C;IAC1C,mBAAmB,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC7C,sCAAsC;IACtC,eAAe,EAAE,OAAO,CAAA;IAExB,WAAW,EAAE,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAA;IACrD,WAAW,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAA;IACpD,iBAAiB,EAAE,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAA;IAC9D,kBAAkB,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACxD,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED,eAAO,MAAM,mBAAmB,+EAwC7B,CAAA"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/permissions/store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAM1E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,kBAAkB,EAAE,CAAA;IAC9B,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IAC7B,6EAA6E;IAC7E,cAAc,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACxC,iEAAiE;IACjE,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACrC,0CAA0C;IAC1C,mBAAmB,EAAE,iBAAiB,GAAG,IAAI,CAAA;IAC7C,sCAAsC;IACtC,eAAe,EAAE,OAAO,CAAA;IACxB;;;;;;;;OAQG;IACH,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAE9B,WAAW,EAAE,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAA;IACrD,WAAW,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAA;IACpD,iBAAiB,EAAE,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAA;IAC9D,8EAA8E;IAC9E,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACrD,kBAAkB,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACxD,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED,eAAO,MAAM,mBAAmB,+EA0C7B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"SetupAgentSurface.d.ts","sourceRoot":"","sources":["../../src/setup/SetupAgentSurface.tsx"],"names":[],"mappings":"AA0GA,wBAAgB,iBAAiB,SA+HhC"}
1
+ {"version":3,"file":"SetupAgentSurface.d.ts","sourceRoot":"","sources":["../../src/setup/SetupAgentSurface.tsx"],"names":[],"mappings":"AAgHA,wBAAgB,iBAAiB,SA+HhC"}
@@ -1,13 +1,17 @@
1
1
  import { type AppConfig } from '@fayz-ai/core';
2
2
  interface AppConfigStore {
3
3
  config: AppConfig;
4
+ /** De quem é a configuração em `config`. `null` = nenhuma ainda. */
5
+ tenantId: string | null;
4
6
  /** True until the first answer arrives — not on every refresh. */
5
7
  initializing: boolean;
6
8
  /** A refresh is in flight; the config on screen is the previous one. */
7
9
  stale: boolean;
8
10
  /** The read failed. The shell still renders: an empty config is legible. */
9
11
  error: string | null;
10
- setConfig: (config: AppConfig) => void;
12
+ setConfig: (config: AppConfig, tenantId?: string | null) => void;
13
+ /** Uma conta nova entrou em cena: o que está em tela não é sobre ela. */
14
+ beginTenant: (tenantId: string | null) => void;
11
15
  setStale: (stale: boolean) => void;
12
16
  setError: (error: string | null) => void;
13
17
  reset: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"app-config.store.d.ts","sourceRoot":"","sources":["../../src/stores/app-config.store.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AAuBhE,UAAU,cAAc;IACtB,MAAM,EAAE,SAAS,CAAA;IACjB,kEAAkE;IAClE,YAAY,EAAE,OAAO,CAAA;IACrB,wEAAwE;IACxE,KAAK,EAAE,OAAO,CAAA;IACd,4EAA4E;IAC5E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAA;IACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACxC,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AASD,eAAO,MAAM,iBAAiB,6EAM3B,CAAA;AAEH,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,CAE3D;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAKpF"}
1
+ {"version":3,"file":"app-config.store.d.ts","sourceRoot":"","sources":["../../src/stores/app-config.store.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AAkChE,UAAU,cAAc;IACtB,MAAM,EAAE,SAAS,CAAA;IACjB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,kEAAkE;IAClE,YAAY,EAAE,OAAO,CAAA;IACrB,wEAAwE;IACxE,KAAK,EAAE,OAAO,CAAA;IACd,4EAA4E;IAC5E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAChE,yEAAyE;IACzE,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC9C,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACxC,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAUD,eAAO,MAAM,iBAAiB,6EAgB3B,CAAA;AAEH,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,CAE3D;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAKpF"}
@@ -1 +1 @@
1
- {"version":3,"file":"dark.d.ts","sourceRoot":"","sources":["../../src/theme/dark.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAM3C,eAAO,MAAM,SAAS,EAAE,WAwDvB,CAAA"}
1
+ {"version":3,"file":"dark.d.ts","sourceRoot":"","sources":["../../src/theme/dark.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAM3C,eAAO,MAAM,SAAS,EAAE,WA4DvB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"light.d.ts","sourceRoot":"","sources":["../../src/theme/light.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAK3C,eAAO,MAAM,UAAU,EAAE,WAyDxB,CAAA"}
1
+ {"version":3,"file":"light.d.ts","sourceRoot":"","sources":["../../src/theme/light.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAK3C,eAAO,MAAM,UAAU,EAAE,WA6DxB,CAAA"}
@@ -33,6 +33,19 @@ export interface SemanticColors {
33
33
  sidebarBorder: string;
34
34
  sidebarAccent: string;
35
35
  sidebarAccentForeground: string;
36
+ /**
37
+ * A cor do botão principal QUANDO ELE CAI SOBRE O TRILHO.
38
+ *
39
+ * A barra do topo é pintada com a cor do rail, e o papel embaixo dela é
40
+ * claro. Uma marca escura dá botão preto-no-preto lá em cima; uma marca clara
41
+ * dá texto branco-no-branco aqui embaixo (é o `text-primary` de "Cadastrar",
42
+ * que sumiu). Nenhuma cor única serve às duas superfícies.
43
+ *
44
+ * Então são DUAS: `primary` governa o papel, e esta governa a faixa. Onde a
45
+ * marca já lê bem sobre o trilho, as duas são a mesma cor e nada muda.
46
+ */
47
+ primaryOnRail: string;
48
+ primaryOnRailForeground: string;
36
49
  sidebarMuted: string;
37
50
  content: string;
38
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/theme/tokens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/theme/tokens.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/theme/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,SAAS,EAIV,MAAM,UAAU,CAAA;AAqCjB,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAChC,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACxC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,kBAAkB,GAAG,KAAK,IAAI,SAAS,CAGrF;AA+BD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,kBAAkB,CA8FjE;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,kBAAkB,GAAG,WAAW,CA2BtE;AAkGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAoB1E;AAED,wBAAgB,mBAAmB,IAAI,OAAO,GAAG,MAAM,CAGtD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4B1D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/theme/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,SAAS,EAIV,MAAM,UAAU,CAAA;AAqCjB,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAChC,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACxC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,kBAAkB,GAAG,KAAK,IAAI,SAAS,CAGrF;AA+BD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,kBAAkB,CA8FjE;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,kBAAkB,GAAG,WAAW,CA2BtE;AAoGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAoB1E;AAED,wBAAgB,mBAAmB,IAAI,OAAO,GAAG,MAAM,CAGtD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4B1D"}
@@ -1,5 +1,14 @@
1
1
  import * as React from 'react';
2
- export declare function UnitSwitcher({ collapsed }: {
2
+ export declare function UnitSwitcher({ collapsed, className }: {
3
3
  collapsed?: boolean;
4
+ /**
5
+ * Restyles the TRIGGER for a surface that is not the rail.
6
+ *
7
+ * The defaults below are written in `sidebar-*` tokens, which are the right
8
+ * ink in the only place this used to be meant for. The POS band paints from
9
+ * its own `--pos-*` palette, so a host mounting this there hands over the
10
+ * classes instead of inheriting colours that resolve to nothing.
11
+ */
12
+ className?: string;
4
13
  }): React.JSX.Element | null;
5
14
  //# sourceMappingURL=UnitSwitcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UnitSwitcher.d.ts","sourceRoot":"","sources":["../../src/units/UnitSwitcher.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAiC9B,wBAAgB,YAAY,CAAC,EAAE,SAAiB,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,4BA8K1E"}
1
+ {"version":3,"file":"UnitSwitcher.d.ts","sourceRoot":"","sources":["../../src/units/UnitSwitcher.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAiC9B,wBAAgB,YAAY,CAAC,EAAE,SAAiB,EAAE,SAAS,EAAE,EAAE;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,4BA+KA"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "fayz": {
4
4
  "status": "beta"
5
5
  },
6
- "version": "0.22.1",
6
+ "version": "0.24.0",
7
7
  "description": "Fayz SDK admin layer — the admin shell, CRUD engine, multi-tenancy, billing, permissions and org management",
8
8
  "type": "module",
9
9
  "sideEffects": [
@@ -59,12 +59,12 @@
59
59
  "@radix-ui/react-dialog": "^1.1.0",
60
60
  "@tanstack/react-table": "^8.20.0",
61
61
  "cmdk": "^1.0.0",
62
- "@fayz-ai/auth": "^0.22.0",
63
- "@fayz-ai/core": "^0.22.0",
64
- "@fayz-ai/db": "^0.15.0",
65
- "@fayz-ai/plugin-auth": "^0.12.4",
62
+ "@fayz-ai/auth": "^0.23.0",
63
+ "@fayz-ai/core": "^0.23.0",
64
+ "@fayz-ai/db": "^0.16.0",
65
+ "@fayz-ai/plugin-auth": "^0.12.6",
66
66
  "@fayz-ai/sdk": "^0.19.1",
67
- "@fayz-ai/ui": "^0.22.0"
67
+ "@fayz-ai/ui": "^0.24.0"
68
68
  },
69
69
  "devDependencies": {
70
70
  "@supabase/supabase-js": "^2.45.0",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/layout/CommandPalette.tsx"],"names":["Fragment"],"mappings":"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","file":"CommandPalette-GQ6SPITD.js","sourcesContent":["import * as React from 'react'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { Command } from 'cmdk'\nimport * as Dialog from '@radix-ui/react-dialog'\nimport {\n Home, Users, Settings, CreditCard, Bell, Calendar, CalendarCheck2,\n CalendarClock, CalendarX, Package, Activity, BarChart3, FileText, FileCheck2, Mail, Search,\n DollarSign, BadgeDollarSign, CircleDollarSign, Megaphone, ShoppingCart, ShoppingBag, Target,\n Wrench, ClipboardList, ListChecks, Briefcase, UserCog, BookOpen, BookOpenCheck, MessageCircle,\n Globe, Percent, Tag, Tags, Camera, UtensilsCrossed, MapPin, Map, Handshake,\n Contact, Building2, Filter, Plus, List, Shield, User, Box, Sparkles, Loader2, X,\n ListPlus, FolderOpen, Boxes, Landmark, Receipt, Ban, Clock, Clock3, Inbox,\n Star, TrendingUp, UserCheck, UserPlus, UserX, Zap,\n type LucideIcon,\n} from 'lucide-react'\nimport {\n MIN_QUERY_LENGTH, highlightRanges, normalizeQuery, scoreCandidate, foldText,\n type GlobalSearchResult, type SearchHit,\n} from '@fayz-ai/core'\nimport { RefreshButton } from '@fayz-ai/ui'\nimport { useTranslation } from '../../hooks/useTranslation'\n\nexport interface CommandItem {\n id: string\n label: string\n icon?: string\n action: () => void\n group?: string\n keywords?: string\n subtitle?: string\n}\n\n/** Runs one global search. `onPartial` paints a cheap early answer, if there is one.\n * `opts.fresh` bypasses every cache — the footer's refresh button uses it. */\nexport type EntitySearchFn = (\n query: string,\n onPartial?: (result: GlobalSearchResult) => void,\n opts?: { fresh?: boolean },\n) => Promise<GlobalSearchResult>\n\ninterface CommandPaletteProps {\n commands?: CommandItem[]\n open: boolean\n onOpenChange: (open: boolean) => void\n onEntitySearch?: EntitySearchFn\n onEntitySelect?: (hit: SearchHit) => void\n}\n\nconst ICON_MAP: Record<string, LucideIcon> = {\n Home, Users, Settings, CreditCard, Bell, Calendar, CalendarClock, Package, Activity, BarChart3,\n CalendarCheck2, CalendarX, FileText, FileCheck2, Mail, Search, DollarSign, BadgeDollarSign, CircleDollarSign, Megaphone, ShoppingCart, ShoppingBag, Target,\n Wrench, ClipboardList, ListChecks, Briefcase, UserCog, BookOpen, BookOpenCheck, MessageCircle,\n Globe, Percent, Tag, Tags, Camera, UtensilsCrossed, MapPin, Map, Handshake,\n Contact, Building2, Filter, Plus, List, Shield, ListPlus, FolderOpen, User, Box, Boxes, Sparkles, Landmark, Receipt, Ban, Clock, Clock3, Inbox,\n Star, TrendingUp, UserCheck, UserPlus, UserX, Zap,\n}\n\n/** Long enough that a fast typist issues one request per word, not per letter. */\nconst DEBOUNCE_MS = 140\n\n// Highlighting — the matched run, in the record's own spelling\n\nfunction Highlight({ text, query }: { text: string; query: string }) {\n const parts = useMemo(() => {\n const normalized = normalizeQuery(query)\n const ranges = highlightRanges(text, normalized)\n if (ranges.length === 0) return [{ text, hit: false }]\n const out: Array<{ text: string; hit: boolean }> = []\n let cursor = 0\n for (const [from, to] of ranges) {\n if (from > cursor) out.push({ text: text.slice(cursor, from), hit: false })\n out.push({ text: text.slice(from, to), hit: true })\n cursor = to\n }\n if (cursor < text.length) out.push({ text: text.slice(cursor), hit: false })\n return out\n }, [text, query])\n\n return (\n <>\n {parts.map((part, i) =>\n part.hit\n ? <mark key={i} className=\"bg-transparent font-semibold text-foreground\">{part.text}</mark>\n : <React.Fragment key={i}>{part.text}</React.Fragment>,\n )}\n </>\n )\n}\n\n// Records arrive from the server; commands are already in memory. Same scorer,\n// different clocks — commands re-rank per keystroke, records refine as they land.\n\nfunction useEntitySearch(searchFn: EntitySearchFn | undefined, query: string, open: boolean) {\n const [result, setResult] = useState<GlobalSearchResult | null>(null)\n const [loading, setLoading] = useState(false)\n const generation = useRef(0)\n\n useEffect(() => {\n const trimmed = query.trim()\n if (!open || !searchFn || foldText(trimmed).length < MIN_QUERY_LENGTH) {\n setResult(null)\n setLoading(false)\n return\n }\n\n const token = ++generation.current\n setLoading(true)\n\n const timer = setTimeout(() => {\n searchFn(trimmed, (partial) => {\n // A partial must never replace a final answer for this same query.\n if (token === generation.current) setResult((prev) => (prev?.partial === false && prev.query === trimmed ? prev : partial))\n })\n .then((final) => {\n if (token !== generation.current) return\n setResult(final)\n setLoading(false)\n })\n .catch(() => {\n // Keep what is on screen: a failed refresh is not an empty result.\n if (token !== generation.current) return\n setLoading(false)\n })\n }, DEBOUNCE_MS)\n\n return () => clearTimeout(timer)\n }, [query, searchFn, open])\n\n // The footer refresh: same query, every cache bypassed. Returned as a\n // promise so the button spins until the network answer lands.\n const refresh = React.useCallback(async () => {\n const trimmed = query.trim()\n if (!searchFn || foldText(trimmed).length < MIN_QUERY_LENGTH) return\n const token = ++generation.current\n setLoading(true)\n try {\n const final = await searchFn(trimmed, undefined, { fresh: true })\n if (token === generation.current) setResult(final)\n } finally {\n if (token === generation.current) setLoading(false)\n }\n }, [query, searchFn])\n\n return { result, loading, refresh }\n}\n\n/**\n * Commands, ranked by the same ladder records use. cmdk's own filter is OFF:\n * it re-filtered the SERVER's results with its own substring rules, so a record\n * matched by phone, by a note or by an accent-folded name was fetched and then\n * dropped — the list said \"no results\" while the footer counted them.\n */\nfunction useRankedCommands(commands: CommandItem[], query: string): CommandItem[] {\n return useMemo(() => {\n const trimmed = query.trim()\n if (!trimmed) return commands\n const normalized = normalizeQuery(trimmed)\n if (normalized.tokens.length === 0) return commands\n return commands\n .map((cmd) => ({\n cmd,\n score: scoreCandidate(normalized, {\n title: foldText(cmd.label),\n haystack: foldText(`${cmd.label} ${cmd.group ?? ''} ${cmd.keywords ?? ''} ${cmd.subtitle ?? ''}`),\n }),\n }))\n .filter((c) => c.score > 0)\n .sort((a, b) => b.score - a.score)\n .map((c) => c.cmd)\n }, [commands, query])\n}\n\nconst GROUP_HEADING =\n '[&_[cmdk-group-heading]]:px-3 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-[11px] [&_[cmdk-group-heading]]:font-semibold [&_[cmdk-group-heading]]:uppercase [&_[cmdk-group-heading]]:tracking-wider [&_[cmdk-group-heading]]:text-muted-foreground'\n\nconst ITEM =\n 'flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2.5 text-sm outline-none transition-colors aria-selected:bg-muted'\n\nexport function CommandPalette({ commands = [], open, onOpenChange, onEntitySearch, onEntitySelect }: CommandPaletteProps) {\n const { t } = useTranslation()\n const [search, setSearch] = useState('')\n const { result, loading, refresh } = useEntitySearch(onEntitySearch, search, open)\n const rankedCommands = useRankedCommands(commands, search)\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key === 'k') {\n e.preventDefault()\n onOpenChange(!open)\n }\n }\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [open, onOpenChange])\n\n // Reset search when closed\n useEffect(() => {\n if (!open) setSearch('')\n }, [open])\n\n const grouped = rankedCommands.reduce<Record<string, CommandItem[]>>((acc, cmd) => {\n const group = cmd.group ?? 'Actions'\n if (!acc[group]) acc[group] = []\n acc[group].push(cmd)\n return acc\n }, {})\n\n const hasQuery = foldText(search).length >= MIN_QUERY_LENGTH\n // A lookup wants the client, not the page that lists clients.\n const recordGroups = hasQuery ? (result?.groups ?? []) : []\n const recordCount = recordGroups.reduce((n, g) => n + g.hits.length, 0)\n const totalResults = rankedCommands.length + recordCount\n const nothingYet = totalResults === 0\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay className=\"saas-overlay fixed inset-0 z-[100] bg-black/40 backdrop-blur-sm\" />\n {/* Search is a PLACE on a phone, not a card floating over one. A centred\n dialog leaves the page showing round the edges, puts the field under\n the thumb's reach, and gives the results a 360px window inside a\n 660px screen. Full-bleed below sm; the desktop card is unchanged. */}\n <Dialog.Content // Desktop position lives in styles.css beside the animation that depends on\n // it — see the note there. Utilities here are the mobile full-bleed only.\n className=\"fayz-glass-surface saas-cmd-palette fixed inset-0 z-[100] flex flex-col overflow-hidden border-border/50 bg-popover shadow-2xl\">\n <Dialog.Title className=\"sr-only\">{t('layout.commandPalette.title')}</Dialog.Title>\n <Dialog.Description className=\"sr-only\">{t('layout.commandPalette.description')}</Dialog.Description>\n\n <Command className=\"flex min-h-0 flex-1 flex-col\" label=\"Command palette\" shouldFilter={false}>\n <div className=\"fz-safe-t flex shrink-0 items-center gap-3 border-b border-border/50 px-4\">\n <Search className=\"h-4 w-4 shrink-0 text-muted-foreground\" />\n <Command.Input\n placeholder={t('layout.commandPalette.placeholder')}\n className=\"flex h-12 w-full bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n autoFocus\n value={search}\n onValueChange={setSearch}\n />\n {loading && <Loader2 className=\"h-3.5 w-3.5 shrink-0 animate-spin text-muted-foreground\" />}\n <kbd className=\"hidden shrink-0 rounded-md border border-border bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground sm:inline-block\">ESC</kbd>\n {/* Full-bleed on a phone means the page behind is gone, and with it\n every hint that tapping outside would close this. ESC is the\n desktop's way out; this is the phone's. */}\n <Dialog.Close\n aria-label={t('common.close')}\n className=\"fz-tap -mr-2 flex shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors active:bg-muted sm:hidden\"\n >\n <X className=\"h-5 w-5\" />\n </Dialog.Close>\n </div>\n\n <Command.List className=\"fz-scroll-contain min-h-0 flex-1 overflow-y-auto p-1.5 sm:max-h-[360px] sm:flex-none\">\n {nothingYet && (\n <Command.Empty className=\"py-8 text-center text-sm text-muted-foreground\">\n {loading ? t('layout.commandPalette.searching') : t('layout.commandPalette.noResults')}\n </Command.Empty>\n )}\n\n {/* Records first */}\n {recordGroups.map((group) => {\n const GroupIcon = group.icon ? (ICON_MAP[group.icon] ?? User) : User\n return (\n <Command.Group key={`entity:${group.key}`} heading={group.label} className={GROUP_HEADING}>\n {group.hits.map((hit) => {\n const Icon = hit.icon ? (ICON_MAP[hit.icon] ?? GroupIcon) : GroupIcon\n return (\n <Command.Item\n key={hit.uid}\n value={hit.uid}\n onSelect={() => { onEntitySelect?.(hit); onOpenChange(false) }}\n className={ITEM}\n >\n <Icon className=\"h-4 w-4 shrink-0 text-muted-foreground\" />\n <div className=\"min-w-0 flex-1\">\n <span className=\"block truncate\"><Highlight text={hit.title} query={search} /></span>\n {hit.subtitle && (\n <span className=\"block truncate text-[11px] text-muted-foreground\">\n <Highlight text={hit.subtitle} query={search} />\n </span>\n )}\n </div>\n <span className=\"shrink-0 text-[11px] text-muted-foreground/40\">{group.label}</span>\n </Command.Item>\n )\n })}\n </Command.Group>\n )\n })}\n\n {/* Pages and actions */}\n {Object.entries(grouped).map(([group, items]) => (\n <Command.Group key={group} heading={group} className={GROUP_HEADING}>\n {items.map((cmd, i) => {\n const Icon = cmd.icon ? (ICON_MAP[cmd.icon] ?? null) : null\n // Command ids are not unique — \"Clientes\" and its \"Lista\"\n // child both mint `page:/clients`. Also the cmdk value.\n const uid = `${group}:${cmd.id}:${i}`\n return (\n <Command.Item\n key={uid}\n value={uid}\n onSelect={() => { cmd.action(); onOpenChange(false) }}\n className={ITEM}\n >\n {Icon && <Icon className=\"h-4 w-4 shrink-0 text-muted-foreground\" />}\n <span className=\"flex-1\"><Highlight text={cmd.label} query={search} /></span>\n <span className=\"text-[11px] text-muted-foreground/40\">{cmd.group}</span>\n </Command.Item>\n )\n })}\n </Command.Group>\n ))}\n </Command.List>\n\n <div className=\"flex items-center justify-between border-t border-border/50 px-4 py-2\">\n <span className=\"text-xs text-muted-foreground\">\n {loading\n ? t('layout.commandPalette.searching')\n : hasQuery\n ? t('layout.commandPalette.resultCount', { count: String(totalResults), plural: totalResults !== 1 ? 's' : '' })\n : t('layout.commandPalette.commandCount', { count: String(commands.length), plural: commands.length !== 1 ? 's' : '' })}\n </span>\n <div className=\"flex items-center gap-2 text-[10px] text-muted-foreground\">\n {hasQuery && result && (\n <RefreshButton\n onRefresh={refresh}\n fromCache={result.cached}\n label={t('layout.commandPalette.refresh')}\n labelCached={t('layout.commandPalette.refreshCached')}\n className=\"rounded p-1 text-muted-foreground hover:text-foreground\"\n />\n )}\n {/* Arrow-key and Enter hints on a device with neither. They are\n the desktop's affordance; a finger just taps the row. */}\n <span className=\"hidden items-center gap-2 sm:flex\">\n <kbd className=\"rounded border border-border bg-muted px-1 py-0.5 font-medium\">&uarr;&darr;</kbd>\n <span>{t('layout.commandPalette.navigate')}</span>\n <kbd className=\"rounded border border-border bg-muted px-1 py-0.5 font-medium\">&crarr;</kbd>\n <span>{t('layout.commandPalette.open')}</span>\n </span>\n </div>\n </div>\n </Command>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n )\n}\n"]}