@nyuccl/smile 0.2.0-beta.4 → 0.2.0-beta.41
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.
- package/dist/module.json +1 -1
- package/dist/module.mjs +109 -21
- package/dist/runtime/components/builtins/AdvertisementView.d.vue.ts +13 -1
- package/dist/runtime/components/builtins/AdvertisementView.vue +7 -3
- package/dist/runtime/components/builtins/AdvertisementView.vue.d.ts +13 -1
- package/dist/runtime/components/builtins/DebriefView.vue +3 -1
- package/dist/runtime/components/builtins/DemographicSurveyView.vue +8 -6
- package/dist/runtime/components/builtins/DeviceSurveyView.vue +5 -3
- package/dist/runtime/components/builtins/ExpView.vue +4 -2
- package/dist/runtime/components/builtins/ExperimentStatusBar.vue +3 -0
- package/dist/runtime/components/builtins/FavoriteColor.vue +3 -1
- package/dist/runtime/components/builtins/FavoriteNumber.vue +3 -1
- package/dist/runtime/components/builtins/InformedConsentModal.vue +5 -3
- package/dist/runtime/components/builtins/InformedConsentView.vue +3 -2
- package/dist/runtime/components/builtins/InstructionsQuiz.vue +7 -5
- package/dist/runtime/components/builtins/InstructionsView.vue +5 -3
- package/dist/runtime/components/builtins/LocalDevBanner.vue +16 -0
- package/dist/runtime/components/builtins/MTurkRecruitView.vue +4 -3
- package/dist/runtime/components/builtins/PresentationModeView.vue +9 -8
- package/dist/runtime/components/builtins/StatusBar.vue +7 -4
- package/dist/runtime/components/builtins/StudyPreviewText.vue +12 -10
- package/dist/runtime/components/builtins/TaskFeedbackSurveyView.vue +3 -1
- package/dist/runtime/components/builtins/ThanksView.vue +22 -21
- package/dist/runtime/components/builtins/WindowSizerView.vue +5 -3
- package/dist/runtime/components/builtins/WithdrawModal.vue +9 -7
- package/dist/runtime/components/builtins/WithdrawView.vue +4 -2
- package/dist/runtime/components/dev/RecruitmentChooserView.vue +532 -224
- package/dist/runtime/components/dev/ResponsiveDeviceContainer.vue +17 -8
- package/dist/runtime/components/dev/SmileDevPresentationView.vue +83 -0
- package/dist/runtime/components/dev/console/ConfigList.vue +14 -11
- package/dist/runtime/components/dev/console/ConsoleConfigPanel.vue +28 -7
- package/dist/runtime/components/dev/console/ConsoleDatabaseBrowsePanel.vue +6 -4
- package/dist/runtime/components/dev/console/ConsoleLogPanel.vue +68 -23
- package/dist/runtime/components/dev/console/DatabaseList.vue +9 -7
- package/dist/runtime/components/dev/console/SmileDevConsole.vue +7 -5
- package/dist/runtime/components/dev/devicePresets.d.ts +4 -4
- package/dist/runtime/components/dev/devicePresets.js +4 -4
- package/dist/runtime/components/dev/menu/DevConfigPanel.vue +3 -1
- package/dist/runtime/components/dev/menu/ResponsiveDeviceSelect.vue +1 -0
- package/dist/runtime/components/dev/menu/SmileDevAppMenu.vue +27 -24
- package/dist/runtime/components/dev/navbar/ColorModeButton.vue +5 -3
- package/dist/runtime/components/dev/navbar/DatabaseButtonGroup.vue +8 -6
- package/dist/runtime/components/dev/navbar/FullScreenButton.vue +4 -2
- package/dist/runtime/components/dev/navbar/KeyCommandNotification.vue +1 -1
- package/dist/runtime/components/dev/navbar/PanelButtonGroup.d.vue.ts +3 -0
- package/dist/runtime/components/dev/navbar/PanelButtonGroup.vue +79 -0
- package/dist/runtime/components/dev/navbar/PanelButtonGroup.vue.d.ts +3 -0
- package/dist/runtime/components/dev/navbar/ReloadButton.vue +3 -1
- package/dist/runtime/components/dev/navbar/ResetButton.vue +3 -1
- package/dist/runtime/components/dev/navbar/RouteJumper.vue +9 -5
- package/dist/runtime/components/dev/navbar/SmileDevNavBar.vue +19 -27
- package/dist/runtime/components/dev/navbar/StepInfoButtonGroup.vue +5 -3
- package/dist/runtime/components/dev/navbar/ViewInfoButtonGroup.vue +13 -10
- package/dist/runtime/components/dev/presentation/DarkModeButton.vue +5 -3
- package/dist/runtime/components/dev/presentation/LogoutButton.vue +2 -1
- package/dist/runtime/components/dev/presentation/PresentationModeResetButton.vue +11 -2
- package/dist/runtime/components/dev/presentation/PresentationNavBar.d.vue.ts +13 -1
- package/dist/runtime/components/dev/presentation/PresentationNavBar.vue +13 -6
- package/dist/runtime/components/dev/presentation/PresentationNavBar.vue.d.ts +13 -1
- package/dist/runtime/components/dev/presentation/QRCodeButton.vue +4 -2
- package/dist/runtime/components/dev/sidebar/AppProgressPanel.vue +23 -21
- package/dist/runtime/components/dev/sidebar/ConfigurationVariablesPanel.vue +7 -5
- package/dist/runtime/components/dev/sidebar/DatabaseStatusInfoPanel.vue +27 -7
- package/dist/runtime/components/dev/sidebar/RandomizationSidebarPanel.vue +9 -5
- package/dist/runtime/components/dev/sidebar/SmileDevSideBar.vue +12 -5
- package/dist/runtime/components/dev/sidebar/StepDataViewer.d.vue.ts +2 -2
- package/dist/runtime/components/dev/sidebar/StepDataViewer.vue +1 -1
- package/dist/runtime/components/dev/sidebar/StepDataViewer.vue.d.ts +2 -2
- package/dist/runtime/components/dev/sidebar/StepExplorerPanel.vue +13 -8
- package/dist/runtime/components/dev/sidebar/StepNode.vue +7 -5
- package/dist/runtime/components/dev/sidebar/StudyInfoPanel.vue +3 -2
- package/dist/runtime/components/forms/MonthYearDayPicker.vue +1 -0
- package/dist/runtime/components/layouts/ConstrainedPage.d.vue.ts +1 -1
- package/dist/runtime/components/layouts/ConstrainedPage.vue.d.ts +1 -1
- package/dist/runtime/components/layouts/ConstrainedTaskWindow.d.vue.ts +2 -2
- package/dist/runtime/components/layouts/ConstrainedTaskWindow.vue +1 -1
- package/dist/runtime/components/layouts/ConstrainedTaskWindow.vue.d.ts +2 -2
- package/dist/runtime/components/layouts/TitleTwoCol.d.vue.ts +1 -1
- package/dist/runtime/components/layouts/TitleTwoCol.vue.d.ts +1 -1
- package/dist/runtime/components/layouts/TwoCol.d.vue.ts +1 -1
- package/dist/runtime/components/layouts/TwoCol.vue.d.ts +1 -1
- package/dist/runtime/components/ui/avatar/Avatar.vue +1 -0
- package/dist/runtime/components/ui/avatar/AvatarFallback.vue +1 -0
- package/dist/runtime/components/ui/badge/Badge.vue +1 -0
- package/dist/runtime/components/ui/badge/index.d.ts +1 -1
- package/dist/runtime/components/ui/breadcrumb/BreadcrumbEllipsis.vue +1 -0
- package/dist/runtime/components/ui/breadcrumb/BreadcrumbItem.vue +1 -0
- package/dist/runtime/components/ui/breadcrumb/BreadcrumbLink.vue +1 -0
- package/dist/runtime/components/ui/breadcrumb/BreadcrumbList.vue +1 -0
- package/dist/runtime/components/ui/breadcrumb/BreadcrumbPage.vue +1 -0
- package/dist/runtime/components/ui/breadcrumb/BreadcrumbSeparator.vue +1 -0
- package/dist/runtime/components/ui/button/Button.vue +1 -0
- package/dist/runtime/components/ui/button/index.d.ts +2 -2
- package/dist/runtime/components/ui/button-group/ButtonGroup.vue +1 -0
- package/dist/runtime/components/ui/button-group/ButtonGroupItem.vue +1 -0
- package/dist/runtime/components/ui/calendar/Calendar.vue +1 -0
- package/dist/runtime/components/ui/calendar/CalendarCell.vue +1 -0
- package/dist/runtime/components/ui/calendar/CalendarCellTrigger.vue +1 -0
- package/dist/runtime/components/ui/calendar/CalendarGrid.vue +1 -0
- package/dist/runtime/components/ui/calendar/CalendarGridRow.vue +1 -0
- package/dist/runtime/components/ui/calendar/CalendarHeadCell.vue +1 -0
- package/dist/runtime/components/ui/calendar/CalendarHeader.vue +1 -0
- package/dist/runtime/components/ui/calendar/CalendarHeading.vue +1 -0
- package/dist/runtime/components/ui/calendar/CalendarNextButton.vue +1 -0
- package/dist/runtime/components/ui/calendar/CalendarPrevButton.vue +1 -0
- package/dist/runtime/components/ui/card/Card.vue +1 -0
- package/dist/runtime/components/ui/card/CardAction.vue +1 -0
- package/dist/runtime/components/ui/card/CardContent.vue +1 -0
- package/dist/runtime/components/ui/card/CardDescription.vue +1 -0
- package/dist/runtime/components/ui/card/CardFooter.vue +1 -0
- package/dist/runtime/components/ui/card/CardHeader.vue +1 -0
- package/dist/runtime/components/ui/card/CardTitle.vue +1 -0
- package/dist/runtime/components/ui/checkbox/Checkbox.d.vue.ts +6 -6
- package/dist/runtime/components/ui/checkbox/Checkbox.vue +1 -0
- package/dist/runtime/components/ui/checkbox/Checkbox.vue.d.ts +6 -6
- package/dist/runtime/components/ui/checkbox/index.d.ts +2 -2
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuCheckboxItem.d.vue.ts +4 -4
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +1 -0
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue.d.ts +4 -4
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuContent.d.vue.ts +3 -3
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuContent.vue +1 -0
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +3 -3
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuItem.d.vue.ts +1 -1
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuItem.vue +1 -0
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuItem.vue.d.ts +1 -1
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuLabel.vue +1 -0
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +1 -0
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSeparator.vue +1 -0
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuShortcut.vue +1 -0
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubContent.d.vue.ts +3 -3
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubContent.vue +1 -0
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +3 -3
- package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +1 -0
- package/dist/runtime/components/ui/input/Input.d.vue.ts +4 -4
- package/dist/runtime/components/ui/input/Input.vue +1 -0
- package/dist/runtime/components/ui/input/Input.vue.d.ts +4 -4
- package/dist/runtime/components/ui/label/Label.vue +1 -0
- package/dist/runtime/components/ui/multiselect/MultiSelect.d.vue.ts +1 -1
- package/dist/runtime/components/ui/multiselect/MultiSelect.vue +1 -0
- package/dist/runtime/components/ui/multiselect/MultiSelect.vue.d.ts +1 -1
- package/dist/runtime/components/ui/pagination/Pagination.vue +1 -0
- package/dist/runtime/components/ui/pagination/PaginationContent.vue +1 -0
- package/dist/runtime/components/ui/pagination/PaginationEllipsis.vue +1 -0
- package/dist/runtime/components/ui/pagination/PaginationFirst.vue +1 -0
- package/dist/runtime/components/ui/pagination/PaginationItem.vue +1 -0
- package/dist/runtime/components/ui/pagination/PaginationLast.vue +1 -0
- package/dist/runtime/components/ui/pagination/PaginationNext.vue +1 -0
- package/dist/runtime/components/ui/pagination/PaginationPrevious.vue +1 -0
- package/dist/runtime/components/ui/popover/PopoverContent.d.vue.ts +2 -2
- package/dist/runtime/components/ui/popover/PopoverContent.vue +1 -0
- package/dist/runtime/components/ui/popover/PopoverContent.vue.d.ts +2 -2
- package/dist/runtime/components/ui/progress/Progress.vue +1 -0
- package/dist/runtime/components/ui/resizable/ResizableHandle.vue +1 -0
- package/dist/runtime/components/ui/resizable/ResizablePanel.d.vue.ts +1 -1
- package/dist/runtime/components/ui/resizable/ResizablePanel.vue.d.ts +1 -1
- package/dist/runtime/components/ui/resizable/ResizablePanelGroup.vue +1 -0
- package/dist/runtime/components/ui/select/Select.d.vue.ts +1 -1
- package/dist/runtime/components/ui/select/Select.vue.d.ts +1 -1
- package/dist/runtime/components/ui/select/SelectContent.d.vue.ts +2 -2
- package/dist/runtime/components/ui/select/SelectContent.vue +1 -0
- package/dist/runtime/components/ui/select/SelectContent.vue.d.ts +2 -2
- package/dist/runtime/components/ui/select/SelectItem.vue +1 -0
- package/dist/runtime/components/ui/select/SelectLabel.vue +1 -0
- package/dist/runtime/components/ui/select/SelectScrollDownButton.vue +1 -0
- package/dist/runtime/components/ui/select/SelectScrollUpButton.vue +1 -0
- package/dist/runtime/components/ui/select/SelectSeparator.vue +1 -0
- package/dist/runtime/components/ui/select/SelectTrigger.vue +1 -0
- package/dist/runtime/components/ui/separator/Separator.vue +1 -0
- package/dist/runtime/components/ui/sheet/SheetContent.d.vue.ts +1 -1
- package/dist/runtime/components/ui/sheet/SheetContent.vue +1 -0
- package/dist/runtime/components/ui/sheet/SheetContent.vue.d.ts +1 -1
- package/dist/runtime/components/ui/sheet/SheetDescription.vue +1 -0
- package/dist/runtime/components/ui/sheet/SheetFooter.vue +1 -0
- package/dist/runtime/components/ui/sheet/SheetHeader.vue +1 -0
- package/dist/runtime/components/ui/sheet/SheetOverlay.vue +1 -0
- package/dist/runtime/components/ui/sheet/SheetTitle.vue +1 -0
- package/dist/runtime/components/ui/sidebar/Sidebar.d.vue.ts +1 -1
- package/dist/runtime/components/ui/sidebar/Sidebar.vue +1 -0
- package/dist/runtime/components/ui/sidebar/Sidebar.vue.d.ts +1 -1
- package/dist/runtime/components/ui/sidebar/SidebarContent.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarFooter.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarGroup.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarGroupAction.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarGroupContent.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarGroupLabel.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarHeader.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarInput.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarInset.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarMenu.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarMenuAction.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarMenuBadge.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarMenuButton.d.vue.ts +1 -1
- package/dist/runtime/components/ui/sidebar/SidebarMenuButton.vue.d.ts +1 -1
- package/dist/runtime/components/ui/sidebar/SidebarMenuButtonChild.d.vue.ts +1 -1
- package/dist/runtime/components/ui/sidebar/SidebarMenuButtonChild.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarMenuButtonChild.vue.d.ts +1 -1
- package/dist/runtime/components/ui/sidebar/SidebarMenuItem.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarMenuSkeleton.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarMenuSub.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarMenuSubButton.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarMenuSubItem.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarProvider.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarRail.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarSeparator.vue +1 -0
- package/dist/runtime/components/ui/sidebar/SidebarTrigger.vue +1 -0
- package/dist/runtime/components/ui/sidebar/index.d.ts +1 -1
- package/dist/runtime/components/ui/skeleton/Skeleton.vue +1 -0
- package/dist/runtime/components/ui/sonner/Sonner.d.vue.ts +4 -4
- package/dist/runtime/components/ui/sonner/Sonner.vue.d.ts +4 -4
- package/dist/runtime/components/ui/stepper/Stepper.vue +1 -0
- package/dist/runtime/components/ui/stepper/StepperDescription.vue +1 -0
- package/dist/runtime/components/ui/stepper/StepperIndicator.vue +1 -0
- package/dist/runtime/components/ui/stepper/StepperItem.d.vue.ts +1 -1
- package/dist/runtime/components/ui/stepper/StepperItem.vue +1 -0
- package/dist/runtime/components/ui/stepper/StepperItem.vue.d.ts +1 -1
- package/dist/runtime/components/ui/stepper/StepperSeparator.vue +1 -0
- package/dist/runtime/components/ui/stepper/StepperTitle.vue +1 -0
- package/dist/runtime/components/ui/stepper/StepperTrigger.vue +1 -0
- package/dist/runtime/components/ui/switch/Switch.d.vue.ts +2 -2
- package/dist/runtime/components/ui/switch/Switch.vue +1 -0
- package/dist/runtime/components/ui/switch/Switch.vue.d.ts +2 -2
- package/dist/runtime/components/ui/switch/index.d.ts +2 -2
- package/dist/runtime/components/ui/table/Table.vue +1 -0
- package/dist/runtime/components/ui/table/TableBody.vue +1 -0
- package/dist/runtime/components/ui/table/TableCaption.vue +1 -0
- package/dist/runtime/components/ui/table/TableCell.vue +1 -0
- package/dist/runtime/components/ui/table/TableEmpty.vue +1 -0
- package/dist/runtime/components/ui/table/TableFooter.vue +1 -0
- package/dist/runtime/components/ui/table/TableHead.vue +1 -0
- package/dist/runtime/components/ui/table/TableHeader.vue +1 -0
- package/dist/runtime/components/ui/table/TableRow.vue +1 -0
- package/dist/runtime/components/ui/tabs/Tabs.vue +1 -0
- package/dist/runtime/components/ui/tabs/TabsContent.d.vue.ts +2 -2
- package/dist/runtime/components/ui/tabs/TabsContent.vue +1 -0
- package/dist/runtime/components/ui/tabs/TabsContent.vue.d.ts +2 -2
- package/dist/runtime/components/ui/tabs/TabsList.d.vue.ts +1 -1
- package/dist/runtime/components/ui/tabs/TabsList.vue +1 -0
- package/dist/runtime/components/ui/tabs/TabsList.vue.d.ts +1 -1
- package/dist/runtime/components/ui/tabs/TabsTrigger.d.vue.ts +2 -2
- package/dist/runtime/components/ui/tabs/TabsTrigger.vue +1 -0
- package/dist/runtime/components/ui/tabs/TabsTrigger.vue.d.ts +2 -2
- package/dist/runtime/components/ui/tags-input/TagsInput.d.vue.ts +3 -3
- package/dist/runtime/components/ui/tags-input/TagsInput.vue +1 -0
- package/dist/runtime/components/ui/tags-input/TagsInput.vue.d.ts +3 -3
- package/dist/runtime/components/ui/tags-input/TagsInputInput.vue +1 -0
- package/dist/runtime/components/ui/tags-input/TagsInputItem.d.vue.ts +2 -2
- package/dist/runtime/components/ui/tags-input/TagsInputItem.vue +1 -0
- package/dist/runtime/components/ui/tags-input/TagsInputItem.vue.d.ts +2 -2
- package/dist/runtime/components/ui/tags-input/TagsInputItemDelete.vue +1 -0
- package/dist/runtime/components/ui/tags-input/TagsInputItemText.vue +1 -0
- package/dist/runtime/components/ui/textarea/Textarea.d.vue.ts +4 -4
- package/dist/runtime/components/ui/textarea/Textarea.vue +1 -0
- package/dist/runtime/components/ui/textarea/Textarea.vue.d.ts +4 -4
- package/dist/runtime/components/ui/toggle/Toggle.d.vue.ts +2 -2
- package/dist/runtime/components/ui/toggle/Toggle.vue +1 -0
- package/dist/runtime/components/ui/toggle/Toggle.vue.d.ts +2 -2
- package/dist/runtime/components/ui/toggle/index.d.ts +1 -1
- package/dist/runtime/components/ui/toggle-group/ToggleGroup.d.vue.ts +2 -2
- package/dist/runtime/components/ui/toggle-group/ToggleGroup.vue +1 -0
- package/dist/runtime/components/ui/toggle-group/ToggleGroup.vue.d.ts +2 -2
- package/dist/runtime/components/ui/toggle-group/ToggleGroupItem.vue +1 -0
- package/dist/runtime/components/ui/tooltip/TooltipContent.d.vue.ts +2 -2
- package/dist/runtime/components/ui/tooltip/TooltipContent.vue +1 -0
- package/dist/runtime/components/ui/tooltip/TooltipContent.vue.d.ts +2 -2
- package/dist/runtime/composables/useAPI.d.ts +2 -2
- package/dist/runtime/composables/useAPI.js +6 -11
- package/dist/runtime/composables/useViewAPI.d.ts +1 -0
- package/dist/runtime/composables/useViewAPI.js +20 -4
- package/dist/runtime/composables/useWindowSizer.d.ts +14 -0
- package/dist/runtime/composables/useWindowSizer.js +48 -0
- package/dist/runtime/core/config.d.ts +78 -48
- package/dist/runtime/core/config.js +21 -27
- package/dist/runtime/core/stepper/Stepper.d.ts +13 -10
- package/dist/runtime/core/stepper/Stepper.js +70 -55
- package/dist/runtime/core/stepper/StepperSerializer.js +32 -14
- package/dist/runtime/core/timeline/Timeline.js +1 -2
- package/dist/runtime/css/main.css +1 -1
- package/dist/runtime/css/smile.css +1 -1
- package/dist/runtime/layouts/development.vue +38 -78
- package/dist/runtime/layouts/experiment.d.vue.ts +7 -10
- package/dist/runtime/layouts/experiment.vue +13 -0
- package/dist/runtime/layouts/experiment.vue.d.ts +7 -10
- package/dist/runtime/layouts/presentation.vue +24 -3
- package/dist/runtime/middleware/timeline.global.js +2 -4
- package/dist/runtime/pages/[...slug].vue +2 -0
- package/dist/runtime/pages/dev/[...slug].vue +2 -0
- package/dist/runtime/pages/dev-login.vue +5 -3
- package/dist/runtime/pages/presentation/[...slug].vue +2 -0
- package/dist/runtime/plugins/dev-sync.client.js +0 -2
- package/dist/runtime/plugins/seed.client.js +1 -3
- package/dist/runtime/plugins/store-sync.client.js +8 -10
- package/dist/runtime/public/images/helpus.png +0 -0
- package/dist/runtime/public/images/smile.svg +78 -0
- package/dist/runtime/public/images/universitylogo.png +0 -0
- package/dist/runtime/server/api/auth/login.post.js +11 -2
- package/dist/runtime/server/api/db-info.get.d.ts +5 -0
- package/dist/runtime/server/api/db-info.get.js +10 -0
- package/dist/runtime/server/api/qr.get.js +1 -2
- package/dist/runtime/server/middleware/dev-auth.js +10 -5
- package/dist/runtime/stores/log.js +4 -7
- package/dist/runtime/stores/smilestore.d.ts +161 -1014
- package/dist/runtime/stores/smilestore.js +39 -7
- package/dist/runtime/utils/utils.js +7 -0
- package/package.json +5 -3
- package/dist/runtime/components/dev/navbar/ViewButton.vue +0 -159
- package/dist/runtime/pages/info.vue +0 -462
- /package/dist/runtime/components/{dev/navbar/ViewButton.d.vue.ts → builtins/LocalDevBanner.d.vue.ts} +0 -0
- /package/dist/runtime/components/{dev/navbar/ViewButton.vue.d.ts → builtins/LocalDevBanner.vue.d.ts} +0 -0
- /package/dist/runtime/{pages/info.d.vue.ts → components/dev/SmileDevPresentationView.d.vue.ts} +0 -0
- /package/dist/runtime/{pages/info.vue.d.ts → components/dev/SmileDevPresentationView.vue.d.ts} +0 -0
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
+
import { ArrowDown, ChevronsLeft, ChevronsRight, Diamond, Pin, PinOff, Presentation, WandSparkles } from "lucide-vue-next";
|
|
2
3
|
import { computed } from "vue";
|
|
3
4
|
import RouteJumper from "./RouteJumper.vue";
|
|
5
|
+
import { useRoute } from "#imports";
|
|
6
|
+
import useAPI from "../../../composables/useAPI";
|
|
4
7
|
const api = useAPI();
|
|
5
8
|
const route = useRoute();
|
|
6
9
|
const isDevMode = computed(() => route.path.startsWith("/dev/") || route.path === "/dev");
|
|
@@ -41,7 +44,7 @@ const togglePin = () => {
|
|
|
41
44
|
:disabled="!api.hasAutofill()"
|
|
42
45
|
@click="api.autofill()"
|
|
43
46
|
>
|
|
44
|
-
<
|
|
47
|
+
<WandSparkles />
|
|
45
48
|
</ButtonGroupItem>
|
|
46
49
|
</TooltipTrigger>
|
|
47
50
|
<TooltipContent side="bottom">
|
|
@@ -57,7 +60,7 @@ const togglePin = () => {
|
|
|
57
60
|
:disabled="api.store.dev.pinnedRoute !== null"
|
|
58
61
|
@click="api.goToView(api.route?.meta?.prev)"
|
|
59
62
|
>
|
|
60
|
-
<
|
|
63
|
+
<ChevronsLeft />
|
|
61
64
|
</ButtonGroupItem>
|
|
62
65
|
</TooltipTrigger>
|
|
63
66
|
<TooltipContent side="bottom">
|
|
@@ -67,7 +70,7 @@ const togglePin = () => {
|
|
|
67
70
|
</template>
|
|
68
71
|
<template v-else>
|
|
69
72
|
<ButtonGroupItem disabled>
|
|
70
|
-
<
|
|
73
|
+
<ChevronsLeft />
|
|
71
74
|
</ButtonGroupItem>
|
|
72
75
|
</template>
|
|
73
76
|
|
|
@@ -79,7 +82,7 @@ const togglePin = () => {
|
|
|
79
82
|
:disabled="api.store.dev.pinnedRoute !== null"
|
|
80
83
|
@click="api.goNextView()"
|
|
81
84
|
>
|
|
82
|
-
<
|
|
85
|
+
<ChevronsRight />
|
|
83
86
|
</ButtonGroupItem>
|
|
84
87
|
</TooltipTrigger>
|
|
85
88
|
<TooltipContent side="bottom">
|
|
@@ -89,7 +92,7 @@ const togglePin = () => {
|
|
|
89
92
|
</template>
|
|
90
93
|
<template v-else>
|
|
91
94
|
<ButtonGroupItem disabled>
|
|
92
|
-
<
|
|
95
|
+
<ChevronsRight />
|
|
93
96
|
</ButtonGroupItem>
|
|
94
97
|
</template>
|
|
95
98
|
|
|
@@ -101,8 +104,8 @@ const togglePin = () => {
|
|
|
101
104
|
:class="{ pinned: api.store.dev.pinnedRoute !== null }"
|
|
102
105
|
@click="togglePin()"
|
|
103
106
|
>
|
|
104
|
-
<
|
|
105
|
-
<
|
|
107
|
+
<PinOff v-if="api.store.dev.pinnedRoute !== null" />
|
|
108
|
+
<Pin v-else />
|
|
106
109
|
</ButtonGroupItem>
|
|
107
110
|
</TooltipTrigger>
|
|
108
111
|
<TooltipContent side="bottom">
|
|
@@ -120,15 +123,15 @@ const togglePin = () => {
|
|
|
120
123
|
<ButtonGroupItem :class="buttonstyle">
|
|
121
124
|
<div class="font-mono text-[0.65rem] font-medium min-w-[100px]">
|
|
122
125
|
<!-- Route type icons -->
|
|
123
|
-
<
|
|
126
|
+
<ArrowDown
|
|
124
127
|
v-if="currentTimelineMeta.sequential"
|
|
125
128
|
class="inline size-3 mr-1"
|
|
126
129
|
/>
|
|
127
|
-
<
|
|
130
|
+
<Presentation
|
|
128
131
|
v-else-if="api.currentRouteName() === 'presentation_home'"
|
|
129
132
|
class="inline size-3 mr-1"
|
|
130
133
|
/>
|
|
131
|
-
<
|
|
134
|
+
<Diamond
|
|
132
135
|
v-else
|
|
133
136
|
class="inline size-3 mr-1"
|
|
134
137
|
/>
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
+
import { Moon, Sun, SunMoon } from "lucide-vue-next";
|
|
3
|
+
import { useSmileColorMode } from "../../../composables/useColorMode";
|
|
2
4
|
const {
|
|
3
5
|
state: _globalColorMode,
|
|
4
6
|
mode: globalColorModeRaw,
|
|
@@ -19,11 +21,11 @@ const {
|
|
|
19
21
|
@click="toggleColorMode"
|
|
20
22
|
>
|
|
21
23
|
<!-- Light mode icon -->
|
|
22
|
-
<
|
|
24
|
+
<Moon v-if="globalColorModeRaw === 'light'" />
|
|
23
25
|
<!-- Dark mode icon -->
|
|
24
|
-
<
|
|
26
|
+
<SunMoon v-else-if="globalColorModeRaw === 'dark'" />
|
|
25
27
|
<!-- System mode icon -->
|
|
26
|
-
<
|
|
28
|
+
<Sun v-else />
|
|
27
29
|
</Button>
|
|
28
30
|
</TooltipTrigger>
|
|
29
31
|
<!-- Tooltip content with dynamic text -->
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
+
import { LogOut } from "lucide-vue-next";
|
|
2
3
|
import { ref, onMounted } from "vue";
|
|
3
4
|
const isLoggedIn = ref(false);
|
|
4
5
|
onMounted(async () => {
|
|
@@ -27,7 +28,7 @@ async function logout() {
|
|
|
27
28
|
variant="outline"
|
|
28
29
|
@click="logout"
|
|
29
30
|
>
|
|
30
|
-
<
|
|
31
|
+
<LogOut />
|
|
31
32
|
</Button>
|
|
32
33
|
</TooltipTrigger>
|
|
33
34
|
<TooltipContent>
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
+
import { Home } from "lucide-vue-next";
|
|
3
|
+
import { navigateTo, useRoute } from "#imports";
|
|
4
|
+
import useAPI from "../../../composables/useAPI";
|
|
2
5
|
const _props = defineProps(["icon"]);
|
|
3
6
|
function goHome() {
|
|
4
|
-
|
|
7
|
+
const route = useRoute();
|
|
8
|
+
if (route.path.startsWith("/dev")) {
|
|
9
|
+
const api = useAPI();
|
|
10
|
+
api.store.dev.mainView = "devmode";
|
|
11
|
+
} else {
|
|
12
|
+
navigateTo("/presentation/");
|
|
13
|
+
}
|
|
5
14
|
}
|
|
6
15
|
</script>
|
|
7
16
|
|
|
@@ -14,7 +23,7 @@ function goHome() {
|
|
|
14
23
|
variant="outline"
|
|
15
24
|
@click="goHome"
|
|
16
25
|
>
|
|
17
|
-
<
|
|
26
|
+
<Home />
|
|
18
27
|
</Button>
|
|
19
28
|
</TooltipTrigger>
|
|
20
29
|
<TooltipContent>
|
|
@@ -1,3 +1,15 @@
|
|
|
1
1
|
declare const _default: typeof __VLS_export;
|
|
2
2
|
export default _default;
|
|
3
|
-
declare const __VLS_export: import("vue").DefineComponent<
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
4
|
+
hideDarkMode: {
|
|
5
|
+
type: BooleanConstructor;
|
|
6
|
+
default: boolean;
|
|
7
|
+
};
|
|
8
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
9
|
+
hideDarkMode: {
|
|
10
|
+
type: BooleanConstructor;
|
|
11
|
+
default: boolean;
|
|
12
|
+
};
|
|
13
|
+
}>> & Readonly<{}>, {
|
|
14
|
+
hideDarkMode: boolean;
|
|
15
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
+
import { Presentation } from "lucide-vue-next";
|
|
2
3
|
import RouteInfoButton from "../navbar/ViewInfoButtonGroup.vue";
|
|
3
4
|
import ResetButton from "./PresentationModeResetButton.vue";
|
|
4
5
|
import QRCodeButton from "./QRCodeButton.vue";
|
|
5
6
|
import DarkModeButton from "./DarkModeButton.vue";
|
|
6
7
|
import LogoutButton from "./LogoutButton.vue";
|
|
8
|
+
defineProps({
|
|
9
|
+
hideDarkMode: { type: Boolean, default: false }
|
|
10
|
+
});
|
|
7
11
|
</script>
|
|
8
12
|
|
|
9
13
|
<template>
|
|
@@ -15,13 +19,13 @@ import LogoutButton from "./LogoutButton.vue";
|
|
|
15
19
|
<!-- Desktop presentation mode label -->
|
|
16
20
|
<div class="hidden sm:block">
|
|
17
21
|
<div class="flex items-center text-xs font-normal">
|
|
18
|
-
<
|
|
22
|
+
<Presentation class="size-4 mr-1" /><b>PRESENTATION MODE</b>
|
|
19
23
|
</div>
|
|
20
24
|
</div>
|
|
21
25
|
<!-- Mobile presentation mode label -->
|
|
22
26
|
<div class="block sm:hidden">
|
|
23
27
|
<div class="flex items-center text-xs font-semibold">
|
|
24
|
-
<
|
|
28
|
+
<Presentation class="size-4 mr-1" /><b>PRES</b>
|
|
25
29
|
</div>
|
|
26
30
|
</div>
|
|
27
31
|
</div>
|
|
@@ -31,7 +35,7 @@ import LogoutButton from "./LogoutButton.vue";
|
|
|
31
35
|
<div class="flex items-center justify-center flex-1 min-w-0 px-2 py-1 rounded">
|
|
32
36
|
<div class="flex items-center space-x-2">
|
|
33
37
|
<!-- Middle content placeholder -->
|
|
34
|
-
<div class="text-xs text-
|
|
38
|
+
<div class="text-xs text-muted-foreground">
|
|
35
39
|
<!-- Middle content placeholder -->
|
|
36
40
|
</div>
|
|
37
41
|
</div>
|
|
@@ -39,14 +43,17 @@ import LogoutButton from "./LogoutButton.vue";
|
|
|
39
43
|
|
|
40
44
|
<!-- Right section - Control buttons -->
|
|
41
45
|
<div class="flex items-center flex-shrink-0 px-1 py-1 rounded">
|
|
42
|
-
<div class="flex items-center space-x-2.5 border-
|
|
46
|
+
<div class="flex items-center space-x-2.5 border-border pl-4 rounded-l">
|
|
43
47
|
<!-- Logout button (only when authenticated) -->
|
|
44
48
|
<div class="flex items-center">
|
|
45
49
|
<LogoutButton />
|
|
46
50
|
</div>
|
|
47
51
|
|
|
48
|
-
<!-- Dark mode toggle button -->
|
|
49
|
-
<div
|
|
52
|
+
<!-- Dark mode toggle button (hidden when embedded in dev layout, sidebar provides one) -->
|
|
53
|
+
<div
|
|
54
|
+
v-if="!hideDarkMode"
|
|
55
|
+
class="flex items-center"
|
|
56
|
+
>
|
|
50
57
|
<DarkModeButton />
|
|
51
58
|
</div>
|
|
52
59
|
|
|
@@ -1,3 +1,15 @@
|
|
|
1
1
|
declare const _default: typeof __VLS_export;
|
|
2
2
|
export default _default;
|
|
3
|
-
declare const __VLS_export: import("vue").DefineComponent<
|
|
3
|
+
declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
4
|
+
hideDarkMode: {
|
|
5
|
+
type: BooleanConstructor;
|
|
6
|
+
default: boolean;
|
|
7
|
+
};
|
|
8
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
9
|
+
hideDarkMode: {
|
|
10
|
+
type: BooleanConstructor;
|
|
11
|
+
default: boolean;
|
|
12
|
+
};
|
|
13
|
+
}>> & Readonly<{}>, {
|
|
14
|
+
hideDarkMode: boolean;
|
|
15
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
+
import { Download, QrCode } from "lucide-vue-next";
|
|
2
3
|
import { computed } from "vue";
|
|
4
|
+
import useAPI from "../../../composables/useAPI";
|
|
3
5
|
const api = useAPI();
|
|
4
6
|
const qrUrl = computed(() => {
|
|
5
7
|
const deployUrl = api.config.deployURL || (import.meta.client ? window.location.origin : "");
|
|
@@ -16,7 +18,7 @@ const qrUrl = computed(() => {
|
|
|
16
18
|
size="menu"
|
|
17
19
|
variant="outline"
|
|
18
20
|
>
|
|
19
|
-
<
|
|
21
|
+
<QrCode />
|
|
20
22
|
</Button>
|
|
21
23
|
</DropdownMenuTrigger>
|
|
22
24
|
<!-- Dropdown content -->
|
|
@@ -55,7 +57,7 @@ const qrUrl = computed(() => {
|
|
|
55
57
|
download="qr.svg"
|
|
56
58
|
class="flex items-center gap-2"
|
|
57
59
|
>
|
|
58
|
-
<
|
|
60
|
+
<Download class="size-3" />
|
|
59
61
|
<span>Download QR</span>
|
|
60
62
|
</a>
|
|
61
63
|
</Button>
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
+
import { CloudUpload, Database, UserMinus } from "lucide-vue-next";
|
|
3
|
+
import useAPI from "../../../composables/useAPI";
|
|
2
4
|
const api = useAPI();
|
|
3
5
|
</script>
|
|
4
6
|
|
|
5
7
|
<template>
|
|
6
8
|
<!-- App progress stepper panel -->
|
|
7
|
-
<Stepper class="flex w-full items-start gap-2 my-0 pt-4 pb-2 border-t border-
|
|
9
|
+
<Stepper class="flex w-full items-start gap-2 my-0 pt-4 pb-2 border-t border-dev-lines">
|
|
8
10
|
<!-- Step 1: User known/unknown -->
|
|
9
11
|
<StepperItem
|
|
10
12
|
class="relative flex w-full flex-col items-center justify-center"
|
|
@@ -12,23 +14,23 @@ const api = useAPI();
|
|
|
12
14
|
>
|
|
13
15
|
<StepperSeparator
|
|
14
16
|
class="absolute left-[calc(50%+20px)] right-[calc(-50%+10px)] top-5 block h-0.5 shrink-0 rounded-full bg-muted"
|
|
15
|
-
:class="[api.store.cookieState.knownUser ? 'bg-green-
|
|
17
|
+
:class="[api.store.cookieState.knownUser ? 'bg-status-green-fill' : '']"
|
|
16
18
|
/>
|
|
17
19
|
|
|
18
20
|
<StepperTrigger as-child>
|
|
19
21
|
<div
|
|
20
22
|
class="z-10 rounded-full shrink-0 p-3"
|
|
21
|
-
:class="[api.store.cookieState.knownUser ? 'bg-green-
|
|
23
|
+
:class="[api.store.cookieState.knownUser ? 'bg-status-green-bg' : 'bg-muted']"
|
|
22
24
|
>
|
|
23
|
-
<
|
|
24
|
-
:class="[api.store.cookieState.knownUser ? 'text-green-
|
|
25
|
+
<UserMinus
|
|
26
|
+
:class="[api.store.cookieState.knownUser ? 'text-status-green-text' : 'text-muted-foreground']"
|
|
25
27
|
/>
|
|
26
28
|
</div>
|
|
27
29
|
</StepperTrigger>
|
|
28
30
|
|
|
29
31
|
<div class="flex flex-col items-center text-center">
|
|
30
32
|
<StepperDescription
|
|
31
|
-
:class="[api.store.cookieState.knownUser ? 'text-green-
|
|
33
|
+
:class="[api.store.cookieState.knownUser ? 'text-status-green-text' : 'text-muted-foreground']"
|
|
32
34
|
class="text-[0.6rem] text-muted-foreground transition font-mono"
|
|
33
35
|
>
|
|
34
36
|
{{ api.store.cookieState.knownUser ? 'Known user' : 'Unknown user' }}
|
|
@@ -45,26 +47,26 @@ const api = useAPI();
|
|
|
45
47
|
class="absolute left-[calc(50%+20px)] right-[calc(-50%+10px)] top-5 block h-0.5 shrink-0 rounded-full bg-muted"
|
|
46
48
|
:class="[
|
|
47
49
|
api.store.browserEphemeral.dataLoaded && !api.store.browserEphemeral.unsavedChanges
|
|
48
|
-
? 'bg-green-
|
|
50
|
+
? 'bg-status-green-fill'
|
|
49
51
|
: api.store.browserEphemeral.dataLoaded && api.store.browserEphemeral.unsavedChanges
|
|
50
|
-
? 'bg-yellow-
|
|
51
|
-
: '
|
|
52
|
+
? 'bg-status-yellow-fill'
|
|
53
|
+
: '',
|
|
52
54
|
]"
|
|
53
55
|
/>
|
|
54
56
|
|
|
55
57
|
<StepperTrigger as-child>
|
|
56
58
|
<div
|
|
57
59
|
class="z-10 rounded-full shrink-0 p-3 cursor-pointer"
|
|
58
|
-
:class="[api.store.browserEphemeral.dataLoaded ? 'bg-green-
|
|
60
|
+
:class="[api.store.browserEphemeral.dataLoaded ? 'bg-status-green-bg' : 'bg-muted']"
|
|
59
61
|
@click="api.connectDB()"
|
|
60
62
|
>
|
|
61
|
-
<
|
|
63
|
+
<Database :class="[api.store.browserEphemeral.dataLoaded ? 'text-status-green-text' : 'text-muted-foreground']" />
|
|
62
64
|
</div>
|
|
63
65
|
</StepperTrigger>
|
|
64
66
|
|
|
65
67
|
<div class="flex flex-col items-center text-center">
|
|
66
68
|
<StepperDescription
|
|
67
|
-
:class="[api.store.browserEphemeral.dataLoaded ? 'text-green-
|
|
69
|
+
:class="[api.store.browserEphemeral.dataLoaded ? 'text-status-green-text' : 'text-muted-foreground']"
|
|
68
70
|
class="text-[0.6rem] text-muted-foreground transition font-mono"
|
|
69
71
|
>
|
|
70
72
|
{{ api.store.browserEphemeral.dataLoaded ? 'Record created' : 'No record yet' }}
|
|
@@ -82,19 +84,19 @@ const api = useAPI();
|
|
|
82
84
|
class="z-10 rounded-full shrink-0 p-3"
|
|
83
85
|
:class="[
|
|
84
86
|
api.store.browserEphemeral.dataLoaded && !api.store.browserEphemeral.unsavedChanges
|
|
85
|
-
? 'bg-green-
|
|
87
|
+
? 'bg-status-green-bg'
|
|
86
88
|
: api.store.browserEphemeral.dataLoaded && api.store.browserEphemeral.unsavedChanges
|
|
87
|
-
? 'bg-
|
|
89
|
+
? 'bg-status-yellow-bg'
|
|
88
90
|
: 'bg-muted',
|
|
89
91
|
]"
|
|
90
92
|
>
|
|
91
|
-
<
|
|
93
|
+
<CloudUpload
|
|
92
94
|
:class="[
|
|
93
95
|
api.store.browserEphemeral.dataLoaded && !api.store.browserEphemeral.unsavedChanges
|
|
94
|
-
? 'text-green-
|
|
96
|
+
? 'text-status-green-text'
|
|
95
97
|
: api.store.browserEphemeral.dataLoaded && api.store.browserEphemeral.unsavedChanges
|
|
96
|
-
? 'text-yellow-
|
|
97
|
-
: 'text-
|
|
98
|
+
? 'text-status-yellow-text'
|
|
99
|
+
: 'text-muted-foreground',
|
|
98
100
|
]"
|
|
99
101
|
/>
|
|
100
102
|
</div>
|
|
@@ -104,10 +106,10 @@ const api = useAPI();
|
|
|
104
106
|
<StepperDescription
|
|
105
107
|
:class="[
|
|
106
108
|
api.store.browserEphemeral.dataLoaded && !api.store.browserEphemeral.unsavedChanges
|
|
107
|
-
? 'text-green-
|
|
109
|
+
? 'text-status-green-text'
|
|
108
110
|
: api.store.browserEphemeral.dataLoaded && api.store.browserEphemeral.unsavedChanges
|
|
109
|
-
? 'text-red-
|
|
110
|
-
: 'text-
|
|
111
|
+
? 'text-status-red-text'
|
|
112
|
+
: 'text-muted-foreground',
|
|
111
113
|
]"
|
|
112
114
|
class="text-[0.6rem] text-muted-foreground transition font-mono"
|
|
113
115
|
>
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { computed } from "vue";
|
|
3
|
+
import useAPI from "../../../composables/useAPI";
|
|
4
|
+
import { useSmileColorMode } from "../../../composables/useColorMode";
|
|
3
5
|
const api = useAPI();
|
|
4
6
|
const { system, mode: experimentColorMode } = useSmileColorMode("experiment");
|
|
5
7
|
const colorModeSelect = computed({
|
|
@@ -29,7 +31,7 @@ const colorModeDisplayText = computed(() => {
|
|
|
29
31
|
<table class="w-full">
|
|
30
32
|
<tbody>
|
|
31
33
|
<!-- Consent, Known, Done, Withdrew, Viz toggles -->
|
|
32
|
-
<tr class="table-row-base">
|
|
34
|
+
<tr class="table-row-base ">
|
|
33
35
|
<td
|
|
34
36
|
class="table-cell-base table-cell-left table-cell-small font-mono"
|
|
35
37
|
colspan="4"
|
|
@@ -84,11 +86,11 @@ const colorModeDisplayText = computed(() => {
|
|
|
84
86
|
</td>
|
|
85
87
|
</tr>
|
|
86
88
|
<!-- Window size and aggressive mode -->
|
|
87
|
-
<tr class="table-row-base table-row-base-bottom">
|
|
89
|
+
<tr class="table-row-base table-row-base-bottom ">
|
|
88
90
|
<td
|
|
89
91
|
class="table-cell-base table-cell-left table-cell-small font-mono"
|
|
90
92
|
:class="{
|
|
91
|
-
'bg-
|
|
93
|
+
'bg-danger-button-light text-danger-button-light-foreground': api.store.browserEphemeral.tooSmall,
|
|
92
94
|
}"
|
|
93
95
|
colspan="4"
|
|
94
96
|
>
|
|
@@ -124,7 +126,7 @@ const colorModeDisplayText = computed(() => {
|
|
|
124
126
|
</td>
|
|
125
127
|
</tr>
|
|
126
128
|
<!-- Responsive UI and color mode -->
|
|
127
|
-
<tr class="table-row-base table-row-base-bottom">
|
|
129
|
+
<tr class="table-row-base table-row-base-bottom ">
|
|
128
130
|
<td
|
|
129
131
|
class="table-cell-base table-cell-left table-cell-small font-mono"
|
|
130
132
|
colspan="4"
|
|
@@ -215,5 +217,5 @@ const colorModeDisplayText = computed(() => {
|
|
|
215
217
|
</template>
|
|
216
218
|
|
|
217
219
|
<style scoped>
|
|
218
|
-
.table-cell-small{font-size:.6em}table{border-collapse:collapse;border-spacing:0}td{border:none;padding:.5rem .85rem}
|
|
220
|
+
.table-cell-small{font-size:.6em}table{border-collapse:collapse;border-spacing:0}td{border:none;border-bottom:1px solid var(--dev-lines);padding:.5rem .85rem}tr:last-child td{border-bottom:none}
|
|
219
221
|
</style>
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { computed, ref, onMounted, onBeforeUnmount } from "vue";
|
|
3
|
+
import useAPI from "../../../composables/useAPI";
|
|
3
4
|
const api = useAPI();
|
|
5
|
+
const dbInfo = ref(null);
|
|
6
|
+
if (import.meta.client) {
|
|
7
|
+
fetch("/api/db-info").then((r) => r.json()).then((data) => {
|
|
8
|
+
dbInfo.value = data;
|
|
9
|
+
}).catch(() => {
|
|
10
|
+
});
|
|
11
|
+
}
|
|
4
12
|
const timer = ref(null);
|
|
5
13
|
const _sync_state = computed(() => {
|
|
6
14
|
if (api.store.browserEphemeral.unsavedChanges && api.store.browserEphemeral.dataLoaded) {
|
|
@@ -47,8 +55,20 @@ onBeforeUnmount(() => {
|
|
|
47
55
|
<!-- Database status info panel -->
|
|
48
56
|
<table class="w-full text-sm table-border-top">
|
|
49
57
|
<tbody>
|
|
58
|
+
<!-- Database row -->
|
|
59
|
+
<tr
|
|
60
|
+
v-if="dbInfo"
|
|
61
|
+
class="table-row-base table-row-even hidden sm:table-row"
|
|
62
|
+
>
|
|
63
|
+
<td class="table-cell-base table-cell-left table-cell-small">
|
|
64
|
+
<b>Database:</b>
|
|
65
|
+
</td>
|
|
66
|
+
<td class="table-cell-base table-cell-left table-cell-mono table-cell-small">
|
|
67
|
+
{{ dbInfo.type }} <span class="text-muted-foreground">{{ dbInfo.url }}</span>
|
|
68
|
+
</td>
|
|
69
|
+
</tr>
|
|
50
70
|
<!-- Last route row -->
|
|
51
|
-
<tr class="table-row-base table-row-
|
|
71
|
+
<tr class="table-row-base table-row-odd hidden sm:table-row">
|
|
52
72
|
<td class="table-cell-base table-cell-left table-cell-small">
|
|
53
73
|
<b>Last route:</b>
|
|
54
74
|
</td>
|
|
@@ -57,7 +77,7 @@ onBeforeUnmount(() => {
|
|
|
57
77
|
</td>
|
|
58
78
|
</tr>
|
|
59
79
|
<!-- Mode row -->
|
|
60
|
-
<tr class="table-row-base table-row-
|
|
80
|
+
<tr class="table-row-base table-row-even hidden sm:table-row">
|
|
61
81
|
<td class="table-cell-base table-cell-left table-cell-small">
|
|
62
82
|
<b>Mode:</b>
|
|
63
83
|
</td>
|
|
@@ -66,7 +86,7 @@ onBeforeUnmount(() => {
|
|
|
66
86
|
</td>
|
|
67
87
|
</tr>
|
|
68
88
|
<!-- DocRef row -->
|
|
69
|
-
<tr class="table-row-base table-row-
|
|
89
|
+
<tr class="table-row-base table-row-odd">
|
|
70
90
|
<td class="table-cell-base table-cell-left table-cell-small">
|
|
71
91
|
<b>DocRef:</b>
|
|
72
92
|
</td>
|
|
@@ -75,7 +95,7 @@ onBeforeUnmount(() => {
|
|
|
75
95
|
</td>
|
|
76
96
|
</tr>
|
|
77
97
|
<!-- Writes row -->
|
|
78
|
-
<tr class="table-row-base table-row-
|
|
98
|
+
<tr class="table-row-base table-row-even hidden sm:table-row">
|
|
79
99
|
<td class="table-cell-base table-cell-left table-cell-small">
|
|
80
100
|
<b>Writes:</b>
|
|
81
101
|
</td>
|
|
@@ -84,7 +104,7 @@ onBeforeUnmount(() => {
|
|
|
84
104
|
</td>
|
|
85
105
|
</tr>
|
|
86
106
|
<!-- Last write row -->
|
|
87
|
-
<tr class="table-row-base table-row-
|
|
107
|
+
<tr class="table-row-base table-row-odd hidden sm:table-row">
|
|
88
108
|
<td class="table-cell-base table-cell-left table-cell-small">
|
|
89
109
|
<b>Last save:</b>
|
|
90
110
|
</td>
|
|
@@ -93,7 +113,7 @@ onBeforeUnmount(() => {
|
|
|
93
113
|
</td>
|
|
94
114
|
</tr>
|
|
95
115
|
<!-- Auto save row -->
|
|
96
|
-
<tr class="table-row-base table-row-
|
|
116
|
+
<tr class="table-row-base table-row-even hidden sm:table-row">
|
|
97
117
|
<td class="table-cell-base table-cell-left table-cell-small">
|
|
98
118
|
<b>Auto save:</b>
|
|
99
119
|
</td>
|
|
@@ -102,7 +122,7 @@ onBeforeUnmount(() => {
|
|
|
102
122
|
</td>
|
|
103
123
|
</tr>
|
|
104
124
|
<!-- Size row -->
|
|
105
|
-
<tr class="table-row-base table-row-
|
|
125
|
+
<tr class="table-row-base table-row-odd hidden sm:table-row table-border-bottom">
|
|
106
126
|
<td class="table-cell-base table-cell-left table-cell-small">
|
|
107
127
|
<b>Size:</b>
|
|
108
128
|
</td>
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { ref, watch } from "vue";
|
|
3
|
+
import useSmileStore from "../../../stores/smilestore";
|
|
4
|
+
import useAPI from "../../../composables/useAPI";
|
|
3
5
|
const api = useAPI();
|
|
4
6
|
const smilestore = useSmileStore();
|
|
5
7
|
const seed = ref(smilestore.getSeedID);
|
|
@@ -22,7 +24,9 @@ watch(
|
|
|
22
24
|
}
|
|
23
25
|
);
|
|
24
26
|
const getBranchType = (index, total) => {
|
|
25
|
-
if (
|
|
27
|
+
if (total === 1) {
|
|
28
|
+
return "\u2500\u2500 ";
|
|
29
|
+
} else if (index === 0) {
|
|
26
30
|
return "\u250C\u2500 ";
|
|
27
31
|
} else if (index === total - 1) {
|
|
28
32
|
return "\u2514\u2500 ";
|
|
@@ -38,13 +42,13 @@ const getBranchType = (index, total) => {
|
|
|
38
42
|
<div class="h-fit p-0 m-0">
|
|
39
43
|
<!-- Random seed section header -->
|
|
40
44
|
<div
|
|
41
|
-
class="text-xs text-muted-foreground font-mono text-left bg-muted px-2 py-1.5 m-0 border-t border-b border-
|
|
45
|
+
class="text-xs text-muted-foreground font-mono text-left bg-muted px-2 py-1.5 m-0 border-t border-b border-dev-lines"
|
|
42
46
|
>
|
|
43
47
|
Random seed
|
|
44
48
|
</div>
|
|
45
49
|
|
|
46
50
|
<!-- Random seed configuration section -->
|
|
47
|
-
<div class="bg-background pb-5 border-b border-
|
|
51
|
+
<div class="bg-background pb-5 border-b border-dev-lines">
|
|
48
52
|
<div class="text-xs m-2">
|
|
49
53
|
Toggle to use a fixed seed (off means uses the current time as seed). A specific seed can be set in the input
|
|
50
54
|
field. Press the arrow to reload the view with the new seed.
|
|
@@ -100,7 +104,7 @@ const getBranchType = (index, total) => {
|
|
|
100
104
|
>
|
|
101
105
|
<!-- Random variables header -->
|
|
102
106
|
<div
|
|
103
|
-
class="text-xs text-left font-mono bg-muted text-muted-foreground px-2 py-1.5 m-0 border-t border-b border-
|
|
107
|
+
class="text-xs text-left font-mono bg-muted text-muted-foreground px-2 py-1.5 m-0 border-t border-b border-dev-lines"
|
|
104
108
|
>
|
|
105
109
|
Random Variables
|
|
106
110
|
</div>
|
|
@@ -120,7 +124,7 @@ const getBranchType = (index, total) => {
|
|
|
120
124
|
:key="key"
|
|
121
125
|
>
|
|
122
126
|
<li class="flex items-center mb-0 ml-0.5 mt-1">
|
|
123
|
-
<span class="font-mono text-sm text-
|
|
127
|
+
<span class="font-mono text-sm text-muted-foreground whitespace-pre mr-0">{{
|
|
124
128
|
getBranchType(index, Object.keys(smilestore.localState.possibleConditions).length)
|
|
125
129
|
}}</span>
|
|
126
130
|
<Select
|
|
@@ -5,6 +5,7 @@ import DatabaseStatusInfoPanel from "./DatabaseStatusInfoPanel.vue";
|
|
|
5
5
|
import RandomizationSidebarPanel from "./RandomizationSidebarPanel.vue";
|
|
6
6
|
import StudyInfoPanel from "./StudyInfoPanel.vue";
|
|
7
7
|
import AppProgressPanel from "./AppProgressPanel.vue";
|
|
8
|
+
import useAPI from "../../../composables/useAPI";
|
|
8
9
|
const api = useAPI();
|
|
9
10
|
</script>
|
|
10
11
|
|
|
@@ -15,7 +16,7 @@ const api = useAPI();
|
|
|
15
16
|
<div class="sidebar-content">
|
|
16
17
|
<Tabs
|
|
17
18
|
v-model="api.store.dev.sideBarTab"
|
|
18
|
-
class="w-full
|
|
19
|
+
class="w-full py-2"
|
|
19
20
|
>
|
|
20
21
|
<!-- Tab navigation -->
|
|
21
22
|
<TabsList class="mx-auto text-xs">
|
|
@@ -58,13 +59,19 @@ const api = useAPI();
|
|
|
58
59
|
|
|
59
60
|
<!-- Footer panels -->
|
|
60
61
|
<div class="sidebar-footer">
|
|
61
|
-
<
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
<div class="border-t border-dev-lines">
|
|
63
|
+
<ConfigurationVariablesPanel />
|
|
64
|
+
</div>
|
|
65
|
+
<div>
|
|
66
|
+
<AppProgressPanel />
|
|
67
|
+
</div>
|
|
68
|
+
<div class="border-t border-dev-lines">
|
|
69
|
+
<StudyInfoPanel />
|
|
70
|
+
</div>
|
|
64
71
|
</div>
|
|
65
72
|
</div>
|
|
66
73
|
</template>
|
|
67
74
|
|
|
68
75
|
<style scoped>
|
|
69
|
-
.sidebar-container{display:flex;flex-direction:column;height:100%;max-height:100%}.sidebar-content{flex:1;overflow-y:auto}.sidebar-footer{margin-top:auto
|
|
76
|
+
.sidebar-container{display:flex;flex-direction:column;height:100%;max-height:100%}.sidebar-content{flex:1;overflow-y:auto}.sidebar-footer{margin-top:auto}
|
|
70
77
|
</style>
|
|
@@ -11,12 +11,12 @@ export type Props = {
|
|
|
11
11
|
};
|
|
12
12
|
declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
13
13
|
data: {
|
|
14
|
-
type: (
|
|
14
|
+
type: (NumberConstructor | StringConstructor | ObjectConstructor | ArrayConstructor | BooleanConstructor | null)[];
|
|
15
15
|
required: true;
|
|
16
16
|
};
|
|
17
17
|
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
18
18
|
data: {
|
|
19
|
-
type: (
|
|
19
|
+
type: (NumberConstructor | StringConstructor | ObjectConstructor | ArrayConstructor | BooleanConstructor | null)[];
|
|
20
20
|
required: true;
|
|
21
21
|
};
|
|
22
22
|
}>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -78,5 +78,5 @@ const isSinglePrimitive = (value) => {
|
|
|
78
78
|
</template>
|
|
79
79
|
|
|
80
80
|
<style scoped>
|
|
81
|
-
.data-path-viewer{font-family:monospace;font-size:.7rem;line-height:1.4}.data-node{margin:2px 0}.node-content{cursor:pointer;padding:2px 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.node-content:hover{background-color
|
|
81
|
+
.data-path-viewer{font-family:monospace;font-size:.7rem;line-height:1.4}.data-node{margin:2px 0}.node-content{cursor:pointer;padding:2px 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.node-content:hover{background-color:var(--muted)}.expand-icon{color:var(--muted-foreground);display:inline-block;width:16px}.key{color:var(--data-key-color);margin-right:4px}.preview{color:var(--muted-foreground);font-style:italic}.primitive-value{color:var(--data-value-color)}.nested-content{border-left:1px dotted var(--border);padding-left:20px}
|
|
82
82
|
</style>
|