@burdenoff/microfe-eventfullymanaged 2026.529.1 → 2026.625.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/eventfullymanaged/components/PageLayout.js +44 -38
  2. package/dist/eventfullymanaged/components/PageLayout.js.map +1 -1
  3. package/dist/eventfullymanaged/pages/dashboard/DashboardPage.js +39 -27
  4. package/dist/eventfullymanaged/pages/dashboard/DashboardPage.js.map +1 -1
  5. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js +40 -41
  6. package/dist/eventfullymanaged/pages/modules/AnalyticsPage.js.map +1 -1
  7. package/dist/eventfullymanaged/pages/modules/AttendeeProfilePage.js +67 -65
  8. package/dist/eventfullymanaged/pages/modules/AttendeeProfilePage.js.map +1 -1
  9. package/dist/eventfullymanaged/pages/modules/CommunicationPage.js +48 -50
  10. package/dist/eventfullymanaged/pages/modules/CommunicationPage.js.map +1 -1
  11. package/dist/eventfullymanaged/pages/modules/EntityListSection.js +57 -25
  12. package/dist/eventfullymanaged/pages/modules/EntityListSection.js.map +1 -1
  13. package/dist/eventfullymanaged/pages/modules/EventsPage.js +55 -57
  14. package/dist/eventfullymanaged/pages/modules/EventsPage.js.map +1 -1
  15. package/dist/eventfullymanaged/pages/modules/KioskPage.js +17 -19
  16. package/dist/eventfullymanaged/pages/modules/KioskPage.js.map +1 -1
  17. package/dist/eventfullymanaged/pages/modules/NetworkingPage.js +22 -22
  18. package/dist/eventfullymanaged/pages/modules/NetworkingPage.js.map +1 -1
  19. package/dist/eventfullymanaged/pages/modules/OperationsHubPage.js +90 -82
  20. package/dist/eventfullymanaged/pages/modules/OperationsHubPage.js.map +1 -1
  21. package/dist/eventfullymanaged/pages/modules/RegistrationPage.js +28 -29
  22. package/dist/eventfullymanaged/pages/modules/RegistrationPage.js.map +1 -1
  23. package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.js +67 -65
  24. package/dist/eventfullymanaged/pages/modules/SponsorDetailsPage.js.map +1 -1
  25. package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.js +18 -20
  26. package/dist/eventfullymanaged/pages/modules/SponsorLeadsPage.js.map +1 -1
  27. package/dist/eventfullymanaged/pages/modules/VenueResourcesPage.js +68 -64
  28. package/dist/eventfullymanaged/pages/modules/VenueResourcesPage.js.map +1 -1
  29. package/dist/eventfullymanaged/pages/modules/WorkflowsPage.js +57 -60
  30. package/dist/eventfullymanaged/pages/modules/WorkflowsPage.js.map +1 -1
  31. package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.js +197 -199
  32. package/dist/eventfullymanaged/pages/sponsors/SponsorFormPage.js.map +1 -1
  33. package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.js +57 -39
  34. package/dist/eventfullymanaged/pages/sponsors/SponsorsListPage.js.map +1 -1
  35. package/dist/eventfullymanaged/pages/venues/FloorPlansPage.js +41 -31
  36. package/dist/eventfullymanaged/pages/venues/FloorPlansPage.js.map +1 -1
  37. package/dist/eventfullymanaged/pages/venues/VenueDetailPage.js +79 -62
  38. package/dist/eventfullymanaged/pages/venues/VenueDetailPage.js.map +1 -1
  39. package/dist/eventfullymanaged/pages/venues/VenueFormPage.js +185 -189
  40. package/dist/eventfullymanaged/pages/venues/VenueFormPage.js.map +1 -1
  41. package/dist/eventfullymanaged/pages/venues/VenueListPage.js +63 -35
  42. package/dist/eventfullymanaged/pages/venues/VenueListPage.js.map +1 -1
  43. package/package.json +2 -2
