@trops/dash-core 0.1.517 → 0.1.519

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.js CHANGED
@@ -49347,6 +49347,12 @@ var PrivacySecurityList = function PrivacySecurityList(_ref) {
49347
49347
  var keyFor = function keyFor(group) {
49348
49348
  return group.packageId == null ? "__ungrouped__" : group.packageId;
49349
49349
  };
49350
+
49351
+ // Special selection keys for the two non-package items at the top
49352
+ // of the list. Keep them in the same selection state as packages so
49353
+ // the right panel knows what to render via a single key.
49354
+ var SETTINGS_KEY = "__settings__";
49355
+ var HELP_KEY = "__help__";
49350
49356
  function renderPackageItem(group) {
49351
49357
  var key = keyFor(group);
49352
49358
  var isSelected = selectedPackageKey === key;
@@ -49395,7 +49401,32 @@ var PrivacySecurityList = function PrivacySecurityList(_ref) {
49395
49401
  }), /*#__PURE__*/jsxRuntime.jsx("div", {
49396
49402
  className: "flex-1 overflow-y-auto min-h-0",
49397
49403
  children: /*#__PURE__*/jsxRuntime.jsxs(DashReact.Sidebar.Content, {
49398
- children: [viewMode === "grouped" ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
49404
+ children: [/*#__PURE__*/jsxRuntime.jsxs(DashReact.Sidebar.Group, {
49405
+ label: "Configuration",
49406
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.Sidebar.Item, {
49407
+ icon: /*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
49408
+ icon: "gear",
49409
+ className: "h-3.5 w-3.5"
49410
+ }),
49411
+ active: selectedPackageKey === SETTINGS_KEY,
49412
+ onClick: function onClick() {
49413
+ return onSelectPackage(SETTINGS_KEY);
49414
+ },
49415
+ className: selectedPackageKey === SETTINGS_KEY ? "bg-white/10 opacity-100" : "",
49416
+ children: "Settings"
49417
+ }, SETTINGS_KEY), /*#__PURE__*/jsxRuntime.jsx(DashReact.Sidebar.Item, {
49418
+ icon: /*#__PURE__*/jsxRuntime.jsx(DashReact.FontAwesomeIcon, {
49419
+ icon: "circle-question",
49420
+ className: "h-3.5 w-3.5"
49421
+ }),
49422
+ active: selectedPackageKey === HELP_KEY,
49423
+ onClick: function onClick() {
49424
+ return onSelectPackage(HELP_KEY);
49425
+ },
49426
+ className: selectedPackageKey === HELP_KEY ? "bg-white/10 opacity-100" : "",
49427
+ children: "Help"
49428
+ }, HELP_KEY)]
49429
+ }), viewMode === "grouped" ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
49399
49430
  children: [withGrants.length > 0 && /*#__PURE__*/jsxRuntime.jsx(DashReact.Sidebar.Group, {
49400
49431
  label: "Has grants",
49401
49432
  children: withGrants.map(renderPackageItem)
@@ -49403,7 +49434,10 @@ var PrivacySecurityList = function PrivacySecurityList(_ref) {
49403
49434
  label: "No grants",
49404
49435
  children: withoutGrants.map(renderPackageItem)
49405
49436
  })]
49406
- }) : filtered.map(renderPackageItem), filtered.length === 0 && /*#__PURE__*/jsxRuntime.jsx("span", {
49437
+ }) : /*#__PURE__*/jsxRuntime.jsx(DashReact.Sidebar.Group, {
49438
+ label: "Packages",
49439
+ children: filtered.map(renderPackageItem)
49440
+ }), filtered.length === 0 && /*#__PURE__*/jsxRuntime.jsx("span", {
49407
49441
  className: "text-sm opacity-40 py-8 text-center block",
49408
49442
  children: searchQuery ? "No packages match your search" : "No widgets installed"
49409
49443
  })]
@@ -49737,7 +49771,12 @@ var PrivacySecuritySection = function PrivacySecuritySection() {
49737
49771
  _useState12 = _slicedToArray(_useState11, 2),
49738
49772
  viewMode = _useState12[0],
49739
49773
  setViewMode = _useState12[1];
49740
- var _useState13 = React.useState(null),
49774
+ // Default to the Settings sidebar item so first-time visitors land
49775
+ // on something useful rather than the empty-detail placeholder.
49776
+ // "__settings__"/"__help__" are special selection keys (see
49777
+ // PrivacySecurityList); a string starting without "__" is a
49778
+ // packageId.
49779
+ var _useState13 = React.useState("__settings__"),
49741
49780
  _useState14 = _slicedToArray(_useState13, 2),
49742
49781
  selectedPackageKey = _useState14[0],
49743
49782
  setSelectedPackageKey = _useState14[1];
@@ -49938,7 +49977,9 @@ var PrivacySecuritySection = function PrivacySecuritySection() {
49938
49977
  });
49939
49978
  }
49940
49979
  var packageGroups = groupRowsByPackage(rows);
49941
- var selectedGroup = selectedPackageKey == null ? null : packageGroups.find(function (g) {
49980
+ var isSettingsSelected = selectedPackageKey === "__settings__";
49981
+ var isHelpSelected = selectedPackageKey === "__help__";
49982
+ var selectedGroup = selectedPackageKey == null || isSettingsSelected || isHelpSelected ? null : packageGroups.find(function (g) {
49942
49983
  return g.packageId == null ? selectedPackageKey === "__ungrouped__" : g.packageId === selectedPackageKey;
49943
49984
  }) || null;
49944
49985
  var listContent = /*#__PURE__*/jsxRuntime.jsx(PrivacySecurityList, {
@@ -49950,36 +49991,53 @@ var PrivacySecuritySection = function PrivacySecuritySection() {
49950
49991
  viewMode: viewMode,
49951
49992
  onViewModeChange: setViewMode
49952
49993
  });
49953
- var detailContent = selectedGroup ? /*#__PURE__*/jsxRuntime.jsx(WidgetPackageDetail, {
49954
- packageGroup: selectedGroup,
49955
- onRevokeWidget: revokeWidget,
49956
- onRevokeServer: revokeServer,
49957
- onGrantManually: function onGrantManually(widgetId) {
49958
- return setManualGrantWidgetId(widgetId);
49959
- },
49960
- onRevokePackage: revokePackage
49961
- }) : null;
49994
+
49995
+ // Detail panel content varies by what the user picked in the
49996
+ // sidebar — Settings shows the toggles, Help shows the how-it-
49997
+ // works panel, a package shows its widgets. Wrapping each non-
49998
+ // package case in a scrollable container so long content (like
49999
+ // the help fixtures) stays inside the panel and doesn't push the
50000
+ // sidebar around.
50001
+ var detailContent = null;
50002
+ if (isSettingsSelected) {
50003
+ detailContent = /*#__PURE__*/jsxRuntime.jsx("div", {
50004
+ className: "flex flex-col flex-1 min-h-0 overflow-y-auto p-6",
50005
+ children: /*#__PURE__*/jsxRuntime.jsx(EnforcementToggles, {})
50006
+ });
50007
+ } else if (isHelpSelected) {
50008
+ detailContent = /*#__PURE__*/jsxRuntime.jsx("div", {
50009
+ className: "flex flex-col flex-1 min-h-0 overflow-y-auto p-6",
50010
+ children: /*#__PURE__*/jsxRuntime.jsx(HowThisWorksPanel, {})
50011
+ });
50012
+ } else if (selectedGroup) {
50013
+ detailContent = /*#__PURE__*/jsxRuntime.jsx(WidgetPackageDetail, {
50014
+ packageGroup: selectedGroup,
50015
+ onRevokeWidget: revokeWidget,
50016
+ onRevokeServer: revokeServer,
50017
+ onGrantManually: function onGrantManually(widgetId) {
50018
+ return setManualGrantWidgetId(widgetId);
50019
+ },
50020
+ onRevokePackage: revokePackage
50021
+ });
50022
+ }
49962
50023
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
49963
50024
  className: "flex flex-col flex-1 min-h-0",
49964
50025
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
49965
- className: "flex-shrink-0 flex flex-col space-y-4 p-6 border-b border-gray-800",
49966
- children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
49967
- className: "flex flex-col space-y-2",
49968
- children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.SubHeading3, {
49969
- title: "Widget MCP permissions",
49970
- padding: false
49971
- }), /*#__PURE__*/jsxRuntime.jsx("span", {
49972
- className: "text-xs opacity-60",
49973
- children: "Granting access here is a trust signal about the widget \u2014 not a per-dashboard switch."
49974
- })]
49975
- }), /*#__PURE__*/jsxRuntime.jsx(EnforcementToggles, {}), /*#__PURE__*/jsxRuntime.jsx(HowThisWorksPanel, {}), error && /*#__PURE__*/jsxRuntime.jsx("div", {
50026
+ className: "flex-shrink-0 flex flex-col space-y-2 px-6 pt-6 pb-3 border-b border-gray-800",
50027
+ children: [/*#__PURE__*/jsxRuntime.jsx(DashReact.SubHeading3, {
50028
+ title: "Widget MCP permissions",
50029
+ padding: false
50030
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
50031
+ className: "text-xs opacity-60",
50032
+ children: "Granting access here is a trust signal about the widget \u2014 not a per-dashboard switch."
50033
+ }), error && /*#__PURE__*/jsxRuntime.jsx("div", {
49976
50034
  className: "text-xs text-red-400 bg-red-900 bg-opacity-20 border border-red-700 rounded p-3",
49977
50035
  children: error
49978
50036
  })]
49979
50037
  }), /*#__PURE__*/jsxRuntime.jsx(SectionLayout, {
49980
50038
  listContent: listContent,
49981
50039
  detailContent: detailContent,
49982
- emptyDetailMessage: "Select a package to view its grants"
50040
+ emptyDetailMessage: "Select an item from the sidebar"
49983
50041
  }), /*#__PURE__*/jsxRuntime.jsx(GrantManuallyModal, {
49984
50042
  isOpen: !!manualGrantWidgetId,
49985
50043
  setIsOpen: function setIsOpen(open) {