@entropy-softworks/ui 2026.8.35 → 2026.8.37

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 (54) hide show
  1. package/lib/components/auth/PasswordStrengthMeter.d.ts +9 -0
  2. package/lib/components/auth/PasswordStrengthMeter.d.ts.map +1 -1
  3. package/lib/components/auth/PasswordStrengthMeter.jsx +10 -4
  4. package/lib/components/auth/PasswordStrengthMeter.jsx.map +1 -1
  5. package/lib/components/index.d.ts +1 -0
  6. package/lib/components/index.d.ts.map +1 -1
  7. package/lib/components/index.js +1 -0
  8. package/lib/components/index.js.map +1 -1
  9. package/lib/components/profile/SecurityTab.d.ts +5 -1
  10. package/lib/components/profile/SecurityTab.d.ts.map +1 -1
  11. package/lib/components/profile/SecurityTab.jsx.map +1 -1
  12. package/lib/components/segmented-toggle.d.ts +9 -0
  13. package/lib/components/segmented-toggle.d.ts.map +1 -1
  14. package/lib/components/segmented-toggle.jsx +4 -0
  15. package/lib/components/segmented-toggle.jsx.map +1 -1
  16. package/lib/components/social-connections.d.ts +22 -5
  17. package/lib/components/social-connections.d.ts.map +1 -1
  18. package/lib/components/social-connections.jsx +37 -11
  19. package/lib/components/social-connections.jsx.map +1 -1
  20. package/lib/components/update-overlay.d.ts +41 -0
  21. package/lib/components/update-overlay.d.ts.map +1 -0
  22. package/lib/components/update-overlay.jsx +132 -0
  23. package/lib/components/update-overlay.jsx.map +1 -0
  24. package/lib/context/AppConfigContext.d.ts +27 -0
  25. package/lib/context/AppConfigContext.d.ts.map +1 -1
  26. package/lib/context/AppConfigContext.jsx.map +1 -1
  27. package/lib/demos/extension-popup.d.ts +212 -0
  28. package/lib/demos/extension-popup.d.ts.map +1 -0
  29. package/lib/demos/extension-popup.jsx +1172 -0
  30. package/lib/demos/extension-popup.jsx.map +1 -0
  31. package/lib/demos/index.d.ts +11 -0
  32. package/lib/demos/index.d.ts.map +1 -0
  33. package/lib/demos/index.js +14 -0
  34. package/lib/demos/index.js.map +1 -0
  35. package/lib/screens/auth/AuthScreen.d.ts +75 -1
  36. package/lib/screens/auth/AuthScreen.d.ts.map +1 -1
  37. package/lib/screens/auth/AuthScreen.jsx +356 -122
  38. package/lib/screens/auth/AuthScreen.jsx.map +1 -1
  39. package/lib/services/auth.service.d.ts +5 -1
  40. package/lib/services/auth.service.d.ts.map +1 -1
  41. package/lib/services/auth.service.js +5 -1
  42. package/lib/services/auth.service.js.map +1 -1
  43. package/package.json +7 -1
  44. package/src/components/auth/PasswordStrengthMeter.tsx +25 -3
  45. package/src/components/index.ts +1 -0
  46. package/src/components/profile/SecurityTab.tsx +11 -1
  47. package/src/components/segmented-toggle.tsx +13 -0
  48. package/src/components/social-connections.tsx +66 -20
  49. package/src/components/update-overlay.tsx +206 -0
  50. package/src/context/AppConfigContext.tsx +27 -0
  51. package/src/demos/extension-popup.tsx +2051 -0
  52. package/src/demos/index.ts +38 -0
  53. package/src/screens/auth/AuthScreen.tsx +701 -312
  54. package/src/services/auth.service.ts +13 -2
