@astryxdesign/lab 0.7.8-canary.ffd29c5 → 0.7.9-canary.0200dfe
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/blocks/CommentThreadShowcase.tsx +1 -1
- package/dist/Chart/Chart.d.ts.map +1 -1
- package/dist/Chart/Chart.js +8 -7
- package/dist/Chart/formatters.d.ts +9 -6
- package/dist/Chart/formatters.d.ts.map +1 -1
- package/dist/Chart/formatters.js +16 -11
- package/dist/CircleCheckIndicator/CircleCheckIndicator.d.ts +27 -0
- package/dist/CircleCheckIndicator/CircleCheckIndicator.d.ts.map +1 -0
- package/dist/CircleCheckIndicator/CircleCheckIndicator.js +168 -0
- package/dist/CircleCheckIndicator/circleCheck.stylex.d.ts +80 -0
- package/dist/CircleCheckIndicator/circleCheck.stylex.d.ts.map +1 -0
- package/dist/CircleCheckIndicator/circleCheck.stylex.js +82 -0
- package/dist/CircleCheckIndicator/circleCheck.table.d.ts +76 -0
- package/dist/CircleCheckIndicator/circleCheck.table.d.ts.map +1 -0
- package/dist/CircleCheckIndicator/circleCheck.table.js +78 -0
- package/dist/CircleCheckIndicator/index.d.ts +5 -0
- package/dist/CircleCheckIndicator/index.d.ts.map +1 -0
- package/dist/CircleCheckIndicator/index.js +7 -0
- package/dist/CircularProgress/CircularProgress.d.ts +4 -2
- package/dist/CircularProgress/CircularProgress.d.ts.map +1 -1
- package/dist/CircularProgress/CircularProgress.js +19 -23
- package/dist/Comments/CommentParts.d.ts +1 -1
- package/dist/RefreshControl/RefreshPullRecognizer.d.ts +40 -0
- package/dist/RefreshControl/RefreshPullRecognizer.d.ts.map +1 -0
- package/dist/RefreshControl/RefreshPullRecognizer.js +90 -0
- package/dist/RefreshControl/index.d.ts +11 -0
- package/dist/RefreshControl/index.d.ts.map +1 -0
- package/dist/RefreshControl/index.js +13 -0
- package/dist/RefreshControl/refreshIndicator.d.ts +10 -0
- package/dist/RefreshControl/refreshIndicator.d.ts.map +1 -0
- package/dist/RefreshControl/refreshIndicator.js +12 -0
- package/dist/RefreshControl/refreshModel.d.ts +61 -0
- package/dist/RefreshControl/refreshModel.d.ts.map +1 -0
- package/dist/RefreshControl/refreshModel.js +116 -0
- package/dist/RefreshControl/refreshPull.d.ts +69 -0
- package/dist/RefreshControl/refreshPull.d.ts.map +1 -0
- package/dist/RefreshControl/refreshPull.js +159 -0
- package/dist/RefreshControl/refreshTouchController.d.ts +45 -0
- package/dist/RefreshControl/refreshTouchController.d.ts.map +1 -0
- package/dist/RefreshControl/refreshTouchController.js +701 -0
- package/dist/RefreshControl/refreshValues.d.ts +76 -0
- package/dist/RefreshControl/refreshValues.d.ts.map +1 -0
- package/dist/RefreshControl/refreshValues.js +80 -0
- package/dist/RefreshControl/useRefreshControl.d.ts +84 -0
- package/dist/RefreshControl/useRefreshControl.d.ts.map +1 -0
- package/dist/RefreshControl/useRefreshControl.js +207 -0
- package/dist/SVGIcon/variations.stylex.d.ts +1 -1
- package/dist/Sankey/SankeyChart.d.ts.map +1 -1
- package/dist/Sankey/SankeyChart.js +4 -9
- package/dist/Schedule/DayView.d.ts.map +1 -1
- package/dist/Schedule/DayView.js +7 -4
- package/dist/Schedule/ListView.d.ts.map +1 -1
- package/dist/Schedule/ListView.js +8 -9
- package/dist/Schedule/MonthlyView.d.ts.map +1 -1
- package/dist/Schedule/MonthlyView.js +25 -18
- package/dist/Schedule/TimeGridView.d.ts.map +1 -1
- package/dist/Schedule/TimeGridView.js +22 -16
- package/dist/Schedule/WeeklyView.d.ts.map +1 -1
- package/dist/Schedule/WeeklyView.js +4 -4
- package/dist/Schedule/shared.d.ts +22 -16
- package/dist/Schedule/shared.d.ts.map +1 -1
- package/dist/Schedule/shared.js +80 -62
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/internal/useMotionEngine.d.ts +25 -0
- package/dist/internal/useMotionEngine.d.ts.map +1 -0
- package/dist/internal/useMotionEngine.js +42 -0
- package/dist/lab.css +29 -8
- package/dist/reorderStyles.d.ts +2 -2
- package/package.json +7 -6
- package/src/Chart/Chart.test.tsx +31 -0
- package/src/Chart/Chart.tsx +8 -7
- package/src/Chart/formatters.test.ts +36 -0
- package/src/Chart/formatters.ts +28 -16
- package/src/Chat/__tests__/ChatTypingIndicator.a11y.chromium.spec.ts +1 -1
- package/src/CircleCheckIndicator/CircleCheckIndicator.doc.mjs +215 -0
- package/src/CircleCheckIndicator/CircleCheckIndicator.test.tsx +134 -0
- package/src/CircleCheckIndicator/CircleCheckIndicator.tsx +248 -0
- package/src/CircleCheckIndicator/__tests__/CircleCheckIndicator.interaction.browser.spec.ts +567 -0
- package/src/CircleCheckIndicator/circleCheck.stylex.ts +93 -0
- package/src/CircleCheckIndicator/circleCheck.table.ts +78 -0
- package/src/CircleCheckIndicator/circleCheck.test.tsx +188 -0
- package/src/CircleCheckIndicator/index.ts +7 -0
- package/src/CircularProgress/CircularProgress.test.tsx +23 -0
- package/src/CircularProgress/CircularProgress.tsx +15 -42
- package/src/CircularProgress/__tests__/CircularProgress.a11y.chromium.spec.ts +1 -1
- package/src/CircularProgress/__tests__/CircularProgressMotion.a11y.chromium.spec.ts +1 -1
- package/src/RefreshControl/RefreshPullRecognizer.ts +104 -0
- package/src/RefreshControl/__tests__/RefreshControl.interaction.browser.spec.ts +1454 -0
- package/src/RefreshControl/index.ts +18 -0
- package/src/RefreshControl/refreshIndicator.ts +12 -0
- package/src/RefreshControl/refreshModel.test.ts +174 -0
- package/src/RefreshControl/refreshModel.ts +117 -0
- package/src/RefreshControl/refreshPull.test.ts +270 -0
- package/src/RefreshControl/refreshPull.ts +186 -0
- package/src/RefreshControl/refreshTouchController.ts +838 -0
- package/src/RefreshControl/refreshValues.ts +80 -0
- package/src/RefreshControl/useRefreshControl.test.tsx +1316 -0
- package/src/RefreshControl/useRefreshControl.ts +255 -0
- package/src/Sankey/SankeyChart.test.tsx +31 -0
- package/src/Sankey/SankeyChart.tsx +4 -15
- package/src/Schedule/DayView.tsx +4 -3
- package/src/Schedule/ListView.tsx +8 -14
- package/src/Schedule/MonthlyView.tsx +27 -18
- package/src/Schedule/Schedule.calendarSystems.test.tsx +317 -0
- package/src/Schedule/Schedule.doc.mjs +1 -1
- package/src/Schedule/Schedule.test.tsx +2 -2
- package/src/Schedule/TimeGridView.tsx +31 -9
- package/src/Schedule/WeeklyView.tsx +4 -6
- package/src/Schedule/__tests__/ScheduleEventPopover.a11y.chromium.spec.ts +1 -1
- package/src/Schedule/__tests__/ScheduleMonthChip.a11y.chromium.spec.ts +1 -1
- package/src/Schedule/__tests__/ScheduleMonthEventPopover.a11y.chromium.spec.ts +1 -1
- package/src/Schedule/__tests__/ScheduleMonthOverflow.a11y.chromium.spec.ts +1 -1
- package/src/Schedule/__tests__/ScheduleTimeDirection.a11y.chromium.spec.ts +1 -1
- package/src/Schedule/__tests__/ScheduleTimeGridGeometry.a11y.chromium.spec.ts +1 -1
- package/src/Schedule/__tests__/ScheduleTimeGridInitialPosition.a11y.chromium.spec.ts +1 -1
- package/src/Schedule/__tests__/ScheduleTimeGridLongSpan.a11y.chromium.spec.ts +1 -1
- package/src/Schedule/__tests__/ScheduleTimeGridMidnight.a11y.chromium.spec.ts +1 -1
- package/src/Schedule/__tests__/ScheduleTimeGridOverlap.a11y.chromium.spec.ts +1 -1
- package/src/Schedule/__tests__/ScheduleTimeGridSkippedMidnight.a11y.chromium.spec.ts +1 -1
- package/src/Schedule/shared.tsx +112 -68
- package/src/SelectableCardGroup/__tests__/SelectableCardGroupRadio.a11y.chromium.spec.ts +1 -1
- package/src/__tests__/ReorderGripPinchZoom.a11y.chromium.spec.ts +6 -1
- package/src/index.ts +13 -0
- package/src/internal/useMotionEngine.test.tsx +108 -0
- package/src/internal/useMotionEngine.ts +54 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart/Chart.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAC,WAAW,EAAa,MAAM,SAAS,CAAC;AAErD;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,UAAU;IACzB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAgBD;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,MAAY,EACZ,MAAM,EAAE,cAAc,EACtB,SAAkB,EAClB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,WAAmB,EACnB,KAAK,EACL,QAAQ,GACT,EAAE,UAAU,+
|
|
1
|
+
{"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart/Chart.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAC,WAAW,EAAa,MAAM,SAAS,CAAC;AAErD;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,UAAU;IACzB,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAgBD;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,MAAY,EACZ,MAAM,EAAE,cAAc,EACtB,SAAkB,EAClB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,EACpB,WAAmB,EACnB,KAAK,EACL,QAAQ,GACT,EAAE,UAAU,+BAgPZ"}
|
package/dist/Chart/Chart.js
CHANGED
|
@@ -73,18 +73,19 @@ export function Chart({
|
|
|
73
73
|
const containerRef = useRef(null);
|
|
74
74
|
const svgRef = useRef(null);
|
|
75
75
|
const [containerWidth, setContainerWidth] = useState(0);
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
76
|
+
const attachContainer = useCallback(container => {
|
|
77
|
+
containerRef.current = container;
|
|
80
78
|
const observer = new ResizeObserver(entries => {
|
|
81
79
|
const entry = entries[0];
|
|
82
80
|
if (entry) {
|
|
83
81
|
setContainerWidth(entry.contentRect.width);
|
|
84
82
|
}
|
|
85
83
|
});
|
|
86
|
-
observer.observe(
|
|
87
|
-
return () =>
|
|
84
|
+
observer.observe(container);
|
|
85
|
+
return () => {
|
|
86
|
+
observer.disconnect();
|
|
87
|
+
containerRef.current = null;
|
|
88
|
+
};
|
|
88
89
|
}, []);
|
|
89
90
|
|
|
90
91
|
// Block scroll/zoom on the container when interactive.
|
|
@@ -236,7 +237,7 @@ export function Chart({
|
|
|
236
237
|
const accessibleLabel = label ?? `Chart of ${yKeys.join(', ')} by ${xKey}`;
|
|
237
238
|
const showDataTable = data.length > 0 && data.length * Math.max(yKeys.length, 1) <= MAX_TABLE_POINTS;
|
|
238
239
|
return /*#__PURE__*/_jsxs("div", {
|
|
239
|
-
ref:
|
|
240
|
+
ref: attachContainer,
|
|
240
241
|
style: containerStyle,
|
|
241
242
|
children: [containerWidth > 0 && /*#__PURE__*/_jsxs("svg", {
|
|
242
243
|
ref: svgRef,
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file formatters.ts
|
|
3
|
-
* @input Tick values
|
|
3
|
+
* @input Tick values, optional BCP 47 locale tags, and for dates an optional
|
|
4
|
+
* calendar
|
|
4
5
|
* @output Built-in tick format utilities for common data types
|
|
5
6
|
* @position Utility; consumed by ChartAxis via tickFormat prop
|
|
6
7
|
*/
|
|
7
|
-
import type { Locale } from '@astryxdesign/core/i18n';
|
|
8
|
+
import type { CalendarSystem, Locale } from '@astryxdesign/core/i18n';
|
|
8
9
|
/**
|
|
9
10
|
* Compact number formatter (e.g. 1200 → "1.2K", 1500000 → "1.5M")
|
|
10
11
|
*/
|
|
@@ -25,11 +26,13 @@ export declare function currency(symbol?: string, locale?: Locale): (value: unkn
|
|
|
25
26
|
*/
|
|
26
27
|
export declare function percent(value: unknown): string;
|
|
27
28
|
/**
|
|
28
|
-
* Date formatter — short date (e.g. "Jan 5", "Mar 12")
|
|
29
|
+
* Date formatter — short date (e.g. "Jan 5", "Mar 12"), in `calendar`
|
|
30
|
+
* (Gregorian by default)
|
|
29
31
|
*/
|
|
30
|
-
export declare function shortDate(value: unknown, locale?: Locale): string;
|
|
32
|
+
export declare function shortDate(value: unknown, locale?: Locale, calendar?: CalendarSystem): string;
|
|
31
33
|
/**
|
|
32
|
-
* Date formatter — month/year (e.g. "Jan 2024", "Mar 2025")
|
|
34
|
+
* Date formatter — month/year (e.g. "Jan 2024", "Mar 2025"), in `calendar`
|
|
35
|
+
* (Gregorian by default)
|
|
33
36
|
*/
|
|
34
|
-
export declare function monthYear(value: unknown, locale?: Locale): string;
|
|
37
|
+
export declare function monthYear(value: unknown, locale?: Locale, calendar?: CalendarSystem): string;
|
|
35
38
|
//# sourceMappingURL=formatters.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/Chart/formatters.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/Chart/formatters.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAC,cAAc,EAAE,MAAM,EAAC,MAAM,yBAAyB,CAAC;AAGpE;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAepD;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CACtB,MAAM,SAAM,EACZ,MAAM,GAAE,MAAa,GACpB,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAiB5B;AAQD;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAM9C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EACd,MAAM,GAAE,MAAa,EACrB,QAAQ,GAAE,cAA0B,GACnC,MAAM,CAUR;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EACd,MAAM,GAAE,MAAa,EACrB,QAAQ,GAAE,cAA0B,GACnC,MAAM,CAUR"}
|
package/dist/Chart/formatters.js
CHANGED
|
@@ -2,11 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @file formatters.ts
|
|
5
|
-
* @input Tick values
|
|
5
|
+
* @input Tick values, optional BCP 47 locale tags, and for dates an optional
|
|
6
|
+
* calendar
|
|
6
7
|
* @output Built-in tick format utilities for common data types
|
|
7
8
|
* @position Utility; consumed by ChartAxis via tickFormat prop
|
|
8
9
|
*/
|
|
9
10
|
|
|
11
|
+
import { plainDateFormat, plainDateFromDate } from '@astryxdesign/core/utils';
|
|
12
|
+
|
|
10
13
|
/**
|
|
11
14
|
* Compact number formatter (e.g. 1200 → "1.2K", 1500000 → "1.5M")
|
|
12
15
|
*/
|
|
@@ -74,31 +77,33 @@ export function percent(value) {
|
|
|
74
77
|
}
|
|
75
78
|
|
|
76
79
|
/**
|
|
77
|
-
* Date formatter — short date (e.g. "Jan 5", "Mar 12")
|
|
80
|
+
* Date formatter — short date (e.g. "Jan 5", "Mar 12"), in `calendar`
|
|
81
|
+
* (Gregorian by default)
|
|
78
82
|
*/
|
|
79
|
-
export function shortDate(value, locale = 'en') {
|
|
83
|
+
export function shortDate(value, locale = 'en', calendar = 'gregory') {
|
|
80
84
|
const d = value instanceof Date ? value : new Date(Number(value));
|
|
81
85
|
if (isNaN(d.getTime())) {
|
|
82
86
|
return String(value);
|
|
83
87
|
}
|
|
84
|
-
return
|
|
88
|
+
return plainDateFormat(plainDateFromDate(d), {
|
|
85
89
|
month: 'short',
|
|
86
90
|
day: 'numeric',
|
|
87
|
-
calendar
|
|
88
|
-
})
|
|
91
|
+
calendar
|
|
92
|
+
}, locale);
|
|
89
93
|
}
|
|
90
94
|
|
|
91
95
|
/**
|
|
92
|
-
* Date formatter — month/year (e.g. "Jan 2024", "Mar 2025")
|
|
96
|
+
* Date formatter — month/year (e.g. "Jan 2024", "Mar 2025"), in `calendar`
|
|
97
|
+
* (Gregorian by default)
|
|
93
98
|
*/
|
|
94
|
-
export function monthYear(value, locale = 'en') {
|
|
99
|
+
export function monthYear(value, locale = 'en', calendar = 'gregory') {
|
|
95
100
|
const d = value instanceof Date ? value : new Date(Number(value));
|
|
96
101
|
if (isNaN(d.getTime())) {
|
|
97
102
|
return String(value);
|
|
98
103
|
}
|
|
99
|
-
return
|
|
104
|
+
return plainDateFormat(plainDateFromDate(d), {
|
|
100
105
|
month: 'short',
|
|
101
106
|
year: 'numeric',
|
|
102
|
-
calendar
|
|
103
|
-
})
|
|
107
|
+
calendar
|
|
108
|
+
}, locale);
|
|
104
109
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { IndicatorProps } from '@astryxdesign/core/Indicator';
|
|
2
|
+
/**
|
|
3
|
+
* The iOS multiple-selection mark. It shows an empty circle when unchecked
|
|
4
|
+
* and a filled circle with a checkmark when checked. The partial state fills
|
|
5
|
+
* the circle with a bar.
|
|
6
|
+
*
|
|
7
|
+
* Decorative and non-interactive, like every indicator: it renders
|
|
8
|
+
* `aria-hidden` and owns no input, role, or focus behavior. Map it to
|
|
9
|
+
* `checkbox` in a theme, and every CheckboxInput and CheckboxList draws it.
|
|
10
|
+
* The owning control keeps its semantics and paints its focus ring on the
|
|
11
|
+
* circle. Its colours fade over the theme duration on every pointer, and
|
|
12
|
+
* change at once under Reduce Motion. It draws the circle everywhere, so
|
|
13
|
+
* map it only in a theme meant for iOS.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```
|
|
17
|
+
* const theme = defineTheme({
|
|
18
|
+
* name: 'circle-checks',
|
|
19
|
+
* indicators: {checkbox: CircleCheckIndicator},
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function CircleCheckIndicator({ state, size, isDisabled, children, ref, className, style, xstyle, ...rest }: IndicatorProps<'multiSelection'>): import("react").JSX.Element;
|
|
24
|
+
export declare namespace CircleCheckIndicator {
|
|
25
|
+
var displayName: string;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=CircleCheckIndicator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CircleCheckIndicator.d.ts","sourceRoot":"","sources":["../../src/CircleCheckIndicator/CircleCheckIndicator.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,8BAA8B,CAAC;AA4HjE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,IAAW,EACX,UAAkB,EAClB,QAAQ,EACR,GAAG,EACH,SAAS,EACT,KAAK,EACL,MAAM,EACN,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,gBAAgB,CAAC,+BA2ElC;yBArFe,oBAAoB"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file CircleCheckIndicator.tsx
|
|
5
|
+
* @input Indicator state props, the theme's colour and radius tokens, Core's
|
|
6
|
+
* indicator press marker, and the circle's styles (circleCheck.stylex.ts)
|
|
7
|
+
* @output Exports CircleCheckIndicator, the iOS multiple-selection mark
|
|
8
|
+
* @position Lab. A multiSelection-family indicator that a theme maps to
|
|
9
|
+
* `checkbox`
|
|
10
|
+
*
|
|
11
|
+
* SYNC: When modified, update CircleCheckIndicator.doc.mjs,
|
|
12
|
+
* CircleCheckIndicator.test.tsx, index.ts and the story.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import * as stylex from '@stylexjs/stylex';
|
|
16
|
+
import '@astryxdesign/core/Indicator/indicator.markers.stylex';
|
|
17
|
+
import { indicatorScope } from '@astryxdesign/core/Indicator/indicator.markers.stylex';
|
|
18
|
+
import { indicatorPressScope } from '@astryxdesign/core/internal/indicatorPress.stylex';
|
|
19
|
+
import '@astryxdesign/core/theme/tokens.stylex';
|
|
20
|
+
import { colorVars, radiusVars } from '@astryxdesign/core/theme/tokens.stylex';
|
|
21
|
+
import { isRenderable, mergeProps, themeProps } from '@astryxdesign/core/utils';
|
|
22
|
+
import { circleCheckMotionStyles, circleCheckSizeStyles } from "./circleCheck.stylex.js";
|
|
23
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
|
+
const styles = {
|
|
25
|
+
circle: {
|
|
26
|
+
kB7OPa: "x9f619",
|
|
27
|
+
k1xSpc: "x78zum5",
|
|
28
|
+
kGNEyG: "x6s0dn4",
|
|
29
|
+
kjj79g: "xl56j7k",
|
|
30
|
+
kmuXW: "x2lah0s",
|
|
31
|
+
kaIpWk: "xjspbzw",
|
|
32
|
+
ksu8eU: "xng3xce xx61lck",
|
|
33
|
+
kMzoRj: "xc342km x13rsnn2",
|
|
34
|
+
kVAM5u: "x9r1u3d x1w1tqly",
|
|
35
|
+
$$css: true
|
|
36
|
+
},
|
|
37
|
+
unchecked: {
|
|
38
|
+
kGVxlE: "x6a3is4 xnv7v5x",
|
|
39
|
+
kWkggS: "xjbqb8w",
|
|
40
|
+
$$css: true
|
|
41
|
+
},
|
|
42
|
+
checked: {
|
|
43
|
+
kMwMTN: "x17wrial",
|
|
44
|
+
kGVxlE: "x1gnnqk1",
|
|
45
|
+
kWkggS: "x1ewilqj x17srpfb",
|
|
46
|
+
$$css: true
|
|
47
|
+
},
|
|
48
|
+
disabled: {
|
|
49
|
+
kSiTet: "xbyyjgo",
|
|
50
|
+
$$css: true
|
|
51
|
+
},
|
|
52
|
+
ownPress: {
|
|
53
|
+
kVAEAm: "x1n2onr6",
|
|
54
|
+
k5JduY: "x1s928wv",
|
|
55
|
+
kwXMNM: "x1j6awrg",
|
|
56
|
+
kv0HGH: "xarstr8",
|
|
57
|
+
kUfP38: "xq94oqs",
|
|
58
|
+
kloYau: "x2q1x1w",
|
|
59
|
+
ks3ayO: "xyhc2n1 xzywxsk x1gybruy",
|
|
60
|
+
kNctxI: "x1ygld8r",
|
|
61
|
+
$$css: true
|
|
62
|
+
},
|
|
63
|
+
checkmark: {
|
|
64
|
+
k1xSpc: "x1s85apg",
|
|
65
|
+
kmuXW: "x2lah0s",
|
|
66
|
+
kVQacm: "x1rea2x4",
|
|
67
|
+
kMwMTN: "x17wrial xs5hli",
|
|
68
|
+
$$css: true
|
|
69
|
+
},
|
|
70
|
+
checkmarkVisible: {
|
|
71
|
+
k1xSpc: "x1lliihq",
|
|
72
|
+
$$css: true
|
|
73
|
+
},
|
|
74
|
+
bar: {
|
|
75
|
+
k1xSpc: "x1s85apg",
|
|
76
|
+
kmuXW: "x2lah0s",
|
|
77
|
+
kWkggS: "x1azo05 xwvh9j7",
|
|
78
|
+
kaIpWk: "xjspbzw",
|
|
79
|
+
$$css: true
|
|
80
|
+
},
|
|
81
|
+
barVisible: {
|
|
82
|
+
k1xSpc: "x1lliihq",
|
|
83
|
+
$$css: true
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
const CIRCLE = {
|
|
87
|
+
sm: circleCheckSizeStyles.smCircle,
|
|
88
|
+
md: circleCheckSizeStyles.mdCircle
|
|
89
|
+
};
|
|
90
|
+
const CHECK = {
|
|
91
|
+
sm: circleCheckSizeStyles.smCheck,
|
|
92
|
+
md: circleCheckSizeStyles.mdCheck
|
|
93
|
+
};
|
|
94
|
+
const BAR = {
|
|
95
|
+
sm: circleCheckSizeStyles.smBar,
|
|
96
|
+
md: circleCheckSizeStyles.mdBar
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* The iOS multiple-selection mark. It shows an empty circle when unchecked
|
|
101
|
+
* and a filled circle with a checkmark when checked. The partial state fills
|
|
102
|
+
* the circle with a bar.
|
|
103
|
+
*
|
|
104
|
+
* Decorative and non-interactive, like every indicator: it renders
|
|
105
|
+
* `aria-hidden` and owns no input, role, or focus behavior. Map it to
|
|
106
|
+
* `checkbox` in a theme, and every CheckboxInput and CheckboxList draws it.
|
|
107
|
+
* The owning control keeps its semantics and paints its focus ring on the
|
|
108
|
+
* circle. Its colours fade over the theme duration on every pointer, and
|
|
109
|
+
* change at once under Reduce Motion. It draws the circle everywhere, so
|
|
110
|
+
* map it only in a theme meant for iOS.
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```
|
|
114
|
+
* const theme = defineTheme({
|
|
115
|
+
* name: 'circle-checks',
|
|
116
|
+
* indicators: {checkbox: CircleCheckIndicator},
|
|
117
|
+
* });
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
export function CircleCheckIndicator({
|
|
121
|
+
state,
|
|
122
|
+
size = 'md',
|
|
123
|
+
isDisabled = false,
|
|
124
|
+
children,
|
|
125
|
+
ref,
|
|
126
|
+
className,
|
|
127
|
+
style,
|
|
128
|
+
xstyle,
|
|
129
|
+
...rest
|
|
130
|
+
}) {
|
|
131
|
+
const isChecked = state === 'checked';
|
|
132
|
+
const isIndeterminate = state === 'indeterminate';
|
|
133
|
+
const isFilled = isChecked || isIndeterminate;
|
|
134
|
+
return /*#__PURE__*/_jsx("span", {
|
|
135
|
+
...rest,
|
|
136
|
+
ref: ref,
|
|
137
|
+
"aria-hidden": "true",
|
|
138
|
+
...mergeProps(themeProps('circle-check-indicator', {
|
|
139
|
+
size,
|
|
140
|
+
checked: isChecked ? 'checked' : isIndeterminate ? 'indeterminate' : null,
|
|
141
|
+
disabled: isDisabled ? 'disabled' : null
|
|
142
|
+
}), stylex.props(
|
|
143
|
+
// Marks the circle as painting its own press (styles.ownPress), so
|
|
144
|
+
// the host leaves its square layer off.
|
|
145
|
+
indicatorPressScope, styles.circle, !isDisabled && styles.ownPress, circleCheckMotionStyles.mark, CIRCLE[size], isFilled ? styles.checked : styles.unchecked, isDisabled && styles.disabled, xstyle), className, style),
|
|
146
|
+
children: isRenderable(children) ? children : /*#__PURE__*/_jsxs(_Fragment, {
|
|
147
|
+
children: [/*#__PURE__*/_jsx("svg", {
|
|
148
|
+
viewBox: "0 0 10 10",
|
|
149
|
+
...mergeProps(themeProps('circle-check-indicator-check', {
|
|
150
|
+
size
|
|
151
|
+
}), stylex.props(styles.checkmark, CHECK[size], isChecked && styles.checkmarkVisible)),
|
|
152
|
+
children: /*#__PURE__*/_jsx("path", {
|
|
153
|
+
d: "M0.75 5.25L3.75 9.25L9.25 0.75",
|
|
154
|
+
stroke: "currentColor",
|
|
155
|
+
strokeWidth: "1.5",
|
|
156
|
+
fill: "none",
|
|
157
|
+
strokeLinecap: "round",
|
|
158
|
+
strokeLinejoin: "round"
|
|
159
|
+
})
|
|
160
|
+
}), /*#__PURE__*/_jsx("span", {
|
|
161
|
+
...mergeProps(themeProps('circle-check-indicator-dash', {
|
|
162
|
+
size
|
|
163
|
+
}), stylex.props(styles.bar, BAR[size], isIndeterminate && styles.barVisible))
|
|
164
|
+
})]
|
|
165
|
+
})
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
CircleCheckIndicator.displayName = 'CircleCheckIndicator';
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file circleCheck.stylex.ts
|
|
3
|
+
* @input The theme's duration and easing tokens
|
|
4
|
+
* @output Exports `circleCheckConsts`, the build-time mirror of
|
|
5
|
+
* circleCheck.table.ts, and the circle's motion and size styles
|
|
6
|
+
* @position Internal to CircleCheckIndicator
|
|
7
|
+
*
|
|
8
|
+
* StyleX cannot read the table at build time, so these constants mirror it,
|
|
9
|
+
* and circleCheck.test.tsx fails if they drift. StyleX inlines a
|
|
10
|
+
* `defineConsts` value only in its own file, so the styles live here too.
|
|
11
|
+
*
|
|
12
|
+
* SYNC: When modified, update circleCheck.test.tsx.
|
|
13
|
+
*/
|
|
14
|
+
import * as stylex from '@stylexjs/stylex';
|
|
15
|
+
/**
|
|
16
|
+
* `md` is UIKit's circle at the Large text size, and `sm` at xSmall. Two `sm`
|
|
17
|
+
* values derive from their Large proportions: the check stroke and its offset.
|
|
18
|
+
* The partial state's bar has no UIKit counterpart, so it takes the
|
|
19
|
+
* checkmark's width and stroke.
|
|
20
|
+
*/
|
|
21
|
+
export declare const circleCheckConsts: {
|
|
22
|
+
/** `circleCheckTable.large.diameter`. */
|
|
23
|
+
mdDiameter: string;
|
|
24
|
+
/** `circleCheckTable.large.stroke`. */
|
|
25
|
+
mdStroke: string;
|
|
26
|
+
/** `circleCheckTable.large.checkSize`. */
|
|
27
|
+
mdCheckSize: string;
|
|
28
|
+
/** `circleCheckTable.large.checkStroke`. */
|
|
29
|
+
mdCheckStroke: string;
|
|
30
|
+
/** `circleCheckTable.large.checkOffsetY`. */
|
|
31
|
+
mdCheckOffsetY: string;
|
|
32
|
+
/** `circleCheckTable.xSmall.diameter`. */
|
|
33
|
+
smDiameter: string;
|
|
34
|
+
/** `circleCheckTable.xSmall.stroke`. */
|
|
35
|
+
smStroke: string;
|
|
36
|
+
/** `circleCheckTable.xSmall.checkSize`. */
|
|
37
|
+
smCheckSize: string;
|
|
38
|
+
/** Derived: the Large check stroke, scaled by the check size (9 → 8). */
|
|
39
|
+
smCheckStroke: string;
|
|
40
|
+
/** Derived: the Large offset, scaled by the diameter (21.8 → 18). */
|
|
41
|
+
smCheckOffsetY: string;
|
|
42
|
+
};
|
|
43
|
+
export declare const circleCheckMotionStyles: Readonly<{
|
|
44
|
+
readonly mark: Readonly<{
|
|
45
|
+
readonly transitionProperty: stylex.StyleXClassNameFor<"transitionProperty", "background-color, box-shadow">;
|
|
46
|
+
readonly transitionDuration: stylex.StyleXClassNameFor<"transitionDuration", "175ms" | "0s">;
|
|
47
|
+
readonly transitionTimingFunction: stylex.StyleXClassNameFor<"transitionTimingFunction", "cubic-bezier(0.24, 1, 0.4, 1)">;
|
|
48
|
+
}>;
|
|
49
|
+
}>;
|
|
50
|
+
export declare const circleCheckSizeStyles: Readonly<{
|
|
51
|
+
readonly mdCircle: Readonly<{
|
|
52
|
+
readonly width: stylex.StyleXClassNameFor<"width", string>;
|
|
53
|
+
readonly height: stylex.StyleXClassNameFor<"height", string>;
|
|
54
|
+
readonly '--_circle-stroke': stylex.StyleXClassNameFor<"--_circle-stroke", string>;
|
|
55
|
+
}>;
|
|
56
|
+
readonly smCircle: Readonly<{
|
|
57
|
+
readonly width: stylex.StyleXClassNameFor<"width", string>;
|
|
58
|
+
readonly height: stylex.StyleXClassNameFor<"height", string>;
|
|
59
|
+
readonly '--_circle-stroke': stylex.StyleXClassNameFor<"--_circle-stroke", string>;
|
|
60
|
+
}>;
|
|
61
|
+
readonly mdCheck: Readonly<{
|
|
62
|
+
readonly width: stylex.StyleXClassNameFor<"width", string>;
|
|
63
|
+
readonly height: stylex.StyleXClassNameFor<"height", string>;
|
|
64
|
+
readonly translate: stylex.StyleXClassNameFor<"translate", `0 ${string}`>;
|
|
65
|
+
}>;
|
|
66
|
+
readonly smCheck: Readonly<{
|
|
67
|
+
readonly width: stylex.StyleXClassNameFor<"width", string>;
|
|
68
|
+
readonly height: stylex.StyleXClassNameFor<"height", string>;
|
|
69
|
+
readonly translate: stylex.StyleXClassNameFor<"translate", `0 ${string}`>;
|
|
70
|
+
}>;
|
|
71
|
+
readonly mdBar: Readonly<{
|
|
72
|
+
readonly width: stylex.StyleXClassNameFor<"width", string>;
|
|
73
|
+
readonly height: stylex.StyleXClassNameFor<"height", string>;
|
|
74
|
+
}>;
|
|
75
|
+
readonly smBar: Readonly<{
|
|
76
|
+
readonly width: stylex.StyleXClassNameFor<"width", string>;
|
|
77
|
+
readonly height: stylex.StyleXClassNameFor<"height", string>;
|
|
78
|
+
}>;
|
|
79
|
+
}>;
|
|
80
|
+
//# sourceMappingURL=circleCheck.stylex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circleCheck.stylex.d.ts","sourceRoot":"","sources":["../../src/CircleCheckIndicator/circleCheck.stylex.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAG3C;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;IAC5B,yCAAyC;;IAEzC,uCAAuC;;IAEvC,0CAA0C;;IAE1C,4CAA4C;;IAE5C,6CAA6C;;IAE7C,0CAA0C;;IAE1C,wCAAwC;;IAExC,2CAA2C;;IAE3C,yEAAyE;;IAEzE,qEAAqE;;CAErE,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;EAUlC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgChC,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file circleCheck.stylex.ts
|
|
5
|
+
* @input The theme's duration and easing tokens
|
|
6
|
+
* @output Exports `circleCheckConsts`, the build-time mirror of
|
|
7
|
+
* circleCheck.table.ts, and the circle's motion and size styles
|
|
8
|
+
* @position Internal to CircleCheckIndicator
|
|
9
|
+
*
|
|
10
|
+
* StyleX cannot read the table at build time, so these constants mirror it,
|
|
11
|
+
* and circleCheck.test.tsx fails if they drift. StyleX inlines a
|
|
12
|
+
* `defineConsts` value only in its own file, so the styles live here too.
|
|
13
|
+
*
|
|
14
|
+
* SYNC: When modified, update circleCheck.test.tsx.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import * as stylex from '@stylexjs/stylex';
|
|
18
|
+
import '@astryxdesign/core/theme/tokens.stylex';
|
|
19
|
+
import { durationVars, easeVars } from '@astryxdesign/core/theme/tokens.stylex';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* `md` is UIKit's circle at the Large text size, and `sm` at xSmall. Two `sm`
|
|
23
|
+
* values derive from their Large proportions: the check stroke and its offset.
|
|
24
|
+
* The partial state's bar has no UIKit counterpart, so it takes the
|
|
25
|
+
* checkmark's width and stroke.
|
|
26
|
+
*/
|
|
27
|
+
export const circleCheckConsts = {
|
|
28
|
+
mdDiameter: "21.8px",
|
|
29
|
+
mdStroke: "1.54px",
|
|
30
|
+
mdCheckSize: "9px",
|
|
31
|
+
mdCheckStroke: "1.35px",
|
|
32
|
+
mdCheckOffsetY: "1px",
|
|
33
|
+
smDiameter: "18px",
|
|
34
|
+
smStroke: "1.27px",
|
|
35
|
+
smCheckSize: "8px",
|
|
36
|
+
smCheckStroke: "1.2px",
|
|
37
|
+
smCheckOffsetY: "0.83px"
|
|
38
|
+
};
|
|
39
|
+
export const circleCheckMotionStyles = {
|
|
40
|
+
mark: {
|
|
41
|
+
k1ekBW: "x106061f",
|
|
42
|
+
kIyJzY: "xuedmi6 x12w9bfk",
|
|
43
|
+
kAMwcw: "xlr8y92",
|
|
44
|
+
$$css: true
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
export const circleCheckSizeStyles = {
|
|
48
|
+
mdCircle: {
|
|
49
|
+
kzqmXN: "x9ohm1z",
|
|
50
|
+
kZKoxP: "xxqnphv",
|
|
51
|
+
"--_circle-stroke": "x132qrjd",
|
|
52
|
+
$$css: true
|
|
53
|
+
},
|
|
54
|
+
smCircle: {
|
|
55
|
+
kzqmXN: "x1xp8n7a",
|
|
56
|
+
kZKoxP: "xmix8c7",
|
|
57
|
+
"--_circle-stroke": "xrx6na1",
|
|
58
|
+
$$css: true
|
|
59
|
+
},
|
|
60
|
+
mdCheck: {
|
|
61
|
+
kzqmXN: "x1wc42o8",
|
|
62
|
+
kZKoxP: "xegnrdp",
|
|
63
|
+
kIY38u: "x1qnfge9",
|
|
64
|
+
$$css: true
|
|
65
|
+
},
|
|
66
|
+
smCheck: {
|
|
67
|
+
kzqmXN: "x1xc55vz",
|
|
68
|
+
kZKoxP: "xdk7pt",
|
|
69
|
+
kIY38u: "x195poti",
|
|
70
|
+
$$css: true
|
|
71
|
+
},
|
|
72
|
+
mdBar: {
|
|
73
|
+
kzqmXN: "x1wc42o8",
|
|
74
|
+
kZKoxP: "x1rly2rj",
|
|
75
|
+
$$css: true
|
|
76
|
+
},
|
|
77
|
+
smBar: {
|
|
78
|
+
kzqmXN: "x1xc55vz",
|
|
79
|
+
kZKoxP: "x188kx65",
|
|
80
|
+
$$css: true
|
|
81
|
+
}
|
|
82
|
+
};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file circleCheck.table.ts
|
|
3
|
+
* @input UIKit measurements on the iOS 26.2 simulator
|
|
4
|
+
* @output Exports `circleCheckTable`: the circle's geometry at two text sizes
|
|
5
|
+
* (pt)
|
|
6
|
+
* @position Internal to CircleCheckIndicator; circleCheck.stylex.ts mirrors it
|
|
7
|
+
*
|
|
8
|
+
* The circle is a Lab component, so its measurements live beside it. Core's
|
|
9
|
+
* UIKit table holds only what Core's own components play.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* UIKit's multiple-selection circle, in a table row's edit mode
|
|
13
|
+
* (UITableViewCellEditControl) and a list's `.multiselect()` accessory. It is
|
|
14
|
+
* the SF Symbols `circle` and `checkmark.circle.fill` in a 25.67 pt control at
|
|
15
|
+
* the Large text size. It grows and thickens with the text size. Lengths are
|
|
16
|
+
* in pt.
|
|
17
|
+
*/
|
|
18
|
+
export declare const circleCheckTable: {
|
|
19
|
+
/** At the Large text size, the default. */
|
|
20
|
+
readonly large: {
|
|
21
|
+
/**
|
|
22
|
+
* The circle's outer diameter.
|
|
23
|
+
* @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
|
|
24
|
+
* iPhone 17 Pro, view frames and 3× pixels read (table edit mode and
|
|
25
|
+
* list multiselect, light and dark), Oct 24 2026
|
|
26
|
+
*/
|
|
27
|
+
readonly diameter: 21.8;
|
|
28
|
+
/**
|
|
29
|
+
* The empty circle's stroke; its interior is clear.
|
|
30
|
+
* @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
|
|
31
|
+
* iPhone 17 Pro, 3× pixels read, Oct 24 2026
|
|
32
|
+
*/
|
|
33
|
+
readonly stroke: 1.54;
|
|
34
|
+
/**
|
|
35
|
+
* The white checkmark's ink box in the filled circle, square.
|
|
36
|
+
* @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
|
|
37
|
+
* iPhone 17 Pro, 3× pixels read, Oct 24 2026
|
|
38
|
+
*/
|
|
39
|
+
readonly checkSize: 9;
|
|
40
|
+
/**
|
|
41
|
+
* The checkmark's stroke.
|
|
42
|
+
* @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
|
|
43
|
+
* iPhone 17 Pro, 3× pixels read, Oct 24 2026
|
|
44
|
+
*/
|
|
45
|
+
readonly checkStroke: 1.35;
|
|
46
|
+
/**
|
|
47
|
+
* How far below the circle's centre the checkmark's ink sits.
|
|
48
|
+
* @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
|
|
49
|
+
* iPhone 17 Pro, 3× pixels read, Oct 24 2026
|
|
50
|
+
*/
|
|
51
|
+
readonly checkOffsetY: 1;
|
|
52
|
+
};
|
|
53
|
+
/** At the xSmall text size, the smallest. */
|
|
54
|
+
readonly xSmall: {
|
|
55
|
+
/**
|
|
56
|
+
* The circle's outer diameter.
|
|
57
|
+
* @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
|
|
58
|
+
* iPhone 17 Pro, view frames and 3× pixels read at the xSmall text
|
|
59
|
+
* size, Oct 24 2026
|
|
60
|
+
*/
|
|
61
|
+
readonly diameter: 18;
|
|
62
|
+
/**
|
|
63
|
+
* The empty circle's stroke.
|
|
64
|
+
* @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
|
|
65
|
+
* iPhone 17 Pro, 3× pixels read at the xSmall text size, Oct 24 2026
|
|
66
|
+
*/
|
|
67
|
+
readonly stroke: 1.27;
|
|
68
|
+
/**
|
|
69
|
+
* The checkmark's ink box, square.
|
|
70
|
+
* @source measured: UIKit lab (injected host app), iOS 26.2 simulator,
|
|
71
|
+
* iPhone 17 Pro, 3× pixels read at the xSmall text size, Oct 24 2026
|
|
72
|
+
*/
|
|
73
|
+
readonly checkSize: 8;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=circleCheck.table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circleCheck.table.d.ts","sourceRoot":"","sources":["../../src/CircleCheckIndicator/circleCheck.table.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;IAC3B,2CAA2C;;QAEzC;;;;;WAKG;;QAEH;;;;WAIG;;QAEH;;;;WAIG;;QAEH;;;;WAIG;;QAEH;;;;WAIG;;;IAGL,6CAA6C;;QAE3C;;;;;WAKG;;QAEH;;;;WAIG;;QAEH;;;;WAIG;;;CAGG,CAAC"}
|