@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.
Files changed (310) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/module.mjs +109 -21
  3. package/dist/runtime/components/builtins/AdvertisementView.d.vue.ts +13 -1
  4. package/dist/runtime/components/builtins/AdvertisementView.vue +7 -3
  5. package/dist/runtime/components/builtins/AdvertisementView.vue.d.ts +13 -1
  6. package/dist/runtime/components/builtins/DebriefView.vue +3 -1
  7. package/dist/runtime/components/builtins/DemographicSurveyView.vue +8 -6
  8. package/dist/runtime/components/builtins/DeviceSurveyView.vue +5 -3
  9. package/dist/runtime/components/builtins/ExpView.vue +4 -2
  10. package/dist/runtime/components/builtins/ExperimentStatusBar.vue +3 -0
  11. package/dist/runtime/components/builtins/FavoriteColor.vue +3 -1
  12. package/dist/runtime/components/builtins/FavoriteNumber.vue +3 -1
  13. package/dist/runtime/components/builtins/InformedConsentModal.vue +5 -3
  14. package/dist/runtime/components/builtins/InformedConsentView.vue +3 -2
  15. package/dist/runtime/components/builtins/InstructionsQuiz.vue +7 -5
  16. package/dist/runtime/components/builtins/InstructionsView.vue +5 -3
  17. package/dist/runtime/components/builtins/LocalDevBanner.vue +16 -0
  18. package/dist/runtime/components/builtins/MTurkRecruitView.vue +4 -3
  19. package/dist/runtime/components/builtins/PresentationModeView.vue +9 -8
  20. package/dist/runtime/components/builtins/StatusBar.vue +7 -4
  21. package/dist/runtime/components/builtins/StudyPreviewText.vue +12 -10
  22. package/dist/runtime/components/builtins/TaskFeedbackSurveyView.vue +3 -1
  23. package/dist/runtime/components/builtins/ThanksView.vue +22 -21
  24. package/dist/runtime/components/builtins/WindowSizerView.vue +5 -3
  25. package/dist/runtime/components/builtins/WithdrawModal.vue +9 -7
  26. package/dist/runtime/components/builtins/WithdrawView.vue +4 -2
  27. package/dist/runtime/components/dev/RecruitmentChooserView.vue +532 -224
  28. package/dist/runtime/components/dev/ResponsiveDeviceContainer.vue +17 -8
  29. package/dist/runtime/components/dev/SmileDevPresentationView.vue +83 -0
  30. package/dist/runtime/components/dev/console/ConfigList.vue +14 -11
  31. package/dist/runtime/components/dev/console/ConsoleConfigPanel.vue +28 -7
  32. package/dist/runtime/components/dev/console/ConsoleDatabaseBrowsePanel.vue +6 -4
  33. package/dist/runtime/components/dev/console/ConsoleLogPanel.vue +68 -23
  34. package/dist/runtime/components/dev/console/DatabaseList.vue +9 -7
  35. package/dist/runtime/components/dev/console/SmileDevConsole.vue +7 -5
  36. package/dist/runtime/components/dev/devicePresets.d.ts +4 -4
  37. package/dist/runtime/components/dev/devicePresets.js +4 -4
  38. package/dist/runtime/components/dev/menu/DevConfigPanel.vue +3 -1
  39. package/dist/runtime/components/dev/menu/ResponsiveDeviceSelect.vue +1 -0
  40. package/dist/runtime/components/dev/menu/SmileDevAppMenu.vue +27 -24
  41. package/dist/runtime/components/dev/navbar/ColorModeButton.vue +5 -3
  42. package/dist/runtime/components/dev/navbar/DatabaseButtonGroup.vue +8 -6
  43. package/dist/runtime/components/dev/navbar/FullScreenButton.vue +4 -2
  44. package/dist/runtime/components/dev/navbar/KeyCommandNotification.vue +1 -1
  45. package/dist/runtime/components/dev/navbar/PanelButtonGroup.d.vue.ts +3 -0
  46. package/dist/runtime/components/dev/navbar/PanelButtonGroup.vue +79 -0
  47. package/dist/runtime/components/dev/navbar/PanelButtonGroup.vue.d.ts +3 -0
  48. package/dist/runtime/components/dev/navbar/ReloadButton.vue +3 -1
  49. package/dist/runtime/components/dev/navbar/ResetButton.vue +3 -1
  50. package/dist/runtime/components/dev/navbar/RouteJumper.vue +9 -5
  51. package/dist/runtime/components/dev/navbar/SmileDevNavBar.vue +19 -27
  52. package/dist/runtime/components/dev/navbar/StepInfoButtonGroup.vue +5 -3
  53. package/dist/runtime/components/dev/navbar/ViewInfoButtonGroup.vue +13 -10
  54. package/dist/runtime/components/dev/presentation/DarkModeButton.vue +5 -3
  55. package/dist/runtime/components/dev/presentation/LogoutButton.vue +2 -1
  56. package/dist/runtime/components/dev/presentation/PresentationModeResetButton.vue +11 -2
  57. package/dist/runtime/components/dev/presentation/PresentationNavBar.d.vue.ts +13 -1
  58. package/dist/runtime/components/dev/presentation/PresentationNavBar.vue +13 -6
  59. package/dist/runtime/components/dev/presentation/PresentationNavBar.vue.d.ts +13 -1
  60. package/dist/runtime/components/dev/presentation/QRCodeButton.vue +4 -2
  61. package/dist/runtime/components/dev/sidebar/AppProgressPanel.vue +23 -21
  62. package/dist/runtime/components/dev/sidebar/ConfigurationVariablesPanel.vue +7 -5
  63. package/dist/runtime/components/dev/sidebar/DatabaseStatusInfoPanel.vue +27 -7
  64. package/dist/runtime/components/dev/sidebar/RandomizationSidebarPanel.vue +9 -5
  65. package/dist/runtime/components/dev/sidebar/SmileDevSideBar.vue +12 -5
  66. package/dist/runtime/components/dev/sidebar/StepDataViewer.d.vue.ts +2 -2
  67. package/dist/runtime/components/dev/sidebar/StepDataViewer.vue +1 -1
  68. package/dist/runtime/components/dev/sidebar/StepDataViewer.vue.d.ts +2 -2
  69. package/dist/runtime/components/dev/sidebar/StepExplorerPanel.vue +13 -8
  70. package/dist/runtime/components/dev/sidebar/StepNode.vue +7 -5
  71. package/dist/runtime/components/dev/sidebar/StudyInfoPanel.vue +3 -2
  72. package/dist/runtime/components/forms/MonthYearDayPicker.vue +1 -0
  73. package/dist/runtime/components/layouts/ConstrainedPage.d.vue.ts +1 -1
  74. package/dist/runtime/components/layouts/ConstrainedPage.vue.d.ts +1 -1
  75. package/dist/runtime/components/layouts/ConstrainedTaskWindow.d.vue.ts +2 -2
  76. package/dist/runtime/components/layouts/ConstrainedTaskWindow.vue +1 -1
  77. package/dist/runtime/components/layouts/ConstrainedTaskWindow.vue.d.ts +2 -2
  78. package/dist/runtime/components/layouts/TitleTwoCol.d.vue.ts +1 -1
  79. package/dist/runtime/components/layouts/TitleTwoCol.vue.d.ts +1 -1
  80. package/dist/runtime/components/layouts/TwoCol.d.vue.ts +1 -1
  81. package/dist/runtime/components/layouts/TwoCol.vue.d.ts +1 -1
  82. package/dist/runtime/components/ui/avatar/Avatar.vue +1 -0
  83. package/dist/runtime/components/ui/avatar/AvatarFallback.vue +1 -0
  84. package/dist/runtime/components/ui/badge/Badge.vue +1 -0
  85. package/dist/runtime/components/ui/badge/index.d.ts +1 -1
  86. package/dist/runtime/components/ui/breadcrumb/BreadcrumbEllipsis.vue +1 -0
  87. package/dist/runtime/components/ui/breadcrumb/BreadcrumbItem.vue +1 -0
  88. package/dist/runtime/components/ui/breadcrumb/BreadcrumbLink.vue +1 -0
  89. package/dist/runtime/components/ui/breadcrumb/BreadcrumbList.vue +1 -0
  90. package/dist/runtime/components/ui/breadcrumb/BreadcrumbPage.vue +1 -0
  91. package/dist/runtime/components/ui/breadcrumb/BreadcrumbSeparator.vue +1 -0
  92. package/dist/runtime/components/ui/button/Button.vue +1 -0
  93. package/dist/runtime/components/ui/button/index.d.ts +2 -2
  94. package/dist/runtime/components/ui/button-group/ButtonGroup.vue +1 -0
  95. package/dist/runtime/components/ui/button-group/ButtonGroupItem.vue +1 -0
  96. package/dist/runtime/components/ui/calendar/Calendar.vue +1 -0
  97. package/dist/runtime/components/ui/calendar/CalendarCell.vue +1 -0
  98. package/dist/runtime/components/ui/calendar/CalendarCellTrigger.vue +1 -0
  99. package/dist/runtime/components/ui/calendar/CalendarGrid.vue +1 -0
  100. package/dist/runtime/components/ui/calendar/CalendarGridRow.vue +1 -0
  101. package/dist/runtime/components/ui/calendar/CalendarHeadCell.vue +1 -0
  102. package/dist/runtime/components/ui/calendar/CalendarHeader.vue +1 -0
  103. package/dist/runtime/components/ui/calendar/CalendarHeading.vue +1 -0
  104. package/dist/runtime/components/ui/calendar/CalendarNextButton.vue +1 -0
  105. package/dist/runtime/components/ui/calendar/CalendarPrevButton.vue +1 -0
  106. package/dist/runtime/components/ui/card/Card.vue +1 -0
  107. package/dist/runtime/components/ui/card/CardAction.vue +1 -0
  108. package/dist/runtime/components/ui/card/CardContent.vue +1 -0
  109. package/dist/runtime/components/ui/card/CardDescription.vue +1 -0
  110. package/dist/runtime/components/ui/card/CardFooter.vue +1 -0
  111. package/dist/runtime/components/ui/card/CardHeader.vue +1 -0
  112. package/dist/runtime/components/ui/card/CardTitle.vue +1 -0
  113. package/dist/runtime/components/ui/checkbox/Checkbox.d.vue.ts +6 -6
  114. package/dist/runtime/components/ui/checkbox/Checkbox.vue +1 -0
  115. package/dist/runtime/components/ui/checkbox/Checkbox.vue.d.ts +6 -6
  116. package/dist/runtime/components/ui/checkbox/index.d.ts +2 -2
  117. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuCheckboxItem.d.vue.ts +4 -4
  118. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +1 -0
  119. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue.d.ts +4 -4
  120. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuContent.d.vue.ts +3 -3
  121. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuContent.vue +1 -0
  122. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +3 -3
  123. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuItem.d.vue.ts +1 -1
  124. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuItem.vue +1 -0
  125. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuItem.vue.d.ts +1 -1
  126. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuLabel.vue +1 -0
  127. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +1 -0
  128. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSeparator.vue +1 -0
  129. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuShortcut.vue +1 -0
  130. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubContent.d.vue.ts +3 -3
  131. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubContent.vue +1 -0
  132. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +3 -3
  133. package/dist/runtime/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +1 -0
  134. package/dist/runtime/components/ui/input/Input.d.vue.ts +4 -4
  135. package/dist/runtime/components/ui/input/Input.vue +1 -0
  136. package/dist/runtime/components/ui/input/Input.vue.d.ts +4 -4
  137. package/dist/runtime/components/ui/label/Label.vue +1 -0
  138. package/dist/runtime/components/ui/multiselect/MultiSelect.d.vue.ts +1 -1
  139. package/dist/runtime/components/ui/multiselect/MultiSelect.vue +1 -0
  140. package/dist/runtime/components/ui/multiselect/MultiSelect.vue.d.ts +1 -1
  141. package/dist/runtime/components/ui/pagination/Pagination.vue +1 -0
  142. package/dist/runtime/components/ui/pagination/PaginationContent.vue +1 -0
  143. package/dist/runtime/components/ui/pagination/PaginationEllipsis.vue +1 -0
  144. package/dist/runtime/components/ui/pagination/PaginationFirst.vue +1 -0
  145. package/dist/runtime/components/ui/pagination/PaginationItem.vue +1 -0
  146. package/dist/runtime/components/ui/pagination/PaginationLast.vue +1 -0
  147. package/dist/runtime/components/ui/pagination/PaginationNext.vue +1 -0
  148. package/dist/runtime/components/ui/pagination/PaginationPrevious.vue +1 -0
  149. package/dist/runtime/components/ui/popover/PopoverContent.d.vue.ts +2 -2
  150. package/dist/runtime/components/ui/popover/PopoverContent.vue +1 -0
  151. package/dist/runtime/components/ui/popover/PopoverContent.vue.d.ts +2 -2
  152. package/dist/runtime/components/ui/progress/Progress.vue +1 -0
  153. package/dist/runtime/components/ui/resizable/ResizableHandle.vue +1 -0
  154. package/dist/runtime/components/ui/resizable/ResizablePanel.d.vue.ts +1 -1
  155. package/dist/runtime/components/ui/resizable/ResizablePanel.vue.d.ts +1 -1
  156. package/dist/runtime/components/ui/resizable/ResizablePanelGroup.vue +1 -0
  157. package/dist/runtime/components/ui/select/Select.d.vue.ts +1 -1
  158. package/dist/runtime/components/ui/select/Select.vue.d.ts +1 -1
  159. package/dist/runtime/components/ui/select/SelectContent.d.vue.ts +2 -2
  160. package/dist/runtime/components/ui/select/SelectContent.vue +1 -0
  161. package/dist/runtime/components/ui/select/SelectContent.vue.d.ts +2 -2
  162. package/dist/runtime/components/ui/select/SelectItem.vue +1 -0
  163. package/dist/runtime/components/ui/select/SelectLabel.vue +1 -0
  164. package/dist/runtime/components/ui/select/SelectScrollDownButton.vue +1 -0
  165. package/dist/runtime/components/ui/select/SelectScrollUpButton.vue +1 -0
  166. package/dist/runtime/components/ui/select/SelectSeparator.vue +1 -0
  167. package/dist/runtime/components/ui/select/SelectTrigger.vue +1 -0
  168. package/dist/runtime/components/ui/separator/Separator.vue +1 -0
  169. package/dist/runtime/components/ui/sheet/SheetContent.d.vue.ts +1 -1
  170. package/dist/runtime/components/ui/sheet/SheetContent.vue +1 -0
  171. package/dist/runtime/components/ui/sheet/SheetContent.vue.d.ts +1 -1
  172. package/dist/runtime/components/ui/sheet/SheetDescription.vue +1 -0
  173. package/dist/runtime/components/ui/sheet/SheetFooter.vue +1 -0
  174. package/dist/runtime/components/ui/sheet/SheetHeader.vue +1 -0
  175. package/dist/runtime/components/ui/sheet/SheetOverlay.vue +1 -0
  176. package/dist/runtime/components/ui/sheet/SheetTitle.vue +1 -0
  177. package/dist/runtime/components/ui/sidebar/Sidebar.d.vue.ts +1 -1
  178. package/dist/runtime/components/ui/sidebar/Sidebar.vue +1 -0
  179. package/dist/runtime/components/ui/sidebar/Sidebar.vue.d.ts +1 -1
  180. package/dist/runtime/components/ui/sidebar/SidebarContent.vue +1 -0
  181. package/dist/runtime/components/ui/sidebar/SidebarFooter.vue +1 -0
  182. package/dist/runtime/components/ui/sidebar/SidebarGroup.vue +1 -0
  183. package/dist/runtime/components/ui/sidebar/SidebarGroupAction.vue +1 -0
  184. package/dist/runtime/components/ui/sidebar/SidebarGroupContent.vue +1 -0
  185. package/dist/runtime/components/ui/sidebar/SidebarGroupLabel.vue +1 -0
  186. package/dist/runtime/components/ui/sidebar/SidebarHeader.vue +1 -0
  187. package/dist/runtime/components/ui/sidebar/SidebarInput.vue +1 -0
  188. package/dist/runtime/components/ui/sidebar/SidebarInset.vue +1 -0
  189. package/dist/runtime/components/ui/sidebar/SidebarMenu.vue +1 -0
  190. package/dist/runtime/components/ui/sidebar/SidebarMenuAction.vue +1 -0
  191. package/dist/runtime/components/ui/sidebar/SidebarMenuBadge.vue +1 -0
  192. package/dist/runtime/components/ui/sidebar/SidebarMenuButton.d.vue.ts +1 -1
  193. package/dist/runtime/components/ui/sidebar/SidebarMenuButton.vue.d.ts +1 -1
  194. package/dist/runtime/components/ui/sidebar/SidebarMenuButtonChild.d.vue.ts +1 -1
  195. package/dist/runtime/components/ui/sidebar/SidebarMenuButtonChild.vue +1 -0
  196. package/dist/runtime/components/ui/sidebar/SidebarMenuButtonChild.vue.d.ts +1 -1
  197. package/dist/runtime/components/ui/sidebar/SidebarMenuItem.vue +1 -0
  198. package/dist/runtime/components/ui/sidebar/SidebarMenuSkeleton.vue +1 -0
  199. package/dist/runtime/components/ui/sidebar/SidebarMenuSub.vue +1 -0
  200. package/dist/runtime/components/ui/sidebar/SidebarMenuSubButton.vue +1 -0
  201. package/dist/runtime/components/ui/sidebar/SidebarMenuSubItem.vue +1 -0
  202. package/dist/runtime/components/ui/sidebar/SidebarProvider.vue +1 -0
  203. package/dist/runtime/components/ui/sidebar/SidebarRail.vue +1 -0
  204. package/dist/runtime/components/ui/sidebar/SidebarSeparator.vue +1 -0
  205. package/dist/runtime/components/ui/sidebar/SidebarTrigger.vue +1 -0
  206. package/dist/runtime/components/ui/sidebar/index.d.ts +1 -1
  207. package/dist/runtime/components/ui/skeleton/Skeleton.vue +1 -0
  208. package/dist/runtime/components/ui/sonner/Sonner.d.vue.ts +4 -4
  209. package/dist/runtime/components/ui/sonner/Sonner.vue.d.ts +4 -4
  210. package/dist/runtime/components/ui/stepper/Stepper.vue +1 -0
  211. package/dist/runtime/components/ui/stepper/StepperDescription.vue +1 -0
  212. package/dist/runtime/components/ui/stepper/StepperIndicator.vue +1 -0
  213. package/dist/runtime/components/ui/stepper/StepperItem.d.vue.ts +1 -1
  214. package/dist/runtime/components/ui/stepper/StepperItem.vue +1 -0
  215. package/dist/runtime/components/ui/stepper/StepperItem.vue.d.ts +1 -1
  216. package/dist/runtime/components/ui/stepper/StepperSeparator.vue +1 -0
  217. package/dist/runtime/components/ui/stepper/StepperTitle.vue +1 -0
  218. package/dist/runtime/components/ui/stepper/StepperTrigger.vue +1 -0
  219. package/dist/runtime/components/ui/switch/Switch.d.vue.ts +2 -2
  220. package/dist/runtime/components/ui/switch/Switch.vue +1 -0
  221. package/dist/runtime/components/ui/switch/Switch.vue.d.ts +2 -2
  222. package/dist/runtime/components/ui/switch/index.d.ts +2 -2
  223. package/dist/runtime/components/ui/table/Table.vue +1 -0
  224. package/dist/runtime/components/ui/table/TableBody.vue +1 -0
  225. package/dist/runtime/components/ui/table/TableCaption.vue +1 -0
  226. package/dist/runtime/components/ui/table/TableCell.vue +1 -0
  227. package/dist/runtime/components/ui/table/TableEmpty.vue +1 -0
  228. package/dist/runtime/components/ui/table/TableFooter.vue +1 -0
  229. package/dist/runtime/components/ui/table/TableHead.vue +1 -0
  230. package/dist/runtime/components/ui/table/TableHeader.vue +1 -0
  231. package/dist/runtime/components/ui/table/TableRow.vue +1 -0
  232. package/dist/runtime/components/ui/tabs/Tabs.vue +1 -0
  233. package/dist/runtime/components/ui/tabs/TabsContent.d.vue.ts +2 -2
  234. package/dist/runtime/components/ui/tabs/TabsContent.vue +1 -0
  235. package/dist/runtime/components/ui/tabs/TabsContent.vue.d.ts +2 -2
  236. package/dist/runtime/components/ui/tabs/TabsList.d.vue.ts +1 -1
  237. package/dist/runtime/components/ui/tabs/TabsList.vue +1 -0
  238. package/dist/runtime/components/ui/tabs/TabsList.vue.d.ts +1 -1
  239. package/dist/runtime/components/ui/tabs/TabsTrigger.d.vue.ts +2 -2
  240. package/dist/runtime/components/ui/tabs/TabsTrigger.vue +1 -0
  241. package/dist/runtime/components/ui/tabs/TabsTrigger.vue.d.ts +2 -2
  242. package/dist/runtime/components/ui/tags-input/TagsInput.d.vue.ts +3 -3
  243. package/dist/runtime/components/ui/tags-input/TagsInput.vue +1 -0
  244. package/dist/runtime/components/ui/tags-input/TagsInput.vue.d.ts +3 -3
  245. package/dist/runtime/components/ui/tags-input/TagsInputInput.vue +1 -0
  246. package/dist/runtime/components/ui/tags-input/TagsInputItem.d.vue.ts +2 -2
  247. package/dist/runtime/components/ui/tags-input/TagsInputItem.vue +1 -0
  248. package/dist/runtime/components/ui/tags-input/TagsInputItem.vue.d.ts +2 -2
  249. package/dist/runtime/components/ui/tags-input/TagsInputItemDelete.vue +1 -0
  250. package/dist/runtime/components/ui/tags-input/TagsInputItemText.vue +1 -0
  251. package/dist/runtime/components/ui/textarea/Textarea.d.vue.ts +4 -4
  252. package/dist/runtime/components/ui/textarea/Textarea.vue +1 -0
  253. package/dist/runtime/components/ui/textarea/Textarea.vue.d.ts +4 -4
  254. package/dist/runtime/components/ui/toggle/Toggle.d.vue.ts +2 -2
  255. package/dist/runtime/components/ui/toggle/Toggle.vue +1 -0
  256. package/dist/runtime/components/ui/toggle/Toggle.vue.d.ts +2 -2
  257. package/dist/runtime/components/ui/toggle/index.d.ts +1 -1
  258. package/dist/runtime/components/ui/toggle-group/ToggleGroup.d.vue.ts +2 -2
  259. package/dist/runtime/components/ui/toggle-group/ToggleGroup.vue +1 -0
  260. package/dist/runtime/components/ui/toggle-group/ToggleGroup.vue.d.ts +2 -2
  261. package/dist/runtime/components/ui/toggle-group/ToggleGroupItem.vue +1 -0
  262. package/dist/runtime/components/ui/tooltip/TooltipContent.d.vue.ts +2 -2
  263. package/dist/runtime/components/ui/tooltip/TooltipContent.vue +1 -0
  264. package/dist/runtime/components/ui/tooltip/TooltipContent.vue.d.ts +2 -2
  265. package/dist/runtime/composables/useAPI.d.ts +2 -2
  266. package/dist/runtime/composables/useAPI.js +6 -11
  267. package/dist/runtime/composables/useViewAPI.d.ts +1 -0
  268. package/dist/runtime/composables/useViewAPI.js +20 -4
  269. package/dist/runtime/composables/useWindowSizer.d.ts +14 -0
  270. package/dist/runtime/composables/useWindowSizer.js +48 -0
  271. package/dist/runtime/core/config.d.ts +78 -48
  272. package/dist/runtime/core/config.js +21 -27
  273. package/dist/runtime/core/stepper/Stepper.d.ts +13 -10
  274. package/dist/runtime/core/stepper/Stepper.js +70 -55
  275. package/dist/runtime/core/stepper/StepperSerializer.js +32 -14
  276. package/dist/runtime/core/timeline/Timeline.js +1 -2
  277. package/dist/runtime/css/main.css +1 -1
  278. package/dist/runtime/css/smile.css +1 -1
  279. package/dist/runtime/layouts/development.vue +38 -78
  280. package/dist/runtime/layouts/experiment.d.vue.ts +7 -10
  281. package/dist/runtime/layouts/experiment.vue +13 -0
  282. package/dist/runtime/layouts/experiment.vue.d.ts +7 -10
  283. package/dist/runtime/layouts/presentation.vue +24 -3
  284. package/dist/runtime/middleware/timeline.global.js +2 -4
  285. package/dist/runtime/pages/[...slug].vue +2 -0
  286. package/dist/runtime/pages/dev/[...slug].vue +2 -0
  287. package/dist/runtime/pages/dev-login.vue +5 -3
  288. package/dist/runtime/pages/presentation/[...slug].vue +2 -0
  289. package/dist/runtime/plugins/dev-sync.client.js +0 -2
  290. package/dist/runtime/plugins/seed.client.js +1 -3
  291. package/dist/runtime/plugins/store-sync.client.js +8 -10
  292. package/dist/runtime/public/images/helpus.png +0 -0
  293. package/dist/runtime/public/images/smile.svg +78 -0
  294. package/dist/runtime/public/images/universitylogo.png +0 -0
  295. package/dist/runtime/server/api/auth/login.post.js +11 -2
  296. package/dist/runtime/server/api/db-info.get.d.ts +5 -0
  297. package/dist/runtime/server/api/db-info.get.js +10 -0
  298. package/dist/runtime/server/api/qr.get.js +1 -2
  299. package/dist/runtime/server/middleware/dev-auth.js +10 -5
  300. package/dist/runtime/stores/log.js +4 -7
  301. package/dist/runtime/stores/smilestore.d.ts +161 -1014
  302. package/dist/runtime/stores/smilestore.js +39 -7
  303. package/dist/runtime/utils/utils.js +7 -0
  304. package/package.json +5 -3
  305. package/dist/runtime/components/dev/navbar/ViewButton.vue +0 -159
  306. package/dist/runtime/pages/info.vue +0 -462
  307. /package/dist/runtime/components/{dev/navbar/ViewButton.d.vue.ts → builtins/LocalDevBanner.d.vue.ts} +0 -0
  308. /package/dist/runtime/components/{dev/navbar/ViewButton.vue.d.ts → builtins/LocalDevBanner.vue.d.ts} +0 -0
  309. /package/dist/runtime/{pages/info.d.vue.ts → components/dev/SmileDevPresentationView.d.vue.ts} +0 -0
  310. /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
