@twentyfirstmedia/ui-core 0.2.0 → 0.3.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 (146) hide show
  1. package/dist/components/admin.d.ts.map +1 -1
  2. package/dist/components/admin.js +95 -71
  3. package/dist/components/admin.js.map +1 -1
  4. package/dist/components/agents.d.ts.map +1 -1
  5. package/dist/components/agents.js +49 -35
  6. package/dist/components/agents.js.map +1 -1
  7. package/dist/components/app-chrome.d.ts.map +1 -1
  8. package/dist/components/app-chrome.js +6 -2
  9. package/dist/components/app-chrome.js.map +1 -1
  10. package/dist/components/approvals.d.ts.map +1 -1
  11. package/dist/components/approvals.js +22 -18
  12. package/dist/components/approvals.js.map +1 -1
  13. package/dist/components/building-blocks.d.ts.map +1 -1
  14. package/dist/components/building-blocks.js +6 -2
  15. package/dist/components/building-blocks.js.map +1 -1
  16. package/dist/components/charts.d.ts.map +1 -1
  17. package/dist/components/charts.js +20 -10
  18. package/dist/components/charts.js.map +1 -1
  19. package/dist/components/chat.d.ts.map +1 -1
  20. package/dist/components/chat.js +31 -19
  21. package/dist/components/chat.js.map +1 -1
  22. package/dist/components/commerce.d.ts +2 -2
  23. package/dist/components/commerce.d.ts.map +1 -1
  24. package/dist/components/commerce.js +45 -31
  25. package/dist/components/commerce.js.map +1 -1
  26. package/dist/components/data-display.d.ts +5 -9
  27. package/dist/components/data-display.d.ts.map +1 -1
  28. package/dist/components/data-display.js +34 -35
  29. package/dist/components/data-display.js.map +1 -1
  30. package/dist/components/data-table.d.ts.map +1 -1
  31. package/dist/components/data-table.js +15 -10
  32. package/dist/components/data-table.js.map +1 -1
  33. package/dist/components/developer.d.ts.map +1 -1
  34. package/dist/components/developer.js +20 -11
  35. package/dist/components/developer.js.map +1 -1
  36. package/dist/components/feedback.d.ts.map +1 -1
  37. package/dist/components/feedback.js +12 -6
  38. package/dist/components/feedback.js.map +1 -1
  39. package/dist/components/form.d.ts +2 -1
  40. package/dist/components/form.d.ts.map +1 -1
  41. package/dist/components/form.js +12 -9
  42. package/dist/components/form.js.map +1 -1
  43. package/dist/components/forms.d.ts +2 -1
  44. package/dist/components/forms.d.ts.map +1 -1
  45. package/dist/components/forms.js +92 -42
  46. package/dist/components/forms.js.map +1 -1
  47. package/dist/components/foundation.d.ts +5 -2
  48. package/dist/components/foundation.d.ts.map +1 -1
  49. package/dist/components/foundation.js +15 -12
  50. package/dist/components/foundation.js.map +1 -1
  51. package/dist/components/inputs.d.ts.map +1 -1
  52. package/dist/components/inputs.js +3 -1
  53. package/dist/components/inputs.js.map +1 -1
  54. package/dist/components/mail.d.ts.map +1 -1
  55. package/dist/components/mail.js +15 -10
  56. package/dist/components/mail.js.map +1 -1
  57. package/dist/components/media.d.ts.map +1 -1
  58. package/dist/components/media.js +39 -18
  59. package/dist/components/media.js.map +1 -1
  60. package/dist/components/navigation.d.ts.map +1 -1
  61. package/dist/components/navigation.js +21 -9
  62. package/dist/components/navigation.js.map +1 -1
  63. package/dist/components/operations.d.ts.map +1 -1
  64. package/dist/components/operations.js +37 -27
  65. package/dist/components/operations.js.map +1 -1
  66. package/dist/components/previews.d.ts.map +1 -1
  67. package/dist/components/previews.js +14 -10
  68. package/dist/components/previews.js.map +1 -1
  69. package/dist/components/primitives.d.ts.map +1 -1
  70. package/dist/components/primitives.js +4 -1
  71. package/dist/components/primitives.js.map +1 -1
  72. package/dist/components/real-estate.d.ts.map +1 -1
  73. package/dist/components/real-estate.js +43 -28
  74. package/dist/components/real-estate.js.map +1 -1
  75. package/dist/components/rich-text-editor.d.ts.map +1 -1
  76. package/dist/components/rich-text-editor.js +18 -15
  77. package/dist/components/rich-text-editor.js.map +1 -1
  78. package/dist/components/select-menu.d.ts.map +1 -1
  79. package/dist/components/select-menu.js +4 -1
  80. package/dist/components/select-menu.js.map +1 -1
  81. package/dist/components/shell.d.ts.map +1 -1
  82. package/dist/components/shell.js +8 -3
  83. package/dist/components/shell.js.map +1 -1
  84. package/dist/components/site.d.ts.map +1 -1
  85. package/dist/components/site.js +17 -13
  86. package/dist/components/site.js.map +1 -1
  87. package/dist/components/types.d.ts +102 -3
  88. package/dist/components/types.d.ts.map +1 -1
  89. package/dist/components/workspace.d.ts.map +1 -1
  90. package/dist/components/workspace.js +50 -34
  91. package/dist/components/workspace.js.map +1 -1
  92. package/dist/context.d.ts +39 -0
  93. package/dist/context.d.ts.map +1 -0
  94. package/dist/context.js +76 -0
  95. package/dist/context.js.map +1 -0
  96. package/dist/format.d.ts +33 -6
  97. package/dist/format.d.ts.map +1 -1
  98. package/dist/format.js +75 -10
  99. package/dist/format.js.map +1 -1
  100. package/dist/index.d.ts +3 -2
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +3 -2
  103. package/dist/index.js.map +1 -1
  104. package/dist/provider.d.ts +18 -11
  105. package/dist/provider.d.ts.map +1 -1
  106. package/dist/provider.js +11 -18
  107. package/dist/provider.js.map +1 -1
  108. package/dist/strings.d.ts +503 -0
  109. package/dist/strings.d.ts.map +1 -0
  110. package/dist/strings.js +537 -0
  111. package/dist/strings.js.map +1 -0
  112. package/package.json +1 -1
  113. package/src/components/admin.tsx +117 -93
  114. package/src/components/agents.tsx +55 -41
  115. package/src/components/app-chrome.tsx +6 -2
  116. package/src/components/approvals.tsx +26 -22
  117. package/src/components/building-blocks.tsx +6 -2
  118. package/src/components/charts.tsx +21 -11
  119. package/src/components/chat.tsx +45 -35
  120. package/src/components/commerce.tsx +61 -53
  121. package/src/components/data-display.tsx +38 -45
  122. package/src/components/data-table.tsx +20 -15
  123. package/src/components/developer.tsx +26 -15
  124. package/src/components/feedback.tsx +19 -7
  125. package/src/components/form.tsx +17 -9
  126. package/src/components/forms.tsx +131 -53
  127. package/src/components/foundation.tsx +23 -36
  128. package/src/components/inputs.tsx +4 -2
  129. package/src/components/mail.tsx +16 -11
  130. package/src/components/media.tsx +64 -21
  131. package/src/components/navigation.tsx +25 -13
  132. package/src/components/operations.tsx +40 -32
  133. package/src/components/previews.tsx +17 -15
  134. package/src/components/primitives.tsx +8 -5
  135. package/src/components/real-estate.tsx +55 -35
  136. package/src/components/rich-text-editor.tsx +20 -17
  137. package/src/components/select-menu.tsx +5 -2
  138. package/src/components/shell.tsx +8 -3
  139. package/src/components/site.tsx +18 -14
  140. package/src/components/types.ts +111 -3
  141. package/src/components/workspace.tsx +79 -60
  142. package/src/context.ts +112 -0
  143. package/src/format.ts +108 -15
  144. package/src/index.ts +43 -0
  145. package/src/provider.tsx +36 -40
  146. package/src/strings.ts +1500 -0
@@ -2,7 +2,8 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
  import { leaving, usePresence } from "../presence.js";
5
- import { formatMoney } from "../format.js";
5
+ import { useFormat, useStrings } from "../context.js";
6
+ import { WORKSPACE_STRINGS } from "../strings.js";
6
7
  import { Icon } from "../Icon.js";
7
8
  import { useScrollFocus, useTrap } from "../hooks.js";
8
9
  import { cx } from "../cx.js";
@@ -10,7 +11,8 @@ import { Avatar, Badge, Button, IconButton, TintIcon } from "./foundation.js";
10
11
  import { Spinner } from "./building-blocks.js";
11
12
  import { Tabs } from "./navigation.js";
