+
+ Captured automatically
+
- Found something broken or have a suggestion? Let us know.
+ Page:{' '}
+ {pageUrl}
-
-
-
- {/* Brand-blue gradient border: brand-300 → brand-500 → brand-700 */}
-
-
+
+
+
+
+
+
+
+ {[
+ {
+ value: 'Low',
+ label: 'Low',
+ description: 'Minor annoyance, workaround exists',
+ },
+ {
+ value: 'Medium',
+ label: 'Medium',
+ description: 'Impacts my workflow',
+ },
+ {
+ value: 'High',
+ label: 'High',
+ description: 'Blocking, data loss, or completely broken',
+ },
+ ].map(({ value, label, description }) => (
+
-
- For urgent issues, email{' '}
+
+ ))}
+
- )}
-
- {/* Bug form */}
- {view === 'bug' && (
-
- {/* Auto-captured context */}
-
-
Captured automatically
-
- Page: {pageUrl}
-
- {user?.name && (
-
- Reported by: {user.name}
-
- )}
-
- Browser: {getBrowser()}
-
-
- Date & time:{' '}
- {new Date().toLocaleString(undefined, {
- dateStyle: 'medium',
- timeStyle: 'short',
- })}
-
-
-
-
-
-
+ )}
-
-
- {[
- { value: 'Low', label: 'Low', description: 'Minor annoyance, workaround exists' },
- { value: 'Medium', label: 'Medium', description: 'Impacts my workflow' },
- { value: 'High', label: 'High', description: 'Blocking, data loss, or completely broken' },
- ].map(({ value, label, description }) => (
-
- ))}
+ {showError && (
+
+ {errorMsg}
+ )}
- {showSuccess && (
-
- )}
+
+
+
+
+
+ )}
- {showError && (
-
- {errorMsg}
-
- )}
+ {/* Feature request form */}
+ {view === 'feature' && (
+
+
+
+
-
-
-
-
+
+
+
+ setFeatureForm((f) => ({ ...f, whoWouldUse: e.target.value }))
+ }
+ disabled={formLocked}
+ className="flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50"
+ />
- )}
- {/* Feature request form */}
- {view === 'feature' && (
-
-
-
-
+
+
+
-
-
-
setFeatureForm((f) => ({ ...f, whoWouldUse: e.target.value }))}
- disabled={formLocked}
- className="flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50"
- />
+ {showSuccess && (
+
+ )}
-
-
-
+
+ )}
+
)
if (isMobile) {
@@ -993,10 +1183,26 @@ const BREADCRUMB_RESOURCES: Record<
{ label: string; listHref: string; resource: string }
> = {
well: { label: 'Wells', listHref: '/ocotillo/well', resource: 'thing-well' },
- contact: { label: 'Contacts', listHref: '/ocotillo/contact', resource: 'contact' },
- location: { label: 'Locations', listHref: '/ocotillo/location', resource: 'location' },
- sensor: { label: 'Sensors', listHref: '/ocotillo/sensor', resource: 'sensor' },
- sample: { label: 'Samples', listHref: '/ocotillo/sample', resource: 'sample' },
+ contact: {
+ label: 'Contacts',
+ listHref: '/ocotillo/contact',
+ resource: 'contact',
+ },
+ location: {
+ label: 'Locations',
+ listHref: '/ocotillo/location',
+ resource: 'location',
+ },
+ sensor: {
+ label: 'Sensors',
+ listHref: '/ocotillo/sensor',
+ resource: 'sensor',
+ },
+ sample: {
+ label: 'Samples',
+ listHref: '/ocotillo/sample',
+ resource: 'sample',
+ },
projects: {
label: 'Projects',
listHref: '/ocotillo/well/projects',
@@ -1023,14 +1229,20 @@ function NestedListBreadcrumb({
label: string
}) {
return (
-