chore(apps): remove unused code and packages (DEAD-01, DEAD-02, DEAD-03)

Owner approved the deletions. Found by walking imports from each app's
main.ts; sw.ts stays (the PWA plugin's entry).
- user-app: 8 unreachable components, loadingStore.
- user-app-v2: 11 unreachable components, loadingStore.
- both: the unused validators and price helpers, and the gsap and
  @ant-design/icons-vue packages.
- the stray root user-app-v2/ folder (an old package.json and
  vite.config.ts that nothing referenced).
Both apps type-check clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
s.esmaeili
2026-10-08 16:40:10 +03:30
co-authored by Claude Opus 5.5
parent 2d74f53d0a
commit 7bb5c2e00f
31 changed files with 13 additions and 2030 deletions
@@ -1,12 +0,0 @@
<!-- Ported from legacy henza_pwa/src/components/content.vue -->
<template>
<main :style="{ marginTop: transition.transitionEnded ? `${transition.headerHeight}px` : 'unset' }">
<slot />
</main>
</template>
<script setup lang="ts">
import { useTransitionStore } from '../../stores/transitionStore'
const transition = useTransitionStore()
</script>
@@ -1,41 +0,0 @@
<!-- Ported from legacy henza_pwa/src/components/ui/ScrollFetch.vue — the plain
infinite-scroll container (default ant Empty, no custom illustration). -->
<template>
<main
class="overflow-auto no-scrollbar w-[100vw] h-screen max-w-screen-md m-auto"
:style="{ paddingTop: padding || transition.headerHeight + 'px' }"
ref="scrollArea"
>
<slot></slot>
<Spinner cls="my-[10px]" :spinning="loading" :indicator="true" tip="درحال دریافت اطلاعات" />
<EmptyState v-if="flag" />
</main>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { useInfiniteScroll } from '@vueuse/core'
import Spinner from '../Spinner.vue'
import EmptyState from '../EmptyState.vue'
import { useTransitionStore } from '../../stores/transitionStore'
withDefaults(
defineProps<{
loading: boolean
flag: boolean
padding?: string
}>(),
{},
)
const emit = defineEmits<{ (e: 'fetch'): void }>()
const transition = useTransitionStore()
const scrollArea = ref(null)
useInfiniteScroll(
scrollArea,
() => {
emit('fetch')
},
{ distance: 50 },
)
</script>
@@ -1,48 +0,0 @@
<!--
Ported from legacy henza_pwa/src/components/ui/ScrollFetchAfterSearch.vue.
Legacy imported emp_after_search.svg / emp_before_search.svg and an `isSearch`
prop to pick between them, but the live template used neither — it rendered
`ordersEmpty.svg` unconditionally. Ported as-is (unused imports dropped,
`isSearch` kept since it is part of the component's declared prop contract).
-->
<template>
<main
class="overflow-auto no-scrollbar w-[100vw] h-screen max-w-screen-md m-auto"
:style="{ paddingTop: padding || transition.headerHeight + 'px' }"
ref="scrollArea"
>
<slot></slot>
<Spinner cls="my-[10px]" :spinning="loading" :indicator="true" tip="درحال دریافت اطلاعات" />
<EmptyState v-if="flag && !loading" :image="ordersEmpty" />
</main>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { useInfiniteScroll } from '@vueuse/core'
import Spinner from '../Spinner.vue'
import EmptyState from '../EmptyState.vue'
import ordersEmpty from '../../assets/img/empty/ordersEmpty.svg'
import { useTransitionStore } from '../../stores/transitionStore'
withDefaults(
defineProps<{
loading: boolean
flag: boolean
padding?: string
isSearch?: boolean
}>(),
{},
)
const emit = defineEmits<{ (e: 'fetch'): void }>()
const transition = useTransitionStore()
const scrollArea = ref(null)
useInfiniteScroll(
scrollArea,
() => {
emit('fetch')
},
{ distance: 50 },
)
</script>