Menu.svelte 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <script>
  2. import Header from '$lib/layout/Header.svelte';
  3. import { onMount } from 'svelte';
  4. import { browser } from '$app/environment';
  5. import { logo_id, companyName_id } from '$lib/utils/store';
  6. let categoriaSelecionada = null;
  7. let cardapio = [];
  8. let token = null;
  9. let company = null;
  10. let categories = [];
  11. let products = [];
  12. if (browser) {
  13. token = localStorage.getItem('token');
  14. localStorage.setItem('typePage', 'false');
  15. }
  16. function filtrarCategoria(categoria) {
  17. categoriaSelecionada = categoriaSelecionada === categoria ? null : categoria;
  18. }
  19. onMount(() => {
  20. const params = new URLSearchParams(window.location.search);
  21. const id = params.get('id');
  22. company = localStorage.setItem('company', id);
  23. switch (id) {
  24. case '1':
  25. logo_id.set(
  26. 'https://i.postimg.cc/bNNBcTZj/Whats-App-Image-2025-07-29-at-19-59-16-removebg-preview.png'
  27. );
  28. companyName_id.set('Bar do Ferlin');
  29. break;
  30. }
  31. if (id) {
  32. fetch(`https://bartender.mixtab.com.br/menu/get/${id}`)
  33. .then((res) => res.json())
  34. .then((data) => {
  35. //console.log(data.data);
  36. cardapio = data.data;
  37. })
  38. .catch((err) => console.error("Erro ao buscar o cardapio:', err"));
  39. } else {
  40. console.log('ID não encontrado na URL');
  41. }
  42. });
  43. </script>
  44. <Header />
  45. <div class="flex flex-nowrap justify-center gap-4 overflow-x-auto bg-gray-700 p-5">
  46. {#each cardapio as secao}
  47. <button
  48. class="rounded-lg px-4 py-2 text-sm font-semibold transition-colors duration-200
  49. {categoriaSelecionada === secao.categoria
  50. ? 'bg-violet-700 text-white'
  51. : 'bg-gray-600 text-gray-100'}"
  52. on:click={() => filtrarCategoria(secao.categoria)}
  53. >
  54. {secao.categoria}
  55. </button>
  56. {/each}
  57. </div>
  58. <main class="flex min-h-screen bg-gray-800">
  59. <div class="flex flex-1 items-start justify-center bg-gray-700 pt-5">
  60. <div class="h- max-w-370 w-full rounded-2xl bg-gray-800 p-8 shadow-lg">
  61. <h1 class="mb-8 text-center text-3xl font-bold text-gray-200">Cardápio</h1>
  62. {#each cardapio.filter((secao) => !categoriaSelecionada || secao.categoria === categoriaSelecionada) as secao}
  63. <div class="mb-6">
  64. <h2 class="mb-3 text-center text-xl font-semibold text-gray-200">{secao.categoria}</h2>
  65. {#each secao.produtos as item}
  66. <div class="mb-2 rounded-lg bg-gray-700 px-4 py-2">
  67. <div class="flex items-start justify-between">
  68. <div class="flex-1">
  69. <span class="block font-medium text-gray-200">{item.nome}</span>
  70. <p class="mt-1 text-sm text-gray-400">{item.descricao}</p>
  71. </div>
  72. <span class="ml-4 whitespace-nowrap text-sm text-gray-300">{item.preco}</span>
  73. </div>
  74. </div>
  75. {/each}
  76. </div>
  77. {/each}
  78. </div>
  79. </div>
  80. </main>