@replicated/portal-components 0.0.1 → 0.0.3

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 (216) hide show
  1. package/components/metadata/registry.json +109 -3
  2. package/components/metadata/registry.md +53 -3
  3. package/dist/actions/index.d.mts +590 -2
  4. package/dist/actions/index.d.ts +590 -2
  5. package/dist/actions/index.js +1931 -0
  6. package/dist/actions/index.js.map +1 -1
  7. package/dist/airgap-instances.d.mts +26 -0
  8. package/dist/airgap-instances.d.ts +26 -0
  9. package/dist/airgap-instances.js +354 -0
  10. package/dist/airgap-instances.js.map +1 -0
  11. package/dist/error-page.d.mts +14 -0
  12. package/dist/error-page.d.ts +14 -0
  13. package/dist/error-page.js +153 -0
  14. package/dist/error-page.js.map +1 -0
  15. package/dist/error.d.mts +15 -0
  16. package/dist/error.d.ts +15 -0
  17. package/dist/error.js +144 -0
  18. package/dist/error.js.map +1 -0
  19. package/dist/esm/actions/index.js +1892 -1
  20. package/dist/esm/actions/index.js.map +1 -1
  21. package/dist/esm/airgap-instances.js +352 -0
  22. package/dist/esm/airgap-instances.js.map +1 -0
  23. package/dist/esm/error-page.js +151 -0
  24. package/dist/esm/error-page.js.map +1 -0
  25. package/dist/esm/error.js +142 -0
  26. package/dist/esm/error.js.map +1 -0
  27. package/dist/esm/helm-install-wizard.js +1007 -0
  28. package/dist/esm/helm-install-wizard.js.map +1 -0
  29. package/dist/esm/index.js +2240 -82
  30. package/dist/esm/index.js.map +1 -1
  31. package/dist/esm/install-actions.js +746 -0
  32. package/dist/esm/install-actions.js.map +1 -0
  33. package/dist/esm/install-card.js +115 -0
  34. package/dist/esm/install-card.js.map +1 -0
  35. package/dist/esm/install-targets.js +48 -0
  36. package/dist/esm/install-targets.js.map +1 -0
  37. package/dist/esm/instance-card.js +197 -0
  38. package/dist/esm/instance-card.js.map +1 -0
  39. package/dist/esm/join-team.js +218 -0
  40. package/dist/esm/join-team.js.map +1 -0
  41. package/dist/esm/license-card.js +131 -0
  42. package/dist/esm/license-card.js.map +1 -0
  43. package/dist/esm/license-details.js +667 -0
  44. package/dist/esm/license-details.js.map +1 -0
  45. package/dist/esm/linux-install-wizard.js +1083 -0
  46. package/dist/esm/linux-install-wizard.js.map +1 -0
  47. package/dist/esm/login.js +261 -0
  48. package/dist/esm/login.js.map +1 -0
  49. package/dist/esm/online-instance-list.js +287 -0
  50. package/dist/esm/online-instance-list.js.map +1 -0
  51. package/dist/esm/pending-installations.js +235 -0
  52. package/dist/esm/pending-installations.js.map +1 -0
  53. package/dist/esm/release-history-panel.js +100 -0
  54. package/dist/esm/release-history-panel.js.map +1 -0
  55. package/dist/esm/release-notes-card.js +23 -0
  56. package/dist/esm/release-notes-card.js.map +1 -0
  57. package/dist/esm/security-card.js +700 -0
  58. package/dist/esm/security-card.js.map +1 -0
  59. package/dist/esm/support-bundle-collection-card.js +170 -0
  60. package/dist/esm/support-bundle-collection-card.js.map +1 -0
  61. package/dist/esm/support-bundles-card.js +306 -0
  62. package/dist/esm/support-bundles-card.js.map +1 -0
  63. package/dist/esm/support-card.js +305 -0
  64. package/dist/esm/support-card.js.map +1 -0
  65. package/dist/esm/team-selection.js +117 -0
  66. package/dist/esm/team-selection.js.map +1 -0
  67. package/dist/esm/team-settings-card.js +78 -0
  68. package/dist/esm/team-settings-card.js.map +1 -0
  69. package/dist/esm/team-settings.js +136 -0
  70. package/dist/esm/team-settings.js.map +1 -0
  71. package/dist/esm/top-nav-user-menu.js +173 -0
  72. package/dist/esm/top-nav-user-menu.js.map +1 -0
  73. package/dist/esm/top-nav.js +398 -0
  74. package/dist/esm/top-nav.js.map +1 -0
  75. package/dist/esm/update-layout.js +405 -0
  76. package/dist/esm/update-layout.js.map +1 -0
  77. package/dist/esm/updates-card.js +85 -0
  78. package/dist/esm/updates-card.js.map +1 -0
  79. package/dist/esm/upload-support-bundle-modal.js +143 -0
  80. package/dist/esm/upload-support-bundle-modal.js.map +1 -0
  81. package/dist/esm/user-settings-card.js +21 -0
  82. package/dist/esm/user-settings-card.js.map +1 -0
  83. package/dist/esm/user-settings.js +368 -0
  84. package/dist/esm/user-settings.js.map +1 -0
  85. package/dist/esm/utils/index.js +170 -0
  86. package/dist/esm/utils/index.js.map +1 -0
  87. package/dist/helm-install-wizard.d.mts +38 -0
  88. package/dist/helm-install-wizard.d.ts +38 -0
  89. package/dist/helm-install-wizard.js +1011 -0
  90. package/dist/helm-install-wizard.js.map +1 -0
  91. package/dist/index.d.mts +11 -20
  92. package/dist/index.d.ts +11 -20
  93. package/dist/index.js +2266 -81
  94. package/dist/index.js.map +1 -1
  95. package/dist/install-B19AaKF_.d.mts +233 -0
  96. package/dist/install-Bi1qJ8Bu.d.ts +233 -0
  97. package/dist/install-actions.d.mts +141 -0
  98. package/dist/install-actions.d.ts +141 -0
  99. package/dist/install-actions.js +765 -0
  100. package/dist/install-actions.js.map +1 -0
  101. package/dist/install-card.d.mts +15 -0
  102. package/dist/install-card.d.ts +15 -0
  103. package/dist/install-card.js +117 -0
  104. package/dist/install-card.js.map +1 -0
  105. package/dist/install-targets.d.mts +19 -0
  106. package/dist/install-targets.d.ts +19 -0
  107. package/dist/install-targets.js +50 -0
  108. package/dist/install-targets.js.map +1 -0
  109. package/dist/instance-card.d.mts +22 -0
  110. package/dist/instance-card.d.ts +22 -0
  111. package/dist/instance-card.js +199 -0
  112. package/dist/instance-card.js.map +1 -0
  113. package/dist/join-team.d.mts +30 -0
  114. package/dist/join-team.d.ts +30 -0
  115. package/dist/join-team.js +220 -0
  116. package/dist/join-team.js.map +1 -0
  117. package/dist/license-card.d.mts +15 -0
  118. package/dist/license-card.d.ts +15 -0
  119. package/dist/license-card.js +133 -0
  120. package/dist/license-card.js.map +1 -0
  121. package/dist/license-details.d.mts +10 -0
  122. package/dist/license-details.d.ts +10 -0
  123. package/dist/license-details.js +669 -0
  124. package/dist/license-details.js.map +1 -0
  125. package/dist/linux-install-wizard.d.mts +66 -0
  126. package/dist/linux-install-wizard.d.ts +66 -0
  127. package/dist/linux-install-wizard.js +1093 -0
  128. package/dist/linux-install-wizard.js.map +1 -0
  129. package/dist/login.d.mts +37 -0
  130. package/dist/login.d.ts +37 -0
  131. package/dist/login.js +263 -0
  132. package/dist/login.js.map +1 -0
  133. package/dist/online-instance-list.d.mts +22 -0
  134. package/dist/online-instance-list.d.ts +22 -0
  135. package/dist/online-instance-list.js +289 -0
  136. package/dist/online-instance-list.js.map +1 -0
  137. package/dist/pending-installations.d.mts +15 -0
  138. package/dist/pending-installations.d.ts +15 -0
  139. package/dist/pending-installations.js +237 -0
  140. package/dist/pending-installations.js.map +1 -0
  141. package/dist/release-history-panel.d.mts +22 -0
  142. package/dist/release-history-panel.d.ts +22 -0
  143. package/dist/release-history-panel.js +102 -0
  144. package/dist/release-history-panel.js.map +1 -0
  145. package/dist/release-notes-card.d.mts +13 -0
  146. package/dist/release-notes-card.d.ts +13 -0
  147. package/dist/release-notes-card.js +25 -0
  148. package/dist/release-notes-card.js.map +1 -0
  149. package/dist/security-card.d.mts +73 -0
  150. package/dist/security-card.d.ts +73 -0
  151. package/dist/security-card.js +702 -0
  152. package/dist/security-card.js.map +1 -0
  153. package/dist/styles.css +1885 -191
  154. package/dist/support-bundle-collection-card.d.mts +20 -0
  155. package/dist/support-bundle-collection-card.d.ts +20 -0
  156. package/dist/support-bundle-collection-card.js +172 -0
  157. package/dist/support-bundle-collection-card.js.map +1 -0
  158. package/dist/support-bundles-card.d.mts +19 -0
  159. package/dist/support-bundles-card.d.ts +19 -0
  160. package/dist/support-bundles-card.js +308 -0
  161. package/dist/support-bundles-card.js.map +1 -0
  162. package/dist/support-card.d.mts +8 -0
  163. package/dist/support-card.d.ts +8 -0
  164. package/dist/support-card.js +307 -0
  165. package/dist/support-card.js.map +1 -0
  166. package/dist/team-selection.d.mts +23 -0
  167. package/dist/team-selection.d.ts +23 -0
  168. package/dist/team-selection.js +119 -0
  169. package/dist/team-selection.js.map +1 -0
  170. package/dist/team-settings-card-Dq1d9b5c.d.mts +14 -0
  171. package/dist/team-settings-card-Dq1d9b5c.d.ts +14 -0
  172. package/dist/team-settings-card.d.mts +2 -0
  173. package/dist/team-settings-card.d.ts +2 -0
  174. package/dist/team-settings-card.js +80 -0
  175. package/dist/team-settings-card.js.map +1 -0
  176. package/dist/team-settings.d.mts +25 -0
  177. package/dist/team-settings.d.ts +25 -0
  178. package/dist/team-settings.js +138 -0
  179. package/dist/team-settings.js.map +1 -0
  180. package/dist/top-nav-0mb1K_H0.d.mts +32 -0
  181. package/dist/top-nav-0mb1K_H0.d.ts +32 -0
  182. package/dist/top-nav-user-menu.d.mts +18 -0
  183. package/dist/top-nav-user-menu.d.ts +18 -0
  184. package/dist/top-nav-user-menu.js +175 -0
  185. package/dist/top-nav-user-menu.js.map +1 -0
  186. package/dist/top-nav.d.mts +3 -0
  187. package/dist/top-nav.d.ts +3 -0
  188. package/dist/top-nav.js +400 -0
  189. package/dist/top-nav.js.map +1 -0
  190. package/dist/update-layout.d.mts +12 -0
  191. package/dist/update-layout.d.ts +12 -0
  192. package/dist/update-layout.js +407 -0
  193. package/dist/update-layout.js.map +1 -0
  194. package/dist/updates-card-BbubBrVR.d.mts +18 -0
  195. package/dist/updates-card-BbubBrVR.d.ts +18 -0
  196. package/dist/updates-card.d.mts +2 -0
  197. package/dist/updates-card.d.ts +2 -0
  198. package/dist/updates-card.js +87 -0
  199. package/dist/updates-card.js.map +1 -0
  200. package/dist/upload-support-bundle-modal.d.mts +19 -0
  201. package/dist/upload-support-bundle-modal.d.ts +19 -0
  202. package/dist/upload-support-bundle-modal.js +145 -0
  203. package/dist/upload-support-bundle-modal.js.map +1 -0
  204. package/dist/user-settings-card.d.mts +8 -0
  205. package/dist/user-settings-card.d.ts +8 -0
  206. package/dist/user-settings-card.js +23 -0
  207. package/dist/user-settings-card.js.map +1 -0
  208. package/dist/user-settings.d.mts +47 -0
  209. package/dist/user-settings.d.ts +47 -0
  210. package/dist/user-settings.js +370 -0
  211. package/dist/user-settings.js.map +1 -0
  212. package/dist/utils/index.d.mts +70 -0
  213. package/dist/utils/index.d.ts +70 -0
  214. package/dist/utils/index.js +177 -0
  215. package/dist/utils/index.js.map +1 -0
  216. package/package.json +163 -3
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.0.1",
3
- "generatedAt": "2025-02-09T00:00:00.000Z",
2
+ "version": "0.0.3",
3
+ "generatedAt": "2025-12-12T22:19:20Z",
4
4
  "components": [
5
5
  {
6
6
  "name": "Button",
@@ -154,7 +154,7 @@
154
154
  "form",
155
155
  "card"
156
156
  ],
157
- "description": "Bordered authentication form with centered branding, email capture, and CTA button built for initial portal logins.",
157
+ "description": "Bordered authentication flow with centered branding, email capture, and CTA button built for initial portal logins. After a successful submission the component transitions to a verification UI showing the 12-digit code field. Pair with the `initiateLogin` server action exported from `@replicated/portal-components/actions`.",
158
158
  "props": [
159
159
  {
160
160
  "name": "logo",
@@ -215,6 +215,19 @@
215
215
  "type": "(email: string) => Promise<void> | void",
216
216
  "required": false,
217
217
  "description": "Callback invoked when the form submits. Receives the current email string."
218
+ },
219
+ {
220
+ "name": "onVerifyCode",
221
+ "type": "(code: string, redirectPath: string) => Promise<void | { success: true } | { success: false; message?: string }>",
222
+ "required": false,
223
+ "description": "Called when the user submits the 12-digit code in the verification step."
224
+ },
225
+ {
226
+ "name": "redirectPath",
227
+ "type": "string",
228
+ "required": false,
229
+ "defaultValue": "\"/\"",
230
+ "description": "Relative path to navigate to once verification succeeds."
218
231
  }
219
232
  ],
220
233
  "composition": {
@@ -237,6 +250,18 @@
237
250
  "description": "Override the logo with a vendor-specific mark.",
238
251
  "scenario": "White-labeled portal for an ISV.",
239
252
  "code": "<Login logo={<VendorLogo />} title=\"Acme Deployment Portal\" description=\"Access licenses, releases, and support\" />"
253
+ },
254
+ {
255
+ "id": "verification-step",
256
+ "description": "The component handles the verification step automatically after onContinue resolves.",
257
+ "scenario": "Customer enters their code from email to finish authentication.",
258
+ "code": "<Login onContinue={continueWithEmail} />"
259
+ },
260
+ {
261
+ "id": "server-action",
262
+ "description": "Invoke the provided server action to trigger passwordless email flows.",
263
+ "scenario": "Next.js App Router login route wired to Replicated APIs.",
264
+ "code": "'use server';\nimport { initiateLogin } from \"@replicated/portal-components/actions\";\n\nexport async function continueWithEmail(email: string) {\n await initiateLogin.run({ email }, {\n vendorId: \"demo-vendor\",\n licenseId: \"demo-license\",\n userId: \"anonymous\"\n });\n}\n\n<Login onContinue={continueWithEmail} />"
240
265
  }
241
266
  ],
