inkflow 0.1.0__py3-none-any.whl

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.
Files changed (67) hide show
  1. inkflow/__init__.py +48 -0
  2. inkflow/animations.py +105 -0
  3. inkflow/bundles/presenter.css +991 -0
  4. inkflow/bundles/presenter.js +2487 -0
  5. inkflow/clean.py +72 -0
  6. inkflow/cli/__init__.py +19 -0
  7. inkflow/cli/_common.py +199 -0
  8. inkflow/cli/authoring.py +407 -0
  9. inkflow/cli/color.py +102 -0
  10. inkflow/cli/present.py +122 -0
  11. inkflow/cli/project.py +88 -0
  12. inkflow/cli/verify.py +89 -0
  13. inkflow/colors.py +335 -0
  14. inkflow/completions/inkflow.yaml +164 -0
  15. inkflow/content.py +474 -0
  16. inkflow/enums.py +212 -0
  17. inkflow/export.py +183 -0
  18. inkflow/fonts.py +438 -0
  19. inkflow/git_setup.py +190 -0
  20. inkflow/init.py +52 -0
  21. inkflow/layout.py +464 -0
  22. inkflow/loaders.py +95 -0
  23. inkflow/logging.py +238 -0
  24. inkflow/manifest.py +347 -0
  25. inkflow/markdown.py +256 -0
  26. inkflow/ns.py +10 -0
  27. inkflow/pdf.html +21 -0
  28. inkflow/pipeline.py +350 -0
  29. inkflow/presenter.html +243 -0
  30. inkflow/server.py +552 -0
  31. inkflow/svg.py +81 -0
  32. inkflow/svgio.py +62 -0
  33. inkflow/theme/icon.svg +14 -0
  34. inkflow/theme/layouts/base.svg +37 -0
  35. inkflow/theme/layouts/center.svg +42 -0
  36. inkflow/theme/layouts/cover.svg +43 -0
  37. inkflow/theme/layouts/default.svg +46 -0
  38. inkflow/theme/layouts/end.svg +41 -0
  39. inkflow/theme/layouts/fact.svg +43 -0
  40. inkflow/theme/layouts/media-left.svg +46 -0
  41. inkflow/theme/layouts/media-right.svg +46 -0
  42. inkflow/theme/layouts/numbered.svg +47 -0
  43. inkflow/theme/layouts/quote.svg +43 -0
  44. inkflow/theme/layouts/section.svg +42 -0
  45. inkflow/theme/layouts/two-cols.svg +46 -0
  46. inkflow/theme/showcase/deck.py +47 -0
  47. inkflow/theme/showcase/slides/center.md +1 -0
  48. inkflow/theme/showcase/slides/cover.md +4 -0
  49. inkflow/theme/showcase/slides/default.md +10 -0
  50. inkflow/theme/showcase/slides/end.md +3 -0
  51. inkflow/theme/showcase/slides/fact.md +5 -0
  52. inkflow/theme/showcase/slides/media-left.md +4 -0
  53. inkflow/theme/showcase/slides/media-right.md +3 -0
  54. inkflow/theme/showcase/slides/quote.md +5 -0
  55. inkflow/theme/showcase/slides/section.md +3 -0
  56. inkflow/theme/showcase/slides/two-cols.md +15 -0
  57. inkflow/theme/styles.css +623 -0
  58. inkflow/titles.py +17 -0
  59. inkflow/transitions.py +115 -0
  60. inkflow/tui.py +152 -0
  61. inkflow/verify.py +177 -0
  62. inkflow/zones.py +514 -0
  63. inkflow-0.1.0.dist-info/METADATA +155 -0
  64. inkflow-0.1.0.dist-info/RECORD +67 -0
  65. inkflow-0.1.0.dist-info/WHEEL +4 -0
  66. inkflow-0.1.0.dist-info/entry_points.txt +2 -0
  67. inkflow-0.1.0.dist-info/licenses/LICENSE +21 -0
