@umriss-ui/schedule 0.3.3 → 0.3.5

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/CHANGELOG.md CHANGED
@@ -15,6 +15,24 @@ moves from here under the rule above.
15
15
 
16
16
  ---
17
17
 
18
+ ## 0.3.5 – Found by search (Sep. 2026)
19
+
20
+ ### Fixed
21
+
22
+ - **The package's description and keywords say what it is in the words a
23
+ search uses**, and the demo it links to addresses every page by a path
24
+ (`…/schedule/<page>/`) instead of a hash, with the page's text readable before
25
+ the demo starts. Old `#/<page>` links still land. Nothing in the package's
26
+ code changed.
27
+
28
+ ---
29
+
30
+ ## 0.3.4 – Core 0.14.0 (Sep. 2026)
31
+
32
+ Needs `@umriss-ui/core` 0.14; the peer range moves to `^0.14.0`. Nothing else changes for a caller.
33
+
34
+ ---
35
+
18
36
  ## 0.3.3 – What you are working with (Sep. 2026)
19
37
 
20
38
  ### Changed
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @umriss-ui/schedule
2
2
 
3
- Work planned over time: **subtasks** on **lanes** — people, vehicles, rooms or
3
+ A React Gantt-style schedule for data-dense applications — work planned over time: **subtasks** on **lanes** — people, vehicles, rooms or
4
4
  machines. One task runs across several lanes in a fixed order, each stop has a
5
5
  main time with a lead-in before it and a lead-out after it, between the stops
6
6
  lie **dependencies** with lags of their own, and a lane can be **blocked** for
package/docs/llms-full.md CHANGED
@@ -1,6 +1,6 @@
1
- # @umriss-ui/schedule 0.3.3
1
+ # @umriss-ui/schedule 0.3.5
2
2
 
3
- > The umriss schedule for data-dense applications - work on lanes over time, with dependencies, blocked time, findings and controlled editing.
3
+ > React Gantt-style schedule for data-dense applications - work on lanes over time, with dependencies, blocked time, findings and controlled editing.
4
4
 
5
5
  Install with `pnpm add @umriss-ui/schedule`. This text is generated from the package's demo (https://romanhaendler.github.io/umriss-ui/schedule/): every page with its import line, its examples - the source exactly as it runs, with the package name where the demo imports its own source - its props tables generated from the code, and what it deliberately does not do. The pages index stands in https://romanhaendler.github.io/umriss-ui/schedule/llms.txt.
6
6
 
@@ -560,7 +560,7 @@ Install the schedule with its two peers and hand it plain data: lanes, tasks, su
560
560
  import { Schedule, Lane, Subtasks, Dependencies } from "@umriss-ui/schedule";
561
561
  ```
562
562
 
563
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/installation
563
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/installation/
564
564
 
565
565
  Install it with its peers: `pnpm add @umriss-ui/schedule @umriss-ui/core @umriss-ui/charts`, with React 18 or 19. The stylesheets load themselves - each package's script imports its own, so there is nothing to import by hand; `@umriss-ui/schedule/styles.css` stays exported for setups that link stylesheets themselves.
566
566
 
@@ -614,7 +614,7 @@ Work on lanes over time, with a day band above and time ticks that follow the zo
614
614
  import { Schedule, Lane, Subtasks, Dependencies } from "@umriss-ui/schedule";
615
615
  ```
616
616
 
617
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/schedule
617
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/schedule/
618
618
 
619
619
  Lanes stand in the order they are declared; a subtask on a lane that is not declared is not drawn. Declare `Dependencies` before `Subtasks` and its lines run beneath the bars.
620
620
 
@@ -815,7 +815,7 @@ One row per person, vehicle or room, named by its header and kept in the order i
815
815
  import { Lane } from "@umriss-ui/schedule";
816
816
  ```
817
817
 
818
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/lane
818
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/lane/
819
819
 
820
820
  A lane is declared by its id, the one subtasks name, and a label. The label is content, not a string: a name with a plate number, a status beside it. It is real text, read by a screen reader, and it stays at the left edge while the plot pans.
821
821
 
@@ -942,7 +942,7 @@ Teams, depots or regions over the lanes, to any depth, folded into one row when
942
942
  import { LaneGroup, Lane } from "@umriss-ui/schedule";
943
943
  ```
944
944
 
945
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/lane-groups
945
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/lane-groups/
946
946
 
947
947
  A group is structure, never a lane: nothing sits on it, no finding is reported for it and no intent names it (ADR-0025). The lanes keep the order they were declared in, whatever group they are in.
948
948
 