@@ -0,0 +1,212 @@
1
+ /**
2
+ * The Vault browser-extension popup, as a shared component.
3
+ *
4
+ * A faithful recreation of `clients/extension` — the real popup's routes,
5
+ * layout, copy, field labels, sort options and tag/folder structure — running on
6
+ * sample data that never leaves the device. Interactive: open an item, copy a
7
+ * field, reveal a TOTP, switch tabs, walk into settings.
8
+ *
9
+ * It lives HERE rather than in either consumer because both the marketing site
10
+ * and the Vault app show it, and two copies of a 1,000-line recreation would
11
+ * drift the moment the real extension changed. Same reasoning as sharing
12
+ * `PasswordGenerator` instead of rewriting it per app.
13
+ *
14
+ * Two things the website's original did that this deliberately does not:
15
+ *
16
+ * * **No `auto` mode.** That drove a synthetic cursor with `querySelector` and
17
+ * `getBoundingClientRect`, which has no meaning on native. It belongs to that
18
+ * page's choreography, not to the extension, so the showcase keeps it.
19
+ * * **No drag-and-drop in the tags tab.** It used `@dnd-kit`, which is DOM-only.
20
+ * The grip handles remain as affordances because removing them would change
21
+ * the layout this exists to reproduce, but they do not drag.
22
+ *
23
+ * Everything else is the original, moved rather than rewritten.
24
+ */
25
+ import React from "react";
26
+ import { ScrollView } from "react-native";
27
+ /**
28
+ * The real popup's frame, in px.
29
+ *
30
+ * `HEIGHT` is Chrome's *maximum* for a browser action popup, not a fixed size —
31
+ * the real popup is as tall as it needs to be, up to this. So a host with less
32
+ * vertical room may render it shorter (see the `height` prop) without the thing
33
+ * on screen becoming a lie about what the extension looks like; the item list
34
+ * scrolls inside, exactly as it does at full height.
35
+ */
36
+ export declare const EXTENSION_POPUP_WIDTH = 380;
37
+ export declare const EXTENSION_POPUP_HEIGHT = 600;
38
+ /** Below this the chrome crowds out the list and it stops reading as the popup. */
39
+ export declare const EXTENSION_POPUP_MIN_HEIGHT = 320;
40
+ export declare function useInk(): {
41
+ fg: string;
42
+ muted: string;
43
+ bg: string;
44
+ border: string;
45
+ secondary: string;
46
+ danger: string;
47
+ star: string;
48
+ };
49
+ export declare function vaultVars(dark: boolean): Record<string, string>;
50
+ export interface Account {
51
+ username: string;
52
+ password: string;
53
+ totp_secret?: string;
54
+ notes?: string;
55
+ }
56
+ export interface Tag {
57
+ name: string;
58
+ color: string;
59
+ icon?: "tag" | "circle" | "star";
60
+ }
61
+ export interface Item {
62
+ id: string;
63
+ name: string;
64
+ url: string;
65
+ favorite: boolean;
66
+ tags: Tag[];
67
+ accounts: Account[];
68
+ created: string;
69
+ updated: string;
70
+ }
71
+ export declare const T: {
72
+ social: Tag;
73
+ shopping: Tag;
74
+ finance: Tag;
75
+ streaming: Tag;
76
+ gaming: Tag;
77
+ };
78
+ export declare const ITEMS: Item[];
79
+ export declare const SORT_OPTIONS: readonly [{
80
+ readonly value: "name_asc";
81
+ readonly label: "Name (A-Z)";
82
+ readonly cmp: (a: Item, b: Item) => number;
83
+ }, {
84
+ readonly value: "name_desc";
85
+ readonly label: "Name (Z-A)";
86
+ readonly cmp: (a: Item, b: Item) => number;
87
+ }, {
88
+ readonly value: "updated_newest";
89
+ readonly label: "Recently updated";
90
+ readonly cmp: (a: Item, b: Item) => number;
91
+ }, {
92
+ readonly value: "created_newest";
93
+ readonly label: "Newest first";
94
+ readonly cmp: (a: Item, b: Item) => number;
95
+ }, {
96
+ readonly value: "created_oldest";
97
+ readonly label: "Oldest first";
98
+ readonly cmp: (a: Item, b: Item) => number;
99
+ }];
100
+ export declare function host(url: string): string;
101
+ export declare function favicon(url: string): string;
102
+ export declare function ItemIcon({ url, size, radius, }: {
103
+ url: string;
104
+ size?: number;
105
+ radius?: number;
106
+ }): React.JSX.Element;
107
+ export declare function useCopy(): {
108
+ copied: string | null;
109
+ copy: (key: string, text: string) => void;
110
+ };
111
+ export declare function totpCode(seed: string, step: number): string;
112
+ export declare function useTotp(secret?: string): {
113
+ code: string;
114
+ remaining: number;
115
+ };
116
+ export declare function RingCountdown({ remaining, size, period, color, }: {
117
+ remaining: number;
118
+ size?: number;
119
+ period?: number;
120
+ color: string;
121
+ }): React.JSX.Element;
122
+ export declare function VaultItemRow({ item, ink, onPress, highlight, }: {
123
+ item: Item;
124
+ ink: ReturnType<typeof useInk>;
125
+ onPress: () => void;
126
+ highlight?: boolean;
127
+ }): React.JSX.Element;
128
+ export declare function Dropdown({ open, onToggle, label, icon, children, ink, }: {
129
+ open: boolean;
130
+ onToggle: () => void;
131
+ label: string;
132
+ icon?: React.ReactNode;
133
+ children: React.ReactNode;
134
+ ink: ReturnType<typeof useInk>;
135
+ }): React.JSX.Element;
136
+ export declare function VaultList({ ink, onOpen, items, scrollRef, highlightId, }: {
137
+ ink: ReturnType<typeof useInk>;
138
+ onOpen: (id: string) => void;
139
+ items?: Item[];
140
+ scrollRef?: React.Ref<ScrollView>;
141
+ highlightId?: string | null;
142
+ }): React.JSX.Element;
143
+ export declare function FieldRow({ label, value, ink, copied, copy, secret, totp, }: {
144
+ label: string;
145
+ value: string;
146
+ ink: ReturnType<typeof useInk>;
147
+ copied: string | null;
148
+ copy: (k: string, t: string) => void;
149
+ secret?: boolean;
150
+ totp?: ReturnType<typeof useTotp>;
151
+ }): React.JSX.Element;
152
+ export declare function ItemDetail({ item, ink, onBack, onDelete, forceCopiedLabel, scrollRef, }: {
153
+ item: Item;
154
+ ink: ReturnType<typeof useInk>;
155
+ onBack: () => void;
156
+ onDelete?: () => void;
157
+ forceCopiedLabel?: string | null;
158
+ scrollRef?: React.Ref<ScrollView>;
159
+ }): React.JSX.Element | null;
160
+ /**
161
+ * The mark in the popup header.
162
+ *
163
+ * Supplied by the caller rather than loaded from a path. The original pointed
164
+ * at `/products/vault_light.png`, which only resolves on the marketing site —
165
+ * a shared package cannot reach into one consumer's public directory. Falls
166
+ * back to the wordmark so the header is never empty.
167
+ */
168
+ export declare function VaultMark({ logo }: {
169
+ logo?: React.ReactNode;
170
+ }): React.JSX.Element;
171
+ export type ExtRoute = {
172
+ r: "main";
173
+ } | {
174
+ r: "detail";
175
+ id: string;
176
+ } | {
177
+ r: "settings";
178
+ } | {
179
+ r: "new";
180
+ };
181
+ /**
182
+ * A parent-driven view of the popup.
183
+ *
184
+ * Lets a scene puppet the popup — scroll the list, highlight a row, open it,
185
+ * show a field as copied — while the popup keeps owning how any of that looks.
186
+ * All of it is RN-safe, which is why it survived the move.
187
+ *
188
+ * What did NOT survive is the original's self-driving `auto` mode: it steered a
189
+ * synthetic cursor with `querySelector` and `getBoundingClientRect`, which have
190
+ * no meaning on native. A scene that wants that keeps its own cursor and drives
191
+ * this controller instead.
192
+ */
193
+ export interface ExtensionPopupController {
194
+ route: ExtRoute;
195
+ highlightId: string | null;
196
+ autoCopied: string | null;
197
+ listScrollRef: React.Ref<ScrollView>;
198
+ detailScrollRef: React.Ref<ScrollView>;
199
+ }
200
+ /**
201
+ * The browser-extension popup.
202
+ *
203
+ * Interactive by default. Pass `external` to have a parent scene drive it.
204
+ */
205
+ export declare function ExtensionPopup({ logo, external, height, }?: {
206
+ logo?: React.ReactNode;
207
+ external?: ExtensionPopupController;
208
+ /** Frame height. Defaults to the full 600; see `EXTENSION_POPUP_HEIGHT`. */
209
+ height?: number;
210
+ }): React.JSX.Element;
211
+ export default ExtensionPopup;
212
+ //# sourceMappingURL=extension-popup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-popup.d.ts","sourceRoot":"","sources":["../../src/demos/extension-popup.tsx"],"names":[],"mappings":"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"}