@orochibraru/ui 1.0.0 → 1.0.1

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 (112) hide show
  1. package/README.md +84 -3
  2. package/dist/components/blocks/accent-toggle.svelte +7 -3
  3. package/dist/components/blocks/accent-toggle.svelte.d.ts +1 -1
  4. package/dist/components/blocks/bottom-nav.svelte +1 -1
  5. package/dist/components/blocks/command-palette.svelte +268 -0
  6. package/dist/components/blocks/command-palette.svelte.d.ts +37 -0
  7. package/dist/components/blocks/error-page.svelte +23 -7
  8. package/dist/components/blocks/error-page.svelte.d.ts +4 -0
  9. package/dist/components/blocks/fab.svelte +1 -1
  10. package/dist/components/blocks/install-prompt.svelte +14 -8
  11. package/dist/components/blocks/install-prompt.svelte.d.ts +2 -1
  12. package/dist/components/blocks/music-player/labelled-slider.svelte +3 -12
  13. package/dist/components/blocks/music-player/labelled-slider.svelte.d.ts +1 -2
  14. package/dist/components/blocks/music-player.svelte +13 -12
  15. package/dist/components/blocks/otp-field.svelte +77 -33
  16. package/dist/components/blocks/otp-field.svelte.d.ts +7 -0
  17. package/dist/components/blocks/password-input.svelte +56 -16
  18. package/dist/components/blocks/password-input.svelte.d.ts +3 -0
  19. package/dist/components/blocks/stepper/stepper-phone-header.svelte +93 -0
  20. package/dist/components/blocks/stepper/stepper-phone-header.svelte.d.ts +13 -0
  21. package/dist/components/blocks/stepper.svelte +175 -0
  22. package/dist/components/blocks/stepper.svelte.d.ts +30 -0
  23. package/dist/components/blocks/time-range-picker.svelte +229 -0
  24. package/dist/components/blocks/time-range-picker.svelte.d.ts +33 -0
  25. package/dist/components/blocks/time-series-chart/data-table.svelte +43 -0
  26. package/dist/components/blocks/time-series-chart/data-table.svelte.d.ts +15 -0
  27. package/dist/components/blocks/time-series-chart/legend.svelte +23 -0
  28. package/dist/components/blocks/time-series-chart/legend.svelte.d.ts +10 -0
  29. package/dist/components/blocks/time-series-chart/marks.svelte +118 -0
  30. package/dist/components/blocks/time-series-chart/marks.svelte.d.ts +29 -0
  31. package/dist/components/blocks/time-series-chart/messages.d.ts +13 -0
  32. package/dist/components/blocks/time-series-chart/messages.js +12 -0
  33. package/dist/components/blocks/time-series-chart/readout.svelte +44 -0
  34. package/dist/components/blocks/time-series-chart/readout.svelte.d.ts +15 -0
  35. package/dist/components/blocks/time-series-chart/scale.d.ts +24 -0
  36. package/dist/components/blocks/time-series-chart/scale.js +136 -0
  37. package/dist/components/blocks/time-series-chart/time.d.ts +7 -0
  38. package/dist/components/blocks/time-series-chart/time.js +96 -0
  39. package/dist/components/blocks/time-series-chart.svelte +492 -0
  40. package/dist/components/blocks/time-series-chart.svelte.d.ts +18 -0
  41. package/dist/components/blocks/top-loading-bar.svelte +1 -1
  42. package/dist/components/blocks/video-player/center-controls.svelte +7 -7
  43. package/dist/components/blocks/video-player/control-bar.svelte +41 -35
  44. package/dist/components/blocks/video-player/control-button.svelte +1 -1
  45. package/dist/components/blocks/video-player/option-menu.svelte +1 -1
  46. package/dist/components/blocks/video-player/scrub-bar.svelte +39 -12
  47. package/dist/components/blocks/video-player/scrub-bar.svelte.d.ts +2 -0
  48. package/dist/components/blocks/video-player.svelte +2 -2
  49. package/dist/components/kit/accordion.svelte +70 -0
  50. package/dist/components/kit/accordion.svelte.d.ts +37 -0
  51. package/dist/components/kit/avatar-group.svelte +84 -0
  52. package/dist/components/kit/avatar-group.svelte.d.ts +14 -0
  53. package/dist/components/kit/bar-list.svelte +104 -0
  54. package/dist/components/kit/bar-list.svelte.d.ts +22 -0
  55. package/dist/components/kit/breadcrumbs.svelte +102 -0
  56. package/dist/components/kit/breadcrumbs.svelte.d.ts +14 -0
  57. package/dist/components/kit/checkbox-list.svelte +98 -0
  58. package/dist/components/kit/checkbox-list.svelte.d.ts +15 -0
  59. package/dist/components/kit/checkbox.svelte +84 -0
  60. package/dist/components/kit/checkbox.svelte.d.ts +8 -0
  61. package/dist/components/kit/confirm-dialog.svelte +127 -0
  62. package/dist/components/kit/confirm-dialog.svelte.d.ts +19 -0
  63. package/dist/components/kit/data-table.svelte +280 -0
  64. package/dist/components/kit/data-table.svelte.d.ts +46 -0
  65. package/dist/components/kit/date-field.svelte +210 -0
  66. package/dist/components/kit/date-field.svelte.d.ts +14 -0
  67. package/dist/components/kit/field-frame.svelte +71 -0
  68. package/dist/components/kit/field-frame.svelte.d.ts +26 -0
  69. package/dist/components/kit/fieldset-frame.svelte +69 -0
  70. package/dist/components/kit/fieldset-frame.svelte.d.ts +14 -0
  71. package/dist/components/kit/file-dropzone/files.d.ts +14 -0
  72. package/dist/components/kit/file-dropzone/files.js +69 -0
  73. package/dist/components/kit/file-dropzone.svelte +253 -0
  74. package/dist/components/kit/file-dropzone.svelte.d.ts +25 -0
  75. package/dist/components/kit/form.svelte +335 -0
  76. package/dist/components/kit/form.svelte.d.ts +61 -0
  77. package/dist/components/kit/input.svelte +73 -0
  78. package/dist/components/kit/input.svelte.d.ts +9 -0
  79. package/dist/components/kit/menu.svelte +163 -0
  80. package/dist/components/kit/menu.svelte.d.ts +28 -0
  81. package/dist/components/kit/pagination.svelte +134 -0
  82. package/dist/components/kit/pagination.svelte.d.ts +17 -0
  83. package/dist/components/kit/radio-list.svelte +131 -0
  84. package/dist/components/kit/radio-list.svelte.d.ts +15 -0
  85. package/dist/components/kit/segmented-control/segment.svelte +47 -0
  86. package/dist/components/kit/segmented-control/segment.svelte.d.ts +11 -0
  87. package/dist/components/kit/segmented-control.svelte +70 -0
  88. package/dist/components/kit/segmented-control.svelte.d.ts +16 -0
  89. package/dist/components/kit/select.svelte +244 -0
  90. package/dist/components/kit/select.svelte.d.ts +26 -0
  91. package/dist/components/kit/status-badge.svelte +54 -0
  92. package/dist/components/kit/status-badge.svelte.d.ts +31 -0
  93. package/dist/components/kit/switch.svelte +84 -0
  94. package/dist/components/kit/switch.svelte.d.ts +8 -0
  95. package/dist/components/kit/tabs.svelte +86 -0
  96. package/dist/components/kit/tabs.svelte.d.ts +20 -0
  97. package/dist/components/kit/textarea.svelte +92 -0
  98. package/dist/components/kit/textarea.svelte.d.ts +11 -0
  99. package/dist/components/ui/drawer/drawer-content.svelte +1 -1
  100. package/dist/components/ui/input-group/input-group-input.svelte.d.ts +1 -1
  101. package/dist/components/ui/sidebar/sidebar-input.svelte.d.ts +1 -1
  102. package/dist/components/ui/sonner/sonner.svelte +2 -4
  103. package/dist/mcp-content.json +1 -1
  104. package/dist/mcp.js +11 -11
  105. package/dist/server/hooks.d.ts +9 -0
  106. package/dist/server/hooks.js +41 -0
  107. package/dist/server/logger.d.ts +39 -0
  108. package/dist/server/logger.js +144 -0
  109. package/dist/server/telemetry.d.ts +23 -0
  110. package/dist/server/telemetry.js +82 -0
  111. package/dist/theme.css +18 -6
  112. package/package.json +40 -1
