panelui-native 0.28.1 → 0.32.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 (121) hide show
  1. package/README.md +22 -3
  2. package/lib/module/components/calendar/index.js +450 -132
  3. package/lib/module/components/calendar/index.js.map +1 -1
  4. package/lib/module/components/code-block/highlight.js +363 -0
  5. package/lib/module/components/code-block/highlight.js.map +1 -0
  6. package/lib/module/components/code-block/index.js +313 -0
  7. package/lib/module/components/code-block/index.js.map +1 -0
  8. package/lib/module/components/date-picker/index.js +8 -1
  9. package/lib/module/components/date-picker/index.js.map +1 -1
  10. package/lib/module/components/heatmap-chart/index.js +9 -8
  11. package/lib/module/components/heatmap-chart/index.js.map +1 -1
  12. package/lib/module/components/map/index.js +50 -4
  13. package/lib/module/components/map/index.js.map +1 -1
  14. package/lib/module/components/menu/index.js +714 -0
  15. package/lib/module/components/menu/index.js.map +1 -0
  16. package/lib/module/components/plan/index.js +582 -0
  17. package/lib/module/components/plan/index.js.map +1 -0
  18. package/lib/module/components/popover/index.js +35 -4
  19. package/lib/module/components/popover/index.js.map +1 -1
  20. package/lib/module/components/post/index.js +992 -0
  21. package/lib/module/components/post/index.js.map +1 -0
  22. package/lib/module/components/radio-group/index.js +13 -8
  23. package/lib/module/components/radio-group/index.js.map +1 -1
  24. package/lib/module/components/reasoning/index.js +244 -0
  25. package/lib/module/components/reasoning/index.js.map +1 -0
  26. package/lib/module/components/response/index.js +296 -0
  27. package/lib/module/components/response/index.js.map +1 -0
  28. package/lib/module/components/response/markdown.js +463 -0
  29. package/lib/module/components/response/markdown.js.map +1 -0
  30. package/lib/module/components/select/index.js +97 -15
  31. package/lib/module/components/select/index.js.map +1 -1
  32. package/lib/module/components/sources/index.js +221 -0
  33. package/lib/module/components/sources/index.js.map +1 -0
  34. package/lib/module/components/table/index.js +632 -0
  35. package/lib/module/components/table/index.js.map +1 -0
  36. package/lib/module/components/task/index.js +300 -0
  37. package/lib/module/components/task/index.js.map +1 -0
  38. package/lib/module/components/textarea/index.js +295 -0
  39. package/lib/module/components/textarea/index.js.map +1 -0
  40. package/lib/module/components/tooltip/index.js +179 -23
  41. package/lib/module/components/tooltip/index.js.map +1 -1
  42. package/lib/module/icons/index.js +339 -0
  43. package/lib/module/icons/index.js.map +1 -1
  44. package/lib/module/index.js +12 -1
  45. package/lib/module/index.js.map +1 -1
  46. package/lib/module/primitives/collapse.js +112 -0
  47. package/lib/module/primitives/collapse.js.map +1 -0
  48. package/lib/module/utils/date.js +129 -22
  49. package/lib/module/utils/date.js.map +1 -1
  50. package/lib/typescript/src/components/calendar/index.d.ts +79 -5
  51. package/lib/typescript/src/components/calendar/index.d.ts.map +1 -1
  52. package/lib/typescript/src/components/code-block/highlight.d.ts +39 -0
  53. package/lib/typescript/src/components/code-block/highlight.d.ts.map +1 -0
  54. package/lib/typescript/src/components/code-block/index.d.ts +113 -0
  55. package/lib/typescript/src/components/code-block/index.d.ts.map +1 -0
  56. package/lib/typescript/src/components/date-picker/index.d.ts +7 -1
  57. package/lib/typescript/src/components/date-picker/index.d.ts.map +1 -1
  58. package/lib/typescript/src/components/heatmap-chart/index.d.ts.map +1 -1
  59. package/lib/typescript/src/components/map/index.d.ts +8 -1
  60. package/lib/typescript/src/components/map/index.d.ts.map +1 -1
  61. package/lib/typescript/src/components/menu/index.d.ts +261 -0
  62. package/lib/typescript/src/components/menu/index.d.ts.map +1 -0
  63. package/lib/typescript/src/components/plan/index.d.ts +238 -0
  64. package/lib/typescript/src/components/plan/index.d.ts.map +1 -0
  65. package/lib/typescript/src/components/popover/index.d.ts +35 -1
  66. package/lib/typescript/src/components/popover/index.d.ts.map +1 -1
  67. package/lib/typescript/src/components/post/index.d.ts +358 -0
  68. package/lib/typescript/src/components/post/index.d.ts.map +1 -0
  69. package/lib/typescript/src/components/radio-group/index.d.ts.map +1 -1
  70. package/lib/typescript/src/components/reasoning/index.d.ts +97 -0
  71. package/lib/typescript/src/components/reasoning/index.d.ts.map +1 -0
  72. package/lib/typescript/src/components/response/index.d.ts +91 -0
  73. package/lib/typescript/src/components/response/index.d.ts.map +1 -0
  74. package/lib/typescript/src/components/response/markdown.d.ts +88 -0
  75. package/lib/typescript/src/components/response/markdown.d.ts.map +1 -0
  76. package/lib/typescript/src/components/select/index.d.ts +27 -2
  77. package/lib/typescript/src/components/select/index.d.ts.map +1 -1
  78. package/lib/typescript/src/components/sources/index.d.ts +85 -0
  79. package/lib/typescript/src/components/sources/index.d.ts.map +1 -0
  80. package/lib/typescript/src/components/table/index.d.ts +274 -0
  81. package/lib/typescript/src/components/table/index.d.ts.map +1 -0
  82. package/lib/typescript/src/components/task/index.d.ts +103 -0
  83. package/lib/typescript/src/components/task/index.d.ts.map +1 -0
  84. package/lib/typescript/src/components/textarea/index.d.ts +175 -0
  85. package/lib/typescript/src/components/textarea/index.d.ts.map +1 -0
  86. package/lib/typescript/src/components/tooltip/index.d.ts +63 -8
  87. package/lib/typescript/src/components/tooltip/index.d.ts.map +1 -1
  88. package/lib/typescript/src/icons/index.d.ts +54 -1
  89. package/lib/typescript/src/icons/index.d.ts.map +1 -1
  90. package/lib/typescript/src/index.d.ts +14 -3
  91. package/lib/typescript/src/index.d.ts.map +1 -1
  92. package/lib/typescript/src/primitives/collapse.d.ts +42 -0
  93. package/lib/typescript/src/primitives/collapse.d.ts.map +1 -0
  94. package/lib/typescript/src/utils/date.d.ts +49 -5
  95. package/lib/typescript/src/utils/date.d.ts.map +1 -1
  96. package/package.json +1 -1
  97. package/src/components/calendar/index.tsx +519 -139
  98. package/src/components/code-block/highlight.ts +278 -0
  99. package/src/components/code-block/index.tsx +341 -0
  100. package/src/components/date-picker/index.tsx +19 -1
  101. package/src/components/heatmap-chart/index.tsx +9 -9
  102. package/src/components/map/index.tsx +53 -4
  103. package/src/components/menu/index.tsx +812 -0
  104. package/src/components/plan/index.tsx +648 -0
  105. package/src/components/popover/index.tsx +69 -2
  106. package/src/components/post/index.tsx +1116 -0
  107. package/src/components/radio-group/index.tsx +11 -2
  108. package/src/components/reasoning/index.tsx +297 -0
  109. package/src/components/response/index.tsx +390 -0
  110. package/src/components/response/markdown.ts +489 -0
  111. package/src/components/select/index.tsx +132 -12
  112. package/src/components/sources/index.tsx +278 -0
  113. package/src/components/table/index.tsx +747 -0
  114. package/src/components/task/index.tsx +329 -0
  115. package/src/components/textarea/index.tsx +381 -0
  116. package/src/components/tooltip/index.tsx +203 -20
  117. package/src/icons/index.tsx +264 -1
  118. package/src/index.ts +131 -0
  119. package/src/primitives/collapse.tsx +128 -0
  120. package/src/utils/date.ts +146 -22
  121. package/theme.css +112 -0
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Collapse — a body that opens and closes by animating its own height.
5
+ *
6
+ * Height cannot be animated from `auto`, so the content is measured first and
7
+ * the measurement is what gets animated to. While that is happening the content
8
+ * is taken out of the flow, because a child of a view whose height is
9
+ * mid-animation reports that animated height back and the panel then settles on
10
+ * whatever it happened to measure.
11
+ *
12
+ * The moment the animation finishes, both go away and the content lays out
13
+ * normally again. That is what lets a Collapse hold another Collapse — or hold
14
+ * content that is still streaming in — without either of them being clipped to
15
+ * a number that was true a frame ago.
16
+ *
17
+ * ```tsx
18
+ * <Collapse open={open}>
19
+ * <Text>Anything, of any height.</Text>
20
+ * </Collapse>
21
+ * ```
22
+ *
23
+ * The alternative — unmounting the body and letting a layout transition on the
24
+ * parent carry the change — is what `Accordion` does, and it is right when the
25
+ * closed state should cost nothing. This is for a body that opens and closes
26
+ * repeatedly and often while its content is still arriving, where remounting
27
+ * would throw away scroll position and restart every animation inside it.
28
+ */
29
+ import { useEffect, useRef, useState } from 'react';
30
+ import { View } from 'react-native';
31
+ import Animated, { runOnJS, useAnimatedStyle, useReducedMotion, useSharedValue, withTiming } from 'react-native-reanimated';
32
+ import { cn } from "../utils/cn.js";
33
+
34
+ /** Long enough to read as the panel opening, short enough not to be waited on. */
35
+ import { jsx as _jsx } from "react/jsx-runtime";
36
+ export const COLLAPSE_DURATION = 200;
37
+ export function Collapse({
38
+ open,
39
+ className,
40
+ duration = COLLAPSE_DURATION,
41
+ children,
42
+ ...props
43
+ }) {
44
+ const reducedMotion = useReducedMotion();
45
+ const [height, setHeight] = useState(0);
46
+ const [animating, setAnimating] = useState(false);
47
+ const progress = useSharedValue(open ? 1 : 0);
48
+ const mounted = useRef(false);
49
+ useEffect(() => {
50
+ // The first pass is not a transition — a body that starts open should be
51
+ // open, not play its own entrance at nobody.
52
+ if (!mounted.current) {
53
+ mounted.current = true;
54
+ progress.value = open ? 1 : 0;
55
+ return;
56
+ }
57
+ if (reducedMotion) {
58
+ progress.value = open ? 1 : 0;
59
+ setAnimating(false);
60
+ return;
61
+ }
62
+ setAnimating(true);
63
+ progress.value = withTiming(open ? 1 : 0, {
64
+ duration
65
+ }, finished => {
66
+ if (finished) runOnJS(setAnimating)(false);
67
+ });
68
+ }, [open, reducedMotion, duration, progress]);
69
+ const style = useAnimatedStyle(() => ({
70
+ height: progress.value * height,
71
+ opacity: progress.value
72
+ }));
73
+
74
+ // Re-measured rather than measured once: a body whose content is still
75
+ // streaming in grows, and a height captured on the first frame would crop it.
76
+ const onLayout = event => {
77
+ const next = event.nativeEvent.layout.height;
78
+ setHeight(current => Math.abs(current - next) < 1 ? current : next);
79
+ };
80
+
81
+ /*
82
+ * Once it has finished opening, the measured height and the absolute
83
+ * positioning are both dropped and the content lays out normally.
84
+ *
85
+ * They are only needed *while* the height is being animated to a number, and
86
+ * keeping them costs real bugs: a Collapse whose content is itself a Collapse
87
+ * measures a child that has not settled yet, and settles on that wrong
88
+ * number, so the inner body ends up clipped to nothing. Content that is still
89
+ * streaming in has the same problem against itself. In natural flow both are
90
+ * simply laid out, and the measurement carries on in the background against
91
+ * the next time it closes.
92
+ */
93
+ const natural = open && !animating;
94
+ return /*#__PURE__*/_jsx(Animated.View, {
95
+ style: natural ? undefined : style,
96
+ className: natural ? undefined : 'overflow-hidden',
97
+ children: /*#__PURE__*/_jsx(View, {
98
+ onLayout: onLayout,
99
+ style: natural ? undefined : {
100
+ position: 'absolute',
101
+ left: 0,
102
+ right: 0,
103
+ top: 0
104
+ },
105
+ className: cn(className),
106
+ ...props,
107
+ children: children
108
+ })
109
+ });
110
+ }
111
+ Collapse.displayName = 'Collapse';
112
+ //# sourceMappingURL=collapse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","useState","View","Animated","runOnJS","useAnimatedStyle","useReducedMotion","useSharedValue","withTiming","cn","jsx","_jsx","COLLAPSE_DURATION","Collapse","open","className","duration","children","props","reducedMotion","height","setHeight","animating","setAnimating","progress","mounted","current","value","finished","style","opacity","onLayout","event","next","nativeEvent","layout","Math","abs","natural","undefined","position","left","right","top","displayName"],"sourceRoot":"../../../src","sources":["primitives/collapse.tsx"],"mappings":"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","ignoreList":[]}
@@ -14,6 +14,18 @@
14
14
  * comparison here goes through `startOfDay`.