- <i-mdi-magic />
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
- <i-meteor-icons-angles-left />
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
- <i-meteor-icons-angles-left />
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
- <i-meteor-icons-angles-right />
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
- <i-meteor-icons-angles-right />
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
- <i-ic-baseline-pin-off v-if="api.store.dev.pinnedRoute !== null" />
105
- <i-ic-baseline-push-pin v-else />
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
- <i-lucide-arrow-down
126
+ <ArrowDown
124
127
  v-if="currentTimelineMeta.sequential"
125
128
  class="inline size-3 mr-1"
126
129
  />
127
- <i-lucide-presentation
130
+ <Presentation
128
131
  v-else-if="api.currentRouteName() === 'presentation_home'"
129
132
  class="inline size-3 mr-1"
130
133
  />
131
- <i-lucide-diamond
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
- <i-lucide-moon v-if="globalColorModeRaw === 'light'" />
24
+ <Moon v-if="globalColorModeRaw === 'light'" />
23
25
  <!-- Dark mode icon -->
24
- <i-lucide-sun-moon v-else-if="globalColorModeRaw === 'dark'" />
26
+ <SunMoon v-else-if="globalColorModeRaw === 'dark'" />
25
27
  <!-- System mode icon -->
26
- <i-lucide-sun v-else />
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
- <i-lucide-log-out />
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
- navigateTo("/presentation/");
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
- <i-lucide-home />
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<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
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
- <i-uil-presentation-line class="size-4 mr-1" /><b>PRESENTATION MODE</b>
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
- <i-lucide-presentation class="size-4 mr-1" /><b>PRES</b>
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-gray-600">
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-gray-300 pl-4 rounded-l">
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 class="flex items-center">
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<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
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
- <i-lucide-qr-code />
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
- <i-lucide-download class="size-3" />
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-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-500' : 'bg-gray-300']"
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-200' : 'bg-muted']"
23
+ :class="[api.store.cookieState.knownUser ? 'bg-status-green-bg' : 'bg-muted']"
22
24
  >