@@ -1211,7 +1211,7 @@ The bars: a main time with an optional lead-in before it and lead-out after it,
1211
1211
  import { Subtasks } from "@umriss-ui/schedule";
1212
1212
  ```
1213
1213
 
1214
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/subtasks
1214
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/subtasks/
1215
1215
 
1216
1216
  Lead-in and lead-out are durations beside the main time, not times of their own: moving the subtask takes them along. They are drawn faint in the task's colour, so preparation reads as belonging to the work and as not being it, and they occupy the lane as the main time does.
1217
1217
 
@@ -1355,7 +1355,7 @@ A line of text inside each bar: cut off where the bar is too narrow, left out wh
1355
1355
  import { Schedule } from "@umriss-ui/schedule";
1356
1356
  ```
1357
1357
 
1358
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/bar-labels
1358
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/bar-labels/
1359
1359
 
1360
1360
  The text lies on the main time, not on the lead-in. Its colour follows the bar: light text on a dark bar, dark text on a pale one, measured by contrast in either theme.
1361
1361
 
@@ -1421,7 +1421,7 @@ What a bar says besides its colour: provisional, fixed, muted, running on past t
1421
1421
  import { Subtasks, resolveAppearance } from "@umriss-ui/schedule";
1422
1422
  ```
1423
1423
 
1424
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/appearances
1424
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/appearances/
1425
1425
 
1426
1426
  `"provisional"` owns the fill (none at all), `"fixed"` the ends (a cap inside each), `"muted"` the saturation, `"open"` a fade at the edge of the view, and `progress` a rail inside the main time. The faint, outlined fill belongs to a lead-in and a lead-out and to nothing else.
1427
1427
 
@@ -1664,7 +1664,7 @@ Two subtasks claiming one lane at the same time (also called a double booking or
1664
1664
  import { Subtasks } from "@umriss-ui/schedule";
1665
1665
  ```
1666
1666
 
1667
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/overlap
1667
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/overlap/
1668
1668
 
1669
1669
  The later bar is offset a few pixels and edged, and the shared time is marked across the lane. Lead-in and lead-out occupy the lane too, so a lead-out meeting the next lead-in is an overlap. The offset stops at three levels and never leaks into the lane below.
1670
1670
 
@@ -1785,7 +1785,7 @@ Lines from one subtask's end to the next one's start within a task, with the lag
1785
1785
  import { Dependencies } from "@umriss-ui/schedule";
1786
1786
  ```
1787
1787
 
1788
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/dependencies
1788
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/dependencies/
1789
1789
 
1790
1790
  `leaves` and `arrives` say what a dependency connects - the main time, or the outer edge of the lead-out and the lead-in - and so decide whether it is violated. `attach`, `ends` and `route` only change how the line is drawn.
1791
1791
 
@@ -2066,7 +2066,7 @@ The shape of a dependency's line: a curve that leaves and arrives forwards, a st
2066
2066
  import { Dependencies } from "@umriss-ui/schedule";
2067
2067
  ```
2068
2068
 
2069
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/routes
2069
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/routes/
2070
2070
 
2071
2071
  #### Examples
2072
2072
 
@@ -2239,7 +2239,7 @@ A day band that names the days and a time band whose ticks follow the zoom, from
2239
2239
  import { Schedule } from "@umriss-ui/schedule";
2240
2240
  ```
2241
2241
 
2242
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/time-axis
2242
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/time-axis/
2243
2243
 
2244
2244
  The calendar is a list of intervals in which time counts, nothing more; deriving it from opening hours and holidays is the application's business. A dotted line marks each seam, and a drag that would end in removed time stops at the seam where time counts again.
2245
2245
 
@@ -2375,7 +2375,7 @@ Leave, maintenance and other time a lane is not available: hatched behind the wo
2375
2375
  import { BlockedTimes, findings } from "@umriss-ui/schedule";
2376
2376
  ```
2377
2377
 
2378
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/blocked-time
2378
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/blocked-time/
2379
2379
 
2380
2380
  Blocked time is data beside the work: one list, each interval naming its lane, as a leave table or a maintenance plan holds it. `findings` takes the same list as its third argument.
2381
2381
 
@@ -2591,7 +2591,7 @@ A line across the lanes at the present moment, so that whatever should have happ
2591
2591
  import { Schedule } from "@umriss-ui/schedule";
2592
2592
  ```
2593
2593
 
2594
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/now-line
2594
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/now-line/
2595
2595
 
2596
2596
  #### Examples
2597
2597
 
@@ -2683,7 +2683,7 @@ Moving through a plan with the gestures of any scrolling surface: drag, wheel, C
2683
2683
  import { Schedule } from "@umriss-ui/schedule";
2684
2684
  ```
