@multiplatform.one/components 7.84.0 → 7.84.2
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/cjs/Accordion/index.native.js +1 -1
- package/dist/cjs/Accordion/index.native.js.map +1 -1
- package/dist/cjs/Alert/index.native.js.map +1 -1
- package/dist/cjs/AnimateHeight/index.native.js.map +1 -1
- package/dist/cjs/Avatar/getInitials.native.js.map +1 -1
- package/dist/cjs/Avatar/index.native.js.map +1 -1
- package/dist/cjs/Badge/index.native.js.map +1 -1
- package/dist/cjs/Button.native.js.map +1 -1
- package/dist/cjs/Card.native.js.map +1 -1
- package/dist/cjs/CardFooter.native.js.map +1 -1
- package/dist/cjs/CardHeader.native.js.map +1 -1
- package/dist/cjs/Carousel/index.native.js +3 -3
- package/dist/cjs/Carousel/index.native.js.map +1 -1
- package/dist/cjs/CheckGlyph/MenuCheckColumn.native.js.map +1 -1
- package/dist/cjs/CheckGlyph/index.native.js.map +1 -1
- package/dist/cjs/Chip/index.native.js.map +1 -1
- package/dist/cjs/Collapsible.native.js.map +1 -1
- package/dist/cjs/ContextMenu/index.native.js.map +1 -1
- package/dist/cjs/CopyField/CopyMenuButton.cjs +1 -3
- package/dist/cjs/CopyField/CopyMenuButton.native.js +2 -4
- package/dist/cjs/CopyField/CopyMenuButton.native.js.map +1 -1
- package/dist/cjs/CopyField/index.native.js.map +1 -1
- package/dist/cjs/Dialog.native.js.map +1 -1
- package/dist/cjs/Diff/diff.native.js.map +1 -1
- package/dist/cjs/Diff/index.native.js.map +1 -1
- package/dist/cjs/DotIndicator/index.native.js.map +1 -1
- package/dist/cjs/DropdownMenu/index.native.js.map +1 -1
- package/dist/cjs/DropdownMenu/menuSettle.native.js.map +1 -1
- package/dist/cjs/ElapsedProgress/index.native.js.map +1 -1
- package/dist/cjs/ErrorBoundary/index.native.js.map +1 -1
- package/dist/cjs/Heading.native.js.map +1 -1
- package/dist/cjs/Kbd/index.native.js.map +1 -1
- package/dist/cjs/Kbd/keys.native.js.map +1 -1
- package/dist/cjs/Lightbox/MediaControl.native.js.map +1 -1
- package/dist/cjs/Lightbox/index.gnome.native.js.map +1 -1
- package/dist/cjs/Lightbox/index.native.js +1 -1
- package/dist/cjs/Lightbox/shared.native.js.map +1 -1
- package/dist/cjs/Lightbox/useLightbox.native.js.map +1 -1
- package/dist/cjs/MachineLiteral/index.native.js.map +1 -1
- package/dist/cjs/Material/index.native.js.map +1 -1
- package/dist/cjs/Meter/index.native.js +1 -1
- package/dist/cjs/Meter/index.native.js.map +1 -1
- package/dist/cjs/Meter/meter.native.js.map +1 -1
- package/dist/cjs/OverflowRow/index.native.js +1 -1
- package/dist/cjs/OverflowRow/index.native.js.map +1 -1
- package/dist/cjs/Pagination.native.js +1 -1
- package/dist/cjs/Pagination.native.js.map +1 -1
- package/dist/cjs/Popover.native.js +1 -1
- package/dist/cjs/Popover.native.js.map +1 -1
- package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
- package/dist/cjs/Quote/index.native.js.map +1 -1
- package/dist/cjs/SchemeToggle/index.native.js +1 -1
- package/dist/cjs/SchemeToggle/index.native.js.map +1 -1
- package/dist/cjs/ScrollView/revealFocusedField.native.js.map +1 -1
- package/dist/cjs/Separator/index.native.js.map +1 -1
- package/dist/cjs/Sheet.native.js.map +1 -1
- package/dist/cjs/SheetModal/SheetHeader.native.js.map +1 -1
- package/dist/cjs/SheetModal/SheetNavigation.native.js.map +1 -1
- package/dist/cjs/SheetModal/detents.native.js.map +1 -1
- package/dist/cjs/SheetModal/useSheetFrameFocus.native.js.map +1 -1
- package/dist/cjs/Skeleton/index.native.js.map +1 -1
- package/dist/cjs/SkipLink/index.cjs +1 -2
- package/dist/cjs/SkipLink/index.native.js +1 -2
- package/dist/cjs/SkipLink/index.native.js.map +1 -1
- package/dist/cjs/SortableList/SortableHandle.native.js.map +1 -1
- package/dist/cjs/SortableList/index.native.js.map +1 -1
- package/dist/cjs/SortableList/useSortableRows.native.js.map +1 -1
- package/dist/cjs/SortableList/useUserOrder.native.js.map +1 -1
- package/dist/cjs/Tabs/index.native.js +1 -1
- package/dist/cjs/Tabs/index.native.js.map +1 -1
- package/dist/cjs/Text.native.js.map +1 -1
- package/dist/cjs/ThemePresetPicker/index.native.js +2 -2
- package/dist/cjs/ThemePresetPicker/index.native.js.map +1 -1
- package/dist/cjs/Toast/index.native.js.map +1 -1
- package/dist/cjs/Toast/store.native.js.map +1 -1
- package/dist/cjs/Tooltip/nativePress.native.js.map +1 -1
- package/dist/cjs/Tooltip/tooltipShared.native.js.map +1 -1
- package/dist/cjs/TreeSelect/index.native.js +2 -2
- package/dist/cjs/TreeSelect/index.native.js.map +1 -1
- package/dist/cjs/TreeSelect/treeSelectModel.native.js.map +1 -1
- package/dist/cjs/Video/PlayerChrome.native.js.map +1 -1
- package/dist/cjs/Video/VideoFrame.native.js.map +1 -1
- package/dist/cjs/Video/types.native.js.map +1 -1
- package/dist/cjs/Wheel/index.native.js.map +1 -1
- package/dist/cjs/Wizard/index.native.js +2 -2
- package/dist/cjs/Wizard/index.native.js.map +1 -1
- package/dist/cjs/actions/ActionBar.native.js.map +1 -1
- package/dist/cjs/actions/DangerSection.native.js.map +1 -1
- package/dist/cjs/actions/DestructiveAction.native.js.map +1 -1
- package/dist/cjs/actions/HeaderActions.native.js +2 -2
- package/dist/cjs/actions/HeaderActions.native.js.map +1 -1
- package/dist/cjs/actions/StandardAction.native.js +1 -1
- package/dist/cjs/actions/StandardAction.native.js.map +1 -1
- package/dist/cjs/actions/devWarn.native.js.map +1 -1
- package/dist/cjs/actions/index.native.js.map +1 -1
- package/dist/cjs/actions/severity.native.js.map +1 -1
- package/dist/cjs/appShell/AppShell.native.js +1 -1
- package/dist/cjs/appShell/AppShell.native.js.map +1 -1
- package/dist/cjs/appShell/BottomChromeClearance.native.js.map +1 -1
- package/dist/cjs/appShell/Dock.native.js.map +1 -1
- package/dist/cjs/appShell/MpoTabHost.native.js.map +1 -1
- package/dist/cjs/appShell/ScopeMenu.native.js +1 -1
- package/dist/cjs/appShell/ScopeMenu.native.js.map +1 -1
- package/dist/cjs/appShell/SettingsSplit.native.js +1 -1
- package/dist/cjs/appShell/SettingsSplit.native.js.map +1 -1
- package/dist/cjs/appShell/Springboard.native.js +1 -1
- package/dist/cjs/appShell/Springboard.native.js.map +1 -1
- package/dist/cjs/appShell/SystemBar.native.js.map +1 -1
- package/dist/cjs/appShell/TabBar.native.js +1 -1
- package/dist/cjs/appShell/TabBar.native.js.map +1 -1
- package/dist/cjs/appShell/appTile.native.js +1 -1
- package/dist/cjs/appShell/appTile.native.js.map +1 -1
- package/dist/cjs/appShell/bottomChrome.native.js.map +1 -1
- package/dist/cjs/appShell/index.native.js.map +1 -1
- package/dist/cjs/charts/Axis.native.js.map +1 -1
- package/dist/cjs/charts/BarChart.native.js.map +1 -1
- package/dist/cjs/charts/ChartDataView.native.js +2 -2
- package/dist/cjs/charts/ChartDataView.native.js.map +1 -1
- package/dist/cjs/charts/ChartSurface.native.js.map +1 -1
- package/dist/cjs/charts/LineChart.native.js.map +1 -1
- package/dist/cjs/charts/PieChart.native.js.map +1 -1
- package/dist/cjs/charts/Sparkline.native.js.map +1 -1
- package/dist/cjs/charts/accessibility.native.js.map +1 -1
- package/dist/cjs/charts/chartHeight.native.js.map +1 -1
- package/dist/cjs/charts/composeChart.native.js.map +1 -1
- package/dist/cjs/charts/index.native.js.map +1 -1
- package/dist/cjs/charts/math.native.js.map +1 -1
- package/dist/cjs/charts/series.native.js.map +1 -1
- package/dist/cjs/charts/svg.native.js.map +1 -1
- package/dist/cjs/charts/types.native.js.map +1 -1
- package/dist/cjs/charts/useChartTheme.native.js.map +1 -1
- package/dist/cjs/code/Code/index.native.js.map +1 -1
- package/dist/cjs/code/CodeBlock/index.native.js +7 -7
- package/dist/cjs/code/CodeBlock/index.native.js.map +1 -1
- package/dist/cjs/code/HighlightedCode/index.native.js.map +1 -1
- package/dist/cjs/code/Highlighter/houseSyntaxTheme.native.js.map +1 -1
- package/dist/cjs/code/Highlighter/index.native.js.map +1 -1
- package/dist/cjs/code/Highlighter/namedGroupMatchAll.native.js.map +1 -1
- package/dist/cjs/code/LogView.native.js.map +1 -1
- package/dist/cjs/code/Pre/index.native.js.map +1 -1
- package/dist/cjs/code/index.native.js +5 -5
- package/dist/cjs/code/index.native.js.map +1 -1
- package/dist/cjs/componentColors.native.js.map +1 -1
- package/dist/cjs/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/cjs/feedback/NotifyHost.native.js +2 -2
- package/dist/cjs/feedback/NotifyHost.native.js.map +1 -1
- package/dist/cjs/feedback/copy.native.js.map +1 -1
- package/dist/cjs/feedback/index.native.js.map +1 -1
- package/dist/cjs/feedback/notify.native.js.map +1 -1
- package/dist/cjs/feedback/route.native.js.map +1 -1
- package/dist/cjs/feedback/store.native.js.map +1 -1
- package/dist/cjs/formLayouts/FormLayouts.native.js +1 -1
- package/dist/cjs/formLayouts/FormLayouts.native.js.map +1 -1
- package/dist/cjs/formLayouts/PreferencePanel.native.js +2 -2
- package/dist/cjs/formLayouts/PreferencePanel.native.js.map +1 -1
- package/dist/cjs/formLayouts/index.native.js.map +1 -1
- package/dist/cjs/hooks/index.native.js +1 -1
- package/dist/cjs/hooks/index.native.js.map +1 -1
- package/dist/cjs/hooks/useClipboard.native.js.map +1 -1
- package/dist/cjs/hooks/useDocumentTitle.native.js.map +1 -1
- package/dist/cjs/hooks/useHoldCue.native.js.map +1 -1
- package/dist/cjs/icons/CheckRegular.native.js.map +1 -1
- package/dist/cjs/icons/MinusRegular.native.js.map +1 -1
- package/dist/cjs/icons/index.native.js.map +1 -1
- package/dist/cjs/icons/lucide.native.js.map +1 -1
- package/dist/cjs/icons/themed.native.js.map +1 -1
- package/dist/cjs/images/Image/ImageFrame.native.js +1 -1
- package/dist/cjs/images/Image/ImageFrame.native.js.map +1 -1
- package/dist/cjs/images/Image/framing.native.js.map +1 -1
- package/dist/cjs/images/Image/index.native.js +1 -1
- package/dist/cjs/images/Image/mediaRadius.native.js.map +1 -1
- package/dist/cjs/images/Image/shared.native.js +1 -1
- package/dist/cjs/images/Image/shared.native.js.map +1 -1
- package/dist/cjs/images/Image/types.native.js.map +1 -1
- package/dist/cjs/images/index.native.js.map +1 -1
- package/dist/cjs/index.native.js +39 -39
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/knobImmuneExports.native.js.map +1 -1
- package/dist/cjs/layouts/AsyncBoundary.native.js +2 -2
- package/dist/cjs/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/cjs/layouts/Debug/index.native.js.map +1 -1
- package/dist/cjs/layouts/EmptyState.native.js +1 -1
- package/dist/cjs/layouts/EmptyState.native.js.map +1 -1
- package/dist/cjs/layouts/IdentityPlate.native.js.map +1 -1
- package/dist/cjs/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
- package/dist/cjs/layouts/PageTemplates.native.js.map +1 -1
- package/dist/cjs/layouts/PaneScaffold.native.js.map +1 -1
- package/dist/cjs/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
- package/dist/cjs/layouts/StatusDot.native.js.map +1 -1
- package/dist/cjs/layouts/StatusGlyphStrip.native.js +1 -1
- package/dist/cjs/layouts/StatusGlyphStrip.native.js.map +1 -1
- package/dist/cjs/layouts/ViewSwitcher.cjs +12 -2
- package/dist/cjs/layouts/ViewSwitcher.native.js +15 -2
- package/dist/cjs/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/cjs/layouts/attachments.native.js +1 -1
- package/dist/cjs/layouts/attachments.native.js.map +1 -1
- package/dist/cjs/layouts/barTitleSpan.native.js.map +1 -1
- package/dist/cjs/layouts/bottomAccessory.native.js.map +1 -1
- package/dist/cjs/layouts/breadcrumbs.native.js.map +1 -1
- package/dist/cjs/layouts/index.native.js +3 -3
- package/dist/cjs/layouts/index.native.js.map +1 -1
- package/dist/cjs/layouts/page.native.js +2 -2
- package/dist/cjs/layouts/page.native.js.map +1 -1
- package/dist/cjs/layouts/pageHeadingScope.native.js.map +1 -1
- package/dist/cjs/layouts/screenScroll.native.js.map +1 -1
- package/dist/cjs/layouts/shellSidebarSlot.native.js.map +1 -1
- package/dist/cjs/layouts/sidebar.native.js +1 -1
- package/dist/cjs/layouts/sidebar.native.js.map +1 -1
- package/dist/cjs/layouts/tags.native.js +2 -2
- package/dist/cjs/layouts/tags.native.js.map +1 -1
- package/dist/cjs/layouts/timeline.native.js +2 -2
- package/dist/cjs/layouts/timeline.native.js.map +1 -1
- package/dist/cjs/layouts/toolbar.native.js +1 -1
- package/dist/cjs/layouts/toolbar.native.js.map +1 -1
- package/dist/cjs/shared/actionScan.native.js.map +1 -1
- package/dist/cjs/shared/i18n.native.js.map +1 -1
- package/dist/cjs/shared/restoreRetries.native.js.map +1 -1
- package/dist/cjs/shared/t.native.js.map +1 -1
- package/dist/cjs/shared/textRidesText.native.js.map +1 -1
- package/dist/cjs/shared/useReturnFocusOnClose.native.js.map +1 -1
- package/dist/cjs/surfaces.native.js +1 -1
- package/dist/cjs/surfaces.native.js.map +1 -1
- package/dist/cjs/tamagui.native.js +1 -1
- package/dist/cjs/tamagui.native.js.map +1 -1
- package/dist/cjs/testSetup.native.js.map +1 -1
- package/dist/cjs/utils/setTinted.native.js.map +1 -1
- package/dist/cjs/utils/unwrapText.native.js.map +1 -1
- package/dist/cjs/views/Calendar.native.js +1 -1
- package/dist/cjs/views/Calendar.native.js.map +1 -1
- package/dist/cjs/views/Dashboard.native.js +2 -2
- package/dist/cjs/views/Dashboard.native.js.map +1 -1
- package/dist/cjs/views/Gantt.native.js +2 -2
- package/dist/cjs/views/Gantt.native.js.map +1 -1
- package/dist/cjs/views/GanttDateGrip.native.js.map +1 -1
- package/dist/cjs/views/ImageGrid.native.js +2 -2
- package/dist/cjs/views/ImageGrid.native.js.map +1 -1
- package/dist/cjs/views/Kanban.native.js +1 -1
- package/dist/cjs/views/List.native.js.map +1 -1
- package/dist/cjs/views/ListGroup.native.js.map +1 -1
- package/dist/cjs/views/ListRow.native.js.map +1 -1
- package/dist/cjs/views/Matrix.native.js +2 -2
- package/dist/cjs/views/Matrix.native.js.map +1 -1
- package/dist/cjs/views/ReportBuilder.native.js +2 -2
- package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
- package/dist/cjs/views/ShortcutCard.native.js.map +1 -1
- package/dist/cjs/views/TreeView.native.js.map +1 -1
- package/dist/cjs/views/calendarMath.native.js.map +1 -1
- package/dist/cjs/views/ganttIntervals.native.js.map +1 -1
- package/dist/cjs/views/ganttMath.native.js.map +1 -1
- package/dist/cjs/views/index.native.js +1 -1
- package/dist/cjs/views/index.native.js.map +1 -1
- package/dist/cjs/views/kanbanDnd.native.js.map +1 -1
- package/dist/cjs/views/matrixMath.native.js.map +1 -1
- package/dist/cjs/views/sameNameScope.native.js.map +1 -1
- package/dist/cjs/views/treeViewDnd.native.js.map +1 -1
- package/dist/cjs/views/treeViewLayout.native.js.map +1 -1
- package/dist/cjs/views/treeViewMotion.native.js.map +1 -1
- package/dist/cjs/views/treeViewReveal.native.js.map +1 -1
- package/dist/cjs/views/usePageFlowLoadMore.native.js.map +1 -1
- package/dist/cjs/views/widgetChrome.native.js.map +1 -1
- package/dist/esm/CopyField/CopyMenuButton.mjs +1 -3
- package/dist/esm/CopyField/CopyMenuButton.mjs.map +1 -1
- package/dist/esm/CopyField/CopyMenuButton.native.js +1 -3
- package/dist/esm/CopyField/CopyMenuButton.native.js.map +1 -1
- package/dist/esm/SkipLink/index.mjs +2 -3
- package/dist/esm/SkipLink/index.mjs.map +1 -1
- package/dist/esm/SkipLink/index.native.js +2 -3
- package/dist/esm/SkipLink/index.native.js.map +1 -1
- package/dist/esm/layouts/ViewSwitcher.mjs +12 -2
- package/dist/esm/layouts/ViewSwitcher.mjs.map +1 -1
- package/dist/esm/layouts/ViewSwitcher.native.js +15 -2
- package/dist/esm/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/jsx/CopyField/CopyMenuButton.mjs +1 -3
- package/dist/jsx/CopyField/CopyMenuButton.mjs.map +1 -1
- package/dist/jsx/CopyField/CopyMenuButton.native.js +1 -3
- package/dist/jsx/CopyField/CopyMenuButton.native.js.map +1 -1
- package/dist/jsx/SkipLink/index.mjs +2 -3
- package/dist/jsx/SkipLink/index.mjs.map +1 -1
- package/dist/jsx/SkipLink/index.native.js +1 -2
- package/dist/jsx/SkipLink/index.native.js.map +1 -1
- package/dist/jsx/layouts/ViewSwitcher.mjs +12 -2
- package/dist/jsx/layouts/ViewSwitcher.mjs.map +1 -1
- package/dist/jsx/layouts/ViewSwitcher.native.js +15 -2
- package/dist/jsx/layouts/ViewSwitcher.native.js.map +1 -1
- package/package.json +11 -11
- package/src/CopyField/CopyMenuButton.spec.tsx +2 -0
- package/src/CopyField/CopyMenuButton.tsx +1 -8
- package/src/SkipLink/index.tsx +3 -8
- package/src/SkipLink/weightKnob.spec.tsx +53 -0
- package/src/layouts/DensePageLayout.spec.tsx +105 -0
- package/src/layouts/ViewSwitcher.native-press.spec.tsx +55 -0
- package/src/layouts/ViewSwitcher.tsx +13 -2
- package/types/CopyField/CopyMenuButton.d.ts.map +1 -1
- package/types/SkipLink/index.d.ts.map +1 -1
- package/types/layouts/ViewSwitcher.d.ts.map +1 -1
|
@@ -94,7 +94,12 @@ function ViewSwitcher(param) {
|
|
|
94
94
|
overflow: "hidden",
|
|
95
95
|
focusStyle: groupRing,
|
|
96
96
|
focusVisibleStyle: groupRing,
|
|
97
|
-
|
|
97
|
+
// FZ-8991: on native a focusWithinStyle hands every descendant focus
|
|
98
|
+
// events, and the segment's label then takes the touch, so the segment's
|
|
99
|
+
// onPress never runs. The ring is a keyboard affordance: web only.
|
|
100
|
+
...(import_tamagui.isWeb ? {
|
|
101
|
+
focusWithinStyle: groupRing
|
|
102
|
+
} : void 0),
|
|
98
103
|
// Carbon / Apple equal-width: inline style so Tamagui's flex class
|
|
99
104
|
// cannot drop `gridAutoFlow` (a Tamagui `display="grid"` prop did).
|
|
100
105
|
...(import_tamagui.isWeb ? {
|
|
@@ -128,7 +133,15 @@ function ViewSwitcher(param) {
|
|
|
128
133
|
value: view.type,
|
|
129
134
|
...(import_tamagui.isWeb ? {
|
|
130
135
|
tabIndex: isTabStop ? 0 : -1
|
|
131
|
-
} :
|
|
136
|
+
} : {
|
|
137
|
+
accessible: true,
|
|
138
|
+
role: "button",
|
|
139
|
+
accessibilityRole: "button",
|
|
140
|
+
accessibilityLabel: view.label,
|
|
141
|
+
accessibilityState: {
|
|
142
|
+
selected: isSelected
|
|
143
|
+
}
|
|
144
|
+
}),
|
|
132
145
|
paddingHorizontal: knobProps.tab.paddingHorizontal,
|
|
133
146
|
width: "auto",
|
|
134
147
|
height: knobProps.tab.height,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","ViewSwitcher_exports","ViewSwitcher","module","exports","import_jsx_runtime","require","import_theme","import_theme2","import_react","import_tamagui","param","views","currentView","onViewChange","testID","knobProps","useResolvedKnobs","kbFocusValue","setKbFocusValue","useState","focusValue","setFocusValue","isWeb","ensureKeyboardModalityTracking","selectedChip","backgroundColor","segmentHitSlop","tabHitSlop","groupRing","ensureFocusVisibleRing","radius","borderRadius","count","length","restSegment","borderWidth","borderColor","margin","hoverWash","pressWash","jsx","ToggleGroup","type","orientation","flexDirection","alignSelf","gap","disableDeactivation","onValueChange","val","inputSurface","sizeToken","overflow","focusStyle","focusVisibleStyle","focusWithinStyle","style","display","gridAutoFlow","gridAutoColumns","children","map","view","viewIndex","Icon","icon","anchorIndex","focusIdx","findIndex","v","activeIdx","isTabStop","isSelected","groupedRadius","stackRadiusProps","getGroupPosition","fill","Item","tabIndex","paddingHorizontal","tab","width","height","hitSlop","flexGrow","flexShrink","alignItems","justifyContent","cursor","userSelect","
|
|
1
|
+
{"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","ViewSwitcher_exports","ViewSwitcher","module","exports","import_jsx_runtime","require","import_theme","import_theme2","import_react","import_tamagui","param","views","currentView","onViewChange","testID","knobProps","useResolvedKnobs","kbFocusValue","setKbFocusValue","useState","focusValue","setFocusValue","isWeb","ensureKeyboardModalityTracking","selectedChip","backgroundColor","segmentHitSlop","tabHitSlop","groupRing","ensureFocusVisibleRing","radius","borderRadius","count","length","restSegment","borderWidth","borderColor","margin","hoverWash","pressWash","jsx","ToggleGroup","type","orientation","flexDirection","alignSelf","gap","disableDeactivation","onValueChange","val","inputSurface","sizeToken","overflow","focusStyle","focusVisibleStyle","focusWithinStyle","style","display","gridAutoFlow","gridAutoColumns","children","map","view","viewIndex","Icon","icon","anchorIndex","focusIdx","findIndex","v","activeIdx","isTabStop","isSelected","groupedRadius","stackRadiusProps","getGroupPosition","fill","Item","tabIndex","accessible","role","accessibilityRole","accessibilityLabel","label","accessibilityState","selected","paddingHorizontal","tab","width","height","hitSlop","flexGrow","flexShrink","alignItems","justifyContent","cursor","userSelect","transitionProps","motion","control","hoverStyle","pressStyle","outlineWidth","keyboardFocusRingProps","onFocus","wasKeyboardFocus","onBlur","prev"],"sources":["../../../src/layouts/ViewSwitcher.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplatform.one/components",
|
|
3
|
-
"version": "7.84.
|
|
3
|
+
"version": "7.84.2",
|
|
4
4
|
"description": "multiplatform.one ui components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"components",
|
|
@@ -58,11 +58,11 @@
|
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
60
|
"@floating-ui/react": "^0.27.20",
|
|
61
|
-
"@multiplatform.one/forms": "^7.84.
|
|
62
|
-
"@multiplatform.one/i18n": "^7.84.
|
|
63
|
-
"@multiplatform.one/platform": "^7.84.
|
|
64
|
-
"@multiplatform.one/router": "^7.84.
|
|
65
|
-
"@multiplatform.one/theme": "^7.84.
|
|
61
|
+
"@multiplatform.one/forms": "^7.84.2",
|
|
62
|
+
"@multiplatform.one/i18n": "^7.84.2",
|
|
63
|
+
"@multiplatform.one/platform": "^7.84.2",
|
|
64
|
+
"@multiplatform.one/router": "^7.84.2",
|
|
65
|
+
"@multiplatform.one/theme": "^7.84.2",
|
|
66
66
|
"@phosphor-icons/react": "^2.1.10",
|
|
67
67
|
"@shopify/flash-list": "^2.3.1",
|
|
68
68
|
"@tamagui/colors": "2.7.6",
|
|
@@ -89,16 +89,16 @@
|
|
|
89
89
|
"tamagui": "2.7.6"
|
|
90
90
|
},
|
|
91
91
|
"devDependencies": {
|
|
92
|
-
"@multiplatform.one/config": "7.84.
|
|
93
|
-
"@multiplatform.one/storybook": "7.84.
|
|
94
|
-
"@multiplatform.one/test-utils": "7.84.
|
|
92
|
+
"@multiplatform.one/config": "7.84.2",
|
|
93
|
+
"@multiplatform.one/storybook": "7.84.2",
|
|
94
|
+
"@multiplatform.one/test-utils": "7.84.2",
|
|
95
95
|
"@tamagui/build": "2.7.6",
|
|
96
96
|
"@testing-library/jest-dom": "^7.0.1",
|
|
97
97
|
"@testing-library/react": "^16.3.3",
|
|
98
98
|
"@types/d3-scale": "^4.0.9",
|
|
99
99
|
"@types/d3-shape": "^3.2.0",
|
|
100
100
|
"@vitejs/plugin-react": "^6.1.2",
|
|
101
|
-
"@vitest/coverage-v8": "^4.1.
|
|
101
|
+
"@vitest/coverage-v8": "^4.1.12",
|
|
102
102
|
"expo-blur": "~55.0.18",
|
|
103
103
|
"expo-video": "~55.0.19",
|
|
104
104
|
"matchmedia-polyfill": "^0.3.2",
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
"react-native-reanimated": "~4.3.0",
|
|
110
110
|
"react-native-svg": "15.15.4",
|
|
111
111
|
"react-native-web": "^0.21.2",
|
|
112
|
-
"vitest": "^4.1.
|
|
112
|
+
"vitest": "^4.1.12"
|
|
113
113
|
},
|
|
114
114
|
"peerDependencies": {
|
|
115
115
|
"@mdx-js/mdx": "^3.1.1",
|
|
@@ -21,6 +21,8 @@ describe("CopyMenuButton (LC-169)", () => {
|
|
|
21
21
|
/>,
|
|
22
22
|
);
|
|
23
23
|
const trigger = result.getByLabelText("Copy");
|
|
24
|
+
// LC-176 (FZ-8044): the glyph beside an identifier is the inline accent glyph.
|
|
25
|
+
expect(trigger.getAttribute("data-mp-icon-button")).toBe("inline");
|
|
24
26
|
fireEvent.click(trigger);
|
|
25
27
|
await waitFor(() => expect(result.getByText("Copy discovery URL")).toBeTruthy());
|
|
26
28
|
expect(result.getByText("Copy issuer")).toBeTruthy();
|
|
@@ -37,14 +37,7 @@ export function CopyMenuButton({ items, "aria-label": ariaLabel }: CopyMenuButto
|
|
|
37
37
|
onSelect: () => void copy(item.value),
|
|
38
38
|
}))}
|
|
39
39
|
>
|
|
40
|
-
<Button
|
|
41
|
-
nested
|
|
42
|
-
chromeless
|
|
43
|
-
circular
|
|
44
|
-
flexShrink={0}
|
|
45
|
-
icon={<CopyIcon />}
|
|
46
|
-
aria-label={ariaLabel ?? t("Copy")}
|
|
47
|
-
/>
|
|
40
|
+
<Button inline flexShrink={0} icon={<CopyIcon />} aria-label={ariaLabel ?? t("Copy")} />
|
|
48
41
|
</DropdownMenu>
|
|
49
42
|
);
|
|
50
43
|
}
|
package/src/SkipLink/index.tsx
CHANGED
|
@@ -3,10 +3,11 @@ import { zIndex } from "@multiplatform.one/forms";
|
|
|
3
3
|
import {
|
|
4
4
|
FOCUS_RING_MIN_WIDTH,
|
|
5
5
|
FOCUS_VISIBLE_RING,
|
|
6
|
+
SizableText,
|
|
6
7
|
useResolvedKnobs,
|
|
7
8
|
} from "@multiplatform.one/theme";
|
|
8
9
|
import type { GetProps } from "tamagui";
|
|
9
|
-
import {
|
|
10
|
+
import { YStack, getTokenValue, isWeb, styled } from "tamagui";
|
|
10
11
|
|
|
11
12
|
// ── Types ─────────────────────────────────────────────────────
|
|
12
13
|
|
|
@@ -178,13 +179,7 @@ export function SkipLink({
|
|
|
178
179
|
{...knobProps.elevatedSurface}
|
|
179
180
|
elevation={knobProps.elevatedSurface.elevation ?? "$2"}
|
|
180
181
|
>
|
|
181
|
-
<SizableText
|
|
182
|
-
{...knobProps.body}
|
|
183
|
-
{...knobProps.label}
|
|
184
|
-
fontWeight="400"
|
|
185
|
-
color="$color12"
|
|
186
|
-
whiteSpace="nowrap"
|
|
187
|
-
>
|
|
182
|
+
<SizableText {...knobProps.body} {...knobProps.label} color="$color12" whiteSpace="nowrap">
|
|
188
183
|
{children}
|
|
189
184
|
</SizableText>
|
|
190
185
|
</SkipLinkSurface>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MPO-469 (FZ-1858): the skip link's label takes the fontWeight knob. It was
|
|
3
|
+
* tamagui's raw SizableText with fontWeight="400" written after the label
|
|
4
|
+
* fragment, so it stayed 400 under Weight bold. K13 (Round 51) rules chrome
|
|
5
|
+
* labels honour the knob, and the link now rides the house SizableText.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
9
|
+
import { Preset } from "@multiplatform.one/theme";
|
|
10
|
+
import { cleanup, screen } from "@testing-library/react";
|
|
11
|
+
import { readFileSync } from "node:fs";
|
|
12
|
+
import { resolve } from "node:path";
|
|
13
|
+
import { Text as RawText } from "tamagui";
|
|
14
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
15
|
+
import { SkipLink } from "./index";
|
|
16
|
+
|
|
17
|
+
afterEach(cleanup);
|
|
18
|
+
|
|
19
|
+
function weightClasses(el: Element): string[] {
|
|
20
|
+
return String(el.className || "")
|
|
21
|
+
.split(" ")
|
|
22
|
+
.filter((c) => c.startsWith("_fow-"))
|
|
23
|
+
.sort();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function explicit(weight: string): string[] {
|
|
27
|
+
renderWithProviders(<RawText fontWeight={weight as never}>probe</RawText>);
|
|
28
|
+
const got = weightClasses(screen.getByText("probe"));
|
|
29
|
+
cleanup();
|
|
30
|
+
return got;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
describe("SkipLink label follows the fontWeight knob (MPO-469)", () => {
|
|
34
|
+
it.each([
|
|
35
|
+
["regular", "400"],
|
|
36
|
+
["bold", "700"],
|
|
37
|
+
] as const)("paints the knob weight at %s", (fontWeight, want) => {
|
|
38
|
+
const expected = explicit(want);
|
|
39
|
+
renderWithProviders(
|
|
40
|
+
<Preset overrides={{ fontWeight }}>
|
|
41
|
+
<SkipLink targetId="main-content">Skip to results</SkipLink>
|
|
42
|
+
</Preset>,
|
|
43
|
+
);
|
|
44
|
+
expect(weightClasses(screen.getByText("Skip to results"))).toEqual(expected);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it("imports no typography from tamagui", () => {
|
|
48
|
+
const src = readFileSync(resolve(__dirname, "index.tsx"), "utf-8");
|
|
49
|
+
expect(src).not.toMatch(
|
|
50
|
+
/import\s*\{[^}]*\b(Text|SizableText|Paragraph)\b[^}]*\}\s*from\s*"tamagui"/,
|
|
51
|
+
);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { cleanup, screen } from "@testing-library/react";
|
|
2
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
3
|
+
import { layoutBreakpoints } from "@multiplatform.one/theme";
|
|
4
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
5
|
+
import { Button, Paragraph } from "tamagui";
|
|
6
|
+
import { CONTENT_MAX_WIDTH } from "./page";
|
|
7
|
+
import { DensePageLayout } from "./PageTemplates";
|
|
8
|
+
|
|
9
|
+
const size = vi.hoisted(() => ({ value: "medium" as string }));
|
|
10
|
+
vi.mock("@multiplatform.one/theme", async (importOriginal) => ({
|
|
11
|
+
...(await importOriginal<typeof import("@multiplatform.one/theme")>()),
|
|
12
|
+
useLayoutSizeClass: () => size.value,
|
|
13
|
+
}));
|
|
14
|
+
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
cleanup();
|
|
17
|
+
size.value = "medium";
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
function Log(props: Partial<Parameters<typeof DensePageLayout>[0]>) {
|
|
21
|
+
return (
|
|
22
|
+
<DensePageLayout
|
|
23
|
+
kind="log"
|
|
24
|
+
title="Sync worker"
|
|
25
|
+
status={<Paragraph>Running</Paragraph>}
|
|
26
|
+
actions={<Button aria-label="Pause the stream">Pause</Button>}
|
|
27
|
+
data-testid="dense-shell"
|
|
28
|
+
{...props}
|
|
29
|
+
>
|
|
30
|
+
<Paragraph>log rows</Paragraph>
|
|
31
|
+
</DensePageLayout>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** Tamagui's atomic classes on web: `_pl-t-space-4` is paddingLeft $4. */
|
|
36
|
+
function atom(el: HTMLElement, prefix: string) {
|
|
37
|
+
return el.className.split(" ").find((name) => name.startsWith(prefix)) ?? null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function surface(kind: string) {
|
|
41
|
+
return document.querySelector(`[data-dense-surface="${kind}"]`) as HTMLElement;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
describe("DensePageLayout (LC-215)", () => {
|
|
45
|
+
it("keeps the page head and gives the surface the rest of the page", () => {
|
|
46
|
+
renderWithProviders(<Log />);
|
|
47
|
+
expect(screen.getByRole("heading", { name: "Sync worker" })).toBeTruthy();
|
|
48
|
+
expect(screen.getByText("Running")).toBeTruthy();
|
|
49
|
+
expect(screen.getByLabelText("Pause the stream")).toBeTruthy();
|
|
50
|
+
const region = surface("log");
|
|
51
|
+
expect(region.textContent).toBe("log rows");
|
|
52
|
+
expect(region.contains(screen.getByText("Sync worker"))).toBe(false);
|
|
53
|
+
expect(region).toHaveStyle({ flexGrow: "1", minHeight: "0px" });
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it("from medium up holds a log to the page column and a chart to the readable measure", () => {
|
|
57
|
+
renderWithProviders(<Log />);
|
|
58
|
+
expect(screen.getByTestId("dense-shell")).toHaveStyle({ maxWidth: `${CONTENT_MAX_WIDTH}px` });
|
|
59
|
+
const log = surface("log");
|
|
60
|
+
expect(atom(log, "_ox-")).toBe("_ox-hidden");
|
|
61
|
+
expect(atom(log, "_btlr-")).toMatch(/^_btlr-t-radius-/);
|
|
62
|
+
cleanup();
|
|
63
|
+
renderWithProviders(<Log kind="chart" measure="readable" />);
|
|
64
|
+
expect(screen.getByTestId("dense-shell")).toHaveStyle({
|
|
65
|
+
maxWidth: `${layoutBreakpoints.expanded}px`,
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it("on a phone bleeds the surface to both edges, with a gutter only when asked", () => {
|
|
70
|
+
size.value = "compact";
|
|
71
|
+
renderWithProviders(<Log />);
|
|
72
|
+
const shell = screen.getByTestId("dense-shell");
|
|
73
|
+
expect(getComputedStyle(shell).maxWidth).not.toBe(`${CONTENT_MAX_WIDTH}px`);
|
|
74
|
+
const region = surface("log");
|
|
75
|
+
expect([atom(region, "_pl-"), atom(region, "_pr-"), atom(region, "_ox-")]).toEqual([
|
|
76
|
+
null,
|
|
77
|
+
null,
|
|
78
|
+
null,
|
|
79
|
+
]);
|
|
80
|
+
expect(region.contains(screen.getByText("Sync worker"))).toBe(false);
|
|
81
|
+
cleanup();
|
|
82
|
+
renderWithProviders(<Log kind="chart" gutter />);
|
|
83
|
+
const chart = surface("chart");
|
|
84
|
+
expect(atom(chart, "_pl-")).toMatch(/^_pl-t-space-/);
|
|
85
|
+
expect(atom(chart, "_pl-")?.slice(4)).toBe(atom(chart, "_pr-")?.slice(4));
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it("takes a caller's header in place of its own, and draws none with nothing to show", () => {
|
|
89
|
+
renderWithProviders(
|
|
90
|
+
<DensePageLayout kind="log" header={<Paragraph>Custom head</Paragraph>}>
|
|
91
|
+
<Paragraph>rows</Paragraph>
|
|
92
|
+
</DensePageLayout>,
|
|
93
|
+
);
|
|
94
|
+
expect(screen.getByText("Custom head")).toBeTruthy();
|
|
95
|
+
expect(screen.queryByRole("heading")).toBeNull();
|
|
96
|
+
cleanup();
|
|
97
|
+
renderWithProviders(
|
|
98
|
+
<DensePageLayout kind="log">
|
|
99
|
+
<Paragraph>rows</Paragraph>
|
|
100
|
+
</DensePageLayout>,
|
|
101
|
+
);
|
|
102
|
+
expect(screen.queryByRole("heading")).toBeNull();
|
|
103
|
+
expect(surface("log").textContent).toBe("rows");
|
|
104
|
+
});
|
|
105
|
+
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FZ-8991, under tamagui's NATIVE build (vitest.native.config.mjs). On the iOS
|
|
3
|
+
* simulator One's Moves list ignored every tap on the ViewSwitcher's Table
|
|
4
|
+
* segment, so a phone user could never reach the table view. A press on a
|
|
5
|
+
* segment's label has to reach the segment and switch the view.
|
|
6
|
+
*/
|
|
7
|
+
import { cleanup, fireEvent, screen } from "@testing-library/react";
|
|
8
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
9
|
+
import { isWeb } from "tamagui";
|
|
10
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
11
|
+
import { ViewSwitcher } from "./ViewSwitcher";
|
|
12
|
+
|
|
13
|
+
afterEach(cleanup);
|
|
14
|
+
|
|
15
|
+
const views = [
|
|
16
|
+
{ type: "list", label: "List" },
|
|
17
|
+
{ type: "table", label: "Table" },
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
function press(el: Element) {
|
|
21
|
+
fireEvent.mouseDown(el, { button: 0, buttons: 1 });
|
|
22
|
+
fireEvent.mouseUp(el, { button: 0, buttons: 0 });
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
describe("ViewSwitcher press on native", () => {
|
|
26
|
+
it("runs tamagui's native build", () => {
|
|
27
|
+
expect(isWeb).toBe(false);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it("a press on the Table segment switches to table", () => {
|
|
31
|
+
const onViewChange = vi.fn();
|
|
32
|
+
renderWithProviders(
|
|
33
|
+
<ViewSwitcher views={views} currentView="list" onViewChange={onViewChange} />,
|
|
34
|
+
);
|
|
35
|
+
press(screen.getByText("Table"));
|
|
36
|
+
expect(onViewChange).toHaveBeenCalledWith("table");
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it("a press on the List segment switches back to list", () => {
|
|
40
|
+
const onViewChange = vi.fn();
|
|
41
|
+
renderWithProviders(
|
|
42
|
+
<ViewSwitcher views={views} currentView="table" onViewChange={onViewChange} />,
|
|
43
|
+
);
|
|
44
|
+
press(screen.getByText("List"));
|
|
45
|
+
expect(onViewChange).toHaveBeenCalledWith("list");
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// The selected state rides accessibilityState, which this DOM shim does not
|
|
49
|
+
// render; the simulator's accessibility tree is where that is checked.
|
|
50
|
+
it("each segment is a named button", () => {
|
|
51
|
+
renderWithProviders(<ViewSwitcher views={views} currentView="list" onViewChange={() => {}} />);
|
|
52
|
+
const buttons = screen.getAllByRole("button");
|
|
53
|
+
expect(buttons.map((b) => b.getAttribute("aria-label"))).toEqual(["List", "Table"]);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
@@ -126,7 +126,10 @@ export function ViewSwitcher({
|
|
|
126
126
|
overflow="hidden"
|
|
127
127
|
focusStyle={groupRing}
|
|
128
128
|
focusVisibleStyle={groupRing}
|
|
129
|
-
focusWithinStyle
|
|
129
|
+
// FZ-8991: on native a focusWithinStyle hands every descendant focus
|
|
130
|
+
// events, and the segment's label then takes the touch, so the segment's
|
|
131
|
+
// onPress never runs. The ring is a keyboard affordance: web only.
|
|
132
|
+
{...(isWeb ? { focusWithinStyle: groupRing } : undefined)}
|
|
130
133
|
// Carbon / Apple equal-width: inline style so Tamagui's flex class
|
|
131
134
|
// cannot drop `gridAutoFlow` (a Tamagui `display="grid"` prop did).
|
|
132
135
|
{...(isWeb
|
|
@@ -167,7 +170,15 @@ export function ViewSwitcher({
|
|
|
167
170
|
<ToggleGroup.Item
|
|
168
171
|
key={view.type}
|
|
169
172
|
value={view.type}
|
|
170
|
-
{...(isWeb
|
|
173
|
+
{...(isWeb
|
|
174
|
+
? { tabIndex: isTabStop ? 0 : -1 }
|
|
175
|
+
: {
|
|
176
|
+
accessible: true,
|
|
177
|
+
role: "button" as const,
|
|
178
|
+
accessibilityRole: "button" as const,
|
|
179
|
+
accessibilityLabel: view.label,
|
|
180
|
+
accessibilityState: { selected: isSelected },
|
|
181
|
+
})}
|
|
171
182
|
paddingHorizontal={knobProps.tab.paddingHorizontal}
|
|
172
183
|
width="auto"
|
|
173
184
|
height={knobProps.tab.height}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CopyMenuButton.d.ts","sourceRoot":"","sources":["../../src/CopyField/CopyMenuButton.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"CopyMenuButton.d.ts","sourceRoot":"","sources":["../../src/CopyField/CopyMenuButton.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/B,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,mBAAmB,2CAerF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/SkipLink/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/SkipLink/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQ5F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKxC,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACnE,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,uDAAuD;IACvD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;CAC/C;AAKD,QAAA,MAAM,eAAe;;;6CAInB,CAAC;AA+FH;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,SAAS,EACT,QAA4B,EAC5B,MAAM,GACP,EAAE,aAAa,kDAiDf;AAED,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC,OAAO,eAAe,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewSwitcher.d.ts","sourceRoot":"","sources":["../../src/layouts/ViewSwitcher.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,uFAAuF;IACvF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,WAAW,EACX,YAAY,EACZ,MAAwB,GACzB,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"ViewSwitcher.d.ts","sourceRoot":"","sources":["../../src/layouts/ViewSwitcher.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,uFAAuF;IACvF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,WAAW,EACX,YAAY,EACZ,MAAwB,GACzB,EAAE,iBAAiB,2CA2NnB"}
|