@astryxdesign/core 0.5.0-canary.cd1a2da → 0.5.0-canary.cf77229
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/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +45 -20
- package/dist/AspectRatio/AspectRatio.d.ts +6 -6
- package/dist/Calendar/Calendar.js +1 -1
- package/dist/Calendar/styles.d.ts +5 -14
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +15 -15
- package/dist/Card/Card.d.ts +6 -9
- package/dist/Card/Card.d.ts.map +1 -1
- package/dist/Card/Card.js +6 -6
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +15 -4
- package/dist/CodeBlock/highlightRanges.js +1 -1
- package/dist/CodeBlock/highlightStyles.js +13 -13
- package/dist/DateInput/NativeDateField.d.ts.map +1 -1
- package/dist/DateInput/NativeDateField.js +23 -6
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +44 -19
- package/dist/DateInput/nativeDateSegments.d.ts +22 -0
- package/dist/DateInput/nativeDateSegments.d.ts.map +1 -0
- package/dist/DateInput/nativeDateSegments.js +111 -0
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +55 -3
- package/dist/HoverCard/useHoverCard.d.ts +4 -1
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +5 -1
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +9 -4
- package/dist/Markdown/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +5 -3
- package/dist/MultiSelector/MultiSelector.d.ts +18 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +46 -5
- package/dist/NavIcon/NavIcon.d.ts.map +1 -1
- package/dist/NavIcon/NavIcon.js +5 -1
- package/dist/NumberInput/NumberInput.d.ts +3 -0
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +109 -43
- package/dist/NumberInput/numberParser.d.ts +64 -0
- package/dist/NumberInput/numberParser.d.ts.map +1 -0
- package/dist/NumberInput/numberParser.js +350 -0
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +18 -5
- package/dist/Selector/Selector.d.ts +17 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +71 -13
- package/dist/SideNav/SideNavHeading.js +2 -2
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +34 -2
- package/dist/StatusDot/StatusDot.d.ts.map +1 -1
- package/dist/StatusDot/StatusDot.js +6 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +6 -1
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +3 -6
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +6 -1
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +27 -8
- package/dist/TopNav/TopNavHeading.js +2 -2
- package/dist/astryx.css +3 -1
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +20 -4
- package/locales/en.json +123 -3
- package/locales/pseudo.json +90 -0
- package/package.json +2 -2
- package/src/AlertDialog/AlertDialog.doc.mjs +114 -30
- package/src/AlertDialog/AlertDialog.test.tsx +211 -2
- package/src/AlertDialog/AlertDialog.tsx +62 -20
- package/src/AspectRatio/AspectRatio.doc.mjs +3 -3
- package/src/AspectRatio/AspectRatio.tsx +6 -6
- package/src/ButtonGroup/ButtonGroup.doc.mjs +2 -2
- package/src/Calendar/Calendar.test.tsx +51 -0
- package/src/Calendar/Calendar.tsx +1 -1
- package/src/Calendar/styles.ts +49 -31
- package/src/Card/Card.doc.mjs +10 -7
- package/src/Card/Card.test.tsx +44 -19
- package/src/Card/Card.tsx +12 -32
- package/src/CodeBlock/CodeBlock.doc.mjs +10 -4
- package/src/CodeBlock/CodeBlock.test.tsx +37 -0
- package/src/CodeBlock/CodeBlock.tsx +20 -4
- package/src/CodeBlock/highlightRanges.ts +1 -1
- package/src/CodeBlock/highlightStyles.ts +13 -13
- package/src/DateInput/DateInput.doc.mjs +2 -2
- package/src/DateInput/DateInputTouch.test.tsx +85 -30
- package/src/DateInput/NativeDateField.test.tsx +100 -30
- package/src/DateInput/NativeDateField.tsx +24 -6
- package/src/DateInput/TouchDateField.tsx +70 -20
- package/src/DateInput/nativeDateSegments.ts +127 -0
- package/src/HoverCard/HoverCard.doc.mjs +8 -2
- package/src/HoverCard/HoverCard.test.tsx +71 -1
- package/src/HoverCard/HoverCard.tsx +74 -2
- package/src/HoverCard/useHoverCard.tsx +9 -2
- package/src/Markdown/Markdown.tsx +9 -4
- package/src/Markdown/parser.test.ts +33 -0
- package/src/Markdown/parser.ts +9 -3
- package/src/MultiSelector/MultiSelector.doc.mjs +22 -1
- package/src/MultiSelector/MultiSelector.test.tsx +171 -0
- package/src/MultiSelector/MultiSelector.tsx +92 -5
- package/src/NavIcon/NavIcon.doc.mjs +8 -2
- package/src/NavIcon/NavIcon.test.tsx +9 -0
- package/src/NavIcon/NavIcon.tsx +5 -1
- package/src/NumberInput/NumberInput.doc.mjs +21 -4
- package/src/NumberInput/NumberInput.test.tsx +228 -0
- package/src/NumberInput/NumberInput.tsx +132 -36
- package/src/NumberInput/numberParser.docblock.test.ts +234 -0
- package/src/NumberInput/numberParser.test.ts +222 -0
- package/src/NumberInput/numberParser.ts +403 -0
- package/src/Pagination/Pagination.test.tsx +3 -2
- package/src/ProgressBar/ProgressBar.doc.mjs +42 -6
- package/src/ProgressBar/ProgressBar.test.tsx +24 -0
- package/src/ProgressBar/ProgressBar.tsx +28 -8
- package/src/Selector/Selector.doc.mjs +14 -0
- package/src/Selector/Selector.test.tsx +217 -0
- package/src/Selector/Selector.tsx +123 -14
- package/src/SideNav/SideNavHeading.tsx +2 -2
- package/src/Slider/Slider.test.tsx +106 -1
- package/src/Slider/Slider.tsx +52 -1
- package/src/StatusDot/StatusDot.doc.mjs +8 -2
- package/src/StatusDot/StatusDot.test.tsx +9 -0
- package/src/StatusDot/StatusDot.tsx +7 -1
- package/src/Stepper/Step.doc.mjs +1 -1
- package/src/Table/BaseTable.tsx +6 -1
- package/src/Table/Table.doc.mjs +3 -1
- package/src/Table/Table.tsx +3 -8
- package/src/Table/TableBody.doc.mjs +2 -2
- package/src/Table/TableHeader.doc.mjs +1 -1
- package/src/Table/useTablePagination.doc.mjs +1 -1
- package/src/TextArea/TextArea.doc.mjs +8 -2
- package/src/TextArea/TextArea.test.tsx +11 -0
- package/src/TextArea/TextArea.tsx +12 -6
- package/src/Timestamp/Timestamp.test.tsx +18 -0
- package/src/Toast/ToastViewport.tsx +17 -1
- package/src/TopNav/TopNavHeading.tsx +2 -2
- package/src/raw-import.d.ts +14 -0
- package/src/theme/derivedVarRegistry.test.ts +18 -3
- package/src/theme/derivedVarRegistry.ts +22 -4
- package/src/theme/generateThemeRules.test.ts +37 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file AlertDialog.tsx
|
|
3
|
-
* @input Uses React, Dialog, Layout, Heading, Text, Button
|
|
3
|
+
* @input Uses React, StyleX, Dialog, Layout, Heading, Text, Button
|
|
4
4
|
* @output Exports AlertDialog component, AlertDialogProps type
|
|
5
5
|
* @position Core implementation; consumed by index.ts, tested by AlertDialog.test.tsx
|
|
6
6
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlertDialog.d.ts","sourceRoot":"","sources":["../../src/AlertDialog/AlertDialog.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAA2B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AlertDialog.d.ts","sourceRoot":"","sources":["../../src/AlertDialog/AlertDialog.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAA2B,MAAM,OAAO,CAAC;AAShD,OAAO,EAAS,KAAK,aAAa,EAAC,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAkB5C,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACpE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAE3C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC;IAExB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,WAAW,EACX,WAAW,EAAE,oBAAoB,EACjC,WAAW,EACX,aAA6B,EAC7B,eAAe,EACf,QAAQ,EACR,KAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,IAAI,EACR,EAAE,gBAAgB,qBA8FlB;yBAhHe,WAAW"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file AlertDialog.tsx
|
|
7
|
-
* @input Uses React, Dialog, Layout, Heading, Text, Button
|
|
7
|
+
* @input Uses React, StyleX, Dialog, Layout, Heading, Text, Button
|
|
8
8
|
* @output Exports AlertDialog component, AlertDialogProps type
|
|
9
9
|
* @position Core implementation; consumed by index.ts, tested by AlertDialog.test.tsx
|
|
10
10
|
*
|
|
@@ -16,18 +16,32 @@
|
|
|
16
16
|
* - /packages/cli/assets/templates/blocks/components/AlertDialog/ (showcase blocks)
|
|
17
17
|
*/
|
|
18
18
|
import React, { useId, useCallback } from 'react';
|
|
19
|
+
import * as stylex from '@stylexjs/stylex';
|
|
19
20
|
import { Dialog } from "../Dialog/index.js";
|
|
20
21
|
import { Layout } from "../Layout/Layout.js";
|
|
21
22
|
import { LayoutContent } from "../Layout/LayoutContent.js";
|
|
22
23
|
import { LayoutFooter } from "../Layout/LayoutFooter.js";
|
|
23
|
-
import {
|
|
24
|
+
import { Stack } from "../Stack/index.js";
|
|
24
25
|
import { Heading } from "../Heading/Heading.js";
|
|
25
26
|
import { Text } from "../Text/Text.js";
|
|
26
27
|
import { Button } from "../Button/index.js";
|
|
27
28
|
import { mergeProps } from "../utils/index.js";
|
|
28
29
|
import { themeProps } from "../utils/themeProps.js";
|
|
29
30
|
import { useTranslator } from "../i18n/index.js";
|
|
31
|
+
import { useMediaQuery } from "../hooks/index.js";
|
|
30
32
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
33
|
+
const SMALL_SCREEN_QUERY = '(max-width: 640px)';
|
|
34
|
+
const styles = {
|
|
35
|
+
action: {
|
|
36
|
+
ks0D6T: "x193iq5w",
|
|
37
|
+
k7Eaqz: "xeuugli",
|
|
38
|
+
$$css: true
|
|
39
|
+
},
|
|
40
|
+
stackedAction: {
|
|
41
|
+
kzqmXN: "xh8yej3",
|
|
42
|
+
$$css: true
|
|
43
|
+
}
|
|
44
|
+
};
|
|
31
45
|
/**
|
|
32
46
|
* A confirmation dialog for destructive or irreversible actions.
|
|
33
47
|
*
|
|
@@ -77,9 +91,33 @@ export function AlertDialog({
|
|
|
77
91
|
const cancelLabel = cancelLabelFromProps ?? t('@astryx.alertDialog.cancel');
|
|
78
92
|
const titleId = useId();
|
|
79
93
|
const descriptionId = useId();
|
|
94
|
+
// Width stays delegated to Dialog: this query exists only so AlertDialog can
|
|
95
|
+
// keep narrow visual, DOM, and tab order aligned for its destructive/cancel
|
|
96
|
+
// semantics without coupling action order to pointer or hover capability.
|
|
97
|
+
const isSmallScreen = useMediaQuery(SMALL_SCREEN_QUERY);
|
|
80
98
|
const handleCancel = useCallback(() => {
|
|
81
99
|
onOpenChange(false);
|
|
82
100
|
}, [onOpenChange]);
|
|
101
|
+
const buttonActionStyle = [styles.action, isSmallScreen && styles.stackedAction];
|
|
102
|
+
const cancelButton = /*#__PURE__*/_jsx(Button, {
|
|
103
|
+
variant: "ghost",
|
|
104
|
+
label: cancelLabel,
|
|
105
|
+
onClick: handleCancel,
|
|
106
|
+
xstyle: buttonActionStyle
|
|
107
|
+
// Dialog focuses [data-autofocus] itself after showModal(), because
|
|
108
|
+
// React's autoFocus runs during commit while the dialog is invisible.
|
|
109
|
+
// Cancel is least destructive, so it remains the autofocus target even
|
|
110
|
+
// when small-screen visual order places the destructive action above it.
|
|
111
|
+
,
|
|
112
|
+
"data-autofocus": true
|
|
113
|
+
}, "cancel");
|
|
114
|
+
const actionButton = /*#__PURE__*/_jsx(Button, {
|
|
115
|
+
variant: actionVariant,
|
|
116
|
+
label: actionLabel,
|
|
117
|
+
onClick: onAction,
|
|
118
|
+
isLoading: isActionLoading,
|
|
119
|
+
xstyle: buttonActionStyle
|
|
120
|
+
}, "action");
|
|
83
121
|
return /*#__PURE__*/_jsx(Dialog, {
|
|
84
122
|
...rest,
|
|
85
123
|
ref: ref,
|
|
@@ -117,25 +155,12 @@ export function AlertDialog({
|
|
|
117
155
|
})]
|
|
118
156
|
}),
|
|
119
157
|
footer: /*#__PURE__*/_jsx(LayoutFooter, {
|
|
120
|
-
children: /*#__PURE__*/
|
|
158
|
+
children: /*#__PURE__*/_jsx(Stack, {
|
|
159
|
+
direction: isSmallScreen ? 'vertical' : 'horizontal',
|
|
121
160
|
gap: 2,
|
|
122
|
-
hAlign:
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
label: cancelLabel,
|
|
126
|
-
onClick: handleCancel
|
|
127
|
-
// Dialog focuses [data-autofocus] itself after showModal(),
|
|
128
|
-
// because React's autoFocus runs during commit while the
|
|
129
|
-
// dialog is still invisible. Cancel is the least destructive
|
|
130
|
-
// choice, so it is the one that should be preselected.
|
|
131
|
-
,
|
|
132
|
-
"data-autofocus": true
|
|
133
|
-
}), /*#__PURE__*/_jsx(Button, {
|
|
134
|
-
variant: actionVariant,
|
|
135
|
-
label: actionLabel,
|
|
136
|
-
onClick: onAction,
|
|
137
|
-
isLoading: isActionLoading
|
|
138
|
-
})]
|
|
161
|
+
hAlign: isSmallScreen ? 'stretch' : 'end',
|
|
162
|
+
wrap: isSmallScreen ? 'nowrap' : 'wrap',
|
|
163
|
+
children: isSmallScreen ? [actionButton, cancelButton] : [cancelButton, actionButton]
|
|
139
164
|
})
|
|
140
165
|
})
|
|
141
166
|
})
|
|
@@ -44,14 +44,14 @@ export interface AspectRatioProps extends BaseProps<HTMLDivElement> {
|
|
|
44
44
|
* `astryx-base` cascade layer, and unlayered CSS wins over layered
|
|
45
45
|
* rules regardless of specificity.
|
|
46
46
|
*
|
|
47
|
+
* A responsive ratio is set in CSS, not on the component. For example, a 3:1
|
|
48
|
+
* hero can become 3:2 when its container narrows by targeting the element's
|
|
49
|
+
* class from a container query:
|
|
50
|
+
* `@container gallery (max-width: 720px) { .gallery-hero { aspect-ratio: 3 / 2; } }`.
|
|
51
|
+
*
|
|
47
52
|
* @example
|
|
48
53
|
* ```
|
|
49
|
-
*
|
|
50
|
-
* <AspectRatio ratio={3 / 1} className="gallery-hero">…</AspectRatio>
|
|
51
|
-
*
|
|
52
|
-
* // CSS: @container gallery (max-width: 720px) {
|
|
53
|
-
* // .gallery-hero { aspect-ratio: 3 / 2; }
|
|
54
|
-
* // }
|
|
54
|
+
* <AspectRatio ratio={3 / 1} className="gallery-hero">...</AspectRatio>
|
|
55
55
|
* ```
|
|
56
56
|
*/
|
|
57
57
|
ratio: number;
|
|
@@ -261,7 +261,7 @@ export function Calendar({
|
|
|
261
261
|
if (plainDateIsEqual(date, startPd)) {
|
|
262
262
|
setRangeSelectionStart(null);
|
|
263
263
|
announce(t('@astryx.calendar.rangeClearedAnnounce', {
|
|
264
|
-
date: plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY)
|
|
264
|
+
date: plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY, locale)
|
|
265
265
|
}));
|
|
266
266
|
return;
|
|
267
267
|
}
|
|
@@ -33,19 +33,9 @@ export declare const calendarStyles: Readonly<{
|
|
|
33
33
|
}>;
|
|
34
34
|
readonly monthsContainer: Readonly<{
|
|
35
35
|
readonly display: stylex.StyleXClassNameFor<"display", "flex">;
|
|
36
|
+
readonly flexWrap: stylex.StyleXClassNameFor<"flexWrap", "wrap">;
|
|
36
37
|
readonly gap: stylex.StyleXClassNameFor<"gap", "16px">;
|
|
37
38
|
}>;
|
|
38
|
-
readonly srOnly: Readonly<{
|
|
39
|
-
readonly position: stylex.StyleXClassNameFor<"position", "absolute">;
|
|
40
|
-
readonly width: stylex.StyleXClassNameFor<"width", "1px">;
|
|
41
|
-
readonly height: stylex.StyleXClassNameFor<"height", "1px">;
|
|
42
|
-
readonly padding: stylex.StyleXClassNameFor<"padding", 0>;
|
|
43
|
-
readonly margin: stylex.StyleXClassNameFor<"margin", "-1px">;
|
|
44
|
-
readonly overflow: stylex.StyleXClassNameFor<"overflow", "hidden">;
|
|
45
|
-
readonly clip: stylex.StyleXClassNameFor<"clip", "rect(0, 0, 0, 0)">;
|
|
46
|
-
readonly whiteSpace: stylex.StyleXClassNameFor<"whiteSpace", "nowrap">;
|
|
47
|
-
readonly borderWidth: stylex.StyleXClassNameFor<"borderWidth", 0>;
|
|
48
|
-
}>;
|
|
49
39
|
readonly navIcon: Readonly<{
|
|
50
40
|
readonly display: stylex.StyleXClassNameFor<"display", "inline-flex">;
|
|
51
41
|
}>;
|
|
@@ -154,7 +144,7 @@ export declare const dayCellStyles: Readonly<{
|
|
|
154
144
|
readonly display: stylex.StyleXClassNameFor<"display", "flex">;
|
|
155
145
|
readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
|
|
156
146
|
readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "center">;
|
|
157
|
-
readonly borderRadius: stylex.StyleXClassNameFor<"borderRadius", "
|
|
147
|
+
readonly borderRadius: stylex.StyleXClassNameFor<"borderRadius", "9999px">;
|
|
158
148
|
readonly borderWidth: stylex.StyleXClassNameFor<"borderWidth", 0>;
|
|
159
149
|
readonly borderStyle: stylex.StyleXClassNameFor<"borderStyle", "none">;
|
|
160
150
|
readonly cursor: stylex.StyleXClassNameFor<"cursor", "default" | "pointer">;
|
|
@@ -209,8 +199,9 @@ export declare const dayCellTheme: Readonly<{
|
|
|
209
199
|
readonly boxShadow: stylex.StyleXClassNameFor<"boxShadow", `inset 0 0 0 1px ${stylex.StyleXVar<"light-dark(#0A1317, #DFE2E5)">}`>;
|
|
210
200
|
}>;
|
|
211
201
|
readonly daySelected: Readonly<{
|
|
212
|
-
readonly
|
|
213
|
-
readonly
|
|
202
|
+
readonly forcedColorAdjust: stylex.StyleXClassNameFor<"forcedColorAdjust", "none">;
|
|
203
|
+
readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", "light-dark(#0064E0, #2694FE)" | "Highlight">;
|
|
204
|
+
readonly color: stylex.StyleXClassNameFor<"color", "light-dark(#FFFFFF, #FFFFFF)" | "HighlightText">;
|
|
214
205
|
readonly backgroundImage: stylex.StyleXClassNameFor<"backgroundImage", {
|
|
215
206
|
readonly '@media (hover: hover)': `linear-gradient(${stylex.StyleXVar<"light-dark(#0536590C, #FFFFFF0C)">}, ${stylex.StyleXVar<"light-dark(#0536590C, #FFFFFF0C)">})`;
|
|
216
207
|
} | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/Calendar/styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAgB3C,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/Calendar/styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAgB3C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCzB,CAAC;AAMH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuC1B,CAAC;AAiBH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+GxB,CAAC;AAMH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0EvB,CAAC"}
|
package/dist/Calendar/styles.js
CHANGED
|
@@ -46,21 +46,10 @@ export const calendarStyles = {
|
|
|
46
46
|
},
|
|
47
47
|
monthsContainer: {
|
|
48
48
|
k1xSpc: "x78zum5",
|
|
49
|
+
kwnvtZ: "x1a02dak",
|
|
49
50
|
kOIVth: "x18g69wz",
|
|
50
51
|
$$css: true
|
|
51
52
|
},
|
|
52
|
-
srOnly: {
|
|
53
|
-
kVAEAm: "x10l6tqk",
|
|
54
|
-
kzqmXN: "x1i1rx1s",
|
|
55
|
-
kZKoxP: "xjm9jq1",
|
|
56
|
-
kmVPX3: "x1717udv",
|
|
57
|
-
kogj98: "xkdpibf",
|
|
58
|
-
kVQacm: "xb3r6kr",
|
|
59
|
-
kMcinP: "xzpqnlu",
|
|
60
|
-
khDVqt: "xuxw1ft",
|
|
61
|
-
kMzoRj: "xc342km",
|
|
62
|
-
$$css: true
|
|
63
|
-
},
|
|
64
53
|
navIcon: {
|
|
65
54
|
k1xSpc: "x3nfvp2",
|
|
66
55
|
$$css: true
|
|
@@ -122,6 +111,16 @@ export const monthGridStyles = {
|
|
|
122
111
|
// Day Cell Styles - Structural (layout, sizing, positioning)
|
|
123
112
|
// =============================================================================
|
|
124
113
|
|
|
114
|
+
// Half the gap between the day button and its cell — (--size-element-md minus
|
|
115
|
+
// --size-element-sm) / 2 — so the band's rounded caps line up with the button
|
|
116
|
+
// and the button's ::before bleeds out to meet its neighbour's. Deliberately a
|
|
117
|
+
// literal and NOT a spacing token: this is a layout value derived from the two
|
|
118
|
+
// size tokens, and pinning it to --spacing-0-5 desynchronises it from them
|
|
119
|
+
// (matcha sets that step to 3px, which overlaps adjacent days' hit targets by
|
|
120
|
+
// 2px). Deriving it with calc() from the size tokens would be better still and
|
|
121
|
+
// would close butter's 4px dead gap; that needs its own measured change.
|
|
122
|
+
const BAND_INSET = '2px';
|
|
123
|
+
const HIT_BLEED = '-2px';
|
|
125
124
|
export const dayCellStyles = {
|
|
126
125
|
cell: {
|
|
127
126
|
kVAEAm: "x1n2onr6",
|
|
@@ -198,7 +197,7 @@ export const dayCellStyles = {
|
|
|
198
197
|
k1xSpc: "x78zum5",
|
|
199
198
|
kGNEyG: "x6s0dn4",
|
|
200
199
|
kjj79g: "xl56j7k",
|
|
201
|
-
kaIpWk: "
|
|
200
|
+
kaIpWk: "xjspbzw",
|
|
202
201
|
kMzoRj: "xc342km",
|
|
203
202
|
ksu8eU: "xng3xce",
|
|
204
203
|
kkrTdU: "x1ypdohk x16khyan",
|
|
@@ -269,8 +268,9 @@ export const dayCellTheme = {
|
|
|
269
268
|
$$css: true
|
|
270
269
|
},
|
|
271
270
|
daySelected: {
|
|
272
|
-
|
|
273
|
-
|
|
271
|
+
kAXs8y: "x1kzknox",
|
|
272
|
+
kWkggS: "x1ewilqj x1jzqe4",
|
|
273
|
+
kMwMTN: "x17wrial x1k5gbb1",
|
|
274
274
|
kKwaWg: "xmvprkv",
|
|
275
275
|
$$css: true
|
|
276
276
|
},
|
package/dist/Card/Card.d.ts
CHANGED
|
@@ -30,14 +30,6 @@ export type CardVariant = 'default' | 'transparent' | 'muted' | 'blue' | 'cyan'
|
|
|
30
30
|
export type { SizeValue } from '../utils/types';
|
|
31
31
|
export interface CardProps extends BaseProps<HTMLDivElement> {
|
|
32
32
|
ref?: React.Ref<HTMLDivElement>;
|
|
33
|
-
/**
|
|
34
|
-
* CSS class name(s) appended to the root element.
|
|
35
|
-
*/
|
|
36
|
-
className?: string;
|
|
37
|
-
/**
|
|
38
|
-
* Inline styles to apply to the root element.
|
|
39
|
-
*/
|
|
40
|
-
style?: React.CSSProperties;
|
|
41
33
|
/**
|
|
42
34
|
* Width of the card.
|
|
43
35
|
* Numbers are treated as pixels, strings are used as-is.
|
|
@@ -66,7 +58,12 @@ export interface CardProps extends BaseProps<HTMLDivElement> {
|
|
|
66
58
|
/**
|
|
67
59
|
* Internal padding of the card using the spacing scale.
|
|
68
60
|
* Accepts numeric spacing steps: 0, 0.5, 1, 1.5, 2, 3, 4, 5, 6, 8, 10.
|
|
69
|
-
*
|
|
61
|
+
*
|
|
62
|
+
* Omit it and the card takes the theme's card padding rather than a step, so
|
|
63
|
+
* passing a step is a decision to override the theme, not a way to restate
|
|
64
|
+
* the default.
|
|
65
|
+
*
|
|
66
|
+
* @default the theme's card padding (spacing step 4 with no theme)
|
|
70
67
|
*/
|
|
71
68
|
padding?: SpacingStep;
|
|
72
69
|
/**
|
package/dist/Card/Card.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../src/Card/Card.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../src/Card/Card.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAWrC,OAAO,KAAK,EAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAEtE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAO5C;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,aAAa,GACb,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,GACN,OAAO,GACP,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,KAAK,GACL,MAAM,GACN,QAAQ,CAAC;AA2Gb,YAAY,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAE9C,MAAM,WAAW,SAAU,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC1D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,IAAI,CAAC,EACnB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,OAAO,EACP,OAAmB,EACnB,SAAkB,EAClB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,+BAgDX;yBA9De,IAAI"}
|
package/dist/Card/Card.js
CHANGED
|
@@ -17,7 +17,7 @@ import * as stylex from '@stylexjs/stylex';
|
|
|
17
17
|
import "../theme/tokens.stylex.js";
|
|
18
18
|
import { borderVars, colorVars, radiusVars, shadowVars } from "../theme/tokens.stylex.js";
|
|
19
19
|
import { container } from "../Layout/container.stylex.js";
|
|
20
|
-
import {
|
|
20
|
+
import { spacingStepToToken } from "../Layout/padding.stylex.js";
|
|
21
21
|
import { mergeProps } from "../utils/index.js";
|
|
22
22
|
import { themeProps } from "../utils/themeProps.js";
|
|
23
23
|
|
|
@@ -216,20 +216,20 @@ export function Card({
|
|
|
216
216
|
|
|
217
217
|
// When no explicit padding prop, use theme default (set via container tokens)
|
|
218
218
|
const useThemeDefault = padding == null;
|
|
219
|
-
const
|
|
220
|
-
const paddingToken = spacingStepToToken[effectivePadding];
|
|
219
|
+
const paddingToken = useThemeDefault ? undefined : spacingStepToToken[padding];
|
|
221
220
|
return /*#__PURE__*/_jsx("div", {
|
|
222
221
|
ref: ref,
|
|
223
222
|
...mergeProps(themeProps('card', {
|
|
224
|
-
variant
|
|
225
|
-
|
|
223
|
+
variant,
|
|
224
|
+
elevation
|
|
225
|
+
}), stylex.props(styles.card, variantStyles[variant], elevationStyles[elevation], hasFixedHeight && styles.scrollable, dynamicStyles.sizing(width ?? null, height ?? null, maxWidth ?? null, minHeight ?? null), ...container(paddingToken == null ? {
|
|
226
226
|
useThemeDefault: 'card'
|
|
227
227
|
} : {
|
|
228
228
|
paddingInnerX: paddingToken,
|
|
229
229
|
paddingInnerY: paddingToken,
|
|
230
230
|
paddingOuterX: paddingToken,
|
|
231
231
|
paddingOuterY: paddingToken
|
|
232
|
-
}),
|
|
232
|
+
}),
|
|
233
233
|
// Applied after the container padding so the border-inset calc wins;
|
|
234
234
|
// it reads the --container-padding-* vars set above.
|
|
235
235
|
variant === 'default' && styles.withBorder, xstyle), className, style),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../src/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA6B5C,OAAO,EAAc,KAAK,qBAAqB,EAAC,MAAM,iBAAiB,CAAC;AA2WxE,MAAM,WAAW,cAAe,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC/D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,KACb;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAClD,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACrC;AAqPD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,QAAsB,EACtB,KAAK,EACL,gBAAuB,EACvB,cAAsB,EACtB,cAAc,EACd,aAAoB,EACpB,MAAM,EACN,SAAiB,EACjB,SAAS,EACT,aAAqB,EACrB,oBAAyB,EACzB,IAAW,EACX,KAAK,EAAE,SAAyB,EAChC,SAAkB,EAClB,SAAS,EAAE,eAAe,EAC1B,aAAsB,EACtB,WAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../src/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA6B5C,OAAO,EAAc,KAAK,qBAAqB,EAAC,MAAM,iBAAiB,CAAC;AA2WxE,MAAM,WAAW,cAAe,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC/D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,KACb;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAClD,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACrC;AAqPD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,QAAsB,EACtB,KAAK,EACL,gBAAuB,EACvB,cAAsB,EACtB,cAAc,EACd,aAAoB,EACpB,MAAM,EACN,SAAiB,EACjB,SAAS,EACT,aAAqB,EACrB,oBAAyB,EACzB,IAAW,EACX,KAAK,EAAE,SAAyB,EAChC,SAAkB,EAClB,SAAS,EAAE,eAAe,EAC1B,aAAsB,EACtB,WAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,cAAc,qBA6OhB;yBArQe,SAAS"}
|
|
@@ -510,13 +510,17 @@ export function CodeBlock({
|
|
|
510
510
|
void handleCopy();
|
|
511
511
|
},
|
|
512
512
|
xstyle: [styles.copyButton, !showHeader && styles.copyButtonAbsolute],
|
|
513
|
-
...themeProps('
|
|
513
|
+
...themeProps('code-block-copy-button', undefined, {
|
|
514
|
+
legacyNames: ['codeblock-copy-button']
|
|
515
|
+
})
|
|
514
516
|
}) : null;
|
|
515
517
|
const headerEl = showHeader ? /*#__PURE__*/_jsxs("div", {
|
|
516
|
-
...mergeProps(themeProps('
|
|
518
|
+
...mergeProps(themeProps('code-block-header', {
|
|
517
519
|
size,
|
|
518
520
|
language,
|
|
519
521
|
container
|
|
522
|
+
}, {
|
|
523
|
+
legacyNames: ['codeblock-header']
|
|
520
524
|
}), {
|
|
521
525
|
0: {
|
|
522
526
|
className: "x78zum5 x6s0dn4 x1qughib x1pzlopt xzyc27v x7wzq59 x13vifvy x1vjfegm xce4md1"
|
|
@@ -539,9 +543,11 @@ export function CodeBlock({
|
|
|
539
543
|
} : undefined,
|
|
540
544
|
...focusOutlineProps.focusVisible(styles.header, canCollapse && styles.headerCollapsible),
|
|
541
545
|
children: /*#__PURE__*/_jsxs("span", {
|
|
542
|
-
...mergeProps(themeProps('
|
|
546
|
+
...mergeProps(themeProps('code-block-title', {
|
|
543
547
|
size,
|
|
544
548
|
language
|
|
549
|
+
}, {
|
|
550
|
+
legacyNames: ['codeblock-title']
|
|
545
551
|
}), {
|
|
546
552
|
className: "x78zum5 x6s0dn4 x141an7d x9m5x89 x1e4wzip x1mjzq1q x1ghz6dp x1ltkj2j"
|
|
547
553
|
}),
|
|
@@ -604,10 +610,15 @@ export function CodeBlock({
|
|
|
604
610
|
});
|
|
605
611
|
const block = /*#__PURE__*/_jsxs("pre", {
|
|
606
612
|
ref: ref,
|
|
607
|
-
...mergeProps(themeProps('
|
|
613
|
+
...mergeProps(themeProps('code-block', {
|
|
608
614
|
size,
|
|
609
615
|
language,
|
|
610
616
|
container
|
|
617
|
+
},
|
|
618
|
+
// `codeblock` ran the compound name together; themes styling it keep
|
|
619
|
+
// working until the next major.
|
|
620
|
+
{
|
|
621
|
+
legacyNames: ['codeblock']
|
|
611
622
|
}), stylex.props(styles.root, dynamicStyles.width(widthProp), containerStyles[container], xstyle), className, style),
|
|
612
623
|
...props,
|
|
613
624
|
children: [headerEl, canCollapse ? /*#__PURE__*/_jsx("div", {
|
|
@@ -54,7 +54,7 @@ function ensureDynamicHighlightType(tokenType) {
|
|
|
54
54
|
}
|
|
55
55
|
const name = `astryx-${tokenType}`;
|
|
56
56
|
const colorVar = `var(--color-syntax-${tokenType}, currentColor)`;
|
|
57
|
-
dynamicStyleSheet.insertRule(`.astryx-
|
|
57
|
+
dynamicStyleSheet.insertRule(`.astryx-code-block code::highlight(${name}), .astryx-codeeditor code::highlight(${name}) { color: ${colorVar}; }`);
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
// ---------------------------------------------------------------------------
|
|
@@ -28,31 +28,31 @@ const FALLBACK_TOKENS = `:root {\n${Object.entries(syntaxTokenDefaults).map(([na
|
|
|
28
28
|
const HIGHLIGHT_STYLES = `
|
|
29
29
|
${FALLBACK_TOKENS}
|
|
30
30
|
|
|
31
|
-
.astryx-
|
|
31
|
+
.astryx-code-block code::highlight(astryx-keyword),
|
|
32
32
|
.astryx-codeeditor code::highlight(astryx-keyword) { color: var(--color-syntax-keyword); }
|
|
33
|
-
.astryx-
|
|
33
|
+
.astryx-code-block code::highlight(astryx-string),
|
|
34
34
|
.astryx-codeeditor code::highlight(astryx-string) { color: var(--color-syntax-string); }
|
|
35
|
-
.astryx-
|
|
35
|
+
.astryx-code-block code::highlight(astryx-comment),
|
|
36
36
|
.astryx-codeeditor code::highlight(astryx-comment) { color: var(--color-syntax-comment); }
|
|
37
|
-
.astryx-
|
|
37
|
+
.astryx-code-block code::highlight(astryx-number),
|
|
38
38
|
.astryx-codeeditor code::highlight(astryx-number) { color: var(--color-syntax-number); }
|
|
39
|
-
.astryx-
|
|
39
|
+
.astryx-code-block code::highlight(astryx-function),
|
|
40
40
|
.astryx-codeeditor code::highlight(astryx-function) { color: var(--color-syntax-function); }
|
|
41
|
-
.astryx-
|
|
41
|
+
.astryx-code-block code::highlight(astryx-type),
|
|
42
42
|
.astryx-codeeditor code::highlight(astryx-type) { color: var(--color-syntax-type); }
|
|
43
|
-
.astryx-
|
|
43
|
+
.astryx-code-block code::highlight(astryx-tag),
|
|
44
44
|
.astryx-codeeditor code::highlight(astryx-tag) { color: var(--color-syntax-tag); }
|
|
45
|
-
.astryx-
|
|
45
|
+
.astryx-code-block code::highlight(astryx-attribute),
|
|
46
46
|
.astryx-codeeditor code::highlight(astryx-attribute) { color: var(--color-syntax-attribute); }
|
|
47
|
-
.astryx-
|
|
47
|
+
.astryx-code-block code::highlight(astryx-property),
|
|
48
48
|
.astryx-codeeditor code::highlight(astryx-property) { color: var(--color-syntax-property); }
|
|
49
|
-
.astryx-
|
|
49
|
+
.astryx-code-block code::highlight(astryx-operator),
|
|
50
50
|
.astryx-codeeditor code::highlight(astryx-operator) { color: var(--color-syntax-operator); }
|
|
51
|
-
.astryx-
|
|
51
|
+
.astryx-code-block code::highlight(astryx-constant),
|
|
52
52
|
.astryx-codeeditor code::highlight(astryx-constant) { color: var(--color-syntax-constant); }
|
|
53
|
-
.astryx-
|
|
53
|
+
.astryx-code-block code::highlight(astryx-punctuation),
|
|
54
54
|
.astryx-codeeditor code::highlight(astryx-punctuation) { color: var(--color-syntax-punctuation); }
|
|
55
|
-
.astryx-
|
|
55
|
+
.astryx-code-block code::highlight(astryx-variable),
|
|
56
56
|
.astryx-codeeditor code::highlight(astryx-variable) { color: var(--color-syntax-variable); }
|
|
57
57
|
|
|
58
58
|
/* Span-based fallback classes — used when highlightMode='spans' or
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeDateField.d.ts","sourceRoot":"","sources":["../../src/DateInput/NativeDateField.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NativeDateField.d.ts","sourceRoot":"","sources":["../../src/DateInput/NativeDateField.tsx"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AA0LhD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,eAAe,EACf,KAAK,EACL,QAAQ,EACR,SAAiB,EACjB,GAAG,EACH,GAAG,EACH,eAAe,EACf,WAAW,EAAE,oBAAoB,EACjC,IAAI,EAAE,QAAQ,EACd,MAAM,EACN,aAA0B,EAC1B,YAAY,EACZ,QAAgB,EAGhB,cAAc,EAAE,eAAe,EAC/B,YAAY,EAAE,aAAa,EAC3B,MAAoB,EACpB,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,cAAc,+BAkYhB;yBAjae,eAAe"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file NativeDateField.tsx
|
|
7
|
-
* @input Uses React, Field, Icon, InputClearButton, Spinner, useCalendarConstraints
|
|
7
|
+
* @input Uses React, Field, Icon, InputClearButton, Spinner, useCalendarConstraints, hasEditableDateSegments
|
|
8
8
|
* @output Exports NativeDateField — the OS-picker touch surface
|
|
9
9
|
* @position One of DateInput's three surfaces. `DateInput` picks the pointer
|
|
10
10
|
* field on a mouse and, on touch, either `TouchDateField` (the default) or
|
|
@@ -22,13 +22,16 @@
|
|
|
22
22
|
* SYNC: When modified, update these files to stay in sync:
|
|
23
23
|
* - /packages/core/src/DateInput/DateInput.tsx (the `nativePicker` prop)
|
|
24
24
|
* - /packages/core/src/DateInput/DateInput.doc.mjs (prop table)
|
|
25
|
-
* - /packages/core/src/DateInput/
|
|
25
|
+
* - /packages/core/src/DateInput/nativeDateSegments.ts (the engine probe)
|
|
26
|
+
* - /packages/core/src/DateInput/NativeDateField.test.tsx (tests)
|
|
26
27
|
*/
|
|
27
28
|
import { useCallback, useEffect, useId, useRef, useState } from 'react';
|
|
28
29
|
import * as stylex from '@stylexjs/stylex';
|
|
29
30
|
import { useCalendarConstraints } from "../Calendar/index.js";
|
|
31
|
+
import { hasEditableDateSegments } from "./nativeDateSegments.js";
|
|
30
32
|
import { Field, InputClearButton, inputStatusBorderStyles, inputStatusFocusWithinStyles, inputStatusHoverShadowStyles, inputWrapperStyles } from "../Field/index.js";
|
|
31
33
|
import { useInputStatusIcon, useMergedRefs } from "../hooks/index.js";
|
|
34
|
+
import { useMediaQuery } from "../hooks/useMediaQuery.js";
|
|
32
35
|
import { useResolvedRequired } from "../hooks/useResolvedRequired.js";
|
|
33
36
|
import { Icon } from "../Icon/index.js";
|
|
34
37
|
import { useLocale, useTranslator } from "../i18n/index.js";
|
|
@@ -129,6 +132,8 @@ export function NativeDateField({
|
|
|
129
132
|
});
|
|
130
133
|
const placeholder = placeholderFromProps ?? t('@astryx.dateInput.placeholder');
|
|
131
134
|
const size = useSize(sizeProp, 'md');
|
|
135
|
+
// Only breaks a tie the engine probe cannot: see ./nativeDateSegments.
|
|
136
|
+
const isTouchPointer = useMediaQuery('(pointer: coarse)');
|
|
132
137
|
const id = useId();
|
|
133
138
|
const inputLabelID = useId();
|
|
134
139
|
const descriptionID = useId();
|
|
@@ -173,6 +178,10 @@ export function NativeDateField({
|
|
|
173
178
|
// Whether the control has focus — which, on a touch device, means its
|
|
174
179
|
// picker is open.
|
|
175
180
|
const [isFocused, setIsFocused] = useState(false);
|
|
181
|
+
// Whether the engine draws this control as editable segments rather than a
|
|
182
|
+
// picker-only run. Latched on focus rather than read during render: the
|
|
183
|
+
// probe touches the DOM, and unfocused the answer changes nothing.
|
|
184
|
+
const [isSegmentEditable, setIsSegmentEditable] = useState(false);
|
|
176
185
|
// The raw value the control last reported and we acted on, so the same edit
|
|
177
186
|
// arriving through both commit paths only fires one change.
|
|
178
187
|
const lastCommitRef = useRef(null);
|
|
@@ -192,10 +201,14 @@ export function NativeDateField({
|
|
|
192
201
|
const formatValue = useCallback(iso => typeof format === 'function' ? format(iso) : formatSharedDate(plainDateFromISO(iso), format, locale), [format, locale]);
|
|
193
202
|
|
|
194
203
|
// This field paints the closed control's text itself, which is what keeps
|
|
195
|
-
// `format` and `placeholder` applying:
|
|
196
|
-
// edit, so our text holds even while the picker is open, and
|
|
204
|
+
// `format` and `placeholder` applying: a picker-only control has no
|
|
205
|
+
// segments to edit, so our text holds even while the picker is open, and
|
|
206
|
+
// tracks it live. An editable control is the opposite case — its text IS
|
|
207
|
+
// the edit surface, and it reports no `value` until every segment is
|
|
208
|
+
// filled, so the overlay has nothing to paint mid-edit — so step aside for
|
|
209
|
+
// as long as it has focus. See ./nativeDateSegments.
|
|
197
210
|
const overlayText = nativeValue ? formatValue(nativeValue) : placeholder;
|
|
198
|
-
const showsOverlay = !!overlayText;
|
|
211
|
+
const showsOverlay = !!overlayText && !(isFocused && isSegmentEditable);
|
|
199
212
|
const commitValue = useCallback(newValue => {
|
|
200
213
|
if (isEffectivelyDisabled) {
|
|
201
214
|
return;
|
|
@@ -286,6 +299,10 @@ export function NativeDateField({
|
|
|
286
299
|
input.value = nativeValue;
|
|
287
300
|
}
|
|
288
301
|
}, [isFocused, nativeValue]);
|
|
302
|
+
const handleFocus = useCallback(() => {
|
|
303
|
+
setIsSegmentEditable(hasEditableDateSegments(isTouchPointer));
|
|
304
|
+
setIsFocused(true);
|
|
305
|
+
}, [isTouchPointer]);
|
|
289
306
|
const handleBlur = useCallback(() => {
|
|
290
307
|
const domValue = inputRef.current?.value;
|
|
291
308
|
setIsFocused(false);
|
|
@@ -368,7 +385,7 @@ export function NativeDateField({
|
|
|
368
385
|
,
|
|
369
386
|
defaultValue: initialValueRef.current ?? '',
|
|
370
387
|
onChange: handleChange,
|
|
371
|
-
onFocus:
|
|
388
|
+
onFocus: handleFocus,
|
|
372
389
|
onBlur: handleBlur,
|
|
373
390
|
min: min,
|
|
374
391
|
max: max,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TouchDateField.d.ts","sourceRoot":"","sources":["../../src/DateInput/TouchDateField.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TouchDateField.d.ts","sourceRoot":"","sources":["../../src/DateInput/TouchDateField.tsx"],"names":[],"mappings":"AAgEA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAgehD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,eAAe,EACf,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAiB,EACjB,GAAG,EACH,GAAG,EACH,eAAe,EACf,WAAW,EAAE,oBAAoB,EACjC,IAAI,EAAE,QAAQ,EACd,MAAM,EACN,aAA0B,EAC1B,YAAY,EACZ,QAAgB,EAIhB,cAAc,EAAE,eAAe,EAC/B,YAAY,EAAE,gBAAoB,EAClC,MAAoB,EACpB,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,cAAc,+BAmtBhB;yBApvBe,cAAc"}
|