@flikk/ui 1.0.0-beta.27 → 1.0.0-beta.29
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/bg/1.webp +0 -0
- package/dist/bg/10.webp +0 -0
- package/dist/bg/11.webp +0 -0
- package/dist/bg/12.webp +0 -0
- package/dist/bg/13.webp +0 -0
- package/dist/bg/14.webp +0 -0
- package/dist/bg/15.webp +0 -0
- package/dist/bg/16.webp +0 -0
- package/dist/bg/17.webp +0 -0
- package/dist/bg/18.webp +0 -0
- package/dist/bg/19.webp +0 -0
- package/dist/bg/2.webp +0 -0
- package/dist/bg/20.webp +0 -0
- package/dist/bg/21.webp +0 -0
- package/dist/bg/22.webp +0 -0
- package/dist/bg/3.webp +0 -0
- package/dist/bg/4.webp +0 -0
- package/dist/bg/5.webp +0 -0
- package/dist/bg/6.webp +0 -0
- package/dist/bg/7.webp +0 -0
- package/dist/bg/8.webp +0 -0
- package/dist/bg/9.webp +0 -0
- package/dist/components/ai/CodeBlock/CodeBlock.theme.js +1 -1
- package/dist/components/ai/PromptInput/PromptInput.js +7 -143
- package/dist/components/ai/PromptInput/VoiceRecorder.js +0 -88
- package/dist/components/ai/TokenCounter/TokenCounter.theme.js +1 -1
- package/dist/components/canvas/Background.d.ts +19 -0
- package/dist/components/canvas/Background.js +23 -0
- package/dist/components/canvas/BaseNode.d.ts +15 -0
- package/dist/components/canvas/BaseNode.js +20 -0
- package/dist/components/canvas/CanvasToolbar.d.ts +34 -0
- package/dist/components/canvas/CanvasToolbar.js +34 -0
- package/dist/components/canvas/Edge.d.ts +35 -0
- package/dist/components/canvas/Edge.js +97 -0
- package/dist/components/canvas/EdgeLayer.d.ts +18 -0
- package/dist/components/canvas/EdgeLayer.js +111 -0
- package/dist/components/canvas/Handle.d.ts +11 -0
- package/dist/components/canvas/Handle.js +63 -0
- package/dist/components/canvas/MiniMap.d.ts +22 -0
- package/dist/components/canvas/MiniMap.js +105 -0
- package/dist/components/canvas/NodeCanvas.d.ts +10 -0
- package/dist/components/canvas/NodeCanvas.js +477 -0
- package/dist/components/canvas/NodeCanvas.theme.d.ts +7 -0
- package/dist/components/canvas/NodeCanvas.theme.js +9 -0
- package/dist/components/canvas/NodeCanvas.types.d.ts +187 -0
- package/dist/components/canvas/NodeControls.d.ts +25 -0
- package/dist/components/canvas/NodeControls.js +40 -0
- package/dist/components/canvas/NodeRenderer.d.ts +19 -0
- package/dist/components/canvas/NodeRenderer.js +117 -0
- package/dist/components/canvas/changes.d.ts +11 -0
- package/dist/components/canvas/changes.js +76 -0
- package/dist/components/canvas/context/CanvasContext.d.ts +32 -0
- package/dist/components/canvas/context/CanvasContext.js +14 -0
- package/dist/components/canvas/context/ConnectionContext.d.ts +33 -0
- package/dist/components/canvas/context/ConnectionContext.js +13 -0
- package/dist/components/canvas/context/HandleRegistry.d.ts +24 -0
- package/dist/components/canvas/context/HandleRegistry.js +15 -0
- package/dist/components/canvas/context/InteractionContext.d.ts +18 -0
- package/dist/components/canvas/context/InteractionContext.js +14 -0
- package/dist/components/canvas/context/NodeIdContext.d.ts +3 -0
- package/dist/components/canvas/context/NodeIdContext.js +15 -0
- package/dist/components/canvas/hooks/useConnection.d.ts +17 -0
- package/dist/components/canvas/hooks/useConnection.js +29 -0
- package/dist/components/canvas/hooks/useMarquee.d.ts +25 -0
- package/dist/components/canvas/hooks/useMarquee.js +91 -0
- package/dist/components/canvas/hooks/useNodeDrag.d.ts +23 -0
- package/dist/components/canvas/hooks/useNodeDrag.js +110 -0
- package/dist/components/canvas/hooks/usePanZoom.d.ts +30 -0
- package/dist/components/canvas/hooks/usePanZoom.js +189 -0
- package/dist/components/canvas/hooks/useViewport.d.ts +21 -0
- package/dist/components/canvas/hooks/useViewport.js +35 -0
- package/dist/components/canvas/index.d.ts +14 -0
- package/dist/components/canvas/index.js +12 -0
- package/dist/components/canvas/layout.d.ts +22 -0
- package/dist/components/canvas/layout.js +67 -0
- package/dist/components/canvas/utils.d.ts +4 -0
- package/dist/components/canvas/utils.js +16 -0
- package/dist/components/charts/AreaChart/AreaChart.js +136 -101
- package/dist/components/charts/AreaChart/AreaChart.types.d.ts +5 -5
- package/dist/components/charts/AreaChart/AreaChart.types.js +1 -0
- package/dist/components/charts/BarChart/BarChart.js +207 -143
- package/dist/components/charts/BarChart/BarChart.types.d.ts +4 -4
- package/dist/components/charts/BarChart/BarChart.types.js +1 -0
- package/dist/components/charts/ComboChart/ComboChart.types.d.ts +2 -2
- package/dist/components/charts/LineChart/LineChart.js +88 -72
- package/dist/components/charts/LineChart/LineChart.types.d.ts +3 -3
- package/dist/components/charts/RadarChart/RadarChart.js +1 -1
- package/dist/components/charts/RadarChart/RadarChart.theme.js +5 -2
- package/dist/components/charts/ScatterPlot/ScatterPlot.js +62 -72
- package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +10 -1
- package/dist/components/charts/ScatterPlot/ScatterPlot.types.d.ts +3 -9
- package/dist/components/charts/StackedBarChart/StackedBarChart.js +33 -33
- package/dist/components/charts/StackedBarChart/StackedBarChart.types.d.ts +2 -2
- package/dist/components/charts/hooks/index.d.ts +2 -0
- package/dist/components/charts/hooks/useChartDimensions.d.ts +29 -0
- package/dist/components/charts/hooks/useChartDimensions.js +42 -0
- package/dist/components/charts/shared/ChartTooltip/ChartTooltip.theme.js +1 -1
- package/dist/components/charts/types/chart.types.d.ts +11 -2
- package/dist/components/charts/types/chart.types.js +10 -3
- package/dist/components/core/Avatar/Avatar.js +5 -1
- package/dist/components/core/AvatarGroup/AvatarGroup.js +5 -1
- package/dist/components/core/AvatarGroup/AvatarGroup.theme.js +4 -2
- package/dist/components/core/Badge/Badge.js +1 -1
- package/dist/components/core/Badge/Badge.theme.js +16 -15
- package/dist/components/core/Button/Button.js +1 -1
- package/dist/components/core/Button/Button.theme.js +2 -2
- package/dist/components/core/Calendar/Calendar.theme.js +1 -1
- package/dist/components/core/Card/Card.js +7 -3
- package/dist/components/core/Card/Card.theme.js +3 -3
- package/dist/components/core/Card/Card.types.d.ts +27 -2
- package/dist/components/core/CommandPalette/CommandPalette.theme.js +2 -2
- package/dist/components/core/ContextMenu/ContextMenu.theme.js +2 -2
- package/dist/components/core/ContextMenu/ContextMenuItem.js +1 -1
- package/dist/components/core/ContextMenu/ContextMenuSubTrigger.js +1 -1
- package/dist/components/core/Dropdown/Dropdown.theme.js +3 -3
- package/dist/components/core/Dropdown/DropdownMenu.js +57 -29
- package/dist/components/core/HeroCard/HeroCard.d.ts +5 -0
- package/dist/components/core/HeroCard/HeroCard.js +99 -0
- package/dist/components/core/HeroCard/HeroCard.theme.d.ts +3 -0
- package/dist/components/core/HeroCard/HeroCard.theme.js +8 -0
- package/dist/components/core/HeroCard/HeroCard.types.d.ts +70 -0
- package/dist/components/core/HeroCard/index.d.ts +4 -0
- package/dist/components/core/Kbd/Kbd.theme.js +1 -1
- package/dist/components/core/Modal/Modal.d.ts +1 -1
- package/dist/components/core/Modal/Modal.js +2 -7
- package/dist/components/core/Modal/Modal.theme.js +4 -8
- package/dist/components/core/Modal/Modal.types.d.ts +0 -10
- package/dist/components/core/Modal/index.d.ts +1 -1
- package/dist/components/core/ModalStack/ModalStack.d.ts +1 -1
- package/dist/components/core/ModalStack/ModalStack.types.d.ts +1 -2
- package/dist/components/core/ModalStack/ModalStackModal.d.ts +1 -1
- package/dist/components/core/ModalStack/ModalStackModal.js +2 -7
- package/dist/components/core/PageHeading/PageHeading.theme.js +2 -2
- package/dist/components/core/Popover/Popover.theme.js +1 -1
- package/dist/components/core/ScrollArea/ScrollArea.js +242 -4
- package/dist/components/core/ScrollArea/ScrollArea.types.d.ts +12 -1
- package/dist/components/core/ScrollArea/smooth/SmoothScrollEngine.d.ts +4 -0
- package/dist/components/core/ScrollArea/smooth/SmoothScrollEngine.js +23 -0
- package/dist/components/core/ScrollArea/smooth/useSmoothScroll.js +4 -0
- package/dist/components/core/ScrollArea/smooth/useSmoothScroll.types.d.ts +5 -0
- package/dist/components/core/Segmented/Segmented.theme.js +2 -2
- package/dist/components/core/Tooltip/Tooltip.theme.js +1 -1
- package/dist/components/core/index.d.ts +1 -0
- package/dist/components/core/index.js +2 -0
- package/dist/components/data-display/DescriptionList/DescriptionList.js +23 -7
- package/dist/components/data-display/DescriptionList/DescriptionList.theme.js +10 -3
- package/dist/components/data-display/DescriptionList/DescriptionList.types.d.ts +49 -10
- package/dist/components/data-display/DescriptionList/index.d.ts +1 -1
- package/dist/components/data-display/Feed/Feed.js +28 -5
- package/dist/components/data-display/Feed/Feed.theme.js +1 -1
- package/dist/components/data-display/Feed/Feed.types.d.ts +32 -1
- package/dist/components/data-display/Feed/index.d.ts +1 -1
- package/dist/components/data-display/Metric/Metric.js +8 -8
- package/dist/components/data-display/Metric/Metric.theme.d.ts +3 -2
- package/dist/components/data-display/Metric/Metric.theme.js +50 -68
- package/dist/components/data-display/Metric/Metric.types.d.ts +19 -21
- package/dist/components/data-display/Table/Table.js +2 -2
- package/dist/components/data-display/Table/Table.theme.js +24 -4
- package/dist/components/data-display/Table/Table.types.d.ts +8 -0
- package/dist/components/data-display/Table/TableBody.js +2 -2
- package/dist/components/data-display/Table/TableCell.js +1 -1
- package/dist/components/data-display/Table/TableRow.d.ts +1 -1
- package/dist/components/data-display/Table/TableRow.js +9 -2
- package/dist/components/data-display/Timeline/Timeline.js +27 -5
- package/dist/components/data-display/Timeline/Timeline.theme.d.ts +10 -2
- package/dist/components/data-display/Timeline/Timeline.theme.js +14 -8
- package/dist/components/data-display/Timeline/Timeline.types.d.ts +48 -16
- package/dist/components/data-display/Timeline/Timeline.utils.d.ts +6 -0
- package/dist/components/data-display/Timeline/Timeline.utils.js +11 -0
- package/dist/components/data-display/Timeline/TimelineItem.js +13 -20
- package/dist/components/data-display/Timeline/TimelineMarker.js +10 -8
- package/dist/components/data-display/Timeline/index.d.ts +2 -2
- package/dist/components/effects/3d/index.d.ts +0 -2
- package/dist/components/effects/3d/index.js +0 -1
- package/dist/components/effects/DotPattern/DotPattern.js +1 -1
- package/dist/components/effects/Overlay/Overlay.theme.js +1 -2
- package/dist/components/effects/Preloader/Preloader.animations.d.ts +23 -0
- package/dist/components/effects/Preloader/Preloader.animations.js +150 -0
- package/dist/components/effects/Preloader/Preloader.d.ts +3 -0
- package/dist/components/effects/Preloader/Preloader.js +119 -0
- package/dist/components/effects/Preloader/Preloader.types.d.ts +63 -0
- package/dist/components/effects/Preloader/index.d.ts +2 -0
- package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.js +25 -14
- package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.types.d.ts +2 -0
- package/dist/components/effects/TiltCard/TiltCard.d.ts +12 -0
- package/dist/components/effects/TiltCard/TiltCard.glow.d.ts +28 -0
- package/dist/components/effects/TiltCard/TiltCard.glow.js +114 -0
- package/dist/components/effects/TiltCard/TiltCard.js +177 -0
- package/dist/components/effects/{SpotlightBorder/SpotlightBorder.shaders.d.ts → TiltCard/TiltCard.shaders.d.ts} +1 -1
- package/dist/components/effects/{SpotlightBorder/SpotlightBorder.shaders.js → TiltCard/TiltCard.shaders.js} +1 -1
- package/dist/components/effects/TiltCard/TiltCard.types.d.ts +88 -0
- package/dist/components/effects/TiltCard/index.d.ts +2 -0
- package/dist/components/effects/index.d.ts +4 -12
- package/dist/components/effects/index.js +2 -6
- package/dist/components/forms/Checkbox/Checkbox.js +7 -1
- package/dist/components/forms/DatePicker/DatePicker.theme.js +2 -2
- package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +1 -1
- package/dist/components/forms/FileUpload/FileUpload.js +1 -89
- package/dist/components/forms/FormLabel/FormLabel.theme.js +1 -1
- package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +2 -2
- package/dist/components/forms/Slider/Slider.theme.js +1 -1
- package/dist/components/forms/Switch/Switch.js +27 -15
- package/dist/components/forms/Switch/Switch.theme.d.ts +36 -6
- package/dist/components/forms/Switch/Switch.theme.js +33 -4
- package/dist/components/forms/Switch/Switch.types.d.ts +12 -2
- package/dist/components/forms/TimePicker/TimePicker.theme.js +1 -2
- package/dist/components/forms/TimePicker/TimePickerContent.js +1 -90
- package/dist/components/forms/forms.theme.js +1 -1
- package/dist/components/forms/index.d.ts +0 -4
- package/dist/components/forms/index.js +0 -92
- package/dist/components/generative/GenerativeView.d.ts +21 -0
- package/dist/components/generative/GenerativeView.js +116 -0
- package/dist/components/generative/actions.d.ts +26 -0
- package/dist/components/generative/actions.js +51 -0
- package/dist/components/generative/index.d.ts +11 -0
- package/dist/components/generative/index.js +9 -0
- package/dist/components/generative/registry.d.ts +43 -0
- package/dist/components/generative/registry.js +114 -0
- package/dist/components/generative/resolvers.d.ts +35 -0
- package/dist/components/generative/resolvers.js +93 -0
- package/dist/components/generative/schema.generated.d.ts +2 -0
- package/dist/components/generative/schema.generated.js +1639 -0
- package/dist/components/generative/schemaTypes.d.ts +30 -0
- package/dist/components/generative/streaming.d.ts +39 -0
- package/dist/components/generative/streaming.js +283 -0
- package/dist/components/generative/tools.d.ts +21 -0
- package/dist/components/generative/tools.js +54 -0
- package/dist/components/generative/types.d.ts +41 -0
- package/dist/components/generative/useGenerativeStream.d.ts +37 -0
- package/dist/components/generative/useGenerativeStream.js +36 -0
- package/dist/components/generative/validate.d.ts +24 -0
- package/dist/components/generative/validate.js +259 -0
- package/dist/components/layout/AppShell/AppShell.theme.js +2 -2
- package/dist/components/layout/FormLayout/FormLayout.js +1 -90
- package/dist/components/layout/Grid/Grid.d.ts +3 -0
- package/dist/components/layout/Grid/Grid.js +50 -0
- package/dist/components/layout/Grid/Grid.theme.d.ts +2 -0
- package/dist/components/layout/Grid/Grid.theme.js +35 -0
- package/dist/components/layout/Grid/Grid.types.d.ts +57 -0
- package/dist/components/layout/Grid/index.d.ts +3 -0
- package/dist/components/layout/Section/Section.d.ts +3 -0
- package/dist/components/layout/Section/Section.js +18 -0
- package/dist/components/layout/Section/Section.theme.d.ts +2 -0
- package/dist/components/layout/Section/Section.theme.js +10 -0
- package/dist/components/layout/Section/Section.types.d.ts +34 -0
- package/dist/components/layout/Section/index.d.ts +3 -0
- package/dist/components/layout/Stack/Stack.d.ts +3 -0
- package/dist/components/layout/Stack/Stack.js +19 -0
- package/dist/components/layout/Stack/Stack.theme.d.ts +2 -0
- package/dist/components/layout/Stack/Stack.theme.js +10 -0
- package/dist/components/layout/Stack/Stack.types.d.ts +39 -0
- package/dist/components/layout/Stack/index.d.ts +3 -0
- package/dist/components/layout/index.d.ts +3 -0
- package/dist/components/layout/index.js +6 -0
- package/dist/generative.schema.json +1637 -0
- package/dist/index.js +180 -180
- package/dist/registry.json +648 -464
- package/dist/styles.css +1 -1
- package/dist/tools.json +1731 -0
- package/package.json +17 -4
- package/src/global.scss +53 -101
- package/src/styles/theme.css +687 -493
- package/dist/bg/1.jpg +0 -0
- package/dist/bg/10.jpg +0 -0
- package/dist/bg/11.jpg +0 -0
- package/dist/bg/14.jpg +0 -0
- package/dist/bg/15.jpg +0 -0
- package/dist/bg/16.jpg +0 -0
- package/dist/bg/17.jpg +0 -0
- package/dist/bg/18.jpg +0 -0
- package/dist/bg/19.jpg +0 -0
- package/dist/bg/2.jpg +0 -0
- package/dist/bg/20.jpg +0 -0
- package/dist/bg/21.jpg +0 -0
- package/dist/bg/22.jpg +0 -0
- package/dist/bg/23.jpg +0 -0
- package/dist/bg/24.jpg +0 -0
- package/dist/bg/3.jpg +0 -0
- package/dist/bg/4.jpg +0 -0
- package/dist/bg/5.jpg +0 -0
- package/dist/bg/6.jpg +0 -0
- package/dist/bg/7.jpg +0 -0
- package/dist/bg/8.jpg +0 -0
- package/dist/bg/9.jpg +0 -0
- package/dist/components/effects/MorphingText/MorphingText.d.ts +0 -17
- package/dist/components/effects/MorphingText/MorphingText.js +0 -125
- package/dist/components/effects/MorphingText/MorphingText.types.d.ts +0 -18
- package/dist/components/effects/MorphingText/index.d.ts +0 -2
- package/dist/components/effects/PageTransition/PageTransition.animations.d.ts +0 -8
- package/dist/components/effects/PageTransition/PageTransition.animations.js +0 -53
- package/dist/components/effects/PageTransition/PageTransition.d.ts +0 -3
- package/dist/components/effects/PageTransition/PageTransition.js +0 -82
- package/dist/components/effects/PageTransition/PageTransition.types.d.ts +0 -15
- package/dist/components/effects/PageTransition/index.d.ts +0 -2
- package/dist/components/effects/ParallaxSection/ParallaxSection.d.ts +0 -26
- package/dist/components/effects/ParallaxSection/ParallaxSection.js +0 -71
- package/dist/components/effects/ParallaxSection/ParallaxSection.types.d.ts +0 -11
- package/dist/components/effects/ParallaxSection/index.d.ts +0 -2
- package/dist/components/effects/Spotlight/Spotlight.d.ts +0 -36
- package/dist/components/effects/Spotlight/Spotlight.js +0 -112
- package/dist/components/effects/Spotlight/Spotlight.types.d.ts +0 -29
- package/dist/components/effects/Spotlight/index.d.ts +0 -2
- package/dist/components/effects/SpotlightBorder/SpotlightBorder.d.ts +0 -18
- package/dist/components/effects/SpotlightBorder/SpotlightBorder.js +0 -213
- package/dist/components/effects/SpotlightBorder/SpotlightBorder.types.d.ts +0 -61
- package/dist/components/effects/SpotlightBorder/index.d.ts +0 -2
- package/dist/components/effects/StickyScroll/StickyScroll.d.ts +0 -30
- package/dist/components/effects/StickyScroll/StickyScroll.js +0 -128
- package/dist/components/effects/StickyScroll/StickyScroll.types.d.ts +0 -19
- package/dist/components/effects/StickyScroll/index.d.ts +0 -2
- package/dist/components/forms/CronInput/CronInput.d.ts +0 -3
- package/dist/components/forms/CronInput/CronInput.js +0 -113
- package/dist/components/forms/CronInput/CronInput.theme.d.ts +0 -6
- package/dist/components/forms/CronInput/CronInput.theme.js +0 -75
- package/dist/components/forms/CronInput/CronInput.types.d.ts +0 -109
- package/dist/components/forms/CronInput/CronInput.utils.d.ts +0 -67
- package/dist/components/forms/CronInput/CronInput.utils.js +0 -505
- package/dist/components/forms/CronInput/index.d.ts +0 -4
- /package/dist/components/effects/{SpotlightBorder/SpotlightBorder.types.js → TiltCard/TiltCard.types.js} +0 -0
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import React__default, { useId, useState, useEffect, useMemo, useCallback } from 'react';
|
|
3
|
-
import { cronInputTheme } from './CronInput.theme.js';
|
|
4
|
-
import { parseCron, validateCron, cronToDescription, getNextRuns, CRON_PRESETS, getMinuteOptions, getHourOptions, getDayOfMonthOptions, getMonthOptions, getDayOfWeekOptions, formatNextRun, fieldsToCron } from './CronInput.utils.js';
|
|
5
|
-
import { FormLabel } from '../FormLabel/FormLabel.js';
|
|
6
|
-
import { cn } from '../../../utils/cn.js';
|
|
7
|
-
import { CalendarIcon, ClockIcon } from '@heroicons/react/24/outline';
|
|
8
|
-
|
|
9
|
-
const FieldSelect = ({ label, value, options, onChange, disabled, size = "md", className, }) => {
|
|
10
|
-
const theme = cronInputTheme;
|
|
11
|
-
return (jsxs("div", { className: theme.fieldGroupStyle, children: [jsx("label", { className: theme.fieldLabelStyle, children: label }), jsx("select", { value: value, onChange: (e) => onChange(e.target.value), disabled: disabled, className: cn(theme.fieldSelectStyle, theme.fieldSelectSizes[size], className), "aria-label": `Cron ${label.toLowerCase()} field`, children: options.map((option) => (jsx("option", { value: option.value, children: option.label }, option.value))) })] }));
|
|
12
|
-
};
|
|
13
|
-
// ============================================================================
|
|
14
|
-
// Main CronInput Component
|
|
15
|
-
// ============================================================================
|
|
16
|
-
const CronInput = React__default.forwardRef(({ value: controlledValue, defaultValue = "* * * * *", onChange, showPresets = true, showDescription = true, showNextRuns = true, nextRunCount = 3, size = "md", mode = "both", className, theme: themeOverrides, state = "default", disabled = false, label, helperText, ...props }, ref) => {
|
|
17
|
-
// Unique ID for accessibility
|
|
18
|
-
const generatedId = useId();
|
|
19
|
-
// Derive disabled/invalid from `state` prop (with deprecated `disabled` as fallback)
|
|
20
|
-
const isDisabled = state === "disabled" || disabled;
|
|
21
|
-
const isInvalid = state === "invalid";
|
|
22
|
-
// Controlled vs uncontrolled state
|
|
23
|
-
const isControlled = controlledValue !== undefined;
|
|
24
|
-
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
25
|
-
const cronValue = isControlled ? controlledValue : internalValue;
|
|
26
|
-
// Active mode when mode="both"
|
|
27
|
-
const [activeMode, setActiveMode] = useState(mode === "both" ? "visual" : mode);
|
|
28
|
-
// Raw input state (tracks what user is typing, may be invalid temporarily)
|
|
29
|
-
const [rawInput, setRawInput] = useState(cronValue);
|
|
30
|
-
// Sync raw input when controlled value changes
|
|
31
|
-
useEffect(() => {
|
|
32
|
-
if (isControlled) {
|
|
33
|
-
setRawInput(controlledValue);
|
|
34
|
-
}
|
|
35
|
-
}, [controlledValue, isControlled]);
|
|
36
|
-
// Merge theme with overrides
|
|
37
|
-
const theme = useMemo(() => ({
|
|
38
|
-
...cronInputTheme,
|
|
39
|
-
...themeOverrides,
|
|
40
|
-
}), [themeOverrides]);
|
|
41
|
-
// Parse current cron value into fields
|
|
42
|
-
const fields = useMemo(() => parseCron(cronValue), [cronValue]);
|
|
43
|
-
// Validation state
|
|
44
|
-
const isValid = useMemo(() => validateCron(cronValue), [cronValue]);
|
|
45
|
-
// Human-readable description
|
|
46
|
-
const description = useMemo(() => (isValid ? cronToDescription(cronValue) : ""), [cronValue, isValid]);
|
|
47
|
-
// Next run times
|
|
48
|
-
const nextRuns = useMemo(() => (isValid && showNextRuns ? getNextRuns(cronValue, nextRunCount) : []), [cronValue, isValid, showNextRuns, nextRunCount]);
|
|
49
|
-
// Active preset detection
|
|
50
|
-
const activePreset = useMemo(() => { var _a, _b; return (_b = (_a = CRON_PRESETS.find((p) => p.value === cronValue)) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null; }, [cronValue]);
|
|
51
|
-
// Memoized options
|
|
52
|
-
const minuteOptions = useMemo(() => getMinuteOptions(), []);
|
|
53
|
-
const hourOptions = useMemo(() => getHourOptions(), []);
|
|
54
|
-
const dayOfMonthOptions = useMemo(() => getDayOfMonthOptions(), []);
|
|
55
|
-
const monthOptions = useMemo(() => getMonthOptions(), []);
|
|
56
|
-
const dayOfWeekOptions = useMemo(() => getDayOfWeekOptions(), []);
|
|
57
|
-
// Update the cron value
|
|
58
|
-
const updateValue = useCallback((newCron) => {
|
|
59
|
-
if (!isControlled) {
|
|
60
|
-
setInternalValue(newCron);
|
|
61
|
-
}
|
|
62
|
-
setRawInput(newCron);
|
|
63
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(newCron);
|
|
64
|
-
}, [isControlled, onChange]);
|
|
65
|
-
// Handle field change from visual builder
|
|
66
|
-
const handleFieldChange = useCallback((field, newFieldValue) => {
|
|
67
|
-
const newFields = { ...fields, [field]: newFieldValue };
|
|
68
|
-
const newCron = fieldsToCron(newFields);
|
|
69
|
-
updateValue(newCron);
|
|
70
|
-
}, [fields, updateValue]);
|
|
71
|
-
// Handle raw input change
|
|
72
|
-
const handleRawInputChange = useCallback((e) => {
|
|
73
|
-
const newRaw = e.target.value;
|
|
74
|
-
setRawInput(newRaw);
|
|
75
|
-
if (validateCron(newRaw)) {
|
|
76
|
-
if (!isControlled) {
|
|
77
|
-
setInternalValue(newRaw);
|
|
78
|
-
}
|
|
79
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(newRaw);
|
|
80
|
-
}
|
|
81
|
-
}, [isControlled, onChange]);
|
|
82
|
-
// Handle raw input blur - commit value if valid
|
|
83
|
-
const handleRawInputBlur = useCallback(() => {
|
|
84
|
-
if (validateCron(rawInput)) {
|
|
85
|
-
updateValue(rawInput);
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
// Reset to last valid value
|
|
89
|
-
setRawInput(cronValue);
|
|
90
|
-
}
|
|
91
|
-
}, [rawInput, cronValue, updateValue]);
|
|
92
|
-
// Handle preset click
|
|
93
|
-
const handlePresetClick = useCallback((presetValue) => {
|
|
94
|
-
if (isDisabled)
|
|
95
|
-
return;
|
|
96
|
-
updateValue(presetValue);
|
|
97
|
-
}, [isDisabled, updateValue]);
|
|
98
|
-
// Handle Enter key in raw input
|
|
99
|
-
const handleRawKeyDown = useCallback((e) => {
|
|
100
|
-
if (e.key === "Enter") {
|
|
101
|
-
handleRawInputBlur();
|
|
102
|
-
}
|
|
103
|
-
}, [handleRawInputBlur]);
|
|
104
|
-
const showVisual = mode === "visual" || (mode === "both" && activeMode === "visual");
|
|
105
|
-
const showRaw = mode === "raw" || (mode === "both" && activeMode === "raw");
|
|
106
|
-
const helperId = `${generatedId}-helper`;
|
|
107
|
-
return (jsxs("div", { ref: ref, className: cn(theme.baseStyle, className), role: "group", "aria-label": label || "Cron expression builder", ...props, children: [label && (jsx(FormLabel, { htmlFor: `${generatedId}-cron`, state: isDisabled ? "disabled" : isInvalid ? "invalid" : "default", children: label })), mode === "both" && (jsxs("div", { className: "flex items-center gap-1.5", children: [jsxs("button", { type: "button", onClick: () => setActiveMode("visual"), disabled: isDisabled, className: cn(theme.modeToggleStyle, activeMode === "visual" && theme.modeToggleActiveStyle), "aria-pressed": activeMode === "visual", children: [jsx(CalendarIcon, { className: "w-3.5 h-3.5 mr-1", "aria-hidden": "true" }), "Visual"] }), jsxs("button", { type: "button", onClick: () => setActiveMode("raw"), disabled: isDisabled, className: cn(theme.modeToggleStyle, activeMode === "raw" && theme.modeToggleActiveStyle), "aria-pressed": activeMode === "raw", children: [jsx(ClockIcon, { className: "w-3.5 h-3.5 mr-1", "aria-hidden": "true" }), "Cron"] })] })), showPresets && (jsxs("div", { children: [jsx("div", { className: cn(theme.sectionHeadingStyle, "mb-1.5"), children: "Presets" }), jsx("div", { className: "flex flex-wrap gap-1.5", children: CRON_PRESETS.map((preset) => (jsx("button", { type: "button", onClick: () => handlePresetClick(preset.value), disabled: isDisabled, className: cn(theme.presetButtonStyle, activePreset === preset.value && theme.presetButtonActiveStyle), title: preset.description, "aria-pressed": activePreset === preset.value, children: preset.label }, preset.value))) })] })), showVisual && (jsxs("div", { className: cn(theme.builderStyle, isInvalid && "ring-1 ring-[var(--color-danger)] rounded-[var(--form-radius)]"), children: [jsx(FieldSelect, { label: "Minute", value: fields.minute, options: minuteOptions, onChange: (v) => handleFieldChange("minute", v), disabled: isDisabled, size: size }), jsx(FieldSelect, { label: "Hour", value: fields.hour, options: hourOptions, onChange: (v) => handleFieldChange("hour", v), disabled: isDisabled, size: size }), jsx(FieldSelect, { label: "Day of Month", value: fields.dayOfMonth, options: dayOfMonthOptions, onChange: (v) => handleFieldChange("dayOfMonth", v), disabled: isDisabled, size: size }), jsx(FieldSelect, { label: "Month", value: fields.month, options: monthOptions, onChange: (v) => handleFieldChange("month", v), disabled: isDisabled, size: size }), jsx(FieldSelect, { label: "Day of Week", value: fields.dayOfWeek, options: dayOfWeekOptions, onChange: (v) => handleFieldChange("dayOfWeek", v), disabled: isDisabled, size: size })] })), showRaw && (jsxs("div", { children: [jsx("div", { className: cn(theme.sectionHeadingStyle, "mb-1.5"), children: "Cron Expression" }), jsx("input", { type: "text", value: rawInput, onChange: handleRawInputChange, onBlur: handleRawInputBlur, onKeyDown: handleRawKeyDown, disabled: isDisabled, placeholder: "* * * * *", className: cn(theme.rawInputStyle, theme.rawInputSizes[size], isInvalid && "border-[var(--color-danger)] focus:border-[var(--color-danger)] focus:ring-[var(--color-danger)]"), id: `${generatedId}-cron`, "aria-label": "Cron expression", "aria-invalid": isInvalid || !validateCron(rawInput), "aria-describedby": helperText ? helperId : undefined, spellCheck: false, autoComplete: "off" }), !validateCron(rawInput) && rawInput !== cronValue && (jsx("div", { className: cn(theme.errorStyle, "mt-1"), children: "Invalid cron expression. Format: minute hour day month weekday" }))] })), showVisual && !showRaw && (jsxs("div", { className: "flex items-center gap-2", children: [jsx("span", { className: cn(theme.fieldLabelStyle, "shrink-0"), children: "Expression:" }), jsx("code", { className: cn("font-mono text-sm px-2 py-1 rounded-[var(--form-radius)]", "bg-[var(--color-surface-sunken)] text-[var(--color-text-primary)]"), children: cronValue })] })), showDescription && isValid && (jsxs("div", { className: theme.descriptionStyle, children: [jsx(ClockIcon, { className: "w-4 h-4 shrink-0", "aria-hidden": "true" }), jsx("span", { children: description })] })), showNextRuns && isValid && nextRuns.length > 0 && (jsxs("div", { className: theme.nextRunsStyle, children: [jsx("div", { className: cn(theme.sectionHeadingStyle, "mb-1"), children: "Next runs" }), nextRuns.map((date, index) => (jsxs("div", { className: theme.nextRunItemStyle, children: [jsx(CalendarIcon, { className: "w-3.5 h-3.5 shrink-0", "aria-hidden": "true" }), jsx("span", { children: formatNextRun(date) })] }, index)))] })), helperText && (jsx("div", { id: helperId, className: cn("text-sm mt-1", isInvalid
|
|
108
|
-
? "text-[var(--color-danger)]"
|
|
109
|
-
: "text-[var(--color-text-muted)]"), children: helperText }))] }));
|
|
110
|
-
});
|
|
111
|
-
CronInput.displayName = "CronInput";
|
|
112
|
-
|
|
113
|
-
export { CronInput };
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { formsBaseTheme } from '../forms.theme.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Default theme for the CronInput component
|
|
5
|
-
* Uses flat structure with CSS variable design tokens
|
|
6
|
-
*/
|
|
7
|
-
const cronInputTheme = {
|
|
8
|
-
// Outer wrapper
|
|
9
|
-
baseStyle: "relative w-full flex flex-col gap-3",
|
|
10
|
-
// Label
|
|
11
|
-
labelStyle: "text-sm font-medium text-[var(--color-text-primary)]",
|
|
12
|
-
// Visual builder grid
|
|
13
|
-
builderStyle: "grid grid-cols-5 gap-2",
|
|
14
|
-
// Individual field group
|
|
15
|
-
fieldGroupStyle: "flex flex-col gap-1",
|
|
16
|
-
// Field label
|
|
17
|
-
fieldLabelStyle: "text-xs font-medium text-[var(--color-text-secondary)]",
|
|
18
|
-
// Select dropdown
|
|
19
|
-
fieldSelectStyle: "w-full rounded-[var(--form-radius)] outline-none shadow-[inset_0_0_0_1px_var(--color-border)] " +
|
|
20
|
-
"bg-[var(--color-surface)] text-[var(--color-text-primary)] cursor-pointer transition-all " +
|
|
21
|
-
"focus:shadow-[inset_0_0_0_1px_var(--color-primary-600)] " +
|
|
22
|
-
"focus:ring-4 focus:ring-[var(--color-primary)]/10 " +
|
|
23
|
-
"disabled:cursor-not-allowed disabled:bg-[var(--color-background-disabled)] disabled:text-[var(--color-text-disabled)] " +
|
|
24
|
-
"dark:focus:shadow-[inset_0_0_0_1px_var(--color-primary-500)] dark:focus:ring-[var(--color-primary-500)]/20",
|
|
25
|
-
// Size variants for field selects
|
|
26
|
-
fieldSelectSizes: {
|
|
27
|
-
sm: `${formsBaseTheme.sizes.sm.text} ${formsBaseTheme.sizes.sm.padding} ${formsBaseTheme.sizes.sm.height}`,
|
|
28
|
-
md: `${formsBaseTheme.sizes.md.text} ${formsBaseTheme.sizes.md.padding} ${formsBaseTheme.sizes.md.height}`,
|
|
29
|
-
lg: `${formsBaseTheme.sizes.lg.text} ${formsBaseTheme.sizes.lg.padding} ${formsBaseTheme.sizes.lg.height}`,
|
|
30
|
-
},
|
|
31
|
-
// Raw input field
|
|
32
|
-
rawInputStyle: "w-full rounded-[var(--form-radius)] outline-none shadow-[inset_0_0_0_1px_var(--color-border)] " +
|
|
33
|
-
"bg-[var(--color-surface)] text-[var(--color-text-primary)] font-mono transition-all " +
|
|
34
|
-
"placeholder:text-[var(--color-text-placeholder)] focus:outline-none " +
|
|
35
|
-
"focus:shadow-[inset_0_0_0_1px_var(--color-primary-600)] " +
|
|
36
|
-
"focus:ring-4 focus:ring-[var(--color-primary)]/10 " +
|
|
37
|
-
"disabled:cursor-not-allowed disabled:bg-[var(--color-background-disabled)] disabled:text-[var(--color-text-disabled)] " +
|
|
38
|
-
"dark:focus:shadow-[inset_0_0_0_1px_var(--color-primary-500)] dark:focus:ring-[var(--color-primary-500)]/20",
|
|
39
|
-
// Size variants for raw input
|
|
40
|
-
rawInputSizes: {
|
|
41
|
-
sm: `${formsBaseTheme.sizes.sm.text} ${formsBaseTheme.sizes.sm.padding} ${formsBaseTheme.sizes.sm.height}`,
|
|
42
|
-
md: `${formsBaseTheme.sizes.md.text} ${formsBaseTheme.sizes.md.padding} ${formsBaseTheme.sizes.md.height}`,
|
|
43
|
-
lg: `${formsBaseTheme.sizes.lg.text} ${formsBaseTheme.sizes.lg.padding} ${formsBaseTheme.sizes.lg.height}`,
|
|
44
|
-
},
|
|
45
|
-
// Mode toggle button
|
|
46
|
-
modeToggleStyle: "inline-flex items-center justify-center rounded-[var(--form-radius)] px-3 py-1.5 text-xs font-medium " +
|
|
47
|
-
"cursor-pointer transition-all outline-none shadow-[inset_0_0_0_1px_var(--color-border)] " +
|
|
48
|
-
"text-[var(--color-text-secondary)] bg-[var(--color-surface)] hover:bg-[var(--color-surface-hover)]",
|
|
49
|
-
// Active mode toggle
|
|
50
|
-
modeToggleActiveStyle: "shadow-[inset_0_0_0_1px_var(--color-primary)] bg-[var(--color-primary-50)] text-[var(--color-primary)] " +
|
|
51
|
-
"hover:bg-[var(--color-primary-50)] " +
|
|
52
|
-
"dark:shadow-[inset_0_0_0_1px_var(--color-primary-500)] dark:bg-[var(--color-primary-500)]/10 dark:text-[var(--color-primary-400)] " +
|
|
53
|
-
"dark:hover:bg-[var(--color-primary-500)]/15",
|
|
54
|
-
// Preset button
|
|
55
|
-
presetButtonStyle: "inline-flex items-center rounded-[var(--form-radius)] px-2.5 py-1 text-xs font-medium " +
|
|
56
|
-
"cursor-pointer transition-all outline-none shadow-[inset_0_0_0_1px_var(--color-border)] " +
|
|
57
|
-
"text-[var(--color-text-secondary)] bg-[var(--color-surface)] hover:bg-[var(--color-surface-hover)] " +
|
|
58
|
-
"hover:text-[var(--color-text-primary)]",
|
|
59
|
-
// Active preset button
|
|
60
|
-
presetButtonActiveStyle: "shadow-[inset_0_0_0_1px_var(--color-primary)] bg-[var(--color-primary-50)] text-[var(--color-primary)] " +
|
|
61
|
-
"hover:bg-[var(--color-primary-100)] " +
|
|
62
|
-
"dark:shadow-[inset_0_0_0_1px_var(--color-primary-500)] dark:bg-[var(--color-primary-500)]/10 dark:text-[var(--color-primary-400)]",
|
|
63
|
-
// Human-readable description
|
|
64
|
-
descriptionStyle: "flex items-center gap-2 text-sm text-[var(--color-text-muted)]",
|
|
65
|
-
// Next runs container
|
|
66
|
-
nextRunsStyle: "flex flex-col gap-1",
|
|
67
|
-
// Individual next run item
|
|
68
|
-
nextRunItemStyle: "flex items-center gap-2 text-xs text-[var(--color-text-muted)]",
|
|
69
|
-
// Section heading
|
|
70
|
-
sectionHeadingStyle: "text-xs font-medium text-[var(--color-text-secondary)] uppercase tracking-wide",
|
|
71
|
-
// Validation error
|
|
72
|
-
errorStyle: "text-xs text-[var(--color-danger)] dark:text-[var(--color-danger-400)]",
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
export { cronInputTheme };
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export type CronInputState = "default" | "disabled" | "invalid";
|
|
3
|
-
/**
|
|
4
|
-
* CronInput component props
|
|
5
|
-
* A visual cron expression builder that outputs standard cron syntax
|
|
6
|
-
*/
|
|
7
|
-
export interface CronInputProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
|
|
8
|
-
/** Controlled cron expression string, e.g. "0 9 * * 1" */
|
|
9
|
-
value?: string;
|
|
10
|
-
/** Default cron expression for uncontrolled usage */
|
|
11
|
-
defaultValue?: string;
|
|
12
|
-
/** Callback fired when the cron expression changes */
|
|
13
|
-
onChange?: (cronExpression: string) => void;
|
|
14
|
-
/** Whether to show preset schedule buttons */
|
|
15
|
-
showPresets?: boolean;
|
|
16
|
-
/** Whether to show the human-readable description */
|
|
17
|
-
showDescription?: boolean;
|
|
18
|
-
/** Whether to show upcoming execution times */
|
|
19
|
-
showNextRuns?: boolean;
|
|
20
|
-
/** Number of next run times to display (default: 3) */
|
|
21
|
-
nextRunCount?: number;
|
|
22
|
-
/** Size variant */
|
|
23
|
-
size?: CronInputSize;
|
|
24
|
-
/** Display mode: visual builder, raw string input, or both */
|
|
25
|
-
mode?: CronInputMode;
|
|
26
|
-
/** Additional class name (highest priority, shadcn pattern) */
|
|
27
|
-
className?: string;
|
|
28
|
-
/** Theme overrides for sub-component styling */
|
|
29
|
-
theme?: CronInputThemeOverrides;
|
|
30
|
-
/**
|
|
31
|
-
* Validation/interaction state
|
|
32
|
-
* @default "default"
|
|
33
|
-
*/
|
|
34
|
-
state?: CronInputState;
|
|
35
|
-
/**
|
|
36
|
-
* Whether the input is disabled
|
|
37
|
-
* @deprecated Use `state="disabled"` instead
|
|
38
|
-
*/
|
|
39
|
-
disabled?: boolean;
|
|
40
|
-
/** Label text for the component */
|
|
41
|
-
label?: string;
|
|
42
|
-
/** Helper text displayed below the component */
|
|
43
|
-
helperText?: React.ReactNode;
|
|
44
|
-
}
|
|
45
|
-
export type CronInputSize = "sm" | "md" | "lg";
|
|
46
|
-
export type CronInputMode = "visual" | "raw" | "both";
|
|
47
|
-
/**
|
|
48
|
-
* Parsed cron fields
|
|
49
|
-
*/
|
|
50
|
-
export interface CronFields {
|
|
51
|
-
minute: string;
|
|
52
|
-
hour: string;
|
|
53
|
-
dayOfMonth: string;
|
|
54
|
-
month: string;
|
|
55
|
-
dayOfWeek: string;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Preset schedule definition
|
|
59
|
-
*/
|
|
60
|
-
export interface CronPreset {
|
|
61
|
-
label: string;
|
|
62
|
-
value: string;
|
|
63
|
-
description: string;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Theme structure for CronInput component
|
|
67
|
-
*/
|
|
68
|
-
export interface CronInputTheme {
|
|
69
|
-
/** Outer wrapper */
|
|
70
|
-
baseStyle: string;
|
|
71
|
-
/** Label text */
|
|
72
|
-
labelStyle: string;
|
|
73
|
-
/** Visual builder section */
|
|
74
|
-
builderStyle: string;
|
|
75
|
-
/** Individual field group (label + select) */
|
|
76
|
-
fieldGroupStyle: string;
|
|
77
|
-
/** Field label */
|
|
78
|
-
fieldLabelStyle: string;
|
|
79
|
-
/** Select dropdown for each field */
|
|
80
|
-
fieldSelectStyle: string;
|
|
81
|
-
/** Size variants for the select dropdowns */
|
|
82
|
-
fieldSelectSizes: Record<CronInputSize, string>;
|
|
83
|
-
/** Raw input field */
|
|
84
|
-
rawInputStyle: string;
|
|
85
|
-
/** Size variants for the raw input */
|
|
86
|
-
rawInputSizes: Record<CronInputSize, string>;
|
|
87
|
-
/** Mode toggle button */
|
|
88
|
-
modeToggleStyle: string;
|
|
89
|
-
/** Active mode toggle button */
|
|
90
|
-
modeToggleActiveStyle: string;
|
|
91
|
-
/** Preset button */
|
|
92
|
-
presetButtonStyle: string;
|
|
93
|
-
/** Active preset button */
|
|
94
|
-
presetButtonActiveStyle: string;
|
|
95
|
-
/** Human-readable description */
|
|
96
|
-
descriptionStyle: string;
|
|
97
|
-
/** Next runs container */
|
|
98
|
-
nextRunsStyle: string;
|
|
99
|
-
/** Individual next run time */
|
|
100
|
-
nextRunItemStyle: string;
|
|
101
|
-
/** Section heading style */
|
|
102
|
-
sectionHeadingStyle: string;
|
|
103
|
-
/** Validation error style */
|
|
104
|
-
errorStyle: string;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Theme overrides - all optional for partial customization
|
|
108
|
-
*/
|
|
109
|
-
export type CronInputThemeOverrides = Partial<CronInputTheme>;
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { CronFields, CronPreset } from "./CronInput.types";
|
|
2
|
-
export declare const MONTH_NAMES: readonly ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
|
3
|
-
export declare const MONTH_SHORT_NAMES: readonly ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
|
|
4
|
-
export declare const DAY_NAMES: readonly ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
|
|
5
|
-
export declare const DAY_SHORT_NAMES: readonly ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
|
|
6
|
-
/**
|
|
7
|
-
* Preset cron schedules for common use cases
|
|
8
|
-
*/
|
|
9
|
-
export declare const CRON_PRESETS: CronPreset[];
|
|
10
|
-
export interface FieldOption {
|
|
11
|
-
value: string;
|
|
12
|
-
label: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Generate minute options: every minute (*), specific minutes, and intervals
|
|
16
|
-
*/
|
|
17
|
-
export declare function getMinuteOptions(): FieldOption[];
|
|
18
|
-
/**
|
|
19
|
-
* Generate hour options: every hour (*), specific hours, and intervals
|
|
20
|
-
*/
|
|
21
|
-
export declare function getHourOptions(): FieldOption[];
|
|
22
|
-
/**
|
|
23
|
-
* Generate day-of-month options: every day (*), specific days
|
|
24
|
-
*/
|
|
25
|
-
export declare function getDayOfMonthOptions(): FieldOption[];
|
|
26
|
-
/**
|
|
27
|
-
* Generate month options: every month (*), specific months
|
|
28
|
-
*/
|
|
29
|
-
export declare function getMonthOptions(): FieldOption[];
|
|
30
|
-
/**
|
|
31
|
-
* Generate day-of-week options: every day (*), specific days, ranges
|
|
32
|
-
*/
|
|
33
|
-
export declare function getDayOfWeekOptions(): FieldOption[];
|
|
34
|
-
/**
|
|
35
|
-
* Parse a cron expression string into individual fields
|
|
36
|
-
*/
|
|
37
|
-
export declare function parseCron(expr: string): CronFields;
|
|
38
|
-
/**
|
|
39
|
-
* Convert CronFields back to a cron expression string
|
|
40
|
-
*/
|
|
41
|
-
export declare function fieldsToCron(fields: CronFields): string;
|
|
42
|
-
/**
|
|
43
|
-
* Validate a complete cron expression
|
|
44
|
-
*/
|
|
45
|
-
export declare function validateCron(expr: string): boolean;
|
|
46
|
-
/**
|
|
47
|
-
* Convert a cron expression to a human-readable description
|
|
48
|
-
*/
|
|
49
|
-
export declare function cronToDescription(expr: string): string;
|
|
50
|
-
/**
|
|
51
|
-
* Calculate the next N run times for a cron expression.
|
|
52
|
-
* Uses a brute-force minute-by-minute scan (simple approach for common cases).
|
|
53
|
-
*
|
|
54
|
-
* @param expr - Cron expression string
|
|
55
|
-
* @param count - Number of next runs to find (default: 3)
|
|
56
|
-
* @param from - Starting date (default: now)
|
|
57
|
-
* @returns Array of Date objects for the next runs
|
|
58
|
-
*/
|
|
59
|
-
export declare function getNextRuns(expr: string, count?: number, from?: Date): Date[];
|
|
60
|
-
/**
|
|
61
|
-
* Format a Date as a human-readable next run string
|
|
62
|
-
*/
|
|
63
|
-
export declare function formatNextRun(date: Date): string;
|
|
64
|
-
/**
|
|
65
|
-
* Check if a field value represents a specific number (not a pattern)
|
|
66
|
-
*/
|
|
67
|
-
export declare function isSpecificValue(value: string): boolean;
|