@innspel/react-native 0.9.4 → 0.10.0

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.
package/dist/index.d.cts CHANGED
@@ -654,6 +654,16 @@ declare const tekst: {
654
654
  readonly bildeFjernet: "Bildet er fjernet.";
655
655
  readonly svarFra: (leietaker: string) => string;
656
656
  readonly svarFraGenerisk: "Svar";
657
+ readonly leggTilMer: "Legg til mer";
658
+ readonly leggTilMerLabel: "Legg til mer på denne saken";
659
+ readonly leggTilMerPlaceholder: "Hva vil du legge til?";
660
+ readonly leggTilMerHint: "Blir stående på saken din, under det du alt har skrevet. Ikke et svar på svaret — det blir ingen samtale her.";
661
+ readonly avbryt: "Avbryt";
662
+ readonly duLaTil: (dato: string) => string;
663
+ readonly lagtTil: "Lagt til";
664
+ readonly tilleggTak: "Du har lagt til tre ganger. Har du mer, send et nytt innspill.";
665
+ readonly tilleggLukket: "Saken er avsluttet — send et nytt innspill.";
666
+ readonly tilleggFeil: (arsak: string) => string;
657
667
  readonly sendNytt: "Send nytt innspill";
658
668
  /** Tom tilstand: det finnes ikke noe «nytt» å sende når ingenting er sendt. */
659
669
  readonly sendForste: "Send innspill";
package/dist/index.d.ts CHANGED
@@ -654,6 +654,16 @@ declare const tekst: {
654
654
  readonly bildeFjernet: "Bildet er fjernet.";
655
655
  readonly svarFra: (leietaker: string) => string;
656
656
  readonly svarFraGenerisk: "Svar";
657
+ readonly leggTilMer: "Legg til mer";
658
+ readonly leggTilMerLabel: "Legg til mer på denne saken";
659
+ readonly leggTilMerPlaceholder: "Hva vil du legge til?";
660
+ readonly leggTilMerHint: "Blir stående på saken din, under det du alt har skrevet. Ikke et svar på svaret — det blir ingen samtale her.";
661
+ readonly avbryt: "Avbryt";
662
+ readonly duLaTil: (dato: string) => string;
663
+ readonly lagtTil: "Lagt til";
664
+ readonly tilleggTak: "Du har lagt til tre ganger. Har du mer, send et nytt innspill.";
665
+ readonly tilleggLukket: "Saken er avsluttet — send et nytt innspill.";
666
+ readonly tilleggFeil: (arsak: string) => string;
657
667
  readonly sendNytt: "Send nytt innspill";
658
668
  /** Tom tilstand: det finnes ikke noe «nytt» å sende når ingenting er sendt. */
659
669
  readonly sendForste: "Send innspill";
package/dist/index.js CHANGED
@@ -352,17 +352,20 @@ function useTema() {
352
352
 
353
353
  // src/widget/Widget.tsx
354
354
  import {
355
- InnspelApiError,
355
+ InnspelApiError as InnspelApiError2,
356
356
  InnspelQueueFullError
357
357
  } from "@innspel/core";
358
358
  import { useCallback as useCallback2, useContext as useContext3, useEffect as useEffect2, useRef as useRef3, useState as useState4 } from "react";
359
- import { KeyboardAvoidingView, Modal, Pressable as Pressable5, View as View8 } from "react-native";
359
+ import { KeyboardAvoidingView, Modal, Pressable as Pressable6, View as View8 } from "react-native";
360
360
  import { initialWindowMetrics, SafeAreaInsetsContext } from "react-native-safe-area-context";
361
361
 
362
362
  // src/Ikon.tsx
363
363
  import "react";
364
364
  import { SvgXml } from "react-native-svg";
365
365
 
366
+ // ../../node_modules/ionicons/dist/svg/add-outline.svg
367
+ var add_outline_default = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="ionicon"><path d="M256 112v288M400 256H112" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32px"/></svg>';
368
+
366
369
  // ../../node_modules/ionicons/dist/svg/arrow-back-outline.svg
367
370
  var arrow_back_outline_default = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="ionicon"><path d="M244 400 100 256l144-144M120 256h292" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="48px"/></svg>';
368
371
 
@@ -458,6 +461,7 @@ import { jsx } from "react/jsx-runtime";
458
461
  var utenTittel = (svg) => svg.replace(/<title>[\s\S]*?<\/title>/g, "");
459
462
  var IKONER = Object.fromEntries(
460
463
  Object.entries({
464
+ "add-outline": add_outline_default,
461
465
  "arrow-back-outline": arrow_back_outline_default,
462
466
  "brush-outline": brush_outline_default,
463
467
  // Fylte varianter: bare på sporvalgets to kort (DD-63), der ikonet bærer stemningen.
@@ -868,6 +872,17 @@ var tekst = {
868
872
  bildeFjernet: "Bildet er fjernet.",
869
873
  svarFra: (leietaker) => `Svar fra ${leietaker}`,
870
874
  svarFraGenerisk: "Svar",
875
+ // DD-69 — «Legg til mer»: innsenderens egne ord, ikke et svar på svaret.
876
+ leggTilMer: "Legg til mer",
877
+ leggTilMerLabel: "Legg til mer p\xE5 denne saken",
878
+ leggTilMerPlaceholder: "Hva vil du legge til?",
879
+ leggTilMerHint: "Blir st\xE5ende p\xE5 saken din, under det du alt har skrevet. Ikke et svar p\xE5 svaret \u2014 det blir ingen samtale her.",
880
+ avbryt: "Avbryt",
881
+ duLaTil: (dato) => `Du la til \xB7 ${dato}`,
882
+ lagtTil: "Lagt til",
883
+ tilleggTak: "Du har lagt til tre ganger. Har du mer, send et nytt innspill.",
884
+ tilleggLukket: "Saken er avsluttet \u2014 send et nytt innspill.",
885
+ tilleggFeil: (arsak) => `Kunne ikke legge til: ${arsak} Teksten din er beholdt.`,
871
886
  sendNytt: "Send nytt innspill",
872
887
  /** Tom tilstand: det finnes ikke noe «nytt» å sende når ingenting er sendt. */
873
888
  sendForste: "Send innspill",
@@ -1518,8 +1533,9 @@ function Kvittering({
1518
1533
  }
1519
1534
 
1520
1535
  // src/widget/MineInnspill.tsx
1536
+ import { InnspelApiError } from "@innspel/core";
1521
1537
  import { useEffect, useState as useState2 } from "react";
1522
- import { ActivityIndicator as ActivityIndicator2, ScrollView as ScrollView3, Text as Text6, View as View6 } from "react-native";
1538
+ import { ActivityIndicator as ActivityIndicator2, Pressable as Pressable4, ScrollView as ScrollView3, Text as Text6, TextInput as TextInput2, View as View6 } from "react-native";
1523
1539
 
1524
1540
  // src/widget/nyttSvar.ts
1525
1541
  var N\u00D8KKEL = "innspel:svar-sett";
@@ -1548,9 +1564,38 @@ function MineInnspill({
1548
1564
  laster,
1549
1565
  tenantName,
1550
1566
  onNytt,
1551
- storage
1567
+ storage,
1568
+ leggTil,
1569
+ onOppdatert,
1570
+ minTextLength,
1571
+ textMaxLength
1552
1572
  }) {
1553
1573
  const tema = useTema();
1574
+ const min = minTextLength ?? 10;
1575
+ const maks = textMaxLength ?? 280;
1576
+ const [apen, setApen] = useState2(null);
1577
+ const [utkast, setUtkast] = useState2("");
1578
+ const [sender, setSender] = useState2(false);
1579
+ const [feil, setFeil] = useState2();
1580
+ const [lagtTil, setLagtTil] = useState2();
1581
+ const send = async (id) => {
1582
+ if (!leggTil) return;
1583
+ setSender(true);
1584
+ setFeil(void 0);
1585
+ try {
1586
+ const sak = await leggTil(id, utkast.trim());
1587
+ onOppdatert?.(sak);
1588
+ setApen(null);
1589
+ setUtkast("");
1590
+ setLagtTil(id);
1591
+ } catch (e) {
1592
+ const kode = e instanceof InnspelApiError ? e.code : void 0;
1593
+ const tekstFeil = kode === "addendum_limit_reached" ? tekst.tilleggTak : kode === "submission_closed" ? tekst.tilleggLukket : tekst.tilleggFeil(e instanceof Error && e.message ? e.message : "ukjent feil.");
1594
+ setFeil({ id, tekst: tekstFeil });
1595
+ } finally {
1596
+ setSender(false);
1597
+ }
1598
+ };
1554
1599
  const [visning, setVisning] = useState2(() => rader.map((rad) => ({ rad, nytt: false })));
1555
1600
  useEffect(() => {
1556
1601
  let gjelder = true;
@@ -1572,7 +1617,16 @@ function MineInnspill({
1572
1617
  const venter = rad.pending === true;
1573
1618
  const v = venter ? venterVisning : statusVisning(rad.status, rad.type, rad.deadlineAt);
1574
1619
  const nokkel = venter ? rad.clientRef : rad.id;
1620
+ const sakId = venter ? void 0 : rad.id;
1575
1621
  const svar = venter ? void 0 : rad.reply;
1622
+ const tillegg = venter ? [] : rad.addenda ?? [];
1623
+ const kanLeggeTil = !venter && !!leggTil && rad.canAddAddendum === true;
1624
+ const taketN\u00E5dd = !venter && rad.canAddAddendum === false && tillegg.length >= 3;
1625
+ const feltApent = sakId !== void 0 && apen === sakId;
1626
+ const brukt = utkast.length;
1627
+ const forKort = brukt < min;
1628
+ const full = brukt >= maks;
1629
+ const visTeller = brukt >= maks * 0.8;
1576
1630
  return /* @__PURE__ */ jsxs6(Card, { dashed: venter, children: [
1577
1631
  /* @__PURE__ */ jsxs6(View6, { style: { flexDirection: "row", alignItems: "center", gap: tema.space.xs, flexWrap: "wrap" }, children: [
1578
1632
  /* @__PURE__ */ jsx7(Hint, { children: venter ? `${tekst.mineIkkeSendt} \xB7 ${rad.type === "onske" ? tekst.onske : tekst.feil}` : tekst.sakHode(rad.type === "onske" ? tekst.onske : tekst.feil, rad.id) }),
@@ -1603,10 +1657,123 @@ function MineInnspill({
1603
1657
  children: rad.text
1604
1658
  }
1605
1659
  ),
1660
+ tillegg.length > 0 ? /* @__PURE__ */ jsx7(View6, { testID: `tillegg-${sakId}`, style: { gap: tema.space.xs }, children: tillegg.map((a) => /* @__PURE__ */ jsxs6(
1661
+ View6,
1662
+ {
1663
+ style: {
1664
+ borderLeftWidth: tema.hairline * 2,
1665
+ borderLeftColor: tema.color.border,
1666
+ paddingLeft: tema.space.sm,
1667
+ gap: tema.space.xs
1668
+ },
1669
+ children: [
1670
+ /* @__PURE__ */ jsxs6(View6, { style: { flexDirection: "row", alignItems: "center", gap: tema.space.xs }, children: [
1671
+ /* @__PURE__ */ jsx7(Ikon, { navn: "add-outline", storrelse: "minste", farge: tema.color.textSecondary }),
1672
+ /* @__PURE__ */ jsx7(Text6, { style: { color: tema.color.textSecondary, fontSize: tema.font.small }, children: tekst.duLaTil(formaterFrist(a.createdAt)) })
1673
+ ] }),
1674
+ /* @__PURE__ */ jsx7(Text6, { style: { color: tema.color.textPrimary, fontSize: tema.font.small, lineHeight: tema.lineHeight.small }, children: a.text })
1675
+ ]
1676
+ },
1677
+ a.id
1678
+ )) }) : null,
1606
1679
  /* @__PURE__ */ jsxs6(View6, { style: { gap: tema.space.xs }, children: [
1607
1680
  /* @__PURE__ */ jsx7(StatusPill, { ikon: v.ikon, etikett: v.etikett, fg: v.fg, bg: v.bg }),
1608
1681
  /* @__PURE__ */ jsx7(Hint, { children: v.lofte })
1609
1682
  ] }),
1683
+ sakId !== void 0 && lagtTil === sakId ? /* @__PURE__ */ jsx7(Text6, { accessibilityLiveRegion: "polite", testID: `lagt-til-${sakId}`, style: { color: tema.color.success, fontSize: tema.font.small }, children: tekst.lagtTil }) : null,
1684
+ feltApent ? /* @__PURE__ */ jsxs6(View6, { testID: `tillegg-felt-${sakId}`, style: { gap: tema.space.sm }, children: [
1685
+ /* @__PURE__ */ jsx7(Text6, { style: { color: tema.color.textSecondary, fontSize: tema.font.small }, children: tekst.leggTilMerLabel }),
1686
+ /* @__PURE__ */ jsx7(
1687
+ TextInput2,
1688
+ {
1689
+ testID: "tillegg-tekst",
1690
+ accessibilityLabel: tekst.leggTilMerLabel,
1691
+ value: utkast,
1692
+ onChangeText: setUtkast,
1693
+ maxLength: maks,
1694
+ multiline: true,
1695
+ numberOfLines: 3,
1696
+ autoFocus: true,
1697
+ placeholder: tekst.leggTilMerPlaceholder,
1698
+ placeholderTextColor: tema.color.textMuted,
1699
+ style: {
1700
+ backgroundColor: tema.color.surfaceRaised,
1701
+ borderWidth: tema.hairline,
1702
+ borderColor: full ? tema.color.warning : tema.color.borderStrong,
1703
+ borderRadius: tema.radius.md,
1704
+ padding: tema.space.md,
1705
+ color: tema.color.textPrimary,
1706
+ fontSize: tema.font.body,
1707
+ lineHeight: tema.lineHeight.body,
1708
+ minHeight: tema.touch * 2,
1709
+ textAlignVertical: "top"
1710
+ }
1711
+ }
1712
+ ),
1713
+ visTeller ? /* @__PURE__ */ jsxs6(
1714
+ Text6,
1715
+ {
1716
+ testID: "tillegg-teller",
1717
+ accessibilityLiveRegion: full ? "assertive" : "polite",
1718
+ style: { alignSelf: "flex-end", color: full ? tema.color.warning : tema.color.textMuted, fontSize: tema.font.small },
1719
+ children: [
1720
+ brukt,
1721
+ " / ",
1722
+ maks,
1723
+ full ? tekst.tellerFull : ""
1724
+ ]
1725
+ }
1726
+ ) : null,
1727
+ feil?.id === sakId ? /* @__PURE__ */ jsx7(Text6, { accessibilityLiveRegion: "assertive", testID: `tillegg-feil-${sakId}`, style: { color: tema.color.danger, fontSize: tema.font.small, lineHeight: tema.lineHeight.small }, children: feil.tekst }) : null,
1728
+ /* @__PURE__ */ jsxs6(View6, { style: { flexDirection: "row", gap: tema.space.sm }, children: [
1729
+ /* @__PURE__ */ jsx7(
1730
+ Btn,
1731
+ {
1732
+ testID: "tillegg-send",
1733
+ label: sender ? tekst.sender : tekst.send,
1734
+ disabled: forKort || sender,
1735
+ busy: sender,
1736
+ ...forKort ? { hint: tekst.forKort(min) } : {},
1737
+ onPress: () => sakId !== void 0 && void send(sakId),
1738
+ grow: true
1739
+ }
1740
+ ),
1741
+ /* @__PURE__ */ jsx7(
1742
+ Btn,
1743
+ {
1744
+ testID: "tillegg-avbryt",
1745
+ label: tekst.avbryt,
1746
+ variant: "secondary",
1747
+ onPress: () => {
1748
+ setApen(null);
1749
+ setUtkast("");
1750
+ setFeil(void 0);
1751
+ },
1752
+ grow: true
1753
+ }
1754
+ )
1755
+ ] }),
1756
+ /* @__PURE__ */ jsx7(Hint, { children: tekst.leggTilMerHint })
1757
+ ] }) : kanLeggeTil ? /* @__PURE__ */ jsxs6(
1758
+ Pressable4,
1759
+ {
1760
+ testID: `legg-til-mer-${sakId}`,
1761
+ accessibilityRole: "button",
1762
+ accessibilityLabel: tekst.leggTilMerLabel,
1763
+ onPress: () => {
1764
+ if (sakId === void 0) return;
1765
+ setApen(sakId);
1766
+ setUtkast("");
1767
+ setFeil(void 0);
1768
+ setLagtTil(void 0);
1769
+ },
1770
+ style: { alignSelf: "flex-start", minHeight: tema.touch, flexDirection: "row", alignItems: "center", gap: tema.space.xs, paddingHorizontal: tema.space.sm },
1771
+ children: [
1772
+ /* @__PURE__ */ jsx7(Ikon, { navn: "add-outline", storrelse: "minste", farge: tema.color.actionSecondaryText }),
1773
+ /* @__PURE__ */ jsx7(Text6, { style: { color: tema.color.actionSecondaryText, fontSize: tema.font.body, fontWeight: tema.weight.semibold }, children: tekst.leggTilMer })
1774
+ ]
1775
+ }
1776
+ ) : taketN\u00E5dd ? /* @__PURE__ */ jsx7(Hint, { children: tekst.tilleggTak }) : null,
1610
1777
  !venter && rad.attachmentRemoved ? /* @__PURE__ */ jsxs6(View6, { testID: `bilde-fjernet-${rad.id}`, style: { flexDirection: "row", gap: tema.space.xs, alignItems: "center" }, children: [
1611
1778
  /* @__PURE__ */ jsx7(Ikon, { navn: "trash-outline", storrelse: "minste", farge: tema.color.textMuted }),
1612
1779
  /* @__PURE__ */ jsx7(Hint, { children: tekst.bildeFjernet })
@@ -1645,7 +1812,7 @@ function MineInnspill({
1645
1812
  // src/widget/Skjermbilde.tsx
1646
1813
  import { skaler, strokTilRekter, treffer, trykkTilRekt } from "@innspel/core";
1647
1814
  import { useCallback, useMemo as useMemo3, useRef as useRef2, useState as useState3 } from "react";
1648
- import { Image as Image2, Pressable as Pressable4, StyleSheet, Text as Text7, View as View7 } from "react-native";
1815
+ import { Image as Image2, Pressable as Pressable5, StyleSheet, Text as Text7, View as View7 } from "react-native";
1649
1816
  import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
1650
1817
  function Skjermbilde({
1651
1818
  bilde,
@@ -1706,7 +1873,7 @@ function Skjermbilde({
1706
1873
  const knapp = (id, ikon, label) => {
1707
1874
  const valgt = id === "allTekst" ? allTekst : verktoy === id && !allTekst;
1708
1875
  return /* @__PURE__ */ jsxs7(
1709
- Pressable4,
1876
+ Pressable5,
1710
1877
  {
1711
1878
  testID: `verktoy-${id}`,
1712
1879
  accessibilityRole: "button",
@@ -2101,7 +2268,7 @@ function Widget({
2101
2268
  onSubmitted?.(res.status === "queued" ? { type: spor, queued: true } : { type: spor, queued: false, id: res.submission.id });
2102
2269
  } catch (e) {
2103
2270
  if (e instanceof InnspelQueueFullError) setFeil(e.userMessage);
2104
- else if (e instanceof InnspelApiError) setFeil(e.message);
2271
+ else if (e instanceof InnspelApiError2) setFeil(e.message);
2105
2272
  else setFeil("tjeneren svarte ikke.");
2106
2273
  } finally {
2107
2274
  setSender(false);
@@ -2115,7 +2282,7 @@ function Widget({
2115
2282
  setKvittering({ art: "jaOgsa", nr: res.id });
2116
2283
  setSteg("kvittering");
2117
2284
  } catch (e) {
2118
- setFeil(e instanceof InnspelApiError ? e.message : "tjeneren svarte ikke.");
2285
+ setFeil(e instanceof InnspelApiError2 ? e.message : "tjeneren svarte ikke.");
2119
2286
  } finally {
2120
2287
  setSender(false);
2121
2288
  }
@@ -2183,7 +2350,7 @@ function Widget({
2183
2350
  /* @__PURE__ */ jsxs8(View8, { style: { flexDirection: "row", justifyContent: "space-between", alignItems: "center" }, children: [
2184
2351
  steg !== "valg" && steg !== "kvittering" ? /* @__PURE__ */ jsx9(Btn, { variant: "ghost", testID: "tilbake", ikon: "arrow-back-outline", label: tekst.tilbake, onPress: gaaTilbake }) : /* @__PURE__ */ jsx9(View8, {}),
2185
2352
  /* @__PURE__ */ jsx9(
2186
- Pressable5,
2353
+ Pressable6,
2187
2354
  {
2188
2355
  testID: "lukk",
2189
2356
  accessibilityRole: "button",
@@ -2280,7 +2447,11 @@ function Widget({
2280
2447
  rader: mine,
2281
2448
  laster: lasterMine,
2282
2449
  ...tenantName ? { tenantName } : {},
2283
- onNytt: nyttFraMine
2450
+ onNytt: nyttFraMine,
2451
+ leggTil: (id, text) => client.subjects.addAddendum(id, text),
2452
+ onOppdatert: (sak) => setMine((liste) => liste.map((r) => r.pending !== true && r.id === sak.id ? sak : r)),
2453
+ minTextLength: innstillinger.minTextLength,
2454
+ textMaxLength: innstillinger.textMaxLength
2284
2455
  }
2285
2456
  ) : null
2286
2457
  ]
@@ -2389,14 +2560,14 @@ function InnspelPrivate({ children, style }) {
2389
2560
 
2390
2561
  // src/program/InnspelProgram.tsx
2391
2562
  import {
2392
- InnspelApiError as InnspelApiError2
2563
+ InnspelApiError as InnspelApiError3
2393
2564
  } from "@innspel/core";
2394
2565
  import { useCallback as useCallback4, useEffect as useEffect4, useState as useState7 } from "react";
2395
- import { Modal as Modal4, Pressable as Pressable8, Text as Text12, View as View15 } from "react-native";
2566
+ import { Modal as Modal4, Pressable as Pressable9, Text as Text12, View as View15 } from "react-native";
2396
2567
 
2397
2568
  // src/program/Aksept.tsx
2398
2569
  import "react";
2399
- import { Linking, Modal as Modal2, Pressable as Pressable6, ScrollView as ScrollView4, Text as Text8, View as View11 } from "react-native";
2570
+ import { Linking, Modal as Modal2, Pressable as Pressable7, ScrollView as ScrollView4, Text as Text8, View as View11 } from "react-native";
2400
2571
 
2401
2572
  // src/program/periode.ts
2402
2573
  var MANEDER = [
@@ -2517,7 +2688,7 @@ function Aksept({
2517
2688
  ] }),
2518
2689
  program.termsUrl && !program.commitmentFree ? /* @__PURE__ */ jsxs10(View11, { style: { gap: tema.space.xs }, children: [
2519
2690
  /* @__PURE__ */ jsx12(
2520
- Pressable6,
2691
+ Pressable7,
2521
2692
  {
2522
2693
  testID: "vilkar-lenke",
2523
2694
  accessibilityRole: "link",
@@ -2566,7 +2737,7 @@ function Aksept({
2566
2737
 
2567
2738
  // src/program/HvordanGikkDet.tsx
2568
2739
  import { useState as useState6 } from "react";
2569
- import { Modal as Modal3, Pressable as Pressable7, Text as Text9, TextInput as TextInput2, View as View12 } from "react-native";
2740
+ import { Modal as Modal3, Pressable as Pressable8, Text as Text9, TextInput as TextInput3, View as View12 } from "react-native";
2570
2741
  import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
2571
2742
  var UTFALL = [
2572
2743
  { verdi: "fungerte", ikon: "checkmark-circle-outline", etikett: tekst.utfallFungerte },
@@ -2607,7 +2778,7 @@ function HvordanGikkDet({
2607
2778
  /* @__PURE__ */ jsx13(View12, { testID: "utfall-gruppe", accessibilityRole: "radiogroup", accessibilityLabel: tekst.hvordanGikkDet, style: { flexDirection: "row", gap: tema.space.sm }, children: UTFALL.map((u) => {
2608
2779
  const aktiv = valgt === u.verdi;
2609
2780
  return /* @__PURE__ */ jsxs11(
2610
- Pressable7,
2781
+ Pressable8,
2611
2782
  {
2612
2783
  testID: `utfall-${u.verdi}`,
2613
2784
  accessibilityRole: "radio",
@@ -2637,7 +2808,7 @@ function HvordanGikkDet({
2637
2808
  /* @__PURE__ */ jsxs11(View12, { style: { gap: tema.space.xs }, children: [
2638
2809
  /* @__PURE__ */ jsx13(Text9, { style: { color: tema.color.textSecondary, fontSize: tema.font.small }, children: tekst.setningLabel }),
2639
2810
  /* @__PURE__ */ jsx13(
2640
- TextInput2,
2811
+ TextInput3,
2641
2812
  {
2642
2813
  testID: "hvordan-setning",
2643
2814
  accessibilityLabel: tekst.setningLabel,
@@ -2838,7 +3009,7 @@ function InnspelProgram({
2838
3009
  }
2839
3010
  setDialog(void 0);
2840
3011
  } catch (e) {
2841
- setSvarFeil(e instanceof InnspelApiError2 ? e.message : "tjeneren svarte ikke.");
3012
+ setSvarFeil(e instanceof InnspelApiError3 ? e.message : "tjeneren svarte ikke.");
2842
3013
  } finally {
2843
3014
  setSender(false);
2844
3015
  }
@@ -2867,7 +3038,7 @@ function InnspelProgram({
2867
3038
  setViserAksept(false);
2868
3039
  onEndring?.(ny);
2869
3040
  } catch (e) {
2870
- setFeil(e instanceof InnspelApiError2 ? e.message : "tjeneren svarte ikke.");
3041
+ setFeil(e instanceof InnspelApiError3 ? e.message : "tjeneren svarte ikke.");
2871
3042
  } finally {
2872
3043
  setSender(false);
2873
3044
  }
@@ -2881,7 +3052,7 @@ function InnspelProgram({
2881
3052
  setViserGaaUt(false);
2882
3053
  onEndring?.(null);
2883
3054
  } catch (e) {
2884
- setFeil(e instanceof InnspelApiError2 ? e.message : "tjeneren svarte ikke.");
3055
+ setFeil(e instanceof InnspelApiError3 ? e.message : "tjeneren svarte ikke.");
2885
3056
  } finally {
2886
3057
  setSender(false);
2887
3058
  }
@@ -3010,7 +3181,7 @@ function InnspelProgram({
3010
3181
  /* @__PURE__ */ jsx16(Hint, { children: tekst.invitasjonKontakter(program.maxContacts) })
3011
3182
  ] }),
3012
3183
  /* @__PURE__ */ jsx16(
3013
- Pressable8,
3184
+ Pressable9,
3014
3185
  {
3015
3186
  testID: "avvis-invitasjon",
3016
3187
  accessibilityRole: "button",