242
267
  "behavior": {
@@ -268,6 +293,87 @@
268
293
  "relatedComponents": [
269
294
  "Button"
270
295
  ]
296
+ },
297
+ {
298
+ "name": "TopNav",
299
+ "displayName": "Top Navigation",
300
+ "versionIntroduced": "0.0.2",
301
+ "stability": "experimental",
302
+ "category": "layout",
303
+ "tags": [
304
+ "navigation",
305
+ "hero",
306
+ "tabs"
307
+ ],
308
+ "description": "Gradient hero banner containing the primary dashboard navigation tabs. Mirrors the default portal shell shown after login.",
309
+ "props": [
310
+ {
311
+ "name": "links",
312
+ "type": "Array<{ label: string; icon: ReactNode }>",
313
+ "required": false,
314
+ "description": "Override the default portal links. Leave undefined to render the standard set (Dashboard, Download, etc.)."
315
+ },
316
+ {
317
+ "name": "hiddenLabels",
318
+ "type": "string[]",
319
+ "required": false,
320
+ "description": "List of link labels to hide from the default set."
321
+ },
322
+ {
323
+ "name": "additionalLinks",
324
+ "type": "Array<{ label: string; icon: ReactNode }>",
325
+ "required": false,
326
+ "description": "Links appended after the base set. Useful for vendor-specific pages."
327
+ },
328
+ {
329
+ "name": "order",
330
+ "type": "string[]",
331
+ "required": false,
332
+ "description": "Optional ordering hint. Labels listed here are shown first in the specified order; remaining links follow in their original sequence."
333
+ },
334
+ {
335
+ "name": "userMenuLabel",
336
+ "type": "string",
337
+ "required": false,
338
+ "defaultValue": "\"Team: Example\"",
339
+ "description": "Text to render in the top-right account dropdown trigger."
340
+ }
341
+ ],
342
+ "composition": {
343
+ "requiredParents": [],
344
+ "requiredChildren": [],
345
+ "forbiddenChildren": [],
346
+ "slots": []
347
+ },
348
+ "examples": [
349
+ {
350
+ "id": "default-links",
351
+ "description": "Use the standard portal sections as tabs.",
352
+ "scenario": "Dashboard shell after successful login.",
353
+ "code": "<TopNav links={[{ label: \"Dashboard\", icon: <DashboardIcon /> }, { label: \"Download\", icon: <DownloadIcon /> }]} />"
354
+ }
355
+ ],
356
+ "behavior": {
357
+ "mode": "server",
358
+ "requiresJavaScript": false,
359
+ "dataAccess": "none",
360
+ "managesState": "presentational"
361
+ },
362
+ "accessibility": {
363
+ "aria": [],
364
+ "keyboard": [],
365
+ "screenReader": [],
366
+ "focusManagement": []
367
+ },
368
+ "performance": {
369
+ "bundleImpact": "low",
370
+ "notes": "Purely presentational markup; icons provided by callers.",
371
+ "lazyLoadable": true,
372
+ "virtualization": false
373
+ },
374
+ "relatedComponents": [
375
+ "Login"
376
+ ]
271
377
  }