2685
2685
 
2686
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/pan-and-zoom
2686
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/pan-and-zoom/
2687
2687
 
2688
2688
  Dragging the background pans through time and through the lanes. The wheel scrolls the lanes and hands the scroll back to the page at their end; Shift with the wheel pans through time; Ctrl or ⌘ with the wheel, or a pinch, zooms around the pointer.
2689
2689
 
@@ -2752,7 +2752,7 @@ A click on a bar selects its whole task on every lane, so a planner sees every p
2752
2752
  import { Schedule } from "@umriss-ui/schedule";
2753
2753
  ```
2754
2754
 
2755
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/selection
2755
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/selection/
2756
2756
 
2757
2757
  The schedule keeps the selection itself unless you pass `selectedTask`; then your state holds it and every change is reported. The report also names the subtask that was clicked, the one the editing grips belong to.
2758
2758
 
@@ -2908,7 +2908,7 @@ Reports what the pointer does on the plan - hover, click, right-click - with wha
2908
2908
  import { Schedule } from "@umriss-ui/schedule";
2909
2909
  ```
2910
2910
 
2911
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/interactions
2911
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/interactions/
2912
2912
 
2913
2913
  A hit names a subtask together with the part of it (lead-in, main time, lead-out), a dependency, a lane, or nothing.
2914
2914
 
@@ -3084,7 +3084,7 @@ Names what the pointer rests on - a subtask with its times and findings, a depen
3084
3084
  import { Schedule } from "@umriss-ui/schedule";
3085
3085
  ```
3086
3086
 
3087
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/tooltip
3087
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/tooltip/
3088
3088
 
3089
3089
  Its words come from the wording of @umriss-ui/core and its numbers from its formats, so a provider switches it with everything else. It steps aside while a drag is in flight and is placed where it has room.
3090
3090
 
@@ -3308,7 +3308,7 @@ Keeps two schedules on the same hours: pan or zoom one and the other follows (al
3308
3308
  import { Schedule } from "@umriss-ui/schedule";
3309
3309
  ```
3310
3310
 
3311
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/linked-schedules
3311
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/linked-schedules/
3312
3312
 
3313
3313
  `onDomainChange` reports the visible span after a pan or zoom, at most once per frame. A span handed in as `initialDomain` is not reported back, so two schedules never feed each other.
3314
3314
 
@@ -3470,7 +3470,7 @@ Converts between a point on the screen and a time on a lane, so marks of your ow
3470
3470
  import { Schedule } from "@umriss-ui/schedule";
3471
3471
  ```
3472
3472
 
3473
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/handle
3473
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/handle/
3474
3474
 
3475
3475
  The handle holds three functions and nothing else: `clientPointOf(time, lane?)`, `positionAt(clientX, clientY)` and `visibleDomain()`. Everything else the schedule does is props.
3476
3476
 
@@ -3579,7 +3579,7 @@ Drag a bar to a new time or onto another lane (also called drag-and-drop resched
3579
3579
  import { Schedule, applyIntent } from "@umriss-ui/schedule";
3580
3580
  ```
3581
3581
 
3582
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/move-and-lane
3582
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/move-and-lane/
3583
3583
 
3584
3584
  Each name in `intents` enables one gesture. Without `intents` the schedule is read-only, and pressing a bar pans the plot.
3585
3585
 
@@ -3786,7 +3786,7 @@ Change how long work takes, or how long its preparation and its wrap-up take, by
3786
3786
  import { Schedule, applyIntent } from "@umriss-ui/schedule";
3787
3787
  ```
3788
3788
 
3789
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/stretch
3789
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/stretch/
3790
3790
 
3791
3791
  `stretch` enables the two edges of the main time. `leadIn` and `leadOut` add a grip at the outer edge of each; the grips show on the selected subtask only, so click a bar first.
3792
3792
 
@@ -3889,7 +3889,7 @@ Makes a drag land on a raster - the axis' own step, a fixed duration, or a patte
3889
3889
  import { Schedule, snapTime } from "@umriss-ui/schedule";
3890
3890
  ```
3891
3891
 
3892
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/snapping
3892
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/snapping/
3893
3893
 
3894
3894
  Without `snap` a drag lands on the fine band's step, which follows the zoom. A number is a step in milliseconds; `{ step, offset }` counts from local midnight; `false` places to the minute.
3895
3895
 