12
13
  export function SubNav(p) {
13
- return (_jsxs("nav", { className: "tf-subnav", "aria-label": `${p.eyebrow || "Section"} pages`, children: [_jsxs("div", { className: "tf-subnav-head", children: [p.eyebrow && _jsx("span", { className: "tf-subnav-eyebrow", children: p.eyebrow }), p.action && (_jsxs("button", { type: "button", className: "tf-subnav-action", onClick: p.action.onClick, children: [_jsx(Icon, { name: p.action.icon || "plus", size: 15 }), _jsx("span", { children: p.action.label })] }))] }), _jsx("div", { className: "tf-subnav-list", children: (p.items || []).map((it) => {
14
+ const t = useStrings(WORKSPACE_STRINGS);
15
+ return (_jsxs("nav", { className: "tf-subnav", "aria-label": t.sectionPages(p.eyebrow), children: [_jsxs("div", { className: "tf-subnav-head", children: [p.eyebrow && _jsx("span", { className: "tf-subnav-eyebrow", children: p.eyebrow }), p.action && (_jsxs("button", { type: "button", className: "tf-subnav-action", onClick: p.action.onClick, children: [_jsx(Icon, { name: p.action.icon || "plus", size: 15 }), _jsx("span", { children: p.action.label })] }))] }), _jsx("div", { className: "tf-subnav-list", children: (p.items || []).map((it) => {
14
16
  const id = it.id || it.label;
15
17
  return (_jsxs("button", { type: "button", className: "tf-subnav-item", "aria-current": p.current === id ? "page" : undefined, title: it.label, onClick: () => {
16
18
  p.onPick && p.onPick(id);
@@ -18,6 +20,7 @@ export function SubNav(p) {
18
20
  }) }), p.children] }));
19
21
  }
20
22
  export function Drawer(p) {
23
+ const t = useStrings(WORKSPACE_STRINGS);
21
24
  const ref = React.useRef(null);
22
25
  const pr = usePresence(p.open ?? true);
23
26
  useTrap(ref, p.onClose);
@@ -37,9 +40,10 @@ export function Drawer(p) {
37
40
  minWidth: 0,
38
41
  }, children: [p.avatar && _jsx(Avatar, { name: p.avatar, size: 44 }), _jsxs("div", { style: {
39
42
  minWidth: 0,
40
- }, children: [_jsx("div", { className: "tf-panel-title", children: p.title }), p.subtitle && _jsx("div", { className: "tf-panel-sub", children: p.subtitle })] })] }), _jsx(IconButton, { icon: "x", label: "Close", onClick: p.onClose })] }), p.children] }) }));
43
+ }, children: [_jsx("div", { className: "tf-panel-title", children: p.title }), p.subtitle && _jsx("div", { className: "tf-panel-sub", children: p.subtitle })] })] }), _jsx(IconButton, { icon: "x", label: t.close, onClick: p.onClose })] }), p.children] }) }));
41
44
  }
42
45
  export function CommandPalette(p) {
46
+ const t = useStrings(WORKSPACE_STRINGS);
43
47
  const q = React.useState(""), idx = React.useState(0), ref = React.useRef(null), pr = usePresence(p.open ?? true);
44
48
  useTrap(ref, p.onClose);
45
49
  const ql = q[0].toLowerCase().trim(), all = p.items || [];
@@ -73,7 +77,7 @@ export function CommandPalette(p) {
73
77
  }
74
78
  const groups = [];
75
79
  res.forEach((it, i) => {
76
- const g = it.group || "Results";
80
+ const g = it.group || t.results;
77
81
  if (!groups.length || groups[groups.length - 1].g !== g)
78
82
  groups.push({
79
83
  g: g,
@@ -86,11 +90,11 @@ export function CommandPalette(p) {
86
90
  return (_jsx("div", { ...leaving(pr.closing), className: cx("tf-palette-wrap", p.inline && "inline"), onMouseDown: (e) => {
87
91
  if (e.target === e.currentTarget && p.onClose)
88
92
  p.onClose?.();
89
- }, children: _jsxs("div", { ref: ref, className: "tf-palette", role: "dialog", "aria-modal": "true", "aria-label": "Command palette", children: [_jsxs("div", { className: "tf-palette-input", children: [_jsx(Icon, { name: "search", size: 18 }), _jsx("input", { placeholder: p.placeholder || "Search pages, actions and records…", "aria-label": "Search", value: q[0], onChange: (e) => {
93
+ }, children: _jsxs("div", { ref: ref, className: "tf-palette", role: "dialog", "aria-modal": "true", "aria-label": t.commandPalette, children: [_jsxs("div", { className: "tf-palette-input", children: [_jsx(Icon, { name: "search", size: 18 }), _jsx("input", { placeholder: p.placeholder || t.paletteSearchPlaceholder, "aria-label": t.search, value: q[0], onChange: (e) => {
90
94
  q[1](e.target.value);
91
95
  idx[1](0);
92
96
  p.onQueryChange?.(e.target.value);
93
- }, onKeyDown: key }), _jsx("kbd", { children: "Esc" })] }), _jsxs("div", { className: "tf-palette-list", role: "listbox", "aria-label": "Results", children: [p.loading && (_jsxs("div", { className: "tf-palette-empty", role: "status", children: [_jsx(Spinner, {}), " Searching\u2026"] })), res.length ? (groups.map((g) => (_jsxs("div", { children: [_jsx("div", { className: "tf-palette-group", children: g.g }), g.items.map((pair) => {
97
+ }, onKeyDown: key }), _jsx("kbd", { children: t.escKey })] }), _jsxs("div", { className: "tf-palette-list", role: "listbox", "aria-label": t.results, children: [p.loading && (_jsxs("div", { className: "tf-palette-empty", role: "status", children: [_jsx(Spinner, {}), " ", t.searching] })), res.length ? (groups.map((g) => (_jsxs("div", { children: [_jsx("div", { className: "tf-palette-group", children: g.g }), g.items.map((pair) => {
94
98
  const it = pair[0], i = pair[1];
95
99
  return (_jsxs("button", { type: "button", role: "option", "aria-selected": i === cur ? "true" : "false", className: "tf-palette-item", onMouseMove: () => {
96
100
  if (i !== cur)
@@ -98,42 +102,44 @@ export function CommandPalette(p) {
98
102
  }, onClick: () => {
99
103
  run(it);
100
104
  }, children: [_jsx(TintIcon, { icon: it.icon || "search", tint: it.tint || "plain" }), _jsxs("span", { className: "tf-palette-label", children: [_jsx("b", { children: it.label }), it.hint && _jsx("span", { children: it.hint })] }), i === cur && _jsx("kbd", { children: "\u21B5" })] }, it.id || it.label));
101
- })] }, g.g)))) : p.loading ? null : (_jsx("div", { className: "tf-palette-empty", children: p.empty ?? `Nothing matches “${q[0]}”.` }))] }), _jsxs("div", { className: "tf-palette-foot", children: [_jsxs("span", { children: [_jsx("kbd", { children: "\u2191" }), _jsx("kbd", { children: "\u2193" }), " ", "move"] }), _jsxs("span", { children: [_jsx("kbd", { children: "\u21B5" }), " ", "open"] }), _jsxs("span", { children: [_jsx("kbd", { children: "\u2318" }), _jsx("kbd", { children: "K" }), " anywhere"] })] })] }) }));
105
+ })] }, g.g)))) : p.loading ? null : (_jsx("div", { className: "tf-palette-empty", children: p.empty ?? t.nothingMatches(q[0]) }))] }), _jsxs("div", { className: "tf-palette-foot", children: [_jsxs("span", { children: [_jsx("kbd", { children: "\u2191" }), _jsx("kbd", { children: "\u2193" }), " ", t.paletteMove] }), _jsxs("span", { children: [_jsx("kbd", { children: "\u21B5" }), " ", t.paletteOpen] }), _jsxs("span", { children: [_jsx("kbd", { children: "\u2318" }), _jsx("kbd", { children: "K" }), " " + t.paletteAnywhere] })] })] }) }));
102
106
  }
103
107
  export function NotificationList(p) {
104
- const f = React.useState("All"), items = (p.items || []).filter((n) => f[0] === "All" || n.unread);
105
- return (_jsxs("div", { className: "tf-notes", role: "region", "aria-label": "Notifications", children: [_jsxs("div", { className: "tf-header", style: {
108
+ const t = useStrings(WORKSPACE_STRINGS);
109
+ const f = React.useState("all"), items = (p.items || []).filter((n) => f[0] === "all" || n.unread);
110
+ return (_jsxs("div", { className: "tf-notes", role: "region", "aria-label": t.notifications, children: [_jsxs("div", { className: "tf-header", style: {
106
111
  alignItems: "center",
107
112
  padding: "6px 8px 0",
108
113
  }, children: [_jsx("b", { style: {
109
114
  fontSize: 16,
110
- }, children: "Notifications" }), _jsx(Button, { variant: "ghost", size: "sm", icon: "check", disabled: !(p.items || []).some((n) => n.unread), onClick: p.onReadAll, children: "Mark all read" })] }), _jsx("div", { style: {
115
+ }, children: t.notifications }), _jsx(Button, { variant: "ghost", size: "sm", icon: "check", disabled: !(p.items || []).some((n) => n.unread), onClick: p.onReadAll, children: t.markAllRead })] }), _jsx("div", { style: {
111
116
  padding: "0 8px",
112
- }, children: _jsx(Tabs, { block: true, items: ["All", "Unread"], value: f[0], onChange: f[1] }) }), _jsx("div", { className: "tf-notes-list", children: items.length ? (items.map((n) => (_jsxs("button", { type: "button", className: cx("tf-note", n.unread && "unread"), onClick: () => {
117
+ }, children: _jsx(Tabs, { block: true, items: [t.all, t.unread], value: f[0] === "all" ? t.all : t.unread, onChange: (v) => f[1](v === t.unread ? "unread" : "all") }) }), _jsx("div", { className: "tf-notes-list", children: items.length ? (items.map((n) => (_jsxs("button", { type: "button", className: cx("tf-note", n.unread && "unread"), onClick: () => {
113
118
  p.onOpen && p.onOpen(n);
114
- }, children: [_jsx(TintIcon, { icon: n.icon, tint: n.tint }), _jsxs("span", { className: "tf-note-text", children: [_jsx("b", { children: n.title }), _jsx("span", { children: n.text })] }), _jsxs("span", { className: "tf-note-time", children: [n.time, n.unread && _jsx("span", { className: "tf-unread" })] })] }, n.id)))) : (_jsxs("div", { className: "tf-notes-empty", children: [_jsx(TintIcon, { icon: "check", tint: "mint", size: 40 }), _jsx("b", { children: "You are all caught up" })] })) })] }));
119
+ }, children: [_jsx(TintIcon, { icon: n.icon, tint: n.tint }), _jsxs("span", { className: "tf-note-text", children: [_jsx("b", { children: n.title }), _jsx("span", { children: n.text })] }), _jsxs("span", { className: "tf-note-time", children: [n.time, n.unread && _jsx("span", { className: "tf-unread" })] })] }, n.id)))) : (_jsxs("div", { className: "tf-notes-empty", children: [_jsx(TintIcon, { icon: "check", tint: "mint", size: 40 }), _jsx("b", { children: t.allCaughtUp })] })) })] }));
115
120
  }