15
15
  * - **Month arithmetic is done with `setMonth`, not by adding days.** The
16
16
  * platform already knows that a month is 28, 29, 30 or 31 days long.
17
+ *
18
+ * Three more that are easy to lose and expensive to get back:
19
+ *
20
+ * - **Days are stepped with `setDate`, never with milliseconds.** Adding
21
+ * `n * 86400000` is wrong by an hour on the two days a year the clocks move,
22
+ * which is enough to land the wrong side of midnight and shift a whole grid.
23
+ * - **A month is normalised to the 1st before months are added.** `setMonth`
24
+ * on the 31st of a month whose neighbour is shorter overflows into the month
25
+ * after next — January 31st plus one month is March 3rd.
26
+ * - **Nothing is ever parsed back out of formatted text.** `Intl` is asked for
27
+ * the *parts* and the numbers are read from those, because the order and the
28
+ * separators belong to the locale and only the numbers are ours.
17
29
  */
18
30
 
19
31
  /** Names of the weekdays and months, in the caller's locale. */
@@ -51,12 +63,6 @@ export function addDays(date, days) {
51
63
  copy.setDate(copy.getDate() + days);
52
64
  return copy;
53
65
  }
54
-
55
- /** Whole days from `a` to `b`, ignoring the time of day on both. */
56
- export function daysBetween(a, b) {
57
- const MS = 24 * 60 * 60 * 1000;
58
- return Math.round((startOfDay(b).getTime() - startOfDay(a).getTime()) / MS);
59
- }
60
66
  export function isBefore(a, b) {
61
67
  return startOfDay(a).getTime() < startOfDay(b).getTime();
62
68
  }