@@ -0,0 +1,136 @@
1
+ export function niceStep(span, count) {
2
+ const raw = span / Math.max(1, count);
3
+ const magnitude = 10 ** Math.floor(Math.log10(raw));
4
+ const residual = raw / magnitude;
5
+ if (residual > 5) {
6
+ return 10 * magnitude;
7
+ }
8
+ if (residual > 2) {
9
+ return 5 * magnitude;
10
+ }
11
+ if (residual > 1) {
12
+ return 2 * magnitude;
13
+ }
14
+ return magnitude;
15
+ }
16
+ export function niceTicks(minimum, maximum, count) {
17
+ const low = Math.min(0, minimum);
18
+ const high = Math.max(0, maximum) === low ? low + 1 : Math.max(0, maximum);
19
+ const step = niceStep(high - low, count);
20
+ const decimals = Math.max(0, -Math.floor(Math.log10(step)));
21
+ const first = Math.floor(low / step);
22
+ const last = Math.ceil(high / step);
23
+ const ticks = [];
24
+ for (let index = first; index <= last; index++) {
25
+ ticks.push(Number((index * step).toFixed(decimals)));
26
+ }
27
+ return ticks;
28
+ }
29
+ export function scaleLinear(domain, range) {
30
+ const [domainStart, domainEnd] = domain;
31
+ const [rangeStart, rangeEnd] = range;
32
+ const span = domainEnd - domainStart;
33
+ return (value) => span === 0
34
+ ? (rangeStart + rangeEnd) / 2
35
+ : rangeStart + ((value - domainStart) / span) * (rangeEnd - rangeStart);
36
+ }
37
+ export function columnsOf(series) {
38
+ const times = new Set();
39
+ for (const entry of series) {
40
+ for (const point of entry.points) {
41
+ times.add(point.at.getTime());
42
+ }
43
+ }
44
+ return [...times].sort((first, second) => first - second);
45
+ }
46
+ export function valueMap(series) {
47
+ return new Map(series.points.map((point) => [point.at.getTime(), point.value]));
48
+ }
49
+ export function valueExtent(series) {
50
+ let minimum = Infinity;
51
+ let maximum = -Infinity;
52
+ for (const entry of series) {
53
+ for (const point of entry.points) {
54
+ if (point.value !== null && Number.isFinite(point.value)) {
55
+ minimum = Math.min(minimum, point.value);
56
+ maximum = Math.max(maximum, point.value);
57
+ }
58
+ }
59
+ }
60
+ return minimum === Infinity ? null : [minimum, maximum];
61
+ }
62
+ export function segmentsOf(points) {
63
+ const sorted = [...points].sort((first, second) => first.at.getTime() - second.at.getTime());
64
+ const segments = [];
65
+ let current = [];
66
+ for (const point of sorted) {
67
+ if (point.value === null || !Number.isFinite(point.value)) {
68
+ if (current.length) {
69
+ segments.push(current);
70
+ }
71
+ current = [];
72
+ }
73
+ else {
74
+ current.push(point);
75
+ }
76
+ }
77
+ if (current.length) {
78
+ segments.push(current);
79
+ }
80
+ return segments;
81
+ }
82
+ export function nearestIndex(times, target) {
83
+ let low = 0;
84
+ let high = times.length - 1;
85
+ while (high - low > 1) {
86
+ const middle = Math.floor((low + high) / 2);
87
+ if ((times[middle] ?? 0) <= target) {
88
+ low = middle;
89
+ }
90
+ else {
91
+ high = middle;
92
+ }
93
+ }
94
+ const lowDistance = Math.abs(target - (times[low] ?? 0));
95
+ const highDistance = Math.abs((times[high] ?? 0) - target);
96
+ return highDistance < lowDistance ? high : low;
97
+ }
98
+ export function medianSpacing(times) {
99
+ const gaps = times
100
+ .slice(1)
101
+ .map((time, index) => time - (times[index] ?? time))
102
+ .sort((first, second) => first - second);
103
+ return gaps[Math.floor(gaps.length / 2)] ?? 0;
104
+ }
105
+ export function linePath(positions) {
106
+ return positions
107
+ .map((position, index) => `${index ? "L" : "M"}${position.x.toFixed(1)},${position.y.toFixed(1)}`)
108
+ .join("");
109
+ }
110
+ export function areaPath(positions, baseline) {
111
+ const first = positions[0];
112
+ const last = positions.at(-1);
113
+ if (!first || !last) {
114
+ return "";
115
+ }
116
+ return `${linePath(positions)}L${last.x.toFixed(1)},${baseline.toFixed(1)}L${first.x.toFixed(1)},${baseline.toFixed(1)}Z`;
117
+ }
118
+ export function barPath(left, width, top, baseline) {
119
+ const height = Math.abs(baseline - top);
120
+ if (height < 0.5 || width <= 0) {
121
+ return "";
122
+ }
123
+ const radius = Math.min(4, width / 2, height);
124
+ const right = left + width;
125
+ const direction = top <= baseline ? 1 : -1;
126
+ const sweep = direction === 1 ? 1 : 0;
127
+ const corner = top + direction * radius;
128
+ return [
129
+ `M${left},${baseline}`,
130
+ `V${corner}`,
131
+ `A${radius},${radius} 0 0 ${sweep} ${left + radius},${top}`,
132
+ `H${right - radius}`,
133
+ `A${radius},${radius} 0 0 ${sweep} ${right},${corner}`,
134
+ `V${baseline}Z`,
135
+ ].join("");
136
+ }
@@ -0,0 +1,7 @@
1
+ export type TimeUnit = "minute" | "hour" | "day" | "month" | "year";
2
+ export declare function timeTicks(start: Date, end: Date, maximum: number): {
3
+ ticks: Date[];
4
+ unit: TimeUnit;
5
+ };
6
+ export declare function formatTick(date: Date, unit: TimeUnit): string;
7
+ export declare function formatInstant(date: Date, spacing: number): string;
@@ -0,0 +1,96 @@
1
+ const minute = 60_000;
2
+ const hour = 60 * minute;
3
+ const day = 24 * hour;
4
+ const intervals = [
5
+ { unit: "minute", step: 1, length: minute },
6
+ { unit: "minute", step: 5, length: 5 * minute },
7
+ { unit: "minute", step: 15, length: 15 * minute },
8
+ { unit: "minute", step: 30, length: 30 * minute },
9
+ { unit: "hour", step: 1, length: hour },
10
+ { unit: "hour", step: 3, length: 3 * hour },
11
+ { unit: "hour", step: 6, length: 6 * hour },
12
+ { unit: "hour", step: 12, length: 12 * hour },
13
+ { unit: "day", step: 1, length: day },
14
+ { unit: "day", step: 2, length: 2 * day },
15
+ { unit: "day", step: 7, length: 7 * day },
16
+ { unit: "day", step: 14, length: 14 * day },
17
+ { unit: "month", step: 1, length: 30 * day },
18
+ { unit: "month", step: 3, length: 91 * day },
19
+ { unit: "month", step: 6, length: 182 * day },
20
+ { unit: "year", step: 1, length: 365 * day },
21
+ { unit: "year", step: 2, length: 730 * day },
22
+ { unit: "year", step: 5, length: 1826 * day },
23
+ { unit: "year", step: 10, length: 3652 * day },
24
+ ];
25
+ function floorTo(date, unit, step) {
26
+ const result = new Date(date);
27
+ if (unit === "minute") {
28
+ result.setMinutes(Math.floor(result.getMinutes() / step) * step, 0, 0);
29
+ return result;
30
+ }
31
+ if (unit === "hour") {
32
+ result.setHours(Math.floor(result.getHours() / step) * step, 0, 0, 0);
33
+ return result;
34
+ }
35
+ result.setHours(0, 0, 0, 0);
36
+ if (unit === "month") {
37
+ result.setMonth(Math.floor(result.getMonth() / step) * step, 1);
38
+ }
39
+ if (unit === "year") {
40
+ result.setFullYear(Math.floor(result.getFullYear() / step) * step, 0, 1);
41
+ }
42
+ return result;
43
+ }
44
+ function advance(date, unit, step) {
45
+ const result = new Date(date);
46
+ if (unit === "minute") {
47
+ result.setMinutes(result.getMinutes() + step);
48
+ }
49
+ else if (unit === "hour") {
50
+ result.setHours(result.getHours() + step);
51
+ }
52
+ else if (unit === "day") {
53
+ result.setDate(result.getDate() + step);
54
+ }
55
+ else if (unit === "month") {
56
+ result.setMonth(result.getMonth() + step);
57
+ }
58
+ else {
59
+ result.setFullYear(result.getFullYear() + step);
60
+ }
61
+ return result;
62
+ }
63
+ export function timeTicks(start, end, maximum) {
64
+ const span = Math.max(0, end.getTime() - start.getTime());
65
+ const { unit, step } = intervals.find((candidate) => span / candidate.length <= maximum) ?? { unit: "year", step: Math.ceil(span / (365 * day) / maximum) };
66
+ const ticks = [];
67
+ let tick = floorTo(start, unit, step);
68
+ while (tick.getTime() <= end.getTime() && ticks.length <= maximum + 2) {
69
+ if (tick.getTime() >= start.getTime()) {
70
+ ticks.push(tick);
71
+ }
72
+ tick = advance(tick, unit, step);
73
+ }
74
+ return { ticks, unit };
75
+ }
76
+ export function formatTick(date, unit) {
77
+ const midnight = date.getHours() === 0 && date.getMinutes() === 0 && unit !== "minute";
78
+ const options = unit === "year"
79
+ ? { year: "numeric" }
80
+ : unit === "month"
81
+ ? date.getMonth() === 0
82
+ ? { month: "short", year: "numeric" }
83
+ : { month: "short" }
84
+ : unit === "day" || midnight
85
+ ? { day: "numeric", month: "short" }
86
+ : { hour: "numeric", minute: "2-digit" };
87
+ return new Intl.DateTimeFormat(undefined, options).format(date);
88
+ }
89
+ export function formatInstant(date, spacing) {
90
+ const options = spacing > 0 && spacing < day
91
+ ? { day: "numeric", month: "short", hour: "numeric", minute: "2-digit" }
92
+ : spacing >= 28 * day
93
+ ? { month: "long", year: "numeric" }
94
+ : { weekday: "short", day: "numeric", month: "short", year: "numeric" };
95
+ return new Intl.DateTimeFormat(undefined, options).format(date);
96
+ }