116
121
  const STEP = () => ({
117
- trigger: ["zap", "sky", "When"],
118
- condition: ["filter", "blush", "If"],
119
- agent: ["bot", "lilac", "Agent"],
120
- approval: ["user", "butter", "Approval"],
121
- action: ["send", "mint", "Then"],
122
+ trigger: ["zap", "sky"],
123
+ condition: ["filter", "blush"],
124
+ agent: ["bot", "lilac"],
125
+ approval: ["user", "butter"],
126
+ action: ["send", "mint"],
122
127
  });
123
128
  export function Flow(p) {
129
+ const t = useStrings(WORKSPACE_STRINGS);
124
130
  return (_jsx("ol", { className: "tf-flow tf-stagger", style: {
125
131
  "--base": "120ms",
126
132
  }, children: (p.steps || []).map((s, i) => {
127
- const steps = STEP(), k = steps[s.kind] || steps.action, st = i < (p.active == null ? -1 : p.active)
133
+ const steps = STEP(), kind = steps[s.kind] ? s.kind : "action", k = steps[kind], st = i < (p.active == null ? -1 : p.active)
128
134
  ? "done"
129
135
  : i === p.active
130
136
  ? p.waiting
131
137
  ? "wait"
132
138
  : "active"
133
139
  : "";
134
- return (_jsxs("li", { className: cx("tf-flow-node", st), children: [_jsx("span", { className: "tf-flow-icon tf-t-" + k[1], children: _jsx(Icon, { name: st === "done" ? "check" : k[0], size: 16 }) }), _jsxs("div", { className: "tf-flow-card", children: [_jsxs("div", { className: "tf-flow-kind", children: [k[2], st === "active" && _jsx("span", { className: "tf-flow-live", children: "running" }), st === "wait" && _jsx("span", { className: "tf-flow-live wait", children: "waiting for you" })] }), _jsx("div", { className: "tf-flow-text", children: s.text }), st === "wait" && p.onApprove && (_jsxs("div", { className: "tf-row", style: {
140
+ return (_jsxs("li", { className: cx("tf-flow-node", st), children: [_jsx("span", { className: "tf-flow-icon tf-t-" + k[1], children: _jsx(Icon, { name: st === "done" ? "check" : k[0], size: 16 }) }), _jsxs("div", { className: "tf-flow-card", children: [_jsxs("div", { className: "tf-flow-kind", children: [t.flowStep[kind], st === "active" && _jsx("span", { className: "tf-flow-live", children: t.flowRunning }), st === "wait" && _jsx("span", { className: "tf-flow-live wait", children: t.waitingForYou })] }), _jsx("div", { className: "tf-flow-text", children: s.text }), st === "wait" && p.onApprove && (_jsxs("div", { className: "tf-row", style: {
135
141
  marginTop: 8,
136
- }, children: [_jsx(Button, { size: "sm", icon: "check", onClick: p.onApprove, children: "Approve" }), p.onReject && (_jsx(Button, { size: "sm", variant: "ghost", onClick: p.onReject, children: "Reject" }))] }))] }), p.tools && st === "" ? _jsx("div", { className: "tf-flow-tools", children: p.tools(s, i) }) : null] }, i));
142
+ }, children: [_jsx(Button, { size: "sm", icon: "check", onClick: p.onApprove, children: t.approve }), p.onReject && (_jsx(Button, { size: "sm", variant: "ghost", onClick: p.onReject, children: t.reject }))] }))] }), p.tools && st === "" ? _jsx("div", { className: "tf-flow-tools", children: p.tools(s, i) }) : null] }, i));
137
143
  }) }));
138
144
  }
139
145
  const FILE_KIND = {
@@ -165,40 +171,48 @@ export function FileThumb(p) {
165
171
  } }, i)))] }));
166
172
  }
167
173
  export function FileCard(p) {
174
+ const t = useStrings(WORKSPACE_STRINGS);
168
175
  const k = FILE_KIND[p.kind] || FILE_KIND.doc;
169
- return (_jsxs("button", { type: "button", className: "tf-filecard", onClick: p.onClick, children: [_jsx("span", { className: "tf-thumb tf-bg-" + k[1], children: _jsx(FileThumb, { kind: p.kind, title: p.name }) }), _jsx("span", { className: "tf-filecard-name", children: p.name }), _jsxs("span", { className: "tf-filecard-meta", children: [[p.size, p.meta].filter(Boolean).join(" · "), p.shared && _jsx(Icon, { name: "users", size: 12, label: "Shared" })] })] }));
176
+ return (_jsxs("button", { type: "button", className: "tf-filecard", onClick: p.onClick, children: [_jsx("span", { className: "tf-thumb tf-bg-" + k[1], children: _jsx(FileThumb, { kind: p.kind, title: p.name }) }), _jsx("span", { className: "tf-filecard-name", children: p.name }), _jsxs("span", { className: "tf-filecard-meta", children: [[p.size, p.meta].filter(Boolean).join(" · "), p.shared && _jsx(Icon, { name: "users", size: 12, label: t.shared })] })] }));
170
177
  }