23
- <i-heroicons-user-minus-16-solid
24
- :class="[api.store.cookieState.knownUser ? 'text-green-500' : 'text-gray-500']"
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-500' : 'text-gray-500']"
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-500'
50
+ ? 'bg-status-green-fill'
49
51
  : api.store.browserEphemeral.dataLoaded && api.store.browserEphemeral.unsavedChanges
50
- ? 'bg-yellow-500'
51
- : 'bg-gray-300',
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-200' : 'bg-muted']"
60
+ :class="[api.store.browserEphemeral.dataLoaded ? 'bg-status-green-bg' : 'bg-muted']"
59
61
  @click="api.connectDB()"
60
62
  >
61
- <i-lucide-database :class="[api.store.browserEphemeral.dataLoaded ? 'text-green-500' : 'text-gray-500']" />
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-500' : 'text-gray-500']"
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-200'
87
+ ? 'bg-status-green-bg'
86
88
  : api.store.browserEphemeral.dataLoaded && api.store.browserEphemeral.unsavedChanges
87
- ? 'bg-amber-100'
89
+ ? 'bg-status-yellow-bg'
88
90
  : 'bg-muted',
89
91
  ]"
90
92
  >
91
- <i-fluent-cloud-sync-24-filled
93
+ <CloudUpload
92
94
  :class="[