@@ -4045,7 +4045,7 @@ Drag work that is not on the plan yet - from a backlog or a list of unassigned j
4045
4045
  import { Schedule, subtaskFromPlace } from "@umriss-ui/schedule";
4046
4046
  ```
4047
4047
 
4048
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/placing
4048
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/placing/
4049
4049
 
4050
4050
  The browser hands over dragged data only on the drop, so declare what is being dragged in `placing` on your `dragstart` and clear it on `dragend`. The schedule then shows the ghost at the snapped time, with the findings the drop would create.
4051
4051
 
@@ -4168,7 +4168,7 @@ Marks the lanes and times a piece of work may not go to as soon as a drag begins
4168
4168
  import { Schedule, BlockedTimes } from "@umriss-ui/schedule";
4169
4169
  ```
4170
4170
 
4171
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/where-it-may-go
4171
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/where-it-may-go/
4172
4172
 
4173
4173
  `canMoveTo(subtask, lane)` is asked once per lane when a drag takes hold, and again at the drop. Refused lanes are drawn back and hatched; over one, the ghost stays on the last lane allowed, tied to the pointer by a line.
4174
4174
 
@@ -4406,7 +4406,7 @@ Works out which later work has to move when one piece moves: every successor who
4406
4406
  import { ripple, shiftTask, applyIntent } from "@umriss-ui/schedule";
4407
4407
  ```
4408
4408
 
4409
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/ripple
4409
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/ripple/
4410
4410
 
4411
4411
  `ripple(subtasks, dependencies, intent)` returns move intents down the whole chain, in the order they were pushed. A successor keeps its length and is never pulled earlier: room that opens up is the planner's.
4412
4412
 
@@ -4612,7 +4612,7 @@ Lists what is wrong with a plan - double bookings on a lane, dependencies that d
4612
4612
  import { findings, overlaps, violatedDependencies, inBlockedTime } from "@umriss-ui/schedule";
4613
4613
  ```
4614
4614
 
4615
- Demo page: https://romanhaendler.github.io/umriss-ui/schedule/#/findings
4615
+ Demo page: https://romanhaendler.github.io/umriss-ui/schedule/findings/
4616
4616
 
4617
4617
  `findings(subtasks, dependencies, blocked)` returns all three kinds; `overlaps`, `violatedDependencies` and `inBlockedTime` return one each. They are pure functions: run them wherever the data changes, with or without a schedule on screen.
4618
4618
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@umriss-ui/schedule",
3
- "version": "0.3.3",
4
- "description": "The umriss schedule for data-dense applications - work on lanes over time, with dependencies, blocked time, findings and controlled editing.",
3
+ "version": "0.3.5",
4
+ "description": "React Gantt-style schedule for data-dense applications - work on lanes over time, with dependencies, blocked time, findings and controlled editing.",
5
5
  "license": "MIT",
6
6
  "author": "Roman Händler",
7
7
  "homepage": "https://romanhaendler.github.io/umriss-ui/schedule/",
@@ -15,11 +15,16 @@
15
15
  },
16
16
  "keywords": [
17
17
  "react",
18
- "components",
19
- "ui",
20
- "umriss",
18
+ "gantt",
19
+ "gantt-chart",
20
+ "scheduler",
21
21
  "schedule",
22
- "canvas"
22
+ "timeline",
23
+ "planning",
24
+ "resource-planning",
25
+ "canvas",
26
+ "typescript",
27
+ "umriss"
23
28
  ],
24
29
  "type": "module",
25
30
  "files": [
@@ -45,8 +50,8 @@
45
50
  "peerDependencies": {
46
51
  "react": ">=18",
47
52
  "react-dom": ">=18",
48
- "@umriss-ui/charts": "^0.8.0",
49
- "@umriss-ui/core": "^0.13.1"
53
+ "@umriss-ui/charts": "^0.8.1",
54
+ "@umriss-ui/core": "^0.14.1"
50
55
  },
51
56
  "devDependencies": {
52
57
  "@fontsource/geist-mono": "^5.3.0",
@@ -60,9 +65,9 @@
60
65
  "typescript": "^5.6.3",
61
66
  "vite": "^6.0.0",
62
67
  "vite-plugin-dts": "^4.3.0",
63
- "@umriss-ui/charts": "0.8.0",
64
68
  "@umriss-ui/demo": "0.0.0",
65
- "@umriss-ui/core": "0.13.1"
69
+ "@umriss-ui/charts": "0.8.1",
70
+ "@umriss-ui/core": "0.14.1"
66
71
  },
67
72
  "scripts": {
68
73
  "props": "node --disable-warning=ExperimentalWarning --experimental-strip-types demo/props.ts",