@flyingrobots/bijou 0.6.0 → 0.9.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 (69) hide show
  1. package/dist/adapters/test/audit-style.d.ts +25 -0
  2. package/dist/adapters/test/audit-style.d.ts.map +1 -0
  3. package/dist/adapters/test/audit-style.js +41 -0
  4. package/dist/adapters/test/audit-style.js.map +1 -0
  5. package/dist/adapters/test/index.d.ts +1 -0
  6. package/dist/adapters/test/index.d.ts.map +1 -1
  7. package/dist/adapters/test/index.js +1 -0
  8. package/dist/adapters/test/index.js.map +1 -1
  9. package/dist/core/components/dag-source.d.ts +4 -0
  10. package/dist/core/components/dag-source.d.ts.map +1 -1
  11. package/dist/core/components/dag-source.js +10 -0
  12. package/dist/core/components/dag-source.js.map +1 -1
  13. package/dist/core/components/dag.d.ts +2 -0
  14. package/dist/core/components/dag.d.ts.map +1 -1
  15. package/dist/core/components/dag.js +55 -10
  16. package/dist/core/components/dag.js.map +1 -1
  17. package/dist/core/components/enumerated-list.d.ts +10 -0
  18. package/dist/core/components/enumerated-list.d.ts.map +1 -0
  19. package/dist/core/components/enumerated-list.js +147 -0
  20. package/dist/core/components/enumerated-list.js.map +1 -0
  21. package/dist/core/components/hyperlink.d.ts +7 -0
  22. package/dist/core/components/hyperlink.d.ts.map +1 -0
  23. package/dist/core/components/hyperlink.js +38 -0
  24. package/dist/core/components/hyperlink.js.map +1 -0
  25. package/dist/core/components/index.d.ts +8 -0
  26. package/dist/core/components/index.d.ts.map +1 -1
  27. package/dist/core/components/index.js +4 -0
  28. package/dist/core/components/index.js.map +1 -1
  29. package/dist/core/components/log.d.ts +9 -0
  30. package/dist/core/components/log.d.ts.map +1 -0
  31. package/dist/core/components/log.js +87 -0
  32. package/dist/core/components/log.js.map +1 -0
  33. package/dist/core/components/markdown.d.ts +29 -0
  34. package/dist/core/components/markdown.d.ts.map +1 -0
  35. package/dist/core/components/markdown.js +328 -0
  36. package/dist/core/components/markdown.js.map +1 -0
  37. package/dist/core/forms/filter.js +5 -2
  38. package/dist/core/forms/filter.js.map +1 -1
  39. package/dist/core/forms/multiselect.js +4 -1
  40. package/dist/core/forms/multiselect.js.map +1 -1
  41. package/dist/core/forms/select.js +4 -1
  42. package/dist/core/forms/select.js.map +1 -1
  43. package/dist/core/forms/textarea.js +5 -2
  44. package/dist/core/forms/textarea.js.map +1 -1
  45. package/dist/core/text/grapheme.d.ts +54 -0
  46. package/dist/core/text/grapheme.d.ts.map +1 -0
  47. package/dist/core/text/grapheme.js +160 -0
  48. package/dist/core/text/grapheme.js.map +1 -0
  49. package/dist/core/text/index.d.ts +2 -0
  50. package/dist/core/text/index.d.ts.map +1 -0
  51. package/dist/core/text/index.js +2 -0
  52. package/dist/core/text/index.js.map +1 -0
  53. package/dist/core/theme/color.d.ts +25 -0
  54. package/dist/core/theme/color.d.ts.map +1 -0
  55. package/dist/core/theme/color.js +143 -0
  56. package/dist/core/theme/color.js.map +1 -0
  57. package/dist/core/theme/downsample.d.ts +35 -0
  58. package/dist/core/theme/downsample.d.ts.map +1 -0
  59. package/dist/core/theme/downsample.js +141 -0
  60. package/dist/core/theme/downsample.js.map +1 -0
  61. package/dist/core/theme/index.d.ts +2 -0
  62. package/dist/core/theme/index.d.ts.map +1 -1
  63. package/dist/core/theme/index.js +4 -0
  64. package/dist/core/theme/index.js.map +1 -1
  65. package/dist/index.d.ts +3 -2
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +8 -2
  68. package/dist/index.js.map +1 -1
  69. package/package.json +1 -1
