Step3_Activity.svelte 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <script>
  2. let {
  3. value = $bindable(),
  4. next = $bindable(),
  5. prev = $bindable(),
  6. } = $props();
  7. const activities = [
  8. {
  9. id: "услуги",
  10. title: "Услуги",
  11. examples: "Консультации, ремонт, обучение",
  12. },
  13. {
  14. id: "торговля",
  15. title: "Торговля",
  16. examples: "Магазин, маркетплейс, опт",
  17. },
  18. {
  19. id: "производство",
  20. title: "Производство",
  21. examples: "Еда, мебель, оборудование",
  22. },
  23. { id: "IT", title: "IT / Стартап", examples: "ПО, приложения, SaaS" },
  24. ];
  25. </script>
  26. <div class="step">
  27. <h3>3. Чем будете заниматься?</h3>
  28. <p class="hint">Выберите основной вид деятельности</p>
  29. <div class="grid">
  30. {#each activities as act}
  31. <label class="tile" class:selected={value === act.id}>
  32. <input type="radio" bind:group={value} value={act.id} />
  33. <div class="icon">Icon</div>
  34. <strong>{act.title}</strong>
  35. <small>{act.examples}</small>
  36. </label>
  37. {/each}
  38. </div>
  39. <div class="actions">
  40. <button onclick={prev} class="secondary">Назад</button>
  41. <button onclick={next} disabled={!value}>Далее</button>
  42. </div>
  43. </div>
  44. <style>
  45. .hint {
  46. color: #666;
  47. margin-bottom: 1rem;
  48. }
  49. .grid {
  50. display: grid;
  51. grid-template-columns: repeat(2, 1fr);
  52. gap: 1rem;
  53. margin: 1.5rem 0;
  54. }
  55. @media (max-width: 600px) {
  56. .grid {
  57. grid-template-columns: 1fr;
  58. }
  59. }
  60. .tile {
  61. text-align: center;
  62. padding: 1.5rem 1rem;
  63. border: 2px solid #e2e8f0;
  64. border-radius: 16px;
  65. cursor: pointer;
  66. transition: all 0.2s;
  67. background: white;
  68. }
  69. .tile:hover {
  70. border-color: #2563eb;
  71. transform: translateY(-2px);
  72. }
  73. .tile.selected {
  74. border-color: #2563eb;
  75. background: #ebf3ff;
  76. }
  77. .icon {
  78. width: 40px;
  79. height: 40px;
  80. background: #cbd5e1;
  81. border-radius: 50%;
  82. margin: 0 auto 0.75rem;
  83. }
  84. small {
  85. color: #64748b;
  86. font-size: 0.85rem;
  87. display: block;
  88. margin-top: 0.5rem;
  89. }
  90. .actions {
  91. display: flex;
  92. justify-content: space-between;
  93. margin-top: 2rem;
  94. }
  95. button {
  96. padding: 0.75rem 1.5rem;
  97. border-radius: 8px;
  98. }
  99. .secondary {
  100. background: #f8fafc;
  101. color: #334155;
  102. }
  103. </style>