timetide 1.2.0
timetide: ^1.2.0 copied to clipboard
A comprehensive Flutter scheduling calendar with 13 views, multi-resource scheduling, drag & drop, RRULE recurrence, and iCalendar support. Widget-layer only.
1.2.0 #
Companion Widget — TideShiftPlanner #
TideShiftPlanner— week-based shift scheduling companion widget composing a sidebar resource palette with a 7-column week grid and drag-and-drop shift creation.cardBuilderparameter for custom shift card rendering (replaces defaultShiftCardwhen provided).shiftEditPromptBuilderparameter to enable active edit flows; pairs withonShiftUpdatedcallback (analogous toshiftPromptBuilder+onShiftCreatedfor creation).TideShiftPlannerController—ChangeNotifier-based view-state controller with week navigation (goToWeek,goToPreviousWeek,goToNextWeek) and pure-function bulk-copy helpers (generateCopiedShifts,copyPreviousWeek,generateMonthFromWeek,generateRangeFromWeek). Holds no domain state.TideKwBadge— toolbar building block rendering the ISO-8601 calendar-week label (e.g.KW 13/Week 13).ShiftDragModeenum (instantWithDefaults,promptForTime) andShiftCopyModeenum (replicateWeekly).- Closed-day predicate with three-fold OR logic:
closedDaysOfWeek(set of weekdays),closedDates(set of concrete dates), andisDayClosed(custom callback).
Theme #
- 17 new
TideThemeDataproperties for shift-planner styling:shiftPlannerSidebarWidth,shiftPlannerSidebarBackground,shiftPlannerCardPadding,shiftPlannerCardBorderRadius,shiftPlannerCardLeftBorderWidth,shiftPlannerClosedDayPatternColor,shiftPlannerClosedDayPatternSpacing,shiftPlannerColumnHeaderTextStyle,shiftPlannerColumnDateStyle,shiftPlannerCardTitleStyle,shiftPlannerCardTimeStyle,shiftPlannerClosedLabelStyle,shiftPlannerAddButtonStyle,shiftPlannerAddButtonBorderColor,shiftPlannerSidebarAvatarTextStyle,shiftPlannerSidebarItemTextStyle,shiftPlannerCardAvatarTextStyle.
Localization #
- Added 5 new
TideLocalizationsstrings (DE + EN):closed,addShift,staff,dragToDay, and the templatedweekNumberLabel(int week)helper backed byweekNumberTemplate.
Datasource #
- Bulk methods on
TideDatasource:addEvents,updateEvents,removeEventswith defaultforEach-based implementations and overrides onTideInMemoryDatasource.
Example #
- New example app at
example/shift_planner/main.dartdemonstrating the planner with controller, toolbar, closed days, and bulk-copy.
1.1.1 #
Documentation #
- Rewrote README with hero banner, light/dark theme comparison, mobile previews, and per-feature screenshots.
- Added brand assets in
docs/brand/: SVG vector logo plus light/dark PNG variants for the square mark and wordmark. - Added 19 product screenshots in
docs/screenshots/covering the calendar views, companion widgets, and the recurrence editor. - Adjusted
.gitignoreand.pubignoreso README assets ship with the package while internal docs stay private.
1.1.0 #
Companion Widgets #
TideDateStrip— horizontal scrollable date picker strip with selection, today indicator, and disabled datesTideSlotPicker— time slot selection widget with optional resource grouping, loading, and empty statesTideTemplateEditor— weekly template editor for shift/schedule planning with drag-to-create, resize, break overlays, and resource legend
New Models #
TideSlot— bookable time slot data model forTideSlotPickerTideTemplateSlot— weekly template slot data model forTideTemplateEditorTideTimeOfDay— lightweight time-of-day class (widget-layer alternative to Material'sTimeOfDay)
Theme #
- Added 21 new
TideThemeDataproperties for companion widget styling (date strip, slot picker, template editor sections)
Localization #
- Added 13 new
TideLocalizationsstrings for companion widgets (weekday abbreviations, labels) - Added
TideLocalizations.weekdayAbbr(int isoWeekday)helper method
1.0.3 #
- Fix automated publishing with tag-based OIDC workflow.
1.0.2 #
- Fix automated publishing via GitHub Actions OIDC.
1.0.1 #
- Fix repository and issue tracker URLs in pubspec.yaml.
1.0.0 #
Initial stable release of timetide.
Views #
- 13 calendar views: day, week, work week, month, schedule, timeline day/week/work week/month, multi-week, year, resource day, resource week
TideResourceDayView— vertical time axis with side-by-side resource columns and avatar+name headersTideResourceWeekView— same layout with day sub-columns per resource and two-level headers- 2 new
TideViewenum values:resourceDay,resourceWeek - Shared time axis (
TideTimeAxis) and synchronized scrolling (TideScrollSync) across timeline views - Timeline views migrated to the shared
TideScrollSyncutility, reducing duplication - All-day event panels with collapsible headers
- Current time indicator
Core #
TideController— central state management withValueNotifiers for granular rebuildsTideDatasourceabstraction withTideInMemoryDatasourceandTideStreamDatasourceTideEvent,TideResource,TideTimeRegiondata models- Preset configurations via
TidePreset
Recurrence #
- RFC 5545 RRULE parser (
TideRRuleParser) and generator (TideRRuleGenerator) - Lazy occurrence engine (
TideOccurrenceEngine) usingsync*generators - Human-readable descriptions in English and German
- EXDATE and RDATE support
Interaction #
TideDragHandlerwired end-to-end into all 7 drag-capable views (day, week, work week, timeline day, timeline week, timeline work week, resource day, resource week)- Platform-adaptive drag: long-press on mobile, click-and-drag on desktop
- Cross-resource drag — dragging an event to a different resource column updates
resourceIdautomatically TideResizeHandler— event edge resize (drag start or end boundary) with snap-to-gridTideSnapEngine— configurable grid snapping for both drag and resizeTideConflictDetector— live overlap detection computed during drag, before the event is committedTideAutoScroll— edge-scrolling activates when the pointer approaches a viewport boundaryTideExternalDragScope— enables dragging events into the calendar from an external sidebar or widget treeTideTimeAxis— pixel-to-time and time-to-pixel conversion abstraction shared by all time-based views- Event and date selection with rubber-band
- Keyboard shortcuts and focus traversal
- Undo/redo with configurable history
Widgets #
TideCalendar— main entry-point widgetTideCalendarHeader— navigation and view switcherTideResourceHeader— resource display for timeline viewsTideContextMenu— design-agnostic overlay context menuTideTooltip— custom overlay tooltipTideRecurrenceEditor— visual RRULE builder with live previewTideScrollbar— custom painted scrollbarTideAdaptiveLayout— responsive breakpoint layout
Theme #
TideThemeDatawith 40+ visual propertiesTideThemeInheritedWidget for injectionlerp()support for animated theme transitions
Export/Import #
- iCalendar (
.ics) export and import - RFC 5545 compliant VEVENT generation
Localization #
- Built-in English and German translations
- Custom locale support via
TideLocalizations
Architecture #
- Widget-layer only — no Material or Cupertino imports
- Monolithic package with tree-shaking
- Custom RRULE parser — no external dependency