Skip to content

Version 2#222

Merged
stevebauman merged 51 commits intomasterfrom
nuxt3
Mar 29, 2026
Merged

Version 2#222
stevebauman merged 51 commits intomasterfrom
nuxt3

Conversation

@stevebauman
Copy link
Copy Markdown
Owner

No description provided.

Replace legacy :value/@input and custom 'input' events with Vue 3 v-model style bindings across multiple UI components. Changes include :value -> :model-value, @input -> @update:model-value (or @update:modelValue for emitted events), and prop renames value -> modelValue where applicable (e.g. Input, Select, Range, Editor, Monaco, Preview, Toggle*, Control*). This standardizes two-way binding and prepares the components for Vue 3 v-model usage.
Replace the legacy <Select> implementation with a new set of reka-ui based select components. Removed components/Select.vue and added components/ui/select/* (Select, SelectContent, SelectGroup, SelectItem, SelectItemText, SelectLabel, SelectScrollUpButton, SelectScrollDownButton, SelectSeparator, SelectTrigger, SelectValue, index.js). Updated Editor.vue, ModalPreferences.vue, TabPreview.vue and ToggleSocialBadge.vue to use the slot-based Select API (SelectTrigger, SelectValue, SelectContent, SelectItem) and adjust v-model/emit handling (stringifying numeric options where needed and casting back on update). This unifies select UI behavior and styling across the app.
Introduce a new reusable Slider component (components/ui/slider/Slider.vue + index.js) built on reka-ui primitives and remove the old Range.vue. Update all consumers (Preview.vue, TabPreview.vue, ToggleBackgroundBlur.vue, ToggleShine.vue, ToggleSocialBadge.vue) to use <Slider> instead of <Range> and adapt bindings: model-value is passed as an array, update:model-value handlers now extract the first value (e.g. $event[0]) and convert to Number where appropriate. The change centralizes slider UI/behavior, enables multi-thumb support and consistent styling/prop forwarding.
Migrate custom dropdowns, popovers, dialogs, and label components to reka-ui primitives. Add a new components/ui library (dialog, popover, dropdown-menu, label, switch wrappers) and replace usages in Dropdown, FileDropdown, Modal, Toggle, Editor, ControlFitToWindow and PopoverSettings to use the new primitives (including a new PopoverPanel). Remove legacy Label.vue and Popover.vue and eliminate local click-outside/transition boilerplate and local toggle state where appropriate. Also update composables/useApplicationStore.js to align with these changes. This standardizes UI primitives and reduces custom positioning/state code.
Introduce a new UI tabs wrapper (components/ui/tabs/*.vue) that adapt reka-ui Tabs primitives with consistent styling and prop forwarding (Tabs, TabsList, TabsTrigger, TabsContent) and an index export. Update Tab.vue to a redesigned tab appearance: editable project name (inline input with dblclick to edit), revised layout/classes, replaced legacy Dropdown with DropdownMenu, simplified icon imports, and removed unused state. Change FileDropdown.vue to use Button (ghost) and expose text/options props with defaults. Update pages/index.vue to match the new tab/file styles and layout (adjust classes on container, draggable list and add-button). Overall refactor aligns tab components with reka-ui primitives and updates UI/CSS classes for the tab bar.
Replace idb-keyval/useIndexedDb persistence with pinia-plugin-persistedstate (localStorage). Add a one-time migrate-storage plugin that copies existing IndexedDB entries to localStorage and deletes the originals. Remove the useIndexedDb composable and related manual sync/load/clear logic; update project, settings and template stores to use pinia persistence (adjusted state shapes, e.g. templates -> { items: [] }, settings defaults). Wire the persistedstate plugin into nuxt.config and add the dependency to package.json. Also include minor fixes: refine ControlAspectRatios button styles and simplify PHP tag/lineOffset handling in useEditorUtils.
Replace raw-markdown rendering in Help and Changelog modals with structured templates and data:
- ModalChangelog: add parseChangelog to parse changelog.md (raw) into dated entries, sections and items; convert markdown links and inline code to safe HTML; add badgeClass mapping and a styled list layout.
- ModalHelp: replace runtime-markdown with a static structured sections array (text, images, tables) for richer, consistent rendering.
- CodeLine: fix empty-line rendering by using v-text '\n' for proper newline display.
- Page: remove an extra gap class from the editor container to adjust layout spacing.
These changes remove dependency on runtime-marked rendering and provide more robust, styled UI for help and changelog content.
Add handlers to prevent unwanted popover closing and delay tooltip activation. Register @pointer-down-outside and @focus-outside to call onDismissOutside, which prevents the popover from closing when interacting with nested floating-vue poppers (checks .v-popper__popper and calls event.preventDefault()). Introduce tooltipsReady reactive state and a watch on open to enable tooltips 400ms after opening; update v-tooltip bindings to use tooltipsReady. Also import watch from Vue.
Update CI to use actions v4 and Node 20, install with npm ci, and run unit tests with Vitest (npx vitest run) instead of the previous browser/Dusk pipeline. Add .nuxtrc, vitest.config.js, and new composable/unit test files to enable Vitest-based testing. Fix Tab.vue animation by removing the always-on animate class and adding an animatingIn flag (cleared on mount) to avoid unwanted enter animations. Defer project store cleanup in useProjectStores to the nextTick to prevent disposing stores/localStorage removal during the render cycle.
@netlify
Copy link
Copy Markdown

netlify bot commented Mar 29, 2026

Deploy Preview for festive-hermann-8f687a ready!

Name Link
🔨 Latest commit e95d42b
🔍 Latest deploy log https://app.netlify.com/projects/festive-hermann-8f687a/deploys/69c8a827d73fdf0008c18403
😎 Deploy Preview https://deploy-preview-222--festive-hermann-8f687a.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@stevebauman stevebauman merged commit 653f716 into master Mar 29, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant