@burdenoff/microfe-ecoimpacthub 2026.704.4 → 2026.709.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 (178) hide show
  1. package/dist/dev/main.d.ts +2 -0
  2. package/dist/dev/main.d.ts.map +1 -0
  3. package/dist/ecoimpacthub/EcoImpactHubRoot.d.ts +5 -0
  4. package/dist/ecoimpacthub/EcoImpactHubRoot.d.ts.map +1 -0
  5. package/dist/ecoimpacthub/EcoImpactHubRoutes.d.ts +4 -0
  6. package/dist/ecoimpacthub/EcoImpactHubRoutes.d.ts.map +1 -0
  7. package/dist/ecoimpacthub/EcoImpactHubRoutes.js +48 -40
  8. package/dist/ecoimpacthub/EcoImpactHubRoutes.js.map +1 -1
  9. package/dist/ecoimpacthub/components/DataTable.d.ts +28 -0
  10. package/dist/ecoimpacthub/components/DataTable.d.ts.map +1 -0
  11. package/dist/ecoimpacthub/components/EcoDiscussion.d.ts +18 -0
  12. package/dist/ecoimpacthub/components/EcoDiscussion.d.ts.map +1 -0
  13. package/dist/ecoimpacthub/components/EcoTags.d.ts +17 -0
  14. package/dist/ecoimpacthub/components/EcoTags.d.ts.map +1 -0
  15. package/dist/ecoimpacthub/components/EmptyState.d.ts +18 -0
  16. package/dist/ecoimpacthub/components/EmptyState.d.ts.map +1 -0
  17. package/dist/ecoimpacthub/components/EvidenceUpload.d.ts +14 -0
  18. package/dist/ecoimpacthub/components/EvidenceUpload.d.ts.map +1 -0
  19. package/dist/ecoimpacthub/components/FeatureFlagGate.d.ts +10 -0
  20. package/dist/ecoimpacthub/components/FeatureFlagGate.d.ts.map +1 -0
  21. package/dist/ecoimpacthub/components/FeatureFlagGate.js +8 -0
  22. package/dist/ecoimpacthub/components/FeatureFlagGate.js.map +1 -0
  23. package/dist/ecoimpacthub/components/FileLink.d.ts +15 -0
  24. package/dist/ecoimpacthub/components/FileLink.d.ts.map +1 -0
  25. package/dist/ecoimpacthub/components/FilterTabs.d.ts +18 -0
  26. package/dist/ecoimpacthub/components/FilterTabs.d.ts.map +1 -0
  27. package/dist/ecoimpacthub/components/MetricsCard.d.ts +23 -0
  28. package/dist/ecoimpacthub/components/MetricsCard.d.ts.map +1 -0
  29. package/dist/ecoimpacthub/components/MiniBar.d.ts +16 -0
  30. package/dist/ecoimpacthub/components/MiniBar.d.ts.map +1 -0
  31. package/dist/ecoimpacthub/components/PageLayout.d.ts +16 -0
  32. package/dist/ecoimpacthub/components/PageLayout.d.ts.map +1 -0
  33. package/dist/ecoimpacthub/components/Pagination.d.ts +22 -0
  34. package/dist/ecoimpacthub/components/Pagination.d.ts.map +1 -0
  35. package/dist/ecoimpacthub/components/StateViews.d.ts +24 -0
  36. package/dist/ecoimpacthub/components/StateViews.d.ts.map +1 -0
  37. package/dist/ecoimpacthub/components/StatusBadge.d.ts +9 -0
  38. package/dist/ecoimpacthub/components/StatusBadge.d.ts.map +1 -0
  39. package/dist/ecoimpacthub/components/Tabs.d.ts +17 -0
  40. package/dist/ecoimpacthub/components/Tabs.d.ts.map +1 -0
  41. package/dist/ecoimpacthub/components/index.d.ts +19 -0
  42. package/dist/ecoimpacthub/components/index.d.ts.map +1 -0
  43. package/dist/ecoimpacthub/context/EcoImpactHubContext.d.ts +16 -0
  44. package/dist/ecoimpacthub/context/EcoImpactHubContext.d.ts.map +1 -0
  45. package/dist/ecoimpacthub/context/index.d.ts +6 -0
  46. package/dist/ecoimpacthub/context/index.d.ts.map +1 -0
  47. package/dist/ecoimpacthub/hooks/index.d.ts +10 -0
  48. package/dist/ecoimpacthub/hooks/index.d.ts.map +1 -0
  49. package/dist/ecoimpacthub/hooks/useCursorPager.d.ts +33 -0
  50. package/dist/ecoimpacthub/hooks/useCursorPager.d.ts.map +1 -0
  51. package/dist/ecoimpacthub/hooks/useEcoComments.d.ts +36 -0
  52. package/dist/ecoimpacthub/hooks/useEcoComments.d.ts.map +1 -0
  53. package/dist/ecoimpacthub/hooks/useEcoFiles.d.ts +47 -0
  54. package/dist/ecoimpacthub/hooks/useEcoFiles.d.ts.map +1 -0
  55. package/dist/ecoimpacthub/hooks/useEcoImpactHubApi.d.ts +104 -0
  56. package/dist/ecoimpacthub/hooks/useEcoImpactHubApi.d.ts.map +1 -0
  57. package/dist/ecoimpacthub/hooks/useEcoTags.d.ts +44 -0
  58. package/dist/ecoimpacthub/hooks/useEcoTags.d.ts.map +1 -0
  59. package/dist/ecoimpacthub/index.d.ts +10 -0
  60. package/dist/ecoimpacthub/index.d.ts.map +1 -0
  61. package/dist/ecoimpacthub/index.js +2 -0
  62. package/dist/ecoimpacthub/pages/DashboardPage.d.ts +10 -0
  63. package/dist/ecoimpacthub/pages/DashboardPage.d.ts.map +1 -0
  64. package/dist/ecoimpacthub/pages/DashboardPage.js +345 -189
  65. package/dist/ecoimpacthub/pages/DashboardPage.js.map +1 -1
  66. package/dist/ecoimpacthub/pages/_shared/ConservationBadge.d.ts +9 -0
  67. package/dist/ecoimpacthub/pages/_shared/ConservationBadge.d.ts.map +1 -0
  68. package/dist/ecoimpacthub/pages/_shared/ConservationBadge.js +58 -0
  69. package/dist/ecoimpacthub/pages/_shared/ConservationBadge.js.map +1 -0
  70. package/dist/ecoimpacthub/pages/_shared/EvidenceThumb.d.ts +23 -0
  71. package/dist/ecoimpacthub/pages/_shared/EvidenceThumb.d.ts.map +1 -0
  72. package/dist/ecoimpacthub/pages/_shared/EvidenceThumb.js +70 -0
  73. package/dist/ecoimpacthub/pages/_shared/EvidenceThumb.js.map +1 -0
  74. package/dist/ecoimpacthub/pages/_shared/MethodBadge.d.ts +9 -0
  75. package/dist/ecoimpacthub/pages/_shared/MethodBadge.d.ts.map +1 -0
  76. package/dist/ecoimpacthub/pages/_shared/MethodBadge.js +51 -0
  77. package/dist/ecoimpacthub/pages/_shared/MethodBadge.js.map +1 -0
  78. package/dist/ecoimpacthub/pages/_shared/TaxonChip.d.ts +9 -0
  79. package/dist/ecoimpacthub/pages/_shared/TaxonChip.d.ts.map +1 -0
  80. package/dist/ecoimpacthub/pages/_shared/TaxonChip.js +29 -0
  81. package/dist/ecoimpacthub/pages/_shared/TaxonChip.js.map +1 -0
  82. package/dist/ecoimpacthub/pages/badges.d.ts +27 -0
  83. package/dist/ecoimpacthub/pages/badges.d.ts.map +1 -0
  84. package/dist/ecoimpacthub/pages/badges.js +71 -0
  85. package/dist/ecoimpacthub/pages/badges.js.map +1 -0
  86. package/dist/ecoimpacthub/pages/carbon/CarbonPage.d.ts +15 -0
  87. package/dist/ecoimpacthub/pages/carbon/CarbonPage.d.ts.map +1 -0
  88. package/dist/ecoimpacthub/pages/carbon/CarbonPage.js +337 -300
  89. package/dist/ecoimpacthub/pages/carbon/CarbonPage.js.map +1 -1
  90. package/dist/ecoimpacthub/pages/carbonVisuals.d.ts +47 -0
  91. package/dist/ecoimpacthub/pages/carbonVisuals.d.ts.map +1 -0
  92. package/dist/ecoimpacthub/pages/carbonVisuals.js +89 -0
  93. package/dist/ecoimpacthub/pages/carbonVisuals.js.map +1 -0
  94. package/dist/ecoimpacthub/pages/habitat/HabitatProjectDetailPage.d.ts +12 -0
  95. package/dist/ecoimpacthub/pages/habitat/HabitatProjectDetailPage.d.ts.map +1 -0
  96. package/dist/ecoimpacthub/pages/habitat/HabitatProjectDetailPage.js +252 -218
  97. package/dist/ecoimpacthub/pages/habitat/HabitatProjectDetailPage.js.map +1 -1
  98. package/dist/ecoimpacthub/pages/habitat/HabitatProjectsPage.d.ts +8 -0
  99. package/dist/ecoimpacthub/pages/habitat/HabitatProjectsPage.d.ts.map +1 -0
  100. package/dist/ecoimpacthub/pages/habitat/HabitatProjectsPage.js +15 -12
  101. package/dist/ecoimpacthub/pages/habitat/HabitatProjectsPage.js.map +1 -1
  102. package/dist/ecoimpacthub/pages/habitat/LifecycleProgress.d.ts +6 -0
  103. package/dist/ecoimpacthub/pages/habitat/LifecycleProgress.d.ts.map +1 -0
  104. package/dist/ecoimpacthub/pages/habitat/LifecycleProgress.js +168 -0
  105. package/dist/ecoimpacthub/pages/habitat/LifecycleProgress.js.map +1 -0
  106. package/dist/ecoimpacthub/pages/monitoring/MonitoringPage.d.ts +12 -0
  107. package/dist/ecoimpacthub/pages/monitoring/MonitoringPage.d.ts.map +1 -0
  108. package/dist/ecoimpacthub/pages/monitoring/MonitoringPage.js +30 -17
  109. package/dist/ecoimpacthub/pages/monitoring/MonitoringPage.js.map +1 -1
  110. package/dist/ecoimpacthub/pages/observations/ObservationsPage.d.ts +11 -0
  111. package/dist/ecoimpacthub/pages/observations/ObservationsPage.d.ts.map +1 -0
  112. package/dist/ecoimpacthub/pages/observations/ObservationsPage.js +236 -219
  113. package/dist/ecoimpacthub/pages/observations/ObservationsPage.js.map +1 -1
  114. package/dist/ecoimpacthub/pages/reports/ReportDetailPage.d.ts +11 -0
  115. package/dist/ecoimpacthub/pages/reports/ReportDetailPage.d.ts.map +1 -0
  116. package/dist/ecoimpacthub/pages/reports/ReportDetailPage.js +248 -212
  117. package/dist/ecoimpacthub/pages/reports/ReportDetailPage.js.map +1 -1
  118. package/dist/ecoimpacthub/pages/reports/ReportsPage.d.ts +8 -0
  119. package/dist/ecoimpacthub/pages/reports/ReportsPage.d.ts.map +1 -0
  120. package/dist/ecoimpacthub/pages/reports/ReportsPage.js +119 -118
  121. package/dist/ecoimpacthub/pages/reports/ReportsPage.js.map +1 -1
  122. package/dist/ecoimpacthub/pages/sites/SiteDetailPage.d.ts +10 -0
  123. package/dist/ecoimpacthub/pages/sites/SiteDetailPage.d.ts.map +1 -0
  124. package/dist/ecoimpacthub/pages/sites/SiteDetailPage.js +498 -370
  125. package/dist/ecoimpacthub/pages/sites/SiteDetailPage.js.map +1 -1
  126. package/dist/ecoimpacthub/pages/sites/SitesPage.d.ts +8 -0
  127. package/dist/ecoimpacthub/pages/sites/SitesPage.d.ts.map +1 -0
  128. package/dist/ecoimpacthub/pages/sites/SitesPage.js +109 -99
  129. package/dist/ecoimpacthub/pages/sites/SitesPage.js.map +1 -1
  130. package/dist/ecoimpacthub/pages/sites/siteTypeVisuals.d.ts +22 -0
  131. package/dist/ecoimpacthub/pages/sites/siteTypeVisuals.d.ts.map +1 -0
  132. package/dist/ecoimpacthub/pages/sites/siteTypeVisuals.js +64 -0
  133. package/dist/ecoimpacthub/pages/sites/siteTypeVisuals.js.map +1 -0
  134. package/dist/ecoimpacthub/pages/species/SpeciesDetailPage.d.ts +9 -0
  135. package/dist/ecoimpacthub/pages/species/SpeciesDetailPage.d.ts.map +1 -0
  136. package/dist/ecoimpacthub/pages/species/SpeciesDetailPage.js +275 -259
  137. package/dist/ecoimpacthub/pages/species/SpeciesDetailPage.js.map +1 -1
  138. package/dist/ecoimpacthub/pages/species/SpeciesPage.d.ts +8 -0
  139. package/dist/ecoimpacthub/pages/species/SpeciesPage.d.ts.map +1 -0
  140. package/dist/ecoimpacthub/pages/species/SpeciesPage.js +235 -177
  141. package/dist/ecoimpacthub/pages/species/SpeciesPage.js.map +1 -1
  142. package/dist/ecoimpacthub/services/createSandboxAssistantTransport.d.ts +33 -0
  143. package/dist/ecoimpacthub/services/createSandboxAssistantTransport.d.ts.map +1 -0
  144. package/dist/ecoimpacthub/services/createSandboxAssistantTransport.js +42 -0
  145. package/dist/ecoimpacthub/services/createSandboxAssistantTransport.js.map +1 -0
  146. package/dist/ecoimpacthub/services/index.d.ts +6 -0
  147. package/dist/ecoimpacthub/services/index.d.ts.map +1 -0
  148. package/dist/ecoimpacthub/services/index.js +1 -0
  149. package/dist/ecoimpacthub/types/index.d.ts +417 -0
  150. package/dist/ecoimpacthub/types/index.d.ts.map +1 -0
  151. package/dist/ecoimpacthub/utils/cn.d.ts +4 -0
  152. package/dist/ecoimpacthub/utils/cn.d.ts.map +1 -0
  153. package/dist/ecoimpacthub/utils/formatters.d.ts +26 -0
  154. package/dist/ecoimpacthub/utils/formatters.d.ts.map +1 -0
  155. package/dist/ecoimpacthub/utils/i18n.d.ts +6 -0
  156. package/dist/ecoimpacthub/utils/i18n.d.ts.map +1 -0
  157. package/dist/ecoimpacthub/utils/index.d.ts +9 -0
  158. package/dist/ecoimpacthub/utils/index.d.ts.map +1 -0
  159. package/dist/ecoimpacthub/utils/navigation.d.ts +14 -0
  160. package/dist/ecoimpacthub/utils/navigation.d.ts.map +1 -0
  161. package/dist/generated/global-operations.d.ts +2 -0
  162. package/dist/generated/global-operations.d.ts.map +1 -0
  163. package/dist/generated/global-types.d.ts +18199 -0
  164. package/dist/generated/global-types.d.ts.map +1 -0
  165. package/dist/generated/wspace-operations.d.ts +2 -0
  166. package/dist/generated/wspace-operations.d.ts.map +1 -0
  167. package/dist/generated/wspace-types.d.ts +43046 -0
  168. package/dist/generated/wspace-types.d.ts.map +1 -0
  169. package/dist/index.d.ts +2 -0
  170. package/dist/index.d.ts.map +1 -0
  171. package/dist/index.js +2 -1
  172. package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js +305 -0
  173. package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js.map +1 -0
  174. package/dist/node_modules/recharts/es6/context/chartLayoutContext.js +44 -33
  175. package/dist/node_modules/recharts/es6/context/chartLayoutContext.js.map +1 -1
  176. package/dist/node_modules/recharts/es6/util/ChartUtils.js +31 -23
  177. package/dist/node_modules/recharts/es6/util/ChartUtils.js.map +1 -1
  178. package/package.json +5 -1
@@ -1,22 +1,23 @@
1
1
  import { useEcoImpactHub as e } from "../../context/EcoImpactHubContext.js";
2
2
  import { PageLayout as t } from "../../components/PageLayout.js";
3
- import { formatEnumLabel as n, formatRelativeTime as r } from "../../utils/formatters.js";
4
- import { StatusBadge as i } from "../../components/StatusBadge.js";
5
- import { ErrorView as a, LoadingView as o } from "../../components/StateViews.js";
6
- import { EmptyState as s } from "../../components/EmptyState.js";
3
+ import { formatEnumLabel as n, formatRelativeTime as ee } from "../../utils/formatters.js";
4
+ import { ErrorView as te, LoadingView as ne } from "../../components/StateViews.js";
5
+ import { EmptyState as r } from "../../components/EmptyState.js";
7
6
  import "../../context/index.js";
8
- import { useEcoCreateSpecies as c, useEcoSpecies as l } from "../../hooks/useEcoImpactHubApi.js";
9
- import { useCursorPager as ee } from "../../hooks/useCursorPager.js";
7
+ import { useEcoCreateSpecies as re, useEcoSpecies as i } from "../../hooks/useEcoImpactHubApi.js";
8
+ import { useCursorPager as a } from "../../hooks/useCursorPager.js";
10
9
  import "../../hooks/index.js";
11
- import { DataTable as te } from "../../components/DataTable.js";
12
- import { Pagination as ne } from "../../components/Pagination.js";
13
- import { FilterTabs as u } from "../../components/FilterTabs.js";
14
- import { useMemo as d, useState as f } from "react";
15
- import { Plus as p, Rabbit as m, Star as h } from "lucide-react";
16
- import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
17
- import { Button as y, Input as b, Label as x, ResponsiveDialog as S, ResponsiveDialogContent as C, ResponsiveDialogDescription as w, ResponsiveDialogFooter as re, ResponsiveDialogHeader as ie, ResponsiveDialogTitle as ae, Select as T, SelectContent as E, SelectItem as D, SelectTrigger as O, SelectValue as k, Textarea as A } from "@burdenoff/fe-libs/ui";
10
+ import { DataTable as o } from "../../components/DataTable.js";
11
+ import { Pagination as s } from "../../components/Pagination.js";
12
+ import { FilterTabs as c } from "../../components/FilterTabs.js";
13
+ import { ConservationBadge as ie } from "../_shared/ConservationBadge.js";
14
+ import { TaxonChip as ae } from "../_shared/TaxonChip.js";
15
+ import { useMemo as l, useState as u } from "react";
16
+ import { Plus as d, Rabbit as oe, Search as f, Star as p } from "lucide-react";
17
+ import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
18
+ import { Button as _, GlassCard as v, Input as y, Label as b, ResponsiveDialog as x, ResponsiveDialogContent as se, ResponsiveDialogDescription as ce, ResponsiveDialogFooter as le, ResponsiveDialogHeader as ue, ResponsiveDialogTitle as de, Select as S, SelectContent as C, SelectItem as w, SelectTrigger as T, SelectValue as E, Textarea as D } from "@burdenoff/fe-libs/ui";
18
19
  //#region src/ecoimpacthub/pages/species/SpeciesPage.tsx
19
- var j = [
20
+ var O = [
20
21
  "MAMMAL",
21
22
  "BIRD",
22
23
  "REPTILE",
@@ -26,7 +27,7 @@ var j = [
26
27
  "PLANT",
27
28
  "FUNGI",
28
29
  "OTHER"
29
- ], M = [
30
+ ], k = [
30
31
  "LEAST_CONCERN",
31
32
  "NEAR_THREATENED",
32
33
  "VULNERABLE",
@@ -35,13 +36,13 @@ var j = [
35
36
  "EXTINCT_IN_WILD",
36
37
  "DATA_DEFICIENT",
37
38
  "NOT_EVALUATED"
38
- ], N = [{
39
+ ], A = [{
39
40
  value: "ALL",
40
41
  label: "All species"
41
42
  }, {
42
43
  value: "PRIORITY",
43
44
  label: "Priority only"
44
- }], P = 25, F = {
45
+ }], j = 25, M = {
45
46
  commonName: "",
46
47
  scientificName: "",
47
48
  taxonGroup: "MAMMAL",
@@ -49,284 +50,341 @@ var j = [
49
50
  isPriority: !1,
50
51
  description: ""
51
52
  };
52
- function I() {
53
- let { navigateTo: I } = e(), [L, R] = f("ALL"), [z, B] = f("ALL"), [V, H] = f("ALL"), U = ee(), [W, G] = f(!1), [K, q] = f(F), [J, Y] = f(null), { data: X, isLoading: oe, isError: se, refetch: ce } = l({
54
- taxonGroup: L === "ALL" ? void 0 : L,
55
- conservationStatus: z === "ALL" ? void 0 : z,
56
- priorityOnly: V === "PRIORITY" ? !0 : void 0,
53
+ function N() {
54
+ let { navigateTo: N } = e(), [P, F] = u("ALL"), [I, L] = u("ALL"), [R, z] = u("ALL"), [B, V] = u(""), H = a(), [fe, U] = u(!1), [W, G] = u(M), [K, q] = u(null), { data: J, isLoading: pe, isError: me, refetch: he } = i({
55
+ taxonGroup: P === "ALL" ? void 0 : P,
56
+ conservationStatus: I === "ALL" ? void 0 : I,
57
+ priorityOnly: R === "PRIORITY" ? !0 : void 0,
57
58
  pagination: {
58
- limit: P,
59
- cursor: U.cursor
59
+ limit: j,
60
+ cursor: H.cursor
60
61
  }
61
- }), Z = c(), Q = d(() => X?.items ?? [], [X]), le = [
62
+ }), Y = re(), X = l(() => J?.items ?? [], [J]), Z = B.trim().toLowerCase(), Q = l(() => Z ? X.filter((e) => e.commonName.toLowerCase().includes(Z) || (e.scientificName?.toLowerCase().includes(Z) ?? !1)) : X, [X, Z]), ge = [
62
63
  {
63
64
  key: "name",
64
65
  header: "Species",
65
- render: (e) => /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
66
- className: "font-semibold text-text-primary",
67
- children: e.commonName
68
- }), e.scientificName && /* @__PURE__ */ _("p", {
69
- className: "text-xs italic text-text-tertiary",
70
- children: e.scientificName
71
- })] })
66
+ render: (e) => /* @__PURE__ */ g("div", {
67
+ className: "min-w-0",
68
+ children: [/* @__PURE__ */ h("p", {
69
+ className: "font-semibold text-text-primary",
70
+ children: e.commonName
71
+ }), e.scientificName && /* @__PURE__ */ h("p", {
72
+ className: "truncate text-xs italic text-text-tertiary",
73
+ children: e.scientificName
74
+ })]
75
+ })
72
76
  },
73
77
  {
74
78
  key: "taxonGroup",
75
- header: "Group",
79
+ header: "Taxon",
76
80
  hideOnMobile: !0,
77
- render: (e) => /* @__PURE__ */ _("span", {
78
- className: "text-text-secondary",
79
- children: n(e.taxonGroup)
80
- })
81
+ render: (e) => /* @__PURE__ */ h(ae, { group: e.taxonGroup })
81
82
  },
82
83
  {
83
84
  key: "conservationStatus",
84
- header: "Conservation",
85
- render: (e) => /* @__PURE__ */ _(i, { status: e.conservationStatus })
85
+ header: "Conservation status",
86
+ render: (e) => /* @__PURE__ */ h(ie, { status: e.conservationStatus })
86
87
  },
87
88
  {
88
89
  key: "priority",
89
90
  header: "Priority",
90
91
  align: "center",
91
- render: (e) => e.isPriority ? /* @__PURE__ */ _("span", {
92
- className: "inline-flex justify-center text-status-warning-text",
92
+ render: (e) => e.isPriority ? /* @__PURE__ */ h("span", {
93
+ className: "inline-flex items-center justify-center gap-1 rounded-full bg-status-warning-bg-subtle px-2 py-0.5 text-status-warning-text",
93
94
  title: "Priority species",
94
- children: /* @__PURE__ */ _(h, { className: "h-4 w-4 fill-current" })
95
- }) : null
95
+ children: /* @__PURE__ */ h(p, { className: "h-3.5 w-3.5 fill-current" })
96
+ }) : /* @__PURE__ */ h("span", {
97
+ className: "text-text-tertiary",
98
+ title: "Not prioritised",
99
+ children: "—"
100
+ })
96
101
  },
97
102
  {
98
103
  key: "updated",
99
104
  header: "Updated",
100
105
  align: "right",
101
106
  hideOnMobile: !0,
102
- render: (e) => /* @__PURE__ */ _("span", {
103
- className: "text-text-tertiary",
104
- children: r(e.updatedAt)
107
+ render: (e) => /* @__PURE__ */ h("span", {
108
+ className: "whitespace-nowrap text-text-tertiary",
109
+ children: ee(e.updatedAt)
105
110
  })
106
111
  }
107
112
  ], $ = () => {
108
- q(F), Y(null);
113
+ G(M), q(null);
109
114
  };
110
- return /* @__PURE__ */ v(t, {
115
+ return /* @__PURE__ */ g(t, {
111
116
  title: "Species",
112
117
  description: "Tracked taxa — conservation status, priority focus & field observations.",
113
- actions: /* @__PURE__ */ v(y, {
114
- onClick: () => G(!0),
115
- children: [/* @__PURE__ */ _(p, { className: "mr-1.5 h-4 w-4" }), " New species"]
118
+ actions: /* @__PURE__ */ g(_, {
119
+ onClick: () => U(!0),
120
+ children: [/* @__PURE__ */ h(d, { className: "mr-1.5 h-4 w-4" }), " New species"]
116
121
  }),
117
122
  children: [
118
- /* @__PURE__ */ v("div", {
119
- className: "mb-5 flex flex-wrap items-center gap-3",
120
- children: [
121
- /* @__PURE__ */ _(u, {
122
- options: N,
123
- value: V,
123
+ /* @__PURE__ */ h(v, {
124
+ treatment: "plain",
125
+ className: "mb-5 p-4",
126
+ children: /* @__PURE__ */ g("div", {
127
+ className: "flex flex-col gap-3 lg:flex-row lg:items-end lg:justify-between",
128
+ children: [/* @__PURE__ */ g("div", {
129
+ className: "flex flex-wrap items-end gap-3",
130
+ children: [
131
+ /* @__PURE__ */ g("div", {
132
+ className: "grid gap-1.5",
133
+ children: [/* @__PURE__ */ h("span", {
134
+ className: "text-xs font-medium uppercase tracking-wide text-text-tertiary",
135
+ children: "Taxon group"
136
+ }), /* @__PURE__ */ g(S, {
137
+ value: P,
138
+ onValueChange: (e) => {
139
+ F(e), H.reset();
140
+ },
141
+ children: [/* @__PURE__ */ h(T, {
142
+ className: "w-44",
143
+ children: /* @__PURE__ */ h(E, { placeholder: "All groups" })
144
+ }), /* @__PURE__ */ g(C, { children: [/* @__PURE__ */ h(w, {
145
+ value: "ALL",
146
+ children: "All groups"
147
+ }), O.map((e) => /* @__PURE__ */ h(w, {
148
+ value: e,
149
+ children: n(e)
150
+ }, e))] })]
151
+ })]
152
+ }),
153
+ /* @__PURE__ */ g("div", {
154
+ className: "grid gap-1.5",
155
+ children: [/* @__PURE__ */ h("span", {
156
+ className: "text-xs font-medium uppercase tracking-wide text-text-tertiary",
157
+ children: "Conservation status"
158
+ }), /* @__PURE__ */ g(S, {
159
+ value: I,
160
+ onValueChange: (e) => {
161
+ L(e), H.reset();
162
+ },
163
+ children: [/* @__PURE__ */ h(T, {
164
+ className: "w-52",
165
+ children: /* @__PURE__ */ h(E, { placeholder: "All conservation" })
166
+ }), /* @__PURE__ */ g(C, { children: [/* @__PURE__ */ h(w, {
167
+ value: "ALL",
168
+ children: "All conservation"
169
+ }), k.map((e) => /* @__PURE__ */ h(w, {
170
+ value: e,
171
+ children: n(e)
172
+ }, e))] })]
173
+ })]
174
+ }),
175
+ /* @__PURE__ */ g("div", {
176
+ className: "grid gap-1.5",
177
+ children: [/* @__PURE__ */ h("span", {
178
+ className: "text-xs font-medium uppercase tracking-wide text-text-tertiary",
179
+ children: "Search this page"
180
+ }), /* @__PURE__ */ g("div", {
181
+ className: "relative",
182
+ children: [/* @__PURE__ */ h(f, { className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-text-tertiary" }), /* @__PURE__ */ h(y, {
183
+ value: B,
184
+ onChange: (e) => V(e.target.value),
185
+ placeholder: "Common or scientific name…",
186
+ className: "w-full pl-9 sm:w-64",
187
+ "aria-label": "Search loaded species by name"
188
+ })]
189
+ })]
190
+ })
191
+ ]
192
+ }), /* @__PURE__ */ h(c, {
193
+ options: A,
194
+ value: R,
124
195
  onChange: (e) => {
125
- H(e), U.reset();
196
+ z(e), H.reset();
126
197
  }
127
- }),
128
- /* @__PURE__ */ v(T, {
129
- value: L,
130
- onValueChange: (e) => {
131
- R(e), U.reset();
132
- },
133
- children: [/* @__PURE__ */ _(O, {
134
- className: "w-44",
135
- children: /* @__PURE__ */ _(k, { placeholder: "All groups" })
136
- }), /* @__PURE__ */ v(E, { children: [/* @__PURE__ */ _(D, {
137
- value: "ALL",
138
- children: "All groups"
139
- }), j.map((e) => /* @__PURE__ */ _(D, {
140
- value: e,
141
- children: n(e)
142
- }, e))] })]
143
- }),
144
- /* @__PURE__ */ v(T, {
145
- value: z,
146
- onValueChange: (e) => {
147
- B(e), U.reset();
148
- },
149
- children: [/* @__PURE__ */ _(O, {
150
- className: "w-52",
151
- children: /* @__PURE__ */ _(k, { placeholder: "All conservation" })
152
- }), /* @__PURE__ */ v(E, { children: [/* @__PURE__ */ _(D, {
153
- value: "ALL",
154
- children: "All conservation"
155
- }), M.map((e) => /* @__PURE__ */ _(D, {
156
- value: e,
157
- children: n(e)
158
- }, e))] })]
159
- })
160
- ]
198
+ })]
199
+ })
161
200
  }),
162
- oe ? /* @__PURE__ */ _(o, { label: "Loading species…" }) : se ? /* @__PURE__ */ _(a, {
201
+ pe ? /* @__PURE__ */ h(ne, { label: "Loading species…" }) : me ? /* @__PURE__ */ h(te, {
163
202
  message: "Couldn't load species.",
164
- onRetry: () => ce()
165
- }) : Q.length === 0 ? /* @__PURE__ */ _(s, {
203
+ onRetry: () => he()
204
+ }) : X.length === 0 ? /* @__PURE__ */ h(r, {
166
205
  illustration: "empty-data",
167
- icon: /* @__PURE__ */ _(m, { className: "h-10 w-10" }),
206
+ icon: /* @__PURE__ */ h(oe, { className: "h-10 w-10" }),
168
207
  title: "No species yet",
169
- description: L === "ALL" && z === "ALL" && V === "ALL" ? "Register your first species to start logging field observations." : "No species match these filters.",
170
- action: /* @__PURE__ */ v(y, {
171
- onClick: () => G(!0),
172
- children: [/* @__PURE__ */ _(p, { className: "mr-1.5 h-4 w-4" }), " New species"]
208
+ description: P === "ALL" && I === "ALL" && R === "ALL" ? "Register your first species to start logging field observations." : "No species match these filters.",
209
+ action: /* @__PURE__ */ g(_, {
210
+ onClick: () => U(!0),
211
+ children: [/* @__PURE__ */ h(d, { className: "mr-1.5 h-4 w-4" }), " New species"]
173
212
  })
174
- }) : /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(te, {
175
- columns: le,
213
+ }) : Q.length === 0 ? /* @__PURE__ */ h(r, {
214
+ icon: /* @__PURE__ */ h(f, { className: "h-10 w-10" }),
215
+ title: "No matches on this page",
216
+ description: `No species on this page match “${B.trim()}”. Clear the search or page through the catalog.`,
217
+ action: /* @__PURE__ */ h(_, {
218
+ variant: "outline",
219
+ onClick: () => V(""),
220
+ children: "Clear search"
221
+ })
222
+ }) : /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(o, {
223
+ columns: ge,
176
224
  rows: Q,
177
225
  rowKey: (e) => e.id,
178
- onRowClick: (e) => I(`species/${e.id}`)
179
- }), /* @__PURE__ */ _(ne, {
180
- page: U.page,
181
- pageSize: P,
182
- itemCount: Q.length,
183
- hasMore: X?.pageInfo?.hasMore ?? !1,
184
- onPageChange: (e) => U.onPageChange(e, X?.pageInfo?.cursor)
226
+ onRowClick: (e) => N(`species/${e.id}`)
227
+ }), Z ? /* @__PURE__ */ g("p", {
228
+ className: "mt-4 text-sm text-text-secondary tabular-nums",
229
+ children: [
230
+ Q.length,
231
+ " of ",
232
+ X.length,
233
+ " on this page match “",
234
+ B.trim(),
235
+ "”"
236
+ ]
237
+ }) : /* @__PURE__ */ h(s, {
238
+ page: H.page,
239
+ pageSize: j,
240
+ itemCount: X.length,
241
+ hasMore: J?.pageInfo?.hasMore ?? !1,
242
+ onPageChange: (e) => H.onPageChange(e, J?.pageInfo?.cursor)
185
243
  })] }),
186
- /* @__PURE__ */ _(S, {
187
- open: W,
244
+ /* @__PURE__ */ h(x, {
245
+ open: fe,
188
246
  onOpenChange: (e) => {
189
- G(e), e || $();
247
+ U(e), e || $();
190
248
  },
191
- children: /* @__PURE__ */ v(C, { children: [
192
- /* @__PURE__ */ v(ie, { children: [/* @__PURE__ */ _(ae, { children: "New species" }), /* @__PURE__ */ _(w, { children: "Register a taxon to track its conservation status and field observations." })] }),
193
- /* @__PURE__ */ v("div", {
249
+ children: /* @__PURE__ */ g(se, { children: [
250
+ /* @__PURE__ */ g(ue, { children: [/* @__PURE__ */ h(de, { children: "New species" }), /* @__PURE__ */ h(ce, { children: "Register a taxon to track its conservation status and field observations." })] }),
251
+ /* @__PURE__ */ g("div", {
194
252
  className: "grid gap-4 py-2",
195
253
  children: [
196
- /* @__PURE__ */ v("div", {
254
+ /* @__PURE__ */ g("div", {
197
255
  className: "grid gap-2 sm:grid-cols-2",
198
- children: [/* @__PURE__ */ v("div", {
256
+ children: [/* @__PURE__ */ g("div", {
199
257
  className: "grid gap-1.5",
200
- children: [/* @__PURE__ */ _(x, {
258
+ children: [/* @__PURE__ */ h(b, {
201
259
  htmlFor: "commonName",
202
260
  children: "Common name *"
203
- }), /* @__PURE__ */ _(b, {
261
+ }), /* @__PURE__ */ h(y, {
204
262
  id: "commonName",
205
- value: K.commonName,
206
- onChange: (e) => q({
207
- ...K,
263
+ value: W.commonName,
264
+ onChange: (e) => G({
265
+ ...W,
208
266
  commonName: e.target.value
209
267
  }),
210
268
  placeholder: "Indian Pangolin"
211
269
  })]
212
- }), /* @__PURE__ */ v("div", {
270
+ }), /* @__PURE__ */ g("div", {
213
271
  className: "grid gap-1.5",
214
- children: [/* @__PURE__ */ _(x, {
272
+ children: [/* @__PURE__ */ h(b, {
215
273
  htmlFor: "scientificName",
216
274
  children: "Scientific name"
217
- }), /* @__PURE__ */ _(b, {
275
+ }), /* @__PURE__ */ h(y, {
218
276
  id: "scientificName",
219
- value: K.scientificName,
220
- onChange: (e) => q({
221
- ...K,
277
+ value: W.scientificName,
278
+ onChange: (e) => G({
279
+ ...W,
222
280
  scientificName: e.target.value
223
281
  }),
224
282
  placeholder: "Manis crassicaudata"
225
283
  })]
226
284
  })]
227
285
  }),
228
- /* @__PURE__ */ v("div", {
286
+ /* @__PURE__ */ g("div", {
229
287
  className: "grid gap-2 sm:grid-cols-2",
230
- children: [/* @__PURE__ */ v("div", {
288
+ children: [/* @__PURE__ */ g("div", {
231
289
  className: "grid gap-1.5",
232
- children: [/* @__PURE__ */ _(x, {
290
+ children: [/* @__PURE__ */ h(b, {
233
291
  htmlFor: "taxonGroup",
234
292
  children: "Taxon group"
235
- }), /* @__PURE__ */ v(T, {
236
- value: K.taxonGroup,
237
- onValueChange: (e) => q({
238
- ...K,
293
+ }), /* @__PURE__ */ g(S, {
294
+ value: W.taxonGroup,
295
+ onValueChange: (e) => G({
296
+ ...W,
239
297
  taxonGroup: e
240
298
  }),
241
- children: [/* @__PURE__ */ _(O, {
299
+ children: [/* @__PURE__ */ h(T, {
242
300
  id: "taxonGroup",
243
- children: /* @__PURE__ */ _(k, {})
244
- }), /* @__PURE__ */ _(E, { children: j.map((e) => /* @__PURE__ */ _(D, {
301
+ children: /* @__PURE__ */ h(E, {})
302
+ }), /* @__PURE__ */ h(C, { children: O.map((e) => /* @__PURE__ */ h(w, {
245
303
  value: e,
246
304
  children: n(e)
247
305
  }, e)) })]
248
306
  })]
249
- }), /* @__PURE__ */ v("div", {
307
+ }), /* @__PURE__ */ g("div", {
250
308
  className: "grid gap-1.5",
251
- children: [/* @__PURE__ */ _(x, {
309
+ children: [/* @__PURE__ */ h(b, {
252
310
  htmlFor: "conservationStatus",
253
311
  children: "Conservation status"
254
- }), /* @__PURE__ */ v(T, {
255
- value: K.conservationStatus,
256
- onValueChange: (e) => q({
257
- ...K,
312
+ }), /* @__PURE__ */ g(S, {
313
+ value: W.conservationStatus,
314
+ onValueChange: (e) => G({
315
+ ...W,
258
316
  conservationStatus: e
259
317
  }),
260
- children: [/* @__PURE__ */ _(O, {
318
+ children: [/* @__PURE__ */ h(T, {
261
319
  id: "conservationStatus",
262
- children: /* @__PURE__ */ _(k, {})
263
- }), /* @__PURE__ */ _(E, { children: M.map((e) => /* @__PURE__ */ _(D, {
320
+ children: /* @__PURE__ */ h(E, {})
321
+ }), /* @__PURE__ */ h(C, { children: k.map((e) => /* @__PURE__ */ h(w, {
264
322
  value: e,
265
323
  children: n(e)
266
324
  }, e)) })]
267
325
  })]
268
326
  })]
269
327
  }),
270
- /* @__PURE__ */ v("label", {
328
+ /* @__PURE__ */ g("label", {
271
329
  className: "flex items-center gap-2 text-sm text-text-primary",
272
- children: [/* @__PURE__ */ _("input", {
330
+ children: [/* @__PURE__ */ h("input", {
273
331
  type: "checkbox",
274
- checked: K.isPriority,
275
- onChange: (e) => q({
276
- ...K,
332
+ checked: W.isPriority,
333
+ onChange: (e) => G({
334
+ ...W,
277
335
  isPriority: e.target.checked
278
336
  }),
279
337
  className: "h-4 w-4 rounded border-border-seam accent-action-primary-bg"
280
338
  }), "Mark as priority species"]
281
339
  }),
282
- /* @__PURE__ */ v("div", {
340
+ /* @__PURE__ */ g("div", {
283
341
  className: "grid gap-1.5",
284
- children: [/* @__PURE__ */ _(x, {
342
+ children: [/* @__PURE__ */ h(b, {
285
343
  htmlFor: "description",
286
344
  children: "Description"
287
- }), /* @__PURE__ */ _(A, {
345
+ }), /* @__PURE__ */ h(D, {
288
346
  id: "description",
289
- value: K.description,
290
- onChange: (e) => q({
291
- ...K,
347
+ value: W.description,
348
+ onChange: (e) => G({
349
+ ...W,
292
350
  description: e.target.value
293
351
  }),
294
352
  placeholder: "Optional notes on habitat, range or identification.",
295
353
  rows: 2
296
354
  })]
297
355
  }),
298
- J && /* @__PURE__ */ _("p", {
356
+ K && /* @__PURE__ */ h("p", {
299
357
  className: "text-sm text-status-error-text",
300
- children: J
358
+ children: K
301
359
  })
302
360
  ]
303
361
  }),
304
- /* @__PURE__ */ v(re, { children: [/* @__PURE__ */ _(y, {
362
+ /* @__PURE__ */ g(le, { children: [/* @__PURE__ */ h(_, {
305
363
  variant: "outline",
306
- onClick: () => G(!1),
364
+ onClick: () => U(!1),
307
365
  children: "Cancel"
308
- }), /* @__PURE__ */ _(y, {
366
+ }), /* @__PURE__ */ h(_, {
309
367
  onClick: async () => {
310
- if (!K.commonName.trim()) {
311
- Y("Common name is required.");
368
+ if (!W.commonName.trim()) {
369
+ q("Common name is required.");
312
370
  return;
313
371
  }
314
372
  try {
315
- let e = await Z.mutateAsync({
316
- commonName: K.commonName.trim(),
317
- scientificName: K.scientificName.trim() || null,
318
- taxonGroup: K.taxonGroup,
319
- conservationStatus: K.conservationStatus,
320
- isPriority: K.isPriority,
321
- description: K.description.trim() || null
373
+ let e = await Y.mutateAsync({
374
+ commonName: W.commonName.trim(),
375
+ scientificName: W.scientificName.trim() || null,
376
+ taxonGroup: W.taxonGroup,
377
+ conservationStatus: W.conservationStatus,
378
+ isPriority: W.isPriority,
379
+ description: W.description.trim() || null
322
380
  });
323
- G(!1), $(), I(`species/${e.id}`);
381
+ U(!1), $(), N(`species/${e.id}`);
324
382
  } catch (e) {
325
- Y(e instanceof Error ? e.message : "Failed to create species.");
383
+ q(e instanceof Error ? e.message : "Failed to create species.");
326
384
  }
327
385
  },
328
- disabled: Z.isPending,
329
- children: Z.isPending ? "Creating…" : "Create species"
386
+ disabled: Y.isPending,
387
+ children: Y.isPending ? "Creating…" : "Create species"
330
388
  })] })
331
389
  ] })
332
390
  })
@@ -334,6 +392,6 @@ function I() {
334
392
  });
335
393
  }
336
394
  //#endregion
337
- export { I as SpeciesPage };
395
+ export { N as SpeciesPage };
338
396
 
339
397
  //# sourceMappingURL=SpeciesPage.js.map