@@ -0,0 +1,147 @@
1
+ import { getDefaultContext } from '../../context.js';
2
+ function resolveCtx(ctx) {
3
+ if (ctx)
4
+ return ctx;
5
+ try {
6
+ return getDefaultContext();
7
+ }
8
+ catch {
9
+ return undefined;
10
+ }
11
+ }
12
+ function toRoman(n) {
13
+ const vals = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1];
14
+ const syms = ['m', 'cm', 'd', 'cd', 'c', 'xc', 'l', 'xl', 'x', 'ix', 'v', 'iv', 'i'];
15
+ let result = '';
16
+ for (let i = 0; i < vals.length; i++) {
17
+ while (n >= vals[i]) {
18
+ result += syms[i];
19
+ n -= vals[i];
20
+ }
21
+ }
22
+ return result;
23
+ }
24
+ function toAlpha(n) {
25
+ let result = '';
26
+ while (n > 0) {
27
+ n--;
28
+ result = String.fromCharCode(97 + (n % 26)) + result;
29
+ n = Math.floor(n / 26);
30
+ }
31
+ return result;
32
+ }
33
+ function generatePrefix(style, index) {
34
+ switch (style) {
35
+ case 'arabic':
36
+ return `${index}.`;
37
+ case 'alpha':
38
+ return `${toAlpha(index)}.`;
39
+ case 'roman':
40
+ return `${toRoman(index)}.`;
41
+ case 'bullet':
42
+ return '\u2022';
43
+ case 'dash':
44
+ return '\u2013';
45
+ case 'none':
46
+ return '';
47
+ }
48
+ }
49
+ function generatePipePrefix(style, index) {
50
+ switch (style) {
51
+ case 'arabic':
52
+ return `${index}.`;
53
+ case 'alpha':
54
+ return `${toAlpha(index)}.`;
55
+ case 'roman':
56
+ return `${toRoman(index)}.`;
57
+ case 'bullet':
58
+ return '*';
59
+ case 'dash':
60
+ return '-';
61
+ case 'none':
62
+ return '';
63
+ }
64
+ }
65
+ function isOrderedStyle(style) {
66
+ return style === 'arabic' || style === 'alpha' || style === 'roman';
67
+ }
68
+ export function enumeratedList(items, options) {
69
+ if (items.length === 0)
70
+ return '';
71
+ const style = options?.style ?? 'arabic';
72
+ const indent = options?.indent ?? 2;
73
+ const start = options?.start ?? 1;
74
+ const ctx = resolveCtx(options?.ctx);
75
+ const mode = ctx?.mode;
76
+ const indentStr = ' '.repeat(indent);
77
+ // Accessible mode: simple numbering regardless of style
78
+ if (mode === 'accessible') {
79
+ return items
80
+ .map((item, i) => {
81
+ const num = start + i;
82
+ const prefix = `${num}.`;
83
+ const lines = item.split('\n');
84
+ const firstLine = `${indentStr}${prefix} ${lines[0]}`;
85
+ if (lines.length === 1)
86
+ return firstLine;
87
+ const contIndent = ' '.repeat(indent + prefix.length + 1);
88
+ return [firstLine, ...lines.slice(1).map(l => `${contIndent}${l}`)].join('\n');
89
+ })
90
+ .join('\n');
91
+ }
92
+ // Pipe mode: ASCII fallbacks
93
+ if (mode === 'pipe') {
94
+ const prefixes = items.map((_, i) => generatePipePrefix(style, start + i));
95
+ const maxPrefixLen = isOrderedStyle(style)
96
+ ? Math.max(...prefixes.map(p => p.length))
97
+ : 0;
98
+ return items
99
+ .map((item, i) => {
100
+ const prefix = prefixes[i];
101
+ const lines = item.split('\n');
102
+ if (style === 'none') {
103
+ const firstLine = `${indentStr}${lines[0]}`;
104
+ if (lines.length === 1)
105
+ return firstLine;
106
+ const contIndent = indentStr;
107
+ return [firstLine, ...lines.slice(1).map(l => `${contIndent}${l}`)].join('\n');
108
+ }
109
+ const paddedPrefix = isOrderedStyle(style)
110
+ ? prefix.padStart(maxPrefixLen)
111
+ : prefix;
112
+ const firstLine = `${indentStr}${paddedPrefix} ${lines[0]}`;
113
+ if (lines.length === 1)
114
+ return firstLine;
115
+ const contIndent = ' '.repeat(indent + paddedPrefix.length + 1);
116
+ return [firstLine, ...lines.slice(1).map(l => `${contIndent}${l}`)].join('\n');
117
+ })
118
+ .join('\n');
119
+ }
120
+ // Interactive / static mode (or no context): full rendering
121
+ const prefixes = items.map((_, i) => generatePrefix(style, start + i));
122
+ const maxPrefixLen = isOrderedStyle(style)
123
+ ? Math.max(...prefixes.map(p => p.length))
124
+ : 0;
125
+ return items
126
+ .map((item, i) => {
127
+ const prefix = prefixes[i];
128
+ const lines = item.split('\n');
129
+ if (style === 'none') {
130
+ const firstLine = `${indentStr}${lines[0]}`;
131
+ if (lines.length === 1)
132
+ return firstLine;
133
+ const contIndent = indentStr;
134
+ return [firstLine, ...lines.slice(1).map(l => `${contIndent}${l}`)].join('\n');
135
+ }
136
+ const paddedPrefix = isOrderedStyle(style)
137
+ ? prefix.padStart(maxPrefixLen)
138
+ : prefix;
139
+ const firstLine = `${indentStr}${paddedPrefix} ${lines[0]}`;
140
+ if (lines.length === 1)
141
+ return firstLine;
142
+ const contIndent = ' '.repeat(indent + paddedPrefix.length + 1);
143
+ return [firstLine, ...lines.slice(1).map(l => `${contIndent}${l}`)].join('\n');
144
+ })
145
+ .join('\n');
146
+ }
147
+ //# sourceMappingURL=enumerated-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enumerated-list.js","sourceRoot":"","sources":["../../../src/core/components/enumerated-list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { BijouContext } from '../../ports/context.js';
2
+ export interface HyperlinkOptions {
3
+ readonly fallback?: 'url' | 'text' | 'both';
4
+ readonly ctx?: BijouContext;
5
+ }
6
+ export declare function hyperlink(text: string, url: string, options?: HyperlinkOptions): string;
7
+ //# sourceMappingURL=hyperlink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyperlink.d.ts","sourceRoot":"","sources":["../../../src/core/components/hyperlink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5C,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;CAC7B;AAWD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAqBvF"}
@@ -0,0 +1,38 @@
1
+ import { getDefaultContext } from '../../context.js';
2
+ function resolveCtx(ctx) {
3
+ if (ctx)
4
+ return ctx;
5
+ try {
6
+ return getDefaultContext();
7
+ }
8
+ catch {
9
+ return undefined;
10
+ }
11
+ }
12
+ export function hyperlink(text, url, options) {
13
+ const ctx = resolveCtx(options?.ctx);
14
+ const fallback = options?.fallback ?? 'both';
15
+ // No context → use fallback format
16
+ if (!ctx)
17
+ return formatFallback(text, url, fallback);
18
+ const mode = ctx.mode;
19
+ // Interactive/static: OSC 8 clickable link
20
+ if (mode === 'interactive' || mode === 'static') {
21
+ return `\x1b]8;;${url}\x1b\\${text}\x1b]8;;\x1b\\`;
22
+ }
23
+ // Pipe: use fallback format
24
+ if (mode === 'pipe')
25
+ return formatFallback(text, url, fallback);
26
+ // Accessible: always text (url) for screen readers
27
+ if (mode === 'accessible')
28
+ return `${text} (${url})`;
29
+ return formatFallback(text, url, fallback);
30
+ }
31
+ function formatFallback(text, url, fallback) {
32
+ switch (fallback) {
33
+ case 'url': return url;
34
+ case 'text': return text;
35
+ case 'both': return `${text} (${url})`;
36
+ }
37
+ }
38
+ //# sourceMappingURL=hyperlink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyperlink.js","sourceRoot":"","sources":["../../../src/core/components/hyperlink.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAOrD,SAAS,UAAU,CAAC,GAAkB;IACpC,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,GAAW,EAAE,OAA0B;IAC7E,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,MAAM,CAAC;IAE7C,mCAAmC;IACnC,IAAI,CAAC,GAAG;QAAE,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IAEtB,2CAA2C;IAC3C,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,WAAW,GAAG,SAAS,IAAI,gBAAgB,CAAC;IACrD,CAAC;IAED,4BAA4B;IAC5B,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAEhE,mDAAmD;IACnD,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC;IAErD,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,GAAW,EAAE,QAAiC;IAClF,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC;QACvB,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC;QACzB,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC;IACzC,CAAC;AACH,CAAC"}
@@ -38,4 +38,12 @@ export { arraySource, isDagSource, isSlicedDagSource } from './dag-source.js';
38
38
  export type { DagSource, SlicedDagSource, DagSliceOptions } from './dag-source.js';
