@krizaka/ui 3.1.0 → 3.2.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.
- package/dist/achievement.js +1 -1
- package/dist/action-bar.js +1 -1
- package/dist/app-shell.js +1 -1
- package/dist/argument-card.js +2 -2
- package/dist/card-grid.js +1 -1
- package/dist/card.js +1 -1
- package/dist/choice-grid.js +1 -1
- package/dist/{chunk-OGJI5X4W.js → chunk-2PUDI7JS.js} +2 -2
- package/dist/chunk-4LOMIQVX.js +21 -0
- package/dist/chunk-4LOMIQVX.js.map +1 -0
- package/dist/{chunk-K3SWZXYT.js → chunk-DGQMDJXK.js} +2 -2
- package/dist/chunk-G3ETON2A.js +22 -0
- package/dist/chunk-G3ETON2A.js.map +1 -0
- package/dist/chunk-I5RVM5CW.js +27 -0
- package/dist/chunk-I5RVM5CW.js.map +1 -0
- package/dist/chunk-IZ7MV6HM.js +26 -0
- package/dist/chunk-IZ7MV6HM.js.map +1 -0
- package/dist/chunk-ZNMFG62E.js +20 -0
- package/dist/chunk-ZNMFG62E.js.map +1 -0
- package/dist/cn.d.ts +9 -1
- package/dist/cn.js +5 -3
- package/dist/code-block.js +1 -1
- package/dist/command.js +1 -1
- package/dist/confirm-button.js +1 -1
- package/dist/continue-prompt.js +1 -1
- package/dist/cta-panel.js +1 -1
- package/dist/data-table.js +2 -2
- package/dist/date-picker.d.ts +650 -61
- package/dist/date-picker.js +918 -122
- package/dist/date-picker.js.map +1 -1
- package/dist/decision-list.js +1 -1
- package/dist/dropdown-menu.js +1 -1
- package/dist/error-page.js +1 -1
- package/dist/field.js +1 -1
- package/dist/filter-bar.js +2 -2
- package/dist/form.js.map +1 -1
- package/dist/gallery-page.js +1 -1
- package/dist/glow-card.js +1 -1
- package/dist/goal-gauge.js +1 -1
- package/dist/how-it-works-page.js +1 -1
- package/dist/landscape.js +1 -1
- package/dist/link-card.js +1 -1
- package/dist/longform-page.js +1 -1
- package/dist/marquee.js +1 -1
- package/dist/mascot-quote.js +1 -1
- package/dist/motion.css +18 -1
- package/dist/native/form.js.map +1 -1
- package/dist/native.d.ts +239 -2
- package/dist/native.js +955 -379
- package/dist/native.js.map +1 -1
- package/dist/nav-bar.js +1 -1
- package/dist/page-hero.js +2 -2
- package/dist/page.js +2 -2
- package/dist/popover.js +1 -1
- package/dist/pricing-page.js +1 -1
- package/dist/product-page.js +1 -1
- package/dist/profile-card.js +1 -1
- package/dist/promise-card.js +1 -1
- package/dist/scroll-stage.js +1 -1
- package/dist/stage-banner.js +1 -1
- package/dist/terminal-replay.js +1 -1
- package/dist/toast.js +1 -1
- package/dist/toc.js +1 -1
- package/dist/tooltip.js +1 -1
- package/package.json +7 -7
- package/registry/cn.json +1 -1
- package/registry/date-picker.json +1721 -284
- package/registry/examples/date-picker/birth-date-wheel.d.ts +4 -0
- package/registry/examples/date-picker/birth-date-wheel.js +13 -0
- package/registry/examples/date-picker/birth-date-wheel.tsx +11 -0
- package/registry/examples/date-picker/birth-date.d.ts +4 -0
- package/registry/examples/date-picker/birth-date.js +25 -0
- package/registry/examples/date-picker/birth-date.tsx +21 -0
- package/registry/examples/date-picker/calendar.js +1 -1
- package/registry/examples/date-picker/calendar.tsx +2 -6
- package/registry/examples/date-picker/day-strip.d.ts +4 -0
- package/registry/examples/date-picker/day-strip.js +28 -0
- package/registry/examples/date-picker/day-strip.tsx +27 -0
- package/registry/examples/date-picker/month-year.d.ts +4 -0
- package/registry/examples/date-picker/month-year.js +13 -0
- package/registry/examples/date-picker/month-year.tsx +10 -0
- package/registry/examples/date-picker/native/birth-date-wheel.d.ts +4 -0
- package/registry/examples/date-picker/native/birth-date-wheel.dark.png +0 -0
- package/registry/examples/date-picker/native/birth-date-wheel.js +13 -0
- package/registry/examples/date-picker/native/birth-date-wheel.light.png +0 -0
- package/registry/examples/date-picker/native/birth-date-wheel.tsx +9 -0
- package/registry/examples/date-picker/native/calendar.d.ts +4 -0
- package/registry/examples/date-picker/native/calendar.dark.png +0 -0
- package/registry/examples/date-picker/native/calendar.js +13 -0
- package/registry/examples/date-picker/native/calendar.light.png +0 -0
- package/registry/examples/date-picker/native/calendar.tsx +8 -0
- package/registry/examples/date-picker/native/day-strip.d.ts +4 -0
- package/registry/examples/date-picker/native/day-strip.dark.png +0 -0
- package/registry/examples/date-picker/native/day-strip.js +29 -0
- package/registry/examples/date-picker/native/day-strip.light.png +0 -0
- package/registry/examples/date-picker/native/day-strip.tsx +26 -0
- package/registry/examples/date-picker/native/month-year.d.ts +4 -0
- package/registry/examples/date-picker/native/month-year.dark.png +0 -0
- package/registry/examples/date-picker/native/month-year.js +13 -0
- package/registry/examples/date-picker/native/month-year.light.png +0 -0
- package/registry/examples/date-picker/native/month-year.tsx +8 -0
- package/registry/examples/date-picker/native/time-slots.d.ts +4 -0
- package/registry/examples/date-picker/native/time-slots.dark.png +0 -0
- package/registry/examples/date-picker/native/time-slots.js +15 -0
- package/registry/examples/date-picker/native/time-slots.light.png +0 -0
- package/registry/examples/date-picker/native/time-slots.tsx +15 -0
- package/registry/examples/date-picker/native/time-wheel.d.ts +4 -0
- package/registry/examples/date-picker/native/time-wheel.dark.png +0 -0
- package/registry/examples/date-picker/native/time-wheel.js +13 -0
- package/registry/examples/date-picker/native/time-wheel.light.png +0 -0
- package/registry/examples/date-picker/native/time-wheel.tsx +8 -0
- package/registry/examples/date-picker/time-slots.d.ts +4 -0
- package/registry/examples/date-picker/time-slots.js +26 -0
- package/registry/examples/date-picker/time-slots.tsx +25 -0
- package/registry/examples/date-picker/time-wheel.d.ts +4 -0
- package/registry/examples/date-picker/time-wheel.js +13 -0
- package/registry/examples/date-picker/time-wheel.tsx +10 -0
- package/registry/examples/date-picker/wheel.d.ts +4 -0
- package/registry/examples/date-picker/wheel.js +14 -0
- package/registry/examples/date-picker/wheel.tsx +16 -0
- package/registry/index.json +6 -5
- package/registry/theme.json +7 -0
- package/skills/date-picker/SKILL.md +43 -0
- package/dist/chunk-2USC2YT6.js +0 -17
- package/dist/chunk-2USC2YT6.js.map +0 -1
- package/dist/chunk-5AXLA4LK.js +0 -13
- package/dist/chunk-5AXLA4LK.js.map +0 -1
- package/dist/chunk-FJDSLNXK.js +0 -11
- package/dist/chunk-FJDSLNXK.js.map +0 -1
- package/dist/chunk-KNBYZGSQ.js +0 -11
- package/dist/chunk-KNBYZGSQ.js.map +0 -1
- package/dist/chunk-VCAAHCHL.js +0 -17
- package/dist/chunk-VCAAHCHL.js.map +0 -1
- /package/dist/{chunk-OGJI5X4W.js.map → chunk-2PUDI7JS.js.map} +0 -0
- /package/dist/{chunk-K3SWZXYT.js.map → chunk-DGQMDJXK.js.map} +0 -0
package/dist/native.js
CHANGED
|
@@ -55,6 +55,101 @@ function isRealDate(value) {
|
|
|
55
55
|
function latestBirthDate(age, today = /* @__PURE__ */ new Date()) {
|
|
56
56
|
return new Date(Date.UTC(today.getFullYear() - age, today.getMonth(), today.getDate())).toISOString().slice(0, 10);
|
|
57
57
|
}
|
|
58
|
+
function daysInMonth(year, month) {
|
|
59
|
+
return new Date(Date.UTC(year, month, 0)).getUTCDate();
|
|
60
|
+
}
|
|
61
|
+
function isoParts(iso) {
|
|
62
|
+
const [year = 0, month = 0, day = 0] = iso.split("-").map(Number);
|
|
63
|
+
return { year, month, day };
|
|
64
|
+
}
|
|
65
|
+
function isoOf(year, month, day) {
|
|
66
|
+
const d = Math.min(Math.max(day, 1), daysInMonth(year, month));
|
|
67
|
+
return `${String(year).padStart(4, "0")}-${String(month).padStart(2, "0")}-${String(d).padStart(2, "0")}`;
|
|
68
|
+
}
|
|
69
|
+
function todayIso(now = /* @__PURE__ */ new Date()) {
|
|
70
|
+
return isoOf(now.getFullYear(), now.getMonth() + 1, now.getDate());
|
|
71
|
+
}
|
|
72
|
+
function ageOn(birth, today = todayIso()) {
|
|
73
|
+
const b = isoParts(birth);
|
|
74
|
+
const t = isoParts(today);
|
|
75
|
+
return t.year - b.year - (t.month < b.month || t.month === b.month && t.day < b.day ? 1 : 0);
|
|
76
|
+
}
|
|
77
|
+
function monthNames(locale, style = "long") {
|
|
78
|
+
const format = new Intl.DateTimeFormat(locale, { month: style, timeZone: "UTC" });
|
|
79
|
+
return Array.from({ length: 12 }, (_, i) => format.format(new Date(Date.UTC(2001, i, 1))));
|
|
80
|
+
}
|
|
81
|
+
function yearRange(from, to) {
|
|
82
|
+
const step = from <= to ? 1 : -1;
|
|
83
|
+
return Array.from({ length: Math.abs(to - from) + 1 }, (_, i) => from + i * step);
|
|
84
|
+
}
|
|
85
|
+
function timeToMinutes(value) {
|
|
86
|
+
const m = /^(\d{1,2}):(\d{1,2})$/.exec(value ?? "");
|
|
87
|
+
if (!m) return null;
|
|
88
|
+
const h = Number(m[1]);
|
|
89
|
+
const min = Number(m[2]);
|
|
90
|
+
return h < 24 && min < 60 ? h * 60 + min : null;
|
|
91
|
+
}
|
|
92
|
+
function minutesToTime(minutes) {
|
|
93
|
+
const m = (Math.round(minutes) % 1440 + 1440) % 1440;
|
|
94
|
+
return `${String(Math.floor(m / 60)).padStart(2, "0")}:${String(m % 60).padStart(2, "0")}`;
|
|
95
|
+
}
|
|
96
|
+
function timeSlots(start, end, step = 30) {
|
|
97
|
+
const a = timeToMinutes(start);
|
|
98
|
+
const b = timeToMinutes(end);
|
|
99
|
+
if (a === null || b === null || step <= 0) return [];
|
|
100
|
+
const slots = [];
|
|
101
|
+
for (let m = a; m < b; m += step) slots.push(minutesToTime(m));
|
|
102
|
+
return slots;
|
|
103
|
+
}
|
|
104
|
+
function uses12Hours(locale) {
|
|
105
|
+
try {
|
|
106
|
+
const options = new Intl.DateTimeFormat(locale, { hour: "numeric" }).resolvedOptions();
|
|
107
|
+
return options.hourCycle ? options.hourCycle === "h12" || options.hourCycle === "h11" : Boolean(options.hour12);
|
|
108
|
+
} catch {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function dayPeriods(locale) {
|
|
113
|
+
const format = new Intl.DateTimeFormat(locale, { hour: "numeric", hour12: true, timeZone: "UTC" });
|
|
114
|
+
const period = (h) => format.formatToParts(new Date(Date.UTC(2001, 0, 1, h))).find((p) => p.type === "dayPeriod")?.value ?? (h < 12 ? "AM" : "PM");
|
|
115
|
+
return [period(9), period(15)];
|
|
116
|
+
}
|
|
117
|
+
function formatTime(locale, value) {
|
|
118
|
+
const minutes = timeToMinutes(value);
|
|
119
|
+
if (minutes === null) return "";
|
|
120
|
+
return new Intl.DateTimeFormat(locale, { hour: "numeric", minute: "2-digit", timeZone: "UTC" }).format(new Date(Date.UTC(2001, 0, 1, 0, minutes)));
|
|
121
|
+
}
|
|
122
|
+
var toLocalDate = (iso) => {
|
|
123
|
+
const { year, month, day } = isoParts(iso);
|
|
124
|
+
return new Date(year, month - 1, day);
|
|
125
|
+
};
|
|
126
|
+
var toIsoDate = (date) => `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(date.getDate()).padStart(2, "0")}`;
|
|
127
|
+
var addDays = (iso, days) => {
|
|
128
|
+
const date = toLocalDate(iso);
|
|
129
|
+
date.setDate(date.getDate() + days);
|
|
130
|
+
return toIsoDate(date);
|
|
131
|
+
};
|
|
132
|
+
var addMonths = (iso, months) => {
|
|
133
|
+
const { year, month, day } = isoParts(iso);
|
|
134
|
+
const first = new Date(year, month - 1 + months, 1);
|
|
135
|
+
return isoOf(first.getFullYear(), first.getMonth() + 1, day);
|
|
136
|
+
};
|
|
137
|
+
function weekStartOf(locale) {
|
|
138
|
+
try {
|
|
139
|
+
const info = new Intl.Locale(locale);
|
|
140
|
+
const firstDay = info.getWeekInfo?.().firstDay ?? info.weekInfo?.firstDay;
|
|
141
|
+
return firstDay ? firstDay % 7 : 1;
|
|
142
|
+
} catch {
|
|
143
|
+
return 1;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
function monthGrid(month, weekStartsOn) {
|
|
147
|
+
const first = `${month.slice(0, 7)}-01`;
|
|
148
|
+
const lead = (toLocalDate(first).getDay() - weekStartsOn + 7) % 7;
|
|
149
|
+
const start = addDays(first, -lead);
|
|
150
|
+
const days = Array.from({ length: 42 }, (_, i) => addDays(start, i));
|
|
151
|
+
return Array.from({ length: 6 }, (_, w) => days.slice(w * 7, w * 7 + 7)).filter((week, w) => w < 5 || week[0].slice(0, 7) === first.slice(0, 7));
|
|
152
|
+
}
|
|
58
153
|
|
|
59
154
|
// src/native/avatar.tsx
|
|
60
155
|
import * as React2 from "react";
|
|
@@ -227,11 +322,12 @@ var radius2 = radius;
|
|
|
227
322
|
var motion2 = motion;
|
|
228
323
|
var stillMotion = { ...motion2, duration: { instant: 0, fast: 0, base: 0 } };
|
|
229
324
|
var ThemeContext = React.createContext(null);
|
|
325
|
+
var noop = () => void 0;
|
|
230
326
|
function resolve(mode, system) {
|
|
231
327
|
if (mode === "system") return system === "light" ? "light" : "dark";
|
|
232
328
|
return mode;
|
|
233
329
|
}
|
|
234
|
-
function ThemeProvider({ children, mode: controlled, defaultMode = "system", onModeChange, overrides, fonts }) {
|
|
330
|
+
function ThemeProvider({ children, mode: controlled, defaultMode = "system", onModeChange, overrides, fonts, haptics }) {
|
|
235
331
|
const system = useColorScheme();
|
|
236
332
|
const [own, setOwn] = React.useState(defaultMode);
|
|
237
333
|
const mode = controlled ?? own;
|
|
@@ -247,18 +343,17 @@ function ThemeProvider({ children, mode: controlled, defaultMode = "system", onM
|
|
|
247
343
|
const reduce = useReducedMotion();
|
|
248
344
|
const theme = React.useMemo(() => override ? { ...themes2[scheme], ...override } : themes2[scheme], [scheme, override]);
|
|
249
345
|
const value = React.useMemo(
|
|
250
|
-
() => ({ mode, setMode, scheme, theme, radius: radius2, motion: reduce ? stillMotion : motion2, fonts: fonts ?? {} }),
|
|
251
|
-
[mode, setMode, scheme, theme, fonts, reduce]
|
|
346
|
+
() => ({ mode, setMode, scheme, theme, radius: radius2, motion: reduce ? stillMotion : motion2, fonts: fonts ?? {}, haptic: haptics ?? noop }),
|
|
347
|
+
[mode, setMode, scheme, theme, fonts, reduce, haptics]
|
|
252
348
|
);
|
|
253
349
|
return /* @__PURE__ */ jsx(ThemeContext.Provider, { value, children });
|
|
254
350
|
}
|
|
255
|
-
var noop = () => void 0;
|
|
256
351
|
function useTheme() {
|
|
257
352
|
const context = React.useContext(ThemeContext);
|
|
258
353
|
const system = useColorScheme();
|
|
259
354
|
if (context) return context;
|
|
260
355
|
const scheme = resolve("system", system);
|
|
261
|
-
return { mode: "system", setMode: noop, scheme, theme: themes2[scheme], radius: radius2, motion: motion2, fonts: {} };
|
|
356
|
+
return { mode: "system", setMode: noop, scheme, theme: themes2[scheme], radius: radius2, motion: motion2, fonts: {}, haptic: noop };
|
|
262
357
|
}
|
|
263
358
|
function useReducedMotion() {
|
|
264
359
|
const [reduce, setReduce] = React.useState(false);
|
|
@@ -877,19 +972,481 @@ var styles9 = StyleSheet9.create({
|
|
|
877
972
|
disabled: { opacity: 0.5 }
|
|
878
973
|
});
|
|
879
974
|
|
|
880
|
-
// src/native/
|
|
881
|
-
import
|
|
975
|
+
// src/native/date-time.tsx
|
|
976
|
+
import * as React10 from "react";
|
|
977
|
+
import { Pressable as Pressable6, ScrollView as ScrollView3, StyleSheet as StyleSheet11, Text as Text9, View as View8 } from "react-native";
|
|
978
|
+
import Svg3, { Path as Path2 } from "react-native-svg";
|
|
979
|
+
|
|
980
|
+
// src/native/wheel.tsx
|
|
981
|
+
import * as React9 from "react";
|
|
982
|
+
import { Pressable as Pressable5, ScrollView as ScrollView2, StyleSheet as StyleSheet10, Text as Text8, View as View7 } from "react-native";
|
|
882
983
|
import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
984
|
+
var ITEM = 44;
|
|
985
|
+
var VisibleContext = React9.createContext(5);
|
|
986
|
+
function WheelPicker({ label, children, visible = 5, invalid, style }) {
|
|
987
|
+
const { theme, radius: radius3 } = useTheme();
|
|
988
|
+
return /* @__PURE__ */ jsx11(VisibleContext.Provider, { value: visible, children: /* @__PURE__ */ jsxs8(
|
|
989
|
+
View7,
|
|
990
|
+
{
|
|
991
|
+
role: "group",
|
|
992
|
+
"aria-label": label,
|
|
993
|
+
style: [styles10.root, { height: ITEM * visible, borderRadius: radius3.xl, backgroundColor: theme.surface1, borderColor: invalid ? theme.danger : theme.borderDefault }, style],
|
|
994
|
+
children: [
|
|
995
|
+
/* @__PURE__ */ jsx11(View7, { pointerEvents: "none", style: [styles10.band, { top: ITEM * (visible - 1) / 2, height: ITEM, borderRadius: radius3.lg, backgroundColor: theme.surface3, borderColor: theme.borderSubtle }] }),
|
|
996
|
+
children
|
|
997
|
+
]
|
|
998
|
+
}
|
|
999
|
+
) });
|
|
1000
|
+
}
|
|
1001
|
+
function WheelDivider({ children }) {
|
|
1002
|
+
const { theme } = useTheme();
|
|
1003
|
+
return /* @__PURE__ */ jsx11(Text8, { "aria-hidden": true, style: [styles10.divider, { color: theme.textSecondary }], children });
|
|
1004
|
+
}
|
|
1005
|
+
var nearestEnabled = (options, index) => {
|
|
1006
|
+
for (let d = 0; d < options.length; d++) {
|
|
1007
|
+
if (options[index + d] && !options[index + d].disabled) return index + d;
|
|
1008
|
+
if (options[index - d] && !options[index - d].disabled) return index - d;
|
|
1009
|
+
}
|
|
1010
|
+
return index;
|
|
1011
|
+
};
|
|
1012
|
+
function Wheel({ label, options, value: valueProp, defaultValue, onValueChange, disabled, style }) {
|
|
1013
|
+
const { theme, haptic } = useTheme();
|
|
1014
|
+
const visible = React9.useContext(VisibleContext);
|
|
1015
|
+
const [own, setOwn] = React9.useState(defaultValue ?? options[0]?.value ?? "");
|
|
1016
|
+
const value = valueProp ?? own;
|
|
1017
|
+
const index = Math.max(0, options.findIndex((o) => o.value === value));
|
|
1018
|
+
const scroller = React9.useRef(null);
|
|
1019
|
+
const passing = React9.useRef(index);
|
|
1020
|
+
const [shown, setShown] = React9.useState(index);
|
|
1021
|
+
const [seen, setSeen] = React9.useState(index);
|
|
1022
|
+
if (seen !== index) {
|
|
1023
|
+
setSeen(index);
|
|
1024
|
+
setShown(index);
|
|
1025
|
+
}
|
|
1026
|
+
const commit = (i) => {
|
|
1027
|
+
const target = nearestEnabled(options, Math.min(options.length - 1, Math.max(0, i)));
|
|
1028
|
+
const option = options[target];
|
|
1029
|
+
if (!option) return;
|
|
1030
|
+
if (target !== i) scroller.current?.scrollTo({ y: target * ITEM, animated: true });
|
|
1031
|
+
if (valueProp === void 0) setOwn(option.value);
|
|
1032
|
+
if (option.value !== value) onValueChange?.(option.value);
|
|
1033
|
+
};
|
|
1034
|
+
React9.useEffect(() => {
|
|
1035
|
+
passing.current = index;
|
|
1036
|
+
scroller.current?.scrollTo({ y: index * ITEM, animated: false });
|
|
1037
|
+
}, [index]);
|
|
1038
|
+
const onScroll = (e) => {
|
|
1039
|
+
const i = Math.round(e.nativeEvent.contentOffset.y / ITEM);
|
|
1040
|
+
if (i !== passing.current && i >= 0 && i < options.length) {
|
|
1041
|
+
passing.current = i;
|
|
1042
|
+
setShown(i);
|
|
1043
|
+
haptic("selection");
|
|
1044
|
+
}
|
|
1045
|
+
};
|
|
1046
|
+
const settle = (e) => commit(Math.round(e.nativeEvent.contentOffset.y / ITEM));
|
|
1047
|
+
const step = (by) => {
|
|
1048
|
+
let i = index + by;
|
|
1049
|
+
while (options[i]?.disabled) i += by;
|
|
1050
|
+
if (options[i]) commit(i);
|
|
1051
|
+
};
|
|
1052
|
+
const pad = (visible - 1) / 2 * ITEM;
|
|
1053
|
+
return /* @__PURE__ */ jsx11(
|
|
1054
|
+
View7,
|
|
1055
|
+
{
|
|
1056
|
+
accessible: true,
|
|
1057
|
+
role: "spinbutton",
|
|
1058
|
+
"aria-label": label,
|
|
1059
|
+
"aria-valuetext": options[index]?.label,
|
|
1060
|
+
"aria-valuenow": index,
|
|
1061
|
+
"aria-valuemin": 0,
|
|
1062
|
+
"aria-valuemax": Math.max(0, options.length - 1),
|
|
1063
|
+
"aria-disabled": disabled || void 0,
|
|
1064
|
+
accessibilityActions: [{ name: "increment" }, { name: "decrement" }],
|
|
1065
|
+
onAccessibilityAction: (e) => step(e.nativeEvent.actionName === "increment" ? 1 : -1),
|
|
1066
|
+
style: [styles10.column, disabled ? styles10.disabled : null, style],
|
|
1067
|
+
children: /* @__PURE__ */ jsx11(
|
|
1068
|
+
ScrollView2,
|
|
1069
|
+
{
|
|
1070
|
+
ref: scroller,
|
|
1071
|
+
"aria-hidden": true,
|
|
1072
|
+
importantForAccessibility: "no-hide-descendants",
|
|
1073
|
+
scrollEnabled: !disabled,
|
|
1074
|
+
showsVerticalScrollIndicator: false,
|
|
1075
|
+
snapToInterval: ITEM,
|
|
1076
|
+
decelerationRate: "fast",
|
|
1077
|
+
contentOffset: { x: 0, y: index * ITEM },
|
|
1078
|
+
contentContainerStyle: { paddingVertical: pad },
|
|
1079
|
+
scrollEventThrottle: 16,
|
|
1080
|
+
onScroll,
|
|
1081
|
+
onMomentumScrollEnd: settle,
|
|
1082
|
+
onScrollEndDrag: (e) => {
|
|
1083
|
+
if (Math.abs(e.nativeEvent.velocity?.y ?? 0) < 0.05) settle(e);
|
|
1084
|
+
},
|
|
1085
|
+
children: options.map((o, i) => {
|
|
1086
|
+
const distance = Math.abs(i - shown);
|
|
1087
|
+
return /* @__PURE__ */ jsx11(Pressable5, { focusable: false, tabIndex: -1, disabled: disabled || o.disabled, onPress: () => commit(i), style: [styles10.item, { height: ITEM }], children: /* @__PURE__ */ jsx11(
|
|
1088
|
+
Text8,
|
|
1089
|
+
{
|
|
1090
|
+
numberOfLines: 1,
|
|
1091
|
+
style: [
|
|
1092
|
+
styles10.itemText,
|
|
1093
|
+
{
|
|
1094
|
+
color: o.disabled ? theme.textMuted : i === shown ? theme.textPrimary : theme.textSecondary,
|
|
1095
|
+
fontWeight: i === shown ? "600" : "400",
|
|
1096
|
+
opacity: distance === 0 ? 1 : distance === 1 ? 0.7 : 0.4,
|
|
1097
|
+
transform: [{ scale: distance === 0 ? 1 : 0.92 }],
|
|
1098
|
+
textDecorationLine: o.disabled ? "line-through" : "none"
|
|
1099
|
+
}
|
|
1100
|
+
],
|
|
1101
|
+
children: o.label
|
|
1102
|
+
}
|
|
1103
|
+
) }, o.value);
|
|
1104
|
+
})
|
|
1105
|
+
}
|
|
1106
|
+
)
|
|
1107
|
+
}
|
|
1108
|
+
);
|
|
1109
|
+
}
|
|
1110
|
+
var styles10 = StyleSheet10.create({
|
|
1111
|
+
root: { flexDirection: "row", alignItems: "stretch", borderWidth: StyleSheet10.hairlineWidth, paddingHorizontal: 6, gap: 4, overflow: "hidden", alignSelf: "flex-start" },
|
|
1112
|
+
band: { position: "absolute", left: 6, right: 6, borderWidth: StyleSheet10.hairlineWidth },
|
|
1113
|
+
column: { minWidth: 56, flexGrow: 1 },
|
|
1114
|
+
item: { alignItems: "center", justifyContent: "center", paddingHorizontal: 8 },
|
|
1115
|
+
itemText: { fontSize: 18, fontVariant: ["tabular-nums"] },
|
|
1116
|
+
divider: { alignSelf: "center", fontSize: 18, fontWeight: "600" },
|
|
1117
|
+
disabled: { opacity: 0.4 }
|
|
1118
|
+
});
|
|
1119
|
+
|
|
1120
|
+
// src/native/date-time.tsx
|
|
1121
|
+
import { jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1122
|
+
var longDate = (locale, iso) => new Intl.DateTimeFormat(locale, { dateStyle: "long" }).format(toLocalDate(iso));
|
|
1123
|
+
var useOwn = (value, initial) => {
|
|
1124
|
+
const [own, setOwn] = React10.useState(initial);
|
|
1125
|
+
return [value !== void 0 ? value : own, (next) => value === void 0 && setOwn(next)];
|
|
1126
|
+
};
|
|
1127
|
+
function Chevron({ direction, color }) {
|
|
1128
|
+
return /* @__PURE__ */ jsx12(Svg3, { width: 18, height: 18, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: 2.2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": true, children: /* @__PURE__ */ jsx12(Path2, { d: direction === "left" ? "m15 18-6-6 6-6" : "m9 18 6-6-6-6" }) });
|
|
1129
|
+
}
|
|
1130
|
+
function NavButton({ label, direction, disabled, onPress }) {
|
|
1131
|
+
const { theme, radius: radius3 } = useTheme();
|
|
1132
|
+
return /* @__PURE__ */ jsx12(
|
|
1133
|
+
Pressable6,
|
|
1134
|
+
{
|
|
1135
|
+
role: "button",
|
|
1136
|
+
"aria-label": label,
|
|
1137
|
+
"aria-disabled": disabled || void 0,
|
|
1138
|
+
disabled,
|
|
1139
|
+
hitSlop: 6,
|
|
1140
|
+
onPress,
|
|
1141
|
+
style: ({ pressed }) => [styles11.nav, { borderRadius: radius3.md, backgroundColor: pressed ? theme.surface3 : theme.surface2, borderColor: theme.borderSubtle }, disabled ? styles11.disabled : null],
|
|
1142
|
+
children: /* @__PURE__ */ jsx12(Chevron, { direction, color: theme.textSecondary })
|
|
1143
|
+
}
|
|
1144
|
+
);
|
|
1145
|
+
}
|
|
1146
|
+
function Node({ color, style }) {
|
|
1147
|
+
return /* @__PURE__ */ jsx12(View8, { "aria-hidden": true, style: [styles11.node, { backgroundColor: color }, style] });
|
|
1148
|
+
}
|
|
1149
|
+
var calendarLabels = { previousMonth: "Previous month", nextMonth: "Next month" };
|
|
1150
|
+
function Calendar({ locale, value, range, onSelect, defaultMonth, min, max, isDateDisabled, weekStartsOn, today: todayProp, labels: given, style }) {
|
|
1151
|
+
const labels = { ...calendarLabels, ...given };
|
|
1152
|
+
const { theme, radius: radius3, haptic } = useTheme();
|
|
1153
|
+
const today = todayProp ?? todayIso();
|
|
1154
|
+
const [month, setMonth] = React10.useState(`${(defaultMonth ?? value ?? range?.start ?? today).slice(0, 7)}-01`);
|
|
1155
|
+
const start = weekStartsOn ?? weekStartOf(locale);
|
|
1156
|
+
const weeks = monthGrid(month, start);
|
|
1157
|
+
const weekday = new Intl.DateTimeFormat(locale, { weekday: "narrow" });
|
|
1158
|
+
const title = new Intl.DateTimeFormat(locale, { month: "long", year: "numeric" }).format(toLocalDate(month));
|
|
1159
|
+
const [lo, hi] = range?.end ? range.start <= range.end ? [range.start, range.end] : [range.end, range.start] : [null, null];
|
|
1160
|
+
const off = (iso) => Boolean(min && iso < min || max && iso > max || isDateDisabled?.(iso));
|
|
1161
|
+
return /* @__PURE__ */ jsxs9(View8, { style: [styles11.calendar, { backgroundColor: theme.surface1, borderColor: theme.borderDefault, borderRadius: radius3.xl }, style], children: [
|
|
1162
|
+
/* @__PURE__ */ jsxs9(View8, { style: styles11.header, children: [
|
|
1163
|
+
/* @__PURE__ */ jsx12(NavButton, { label: labels.previousMonth, direction: "left", disabled: Boolean(min && addDays(month, -1) < min), onPress: () => setMonth(addMonths(month, -1)) }),
|
|
1164
|
+
/* @__PURE__ */ jsx12(Text9, { role: "heading", "aria-live": "polite", style: [styles11.title, { color: theme.textPrimary }], children: title }),
|
|
1165
|
+
/* @__PURE__ */ jsx12(NavButton, { label: labels.nextMonth, direction: "right", disabled: Boolean(max && addMonths(month, 1) > max), onPress: () => setMonth(addMonths(month, 1)) })
|
|
1166
|
+
] }),
|
|
1167
|
+
/* @__PURE__ */ jsx12(View8, { style: styles11.week, "aria-hidden": true, children: weeks[0].map((iso) => /* @__PURE__ */ jsx12(Text9, { style: [styles11.weekday, { color: theme.textSecondary }], children: weekday.format(toLocalDate(iso)) }, iso)) }),
|
|
1168
|
+
/* @__PURE__ */ jsx12(View8, { role: "radiogroup", "aria-label": title, children: weeks.map((week) => /* @__PURE__ */ jsx12(View8, { style: styles11.week, children: week.map((iso) => {
|
|
1169
|
+
const outside = iso.slice(0, 7) !== month.slice(0, 7);
|
|
1170
|
+
const selected = iso === value || Boolean(range && (iso === range.start || iso === range.end));
|
|
1171
|
+
const disabled = off(iso);
|
|
1172
|
+
const band = lo && hi && lo !== hi && iso >= lo && iso <= hi;
|
|
1173
|
+
return /* @__PURE__ */ jsx12(
|
|
1174
|
+
View8,
|
|
1175
|
+
{
|
|
1176
|
+
style: [
|
|
1177
|
+
styles11.cell,
|
|
1178
|
+
band ? { backgroundColor: theme.accentSoft } : null,
|
|
1179
|
+
band && iso === lo ? { borderTopLeftRadius: radius3.lg, borderBottomLeftRadius: radius3.lg } : null,
|
|
1180
|
+
band && iso === hi ? { borderTopRightRadius: radius3.lg, borderBottomRightRadius: radius3.lg } : null
|
|
1181
|
+
],
|
|
1182
|
+
children: /* @__PURE__ */ jsxs9(
|
|
1183
|
+
Pressable6,
|
|
1184
|
+
{
|
|
1185
|
+
role: "radio",
|
|
1186
|
+
"aria-label": longDate(locale, iso),
|
|
1187
|
+
"aria-checked": selected,
|
|
1188
|
+
"aria-disabled": disabled || void 0,
|
|
1189
|
+
"aria-current": iso === today ? "date" : void 0,
|
|
1190
|
+
disabled,
|
|
1191
|
+
onPress: () => {
|
|
1192
|
+
haptic("selection");
|
|
1193
|
+
onSelect?.(iso);
|
|
1194
|
+
},
|
|
1195
|
+
style: ({ pressed }) => [
|
|
1196
|
+
styles11.day,
|
|
1197
|
+
{ borderRadius: radius3.lg },
|
|
1198
|
+
selected ? { backgroundColor: theme.accent } : pressed ? { backgroundColor: theme.surface3 } : null
|
|
1199
|
+
],
|
|
1200
|
+
children: [
|
|
1201
|
+
/* @__PURE__ */ jsx12(
|
|
1202
|
+
Text9,
|
|
1203
|
+
{
|
|
1204
|
+
style: [
|
|
1205
|
+
styles11.dayText,
|
|
1206
|
+
{
|
|
1207
|
+
color: selected ? theme.onAccent : disabled ? theme.textMuted : iso === today ? theme.accentText : outside ? theme.textSecondary : theme.textPrimary,
|
|
1208
|
+
fontWeight: selected || iso === today ? "700" : "400",
|
|
1209
|
+
textDecorationLine: disabled ? "line-through" : "none"
|
|
1210
|
+
}
|
|
1211
|
+
],
|
|
1212
|
+
children: Number(iso.slice(8))
|
|
1213
|
+
}
|
|
1214
|
+
),
|
|
1215
|
+
iso === today ? /* @__PURE__ */ jsx12(Node, { color: selected ? theme.onAccent : theme.accent, style: styles11.todayNode }) : null
|
|
1216
|
+
]
|
|
1217
|
+
}
|
|
1218
|
+
)
|
|
1219
|
+
},
|
|
1220
|
+
iso
|
|
1221
|
+
);
|
|
1222
|
+
}) }, week[0])) })
|
|
1223
|
+
] });
|
|
1224
|
+
}
|
|
1225
|
+
function MonthPicker({ locale, value, onValueChange, min, max, labels, style }) {
|
|
1226
|
+
const { theme, radius: radius3, haptic } = useTheme();
|
|
1227
|
+
const [year, setYear] = React10.useState(Number((value ?? todayIso()).slice(0, 4)));
|
|
1228
|
+
const names = monthNames(locale, "short").map((n) => n.replace(/\.$/, ""));
|
|
1229
|
+
const long = monthNames(locale, "long");
|
|
1230
|
+
return /* @__PURE__ */ jsxs9(View8, { style: [styles11.calendar, { backgroundColor: theme.surface1, borderColor: theme.borderDefault, borderRadius: radius3.xl }, style], children: [
|
|
1231
|
+
/* @__PURE__ */ jsxs9(View8, { style: styles11.header, children: [
|
|
1232
|
+
/* @__PURE__ */ jsx12(NavButton, { label: labels?.previousYear ?? "Previous year", direction: "left", disabled: Boolean(min && year - 1 < Number(min.slice(0, 4))), onPress: () => setYear(year - 1) }),
|
|
1233
|
+
/* @__PURE__ */ jsx12(Text9, { role: "heading", "aria-live": "polite", style: [styles11.title, { color: theme.textPrimary }], children: year }),
|
|
1234
|
+
/* @__PURE__ */ jsx12(NavButton, { label: labels?.nextYear ?? "Next year", direction: "right", disabled: Boolean(max && year + 1 > Number(max.slice(0, 4))), onPress: () => setYear(year + 1) })
|
|
1235
|
+
] }),
|
|
1236
|
+
/* @__PURE__ */ jsx12(View8, { role: "radiogroup", "aria-label": String(year), style: styles11.months, children: names.map((name, i) => {
|
|
1237
|
+
const id = `${year}-${String(i + 1).padStart(2, "0")}`;
|
|
1238
|
+
const selected = id === value;
|
|
1239
|
+
const disabled = Boolean(min && id < min || max && id > max);
|
|
1240
|
+
return /* @__PURE__ */ jsx12(
|
|
1241
|
+
Pressable6,
|
|
1242
|
+
{
|
|
1243
|
+
role: "radio",
|
|
1244
|
+
"aria-checked": selected,
|
|
1245
|
+
"aria-label": `${long[i]} ${year}`,
|
|
1246
|
+
"aria-disabled": disabled || void 0,
|
|
1247
|
+
disabled,
|
|
1248
|
+
onPress: () => {
|
|
1249
|
+
haptic("selection");
|
|
1250
|
+
onValueChange?.(id);
|
|
1251
|
+
},
|
|
1252
|
+
style: ({ pressed }) => [styles11.month, { borderRadius: radius3.lg, backgroundColor: selected ? theme.accent : pressed ? theme.surface3 : "transparent" }, disabled ? styles11.disabled : null],
|
|
1253
|
+
children: /* @__PURE__ */ jsx12(Text9, { style: [styles11.monthText, { color: selected ? theme.onAccent : theme.textPrimary, fontWeight: selected ? "700" : "500" }], children: name })
|
|
1254
|
+
},
|
|
1255
|
+
id
|
|
1256
|
+
);
|
|
1257
|
+
}) })
|
|
1258
|
+
] });
|
|
1259
|
+
}
|
|
1260
|
+
function DayStrip({ label, locale, value: valueProp, defaultValue = null, onValueChange, start, days = 14, isDateDisabled, isDateMarked, markedLabel = "has events", today: todayProp, style }) {
|
|
1261
|
+
const { theme, radius: radius3, haptic } = useTheme();
|
|
1262
|
+
const today = todayProp ?? todayIso();
|
|
1263
|
+
const first = start ?? today;
|
|
1264
|
+
const [value, setValue] = useOwn(valueProp, defaultValue);
|
|
1265
|
+
const weekday = new Intl.DateTimeFormat(locale, { weekday: "short" });
|
|
1266
|
+
const list = Array.from({ length: days }, (_, i) => addDays(first, i));
|
|
1267
|
+
return /* @__PURE__ */ jsx12(ScrollView3, { horizontal: true, showsHorizontalScrollIndicator: false, role: "radiogroup", "aria-label": label, contentContainerStyle: styles11.strip, style, children: list.map((iso) => {
|
|
1268
|
+
const selected = iso === value;
|
|
1269
|
+
const disabled = Boolean(isDateDisabled?.(iso));
|
|
1270
|
+
const marked = Boolean(isDateMarked?.(iso));
|
|
1271
|
+
const name = longDate(locale, iso);
|
|
1272
|
+
return /* @__PURE__ */ jsxs9(
|
|
1273
|
+
Pressable6,
|
|
1274
|
+
{
|
|
1275
|
+
role: "radio",
|
|
1276
|
+
"aria-checked": selected,
|
|
1277
|
+
"aria-label": marked ? `${name}, ${markedLabel}` : name,
|
|
1278
|
+
"aria-disabled": disabled || void 0,
|
|
1279
|
+
"aria-current": iso === today ? "date" : void 0,
|
|
1280
|
+
disabled,
|
|
1281
|
+
onPress: () => {
|
|
1282
|
+
haptic("selection");
|
|
1283
|
+
setValue(iso);
|
|
1284
|
+
onValueChange?.(iso);
|
|
1285
|
+
},
|
|
1286
|
+
style: ({ pressed }) => [
|
|
1287
|
+
styles11.stripDay,
|
|
1288
|
+
{
|
|
1289
|
+
borderRadius: radius3.xl,
|
|
1290
|
+
backgroundColor: selected ? theme.accent : disabled ? "transparent" : theme.surface2,
|
|
1291
|
+
borderColor: selected ? theme.accent : theme.borderDefault,
|
|
1292
|
+
borderStyle: disabled ? "dashed" : "solid",
|
|
1293
|
+
transform: [{ scale: pressed ? 0.95 : 1 }]
|
|
1294
|
+
}
|
|
1295
|
+
],
|
|
1296
|
+
children: [
|
|
1297
|
+
iso === today ? /* @__PURE__ */ jsx12(Node, { color: selected ? theme.onAccent : theme.accent, style: styles11.stripNode }) : null,
|
|
1298
|
+
/* @__PURE__ */ jsx12(Text9, { style: [styles11.stripWeekday, { color: selected ? theme.onAccent : disabled ? theme.textMuted : theme.textSecondary }], children: weekday.format(toLocalDate(iso)).replace(/\.$/, "").toUpperCase() }),
|
|
1299
|
+
/* @__PURE__ */ jsx12(Text9, { style: [styles11.stripNumber, { color: selected ? theme.onAccent : disabled ? theme.textMuted : theme.textPrimary }], children: Number(iso.slice(8)) }),
|
|
1300
|
+
/* @__PURE__ */ jsx12(View8, { style: [styles11.dot, marked ? { backgroundColor: selected ? theme.onAccent : theme.textSecondary } : null] })
|
|
1301
|
+
]
|
|
1302
|
+
},
|
|
1303
|
+
iso
|
|
1304
|
+
);
|
|
1305
|
+
}) });
|
|
1306
|
+
}
|
|
1307
|
+
function TimePicker({ label, locale, value: valueProp, defaultValue = null, onValueChange, variant = "wheel", minuteStep = 5, hour12, labels: given, slots = [], isTimeDisabled, disabled, style }) {
|
|
1308
|
+
const { theme, radius: radius3, haptic } = useTheme();
|
|
1309
|
+
const [value, setOwn] = useOwn(valueProp, defaultValue);
|
|
1310
|
+
const set = (next) => {
|
|
1311
|
+
setOwn(next);
|
|
1312
|
+
onValueChange?.(next);
|
|
1313
|
+
};
|
|
1314
|
+
if (variant === "slots")
|
|
1315
|
+
return /* @__PURE__ */ jsx12(View8, { role: "radiogroup", "aria-label": label, style: [styles11.slots, style], children: slots.map((t) => {
|
|
1316
|
+
const selected = t === value;
|
|
1317
|
+
const off = disabled || Boolean(isTimeDisabled?.(t));
|
|
1318
|
+
return /* @__PURE__ */ jsx12(
|
|
1319
|
+
Pressable6,
|
|
1320
|
+
{
|
|
1321
|
+
role: "radio",
|
|
1322
|
+
"aria-checked": selected,
|
|
1323
|
+
"aria-label": formatTime(locale, t),
|
|
1324
|
+
"aria-disabled": off || void 0,
|
|
1325
|
+
disabled: off,
|
|
1326
|
+
onPress: () => {
|
|
1327
|
+
haptic("selection");
|
|
1328
|
+
set(t);
|
|
1329
|
+
},
|
|
1330
|
+
style: ({ pressed }) => [
|
|
1331
|
+
styles11.slot,
|
|
1332
|
+
{
|
|
1333
|
+
borderRadius: radius3.lg,
|
|
1334
|
+
backgroundColor: selected ? theme.accent : off ? "transparent" : theme.surface2,
|
|
1335
|
+
borderColor: selected ? theme.accent : theme.borderDefault,
|
|
1336
|
+
borderStyle: off ? "dashed" : "solid",
|
|
1337
|
+
transform: [{ scale: pressed ? 0.97 : 1 }]
|
|
1338
|
+
}
|
|
1339
|
+
],
|
|
1340
|
+
children: /* @__PURE__ */ jsx12(Text9, { style: [styles11.slotText, { color: selected ? theme.onAccent : off ? theme.textMuted : theme.textPrimary, textDecorationLine: off ? "line-through" : "none" }], children: formatTime(locale, t) })
|
|
1341
|
+
},
|
|
1342
|
+
t
|
|
1343
|
+
);
|
|
1344
|
+
}) });
|
|
1345
|
+
const labels = { hours: "Hours", minutes: "Minutes", period: "AM/PM", ...given };
|
|
1346
|
+
const twelve = hour12 ?? uses12Hours(locale);
|
|
1347
|
+
const total = timeToMinutes(value) ?? 9 * 60;
|
|
1348
|
+
const h24 = Math.floor(total / 60);
|
|
1349
|
+
const minute = total % 60;
|
|
1350
|
+
const pm = h24 >= 12;
|
|
1351
|
+
const two = (n) => String(n).padStart(2, "0");
|
|
1352
|
+
const put = (h, m) => set(`${two(h)}:${two(m)}`);
|
|
1353
|
+
const hours = twelve ? [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map((h) => ({ value: String(h), label: String(h) })) : Array.from({ length: 24 }, (_, h) => ({ value: String(h), label: two(h) }));
|
|
1354
|
+
const minutes = Array.from({ length: Math.ceil(60 / minuteStep) }, (_, i) => ({ value: String(i * minuteStep), label: two(i * minuteStep) }));
|
|
1355
|
+
const [am, pmLabel] = dayPeriods(locale);
|
|
1356
|
+
return /* @__PURE__ */ jsxs9(WheelPicker, { label: value ? `${label}, ${formatTime(locale, value)}` : label, style, children: [
|
|
1357
|
+
/* @__PURE__ */ jsx12(Wheel, { label: labels.hours, options: hours, disabled, value: twelve ? String(h24 % 12 === 0 ? 12 : h24 % 12) : String(h24), onValueChange: (v) => put(twelve ? Number(v) % 12 + (pm ? 12 : 0) : Number(v), minute) }),
|
|
1358
|
+
/* @__PURE__ */ jsx12(WheelDivider, { children: ":" }),
|
|
1359
|
+
/* @__PURE__ */ jsx12(Wheel, { label: labels.minutes, options: minutes, disabled, value: String(Math.min(60 - minuteStep, Math.round(minute / minuteStep) * minuteStep)), onValueChange: (v) => put(h24, Number(v)) }),
|
|
1360
|
+
twelve ? /* @__PURE__ */ jsx12(
|
|
1361
|
+
Wheel,
|
|
1362
|
+
{
|
|
1363
|
+
label: labels.period,
|
|
1364
|
+
options: [
|
|
1365
|
+
{ value: "am", label: am },
|
|
1366
|
+
{ value: "pm", label: pmLabel }
|
|
1367
|
+
],
|
|
1368
|
+
disabled,
|
|
1369
|
+
value: pm ? "pm" : "am",
|
|
1370
|
+
onValueChange: (v) => put(h24 % 12 + (v === "pm" ? 12 : 0), minute)
|
|
1371
|
+
}
|
|
1372
|
+
) : null
|
|
1373
|
+
] });
|
|
1374
|
+
}
|
|
1375
|
+
function DateWheel({ label, locale, value: valueProp, defaultValue = null, onValueChange, min, max, defaultView, hint, error, labels: given, disabled, style }) {
|
|
1376
|
+
const { theme } = useTheme();
|
|
1377
|
+
const names = { day: "Day", month: "Month", year: "Year", ...given };
|
|
1378
|
+
const [value, setOwn] = useOwn(valueProp, defaultValue);
|
|
1379
|
+
const today = todayIso();
|
|
1380
|
+
const hi = max ?? today;
|
|
1381
|
+
const lo = min ?? isoOf(Number(today.slice(0, 4)) - 120, 1, 1);
|
|
1382
|
+
const { year, month, day } = isoParts(value || defaultView || hi);
|
|
1383
|
+
const months = monthNames(locale, "long");
|
|
1384
|
+
const set = (y, m, d) => {
|
|
1385
|
+
let next = isoOf(y, m, d);
|
|
1386
|
+
if (next > hi) next = hi;
|
|
1387
|
+
if (next < lo) next = lo;
|
|
1388
|
+
setOwn(next);
|
|
1389
|
+
onValueChange?.(next);
|
|
1390
|
+
};
|
|
1391
|
+
const last = daysInMonth(year, month);
|
|
1392
|
+
const columns = {
|
|
1393
|
+
day: /* @__PURE__ */ jsx12(Wheel, { label: names.day, disabled, options: Array.from({ length: last }, (_, i) => ({ value: String(i + 1), label: String(i + 1), disabled: isoOf(year, month, i + 1) > hi || isoOf(year, month, i + 1) < lo })), value: String(Math.min(day, last)), onValueChange: (v) => set(year, month, Number(v)), style: styles11.dayWheel }, "day"),
|
|
1394
|
+
month: /* @__PURE__ */ jsx12(Wheel, { label: names.month, disabled, options: months.map((n, i) => ({ value: String(i + 1), label: n, disabled: isoOf(year, i + 1, 1) > hi || isoOf(year, i + 1, daysInMonth(year, i + 1)) < lo })), value: String(month), onValueChange: (v) => set(year, Number(v), day), style: styles11.monthWheel }, "month"),
|
|
1395
|
+
year: /* @__PURE__ */ jsx12(Wheel, { label: names.year, disabled, options: yearRange(Number(hi.slice(0, 4)), Number(lo.slice(0, 4))).map((y) => ({ value: String(y), label: String(y) })), value: String(year), onValueChange: (v) => set(Number(v), month, day), style: styles11.yearWheel }, "year")
|
|
1396
|
+
};
|
|
1397
|
+
const caption = error ?? hint;
|
|
1398
|
+
return /* @__PURE__ */ jsxs9(View8, { style: [styles11.field, style], children: [
|
|
1399
|
+
/* @__PURE__ */ jsx12(Text9, { "aria-hidden": true, style: [styles11.fieldLabel, { color: theme.textSecondary }], children: label }),
|
|
1400
|
+
/* @__PURE__ */ jsx12(WheelPicker, { label, invalid: Boolean(error), children: datePartsOrder(locale).map((part) => columns[part]) }),
|
|
1401
|
+
caption ? /* @__PURE__ */ jsx12(Text9, { role: error ? "alert" : void 0, "aria-live": error ? "polite" : void 0, style: [styles11.caption, { color: error ? theme.dangerText : theme.textSecondary }], children: caption }) : null
|
|
1402
|
+
] });
|
|
1403
|
+
}
|
|
1404
|
+
var styles11 = StyleSheet11.create({
|
|
1405
|
+
calendar: { padding: 12, gap: 4, borderWidth: StyleSheet11.hairlineWidth, alignSelf: "flex-start" },
|
|
1406
|
+
header: { flexDirection: "row", alignItems: "center", justifyContent: "space-between", marginBottom: 6, gap: 8 },
|
|
1407
|
+
title: { fontSize: 15, fontWeight: "700", textTransform: "capitalize" },
|
|
1408
|
+
nav: { width: 36, height: 36, alignItems: "center", justifyContent: "center", borderWidth: StyleSheet11.hairlineWidth },
|
|
1409
|
+
week: { flexDirection: "row" },
|
|
1410
|
+
weekday: { width: 44, textAlign: "center", fontSize: 11, fontWeight: "700", paddingBottom: 4 },
|
|
1411
|
+
cell: { width: 44, height: 44, marginVertical: 1 },
|
|
1412
|
+
day: { flex: 1, alignItems: "center", justifyContent: "center" },
|
|
1413
|
+
dayText: { fontSize: 15, fontVariant: ["tabular-nums"] },
|
|
1414
|
+
node: { width: 5, height: 5, borderRadius: 1, transform: [{ rotate: "45deg" }] },
|
|
1415
|
+
todayNode: { position: "absolute", bottom: 5 },
|
|
1416
|
+
months: { flexDirection: "row", flexWrap: "wrap", width: 264, gap: 6 },
|
|
1417
|
+
month: { width: 84, height: 44, alignItems: "center", justifyContent: "center" },
|
|
1418
|
+
monthText: { fontSize: 14, textTransform: "capitalize" },
|
|
1419
|
+
strip: { gap: 8, paddingVertical: 4 },
|
|
1420
|
+
stripDay: { width: 56, height: 72, alignItems: "center", justifyContent: "center", gap: 2, borderWidth: 1 },
|
|
1421
|
+
stripNode: { position: "absolute", top: 6 },
|
|
1422
|
+
stripWeekday: { fontSize: 11, fontWeight: "700", letterSpacing: 0.5 },
|
|
1423
|
+
stripNumber: { fontSize: 19, fontWeight: "700", fontVariant: ["tabular-nums"] },
|
|
1424
|
+
dot: { width: 6, height: 6, borderRadius: 3 },
|
|
1425
|
+
slots: { flexDirection: "row", flexWrap: "wrap", gap: 8, alignSelf: "stretch" },
|
|
1426
|
+
slot: { minWidth: 88, height: 44, paddingHorizontal: 12, alignItems: "center", justifyContent: "center", borderWidth: 1 },
|
|
1427
|
+
slotText: { fontSize: 15, fontWeight: "600", fontVariant: ["tabular-nums"] },
|
|
1428
|
+
field: { gap: 6, alignSelf: "stretch" },
|
|
1429
|
+
fieldLabel: { fontSize: 12, lineHeight: 16, fontWeight: "600" },
|
|
1430
|
+
caption: { fontSize: 12, lineHeight: 16 },
|
|
1431
|
+
dayWheel: { minWidth: 56 },
|
|
1432
|
+
monthWheel: { minWidth: 128 },
|
|
1433
|
+
yearWheel: { minWidth: 76 },
|
|
1434
|
+
disabled: { opacity: 0.4 }
|
|
1435
|
+
});
|
|
1436
|
+
|
|
1437
|
+
// src/native/empty-state.tsx
|
|
1438
|
+
import { StyleSheet as StyleSheet12, View as View9 } from "react-native";
|
|
1439
|
+
import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
883
1440
|
function EmptyState({ icon, title, description, action, style, ...props }) {
|
|
884
1441
|
const { theme } = useTheme();
|
|
885
|
-
return /* @__PURE__ */
|
|
886
|
-
icon ? /* @__PURE__ */
|
|
887
|
-
/* @__PURE__ */
|
|
888
|
-
description ? /* @__PURE__ */
|
|
889
|
-
action ? /* @__PURE__ */
|
|
1442
|
+
return /* @__PURE__ */ jsxs10(View9, { ...props, style: [styles12.root, style], children: [
|
|
1443
|
+
icon ? /* @__PURE__ */ jsx13(View9, { "aria-hidden": true, style: [styles12.icon, { backgroundColor: theme.surface2 }], children: icon }) : null,
|
|
1444
|
+
/* @__PURE__ */ jsx13(Txt, { variant: "label", role: "heading", style: styles12.center, children: title }),
|
|
1445
|
+
description ? /* @__PURE__ */ jsx13(Txt, { tone: "secondary", style: styles12.center, children: description }) : null,
|
|
1446
|
+
action ? /* @__PURE__ */ jsx13(View9, { style: styles12.action, children: action }) : null
|
|
890
1447
|
] });
|
|
891
1448
|
}
|
|
892
|
-
var
|
|
1449
|
+
var styles12 = StyleSheet12.create({
|
|
893
1450
|
root: { alignItems: "center", justifyContent: "center", gap: 8, paddingVertical: 40, paddingHorizontal: 24 },
|
|
894
1451
|
icon: { width: 48, height: 48, borderRadius: 24, alignItems: "center", justifyContent: "center", marginBottom: 4 },
|
|
895
1452
|
center: { textAlign: "center", maxWidth: 360 },
|
|
@@ -897,18 +1454,18 @@ var styles10 = StyleSheet10.create({
|
|
|
897
1454
|
});
|
|
898
1455
|
|
|
899
1456
|
// src/native/field.tsx
|
|
900
|
-
import * as
|
|
901
|
-
import { StyleSheet as
|
|
902
|
-
import { jsx as
|
|
1457
|
+
import * as React11 from "react";
|
|
1458
|
+
import { StyleSheet as StyleSheet13, Text as Text10, TextInput as TextInput2, View as View10 } from "react-native";
|
|
1459
|
+
import { jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
903
1460
|
function TextField({ label, hint, error, value, defaultValue, onValueChange, disabled, end, inputRef, style, multiline, onFocus, onBlur, ...props }) {
|
|
904
1461
|
const { theme, radius: radius3 } = useTheme();
|
|
905
|
-
const [focused, setFocused] =
|
|
1462
|
+
const [focused, setFocused] = React11.useState(false);
|
|
906
1463
|
const caption = error ?? hint;
|
|
907
1464
|
const border = error ? theme.danger : focused ? theme.accent : theme.borderDefault;
|
|
908
|
-
return /* @__PURE__ */
|
|
909
|
-
/* @__PURE__ */
|
|
910
|
-
/* @__PURE__ */
|
|
911
|
-
/* @__PURE__ */
|
|
1465
|
+
return /* @__PURE__ */ jsxs11(View10, { style: [styles13.root, disabled ? styles13.disabled : null, style], children: [
|
|
1466
|
+
/* @__PURE__ */ jsx14(Text10, { style: [styles13.label, { color: theme.textSecondary }], children: label }),
|
|
1467
|
+
/* @__PURE__ */ jsxs11(View10, { style: [styles13.frame, multiline ? styles13.multiline : null, { borderRadius: radius3.md, borderColor: border, backgroundColor: theme.surface2 }], children: [
|
|
1468
|
+
/* @__PURE__ */ jsx14(
|
|
912
1469
|
TextInput2,
|
|
913
1470
|
{
|
|
914
1471
|
ref: inputRef,
|
|
@@ -930,16 +1487,16 @@ function TextField({ label, hint, error, value, defaultValue, onValueChange, dis
|
|
|
930
1487
|
setFocused(false);
|
|
931
1488
|
onBlur?.(event);
|
|
932
1489
|
},
|
|
933
|
-
style: [
|
|
1490
|
+
style: [styles13.input, multiline ? styles13.inputMultiline : null, { color: theme.textPrimary }],
|
|
934
1491
|
...props
|
|
935
1492
|
}
|
|
936
1493
|
),
|
|
937
|
-
end ? /* @__PURE__ */
|
|
1494
|
+
end ? /* @__PURE__ */ jsx14(View10, { style: styles13.end, children: end }) : null
|
|
938
1495
|
] }),
|
|
939
|
-
caption ? /* @__PURE__ */
|
|
1496
|
+
caption ? /* @__PURE__ */ jsx14(Text10, { role: error ? "alert" : void 0, "aria-live": error ? "polite" : void 0, style: [styles13.caption, { color: error ? theme.dangerText : theme.textSecondary }], children: caption }) : null
|
|
940
1497
|
] });
|
|
941
1498
|
}
|
|
942
|
-
var
|
|
1499
|
+
var styles13 = StyleSheet13.create({
|
|
943
1500
|
root: { gap: 6, alignSelf: "stretch" },
|
|
944
1501
|
label: { fontSize: 12, lineHeight: 16, fontWeight: "600" },
|
|
945
1502
|
frame: { flexDirection: "row", alignItems: "center", minHeight: 44, paddingHorizontal: 12, borderWidth: 1 },
|
|
@@ -952,14 +1509,14 @@ var styles11 = StyleSheet11.create({
|
|
|
952
1509
|
});
|
|
953
1510
|
|
|
954
1511
|
// src/native/goal-gauge.tsx
|
|
955
|
-
import { Animated as Animated4, StyleSheet as
|
|
1512
|
+
import { Animated as Animated4, StyleSheet as StyleSheet14, View as View11 } from "react-native";
|
|
956
1513
|
|
|
957
1514
|
// src/native/story-motion.ts
|
|
958
|
-
import * as
|
|
1515
|
+
import * as React12 from "react";
|
|
959
1516
|
import { AccessibilityInfo as AccessibilityInfo2, Animated as Animated3, Easing } from "react-native";
|
|
960
1517
|
function useEntrance(animated, delay = 0, duration = 700) {
|
|
961
|
-
const [value] =
|
|
962
|
-
|
|
1518
|
+
const [value] = React12.useState(() => new Animated3.Value(animated ? 0 : 1));
|
|
1519
|
+
React12.useEffect(() => {
|
|
963
1520
|
if (!animated) return;
|
|
964
1521
|
let cancelled = false;
|
|
965
1522
|
void AccessibilityInfo2.isReduceMotionEnabled().then((reduce) => {
|
|
@@ -975,17 +1532,17 @@ function useEntrance(animated, delay = 0, duration = 700) {
|
|
|
975
1532
|
}
|
|
976
1533
|
|
|
977
1534
|
// src/native/goal-gauge.tsx
|
|
978
|
-
import { jsx as
|
|
1535
|
+
import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
979
1536
|
function Cell({ lit, animate, order, animated, arcade }) {
|
|
980
1537
|
const { theme } = useTheme();
|
|
981
1538
|
const t = useEntrance(animated && animate, 300 + order * 100, 350);
|
|
982
1539
|
const spentOpacity = arcade ? 0.14 : 1;
|
|
983
1540
|
const opacity = !animate ? 1 : lit ? t.interpolate({ inputRange: [0, 1], outputRange: [0.25, 1] }) : t.interpolate({ inputRange: [0, 1], outputRange: [1, arcade ? 0.14 : 1] });
|
|
984
1541
|
const color = lit || arcade ? theme.accent : theme.surface3;
|
|
985
|
-
return /* @__PURE__ */
|
|
1542
|
+
return /* @__PURE__ */ jsx15(
|
|
986
1543
|
Animated4.View,
|
|
987
1544
|
{
|
|
988
|
-
style: [
|
|
1545
|
+
style: [styles14.cell, arcade ? styles14.cellArcade : null, { backgroundColor: color, opacity: lit || animate ? opacity : spentOpacity }]
|
|
989
1546
|
}
|
|
990
1547
|
);
|
|
991
1548
|
}
|
|
@@ -995,8 +1552,8 @@ function GoalGauge({ label, segments, value, valueText, mode = "fill", showLabel
|
|
|
995
1552
|
const lit = Math.min(total, Math.max(0, Math.round(value ?? total)));
|
|
996
1553
|
const words = valueText ?? `${lit} / ${total}`;
|
|
997
1554
|
const arcade = variant === "arcade";
|
|
998
|
-
return /* @__PURE__ */
|
|
999
|
-
|
|
1555
|
+
return /* @__PURE__ */ jsxs12(
|
|
1556
|
+
View11,
|
|
1000
1557
|
{
|
|
1001
1558
|
accessible: true,
|
|
1002
1559
|
role: "meter",
|
|
@@ -1006,22 +1563,22 @@ function GoalGauge({ label, segments, value, valueText, mode = "fill", showLabel
|
|
|
1006
1563
|
"aria-valuenow": lit,
|
|
1007
1564
|
"aria-valuetext": words,
|
|
1008
1565
|
...props,
|
|
1009
|
-
style: [
|
|
1566
|
+
style: [styles14.root, style],
|
|
1010
1567
|
children: [
|
|
1011
|
-
showLabel ? /* @__PURE__ */
|
|
1012
|
-
/* @__PURE__ */
|
|
1013
|
-
arcade ? null : /* @__PURE__ */
|
|
1568
|
+
showLabel ? /* @__PURE__ */ jsxs12(View11, { "aria-hidden": true, style: [styles14.head, arcade ? styles14.headArcade : null], children: [
|
|
1569
|
+
/* @__PURE__ */ jsx15(Txt, { variant: arcade ? "mono" : "caption", tone: "secondary", children: arcade ? label.toUpperCase() : label }),
|
|
1570
|
+
arcade ? null : /* @__PURE__ */ jsx15(Txt, { variant: "caption", children: words })
|
|
1014
1571
|
] }) : null,
|
|
1015
|
-
/* @__PURE__ */
|
|
1572
|
+
/* @__PURE__ */ jsx15(View11, { "aria-hidden": true, style: [styles14.cells, arcade ? [styles14.cellsArcade, { borderColor: theme.borderSubtle, backgroundColor: theme.surface1 }] : null], children: Array.from({ length: total }, (_, i) => {
|
|
1016
1573
|
const on = i < lit;
|
|
1017
1574
|
const animate = mode === "fill" ? on : !on;
|
|
1018
|
-
return /* @__PURE__ */
|
|
1575
|
+
return /* @__PURE__ */ jsx15(Cell, { lit: on, animate, order: mode === "fill" ? i : i - lit, animated, arcade }, i);
|
|
1019
1576
|
}) })
|
|
1020
1577
|
]
|
|
1021
1578
|
}
|
|
1022
1579
|
);
|
|
1023
1580
|
}
|
|
1024
|
-
var
|
|
1581
|
+
var styles14 = StyleSheet14.create({
|
|
1025
1582
|
root: { alignSelf: "stretch", gap: 8 },
|
|
1026
1583
|
head: { flexDirection: "row", justifyContent: "space-between", alignItems: "baseline", gap: 12 },
|
|
1027
1584
|
headArcade: { justifyContent: "center" },
|
|
@@ -1032,8 +1589,8 @@ var styles12 = StyleSheet12.create({
|
|
|
1032
1589
|
});
|
|
1033
1590
|
|
|
1034
1591
|
// src/native/KrizakaMark.tsx
|
|
1035
|
-
import { View as
|
|
1036
|
-
import
|
|
1592
|
+
import { View as View12 } from "react-native";
|
|
1593
|
+
import Svg4, { Circle, Defs as Defs2, G as Group, LinearGradient as LinearGradient2, Path as Path3, RadialGradient, Stop as Stop2 } from "react-native-svg";
|
|
1037
1594
|
|
|
1038
1595
|
// src/marks/krizaka-geometry.ts
|
|
1039
1596
|
var KRIZAKA = {
|
|
@@ -1055,13 +1612,13 @@ var KRIZAKA = {
|
|
|
1055
1612
|
};
|
|
1056
1613
|
|
|
1057
1614
|
// src/native/mark-motion.ts
|
|
1058
|
-
import { useEffect as
|
|
1615
|
+
import { useEffect as useEffect6, useState as useState12 } from "react";
|
|
1059
1616
|
import { AccessibilityInfo as AccessibilityInfo3, Animated as Animated5, Easing as Easing2 } from "react-native";
|
|
1060
1617
|
var markA11y = (title) => title ? { accessible: true, accessibilityRole: "image", accessibilityLabel: title } : { accessibilityElementsHidden: true, importantForAccessibility: "no-hide-descendants" };
|
|
1061
1618
|
function useMarkMotion(size, animated, spinMs = 3e4) {
|
|
1062
|
-
const [spin] =
|
|
1063
|
-
const [pulse] =
|
|
1064
|
-
|
|
1619
|
+
const [spin] = useState12(() => new Animated5.Value(0));
|
|
1620
|
+
const [pulse] = useState12(() => new Animated5.Value(0));
|
|
1621
|
+
useEffect6(() => {
|
|
1065
1622
|
if (!animated) return;
|
|
1066
1623
|
let loops = [];
|
|
1067
1624
|
let cancelled = false;
|
|
@@ -1092,39 +1649,39 @@ function useMarkMotion(size, animated, spinMs = 3e4) {
|
|
|
1092
1649
|
}
|
|
1093
1650
|
|
|
1094
1651
|
// src/native/KrizakaMark.tsx
|
|
1095
|
-
import { Fragment as Fragment2, jsx as
|
|
1652
|
+
import { Fragment as Fragment2, jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1096
1653
|
function KrizakaMark({ size = 48, animated = true, title, neutral }) {
|
|
1097
1654
|
const { theme } = useTheme();
|
|
1098
1655
|
const { Animated: Animated14, layer, spinStyle, pulseStyle } = useMarkMotion(size, animated);
|
|
1099
1656
|
const id = useSvgId("kzm");
|
|
1100
1657
|
const viewBox = size < 48 ? KRIZAKA.croppedViewBox : KRIZAKA.viewBox;
|
|
1101
1658
|
const stroke = neutral ?? theme.textMuted;
|
|
1102
|
-
const blue = /* @__PURE__ */
|
|
1103
|
-
const dot = (c) => /* @__PURE__ */
|
|
1104
|
-
/* @__PURE__ */
|
|
1105
|
-
/* @__PURE__ */
|
|
1659
|
+
const blue = /* @__PURE__ */ jsx16(LinearGradient2, { id: `${id}b`, gradientUnits: "userSpaceOnUse", x1: KRIZAKA.blue.x1 + KRIZAKA.offset, y1: KRIZAKA.blue.y1 + KRIZAKA.offset, x2: KRIZAKA.blue.x2 + KRIZAKA.offset, y2: KRIZAKA.blue.y2 + KRIZAKA.offset, children: KRIZAKA.blue.stops.map(([offset, color]) => /* @__PURE__ */ jsx16(Stop2, { offset, stopColor: color }, offset)) });
|
|
1660
|
+
const dot = (c) => /* @__PURE__ */ jsxs13(Fragment2, { children: [
|
|
1661
|
+
/* @__PURE__ */ jsx16(Circle, { cx: c.cx, cy: c.cy, r: c.r, fill: `url(#${id}b)` }),
|
|
1662
|
+
/* @__PURE__ */ jsx16(Circle, { cx: c.cx, cy: c.cy, r: c.inner, fill: KRIZAKA.highlight })
|
|
1106
1663
|
] });
|
|
1107
|
-
return /* @__PURE__ */
|
|
1108
|
-
/* @__PURE__ */
|
|
1109
|
-
/* @__PURE__ */
|
|
1110
|
-
/* @__PURE__ */
|
|
1111
|
-
/* @__PURE__ */
|
|
1112
|
-
/* @__PURE__ */
|
|
1664
|
+
return /* @__PURE__ */ jsxs13(View12, { style: { width: size, height: size }, ...markA11y(title), children: [
|
|
1665
|
+
/* @__PURE__ */ jsxs13(Svg4, { viewBox, style: layer, children: [
|
|
1666
|
+
/* @__PURE__ */ jsxs13(Defs2, { children: [
|
|
1667
|
+
/* @__PURE__ */ jsxs13(RadialGradient, { id: `${id}g`, cx: "50%", cy: "50%", r: "50%", children: [
|
|
1668
|
+
/* @__PURE__ */ jsx16(Stop2, { offset: "0%", stopColor: KRIZAKA.glow.color, stopOpacity: KRIZAKA.glow.opacity }),
|
|
1669
|
+
/* @__PURE__ */ jsx16(Stop2, { offset: "100%", stopColor: KRIZAKA.glow.color, stopOpacity: 0 })
|
|
1113
1670
|
] }),
|
|
1114
|
-
/* @__PURE__ */
|
|
1115
|
-
/* @__PURE__ */
|
|
1116
|
-
/* @__PURE__ */
|
|
1671
|
+
/* @__PURE__ */ jsxs13(LinearGradient2, { id: `${id}i`, gradientUnits: "userSpaceOnUse", x1: KRIZAKA.ink.x1 + KRIZAKA.offset, y1: KRIZAKA.ink.y1 + KRIZAKA.offset, x2: KRIZAKA.ink.x2 + KRIZAKA.offset, y2: KRIZAKA.ink.y2 + KRIZAKA.offset, children: [
|
|
1672
|
+
/* @__PURE__ */ jsx16(Stop2, { offset: "0%", stopColor: theme.textSecondary }),
|
|
1673
|
+
/* @__PURE__ */ jsx16(Stop2, { offset: "100%", stopColor: theme.textPrimary })
|
|
1117
1674
|
] }),
|
|
1118
1675
|
blue
|
|
1119
1676
|
] }),
|
|
1120
|
-
size >= 48 ? /* @__PURE__ */
|
|
1121
|
-
/* @__PURE__ */
|
|
1122
|
-
/* @__PURE__ */
|
|
1677
|
+
size >= 48 ? /* @__PURE__ */ jsx16(Circle, { cx: 200, cy: 200, r: 190, fill: `url(#${id}g)` }) : null,
|
|
1678
|
+
/* @__PURE__ */ jsx16(Circle, { cx: 200, cy: 200, r: KRIZAKA.ring.r, stroke, strokeWidth: KRIZAKA.ring.width, opacity: 0.35, fill: "none" }),
|
|
1679
|
+
/* @__PURE__ */ jsx16(Group, { transform: `translate(${KRIZAKA.offset} ${KRIZAKA.offset})`, children: /* @__PURE__ */ jsx16(Path3, { d: KRIZAKA.shield, stroke: `url(#${id}i)`, strokeWidth: KRIZAKA.stroke, strokeLinecap: "round", strokeLinejoin: "round", fill: "none" }) })
|
|
1123
1680
|
] }),
|
|
1124
|
-
/* @__PURE__ */
|
|
1125
|
-
/* @__PURE__ */
|
|
1126
|
-
/* @__PURE__ */
|
|
1127
|
-
/* @__PURE__ */
|
|
1681
|
+
/* @__PURE__ */ jsx16(Animated14.View, { style: [layer, spinStyle], children: /* @__PURE__ */ jsx16(Svg4, { viewBox, style: layer, children: /* @__PURE__ */ jsx16(Circle, { cx: 200, cy: 200, r: KRIZAKA.orbit.r, stroke, strokeWidth: KRIZAKA.orbit.width, strokeDasharray: KRIZAKA.orbit.dash, opacity: 0.6, fill: "none" }) }) }),
|
|
1682
|
+
/* @__PURE__ */ jsx16(Animated14.View, { style: [layer, pulseStyle], children: /* @__PURE__ */ jsxs13(Svg4, { viewBox, style: layer, children: [
|
|
1683
|
+
/* @__PURE__ */ jsx16(Defs2, { children: blue }),
|
|
1684
|
+
/* @__PURE__ */ jsxs13(Group, { transform: `translate(${KRIZAKA.offset} ${KRIZAKA.offset})`, children: [
|
|
1128
1685
|
dot(KRIZAKA.node),
|
|
1129
1686
|
dot(KRIZAKA.core)
|
|
1130
1687
|
] })
|
|
@@ -1133,13 +1690,13 @@ function KrizakaMark({ size = 48, animated = true, title, neutral }) {
|
|
|
1133
1690
|
}
|
|
1134
1691
|
|
|
1135
1692
|
// src/native/mascot-state.tsx
|
|
1136
|
-
import * as
|
|
1137
|
-
import { AccessibilityInfo as AccessibilityInfo5, Animated as Animated7, Easing as Easing4, StyleSheet as
|
|
1693
|
+
import * as React14 from "react";
|
|
1694
|
+
import { AccessibilityInfo as AccessibilityInfo5, Animated as Animated7, Easing as Easing4, StyleSheet as StyleSheet15, View as View14 } from "react-native";
|
|
1138
1695
|
|
|
1139
1696
|
// src/native/mascots.tsx
|
|
1140
|
-
import { useEffect as
|
|
1141
|
-
import { AccessibilityInfo as AccessibilityInfo4, Animated as Animated6, Easing as Easing3, View as
|
|
1142
|
-
import
|
|
1697
|
+
import { useEffect as useEffect7, useState as useState13 } from "react";
|
|
1698
|
+
import { AccessibilityInfo as AccessibilityInfo4, Animated as Animated6, Easing as Easing3, View as View13 } from "react-native";
|
|
1699
|
+
import Svg5, { Circle as Circle2, Defs as Defs3, Ellipse, G, LinearGradient as LinearGradient3, Path as Path4, Rect as Rect2, Stop as Stop3 } from "react-native-svg";
|
|
1143
1700
|
|
|
1144
1701
|
// src/mascots/geometry.ts
|
|
1145
1702
|
var mirror = (d) => d.replace(/(-?\d+(?:\.\d+)?) (-?\d+(?:\.\d+)?)/g, (_, x, y) => `${120 - Number(x)} ${y}`);
|
|
@@ -1297,10 +1854,10 @@ var SHADE = "#000000";
|
|
|
1297
1854
|
var PARCEL = ["#f59e0b", "#d97706", "#b45309"];
|
|
1298
1855
|
|
|
1299
1856
|
// src/native/mascots.tsx
|
|
1300
|
-
import { jsx as
|
|
1857
|
+
import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1301
1858
|
function useBob(animated) {
|
|
1302
|
-
const [y] =
|
|
1303
|
-
|
|
1859
|
+
const [y] = useState13(() => new Animated6.Value(0));
|
|
1860
|
+
useEffect7(() => {
|
|
1304
1861
|
if (!animated) return;
|
|
1305
1862
|
let loop;
|
|
1306
1863
|
let cancelled = false;
|
|
@@ -1331,56 +1888,56 @@ function Mascot({ bird = "owl", mood = "welcome", tone: tone2 = "brand", size =
|
|
|
1331
1888
|
const look3 = mood === "thinking" ? 1.4 : 0;
|
|
1332
1889
|
const rot = (deg, [x, y]) => `rotate(${deg} ${x} ${y})`;
|
|
1333
1890
|
const [wl, wr] = g.wings;
|
|
1334
|
-
return /* @__PURE__ */
|
|
1335
|
-
/* @__PURE__ */
|
|
1336
|
-
/* @__PURE__ */
|
|
1337
|
-
/* @__PURE__ */
|
|
1891
|
+
return /* @__PURE__ */ jsx17(View13, { style: [{ width: size, height: size }, style], ...markA11y(title), children: /* @__PURE__ */ jsx17(Animated6.View, { style: { transform: [{ translateY: bob }] }, children: /* @__PURE__ */ jsxs14(Svg5, { width: size, height: size, viewBox: "0 0 120 120", children: [
|
|
1892
|
+
/* @__PURE__ */ jsx17(Defs3, { children: /* @__PURE__ */ jsxs14(LinearGradient3, { id, x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
1893
|
+
/* @__PURE__ */ jsx17(Stop3, { offset: "0%", stopColor: p.from }),
|
|
1894
|
+
/* @__PURE__ */ jsx17(Stop3, { offset: "100%", stopColor: p.to })
|
|
1338
1895
|
] }) }),
|
|
1339
|
-
/* @__PURE__ */
|
|
1340
|
-
mood === "empty" && /* @__PURE__ */
|
|
1341
|
-
g.legs.map((d) => /* @__PURE__ */
|
|
1342
|
-
g.back?.map((d) => d.endsWith("Z") ? /* @__PURE__ */
|
|
1343
|
-
g.parcel?.map((d, i) => /* @__PURE__ */
|
|
1344
|
-
/* @__PURE__ */
|
|
1345
|
-
/* @__PURE__ */
|
|
1896
|
+
/* @__PURE__ */ jsx17(Ellipse, { cx: g.shadow[0], cy: g.shadow[1], rx: g.shadow[2], ry: g.shadow[3], fill: SHADE, opacity: 0.14 }),
|
|
1897
|
+
mood === "empty" && /* @__PURE__ */ jsx17(Path4, { d: MOOD_PARTS.tray, stroke: outline, strokeWidth: 1.6, strokeDasharray: "3 3", fill: "none" }),
|
|
1898
|
+
g.legs.map((d) => /* @__PURE__ */ jsx17(Path4, { d, stroke: p.beak, strokeWidth: 2.6, strokeLinecap: "round", fill: "none" }, d)),
|
|
1899
|
+
g.back?.map((d) => d.endsWith("Z") ? /* @__PURE__ */ jsx17(Path4, { d, fill: p.detail, ...line }, d) : /* @__PURE__ */ jsx17(Path4, { d, stroke: outline, strokeWidth: 1.4, fill: "none" }, d)),
|
|
1900
|
+
g.parcel?.map((d, i) => /* @__PURE__ */ jsx17(Path4, { d, fill: PARCEL[i], ...line }, d)),
|
|
1901
|
+
/* @__PURE__ */ jsx17(Path4, { d: g.body, fill: body, ...line }),
|
|
1902
|
+
/* @__PURE__ */ jsx17(Path4, { d: g.belly, fill: LIGHT, opacity: 0.28 }),
|
|
1346
1903
|
[wl, wr].map((w, i) => {
|
|
1347
1904
|
const turn = mood === "success" ? i === 0 ? 28 : -28 : mood === "welcome" && i === 1 ? -20 : 0;
|
|
1348
|
-
return /* @__PURE__ */
|
|
1349
|
-
/* @__PURE__ */
|
|
1350
|
-
/* @__PURE__ */
|
|
1905
|
+
return /* @__PURE__ */ jsxs14(G, { transform: turn ? rot(turn, w.pivot) : void 0, children: [
|
|
1906
|
+
/* @__PURE__ */ jsx17(Path4, { d: w.d, fill: p.wing, ...line }),
|
|
1907
|
+
/* @__PURE__ */ jsx17(Path4, { d: w.d, fill: SHADE, opacity: 0.16 })
|
|
1351
1908
|
] }, i);
|
|
1352
1909
|
}),
|
|
1353
|
-
g.neck && /* @__PURE__ */
|
|
1354
|
-
g.head.r > 0 && /* @__PURE__ */
|
|
1355
|
-
g.details.map((d) => /* @__PURE__ */
|
|
1356
|
-
g.visor && /* @__PURE__ */
|
|
1910
|
+
g.neck && /* @__PURE__ */ jsx17(Path4, { d: g.neck.d, stroke: body, strokeWidth: g.neck.width, strokeLinecap: "round", fill: "none" }),
|
|
1911
|
+
g.head.r > 0 && /* @__PURE__ */ jsx17(Circle2, { cx: g.head.cx, cy: g.head.cy, r: g.head.r, fill: body, ...line }),
|
|
1912
|
+
g.details.map((d) => /* @__PURE__ */ jsx17(Path4, { d, fill: p.detail, ...line }, d)),
|
|
1913
|
+
g.visor && /* @__PURE__ */ jsx17(Rect2, { x: g.visor.x, y: g.visor.y, width: g.visor.w, height: g.visor.h, rx: 4, fill: theme.surface0, ...line }),
|
|
1357
1914
|
g.eyes.at.map(
|
|
1358
|
-
(at, i) => mood === "empty" && g.eyes.white > 0 ? /* @__PURE__ */
|
|
1359
|
-
/* @__PURE__ */
|
|
1360
|
-
/* @__PURE__ */
|
|
1361
|
-
/* @__PURE__ */
|
|
1362
|
-
] }, i) : mood === "success" || mood === "empty" ? /* @__PURE__ */
|
|
1363
|
-
g.eyes.white > 0 && /* @__PURE__ */
|
|
1364
|
-
/* @__PURE__ */
|
|
1915
|
+
(at, i) => mood === "empty" && g.eyes.white > 0 ? /* @__PURE__ */ jsxs14(G, { children: [
|
|
1916
|
+
/* @__PURE__ */ jsx17(Circle2, { cx: at[0], cy: at[1], r: g.eyes.white, fill: LIGHT, ...line }),
|
|
1917
|
+
/* @__PURE__ */ jsx17(Circle2, { cx: at[0], cy: at[1] + g.eyes.pupil * 0.7, r: g.eyes.pupil, fill: SHADE }),
|
|
1918
|
+
/* @__PURE__ */ jsx17(Path4, { d: upperLid(at, g.eyes.white), fill: p.detail, ...line })
|
|
1919
|
+
] }, i) : mood === "success" || mood === "empty" ? /* @__PURE__ */ jsx17(Path4, { d: mood === "success" ? archEye(at, eyeR * 0.85) : lidEye(at, eyeR * 0.8), stroke: g.visor ? p.eye : outline, strokeWidth: 2.2, strokeLinecap: "round", fill: "none" }, i) : /* @__PURE__ */ jsxs14(G, { children: [
|
|
1920
|
+
g.eyes.white > 0 && /* @__PURE__ */ jsx17(Circle2, { cx: at[0], cy: at[1], r: g.eyes.white, fill: LIGHT, ...line }),
|
|
1921
|
+
/* @__PURE__ */ jsx17(Circle2, { cx: at[0] + look3, cy: at[1] - look3, r: g.eyes.pupil, fill: g.visor ? p.eye : SHADE })
|
|
1365
1922
|
] }, i)
|
|
1366
1923
|
),
|
|
1367
|
-
g.glasses && g.eyes.at.map(([x, y]) => /* @__PURE__ */
|
|
1368
|
-
mood === "error" && g.eyes.at.map((at, i) => /* @__PURE__ */
|
|
1369
|
-
/* @__PURE__ */
|
|
1370
|
-
mood === "thinking" && MOOD_PARTS.dots.map(([cx, cy, r], i) => /* @__PURE__ */
|
|
1371
|
-
(mood === "success" || mood === "error") && /* @__PURE__ */
|
|
1372
|
-
mood === "success" && /* @__PURE__ */
|
|
1373
|
-
mood === "error" && /* @__PURE__ */
|
|
1374
|
-
mood === "error" && /* @__PURE__ */
|
|
1924
|
+
g.glasses && g.eyes.at.map(([x, y]) => /* @__PURE__ */ jsx17(Circle2, { cx: x, cy: y, r: 6.5, fill: "none", stroke: outline, strokeWidth: 1.3 }, x)),
|
|
1925
|
+
mood === "error" && g.eyes.at.map((at, i) => /* @__PURE__ */ jsx17(Path4, { d: brow(at, eyeR, g.eyes.at.length === 1 ? 1 : i === 0 ? -1 : 1), stroke: outline, strokeWidth: 2, strokeLinecap: "round" }, i)),
|
|
1926
|
+
/* @__PURE__ */ jsx17(Path4, { d: g.beak, fill: p.beak, ...line }),
|
|
1927
|
+
mood === "thinking" && MOOD_PARTS.dots.map(([cx, cy, r], i) => /* @__PURE__ */ jsx17(Circle2, { cx, cy, r, fill: theme.textSecondary, opacity: 0.5 + i * 0.25 }, cx)),
|
|
1928
|
+
(mood === "success" || mood === "error") && /* @__PURE__ */ jsx17(Circle2, { cx: MOOD_PARTS.badge.cx, cy: MOOD_PARTS.badge.cy, r: MOOD_PARTS.badge.r, fill: mood === "success" ? theme.success : theme.danger }),
|
|
1929
|
+
mood === "success" && /* @__PURE__ */ jsx17(Path4, { d: MOOD_PARTS.check, stroke: theme.surface0, strokeWidth: 2.6, strokeLinecap: "round", strokeLinejoin: "round", fill: "none" }),
|
|
1930
|
+
mood === "error" && /* @__PURE__ */ jsx17(Path4, { d: MOOD_PARTS.bang.line, stroke: theme.surface0, strokeWidth: 2.8, strokeLinecap: "round" }),
|
|
1931
|
+
mood === "error" && /* @__PURE__ */ jsx17(Circle2, { cx: MOOD_PARTS.bang.dot[0], cy: MOOD_PARTS.bang.dot[1], r: 1.6, fill: theme.surface0 })
|
|
1375
1932
|
] }) }) });
|
|
1376
1933
|
}
|
|
1377
1934
|
|
|
1378
1935
|
// src/native/mascot-state.tsx
|
|
1379
|
-
import { jsx as
|
|
1936
|
+
import { jsx as jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1380
1937
|
var SIZE = { sm: 64, md: 96, lg: 128 };
|
|
1381
1938
|
function useArrival(animated) {
|
|
1382
|
-
const [value] =
|
|
1383
|
-
|
|
1939
|
+
const [value] = React14.useState(() => new Animated7.Value(animated ? 0 : 1));
|
|
1940
|
+
React14.useEffect(() => {
|
|
1384
1941
|
if (!animated) return;
|
|
1385
1942
|
let cancelled = false;
|
|
1386
1943
|
void AccessibilityInfo5.isReduceMotionEnabled().then((reduce) => {
|
|
@@ -1397,30 +1954,30 @@ function useArrival(animated) {
|
|
|
1397
1954
|
function MascotState({ bird = "owl", mood = "empty", title, description, action, size = "md", layout = "stacked", tone: tone2, animated = true, style, ...props }) {
|
|
1398
1955
|
const opacity = useArrival(animated);
|
|
1399
1956
|
const inline = layout === "inline";
|
|
1400
|
-
return /* @__PURE__ */
|
|
1957
|
+
return /* @__PURE__ */ jsxs15(
|
|
1401
1958
|
Animated7.View,
|
|
1402
1959
|
{
|
|
1403
1960
|
role: mood === "error" ? "alert" : "status",
|
|
1404
1961
|
accessibilityLiveRegion: mood === "error" ? "assertive" : "polite",
|
|
1405
1962
|
"aria-busy": mood === "thinking" ? true : void 0,
|
|
1406
1963
|
...props,
|
|
1407
|
-
style: [inline ?
|
|
1964
|
+
style: [inline ? styles15.inline : styles15.stacked, { opacity, transform: [{ translateY: opacity.interpolate({ inputRange: [0, 1], outputRange: [6, 0] }) }] }, style],
|
|
1408
1965
|
children: [
|
|
1409
|
-
/* @__PURE__ */
|
|
1410
|
-
/* @__PURE__ */
|
|
1411
|
-
/* @__PURE__ */
|
|
1412
|
-
description ? /* @__PURE__ */
|
|
1413
|
-
action ? /* @__PURE__ */
|
|
1966
|
+
/* @__PURE__ */ jsx18(Mascot, { bird, mood, tone: tone2, size: SIZE[size], animated }),
|
|
1967
|
+
/* @__PURE__ */ jsxs15(View14, { style: inline ? styles15.wordsInline : styles15.words, children: [
|
|
1968
|
+
/* @__PURE__ */ jsx18(Txt, { variant: "label", role: "heading", style: inline ? null : styles15.center, children: title }),
|
|
1969
|
+
description ? /* @__PURE__ */ jsx18(Txt, { tone: "secondary", style: inline ? null : styles15.center, children: description }) : null,
|
|
1970
|
+
action ? /* @__PURE__ */ jsx18(View14, { style: [styles15.action, inline ? null : styles15.actionCentred], children: action }) : null
|
|
1414
1971
|
] })
|
|
1415
1972
|
]
|
|
1416
1973
|
}
|
|
1417
1974
|
);
|
|
1418
1975
|
}
|
|
1419
|
-
var ErrorState = (props) => /* @__PURE__ */
|
|
1420
|
-
var SuccessState = (props) => /* @__PURE__ */
|
|
1421
|
-
var LoadingState = (props) => /* @__PURE__ */
|
|
1422
|
-
var WelcomeState = (props) => /* @__PURE__ */
|
|
1423
|
-
var
|
|
1976
|
+
var ErrorState = (props) => /* @__PURE__ */ jsx18(MascotState, { mood: "error", ...props });
|
|
1977
|
+
var SuccessState = (props) => /* @__PURE__ */ jsx18(MascotState, { mood: "success", ...props });
|
|
1978
|
+
var LoadingState = (props) => /* @__PURE__ */ jsx18(MascotState, { mood: "thinking", ...props });
|
|
1979
|
+
var WelcomeState = (props) => /* @__PURE__ */ jsx18(MascotState, { mood: "welcome", ...props });
|
|
1980
|
+
var styles15 = StyleSheet15.create({
|
|
1424
1981
|
stacked: { alignItems: "center", justifyContent: "center", gap: 12, paddingVertical: 40, paddingHorizontal: 24 },
|
|
1425
1982
|
inline: { flexDirection: "row", alignItems: "center", gap: 16 },
|
|
1426
1983
|
words: { alignItems: "center", gap: 6 },
|
|
@@ -1431,8 +1988,8 @@ var styles13 = StyleSheet13.create({
|
|
|
1431
1988
|
});
|
|
1432
1989
|
|
|
1433
1990
|
// src/native/OrazakaMark.tsx
|
|
1434
|
-
import { View as
|
|
1435
|
-
import
|
|
1991
|
+
import { View as View15 } from "react-native";
|
|
1992
|
+
import Svg6, { Circle as Circle3, Defs as Defs4, LinearGradient as LinearGradient4, Path as Path5, RadialGradient as RadialGradient2, Stop as Stop4 } from "react-native-svg";
|
|
1436
1993
|
|
|
1437
1994
|
// src/marks/orazaka-geometry.ts
|
|
1438
1995
|
var orange = marks.orazaka[marks.orazaka.length - 1][1];
|
|
@@ -1461,41 +2018,41 @@ var ORAZAKA = {
|
|
|
1461
2018
|
};
|
|
1462
2019
|
|
|
1463
2020
|
// src/native/OrazakaMark.tsx
|
|
1464
|
-
import { jsx as
|
|
2021
|
+
import { jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1465
2022
|
function OrazakaMark({ size = 48, animated = true, title, neutral }) {
|
|
1466
2023
|
const { theme } = useTheme();
|
|
1467
2024
|
const { Animated: Animated14, layer, spinStyle, pulseStyle } = useMarkMotion(size, animated);
|
|
1468
2025
|
const id = useSvgId("ozm");
|
|
1469
2026
|
const viewBox = size < 48 ? ORAZAKA.croppedViewBox : ORAZAKA.viewBox;
|
|
1470
2027
|
const stroke = neutral ?? theme.textMuted;
|
|
1471
|
-
const gradient = /* @__PURE__ */
|
|
2028
|
+
const gradient = /* @__PURE__ */ jsx19(LinearGradient4, { id: `${id}a`, gradientUnits: "userSpaceOnUse", x1: ORAZAKA.gradient.x1, y1: ORAZAKA.gradient.y1, x2: ORAZAKA.gradient.x2, y2: ORAZAKA.gradient.y2, children: ORAZAKA.gradient.stops.map(([offset, color]) => /* @__PURE__ */ jsx19(Stop4, { offset, stopColor: color }, offset)) });
|
|
1472
2029
|
const fill = `url(#${id}a)`;
|
|
1473
|
-
return /* @__PURE__ */
|
|
1474
|
-
/* @__PURE__ */
|
|
1475
|
-
/* @__PURE__ */
|
|
1476
|
-
/* @__PURE__ */
|
|
1477
|
-
/* @__PURE__ */
|
|
2030
|
+
return /* @__PURE__ */ jsxs16(View15, { style: { width: size, height: size }, ...markA11y(title), children: [
|
|
2031
|
+
/* @__PURE__ */ jsxs16(Svg6, { viewBox, style: layer, children: [
|
|
2032
|
+
/* @__PURE__ */ jsx19(Defs4, { children: /* @__PURE__ */ jsxs16(RadialGradient2, { id: `${id}g`, cx: "50%", cy: "50%", r: "50%", children: [
|
|
2033
|
+
/* @__PURE__ */ jsx19(Stop4, { offset: "0%", stopColor: ORAZAKA.glow.color, stopOpacity: ORAZAKA.glow.opacity }),
|
|
2034
|
+
/* @__PURE__ */ jsx19(Stop4, { offset: "100%", stopColor: ORAZAKA.glow.color, stopOpacity: 0 })
|
|
1478
2035
|
] }) }),
|
|
1479
|
-
size >= 48 ? /* @__PURE__ */
|
|
1480
|
-
/* @__PURE__ */
|
|
1481
|
-
/* @__PURE__ */
|
|
2036
|
+
size >= 48 ? /* @__PURE__ */ jsx19(Circle3, { cx: ORAZAKA.center, cy: ORAZAKA.center, r: 190, fill: `url(#${id}g)` }) : null,
|
|
2037
|
+
/* @__PURE__ */ jsx19(Circle3, { cx: ORAZAKA.center, cy: ORAZAKA.center, r: ORAZAKA.orbit.r, stroke, strokeWidth: ORAZAKA.orbit.width, strokeDasharray: ORAZAKA.orbit.dash, opacity: 0.6, fill: "none" }),
|
|
2038
|
+
/* @__PURE__ */ jsx19(Circle3, { cx: ORAZAKA.center, cy: ORAZAKA.center, r: ORAZAKA.ring.r, stroke, strokeWidth: ORAZAKA.ring.width, opacity: 0.35, fill: "none" })
|
|
1482
2039
|
] }),
|
|
1483
|
-
/* @__PURE__ */
|
|
1484
|
-
/* @__PURE__ */
|
|
1485
|
-
ORAZAKA.shards.map((d) => /* @__PURE__ */
|
|
2040
|
+
/* @__PURE__ */ jsx19(Animated14.View, { style: [layer, spinStyle], children: /* @__PURE__ */ jsxs16(Svg6, { viewBox, style: layer, children: [
|
|
2041
|
+
/* @__PURE__ */ jsx19(Defs4, { children: gradient }),
|
|
2042
|
+
ORAZAKA.shards.map((d) => /* @__PURE__ */ jsx19(Path5, { d, fill, stroke: fill, strokeWidth: ORAZAKA.shardStroke, strokeLinejoin: "round" }, d))
|
|
1486
2043
|
] }) }),
|
|
1487
|
-
/* @__PURE__ */
|
|
1488
|
-
/* @__PURE__ */
|
|
1489
|
-
/* @__PURE__ */
|
|
1490
|
-
/* @__PURE__ */
|
|
2044
|
+
/* @__PURE__ */ jsx19(Animated14.View, { style: [layer, pulseStyle], children: /* @__PURE__ */ jsxs16(Svg6, { viewBox, style: layer, children: [
|
|
2045
|
+
/* @__PURE__ */ jsx19(Defs4, { children: gradient }),
|
|
2046
|
+
/* @__PURE__ */ jsx19(Circle3, { cx: ORAZAKA.center, cy: ORAZAKA.center, r: ORAZAKA.core.r, fill }),
|
|
2047
|
+
/* @__PURE__ */ jsx19(Circle3, { cx: ORAZAKA.center, cy: ORAZAKA.center, r: ORAZAKA.core.inner, fill: ORAZAKA.highlight })
|
|
1491
2048
|
] }) })
|
|
1492
2049
|
] });
|
|
1493
2050
|
}
|
|
1494
2051
|
|
|
1495
2052
|
// src/native/OrochiaMark.tsx
|
|
1496
|
-
import { useEffect as
|
|
1497
|
-
import { AccessibilityInfo as AccessibilityInfo6, Animated as Animated8, Easing as Easing5, View as
|
|
1498
|
-
import
|
|
2053
|
+
import { useEffect as useEffect9, useState as useState15 } from "react";
|
|
2054
|
+
import { AccessibilityInfo as AccessibilityInfo6, Animated as Animated8, Easing as Easing5, View as View16 } from "react-native";
|
|
2055
|
+
import Svg7, { Circle as Circle4, Defs as Defs5, Ellipse as Ellipse2, G as Group2, LinearGradient as LinearGradient5, Path as Path6, RadialGradient as RadialGradient3, Stop as Stop5 } from "react-native-svg";
|
|
1499
2056
|
|
|
1500
2057
|
// src/marks/orochia-geometry.ts
|
|
1501
2058
|
var OROCHIA = {
|
|
@@ -1522,14 +2079,14 @@ var OROCHIA = {
|
|
|
1522
2079
|
};
|
|
1523
2080
|
|
|
1524
2081
|
// src/native/OrochiaMark.tsx
|
|
1525
|
-
import { jsx as
|
|
2082
|
+
import { jsx as jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1526
2083
|
var CENTER = OROCHIA.offset + 180;
|
|
1527
2084
|
function OrochiaMark({ size = 48, animated = true, title, neutral: neutralProp }) {
|
|
1528
2085
|
const { theme } = useTheme();
|
|
1529
2086
|
const neutral = neutralProp ?? theme.textMuted;
|
|
1530
|
-
const [spin] =
|
|
1531
|
-
const [pulse] =
|
|
1532
|
-
|
|
2087
|
+
const [spin] = useState15(() => new Animated8.Value(0));
|
|
2088
|
+
const [pulse] = useState15(() => new Animated8.Value(0));
|
|
2089
|
+
useEffect9(() => {
|
|
1533
2090
|
if (!animated) return;
|
|
1534
2091
|
let loops = [];
|
|
1535
2092
|
let cancelled = false;
|
|
@@ -1554,44 +2111,44 @@ function OrochiaMark({ size = 48, animated = true, title, neutral: neutralProp }
|
|
|
1554
2111
|
const viewBox = size < 48 ? OROCHIA.croppedViewBox : OROCHIA.viewBox;
|
|
1555
2112
|
const layer = { position: "absolute", width: size, height: size };
|
|
1556
2113
|
const a11y = title ? { accessible: true, accessibilityRole: "image", accessibilityLabel: title } : { accessibilityElementsHidden: true, importantForAccessibility: "no-hide-descendants" };
|
|
1557
|
-
const bodyGradient = /* @__PURE__ */
|
|
1558
|
-
return /* @__PURE__ */
|
|
1559
|
-
/* @__PURE__ */
|
|
1560
|
-
/* @__PURE__ */
|
|
1561
|
-
/* @__PURE__ */
|
|
1562
|
-
/* @__PURE__ */
|
|
2114
|
+
const bodyGradient = /* @__PURE__ */ jsx20(LinearGradient5, { id: "body", gradientUnits: "userSpaceOnUse", x1: OROCHIA.body.x1 + OROCHIA.offset, y1: OROCHIA.body.y1 + OROCHIA.offset, x2: OROCHIA.body.x2 + OROCHIA.offset, y2: OROCHIA.body.y2 + OROCHIA.offset, children: OROCHIA.body.stops.map(([offset, color]) => /* @__PURE__ */ jsx20(Stop5, { offset, stopColor: color }, offset)) });
|
|
2115
|
+
return /* @__PURE__ */ jsxs17(View16, { style: { width: size, height: size }, ...a11y, children: [
|
|
2116
|
+
/* @__PURE__ */ jsxs17(Svg7, { viewBox, style: layer, children: [
|
|
2117
|
+
/* @__PURE__ */ jsx20(Defs5, { children: /* @__PURE__ */ jsxs17(RadialGradient3, { id: "glow", cx: "50%", cy: "50%", r: "50%", children: [
|
|
2118
|
+
/* @__PURE__ */ jsx20(Stop5, { offset: "0%", stopColor: OROCHIA.glow.color, stopOpacity: OROCHIA.glow.opacity }),
|
|
2119
|
+
/* @__PURE__ */ jsx20(Stop5, { offset: "100%", stopColor: OROCHIA.glow.color, stopOpacity: 0 })
|
|
1563
2120
|
] }) }),
|
|
1564
|
-
/* @__PURE__ */
|
|
1565
|
-
/* @__PURE__ */
|
|
2121
|
+
/* @__PURE__ */ jsx20(Circle4, { cx: CENTER, cy: CENTER, r: 170, fill: "url(#glow)" }),
|
|
2122
|
+
/* @__PURE__ */ jsx20(Circle4, { cx: CENTER, cy: CENTER, r: OROCHIA.ring.r, stroke: neutral, strokeWidth: OROCHIA.ring.width, opacity: 0.35, fill: "none" })
|
|
1566
2123
|
] }),
|
|
1567
|
-
/* @__PURE__ */
|
|
1568
|
-
/* @__PURE__ */
|
|
1569
|
-
/* @__PURE__ */
|
|
1570
|
-
/* @__PURE__ */
|
|
1571
|
-
/* @__PURE__ */
|
|
1572
|
-
/* @__PURE__ */
|
|
1573
|
-
/* @__PURE__ */
|
|
1574
|
-
/* @__PURE__ */
|
|
1575
|
-
/* @__PURE__ */
|
|
1576
|
-
/* @__PURE__ */
|
|
2124
|
+
/* @__PURE__ */ jsx20(Animated8.View, { style: [layer, { transform: [{ rotate: spin.interpolate({ inputRange: [0, 1], outputRange: ["0deg", "360deg"] }) }] }], children: /* @__PURE__ */ jsx20(Svg7, { viewBox, style: layer, children: /* @__PURE__ */ jsx20(Circle4, { cx: CENTER, cy: CENTER, r: OROCHIA.orbit.r, stroke: neutral, strokeWidth: OROCHIA.orbit.width, strokeDasharray: OROCHIA.orbit.dash, opacity: 0.6, fill: "none" }) }) }),
|
|
2125
|
+
/* @__PURE__ */ jsxs17(Svg7, { viewBox, style: layer, children: [
|
|
2126
|
+
/* @__PURE__ */ jsx20(Defs5, { children: bodyGradient }),
|
|
2127
|
+
/* @__PURE__ */ jsxs17(Group2, { transform: `translate(${OROCHIA.offset} ${OROCHIA.offset})`, children: [
|
|
2128
|
+
/* @__PURE__ */ jsx20(Path6, { d: OROCHIA.arc, stroke: "url(#body)", strokeWidth: 22, strokeLinecap: "round", fill: "none" }),
|
|
2129
|
+
/* @__PURE__ */ jsx20(Path6, { d: OROCHIA.arc, stroke: OROCHIA.scales.color, strokeOpacity: OROCHIA.scales.opacity, strokeWidth: OROCHIA.scales.width, strokeLinecap: "round", strokeDasharray: OROCHIA.scales.dash, fill: "none" }),
|
|
2130
|
+
/* @__PURE__ */ jsx20(Path6, { d: OROCHIA.neck, stroke: "url(#body)", strokeWidth: 14, strokeLinecap: "round", fill: "none" }),
|
|
2131
|
+
/* @__PURE__ */ jsx20(Path6, { d: OROCHIA.tail, stroke: "url(#body)", strokeWidth: 6, strokeLinecap: "round", fill: "none" }),
|
|
2132
|
+
/* @__PURE__ */ jsx20(Ellipse2, { cx: OROCHIA.head.cx, cy: OROCHIA.head.cy, rx: OROCHIA.head.rx, ry: OROCHIA.head.ry, rotation: OROCHIA.head.rotate, origin: `${OROCHIA.head.cx}, ${OROCHIA.head.cy}`, fill: "url(#body)" }),
|
|
2133
|
+
/* @__PURE__ */ jsx20(Path6, { d: OROCHIA.tongue.d, stroke: OROCHIA.tongue.color, strokeWidth: 3, strokeLinecap: "round", fill: "none" })
|
|
1577
2134
|
] })
|
|
1578
2135
|
] }),
|
|
1579
|
-
/* @__PURE__ */
|
|
1580
|
-
/* @__PURE__ */
|
|
1581
|
-
/* @__PURE__ */
|
|
1582
|
-
/* @__PURE__ */
|
|
1583
|
-
/* @__PURE__ */
|
|
2136
|
+
/* @__PURE__ */ jsx20(Animated8.View, { style: [layer, { opacity: pulse.interpolate({ inputRange: [0, 1], outputRange: [0.85, 1] }) }], children: /* @__PURE__ */ jsxs17(Svg7, { viewBox, style: layer, children: [
|
|
2137
|
+
/* @__PURE__ */ jsx20(Defs5, { children: /* @__PURE__ */ jsx20(LinearGradient5, { id: "flame", x1: "50%", y1: "100%", x2: "50%", y2: "0%", children: OROCHIA.flameGradient.stops.map(([offset, color]) => /* @__PURE__ */ jsx20(Stop5, { offset, stopColor: color }, offset)) }) }),
|
|
2138
|
+
/* @__PURE__ */ jsxs17(Group2, { transform: `translate(${OROCHIA.offset} ${OROCHIA.offset})`, children: [
|
|
2139
|
+
/* @__PURE__ */ jsx20(Circle4, { cx: OROCHIA.eye.cx, cy: OROCHIA.eye.cy, r: OROCHIA.eye.r, fill: OROCHIA.eye.color }),
|
|
2140
|
+
/* @__PURE__ */ jsx20(Path6, { d: OROCHIA.flame.d, transform: `translate(${OROCHIA.flame.translate[0]} ${OROCHIA.flame.translate[1]}) scale(${OROCHIA.flame.scale})`, fill: "url(#flame)" })
|
|
1584
2141
|
] })
|
|
1585
2142
|
] }) })
|
|
1586
2143
|
] });
|
|
1587
2144
|
}
|
|
1588
2145
|
|
|
1589
2146
|
// src/native/pagination.tsx
|
|
1590
|
-
import { Pressable as
|
|
1591
|
-
import
|
|
1592
|
-
import { jsx as
|
|
1593
|
-
function
|
|
1594
|
-
return /* @__PURE__ */
|
|
2147
|
+
import { Pressable as Pressable7, StyleSheet as StyleSheet16, Text as Text11, View as View17 } from "react-native";
|
|
2148
|
+
import Svg8, { Path as Path7 } from "react-native-svg";
|
|
2149
|
+
import { jsx as jsx21, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2150
|
+
function Chevron2({ direction, color }) {
|
|
2151
|
+
return /* @__PURE__ */ jsx21(Svg8, { width: 18, height: 18, viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: 2.2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": true, children: /* @__PURE__ */ jsx21(Path7, { d: direction === "left" ? "m15 6-6 6 6 6" : "m9 6 6 6-6 6" }) });
|
|
1595
2152
|
}
|
|
1596
2153
|
function Pagination({ page = 1, pageCount, onPageChange, hasPrevious, hasNext, onPrevious, onNext, status, disabled, labels, style }) {
|
|
1597
2154
|
const { theme, radius: radius3 } = useTheme();
|
|
@@ -1600,8 +2157,8 @@ function Pagination({ page = 1, pageCount, onPageChange, hasPrevious, hasNext, o
|
|
|
1600
2157
|
const current = Math.min(Math.max(1, page), count);
|
|
1601
2158
|
const canPrevious = !disabled && (paged ? current > 1 : Boolean(hasPrevious));
|
|
1602
2159
|
const canNext = !disabled && (paged ? current < count : Boolean(hasNext));
|
|
1603
|
-
const button = (direction, enabled, onPress, label) => /* @__PURE__ */
|
|
1604
|
-
|
|
2160
|
+
const button = (direction, enabled, onPress, label) => /* @__PURE__ */ jsx21(
|
|
2161
|
+
Pressable7,
|
|
1605
2162
|
{
|
|
1606
2163
|
role: "button",
|
|
1607
2164
|
"aria-label": label,
|
|
@@ -1610,29 +2167,29 @@ function Pagination({ page = 1, pageCount, onPageChange, hasPrevious, hasNext, o
|
|
|
1610
2167
|
hitSlop: 6,
|
|
1611
2168
|
onPress,
|
|
1612
2169
|
style: ({ pressed }) => [
|
|
1613
|
-
|
|
2170
|
+
styles16.button,
|
|
1614
2171
|
{ borderRadius: radius3.sm, borderColor: theme.borderDefault, backgroundColor: theme.surface1, opacity: enabled ? pressed ? 0.8 : 1 : 0.4 }
|
|
1615
2172
|
],
|
|
1616
|
-
children: /* @__PURE__ */
|
|
2173
|
+
children: /* @__PURE__ */ jsx21(Chevron2, { direction, color: theme.textPrimary })
|
|
1617
2174
|
}
|
|
1618
2175
|
);
|
|
1619
2176
|
const text = status ?? (paged ? labels.compact(current, count) : null);
|
|
1620
|
-
return /* @__PURE__ */
|
|
2177
|
+
return /* @__PURE__ */ jsxs18(View17, { role: "navigation", style: [styles16.row, style], children: [
|
|
1621
2178
|
button("left", canPrevious, paged ? () => onPageChange?.(current - 1) : onPrevious, labels.previous),
|
|
1622
|
-
text ? /* @__PURE__ */
|
|
2179
|
+
text ? /* @__PURE__ */ jsx21(Text11, { "aria-live": "polite", style: [styles16.status, { color: theme.textSecondary }], children: text }) : null,
|
|
1623
2180
|
button("right", canNext, paged ? () => onPageChange?.(current + 1) : onNext, labels.next)
|
|
1624
2181
|
] });
|
|
1625
2182
|
}
|
|
1626
|
-
var
|
|
2183
|
+
var styles16 = StyleSheet16.create({
|
|
1627
2184
|
row: { flexDirection: "row", alignItems: "center", justifyContent: "space-between", gap: 12 },
|
|
1628
|
-
button: { width: 44, height: 44, alignItems: "center", justifyContent: "center", borderWidth:
|
|
2185
|
+
button: { width: 44, height: 44, alignItems: "center", justifyContent: "center", borderWidth: StyleSheet16.hairlineWidth },
|
|
1629
2186
|
status: { fontSize: 13, fontWeight: "600", fontVariant: ["tabular-nums"] }
|
|
1630
2187
|
});
|
|
1631
2188
|
|
|
1632
2189
|
// src/native/phoenix.tsx
|
|
1633
|
-
import { useEffect as
|
|
1634
|
-
import { AccessibilityInfo as AccessibilityInfo7, Animated as Animated9, Easing as Easing6, View as
|
|
1635
|
-
import
|
|
2190
|
+
import { useEffect as useEffect10, useState as useState16 } from "react";
|
|
2191
|
+
import { AccessibilityInfo as AccessibilityInfo7, Animated as Animated9, Easing as Easing6, View as View18 } from "react-native";
|
|
2192
|
+
import Svg9, { Circle as Circle5, Defs as Defs6, LinearGradient as LinearGradient6, Path as Path8, RadialGradient as RadialGradient4, Stop as Stop6 } from "react-native-svg";
|
|
1636
2193
|
|
|
1637
2194
|
// src/mascots/phoenix-geometry.ts
|
|
1638
2195
|
var PHOENIX = {
|
|
@@ -1655,10 +2212,10 @@ var PHOENIX_PALETTES = {
|
|
|
1655
2212
|
};
|
|
1656
2213
|
|
|
1657
2214
|
// src/native/phoenix.tsx
|
|
1658
|
-
import { jsx as
|
|
2215
|
+
import { jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1659
2216
|
function useFloat(animated) {
|
|
1660
|
-
const [y] =
|
|
1661
|
-
|
|
2217
|
+
const [y] = useState16(() => new Animated9.Value(0));
|
|
2218
|
+
useEffect10(() => {
|
|
1662
2219
|
if (!animated) return;
|
|
1663
2220
|
let loop;
|
|
1664
2221
|
let cancelled = false;
|
|
@@ -1680,36 +2237,36 @@ function Phoenix({ tone: tone2 = "own", size = 120, animated = true, title, styl
|
|
|
1680
2237
|
const id = useSvgId("kzp");
|
|
1681
2238
|
const y = useFloat(animated);
|
|
1682
2239
|
const p = tone2 === "brand" ? { left: [theme.accent2, theme.accent], right: [theme.accent, theme.accent2], core: ["#ffffff", theme.accent], body: theme.surface3, edge: theme.borderStrong, crest: theme.accent } : PHOENIX_PALETTES.own;
|
|
1683
|
-
return /* @__PURE__ */
|
|
1684
|
-
/* @__PURE__ */
|
|
1685
|
-
/* @__PURE__ */
|
|
1686
|
-
/* @__PURE__ */
|
|
1687
|
-
/* @__PURE__ */
|
|
2240
|
+
return /* @__PURE__ */ jsx22(View18, { style: [{ width: size, height: size }, style], ...markA11y(title), children: /* @__PURE__ */ jsx22(Animated9.View, { style: { transform: [{ translateY: y }] }, children: /* @__PURE__ */ jsxs19(Svg9, { width: size, height: size, viewBox: "0 0 120 120", children: [
|
|
2241
|
+
/* @__PURE__ */ jsxs19(Defs6, { children: [
|
|
2242
|
+
/* @__PURE__ */ jsxs19(LinearGradient6, { id: `${id}l`, x1: "1", y1: "0", x2: "0", y2: "1", children: [
|
|
2243
|
+
/* @__PURE__ */ jsx22(Stop6, { offset: "0%", stopColor: p.left[0] }),
|
|
2244
|
+
/* @__PURE__ */ jsx22(Stop6, { offset: "100%", stopColor: p.left[1] })
|
|
1688
2245
|
] }),
|
|
1689
|
-
/* @__PURE__ */
|
|
1690
|
-
/* @__PURE__ */
|
|
1691
|
-
/* @__PURE__ */
|
|
2246
|
+
/* @__PURE__ */ jsxs19(LinearGradient6, { id: `${id}r`, x1: "0", y1: "0", x2: "1", y2: "1", children: [
|
|
2247
|
+
/* @__PURE__ */ jsx22(Stop6, { offset: "0%", stopColor: p.right[0] }),
|
|
2248
|
+
/* @__PURE__ */ jsx22(Stop6, { offset: "100%", stopColor: p.right[1] })
|
|
1692
2249
|
] }),
|
|
1693
|
-
/* @__PURE__ */
|
|
1694
|
-
/* @__PURE__ */
|
|
1695
|
-
/* @__PURE__ */
|
|
2250
|
+
/* @__PURE__ */ jsxs19(RadialGradient4, { id: `${id}c`, children: [
|
|
2251
|
+
/* @__PURE__ */ jsx22(Stop6, { offset: "0%", stopColor: p.core[0] }),
|
|
2252
|
+
/* @__PURE__ */ jsx22(Stop6, { offset: "100%", stopColor: p.core[1], stopOpacity: 0 })
|
|
1696
2253
|
] })
|
|
1697
2254
|
] }),
|
|
1698
|
-
/* @__PURE__ */
|
|
1699
|
-
/* @__PURE__ */
|
|
1700
|
-
/* @__PURE__ */
|
|
1701
|
-
/* @__PURE__ */
|
|
1702
|
-
/* @__PURE__ */
|
|
1703
|
-
/* @__PURE__ */
|
|
1704
|
-
/* @__PURE__ */
|
|
1705
|
-
/* @__PURE__ */
|
|
2255
|
+
/* @__PURE__ */ jsx22(Path8, { d: PHOENIX.wingL, fill: `url(#${id}l)` }),
|
|
2256
|
+
/* @__PURE__ */ jsx22(Path8, { d: PHOENIX.wingR, fill: `url(#${id}r)` }),
|
|
2257
|
+
/* @__PURE__ */ jsx22(Path8, { d: PHOENIX.tailL, fill: `url(#${id}l)`, opacity: 0.7 }),
|
|
2258
|
+
/* @__PURE__ */ jsx22(Path8, { d: PHOENIX.tailR, fill: `url(#${id}r)`, opacity: 0.7 }),
|
|
2259
|
+
/* @__PURE__ */ jsx22(Path8, { d: PHOENIX.body, fill: p.body, stroke: p.edge, strokeOpacity: 0.5 }),
|
|
2260
|
+
/* @__PURE__ */ jsx22(Circle5, { cx: 60, cy: 58, r: 12, fill: `url(#${id}c)` }),
|
|
2261
|
+
/* @__PURE__ */ jsx22(Circle5, { cx: 60, cy: 58, r: 3.5, fill: "#ffffff" }),
|
|
2262
|
+
/* @__PURE__ */ jsx22(Path8, { d: PHOENIX.crest, stroke: p.crest, strokeWidth: 2, strokeLinecap: "round" })
|
|
1706
2263
|
] }) }) });
|
|
1707
2264
|
}
|
|
1708
2265
|
|
|
1709
2266
|
// src/native/YazakiaMark.tsx
|
|
1710
|
-
import
|
|
1711
|
-
import { View as
|
|
1712
|
-
import
|
|
2267
|
+
import React17 from "react";
|
|
2268
|
+
import { View as View19 } from "react-native";
|
|
2269
|
+
import Svg10, { Circle as Circle6, Defs as Defs7, LinearGradient as LinearGradient7, Path as Path9, RadialGradient as RadialGradient5, Stop as Stop7 } from "react-native-svg";
|
|
1713
2270
|
|
|
1714
2271
|
// src/marks/yazakia-geometry.ts
|
|
1715
2272
|
var turquoise = marks.yazakia[marks.yazakia.length - 1][1];
|
|
@@ -1739,54 +2296,54 @@ var YAZAKIA = {
|
|
|
1739
2296
|
};
|
|
1740
2297
|
|
|
1741
2298
|
// src/native/YazakiaMark.tsx
|
|
1742
|
-
import { jsx as
|
|
2299
|
+
import { jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1743
2300
|
function YazakiaMark({ size = 48, animated = true, title, neutral }) {
|
|
1744
2301
|
const { theme } = useTheme();
|
|
1745
2302
|
const { Animated: Animated14, layer, spinStyle, pulseStyle } = useMarkMotion(size, animated);
|
|
1746
2303
|
const id = useSvgId("yzm");
|
|
1747
2304
|
const viewBox = size < 48 ? YAZAKIA.croppedViewBox : YAZAKIA.viewBox;
|
|
1748
2305
|
const stroke = neutral ?? theme.textMuted;
|
|
1749
|
-
const gradient = /* @__PURE__ */
|
|
2306
|
+
const gradient = /* @__PURE__ */ jsx23(LinearGradient7, { id: `${id}a`, gradientUnits: "userSpaceOnUse", x1: YAZAKIA.gradient.x1, y1: YAZAKIA.gradient.y1, x2: YAZAKIA.gradient.x2, y2: YAZAKIA.gradient.y2, children: YAZAKIA.gradient.stops.map(([offset, color]) => /* @__PURE__ */ jsx23(Stop7, { offset, stopColor: color }, offset)) });
|
|
1750
2307
|
const fill = `url(#${id}a)`;
|
|
1751
|
-
return /* @__PURE__ */
|
|
1752
|
-
/* @__PURE__ */
|
|
1753
|
-
/* @__PURE__ */
|
|
1754
|
-
/* @__PURE__ */
|
|
1755
|
-
/* @__PURE__ */
|
|
1756
|
-
/* @__PURE__ */
|
|
2308
|
+
return /* @__PURE__ */ jsxs20(View19, { style: { width: size, height: size }, ...markA11y(title), children: [
|
|
2309
|
+
/* @__PURE__ */ jsxs20(Svg10, { viewBox, style: layer, children: [
|
|
2310
|
+
/* @__PURE__ */ jsxs20(Defs7, { children: [
|
|
2311
|
+
/* @__PURE__ */ jsxs20(RadialGradient5, { id: `${id}g`, cx: "50%", cy: "50%", r: "50%", children: [
|
|
2312
|
+
/* @__PURE__ */ jsx23(Stop7, { offset: "0%", stopColor: YAZAKIA.glow.color, stopOpacity: YAZAKIA.glow.opacity }),
|
|
2313
|
+
/* @__PURE__ */ jsx23(Stop7, { offset: "100%", stopColor: YAZAKIA.glow.color, stopOpacity: 0 })
|
|
1757
2314
|
] }),
|
|
1758
2315
|
gradient
|
|
1759
2316
|
] }),
|
|
1760
|
-
size >= 48 ? /* @__PURE__ */
|
|
1761
|
-
/* @__PURE__ */
|
|
1762
|
-
YAZAKIA.voices.map((v, i) => /* @__PURE__ */
|
|
1763
|
-
/* @__PURE__ */
|
|
1764
|
-
/* @__PURE__ */
|
|
1765
|
-
i === 0 ? /* @__PURE__ */
|
|
2317
|
+
size >= 48 ? /* @__PURE__ */ jsx23(Circle6, { cx: YAZAKIA.center, cy: YAZAKIA.center, r: 190, fill: `url(#${id}g)` }) : null,
|
|
2318
|
+
/* @__PURE__ */ jsx23(Circle6, { cx: YAZAKIA.center, cy: YAZAKIA.center, r: YAZAKIA.ring.r, stroke, strokeWidth: YAZAKIA.ring.width, opacity: 0.35, fill: "none" }),
|
|
2319
|
+
YAZAKIA.voices.map((v, i) => /* @__PURE__ */ jsxs20(React17.Fragment, { children: [
|
|
2320
|
+
/* @__PURE__ */ jsx23(Path9, { d: v.body, fill }),
|
|
2321
|
+
/* @__PURE__ */ jsx23(Path9, { d: v.tail, fill }),
|
|
2322
|
+
i === 0 ? /* @__PURE__ */ jsx23(Path9, { d: `${v.body} ${v.tail}`, fill: YAZAKIA.shade.color, opacity: YAZAKIA.shade.opacity }) : null
|
|
1766
2323
|
] }, v.body))
|
|
1767
2324
|
] }),
|
|
1768
|
-
/* @__PURE__ */
|
|
1769
|
-
/* @__PURE__ */
|
|
1770
|
-
/* @__PURE__ */
|
|
1771
|
-
YAZAKIA.pair.at.map(([cx, cy]) => /* @__PURE__ */
|
|
2325
|
+
/* @__PURE__ */ jsx23(Animated14.View, { style: [layer, spinStyle], children: /* @__PURE__ */ jsxs20(Svg10, { viewBox, style: layer, children: [
|
|
2326
|
+
/* @__PURE__ */ jsx23(Defs7, { children: gradient }),
|
|
2327
|
+
/* @__PURE__ */ jsx23(Circle6, { cx: YAZAKIA.center, cy: YAZAKIA.center, r: YAZAKIA.orbit.r, stroke, strokeWidth: YAZAKIA.orbit.width, strokeDasharray: YAZAKIA.orbit.dash, opacity: 0.6, fill: "none" }),
|
|
2328
|
+
YAZAKIA.pair.at.map(([cx, cy]) => /* @__PURE__ */ jsx23(Circle6, { cx, cy, r: YAZAKIA.pair.r, fill }, cx))
|
|
1772
2329
|
] }) }),
|
|
1773
|
-
/* @__PURE__ */
|
|
1774
|
-
/* @__PURE__ */
|
|
2330
|
+
/* @__PURE__ */ jsx23(Animated14.View, { style: [layer, pulseStyle], children: /* @__PURE__ */ jsxs20(Svg10, { viewBox, style: layer, children: [
|
|
2331
|
+
/* @__PURE__ */ jsxs20(Defs7, { children: [
|
|
1775
2332
|
gradient,
|
|
1776
|
-
/* @__PURE__ */
|
|
1777
|
-
/* @__PURE__ */
|
|
1778
|
-
/* @__PURE__ */
|
|
2333
|
+
/* @__PURE__ */ jsxs20(LinearGradient7, { id: `${id}l`, gradientUnits: "userSpaceOnUse", x1: 0, y1: YAZAKIA.lens.y1, x2: 0, y2: YAZAKIA.lens.y2, children: [
|
|
2334
|
+
/* @__PURE__ */ jsx23(Stop7, { offset: "0%", stopColor: YAZAKIA.highlight.color, stopOpacity: YAZAKIA.highlight.from }),
|
|
2335
|
+
/* @__PURE__ */ jsx23(Stop7, { offset: "100%", stopColor: YAZAKIA.highlight.color, stopOpacity: YAZAKIA.highlight.to })
|
|
1779
2336
|
] })
|
|
1780
2337
|
] }),
|
|
1781
|
-
/* @__PURE__ */
|
|
1782
|
-
/* @__PURE__ */
|
|
2338
|
+
/* @__PURE__ */ jsx23(Path9, { d: YAZAKIA.lens.d, fill }),
|
|
2339
|
+
/* @__PURE__ */ jsx23(Path9, { d: YAZAKIA.lens.d, fill: `url(#${id}l)` })
|
|
1783
2340
|
] }) })
|
|
1784
2341
|
] });
|
|
1785
2342
|
}
|
|
1786
2343
|
|
|
1787
2344
|
// src/native/YororisMark.tsx
|
|
1788
|
-
import { View as
|
|
1789
|
-
import
|
|
2345
|
+
import { View as View20 } from "react-native";
|
|
2346
|
+
import Svg11, { Circle as Circle7, Defs as Defs8, LinearGradient as LinearGradient8, Path as Path10, RadialGradient as RadialGradient6, Stop as Stop8 } from "react-native-svg";
|
|
1790
2347
|
|
|
1791
2348
|
// src/marks/yororis-geometry.ts
|
|
1792
2349
|
var sand = marks.yororis[0][1];
|
|
@@ -1822,65 +2379,65 @@ var YORORIS = {
|
|
|
1822
2379
|
};
|
|
1823
2380
|
|
|
1824
2381
|
// src/native/YororisMark.tsx
|
|
1825
|
-
import { jsx as
|
|
2382
|
+
import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
1826
2383
|
function YororisMark({ size = 48, animated = true, title, neutral }) {
|
|
1827
2384
|
const { theme } = useTheme();
|
|
1828
2385
|
const { Animated: Animated14, layer, spinStyle, pulseStyle } = useMarkMotion(size, animated, 36e3);
|
|
1829
2386
|
const id = useSvgId("yrm");
|
|
1830
2387
|
const viewBox = size < 48 ? YORORIS.croppedViewBox : YORORIS.viewBox;
|
|
1831
2388
|
const stroke = neutral ?? theme.textMuted;
|
|
1832
|
-
const gradient = /* @__PURE__ */
|
|
2389
|
+
const gradient = /* @__PURE__ */ jsx24(LinearGradient8, { id: `${id}a`, gradientUnits: "userSpaceOnUse", x1: YORORIS.gradient.x1, y1: YORORIS.gradient.y1, x2: YORORIS.gradient.x2, y2: YORORIS.gradient.y2, children: YORORIS.gradient.stops.map(([offset, color]) => /* @__PURE__ */ jsx24(Stop8, { offset, stopColor: color }, offset)) });
|
|
1833
2390
|
const fill = `url(#${id}a)`;
|
|
1834
|
-
return /* @__PURE__ */
|
|
1835
|
-
/* @__PURE__ */
|
|
1836
|
-
/* @__PURE__ */
|
|
1837
|
-
/* @__PURE__ */
|
|
1838
|
-
/* @__PURE__ */
|
|
1839
|
-
/* @__PURE__ */
|
|
2391
|
+
return /* @__PURE__ */ jsxs21(View20, { style: { width: size, height: size }, ...markA11y(title), children: [
|
|
2392
|
+
/* @__PURE__ */ jsxs21(Svg11, { viewBox, style: layer, children: [
|
|
2393
|
+
/* @__PURE__ */ jsxs21(Defs8, { children: [
|
|
2394
|
+
/* @__PURE__ */ jsxs21(RadialGradient6, { id: `${id}g`, cx: "50%", cy: "50%", r: "50%", children: [
|
|
2395
|
+
/* @__PURE__ */ jsx24(Stop8, { offset: "0%", stopColor: YORORIS.glow.color, stopOpacity: YORORIS.glow.opacity }),
|
|
2396
|
+
/* @__PURE__ */ jsx24(Stop8, { offset: "100%", stopColor: YORORIS.glow.color, stopOpacity: 0 })
|
|
1840
2397
|
] }),
|
|
1841
2398
|
gradient
|
|
1842
2399
|
] }),
|
|
1843
|
-
size >= 48 ? /* @__PURE__ */
|
|
1844
|
-
/* @__PURE__ */
|
|
1845
|
-
/* @__PURE__ */
|
|
1846
|
-
YORORIS.leaves.map((d) => /* @__PURE__ */
|
|
1847
|
-
/* @__PURE__ */
|
|
2400
|
+
size >= 48 ? /* @__PURE__ */ jsx24(Circle7, { cx: YORORIS.center, cy: YORORIS.center, r: 190, fill: `url(#${id}g)` }) : null,
|
|
2401
|
+
/* @__PURE__ */ jsx24(Circle7, { cx: YORORIS.center, cy: YORORIS.center, r: YORORIS.ring.r, stroke, strokeWidth: YORORIS.ring.width, opacity: 0.35, fill: "none" }),
|
|
2402
|
+
/* @__PURE__ */ jsx24(Path10, { d: YORORIS.stem, stroke: fill, strokeWidth: YORORIS.stroke, strokeLinecap: "round", fill: "none" }),
|
|
2403
|
+
YORORIS.leaves.map((d) => /* @__PURE__ */ jsx24(Path10, { d, fill }, d)),
|
|
2404
|
+
/* @__PURE__ */ jsx24(Path10, { d: YORORIS.veins, stroke: YORORIS.vein.color, strokeOpacity: YORORIS.vein.opacity, strokeWidth: YORORIS.vein.width, strokeLinecap: "round", strokeDasharray: YORORIS.vein.dash, fill: "none" })
|
|
1848
2405
|
] }),
|
|
1849
|
-
/* @__PURE__ */
|
|
1850
|
-
/* @__PURE__ */
|
|
1851
|
-
/* @__PURE__ */
|
|
1852
|
-
/* @__PURE__ */
|
|
2406
|
+
/* @__PURE__ */ jsx24(Animated14.View, { style: [layer, spinStyle], children: /* @__PURE__ */ jsxs21(Svg11, { viewBox, style: layer, children: [
|
|
2407
|
+
/* @__PURE__ */ jsx24(Defs8, { children: gradient }),
|
|
2408
|
+
/* @__PURE__ */ jsx24(Circle7, { cx: YORORIS.center, cy: YORORIS.center, r: YORORIS.orbit.r, stroke, strokeWidth: YORORIS.orbit.width, strokeDasharray: YORORIS.orbit.dash, opacity: 0.6, fill: "none" }),
|
|
2409
|
+
/* @__PURE__ */ jsx24(Circle7, { cx: YORORIS.moment.at[0], cy: YORORIS.moment.at[1], r: YORORIS.moment.r, fill })
|
|
1853
2410
|
] }) }),
|
|
1854
|
-
/* @__PURE__ */
|
|
1855
|
-
/* @__PURE__ */
|
|
1856
|
-
/* @__PURE__ */
|
|
1857
|
-
/* @__PURE__ */
|
|
2411
|
+
/* @__PURE__ */ jsx24(Animated14.View, { style: [layer, pulseStyle], children: /* @__PURE__ */ jsxs21(Svg11, { viewBox, style: layer, children: [
|
|
2412
|
+
/* @__PURE__ */ jsx24(Defs8, { children: /* @__PURE__ */ jsx24(LinearGradient8, { id: `${id}c`, x1: "50%", y1: "100%", x2: "50%", y2: "0%", children: YORORIS.coreGradient.stops.map(([offset, color]) => /* @__PURE__ */ jsx24(Stop8, { offset, stopColor: color }, offset)) }) }),
|
|
2413
|
+
/* @__PURE__ */ jsx24(Circle7, { cx: YORORIS.core.cx, cy: YORORIS.core.cy, r: YORORIS.core.r, fill: `url(#${id}c)` }),
|
|
2414
|
+
/* @__PURE__ */ jsx24(Circle7, { cx: YORORIS.core.cx, cy: YORORIS.core.cy, r: YORORIS.core.inner, fill: YORORIS.highlight })
|
|
1858
2415
|
] }) })
|
|
1859
2416
|
] });
|
|
1860
2417
|
}
|
|
1861
2418
|
|
|
1862
2419
|
// src/native/ProductMark.tsx
|
|
1863
|
-
import { jsx as
|
|
2420
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
1864
2421
|
function ProductMark({ id, ...props }) {
|
|
1865
|
-
if (id === "krizaka") return /* @__PURE__ */
|
|
1866
|
-
if (id === "orazaka") return /* @__PURE__ */
|
|
1867
|
-
if (id === "yazakia") return /* @__PURE__ */
|
|
1868
|
-
if (id === "yororis") return /* @__PURE__ */
|
|
1869
|
-
return /* @__PURE__ */
|
|
2422
|
+
if (id === "krizaka") return /* @__PURE__ */ jsx25(KrizakaMark, { ...props });
|
|
2423
|
+
if (id === "orazaka") return /* @__PURE__ */ jsx25(OrazakaMark, { ...props });
|
|
2424
|
+
if (id === "yazakia") return /* @__PURE__ */ jsx25(YazakiaMark, { ...props });
|
|
2425
|
+
if (id === "yororis") return /* @__PURE__ */ jsx25(YororisMark, { ...props });
|
|
2426
|
+
return /* @__PURE__ */ jsx25(OrochiaMark, { ...props });
|
|
1870
2427
|
}
|
|
1871
2428
|
|
|
1872
2429
|
// src/native/profile-card.tsx
|
|
1873
|
-
import * as
|
|
1874
|
-
import { Animated as Animated10, StyleSheet as
|
|
1875
|
-
import { jsx as
|
|
2430
|
+
import * as React18 from "react";
|
|
2431
|
+
import { Animated as Animated10, StyleSheet as StyleSheet17, View as View21 } from "react-native";
|
|
2432
|
+
import { jsx as jsx26, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
1876
2433
|
var ratioOf = (value, max = 100) => Math.min(1, Math.max(0, value / (max || 1)));
|
|
1877
2434
|
function Bar({ label, ratio, words, animated, delay }) {
|
|
1878
2435
|
const { theme } = useTheme();
|
|
1879
2436
|
const t = useEntrance(animated, delay, 900);
|
|
1880
|
-
const [width, setWidth] =
|
|
2437
|
+
const [width, setWidth] = React18.useState(0);
|
|
1881
2438
|
const translateX = t.interpolate({ inputRange: [0, 1], outputRange: [-width * ratio, 0] });
|
|
1882
|
-
return /* @__PURE__ */
|
|
1883
|
-
|
|
2439
|
+
return /* @__PURE__ */ jsx26(
|
|
2440
|
+
View21,
|
|
1884
2441
|
{
|
|
1885
2442
|
accessible: true,
|
|
1886
2443
|
role: "meter",
|
|
@@ -1890,42 +2447,42 @@ function Bar({ label, ratio, words, animated, delay }) {
|
|
|
1890
2447
|
"aria-valuenow": Math.round(ratio * 100),
|
|
1891
2448
|
"aria-valuetext": words,
|
|
1892
2449
|
onLayout: (e) => setWidth(e.nativeEvent.layout.width),
|
|
1893
|
-
style: [
|
|
1894
|
-
children: /* @__PURE__ */
|
|
2450
|
+
style: [styles17.track, { backgroundColor: theme.surface3 }],
|
|
2451
|
+
children: /* @__PURE__ */ jsx26(Animated10.View, { style: [styles17.fill, { width: `${ratio * 100}%`, backgroundColor: theme.accent, transform: [{ translateX }] }] })
|
|
1895
2452
|
}
|
|
1896
2453
|
);
|
|
1897
2454
|
}
|
|
1898
2455
|
function ProfileCard({ visual, name, statLabel, value = 100, valueText, stats, caption, children, animated = true, style, ...props }) {
|
|
1899
2456
|
const { theme, radius: radius3 } = useTheme();
|
|
1900
2457
|
const ratio = ratioOf(value);
|
|
1901
|
-
return /* @__PURE__ */
|
|
1902
|
-
/* @__PURE__ */
|
|
1903
|
-
/* @__PURE__ */
|
|
1904
|
-
/* @__PURE__ */
|
|
1905
|
-
statLabel ? /* @__PURE__ */
|
|
2458
|
+
return /* @__PURE__ */ jsxs22(View21, { ...props, style: [styles17.root, { backgroundColor: theme.surface1, borderColor: theme.borderSubtle, borderRadius: radius3.xl }, style], children: [
|
|
2459
|
+
/* @__PURE__ */ jsx26(View21, { "aria-hidden": true, style: [styles17.disc, { backgroundColor: theme.surface2, borderColor: theme.accentSoft }], children: visual }),
|
|
2460
|
+
/* @__PURE__ */ jsxs22(View21, { style: styles17.head, children: [
|
|
2461
|
+
/* @__PURE__ */ jsx26(Txt, { variant: "title", style: styles17.name, children: name }),
|
|
2462
|
+
statLabel ? /* @__PURE__ */ jsxs22(Txt, { variant: "caption", tone: "secondary", children: [
|
|
1906
2463
|
statLabel,
|
|
1907
2464
|
" ",
|
|
1908
|
-
/* @__PURE__ */
|
|
2465
|
+
/* @__PURE__ */ jsx26(Txt, { variant: "caption", children: valueText ?? `${Math.round(ratio * 100)} %` })
|
|
1909
2466
|
] }) : null
|
|
1910
2467
|
] }),
|
|
1911
|
-
statLabel ? /* @__PURE__ */
|
|
2468
|
+
statLabel ? /* @__PURE__ */ jsx26(Bar, { label: statLabel, ratio, words: valueText ?? `${Math.round(ratio * 100)} %`, animated, delay: 200 }) : null,
|
|
1912
2469
|
stats?.map((s, i) => {
|
|
1913
2470
|
const r = ratioOf(s.value, s.max);
|
|
1914
2471
|
const words = s.valueText ?? `${Math.round(r * 100)} %`;
|
|
1915
|
-
return /* @__PURE__ */
|
|
1916
|
-
/* @__PURE__ */
|
|
1917
|
-
/* @__PURE__ */
|
|
1918
|
-
/* @__PURE__ */
|
|
2472
|
+
return /* @__PURE__ */ jsxs22(View21, { style: styles17.stat, children: [
|
|
2473
|
+
/* @__PURE__ */ jsxs22(View21, { "aria-hidden": true, style: styles17.statHead, children: [
|
|
2474
|
+
/* @__PURE__ */ jsx26(Txt, { variant: "caption", tone: "secondary", children: s.label }),
|
|
2475
|
+
/* @__PURE__ */ jsx26(Txt, { variant: "caption", children: words })
|
|
1919
2476
|
] }),
|
|
1920
|
-
/* @__PURE__ */
|
|
2477
|
+
/* @__PURE__ */ jsx26(Bar, { label: s.label, ratio: r, words, animated, delay: 320 + i * 120 })
|
|
1921
2478
|
] }, s.label);
|
|
1922
2479
|
}),
|
|
1923
|
-
caption ? /* @__PURE__ */
|
|
1924
|
-
children ? /* @__PURE__ */
|
|
2480
|
+
caption ? /* @__PURE__ */ jsx26(Txt, { variant: "caption", tone: "secondary", style: styles17.caption, children: caption }) : null,
|
|
2481
|
+
children ? /* @__PURE__ */ jsx26(View21, { style: styles17.extra, children }) : null
|
|
1925
2482
|
] });
|
|
1926
2483
|
}
|
|
1927
|
-
var
|
|
1928
|
-
root: { alignItems: "center", gap: 12, padding: 20, borderWidth:
|
|
2484
|
+
var styles17 = StyleSheet17.create({
|
|
2485
|
+
root: { alignItems: "center", gap: 12, padding: 20, borderWidth: StyleSheet17.hairlineWidth },
|
|
1929
2486
|
disc: { width: 104, height: 104, borderRadius: 52, borderWidth: 1, alignItems: "center", justifyContent: "center", overflow: "hidden" },
|
|
1930
2487
|
head: { flexDirection: "row", alignSelf: "stretch", alignItems: "center", justifyContent: "space-between", gap: 8 },
|
|
1931
2488
|
name: { flexShrink: 1, fontSize: 17 },
|
|
@@ -1938,10 +2495,10 @@ var styles15 = StyleSheet15.create({
|
|
|
1938
2495
|
});
|
|
1939
2496
|
|
|
1940
2497
|
// src/native/progress.tsx
|
|
1941
|
-
import * as
|
|
1942
|
-
import { Animated as Animated11, Easing as Easing7, StyleSheet as
|
|
1943
|
-
import
|
|
1944
|
-
import { jsx as
|
|
2498
|
+
import * as React19 from "react";
|
|
2499
|
+
import { Animated as Animated11, Easing as Easing7, StyleSheet as StyleSheet18, View as View22 } from "react-native";
|
|
2500
|
+
import Svg12, { Circle as Circle8, Defs as Defs9, LinearGradient as LinearGradient9, Rect as Rect3, Stop as Stop9 } from "react-native-svg";
|
|
2501
|
+
import { jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
1945
2502
|
var AnimatedCircle = Animated11.createAnimatedComponent(Circle8);
|
|
1946
2503
|
var BAR = { sm: 4, md: 8, lg: 12 };
|
|
1947
2504
|
var RING = { sm: 40, md: 80, lg: 144 };
|
|
@@ -1953,10 +2510,10 @@ function Progress({ variant = "bar", size = "md", value, max = 100, label, value
|
|
|
1953
2510
|
const known = typeof value === "number" && Number.isFinite(value);
|
|
1954
2511
|
const ratio = known ? Math.min(1, Math.max(0, value / (max || 1))) : 0;
|
|
1955
2512
|
const percent = Math.round(ratio * 100);
|
|
1956
|
-
const [progress] =
|
|
1957
|
-
const [spin] =
|
|
1958
|
-
const [track, setTrack] =
|
|
1959
|
-
|
|
2513
|
+
const [progress] = React19.useState(() => new Animated11.Value(ratio));
|
|
2514
|
+
const [spin] = React19.useState(() => new Animated11.Value(0));
|
|
2515
|
+
const [track, setTrack] = React19.useState(0);
|
|
2516
|
+
React19.useEffect(() => {
|
|
1960
2517
|
if (reduce) {
|
|
1961
2518
|
progress.setValue(ratio);
|
|
1962
2519
|
return;
|
|
@@ -1965,7 +2522,7 @@ function Progress({ variant = "bar", size = "md", value, max = 100, label, value
|
|
|
1965
2522
|
animation.start();
|
|
1966
2523
|
return () => animation.stop();
|
|
1967
2524
|
}, [ratio, reduce, progress]);
|
|
1968
|
-
|
|
2525
|
+
React19.useEffect(() => {
|
|
1969
2526
|
if (known || reduce) return;
|
|
1970
2527
|
const loop = Animated11.loop(Animated11.timing(spin, { toValue: 1, duration: 1200, easing: Easing7.linear, useNativeDriver: true }));
|
|
1971
2528
|
loop.start();
|
|
@@ -1983,9 +2540,9 @@ function Progress({ variant = "bar", size = "md", value, max = 100, label, value
|
|
|
1983
2540
|
"aria-valuenow": known ? Math.min(max, Math.max(0, value)) : void 0,
|
|
1984
2541
|
"aria-valuetext": known ? valueText ?? `${percent}%` : valueText
|
|
1985
2542
|
};
|
|
1986
|
-
const gradient = /* @__PURE__ */
|
|
1987
|
-
/* @__PURE__ */
|
|
1988
|
-
/* @__PURE__ */
|
|
2543
|
+
const gradient = /* @__PURE__ */ jsx27(Defs9, { children: /* @__PURE__ */ jsxs23(LinearGradient9, { id, x1: "0", y1: "0", x2: "1", y2: variant === "ring" ? "1" : "0", children: [
|
|
2544
|
+
/* @__PURE__ */ jsx27(Stop9, { offset: "0", stopColor: theme.accent }),
|
|
2545
|
+
/* @__PURE__ */ jsx27(Stop9, { offset: "1", stopColor: theme.accent2 })
|
|
1989
2546
|
] }) });
|
|
1990
2547
|
if (variant === "ring") {
|
|
1991
2548
|
const side = RING[size];
|
|
@@ -1994,11 +2551,11 @@ function Progress({ variant = "bar", size = "md", value, max = 100, label, value
|
|
|
1994
2551
|
const circumference = 2 * Math.PI * r;
|
|
1995
2552
|
const offset = known ? progress.interpolate({ inputRange: [0, 1], outputRange: [circumference, 0] }) : circumference * 0.75;
|
|
1996
2553
|
const rotate = spin.interpolate({ inputRange: [0, 1], outputRange: ["0deg", "360deg"] });
|
|
1997
|
-
return /* @__PURE__ */
|
|
1998
|
-
/* @__PURE__ */
|
|
2554
|
+
return /* @__PURE__ */ jsxs23(View22, { ...a11y, style: [styles18.ring, { width: side, height: side }, style], children: [
|
|
2555
|
+
/* @__PURE__ */ jsx27(Animated11.View, { style: [StyleSheet18.absoluteFill, { transform: [{ rotate: known ? "-90deg" : rotate }] }], children: /* @__PURE__ */ jsxs23(Svg12, { width: side, height: side, viewBox: "0 0 100 100", children: [
|
|
1999
2556
|
gradient,
|
|
2000
|
-
/* @__PURE__ */
|
|
2001
|
-
/* @__PURE__ */
|
|
2557
|
+
/* @__PURE__ */ jsx27(Circle8, { cx: 50, cy: 50, r, fill: "none", stroke: theme.borderDefault, strokeWidth: stroke }),
|
|
2558
|
+
/* @__PURE__ */ jsx27(
|
|
2002
2559
|
AnimatedCircle,
|
|
2003
2560
|
{
|
|
2004
2561
|
cx: 50,
|
|
@@ -2018,48 +2575,48 @@ function Progress({ variant = "bar", size = "md", value, max = 100, label, value
|
|
|
2018
2575
|
}
|
|
2019
2576
|
const width = known ? progress.interpolate({ inputRange: [0, 1], outputRange: ["0%", "100%"] }) : "40%";
|
|
2020
2577
|
const translate = spin.interpolate({ inputRange: [0, 1], outputRange: [-0.4 * track, track] });
|
|
2021
|
-
return /* @__PURE__ */
|
|
2022
|
-
|
|
2578
|
+
return /* @__PURE__ */ jsx27(
|
|
2579
|
+
View22,
|
|
2023
2580
|
{
|
|
2024
2581
|
...a11y,
|
|
2025
2582
|
onLayout: known ? void 0 : (event) => setTrack(event.nativeEvent.layout.width),
|
|
2026
|
-
style: [
|
|
2027
|
-
children: /* @__PURE__ */
|
|
2583
|
+
style: [styles18.bar, { height: BAR[size], backgroundColor: theme.surface3 }, style],
|
|
2584
|
+
children: /* @__PURE__ */ jsx27(Animated11.View, { style: [styles18.fill, { width }, known || reduce ? null : { transform: [{ translateX: translate }] }], children: /* @__PURE__ */ jsxs23(Svg12, { width: "100%", height: "100%", preserveAspectRatio: "none", children: [
|
|
2028
2585
|
gradient,
|
|
2029
|
-
/* @__PURE__ */
|
|
2586
|
+
/* @__PURE__ */ jsx27(Rect3, { x: 0, y: 0, width: "100%", height: "100%", fill: `url(#${id})` })
|
|
2030
2587
|
] }) })
|
|
2031
2588
|
}
|
|
2032
2589
|
);
|
|
2033
2590
|
}
|
|
2034
|
-
var
|
|
2591
|
+
var styles18 = StyleSheet18.create({
|
|
2035
2592
|
ring: { alignItems: "center", justifyContent: "center" },
|
|
2036
2593
|
bar: { width: "100%", overflow: "hidden", borderRadius: 9999 },
|
|
2037
2594
|
fill: { height: "100%", overflow: "hidden", borderRadius: 9999 }
|
|
2038
2595
|
});
|
|
2039
2596
|
|
|
2040
2597
|
// src/native/search-field.tsx
|
|
2041
|
-
import * as
|
|
2042
|
-
import { Pressable as
|
|
2043
|
-
import
|
|
2044
|
-
import { jsx as
|
|
2598
|
+
import * as React20 from "react";
|
|
2599
|
+
import { Pressable as Pressable8, StyleSheet as StyleSheet19, TextInput as TextInput3, View as View23 } from "react-native";
|
|
2600
|
+
import Svg13, { Circle as Circle9, Path as Path11 } from "react-native-svg";
|
|
2601
|
+
import { jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2045
2602
|
function SearchField({ label, value, defaultValue = "", onValueChange, onSearch, debounce = 300, onSubmit, clearLabel, style, placeholder, ...props }) {
|
|
2046
2603
|
const { theme, radius: radius3 } = useTheme();
|
|
2047
|
-
const [own, setOwn] =
|
|
2604
|
+
const [own, setOwn] = React20.useState(defaultValue);
|
|
2048
2605
|
const query = value ?? own;
|
|
2049
|
-
const timer2 =
|
|
2050
|
-
|
|
2606
|
+
const timer2 = React20.useRef(void 0);
|
|
2607
|
+
React20.useEffect(() => () => clearTimeout(timer2.current), []);
|
|
2051
2608
|
const change = (next) => {
|
|
2052
2609
|
if (value === void 0) setOwn(next);
|
|
2053
2610
|
onValueChange?.(next);
|
|
2054
2611
|
clearTimeout(timer2.current);
|
|
2055
2612
|
if (onSearch) timer2.current = setTimeout(() => onSearch(next), debounce);
|
|
2056
2613
|
};
|
|
2057
|
-
return /* @__PURE__ */
|
|
2058
|
-
/* @__PURE__ */
|
|
2059
|
-
/* @__PURE__ */
|
|
2060
|
-
/* @__PURE__ */
|
|
2614
|
+
return /* @__PURE__ */ jsxs24(View23, { style: [styles19.frame, { borderRadius: radius3.md, borderColor: theme.borderDefault, backgroundColor: theme.surface2 }, style], children: [
|
|
2615
|
+
/* @__PURE__ */ jsxs24(Svg13, { width: 18, height: 18, viewBox: "0 0 24 24", fill: "none", stroke: theme.textSecondary, strokeWidth: 2, strokeLinecap: "round", "aria-hidden": true, children: [
|
|
2616
|
+
/* @__PURE__ */ jsx28(Circle9, { cx: 11, cy: 11, r: 7 }),
|
|
2617
|
+
/* @__PURE__ */ jsx28(Path11, { d: "m20 20-3.5-3.5" })
|
|
2061
2618
|
] }),
|
|
2062
|
-
/* @__PURE__ */
|
|
2619
|
+
/* @__PURE__ */ jsx28(
|
|
2063
2620
|
TextInput3,
|
|
2064
2621
|
{
|
|
2065
2622
|
role: "searchbox",
|
|
@@ -2077,34 +2634,34 @@ function SearchField({ label, value, defaultValue = "", onValueChange, onSearch,
|
|
|
2077
2634
|
onSearch?.(query);
|
|
2078
2635
|
onSubmit?.(query);
|
|
2079
2636
|
},
|
|
2080
|
-
style: [
|
|
2637
|
+
style: [styles19.input, { color: theme.textPrimary }],
|
|
2081
2638
|
...props
|
|
2082
2639
|
}
|
|
2083
2640
|
),
|
|
2084
|
-
query ? /* @__PURE__ */
|
|
2641
|
+
query ? /* @__PURE__ */ jsx28(Pressable8, { role: "button", "aria-label": clearLabel, hitSlop: 10, onPress: () => change(""), style: styles19.clear, children: /* @__PURE__ */ jsx28(Svg13, { width: 16, height: 16, viewBox: "0 0 24 24", fill: "none", stroke: theme.textSecondary, strokeWidth: 2.4, strokeLinecap: "round", "aria-hidden": true, children: /* @__PURE__ */ jsx28(Path11, { d: "M18 6 6 18M6 6l12 12" }) }) }) : null
|
|
2085
2642
|
] });
|
|
2086
2643
|
}
|
|
2087
|
-
var
|
|
2088
|
-
frame: { flexDirection: "row", alignItems: "center", gap: 8, height: 44, paddingLeft: 12, paddingRight: 6, borderWidth:
|
|
2644
|
+
var styles19 = StyleSheet19.create({
|
|
2645
|
+
frame: { flexDirection: "row", alignItems: "center", gap: 8, height: 44, paddingLeft: 12, paddingRight: 6, borderWidth: StyleSheet19.hairlineWidth },
|
|
2089
2646
|
input: { flex: 1, height: "100%", fontSize: 15, paddingVertical: 0 },
|
|
2090
2647
|
clear: { width: 32, height: 32, alignItems: "center", justifyContent: "center" }
|
|
2091
2648
|
});
|
|
2092
2649
|
|
|
2093
2650
|
// src/native/segmented.tsx
|
|
2094
|
-
import { Pressable as
|
|
2095
|
-
import { jsx as
|
|
2651
|
+
import { Pressable as Pressable9, StyleSheet as StyleSheet20, Text as Text12, View as View24 } from "react-native";
|
|
2652
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
2096
2653
|
function Segmented({ options, value, onValueChange, size = "md", "aria-label": label, style }) {
|
|
2097
2654
|
const { theme, radius: radius3 } = useTheme();
|
|
2098
|
-
return /* @__PURE__ */
|
|
2099
|
-
|
|
2655
|
+
return /* @__PURE__ */ jsx29(
|
|
2656
|
+
View24,
|
|
2100
2657
|
{
|
|
2101
2658
|
role: "tablist",
|
|
2102
2659
|
"aria-label": label,
|
|
2103
|
-
style: [
|
|
2660
|
+
style: [styles20.track, { backgroundColor: theme.surface2, borderColor: theme.borderSubtle, borderRadius: radius3.md, height: size === "sm" ? 32 : 40 }, style],
|
|
2104
2661
|
children: options.map((option) => {
|
|
2105
2662
|
const selected = option.value === value;
|
|
2106
|
-
return /* @__PURE__ */
|
|
2107
|
-
|
|
2663
|
+
return /* @__PURE__ */ jsx29(
|
|
2664
|
+
Pressable9,
|
|
2108
2665
|
{
|
|
2109
2666
|
role: "tab",
|
|
2110
2667
|
"aria-selected": selected,
|
|
@@ -2114,12 +2671,12 @@ function Segmented({ options, value, onValueChange, size = "md", "aria-label": l
|
|
|
2114
2671
|
if (!selected) onValueChange(option.value);
|
|
2115
2672
|
},
|
|
2116
2673
|
style: [
|
|
2117
|
-
|
|
2674
|
+
styles20.segment,
|
|
2118
2675
|
{ borderRadius: radius3.sm },
|
|
2119
2676
|
selected ? { backgroundColor: theme.surface0, borderColor: theme.borderDefault } : null,
|
|
2120
|
-
option.disabled ?
|
|
2677
|
+
option.disabled ? styles20.disabled : null
|
|
2121
2678
|
],
|
|
2122
|
-
children: /* @__PURE__ */
|
|
2679
|
+
children: /* @__PURE__ */ jsx29(Text12, { numberOfLines: 1, style: [styles20.label, { color: selected ? theme.textPrimary : theme.textSecondary, fontSize: size === "sm" ? 12 : 13 }], children: option.label })
|
|
2123
2680
|
},
|
|
2124
2681
|
option.value
|
|
2125
2682
|
);
|
|
@@ -2127,17 +2684,17 @@ function Segmented({ options, value, onValueChange, size = "md", "aria-label": l
|
|
|
2127
2684
|
}
|
|
2128
2685
|
);
|
|
2129
2686
|
}
|
|
2130
|
-
var
|
|
2131
|
-
track: { flexDirection: "row", padding: 3, gap: 3, borderWidth:
|
|
2132
|
-
segment: { flex: 1, alignItems: "center", justifyContent: "center", paddingHorizontal: 8, borderWidth:
|
|
2687
|
+
var styles20 = StyleSheet20.create({
|
|
2688
|
+
track: { flexDirection: "row", padding: 3, gap: 3, borderWidth: StyleSheet20.hairlineWidth },
|
|
2689
|
+
segment: { flex: 1, alignItems: "center", justifyContent: "center", paddingHorizontal: 8, borderWidth: StyleSheet20.hairlineWidth, borderColor: "transparent" },
|
|
2133
2690
|
label: { fontWeight: "600" },
|
|
2134
2691
|
disabled: { opacity: 0.4 }
|
|
2135
2692
|
});
|
|
2136
2693
|
|
|
2137
2694
|
// src/native/skeleton.tsx
|
|
2138
|
-
import * as
|
|
2695
|
+
import * as React21 from "react";
|
|
2139
2696
|
import { Animated as Animated12 } from "react-native";
|
|
2140
|
-
import { jsx as
|
|
2697
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
2141
2698
|
var SHAPE = {
|
|
2142
2699
|
text: { width: "100%", height: 12, radius: 4 },
|
|
2143
2700
|
circle: { width: 40, height: 40, radius: 9999 },
|
|
@@ -2146,8 +2703,8 @@ var SHAPE = {
|
|
|
2146
2703
|
function Skeleton({ shape = "text", width, height, style, testID }) {
|
|
2147
2704
|
const { theme } = useTheme();
|
|
2148
2705
|
const reduce = useReducedMotion();
|
|
2149
|
-
const [opacity] =
|
|
2150
|
-
|
|
2706
|
+
const [opacity] = React21.useState(() => new Animated12.Value(1));
|
|
2707
|
+
React21.useEffect(() => {
|
|
2151
2708
|
if (reduce) return;
|
|
2152
2709
|
const loop = Animated12.loop(
|
|
2153
2710
|
Animated12.sequence([
|
|
@@ -2163,7 +2720,7 @@ function Skeleton({ shape = "text", width, height, style, testID }) {
|
|
|
2163
2720
|
}, [reduce, opacity]);
|
|
2164
2721
|
const s = SHAPE[shape];
|
|
2165
2722
|
const side = shape === "circle" ? width ?? height ?? s.width : void 0;
|
|
2166
|
-
return /* @__PURE__ */
|
|
2723
|
+
return /* @__PURE__ */ jsx30(
|
|
2167
2724
|
Animated12.View,
|
|
2168
2725
|
{
|
|
2169
2726
|
testID,
|
|
@@ -2178,10 +2735,10 @@ function Skeleton({ shape = "text", width, height, style, testID }) {
|
|
|
2178
2735
|
|
|
2179
2736
|
// src/native/spinner.tsx
|
|
2180
2737
|
import { ActivityIndicator as ActivityIndicator2 } from "react-native";
|
|
2181
|
-
import { jsx as
|
|
2738
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
2182
2739
|
function Spinner({ label, size = "md", ...props }) {
|
|
2183
2740
|
const { theme } = useTheme();
|
|
2184
|
-
return /* @__PURE__ */
|
|
2741
|
+
return /* @__PURE__ */ jsx31(
|
|
2185
2742
|
ActivityIndicator2,
|
|
2186
2743
|
{
|
|
2187
2744
|
accessible: true,
|
|
@@ -2196,9 +2753,9 @@ function Spinner({ label, size = "md", ...props }) {
|
|
|
2196
2753
|
}
|
|
2197
2754
|
|
|
2198
2755
|
// src/native/toast.tsx
|
|
2199
|
-
import * as
|
|
2200
|
-
import { AccessibilityInfo as AccessibilityInfo8, Animated as Animated13, Pressable as
|
|
2201
|
-
import { Fragment as Fragment3, jsx as
|
|
2756
|
+
import * as React22 from "react";
|
|
2757
|
+
import { AccessibilityInfo as AccessibilityInfo8, Animated as Animated13, Pressable as Pressable10, StyleSheet as StyleSheet21, Text as Text13, View as View25 } from "react-native";
|
|
2758
|
+
import { Fragment as Fragment3, jsx as jsx32, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2202
2759
|
var items = [];
|
|
2203
2760
|
var listeners2 = /* @__PURE__ */ new Set();
|
|
2204
2761
|
var counter = 0;
|
|
@@ -2233,76 +2790,76 @@ var toast = Object.assign(show, {
|
|
|
2233
2790
|
function ToastView({ item, closeLabel, duration }) {
|
|
2234
2791
|
const { theme, radius: radius3 } = useTheme();
|
|
2235
2792
|
const reduce = useReducedMotion();
|
|
2236
|
-
const [enter] =
|
|
2237
|
-
|
|
2793
|
+
const [enter] = React22.useState(() => new Animated13.Value(reduce ? 1 : 0));
|
|
2794
|
+
React22.useEffect(() => {
|
|
2238
2795
|
if (reduce) enter.setValue(1);
|
|
2239
2796
|
else Animated13.timing(enter, { toValue: 1, duration: 220, useNativeDriver: true }).start();
|
|
2240
2797
|
}, [enter, reduce]);
|
|
2241
|
-
|
|
2798
|
+
React22.useEffect(() => {
|
|
2242
2799
|
AccessibilityInfo8.announceForAccessibility(item.description ? `${item.title}. ${item.description}` : item.title);
|
|
2243
2800
|
}, [item.title, item.description]);
|
|
2244
2801
|
const ms = item.duration ?? duration;
|
|
2245
|
-
|
|
2802
|
+
React22.useEffect(() => {
|
|
2246
2803
|
if (!Number.isFinite(ms)) return;
|
|
2247
2804
|
const timer2 = setTimeout(() => dismiss(item.id), ms);
|
|
2248
2805
|
return () => clearTimeout(timer2);
|
|
2249
2806
|
}, [item.id, ms]);
|
|
2250
2807
|
const edge = { success: theme.success, warning: theme.warning, error: theme.danger, info: theme.info, default: theme.borderDefault }[item.tone ?? "default"];
|
|
2251
|
-
const text = /* @__PURE__ */
|
|
2252
|
-
item.icon ? /* @__PURE__ */
|
|
2253
|
-
/* @__PURE__ */
|
|
2254
|
-
/* @__PURE__ */
|
|
2255
|
-
item.description ? /* @__PURE__ */
|
|
2808
|
+
const text = /* @__PURE__ */ jsxs25(Fragment3, { children: [
|
|
2809
|
+
item.icon ? /* @__PURE__ */ jsx32(View25, { "aria-hidden": true, children: item.icon }) : null,
|
|
2810
|
+
/* @__PURE__ */ jsxs25(View25, { style: styles21.content, children: [
|
|
2811
|
+
/* @__PURE__ */ jsx32(Txt, { variant: "label", numberOfLines: 2, children: item.title }),
|
|
2812
|
+
item.description ? /* @__PURE__ */ jsx32(Txt, { variant: "caption", tone: "secondary", numberOfLines: 3, children: item.description }) : null
|
|
2256
2813
|
] })
|
|
2257
2814
|
] });
|
|
2258
|
-
const body = /* @__PURE__ */
|
|
2259
|
-
item.onPress ? /* @__PURE__ */
|
|
2260
|
-
|
|
2815
|
+
const body = /* @__PURE__ */ jsxs25(Fragment3, { children: [
|
|
2816
|
+
item.onPress ? /* @__PURE__ */ jsx32(
|
|
2817
|
+
Pressable10,
|
|
2261
2818
|
{
|
|
2262
2819
|
role: "button",
|
|
2263
2820
|
onPress: () => {
|
|
2264
2821
|
item.onPress?.();
|
|
2265
2822
|
dismiss(item.id);
|
|
2266
2823
|
},
|
|
2267
|
-
style: ({ pressed }) => [
|
|
2824
|
+
style: ({ pressed }) => [styles21.main, { opacity: pressed ? 0.8 : 1 }],
|
|
2268
2825
|
children: text
|
|
2269
2826
|
}
|
|
2270
|
-
) : /* @__PURE__ */
|
|
2271
|
-
item.action ? /* @__PURE__ */
|
|
2272
|
-
|
|
2827
|
+
) : /* @__PURE__ */ jsx32(View25, { style: styles21.main, children: text }),
|
|
2828
|
+
item.action ? /* @__PURE__ */ jsx32(
|
|
2829
|
+
Pressable10,
|
|
2273
2830
|
{
|
|
2274
2831
|
role: "button",
|
|
2275
2832
|
onPress: () => {
|
|
2276
2833
|
item.action?.onPress();
|
|
2277
2834
|
dismiss(item.id);
|
|
2278
2835
|
},
|
|
2279
|
-
style: [
|
|
2280
|
-
children: /* @__PURE__ */
|
|
2836
|
+
style: [styles21.action, { backgroundColor: theme.accent, borderRadius: radius3.sm }],
|
|
2837
|
+
children: /* @__PURE__ */ jsx32(Text13, { style: [styles21.actionLabel, { color: theme.onAccent }], children: item.action.label })
|
|
2281
2838
|
}
|
|
2282
2839
|
) : null,
|
|
2283
|
-
/* @__PURE__ */
|
|
2840
|
+
/* @__PURE__ */ jsx32(Pressable10, { role: "button", "aria-label": closeLabel, hitSlop: 10, onPress: () => dismiss(item.id), style: styles21.close, children: /* @__PURE__ */ jsx32(Text13, { style: [styles21.cross, { color: theme.textSecondary }], children: "\xD7" }) })
|
|
2284
2841
|
] });
|
|
2285
2842
|
const frame = [
|
|
2286
|
-
|
|
2843
|
+
styles21.toast,
|
|
2287
2844
|
{ backgroundColor: theme.surface2, borderColor: theme.borderDefault, borderLeftColor: edge, borderRadius: radius3.lg, shadowColor: theme.scrimStrong }
|
|
2288
2845
|
];
|
|
2289
2846
|
const motion3 = { transform: [{ translateY: enter.interpolate({ inputRange: [0, 1], outputRange: [-8, 0] }) }] };
|
|
2290
|
-
return /* @__PURE__ */
|
|
2847
|
+
return /* @__PURE__ */ jsx32(Animated13.View, { "aria-live": "polite", style: motion3, children: /* @__PURE__ */ jsx32(View25, { style: frame, children: body }) });
|
|
2291
2848
|
}
|
|
2292
2849
|
function Toaster({ closeLabel, position = "top", offset = 12, duration = 6e3, max = 3 }) {
|
|
2293
|
-
const all =
|
|
2850
|
+
const all = React22.useSyncExternalStore(subscribe2, snapshot, snapshot);
|
|
2294
2851
|
const shown = all.slice(-max);
|
|
2295
2852
|
if (shown.length === 0) return null;
|
|
2296
|
-
return /* @__PURE__ */
|
|
2853
|
+
return /* @__PURE__ */ jsx32(View25, { pointerEvents: "box-none", style: [styles21.stack, position === "top" ? { top: offset } : { bottom: offset }], children: (position === "top" ? shown : [...shown].reverse()).map((item) => /* @__PURE__ */ jsx32(ToastView, { item, closeLabel, duration }, item.id)) });
|
|
2297
2854
|
}
|
|
2298
|
-
var
|
|
2855
|
+
var styles21 = StyleSheet21.create({
|
|
2299
2856
|
stack: { position: "absolute", left: 12, right: 12, gap: 8, zIndex: 100 },
|
|
2300
2857
|
toast: {
|
|
2301
2858
|
flexDirection: "row",
|
|
2302
2859
|
alignItems: "center",
|
|
2303
2860
|
gap: 10,
|
|
2304
2861
|
padding: 12,
|
|
2305
|
-
borderWidth:
|
|
2862
|
+
borderWidth: StyleSheet21.hairlineWidth,
|
|
2306
2863
|
borderLeftWidth: 4,
|
|
2307
2864
|
shadowOpacity: 0.3,
|
|
2308
2865
|
shadowRadius: 16,
|
|
@@ -2322,6 +2879,7 @@ export {
|
|
|
2322
2879
|
AvatarRoot,
|
|
2323
2880
|
Badge,
|
|
2324
2881
|
Button,
|
|
2882
|
+
Calendar,
|
|
2325
2883
|
Card,
|
|
2326
2884
|
CardBody,
|
|
2327
2885
|
CardDescription,
|
|
@@ -2335,6 +2893,8 @@ export {
|
|
|
2335
2893
|
Chip,
|
|
2336
2894
|
Countdown,
|
|
2337
2895
|
DateField,
|
|
2896
|
+
DateWheel,
|
|
2897
|
+
DayStrip,
|
|
2338
2898
|
EmptyState,
|
|
2339
2899
|
ErrorState,
|
|
2340
2900
|
GoalGauge,
|
|
@@ -2343,6 +2903,7 @@ export {
|
|
|
2343
2903
|
LoadingState,
|
|
2344
2904
|
Mascot,
|
|
2345
2905
|
MascotState,
|
|
2906
|
+
MonthPicker,
|
|
2346
2907
|
OrazakaMark,
|
|
2347
2908
|
OrochiaMark,
|
|
2348
2909
|
Pagination,
|
|
@@ -2357,22 +2918,37 @@ export {
|
|
|
2357
2918
|
SuccessState,
|
|
2358
2919
|
TextField,
|
|
2359
2920
|
ThemeProvider,
|
|
2921
|
+
TimePicker,
|
|
2360
2922
|
Toaster,
|
|
2361
2923
|
Txt,
|
|
2362
2924
|
WelcomeState,
|
|
2925
|
+
Wheel,
|
|
2926
|
+
WheelDivider,
|
|
2927
|
+
WheelPicker,
|
|
2363
2928
|
YazakiaMark,
|
|
2364
2929
|
YororisMark,
|
|
2930
|
+
addDays,
|
|
2931
|
+
addMonths,
|
|
2932
|
+
ageOn,
|
|
2365
2933
|
alpha,
|
|
2934
|
+
calendarLabels,
|
|
2366
2935
|
composeDate,
|
|
2367
2936
|
dateFieldLabels,
|
|
2368
2937
|
datePartsOrder,
|
|
2938
|
+
daysInMonth,
|
|
2939
|
+
formatTime,
|
|
2369
2940
|
isRealDate,
|
|
2370
2941
|
latestBirthDate,
|
|
2942
|
+
monthNames,
|
|
2371
2943
|
splitDuration,
|
|
2372
2944
|
textStyles,
|
|
2945
|
+
timeSlots,
|
|
2946
|
+
timeToMinutes,
|
|
2373
2947
|
toast,
|
|
2948
|
+
todayIso,
|
|
2374
2949
|
useCountdown,
|
|
2375
2950
|
useReducedMotion,
|
|
2376
|
-
useTheme
|
|
2951
|
+
useTheme,
|
|
2952
|
+
uses12Hours
|
|
2377
2953
|
};
|
|
2378
2954
|
//# sourceMappingURL=native.js.map
|