272
378
  ]
273
379
  }
@@ -1,7 +1,7 @@
1
1
  # Component Registry
2
2
 
3
- - Version: 0.0.1
4
- - Generated: 2025-02-09T00:00:00.000Z
3
+ - Version: 0.0.3
4
+ - Generated: 2025-12-12T22:19:20Z
5
5
 
6
6
  ## Button
7
7
 
@@ -45,7 +45,7 @@ Theme-aware CTA for triggering portal actions with optional icons and loading fe
45
45
 
46
46
  ## Login
47
47
 
48
- Bordered authentication form with centered branding, email capture, and CTA button built for initial portal logins.
48
+ Bordered authentication flow with centered branding, email capture, and CTA button built for initial portal logins. After a successful submission the component transitions to a verification UI showing the 12-digit code field. Pair with the `initiateLogin` server action exported from `@replicated/portal-components/actions`.
49
49
 
50
50
  **Category:** pattern
51
51
  **Stability:** experimental
@@ -61,6 +61,8 @@ Bordered authentication form with centered branding, email capture, and CTA butt
61
61
  | initialEmail | `string` | No | Prefills the input when the user already provided their email. |
62
62
  | isSubmitting | `boolean` | No | When true the form disables interactions and shows the button spinner. |
63
63
  | onContinue | `(email: string) => Promise<void> \| void` | No | Callback invoked when the form submits. Receives the current email string. |
