panelui-native 0.44.0 → 0.49.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 (108) hide show
  1. package/README.md +6 -1
  2. package/lib/module/components/accordion/index.js +32 -4
  3. package/lib/module/components/accordion/index.js.map +1 -1
  4. package/lib/module/components/button/index.js +83 -15
  5. package/lib/module/components/button/index.js.map +1 -1
  6. package/lib/module/components/button-group/index.js +186 -0
  7. package/lib/module/components/button-group/index.js.map +1 -0
  8. package/lib/module/components/color-picker/index.js +110 -1
  9. package/lib/module/components/color-picker/index.js.map +1 -1
  10. package/lib/module/components/combobox/index.js +7 -1
  11. package/lib/module/components/combobox/index.js.map +1 -1
  12. package/lib/module/components/date-time-picker/index.js +272 -0
  13. package/lib/module/components/date-time-picker/index.js.map +1 -0
  14. package/lib/module/components/fab/index.js +514 -0
  15. package/lib/module/components/fab/index.js.map +1 -0
  16. package/lib/module/components/grid-item/index.js +486 -0
  17. package/lib/module/components/grid-item/index.js.map +1 -0
  18. package/lib/module/components/{kpi-chart → kpi}/index.js +62 -62
  19. package/lib/module/components/kpi/index.js.map +1 -0
  20. package/lib/module/components/line-chart/index.js +92 -10
  21. package/lib/module/components/line-chart/index.js.map +1 -1
  22. package/lib/module/components/markdown-editor/index.js +406 -0
  23. package/lib/module/components/markdown-editor/index.js.map +1 -0
  24. package/lib/module/components/markdown-editor/markdown-transforms.js +243 -0
  25. package/lib/module/components/markdown-editor/markdown-transforms.js.map +1 -0
  26. package/lib/module/components/pie-chart/index.js +625 -0
  27. package/lib/module/components/pie-chart/index.js.map +1 -0
  28. package/lib/module/components/questionnaire/index.js +1312 -0
  29. package/lib/module/components/questionnaire/index.js.map +1 -0
  30. package/lib/module/components/scatter-chart/index.js +1173 -0
  31. package/lib/module/components/scatter-chart/index.js.map +1 -0
  32. package/lib/module/components/tabs/index.js +359 -41
  33. package/lib/module/components/tabs/index.js.map +1 -1
  34. package/lib/module/components/time-picker/index.js +34 -6
  35. package/lib/module/components/time-picker/index.js.map +1 -1
  36. package/lib/module/components/tree/index.js +500 -0
  37. package/lib/module/components/tree/index.js.map +1 -0
  38. package/lib/module/icons/index.js +217 -0
  39. package/lib/module/icons/index.js.map +1 -1
  40. package/lib/module/index.js +11 -2
  41. package/lib/module/index.js.map +1 -1
  42. package/lib/module/utils/chart.js +81 -0
  43. package/lib/module/utils/chart.js.map +1 -1
  44. package/lib/typescript/src/components/accordion/index.d.ts +21 -0
  45. package/lib/typescript/src/components/accordion/index.d.ts.map +1 -1
  46. package/lib/typescript/src/components/button/index.d.ts +21 -0
  47. package/lib/typescript/src/components/button/index.d.ts.map +1 -1
  48. package/lib/typescript/src/components/button-group/index.d.ts +212 -0
  49. package/lib/typescript/src/components/button-group/index.d.ts.map +1 -0
  50. package/lib/typescript/src/components/color-picker/index.d.ts +82 -1
  51. package/lib/typescript/src/components/color-picker/index.d.ts.map +1 -1
  52. package/lib/typescript/src/components/combobox/index.d.ts.map +1 -1
  53. package/lib/typescript/src/components/date-time-picker/index.d.ts +127 -0
  54. package/lib/typescript/src/components/date-time-picker/index.d.ts.map +1 -0
  55. package/lib/typescript/src/components/fab/index.d.ts +285 -0
  56. package/lib/typescript/src/components/fab/index.d.ts.map +1 -0
  57. package/lib/typescript/src/components/grid-item/index.d.ts +292 -0
  58. package/lib/typescript/src/components/grid-item/index.d.ts.map +1 -0
  59. package/lib/typescript/src/components/{kpi-chart → kpi}/index.d.ts +65 -65
  60. package/lib/typescript/src/components/kpi/index.d.ts.map +1 -0
  61. package/lib/typescript/src/components/line-chart/index.d.ts +25 -1
  62. package/lib/typescript/src/components/line-chart/index.d.ts.map +1 -1
  63. package/lib/typescript/src/components/markdown-editor/index.d.ts +102 -0
  64. package/lib/typescript/src/components/markdown-editor/index.d.ts.map +1 -0
  65. package/lib/typescript/src/components/markdown-editor/markdown-transforms.d.ts +76 -0
  66. package/lib/typescript/src/components/markdown-editor/markdown-transforms.d.ts.map +1 -0
  67. package/lib/typescript/src/components/pie-chart/index.d.ts +245 -0
  68. package/lib/typescript/src/components/pie-chart/index.d.ts.map +1 -0
  69. package/lib/typescript/src/components/questionnaire/index.d.ts +336 -0
  70. package/lib/typescript/src/components/questionnaire/index.d.ts.map +1 -0
  71. package/lib/typescript/src/components/scatter-chart/index.d.ts +309 -0
  72. package/lib/typescript/src/components/scatter-chart/index.d.ts.map +1 -0
  73. package/lib/typescript/src/components/tabs/index.d.ts +29 -2
  74. package/lib/typescript/src/components/tabs/index.d.ts.map +1 -1
  75. package/lib/typescript/src/components/time-picker/index.d.ts +19 -1
  76. package/lib/typescript/src/components/time-picker/index.d.ts.map +1 -1
  77. package/lib/typescript/src/components/tree/index.d.ts +125 -0
  78. package/lib/typescript/src/components/tree/index.d.ts.map +1 -0
  79. package/lib/typescript/src/icons/index.d.ts +22 -0
  80. package/lib/typescript/src/icons/index.d.ts.map +1 -1
  81. package/lib/typescript/src/index.d.ts +14 -5
  82. package/lib/typescript/src/index.d.ts.map +1 -1
  83. package/lib/typescript/src/utils/chart.d.ts +34 -0
  84. package/lib/typescript/src/utils/chart.d.ts.map +1 -1
  85. package/package.json +1 -1
  86. package/src/components/accordion/index.tsx +48 -6
  87. package/src/components/button/index.tsx +97 -15
  88. package/src/components/button-group/index.tsx +199 -0
  89. package/src/components/color-picker/index.tsx +140 -3
  90. package/src/components/combobox/index.tsx +7 -1
  91. package/src/components/date-time-picker/index.tsx +411 -0
  92. package/src/components/fab/index.tsx +583 -0
  93. package/src/components/grid-item/index.tsx +515 -0
  94. package/src/components/{kpi-chart → kpi}/index.tsx +85 -85
  95. package/src/components/line-chart/index.tsx +98 -8
  96. package/src/components/markdown-editor/index.tsx +526 -0
  97. package/src/components/markdown-editor/markdown-transforms.ts +228 -0
  98. package/src/components/pie-chart/index.tsx +863 -0
  99. package/src/components/questionnaire/index.tsx +1615 -0
  100. package/src/components/scatter-chart/index.tsx +1401 -0
  101. package/src/components/tabs/index.tsx +392 -50
  102. package/src/components/time-picker/index.tsx +42 -6
  103. package/src/components/tree/index.tsx +564 -0
  104. package/src/icons/index.tsx +154 -0
  105. package/src/index.ts +142 -18
  106. package/src/utils/chart.ts +110 -0
  107. package/lib/module/components/kpi-chart/index.js.map +0 -1
  108. package/lib/typescript/src/components/kpi-chart/index.d.ts.map +0 -1
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * DateTimePicker — a day and a time of day, picked in one panel.
5
+ *
6
+ * ```tsx
7
+ * const [when, setWhen] = useState<Date>();
8
+ *
9
+ * <DateTimePicker value={when} onValueChange={setWhen} />
10
+ * ```
11
+ *
12
+ * ## Why it is one component and not two side by side
13
+ *
14
+ * A date field beside a time field is two decisions the reader has to make
15
+ * separately and then hold together — and the two halves can disagree, which is
16
+ * how a booking ends up on the right day at a time that has already passed. Here
17
+ * the calendar and the scale are the same panel over one `Date`, so what is on
18
+ * screen is the answer rather than two thirds of it.
19
+ *
20
+ * The layout follows from that: the calendar is the coarse choice and takes the
21
+ * room, the time sits under it behind a hairline, and one Done finishes both.
22
+ * The panel is a fixed width, which is what lets the two halves line up — a
23
+ * month grid and a time scale that measured themselves independently would be
24
+ * two boxes of slightly different widths stacked on each other.
25
+ *
26
+ * ## It does not close on the date
27
+ *
28
+ * `DatePicker` closes as soon as a single day is tapped, because at that point
29
+ * there is nothing left to say. Here there is: the day is half the value, and
30
+ * closing on it would hide the other half at the moment it became relevant. So
31
+ * the panel stays until Done, in every presentation including the popover — the
32
+ * one place `DatePicker` has no Done button at all.
33
+ *
34
+ * ## The time face
35
+ *
36
+ * `ruler` by default rather than the wheel. Under a month grid the panel is
37
+ * already tall, and the wheel is five rows of it; the ruler is one readout over
38
+ * a scale, reads at arm's length, and is the one face that fits under a calendar
39
+ * without the whole thing needing to scroll. The other two are a prop away.
40
+ *
41
+ * ## Picking the time before the day
42
+ *
43
+ * Allowed, and it means today. There has to be *some* day for a time to be a
44
+ * `Date` at all, and the day the reader is looking at is the only defensible
45
+ * guess — the alternative is refusing to emit a value until both halves have
46
+ * been touched, which is a form that silently does nothing when you use it in
47
+ * the order it did not expect.
48
+ */
49
+ import { useCallback, useMemo, useState } from 'react';
50
+ import { View } from 'react-native';
51
+ import { CalendarIcon } from "../../icons/index.js";
52
+ import { Text } from "../../primitives/text.js";
53
+ import { cn } from "../../utils/cn.js";
54
+ import { calendarShortDate, resolveCalendar } from "../../utils/date.js";
55
+ import { clampTime, formatTime, roundToStep, timeFromDate, timeToDate } from "../../utils/time.js";
56
+ import { Button } from "../button/index.js";
57
+ import { Calendar } from "../calendar/index.js";
58
+ import { Dialog } from "../dialog/index.js";
59
+ import { Popover } from "../popover/index.js";
60
+ import { TimePicker } from "../time-picker/index.js";
61
+
62
+ /** What a closed picker shows when nothing has been chosen yet. */
63
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
64
+ const DEFAULT_PLACEHOLDER = 'Pick a date and time';
65
+
66
+ /**
67
+ * The width both halves are laid out at.
68
+ *
69
+ * Fixed rather than measured, and shared, because that is the whole reason they
70
+ * read as one panel: a month grid and a time scale each sized to their own
71
+ * content are two boxes of slightly different widths stacked on each other, and
72
+ * the seam is visible at any size.
73
+ */
74
+ const PANEL_WIDTH = 308;
75
+
76
+ /** How a `Date` is written on the closed trigger. */
77
+ function describe(value, system, hourCycle, locale) {
78
+ const day = calendarShortDate(value, system, locale);
79
+ const time = formatTime(timeFromDate(value), {
80
+ hourCycle,
81
+ locale
82
+ });
83
+ return `${day} · ${time}`;
84
+ }
85
+
86
+ /** Where the panel is shown. `inline` renders it bare, for a Frame or a form. */
87
+
88
+ function DateTimePickerRoot({
89
+ value: valueProp,
90
+ defaultValue,
91
+ onValueChange,
92
+ layout = 'ruler',
93
+ presentation = 'popover',
94
+ open: openProp,
95
+ onOpenChange,
96
+ hourCycle = 12,
97
+ minuteStep,
98
+ minTime,
99
+ maxTime,
100
+ placeholder = DEFAULT_PLACEHOLDER,
101
+ format,
102
+ disabled = false,
103
+ disabledDates,
104
+ minDate,
105
+ maxDate,
106
+ captionLayout = 'label',
107
+ weekStartsOn = 0,
108
+ locale,
109
+ calendar = 'gregory',
110
+ doneLabel = 'Done',
111
+ timeLabel = 'Time',
112
+ className,
113
+ children
114
+ }) {
115
+ // Resolved here as well as in the grid, because the trigger's text has to be
116
+ // written in the same calendar the cells were tapped in.
117
+ const system = useMemo(() => resolveCalendar(calendar, locale), [calendar, locale]);
118
+ const [internalValue, setInternalValue] = useState(defaultValue);
119
+ const [internalOpen, setInternalOpen] = useState(false);
120
+ const isValueControlled = valueProp !== undefined;
121
+ const isOpenControlled = openProp !== undefined;
122
+ const value = isValueControlled ? valueProp : internalValue;
123
+ const open = isOpenControlled ? openProp : internalOpen;
124
+ const setOpen = useCallback(next => {
125
+ if (!isOpenControlled) setInternalOpen(next);
126
+ onOpenChange?.(next);
127
+ }, [isOpenControlled, onOpenChange]);
128
+ const commit = useCallback(next => {
129
+ if (!isValueControlled) setInternalValue(next);
130
+ onValueChange?.(next);
131
+ }, [isValueControlled, onValueChange]);
132
+
133
+ /*
134
+ * The time half, kept separately as well as inside the value.
135
+ *
136
+ * The value cannot hold it on its own: before a day is picked there is no
137
+ * `Date` to put a time in, and a time chosen first would be dropped on the
138
+ * way to the calendar. Held here, the two halves can be filled in either
139
+ * order and neither one loses the other.
140
+ */
141
+ const [draftTime, setDraftTime] = useState(defaultValue ? timeFromDate(defaultValue) : undefined);
142
+ const time = value ? timeFromDate(value) : draftTime;
143
+
144
+ /** The time a day picked on its own is given: the top of the current hour. */
145
+ const fallbackTime = useMemo(() => clampTime(roundToStep({
146
+ hour: new Date().getHours(),
147
+ minute: 0
148
+ }, minuteStep ?? 15), minTime, maxTime), [minuteStep, minTime, maxTime]);
149
+ const handleDay = useCallback(day => {
150
+ if (!day) return;
151
+ commit(timeToDate(time ?? fallbackTime, day));
152
+ }, [commit, time, fallbackTime]);
153
+ const handleTime = useCallback(next => {
154
+ setDraftTime(next);
155
+ // No day yet means today: a time is not a `Date` without one, and the day
156
+ // the reader is looking at is the only defensible guess.
157
+ commit(timeToDate(next, value ?? new Date()));
158
+ }, [commit, value]);
159
+ const label = useMemo(() => {
160
+ if (!value) return null;
161
+ if (format) return format(value);
162
+ return describe(value, system, hourCycle, locale);
163
+ }, [format, value, system, hourCycle, locale]);
164
+ const panel = /*#__PURE__*/_jsxs(View, {
165
+ style: {
166
+ width: PANEL_WIDTH,
167
+ maxWidth: '100%'
168
+ },
169
+ className: cn('self-center', presentation === 'inline' ? className : undefined),
170
+ children: [/*#__PURE__*/_jsx(Calendar, {
171
+ bordered: false,
172
+ mode: "single",
173
+ selected: value,
174
+ onSelect: handleDay,
175
+ disabled: disabledDates,
176
+ minDate: minDate,
177
+ maxDate: maxDate,
178
+ startMonth: minDate,
179
+ endMonth: maxDate,
180
+ captionLayout: captionLayout,
181
+ weekStartsOn: weekStartsOn,
182
+ locale: locale,
183
+ calendar: calendar
184
+ }), /*#__PURE__*/_jsxs(View, {
185
+ className: "mt-3 gap-3 border-t border-border pt-3",
186
+ children: [/*#__PURE__*/_jsxs(View, {
187
+ className: "flex-row items-center justify-between gap-3",
188
+ children: [/*#__PURE__*/_jsx(Text, {
189
+ size: "sm",
190
+ muted: true,
191
+ children: timeLabel
192
+ }), /*#__PURE__*/_jsx(Text, {
193
+ className: "text-lg font-semibold tabular-nums text-foreground",
194
+ children: formatTime(time ?? fallbackTime, {
195
+ hourCycle,
196
+ locale
197
+ })
198
+ })]
199
+ }), /*#__PURE__*/_jsx(TimePicker, {
200
+ presentation: "inline",
201
+ layout: layout,
202
+ readout: "none",
203
+ value: time,
204
+ onValueChange: handleTime,
205
+ hourCycle: hourCycle,
206
+ minuteStep: minuteStep,
207
+ minTime: minTime,
208
+ maxTime: maxTime,
209
+ locale: locale,
210
+ disabled: disabled
211
+ })]
212
+ })]
213
+ });
214
+ if (presentation === 'inline') return panel;
215
+ const trigger = children ?? /*#__PURE__*/_jsxs(Button, {
216
+ variant: "outline",
217
+ disabled: disabled,
218
+ className: cn('justify-start gap-2', className),
219
+ children: [/*#__PURE__*/_jsx(CalendarIcon, {
220
+ size: 16
221
+ }), /*#__PURE__*/_jsx(Text, {
222
+ className: label ? undefined : 'text-muted-foreground',
223
+ children: label ?? placeholder
224
+ })]
225
+ });
226
+ if (presentation === 'dialog') {
227
+ return /*#__PURE__*/_jsxs(Dialog, {
228
+ open: open,
229
+ onOpenChange: setOpen,
230
+ children: [/*#__PURE__*/_jsx(Dialog.Trigger, {
231
+ children: trigger
232
+ }), /*#__PURE__*/_jsxs(Dialog.Content, {
233
+ blur: true,
234
+ className: "items-center gap-0 p-4",
235
+ children: [panel, /*#__PURE__*/_jsx(Dialog.Close, {
236
+ children: /*#__PURE__*/_jsx(Button, {
237
+ className: "mt-3 w-full",
238
+ children: doneLabel
239
+ })
240
+ })]
241
+ })]
242
+ });
243
+ }
244
+ const isSheet = presentation === 'bottom-sheet';
245
+ return /*#__PURE__*/_jsxs(Popover, {
246
+ open: open,
247
+ onOpenChange: setOpen,
248
+ presentation: isSheet ? 'bottom-sheet' : 'popover',
249
+ children: [/*#__PURE__*/_jsx(Popover.Trigger, {
250
+ children: trigger
251
+ }), /*#__PURE__*/_jsx(Popover.Content, {
252
+ width: isSheet ? 'full' : 'content-fit',
253
+ children: /*#__PURE__*/_jsxs(View, {
254
+ className: isSheet ? 'w-full pb-2' : 'p-3',
255
+ children: [panel, /*#__PURE__*/_jsx(Popover.Close, {
256
+ children: /*#__PURE__*/_jsx(Button, {
257
+ className: "mt-3 w-full self-center",
258
+ style: isSheet ? undefined : {
259
+ maxWidth: PANEL_WIDTH
260
+ },
261
+ children: doneLabel
262
+ })
263
+ })]
264
+ })
265
+ })]
266
+ });
267
+ }
268
+ DateTimePickerRoot.displayName = 'DateTimePicker';
269
+ export const DateTimePicker = Object.assign(DateTimePickerRoot, {
270
+ Trigger: Popover.Trigger
271
+ });
272
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useMemo","useState","View","CalendarIcon","Text","cn","calendarShortDate","resolveCalendar","clampTime","formatTime","roundToStep","timeFromDate","timeToDate","Button","Calendar","Dialog","Popover","TimePicker","jsx","_jsx","jsxs","_jsxs","DEFAULT_PLACEHOLDER","PANEL_WIDTH","describe","value","system","hourCycle","locale","day","time","DateTimePickerRoot","valueProp","defaultValue","onValueChange","layout","presentation","open","openProp","onOpenChange","minuteStep","minTime","maxTime","placeholder","format","disabled","disabledDates","minDate","maxDate","captionLayout","weekStartsOn","calendar","doneLabel","timeLabel","className","children","internalValue","setInternalValue","internalOpen","setInternalOpen","isValueControlled","undefined","isOpenControlled","setOpen","next","commit","draftTime","setDraftTime","fallbackTime","hour","Date","getHours","minute","handleDay","handleTime","label","panel","style","width","maxWidth","bordered","mode","selected","onSelect","startMonth","endMonth","size","muted","readout","trigger","variant","Trigger","Content","blur","Close","isSheet","displayName","DateTimePicker","Object","assign"],"sourceRoot":"../../../../src","sources":["components/date-time-picker/index.tsx"],"mappings":"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","ignoreList":[]}