@nori-ui/core 1.0.6 → 1.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/chunk-2UXKXUX2.js +286 -0
- package/dist/chunk-2UXKXUX2.js.map +1 -0
- package/dist/{chunk-DDGMLLS3.js → chunk-46OT4PA6.js} +3 -3
- package/dist/{chunk-DDGMLLS3.js.map → chunk-46OT4PA6.js.map} +1 -1
- package/dist/{chunk-SFNDR6DI.js → chunk-5BM6H2CD.js} +3 -3
- package/dist/{chunk-SFNDR6DI.js.map → chunk-5BM6H2CD.js.map} +1 -1
- package/dist/{chunk-EWWQQ5DB.js → chunk-6JVUVBZH.js} +5 -5
- package/dist/{chunk-EWWQQ5DB.js.map → chunk-6JVUVBZH.js.map} +1 -1
- package/dist/{chunk-FT2XBBQJ.js → chunk-6PO2IWB3.js} +8 -5
- package/dist/chunk-6PO2IWB3.js.map +1 -0
- package/dist/{chunk-YNKKEO2A.js → chunk-7D2BHQ6M.js} +3 -3
- package/dist/{chunk-YNKKEO2A.js.map → chunk-7D2BHQ6M.js.map} +1 -1
- package/dist/{chunk-MRJWPRCX.js → chunk-AFQIK6JI.js} +3 -3
- package/dist/{chunk-MRJWPRCX.js.map → chunk-AFQIK6JI.js.map} +1 -1
- package/dist/{chunk-IKLA2CVQ.js → chunk-C6TRLHMW.js} +21 -5
- package/dist/chunk-C6TRLHMW.js.map +1 -0
- package/dist/{chunk-NRYWNOG5.js → chunk-CGQIVFCN.js} +3 -3
- package/dist/{chunk-NRYWNOG5.js.map → chunk-CGQIVFCN.js.map} +1 -1
- package/dist/chunk-EFK7726V.js +104 -0
- package/dist/chunk-EFK7726V.js.map +1 -0
- package/dist/{chunk-3BDDPFCI.js → chunk-FDBQOQMW.js} +3 -3
- package/dist/{chunk-3BDDPFCI.js.map → chunk-FDBQOQMW.js.map} +1 -1
- package/dist/{chunk-XALU6LOT.js → chunk-GELLSU64.js} +3 -3
- package/dist/{chunk-XALU6LOT.js.map → chunk-GELLSU64.js.map} +1 -1
- package/dist/{chunk-BZLT6R62.js → chunk-GRDVE3IR.js} +3 -3
- package/dist/{chunk-BZLT6R62.js.map → chunk-GRDVE3IR.js.map} +1 -1
- package/dist/{chunk-OMU4R4Y5.js → chunk-HTF6FDB6.js} +3 -3
- package/dist/{chunk-OMU4R4Y5.js.map → chunk-HTF6FDB6.js.map} +1 -1
- package/dist/{chunk-X7APG7G2.js → chunk-HZKXPN6B.js} +154 -34
- package/dist/chunk-HZKXPN6B.js.map +1 -0
- package/dist/{chunk-WGT345SV.js → chunk-IGLMPAWE.js} +3 -3
- package/dist/{chunk-WGT345SV.js.map → chunk-IGLMPAWE.js.map} +1 -1
- package/dist/{chunk-5XEGZFG5.js → chunk-LWQZ257T.js} +3 -3
- package/dist/{chunk-5XEGZFG5.js.map → chunk-LWQZ257T.js.map} +1 -1
- package/dist/{chunk-RFW5SRZA.js → chunk-MJ4AGXS7.js} +3 -3
- package/dist/{chunk-RFW5SRZA.js.map → chunk-MJ4AGXS7.js.map} +1 -1
- package/dist/{chunk-PNP7L4TA.js → chunk-RM5TSXVE.js} +3 -3
- package/dist/{chunk-PNP7L4TA.js.map → chunk-RM5TSXVE.js.map} +1 -1
- package/dist/{chunk-MKSDYRWQ.js → chunk-SINLREQV.js} +3 -3
- package/dist/{chunk-MKSDYRWQ.js.map → chunk-SINLREQV.js.map} +1 -1
- package/dist/{chunk-TLS54G6Y.js → chunk-UF5OENHV.js} +3 -3
- package/dist/{chunk-TLS54G6Y.js.map → chunk-UF5OENHV.js.map} +1 -1
- package/dist/{chunk-ZQMNGPLE.js → chunk-UJ5KFRDE.js} +18 -6
- package/dist/chunk-UJ5KFRDE.js.map +1 -0
- package/dist/{chunk-SWC5CNKE.js → chunk-UPVNZPFV.js} +3 -3
- package/dist/{chunk-SWC5CNKE.js.map → chunk-UPVNZPFV.js.map} +1 -1
- package/dist/{chunk-3F4TXKDY.js → chunk-UUXWRDWW.js} +3 -3
- package/dist/chunk-UUXWRDWW.js.map +1 -0
- package/dist/{chunk-7GPDNQSX.js → chunk-V2AWSDDZ.js} +5 -5
- package/dist/{chunk-7GPDNQSX.js.map → chunk-V2AWSDDZ.js.map} +1 -1
- package/dist/{chunk-JQQ3FBN7.js → chunk-VCJF75T2.js} +3 -3
- package/dist/{chunk-JQQ3FBN7.js.map → chunk-VCJF75T2.js.map} +1 -1
- package/dist/{chunk-ZBW3BA5R.js → chunk-VMAGFYHG.js} +39 -4
- package/dist/chunk-VMAGFYHG.js.map +1 -0
- package/dist/{chunk-JZ774T7U.js → chunk-W3HMOOON.js} +3 -3
- package/dist/{chunk-JZ774T7U.js.map → chunk-W3HMOOON.js.map} +1 -1
- package/dist/{chunk-6AD6KCVB.js → chunk-WAKKQROH.js} +3 -3
- package/dist/{chunk-6AD6KCVB.js.map → chunk-WAKKQROH.js.map} +1 -1
- package/dist/{chunk-LVWNMQGR.js → chunk-WDNDTSNX.js} +5 -5
- package/dist/{chunk-LVWNMQGR.js.map → chunk-WDNDTSNX.js.map} +1 -1
- package/dist/chunk-WOF67PKT.js +60 -0
- package/dist/chunk-WOF67PKT.js.map +1 -0
- package/dist/{chunk-QJNV7YQP.js → chunk-WTNDPO2V.js} +39 -4
- package/dist/chunk-WTNDPO2V.js.map +1 -0
- package/dist/chunk-XBNVKPJN.js +343 -0
- package/dist/chunk-XBNVKPJN.js.map +1 -0
- package/dist/{chunk-FEPTH5RV.js → chunk-XP55RZ3D.js} +3 -3
- package/dist/{chunk-FEPTH5RV.js.map → chunk-XP55RZ3D.js.map} +1 -1
- package/dist/{chunk-CCUXO2HN.js → chunk-Y4ZRSW35.js} +3 -3
- package/dist/{chunk-CCUXO2HN.js.map → chunk-Y4ZRSW35.js.map} +1 -1
- package/dist/client.cjs +948 -123
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +3 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.js +42 -39
- package/dist/client.js.map +1 -1
- package/dist/components/Accordion/index.js +2 -2
- package/dist/components/Alert/index.js +2 -2
- package/dist/components/AlertDialog/index.js +2 -2
- package/dist/components/Avatar/index.js +2 -2
- package/dist/components/Badge/index.js +2 -2
- package/dist/components/Box/index.js +4 -4
- package/dist/components/Breadcrumb/index.cjs +6 -3
- package/dist/components/Breadcrumb/index.cjs.map +1 -1
- package/dist/components/Breadcrumb/index.js +5 -5
- package/dist/components/Button/index.js +2 -2
- package/dist/components/Calendar/index.cjs +170 -35
- package/dist/components/Calendar/index.cjs.map +1 -1
- package/dist/components/Calendar/index.js +5 -5
- package/dist/components/Card/index.js +2 -2
- package/dist/components/Checkbox/index.cjs +36 -1
- package/dist/components/Checkbox/index.cjs.map +1 -1
- package/dist/components/Checkbox/index.d.cts +17 -1
- package/dist/components/Checkbox/index.d.ts +17 -1
- package/dist/components/Checkbox/index.js +2 -2
- package/dist/components/DatePicker/index.cjs +3875 -0
- package/dist/components/DatePicker/index.cjs.map +1 -0
- package/dist/components/DatePicker/index.d.cts +58 -0
- package/dist/components/DatePicker/index.d.ts +58 -0
- package/dist/components/DatePicker/index.js +14 -0
- package/dist/components/DatePicker/index.js.map +1 -0
- package/dist/components/Dialog/index.js +2 -2
- package/dist/components/Field/index.cjs +703 -0
- package/dist/components/Field/index.cjs.map +1 -0
- package/dist/components/Field/index.d.cts +51 -0
- package/dist/components/Field/index.d.ts +51 -0
- package/dist/components/Field/index.js +9 -0
- package/dist/components/Field/index.js.map +1 -0
- package/dist/components/FloatButton/index.cjs +6 -3
- package/dist/components/FloatButton/index.cjs.map +1 -1
- package/dist/components/FloatButton/index.js +5 -5
- package/dist/components/HStack/index.js +4 -4
- package/dist/components/InputGroup/index.cjs.map +1 -1
- package/dist/components/InputGroup/index.d.cts +8 -1
- package/dist/components/InputGroup/index.d.ts +8 -1
- package/dist/components/InputGroup/index.js +2 -2
- package/dist/components/Label/index.cjs +458 -0
- package/dist/components/Label/index.cjs.map +1 -0
- package/dist/components/Label/index.d.cts +14 -0
- package/dist/components/Label/index.d.ts +14 -0
- package/dist/components/Label/index.js +8 -0
- package/dist/components/Label/index.js.map +1 -0
- package/dist/components/Pagination/index.cjs +21 -6
- package/dist/components/Pagination/index.cjs.map +1 -1
- package/dist/components/Pagination/index.js +5 -5
- package/dist/components/Popover/index.js +2 -2
- package/dist/components/Progress/index.js +2 -2
- package/dist/components/Radio/index.cjs +18 -2
- package/dist/components/Radio/index.cjs.map +1 -1
- package/dist/components/Radio/index.d.cts +17 -1
- package/dist/components/Radio/index.d.ts +17 -1
- package/dist/components/Radio/index.js +2 -2
- package/dist/components/SegmentedControl/index.js +2 -2
- package/dist/components/Select/index.cjs +15 -3
- package/dist/components/Select/index.cjs.map +1 -1
- package/dist/components/Select/index.d.cts +6 -0
- package/dist/components/Select/index.d.ts +6 -0
- package/dist/components/Select/index.js +2 -2
- package/dist/components/Switch/index.cjs +36 -1
- package/dist/components/Switch/index.cjs.map +1 -1
- package/dist/components/Switch/index.d.cts +17 -1
- package/dist/components/Switch/index.d.ts +17 -1
- package/dist/components/Switch/index.js +2 -2
- package/dist/components/Tabs/index.js +2 -2
- package/dist/components/Text/index.js +2 -2
- package/dist/components/TextArea/index.cjs +35 -84
- package/dist/components/TextArea/index.cjs.map +1 -1
- package/dist/components/TextArea/index.js +3 -3
- package/dist/components/TextInput/index.cjs +35 -84
- package/dist/components/TextInput/index.cjs.map +1 -1
- package/dist/components/TextInput/index.d.cts +7 -8
- package/dist/components/TextInput/index.d.ts +7 -8
- package/dist/components/TextInput/index.js +2 -2
- package/dist/components/Toggle/index.js +2 -2
- package/dist/components/Tooltip/index.js +2 -2
- package/dist/components/VStack/index.js +4 -4
- package/dist/i18n/index.cjs +6 -3
- package/dist/i18n/index.cjs.map +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/index.cjs +948 -123
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +39 -36
- package/package.json +8 -1
- package/dist/chunk-3F4TXKDY.js.map +0 -1
- package/dist/chunk-FT2XBBQJ.js.map +0 -1
- package/dist/chunk-IKLA2CVQ.js.map +0 -1
- package/dist/chunk-QJNV7YQP.js.map +0 -1
- package/dist/chunk-X7APG7G2.js.map +0 -1
- package/dist/chunk-ZBW3BA5R.js.map +0 -1
- package/dist/chunk-ZQMNGPLE.js.map +0 -1
- package/dist/chunk-ZRD4FQBT.js +0 -153
- package/dist/chunk-ZRD4FQBT.js.map +0 -1
package/dist/client.cjs
CHANGED
|
@@ -68,8 +68,8 @@ var defaultDictionary = {
|
|
|
68
68
|
// floatButton
|
|
69
69
|
"floatButton.backToTop": "Back to top",
|
|
70
70
|
// calendar
|
|
71
|
-
"calendar.header.previous": "Previous",
|
|
72
|
-
"calendar.header.next": "Next",
|
|
71
|
+
"calendar.header.previous": "Previous month",
|
|
72
|
+
"calendar.header.next": "Next month",
|
|
73
73
|
"calendar.header.openMonthView": "Open month picker",
|
|
74
74
|
"calendar.header.openYearView": "Open year picker",
|
|
75
75
|
"calendar.header.openDayView": "Open day picker",
|
|
@@ -85,7 +85,10 @@ var defaultDictionary = {
|
|
|
85
85
|
"checkbox.checked": "Checked",
|
|
86
86
|
"checkbox.unchecked": "Unchecked",
|
|
87
87
|
"switch.on": "On",
|
|
88
|
-
"switch.off": "Off"
|
|
88
|
+
"switch.off": "Off",
|
|
89
|
+
// field
|
|
90
|
+
"field.requiredIndicator": "*",
|
|
91
|
+
"field.requiredLabel": "required"
|
|
89
92
|
};
|
|
90
93
|
|
|
91
94
|
// src/i18n/resolve.ts
|
|
@@ -3697,6 +3700,13 @@ var Button = /* @__PURE__ */ __name(({
|
|
|
3697
3700
|
);
|
|
3698
3701
|
}, "Button");
|
|
3699
3702
|
|
|
3703
|
+
// src/components/Calendar/scroll/ScrollBody.tsx
|
|
3704
|
+
var ScrollBody = /* @__PURE__ */ __name((_props) => {
|
|
3705
|
+
throw new Error(
|
|
3706
|
+
"[Calendar] ScrollBody: no platform implementation resolved. Ensure your bundler honors *.web.tsx / *.native.tsx extensions."
|
|
3707
|
+
);
|
|
3708
|
+
}, "ScrollBody");
|
|
3709
|
+
|
|
3700
3710
|
// src/components/Calendar/state/locale-utils.ts
|
|
3701
3711
|
var getFirstDayOfWeek = /* @__PURE__ */ __name((locale) => {
|
|
3702
3712
|
try {
|
|
@@ -4058,9 +4068,15 @@ var Select = /* @__PURE__ */ __name((props) => {
|
|
|
4058
4068
|
itemHeight = DEFAULT_ITEM_HEIGHT,
|
|
4059
4069
|
maxMenuHeight = DEFAULT_MAX_MENU,
|
|
4060
4070
|
className,
|
|
4061
|
-
testID
|
|
4071
|
+
testID,
|
|
4072
|
+
id,
|
|
4073
|
+
name
|
|
4062
4074
|
} = props;
|
|
4063
4075
|
const ariaLabel = props["aria-label"];
|
|
4076
|
+
const ariaLabelledBy = props["aria-labelledby"];
|
|
4077
|
+
const ariaDescribedBy = props["aria-describedby"];
|
|
4078
|
+
const ariaInvalid = props["aria-invalid"];
|
|
4079
|
+
const ariaRequired = props["aria-required"];
|
|
4064
4080
|
const multiple = props.multiple === true;
|
|
4065
4081
|
const maxSelected = multiple ? props.maxSelected : void 0;
|
|
4066
4082
|
const maxChips = multiple ? props.maxChips ?? 3 : void 0;
|
|
@@ -4424,11 +4440,11 @@ var Select = /* @__PURE__ */ __name((props) => {
|
|
|
4424
4440
|
if (!open || searchable || reactNative.Platform.OS !== "web") {
|
|
4425
4441
|
return;
|
|
4426
4442
|
}
|
|
4427
|
-
const
|
|
4443
|
+
const id2 = requestAnimationFrame(() => {
|
|
4428
4444
|
const node = popupRef.current;
|
|
4429
4445
|
node?.focus?.();
|
|
4430
4446
|
});
|
|
4431
|
-
return () => cancelAnimationFrame(
|
|
4447
|
+
return () => cancelAnimationFrame(id2);
|
|
4432
4448
|
}, [open, searchable]);
|
|
4433
4449
|
const onListScroll = React.useCallback(
|
|
4434
4450
|
(event) => {
|
|
@@ -4505,7 +4521,13 @@ var Select = /* @__PURE__ */ __name((props) => {
|
|
|
4505
4521
|
"aria-controls": `${baseId}-listbox`,
|
|
4506
4522
|
"aria-haspopup": "listbox",
|
|
4507
4523
|
tabIndex: disabled ? -1 : 0,
|
|
4524
|
+
...id !== void 0 ? { id, nativeID: id } : {},
|
|
4525
|
+
...name !== void 0 ? { name } : {},
|
|
4508
4526
|
...ariaLabel !== void 0 ? { "aria-label": ariaLabel, accessibilityLabel: ariaLabel } : {},
|
|
4527
|
+
...ariaLabelledBy !== void 0 ? { "aria-labelledby": ariaLabelledBy, accessibilityLabelledBy: ariaLabelledBy } : {},
|
|
4528
|
+
...ariaDescribedBy !== void 0 ? { "aria-describedby": ariaDescribedBy, accessibilityDescribedBy: ariaDescribedBy } : {},
|
|
4529
|
+
...ariaInvalid === true ? { "aria-invalid": true } : {},
|
|
4530
|
+
...ariaRequired === true ? { "aria-required": true } : {},
|
|
4509
4531
|
...disabled ? { "aria-disabled": true, disabled: true } : {}
|
|
4510
4532
|
},
|
|
4511
4533
|
onPress: () => {
|
|
@@ -5179,7 +5201,7 @@ var Caption = /* @__PURE__ */ __name(({
|
|
|
5179
5201
|
alignSelf: "center"
|
|
5180
5202
|
},
|
|
5181
5203
|
children: [
|
|
5182
|
-
/* @__PURE__ */ jsxRuntime.jsx(NavButton, { label: t("calendar.header.previous", { defaultValue: "Previous" }), onPress: onPrev, children: "\u2039" }),
|
|
5204
|
+
/* @__PURE__ */ jsxRuntime.jsx(NavButton, { label: t("calendar.header.previous", { defaultValue: "Previous month" }), onPress: onPrev, children: "\u2039" }),
|
|
5183
5205
|
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: { flexDirection: "row", gap: monthGap, width: titleRowWidth }, children: showMultiTitles ? months.map((m, i) => /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: { width: gridWidth, alignItems: "center" }, children: caption === "dropdown" && view === "day" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
5184
5206
|
DropdownPair,
|
|
5185
5207
|
{
|
|
@@ -5225,7 +5247,7 @@ var Caption = /* @__PURE__ */ __name(({
|
|
|
5225
5247
|
drilldown: true
|
|
5226
5248
|
}
|
|
5227
5249
|
) }) }),
|
|
5228
|
-
/* @__PURE__ */ jsxRuntime.jsx(NavButton, { label: t("calendar.header.next", { defaultValue: "Next" }), onPress: onNext, children: "\u203A" })
|
|
5250
|
+
/* @__PURE__ */ jsxRuntime.jsx(NavButton, { label: t("calendar.header.next", { defaultValue: "Next month" }), onPress: onNext, children: "\u203A" })
|
|
5229
5251
|
]
|
|
5230
5252
|
}
|
|
5231
5253
|
);
|
|
@@ -5268,8 +5290,53 @@ var DropdownPair = /* @__PURE__ */ __name(({ month, year, monthOptions, yearOpti
|
|
|
5268
5290
|
] });
|
|
5269
5291
|
}, "DropdownPair");
|
|
5270
5292
|
var CELL_SIZE = 40;
|
|
5271
|
-
var
|
|
5293
|
+
var formatterCache = /* @__PURE__ */ new Map();
|
|
5294
|
+
var RUNTIME_DEFAULT_LOCALE_KEY = "__default__";
|
|
5295
|
+
var getDayFormatter = /* @__PURE__ */ __name((locale) => {
|
|
5296
|
+
const key = locale ?? RUNTIME_DEFAULT_LOCALE_KEY;
|
|
5297
|
+
const cached2 = formatterCache.get(key);
|
|
5298
|
+
if (cached2) {
|
|
5299
|
+
return cached2;
|
|
5300
|
+
}
|
|
5301
|
+
try {
|
|
5302
|
+
const fmt = new Intl.DateTimeFormat(locale, {
|
|
5303
|
+
weekday: "long",
|
|
5304
|
+
month: "long",
|
|
5305
|
+
day: "numeric",
|
|
5306
|
+
year: "numeric",
|
|
5307
|
+
timeZone: "UTC"
|
|
5308
|
+
});
|
|
5309
|
+
formatterCache.set(key, fmt);
|
|
5310
|
+
return fmt;
|
|
5311
|
+
} catch {
|
|
5312
|
+
return null;
|
|
5313
|
+
}
|
|
5314
|
+
}, "getDayFormatter");
|
|
5315
|
+
var formatDayLabel = /* @__PURE__ */ __name((ctx, locale) => {
|
|
5316
|
+
const jsDate = new Date(Date.UTC(ctx.date.year, ctx.date.month - 1, ctx.date.day));
|
|
5317
|
+
const fmt = getDayFormatter(locale);
|
|
5318
|
+
const base = fmt ? fmt.format(jsDate) : (
|
|
5319
|
+
// Fallback if the runtime rejects the locale tag.
|
|
5320
|
+
`${ctx.date.month}/${ctx.date.day}/${ctx.date.year}`
|
|
5321
|
+
);
|
|
5322
|
+
const suffixes = [];
|
|
5323
|
+
if (ctx.isToday) {
|
|
5324
|
+
suffixes.push("today");
|
|
5325
|
+
}
|
|
5326
|
+
if (ctx.isSelected || ctx.isRangeStart || ctx.isRangeEnd) {
|
|
5327
|
+
suffixes.push("selected");
|
|
5328
|
+
}
|
|
5329
|
+
if (ctx.isInRange && !ctx.isRangeStart && !ctx.isRangeEnd) {
|
|
5330
|
+
suffixes.push("in range");
|
|
5331
|
+
}
|
|
5332
|
+
if (ctx.isUnavailable) {
|
|
5333
|
+
suffixes.push("unavailable");
|
|
5334
|
+
}
|
|
5335
|
+
return suffixes.length > 0 ? `${base}, ${suffixes.join(", ")}` : base;
|
|
5336
|
+
}, "formatDayLabel");
|
|
5337
|
+
var DayCell = /* @__PURE__ */ __name(({ ctx, onPress, onHoverIn, onHoverOut, renderDay, locale }) => {
|
|
5272
5338
|
const colors = useThemeColors();
|
|
5339
|
+
const accessibilityLabel = formatDayLabel(ctx, locale);
|
|
5273
5340
|
const isSelectedLike = ctx.isSelected || ctx.isRangeStart || ctx.isRangeEnd;
|
|
5274
5341
|
const isInsideRange = ctx.isInRange || ctx.isInPreviewRange;
|
|
5275
5342
|
const isRangeMiddle = isInsideRange && !isSelectedLike;
|
|
@@ -5278,7 +5345,8 @@ var DayCell = /* @__PURE__ */ __name(({ ctx, onPress, onHoverIn, onHoverOut, ren
|
|
|
5278
5345
|
reactNative.Pressable,
|
|
5279
5346
|
{
|
|
5280
5347
|
accessibilityRole: "button",
|
|
5281
|
-
|
|
5348
|
+
accessibilityLabel,
|
|
5349
|
+
accessibilityState: { disabled: ctx.isUnavailable, selected: isSelectedLike },
|
|
5282
5350
|
disabled: ctx.isUnavailable,
|
|
5283
5351
|
onPress,
|
|
5284
5352
|
...onHoverIn ? { onHoverIn } : {},
|
|
@@ -5536,6 +5604,7 @@ var DayGrid = /* @__PURE__ */ __name((props) => {
|
|
|
5536
5604
|
DayCell,
|
|
5537
5605
|
{
|
|
5538
5606
|
ctx,
|
|
5607
|
+
locale,
|
|
5539
5608
|
onPress: () => onDayPress(date),
|
|
5540
5609
|
...onDayHover ? {
|
|
5541
5610
|
onHoverIn: /* @__PURE__ */ __name(() => onDayHover(date), "onHoverIn"),
|
|
@@ -5698,6 +5767,9 @@ var focusDayCell = /* @__PURE__ */ __name((root, date, force) => {
|
|
|
5698
5767
|
if (!root) {
|
|
5699
5768
|
return;
|
|
5700
5769
|
}
|
|
5770
|
+
if (typeof document === "undefined" || typeof root.contains !== "function") {
|
|
5771
|
+
return;
|
|
5772
|
+
}
|
|
5701
5773
|
if (!force && !root.contains(document.activeElement)) {
|
|
5702
5774
|
return;
|
|
5703
5775
|
}
|
|
@@ -5802,8 +5874,13 @@ var SingleOrMultiCalendar = /* @__PURE__ */ __name((props) => {
|
|
|
5802
5874
|
const colors = useThemeColors();
|
|
5803
5875
|
const firstDayOfWeek = props.firstDayOfWeek ?? getFirstDayOfWeek(locale);
|
|
5804
5876
|
const weekendDays = props.weekendDays ?? getWeekendDays(locale);
|
|
5805
|
-
const visibleMonths = pickVisibleMonths(props.visibleMonths, containerWidth);
|
|
5877
|
+
const visibleMonths = props.behavior === "scroll" ? 1 : pickVisibleMonths(props.visibleMonths, containerWidth);
|
|
5806
5878
|
const { innerWidth, gridsRowWidth } = surfaceMetrics(visibleMonths);
|
|
5879
|
+
React.useEffect(() => {
|
|
5880
|
+
if (process.env.NODE_ENV !== "production" && props.behavior === "scroll" && typeof props.visibleMonths === "number" && props.visibleMonths > 1) {
|
|
5881
|
+
console.warn('[Calendar] visibleMonths is ignored when behavior="scroll"; falling back to single column.');
|
|
5882
|
+
}
|
|
5883
|
+
}, [props.behavior, props.visibleMonths]);
|
|
5807
5884
|
const containerRef = React.useRef(null);
|
|
5808
5885
|
const state = useCalendarState({
|
|
5809
5886
|
...props.mode !== void 0 ? { mode: props.mode } : {},
|
|
@@ -5866,6 +5943,8 @@ var SingleOrMultiCalendar = /* @__PURE__ */ __name((props) => {
|
|
|
5866
5943
|
setAnchor((a) => a.add({ years: -10 }));
|
|
5867
5944
|
} else if (state.view === "month") {
|
|
5868
5945
|
setAnchor((a) => a.add({ years: -1 }));
|
|
5946
|
+
} else if (props.behavior === "scroll") {
|
|
5947
|
+
state.moveFocus({ months: -1 });
|
|
5869
5948
|
} else {
|
|
5870
5949
|
setAnchor((a) => a.add({ months: -1 }));
|
|
5871
5950
|
}
|
|
@@ -5875,6 +5954,8 @@ var SingleOrMultiCalendar = /* @__PURE__ */ __name((props) => {
|
|
|
5875
5954
|
setAnchor((a) => a.add({ years: 10 }));
|
|
5876
5955
|
} else if (state.view === "month") {
|
|
5877
5956
|
setAnchor((a) => a.add({ years: 1 }));
|
|
5957
|
+
} else if (props.behavior === "scroll") {
|
|
5958
|
+
state.moveFocus({ months: 1 });
|
|
5878
5959
|
} else {
|
|
5879
5960
|
setAnchor((a) => a.add({ months: 1 }));
|
|
5880
5961
|
}
|
|
@@ -5937,22 +6018,44 @@ var SingleOrMultiCalendar = /* @__PURE__ */ __name((props) => {
|
|
|
5937
6018
|
}
|
|
5938
6019
|
),
|
|
5939
6020
|
/* @__PURE__ */ jsxRuntime.jsxs(FadeIn, { children: [
|
|
5940
|
-
state.view === "day" &&
|
|
5941
|
-
|
|
6021
|
+
state.view === "day" && (props.behavior === "scroll" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6022
|
+
ScrollBody,
|
|
5942
6023
|
{
|
|
5943
|
-
visibleMonth: m,
|
|
5944
|
-
locale,
|
|
5945
6024
|
mode: props.mode ?? "single",
|
|
5946
|
-
|
|
6025
|
+
locale,
|
|
5947
6026
|
focusedDate: state.focusedDate,
|
|
5948
|
-
|
|
5949
|
-
|
|
6027
|
+
onFocusedMonthChange: (next) => setAnchor(next),
|
|
6028
|
+
value: state.value,
|
|
6029
|
+
onSelectDate: (date) => state.selectDate(date, "click"),
|
|
5950
6030
|
firstDayOfWeek,
|
|
5951
|
-
|
|
6031
|
+
weekendDays,
|
|
6032
|
+
...props.minValue !== void 0 ? { minValue: props.minValue } : {},
|
|
6033
|
+
...props.maxValue !== void 0 ? { maxValue: props.maxValue } : {},
|
|
6034
|
+
...props.isDateUnavailable !== void 0 ? { isDateUnavailable: props.isDateUnavailable } : {},
|
|
5952
6035
|
...renderDay ? { renderDay } : {}
|
|
5953
|
-
}
|
|
5954
|
-
|
|
5955
|
-
|
|
6036
|
+
}
|
|
6037
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
6038
|
+
reactNative.View,
|
|
6039
|
+
{
|
|
6040
|
+
style: { flexDirection: "row", gap: MONTH_GAP, alignSelf: "center", width: gridsRowWidth },
|
|
6041
|
+
children: months.map((m) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6042
|
+
DayGrid,
|
|
6043
|
+
{
|
|
6044
|
+
visibleMonth: m,
|
|
6045
|
+
locale,
|
|
6046
|
+
mode: props.mode ?? "single",
|
|
6047
|
+
value: state.value,
|
|
6048
|
+
focusedDate: state.focusedDate,
|
|
6049
|
+
isUnavailable: state.isUnavailable,
|
|
6050
|
+
weekendDays,
|
|
6051
|
+
firstDayOfWeek,
|
|
6052
|
+
onDayPress: (date) => state.selectDate(date, "click"),
|
|
6053
|
+
...renderDay ? { renderDay } : {}
|
|
6054
|
+
},
|
|
6055
|
+
`${m.year}-${m.month}`
|
|
6056
|
+
))
|
|
6057
|
+
}
|
|
6058
|
+
)),
|
|
5956
6059
|
state.view === "month" && /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: { alignItems: "center" }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5957
6060
|
MonthGrid,
|
|
5958
6061
|
{
|
|
@@ -5987,8 +6090,13 @@ var RangeCalendar = /* @__PURE__ */ __name((props) => {
|
|
|
5987
6090
|
const colors = useThemeColors();
|
|
5988
6091
|
const firstDayOfWeek = props.firstDayOfWeek ?? getFirstDayOfWeek(locale);
|
|
5989
6092
|
const weekendDays = props.weekendDays ?? getWeekendDays(locale);
|
|
5990
|
-
const visibleMonths = pickVisibleMonths(props.visibleMonths, containerWidth);
|
|
6093
|
+
const visibleMonths = props.behavior === "scroll" ? 1 : pickVisibleMonths(props.visibleMonths, containerWidth);
|
|
5991
6094
|
const { innerWidth, gridsRowWidth } = surfaceMetrics(visibleMonths);
|
|
6095
|
+
React.useEffect(() => {
|
|
6096
|
+
if (process.env.NODE_ENV !== "production" && props.behavior === "scroll" && typeof props.visibleMonths === "number" && props.visibleMonths > 1) {
|
|
6097
|
+
console.warn('[Calendar] visibleMonths is ignored when behavior="scroll"; falling back to single column.');
|
|
6098
|
+
}
|
|
6099
|
+
}, [props.behavior, props.visibleMonths]);
|
|
5992
6100
|
const containerRef = React.useRef(null);
|
|
5993
6101
|
const range2 = useRangeState({
|
|
5994
6102
|
...props.value !== void 0 ? { value: props.value } : {},
|
|
@@ -6066,6 +6174,8 @@ var RangeCalendar = /* @__PURE__ */ __name((props) => {
|
|
|
6066
6174
|
setAnchor((a) => a.add({ years: -10 }));
|
|
6067
6175
|
} else if (view === "month") {
|
|
6068
6176
|
setAnchor((a) => a.add({ years: -1 }));
|
|
6177
|
+
} else if (props.behavior === "scroll") {
|
|
6178
|
+
setFocusedDate((f) => f.add({ months: -1 }));
|
|
6069
6179
|
} else {
|
|
6070
6180
|
setAnchor((a) => a.add({ months: -1 }));
|
|
6071
6181
|
}
|
|
@@ -6075,6 +6185,8 @@ var RangeCalendar = /* @__PURE__ */ __name((props) => {
|
|
|
6075
6185
|
setAnchor((a) => a.add({ years: 10 }));
|
|
6076
6186
|
} else if (view === "month") {
|
|
6077
6187
|
setAnchor((a) => a.add({ years: 1 }));
|
|
6188
|
+
} else if (props.behavior === "scroll") {
|
|
6189
|
+
setFocusedDate((f) => f.add({ months: 1 }));
|
|
6078
6190
|
} else {
|
|
6079
6191
|
setAnchor((a) => a.add({ months: 1 }));
|
|
6080
6192
|
}
|
|
@@ -6145,24 +6257,47 @@ var RangeCalendar = /* @__PURE__ */ __name((props) => {
|
|
|
6145
6257
|
}
|
|
6146
6258
|
),
|
|
6147
6259
|
/* @__PURE__ */ jsxRuntime.jsxs(FadeIn, { children: [
|
|
6148
|
-
view === "day" &&
|
|
6149
|
-
|
|
6260
|
+
view === "day" && (props.behavior === "scroll" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
6261
|
+
ScrollBody,
|
|
6150
6262
|
{
|
|
6151
|
-
visibleMonth: m,
|
|
6152
|
-
locale,
|
|
6153
6263
|
mode: "range",
|
|
6264
|
+
locale,
|
|
6265
|
+
focusedDate,
|
|
6266
|
+
onFocusedMonthChange: (next) => setAnchor(next),
|
|
6154
6267
|
value: range2.value,
|
|
6155
6268
|
previewRange: range2.previewRange,
|
|
6156
|
-
|
|
6157
|
-
isUnavailable: range2.isUnavailable,
|
|
6158
|
-
weekendDays,
|
|
6269
|
+
onSelectDate: (date) => range2.selectDate(date),
|
|
6159
6270
|
firstDayOfWeek,
|
|
6160
|
-
|
|
6161
|
-
|
|
6271
|
+
weekendDays,
|
|
6272
|
+
...props.minValue !== void 0 ? { minValue: props.minValue } : {},
|
|
6273
|
+
...props.maxValue !== void 0 ? { maxValue: props.maxValue } : {},
|
|
6274
|
+
...props.isDateUnavailable !== void 0 ? { isDateUnavailable: props.isDateUnavailable } : {},
|
|
6162
6275
|
...renderDay ? { renderDay } : {}
|
|
6163
|
-
}
|
|
6164
|
-
|
|
6165
|
-
|
|
6276
|
+
}
|
|
6277
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
6278
|
+
reactNative.View,
|
|
6279
|
+
{
|
|
6280
|
+
style: { flexDirection: "row", gap: MONTH_GAP, alignSelf: "center", width: gridsRowWidth },
|
|
6281
|
+
children: months.map((m) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6282
|
+
DayGrid,
|
|
6283
|
+
{
|
|
6284
|
+
visibleMonth: m,
|
|
6285
|
+
locale,
|
|
6286
|
+
mode: "range",
|
|
6287
|
+
value: range2.value,
|
|
6288
|
+
previewRange: range2.previewRange,
|
|
6289
|
+
focusedDate,
|
|
6290
|
+
isUnavailable: range2.isUnavailable,
|
|
6291
|
+
weekendDays,
|
|
6292
|
+
firstDayOfWeek,
|
|
6293
|
+
onDayPress: (date) => range2.selectDate(date),
|
|
6294
|
+
onDayHover: (date) => range2.setHoveredDate(date),
|
|
6295
|
+
...renderDay ? { renderDay } : {}
|
|
6296
|
+
},
|
|
6297
|
+
`${m.year}-${m.month}`
|
|
6298
|
+
))
|
|
6299
|
+
}
|
|
6300
|
+
)),
|
|
6166
6301
|
view === "month" && /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: { alignItems: "center" }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6167
6302
|
MonthGrid,
|
|
6168
6303
|
{
|
|
@@ -6350,7 +6485,15 @@ var Checkbox = /* @__PURE__ */ __name(({
|
|
|
6350
6485
|
className,
|
|
6351
6486
|
testID,
|
|
6352
6487
|
asChild,
|
|
6353
|
-
children
|
|
6488
|
+
children,
|
|
6489
|
+
id,
|
|
6490
|
+
name,
|
|
6491
|
+
"aria-labelledby": ariaLabelledBy,
|
|
6492
|
+
accessibilityLabelledBy,
|
|
6493
|
+
"aria-describedby": ariaDescribedBy,
|
|
6494
|
+
accessibilityDescribedBy,
|
|
6495
|
+
"aria-invalid": ariaInvalid,
|
|
6496
|
+
"aria-required": ariaRequired
|
|
6354
6497
|
}) => {
|
|
6355
6498
|
const colors = useThemeColors();
|
|
6356
6499
|
const [inner, setInner] = React.useState(defaultChecked);
|
|
@@ -6378,6 +6521,13 @@ var Checkbox = /* @__PURE__ */ __name(({
|
|
|
6378
6521
|
accessibilityState: { checked: value, disabled: Boolean(disabled) },
|
|
6379
6522
|
testID
|
|
6380
6523
|
};
|
|
6524
|
+
if (id !== void 0) {
|
|
6525
|
+
commonProps.id = id;
|
|
6526
|
+
commonProps.nativeID = id;
|
|
6527
|
+
}
|
|
6528
|
+
if (name !== void 0) {
|
|
6529
|
+
commonProps.name = name;
|
|
6530
|
+
}
|
|
6381
6531
|
if (disabled) {
|
|
6382
6532
|
commonProps["aria-disabled"] = true;
|
|
6383
6533
|
}
|
|
@@ -6385,6 +6535,26 @@ var Checkbox = /* @__PURE__ */ __name(({
|
|
|
6385
6535
|
commonProps["aria-label"] = label;
|
|
6386
6536
|
commonProps.accessibilityLabel = label;
|
|
6387
6537
|
}
|
|
6538
|
+
if (ariaLabelledBy !== void 0) {
|
|
6539
|
+
commonProps["aria-labelledby"] = ariaLabelledBy;
|
|
6540
|
+
commonProps.accessibilityLabelledBy = ariaLabelledBy;
|
|
6541
|
+
}
|
|
6542
|
+
if (accessibilityLabelledBy !== void 0) {
|
|
6543
|
+
commonProps.accessibilityLabelledBy = accessibilityLabelledBy;
|
|
6544
|
+
}
|
|
6545
|
+
if (ariaDescribedBy !== void 0) {
|
|
6546
|
+
commonProps["aria-describedby"] = ariaDescribedBy;
|
|
6547
|
+
commonProps.accessibilityDescribedBy = ariaDescribedBy;
|
|
6548
|
+
}
|
|
6549
|
+
if (accessibilityDescribedBy !== void 0) {
|
|
6550
|
+
commonProps.accessibilityDescribedBy = accessibilityDescribedBy;
|
|
6551
|
+
}
|
|
6552
|
+
if (ariaInvalid) {
|
|
6553
|
+
commonProps["aria-invalid"] = true;
|
|
6554
|
+
}
|
|
6555
|
+
if (ariaRequired) {
|
|
6556
|
+
commonProps["aria-required"] = true;
|
|
6557
|
+
}
|
|
6388
6558
|
if (asChild) {
|
|
6389
6559
|
const slotProps = {
|
|
6390
6560
|
role: "checkbox",
|
|
@@ -6441,6 +6611,334 @@ var Checkbox = /* @__PURE__ */ __name(({
|
|
|
6441
6611
|
}
|
|
6442
6612
|
);
|
|
6443
6613
|
}, "Checkbox");
|
|
6614
|
+
function formatDate(date$1, locale) {
|
|
6615
|
+
try {
|
|
6616
|
+
return new Intl.DateTimeFormat(locale, { dateStyle: "medium" }).format(date$1.toDate(date.getLocalTimeZone()));
|
|
6617
|
+
} catch {
|
|
6618
|
+
return `${date$1.year}-${String(date$1.month).padStart(2, "0")}-${String(date$1.day).padStart(2, "0")}`;
|
|
6619
|
+
}
|
|
6620
|
+
}
|
|
6621
|
+
__name(formatDate, "formatDate");
|
|
6622
|
+
function CalendarIcon({ size = 16, color = "currentColor" }) {
|
|
6623
|
+
const colors = useThemeColors();
|
|
6624
|
+
if (reactNative.Platform.OS === "web") {
|
|
6625
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6626
|
+
"svg",
|
|
6627
|
+
{
|
|
6628
|
+
width: size,
|
|
6629
|
+
height: size,
|
|
6630
|
+
viewBox: "0 0 24 24",
|
|
6631
|
+
fill: "none",
|
|
6632
|
+
stroke: color,
|
|
6633
|
+
strokeWidth: "2",
|
|
6634
|
+
strokeLinecap: "round",
|
|
6635
|
+
strokeLinejoin: "round",
|
|
6636
|
+
"aria-hidden": "true",
|
|
6637
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M8 2v4M16 2v4M3 10h18M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z" })
|
|
6638
|
+
}
|
|
6639
|
+
);
|
|
6640
|
+
}
|
|
6641
|
+
const resolvedColor = color === "currentColor" ? colors.semantic.text.muted : color;
|
|
6642
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6643
|
+
reactNative.Text,
|
|
6644
|
+
{
|
|
6645
|
+
accessibilityElementsHidden: true,
|
|
6646
|
+
importantForAccessibility: "no-hide-descendants",
|
|
6647
|
+
style: { fontSize: size, lineHeight: size, color: resolvedColor },
|
|
6648
|
+
children: "\u{1F4C5}"
|
|
6649
|
+
}
|
|
6650
|
+
);
|
|
6651
|
+
}
|
|
6652
|
+
__name(CalendarIcon, "CalendarIcon");
|
|
6653
|
+
function buildCalendarOptional(minValue, maxValue, isDateUnavailable, firstDayOfWeek) {
|
|
6654
|
+
const out = {};
|
|
6655
|
+
if (minValue !== void 0) {
|
|
6656
|
+
out.minValue = minValue;
|
|
6657
|
+
}
|
|
6658
|
+
if (maxValue !== void 0) {
|
|
6659
|
+
out.maxValue = maxValue;
|
|
6660
|
+
}
|
|
6661
|
+
if (isDateUnavailable !== void 0) {
|
|
6662
|
+
out.isDateUnavailable = isDateUnavailable;
|
|
6663
|
+
}
|
|
6664
|
+
if (firstDayOfWeek !== void 0) {
|
|
6665
|
+
out.firstDayOfWeek = firstDayOfWeek;
|
|
6666
|
+
}
|
|
6667
|
+
return out;
|
|
6668
|
+
}
|
|
6669
|
+
__name(buildCalendarOptional, "buildCalendarOptional");
|
|
6670
|
+
function buildTriggerAriaProps(ariaProps) {
|
|
6671
|
+
const out = {};
|
|
6672
|
+
if (ariaProps["aria-labelledby"] !== void 0) {
|
|
6673
|
+
out["aria-labelledby"] = ariaProps["aria-labelledby"];
|
|
6674
|
+
}
|
|
6675
|
+
if (ariaProps["aria-describedby"] !== void 0) {
|
|
6676
|
+
out["aria-describedby"] = ariaProps["aria-describedby"];
|
|
6677
|
+
}
|
|
6678
|
+
if (ariaProps["aria-invalid"] !== void 0) {
|
|
6679
|
+
out["aria-invalid"] = ariaProps["aria-invalid"];
|
|
6680
|
+
}
|
|
6681
|
+
if (ariaProps["aria-required"] !== void 0) {
|
|
6682
|
+
out["aria-required"] = ariaProps["aria-required"];
|
|
6683
|
+
}
|
|
6684
|
+
return out;
|
|
6685
|
+
}
|
|
6686
|
+
__name(buildTriggerAriaProps, "buildTriggerAriaProps");
|
|
6687
|
+
var DatePickerRoot = /* @__PURE__ */ __name(({
|
|
6688
|
+
value,
|
|
6689
|
+
defaultValue: defaultValue2,
|
|
6690
|
+
onChange,
|
|
6691
|
+
locale: localeProp,
|
|
6692
|
+
minValue,
|
|
6693
|
+
maxValue,
|
|
6694
|
+
isDateUnavailable,
|
|
6695
|
+
firstDayOfWeek,
|
|
6696
|
+
placeholder,
|
|
6697
|
+
disabled = false,
|
|
6698
|
+
id,
|
|
6699
|
+
name: _name,
|
|
6700
|
+
className,
|
|
6701
|
+
testID,
|
|
6702
|
+
...ariaProps
|
|
6703
|
+
}) => {
|
|
6704
|
+
const providerLocale = useLocale();
|
|
6705
|
+
const locale = localeProp ?? providerLocale;
|
|
6706
|
+
const [open, setOpen] = React.useState(false);
|
|
6707
|
+
const isControlled = value !== void 0;
|
|
6708
|
+
const [inner, setInner] = React.useState(defaultValue2 ?? null);
|
|
6709
|
+
const current = isControlled ? value ?? null : inner;
|
|
6710
|
+
const handleChange = React.useCallback(
|
|
6711
|
+
(date) => {
|
|
6712
|
+
if (!isControlled) {
|
|
6713
|
+
setInner(date);
|
|
6714
|
+
}
|
|
6715
|
+
onChange?.(date);
|
|
6716
|
+
setOpen(false);
|
|
6717
|
+
},
|
|
6718
|
+
[isControlled, onChange]
|
|
6719
|
+
);
|
|
6720
|
+
const handleOpenChange = React.useCallback(
|
|
6721
|
+
(next) => {
|
|
6722
|
+
if (!disabled) {
|
|
6723
|
+
setOpen(next);
|
|
6724
|
+
}
|
|
6725
|
+
},
|
|
6726
|
+
[disabled]
|
|
6727
|
+
);
|
|
6728
|
+
const displayValue = current ? formatDate(current, locale) : null;
|
|
6729
|
+
const calendarOptional = buildCalendarOptional(minValue, maxValue, isDateUnavailable, firstDayOfWeek);
|
|
6730
|
+
const triggerAriaProps = buildTriggerAriaProps(ariaProps);
|
|
6731
|
+
const colors = useThemeColors();
|
|
6732
|
+
const hasError = ariaProps["aria-invalid"] === true || ariaProps["aria-invalid"] === "true";
|
|
6733
|
+
const pressableStyle = {
|
|
6734
|
+
flexDirection: "row",
|
|
6735
|
+
alignItems: "center",
|
|
6736
|
+
borderWidth: 1,
|
|
6737
|
+
borderRadius: px(colors.radius.md),
|
|
6738
|
+
paddingHorizontal: px(colors.spacing["3"]),
|
|
6739
|
+
paddingVertical: px(colors.spacing["2"]),
|
|
6740
|
+
backgroundColor: colors.semantic.background.elevated,
|
|
6741
|
+
borderColor: hasError ? colors.color.danger : colors.semantic.border.default,
|
|
6742
|
+
opacity: disabled ? 0.6 : 1
|
|
6743
|
+
};
|
|
6744
|
+
const textStyle = {
|
|
6745
|
+
flex: 1,
|
|
6746
|
+
fontFamily: colors.fontFamily.body,
|
|
6747
|
+
fontSize: px(colors.fontSize.md),
|
|
6748
|
+
color: displayValue ? colors.semantic.text.default : colors.semantic.text.muted
|
|
6749
|
+
};
|
|
6750
|
+
const triggerExtraProps = {
|
|
6751
|
+
role: "combobox",
|
|
6752
|
+
accessibilityRole: "button",
|
|
6753
|
+
"aria-haspopup": "dialog",
|
|
6754
|
+
"aria-expanded": open,
|
|
6755
|
+
...triggerAriaProps
|
|
6756
|
+
};
|
|
6757
|
+
if (id !== void 0) {
|
|
6758
|
+
triggerExtraProps.id = id;
|
|
6759
|
+
triggerExtraProps.nativeID = id;
|
|
6760
|
+
}
|
|
6761
|
+
if (testID !== void 0) {
|
|
6762
|
+
triggerExtraProps.testID = testID;
|
|
6763
|
+
}
|
|
6764
|
+
if (hasError) {
|
|
6765
|
+
triggerExtraProps["aria-invalid"] = true;
|
|
6766
|
+
}
|
|
6767
|
+
if (ariaProps["aria-required"]) {
|
|
6768
|
+
triggerExtraProps["aria-required"] = true;
|
|
6769
|
+
}
|
|
6770
|
+
if (disabled) {
|
|
6771
|
+
triggerExtraProps["aria-disabled"] = true;
|
|
6772
|
+
}
|
|
6773
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open, onOpenChange: handleOpenChange, children: [
|
|
6774
|
+
/* @__PURE__ */ jsxRuntime.jsx(Popover.Trigger, { asChild: false, className: cn(className), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6775
|
+
reactNative.Pressable,
|
|
6776
|
+
{
|
|
6777
|
+
onPress: disabled ? void 0 : () => setOpen(!open),
|
|
6778
|
+
disabled,
|
|
6779
|
+
className: cn(
|
|
6780
|
+
"flex-row items-center rounded-md border px-3 py-2",
|
|
6781
|
+
hasError ? "border-semantic-interactive-destructive" : "border-semantic-border-default",
|
|
6782
|
+
disabled ? "opacity-60" : void 0,
|
|
6783
|
+
className
|
|
6784
|
+
),
|
|
6785
|
+
style: pressableStyle,
|
|
6786
|
+
...triggerExtraProps,
|
|
6787
|
+
children: [
|
|
6788
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: textStyle, numberOfLines: 1, children: displayValue ?? placeholder ?? "" }),
|
|
6789
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: { marginLeft: px(colors.spacing["2"]) }, children: /* @__PURE__ */ jsxRuntime.jsx(CalendarIcon, { size: 16, color: colors.semantic.text.muted }) })
|
|
6790
|
+
]
|
|
6791
|
+
}
|
|
6792
|
+
) }),
|
|
6793
|
+
/* @__PURE__ */ jsxRuntime.jsx(Popover.Content, { "aria-label": "Date picker", side: "bottom", align: "start", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6794
|
+
Calendar,
|
|
6795
|
+
{
|
|
6796
|
+
mode: "single",
|
|
6797
|
+
value: current,
|
|
6798
|
+
onChange: (date) => {
|
|
6799
|
+
handleChange(date);
|
|
6800
|
+
},
|
|
6801
|
+
locale,
|
|
6802
|
+
...calendarOptional
|
|
6803
|
+
}
|
|
6804
|
+
) })
|
|
6805
|
+
] });
|
|
6806
|
+
}, "DatePickerRoot");
|
|
6807
|
+
var DatePickerRange = /* @__PURE__ */ __name(({
|
|
6808
|
+
value,
|
|
6809
|
+
defaultValue: defaultValue2,
|
|
6810
|
+
onChange,
|
|
6811
|
+
locale: localeProp,
|
|
6812
|
+
minValue,
|
|
6813
|
+
maxValue,
|
|
6814
|
+
isDateUnavailable,
|
|
6815
|
+
firstDayOfWeek,
|
|
6816
|
+
placeholder,
|
|
6817
|
+
disabled = false,
|
|
6818
|
+
id,
|
|
6819
|
+
name: _name,
|
|
6820
|
+
className,
|
|
6821
|
+
testID,
|
|
6822
|
+
...ariaProps
|
|
6823
|
+
}) => {
|
|
6824
|
+
const providerLocale = useLocale();
|
|
6825
|
+
const locale = localeProp ?? providerLocale;
|
|
6826
|
+
const [open, setOpen] = React.useState(false);
|
|
6827
|
+
const isControlled = value !== void 0;
|
|
6828
|
+
const [inner, setInner] = React.useState(defaultValue2 ?? { start: null, end: null });
|
|
6829
|
+
const current = isControlled ? value ?? { start: null, end: null } : inner;
|
|
6830
|
+
const calendarValue = current.start !== null ? { start: current.start, end: current.end } : null;
|
|
6831
|
+
const handleChange = React.useCallback(
|
|
6832
|
+
(calRange) => {
|
|
6833
|
+
const next = {
|
|
6834
|
+
start: calRange?.start ?? null,
|
|
6835
|
+
end: calRange?.end ?? null
|
|
6836
|
+
};
|
|
6837
|
+
if (!isControlled) {
|
|
6838
|
+
setInner(next);
|
|
6839
|
+
}
|
|
6840
|
+
onChange?.(next);
|
|
6841
|
+
if (next.start !== null && next.end !== null) {
|
|
6842
|
+
setOpen(false);
|
|
6843
|
+
}
|
|
6844
|
+
},
|
|
6845
|
+
[isControlled, onChange]
|
|
6846
|
+
);
|
|
6847
|
+
const handleOpenChange = React.useCallback(
|
|
6848
|
+
(next) => {
|
|
6849
|
+
if (!disabled) {
|
|
6850
|
+
setOpen(next);
|
|
6851
|
+
}
|
|
6852
|
+
},
|
|
6853
|
+
[disabled]
|
|
6854
|
+
);
|
|
6855
|
+
let displayValue = null;
|
|
6856
|
+
if (current.start !== null) {
|
|
6857
|
+
const startStr = formatDate(current.start, locale);
|
|
6858
|
+
const endStr = current.end !== null ? formatDate(current.end, locale) : "";
|
|
6859
|
+
displayValue = `${startStr} \u2013 ${endStr}`;
|
|
6860
|
+
}
|
|
6861
|
+
const calendarOptional = buildCalendarOptional(minValue, maxValue, isDateUnavailable, firstDayOfWeek);
|
|
6862
|
+
const triggerAriaProps = buildTriggerAriaProps(ariaProps);
|
|
6863
|
+
const colors = useThemeColors();
|
|
6864
|
+
const hasError = ariaProps["aria-invalid"] === true || ariaProps["aria-invalid"] === "true";
|
|
6865
|
+
const pressableStyle = {
|
|
6866
|
+
flexDirection: "row",
|
|
6867
|
+
alignItems: "center",
|
|
6868
|
+
borderWidth: 1,
|
|
6869
|
+
borderRadius: px(colors.radius.md),
|
|
6870
|
+
paddingHorizontal: px(colors.spacing["3"]),
|
|
6871
|
+
paddingVertical: px(colors.spacing["2"]),
|
|
6872
|
+
backgroundColor: colors.semantic.background.elevated,
|
|
6873
|
+
borderColor: hasError ? colors.color.danger : colors.semantic.border.default,
|
|
6874
|
+
opacity: disabled ? 0.6 : 1
|
|
6875
|
+
};
|
|
6876
|
+
const textStyle = {
|
|
6877
|
+
flex: 1,
|
|
6878
|
+
fontFamily: colors.fontFamily.body,
|
|
6879
|
+
fontSize: px(colors.fontSize.md),
|
|
6880
|
+
color: displayValue ? colors.semantic.text.default : colors.semantic.text.muted
|
|
6881
|
+
};
|
|
6882
|
+
const triggerExtraProps = {
|
|
6883
|
+
role: "combobox",
|
|
6884
|
+
accessibilityRole: "button",
|
|
6885
|
+
"aria-haspopup": "dialog",
|
|
6886
|
+
"aria-expanded": open,
|
|
6887
|
+
...triggerAriaProps
|
|
6888
|
+
};
|
|
6889
|
+
if (id !== void 0) {
|
|
6890
|
+
triggerExtraProps.id = id;
|
|
6891
|
+
triggerExtraProps.nativeID = id;
|
|
6892
|
+
}
|
|
6893
|
+
if (testID !== void 0) {
|
|
6894
|
+
triggerExtraProps.testID = testID;
|
|
6895
|
+
}
|
|
6896
|
+
if (hasError) {
|
|
6897
|
+
triggerExtraProps["aria-invalid"] = true;
|
|
6898
|
+
}
|
|
6899
|
+
if (ariaProps["aria-required"]) {
|
|
6900
|
+
triggerExtraProps["aria-required"] = true;
|
|
6901
|
+
}
|
|
6902
|
+
if (disabled) {
|
|
6903
|
+
triggerExtraProps["aria-disabled"] = true;
|
|
6904
|
+
}
|
|
6905
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open, onOpenChange: handleOpenChange, children: [
|
|
6906
|
+
/* @__PURE__ */ jsxRuntime.jsx(Popover.Trigger, { asChild: false, className: cn(className), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6907
|
+
reactNative.Pressable,
|
|
6908
|
+
{
|
|
6909
|
+
onPress: disabled ? void 0 : () => setOpen(!open),
|
|
6910
|
+
disabled,
|
|
6911
|
+
className: cn(
|
|
6912
|
+
"flex-row items-center rounded-md border px-3 py-2",
|
|
6913
|
+
hasError ? "border-semantic-interactive-destructive" : "border-semantic-border-default",
|
|
6914
|
+
disabled ? "opacity-60" : void 0,
|
|
6915
|
+
className
|
|
6916
|
+
),
|
|
6917
|
+
style: pressableStyle,
|
|
6918
|
+
...triggerExtraProps,
|
|
6919
|
+
children: [
|
|
6920
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { style: textStyle, numberOfLines: 1, children: displayValue ?? placeholder ?? "" }),
|
|
6921
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { style: { marginLeft: px(colors.spacing["2"]) }, children: /* @__PURE__ */ jsxRuntime.jsx(CalendarIcon, { size: 16, color: colors.semantic.text.muted }) })
|
|
6922
|
+
]
|
|
6923
|
+
}
|
|
6924
|
+
) }),
|
|
6925
|
+
/* @__PURE__ */ jsxRuntime.jsx(Popover.Content, { "aria-label": "Date range picker", side: "bottom", align: "start", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6926
|
+
Calendar,
|
|
6927
|
+
{
|
|
6928
|
+
mode: "range",
|
|
6929
|
+
value: calendarValue,
|
|
6930
|
+
onChange: (range2) => {
|
|
6931
|
+
handleChange(range2);
|
|
6932
|
+
},
|
|
6933
|
+
locale,
|
|
6934
|
+
...calendarOptional
|
|
6935
|
+
}
|
|
6936
|
+
) })
|
|
6937
|
+
] });
|
|
6938
|
+
}, "DatePickerRange");
|
|
6939
|
+
var DatePicker = Object.assign(DatePickerRoot, {
|
|
6940
|
+
Range: DatePickerRange
|
|
6941
|
+
});
|
|
6444
6942
|
var DialogContext = React.createContext(null);
|
|
6445
6943
|
var useDialogContext = /* @__PURE__ */ __name((label) => {
|
|
6446
6944
|
const ctx = React.useContext(DialogContext);
|
|
@@ -6853,6 +7351,279 @@ var Dialog = Object.assign(DialogRoot, {
|
|
|
6853
7351
|
Footer: DialogFooter,
|
|
6854
7352
|
Close: DialogClose
|
|
6855
7353
|
});
|
|
7354
|
+
var FieldContext = React.createContext(null);
|
|
7355
|
+
var useFieldContextStrict = /* @__PURE__ */ __name((caller) => {
|
|
7356
|
+
const ctx = React.useContext(FieldContext);
|
|
7357
|
+
if (!ctx) {
|
|
7358
|
+
throw new Error(`[Field] ${caller} must be used inside <Field> or <Field.Group>.`);
|
|
7359
|
+
}
|
|
7360
|
+
return ctx;
|
|
7361
|
+
}, "useFieldContextStrict");
|
|
7362
|
+
var childHasDisplayName = /* @__PURE__ */ __name((child, name) => {
|
|
7363
|
+
if (!React.isValidElement(child)) {
|
|
7364
|
+
return false;
|
|
7365
|
+
}
|
|
7366
|
+
const t = child.type;
|
|
7367
|
+
return typeof t !== "string" && t?.displayName === name;
|
|
7368
|
+
}, "childHasDisplayName");
|
|
7369
|
+
var COMPOUND_DISPLAY_NAMES = ["Field.Label", "Field.Description", "Field.Error", "Field.Control"];
|
|
7370
|
+
var isCompoundChild = /* @__PURE__ */ __name((child) => COMPOUND_DISPLAY_NAMES.some((name) => childHasDisplayName(child, name)), "isCompoundChild");
|
|
7371
|
+
var FieldRoot = /* @__PURE__ */ __name(({
|
|
7372
|
+
name,
|
|
7373
|
+
required = false,
|
|
7374
|
+
disabled = false,
|
|
7375
|
+
error = null,
|
|
7376
|
+
label,
|
|
7377
|
+
description,
|
|
7378
|
+
validating = false,
|
|
7379
|
+
orientation = "vertical",
|
|
7380
|
+
id,
|
|
7381
|
+
children,
|
|
7382
|
+
className,
|
|
7383
|
+
testID,
|
|
7384
|
+
isGroup = false
|
|
7385
|
+
}) => {
|
|
7386
|
+
const colors = useThemeColors();
|
|
7387
|
+
const reactId = React.useId();
|
|
7388
|
+
const fieldId = id ?? `nori-ui-field-${reactId}`;
|
|
7389
|
+
const labelId = `${fieldId}-label`;
|
|
7390
|
+
const descriptionId = `${fieldId}-desc`;
|
|
7391
|
+
const errorId = `${fieldId}-error`;
|
|
7392
|
+
const isCompoundMode = React.useMemo(() => {
|
|
7393
|
+
let found = false;
|
|
7394
|
+
React.Children.forEach(children, (child) => {
|
|
7395
|
+
if (isCompoundChild(child)) {
|
|
7396
|
+
found = true;
|
|
7397
|
+
}
|
|
7398
|
+
});
|
|
7399
|
+
return found;
|
|
7400
|
+
}, [children]);
|
|
7401
|
+
const hasDescription = React.useMemo(() => {
|
|
7402
|
+
if (!isCompoundMode) {
|
|
7403
|
+
return description !== void 0 && description !== null && description !== false && description !== "";
|
|
7404
|
+
}
|
|
7405
|
+
let found = false;
|
|
7406
|
+
React.Children.forEach(children, (child) => {
|
|
7407
|
+
if (childHasDisplayName(child, "Field.Description")) {
|
|
7408
|
+
found = true;
|
|
7409
|
+
}
|
|
7410
|
+
});
|
|
7411
|
+
return found;
|
|
7412
|
+
}, [isCompoundMode, description, children]);
|
|
7413
|
+
const hasError = React.useMemo(() => {
|
|
7414
|
+
if (!isCompoundMode) {
|
|
7415
|
+
return Boolean(error);
|
|
7416
|
+
}
|
|
7417
|
+
let found = false;
|
|
7418
|
+
React.Children.forEach(children, (child) => {
|
|
7419
|
+
if (childHasDisplayName(child, "Field.Error") && React.isValidElement(child)) {
|
|
7420
|
+
const el = child;
|
|
7421
|
+
if (el.props.children !== void 0 && el.props.children !== null && el.props.children !== false && el.props.children !== "") {
|
|
7422
|
+
found = true;
|
|
7423
|
+
}
|
|
7424
|
+
}
|
|
7425
|
+
});
|
|
7426
|
+
if (!found && error !== null && error !== void 0 && error !== false && error !== "") {
|
|
7427
|
+
found = true;
|
|
7428
|
+
}
|
|
7429
|
+
return found;
|
|
7430
|
+
}, [isCompoundMode, error, children]);
|
|
7431
|
+
const describedBy = React.useMemo(() => {
|
|
7432
|
+
const ids = [];
|
|
7433
|
+
if (hasDescription) {
|
|
7434
|
+
ids.push(descriptionId);
|
|
7435
|
+
}
|
|
7436
|
+
if (hasError) {
|
|
7437
|
+
ids.push(errorId);
|
|
7438
|
+
}
|
|
7439
|
+
return ids.length === 0 ? void 0 : ids.join(" ");
|
|
7440
|
+
}, [hasDescription, hasError, descriptionId, errorId]);
|
|
7441
|
+
const value = {
|
|
7442
|
+
fieldId,
|
|
7443
|
+
labelId,
|
|
7444
|
+
descriptionId,
|
|
7445
|
+
errorId,
|
|
7446
|
+
hasError,
|
|
7447
|
+
hasDescription,
|
|
7448
|
+
describedBy,
|
|
7449
|
+
disabled,
|
|
7450
|
+
required,
|
|
7451
|
+
validating,
|
|
7452
|
+
...name !== void 0 ? { name } : {},
|
|
7453
|
+
// In compound mode pass `error` (string) so Field.Error can fall back to it.
|
|
7454
|
+
// In shorthand mode the error prop may be ReactNode; only pass when it is a string/null.
|
|
7455
|
+
...error !== null && error !== void 0 && typeof error === "string" ? { error } : {},
|
|
7456
|
+
isGroup
|
|
7457
|
+
};
|
|
7458
|
+
const warnedRef = React.useRef(false);
|
|
7459
|
+
React.useEffect(() => {
|
|
7460
|
+
if (process.env.NODE_ENV === "production" || warnedRef.current) {
|
|
7461
|
+
return;
|
|
7462
|
+
}
|
|
7463
|
+
const hasShorthand = label !== void 0 || description !== void 0 || error !== void 0;
|
|
7464
|
+
if (hasShorthand && isCompoundMode) {
|
|
7465
|
+
warnedRef.current = true;
|
|
7466
|
+
console.warn(
|
|
7467
|
+
"[Field] Mixing shorthand props (label/description/error) with compound children (Field.Label/Field.Description/Field.Error) is not supported. The compound children will win. To suppress this warning, use only one mode."
|
|
7468
|
+
);
|
|
7469
|
+
}
|
|
7470
|
+
}, [label, description, error, isCompoundMode]);
|
|
7471
|
+
const containerStyle = orientation === "horizontal" ? {
|
|
7472
|
+
flexDirection: "row",
|
|
7473
|
+
alignItems: "flex-start",
|
|
7474
|
+
gap: px(colors.spacing["3"])
|
|
7475
|
+
} : { flexDirection: "column", gap: px(colors.spacing["1"]) };
|
|
7476
|
+
const containerExtra = {};
|
|
7477
|
+
if (testID !== void 0) {
|
|
7478
|
+
containerExtra.testID = testID;
|
|
7479
|
+
}
|
|
7480
|
+
containerExtra["data-orientation"] = orientation;
|
|
7481
|
+
if (isGroup) {
|
|
7482
|
+
containerExtra.role = "group";
|
|
7483
|
+
containerExtra["aria-labelledby"] = labelId;
|
|
7484
|
+
containerExtra.accessibilityRole = "none";
|
|
7485
|
+
}
|
|
7486
|
+
if (validating) {
|
|
7487
|
+
containerExtra["data-validating"] = "";
|
|
7488
|
+
containerExtra["aria-busy"] = true;
|
|
7489
|
+
}
|
|
7490
|
+
const renderShorthand = /* @__PURE__ */ __name(() => {
|
|
7491
|
+
const childArray = React.Children.toArray(children);
|
|
7492
|
+
const controlChild = childArray.length === 1 && React.isValidElement(childArray[0]) ? childArray[0] : null;
|
|
7493
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7494
|
+
label !== void 0 && label !== null && label !== false ? /* @__PURE__ */ jsxRuntime.jsx(FieldLabel, { children: label }) : null,
|
|
7495
|
+
description !== void 0 && description !== null && description !== false && description !== "" ? /* @__PURE__ */ jsxRuntime.jsx(FieldDescription, { children: description }) : null,
|
|
7496
|
+
controlChild !== null ? /* @__PURE__ */ jsxRuntime.jsx(FieldControl, { children: controlChild }) : children,
|
|
7497
|
+
error !== void 0 && error !== null && error !== false && error !== "" ? /* @__PURE__ */ jsxRuntime.jsx(FieldError, { children: error }) : null
|
|
7498
|
+
] });
|
|
7499
|
+
}, "renderShorthand");
|
|
7500
|
+
return /* @__PURE__ */ jsxRuntime.jsx(FieldContext.Provider, { value, children: /* @__PURE__ */ jsxRuntime.jsxs(reactNative.View, { style: containerStyle, ...className !== void 0 ? { className } : {}, ...containerExtra, children: [
|
|
7501
|
+
isCompoundMode ? children : renderShorthand(),
|
|
7502
|
+
validating ? /* @__PURE__ */ jsxRuntime.jsx(Spinner, { size: "sm" }) : null
|
|
7503
|
+
] }) });
|
|
7504
|
+
}, "FieldRoot");
|
|
7505
|
+
var FieldLabel = /* @__PURE__ */ __name(({ children }) => {
|
|
7506
|
+
const ctx = useFieldContextStrict("Field.Label");
|
|
7507
|
+
const colors = useThemeColors();
|
|
7508
|
+
const { t } = useTranslation();
|
|
7509
|
+
const requiredIndicator = t("field.requiredIndicator");
|
|
7510
|
+
const requiredLabel = t("field.requiredLabel");
|
|
7511
|
+
const focusInput = /* @__PURE__ */ __name(() => {
|
|
7512
|
+
if (typeof document !== "undefined") {
|
|
7513
|
+
const el = document.getElementById(ctx.fieldId);
|
|
7514
|
+
if (el && typeof el.focus === "function") {
|
|
7515
|
+
el.focus();
|
|
7516
|
+
}
|
|
7517
|
+
}
|
|
7518
|
+
}, "focusInput");
|
|
7519
|
+
return /* @__PURE__ */ jsxRuntime.jsx(reactNative.Pressable, { onPress: focusInput, accessibilityRole: "none", disabled: ctx.disabled, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7520
|
+
reactNative.Text,
|
|
7521
|
+
{
|
|
7522
|
+
nativeID: ctx.labelId,
|
|
7523
|
+
...{ id: ctx.labelId },
|
|
7524
|
+
accessibilityRole: "text",
|
|
7525
|
+
style: {
|
|
7526
|
+
fontFamily: colors.fontFamily.body,
|
|
7527
|
+
fontSize: px(colors.fontSize.sm),
|
|
7528
|
+
fontWeight: colors.fontWeight.medium,
|
|
7529
|
+
color: ctx.disabled ? colors.semantic.text.muted : colors.semantic.text.default
|
|
7530
|
+
},
|
|
7531
|
+
children: [
|
|
7532
|
+
children,
|
|
7533
|
+
ctx.required ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7534
|
+
reactNative.Text,
|
|
7535
|
+
{
|
|
7536
|
+
accessibilityLabel: requiredLabel,
|
|
7537
|
+
...{ "aria-label": requiredLabel },
|
|
7538
|
+
style: { color: colors.color.danger },
|
|
7539
|
+
children: ` ${requiredIndicator}`
|
|
7540
|
+
}
|
|
7541
|
+
) : null
|
|
7542
|
+
]
|
|
7543
|
+
}
|
|
7544
|
+
) });
|
|
7545
|
+
}, "FieldLabel");
|
|
7546
|
+
FieldLabel.displayName = "Field.Label";
|
|
7547
|
+
var FieldControl = /* @__PURE__ */ __name(({ children }) => {
|
|
7548
|
+
const ctx = useFieldContextStrict("Field.Control");
|
|
7549
|
+
if (React.Children.count(children) !== 1 || !React.isValidElement(children)) {
|
|
7550
|
+
throw new Error("[Field.Control] expects exactly one child element.");
|
|
7551
|
+
}
|
|
7552
|
+
const child = children;
|
|
7553
|
+
const merged = {
|
|
7554
|
+
id: child.props.id ?? ctx.fieldId,
|
|
7555
|
+
accessibilityLabelledBy: ctx.labelId,
|
|
7556
|
+
"aria-labelledby": ctx.labelId
|
|
7557
|
+
};
|
|
7558
|
+
if (ctx.name !== void 0 && child.props.name === void 0) {
|
|
7559
|
+
merged.name = ctx.name;
|
|
7560
|
+
}
|
|
7561
|
+
if (ctx.describedBy !== void 0) {
|
|
7562
|
+
merged["aria-describedby"] = ctx.describedBy;
|
|
7563
|
+
merged.accessibilityDescribedBy = ctx.describedBy;
|
|
7564
|
+
}
|
|
7565
|
+
if (ctx.hasError) {
|
|
7566
|
+
merged["aria-invalid"] = true;
|
|
7567
|
+
}
|
|
7568
|
+
if (ctx.required) {
|
|
7569
|
+
merged["aria-required"] = true;
|
|
7570
|
+
}
|
|
7571
|
+
if (ctx.disabled || child.props.disabled) {
|
|
7572
|
+
merged.disabled = true;
|
|
7573
|
+
}
|
|
7574
|
+
return React.cloneElement(child, merged);
|
|
7575
|
+
}, "FieldControl");
|
|
7576
|
+
FieldControl.displayName = "Field.Control";
|
|
7577
|
+
var FieldDescription = /* @__PURE__ */ __name(({ children }) => {
|
|
7578
|
+
const ctx = useFieldContextStrict("Field.Description");
|
|
7579
|
+
const colors = useThemeColors();
|
|
7580
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7581
|
+
reactNative.Text,
|
|
7582
|
+
{
|
|
7583
|
+
nativeID: ctx.descriptionId,
|
|
7584
|
+
...{ id: ctx.descriptionId },
|
|
7585
|
+
style: {
|
|
7586
|
+
fontFamily: colors.fontFamily.body,
|
|
7587
|
+
fontSize: px(colors.fontSize.sm),
|
|
7588
|
+
color: colors.semantic.text.muted
|
|
7589
|
+
},
|
|
7590
|
+
children
|
|
7591
|
+
}
|
|
7592
|
+
);
|
|
7593
|
+
}, "FieldDescription");
|
|
7594
|
+
FieldDescription.displayName = "Field.Description";
|
|
7595
|
+
var FieldError = /* @__PURE__ */ __name(({ children }) => {
|
|
7596
|
+
const ctx = useFieldContextStrict("Field.Error");
|
|
7597
|
+
const colors = useThemeColors();
|
|
7598
|
+
const content = children ?? ctx.error;
|
|
7599
|
+
if (content === null || content === void 0 || content === "" || content === false) {
|
|
7600
|
+
return null;
|
|
7601
|
+
}
|
|
7602
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7603
|
+
reactNative.Text,
|
|
7604
|
+
{
|
|
7605
|
+
nativeID: ctx.errorId,
|
|
7606
|
+
...{ id: ctx.errorId, role: "alert" },
|
|
7607
|
+
accessibilityRole: "text",
|
|
7608
|
+
style: {
|
|
7609
|
+
fontFamily: colors.fontFamily.body,
|
|
7610
|
+
fontSize: px(colors.fontSize.sm),
|
|
7611
|
+
color: colors.color.danger
|
|
7612
|
+
},
|
|
7613
|
+
children: content
|
|
7614
|
+
}
|
|
7615
|
+
);
|
|
7616
|
+
}, "FieldError");
|
|
7617
|
+
FieldError.displayName = "Field.Error";
|
|
7618
|
+
var FieldGroup = /* @__PURE__ */ __name((props) => /* @__PURE__ */ jsxRuntime.jsx(FieldRoot, { ...props, isGroup: true }), "FieldGroup");
|
|
7619
|
+
FieldGroup.displayName = "Field.Group";
|
|
7620
|
+
var Field = Object.assign(FieldRoot, {
|
|
7621
|
+
Label: FieldLabel,
|
|
7622
|
+
Description: FieldDescription,
|
|
7623
|
+
Control: FieldControl,
|
|
7624
|
+
Error: FieldError,
|
|
7625
|
+
Group: FieldGroup
|
|
7626
|
+
});
|
|
6856
7627
|
var isDev = process.env.NODE_ENV !== "production";
|
|
6857
7628
|
var SafeAreaInsetsContext = /* @__PURE__ */ React__namespace.createContext(null);
|
|
6858
7629
|
if (isDev) {
|
|
@@ -7863,6 +8634,55 @@ var InputGroup = Object.assign(InputGroupRoot, {
|
|
|
7863
8634
|
Addon: InputGroupAddon,
|
|
7864
8635
|
Input: InputGroupInput
|
|
7865
8636
|
});
|
|
8637
|
+
var Label = /* @__PURE__ */ __name(({ htmlFor, required = false, disabled = false, children, className, testID }) => {
|
|
8638
|
+
const colors = useThemeColors();
|
|
8639
|
+
const { t } = useTranslation();
|
|
8640
|
+
const requiredIndicator = t("field.requiredIndicator");
|
|
8641
|
+
const requiredLabel = t("field.requiredLabel");
|
|
8642
|
+
const focusTarget = /* @__PURE__ */ __name(() => {
|
|
8643
|
+
if (typeof document !== "undefined") {
|
|
8644
|
+
const el = document.getElementById(htmlFor);
|
|
8645
|
+
if (el && typeof el.focus === "function") {
|
|
8646
|
+
el.focus();
|
|
8647
|
+
}
|
|
8648
|
+
}
|
|
8649
|
+
}, "focusTarget");
|
|
8650
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8651
|
+
reactNative.Pressable,
|
|
8652
|
+
{
|
|
8653
|
+
onPress: focusTarget,
|
|
8654
|
+
accessibilityRole: "none",
|
|
8655
|
+
disabled,
|
|
8656
|
+
...testID !== void 0 ? { testID } : {},
|
|
8657
|
+
...className !== void 0 ? { className } : {},
|
|
8658
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8659
|
+
reactNative.Text,
|
|
8660
|
+
{
|
|
8661
|
+
...{ htmlFor },
|
|
8662
|
+
accessibilityRole: "text",
|
|
8663
|
+
style: {
|
|
8664
|
+
fontFamily: colors.fontFamily.body,
|
|
8665
|
+
fontSize: px(colors.fontSize.sm),
|
|
8666
|
+
fontWeight: colors.fontWeight.medium,
|
|
8667
|
+
color: disabled ? colors.semantic.text.muted : colors.semantic.text.default
|
|
8668
|
+
},
|
|
8669
|
+
children: [
|
|
8670
|
+
children,
|
|
8671
|
+
required ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
8672
|
+
reactNative.Text,
|
|
8673
|
+
{
|
|
8674
|
+
accessibilityLabel: requiredLabel,
|
|
8675
|
+
...{ "aria-label": requiredLabel },
|
|
8676
|
+
style: { color: colors.color.danger },
|
|
8677
|
+
children: ` ${requiredIndicator}`
|
|
8678
|
+
}
|
|
8679
|
+
) : null
|
|
8680
|
+
]
|
|
8681
|
+
}
|
|
8682
|
+
)
|
|
8683
|
+
}
|
|
8684
|
+
);
|
|
8685
|
+
}, "Label");
|
|
7866
8686
|
var range = /* @__PURE__ */ __name((from, to) => {
|
|
7867
8687
|
if (to < from) {
|
|
7868
8688
|
return [];
|
|
@@ -9009,7 +9829,15 @@ var RadioGroup = /* @__PURE__ */ __name(({
|
|
|
9009
9829
|
name,
|
|
9010
9830
|
children,
|
|
9011
9831
|
className,
|
|
9012
|
-
testID
|
|
9832
|
+
testID,
|
|
9833
|
+
id,
|
|
9834
|
+
nativeID,
|
|
9835
|
+
"aria-labelledby": ariaLabelledBy,
|
|
9836
|
+
accessibilityLabelledBy,
|
|
9837
|
+
"aria-describedby": ariaDescribedBy,
|
|
9838
|
+
accessibilityDescribedBy,
|
|
9839
|
+
"aria-invalid": ariaInvalid,
|
|
9840
|
+
"aria-required": ariaRequired
|
|
9013
9841
|
}) => {
|
|
9014
9842
|
const [inner, setInner] = React.useState(defaultValue2);
|
|
9015
9843
|
const isControlled = value !== void 0;
|
|
@@ -9111,7 +9939,15 @@ var RadioGroup = /* @__PURE__ */ __name(({
|
|
|
9111
9939
|
"aria-orientation": orientation,
|
|
9112
9940
|
"aria-disabled": disabled || void 0,
|
|
9113
9941
|
onKeyDown: handleKeyDown,
|
|
9114
|
-
...testID !== void 0 ? { testID } : {}
|
|
9942
|
+
...testID !== void 0 ? { testID } : {},
|
|
9943
|
+
...id !== void 0 ? { id } : {},
|
|
9944
|
+
...nativeID !== void 0 ? { nativeID } : {},
|
|
9945
|
+
...ariaLabelledBy !== void 0 ? { "aria-labelledby": ariaLabelledBy } : {},
|
|
9946
|
+
...accessibilityLabelledBy !== void 0 ? { accessibilityLabelledBy } : {},
|
|
9947
|
+
...ariaDescribedBy !== void 0 ? { "aria-describedby": ariaDescribedBy } : {},
|
|
9948
|
+
...accessibilityDescribedBy !== void 0 ? { accessibilityDescribedBy } : {},
|
|
9949
|
+
...ariaInvalid ? { "aria-invalid": true } : {},
|
|
9950
|
+
...ariaRequired ? { "aria-required": true } : {}
|
|
9115
9951
|
};
|
|
9116
9952
|
return /* @__PURE__ */ jsxRuntime.jsx(RadioGroupContext.Provider, { value: ctxValue, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9117
9953
|
RadioGroupViewport,
|
|
@@ -10057,7 +10893,15 @@ var Switch = /* @__PURE__ */ __name(({
|
|
|
10057
10893
|
className,
|
|
10058
10894
|
testID,
|
|
10059
10895
|
asChild,
|
|
10060
|
-
children
|
|
10896
|
+
children,
|
|
10897
|
+
id,
|
|
10898
|
+
name,
|
|
10899
|
+
"aria-labelledby": ariaLabelledBy,
|
|
10900
|
+
accessibilityLabelledBy,
|
|
10901
|
+
"aria-describedby": ariaDescribedBy,
|
|
10902
|
+
accessibilityDescribedBy,
|
|
10903
|
+
"aria-invalid": ariaInvalid,
|
|
10904
|
+
"aria-required": ariaRequired
|
|
10061
10905
|
}) => {
|
|
10062
10906
|
const colors = useThemeColors();
|
|
10063
10907
|
const [inner, setInner] = React.useState(defaultChecked);
|
|
@@ -10082,6 +10926,13 @@ var Switch = /* @__PURE__ */ __name(({
|
|
|
10082
10926
|
accessibilityState: { checked: value, disabled: Boolean(disabled) },
|
|
10083
10927
|
testID
|
|
10084
10928
|
};
|
|
10929
|
+
if (id !== void 0) {
|
|
10930
|
+
commonProps.id = id;
|
|
10931
|
+
commonProps.nativeID = id;
|
|
10932
|
+
}
|
|
10933
|
+
if (name !== void 0) {
|
|
10934
|
+
commonProps.name = name;
|
|
10935
|
+
}
|
|
10085
10936
|
if (disabled) {
|
|
10086
10937
|
commonProps["aria-disabled"] = true;
|
|
10087
10938
|
}
|
|
@@ -10089,6 +10940,26 @@ var Switch = /* @__PURE__ */ __name(({
|
|
|
10089
10940
|
commonProps["aria-label"] = label;
|
|
10090
10941
|
commonProps.accessibilityLabel = label;
|
|
10091
10942
|
}
|
|
10943
|
+
if (ariaLabelledBy !== void 0) {
|
|
10944
|
+
commonProps["aria-labelledby"] = ariaLabelledBy;
|
|
10945
|
+
commonProps.accessibilityLabelledBy = ariaLabelledBy;
|
|
10946
|
+
}
|
|
10947
|
+
if (accessibilityLabelledBy !== void 0) {
|
|
10948
|
+
commonProps.accessibilityLabelledBy = accessibilityLabelledBy;
|
|
10949
|
+
}
|
|
10950
|
+
if (ariaDescribedBy !== void 0) {
|
|
10951
|
+
commonProps["aria-describedby"] = ariaDescribedBy;
|
|
10952
|
+
commonProps.accessibilityDescribedBy = ariaDescribedBy;
|
|
10953
|
+
}
|
|
10954
|
+
if (accessibilityDescribedBy !== void 0) {
|
|
10955
|
+
commonProps.accessibilityDescribedBy = accessibilityDescribedBy;
|
|
10956
|
+
}
|
|
10957
|
+
if (ariaInvalid) {
|
|
10958
|
+
commonProps["aria-invalid"] = true;
|
|
10959
|
+
}
|
|
10960
|
+
if (ariaRequired) {
|
|
10961
|
+
commonProps["aria-required"] = true;
|
|
10962
|
+
}
|
|
10092
10963
|
if (asChild) {
|
|
10093
10964
|
const slotProps = {
|
|
10094
10965
|
role: "switch",
|
|
@@ -10455,7 +11326,6 @@ var Tabs = Object.assign(TabsRoot, {
|
|
|
10455
11326
|
Trigger: TabsTrigger,
|
|
10456
11327
|
Content: TabsContent
|
|
10457
11328
|
});
|
|
10458
|
-
var CONTAINER_LAYOUT_BASE4 = { flexDirection: "column" };
|
|
10459
11329
|
var FIELD_LAYOUT_BASE2 = {
|
|
10460
11330
|
flexDirection: "row",
|
|
10461
11331
|
alignItems: "center",
|
|
@@ -10466,42 +11336,33 @@ var FIELD_LAYOUT_BASE2 = {
|
|
|
10466
11336
|
overflow: "hidden"
|
|
10467
11337
|
};
|
|
10468
11338
|
var TextInput = /* @__PURE__ */ __name(({
|
|
10469
|
-
label,
|
|
10470
|
-
helperText,
|
|
10471
|
-
error,
|
|
10472
11339
|
disabled,
|
|
10473
11340
|
leading,
|
|
10474
11341
|
trailing,
|
|
10475
11342
|
containerClassName,
|
|
10476
11343
|
className,
|
|
10477
11344
|
testID,
|
|
11345
|
+
id,
|
|
11346
|
+
name,
|
|
10478
11347
|
onChangeText,
|
|
10479
11348
|
multiline,
|
|
10480
11349
|
numberOfLines,
|
|
10481
11350
|
...rest
|
|
10482
11351
|
}) => {
|
|
10483
11352
|
const colors = useThemeColors();
|
|
10484
|
-
const reactId = React.useId();
|
|
10485
|
-
const inputId = testID ?? `nori-ui-input-${reactId}`;
|
|
10486
11353
|
const inputRef = React.useRef(null);
|
|
10487
|
-
const
|
|
10488
|
-
|
|
10489
|
-
}, "focusInput");
|
|
10490
|
-
const describeId = `${inputId}-describe`;
|
|
10491
|
-
const hasError = Boolean(error);
|
|
10492
|
-
const describedBy = error || helperText ? describeId : void 0;
|
|
11354
|
+
const restAny = rest;
|
|
11355
|
+
const hasError = restAny["aria-invalid"] === true || restAny["aria-invalid"] === "true";
|
|
10493
11356
|
const inputExtras = {};
|
|
10494
11357
|
if (testID !== void 0) {
|
|
10495
11358
|
inputExtras.testID = testID;
|
|
10496
11359
|
}
|
|
10497
|
-
if (
|
|
10498
|
-
inputExtras.
|
|
10499
|
-
|
|
10500
|
-
if (hasError) {
|
|
10501
|
-
inputExtras["aria-invalid"] = true;
|
|
11360
|
+
if (id !== void 0) {
|
|
11361
|
+
inputExtras.id = id;
|
|
11362
|
+
inputExtras.nativeID = id;
|
|
10502
11363
|
}
|
|
10503
|
-
if (
|
|
10504
|
-
inputExtras
|
|
11364
|
+
if (name !== void 0) {
|
|
11365
|
+
inputExtras.name = name;
|
|
10505
11366
|
}
|
|
10506
11367
|
if (multiline !== void 0) {
|
|
10507
11368
|
inputExtras.multiline = multiline;
|
|
@@ -10512,12 +11373,6 @@ var TextInput = /* @__PURE__ */ __name(({
|
|
|
10512
11373
|
if (onChangeText !== void 0) {
|
|
10513
11374
|
inputExtras.onChangeText = onChangeText;
|
|
10514
11375
|
}
|
|
10515
|
-
const labelStyle = {
|
|
10516
|
-
fontFamily: colors.fontFamily.body,
|
|
10517
|
-
fontSize: px(colors.fontSize.sm),
|
|
10518
|
-
fontWeight: colors.fontWeight.medium,
|
|
10519
|
-
color: colors.semantic.text.default
|
|
10520
|
-
};
|
|
10521
11376
|
const inputStyle = {
|
|
10522
11377
|
flex: 1,
|
|
10523
11378
|
paddingVertical: px(colors.spacing["2"]),
|
|
@@ -10525,17 +11380,6 @@ var TextInput = /* @__PURE__ */ __name(({
|
|
|
10525
11380
|
fontSize: px(colors.fontSize.md),
|
|
10526
11381
|
color: colors.semantic.text.default
|
|
10527
11382
|
};
|
|
10528
|
-
const helperStyle = {
|
|
10529
|
-
fontFamily: colors.fontFamily.body,
|
|
10530
|
-
fontSize: px(colors.fontSize.sm),
|
|
10531
|
-
color: colors.semantic.text.muted
|
|
10532
|
-
};
|
|
10533
|
-
const errorStyle = {
|
|
10534
|
-
fontFamily: colors.fontFamily.body,
|
|
10535
|
-
fontSize: px(colors.fontSize.sm),
|
|
10536
|
-
color: colors.color.danger
|
|
10537
|
-
};
|
|
10538
|
-
const containerStyle = { ...CONTAINER_LAYOUT_BASE4, gap: px(colors.spacing["1"]) };
|
|
10539
11383
|
const fieldStyle = [
|
|
10540
11384
|
FIELD_LAYOUT_BASE2,
|
|
10541
11385
|
{
|
|
@@ -10546,55 +11390,33 @@ var TextInput = /* @__PURE__ */ __name(({
|
|
|
10546
11390
|
},
|
|
10547
11391
|
disabled ? { opacity: 0.6 } : null
|
|
10548
11392
|
];
|
|
10549
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
10550
|
-
|
|
10551
|
-
|
|
10552
|
-
|
|
10553
|
-
|
|
10554
|
-
|
|
10555
|
-
|
|
10556
|
-
|
|
10557
|
-
|
|
10558
|
-
|
|
10559
|
-
|
|
10560
|
-
|
|
10561
|
-
|
|
10562
|
-
|
|
10563
|
-
|
|
10564
|
-
|
|
10565
|
-
|
|
10566
|
-
|
|
11393
|
+
return /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { className: cn(containerClassName), style: { flexDirection: "column" }, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11394
|
+
reactNative.View,
|
|
11395
|
+
{
|
|
11396
|
+
className: cn(
|
|
11397
|
+
"flex-row items-center rounded-md border px-3",
|
|
11398
|
+
hasError ? "border-semantic-interactive-destructive" : "border-semantic-border-default",
|
|
11399
|
+
disabled ? "opacity-60" : void 0
|
|
11400
|
+
),
|
|
11401
|
+
style: fieldStyle,
|
|
11402
|
+
children: [
|
|
11403
|
+
leading ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { className: "mr-2", style: { marginRight: px(colors.spacing["2"]) }, children: leading }) : null,
|
|
11404
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11405
|
+
reactNative.TextInput,
|
|
11406
|
+
{
|
|
11407
|
+
ref: inputRef,
|
|
11408
|
+
editable: !disabled,
|
|
11409
|
+
className: cn("flex-1 py-2 text-md text-semantic-text-default outline-none", className),
|
|
11410
|
+
placeholderTextColor: colors.semantic.text.muted,
|
|
11411
|
+
...inputExtras,
|
|
11412
|
+
...rest,
|
|
11413
|
+
style: [inputStyle, rest.style]
|
|
11414
|
+
}
|
|
10567
11415
|
),
|
|
10568
|
-
style:
|
|
10569
|
-
|
|
10570
|
-
|
|
10571
|
-
|
|
10572
|
-
reactNative.TextInput,
|
|
10573
|
-
{
|
|
10574
|
-
ref: inputRef,
|
|
10575
|
-
nativeID: inputId,
|
|
10576
|
-
editable: !disabled,
|
|
10577
|
-
className: cn("flex-1 py-2 text-md text-semantic-text-default outline-none", className),
|
|
10578
|
-
placeholderTextColor: colors.semantic.text.muted,
|
|
10579
|
-
...inputExtras,
|
|
10580
|
-
...rest,
|
|
10581
|
-
style: [inputStyle, rest.style]
|
|
10582
|
-
}
|
|
10583
|
-
),
|
|
10584
|
-
trailing ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { className: "ml-2", style: { marginLeft: px(colors.spacing["2"]) }, children: trailing }) : null
|
|
10585
|
-
]
|
|
10586
|
-
}
|
|
10587
|
-
),
|
|
10588
|
-
error ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
10589
|
-
reactNative.Text,
|
|
10590
|
-
{
|
|
10591
|
-
nativeID: describeId,
|
|
10592
|
-
className: "text-sm text-semantic-interactive-destructive",
|
|
10593
|
-
style: errorStyle,
|
|
10594
|
-
children: error
|
|
10595
|
-
}
|
|
10596
|
-
) : helperText ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.Text, { nativeID: describeId, className: "text-sm text-semantic-text-muted", style: helperStyle, children: helperText }) : null
|
|
10597
|
-
] });
|
|
11416
|
+
trailing ? /* @__PURE__ */ jsxRuntime.jsx(reactNative.View, { className: "ml-2", style: { marginLeft: px(colors.spacing["2"]) }, children: trailing }) : null
|
|
11417
|
+
]
|
|
11418
|
+
}
|
|
11419
|
+
) });
|
|
10598
11420
|
}, "TextInput");
|
|
10599
11421
|
var TextArea = /* @__PURE__ */ __name(({ numberOfLines = 4, resize = "vertical", style, ...rest }) => {
|
|
10600
11422
|
const resizeStyle = { resize };
|
|
@@ -11797,12 +12619,15 @@ exports.Button = Button;
|
|
|
11797
12619
|
exports.Calendar = Calendar;
|
|
11798
12620
|
exports.Card = Card;
|
|
11799
12621
|
exports.Checkbox = Checkbox;
|
|
12622
|
+
exports.DatePicker = DatePicker;
|
|
11800
12623
|
exports.Dialog = Dialog;
|
|
12624
|
+
exports.Field = Field;
|
|
11801
12625
|
exports.FloatButton = FloatButton;
|
|
11802
12626
|
exports.HStack = HStack;
|
|
11803
12627
|
exports.I18nProvider = I18nProvider;
|
|
11804
12628
|
exports.Icon = Icon;
|
|
11805
12629
|
exports.InputGroup = InputGroup;
|
|
12630
|
+
exports.Label = Label;
|
|
11806
12631
|
exports.LocaleProvider = LocaleProvider;
|
|
11807
12632
|
exports.NoriProvider = NoriProvider;
|
|
11808
12633
|
exports.PAGINATION_COMPACT_BREAKPOINT = PAGINATION_COMPACT_BREAKPOINT;
|