diff --git a/Asset 24.svg b/Asset 24.svg new file mode 100644 index 0000000..8115e27 --- /dev/null +++ b/Asset 24.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Asset 26.svg b/Asset 26.svg new file mode 100644 index 0000000..b04ebb9 --- /dev/null +++ b/Asset 26.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/apps/web/index.html b/apps/web/index.html index d122152..ff6210d 100644 --- a/apps/web/index.html +++ b/apps/web/index.html @@ -4,7 +4,7 @@ منتکت | Montact CRM - + + + + + + + + + + \ No newline at end of file diff --git a/apps/web/public/brand/montact-wordmark.svg b/apps/web/public/brand/montact-wordmark.svg new file mode 100644 index 0000000..8115e27 --- /dev/null +++ b/apps/web/public/brand/montact-wordmark.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/apps/web/src/components/OrgSwitcher.vue b/apps/web/src/components/OrgSwitcher.vue index 9d9b7ff..5114af1 100644 --- a/apps/web/src/components/OrgSwitcher.vue +++ b/apps/web/src/components/OrgSwitcher.vue @@ -3,10 +3,8 @@ import { computed, nextTick, onMounted, onUnmounted, ref } from 'vue'; import axios from 'axios'; import { useAuthStore } from '@/stores/auth'; import { USER_ROLE_LABELS } from '@/lib/roles'; -import { BUSINESS_FIELDS, BUSINESS_FIELD_LABELS } from '@/lib/business-fields'; -import type { BusinessField, OrganizationMembershipDto } from '@mento/shared'; +import type { OrganizationMembershipDto } from '@mento/shared'; import UiIcon from '@/components/UiIcon.vue'; -import UiModal from '@/components/ui/UiModal.vue'; const props = withDefaults( defineProps<{ @@ -28,12 +26,8 @@ const auth = useAuthStore(); const orgs = ref([]); const open = ref(false); -const createOpen = ref(false); const loading = ref(false); -const creating = ref(false); const error = ref(''); -const newName = ref(''); -const newField = ref('personal'); const rootEl = ref(null); const menuEl = ref(null); const menuStyle = ref>({}); @@ -60,7 +54,7 @@ const currentInitial = computed(() => { const canSwitch = computed(() => orgs.value.length > 1); const isWorkspace = computed(() => props.variant === 'workspace'); -/** در حالت workspace منو همیشه باز می‌شود (لیست org + محیط جدید)؛ در حالت پیش‌فرض فقط وقتی بیش از یکی باشد */ +/** در حالت workspace منو همیشه باز می‌شود؛ در حالت پیش‌فرض فقط وقتی بیش از یکی باشد */ const menuEnabled = computed(() => isWorkspace.value || canSwitch.value); function apiError(e: unknown, fallback: string) { @@ -148,34 +142,6 @@ async function choose(org: OrganizationMembershipDto) { } } -function openCreate() { - closeMenu(); - newName.value = ''; - newField.value = 'personal'; - error.value = ''; - createOpen.value = true; -} - -async function submitCreate() { - const name = newName.value.trim(); - if (name.length < 2) { - error.value = 'نام محیط باید حداقل دو حرف باشد.'; - return; - } - creating.value = true; - error.value = ''; - try { - await auth.createOrganization({ - name, - businessField: newField.value, - }); - window.location.assign('/'); - } catch (e) { - error.value = apiError(e, 'ساخت محیط ناموفق بود'); - creating.value = false; - } -} - function onDocClick(event: MouseEvent) { if (!open.value || Date.now() < ignoreDocClickUntil) return; const target = event.target; @@ -260,36 +226,9 @@ onUnmounted(() => { :size="16" /> - -

{{ error }}

+

{{ error }}

- - -
- - -

{{ error }}

-
- -
@@ -585,61 +524,9 @@ onUnmounted(() => { color: #0f172a; } -.create { - margin-top: 0.15rem; - padding: 0.7rem 0.65rem 0.55rem; - border-top: 1px solid #eef2f7; - border-radius: 0 0 12px 12px; - color: var(--accent-deep); - font-weight: 700; - font-size: 0.86rem; -} - -.menu.org-ws .create:hover { - background: #f8fafc; - color: #0f766e; -} - .err { margin: 0.2rem 0 0; color: #b91c1c; font-size: 0.75rem; } - -.form { - display: grid; - gap: 0.75rem; -} - -.form label { - display: grid; - gap: 0.35rem; - font-size: 0.88rem; -} - -.form input, -.form select { - border: 1px solid var(--line); - border-radius: 10px; - padding: 0.65rem 0.75rem; -} - -.ghost, -.primary { - border-radius: 10px; - padding: 0.55rem 0.9rem; - cursor: pointer; -} - -.ghost { - border: 1px solid var(--line); - background: #fff; -} - -.primary { - border: 0; - background: var(--accent); - color: #fff; - font-weight: 700; -} diff --git a/apps/web/src/components/dashboard/HomeHero.vue b/apps/web/src/components/dashboard/HomeHero.vue index 5bf9c97..548f8f7 100644 --- a/apps/web/src/components/dashboard/HomeHero.vue +++ b/apps/web/src/components/dashboard/HomeHero.vue @@ -1,6 +1,6 @@