@mittwald/flow-react-components 1.6.0-next.4 → 1.6.0-next.41
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/AGENTS.md +132 -88
- package/USAGE.md +7 -2
- package/dist/assets/component-index.json +1 -1
- package/dist/assets/doc-properties.json +1 -1
- package/dist/css/all-layered.css +1 -1
- package/dist/css/all.css +1 -1
- package/dist/js/_virtual/_18.locale.mjs +14 -0
- package/dist/js/default.mjs +4 -3
- package/dist/js/flr-universal.mjs +2 -1
- package/dist/js/node_modules/.pnpm/{@lezer_lr@1.4.10 → @lezer_lr@1.4.11}/node_modules/@lezer/lr/dist/index.mjs +40 -28
- package/dist/js/node_modules/.pnpm/@lezer_lr@1.4.11/node_modules/@lezer/lr/dist/index.mjs.map +1 -0
- package/dist/js/packages/components/src/components/AccentBox/AccentBox.mjs +3 -2
- package/dist/js/packages/components/src/components/AccentBox/AccentBox.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Accordion/Accordion.mjs +3 -2
- package/dist/js/packages/components/src/components/Accordion/Accordion.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Action/models/ActionState.mjs +2 -2
- package/dist/js/packages/components/src/components/ActionGroup/ActionGroup.mjs +3 -3
- package/dist/js/packages/components/src/components/ActionGroup/ActionGroup.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Activity/Activity.mjs +1 -1
- package/dist/js/packages/components/src/components/Activity/Activity.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Alert/Alert.mjs +3 -2
- package/dist/js/packages/components/src/components/Alert/Alert.mjs.map +1 -1
- package/dist/js/packages/components/src/components/AlertBadge/AlertBadge.mjs +1 -1
- package/dist/js/packages/components/src/components/AlertBadge/AlertBadge.mjs.map +1 -1
- package/dist/js/packages/components/src/components/AlertBadge/AlertBadge.module.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Badge/Badge.mjs +2 -2
- package/dist/js/packages/components/src/components/Badge/Badge.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Badge/Badge.module.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Calendar/components/RangeCalendar/helpers/useCalendarDateRangePresets.mjs +1 -1
- package/dist/js/packages/components/src/components/CartesianChart/CartesianChart.mjs +6 -8
- package/dist/js/packages/components/src/components/CartesianChart/CartesianChart.mjs.map +1 -1
- package/dist/js/packages/components/src/components/CartesianChart/components/YAxis/YAxis.mjs +23 -5
- package/dist/js/packages/components/src/components/CartesianChart/components/YAxis/YAxis.mjs.map +1 -1
- package/dist/js/packages/components/src/components/CartesianChart/hooks/useTickLabelWidth.mjs +67 -0
- package/dist/js/packages/components/src/components/CartesianChart/hooks/useTickLabelWidth.mjs.map +1 -0
- package/dist/js/packages/components/src/components/Checkbox/Checkbox.mjs +2 -2
- package/dist/js/packages/components/src/components/Checkbox/Checkbox.mjs.map +1 -1
- package/dist/js/packages/components/src/components/CodeBlock/CodeBlock.mjs +3 -3
- package/dist/js/packages/components/src/components/CodeBlock/CodeBlock.mjs.map +1 -1
- package/dist/js/packages/components/src/components/CodeEditor/CodeEditor.mjs +41 -12
- package/dist/js/packages/components/src/components/CodeEditor/CodeEditor.mjs.map +1 -1
- package/dist/js/packages/components/src/components/CodeEditor/hooks/useCodeEditorExtensions.mjs +29 -16
- package/dist/js/packages/components/src/components/CodeEditor/hooks/useCodeEditorExtensions.mjs.map +1 -1
- package/dist/js/packages/components/src/components/CodeEditor/languages/dotEnv/dotEnv.mjs +1 -1
- package/dist/js/packages/components/src/components/ComboBox/ComboBox.mjs +3 -2
- package/dist/js/packages/components/src/components/ComboBox/ComboBox.mjs.map +1 -1
- package/dist/js/packages/components/src/components/ContextMenu/ContextMenu.mjs +3 -2
- package/dist/js/packages/components/src/components/ContextMenu/ContextMenu.mjs.map +1 -1
- package/dist/js/packages/components/src/components/CountryOptions/CountryOptions.mjs +5 -1
- package/dist/js/packages/components/src/components/CountryOptions/CountryOptions.mjs.map +1 -1
- package/dist/js/packages/components/src/components/DatePicker/DatePicker.mjs +2 -1
- package/dist/js/packages/components/src/components/DatePicker/DatePicker.mjs.map +1 -1
- package/dist/js/packages/components/src/components/DateRangePicker/DateRangePicker.mjs +2 -1
- package/dist/js/packages/components/src/components/DateRangePicker/DateRangePicker.mjs.map +1 -1
- package/dist/js/packages/components/src/components/DeprecationWarningProvider/DeprecationWarningProvider.mjs +40 -8
- package/dist/js/packages/components/src/components/DeprecationWarningProvider/DeprecationWarningProvider.mjs.map +1 -1
- package/dist/js/packages/components/src/components/DonutChart/DonutChart.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Heading/Heading.mjs +2 -0
- package/dist/js/packages/components/src/components/Heading/Heading.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Icon/Icon.module.mjs.map +1 -1
- package/dist/js/packages/components/src/components/IllustratedMessage/IllustratedMessage.mjs +3 -2
- package/dist/js/packages/components/src/components/IllustratedMessage/IllustratedMessage.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Label/Label.mjs +0 -4
- package/dist/js/packages/components/src/components/Label/Label.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Link/Link.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs +5 -2
- package/dist/js/packages/components/src/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.mjs +2 -2
- package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/AllFiltersModal.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/FilterAccordionDateRange.mjs +5 -3
- package/dist/js/packages/components/src/components/List/components/Header/components/AllFiltersModal/FilterAccordionDateRange.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/DateTimeRangeFields/DateTimeRangeFields.mjs +101 -0
- package/dist/js/packages/components/src/components/List/components/Header/components/DateTimeRangeFields/DateTimeRangeFields.mjs.map +1 -0
- package/dist/js/packages/components/src/components/List/components/Header/components/DateTimeRangeFields/DateTimeRangeFields.module.mjs +13 -0
- package/dist/js/packages/components/src/components/List/components/Header/components/DateTimeRangeFields/DateTimeRangeFields.module.mjs.map +1 -0
- package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/DateRangeFilterPopover.mjs +16 -9
- package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/DateRangeFilterPopover.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.module.mjs +6 -2
- package/dist/js/packages/components/src/components/List/components/Header/components/FilterContextMenu/FilterContextMenus.module.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Header/components/SearchField/SearchField.mjs +4 -2
- package/dist/js/packages/components/src/components/List/components/Header/components/SearchField/SearchField.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/Items.mjs +3 -0
- package/dist/js/packages/components/src/components/List/components/Items/Items.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/components/Item/Item.mjs +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/components/Item/Item.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/components/Item/hooks/useGridItemProps.mjs +1 -2
- package/dist/js/packages/components/src/components/List/components/Items/components/Item/hooks/useGridItemProps.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Items/views/GridList/GridList.mjs +3 -0
- package/dist/js/packages/components/src/components/List/components/Items/views/GridList/GridList.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/ListSummary/ListSummary.mjs +5 -9
- package/dist/js/packages/components/src/components/List/components/ListSummary/ListSummary.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Table/Table.mjs +8 -12
- package/dist/js/packages/components/src/components/List/components/Table/Table.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/components/Table/components/Row.mjs +31 -0
- package/dist/js/packages/components/src/components/List/components/Table/components/Row.mjs.map +1 -0
- package/dist/js/packages/components/src/components/List/hooks/useLatestOnAction.mjs +21 -0
- package/dist/js/packages/components/src/components/List/hooks/useLatestOnAction.mjs.map +1 -0
- package/dist/js/packages/components/src/components/List/model/List.mjs +1 -0
- package/dist/js/packages/components/src/components/List/model/List.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/ListViewMode.mjs +2 -2
- package/dist/js/packages/components/src/components/List/model/ReactTable.mjs +2 -2
- package/dist/js/packages/components/src/components/List/model/filter/DateRangeFilter.mjs +15 -2
- package/dist/js/packages/components/src/components/List/model/filter/DateRangeFilter.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/filter/resolveDateRangeFilterValue.mjs +16 -0
- package/dist/js/packages/components/src/components/List/model/filter/resolveDateRangeFilterValue.mjs.map +1 -0
- package/dist/js/packages/components/src/components/List/model/item/ItemView.mjs +20 -7
- package/dist/js/packages/components/src/components/List/model/item/ItemView.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/loading/IncrementalLoaderState.mjs +2 -2
- package/dist/js/packages/components/src/components/List/model/table/TableCell.mjs +1 -1
- package/dist/js/packages/components/src/components/List/model/table/TableCell.mjs.map +1 -1
- package/dist/js/packages/components/src/components/List/model/table/TableRow.mjs +28 -1
- package/dist/js/packages/components/src/components/List/model/table/TableRow.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Markdown/Markdown.mjs +25 -7
- package/dist/js/packages/components/src/components/Markdown/Markdown.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Markdown/components/SkeletonBlocks.mjs +1 -1
- package/dist/js/packages/components/src/components/Markdown/components/SkeletonBlocks.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Markdown/lib/isExternalHref.mjs +8 -0
- package/dist/js/packages/components/src/components/Markdown/lib/isExternalHref.mjs.map +1 -0
- package/dist/js/packages/components/src/components/MenuItem/MenuItem.mjs +32 -3
- package/dist/js/packages/components/src/components/MenuItem/MenuItem.mjs.map +1 -1
- package/dist/js/packages/components/src/components/MenuItem/MenuItem.module.mjs +1 -3
- package/dist/js/packages/components/src/components/MessageThread/MessageThread.mjs +1 -1
- package/dist/js/packages/components/src/components/MessageThread/MessageThread.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Modal/Modal.mjs +9 -2
- package/dist/js/packages/components/src/components/Modal/Modal.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Navigation/Navigation.module.mjs +1 -3
- package/dist/js/packages/components/src/components/NumberField/NumberField.mjs +2 -3
- package/dist/js/packages/components/src/components/NumberField/NumberField.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Option/Option.module.mjs +1 -3
- package/dist/js/packages/components/src/components/Overlay/components/OverlayContent.mjs +2 -1
- package/dist/js/packages/components/src/components/Overlay/components/OverlayContent.mjs.map +1 -1
- package/dist/js/packages/components/src/components/PasswordCreationField/PasswordCreationField.mjs +1 -1
- package/dist/js/packages/components/src/components/PasswordCreationField/PasswordCreationField.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Popover/components/NonModalPopoverContent/NonModalPopoverContent.mjs +1 -1
- package/dist/js/packages/components/src/components/Popover/components/NonModalPopoverContent/NonModalPopoverContent.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Popover/components/PopoverContent/PopoverContent.mjs +4 -2
- package/dist/js/packages/components/src/components/Popover/components/PopoverContent/PopoverContent.mjs.map +1 -1
- package/dist/js/packages/components/src/components/ProgressBar/ProgressBar.mjs.map +1 -1
- package/dist/js/packages/components/src/components/ProgressBar/components/ProgressBarLegend.mjs +5 -4
- package/dist/js/packages/components/src/components/ProgressBar/components/ProgressBarLegend.mjs.map +1 -1
- package/dist/js/packages/components/src/components/RadioGroup/RadioGroup.mjs +2 -3
- package/dist/js/packages/components/src/components/RadioGroup/RadioGroup.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Rating/Rating.mjs +12 -11
- package/dist/js/packages/components/src/components/Rating/Rating.mjs.map +1 -1
- package/dist/js/packages/components/src/components/SearchField/SearchField.mjs +2 -3
- package/dist/js/packages/components/src/components/SearchField/SearchField.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Section/Section.mjs +10 -6
- package/dist/js/packages/components/src/components/Section/Section.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Section/components/SectionHeader/SectionHeader.mjs +0 -4
- package/dist/js/packages/components/src/components/Section/components/SectionHeader/SectionHeader.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Section/context.mjs +47 -0
- package/dist/js/packages/components/src/components/Section/context.mjs.map +1 -0
- package/dist/js/packages/components/src/components/SegmentedControl/SegmentedControl.mjs +2 -3
- package/dist/js/packages/components/src/components/SegmentedControl/SegmentedControl.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Select/Select.mjs +2 -3
- package/dist/js/packages/components/src/components/Select/Select.mjs.map +1 -1
- package/dist/js/packages/components/src/components/SkeletonText/SkeletonText.mjs +4 -3
- package/dist/js/packages/components/src/components/SkeletonText/SkeletonText.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Slider/Slider.mjs +47 -41
- package/dist/js/packages/components/src/components/Slider/Slider.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Table/Table.mjs +3 -0
- package/dist/js/packages/components/src/components/Table/Table.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Table/Table.module.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Table/components/TableCell/TableCell.mjs +5 -12
- package/dist/js/packages/components/src/components/Table/components/TableCell/TableCell.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Table/components/TableColumn/TableColumn.mjs +4 -2
- package/dist/js/packages/components/src/components/Table/components/TableColumn/TableColumn.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Table/components/TableHeader/TableHeader.mjs +7 -1
- package/dist/js/packages/components/src/components/Table/components/TableHeader/TableHeader.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Table/components/TableHeader/context.mjs +14 -0
- package/dist/js/packages/components/src/components/Table/components/TableHeader/context.mjs.map +1 -0
- package/dist/js/packages/components/src/components/Tabs/Tabs.mjs +6 -8
- package/dist/js/packages/components/src/components/Tabs/Tabs.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Tabs/Tabs.module.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Tabs/components/TabTitle/TabTitle.module.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Text/Text.module.mjs.map +1 -1
- package/dist/js/packages/components/src/components/TextField/TextField.mjs +11 -8
- package/dist/js/packages/components/src/components/TextField/TextField.mjs.map +1 -1
- package/dist/js/packages/components/src/components/TimeField/TimeField.mjs +4 -2
- package/dist/js/packages/components/src/components/TimeField/TimeField.mjs.map +1 -1
- package/dist/js/packages/components/src/components/TranslationProvider/useLocalizedStringFormatter.mjs +15 -2
- package/dist/js/packages/components/src/components/TranslationProvider/useLocalizedStringFormatter.mjs.map +1 -1
- package/dist/js/packages/components/src/components/Wrap/Wrap.mjs.map +1 -1
- package/dist/js/packages/components/src/integrations/react-hook-form/components/Field/Field.mjs +1 -1
- package/dist/js/packages/components/src/integrations/react-hook-form/components/Form/Form.mjs +4 -1
- package/dist/js/packages/components/src/integrations/react-hook-form/components/Form/Form.mjs.map +1 -1
- package/dist/js/packages/components/src/integrations/react-hook-form/components/FormRootError/FormRootError.mjs +1 -1
- package/dist/js/packages/components/src/integrations/react-hook-form/components/FormSettingsProvider/FormSettingsProvider.mjs.map +1 -1
- package/dist/js/packages/components/src/lib/controller/overlay/OverlayController.mjs +10 -158
- package/dist/js/packages/components/src/lib/controller/overlay/OverlayController.mjs.map +1 -1
- package/dist/js/packages/components/src/lib/controller/overlay/useCloseOverlayConfirmationController.mjs +1 -0
- package/dist/js/packages/components/src/lib/controller/overlay/useCloseOverlayConfirmationController.mjs.map +1 -1
- package/dist/js/packages/components/src/lib/hooks/dom/useVirtualKeyboardVisible.mjs +8 -4
- package/dist/js/packages/components/src/lib/hooks/dom/useVirtualKeyboardVisible.mjs.map +1 -1
- package/dist/js/packages/components/src/views/DatePickerView.mjs +16 -0
- package/dist/js/packages/components/src/views/DatePickerView.mjs.map +1 -0
- package/dist/js/packages/components/src/views/LabelView.mjs +16 -0
- package/dist/js/packages/components/src/views/LabelView.mjs.map +1 -0
- package/dist/js/packages/components/src/views/TimeFieldView.mjs +16 -0
- package/dist/js/packages/components/src/views/TimeFieldView.mjs.map +1 -0
- package/dist/js/packages/components-base/src/index.mjs +5 -2
- package/dist/js/packages/components-base/src/list/filter/ListDateRangeFilter.mjs +1 -0
- package/dist/js/packages/components-base/src/list/filter/ListDateRangeFilter.mjs.map +1 -1
- package/dist/js/packages/components-base/src/list/filter/ListFilter.mjs +4 -1
- package/dist/js/packages/components-base/src/list/filter/ListFilter.mjs.map +1 -1
- package/dist/js/packages/components-base/src/list/filter/dateRange.mjs +37 -13
- package/dist/js/packages/components-base/src/list/filter/dateRange.mjs.map +1 -1
- package/dist/js/packages/components-base/src/list/filter/dateTimeRangeFields.mjs +55 -0
- package/dist/js/packages/components-base/src/list/filter/dateTimeRangeFields.mjs.map +1 -0
- package/dist/js/packages/components-base/src/list/filter/formatDateRange.mjs +27 -0
- package/dist/js/packages/components-base/src/list/filter/formatDateRange.mjs.map +1 -0
- package/dist/js/packages/components-base/src/overlay/OverlayState.mjs +196 -0
- package/dist/js/packages/components-base/src/overlay/OverlayState.mjs.map +1 -0
- package/dist/types/_bundled/flow-components-base/index.d.ts +4 -1
- package/dist/types/_bundled/flow-components-base/list/filter/ListFilter.d.ts +2 -0
- package/dist/types/_bundled/flow-components-base/list/filter/dateRange.d.ts +24 -1
- package/dist/types/_bundled/flow-components-base/list/filter/dateTimeRangeFields.d.ts +34 -0
- package/dist/types/_bundled/flow-components-base/list/filter/formatDateRange.d.ts +7 -0
- package/dist/types/_bundled/flow-components-base/overlay/OverlayState.d.ts +94 -0
- package/dist/types/components/AlertBadge/AlertBadge.d.ts +2 -2
- package/dist/types/components/Badge/Badge.d.ts +2 -2
- package/dist/types/components/CartesianChart/hooks/useTickLabelWidth.d.ts +1 -0
- package/dist/types/components/CodeBlock/CodeBlock.d.ts +1 -1
- package/dist/types/components/DonutChart/DonutChart.d.ts +1 -4
- package/dist/types/components/Link/Link.d.ts +1 -1
- package/dist/types/components/List/components/Header/components/DateTimeRangeFields/DateTimeRangeFields.d.ts +8 -0
- package/dist/types/components/List/components/Items/components/Item/Item.d.ts +2 -0
- package/dist/types/components/List/components/Items/components/Item/hooks/useGridItemProps.d.ts +1 -0
- package/dist/types/components/List/components/ListSummary/ListSummary.d.ts +3 -2
- package/dist/types/components/List/components/Table/components/Row.d.ts +13 -0
- package/dist/types/components/List/hooks/useLatestOnAction.d.ts +7 -0
- package/dist/types/components/List/index.d.ts +2 -0
- package/dist/types/components/List/model/filter/DateRangeFilter.d.ts +15 -8
- package/dist/types/components/List/model/filter/resolveDateRangeFilterValue.d.ts +11 -0
- package/dist/types/components/List/model/filter/types.d.ts +23 -1
- package/dist/types/components/List/model/item/ItemView.d.ts +34 -11
- package/dist/types/components/List/model/table/TableRow.d.ts +14 -0
- package/dist/types/components/List/model/table/types.d.ts +17 -1
- package/dist/types/components/List/typedList.d.ts +1 -0
- package/dist/types/components/Markdown/lib/isExternalHref.d.ts +1 -0
- package/dist/types/components/ProgressBar/ProgressBar.d.ts +1 -4
- package/dist/types/components/Rating/Rating.d.ts +5 -5
- package/dist/types/components/Section/context.d.ts +28 -0
- package/dist/types/components/Table/components/TableCell/TableCell.d.ts +4 -1
- package/dist/types/components/Table/components/TableHeader/context.d.ts +6 -0
- package/dist/types/components/Wrap/Wrap.d.ts +5 -0
- package/dist/types/index/flr-universal.d.ts +1 -1
- package/dist/types/integrations/react-hook-form/components/FormSettingsProvider/FormSettingsProvider.d.ts +7 -1
- package/dist/types/lib/controller/overlay/OverlayController.d.ts +8 -74
- package/dist/types/lib/dev/hydrateServerMarkup.d.ts +2 -0
- package/dist/types/lib/hooks/dom/useVirtualKeyboardVisible.d.ts +4 -1
- package/package.json +12 -12
- package/dist/js/node_modules/.pnpm/@lezer_lr@1.4.10/node_modules/@lezer/lr/dist/index.mjs.map +0 -1
- package/dist/js/packages/components/src/lib/date/transformDateValueToFormattedDate.mjs +0 -10
- package/dist/js/packages/components/src/lib/date/transformDateValueToFormattedDate.mjs.map +0 -1
- package/dist/types/lib/date/transformDateValueToDateTime.d.ts +0 -3
- package/dist/types/lib/date/transformDateValueToFormattedDate.d.ts +0 -2
package/AGENTS.md
CHANGED
|
@@ -333,6 +333,28 @@ if ("action" in props) {
|
|
|
333
333
|
| `*.test.ts(x)` (unit) | Pure logic in `src/lib/` or component utility functions. |
|
|
334
334
|
| `*.test-types.tsx` | Generic/typed public APIs — `expectTypeOf` plus `@ts-expect-error` negative assertions. |
|
|
335
335
|
|
|
336
|
+
A bug fix gets a regression test when it changes behavior this table covers, or
|
|
337
|
+
rendered output the visual suite covers
|
|
338
|
+
(`packages/remote-react-components/src/tests/visual`, see Definition of Done
|
|
339
|
+
item 4 in the
|
|
340
|
+
[root AGENTS.md](https://github.com/mittwald/flow/blob/main/AGENTS.md#definition-of-done--component-work))
|
|
341
|
+
— not by default. Leave out:
|
|
342
|
+
|
|
343
|
+
- **Wiring of a single prop** — "the consumer `className` reaches the root",
|
|
344
|
+
"`aria-label` is forwarded". A test for one prop is arbitrary: every other
|
|
345
|
+
prop would need the same. A whole class of wiring bugs (`className` merge
|
|
346
|
+
order, a props spread) belongs in a lint rule or a shared contract helper like
|
|
347
|
+
`testFormFieldContract`.
|
|
348
|
+
- **A spy on a function prop the component consumes** — `sortBy`, `filterBy`, a
|
|
349
|
+
formatter. Assert the result it produces, not that it ran. `on*` event props
|
|
350
|
+
are the exception: the call is what the consumer observes, so a spy is the
|
|
351
|
+
assertion.
|
|
352
|
+
- **Tests that pass without the fix.** Revert the fix and watch the test fail
|
|
353
|
+
before committing it. If it cannot fail, it guards nothing; say in the PR how
|
|
354
|
+
you verified the fix instead. The `optimizeDeps` entry under
|
|
355
|
+
[Common failures](#common-failures) below shows one way a test passes in both
|
|
356
|
+
directions.
|
|
357
|
+
|
|
336
358
|
Run: `pnpm nx test:unit components`,
|
|
337
359
|
`pnpm nx test:browser components --browser.name=webkit`. The browser targets
|
|
338
360
|
install the Playwright browsers for you **locally**; `pnpm test:browser:prepare`
|
|
@@ -404,75 +426,15 @@ Four traps cost time in every new browser test:
|
|
|
404
426
|
technology lands on (the input or the group), spread after `rest`: its
|
|
405
427
|
`aria-describedby` references the error only while one is rendered and already
|
|
406
428
|
contains the consumer's own ids. See
|
|
407
|
-
[
|
|
429
|
+
[FORM_FIELDS.md](https://github.com/mittwald/flow/blob/main/packages/components/FORM_FIELDS.md).
|
|
408
430
|
|
|
409
431
|
## Building a form field
|
|
410
432
|
|
|
411
433
|
A form field is any component a user enters a value with — anything that calls
|
|
412
|
-
`useFieldComponent`.
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
| Aspect | Requirement |
|
|
417
|
-
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
418
|
-
| `isDisabled` | Control is not operable (`disabled` or `aria-disabled`), disabled styling via the `formControl` mixin, `Label` disabled. Every inner button too. |
|
|
419
|
-
| `isReadOnly` | Value cannot change, control still focusable and submitted. Native `readonly` / react-aria's `isReadOnly` where it exists, otherwise `aria-readonly` — never by disabling the control. Inner buttons that change the value off. |
|
|
420
|
-
| `isRequired` | `required` or `aria-required` on the control; `Label` drops its "optional" marker (`useFieldComponent` does that). |
|
|
421
|
-
| `isInvalid` | `aria-invalid` on the control, invalid styling, `FieldError` rendered and linked. |
|
|
422
|
-
| `validationBehavior` | `"native"` blocks form submission on a constraint violation, `"aria"` does not. react-hook-form's `Field` passes `"aria"`. |
|
|
423
|
-
| `Label` / `FieldDescription` | Children slots via `useFieldComponent`; `Label` names the control. `controlProps` (with `aria-describedby`) land on the **focusable control** (or the group of a grouped control), not on a wrapper `div`. |
|
|
424
|
-
| `name` / `form` | The value is in the `FormData` of the surrounding (or `form`-referenced) form. A custom control renders a hidden input. |
|
|
425
|
-
| `defaultValue` / `value` | Both work; `onChange` reports user changes with the field's own value type (a `number` field reports a `number`). |
|
|
426
|
-
| `ref` | Points at the focusable control — react-hook-form focuses it on a validation error. |
|
|
427
|
-
| `autoFocus`, `onFocus`/`onBlur` | Reach the focusable control. react-hook-form marks a field touched via `onBlur`. |
|
|
428
|
-
|
|
429
|
-
An exception needs a reason that holds for the field's nature (a `Slider` always
|
|
430
|
-
has a value, so it has no required state) — not "not implemented yet".
|
|
431
|
-
|
|
432
|
-
Checklist beyond the component itself:
|
|
433
|
-
|
|
434
|
-
- **Contract test.** Call `testFormFieldContract`
|
|
435
|
-
(`src/tests/formFieldContract/`) in the field's `*.browser.test.tsx`. The
|
|
436
|
-
adapter renders the field, names its control, two values (the first one
|
|
437
|
-
submits an entry, the two submit different entries), their `FormData` entries
|
|
438
|
-
and a user interaction that changes the value. The interaction passes `force`
|
|
439
|
-
on, so the test can also try it on a disabled or read-only field.
|
|
440
|
-
`getValueButtons` narrows the inner buttons a read-only field turns off; it
|
|
441
|
-
defaults to all. Justified exceptions go in `exceptions` with their reason. An
|
|
442
|
-
excepted aspect must fail on one of its own expectations — once it passes, or
|
|
443
|
-
fails on a lookup or a timeout instead, the run fails:
|
|
444
|
-
|
|
445
|
-
```tsx
|
|
446
|
-
testFormFieldContract("TextField", {
|
|
447
|
-
render: (props) => <TextField {...props} />,
|
|
448
|
-
getControl: (screen) => screen.getByRole("textbox"),
|
|
449
|
-
values: ["foo", "bar"],
|
|
450
|
-
toFormValue: (value) => value,
|
|
451
|
-
changeValue: async (screen, { force }) => {
|
|
452
|
-
await userEvent.fill(screen.getByRole("textbox"), "bar", { force });
|
|
453
|
-
},
|
|
454
|
-
});
|
|
455
|
-
```
|
|
456
|
-
|
|
457
|
-
It checks behavior and ARIA, not looks — the disabled, read-only and invalid
|
|
458
|
-
states also get scenarios in the field's visual test
|
|
459
|
-
(`packages/remote-react-components/src/tests/visual`).
|
|
460
|
-
|
|
461
|
-
- **react-hook-form.** Register the field in the props context of
|
|
462
|
-
`src/integrations/react-hook-form/components/Field/Field.tsx`. `Field` passes
|
|
463
|
-
`name`, `value` and `defaultValue` together, `onChange`, `onBlur`, `ref`,
|
|
464
|
-
`form`, `isRequired`, `isReadOnly`, `isInvalid` and `validationBehavior` —
|
|
465
|
-
spread the rest props through instead of destructuring a fixed list, or they
|
|
466
|
-
are dropped silently. A field whose value prop is not `value` gets it mapped
|
|
467
|
-
there (`selectedKey` for `ComboBox`, `isSelected` for `Checkbox`). `Field`
|
|
468
|
-
does not pass `isDisabled` yet (#3368).
|
|
469
|
-
- **Remote.** A field that mirrors its value with `useControlledHostValueProps`
|
|
470
|
-
passes the type's empty value (see the controlled-from-the-first-render
|
|
471
|
-
convention below). A text input among them also needs its `flr-*` tag in
|
|
472
|
-
`controlledComponentNames`
|
|
473
|
-
(`packages/remote-react-components/src/lib/createRemoteComponent.ts`), or it
|
|
474
|
-
drops characters under fast typing
|
|
475
|
-
([docs/remote-ui.md](https://github.com/mittwald/flow/blob/main/docs/remote-ui.md)).
|
|
434
|
+
`useFieldComponent`. Building or changing one → read
|
|
435
|
+
[FORM_FIELDS.md](https://github.com/mittwald/flow/blob/main/packages/components/FORM_FIELDS.md):
|
|
436
|
+
the contract it supports end to end, `testFormFieldContract`, and the
|
|
437
|
+
react-hook-form and remote wiring.
|
|
476
438
|
|
|
477
439
|
## Every remote binding reads this package
|
|
478
440
|
|
|
@@ -513,29 +475,12 @@ to make a rule stick.
|
|
|
513
475
|
|
|
514
476
|
## Public API surfaces
|
|
515
477
|
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
| `./nextjs`, `./react-hook-form`, `./mittwald-password-tools-js` | Integrations (`src/integrations/`): wrappers around third-party dependencies that not every consumer should pay for — they get their own export entry instead of entering the core surface. |
|
|
523
|
-
| `./all.css`, `./all-layered.css` | Bundled stylesheet, plain and `@layer`-wrapped. |
|
|
524
|
-
| `./component-index` | Generated consumer-facing index: every public component with its status and its own props (`dev/component-index/`). What the docs site's prop tables read, and the one prop dataset a consumer's agent should use. |
|
|
525
|
-
| `./doc-properties` | `react-docgen-typescript` output in its raw `ComponentDoc[]` shape, filtered to the props a consumer can act on. Prefer `./component-index`. The unfiltered dump the generators above read is `.cache/doc-properties.json`, which is not published. |
|
|
526
|
-
|
|
527
|
-
**Adding any new export entry?** Add the subpath to `keptSubpaths` in
|
|
528
|
-
`packages/codemods/src/migrations/imports-to-package-root/transform.ts`. That
|
|
529
|
-
codemod collapses subpath imports onto the package root with a catch-all `else`,
|
|
530
|
-
so a subpath that is not listed gets flattened onto a root that does not export
|
|
531
|
-
its names. The guard beside the transform fails the codemods unit tests when you
|
|
532
|
-
forget.
|
|
533
|
-
|
|
534
|
-
**Adding a new integration export entry?** Also register it in the component
|
|
535
|
-
status registry so it is covered: add the entry to `STATUS_EXPORT_ENTRIES`
|
|
536
|
-
(`dev/status-registry/exportEntries.ts`) — the `FlowExportEntry` union and the
|
|
537
|
-
registry regenerate from it. A generation-time guard fails if an entry resolves
|
|
538
|
-
to zero components.
|
|
478
|
+
Adding or changing an export entry (`.`, `./internal`, `./flr-universal`, an
|
|
479
|
+
integration, a stylesheet or data entry) → read
|
|
480
|
+
[EXPORTS.md](https://github.com/mittwald/flow/blob/main/packages/components/EXPORTS.md):
|
|
481
|
+
what each entry holds and the registries a new one has to join.
|
|
482
|
+
|
|
483
|
+
## Prop JSDoc
|
|
539
484
|
|
|
540
485
|
Prop JSDoc feeds the generated `doc-properties.json` and the docs site: write
|
|
541
486
|
doc comments on public props, use `@default` for defaults and `@internal` for
|
|
@@ -638,3 +583,102 @@ Easy-to-miss conventions not spelled out above. Full details and examples in
|
|
|
638
583
|
- **Universal exports are deliberately explicit** — remote-safe values and their
|
|
639
584
|
types are curated in `flr-universal.ts` independently of the main public
|
|
640
585
|
surface; adding to `public.ts` does not add them there.
|
|
586
|
+
|
|
587
|
+
## Common failures
|
|
588
|
+
|
|
589
|
+
Symptom → cause → fix for authoring components. Repo-wide ones are in the
|
|
590
|
+
[root AGENTS.md](https://github.com/mittwald/flow/blob/main/AGENTS.md#common-failures).
|
|
591
|
+
|
|
592
|
+
- **Symptom:** `test:compile` fails on a new component — the
|
|
593
|
+
`flowComponent("X", …)` name/props type isn't assignable
|
|
594
|
+
|
|
595
|
+
**Cause:** `flowComponent` names are typed as `keyof` a hand-maintained props
|
|
596
|
+
registry
|
|
597
|
+
|
|
598
|
+
**Fix:** Register the props type in
|
|
599
|
+
`packages/components/src/components/propTypes/index.ts` (see
|
|
600
|
+
[The flowComponent factory](#the-flowcomponent-factory))
|
|
601
|
+
|
|
602
|
+
- **Symptom:** `test:compile` fails in unrelated shared code with
|
|
603
|
+
**`Property 'children' does not exist on type 'Partial<XProps>'`** right after
|
|
604
|
+
you registered a new component
|
|
605
|
+
|
|
606
|
+
**Cause:** `dynamic()` and other shared helpers are typed over the **union of
|
|
607
|
+
every** registered props type, so code reading `p.children` breaks as soon as
|
|
608
|
+
one registered component has no `children` (`Field.tsx`,
|
|
609
|
+
`flowComponent.browser.test.tsx`)
|
|
610
|
+
|
|
611
|
+
**Fix:** Declare `children?: never` on the new props type. It keeps the union
|
|
612
|
+
accessible and documents that the component takes no children — do **not** add
|
|
613
|
+
a real `children` slot you then ignore
|
|
614
|
+
|
|
615
|
+
- **Symptom:** A `ReactElement`-valued prop renders fine in the visual suite's
|
|
616
|
+
**Remote** environment but kills a real remote connection with
|
|
617
|
+
**`DataCloneError: Symbol(react.transitional.element) could not be cloned`**
|
|
618
|
+
(the host then shows `Remote rendering failed: Timeout reached`)
|
|
619
|
+
|
|
620
|
+
**Cause:** The prop was generated as a **remote property**, and properties
|
|
621
|
+
travel through `postMessage`/structured clone, which cannot carry a React
|
|
622
|
+
element. `remote-dom-react` turns an element-valued prop into a slotted child
|
|
623
|
+
_only_ when the element declares it as a slot
|
|
624
|
+
(`Element.remoteSlotDefinitions.has(prop)`), and the generator declares a slot
|
|
625
|
+
only for props typed exactly `ReactNode` or listed in `@flr-slot-props`
|
|
626
|
+
(`dev/remote-components-generator/lib/propClassifiers.ts`)
|
|
627
|
+
|
|
628
|
+
**Fix:** Add `@flr-slot-props <propA>, <propB>` to the component's JSDoc and
|
|
629
|
+
regenerate — the prop then arrives as a slotted child and any React subtree
|
|
630
|
+
works, including a raw `<svg>` or a Tabler icon. The visual suite's **Remote**
|
|
631
|
+
environment does serialize (a MessageChannel through
|
|
632
|
+
`FlowThreadSerialization`), but `FlowThreadSerialization` drops React values
|
|
633
|
+
to `null` with a `console.error` before `postMessage` ever sees them — so the
|
|
634
|
+
suite renders a component missing the prop, not the `DataCloneError`. Read the
|
|
635
|
+
console, or verify in `apps/remote-dom-demo` over the iframe connection
|
|
636
|
+
|
|
637
|
+
- **Symptom:** A function prop works locally but its result is garbage remotely
|
|
638
|
+
— a formatter renders `[object Promise]`, a predicate is always truthy
|
|
639
|
+
|
|
640
|
+
**Cause:** The prop is a **remote property**, and
|
|
641
|
+
`FlowThreadSerialization.isSerializableByBase` accepts any function, so
|
|
642
|
+
`@quilted/threads` sends it as a proxy. Calling a proxy is a round trip, so
|
|
643
|
+
the host gets a **Promise**, never the value. Only `on*` events are safe by
|
|
644
|
+
construction — they are fire-and-forget
|
|
645
|
+
|
|
646
|
+
**Fix:** Either type the prop's return as `Promise<T> | T` and have the host
|
|
647
|
+
`await` it (`ChartTooltip`'s formatters do), or drop it from the remote
|
|
648
|
+
surface with `@flr-ignore-props` (`XAxis`/`YAxis` `tickFormatter` do) and
|
|
649
|
+
regenerate. `checkSerializableProps` now fails generation on new ones; the
|
|
650
|
+
pre-existing set is listed in `acknowledgedValueReturningProps`
|
|
651
|
+
|
|
652
|
+
- **Symptom:** A `components` browser test keeps **passing** after you change
|
|
653
|
+
`packages/icons` — including a test written to fail on exactly that change.
|
|
654
|
+
The build is not the problem: `pnpm nx build icons` runs `tsc` and `dist`
|
|
655
|
+
holds the new code
|
|
656
|
+
|
|
657
|
+
**Cause:** `packages/components/vite.config.ts` lists `@mittwald/flow-icons`
|
|
658
|
+
in `optimizeDeps.include`, so vite pre-bundles it. The prebundle is keyed on
|
|
659
|
+
the lockfile and the config, not on the contents of a linked workspace
|
|
660
|
+
package's `dist` — so a rebuilt `dist` does not invalidate it and the test
|
|
661
|
+
keeps loading the old bundle
|
|
662
|
+
|
|
663
|
+
**Fix:** Delete `packages/components/node_modules/.vite*` after rebuilding.
|
|
664
|
+
And confirm a new regression test actually fails without its fix: this one
|
|
665
|
+
passed in both directions, which is the only symptom you get
|
|
666
|
+
|
|
667
|
+
- **Symptom:** `stylelint` fails with **`flow/no-unknown-global-flow-class`** —
|
|
668
|
+
a `:global(.flow--…)` name resolves to nothing
|
|
669
|
+
|
|
670
|
+
**Cause:** The class-name generator
|
|
671
|
+
(`packages/components/dev/vite/cssModuleClassNameGenerator.ts`) **drops the
|
|
672
|
+
suffix when it equals the component name**, so `ColumnLayout`'s
|
|
673
|
+
`.columnLayout` compiles to `flow--column-layout`, not
|
|
674
|
+
`flow--column-layout--column-layout`. The names cannot be derived by hand, and
|
|
675
|
+
a component that moves leaves every reference to it dead
|
|
676
|
+
|
|
677
|
+
**Fix:** Copy the name from the component's committed `*.module.d.scss.ts` —
|
|
678
|
+
that is what the rule checks against — or take the rule's "Did you mean"
|
|
679
|
+
suggestion. Just added the class? Regenerate the stubs first:
|
|
680
|
+
`pnpm nx build:scss-types components`. The same applies to ESLint's
|
|
681
|
+
`flow/no-unknown-flow-class`, which checks hardcoded `flow--…` strings in
|
|
682
|
+
TS/TSX (#3095). Before the rule (#3091) this class of bug failed completely
|
|
683
|
+
silently: no build error, no console warning, and the docs site and Storybook
|
|
684
|
+
kept rendering
|
package/USAGE.md
CHANGED
|
@@ -32,8 +32,8 @@ Start with these:
|
|
|
32
32
|
`/raw/foundations/structure/spacing.md` — how layout and spacing are meant to
|
|
33
33
|
be composed
|
|
34
34
|
- the templates — see [Start from a template](#start-from-a-template)
|
|
35
|
-
- `/raw/foundations/content-guidelines/
|
|
36
|
-
|
|
35
|
+
- `/raw/foundations/content-guidelines/fehlermeldungen.md` — where errors appear
|
|
36
|
+
and how to word them
|
|
37
37
|
- `/raw/foundations/content-guidelines/sprach-guide.md` — UI wording
|
|
38
38
|
- `/raw/get-started/versioning.md` — what you may depend on
|
|
39
39
|
|
|
@@ -252,6 +252,11 @@ Also:
|
|
|
252
252
|
- Do not hand-roll feedback for async work — `Action` wraps a button and renders
|
|
253
253
|
its pending, success and failure states; `List` covers loading and empty
|
|
254
254
|
states; `Skeleton` and `SkeletonText` are the placeholders.
|
|
255
|
+
- Keep `List` items cheap: give `List.Item` and `List.TableRow`
|
|
256
|
+
`renderDependencies` (every value the render function reads besides the item),
|
|
257
|
+
and keep modals and data loading at list level instead of per item — every
|
|
258
|
+
item pays for what it contains (`/raw/components/list/list.md`, section
|
|
259
|
+
"Performance").
|
|
255
260
|
- Write UI text in German following the Sprach-Guide; component-internal text is
|
|
256
261
|
already translated (de-DE, en-US) via `TranslationProvider`.
|
|
257
262
|
|