171
178
  export function Wizard(p) {
179
+ const t = useStrings(WORKSPACE_STRINGS);
172
180
  const steps = p.steps || [], cur = p.current || 0, done = p.done || {};
173
- return (_jsxs("div", { className: "tf-wizard", role: "group", "aria-label": p.label || "Setup", children: [_jsxs("aside", { className: "tf-wizard-rail", children: [p.brand && (_jsxs("span", { className: "tf-brand", style: {
181
+ return (_jsxs("div", { className: "tf-wizard", role: "group", "aria-label": p.label || t.setup, children: [_jsxs("aside", { className: "tf-wizard-rail", children: [p.brand && (_jsxs("span", { className: "tf-brand", style: {
174
182
  color: "var(--on-frame)",
175
183
  }, children: [p.brand, _jsx("span", { className: "tf-brand-dot" })] })), _jsx("ol", { children: steps.map((s, j) => {
176
184
  const ok = done[s.id || j];
177
185
  return (_jsx("li", { children: _jsxs("button", { type: "button", className: cx("tf-wizard-step", j === cur && "cur", ok && "ok"), "aria-current": j === cur ? "step" : undefined, onClick: () => {
178
186
  p.onPick && p.onPick(j);
179
187
  }, children: [_jsx("span", { children: ok ? _jsx(Icon, { name: "check", size: 12 }) : j + 1 }), s.label] }) }, j));
180
- }) })] }), _jsxs("div", { className: "tf-wizard-main", children: [_jsx("div", { className: "tf-card-desc", children: `Step ${cur + 1} of ${steps.length}` }), _jsxs("div", { className: "tf-wizard-body", children: [steps[cur] && steps[cur].icon && (_jsx(TintIcon, { icon: steps[cur].icon, tint: "sky", size: 44 })), steps[cur] && _jsx("h2", { className: "tf-modal-title", children: steps[cur].label }), p.children] }, cur), p.footer && (_jsx("div", { className: "tf-modal-foot", style: {
188
+ }) })] }), _jsxs("div", { className: "tf-wizard-main", children: [_jsx("div", { className: "tf-card-desc", children: t.stepOf(cur + 1, steps.length) }), _jsxs("div", { className: "tf-wizard-body", children: [steps[cur] && steps[cur].icon && (_jsx(TintIcon, { icon: steps[cur].icon, tint: "sky", size: 44 })), steps[cur] && _jsx("h2", { className: "tf-modal-title", children: steps[cur].label }), p.children] }, cur), p.footer && (_jsx("div", { className: "tf-modal-foot", style: {
181
189
  justifyContent: "space-between",
182
190
  }, children: p.footer }))] })] }));
183
191
  }
184
- const LEVELS = () => ["None", "View", "Edit", "Full"];
185
192
  export function PermissionMatrix(p) {
193
+ const t = useStrings(WORKSPACE_STRINGS);
194
+ const LEVELS = () => t.permissionLevels;
186
195
  const box = React.useRef(null);
187
196
  useScrollFocus(box);
188
- return (_jsx("div", { ref: box, className: "tf-scroll", children: _jsxs("table", { className: "tf-table tf-perm", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Role" }), (p.areas || []).map((a) => (_jsx("th", { children: a }, a)))] }) }), _jsx("tbody", { className: "tf-stagger", style: {
197
+ return (_jsx("div", { ref: box, className: "tf-scroll", children: _jsxs("table", { className: "tf-table tf-perm", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: t.role }), (p.areas || []).map((a) => (_jsx("th", { children: a }, a)))] }) }), _jsx("tbody", { className: "tf-stagger", style: {
189
198
  "--base": "120ms",
190
199
  }, children: (p.roles || []).map((r, ri) => (_jsxs("tr", { children: [_jsxs("td", { children: [_jsx("div", { style: {
191
200
  fontWeight: 700,
192
- }, children: r.name }), r.people != null && (_jsx("div", { className: "tf-card-desc", children: r.people === 1 ? "1 member" : `${r.people} members` }))] }), r.levels.map((lv, ai) => (_jsx("td", { children: _jsx("button", { type: "button", className: "tf-perm-cell lv" + lv, disabled: r.locked, "aria-label": r.name + " · " + p.areas[ai] + ": " + LEVELS()[lv], onClick: () => {
201
+ }, children: r.name }), r.people != null && _jsx("div", { className: "tf-card-desc", children: t.memberCount(r.people) })] }), r.levels.map((lv, ai) => (_jsx("td", { children: _jsx("button", { type: "button", className: "tf-perm-cell lv" + lv, disabled: r.locked, "aria-label": r.name + " · " + p.areas[ai] + ": " + LEVELS()[lv], onClick: () => {
193
202
  p.onChange && p.onChange(ri, ai, (lv + 1) % 4);
194
203
  }, children: LEVELS()[lv] }) }, ai)))] }, r.name))) })] }) }));
195
204
  }
196
- function money2(n) {
197
- return formatMoney(n, null, {
205
+ /** Money with cents, in the locale of the nearest UIProvider. */
206
+ function useMoney2() {
207
+ const { formatMoney } = useFormat();
208
+ return (n) => formatMoney(n, null, {
198
209
  minimumFractionDigits: 2,
199
210
  });
200
211
  }
201
212
  export function InvoicePreview(p) {
213
+ const t = useStrings(WORKSPACE_STRINGS);
214
+ const money2 = useMoney2();
215
+ const { formatPercent } = useFormat();
202
216
  const lines = p.lines || [];
203
217
  let net = 0;
204
218
  const vat = {};
@@ -215,20 +229,22 @@ export function InvoicePreview(p) {
215
229
  return (_jsxs("div", { className: "tf-paper", children: [_jsxs("div", { className: "tf-paper-top", children: [_jsxs("div", { children: [p.brand && (_jsxs("div", { className: "tf-brand", style: {
216
230
  color: "var(--ink)",
217
231
  fontSize: 18,
218
- }, children: [p.brand, _jsx("span", { className: "tf-brand-dot" })] })), p.from && _jsx("div", { className: "tf-paper-small", children: p.from })] }), _jsxs("div", { className: "tf-paper-id", children: [_jsx("div", { className: "tf-paper-kind", children: p.kind || "Invoice" }), _jsx("div", { className: "tf-mono", children: "#" + p.number })] })] }), _jsxs("div", { className: "tf-paper-meta", children: [_jsxs("div", { children: [_jsx("span", { children: "Bill to" }), _jsx("b", { children: p.to })] }), _jsxs("div", { children: [_jsx("span", { children: "Issued" }), _jsx("b", { children: p.issued })] }), _jsxs("div", { children: [_jsx("span", { children: "Due" }), _jsx("b", { children: p.due })] })] }), _jsx("div", { className: "tf-paper-lines", children: lines.map((l, i) => (_jsxs("div", { children: [_jsx("span", { children: (l.d || "Untitled line") + (l.q !== 1 ? " × " + l.q : "") }), _jsx("b", { children: fmt(l.q * l.u) })] }, i))) }), _jsxs("div", { className: "tf-paper-totals", children: [_jsxs("div", { children: [_jsx("span", { children: "Net" }), _jsx("b", { children: fmt(net) })] }), Object.keys(vat)
232
+ }, children: [p.brand, _jsx("span", { className: "tf-brand-dot" })] })), p.from && _jsx("div", { className: "tf-paper-small", children: p.from })] }), _jsxs("div", { className: "tf-paper-id", children: [_jsx("div", { className: "tf-paper-kind", children: p.kind || t.invoice }), _jsx("div", { className: "tf-mono", children: "#" + p.number })] })] }), _jsxs("div", { className: "tf-paper-meta", children: [_jsxs("div", { children: [_jsx("span", { children: t.billTo }), _jsx("b", { children: p.to })] }), _jsxs("div", { children: [_jsx("span", { children: t.issued }), _jsx("b", { children: p.issued })] }), _jsxs("div", { children: [_jsx("span", { children: t.due }), _jsx("b", { children: p.due })] })] }), _jsx("div", { className: "tf-paper-lines", children: lines.map((l, i) => (_jsxs("div", { children: [_jsx("span", { children: (l.d || t.untitledLine) + (l.q !== 1 ? " × " + l.q : "") }), _jsx("b", { children: fmt(l.q * l.u) })] }, i))) }), _jsxs("div", { className: "tf-paper-totals", children: [_jsxs("div", { children: [_jsx("span", { children: t.net }), _jsx("b", { children: fmt(net) })] }), Object.keys(vat)
219
233
  .filter((k) => +k > 0)
220
- .map((k) => (_jsxs("div", { children: [_jsx("span", { children: `VAT ${k}%` }), _jsx("b", { children: fmt(vat[Number(k)] ?? 0) })] }, k))), _jsxs("div", { className: "grand", children: [_jsx("span", { children: "Total due" }), _jsx("b", { children: fmt(net + tax) })] })] }), p.note && _jsx("div", { className: "tf-paper-small", children: p.note })] }));
234
+ .map((k) => (_jsxs("div", { children: [_jsx("span", { children: t.vatAt(formatPercent(Number(k), { maximumFractionDigits: 2 })) }), _jsx("b", { children: fmt(vat[Number(k)] ?? 0) })] }, k))), _jsxs("div", { className: "grand", children: [_jsx("span", { children: t.totalDue }), _jsx("b", { children: fmt(net + tax) })] })] }), p.note && _jsx("div", { className: "tf-paper-small", children: p.note })] }));
221
235
  }
