@northstar-js/react 0.0.0-stage → 0.2.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.
Files changed (182) hide show
  1. package/LICENSE +21 -0
  2. package/dist/actions.d.ts +99 -0
  3. package/dist/actions.d.ts.map +1 -0
  4. package/dist/actions.js +61 -0
  5. package/dist/actions.js.map +1 -0
  6. package/dist/backdrops/StarBackdrop.d.ts +31 -0
  7. package/dist/backdrops/StarBackdrop.d.ts.map +1 -0
  8. package/dist/backdrops/StarBackdrop.js +84 -0
  9. package/dist/backdrops/StarBackdrop.js.map +1 -0
  10. package/dist/backdrops/index.d.ts +7 -0
  11. package/dist/backdrops/index.d.ts.map +1 -0
  12. package/dist/backdrops/index.js +8 -0
  13. package/dist/backdrops/index.js.map +1 -0
  14. package/dist/backdrops/math.d.ts +39 -0
  15. package/dist/backdrops/math.d.ts.map +1 -0
  16. package/dist/backdrops/math.js +44 -0
  17. package/dist/backdrops/math.js.map +1 -0
  18. package/dist/backdrops/scenes.d.ts +20 -0
  19. package/dist/backdrops/scenes.d.ts.map +1 -0
  20. package/dist/backdrops/scenes.js +417 -0
  21. package/dist/backdrops/scenes.js.map +1 -0
  22. package/dist/backdrops.css +141 -0
  23. package/dist/data.d.ts +91 -0
  24. package/dist/data.d.ts.map +1 -0
  25. package/dist/data.js +69 -0
  26. package/dist/data.js.map +1 -0
  27. package/dist/effects/actions.d.ts +48 -0
  28. package/dist/effects/actions.d.ts.map +1 -0
  29. package/dist/effects/actions.js +80 -0
  30. package/dist/effects/actions.js.map +1 -0
  31. package/dist/effects/controls.d.ts +84 -0
  32. package/dist/effects/controls.d.ts.map +1 -0
  33. package/dist/effects/controls.js +121 -0
  34. package/dist/effects/controls.js.map +1 -0
  35. package/dist/effects/display.d.ts +92 -0
  36. package/dist/effects/display.d.ts.map +1 -0
  37. package/dist/effects/display.js +138 -0
  38. package/dist/effects/display.js.map +1 -0
  39. package/dist/effects/hooks.d.ts +13 -0
  40. package/dist/effects/hooks.d.ts.map +1 -0
  41. package/dist/effects/hooks.js +68 -0
  42. package/dist/effects/hooks.js.map +1 -0
  43. package/dist/effects/index.d.ts +14 -0
  44. package/dist/effects/index.d.ts.map +1 -0
  45. package/dist/effects/index.js +12 -0
  46. package/dist/effects/index.js.map +1 -0
  47. package/dist/effects/loaders.d.ts +67 -0
  48. package/dist/effects/loaders.d.ts.map +1 -0
  49. package/dist/effects/loaders.js +73 -0
  50. package/dist/effects/loaders.js.map +1 -0
  51. package/dist/effects/math.d.ts +23 -0
  52. package/dist/effects/math.d.ts.map +1 -0
  53. package/dist/effects/math.js +56 -0
  54. package/dist/effects/math.js.map +1 -0
  55. package/dist/effects/navigation.d.ts +55 -0
  56. package/dist/effects/navigation.d.ts.map +1 -0
  57. package/dist/effects/navigation.js +103 -0
  58. package/dist/effects/navigation.js.map +1 -0
  59. package/dist/effects/overlays.d.ts +34 -0
  60. package/dist/effects/overlays.d.ts.map +1 -0
  61. package/dist/effects/overlays.js +56 -0
  62. package/dist/effects/overlays.js.map +1 -0
  63. package/dist/effects.css +1659 -0
  64. package/dist/feedback.d.ts +55 -0
  65. package/dist/feedback.d.ts.map +1 -0
  66. package/dist/feedback.js +60 -0
  67. package/dist/feedback.js.map +1 -0
  68. package/dist/flow.d.ts +70 -0
  69. package/dist/flow.d.ts.map +1 -0
  70. package/dist/flow.js +118 -0
  71. package/dist/flow.js.map +1 -0
  72. package/dist/forms.d.ts +130 -0
  73. package/dist/forms.d.ts.map +1 -0
  74. package/dist/forms.js +241 -0
  75. package/dist/forms.js.map +1 -0
  76. package/dist/glass.d.ts +74 -0
  77. package/dist/glass.d.ts.map +1 -0
  78. package/dist/glass.js +139 -0
  79. package/dist/glass.js.map +1 -0
  80. package/dist/illustrations/data.d.ts +103 -0
  81. package/dist/illustrations/data.d.ts.map +1 -0
  82. package/dist/illustrations/data.js +3 -0
  83. package/dist/illustrations/data.js.map +1 -0
  84. package/dist/illustrations/index.d.ts +110 -0
  85. package/dist/illustrations/index.d.ts.map +1 -0
  86. package/dist/illustrations/index.js +54 -0
  87. package/dist/illustrations/index.js.map +1 -0
  88. package/dist/illustrations/types.d.ts +30 -0
  89. package/dist/illustrations/types.d.ts.map +1 -0
  90. package/dist/illustrations/types.js +2 -0
  91. package/dist/illustrations/types.js.map +1 -0
  92. package/dist/index.d.ts +27 -0
  93. package/dist/index.d.ts.map +1 -0
  94. package/dist/index.js +13 -0
  95. package/dist/index.js.map +1 -0
  96. package/dist/internal/expand.d.ts +17 -0
  97. package/dist/internal/expand.d.ts.map +1 -0
  98. package/dist/internal/expand.js +23 -0
  99. package/dist/internal/expand.js.map +1 -0
  100. package/dist/internal/icons.d.ts +9 -0
  101. package/dist/internal/icons.d.ts.map +1 -0
  102. package/dist/internal/icons.js +12 -0
  103. package/dist/internal/icons.js.map +1 -0
  104. package/dist/internal/interaction.d.ts +21 -0
  105. package/dist/internal/interaction.d.ts.map +1 -0
  106. package/dist/internal/interaction.js +129 -0
  107. package/dist/internal/interaction.js.map +1 -0
  108. package/dist/internal/layers.d.ts +12 -0
  109. package/dist/internal/layers.d.ts.map +1 -0
  110. package/dist/internal/layers.js +108 -0
  111. package/dist/internal/layers.js.map +1 -0
  112. package/dist/internal/util.d.ts +9 -0
  113. package/dist/internal/util.d.ts.map +1 -0
  114. package/dist/internal/util.js +33 -0
  115. package/dist/internal/util.js.map +1 -0
  116. package/dist/layout.d.ts +34 -0
  117. package/dist/layout.d.ts.map +1 -0
  118. package/dist/layout.js +27 -0
  119. package/dist/layout.js.map +1 -0
  120. package/dist/motion.d.ts +36 -0
  121. package/dist/motion.d.ts.map +1 -0
  122. package/dist/motion.js +80 -0
  123. package/dist/motion.js.map +1 -0
  124. package/dist/navigation.d.ts +100 -0
  125. package/dist/navigation.d.ts.map +1 -0
  126. package/dist/navigation.js +154 -0
  127. package/dist/navigation.js.map +1 -0
  128. package/dist/northstar/BriefForm.d.ts +23 -0
  129. package/dist/northstar/BriefForm.d.ts.map +1 -0
  130. package/dist/northstar/BriefForm.js +40 -0
  131. package/dist/northstar/BriefForm.js.map +1 -0
  132. package/dist/northstar/ExportMenu.d.ts +16 -0
  133. package/dist/northstar/ExportMenu.d.ts.map +1 -0
  134. package/dist/northstar/ExportMenu.js +11 -0
  135. package/dist/northstar/ExportMenu.js.map +1 -0
  136. package/dist/northstar/PopulationPanel.d.ts +30 -0
  137. package/dist/northstar/PopulationPanel.d.ts.map +1 -0
  138. package/dist/northstar/PopulationPanel.js +18 -0
  139. package/dist/northstar/PopulationPanel.js.map +1 -0
  140. package/dist/northstar/ResearchBuilder.d.ts +26 -0
  141. package/dist/northstar/ResearchBuilder.d.ts.map +1 -0
  142. package/dist/northstar/ResearchBuilder.js +81 -0
  143. package/dist/northstar/ResearchBuilder.js.map +1 -0
  144. package/dist/northstar/ResponsesView.d.ts +20 -0
  145. package/dist/northstar/ResponsesView.d.ts.map +1 -0
  146. package/dist/northstar/ResponsesView.js +42 -0
  147. package/dist/northstar/ResponsesView.js.map +1 -0
  148. package/dist/northstar/Run.d.ts +37 -0
  149. package/dist/northstar/Run.d.ts.map +1 -0
  150. package/dist/northstar/Run.js +32 -0
  151. package/dist/northstar/Run.js.map +1 -0
  152. package/dist/northstar/StudyShell.d.ts +50 -0
  153. package/dist/northstar/StudyShell.d.ts.map +1 -0
  154. package/dist/northstar/StudyShell.js +18 -0
  155. package/dist/northstar/StudyShell.js.map +1 -0
  156. package/dist/northstar/StudyStatus.d.ts +17 -0
  157. package/dist/northstar/StudyStatus.d.ts.map +1 -0
  158. package/dist/northstar/StudyStatus.js +26 -0
  159. package/dist/northstar/StudyStatus.js.map +1 -0
  160. package/dist/northstar/index.d.ts +10 -0
  161. package/dist/northstar/index.d.ts.map +1 -0
  162. package/dist/northstar/index.js +10 -0
  163. package/dist/northstar/index.js.map +1 -0
  164. package/dist/northstar/messages.d.ts +84 -0
  165. package/dist/northstar/messages.d.ts.map +1 -0
  166. package/dist/northstar/messages.js +107 -0
  167. package/dist/northstar/messages.js.map +1 -0
  168. package/dist/overlays.d.ts +136 -0
  169. package/dist/overlays.d.ts.map +1 -0
  170. package/dist/overlays.js +447 -0
  171. package/dist/overlays.js.map +1 -0
  172. package/dist/provider.d.ts +82 -0
  173. package/dist/provider.d.ts.map +1 -0
  174. package/dist/provider.js +128 -0
  175. package/dist/provider.js.map +1 -0
  176. package/dist/styles.css +2033 -0
  177. package/dist/surface.d.ts +58 -0
  178. package/dist/surface.d.ts.map +1 -0
  179. package/dist/surface.js +39 -0
  180. package/dist/surface.js.map +1 -0
  181. package/package.json +81 -3
  182. package/README.md +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResearchBuilder.js","sourceRoot":"","sources":["../../src/northstar/ResearchBuilder.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { ResearchItem, Study } from '@northstar-js/contracts';
