App.svelte 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <script>
  2. import { onMount } from "svelte";
  3. import { open } from "@tauri-apps/api/window"
  4. import Cli from './components/Cli.svelte'
  5. import Communication from './components/Communication.svelte'
  6. import Dialog from './components/Dialog.svelte'
  7. import FileSystem from './components/FileSystem.svelte'
  8. import Http from './components/Http.svelte'
  9. import Notifications from './components/Notifications.svelte'
  10. import Window from './components/Window.svelte'
  11. import Shortcuts from './components/Shortcuts.svelte'
  12. const views = [{
  13. label: 'Messages',
  14. component: Communication
  15. }, {
  16. label: 'CLI',
  17. component: Cli
  18. }, {
  19. label: 'Dialog',
  20. component: Dialog
  21. }, {
  22. label: 'File system',
  23. component: FileSystem
  24. }, {
  25. label: 'HTTP',
  26. component: Http
  27. }, {
  28. label: 'Notifications',
  29. component: Notifications
  30. }, {
  31. label: 'Window',
  32. component: Window
  33. }, {
  34. label: 'Shortcuts',
  35. component: Shortcuts
  36. }]
  37. let selected = views[0].label;
  38. let response = '';
  39. function select(view) {
  40. selected = view.label
  41. }
  42. function onMessage(value) {
  43. response = typeof value === "string" ? value : JSON.stringify(value);
  44. }
  45. function onLogoClick() {
  46. open("https://tauri.studio/");
  47. }
  48. </script>
  49. <main>
  50. <div class="logo-container">
  51. <img src="icon.png" class="logo" on:click={onLogoClick} alt="logo" />
  52. </div>
  53. <div class="tabs-container">
  54. <div class="tabs">
  55. {#each views as view}
  56. <div class="tab">
  57. <input id={`tab-${view.label}`} type="radio" checked={view.label===selected} />
  58. <label for={`tab-${view.label}`} class="tabber" on:click={()=> select(view)}>{view.label}</label>
  59. <div class="content">
  60. <svelte:component this={view.component} {onMessage} />
  61. </div>
  62. </div>
  63. {/each}
  64. </div>
  65. </div>
  66. <div id="response">{@html response}</div>
  67. <div class="bottom">
  68. <a class="dark-link" target="_blank" href="https://tauri.studio">
  69. Tauri Documentation
  70. </a>
  71. &nbsp;&nbsp;&nbsp;
  72. <a class="dark-link" target="_blank" href="https://github.com/tauri-apps/tauri">
  73. Github Repo
  74. </a>
  75. &nbsp;&nbsp;&nbsp;
  76. <a class="dark-link" target="_blank"
  77. href="https://github.com/tauri-apps/tauri/tree/dev/tauri/examples/api">
  78. Source for this App
  79. </a>
  80. </div>
  81. </main>