@@ -71,12 +77,57 @@ export function isWithin(date, from, to) {
71
77
  const end = startOfDay(to).getTime();
72
78
  return time >= Math.min(start, end) && time <= Math.max(start, end);
73
79
  }
80
+
81
+ /**
82
+ * `date` pulled inside `min`..`max`, at day resolution.
83
+ *
84
+ * The bound is returned at its own start of day rather than as given, so a
85
+ * `maxDate` that happens to carry a time of 17:30 does not hand back a value
86
+ * that then compares as *after* the last selectable day.
87
+ */
74
88
  export function clampDate(date, min, max) {
75
- if (min && isBefore(date, min)) return min;
76
- if (max && isAfter(date, max)) return max;
89
+ if (min && isBefore(date, min)) return startOfDay(min);
90
+ if (max && isAfter(date, max)) return startOfDay(max);
77
91
  return date;
78
92
  }
79
93
 
94
+ /**
95
+ * A first-day-of-week index made safe.
96
+ *
97
+ * `weekStartsOn` arrives from a caller and reaches an array index by way of
98
+ * `(day + weekStartsOn) % 7`, where a negative or out-of-range value yields a
99
+ * negative index and an `undefined` weekday name. Both directions wrap.
100
+ */
101
+ export function normalizeWeekStart(weekStartsOn) {
102
+ if (!Number.isFinite(weekStartsOn)) return 0;
103
+ return (Math.trunc(weekStartsOn) % 7 + 7) % 7;
104
+ }
105
+
106
+ /**
107
+ * The day the week starts on where this locale is spoken, as `Date.getDay()`
108
+ * counts it — 0 for Sunday.
109
+ *
110
+ * Sunday is a poor default outside North America and a handful of other
111
+ * regions, but it is the one the platform gives us when it knows nothing. Where
112
+ * `Intl` carries week data, ask it: `en-GB` and `fr-FR` start on Monday, and a
113
+ * calendar that says otherwise is wrong in a way its reader notices immediately.
114
+ */
115
+ export function localeWeekStart(locale) {
116
+ try {
117
+ const tag = (locale ?? 'en').split('-u-')[0] || 'en';
118
+ const resolved = new Intl.Locale(tag);
119
+ // Proposed as a method and shipped as a property first; both are in the
120
+ // wild, and neither is guaranteed to be there at all.
121
+ const info = resolved.getWeekInfo?.() ?? resolved.weekInfo;
122
+ const first = info?.firstDay;
123
+ // `Intl` counts 1 = Monday … 7 = Sunday; `Date.getDay()` counts 0 = Sunday.
124
+ if (typeof first === 'number' && Number.isFinite(first)) return first % 7;
125
+ } catch {
126
+ // No week data in this build.
127
+ }
128
+ return 0;
129
+ }
130
+
80
131
  /**
81
132
  * The six-week grid for a month.
82
133
  *
@@ -87,12 +138,15 @@ export function clampDate(date, min, max) {
87
138
  *
88
139
  * The leading and trailing cells belong to the neighbouring months; whether
89
140
  * they are drawn or left blank is the caller's decision.
141
+ *
142
+ * `system` and `locale` are what make this work for a Hijri grid, where the
143
+ * month it has to open on is not the Gregorian 1st.
90
144
  */