93
95
  api.store.browserEphemeral.dataLoaded && !api.store.browserEphemeral.unsavedChanges
94
- ? 'text-green-500'
96
+ ? 'text-status-green-text'
95
97
  : api.store.browserEphemeral.dataLoaded && api.store.browserEphemeral.unsavedChanges
96
- ? 'text-yellow-500'
97
- : 'text-gray-500',
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-500'
109
+ ? 'text-status-green-text'
108
110
  : api.store.browserEphemeral.dataLoaded && api.store.browserEphemeral.unsavedChanges
109
- ? 'text-red-500'
110
- : 'text-gray-500',
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-red-100 text-red-500 dark:bg-red-900 dark:text-red-400': api.store.browserEphemeral.tooSmall,
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-even hidden sm: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-odd hidden sm: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-even">
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-odd hidden sm: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-even hidden sm: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-odd hidden sm: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-even hidden sm:table-row table-border-bottom">
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 (index === 0) {
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-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-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-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-gray-500 whitespace-pre mr-0">{{
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 border-t border-border py-2"
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
- <ConfigurationVariablesPanel />
62
- <AppProgressPanel />
63
- <StudyInfoPanel />
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;padding-top:1rem}
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: (BooleanConstructor | ObjectConstructor | StringConstructor | NumberConstructor | ArrayConstructor | null)[];
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: (BooleanConstructor | ObjectConstructor | StringConstructor | NumberConstructor | ArrayConstructor | null)[];
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:#f0f0f0}.expand-icon{color:#666;display:inline-block;width:16px}.key{color:#0baac3;margin-right:4px}.preview{color:#666;font-style:italic}.primitive-value{color:#dda814}.nested-content{border-left:1px dotted #ccc;padding-left:20px}
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>