@innspel/web 0.0.0 → 0.1.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/LICENSE +21 -0
- package/README.md +144 -0
- package/dist/lib/InnspelPrivate.d.ts +17 -0
- package/dist/lib/InnspelProvider.d.ts +50 -0
- package/dist/lib/index.cjs +9 -0
- package/dist/lib/index.cjs.map +1 -0
- package/dist/lib/index.d.ts +28 -0
- package/dist/lib/index.js +1900 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/kontekst.d.ts +26 -0
- package/dist/lib/lagring.d.ts +17 -0
- package/dist/lib/mount.d.ts +52 -0
- package/dist/lib/skjermbilde/fil.d.ts +14 -0
- package/dist/lib/skjermbilde/komposisjon.d.ts +28 -0
- package/dist/lib/skjermbilde/renderer.d.ts +57 -0
- package/dist/lib/skjermbilde/typer.d.ts +37 -0
- package/dist/lib/style.css +2 -0
- package/dist/lib/tema.d.ts +9 -0
- package/dist/lib/widget/Dialog.d.ts +23 -0
- package/dist/lib/widget/Felt.d.ts +32 -0
- package/dist/lib/widget/KjenteFeil.d.ts +18 -0
- package/dist/lib/widget/Kvittering.d.ts +16 -0
- package/dist/lib/widget/MineInnspill.d.ts +17 -0
- package/dist/lib/widget/Skjermbilde.d.ts +19 -0
- package/dist/lib/widget/Valg.d.ts +8 -0
- package/dist/lib/widget/Widget.d.ts +48 -0
- package/dist/lib/widget/primitiver.d.ts +63 -0
- package/dist/lib/widget/status.d.ts +24 -0
- package/dist/lib/widget/tekster.d.ts +154 -0
- package/package.json +78 -5
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hver streng innsenderen ser, ett sted.
|
|
3
|
+
*
|
|
4
|
+
* Ordlyden er ikke fri: den er tegnet i `design/wireframes/innsending-web.jsx`
|
|
5
|
+
* og bundet av beslutninger. Løftene under er DD-08 og skal stå ORDRETT likt i
|
|
6
|
+
* SDK-et, portalen og panelet — en innsender som får «Svar innen 3. desember» i
|
|
7
|
+
* appen og noe annet i portalen har fått to løfter. Strengene som er felles med
|
|
8
|
+
* `@innspel/react-native` er identiske med vilje; de web-spesifikke («Ta bilde
|
|
9
|
+
* av siden», «Last opp bilde», «Lukk (Esc)») kommer fra web-wireframen.
|
|
10
|
+
*
|
|
11
|
+
* Norsk bokmål. Ingen leietakernavn: strengen som nevner avsenderen tar navnet
|
|
12
|
+
* som parameter, siden pakken skal kunne brukes av hvem som helst.
|
|
13
|
+
*/
|
|
14
|
+
export declare const tekst: {
|
|
15
|
+
readonly inngangHint: "Vi legger ved side, nettleser og versjon — aldri navn eller e-post.";
|
|
16
|
+
readonly valgTittel: "Hva gjelder det?";
|
|
17
|
+
readonly valgUnder: "Ett valg. Vi spør aldri om kategori eller alvorlighet.";
|
|
18
|
+
readonly sporFeil: "Noe virker ikke";
|
|
19
|
+
readonly sporFeilUnder: "Feilsporet — kontekst legges ved";
|
|
20
|
+
readonly sporOnske: "Jeg ønsker meg noe";
|
|
21
|
+
readonly sporOnskeUnder: "Ønskesporet — aldri spørsmål om reproduksjon";
|
|
22
|
+
readonly kjenteFeilTittelFeil: "Er det dette du ser?";
|
|
23
|
+
readonly kjenteFeilUnderFeil: "«Ja» registrerer deg på saken. «Ligner» sender ditt eget med lenke.";
|
|
24
|
+
readonly kjenteFeilTittelOnske: "Har noen ønsket dette?";
|
|
25
|
+
readonly kjenteFeilUnderOnske: "Ett klikk legger deg til på ønsket — ingen ny sak.";
|
|
26
|
+
readonly kjenteFeilLaster: "Sjekker kjente feil";
|
|
27
|
+
readonly kjenteFeilTilbud: "Treffene er et tilbud, aldri en sperre. «Nei» går rett til feltet.";
|
|
28
|
+
readonly svarJa: "Ja, jeg også";
|
|
29
|
+
readonly svarLigner: "Ligner, men ikke helt";
|
|
30
|
+
readonly svarNei: "Nei, det er noe annet";
|
|
31
|
+
readonly omvei: "Omvei:";
|
|
32
|
+
readonly rettesI: (versjon: string) => string;
|
|
33
|
+
readonly rettetI: (versjon: string) => string;
|
|
34
|
+
/**
|
|
35
|
+
* «Ditt innspill», ikke «Din feil» (DD-54). «Din» festet saken til personen, og
|
|
36
|
+
* «feil» karakteriserte den før noen hadde lest den — innsenderen leste det som
|
|
37
|
+
* skyld. Ønskesporet beholder «Ditt ønske»: et ønske er ingen feil, og der finnes
|
|
38
|
+
* ikke problemet. De to står aldri ved siden av hverandre; sporet velges før dette.
|
|
39
|
+
*/
|
|
40
|
+
readonly feltLabelFeil: "Ditt innspill";
|
|
41
|
+
readonly feltLabelOnske: "Ditt ønske";
|
|
42
|
+
/** DD-45: to spørsmål i feilsporet. */
|
|
43
|
+
readonly placeholderFeil: "Hva skjedde? Hva forventet du?";
|
|
44
|
+
readonly placeholderOnske: "Hva ønsker du deg?";
|
|
45
|
+
readonly send: "Send";
|
|
46
|
+
readonly nesteOnske: "Neste — sjekk om noen har ønsket dette";
|
|
47
|
+
/** DD-44: minimum tegn er det ENESTE kravet. */
|
|
48
|
+
readonly forKort: (min: number) => string;
|
|
49
|
+
readonly sendSnarvei: "Ctrl+Enter sender";
|
|
50
|
+
readonly tellerFull: " — kort og konkret holder";
|
|
51
|
+
/** K5 på web: fem linjer. Nettleser er `os`; viewport finnes ikke (tech-decisions.md, «M1.5»). */
|
|
52
|
+
readonly kontekstLinje: "Legges ved: side, nettleser, språk, versjon";
|
|
53
|
+
readonly kontekstVis: " — Vis";
|
|
54
|
+
readonly kontekstFjern: "Fjern";
|
|
55
|
+
readonly kontekstFjernA11y: (etikett: string) => string;
|
|
56
|
+
readonly kontekstAldri: "Aldri: navn, e-post, cookies, query string, det som står på siden. Lista er lukket — ukjente nøkler avvises av tjeneren.";
|
|
57
|
+
readonly kontekstEtiketter: Record<string, string>;
|
|
58
|
+
readonly lenketTil: (tittel: string) => string;
|
|
59
|
+
readonly fjernLenke: "Fjern lenken til den kjente feilen";
|
|
60
|
+
readonly taBildeAvSiden: "Ta bilde av siden";
|
|
61
|
+
readonly lastOppBilde: "Last opp bilde";
|
|
62
|
+
readonly skjermbildeHint: "Bildet lages i nettleseren din når du trykker — du ser det før noe sendes. Ingenting fra siden sendes ellers.";
|
|
63
|
+
readonly skjermbildeTittel: "Se over bildet";
|
|
64
|
+
readonly skjermbildeUnder: "Det du maskerer, ser vi aldri. Ingenting er sendt ennå.";
|
|
65
|
+
readonly skjermbildeUnderFil: "PNG eller JPEG. Bildet renses for metadata i nettleseren. Det du maskerer, ser vi aldri.";
|
|
66
|
+
readonly maskering: "Maskering";
|
|
67
|
+
readonly maskerFelt: "Masker felt";
|
|
68
|
+
readonly tegnOver: "Tegn over";
|
|
69
|
+
readonly maskerAllTekst: "Masker all tekst";
|
|
70
|
+
readonly maskertAvAppen: "Maskert av appen";
|
|
71
|
+
readonly maskertAvAppenHint: "data-innspel-private. Penselen kan ikke oppheve den.";
|
|
72
|
+
readonly dittStrok: "▲ ditt strøk — maskert (klikk på det for å angre)";
|
|
73
|
+
readonly allTekstHint: "All tekst på siden er dekket. Layouten er synlig.";
|
|
74
|
+
readonly fjernBildet: "Fjern bildet";
|
|
75
|
+
readonly leggVedOgFortsett: "Legg ved og fortsett";
|
|
76
|
+
readonly leggVedHintDD42: "Teksten sendes først; bildet lastes opp for seg.";
|
|
77
|
+
readonly skjermbildeLagtVed: "Skjermbilde lagt ved — maskert";
|
|
78
|
+
readonly fjernSkjermbilde: "Fjern skjermbildet";
|
|
79
|
+
readonly sendHintMedBilde: "Teksten sendes først; bildet lastes opp for seg.";
|
|
80
|
+
readonly skjermbildeFeilet: "kunne ikke ta bilde av siden. Du kan laste opp et bilde, eller sende uten.";
|
|
81
|
+
readonly filFeilet: "kunne ikke lese bildet. PNG eller JPEG, høyst 5 MB.";
|
|
82
|
+
readonly skjermbildeA11y: (auto: number, egne: number, allTekst: boolean, fraFil: boolean) => string;
|
|
83
|
+
readonly monsterSpm: {
|
|
84
|
+
readonly email: "Dette ser ut som en e-postadresse. Vil du fjerne den?";
|
|
85
|
+
readonly phone: "Dette ser ut som et telefonnummer. Vil du fjerne det?";
|
|
86
|
+
readonly card: "Dette ser ut som et kortnummer. Vil du fjerne det?";
|
|
87
|
+
readonly ip: "Dette ser ut som en IP-adresse. Vil du fjerne den?";
|
|
88
|
+
readonly token: "Dette ser ut som en tilgangsnøkkel. Vil du fjerne den?";
|
|
89
|
+
};
|
|
90
|
+
readonly monsterFjern: "Fjern";
|
|
91
|
+
readonly monsterBehold: "Behold";
|
|
92
|
+
readonly monsterForklaring: "Teksten endres bare hvis du trykker Fjern. Vi fjerner aldri noe stille.";
|
|
93
|
+
readonly kvitteringSendt: "Sendt";
|
|
94
|
+
readonly kvitteringSendtAnonymt: "Sendt anonymt";
|
|
95
|
+
readonly kvitteringRegistrert: "Registrert";
|
|
96
|
+
readonly kvitteringFeil: "Du får beskjed når den er rettet, eller hvis vi trenger mer.";
|
|
97
|
+
readonly kvitteringOnske: "Vurderes innen 90 dager. Du får et personlig svar — også hvis det er nei.";
|
|
98
|
+
readonly kvitteringAnonym: "Vi kan ikke svare deg direkte, men saken teller.";
|
|
99
|
+
readonly kvitteringJaOgsa: "Du får beskjed når den er rettet.";
|
|
100
|
+
readonly saksnummer: (nr: string) => string;
|
|
101
|
+
readonly lukk: "Lukk";
|
|
102
|
+
readonly lukkEsc: "Lukk (Esc)";
|
|
103
|
+
/** DD-42: saken er sendt, bildet kom ikke med — aldri en blokkert innsending. */
|
|
104
|
+
readonly kvitteringVedleggFeilet: "Sendt — skjermbildet kunne ikke legges ved";
|
|
105
|
+
readonly tekstenErLagret: "Teksten din er lagret.";
|
|
106
|
+
readonly vedleggFeiletBanner: "Bildet ble ikke lastet opp. Saken er sendt uten det — vil du, kan du sende et nytt innspill med bilde.";
|
|
107
|
+
readonly saksnummerUtenVedlegg: (nr: string) => string;
|
|
108
|
+
readonly offlineTittel: "Ingen nett";
|
|
109
|
+
readonly offlineBanner: "Ingen nett. Lagres i nettleseren og sendes automatisk — du ser det under «Mine innspill» til det er sendt.";
|
|
110
|
+
/** DD-41: et skjermbilde køes aldri. */
|
|
111
|
+
readonly offlineUtenBilde: "Bilde kan ikke legges ved uten nett. Teksten sendes; bildet ble ikke lagret.";
|
|
112
|
+
readonly sendefeilBanner: (arsak: string) => string;
|
|
113
|
+
readonly provIgjen: "Prøv igjen";
|
|
114
|
+
readonly tjenerenSvarteIkke: "tjeneren svarte ikke (tidsavbrudd etter 10 s).";
|
|
115
|
+
/** Utløpt token under skriving (tech-decisions.md, «Portalen»): teksten står, bare innloggingen gjøres om. */
|
|
116
|
+
readonly utloptTittel: "Innloggingen din gikk ut (15 min). Teksten din er beholdt.";
|
|
117
|
+
readonly loggInnPaaNytt: (leietaker: string) => string;
|
|
118
|
+
readonly loggInnPaaNyttGenerisk: "Logg inn på nytt";
|
|
119
|
+
readonly sendAnonymt: "Send anonymt";
|
|
120
|
+
readonly sendAnonymtHint: "Saken kobles ikke til nummeret ditt, og du kan ikke følge den etterpå.";
|
|
121
|
+
readonly mineTittel: "Mine innspill";
|
|
122
|
+
readonly mineUnder: "Status og hva du kan vente deg — samme løfte som i kvitteringen.";
|
|
123
|
+
readonly mineLaster: "Henter innspillene dine";
|
|
124
|
+
readonly mineTom: "Du har ikke sendt noe ennå.";
|
|
125
|
+
readonly mineTomHint: (leietaker: string) => string;
|
|
126
|
+
readonly mineIkkeSendt: "Ikke sendt ennå";
|
|
127
|
+
readonly mineSak: (nr: string) => string;
|
|
128
|
+
readonly svarFra: (leietaker: string) => string;
|
|
129
|
+
readonly svarFraGenerisk: "Svar";
|
|
130
|
+
readonly sendNytt: "Send nytt innspill";
|
|
131
|
+
readonly venterIKo: (n: number) => string;
|
|
132
|
+
readonly tilbake: "Tilbake";
|
|
133
|
+
readonly dialogEtikett: "Send innspill";
|
|
134
|
+
readonly venterPaaNett: "Venter på nett — sendes automatisk";
|
|
135
|
+
readonly feil: "feil";
|
|
136
|
+
readonly onske: "ønske";
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Løftet per status (DD-08). Samme streng i SDK, portal og panel. Det eneste
|
|
140
|
+
* tidsløftet er svarfristen som DATO (DD-28).
|
|
141
|
+
*/
|
|
142
|
+
export declare const lofte: {
|
|
143
|
+
readonly venterNett: "Sendes automatisk når du er på nett — kvitteringen kommer da.";
|
|
144
|
+
readonly vurderes: (frist: string) => string;
|
|
145
|
+
readonly vurderesUtenFrist: "Du får svar — også hvis det er nei.";
|
|
146
|
+
readonly bygges: "Du får beskjed når den er rettet.";
|
|
147
|
+
readonly planlagt: "Du får beskjed når den er rettet.";
|
|
148
|
+
readonly rettet: "Ferdig. Ser du feilen igjen, send et nytt innspill.";
|
|
149
|
+
readonly levert: "Ferdig. Takk for ønsket.";
|
|
150
|
+
readonly ny: "Vi har fått den. Du hører fra oss.";
|
|
151
|
+
readonly kjentFeil: "Kjent feil. Du får beskjed når den er rettet.";
|
|
152
|
+
readonly duplikat: "Slått sammen med et innspill som ligner.";
|
|
153
|
+
readonly avvist: "Vi har svart på denne.";
|
|
154
|
+
};
|
package/package.json
CHANGED
|
@@ -1,9 +1,82 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@innspel/web",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
5
|
-
"
|
|
6
|
-
"author": "",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Innsendingsflyten på web: portalen på leietakerens subdomene og de samme komponentene som npm-pakke (vanilla mount + React-hooks).",
|
|
5
|
+
"private": false,
|
|
7
6
|
"license": "MIT",
|
|
8
|
-
"type": "
|
|
7
|
+
"type": "module",
|
|
8
|
+
"sideEffects": [
|
|
9
|
+
"**/*.css"
|
|
10
|
+
],
|
|
11
|
+
"main": "./dist/lib/index.cjs",
|
|
12
|
+
"module": "./dist/lib/index.js",
|
|
13
|
+
"types": "./dist/lib/index.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/lib/index.d.ts",
|
|
17
|
+
"import": "./dist/lib/index.js",
|
|
18
|
+
"require": "./dist/lib/index.cjs"
|
|
19
|
+
},
|
|
20
|
+
"./style.css": "./dist/lib/style.css"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist/lib",
|
|
24
|
+
"README.md",
|
|
25
|
+
"LICENSE"
|
|
26
|
+
],
|
|
27
|
+
"scripts": {
|
|
28
|
+
"dev": "vite",
|
|
29
|
+
"generate:api": "openapi-ts -f openapi-ts.config.ts",
|
|
30
|
+
"lint": "eslint .",
|
|
31
|
+
"typecheck": "tsc --noEmit",
|
|
32
|
+
"test": "vitest run",
|
|
33
|
+
"build": "npm run build:portal && npm run build:lib",
|
|
34
|
+
"build:portal": "vite build",
|
|
35
|
+
"build:lib": "vite build --config vite.lib.config.ts && tsc -p tsconfig.lib.json && node scripts/dts-utvidelser.mjs && node scripts/pakkesjekk.mjs",
|
|
36
|
+
"changeset": "changeset",
|
|
37
|
+
"release:version": "changeset version"
|
|
38
|
+
},
|
|
39
|
+
"//dependencies": "Kun @innspel/core. K19: ingen tredjeparts-SDK i klientbiblioteket; skjermbilde-rendreren er vår egen (tech-decisions.md, «M1.5»). Den genererte API-klienten er kildefiler i src/generated/api/, ikke en pakke.",
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@innspel/core": "^0.6.0"
|
|
42
|
+
},
|
|
43
|
+
"//peerDependencies": "react-dom er med fordi vanilla mount(el) ikke kan tegne uten den (tech-decisions.md, «M1.5»).",
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"react": ">=18",
|
|
46
|
+
"react-dom": ">=18"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@changesets/cli": "^2.29.7",
|
|
50
|
+
"@eslint/js": "^9.39.5",
|
|
51
|
+
"@hey-api/openapi-ts": "0.99.0",
|
|
52
|
+
"@testing-library/react": "^16.3.0",
|
|
53
|
+
"@testing-library/user-event": "^14.6.1",
|
|
54
|
+
"@types/node": "^24.7.0",
|
|
55
|
+
"@types/react": "^19.2.18",
|
|
56
|
+
"@types/react-dom": "^19.2.3",
|
|
57
|
+
"@vitejs/plugin-react": "^5.1.4",
|
|
58
|
+
"axe-core": "^4.10.3",
|
|
59
|
+
"esbuild": "^0.28.2",
|
|
60
|
+
"eslint": "^9.37.0",
|
|
61
|
+
"eslint-plugin-react-hooks": "^7.1.1",
|
|
62
|
+
"jsdom": "^27.0.0",
|
|
63
|
+
"react": "^19.2.8",
|
|
64
|
+
"react-dom": "^19.2.8",
|
|
65
|
+
"typescript": "^5.9.3",
|
|
66
|
+
"typescript-eslint": "^8.46.0",
|
|
67
|
+
"vite": "^7.1.0",
|
|
68
|
+
"vitest": "^3.2.4"
|
|
69
|
+
},
|
|
70
|
+
"keywords": [
|
|
71
|
+
"innspel",
|
|
72
|
+
"feedback",
|
|
73
|
+
"web",
|
|
74
|
+
"react"
|
|
75
|
+
],
|
|
76
|
+
"publishConfig": {
|
|
77
|
+
"access": "public"
|
|
78
|
+
},
|
|
79
|
+
"engines": {
|
|
80
|
+
"node": ">=20"
|
|
81
|
+
}
|
|
9
82
|
}
|