diff --git a/src/app/os/keys/page.tsx b/src/app/os/keys/page.tsx index 35ece4c..6b4942e 100644 --- a/src/app/os/keys/page.tsx +++ b/src/app/os/keys/page.tsx @@ -509,68 +509,206 @@ export default function Keys() {
{filterControls} - {!loading && ( -
- - {isFiltering ? ( - <> - {filtered.length} of {keys.length} keys - - ) : ( - <>{keys.length} entitlement keys - )} - - {topTokens.length > 0 && !isFiltering && ( -
- {topTokens.map(({ token }) => ( - - ))} +
+
+ {!loading && ( +
+
+ + {isFiltering ? ( + <> + {filtered.length} of {keys.length} keys + + ) : ( + <>{keys.length} entitlement keys + )} + + + {compareLoading && activeCompareTag && ( + + Diffing keys... + + )} + + {compareError && activeCompareTag && ( + + Diff unavailable + + )} + + {versions.length > 1 && ( + + + + + + + + + )} + + {diffReady && ( +
+ + + {addedKeys.length} new + + {removedKeys.length > 0 && ( + + + {removedKeys.length} removed + + )} + {changedKeyCount > 0 && ( + + )} +
+ )} +
+ + {topTokens.length > 0 && !isFiltering && ( +
+ {topTokens.map(({ token }) => ( + + ))} +
+ )} + + {changesExpanded && diffReady && ( +
+
+ + {changedKeys.length} of {changedKeyCount} changed keys + + {isFiltering && ( + Filtered by "{debouncedKeyword}" + )} +
+ + {changedKeys.length === 0 ? ( +
+ No changed keys match "{keyword}" +
+ ) : ( +
+ {changedKeys.map((entry) => ( + + ))} +
+ )} +
+ )}
)} -
- )} - {loading ? ( -
- {Array.from({ length: 30 }).map((_, i) => ( -
- ))} -
- ) : filtered.length === 0 ? ( -
- {keys.length === 0 ? ( -

No entitlement keys found for this OS version.

+ {loading ? ( +
+ {keySkeletons.map((skeleton, i) => ( +
+ ))} +
+ ) : displayedKeys.length === 0 ? ( +
+ {keys.length === 0 ? ( +

No entitlement keys found for this OS version.

+ ) : ( +

No keys match "{keyword}"

+ )} +
) : ( -

No keys match "{keyword}"

+
+
+ {displayedKeys.map((entry) => ( + + ))} +
+
)} -
- ) : ( -
-
- {filtered.map((key) => ( - - {key} - - ))} -
-
- )} + + + {versions.length > 1 && ( + + )} +
); }