39
39
  export { dagStats } from './dag-stats.js';
40
40
  export type { DagStats } from './dag-stats.js';
41
+ export { enumeratedList } from './enumerated-list.js';
42
+ export type { BulletStyle, EnumeratedListOptions } from './enumerated-list.js';
43
+ export { hyperlink } from './hyperlink.js';
44
+ export type { HyperlinkOptions } from './hyperlink.js';
45
+ export { log } from './log.js';
46
+ export type { LogLevel, LogOptions } from './log.js';
47
+ export { markdown } from './markdown.js';
48
+ export type { MarkdownOptions } from './markdown.js';
41
49
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3D,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1F,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEnI,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3D,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEpF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACpD,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC9E,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEnF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/components/index.ts"],"names":[],"mappings":"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"}
@@ -18,4 +18,8 @@ export { stepper } from './stepper.js';
18
18
  export { dag, dagSlice, dagLayout } from './dag.js';
19
19
  export { arraySource, isDagSource, isSlicedDagSource } from './dag-source.js';
20
20
  export { dagStats } from './dag-stats.js';
21
+ export { enumeratedList } from './enumerated-list.js';
22
+ export { hyperlink } from './hyperlink.js';
23
+ export { log } from './log.js';
24
+ export { markdown } from './markdown.js';
21
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG3D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAG1F,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG9E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG3D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAG1F,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG9E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { BijouContext } from '../../ports/context.js';
2
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal';
3
+ export interface LogOptions {
4
+ readonly timestamp?: boolean;
5
+ readonly prefix?: boolean;
6
+ readonly ctx?: BijouContext;
7
+ }
8
+ export declare function log(level: LogLevel, message: string, options?: LogOptions): string;
9
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../src/core/components/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAErE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;CAC7B;AA2CD,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,CA6ClF"}
@@ -0,0 +1,87 @@
1
+ import { getDefaultContext } from '../../context.js';
2
+ import { badge } from './badge.js';
3
+ function resolveCtx(ctx) {
4
+ if (ctx)
5
+ return ctx;
6
+ try {
7
+ return getDefaultContext();
8
+ }
9
+ catch {
10
+ return undefined;
11
+ }
12
+ }
13
+ const LABELS = {
14
+ debug: 'DBG',
15
+ info: 'INF',
16
+ warn: 'WRN',
17
+ error: 'ERR',
18
+ fatal: 'FTL',
19
+ };
20
+ const BADGE_VARIANTS = {
21
+ debug: 'muted',
22
+ info: 'info',
23
+ warn: 'warning',
24
+ error: 'error',
25
+ fatal: 'error',
26
+ };
27
+ const ACCESSIBLE_LABELS = {
28
+ debug: 'DEBUG',
29
+ info: 'INFO',
30
+ warn: 'WARN',
31
+ error: 'ERROR',
32
+ fatal: 'FATAL',
33
+ };
34
+ function formatTimestamp() {
35
+ const d = new Date();
36
+ const hh = String(d.getHours()).padStart(2, '0');
37
+ const mm = String(d.getMinutes()).padStart(2, '0');
38
+ const ss = String(d.getSeconds()).padStart(2, '0');
39
+ return `${hh}:${mm}:${ss}`;
40
+ }
41
+ export function log(level, message, options) {
42
+ const ctx = resolveCtx(options?.ctx);
43
+ const showPrefix = options?.prefix !== false; // default true
44
+ const showTimestamp = options?.timestamp === true; // default false
45
+ const ts = showTimestamp ? formatTimestamp() : '';
46
+ if (!ctx) {
47
+ const parts = [];
48
+ if (ts)
49
+ parts.push(`[${ts}]`);
50
+ if (showPrefix)
51
+ parts.push(`[${LABELS[level]}]`);
52
+ parts.push(message);
53
+ return parts.join(' ');
54
+ }
55
+ const mode = ctx.mode;
56
+ if (mode === 'pipe') {
57
+ const parts = [];
58
+ if (ts)
59
+ parts.push(`[${ts}]`);
60
+ if (showPrefix)
61
+ parts.push(`[${LABELS[level]}]`);
62
+ parts.push(message);
63
+ return parts.join(' ');
64
+ }
65
+ if (mode === 'accessible') {
66
+ const parts = [];
67
+ if (ts)
68
+ parts.push(ts);
69
+ if (showPrefix)
70
+ parts.push(`${ACCESSIBLE_LABELS[level]}:`);
71
+ parts.push(message);
72
+ return parts.join(' ');
73
+ }
74
+ // Interactive/static: use badge + styled message
75
+ const parts = [];
76
+ if (ts) {
77
+ const tsStyled = ctx.style.styled(ctx.theme.theme.semantic.muted, ts);
78
+ parts.push(tsStyled);
79
+ }
80
+ if (showPrefix) {
81
+ const variant = BADGE_VARIANTS[level];
82
+ parts.push(badge(LABELS[level], { variant, ctx }));
83
+ }
84
+ parts.push(message);
85
+ return parts.join(' ');
86
+ }
87
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/core/components/log.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Terminal markdown renderer.
3
+ *
4
+ * Two-pass: block-level parse (line-by-line), then inline parse within each block.
5
+ * Reuses existing components: `separator()` for HRs, `hyperlink()` for links.
6
+ *
7
+ * Supported syntax: headings (# through ####), bold, italic, code spans,
8
+ * bullet lists, numbered lists, code blocks, horizontal rules, links,
9
+ * blockquotes.
10
+ */
11
+ import type { BijouContext } from '../../ports/context.js';
12
+ export interface MarkdownOptions {
13
+ /** Wrap width. Defaults to `ctx.runtime.columns`. */
14
+ width?: number;
15
+ ctx?: BijouContext;
16
+ }
17
+ /**
18
+ * Render a markdown string for terminal display.
19
+ *
20
+ * Supports headings, bold, italic, code spans, bullet/numbered lists,
21
+ * code blocks, horizontal rules, links, and blockquotes.
22
+ *
23
+ * Mode degradation:
24
+ * - `interactive`: full styled output with colors and Unicode
25
+ * - `pipe`: plain text with minimal formatting
26
+ * - `accessible`: structured text with explicit labels
27
+ */
28
+ export declare function markdown(source: string, options?: MarkdownOptions): string;
29
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../src/core/components/markdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAU3D,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,YAAY,CAAC;CACpB;AAoVD;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAQ1E"}