222
236
  export function TransactionRow(p) {
237
+ const t = useStrings(WORKSPACE_STRINGS);
238
+ const money2 = useMoney2();
223
239
  const open = React.useState(false), inc = p.amount > 0;
224
- return (_jsxs("div", { className: cx("tf-tx", !p.matched && "unmatched"), children: [_jsxs("div", { className: "tf-tx-row", children: [_jsx(TintIcon, { icon: inc ? "download" : "send", tint: inc ? "mint" : "plain" }), _jsxs("div", { className: "tf-tx-text", children: [_jsx("b", { className: "tf-mono", children: p.text }), _jsx("span", { children: p.date + (p.matched && p.matchRef ? ` · matched to ${p.matchRef}` : "") })] }), _jsx("b", { className: cx("tf-tx-amt", inc ? "in" : "out"), children: (inc ? "+" : "−") + money2(Math.abs(p.amount)) }), p.matched ? (_jsx(Badge, { tone: "success", children: "Matched" })) : (_jsx(Button, { size: "sm", variant: open[0] ? "soft" : "primary", onClick: () => {
240
+ return (_jsxs("div", { className: cx("tf-tx", !p.matched && "unmatched"), children: [_jsxs("div", { className: "tf-tx-row", children: [_jsx(TintIcon, { icon: inc ? "download" : "send", tint: inc ? "mint" : "plain" }), _jsxs("div", { className: "tf-tx-text", children: [_jsx("b", { className: "tf-mono", children: p.text }), _jsx("span", { children: p.date + (p.matched && p.matchRef ? " · " + t.matchedTo(p.matchRef) : "") })] }), _jsx("b", { className: cx("tf-tx-amt", inc ? "in" : "out"), children: (inc ? "+" : "−") + money2(Math.abs(p.amount)) }), p.matched ? (_jsx(Badge, { tone: "success", children: t.matched })) : (_jsx(Button, { size: "sm", variant: open[0] ? "soft" : "primary", onClick: () => {
225
241
  open[1](!open[0]);
226
- }, children: open[0] ? "Close" : "Match" }))] }), open[0] && !p.matched && (_jsxs("div", { className: "tf-tx-suggest tf-in", children: [_jsx(TintIcon, { icon: "bot", tint: "butter" }), _jsx("span", { style: {
242
+ }, children: open[0] ? t.close : t.match }))] }), open[0] && !p.matched && (_jsxs("div", { className: "tf-tx-suggest tf-in", children: [_jsx(TintIcon, { icon: "bot", tint: "butter" }), _jsx("span", { style: {
227
243
  flex: 1,
228
244
  minWidth: 0,
229
- }, children: p.hint || "No suggestion yet." }), _jsx(Button, { size: "sm", icon: "check", onClick: () => {
245
+ }, children: p.hint || t.noSuggestion }), _jsx(Button, { size: "sm", icon: "check", onClick: () => {
230
246
  open[1](false);
231
247
  p.onMatch && p.onMatch();
232
- }, children: "Accept" })] }))] }));
248
+ }, children: t.accept })] }))] }));
233
249
  }