64
+ | onVerifyCode | `(code: string, redirectPath: string) => Promise<void \| { success: true } \| { success: false; message?: string }>` | No | Called when the user submits the 12-digit code in the verification step. |
65
+ | redirectPath | `string` | No | Relative path to navigate to once verification succeeds. |
64
66
 
65
67
  **Examples**
66
68
 
@@ -75,3 +77,51 @@ Bordered authentication form with centered branding, email capture, and CTA butt
75
77
  ```tsx
76
78
  <Login logo={<VendorLogo />} title="Acme Deployment Portal" description="Access licenses, releases, and support" />
77
79
  ```
80
+
81
+ **The component handles the verification step automatically after onContinue resolves.**
82
+
83
+ ```tsx
84
+ <Login onContinue={continueWithEmail} />
85
+ ```
86
+
87
+ **Invoke the provided server action to trigger passwordless email flows.**
88
+
89
+ ```tsx
90
+ 'use server';
91
+ import { initiateLogin } from "@replicated/portal-components/actions";
92
+
93
+ export async function continueWithEmail(email: string) {
94
+ await initiateLogin.run({ email }, {
95
+ vendorId: "demo-vendor",
96
+ licenseId: "demo-license",
97
+ userId: "anonymous"
98
+ });
99
+ }
100
+
101
+ <Login onContinue={continueWithEmail} />
102
+ ```
103
+
104
+ ---
105
+
106
+ ## Top Navigation
107
+
108
+ Gradient hero banner containing the primary dashboard navigation tabs. Mirrors the default portal shell shown after login.
109
+
110
+ **Category:** layout
111
+ **Stability:** experimental
112
+
113
+ | Prop | Type | Required | Description |
114
+ | --- | --- | --- | --- |
115
+ | links | `Array<{ label: string; icon: ReactNode }>` | No | Override the default portal links. Leave undefined to render the standard set (Dashboard, Download, etc.). |
116
+ | hiddenLabels | `string[]` | No | List of link labels to hide from the default set. |
117
+ | additionalLinks | `Array<{ label: string; icon: ReactNode }>` | No | Links appended after the base set. Useful for vendor-specific pages. |
118
+ | order | `string[]` | No | Optional ordering hint. Labels listed here are shown first in the specified order; remaining links follow in their original sequence. |
119
+ | userMenuLabel | `string` | No | Text to render in the top-right account dropdown trigger. |
120
+
121
+ **Examples**
122
+
123
+ **Use the standard portal sections as tabs.**
124
+
125
+ ```tsx
126
+ <TopNav links={[{ label: "Dashboard", icon: <DashboardIcon /> }, { label: "Download", icon: <DownloadIcon /> }]} />
127
+ ```