@hadoku/jobplatform 0.0.0-stage → 3.41.14

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 (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +185 -2
  3. package/dist/App.d.ts +9 -0
  4. package/dist/App.d.ts.map +1 -0
  5. package/dist/api/applyQueue.d.ts +42 -0
  6. package/dist/api/applyQueue.d.ts.map +1 -0
  7. package/dist/api/auth.d.ts +15 -0
  8. package/dist/api/auth.d.ts.map +1 -0
  9. package/dist/api/companies.d.ts +26 -0
  10. package/dist/api/companies.d.ts.map +1 -0
  11. package/dist/api/jobs.d.ts +388 -0
  12. package/dist/api/jobs.d.ts.map +1 -0
  13. package/dist/api/packets.d.ts +28 -0
  14. package/dist/api/packets.d.ts.map +1 -0
  15. package/dist/api/profiles.d.ts +64 -0
  16. package/dist/api/profiles.d.ts.map +1 -0
  17. package/dist/api/resource.d.ts +43 -0
  18. package/dist/api/resource.d.ts.map +1 -0
  19. package/dist/api/useResource.d.ts +26 -0
  20. package/dist/api/useResource.d.ts.map +1 -0
  21. package/dist/components/ApplicationsList.d.ts +15 -0
  22. package/dist/components/ApplicationsList.d.ts.map +1 -0
  23. package/dist/components/CompaniesManager.d.ts +10 -0
  24. package/dist/components/CompaniesManager.d.ts.map +1 -0
  25. package/dist/components/FillExtensionInstall.d.ts +7 -0
  26. package/dist/components/FillExtensionInstall.d.ts.map +1 -0
  27. package/dist/components/JobCard.d.ts +17 -0
  28. package/dist/components/JobCard.d.ts.map +1 -0
  29. package/dist/components/JobDrawer.d.ts +17 -0
  30. package/dist/components/JobDrawer.d.ts.map +1 -0
  31. package/dist/components/JobsList.d.ts +18 -0
  32. package/dist/components/JobsList.d.ts.map +1 -0
  33. package/dist/components/PacketDetail.d.ts +16 -0
  34. package/dist/components/PacketDetail.d.ts.map +1 -0
  35. package/dist/components/PacketsList.d.ts +16 -0
  36. package/dist/components/PacketsList.d.ts.map +1 -0
  37. package/dist/components/ProfileEditorModal.d.ts +15 -0
  38. package/dist/components/ProfileEditorModal.d.ts.map +1 -0
  39. package/dist/components/ProfileSidebar.d.ts +24 -0
  40. package/dist/components/ProfileSidebar.d.ts.map +1 -0
  41. package/dist/components/UnansweredQuestions.d.ts +9 -0
  42. package/dist/components/UnansweredQuestions.d.ts.map +1 -0
  43. package/dist/components/VerificationCodes.d.ts +12 -0
  44. package/dist/components/VerificationCodes.d.ts.map +1 -0
  45. package/dist/components/VoteControl.d.ts +23 -0
  46. package/dist/components/VoteControl.d.ts.map +1 -0
  47. package/dist/components/matchOption.d.ts +16 -0
  48. package/dist/components/matchOption.d.ts.map +1 -0
  49. package/dist/entry.d.ts +24 -0
  50. package/dist/entry.d.ts.map +1 -0
  51. package/dist/fillExtension/bundle.d.ts +4 -0
  52. package/dist/fillExtension/bundle.d.ts.map +1 -0
  53. package/dist/fillExtension/zip.d.ts +12 -0
  54. package/dist/fillExtension/zip.d.ts.map +1 -0
  55. package/dist/index.js +5687 -0
  56. package/dist/style.css +1 -0
  57. package/package.json +35 -4
@@ -0,0 +1,17 @@
1
+ import { type JobStateRead, type FeedbackReason, type VoteValue } from '../api/jobs';
2
+ import type { Auth } from '../api/auth';
3
+ interface Props {
4
+ auth: Auth;
5
+ jobId: string;
6
+ profileId: string | null;
7
+ initialVote?: VoteValue | null;
8
+ onClose: () => void;
9
+ onStateChange?: (jobId: string, newState: JobStateRead) => void;
10
+ onVoteChange?: (jobId: string, vote: VoteValue | null, reasons: FeedbackReason[]) => void;
11
+ }
12
+ export declare function Description({ text }: {
13
+ text: string;
14
+ }): import("react/jsx-runtime").JSX.Element;
15
+ export declare function JobDrawer({ auth, jobId, profileId, initialVote, onClose, onStateChange, onVoteChange }: Props): import("react/jsx-runtime").JSX.Element;
16
+ export {};
17
+ //# sourceMappingURL=JobDrawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JobDrawer.d.ts","sourceRoot":"","sources":["../../src/components/JobDrawer.tsx"],"names":[],"mappings":"AACA,OAAO,EASL,KAAK,YAAY,EAGjB,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAMvC,UAAU,KAAK;IACb,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAGxB,WAAW,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;IAC/D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,CAAA;CAC1F;AA0BD,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,2CAarD;AAgFD,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,KAAK,EACL,SAAS,EACT,WAAW,EACX,OAAO,EACP,aAAa,EACb,YAAY,EACb,EAAE,KAAK,2CAieP"}
@@ -0,0 +1,18 @@
1
+ import { type JobStateRead, type FeedbackReason, type VoteValue } from '../api/jobs';
2
+ import type { Auth } from '../api/auth';
3
+ interface Props {
4
+ auth: Auth;
5
+ profileId: string | null;
6
+ onSelect: (jobId: string, vote: VoteValue | null) => void;
7
+ refreshKey?: number;
8
+ voteOverrides: Record<string, {
9
+ vote: VoteValue | null;
10
+ reasons: FeedbackReason[];
11
+ }>;
12
+ onVote: (jobId: string, vote: VoteValue | null, reasons: FeedbackReason[]) => void;
13
+ stateOverrides: Record<string, JobStateRead>;
14
+ awaitingProfile?: boolean;
15
+ }
16
+ export declare function JobsList({ auth, profileId, onSelect, refreshKey, voteOverrides, onVote, stateOverrides, awaitingProfile }: Props): import("react/jsx-runtime").JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=JobsList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JobsList.d.ts","sourceRoot":"","sources":["../../src/components/JobsList.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,cAAc,EAEnB,KAAK,SAAS,EAEf,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAIvC,UAAU,KAAK;IACb,IAAI,EAAE,IAAI,CAAA;IACV,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAA;IAIzD,UAAU,CAAC,EAAE,MAAM,CAAA;IAInB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC,CAAA;IACpF,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,CAAA;IAIlF,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAI5C,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAWD,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,UAAU,EACV,aAAa,EACb,MAAM,EACN,cAAc,EACd,eAAe,EAChB,EAAE,KAAK,2CAkQP"}
@@ -0,0 +1,16 @@
1
+ import type { Auth } from '../api/auth';
2
+ interface Props {
3
+ auth: Auth;
4
+ jobId: string;
5
+ slug: string;
6
+ onClose: () => void;
7
+ }
8
+ /**
9
+ * The packet split view (scratch #25): a two-column reading page inside the
10
+ * packets route — posting on the left, packet on the right — instead of
11
+ * bouncing back to the feed's drawer. Header carries the public "Tailored
12
+ * resume" link and the PDF button; the row itself no longer links to either.
13
+ */
14
+ export declare function PacketDetail({ auth, jobId, slug, onClose }: Props): import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=PacketDetail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PacketDetail.d.ts","sourceRoot":"","sources":["../../src/components/PacketDetail.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAGvC,UAAU,KAAK;IACb,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IAEZ,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,2CA8IjE"}
@@ -0,0 +1,16 @@
1
+ import { type PacketSummary } from '../api/jobs';
2
+ import type { Auth } from '../api/auth';
3
+ interface Props {
4
+ auth: Auth;
5
+ onSelect: (packet: PacketSummary) => void;
6
+ }
7
+ /**
8
+ * The Packets view: every application packet the owner has generated, findable
9
+ * again. A reference list, not a workflow — each row names the job, shows its
10
+ * triage state and prepared date, and opens the split view on click. The only
11
+ * outbound link on a row is the public tailored-resume page; the PDF button
12
+ * lives inside the split view (scratch #25).
13
+ */
14
+ export declare function PacketsList({ auth, onSelect }: Props): import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=PacketsList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PacketsList.d.ts","sourceRoot":"","sources":["../../src/components/PacketsList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAGvC,UAAU,KAAK;IACb,IAAI,EAAE,IAAI,CAAA;IAEV,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;CAC1C;AAOD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,2CAmEpD"}
@@ -0,0 +1,15 @@
1
+ import { type JobProfile } from '../api/profiles';
2
+ import type { Auth } from '../api/auth';
3
+ interface Props {
4
+ auth: Auth;
5
+ /** null/undefined = create a new profile. */
6
+ initial?: JobProfile | null;
7
+ onClose: () => void;
8
+ /** Called after every persist (create or update) so the parent can refresh. */
9
+ onSaved: (profile: JobProfile) => void;
10
+ /** Bumped-through to the feed so it refetches when companies change. */
11
+ onCompaniesChanged?: () => void;
12
+ }
13
+ export declare function ProfileEditorModal({ auth, initial, onClose, onSaved, onCompaniesChanged }: Props): import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=ProfileEditorModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProfileEditorModal.d.ts","sourceRoot":"","sources":["../../src/components/ProfileEditorModal.tsx"],"names":[],"mappings":"AAQA,OAAO,EAOL,KAAK,UAAU,EAKhB,MAAM,iBAAiB,CAAA;AAQxB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAGvC,UAAU,KAAK;IACb,IAAI,EAAE,IAAI,CAAA;IACV,6CAA6C;IAC7C,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,+EAA+E;IAC/E,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAA;IACtC,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AA+BD,wBAAgB,kBAAkB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,KAAK,2CA4WhG"}
@@ -0,0 +1,24 @@
1
+ import { type JobProfile } from '../api/profiles';
2
+ import type { Auth } from '../api/auth';
3
+ interface Props {
4
+ auth: Auth;
5
+ selectedId: string | null;
6
+ onSelect: (id: string | null) => void;
7
+ /** Open the full-screen editor for a new profile. */
8
+ onNew: () => void;
9
+ /** Open the full-screen editor for an existing profile. */
10
+ onEdit: (profile: JobProfile) => void;
11
+ /** Bumped by the parent after a save so the list refetches. */
12
+ reloadKey?: number;
13
+ /**
14
+ * Fired once the profile list has settled, with how many profiles there are
15
+ * — including for a signed-out visitor, where there is nothing to fetch and
16
+ * the count is 0. The dashboard holds the feed's request while a selection is
17
+ * still coming, so it never asks for an unscored feed it is about to replace
18
+ * with a scored one; a count of 0 means no selection is coming.
19
+ */
20
+ onResolved?: (count: number) => void;
21
+ }
22
+ export declare function ProfileSidebar({ auth, selectedId, onSelect, onNew, onEdit, reloadKey, onResolved }: Props): import("react/jsx-runtime").JSX.Element;
23
+ export {};
24
+ //# sourceMappingURL=ProfileSidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProfileSidebar.d.ts","sourceRoot":"","sources":["../../src/components/ProfileSidebar.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiD,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAChG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAiBvC,UAAU,KAAK;IACb,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACrC,qDAAqD;IACrD,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,2DAA2D;IAC3D,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAA;IACrC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACrC;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EACT,UAAU,EACX,EAAE,KAAK,2CAiJP"}
@@ -0,0 +1,9 @@
1
+ import type { Auth } from '../api/auth';
2
+ interface Props {
3
+ auth: Auth;
4
+ /** Bumped by the parent after a run, so the queue reflects the latest fills. */
5
+ refreshKey?: number;
6
+ }
7
+ export declare function UnansweredQuestions({ auth, refreshKey }: Props): import("react/jsx-runtime").JSX.Element | null;
8
+ export {};
9
+ //# sourceMappingURL=UnansweredQuestions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnansweredQuestions.d.ts","sourceRoot":"","sources":["../../src/components/UnansweredQuestions.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAGvC,UAAU,KAAK;IACb,IAAI,EAAE,IAAI,CAAA;IACV,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAiUD,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,UAAc,EAAE,EAAE,KAAK,kDA+RlE"}
@@ -0,0 +1,12 @@
1
+ import type { Auth } from '../api/auth';
2
+ /**
3
+ * The codes Greenhouse emails at submit, read from the hadoku.me mail feed so
4
+ * the owner types them into the form without opening an inbox.
5
+ *
6
+ * Renders nothing for anyone but the mailbox owner (the route 403s them) and
7
+ * nothing when there are no recent codes.
8
+ */
9
+ export declare function VerificationCodes({ auth }: {
10
+ auth: Auth;
11
+ }): import("react/jsx-runtime").JSX.Element | null;
12
+ //# sourceMappingURL=VerificationCodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerificationCodes.d.ts","sourceRoot":"","sources":["../../src/components/VerificationCodes.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAcvC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,kDA4EzD"}
@@ -0,0 +1,23 @@
1
+ import { type FeedbackReason, type VoteValue } from '../api/jobs';
2
+ import type { Auth } from '../api/auth';
3
+ interface Props {
4
+ jobId: string;
5
+ auth: Auth;
6
+ vote: VoteValue | null;
7
+ reasons: FeedbackReason[];
8
+ onVoteChange: (jobId: string, vote: VoteValue | null, reasons: FeedbackReason[]) => void;
9
+ disabled?: boolean;
10
+ align?: 'start' | 'end';
11
+ }
12
+ /**
13
+ * One-tap posting feedback: 👍/👎 plus MULTI-select reason chips. Tapping a
14
+ * thumb saves the vote immediately and opens the direction's chips; each chip
15
+ * toggles and saves (idempotent upsert) with the popover staying open until
16
+ * blur/Escape, so several reasons can be stacked. Tapping the active thumb
17
+ * clears the vote (DELETE). Everything is optimistic — values flip
18
+ * immediately and revert on error — so ripping through a hundred postings
19
+ * never waits on the network.
20
+ */
21
+ export declare function VoteControl({ jobId, auth, vote, reasons, onVoteChange, disabled, align }: Props): import("react/jsx-runtime").JSX.Element;
22
+ export {};
23
+ //# sourceMappingURL=VoteControl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoteControl.d.ts","sourceRoot":"","sources":["../../src/components/VoteControl.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoC,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAA;AACnG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAEvC,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE,cAAc,EAAE,CAAA;IAGzB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,CAAA;IACxF,QAAQ,CAAC,EAAE,OAAO,CAAA;IAGlB,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;CACxB;AAsBD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,KAAa,EACd,EAAE,KAAK,2CAsGP"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The option on a board that says what an answer says — or null.
3
+ *
4
+ * MIRRORS `matchOption` in worker/src/questionFamily.ts, which is the source of
5
+ * truth: the worker uses it to pre-fill each question's suggestion, and the
6
+ * dashboard uses this copy when the owner types one answer for a whole family
7
+ * and applies it to every wording. If the two disagreed, "Apply to all" would
8
+ * pick a different option than the suggestion beside it.
9
+ *
10
+ * worker/tests/matchOptionParity.test.ts runs both over the same cases and
11
+ * fails on any drift. Kept free of imports so that test can load it directly.
12
+ */
13
+ /** Mirrors worker/src/questionKey.ts `questionKey`. */
14
+ export declare function normalize(text: string): string;
15
+ export declare function matchOption(answer: string, options: string[]): string | null;
16
+ //# sourceMappingURL=matchOption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchOption.d.ts","sourceRoot":"","sources":["../../src/components/matchOption.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,uDAAuD;AACvD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO9C;AAeD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CA0B5E"}
@@ -0,0 +1,24 @@
1
+ import '@wolffm/themes/style.css';
2
+ import '@wolffm/task-ui-components/theme-picker.css';
3
+ import '@wolffm/task-ui-components/app-header.css';
4
+ import './styles/index.css';
5
+ export interface JobPlatformProps {
6
+ /**
7
+ * The app's DISPLAY NAME, resolved by the platform from hadoku_site's
8
+ * spec/categories.json — the same file that titles the browser tab and the
9
+ * homepage tile. Render this; never hard-code the name in this repo.
10
+ *
11
+ * Absent when the app runs standalone (its own vite dev server, no host),
12
+ * which is what `__HADOKU_APP_NAME__` covers — see vite.config.ts.
13
+ */
14
+ appName?: string;
15
+ theme?: string;
16
+ /**
17
+ * mf-loader's tier for the viewer: `'public'` when nobody is signed in.
18
+ * Requests authenticate by the `hadoku_session` cookie, never by a prop.
19
+ */
20
+ userType?: string;
21
+ }
22
+ export declare function mount(el: HTMLElement, props?: JobPlatformProps): void;
23
+ export declare function unmount(el: HTMLElement): void;
24
+ //# sourceMappingURL=entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../src/entry.tsx"],"names":[],"mappings":"AAIA,OAAO,0BAA0B,CAAA;AAEjC,OAAO,6CAA6C,CAAA;AACpD,OAAO,2CAA2C,CAAA;AAClD,OAAO,oBAAoB,CAAA;AAG3B,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAMD,wBAAgB,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,GAAE,gBAAqB,QAKlE;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,WAAW,QAGtC"}
@@ -0,0 +1,4 @@
1
+ export declare const fillExtensionVersion: string;
2
+ /** Save the extension as `hadoku-fill-<version>.zip`. */
3
+ export declare function downloadFillExtension(): void;
4
+ //# sourceMappingURL=bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../src/fillExtension/bundle.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,oBAAoB,QAAwD,CAAA;AAEzF,yDAAyD;AACzD,wBAAgB,qBAAqB,IAAI,IAAI,CAa5C"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The smallest zip a browser can hand to Chrome's "Load unpacked": every entry
3
+ * STORED (no compression), so all it needs is a CRC-32 and the three record
4
+ * types. The extension is ~40KB of text; deflate would save bytes nobody waits on.
5
+ */
6
+ export interface ZipEntry {
7
+ name: string;
8
+ text: string;
9
+ }
10
+ /** A zip of `entries`, each a UTF-8 text file at the archive root. */
11
+ export declare function zip(entries: ZipEntry[]): Uint8Array<ArrayBuffer>;
12
+ //# sourceMappingURL=zip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zip.d.ts","sourceRoot":"","sources":["../../src/fillExtension/zip.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,sEAAsE;AACtE,wBAAgB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,CA2DhE"}