91
- export function monthGrid(month, weekStartsOn) {
92
- const first = startOfMonth(month);
145
+ export function monthGrid(month, weekStartsOn, system = 'gregory', locale) {
146
+ const first = startOfCalendarMonth(month, system, locale);
93
147
  // How far back to the most recent `weekStartsOn`. The `+ 7` keeps the
94
148
  // modulo positive when the week starts later than the first of the month.
95
- const lead = (first.getDay() - weekStartsOn + 7) % 7;
149
+ const lead = (first.getDay() - normalizeWeekStart(weekStartsOn) + 7) % 7;
96
150
  const start = addDays(first, -lead);
97
151
  return Array.from({
98
152
  length: 6
@@ -109,10 +163,39 @@ export function monthGrid(month, weekStartsOn) {
109
163
  * locales they do not carry. Every formatter here falls back to English rather
110
164
  * than taking the screen down over a month name.
111
165
  */
166
+ /**
167
+ * Formatters, kept.
168
+ *
169
+ * Building an `Intl.DateTimeFormat` is the expensive part of formatting, and a
170
+ * Hijri grid asks for one per cell twice over — once to decide which month the
171
+ * cell belongs to and once for the number in it — which is 84 constructions a
172
+ * render before anyone touches the year dropdown, where a century jump used to
173
+ * cost tens of thousands. The set of shapes asked for is tiny and fixed, so it
174
+ * is cached for the life of the process. A failure is cached too: a build with
175
+ * no data for a locale will not acquire any by being asked again.
176
+ */
177
+ const formatters = new Map();
178
+ function formatter(locale, options) {
179
+ // Sorted, so two call sites writing the same options in a different order
180
+ // share one entry rather than building two.
181
+ const shape = Object.keys(options).sort().map(key => `${key}=${String(options[key])}`).join(',');
182
+ const key = `${locale ?? ''}|${shape}`;
183
+ if (formatters.has(key)) return formatters.get(key) ?? null;
184
+ let made = null;
185
+ try {
186
+ made = new Intl.DateTimeFormat(locale, options);
187
+ } catch {
188
+ made = null;
189
+ }
190
+ formatters.set(key, made);
191
+ return made;
192
+ }
112
193
  function format(date, locale, options) {
113
194
  try {
114
- return new Intl.DateTimeFormat(locale, options).format(date);
195
+ return formatter(locale, options)?.format(date) ?? null;
115
196
  } catch {
197
+ // Constructing succeeded and formatting still failed — some builds only
198
+ // discover a missing calendar at format time.
116
199
  return null;
117
200
  }
118
201
  }
@@ -171,7 +254,7 @@ function formatGregory(date, locale, options) {
171
254
  export function resolveCalendar(system, locale) {
172
255
  if (system !== 'auto') return system;
173
256
  try {
174
- const resolved = new Intl.DateTimeFormat(locale).resolvedOptions().calendar ?? '';
257
+ const resolved = formatter(locale, {})?.resolvedOptions().calendar ?? '';
175
258
  return resolved.startsWith('islamic') ? 'islamic' : 'gregory';
176
259
  } catch {
177
260
  return 'gregory';
@@ -196,11 +279,12 @@ export function calendarParts(date, system, locale) {
196
279
  };
197
280
  }
198
281
  try {
199
- const parts = new Intl.DateTimeFormat(withCalendar(locale, 'islamic'), {
282
+ const parts = formatter(withCalendar(locale, 'islamic'), {
200
283
  year: 'numeric',
201
284
  month: 'numeric',
202
285
  day: 'numeric'
203
- }).formatToParts(date);
286
+ })?.formatToParts(date);
287
+ if (!parts) throw new Error('unusable');
204
288
  const read = type => Number(parts.find(part => part.type === type)?.value);
205
289
  const year = read('year');
206
290
  const month = read('month');
@@ -230,20 +314,37 @@ export function isSameCalendarMonth(a, b, system, locale) {
230
314
  return one.year === two.year && one.month === two.month;
231
315
  }
232
316
 
317
+ /** Whether two days fall in the same year and month of the given calendar. */
318
+ function sameCalendarMonthParts(a, b) {
319
+ return a.year === b.year && a.month === b.month;
320
+ }
321
+
233
322
  /**
234
323
  * The first day of the calendar month `date` falls in.
235
324
  *
236
325
  * Walked back a day at a time rather than computed. A Hijri month is 29 or 30
237
326
  * days depending on the year, and the platform's own calendar data already
238
- * knows which — stepping until the day number reads 1 asks it, instead of
239
- * shipping a table that will disagree with the device.
327
+ * knows which — asking it is better than shipping a table that will disagree
328
+ * with the device.
329
+ *
330
+ * The walk stops where the *month number changes*, not where the day number
331
+ * reads 1. The observational Islamic calendars the platforms ship do not always
332
+ * label a day 1: in 1450 AH, month 11 day 30 is followed directly by month 12
333
+ * day 2. Hunting for a day 1 that is never emitted walked the cursor off the
334
+ * end of its budget and then paged the calendar to the same month forever.
240
335
  */
241
336
  export function startOfCalendarMonth(date, system, locale) {
242
337
  if (system === 'gregory') return startOfMonth(date);
243
338
  let cursor = startOfDay(date);
244
- for (let step = 0; step < 31; step += 1) {
245
- if (calendarParts(cursor, system, locale).day === 1) return cursor;
246
- cursor = addDays(cursor, -1);
339
+ const target = calendarParts(cursor, system, locale);
340
+ // 32, not 31: one step more than the longest month, so the loop is bounded
341
+ // by a real answer rather than by running out.
342
+ for (let step = 0; step < 32; step += 1) {
343
+ const previous = addDays(cursor, -1);
344
+ if (!sameCalendarMonthParts(calendarParts(previous, system, locale), target)) {
345
+ return cursor;
346
+ }
347
+ cursor = previous;
247
348
  }
248
349
  return cursor;
249
350
  }
@@ -252,8 +353,13 @@ export function startOfCalendarMonth(date, system, locale) {
252
353
  export function daysInCalendarMonth(date, system, locale) {
253
354
  if (system === 'gregory') return endOfMonth(date).getDate();
254
355
  const start = startOfCalendarMonth(date, system, locale);
356
+ const parts = calendarParts(start, system, locale);
357
+ // The first offset that lands outside this month is its length, whatever the
358
+ // day numbers along the way are called.
255
359
  for (let length = 28; length <= 31; length += 1) {
256
- if (calendarParts(addDays(start, length), system, locale).day === 1) return length;
360
+ if (!sameCalendarMonthParts(calendarParts(addDays(start, length), system, locale), parts)) {
361
+ return length;
362
+ }
257
363
  }
258
364
  return 30;
259
365
  }
@@ -345,11 +451,12 @@ export function monthNames(locale, style = 'long') {
345
451
 
346
452
  /** Column headings, rotated so the first one is `weekStartsOn`. */
347
453
  export function weekdayNames(locale, weekStartsOn) {
454
+ const first = normalizeWeekStart(weekStartsOn);
348
455
  // 2021-08-01 was a Sunday, so adding the index lands on each weekday in turn.
349
456
  return Array.from({
350
457
  length: 7
351
458
  }, (_unused, day) => {
352
- const index = (day + weekStartsOn) % 7;
459
+ const index = (day + first) % 7;
353
460
  const formatted = formatGregory(new Date(2021, 7, 1 + index), locale, {
354
461
  weekday: 'short'
355
462
  });
@@ -1 +1 @@
1
- {"version":3,"names":["startOfDay","date","copy","Date","setHours","isSameDay","a","b","getFullYear","getMonth","getDate","isSameMonth","startOfMonth","endOfMonth","addMonths","months","setMonth","addDays","days","setDate","daysBetween","MS","Math","round","getTime","isBefore","isAfter","isWithin","from","to","time","start","end","min","max","clampDate","monthGrid","month","weekStartsOn","first","lead","getDay","Array","length","_unusedWeek","week","_unusedDay","day","format","locale","options","Intl","DateTimeFormat","withCalendar","calendar","base","split","formatGregory","numberingSystem","resolveCalendar","system","resolved","resolvedOptions","startsWith","calendarParts","year","parts","formatToParts","read","type","Number","find","part","value","isFinite","Error","isSameCalendarMonth","one","two","startOfCalendarMonth","cursor","step","daysInCalendarMonth","addCalendarMonths","abs","calendarDayNumber","calendarMonthLabel","monthLabel","calendarMonthNames","reference","style","monthNames","names","push","String","calendarLongDate","longDate","weekday","calendarShortDate","shortDate","MONTHS_EN","WEEKDAYS_EN","map","fallback","formatted","slice","weekdayNames","_unused","index"],"sourceRoot":"../../../src","sources":["utils/date.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["startOfDay","date","copy","Date","setHours","isSameDay","a","b","getFullYear","getMonth","getDate","isSameMonth","startOfMonth","endOfMonth","addMonths","months","setMonth","addDays","days","setDate","isBefore","getTime","isAfter","isWithin","from","to","time","start","end","Math","min","max","clampDate","normalizeWeekStart","weekStartsOn","Number","isFinite","trunc","localeWeekStart","locale","tag","split","resolved","Intl","Locale","info","getWeekInfo","weekInfo","first","firstDay","monthGrid","month","system","startOfCalendarMonth","lead","getDay","Array","length","_unusedWeek","week","_unusedDay","day","formatters","Map","formatter","options","shape","Object","keys","sort","map","key","String","join","has","get","made","DateTimeFormat","set","format","withCalendar","calendar","base","formatGregory","numberingSystem","resolveCalendar","resolvedOptions","startsWith","calendarParts","year","parts","formatToParts","Error","read","type","find","part","value","isSameCalendarMonth","one","two","sameCalendarMonthParts","cursor","target","step","previous","daysInCalendarMonth","addCalendarMonths","abs","calendarDayNumber","calendarMonthLabel","monthLabel","calendarMonthNames","reference","style","monthNames","names","push","calendarLongDate","longDate","weekday","calendarShortDate","shortDate","MONTHS_EN","WEEKDAYS_EN","fallback","formatted","slice","weekdayNames","_unused","index"],"sourceRoot":"../../../src","sources":["utils/date.ts"],"mappings":"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","ignoreList":[]}
@@ -52,10 +52,44 @@ export interface CalendarProps<Mode extends CalendarMode = 'single'> extends Omi
52
52
  minDate?: Date;
53
53
  /** Latest selectable day. */
54
54
  maxDate?: Date;
55
- /** `0` is Sunday. */
56
- weekStartsOn?: number;
55
+ /**
56
+ * Earliest month the caption's pickers offer. Defaults to `minDate`, and to
57
+ * a hundred years back when there is none.
58
+ *
59
+ * Separate from `minDate` because they answer different questions: `minDate`
60
+ * is about which days can be picked, this is about how far the month and year
61
+ * lists reach. A birthday picker wants a century of years on offer and no
62
+ * bound at all on the days inside them.
63
+ */
64
+ startMonth?: Date;
65
+ /** Latest month the caption's pickers offer. Defaults to `maxDate`, else ten years on. */
66
+ endMonth?: Date;
67
+ /**
68
+ * Which day the week's first column is. `0` is Sunday.
69
+ *
70
+ * `auto` asks the locale, which is what most of the world wants — `en-GB` and
71
+ * `fr-FR` start on Monday, and a calendar that says otherwise is wrong in a
72
+ * way its reader notices immediately. It is not the default only because
73
+ * changing an existing calendar's columns out from under it is not something
74
+ * a version bump should do. Out-of-range numbers wrap rather than producing
75
+ * a blank column.
76
+ */
77
+ weekStartsOn?: number | 'auto';
57
78
  /** Draw the neighbouring months' days rather than leaving the cells blank. */
58
79
  showOutsideDays?: boolean;
80
+ /**
81
+ * Let a tap on a neighbouring month's day select it. Off by default: those
82
+ * cells exist to keep the grid six rows tall, and a tap on one is far more
83
+ * often a misfire than an attempt to reach into July from June. Paging to the
84
+ * month is the way to pick a day in it.
85
+ */
86
+ selectOutsideDays?: boolean;
87
+ /**
88
+ * Draw the calendar's own panel — a rounded, bordered card. On by default,
89
+ * for a calendar standing on a page. Turn it off when it is already inside
90
+ * something that draws one, which is what `DatePicker` does.
91
+ */
92
+ bordered?: boolean;
59
93
  /** BCP 47 tag for the month and weekday names. The device's own by default. */
60
94
  locale?: DateLocale;
61
95
  /**
@@ -68,10 +102,42 @@ export interface CalendarProps<Mode extends CalendarMode = 'single'> extends Omi
68
102
  */
69
103
  calendar?: CalendarSystem;
70
104
  }
71
- declare function CalendarRoot<Mode extends CalendarMode = 'single'>({ className, mode, selected, defaultSelected, onSelect, month: monthProp, defaultMonth, onMonthChange, numberOfMonths, captionLayout, disabled, minDate, maxDate, weekStartsOn, showOutsideDays, locale, calendar, ...props }: CalendarProps<Mode>): import("react").JSX.Element;
105
+ declare function CalendarRoot<Mode extends CalendarMode = 'single'>({ className, mode, selected, defaultSelected, onSelect, month: monthProp, defaultMonth, onMonthChange, numberOfMonths, captionLayout, disabled, minDate, maxDate, startMonth, endMonth, weekStartsOn: weekStartsOnProp, showOutsideDays, selectOutsideDays, bordered, locale, calendar, ...props }: CalendarProps<Mode>): import("react").JSX.Element;
72
106
  declare namespace CalendarRoot {
73
107
  var displayName: string;
74
108
  }
109
+ export interface CalendarHeaderProps {
110
+ /** Which month of the run this header sits over. `0` is the first. */
111
+ offset?: number;
112
+ /** The last offset in the run, so the header knows whether it owns the arrow. */
113
+ lastOffset?: number;
114
+ }
115
+ /**
116
+ * The row over a month: an arrow at each edge and the month's name between
117
+ * them.
118
+ *
119
+ * The arrows are pinned to the edges of the calendar rather than packed around
120
+ * the label, so the two targets are as far apart as the panel allows and the
121
+ * name sits centred over its own grid. With several months shown they are split
122
+ * across the run — back on the first, forward on the last — because both sets
123
+ * on both headers would page the whole run and give two ways to do one thing.
124
+ * The month that owns neither still lays out a spacer, or its name would slide
125
+ * off centre.
126
+ */
127
+ declare function CalendarHeader({ offset, lastOffset }: CalendarHeaderProps): import("react").JSX.Element;
128
+ export interface CalendarNavProps {
129
+ direction: 'previous' | 'next';
130
+ disabled?: boolean;
131
+ onPress?: () => void;
132
+ }
133
+ /**
134
+ * One paging arrow.
135
+ *
136
+ * Borderless: two bordered squares at the ends of a bordered panel read as a
137
+ * row of boxes rather than as controls, and the chevron is legible enough on
138
+ * its own. The target is still 32px with another 8 of slop around it.
139
+ */
140
+ declare function CalendarNav({ direction, disabled, onPress }: CalendarNavProps): import("react").JSX.Element;
75
141
  interface GridProps {
76
142
  month: Date;
77
143
  mode: CalendarMode;
@@ -82,25 +148,33 @@ interface GridProps {
82
148
  maxDate?: Date;
83
149
  weekStartsOn: number;
84
150
  showOutsideDays: boolean;
151
+ selectOutsideDays?: boolean;
85
152
  locale: DateLocale;
86
153
  system: 'gregory' | 'islamic';
87
154
  }
88
- declare function CalendarGrid({ month, mode, value, onSelect, disabled, minDate, maxDate, weekStartsOn, showOutsideDays, locale, system, }: GridProps): import("react").JSX.Element;
155
+ declare function CalendarGrid({ month, mode, value, onSelect, disabled, minDate, maxDate, weekStartsOn, showOutsideDays, selectOutsideDays, locale, system, }: GridProps): import("react").JSX.Element;
89
156
  interface DayProps {
90
157
  date: Date;
91
158
  outside: boolean;
92
159
  selected: boolean;
160
+ /** Anywhere inside the range, ends included. */
93
161
  inRange: boolean;
162
+ rangeStart?: boolean;
163
+ rangeEnd?: boolean;
94
164
  today: boolean;
95
165
  disabled: boolean;
166
+ /** The band carries on past this cell's leading edge. */
96
167
  openStart: boolean;
168
+ /** The band carries on past this cell's trailing edge. */
97
169
  openEnd: boolean;
98
170
  locale: DateLocale;
99
171
  system: 'gregory' | 'islamic';
100
172
  onPress: () => void;
101
173
  }
102
- declare function CalendarDay({ date, outside, selected, inRange, today, disabled, openStart, openEnd, locale, system, onPress, }: DayProps): import("react").JSX.Element;
174
+ declare function CalendarDay({ date, outside, selected, inRange, rangeStart, rangeEnd, today, disabled, openStart, openEnd, locale, system, onPress, }: DayProps): import("react").JSX.Element;
103
175
  export declare const Calendar: typeof CalendarRoot & {
176
+ Header: typeof CalendarHeader;
177
+ Nav: typeof CalendarNav;
104
178
  Grid: typeof CalendarGrid;
105
179
  Day: typeof CalendarDay;
106
180
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/calendar/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/calendar/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * A small syntax highlighter, sized for a phone.
3
+ *
4
+ * The web answer to this problem is a real tokenizer with a grammar per
5
+ * language, which is megabytes of WASM and a worker. That is the wrong shape
6
+ * here twice over: a chat renders short fragments rather than files, and the
7
+ * fragments arrive a token at a time, so whatever runs has to run again on
8
+ * every frame of a stream. This trades exactness for a single pass of regex
9
+ * that costs nothing and never blocks.
10
+ *
11
+ * What it therefore does *not* do: nested languages, template-literal
12
+ * interpolation, or anything requiring a parser to know it. What it does do is
13
+ * make a keyword look like a keyword, which is the whole of the value in a
14
+ * twelve-line snippet.
15
+ *
16
+ * Anything it does not recognise is returned as one plain token per line, so
17
+ * an unknown language renders as clean monospace rather than as a guess.
18
+ */
19
+ /** The kinds a token can be. Each maps to one theme colour. */
20
+ export type TokenKind = 'plain' | 'keyword' | 'string' | 'number' | 'comment' | 'function' | 'property' | 'punctuation' | 'inserted' | 'deleted';
21
+ export interface Token {
22
+ text: string;
23
+ kind: TokenKind;
24
+ }
25
+ /** The languages that get more than plain monospace. */
26
+ export type CodeLanguage = 'ts' | 'tsx' | 'js' | 'jsx' | 'json' | 'bash' | 'python' | 'css' | 'html' | 'sql' | 'markdown' | 'diff' | 'text';
27
+ /** Resolves a caller's language string. Unknown spellings become `text`. */
28
+ export declare function resolveLanguage(language: string | undefined): CodeLanguage;
29
+ /**
30
+ * Splits code into lines of tokens.
31
+ *
32
+ * Line by line, so a stream that has just gained a character only makes the
33
+ * work grow with the code and never with time. The cost of that choice is that
34
+ * a block comment spanning several lines is only coloured on its first — an
35
+ * acceptable trade for a snippet, and the reason this is not sold as a
36
+ * highlighter for a file.
37
+ */
38
+ export declare function highlight(code: string, language: string | undefined): Token[][];
39
+ //# sourceMappingURL=highlight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["../../../../../src/components/code-block/highlight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,+DAA+D;AAC/D,MAAM,MAAM,SAAS,GACjB,OAAO,GACP,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,UAAU,GACV,UAAU,GACV,aAAa,GACb,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wDAAwD;AACxD,MAAM,MAAM,YAAY,GACpB,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,MAAM,GACN,MAAM,GACN,QAAQ,GACR,KAAK,GACL,MAAM,GACN,KAAK,GACL,UAAU,GACV,MAAM,GACN,MAAM,CAAC;AAkCX,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAG1E;AA2KD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,EAAE,EAAE,CAQ/E"}