diff --git a/apps/web/app/(app)/environments/[environmentId]/(people)/attributes/components/AttributeClassesTable.tsx b/apps/web/app/(app)/environments/[environmentId]/(people)/attributes/components/AttributeClassesTable.tsx index 3979accd73..85f7655141 100644 --- a/apps/web/app/(app)/environments/[environmentId]/(people)/attributes/components/AttributeClassesTable.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/(people)/attributes/components/AttributeClassesTable.tsx @@ -57,7 +57,7 @@ export const AttributeClassesTable = ({ attributeClasses }: AttributeClassesTabl {displayedAttributeClasses.map((attributeClass, index) => ( diff --git a/apps/web/app/(app)/environments/[environmentId]/(people)/attributes/components/AttributeRowData.tsx b/apps/web/app/(app)/environments/[environmentId]/(people)/attributes/components/AttributeRowData.tsx index 998522824e..9327e11b00 100644 --- a/apps/web/app/(app)/environments/[environmentId]/(people)/attributes/components/AttributeRowData.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/(people)/attributes/components/AttributeRowData.tsx @@ -5,7 +5,7 @@ import { Badge } from "@formbricks/ui/Badge"; export const AttributeClassDataRow = ({ attributeClass }) => { return ( -
+
diff --git a/apps/web/app/(app)/environments/[environmentId]/(people)/attributes/loading.tsx b/apps/web/app/(app)/environments/[environmentId]/(people)/attributes/loading.tsx index 77e36f4c83..f2504f1367 100644 --- a/apps/web/app/(app)/environments/[environmentId]/(people)/attributes/loading.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/(people)/attributes/loading.tsx @@ -1,42 +1,51 @@ +import { PeopleSecondaryNavigation } from "@/app/(app)/environments/[environmentId]/(people)/people/components/PeopleSecondaryNavigation"; import { TagIcon } from "lucide-react"; +import { PageContentWrapper } from "@formbricks/ui/PageContentWrapper"; +import { PageHeader } from "@formbricks/ui/PageHeader"; + const Loading = () => { return ( <> -
-
-
Name
-
Created
-
Last Updated
-
-
- - {[...Array(3)].map((_, index) => ( -
-
-
-
- -
-
-
-
+ + + + +
+
+
Name
+
Created
+
Last Updated
+
+
+ {[...Array(3)].map((_, index) => ( +
+
+
+ +
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
-
-
- -
-
-
-
-
+ ))}
- ))} +
); }; diff --git a/apps/web/app/(app)/environments/[environmentId]/(people)/attributes/page.tsx b/apps/web/app/(app)/environments/[environmentId]/(people)/attributes/page.tsx index c43a0d7e99..e369632411 100644 --- a/apps/web/app/(app)/environments/[environmentId]/(people)/attributes/page.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/(people)/attributes/page.tsx @@ -29,7 +29,7 @@ const Page = async ({ params }) => { return ( - + diff --git a/apps/web/app/(app)/environments/[environmentId]/(people)/people/components/PeopleSecondaryNavigation.tsx b/apps/web/app/(app)/environments/[environmentId]/(people)/people/components/PeopleSecondaryNavigation.tsx index 1834f619ba..094759faf9 100644 --- a/apps/web/app/(app)/environments/[environmentId]/(people)/people/components/PeopleSecondaryNavigation.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/(people)/people/components/PeopleSecondaryNavigation.tsx @@ -2,10 +2,11 @@ import { SecondaryNavigation } from "@formbricks/ui/SecondaryNavigation"; interface PeopleSegmentsTabsProps { activeId: string; - environmentId: string; + environmentId?: string; + loading?: boolean; } -export const PeopleSecondaryNavigation = ({ activeId, environmentId }: PeopleSegmentsTabsProps) => { +export const PeopleSecondaryNavigation = ({ activeId, environmentId, loading }: PeopleSegmentsTabsProps) => { const navigation = [ { id: "people", @@ -24,5 +25,5 @@ export const PeopleSecondaryNavigation = ({ activeId, environmentId }: PeopleSeg }, ]; - return ; + return ; }; diff --git a/apps/web/app/(app)/environments/[environmentId]/(people)/people/components/PersonCard.tsx b/apps/web/app/(app)/environments/[environmentId]/(people)/people/components/PersonCard.tsx index c3572ac597..19ae5bffed 100644 --- a/apps/web/app/(app)/environments/[environmentId]/(people)/people/components/PersonCard.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/(people)/people/components/PersonCard.tsx @@ -14,7 +14,7 @@ export const PersonCard = async ({ person }: { person: TPerson }) => { href={`/environments/${person.environmentId}/people/${person.id}`} key={person.id} className="w-full"> -
+
diff --git a/apps/web/app/(app)/environments/[environmentId]/(people)/people/loading.tsx b/apps/web/app/(app)/environments/[environmentId]/(people)/people/loading.tsx index eafa57f8c6..7245ac9805 100644 --- a/apps/web/app/(app)/environments/[environmentId]/(people)/people/loading.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/(people)/people/loading.tsx @@ -1,35 +1,45 @@ +import { PeopleSecondaryNavigation } from "@/app/(app)/environments/[environmentId]/(people)/people/components/PeopleSecondaryNavigation"; + +import { PageContentWrapper } from "@formbricks/ui/PageContentWrapper"; +import { PageHeader } from "@formbricks/ui/PageHeader"; + const Loading = () => { return ( <> -
-
-
User
-
User ID
-
Email
-
-
- {[...Array(3)].map((_, index) => ( -
-
-
-
-
-
+ + + + +
+
+
User
+
User ID
+
Email
+
+
+ {[...Array(3)].map((_, index) => ( +
+
+
+
{" "} +
+
+
{" "}
+
+
+
+
+
+
-
-
-
-
-
-
-
- ))} + ))} +
-
+ ); }; diff --git a/apps/web/app/(app)/environments/[environmentId]/(people)/segments/components/SegmentTable.tsx b/apps/web/app/(app)/environments/[environmentId]/(people)/segments/components/SegmentTable.tsx index 05000d63c8..8c913d5a84 100644 --- a/apps/web/app/(app)/environments/[environmentId]/(people)/segments/components/SegmentTable.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/(people)/segments/components/SegmentTable.tsx @@ -18,22 +18,28 @@ export const SegmentTable = ({ isAdvancedTargetingAllowed, }: TSegmentTableProps) => { return ( -
-
+
+
Title
Surveys
Updated
Created
- {segments.map((segment) => ( - - ))} + {segments.length === 0 ? ( +

Create your first Segment to get started.

+ ) : ( + <> + {segments.map((segment) => ( + + ))} + + )}
); }; diff --git a/apps/web/app/(app)/environments/[environmentId]/(people)/segments/components/SegmentTableDataRow.tsx b/apps/web/app/(app)/environments/[environmentId]/(people)/segments/components/SegmentTableDataRow.tsx index f7e469ab67..2a5f2071d1 100644 --- a/apps/web/app/(app)/environments/[environmentId]/(people)/segments/components/SegmentTableDataRow.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/(people)/segments/components/SegmentTableDataRow.tsx @@ -34,11 +34,11 @@ export const SegmentTableDataRow = ({ <>
setIsEditSegmentModalOpen(true)}>
-
+
diff --git a/apps/web/app/(app)/environments/[environmentId]/(people)/segments/loading.tsx b/apps/web/app/(app)/environments/[environmentId]/(people)/segments/loading.tsx new file mode 100644 index 0000000000..bae55953bd --- /dev/null +++ b/apps/web/app/(app)/environments/[environmentId]/(people)/segments/loading.tsx @@ -0,0 +1,57 @@ +import { PeopleSecondaryNavigation } from "@/app/(app)/environments/[environmentId]/(people)/people/components/PeopleSecondaryNavigation"; +import { UsersIcon } from "lucide-react"; + +import { PageContentWrapper } from "@formbricks/ui/PageContentWrapper"; +import { PageHeader } from "@formbricks/ui/PageHeader"; + +const Loading = () => { + return ( + <> + + + + +
+
+
Title
+
Surveys
+
Updated
+
Created
+
+
+ {[...Array(3)].map((_, index) => ( +
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ))} +
+
+
+ + ); +}; + +export default Loading; diff --git a/apps/web/app/(app)/environments/[environmentId]/(people)/segments/page.tsx b/apps/web/app/(app)/environments/[environmentId]/(people)/segments/page.tsx index 9961e214be..24f7f299a7 100644 --- a/apps/web/app/(app)/environments/[environmentId]/(people)/segments/page.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/(people)/segments/page.tsx @@ -11,7 +11,6 @@ import { IS_FORMBRICKS_CLOUD } from "@formbricks/lib/constants"; import { getEnvironment } from "@formbricks/lib/environment/service"; import { getSegments } from "@formbricks/lib/segment/service"; import { getTeamByEnvironmentId } from "@formbricks/lib/team/service"; -import { EmptySpaceFiller } from "@formbricks/ui/EmptySpaceFiller"; import { PageContentWrapper } from "@formbricks/ui/PageContentWrapper"; import { PageHeader } from "@formbricks/ui/PageHeader"; @@ -70,24 +69,15 @@ const Page = async ({ params }) => { return ( - + - {filteredSegments.length === 0 ? ( - - ) : ( - - )} + ); }; diff --git a/packages/ui/SecondaryNavigation/index.tsx b/packages/ui/SecondaryNavigation/index.tsx index 5d7448477d..390066f063 100644 --- a/packages/ui/SecondaryNavigation/index.tsx +++ b/packages/ui/SecondaryNavigation/index.tsx @@ -5,28 +5,51 @@ import { cn } from "@formbricks/lib/cn"; interface SecondaryNavbarProps { navigation: { id: string; label: string; href: string; icon?: React.ReactNode; hidden?: boolean }[]; activeId: string; + loading?: boolean; } -export const SecondaryNavigation = ({ navigation, activeId, ...props }: SecondaryNavbarProps) => { +export const SecondaryNavigation = ({ navigation, activeId, loading, ...props }: SecondaryNavbarProps) => { return (