234
250
  //# sourceMappingURL=workspace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/components/workspace.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAmBvC,MAAM,UAAU,MAAM,CAAC,CAAc;IACnC,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,gBAAa,GAAG,CAAC,CAAC,OAAO,IAAI,SAAS,QAAQ,aACtE,eAAK,SAAS,EAAC,gBAAgB,aAC5B,CAAC,CAAC,OAAO,IAAI,eAAM,SAAS,EAAC,mBAAmB,YAAE,CAAC,CAAC,OAAO,GAAQ,EACnE,CAAC,CAAC,MAAM,IAAI,CACX,kBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,kBAAkB,EAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,aAC1E,KAAC,IAAI,IAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,EAAE,IAAI,EAAE,EAAE,GAAI,EACjD,yBAAO,CAAC,CAAC,MAAM,CAAC,KAAK,GAAQ,IACtB,CACV,IACG,EACN,cAAK,SAAS,EAAC,gBAAgB,YAC5B,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;oBAC1B,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC;oBAC7B,OAAO,CACL,kBAEE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,gBAAgB,kBACZ,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACnD,KAAK,EAAE,EAAE,CAAC,KAAK,EACf,OAAO,EAAE,GAAG,EAAE;4BACZ,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBAC3B,CAAC,aAED,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAI,EACjC,eAAM,SAAS,EAAC,iBAAiB,YAAE,EAAE,CAAC,KAAK,GAAQ,EAClD,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,iBAAiB,YAAE,EAAE,CAAC,KAAK,GAAQ,CAAC,CAAC,CAAC,IAAI,KAXjE,EAAE,CAYA,CACV,CAAC;gBACJ,CAAC,CAAC,GACE,EACL,CAAC,CAAC,QAAQ,IACP,CACP,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,MAAM,CAAC,CAAc;IACnC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAc,IAAI,CAAC,CAAC;IAC5C,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACxB,IAAI,CAAC,EAAE,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,CACL,iBACM,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EACvB,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,EACrD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;YACjB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,OAAO;gBAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/D,CAAC,YAED,iBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,EAC5E,IAAI,EAAC,QAAQ,gBACF,MAAM,gBACL,CAAC,CAAC,KAAK,EACnB,KAAK,EACH,CAAC,CAAC,KAAK;gBACL,CAAC,CAAC;oBACE,KAAK,EAAE,CAAC,CAAC,KAAK;iBACf;gBACH,CAAC,CAAC,SAAS,aAGf,eACE,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE;wBACL,UAAU,EAAE,QAAQ;qBACrB,aAED,eACE,SAAS,EAAC,QAAQ,EAClB,KAAK,EAAE;gCACL,QAAQ,EAAE,QAAQ;gCAClB,QAAQ,EAAE,CAAC;6BACZ,aAEA,CAAC,CAAC,MAAM,IAAI,KAAC,MAAM,IAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,GAAI,EACjD,eACE,KAAK,EAAE;wCACL,QAAQ,EAAE,CAAC;qCACZ,aAED,cAAK,SAAS,EAAC,gBAAgB,YAAE,CAAC,CAAC,KAAK,GAAO,EAC9C,CAAC,CAAC,QAAQ,IAAI,cAAK,SAAS,EAAC,cAAc,YAAE,CAAC,CAAC,QAAQ,GAAO,IAC3D,IACF,EACN,KAAC,UAAU,IAAC,IAAI,EAAC,GAAG,EAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAE,CAAC,CAAC,OAAO,GAAI,IACrD,EACL,CAAC,CAAC,QAAQ,IACL,GACJ,CACP,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,CAAsB;IACnD,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAC1B,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EACvB,GAAG,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,EACxC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACxB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAClC,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,CACV,EAAE;QACA,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAChB,EAAE;aACC,KAAK,CAAC,KAAK,CAAC;aACZ,KAAK,CACJ,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;aACxD,WAAW,EAAE;aACb,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CACrB,CACJ;QACH,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CACvC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1D,SAAS,GAAG,CAAC,EAA2B;QACtC,IAAI,CAAC,CAAC,OAAO;YAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7B,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG;YAAE,EAAE,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;IACD,SAAS,GAAG,CAAC,CAAwC;QACnD,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YAC1B,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC/B,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAGN,EAAE,CAAC;IACT,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACpB,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC;gBACV,CAAC,EAAE,CAAC;gBACJ,KAAK,EAAE,EAAE;aACV,CAAC,CAAC;QACL,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,EAAE,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC7B,OAAO,CACL,iBACM,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EACvB,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,EACtD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;YACjB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,OAAO;gBAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/D,CAAC,YAED,eACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAC,YAAY,EACtB,IAAI,EAAC,QAAQ,gBACF,MAAM,gBACN,iBAAiB,aAE5B,eAAK,SAAS,EAAC,kBAAkB,aAC/B,KAAC,IAAI,IAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAE,EAAE,GAAI,EAChC,gBACE,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,oCAAoC,gBACvD,QAAQ,EACnB,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;gCACd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gCACrB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gCACV,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4BACpC,CAAC,EACD,SAAS,EAAE,GAAG,GACd,EACF,wBAAM,KAAK,GAAO,IACd,EACN,eAAK,SAAS,EAAC,iBAAiB,EAAC,IAAI,EAAC,SAAS,gBAAY,SAAS,aACjE,CAAC,CAAC,OAAO,IAAI,CACZ,eAAK,SAAS,EAAC,kBAAkB,EAAC,IAAI,EAAC,QAAQ,aAC7C,KAAC,OAAO,KAAG,wBACP,CACP,EACA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CACZ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAChB,0BACE,cAAK,SAAS,EAAC,kBAAkB,YAAE,CAAC,CAAC,CAAC,GAAO,EAC5C,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oCACpB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAChB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oCACd,OAAO,CACL,kBAEE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,mBACE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAC3C,SAAS,EAAC,iBAAiB,EAC3B,WAAW,EAAE,GAAG,EAAE;4CAChB,IAAI,CAAC,KAAK,GAAG;gDAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wCAC3B,CAAC,EACD,OAAO,EAAE,GAAG,EAAE;4CACZ,GAAG,CAAC,EAAE,CAAC,CAAC;wCACV,CAAC,aAED,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,OAAO,GAAI,EACjE,gBAAM,SAAS,EAAC,kBAAkB,aAChC,sBAAI,EAAE,CAAC,KAAK,GAAK,EAChB,EAAE,CAAC,IAAI,IAAI,yBAAO,EAAE,CAAC,IAAI,GAAQ,IAC7B,EACN,CAAC,KAAK,GAAG,IAAI,mCAAY,KAjBrB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAkBf,CACV,CAAC;gCACJ,CAAC,CAAC,KA3BM,CAAC,CAAC,CAAC,CA4BP,CACP,CAAC,CACH,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACrB,cAAK,SAAS,EAAC,kBAAkB,YAAE,CAAC,CAAC,KAAK,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,GAAO,CAClF,IACG,EACN,eAAK,SAAS,EAAC,iBAAiB,aAC9B,2BACE,mCAAY,EACZ,mCAAY,OAAE,MAAM,IACf,EACP,2BACE,mCAAY,OAAE,MAAM,IACf,EACP,2BACE,mCAAY,EACZ,8BAAY,EACX,WAAW,IACP,IACH,IACF,GACF,CACP,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,CAAwB;IACvD,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC7B,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;IACpE,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,EAAC,IAAI,EAAC,QAAQ,gBAAY,eAAe,aAChE,eACE,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE;oBACL,UAAU,EAAE,QAAQ;oBACpB,OAAO,EAAE,WAAW;iBACrB,aAED,YACE,KAAK,EAAE;4BACL,QAAQ,EAAE,EAAE;yBACb,YAEA,eAAe,GACd,EACJ,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAChD,OAAO,EAAE,CAAC,CAAC,SAAS,YAEnB,eAAe,GACT,IACL,EACN,cACE,KAAK,EAAE;oBACL,OAAO,EAAE,OAAO;iBACjB,YAED,KAAC,IAAI,IAAC,KAAK,QAAC,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,GAAI,GACjE,EACN,cAAK,SAAS,EAAC,eAAe,YAC3B,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CACd,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACf,kBAEE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,EAC9C,OAAO,EAAE,GAAG,EAAE;wBACZ,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC1B,CAAC,aAED,KAAC,QAAQ,IAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,GAAI,EACxC,gBAAM,SAAS,EAAC,cAAc,aAC5B,sBAAI,CAAC,CAAC,KAAK,GAAK,EAChB,yBAAO,CAAC,CAAC,IAAI,GAAQ,IAChB,EACP,gBAAM,SAAS,EAAC,cAAc,aAC3B,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,MAAM,IAAI,eAAM,SAAS,EAAC,WAAW,GAAG,IACtC,KAfF,CAAC,CAAC,EAAE,CAgBF,CACV,CAAC,CACH,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,gBAAgB,aAC7B,KAAC,QAAQ,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAE,EAAE,GAAI,EAC/C,sBAAI,uBAAuB,GAAK,IAC5B,CACP,GACG,IACF,CACP,CAAC;AACJ,CAAC;AACD,MAAM,IAAI,GAAG,GAAuD,EAAE,CAAC,CAAC;IACtE,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;IAC/B,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;IAChC,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC;IACxC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;CACjC,CAAC,CAAC;AACH,MAAM,UAAU,IAAI,CAAC,CAAY;IAC/B,OAAO,CACL,aACE,SAAS,EAAC,oBAAoB,EAC9B,KAAK,EACH;YACE,QAAQ,EAAE,OAAO;SACK,YAGzB,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5B,MAAM,KAAK,GAAG,IAAI,EAAE,EAClB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,EACjC,EAAE,GACA,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACpC,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;oBACd,CAAC,CAAC,CAAC,CAAC,OAAO;wBACT,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,QAAQ;oBACZ,CAAC,CAAC,EAAE,CAAC;YACb,OAAO,CACL,cAAY,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,aAC3C,eAAM,SAAS,EAAE,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,YAC1C,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,GAAI,GACnD,EACP,eAAK,SAAS,EAAC,cAAc,aAC3B,eAAK,SAAS,EAAC,cAAc,aAC1B,CAAC,CAAC,CAAC,CAAC,EACJ,EAAE,KAAK,QAAQ,IAAI,eAAM,SAAS,EAAC,cAAc,wBAAe,EAChE,EAAE,KAAK,MAAM,IAAI,eAAM,SAAS,EAAC,mBAAmB,YAAE,iBAAiB,GAAQ,IAC5E,EACN,cAAK,SAAS,EAAC,cAAc,YAAE,CAAC,CAAC,IAAI,GAAO,EAC3C,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC,SAAS,IAAI,CAC/B,eACE,SAAS,EAAC,QAAQ,EAClB,KAAK,EAAE;oCACL,SAAS,EAAE,CAAC;iCACb,aAED,KAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,CAAC,CAAC,SAAS,YAChD,SAAS,GACH,EACR,CAAC,CAAC,QAAQ,IAAI,CACb,KAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,YAClD,QAAQ,GACF,CACV,IACG,CACP,IACG,EACL,CAAC,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,eAAe,YAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAO,CAAC,CAAC,CAAC,IAAI,KA7B5E,CAAC,CA8BL,CACN,CAAC;QACJ,CAAC,CAAC,GACC,CACN,CAAC;AACJ,CAAC;AACD,MAAM,SAAS,GAAqC;IAClD,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IACtB,GAAG,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;IACpB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;IACzB,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;IACtB,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC1B,CAAC;AACF,MAAM,UAAU,SAAS,CAAC,CAAiB;IACzC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EACd,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;IACd,IAAI,CAAC,KAAK,OAAO;QACf,OAAO,CACL,eAAM,SAAS,EAAC,YAAY,YACzB,KAAK,CAAC,IAAI,CACT;gBACE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACpB,EACD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACR,yBACG,KAAK,CAAC,IAAI,CACT;oBACE,MAAM,EAAE,CAAC;iBACV,EACD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACR,YAEE,KAAK,EAAE;wBACL,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;qBAC5B,IAHI,CAAC,CAIN,CACH,CACF,IAbQ,CAAC,CAcL,CACR,CACF,GACI,CACR,CAAC;IACJ,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK;QAC5B,OAAO,CACL,gBAAM,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,aACnD,aAAK,EACL,aAAK,EACL,aAAK,IACA,CACR,CAAC;IACJ,IAAI,CAAC,KAAK,KAAK;QACb,OAAO,CACL,eAAM,SAAS,EAAC,UAAU,YACvB,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC/D,2BACE,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAE,EAAE,GAAI,EAC7B,CAAC,KAFO,CAAC,CAGL,CACR,CAAC,GACG,CACR,CAAC;IACJ,OAAO,CACL,gBAAM,SAAS,EAAC,UAAU,aACxB,sBAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,GAAK,EAC/C,KAAK,CAAC,IAAI,CACT;gBACE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACpB,EACD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACR,YAEE,KAAK,EAAE;oBACL,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG;iBAClC,IAHI,CAAC,CAIN,CACH,CACF,IACI,CACR,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,QAAQ,CAAC,CAAgB;IACvC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC;IAC7C,OAAO,CACL,kBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,aAAa,EAAC,OAAO,EAAE,CAAC,CAAC,OAAO,aAC9D,eAAM,SAAS,EAAE,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,YACvC,KAAC,SAAS,IAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAI,GACrC,EACP,eAAM,SAAS,EAAC,kBAAkB,YAAE,CAAC,CAAC,IAAI,GAAQ,EAClD,gBAAM,SAAS,EAAC,kBAAkB,aAC/B,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAC5C,CAAC,CAAC,MAAM,IAAI,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAC,QAAQ,GAAG,IACtD,IACA,CACV,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,MAAM,CAAC,CAAc;IACnC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,EACzB,GAAG,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,EACpB,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IACtB,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,OAAO,gBAAa,CAAC,CAAC,KAAK,IAAI,OAAO,aACpE,iBAAO,SAAS,EAAC,gBAAgB,aAC9B,CAAC,CAAC,KAAK,IAAI,CACV,gBACE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE;4BACL,KAAK,EAAE,iBAAiB;yBACzB,aAEA,CAAC,CAAC,KAAK,EACR,eAAM,SAAS,EAAC,cAAc,GAAG,IAC5B,CACR,EACD,uBACG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;4BAClB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;4BAC3B,OAAO,CACL,uBACE,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC,kBACjD,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC5C,OAAO,EAAE,GAAG,EAAE;wCACZ,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oCAC1B,CAAC,aAED,yBAAO,EAAE,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAQ,EAC1D,CAAC,CAAC,KAAK,IACD,IAXF,CAAC,CAYL,CACN,CAAC;wBACJ,CAAC,CAAC,GACC,IACC,EACR,eAAK,SAAS,EAAC,gBAAgB,aAC7B,cAAK,SAAS,EAAC,cAAc,YAAE,QAAQ,GAAG,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,EAAE,GAAO,EAC1E,eAAe,SAAS,EAAC,gBAAgB,aACtC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAChC,KAAC,QAAQ,IAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAC,KAAK,EAAC,IAAI,EAAE,EAAE,GAAI,CACzD,EACA,KAAK,CAAC,GAAG,CAAC,IAAI,aAAI,SAAS,EAAC,gBAAgB,YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,GAAM,EACpE,CAAC,CAAC,QAAQ,KALH,GAAG,CAMP,EACL,CAAC,CAAC,MAAM,IAAI,CACX,cACE,SAAS,EAAC,eAAe,EACzB,KAAK,EAAE;4BACL,cAAc,EAAE,eAAe;yBAChC,YAEA,CAAC,CAAC,MAAM,GACL,CACP,IACG,IACF,CACP,CAAC;AACJ,CAAC;AACD,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACtD,MAAM,UAAU,gBAAgB,CAAC,CAAwB;IACvD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC/C,cAAc,CAAC,GAAG,CAAC,CAAC;IACpB,OAAO,CACL,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,WAAW,YAClC,iBAAO,SAAS,EAAC,kBAAkB,aACjC,0BACE,yBACE,uBAAK,MAAM,GAAM,EAChB,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC1B,uBAAa,CAAC,IAAL,CAAC,CAAU,CACrB,CAAC,IACC,GACC,EACR,gBACE,SAAS,EAAC,YAAY,EACtB,KAAK,EACH;wBACE,QAAQ,EAAE,OAAO;qBACK,YAGzB,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAC9B,yBACE,yBACE,cACE,KAAK,EAAE;4CACL,UAAU,EAAE,GAAG;yCAChB,YAEA,CAAC,CAAC,IAAI,GACH,EACL,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,CACnB,cAAK,SAAS,EAAC,cAAc,YAC1B,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,UAAU,GAChD,CACP,IACE,EACJ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CACxB,uBACE,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,iBAAiB,GAAG,EAAE,EACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,gBACN,CAAC,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,EAC9D,OAAO,EAAE,GAAG,EAAE;wCACZ,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oCACjD,CAAC,YAEA,MAAM,EAAE,CAAC,EAAE,CAAC,GACN,IAXF,EAAE,CAYN,CACN,CAAC,KA7BK,CAAC,CAAC,IAAI,CA8BV,CACN,CAAC,GACI,IACF,GACJ,CACP,CAAC;AACJ,CAAC;AACD,SAAS,MAAM,CAAC,CAAS;IACvB,OAAO,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE;QAC1B,qBAAqB,EAAE,CAAC;KACzB,CAAC,CAAC;AACL,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,CAAsB;IACnD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IAC5B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAClB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpB,GAAG,IAAI,CAAC,CAAC;QACT,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAC/C,CAAC,CAAC,CAAC;IACH,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7B,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC;IAC/B,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,aACvB,eAAK,SAAS,EAAC,cAAc,aAC3B,0BACG,CAAC,CAAC,KAAK,IAAI,CACV,eACE,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE;oCACL,KAAK,EAAE,YAAY;oCACnB,QAAQ,EAAE,EAAE;iCACb,aAEA,CAAC,CAAC,KAAK,EACR,eAAM,SAAS,EAAC,cAAc,GAAG,IAC7B,CACP,EACA,CAAC,CAAC,IAAI,IAAI,cAAK,SAAS,EAAC,gBAAgB,YAAE,CAAC,CAAC,IAAI,GAAO,IACrD,EACN,eAAK,SAAS,EAAC,aAAa,aAC1B,cAAK,SAAS,EAAC,eAAe,YAAE,CAAC,CAAC,IAAI,IAAI,SAAS,GAAO,EAC1D,cAAK,SAAS,EAAC,SAAS,YAAE,GAAG,GAAG,CAAC,CAAC,MAAM,GAAO,IAC3C,IACF,EACN,eAAK,SAAS,EAAC,eAAe,aAC5B,0BACE,yBAAO,SAAS,GAAQ,EACxB,sBAAI,CAAC,CAAC,EAAE,GAAK,IACT,EACN,0BACE,yBAAO,QAAQ,GAAQ,EACvB,sBAAI,CAAC,CAAC,MAAM,GAAK,IACb,EACN,0BACE,yBAAO,KAAK,GAAQ,EACpB,sBAAI,CAAC,CAAC,GAAG,GAAK,IACV,IACF,EACN,cAAK,SAAS,EAAC,gBAAgB,YAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACnB,0BACE,yBAAO,CAAC,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAQ,EACxE,sBAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAK,KAFf,CAAC,CAGL,CACP,CAAC,GACE,EACN,eAAK,SAAS,EAAC,iBAAiB,aAC9B,0BACE,yBAAO,KAAK,GAAQ,EACpB,sBAAI,GAAG,CAAC,GAAG,CAAC,GAAK,IACb,EACL,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;yBACd,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;yBACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACV,0BACE,yBAAO,OAAO,CAAC,GAAG,GAAQ,EAC1B,sBAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAK,KAFzB,CAAC,CAGL,CACP,CAAC,EACJ,eAAK,SAAS,EAAC,OAAO,aACpB,yBAAO,WAAW,GAAQ,EAC1B,sBAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAK,IACnB,IACF,EACL,CAAC,CAAC,IAAI,IAAI,cAAK,SAAS,EAAC,gBAAgB,YAAE,CAAC,CAAC,IAAI,GAAO,IACrD,CACP,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,CAAsB;IACnD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAChC,GAAG,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACrB,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,WAAW,CAAC,aACpD,eAAK,SAAS,EAAC,WAAW,aACxB,KAAC,QAAQ,IAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAI,EAC3E,eAAK,SAAS,EAAC,YAAY,aACzB,YAAG,SAAS,EAAC,SAAS,YAAE,CAAC,CAAC,IAAI,GAAK,EACnC,yBAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAQ,IAClF,EACN,YAAG,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,YAC9C,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAC7C,EACH,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CACX,KAAC,KAAK,IAAC,IAAI,EAAC,SAAS,YAAE,SAAS,GAAS,CAC1C,CAAC,CAAC,CAAC,CACF,KAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACrC,OAAO,EAAE,GAAG,EAAE;4BACZ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;wBACpB,CAAC,YAEA,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GACrB,CACV,IACG,EACL,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CACxB,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,QAAQ,IAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,QAAQ,GAAG,EACrC,eACE,KAAK,EAAE;4BACL,IAAI,EAAE,CAAC;4BACP,QAAQ,EAAE,CAAC;yBACZ,YAEA,CAAC,CAAC,IAAI,IAAI,oBAAoB,GAC1B,EACP,KAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,GAAG,EAAE;4BACZ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;4BACf,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;wBAC3B,CAAC,YAEA,QAAQ,GACF,IACL,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/components/workspace.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { SHARED_STRINGS, type UIMessages, type UIStrings } from "./strings.js";