3
+ import { type WithMessages } from './messages.js';
4
+ export interface ResponsesViewProps extends React.HTMLAttributes<HTMLDivElement>, WithMessages {
5
+ study: Study;
6
+ /** 'objective' groups items under the study's objectives; 'item' lists them in battery order. */
7
+ groupBy?: 'objective' | 'item';
8
+ /** Which objective (index into `study.objectives`) an item belongs to. Default: the first. */
9
+ objectiveOf?: (item: ResearchItem, index: number) => number | undefined;
10
+ /** Extra content under an item's figure (a selected free-text answer, say). */
11
+ renderExtra?: (item: ResearchItem) => ReactNode;
12
+ /** Intro sentence above the figures; pass null to hide. */
13
+ intro?: ReactNode;
14
+ /** Width of each distribution chart. Default 320. */
15
+ chartWidth?: number;
16
+ locale?: string;
17
+ }
18
+ /** The Responses tab: one row per item with its headline figure and distribution, grouped by objective. */
19
+ export declare function ResponsesView({ study, groupBy, objectiveOf, renderExtra, intro, chartWidth, locale, messages, className, ...rest }: ResponsesViewProps): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=ResponsesView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponsesView.d.ts","sourceRoot":"","sources":["../../src/northstar/ResponsesView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAInE,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEjE,MAAM,WAAW,kBAAmB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,YAAY;IAC5F,KAAK,EAAE,KAAK,CAAC;IACb,iGAAiG;IACjG,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC/B,8FAA8F;IAC9F,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACxE,+EAA+E;IAC/E,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,SAAS,CAAC;IAChD,2DAA2D;IAC3D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AASD,2GAA2G;AAC3G,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EAAE,OAAqB,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,UAAgB,EAAE,MAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAC7H,EAAE,kBAAkB,2CA8EpB"}
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import {} from 'react';
3
+ import { Distribution, Figure } from '@northstar-js/charts';
4
+ import { EmptyResponses } from '../illustrations/index.js';
5
+ import { cx } from '../internal/util.js';
6
+ import { studyMessages } from './messages.js';
7
+ /** The Responses tab: one row per item with its headline figure and distribution, grouped by objective. */
8
+ export function ResponsesView({ study, groupBy = 'objective', objectiveOf, renderExtra, intro, chartWidth = 320, locale = 'en', messages, className, ...rest }) {
9
+ const m = studyMessages(messages);
10
+ const answered = study.items.map((item, index) => ({ item, index })).filter((r) => r.item.result);
11
+ if (answered.length === 0) {
12
+ return (_jsx("div", { ...rest, className: cx('ns-responses', className), children: _jsxs("div", { className: "ns-study-empty", children: [_jsx(EmptyResponses, {}), _jsx("p", { className: "ns-study-empty__title", children: m.emptyResponsesTitle }), _jsx("p", { className: "ns-study-hint", children: m.emptyResponsesBody })] }) }));
13
+ }
14
+ let groups;
15
+ if (groupBy === 'item' || study.objectives.length === 0) {
16
+ groups = [{ key: 'all', title: m.items, rows: answered }];
17
+ }
18
+ else {
19
+ const by = new Map();
20
+ const other = { key: 'other', title: m.otherItems, rows: [] };
21
+ for (const r of answered) {
22
+ const o = objectiveOf ? objectiveOf(r.item, r.index) : 0;
23
+ if (o === undefined || !study.objectives[o]) {
24
+ other.rows.push(r);
25
+ continue;
26
+ }
27
+ if (!by.has(o))
28
+ by.set(o, { key: `o${o}`, code: `O${o + 1}`, title: study.objectives[o], rows: [] });
29
+ by.get(o).rows.push(r);
30
+ }
31
+ groups = [...[...by.entries()].sort((a, b) => a[0] - b[0]).map(([, g]) => g), ...(other.rows.length ? [other] : [])];
32
+ }
33
+ return (_jsxs("div", { ...rest, className: cx('ns-responses', className), children: [intro !== null && _jsx("p", { className: "ns-study-hint ns-responses__intro", children: intro ?? m.responsesIntro }), groups.map((g) => {
34
+ const hid = `ns-resp-${study.id}-${g.key}`;
35
+ return (_jsxs("section", { className: "ns-study-panel", "aria-labelledby": hid, children: [_jsxs("div", { className: "ns-study-panel__head", children: [g.code && _jsx("span", { className: "ns-study-id", children: g.code }), _jsx("h2", { id: hid, className: "ns-study-panel__title", children: g.title }), _jsx("span", { className: "ns-study-hint ns-study-panel__end", children: m.itemCount(g.rows.length) })] }), g.rows.map(({ item, index }) => {
36
+ const h = item.result.headline;
37
+ const d = item.result.distribution;
38
+ return (_jsxs("article", { className: "ns-responses__row", "aria-label": m.itemId(index), children: [_jsx("span", { className: "ns-study-id", children: m.itemId(index) }), _jsx("span", { className: "ns-responses__q", children: item.question }), _jsx("div", { className: "ns-responses__figure", children: h ? (_jsx(Figure, { value: h.value, size: "sm", locale: locale, ...(h.band !== undefined ? { band: h.band } : {}), ...(h.claim ? { claim: h.claim } : {}), ...(h.caption !== undefined ? { caption: h.caption } : {}), ...(h.state ? { state: h.state } : {}) })) : null }), _jsx("div", { className: "ns-responses__dist", children: _jsx(Distribution, { anchors: d.anchors, shares: d.shares, width: chartWidth, locale: locale, title: `${m.distribution} ${m.itemId(index)}` }) }), renderExtra && _jsx("div", { className: "ns-responses__extra", children: renderExtra(item) })] }, item.key));
39
+ })] }, g.key));
40
+ })] }));
41
+ }
42
+ //# sourceMappingURL=ResponsesView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponsesView.js","sourceRoot":"","sources":["../../src/northstar/ResponsesView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { CostEstimate } from '@northstar-js/contracts';
3
+ import { type WithMessages } from './messages.js';
4
+ /** Format an estimate as currency, or null when there is none. */
5
+ export declare function formatCost(estimate: CostEstimate | undefined, locale?: string): string | null;
6
+ export interface RunCostProps extends React.HTMLAttributes<HTMLDivElement>, WithMessages {
7
+ /** null or undefined shows "Cost unavailable" and disables the run. */
8
+ estimate: CostEstimate | undefined;
9
+ /** Called by the run button. Omit to hide the button. */
10
+ onRun?: () => void;
11
+ /** Disable the run for another reason (an anchor to fix, say). */
12
+ disabled?: boolean;
13
+ /** Shown under the button, e.g. why the run is blocked. */
14
+ note?: ReactNode;
15
+ loading?: boolean;
16
+ locale?: string;
17
+ /** Icon-first run button (for a narrow rail): the run icon shows and the label eases open on hover and focus. Default false. */
18
+ expand?: boolean | 'always';
19
+ }
20
+ /** Estimated cost and the run button. Without an estimate the cost reads "Cost unavailable" and nothing can run. */
21
+ export declare function RunCost({ estimate, onRun, disabled, note, loading, locale, expand, messages, className, ...rest }: RunCostProps): import("react/jsx-runtime").JSX.Element;
22
+ export interface RunConfirmProps extends WithMessages {
23
+ open?: boolean;
24
+ defaultOpen?: boolean;
25
+ onOpenChange?: (open: boolean) => void;
26
+ estimate: CostEstimate | undefined;
27
+ /** Study title, shown in the body. */
28
+ studyTitle?: string;
29
+ onConfirm: () => void;
30
+ /** Optional trigger; usually the RunCost button opens the dialog through `open`. */
31
+ trigger?: ReactNode;
32
+ children?: ReactNode;
33
+ locale?: string;
34
+ }
35
+ /** The paid-run confirmation. Confirm is disabled while no estimate exists. */
36
+ export declare function RunConfirm({ open, defaultOpen, onOpenChange, estimate, studyTitle, onConfirm, trigger, children, locale, messages, }: RunConfirmProps): import("react/jsx-runtime").JSX.Element;
37
+ //# sourceMappingURL=Run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Run.d.ts","sourceRoot":"","sources":["../../src/northstar/Run.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAK5D,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEjE,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,EAAE,MAAM,SAAO,GAAG,MAAM,GAAG,IAAI,CAO3F;AAED,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,YAAY;IACtF,uEAAuE;IACvE,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAC;IACnC,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gIAAgI;IAChI,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC7B;AAED,oHAAoH;AACpH,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,MAAa,EAAE,MAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,YAAY,2CA4BtJ;AAED,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAC;IACnC,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,oFAAoF;IACpF,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,+EAA+E;AAC/E,wBAAgB,UAAU,CAAC,EACzB,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAa,EAAE,QAAQ,GAC7G,EAAE,eAAe,2CAoCjB"}
@@ -0,0 +1,32 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Icon } from '@northstar-js/icons';
4
+ import { Button } from '../actions.js';
5
+ import { Dialog } from '../overlays.js';
6
+ import { cx } from '../internal/util.js';
7
+ import { studyMessages } from './messages.js';
8
+ /** Format an estimate as currency, or null when there is none. */
9
+ export function formatCost(estimate, locale = 'en') {
10
+ if (!estimate)
11
+ return null;
12
+ try {
13
+ return new Intl.NumberFormat(locale, { style: 'currency', currency: estimate.currency }).format(estimate.amount);
14
+ }
15
+ catch {
16
+ return `${estimate.amount} ${estimate.currency}`;
17
+ }
18
+ }
19
+ /** Estimated cost and the run button. Without an estimate the cost reads "Cost unavailable" and nothing can run. */
20
+ export function RunCost({ estimate, onRun, disabled = false, note, loading, locale = 'en', expand = false, messages, className, ...rest }) {
21
+ const m = studyMessages(messages);
22
+ const cost = formatCost(estimate, locale);
23
+ const unavailable = cost === null;
24
+ return (_jsxs("div", { ...rest, className: cx('ns-run-cost', className), "data-unavailable": unavailable || undefined, children: [_jsxs("div", { className: "ns-run-cost__line", children: [_jsx("span", { className: "ns-study-muted", children: m.estimatedCost }), _jsx("span", { className: cx('ns-study-mono', unavailable && 'ns-study-muted'), children: cost ?? m.costUnavailable })] }), estimate?.basis && _jsx("span", { className: "ns-study-hint", children: estimate.basis }), onRun && (_jsx(Button, { variant: "primary", onClick: onRun, disabled: unavailable || disabled, loading: loading ?? false, icon: _jsx(Icon, { name: "run", size: 14 }), expand: expand, className: cx('ns-run-cost__button', expand && 'ns-run-cost__button--expand'), children: m.runStudy })), unavailable && _jsx("span", { className: "ns-study-hint", children: m.costUnavailableHint }), note && _jsx("div", { className: "ns-study-callout", children: note })] }));
25
+ }
26
+ /** The paid-run confirmation. Confirm is disabled while no estimate exists. */
27
+ export function RunConfirm({ open, defaultOpen, onOpenChange, estimate, studyTitle, onConfirm, trigger, children, locale = 'en', messages, }) {
28
+ const m = studyMessages(messages);
29
+ const cost = formatCost(estimate, locale);
30
+ return (_jsxs(Dialog.Root, { ...(open !== undefined ? { open } : {}), ...(defaultOpen !== undefined ? { defaultOpen } : {}), ...(onOpenChange ? { onOpenChange } : {}), children: [trigger && _jsx(Dialog.Trigger, { className: "ns-button ns-button--secondary ns-size-md", children: trigger }), _jsxs(Dialog.Content, { size: "sm", children: [_jsxs(Dialog.Header, { children: [_jsxs("div", { children: [_jsx(Dialog.Title, { children: m.runConfirmTitle }), _jsxs(Dialog.Description, { children: [studyTitle ? `${studyTitle}. ` : '', m.runConfirmBody] })] }), _jsx(Dialog.Close, {})] }), _jsxs("div", { className: "ns-run-cost__line ns-run-confirm__cost", children: [_jsx("span", { className: "ns-study-muted", children: m.estimatedCost }), _jsx("span", { className: "ns-study-mono", children: cost ?? m.costUnavailable })] }), children, _jsxs(Dialog.Footer, { children: [_jsx(Dialog.Close, { className: "ns-button ns-button--secondary ns-size-md", children: m.cancel }), _jsxs(Dialog.Close, { className: "ns-button ns-button--primary ns-size-md", disabled: cost === null, onClick: () => onConfirm(), children: [_jsx(Icon, { name: "run", size: 14, className: "ns-button__icon" }), m.confirmRun] })] })] })] }));
31
+ }
32
+ //# sourceMappingURL=Run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Run.js","sourceRoot":"","sources":["../../src/northstar/Run.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { Study, StudyTab } from '@northstar-js/contracts';
3
+ import { type IconName } from '@northstar-js/icons';
4
+ import { type WithMessages } from './messages.js';
5
+ export declare const STUDY_TABS: readonly StudyTab[];
6
+ /** The icon each study section leads with. */
7
+ export declare const STUDY_TAB_ICON: Record<StudyTab, IconName>;
8
+ export interface StudyShellProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'>, WithMessages {
9
+ study: Study;
10
+ /** The open tab (controlled). Falls back to `defaultTab`, then `study.tab`, then 'brief'. */
11
+ tab?: StudyTab;
12
+ defaultTab?: StudyTab;
13
+ onTabChange?: (tab: StudyTab) => void;
14
+ /** Content per tab. `children` renders under the active tab when no panel is given for it. */
15
+ panels?: Partial<Record<StudyTab, ReactNode>>;
16
+ /** Small counter beside each tab label, e.g. "2/3" or "locked". */
17
+ tabMeta?: Partial<Record<StudyTab, ReactNode>>;
18
+ /** Actions at the end of the tab bar (e.g. "Add item" on Research). */
19
+ tabActions?: ReactNode;
20
+ /** Actions at the end of the title bar (export, more). */
21
+ actions?: ReactNode;
22
+ /** Save indicator; omit to hide. */
23
+ saveState?: 'saved' | 'saving';
24
+ /** The breadcrumb root. Defaults to "Studies". */
25
+ crumb?: ReactNode;
26
+ /** Right-hand properties rail. */
27
+ aside?: ReactNode;
28
+ /**
29
+ * Guided mode: the four tabs become a flow (Brief → Population → Research →
30
+ * Responses) with progress, animated step changes and one next action.
31
+ */
32
+ guided?: boolean;
33
+ /** Guided mode: steps that cannot be left yet (e.g. an unfinished brief). */
34
+ blockedTabs?: readonly StudyTab[];
35
+ /** Guided mode: a short line beside the next action, per step. */
36
+ stepHints?: Partial<Record<StudyTab, ReactNode>>;
37
+ /** Guided mode: the next action on the last step. */
38
+ onFinish?: () => void;
39
+ /** Guided mode: label of the last step's action. */
40
+ finishLabel?: ReactNode;
41
+ /**
42
+ * Tab icons. `true` (default) leads each tab with its section icon; `expand`
43
+ * is icon-first: the icon shows and the label eases open on hover, focus and
44
+ * for the open tab (always on touch); false drops the icons.
45
+ */
46
+ iconTabs?: boolean | 'expand';
47
+ }
48
+ /** The study workspace: title bar, the four tabs Brief → Population → Research → Responses, content and an optional rail. */
49
+ export declare function StudyShell({ study, tab, defaultTab, onTabChange, panels, tabMeta, tabActions, actions, saveState, crumb, aside, guided, blockedTabs, stepHints, onFinish, finishLabel, iconTabs, messages, className, children, ...rest }: StudyShellProps): import("react/jsx-runtime").JSX.Element;
50
+ //# sourceMappingURL=StudyShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StudyShell.d.ts","sourceRoot":"","sources":["../../src/northstar/StudyShell.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAK1D,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEjE,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EAAqD,CAAC;AAEhG,8CAA8C;AAC9C,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAA8F,CAAC;AAErJ,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY;IACxG,KAAK,EAAE,KAAK,CAAC;IACb,6FAA6F;IAC7F,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;IACtC,8FAA8F;IAC9F,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9C,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAC/C,uEAAuE;IACvE,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,oCAAoC;IACpC,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC/B,kDAAkD;IAClD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,kCAAkC;IAClC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAClC,kEAAkE;IAClE,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IACjD,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,oDAAoD;IACpD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC/B;AAED,6HAA6H;AAC7H,wBAAgB,UAAU,CAAC,EACzB,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAc,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAC3N,EAAE,eAAe,2CAwEjB"}
@@ -0,0 +1,18 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Icon } from '@northstar-js/icons';
4
+ import { Tabs } from '../navigation.js';
5
+ import { FlowStep, FlowSteps, NextAction } from '../flow.js';
6
+ import { cx, useControllable } from '../internal/util.js';
7
+ import { StudyStatus } from './StudyStatus.js';
8
+ import { studyMessages } from './messages.js';
9
+ export const STUDY_TABS = ['brief', 'population', 'research', 'responses'];
10
+ /** The icon each study section leads with. */
11
+ export const STUDY_TAB_ICON = { brief: 'brief', population: 'population', research: 'research', responses: 'responses' };
12
+ /** The study workspace: title bar, the four tabs Brief → Population → Research → Responses, content and an optional rail. */
13
+ export function StudyShell({ study, tab, defaultTab, onTabChange, panels, tabMeta, tabActions, actions, saveState, crumb, aside, guided = false, blockedTabs, stepHints, onFinish, finishLabel, iconTabs = true, messages, className, children, ...rest }) {
14
+ const m = studyMessages(messages);
15
+ const [current, setCurrent] = useControllable(tab, defaultTab ?? study.tab ?? 'brief', onTabChange);
16
+ return (_jsxs("div", { ...rest, className: cx('ns-study-shell', aside ? 'ns-study-shell--with-aside' : undefined, className), "data-study": study.id, children: [_jsxs("div", { className: "ns-study-shell__main", children: [_jsxs("div", { className: "ns-study-shell__bar", children: [_jsxs("nav", { className: "ns-study-shell__crumb", "aria-label": m.studies, children: [_jsx("span", { children: crumb ?? m.studies }), _jsx("svg", { width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", stroke: "currentColor", strokeWidth: "1.5", "aria-hidden": "true", children: _jsx("path", { d: "M3.5 2 6.5 5 3.5 8" }) }), _jsx("b", { "aria-current": "page", children: study.title })] }), _jsx(StudyStatus, { state: study.state, messages: messages }), _jsx("span", { className: "ns-study-shell__spacer" }), saveState && (_jsx("span", { className: "ns-study-shell__save", role: "status", children: saveState === 'saving' ? m.saving : m.saved })), actions] }), guided ? (_jsx(FlowSteps, { value: current, onValueChange: (v) => setCurrent(v), onComplete: onFinish, label: m.studySections, className: "ns-study-shell__flow", children: STUDY_TABS.map((t) => (_jsxs(FlowStep, { value: t, title: m.tabs[t], textTitle: m.tabs[t], icon: iconTabs ? _jsx(Icon, { name: STUDY_TAB_ICON[t], size: 14 }) : undefined, blocked: blockedTabs?.includes(t), description: tabMeta?.[t], children: [panels?.[t] ?? children, _jsx("div", { className: "ns-study-shell__next", children: _jsx(NextAction, { hint: stepHints?.[t], finishLabel: finishLabel }) })] }, t))) })) : (_jsxs(Tabs.Root, { value: current, onValueChange: (v) => setCurrent(v), transition: true, className: "ns-study-shell__tabs", children: [_jsxs("div", { className: "ns-study-shell__tabbar", children: [_jsx(Tabs.List, { label: m.studySections, className: "ns-study-shell__tablist", children: STUDY_TABS.map((t) => (_jsxs(Tabs.Trigger, { value: t, className: "ns-study-shell__tab", icon: iconTabs ? _jsx(Icon, { name: STUDY_TAB_ICON[t], size: 14 }) : undefined, expand: iconTabs === 'expand', children: [m.tabs[t], tabMeta?.[t] !== undefined && _jsx("span", { className: "ns-study-shell__tab-meta", children: tabMeta[t] })] }, t))) }), tabActions && _jsx("div", { className: "ns-study-shell__tab-actions", children: tabActions })] }), _jsx(Tabs.Content, { value: current, className: "ns-study-shell__content", children: panels?.[current] ?? children })] }))] }), aside && (_jsx("aside", { className: "ns-study-shell__aside", "aria-label": m.studyProperties, children: aside }))] }));
17
+ }
18
+ //# sourceMappingURL=StudyShell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StudyShell.js","sourceRoot":"","sources":["../../src/northstar/StudyShell.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { StudyState } from '@northstar-js/contracts';
2
+ import { type IconName } from '@northstar-js/icons';
3
+ import { type WithMessages } from './messages.js';
4
+ /** One dial shape per state: status is told apart by shape and word, never by hue alone. */
5
+ export declare const STATUS_ICON: Record<StudyState, IconName>;
6
+ export interface StudyStatusProps extends React.HTMLAttributes<HTMLSpanElement>, WithMessages {
7
+ state: StudyState;
8
+ /** 'tag' draws a bordered chip; 'inline' only the mark and word. */
9
+ variant?: 'tag' | 'inline';
10
+ /** Icon size in px. */
11
+ size?: number;
12
+ /** Icon-first chip: the dial shows and the word eases open on hover (always on touch); the word names it for screen readers throughout. `always` keeps it. Default false. */
13
+ expand?: boolean | 'always';
14
+ }
15
+ /** Study lifecycle state: a dial shape plus its word. Running sweeps, or stands still under reduced motion. */
16
+ export declare function StudyStatus({ state, variant, size, expand, messages, className, ...rest }: StudyStatusProps): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=StudyStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StudyStatus.d.ts","sourceRoot":"","sources":["../../src/northstar/StudyStatus.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAI1D,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAEjE,4FAA4F;AAC5F,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,CAQpD,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,YAAY;IAC3F,KAAK,EAAE,UAAU,CAAC;IAClB,oEAAoE;IACpE,OAAO,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC3B,uBAAuB;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6KAA6K;IAC7K,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC7B;AAED,+GAA+G;AAC/G,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,OAAe,EAAE,IAAS,EAAE,MAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,gBAAgB,2CAuBhI"}
@@ -0,0 +1,26 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Icon } from '@northstar-js/icons';
4
+ import { usePrefersReducedMotion } from '@northstar-js/motion';
5
+ import { cx } from '../internal/util.js';
6
+ import { ExpandIcon, ExpandLabel, expandHost } from '../internal/expand.js';
7
+ import { studyMessages } from './messages.js';
8
+ /** One dial shape per state: status is told apart by shape and word, never by hue alone. */
9
+ export const STATUS_ICON = {
10
+ draft: 'draft',
11
+ ready: 'study',
12
+ running: 'running',
13
+ complete: 'complete',
14
+ partial: 'drift',
15
+ failed: 'off-axis',
16
+ archived: 'locked',
17
+ };
18
+ /** Study lifecycle state: a dial shape plus its word. Running sweeps, or stands still under reduced motion. */
19
+ export function StudyStatus({ state, variant = 'tag', size = 14, expand = false, messages, className, ...rest }) {
20
+ const m = studyMessages(messages);
21
+ const reduced = usePrefersReducedMotion();
22
+ const motion = state === 'running' ? (reduced ? 'still' : 'sweep') : undefined;
23
+ const host = expandHost(expand);
24
+ return (_jsxs("span", { ...rest, className: cx('ns-study-status', `ns-study-status--${variant}`, `ns-study-status--${state}`, host.className, className), "data-state": state, "data-expand": host['data-expand'], ...(motion ? { 'data-motion': motion } : {}), children: [host.className ? (_jsx(ExpandIcon, { children: _jsx(Icon, { name: STATUS_ICON[state], size: size, className: "ns-study-status__mark" }) })) : (_jsx(Icon, { name: STATUS_ICON[state], size: size, className: "ns-study-status__mark" })), host.className ? _jsx(ExpandLabel, { className: "ns-study-status__word", children: m.states[state] }) : _jsx("span", { className: "ns-study-status__word", children: m.states[state] })] }));
25
+ }
26
+ //# sourceMappingURL=StudyStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StudyStatus.js","sourceRoot":"","sources":["../../src/northstar/StudyStatus.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAiB,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAqB,MAAM,eAAe,CAAC;AAEjE,4FAA4F;AAC5F,MAAM,CAAC,MAAM,WAAW,GAAiC;IACvD,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,UAAU;IAClB,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAYF,+GAA+G;AAC/G,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,GAAG,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAoB;IAC/H,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,CACL,mBACM,IAAI,EACR,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,oBAAoB,OAAO,EAAE,EAAE,oBAAoB,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,gBAC3G,KAAK,iBACJ,IAAI,CAAC,aAAa,CAAC,KAC5B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAE5C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAChB,KAAC,UAAU,cACT,KAAC,IAAI,IAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC,uBAAuB,GAAG,GACrE,CACd,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC,uBAAuB,GAAG,CACjF,EACA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAC,WAAW,IAAC,SAAS,EAAC,uBAAuB,YAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAe,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,uBAAuB,YAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAQ,IAC9J,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { StudyShell, STUDY_TABS, type StudyShellProps } from './StudyShell.js';
2
+ export { StudyStatus, STATUS_ICON, type StudyStatusProps } from './StudyStatus.js';
3
+ export { BriefForm, type BriefFormProps, type BriefValue } from './BriefForm.js';
4
+ export { PopulationPanel, type PopulationPanelProps, type CompositionGroup } from './PopulationPanel.js';
5
+ export { ResearchBuilder, type ResearchBuilderProps, type AnchorIssue } from './ResearchBuilder.js';
6
+ export { ResponsesView, type ResponsesViewProps } from './ResponsesView.js';
7
+ export { RunCost, RunConfirm, formatCost, type RunCostProps, type RunConfirmProps } from './Run.js';
8
+ export { ExportMenu, type ExportMenuProps, type ExportFormat } from './ExportMenu.js';
9
+ export { enStudy, studyMessages, type StudyMessages, type WithMessages } from './messages.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/northstar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACzG,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AACpG,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { StudyShell, STUDY_TABS } from './StudyShell.js';
2
+ export { StudyStatus, STATUS_ICON } from './StudyStatus.js';
3
+ export { BriefForm } from './BriefForm.js';
4
+ export { PopulationPanel } from './PopulationPanel.js';
5
+ export { ResearchBuilder } from './ResearchBuilder.js';
6
+ export { ResponsesView } from './ResponsesView.js';
7
+ export { RunCost, RunConfirm, formatCost } from './Run.js';
8
+ export { ExportMenu } from './ExportMenu.js';
9
+ export { enStudy, studyMessages } from './messages.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/northstar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,SAAS,EAAwC,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,eAAe,EAAoD,MAAM,sBAAsB,CAAC;AACzG,OAAO,EAAE,eAAe,EAA+C,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAA2C,MAAM,UAAU,CAAC;AACpG,OAAO,EAAE,UAAU,EAA2C,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAyC,MAAM,eAAe,CAAC"}
@@ -0,0 +1,84 @@
1
+ import type { QuestionType, ResponseFormat, StudyState, StudyTab } from '@northstar-js/contracts';
2
+ /** Every string the Northstar components show. English ships as the default. */
3
+ export interface StudyMessages {
4
+ states: Record<StudyState, string>;
5
+ tabs: Record<StudyTab, string>;
6
+ studies: string;
7
+ studySections: string;
8
+ studyProperties: string;
9
+ saved: string;
10
+ saving: string;
11
+ studyName: string;
12
+ decision: string;
13
+ decisionPlaceholder: string;
14
+ objectives: string;
15
+ objectiveCount: (n: number, max: number) => string;
16
+ addObjective: string;
17
+ objectiveLabel: (i: number) => string;
18
+ objectivePlaceholder: string;
19
+ removeObjective: (i: number) => string;
20
+ objectivesHint: string;
21
+ emptyBriefTitle: string;
22
+ emptyBriefBody: string;
23
+ market: string;
24
+ size: string;
25
+ seed: string;
26
+ rebuild: string;
27
+ rebuildHint: string;
28
+ composition: string;
29
+ panel: string;
30
+ margin: string;
31
+ scope: string;
32
+ scopeBody: string;
33
+ emptyPopulationTitle: string;
34
+ emptyPopulationBody: string;
35
+ items: string;
36
+ addItem: string;
37
+ itemId: (i: number) => string;
38
+ moveUp: (id: string) => string;
39
+ moveDown: (id: string) => string;
40
+ removeItem: (id: string) => string;
41
+ wording: string;
42
+ questionType: string;
43
+ format: string;
44
+ anchors: string;
45
+ anchorLabel: (i: number) => string;
46
+ anchorPasses: string;
47
+ anchorNeedsFix: string;
48
+ needsFix: string;
49
+ anchorHint: string;
50
+ questionTypes: Record<QuestionType, string>;
51
+ formats: Record<ResponseFormat, string>;
52
+ emptyResearchTitle: string;
53
+ emptyResearchBody: string;
54
+ selectItem: string;
55
+ responsesIntro: string;
56
+ itemCount: (n: number) => string;
57
+ otherItems: string;
58
+ distribution: string;
59
+ emptyResponsesTitle: string;
60
+ emptyResponsesBody: string;
61
+ run: string;
62
+ runStudy: string;
63
+ estimatedCost: string;
64
+ costUnavailable: string;
65
+ costUnavailableHint: string;
66
+ runConfirmTitle: string;
67
+ runConfirmBody: string;
68
+ cancel: string;
69
+ confirmRun: string;
70
+ export: string;
71
+ exportFormats: {
72
+ pdf: string;
73
+ spec: string;
74
+ csv: string;
75
+ };
76
+ }
77
+ export declare const enStudy: StudyMessages;
78
+ /** Merge partial overrides over the English defaults (one level deep for the record fields). */
79
+ export declare function studyMessages(override?: Partial<StudyMessages>): StudyMessages;
80
+ export interface WithMessages {
81
+ /** String overrides; English defaults fill the rest. */
82
+ messages?: Partial<StudyMessages> | undefined;
83
+ }
84
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/northstar/messages.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ export const enStudy = {
2
+ states: {
3
+ draft: 'Draft',
4
+ ready: 'Ready',
5
+ running: 'Running',
6
+ complete: 'Complete',
7
+ partial: 'Partial',
8
+ failed: 'Failed',
9
+ archived: 'Archived',
10
+ },
11
+ tabs: { brief: 'Brief', population: 'Population', research: 'Research', responses: 'Responses' },
12
+ studies: 'Studies',
13
+ studySections: 'Study sections',
14
+ studyProperties: 'Study properties',
15
+ saved: 'Saved',
16
+ saving: 'Saving…',
17
+ studyName: 'Study name',
18
+ decision: 'Decision this study informs',
19
+ decisionPlaceholder: 'Name the one decision this study informs.',
20
+ objectives: 'Objectives',
21
+ objectiveCount: (n, max) => `${n} of ${max}`,
22
+ addObjective: 'Add',
23
+ objectiveLabel: (i) => `Objective O${i + 1}`,
24
+ objectivePlaceholder: 'Add an objective…',
25
+ removeObjective: (i) => `Remove objective O${i + 1}`,
26
+ objectivesHint: 'Every research item points at one objective, and Responses groups figures the same way.',
27
+ emptyBriefTitle: 'Start with the decision',
28
+ emptyBriefBody: 'Name the one decision this study informs.',
29
+ market: 'Market',
30
+ size: 'Size',
31
+ seed: 'Seed',
32
+ rebuild: 'Rebuild',
33
+ rebuildHint: 'Deterministic · 0 API calls',
34
+ composition: 'Composition',
35
+ panel: 'Panel',
36
+ margin: 'Margin',
37
+ scope: 'Scope',
38
+ scopeBody: 'One population per study. Results describe it as a whole; groups inside it are not compared.',
39
+ emptyPopulationTitle: 'No panel yet',
40
+ emptyPopulationBody: 'The roster is free; writing personas is paid and shows a cost estimate first.',
41
+ items: 'Items',
42
+ addItem: 'Item',
43
+ itemId: (i) => `R${i + 1}`,
44
+ moveUp: (id) => `Move ${id} up`,
45
+ moveDown: (id) => `Move ${id} down`,
46
+ removeItem: (id) => `Remove ${id}`,
47
+ wording: 'Wording',
48
+ questionType: 'Question type',
49
+ format: 'Format',
50
+ anchors: 'Anchors',
51
+ anchorLabel: (i) => `Anchor ${i + 1}`,
52
+ anchorPasses: 'Passes',
53
+ anchorNeedsFix: 'Needs a fix',
54
+ needsFix: 'Fix',
55
+ anchorHint: 'The anchor check is free and reruns as you type.',
56
+ questionTypes: {
57
+ mood_direction: 'Mood and direction',
58
+ consensus_trust: 'Consensus and trust',
59
+ neutral_factual: 'Neutral factual',
60
+ concrete_habit: 'Concrete habit',
61
+ values_identity: 'Values and identity',
62
+ intention_virtue: 'Intention and virtue',
63
+ },
64
+ formats: {
65
+ likert: 'Likert 5',
66
+ single_choice: 'Single',
67
+ multi_select: 'Multiple',
68
+ ranking: 'Ranking',
69
+ free_text: 'Free text',
70
+ price_trial: 'Price trial',
71
+ },
72
+ emptyResearchTitle: 'No items yet',
73
+ emptyResearchBody: 'Every anchor passes the free gate before any paid call.',
74
+ selectItem: 'Select an item to edit it.',
75
+ responsesIntro: 'Screening signals about the population as a whole, not predictions about any person.',
76
+ itemCount: (n) => `${n} ${n === 1 ? 'item' : 'items'}`,
77
+ otherItems: 'Other items',
78
+ distribution: 'Distribution',
79
+ emptyResponsesTitle: 'No responses yet',
80
+ emptyResponsesBody: 'A cost estimate comes before any paid run.',
81
+ run: 'Run',
82
+ runStudy: 'Run study',
83
+ estimatedCost: 'Estimated cost',
84
+ costUnavailable: 'Cost unavailable',
85
+ costUnavailableHint: 'Running needs a cost estimate. Nothing is spent until you confirm.',
86
+ runConfirmTitle: 'Run this study?',
87
+ runConfirmBody: 'This is a paid run. Nothing is spent until you confirm.',
88
+ cancel: 'Cancel',
89
+ confirmRun: 'Run study',
90
+ export: 'Export',
91
+ exportFormats: { pdf: 'Export PDF', spec: 'Report spec (JSON)', csv: 'Responses (CSV)' },
92
+ };
93
+ /** Merge partial overrides over the English defaults (one level deep for the record fields). */
94
+ export function studyMessages(override) {
95
+ if (!override)
96
+ return enStudy;
97
+ return {
98
+ ...enStudy,
99
+ ...override,
100
+ states: { ...enStudy.states, ...override.states },
101
+ tabs: { ...enStudy.tabs, ...override.tabs },
102
+ questionTypes: { ...enStudy.questionTypes, ...override.questionTypes },
103
+ formats: { ...enStudy.formats, ...override.formats },
104
+ exportFormats: { ...enStudy.exportFormats, ...override.exportFormats },
105
+ };
106
+ }
107
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/northstar/messages.ts"],"names":[],"mappings":"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"}