inkflow/__init__.py ADDED
@@ -0,0 +1,48 @@
1
+ from inkflow import animations, transitions
2
+ from inkflow.enums import (
3
+ Align,
4
+ ColorMode,
5
+ Direction,
6
+ Easing,
7
+ MediaAlign,
8
+ MediaFit,
9
+ Muted,
10
+ VAlign,
11
+ )
12
+ from inkflow.manifest import (
13
+ Animation,
14
+ Content,
15
+ Deck,
16
+ Image,
17
+ Inline,
18
+ Media,
19
+ Slide,
20
+ TextBox,
21
+ Transition,
22
+ Video,
23
+ ZoneContent,
24
+ )
25
+
26
+ __all__ = [
27
+ "Align",
28
+ "Animation",
29
+ "ColorMode",
30
+ "Content",
31
+ "Deck",
32
+ "Direction",
33
+ "Easing",
34
+ "Image",
35
+ "Inline",
36
+ "Media",
37
+ "MediaAlign",
38
+ "MediaFit",
39
+ "Muted",
40
+ "Slide",
41
+ "TextBox",
42
+ "Transition",
43
+ "VAlign",
44
+ "Video",
45
+ "ZoneContent",
46
+ "animations",
47
+ "transitions",
48
+ ]
inkflow/animations.py ADDED
@@ -0,0 +1,105 @@
1
+ """Built-in animation types for the deck DSL.
2
+
3
+ Each type is a thin subclass of ``Animation``, adding only
4
+ its own fields. The shared params (``duration``, ``easing``, ``delay``) and the
5
+ ``element``/``step`` fields come from the base.
6
+
7
+ How a type maps to CSS:
8
+
9
+ - The CSS class is ``anim-<slug>``, where the slug is the kebab-cased class name
10
+ (``Animation.slug()``): ``FadeIn`` → ``anim-fade-in``, ``SlideIn`` →
11
+ ``anim-slide-in``, ``Highlight`` → ``anim-highlight``. Defining a new type is
12
+ "add a subclass here + write a matching CSS rule," nothing else.
13
+ - Continuous params become ``--anim-<field>`` custom properties on the element.
14
+ - Discrete params that CSS cannot branch on by value become modifier classes —
15
+ currently ``direction`` → ``anim-from-{direction}``.
16
+ """
17
+
18
+ from __future__ import annotations
19
+
20
+ from dataclasses import dataclass, field
21
+
22
+ from inkflow.enums import Direction, Easing
23
+ from inkflow.manifest import Animation
24
+
25
+ __all__ = [
26
+ "Bounce",
27
+ "FadeIn",
28
+ "FadeOut",
29
+ "Highlight",
30
+ "SlideIn",
31
+ "SlideOut",
32
+ "ZoomIn",
33
+ "ZoomOut",
34
+ ]
35
+
36
+
37
+ @dataclass
38
+ class FadeIn(Animation):
39
+ """Element starts hidden, fades in on its step."""
40
+
41
+
42
+ @dataclass
43
+ class FadeOut(Animation):
44
+ """Element starts visible, fades out on its step."""
45
+
46
+
47
+ @dataclass
48
+ class Bounce(Animation):
49
+ """Element starts hidden, appears with a scale-pulse bounce on its step."""
50
+
51
+ duration: float = field(default=0.35, kw_only=True)
52
+ """Duration in seconds."""
53
+ overshoot: Easing = field(
54
+ default=Easing.cubic_bezier(0.34, 1.56, 0.64, 1), kw_only=True
55
+ )
56
+ """Easing for the translate axis — the overshoot that gives the bounce its
57
+ spring. Independent of the opacity-axis ``easing``."""
58
+
59
+
60
+ @dataclass
61
+ class SlideIn(Animation):
62
+ """Element slides in from an edge, fading as it arrives."""
63
+
64
+ direction: Direction = Direction.LEFT
65
+ """Edge the element slides in from."""
66
+ distance: float = 60.0
67
+ """Travel distance in SVG user units."""
68
+
69
+
70
+ @dataclass
71
+ class SlideOut(Animation):
72
+ """Element slides out toward an edge, fading as it leaves."""
73
+
74
+ direction: Direction = Direction.LEFT
75
+ """Edge the element slides out toward."""
76
+ distance: float = 60.0
77
+ """Travel distance in SVG user units."""
78
+
79
+
80
+ @dataclass
81
+ class ZoomIn(Animation):
82
+ """Element scales up into place from ``scale``."""
83
+
84
+ scale: float = 0.8
85
+ """Starting scale, e.g. ``0.6``."""
86
+
87
+
88
+ @dataclass
89
+ class ZoomOut(Animation):
90
+ """Element scales down out of place toward ``scale``."""
91
+
92
+ scale: float = 0.8
93
+ """Ending scale."""
94
+
95
+
96
+ @dataclass
97
+ class Highlight(Animation):
98
+ """Pulse the element ``passes`` times without hiding it."""
99
+
100
+ duration: float = field(default=0.6, kw_only=True)
101
+ """Duration of one pulse in seconds."""
102
+ color: str = "var(--accent)"
103
+ """Glow color (any CSS color or theme token)."""
104
+ passes: int = 1
105
+ """Number of pulses."""