2
+ import type { Density, Kit, Motion, Surface, Theme } from "./provider.js";
3
+ export interface UIContextValue {
4
+ kit: Kit | undefined;
5
+ theme: Theme | undefined;
6
+ density: Density | undefined;
7
+ surface: Surface | undefined;
8
+ motion: Motion | undefined;
9
+ /** Locale for formatted numbers and dates (`"en-US"` unless a provider sets one). */
10
+ locale: string;
11
+ /** Every provider's `messages`, merged (outer first). Components add their defaults. */
12
+ messages: UIMessages;
13
+ /** Element portals render into (null: document.body). */
14
+ portalRoot: HTMLElement | null;
15
+ }
16
+ export declare const UIContext: import("react").Context<UIContextValue>;
17
+ /** Current kit, theme, density, locale, strings and portal target. */
18
+ export declare function useUI(): UIContextValue;
19
+ /**
20
+ * Strings for a component: the shared strings plus `group` (the component file's defaults), with
21
+ * the `messages` of the surrounding providers applied. Each component file passes only its own
22
+ * group, so a bundle carries just the defaults of the components it uses.
23
+ */
24
+ export declare function useStrings<G extends object = Record<never, never>>(group?: G): typeof SHARED_STRINGS & G;
25
+ /** Every built-in string for this part of the tree (English unless a `UIProvider` sets `messages`). */
26
+ export declare function useUIStrings(): UIStrings;
27
+ /** `formatNumber`, `formatMoney`, `formatPercent` and `formatDate`, bound to a locale. */
28
+ export interface Formatters {
29
+ locale: string;
30
+ formatNumber: (v: number, o?: Intl.NumberFormatOptions) => string;
31
+ formatMoney: (v: number, currency?: string | null, o?: Intl.NumberFormatOptions) => string;
32
+ formatPercent: (v: number, o?: Intl.NumberFormatOptions) => string;
33
+ formatDate: (input: Date | string | number, o?: Intl.DateTimeFormatOptions) => string;
34
+ }
35
+ /** The formatters for a locale (cached, so the functions keep their identity). */
36
+ export declare function formattersFor(locale: string): Formatters;
37
+ /** The format helpers in the locale of the nearest `UIProvider` (`"en-US"` without one). */
38
+ export declare function useFormat(): Formatters;
39
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,cAAc,EAEd,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE1E,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,GAAG,GAAG,SAAS,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,qFAAqF;IACrF,MAAM,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,QAAQ,EAAE,UAAU,CAAC;IACrB,yDAAyD;IACzD,UAAU,EAAE,WAAW,GAAG,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,SAAS,yCASpB,CAAC;AAEH,sEAAsE;AACtE,wBAAgB,KAAK,IAAI,cAAc,CAEtC;AAiBD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAChE,KAAK,CAAC,EAAE,CAAC,GACR,OAAO,cAAc,GAAG,CAAC,CAM3B;AAGD,uGAAuG;AACvG,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAED,0FAA0F;AAC1F,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,KAAK,MAAM,CAAC;IAClE,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,KAAK,MAAM,CAAC;IAC3F,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,KAAK,MAAM,CAAC;IACnE,UAAU,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,qBAAqB,KAAK,MAAM,CAAC;CACvF;AAGD,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAaxD;AAED,4FAA4F;AAC5F,wBAAgB,SAAS,IAAI,UAAU,CAEtC"}
@@ -0,0 +1,76 @@
1
+ "use client";
2
+ /**
3
+ * The context `UIProvider` fills, and the hooks components read it with. Kept apart from the
4
+ * provider so a component that only needs its strings or formatters does not pull in theming.
5
+ */
6
+ import { createContext, useContext } from "react";
7
+ import { LOCALE, formatDate, formatMoney, formatNumber, formatPercent } from "./format.js";
8
+ import { DEFAULT_STRINGS, SHARED_STRINGS, mergeStrings, } from "./strings.js";
9
+ export const UIContext = createContext({
10
+ kit: undefined,
11
+ theme: undefined,
12
+ density: undefined,
13
+ surface: undefined,
14
+ motion: undefined,
15
+ locale: LOCALE,
16
+ messages: {},
17
+ portalRoot: null,
18
+ });
19
+ /** Current kit, theme, density, locale, strings and portal target. */
20
+ export function useUI() {
21
+ return useContext(UIContext);
22
+ }
23
+ // Resolved strings per (messages, defaults): components get stable objects, and an app without
24
+ // messages shares one object per group.
25
+ const resolved = new WeakMap();
26
+ function resolve(messages, defaults) {
27
+ let byGroup = resolved.get(messages);
28
+ if (!byGroup)
29
+ resolved.set(messages, (byGroup = new WeakMap()));
30
+ let out = byGroup.get(defaults);
31
+ if (!out) {
32
+ out = mergeStrings(defaults, messages);
33
+ byGroup.set(defaults, out);
34
+ }
35
+ return out;
36
+ }
37
+ const NO_GROUP = {};
38
+ /**
39
+ * Strings for a component: the shared strings plus `group` (the component file's defaults), with
40
+ * the `messages` of the surrounding providers applied. Each component file passes only its own
41
+ * group, so a bundle carries just the defaults of the components it uses.
42
+ */
43
+ export function useStrings(group) {
44
+ const messages = useContext(UIContext).messages;
45
+ const g = group ?? NO_GROUP;
46
+ let base = withShared.get(g);
47
+ if (!base)
48
+ withShared.set(g, (base = { ...SHARED_STRINGS, ...g }));
49
+ return resolve(messages, base);
50
+ }
51
+ const withShared = new WeakMap();
52
+ /** Every built-in string for this part of the tree (English unless a `UIProvider` sets `messages`). */
53
+ export function useUIStrings() {
54
+ return resolve(useContext(UIContext).messages, DEFAULT_STRINGS);
55
+ }
56
+ const formatters = new Map();
57
+ /** The formatters for a locale (cached, so the functions keep their identity). */
58
+ export function formattersFor(locale) {
59
+ let f = formatters.get(locale);
60
+ if (!f) {
61
+ f = {
62
+ locale,
63
+ formatNumber: (v, o) => formatNumber(v, o, locale),
64
+ formatMoney: (v, currency, o) => formatMoney(v, currency, o, locale),
65
+ formatPercent: (v, o) => formatPercent(v, o, locale),
66
+ formatDate: (input, o) => formatDate(input, o, locale),
67
+ };
68
+ formatters.set(locale, f);
69
+ }
70
+ return f;
71
+ }
72
+ /** The format helpers in the locale of the nearest `UIProvider` (`"en-US"` without one). */
73
+ export function useFormat() {
74
+ return formattersFor(useContext(UIContext).locale);
75
+ }
76
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
package/dist/format.d.ts CHANGED
@@ -1,14 +1,41 @@
1
1
  /**
2
- * Numbers, money, percentages and dates, formatted with Intl in English (en-US). Money defaults
3
- * to euros; calendars start on Monday.
2
+ * Numbers, money, percentages and dates, formatted with Intl. English (en-US) by default; every
3
+ * helper takes an optional BCP 47 locale as its last argument, and components use the locale of
4
+ * the nearest `UIProvider` (see `useFormat`). Money defaults to euros; calendars start on Monday.
4
5
  */
