-
Notifications
You must be signed in to change notification settings - Fork 18
feat: implement preview read-only mode with upsell guidance and error handling #38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 6 commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
4e36849
feat: implement preview read-only mode with upsell guidance and error…
JoachimLK 5f58c47
feat: enhance demo mode support with Railway PR preview organization …
JoachimLK 15e2816
feat: update upsell messaging and enhance error handling for preview …
JoachimLK 604958c
feat: enhance error handling for preview read-only mode with improved…
JoachimLK 6e9ec8c
feat: add public URL for hosted plan upsell in preview modals
JoachimLK 4b344fa
feat: remove withPreviewReadOnly wrapper for API calls and handle err…
JoachimLK 4150598
feat: update job application data with enhanced candidate evaluations…
JoachimLK d95b6ef
feat: update job descriptions for various roles to enhance clarity an…
JoachimLK b2d7732
feat: unify demo environment setup by removing PR-specific seed scrip…
JoachimLK 0a9a797
feat: update seed script to remove hard .env dependency and support p…
JoachimLK File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,69 @@ | ||
| <script setup lang="ts"> | ||
| import { Crown, X, Rocket } from 'lucide-vue-next' | ||
|
|
||
| const emit = defineEmits<{ | ||
| (e: 'close'): void | ||
| }>() | ||
|
|
||
| const { message } = usePreviewReadOnly() | ||
| const config = useRuntimeConfig() | ||
|
|
||
| function closeModal() { | ||
| emit('close') | ||
| } | ||
| </script> | ||
|
|
||
| <template> | ||
| <Teleport to="body"> | ||
| <div class="fixed inset-0 z-50 flex items-center justify-center p-4"> | ||
| <div class="absolute inset-0 bg-black/50" @click="closeModal" /> | ||
|
|
||
| <div class="relative w-full max-w-md rounded-xl border border-surface-200 bg-white shadow-xl dark:border-surface-800 dark:bg-surface-900"> | ||
| <div class="flex items-center justify-between border-b border-surface-200 px-5 py-4 dark:border-surface-800"> | ||
| <div class="flex items-center gap-2"> | ||
| <Crown class="size-5 text-brand-600 dark:text-brand-400" /> | ||
| <h3 class="text-lg font-semibold text-surface-900 dark:text-surface-50">Unlock full editing</h3> | ||
| </div> | ||
|
|
||
| <button | ||
| class="cursor-pointer text-surface-400 transition-colors hover:text-surface-600 dark:hover:text-surface-200" | ||
| @click="closeModal" | ||
| > | ||
| <X class="size-5" /> | ||
| </button> | ||
| </div> | ||
|
|
||
| <div class="space-y-4 px-5 py-5"> | ||
| <p class="text-sm text-surface-600 dark:text-surface-300"> | ||
| {{ message }} | ||
| </p> | ||
|
|
||
| <p class="text-sm text-surface-500 dark:text-surface-400"> | ||
| Want write access? Upgrade to a paid hosted plan or deploy your own Applirank instance. | ||
| </p> | ||
|
|
||
| <div class="flex flex-wrap items-center gap-2"> | ||
| <a | ||
| :href="config.public.hostedPlanUrl" | ||
| target="_blank" | ||
| rel="noopener noreferrer" | ||
| class="inline-flex items-center gap-2 rounded-lg bg-brand-600 px-3 py-2 text-sm font-medium text-white transition-colors hover:bg-brand-700" | ||
| > | ||
| <Rocket class="size-4" /> | ||
| Upgrade to hosted plan | ||
| </a> | ||
|
|
||
| <a | ||
| href="https://github.com/applirank/applirank" | ||
| target="_blank" | ||
| rel="noopener noreferrer" | ||
| class="inline-flex items-center rounded-lg border border-surface-300 px-3 py-2 text-sm font-medium text-surface-700 transition-colors hover:bg-surface-50 dark:border-surface-700 dark:text-surface-200 dark:hover:bg-surface-800" | ||
| > | ||
| Self-host on GitHub | ||
| </a> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| </Teleport> | ||
| </template> | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Non-navigable modal — missing ARIA roles, keyboard handling, and focus management
The modal is inaccessible to keyboard and screen-reader users. The following gaps all need addressing:
role="dialog"/aria-modal="true"on the containerdiv(line 20)aria-labelledbylinking the title<h3>anid, reference it@keydown.esc.window="closeModal"aria-label="Close dialog"templateRef+watch/onMountedWAI-ARIA Authoring Practices require: closing on ESC, toggling ARIA attributes, and trapping/restoring focus. A modal dialog should have both
role="dialog"andaria-modal="true"so screen readers treat it as a modal.♿ Proposed minimal fix
📝 Committable suggestion
🤖 Prompt for AI Agents