@@ -3,88 +3,93 @@ import { useVenueQuery as t } from "../../api/eventApi.js";
3
3
  import { useParams as n } from "react-router-dom";
4
4
  import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
5
  import { ArrowLeft as a, Building2 as o, Edit as s, MapPin as c, SquareStack as l, Users as u } from "lucide-react";
6
+ import { Badge as d, Button as f, GlassCard as p, IllustratedEmptyState as m } from "@burdenoff/fe-libs/ui";
6
7
  //#region src/eventfullymanaged/pages/venues/VenueDetailPage.tsx
7
- function d() {
8
- let { id: d = "" } = n(), { navigate: f } = e(), { data: p, loading: m } = t(d), h = p?.venue ?? null, g = p?.floorPlans?.items ?? [];
9
- return m ? /* @__PURE__ */ r("div", {
8
+ function h() {
9
+ let { id: h = "" } = n(), { navigate: g } = e(), { data: _, loading: v } = t(h), y = _?.venue ?? null, b = _?.floorPlans?.items ?? [];
10
+ return v ? /* @__PURE__ */ r("div", {
10
11
  className: "p-6 text-sm text-text-secondary",
11
12
  children: "Loading venue..."
12
- }) : h ? /* @__PURE__ */ i("div", {
13
+ }) : y ? /* @__PURE__ */ i("div", {
13
14
  className: "space-y-6 p-6",
14
15
  children: [
15
16
  /* @__PURE__ */ i("div", {
16
- className: "flex items-center justify-between gap-4",
17
+ className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
17
18
  children: [/* @__PURE__ */ i("div", {
18
19
  className: "space-y-3",
19
- children: [/* @__PURE__ */ i("button", {
20
+ children: [/* @__PURE__ */ i(f, {
20
21
  type: "button",
21
- onClick: () => f("/venues"),
22
- className: "inline-flex items-center gap-2 text-sm text-text-secondary hover:text-text-primary",
22
+ variant: "ghost",
23
+ size: "sm",
24
+ onClick: () => g("/venues"),
23
25
  children: [/* @__PURE__ */ r(a, { className: "h-4 w-4" }), "Back to Venues"]
24
26
  }), /* @__PURE__ */ i("div", { children: [/* @__PURE__ */ r("h1", {
25
27
  className: "text-2xl font-bold text-text-primary",
26
- children: h.name
28
+ children: y.name
27
29
  }), /* @__PURE__ */ r("p", {
28
30
  className: "mt-1 text-sm text-text-secondary",
29
- children: h.description ?? "No description provided."
31
+ children: y.description ?? "No description provided."
30
32
  })] })]
31
- }), /* @__PURE__ */ i("button", {
33
+ }), /* @__PURE__ */ i(f, {
32
34
  type: "button",
33
- onClick: () => f(`/venues/${h.id}/edit`),
34
- className: "inline-flex items-center rounded-md border border-border-default px-3 py-2 text-sm text-text-primary hover:bg-bg-elevated",
35
- children: [/* @__PURE__ */ r(s, { className: "mr-2 h-4 w-4" }), "Edit Venue"]
35
+ onClick: () => g(`/venues/${y.id}/edit`),
36
+ children: [/* @__PURE__ */ r(s, { className: "h-4 w-4" }), "Edit Venue"]
36
37
  })]
37
38
  }),
38
39
  /* @__PURE__ */ i("div", {
39
40
  className: "grid grid-cols-1 gap-4 lg:grid-cols-3",
40
41
  children: [
41
- /* @__PURE__ */ i("div", {
42
- className: "rounded-lg border border-border-default bg-bg-surface p-4",
42
+ /* @__PURE__ */ i(p, {
43
+ treatment: "metric",
44
+ className: "p-4",
43
45
  children: [/* @__PURE__ */ i("div", {
44
46
  className: "mb-2 flex items-center gap-2 text-sm font-medium text-text-primary",
45
- children: [/* @__PURE__ */ r(c, { className: "h-4 w-4" }), "Location"]
47
+ children: [/* @__PURE__ */ r(c, { className: "h-4 w-4 text-action-primary-bg" }), "Location"]
46
48
  }), /* @__PURE__ */ r("p", {
47
49
  className: "text-sm text-text-secondary",
48
50
  children: [
49
- h.addressLine1,
50
- h.city,
51
- h.state,
52
- h.country,
53
- h.postalCode
51
+ y.addressLine1,
52
+ y.city,
53
+ y.state,
54
+ y.country,
55
+ y.postalCode
54
56
  ].filter(Boolean).join(", ") || "Location not configured"
55
57
  })]
56
58
  }),
57
- /* @__PURE__ */ i("div", {
58
- className: "rounded-lg border border-border-default bg-bg-surface p-4",
59
+ /* @__PURE__ */ i(p, {
60
+ treatment: "metric",
61
+ className: "p-4",
59
62
  children: [/* @__PURE__ */ i("div", {
60
63
  className: "mb-2 flex items-center gap-2 text-sm font-medium text-text-primary",
61
- children: [/* @__PURE__ */ r(u, { className: "h-4 w-4" }), "Capacity"]
64
+ children: [/* @__PURE__ */ r(u, { className: "h-4 w-4 text-action-primary-bg" }), "Capacity"]
62
65
  }), /* @__PURE__ */ i("p", {
63
- className: "text-sm text-text-secondary",
64
- children: [h.capacity ?? 0, " attendees"]
66
+ className: "text-sm tabular-nums text-text-secondary",
67
+ children: [y.capacity ?? 0, " attendees"]
65
68
  })]
66
69
  }),
67
- /* @__PURE__ */ i("div", {
68
- className: "rounded-lg border border-border-default bg-bg-surface p-4",
70
+ /* @__PURE__ */ i(p, {
71
+ treatment: "metric",
72
+ className: "p-4",
69
73
  children: [/* @__PURE__ */ i("div", {
70
74
  className: "mb-2 flex items-center gap-2 text-sm font-medium text-text-primary",
71
- children: [/* @__PURE__ */ r(o, { className: "h-4 w-4" }), "Status"]
75
+ children: [/* @__PURE__ */ r(o, { className: "h-4 w-4 text-action-primary-bg" }), "Status"]
72
76
  }), /* @__PURE__ */ r("p", {
73
77
  className: "text-sm uppercase text-text-secondary",
74
- children: h.status
78
+ children: y.status
75
79
  })]
76
80
  })
77
81
  ]
78
82
  }),
79
- /* @__PURE__ */ i("div", {
80
- className: "rounded-lg border border-border-default bg-bg-surface p-5",
83
+ /* @__PURE__ */ i(p, {
84
+ treatment: "plain",
85
+ className: "border-border-seam p-5",
81
86
  children: [/* @__PURE__ */ r("h2", {
82
87
  className: "text-lg font-semibold text-text-primary",
83
88
  children: "Amenities"
84
89
  }), /* @__PURE__ */ r("div", {
85
90
  className: "mt-3 flex flex-wrap gap-2",
86
- children: h.amenities.length > 0 ? h.amenities.map((e) => /* @__PURE__ */ r("span", {
87
- className: "rounded-full bg-gray-100 px-3 py-1 text-xs font-medium text-text-primary",
91
+ children: y.amenities.length > 0 ? y.amenities.map((e) => /* @__PURE__ */ r(d, {
92
+ variant: "secondary",
88
93
  children: e
89
94
  }, e)) : /* @__PURE__ */ r("p", {
90
95
  className: "text-sm text-text-secondary",
@@ -92,51 +97,63 @@ function d() {
92
97
  })
93
98
  })]
94
99
  }),
95
- /* @__PURE__ */ i("div", {
96
- className: "rounded-lg border border-border-default bg-bg-surface p-5",
100
+ /* @__PURE__ */ i(p, {
101
+ treatment: "plain",
102
+ className: "border-border-seam p-5",
97
103
  children: [/* @__PURE__ */ i("div", {
98
- className: "flex items-center justify-between",
104
+ className: "flex items-center justify-between gap-3",
99
105
  children: [/* @__PURE__ */ r("h2", {
100
106
  className: "text-lg font-semibold text-text-primary",
101
107
  children: "Floor Plans"
102
- }), /* @__PURE__ */ i("button", {
108
+ }), /* @__PURE__ */ i(f, {
103
109
  type: "button",
104
- onClick: () => f(`/venues/${h.id}/floor-plans`),
105
- className: "inline-flex items-center rounded-md border border-border-default px-3 py-2 text-sm text-text-primary hover:bg-bg-elevated",
106
- children: [/* @__PURE__ */ r(l, { className: "mr-2 h-4 w-4" }), "Manage Floor Plans"]
110
+ variant: "outline",
111
+ size: "sm",
112
+ onClick: () => g(`/venues/${y.id}/floor-plans`),
113
+ children: [/* @__PURE__ */ r(l, { className: "h-4 w-4" }), "Manage Floor Plans"]
107
114
  })]
108
115
  }), /* @__PURE__ */ r("div", {
109
- className: "mt-4 space-y-3",
110
- children: g.length > 0 ? g.map((e) => /* @__PURE__ */ i("div", {
111
- className: "rounded-md border border-border-default p-3",
112
- children: [/* @__PURE__ */ r("p", {
113
- className: "font-medium text-text-primary",
114
- children: e.name
115
- }), /* @__PURE__ */ r("p", {
116
- className: "text-sm text-text-secondary",
117
- children: e.imageUrl ? "Image configured" : "No image configured"
118
- })]
119
- }, e.id)) : /* @__PURE__ */ r("p", {
120
- className: "text-sm text-text-secondary",
121
- children: "No floor plans have been added yet."
116
+ className: "mt-4",
117
+ children: b.length > 0 ? /* @__PURE__ */ r("ul", {
118
+ className: "space-y-2.5",
119
+ children: b.map((e) => /* @__PURE__ */ i("li", {
120
+ className: "rounded-card border border-border-seam p-3 transition-[box-shadow,border-color] duration-200 hover:border-border-strong hover:shadow-elevation-1",
121
+ children: [/* @__PURE__ */ r("p", {
122
+ className: "font-medium text-text-primary",
123
+ children: e.name
124
+ }), /* @__PURE__ */ r("p", {
125
+ className: "text-sm text-text-secondary",
126
+ children: e.imageUrl ? "Image configured" : "No image configured"
127
+ })]
128
+ }, e.id))
129
+ }) : /* @__PURE__ */ r(m, {
130
+ illustration: "empty-files",
131
+ title: "No floor plans have been added yet.",
132
+ className: "py-8"
122
133
  })
123
134
  })]
124
135
  })
125
136
  ]
126
137
  }) : /* @__PURE__ */ i("div", {
127
138
  className: "space-y-4 p-6",
128
- children: [/* @__PURE__ */ i("button", {
139
+ children: [/* @__PURE__ */ i(f, {
129
140
  type: "button",
130
- onClick: () => f("/venues"),
131
- className: "inline-flex items-center gap-2 text-sm text-text-secondary hover:text-text-primary",
141
+ variant: "ghost",
142
+ size: "sm",
143
+ onClick: () => g("/venues"),
132
144
  children: [/* @__PURE__ */ r(a, { className: "h-4 w-4" }), "Back to Venues"]
133
- }), /* @__PURE__ */ r("div", {
134
- className: "rounded-md border border-border-default bg-bg-surface p-8 text-center text-sm text-text-secondary",
135
- children: "Venue not found."
145
+ }), /* @__PURE__ */ r(p, {
146
+ treatment: "plain",
147
+ className: "border-border-seam",
148
+ children: /* @__PURE__ */ r(m, {
149
+ illustration: "empty-search",
150
+ title: "Venue not found.",
151
+ description: "This venue may have been removed or is outside your current scope."
152
+ })
136
153
  })]
137
154
  });
138
155
  }
139
156
  //#endregion
140
- export { d as default };
157
+ export { h as default };
141
158
 
142
159
  //# sourceMappingURL=VenueDetailPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VenueDetailPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/venues/VenueDetailPage.tsx"],"sourcesContent":["import { ArrowLeft, Building2, Edit, MapPin, SquareStack, Users } from 'lucide-react';\nimport { useParams } from 'react-router-dom';\n\nimport { useVenueQuery } from '../../api/eventApi';\nimport { useEventfullyManaged } from '../../context/EventfullyManagedContext';\n\ntype VenueRecord = {\n id: string;\n name: string;\n description?: string | null;\n addressLine1?: string | null;\n city?: string | null;\n state?: string | null;\n country?: string | null;\n postalCode?: string | null;\n capacity?: number | null;\n status: string;\n amenities: string[];\n pricing?: Record<string, unknown> | null;\n openingHours?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n};\n\ntype FloorPlanRecord = {\n id: string;\n name: string;\n imageUrl?: string | null;\n dimensions?: Record<string, unknown> | null;\n};\n\nexport default function VenueDetailPage() {\n const { id = '' } = useParams<{ id: string }>();\n const { navigate } = useEventfullyManaged();\n const { data, loading } = useVenueQuery(id);\n\n const venue = (data?.venue ?? null) as VenueRecord | null;\n const floorPlans = (data?.floorPlans?.items ?? []) as FloorPlanRecord[];\n\n if (loading) {\n return <div className=\"p-6 text-sm text-text-secondary\">Loading venue...</div>;\n }\n\n if (!venue) {\n return (\n <div className=\"space-y-4 p-6\">\n <button\n type=\"button\"\n onClick={() => navigate('/venues')}\n className=\"inline-flex items-center gap-2 text-sm text-text-secondary hover:text-text-primary\"\n >\n <ArrowLeft className=\"h-4 w-4\" />\n Back to Venues\n </button>\n <div className=\"rounded-md border border-border-default bg-bg-surface p-8 text-center text-sm text-text-secondary\">\n Venue not found.\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex items-center justify-between gap-4\">\n <div className=\"space-y-3\">\n <button\n type=\"button\"\n onClick={() => navigate('/venues')}\n className=\"inline-flex items-center gap-2 text-sm text-text-secondary hover:text-text-primary\"\n >\n <ArrowLeft className=\"h-4 w-4\" />\n Back to Venues\n </button>\n <div>\n <h1 className=\"text-2xl font-bold text-text-primary\">{venue.name}</h1>\n <p className=\"mt-1 text-sm text-text-secondary\">{venue.description ?? 'No description provided.'}</p>\n </div>\n </div>\n <button\n type=\"button\"\n onClick={() => navigate(`/venues/${venue.id}/edit`)}\n className=\"inline-flex items-center rounded-md border border-border-default px-3 py-2 text-sm text-text-primary hover:bg-bg-elevated\"\n >\n <Edit className=\"mr-2 h-4 w-4\" />\n Edit Venue\n </button>\n </div>\n\n <div className=\"grid grid-cols-1 gap-4 lg:grid-cols-3\">\n <div className=\"rounded-lg border border-border-default bg-bg-surface p-4\">\n <div className=\"mb-2 flex items-center gap-2 text-sm font-medium text-text-primary\">\n <MapPin className=\"h-4 w-4\" />\n Location\n </div>\n <p className=\"text-sm text-text-secondary\">\n {[venue.addressLine1, venue.city, venue.state, venue.country, venue.postalCode]\n .filter(Boolean)\n .join(', ') || 'Location not configured'}\n </p>\n </div>\n <div className=\"rounded-lg border border-border-default bg-bg-surface p-4\">\n <div className=\"mb-2 flex items-center gap-2 text-sm font-medium text-text-primary\">\n <Users className=\"h-4 w-4\" />\n Capacity\n </div>\n <p className=\"text-sm text-text-secondary\">{venue.capacity ?? 0} attendees</p>\n </div>\n <div className=\"rounded-lg border border-border-default bg-bg-surface p-4\">\n <div className=\"mb-2 flex items-center gap-2 text-sm font-medium text-text-primary\">\n <Building2 className=\"h-4 w-4\" />\n Status\n </div>\n <p className=\"text-sm uppercase text-text-secondary\">{venue.status}</p>\n </div>\n </div>\n\n <div className=\"rounded-lg border border-border-default bg-bg-surface p-5\">\n <h2 className=\"text-lg font-semibold text-text-primary\">Amenities</h2>\n <div className=\"mt-3 flex flex-wrap gap-2\">\n {venue.amenities.length > 0 ? (\n venue.amenities.map((amenity) => (\n <span key={amenity} className=\"rounded-full bg-gray-100 px-3 py-1 text-xs font-medium text-text-primary\">\n {amenity}\n </span>\n ))\n ) : (\n <p className=\"text-sm text-text-secondary\">No amenities configured.</p>\n )}\n </div>\n </div>\n\n <div className=\"rounded-lg border border-border-default bg-bg-surface p-5\">\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-lg font-semibold text-text-primary\">Floor Plans</h2>\n <button\n type=\"button\"\n onClick={() => navigate(`/venues/${venue.id}/floor-plans`)}\n className=\"inline-flex items-center rounded-md border border-border-default px-3 py-2 text-sm text-text-primary hover:bg-bg-elevated\"\n >\n <SquareStack className=\"mr-2 h-4 w-4\" />\n Manage Floor Plans\n </button>\n </div>\n <div className=\"mt-4 space-y-3\">\n {floorPlans.length > 0 ? (\n floorPlans.map((plan) => (\n <div key={plan.id} className=\"rounded-md border border-border-default p-3\">\n <p className=\"font-medium text-text-primary\">{plan.name}</p>\n <p className=\"text-sm text-text-secondary\">\n {plan.imageUrl ? 'Image configured' : 'No image configured'}\n </p>\n </div>\n ))\n ) : (\n <p className=\"text-sm text-text-secondary\">No floor plans have been added yet.</p>\n )}\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"VenueDetailPage.js","names":[],"sources":["../../../../src/eventfullymanaged/pages/venues/VenueDetailPage.tsx"],"sourcesContent":["import { ArrowLeft, Building2, Edit, MapPin, SquareStack, Users } from 'lucide-react';\nimport { Badge, Button, GlassCard, IllustratedEmptyState } from '@burdenoff/fe-libs/ui';\nimport { useParams } from 'react-router-dom';\n\nimport { useVenueQuery } from '../../api/eventApi';\nimport { useEventfullyManaged } from '../../context/EventfullyManagedContext';\n\ntype VenueRecord = {\n id: string;\n name: string;\n description?: string | null;\n addressLine1?: string | null;\n city?: string | null;\n state?: string | null;\n country?: string | null;\n postalCode?: string | null;\n capacity?: number | null;\n status: string;\n amenities: string[];\n pricing?: Record<string, unknown> | null;\n openingHours?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n};\n\ntype FloorPlanRecord = {\n id: string;\n name: string;\n imageUrl?: string | null;\n dimensions?: Record<string, unknown> | null;\n};\n\nexport default function VenueDetailPage() {\n const { id = '' } = useParams<{ id: string }>();\n const { navigate } = useEventfullyManaged();\n const { data, loading } = useVenueQuery(id);\n\n const venue = (data?.venue ?? null) as VenueRecord | null;\n const floorPlans = (data?.floorPlans?.items ?? []) as FloorPlanRecord[];\n\n if (loading) {\n return <div className=\"p-6 text-sm text-text-secondary\">Loading venue...</div>;\n }\n\n if (!venue) {\n return (\n <div className=\"space-y-4 p-6\">\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={() => navigate('/venues')}>\n <ArrowLeft className=\"h-4 w-4\" />\n Back to Venues\n </Button>\n <GlassCard treatment=\"plain\" className=\"border-border-seam\">\n <IllustratedEmptyState\n illustration=\"empty-search\"\n title=\"Venue not found.\"\n description=\"This venue may have been removed or is outside your current scope.\"\n />\n </GlassCard>\n </div>\n );\n }\n\n return (\n <div className=\"space-y-6 p-6\">\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"space-y-3\">\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={() => navigate('/venues')}>\n <ArrowLeft className=\"h-4 w-4\" />\n Back to Venues\n </Button>\n <div>\n <h1 className=\"text-2xl font-bold text-text-primary\">{venue.name}</h1>\n <p className=\"mt-1 text-sm text-text-secondary\">{venue.description ?? 'No description provided.'}</p>\n </div>\n </div>\n <Button type=\"button\" onClick={() => navigate(`/venues/${venue.id}/edit`)}>\n <Edit className=\"h-4 w-4\" />\n Edit Venue\n </Button>\n </div>\n\n <div className=\"grid grid-cols-1 gap-4 lg:grid-cols-3\">\n <GlassCard treatment=\"metric\" className=\"p-4\">\n <div className=\"mb-2 flex items-center gap-2 text-sm font-medium text-text-primary\">\n <MapPin className=\"h-4 w-4 text-action-primary-bg\" />\n Location\n </div>\n <p className=\"text-sm text-text-secondary\">\n {[venue.addressLine1, venue.city, venue.state, venue.country, venue.postalCode]\n .filter(Boolean)\n .join(', ') || 'Location not configured'}\n </p>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"p-4\">\n <div className=\"mb-2 flex items-center gap-2 text-sm font-medium text-text-primary\">\n <Users className=\"h-4 w-4 text-action-primary-bg\" />\n Capacity\n </div>\n <p className=\"text-sm tabular-nums text-text-secondary\">{venue.capacity ?? 0} attendees</p>\n </GlassCard>\n <GlassCard treatment=\"metric\" className=\"p-4\">\n <div className=\"mb-2 flex items-center gap-2 text-sm font-medium text-text-primary\">\n <Building2 className=\"h-4 w-4 text-action-primary-bg\" />\n Status\n </div>\n <p className=\"text-sm uppercase text-text-secondary\">{venue.status}</p>\n </GlassCard>\n </div>\n\n <GlassCard treatment=\"plain\" className=\"border-border-seam p-5\">\n <h2 className=\"text-lg font-semibold text-text-primary\">Amenities</h2>\n <div className=\"mt-3 flex flex-wrap gap-2\">\n {venue.amenities.length > 0 ? (\n venue.amenities.map((amenity) => (\n <Badge key={amenity} variant=\"secondary\">\n {amenity}\n </Badge>\n ))\n ) : (\n <p className=\"text-sm text-text-secondary\">No amenities configured.</p>\n )}\n </div>\n </GlassCard>\n\n <GlassCard treatment=\"plain\" className=\"border-border-seam p-5\">\n <div className=\"flex items-center justify-between gap-3\">\n <h2 className=\"text-lg font-semibold text-text-primary\">Floor Plans</h2>\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={() => navigate(`/venues/${venue.id}/floor-plans`)}>\n <SquareStack className=\"h-4 w-4\" />\n Manage Floor Plans\n </Button>\n </div>\n <div className=\"mt-4\">\n {floorPlans.length > 0 ? (\n <ul className=\"space-y-2.5\">\n {floorPlans.map((plan) => (\n <li\n key={plan.id}\n className=\"rounded-card border border-border-seam p-3 transition-[box-shadow,border-color] duration-200 hover:border-border-strong hover:shadow-elevation-1\"\n >\n <p className=\"font-medium text-text-primary\">{plan.name}</p>\n <p className=\"text-sm text-text-secondary\">\n {plan.imageUrl ? 'Image configured' : 'No image configured'}\n </p>\n </li>\n ))}\n </ul>\n ) : (\n <IllustratedEmptyState\n illustration=\"empty-files\"\n title=\"No floor plans have been added yet.\"\n className=\"py-8\"\n />\n )}\n </div>\n </GlassCard>\n </div>\n );\n}\n"],"mappings":"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"}