5
6
  export declare const LOCALE = "en-US";
6
7
  export declare const CURRENCY = "EUR";
7
8
  /** First day of the week in calendars: 0 Sunday … 6 Saturday. */
8
9
  export declare const WEEK_START = 1;
9
- export declare function formatNumber(v: number, o?: Intl.NumberFormatOptions): string;
10
- export declare function formatMoney(v: number, currency?: string | null, o?: Intl.NumberFormatOptions): string;
10
+ export declare function formatNumber(v: number, o?: Intl.NumberFormatOptions, locale?: string): string;
11
+ export declare function formatMoney(v: number, currency?: string | null, o?: Intl.NumberFormatOptions, locale?: string): string;
11
12
  /** A share in percent: `19` → "19%". */
12
- export declare function formatPercent(v: number, o?: Intl.NumberFormatOptions): string;
13
- export declare function formatDate(input: Date | string | number, o?: Intl.DateTimeFormatOptions): string;
13
+ export declare function formatPercent(v: number, o?: Intl.NumberFormatOptions, locale?: string): string;
14
+ export declare function formatDate(input: Date | string | number, o?: Intl.DateTimeFormatOptions, locale?: string): string;
15
+ /** The group and decimal separators of a locale: `en-US` → `{ group: ",", decimal: "." }`. */
16
+ export declare function numberSeparators(locale?: string): {
17
+ group: string;
18
+ decimal: string;
19
+ };
20
+ /** A number inside a formatted string, as `parseFormatted` finds it. */
21
+ export interface FormattedNumber {
22
+ /** Text before the number ("€", "+"). */
23
+ prefix: string;
24
+ value: number;
25
+ /** Digits after the decimal separator. */
26
+ decimals: number;
27
+ /** Whether the number used group separators ("1,305"). */
28
+ grouped: boolean;
29
+ /** Text after the number (" €/m²", "%"). */
30
+ suffix: string;
31
+ }
32
+ /**
33
+ * Finds the first number in a string formatted for `locale` and returns it with the text around
34
+ * it: `parseFormatted("13,05 €/m²", "de-DE")` → `{ prefix: "", value: 13.05, decimals: 2, … }`.
35
+ * Group separators are only taken between digits; a space or no-break space counts as a group
36
+ * separator for locales that group with one.
37
+ */
38
+ export declare function parseFormatted(input: string | number, locale?: string): FormattedNumber | null;
39
+ /** Writes a number back in the shape `parseFormatted` found it in (same decimals, grouping, text). */
40
+ export declare function formatLike(v: number, shape: FormattedNumber, locale?: string): string;
14
41
  //# sourceMappingURL=format.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,eAAO,MAAM,QAAQ,QAAQ,CAAC;AAC9B,iEAAiE;AACjE,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAM5E;AAED,wBAAgB,WAAW,CACzB,CAAC,EAAE,MAAM,EACT,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAC3B,MAAM,CAQR;AAED,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAE7E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAUhG"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,eAAO,MAAM,QAAQ,QAAQ,CAAC;AAC9B,iEAAiE;AACjE,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAM7F;AAED,wBAAgB,WAAW,CACzB,CAAC,EAAE,MAAM,EACT,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAC5B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAYR;AAED,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9F;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,EAC7B,CAAC,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAC9B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAUR;AAED,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAYpF;AAID,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CA+B9F;AAED,sGAAsG;AACtG,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAWrF"}