@brftech/filex-core 0.29.0 → 0.30.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.
package/dist/index.d.ts CHANGED
@@ -114,6 +114,11 @@ declare type __VLS_Props_18 = {
114
114
 
115
115
  declare type __VLS_Props_19 = {
116
116
  config: ExplorerConfig;
117
+ /**
118
+ * Render the full self-service key manager (scopes, folder confinement,
119
+ * expiry) instead of the one-field minter the guides embed.
120
+ */
121
+ full?: boolean;
117
122
  /**
118
123
  * Which protocol the surrounding guide is showing. It only changes the
119
124
  * default label — a token minted here works on all of them, and pretending
@@ -784,6 +789,70 @@ export declare interface ExplorerConfig {
784
789
  rootPath?: string;
785
790
  /** Whether the info panel toggle is visible. */
786
791
  showInfoPanel?: boolean;
792
+ /**
793
+ * Which set of chrome the explorer presents. A PRESET, not a feature switch:
794
+ * nothing is removed from the code, and every capability stays reachable —
795
+ * `'simple'` only changes what is on screen by default.
796
+ *
797
+ * 'standard' (default) — everything: tab strip, split pane, all three view
798
+ * modes. The tool the explorer has always been.
799
+ * 'simple' — one pane, one folder, list/grid only. The
800
+ * navigation panel starts expanded, the tab strip
801
+ * and split pane are off, the gallery view mode and
802
+ * the host's "How to connect" surface are hidden.
803
+ *
804
+ * Why it exists (GitHub #14): the reporter's users are not in IT and read
805
+ * split panes, tabs and mount instructions as a file manager they would have
806
+ * to relearn. The answer was NOT a second UI — one explorer, configured, so
807
+ * a fix lands in one place for every surface that mounts this package.
808
+ *
809
+ * ⚠ It does not gate the navigation panel. The panel ships in both profiles,
810
+ * for administrators too; only its default expanded/collapsed state and the
811
+ * rest of the chrome differ. A viewer's own collapse choice, once made,
812
+ * outranks the profile — it is a per-viewer preference, not a policy.
813
+ */
814
+ uiProfile?: 'standard' | 'simple';
815
+ /**
816
+ * Render the navigation panel (Upload · Recent / Starred / Shared with me /
817
+ * Trash · the storage list). Collapsible to an icon rail by the viewer, whose
818
+ * choice is remembered per browser.
819
+ *
820
+ * Default: ON — everywhere, including the desktop app and every embed. This
821
+ * package is the reason those are one product; a panel that appeared in the
822
+ * web app and nowhere else would turn it back into three (0.16.0 did exactly
823
+ * that with `tabStrip` and it had to be undone).
824
+ *
825
+ * ⚠ ONE exception, and it is about `rootPath`, not about who is embedding: a
826
+ * confined embed has no storage list to show, and its views would list files
827
+ * from OUTSIDE the folder the embed was confined to. So `rootPath` flips the
828
+ * default to off. Setting `sideNav: true` alongside `rootPath` still wins —
829
+ * the panel is then yours, along with what its views will show.
830
+ */
831
+ sideNav?: boolean;
832
+ /**
833
+ * Show the navigation panel's **Connections** entries — "How to connect"
834
+ * (the storage list and the per-protocol guides: WebDAV · SFTP · FTPS · S3 ·
835
+ * NFS · `filex mount`) and **API keys** (mint and revoke the tokens three of
836
+ * those protocols sign in with).
837
+ *
838
+ * Default: on, EXCEPT under `uiProfile: 'simple'`, where it is off. Those two
839
+ * defaults answer two different people: #14's reporter called mount
840
+ * instructions power-user noise in front of users who are not in IT, and an
841
+ * embedder's own tenant may still legitimately need an S3 key. Whichever one
842
+ * you are, say so explicitly and the default stops mattering.
843
+ *
844
+ * ⚠ Not gated on role, ever. The backend decides what a caller may see —
845
+ * ConnectionsPanel renders what the API returns, and `/api/tokens` caps every
846
+ * scope against the caller's own role and grants. A UI-side role check here
847
+ * would only hide the surface from the accounts that need it most; that is
848
+ * the bug this became: for a year the sole place to mint the token the FTPS
849
+ * guide told you to use was the admin panel.
850
+ *
851
+ * ⚠ The entries live in the panel, so `sideNav: false` takes them with it.
852
+ * Hosts that want the surface without the panel mount `<filex-connections>`
853
+ * (or `ConnectionsPanel`) on a page of their own.
854
+ */
855
+ connections?: boolean;
787
856
  /** Default view. */
788
857
  viewMode?: 'list' | 'grid';
789
858
  /** Override max upload size (MB) — falls back to /limits otherwise. */
@@ -1038,6 +1107,9 @@ locale: LocaleCode;
1038
1107
  narrow?: boolean;
1039
1108
  theme?: ThemeMode;
1040
1109
  inspectorOpen?: boolean;
1110
+ navOpen?: boolean;
1111
+ navEnabled?: boolean;
1112
+ viewModes?: ViewMode[];
1041
1113
  }> & Readonly<{
1042
1114
  onAction?: ((key: string) => any) | undefined;
1043
1115
  onUpload?: (() => any) | undefined;
@@ -1049,6 +1121,7 @@ onRefresh?: (() => any) | undefined;
1049
1121
  "onOpen-recents"?: (() => any) | undefined;
1050
1122
  "onUpdate:density"?: ((v: Density) => any) | undefined;
1051
1123
  "onToggle-inspector"?: (() => any) | undefined;
1124
+ "onToggle-nav"?: (() => any) | undefined;
1052
1125
  "onOpen-theme"?: (() => any) | undefined;
1053
1126
  "onOpen-shortcut-settings"?: (() => any) | undefined;
1054
1127
  }>, {
@@ -1064,6 +1137,7 @@ refresh: () => any;
1064
1137
  "open-recents": () => any;
1065
1138
  "update:density": (v: Density) => any;
1066
1139
  "toggle-inspector": () => any;
1140
+ "toggle-nav": () => any;
1067
1141
  "open-theme": () => any;
1068
1142
  "open-shortcut-settings": () => any;
1069
1143
  }, PublicProps, {}, false, {}, {}, GlobalComponents, GlobalDirectives, string, {
@@ -1172,6 +1246,9 @@ locale: LocaleCode;
1172
1246
  narrow?: boolean;
1173
1247
  theme?: ThemeMode;
1174
1248
  inspectorOpen?: boolean;
1249
+ navOpen?: boolean;
1250
+ navEnabled?: boolean;
1251
+ viewModes?: ViewMode[];
1175
1252
  }> & Readonly<{
1176
1253
  onAction?: ((key: string) => any) | undefined;
1177
1254
  onUpload?: (() => any) | undefined;
@@ -1183,6 +1260,7 @@ onRefresh?: (() => any) | undefined;
1183
1260
  "onOpen-recents"?: (() => any) | undefined;
1184
1261
  "onUpdate:density"?: ((v: Density) => any) | undefined;
1185
1262
  "onToggle-inspector"?: (() => any) | undefined;
1263
+ "onToggle-nav"?: (() => any) | undefined;
1186
1264
  "onOpen-theme"?: (() => any) | undefined;
1187
1265
  "onOpen-shortcut-settings"?: (() => any) | undefined;
1188
1266
  }>, {