poetry-charts 0.0.2
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.
- checksums.yaml +7 -0
- data/.gitattributes +6 -0
- data/CHANGELOG.md +3 -0
- data/LICENSE.txt +21 -0
- data/README.md +94 -0
- data/THIRD_PARTY_NOTICES.md +39 -0
- data/app/assets/stylesheets/poetry-charts.css +117 -0
- data/app/components/poetry/charts/adapter_chart/component.html.erb +6 -0
- data/app/components/poetry/charts/adapter_chart/component.rb +99 -0
- data/app/components/poetry/charts/adapter_chart/preview.rb +37 -0
- data/app/components/poetry/charts/adapter_chart/style.rb +16 -0
- data/app/components/poetry/charts/area_chart/component.html.erb +75 -0
- data/app/components/poetry/charts/area_chart/component.rb +251 -0
- data/app/components/poetry/charts/area_chart/preview.rb +95 -0
- data/app/components/poetry/charts/area_chart/style.rb +29 -0
- data/app/components/poetry/charts/bar_chart/component.html.erb +95 -0
- data/app/components/poetry/charts/bar_chart/component.rb +318 -0
- data/app/components/poetry/charts/bar_chart/preview.rb +115 -0
- data/app/components/poetry/charts/bar_chart/style.rb +28 -0
- data/app/components/poetry/charts/bar_math.rb +95 -0
- data/app/components/poetry/charts/cartesian_family.rb +105 -0
- data/app/components/poetry/charts/chart_family.rb +58 -0
- data/app/components/poetry/charts/composed_chart/component.html.erb +95 -0
- data/app/components/poetry/charts/composed_chart/component.rb +309 -0
- data/app/components/poetry/charts/composed_chart/preview.rb +62 -0
- data/app/components/poetry/charts/composed_chart/style.rb +24 -0
- data/app/components/poetry/charts/container/component.html.erb +4 -0
- data/app/components/poetry/charts/container/component.rb +80 -0
- data/app/components/poetry/charts/container/preview.rb +45 -0
- data/app/components/poetry/charts/container/style.rb +22 -0
- data/app/components/poetry/charts/error_bars.rb +35 -0
- data/app/components/poetry/charts/legend_content/component.html.erb +10 -0
- data/app/components/poetry/charts/legend_content/component.rb +122 -0
- data/app/components/poetry/charts/legend_content/preview.rb +23 -0
- data/app/components/poetry/charts/legend_content/style.rb +26 -0
- data/app/components/poetry/charts/line_chart/component.html.erb +85 -0
- data/app/components/poetry/charts/line_chart/component.rb +252 -0
- data/app/components/poetry/charts/line_chart/preview.rb +115 -0
- data/app/components/poetry/charts/line_chart/style.rb +28 -0
- data/app/components/poetry/charts/live.rb +296 -0
- data/app/components/poetry/charts/motion.rb +98 -0
- data/app/components/poetry/charts/pie_chart/component.html.erb +36 -0
- data/app/components/poetry/charts/pie_chart/component.rb +256 -0
- data/app/components/poetry/charts/pie_chart/preview.rb +100 -0
- data/app/components/poetry/charts/pie_chart/style.rb +19 -0
- data/app/components/poetry/charts/polar_family.rb +95 -0
- data/app/components/poetry/charts/radar_chart/component.html.erb +73 -0
- data/app/components/poetry/charts/radar_chart/component.rb +329 -0
- data/app/components/poetry/charts/radar_chart/preview.rb +97 -0
- data/app/components/poetry/charts/radar_chart/style.rb +21 -0
- data/app/components/poetry/charts/radial_bar_chart/component.html.erb +65 -0
- data/app/components/poetry/charts/radial_bar_chart/component.rb +424 -0
- data/app/components/poetry/charts/radial_bar_chart/preview.rb +99 -0
- data/app/components/poetry/charts/radial_bar_chart/style.rb +27 -0
- data/app/components/poetry/charts/reference_marks.rb +156 -0
- data/app/components/poetry/charts/scatter_chart/component.html.erb +55 -0
- data/app/components/poetry/charts/scatter_chart/component.rb +396 -0
- data/app/components/poetry/charts/scatter_chart/preview.rb +93 -0
- data/app/components/poetry/charts/scatter_chart/style.rb +22 -0
- data/app/components/poetry/charts/tooltip_content/component.html.erb +19 -0
- data/app/components/poetry/charts/tooltip_content/component.rb +168 -0
- data/app/components/poetry/charts/tooltip_content/preview.rb +39 -0
- data/app/components/poetry/charts/tooltip_content/style.rb +31 -0
- data/app/components/poetry/charts/tooltip_layer/component.html.erb +6 -0
- data/app/components/poetry/charts/tooltip_layer/component.rb +61 -0
- data/app/components/poetry/charts/tooltip_layer/style.rb +13 -0
- data/app/components/poetry/charts/tooltip_wiring.rb +167 -0
- data/app/helpers/poetry/charts/components_helper.rb +125 -0
- data/app/javascript/poetry/charts/adapter_controller.js +75 -0
- data/app/javascript/poetry/charts/adapter_registry.js +52 -0
- data/app/javascript/poetry/charts/adapters/chartjs.js +86 -0
- data/app/javascript/poetry/charts/d3.js +14 -0
- data/app/javascript/poetry/charts/index.js +67 -0
- data/app/javascript/poetry/charts/live/renderer.js +456 -0
- data/app/javascript/poetry/charts/live_controller.js +195 -0
- data/app/javascript/poetry/charts/motion/flip.js +169 -0
- data/app/javascript/poetry/charts/motion/sector.js +62 -0
- data/app/javascript/poetry/charts/motion/tween.js +105 -0
- data/app/javascript/poetry/charts/motion_controller.js +230 -0
- data/app/javascript/poetry/charts/tooltip_controller.js +331 -0
- data/app/javascript/poetry/charts/window_controller.js +195 -0
- data/config/component_descriptions.yml +14 -0
- data/config/component_registry.yml +3055 -0
- data/config/controllers_manifest.json +100 -0
- data/config/importmap.rb +10 -0
- data/lib/poetry/charts/cartesian.rb +277 -0
- data/lib/poetry/charts/config.rb +149 -0
- data/lib/poetry/charts/engine.rb +76 -0
- data/lib/poetry/charts/geometry/area.rb +68 -0
- data/lib/poetry/charts/geometry/curve.rb +327 -0
- data/lib/poetry/charts/geometry/line.rb +64 -0
- data/lib/poetry/charts/geometry/nice_ticks.rb +220 -0
- data/lib/poetry/charts/geometry/path.rb +96 -0
- data/lib/poetry/charts/geometry/scale/band.rb +81 -0
- data/lib/poetry/charts/geometry/scale/linear.rb +127 -0
- data/lib/poetry/charts/geometry/stack.rb +129 -0
- data/lib/poetry/charts/geometry/ticks.rb +103 -0
- data/lib/poetry/charts/geometry.rb +66 -0
- data/lib/poetry/charts/polar.rb +179 -0
- data/lib/poetry/charts/spec.rb +108 -0
- data/lib/poetry/charts/theme_style.rb +53 -0
- data/lib/poetry/charts/version.rb +8 -0
- data/lib/poetry/charts.rb +114 -0
- data/lib/poetry-charts.rb +4 -0
- data/themes/default.css +146 -0
- data/themes/luma.css +139 -0
- data/themes/lyra.css +140 -0
- data/themes/maia.css +139 -0
- data/themes/mira.css +139 -0
- data/themes/nova.css +139 -0
- data/themes/rhea.css +139 -0
- data/themes/sera.css +140 -0
- data/themes/vega.css +144 -0
- data/vendor/d3-kernel/LICENSE-d3.txt +17 -0
- data/vendor/d3-kernel/LICENSE-decimal.js-light.txt +25 -0
- data/vendor/d3-kernel/LICENSE-recharts.txt +26 -0
- data/vendor/d3-kernel/README.md +30 -0
- data/vendor/d3-kernel/build.mjs +66 -0
- data/vendor/d3-kernel/entry.js +27 -0
- data/vendor/d3-kernel/recharts/state/cartesianAxisSlice.ts +6 -0
- data/vendor/d3-kernel/recharts/util/scale/getNiceTickValues.ts +310 -0
- data/vendor/d3-kernel/recharts/util/scale/util/arithmetic.ts +54 -0
- data/vendor/d3-kernel/recharts/util/types.ts +5 -0
- metadata +186 -0
data/themes/lyra.css
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/* poetry-charts lyra theme - chart chrome under upstream
|
|
2
|
+
* style-lyra.css (pinned clone 1773ecfe, the shadcn@4.19.0 release). Upstream ships ONE chart rule (cn-chart-tooltip) and lyra squares it (rounded-none); everything else carries the default treatment.
|
|
3
|
+
* Same contract as default.css: imported layer(base) by the host entry;
|
|
4
|
+
* POETRY_THEME=lyra drives the gates and golden set. */
|
|
5
|
+
|
|
6
|
+
/* MARK: Tooltip */
|
|
7
|
+
.cn-chart-tooltip {
|
|
8
|
+
@apply gap-1.5 rounded-none border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.cn-chart-tooltip-label {
|
|
12
|
+
@apply font-medium;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.cn-chart-tooltip-row {
|
|
16
|
+
@apply gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.cn-chart-tooltip-name {
|
|
20
|
+
@apply text-muted-foreground;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.cn-chart-tooltip-value {
|
|
24
|
+
@apply font-mono font-medium text-foreground tabular-nums;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* MARK: Legend */
|
|
28
|
+
.cn-chart-legend {
|
|
29
|
+
@apply gap-4;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.cn-chart-legend-align-top {
|
|
33
|
+
@apply pb-3;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.cn-chart-legend-align-bottom {
|
|
37
|
+
@apply pt-3;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.cn-chart-legend-item {
|
|
41
|
+
@apply gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.cn-chart-legend-swatch {
|
|
45
|
+
@apply h-2 w-2 rounded-[2px];
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* MARK: Cartesian chrome (shared across families) */
|
|
49
|
+
.cn-chart-grid-line {
|
|
50
|
+
@apply stroke-border/50;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.cn-chart-tick {
|
|
54
|
+
@apply fill-muted-foreground;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.cn-chart-cursor-line {
|
|
58
|
+
@apply stroke-border;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.cn-chart-cursor-band {
|
|
62
|
+
@apply fill-muted;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.cn-chart-reference-line {
|
|
66
|
+
@apply stroke-muted-foreground;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.cn-chart-reference-area {
|
|
70
|
+
@apply fill-muted-foreground;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.cn-chart-reference-dot {
|
|
74
|
+
@apply fill-background stroke-muted-foreground;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.cn-chart-error-bar {
|
|
78
|
+
@apply stroke-foreground;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.cn-chart-brush-track {
|
|
82
|
+
@apply fill-muted;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.cn-chart-brush-window {
|
|
86
|
+
@apply fill-foreground/10 stroke-border;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.cn-chart-brush-handle {
|
|
90
|
+
@apply fill-muted-foreground;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.cn-chart-label {
|
|
94
|
+
@apply fill-foreground;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/* MARK: Polar chrome */
|
|
98
|
+
.cn-chart-polar-grid-line {
|
|
99
|
+
@apply fill-none stroke-border;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.cn-chart-polar-grid-circle {
|
|
103
|
+
@apply fill-none stroke-border/50;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.cn-chart-radial-track {
|
|
107
|
+
@apply fill-muted;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.cn-chart-radial-disc-muted {
|
|
111
|
+
@apply fill-muted;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.cn-chart-radial-disc-background {
|
|
115
|
+
@apply fill-background;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.cn-chart-inside-label {
|
|
119
|
+
@apply fill-background text-xs;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.cn-chart-radial-inside-label {
|
|
123
|
+
@apply fill-white capitalize mix-blend-luminosity text-[11px];
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.cn-chart-center-title {
|
|
127
|
+
@apply fill-foreground text-3xl font-bold;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.cn-chart-center-title-radial {
|
|
131
|
+
@apply fill-foreground text-4xl font-bold;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.cn-chart-center-title-compact {
|
|
135
|
+
@apply fill-foreground text-2xl font-bold;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.cn-chart-center-subtitle {
|
|
139
|
+
@apply fill-muted-foreground;
|
|
140
|
+
}
|
data/themes/maia.css
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/* poetry-charts maia theme - chart chrome under upstream
|
|
2
|
+
* style-maia.css (pinned clone 1773ecfe, the shadcn@4.19.0 release). Upstream ships ONE chart rule (cn-chart-tooltip) and maia's is a token-order twin of default (same set) - the whole file carries the default treatment.
|
|
3
|
+
* Same contract as default.css: imported layer(base) by the host entry;
|
|
4
|
+
* POETRY_THEME=maia drives the gates and golden set. */
|
|
5
|
+
/* MARK: Tooltip */
|
|
6
|
+
.cn-chart-tooltip {
|
|
7
|
+
@apply gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.cn-chart-tooltip-label {
|
|
11
|
+
@apply font-medium;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.cn-chart-tooltip-row {
|
|
15
|
+
@apply gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.cn-chart-tooltip-name {
|
|
19
|
+
@apply text-muted-foreground;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.cn-chart-tooltip-value {
|
|
23
|
+
@apply font-mono font-medium text-foreground tabular-nums;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* MARK: Legend */
|
|
27
|
+
.cn-chart-legend {
|
|
28
|
+
@apply gap-4;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.cn-chart-legend-align-top {
|
|
32
|
+
@apply pb-3;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.cn-chart-legend-align-bottom {
|
|
36
|
+
@apply pt-3;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.cn-chart-legend-item {
|
|
40
|
+
@apply gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.cn-chart-legend-swatch {
|
|
44
|
+
@apply h-2 w-2 rounded-[2px];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* MARK: Cartesian chrome (shared across families) */
|
|
48
|
+
.cn-chart-grid-line {
|
|
49
|
+
@apply stroke-border/50;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.cn-chart-tick {
|
|
53
|
+
@apply fill-muted-foreground;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.cn-chart-cursor-line {
|
|
57
|
+
@apply stroke-border;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.cn-chart-cursor-band {
|
|
61
|
+
@apply fill-muted;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.cn-chart-reference-line {
|
|
65
|
+
@apply stroke-muted-foreground;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.cn-chart-reference-area {
|
|
69
|
+
@apply fill-muted-foreground;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.cn-chart-reference-dot {
|
|
73
|
+
@apply fill-background stroke-muted-foreground;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.cn-chart-error-bar {
|
|
77
|
+
@apply stroke-foreground;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.cn-chart-brush-track {
|
|
81
|
+
@apply fill-muted;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.cn-chart-brush-window {
|
|
85
|
+
@apply fill-foreground/10 stroke-border;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.cn-chart-brush-handle {
|
|
89
|
+
@apply fill-muted-foreground;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.cn-chart-label {
|
|
93
|
+
@apply fill-foreground;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* MARK: Polar chrome */
|
|
97
|
+
.cn-chart-polar-grid-line {
|
|
98
|
+
@apply fill-none stroke-border;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.cn-chart-polar-grid-circle {
|
|
102
|
+
@apply fill-none stroke-border/50;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.cn-chart-radial-track {
|
|
106
|
+
@apply fill-muted;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.cn-chart-radial-disc-muted {
|
|
110
|
+
@apply fill-muted;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.cn-chart-radial-disc-background {
|
|
114
|
+
@apply fill-background;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.cn-chart-inside-label {
|
|
118
|
+
@apply fill-background text-xs;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.cn-chart-radial-inside-label {
|
|
122
|
+
@apply fill-white capitalize mix-blend-luminosity text-[11px];
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.cn-chart-center-title {
|
|
126
|
+
@apply fill-foreground text-3xl font-bold;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.cn-chart-center-title-radial {
|
|
130
|
+
@apply fill-foreground text-4xl font-bold;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.cn-chart-center-title-compact {
|
|
134
|
+
@apply fill-foreground text-2xl font-bold;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.cn-chart-center-subtitle {
|
|
138
|
+
@apply fill-muted-foreground;
|
|
139
|
+
}
|
data/themes/mira.css
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/* poetry-charts mira theme - chart chrome under upstream
|
|
2
|
+
* style-mira.css (pinned clone 1773ecfe, the shadcn@4.19.0 release). Upstream ships ONE chart rule (cn-chart-tooltip); mira compacts its type (text-xs/relaxed) - everything else carries the default treatment.
|
|
3
|
+
* Same contract as default.css: imported layer(base) by the host entry;
|
|
4
|
+
* POETRY_THEME=mira drives the gates and golden set. */
|
|
5
|
+
/* MARK: Tooltip */
|
|
6
|
+
.cn-chart-tooltip {
|
|
7
|
+
@apply gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs/relaxed shadow-xl;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.cn-chart-tooltip-label {
|
|
11
|
+
@apply font-medium;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.cn-chart-tooltip-row {
|
|
15
|
+
@apply gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.cn-chart-tooltip-name {
|
|
19
|
+
@apply text-muted-foreground;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.cn-chart-tooltip-value {
|
|
23
|
+
@apply font-mono font-medium text-foreground tabular-nums;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* MARK: Legend */
|
|
27
|
+
.cn-chart-legend {
|
|
28
|
+
@apply gap-4;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.cn-chart-legend-align-top {
|
|
32
|
+
@apply pb-3;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.cn-chart-legend-align-bottom {
|
|
36
|
+
@apply pt-3;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.cn-chart-legend-item {
|
|
40
|
+
@apply gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.cn-chart-legend-swatch {
|
|
44
|
+
@apply h-2 w-2 rounded-[2px];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* MARK: Cartesian chrome (shared across families) */
|
|
48
|
+
.cn-chart-grid-line {
|
|
49
|
+
@apply stroke-border/50;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.cn-chart-tick {
|
|
53
|
+
@apply fill-muted-foreground;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.cn-chart-cursor-line {
|
|
57
|
+
@apply stroke-border;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.cn-chart-cursor-band {
|
|
61
|
+
@apply fill-muted;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.cn-chart-reference-line {
|
|
65
|
+
@apply stroke-muted-foreground;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.cn-chart-reference-area {
|
|
69
|
+
@apply fill-muted-foreground;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.cn-chart-reference-dot {
|
|
73
|
+
@apply fill-background stroke-muted-foreground;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.cn-chart-error-bar {
|
|
77
|
+
@apply stroke-foreground;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.cn-chart-brush-track {
|
|
81
|
+
@apply fill-muted;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.cn-chart-brush-window {
|
|
85
|
+
@apply fill-foreground/10 stroke-border;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.cn-chart-brush-handle {
|
|
89
|
+
@apply fill-muted-foreground;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.cn-chart-label {
|
|
93
|
+
@apply fill-foreground;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* MARK: Polar chrome */
|
|
97
|
+
.cn-chart-polar-grid-line {
|
|
98
|
+
@apply fill-none stroke-border;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.cn-chart-polar-grid-circle {
|
|
102
|
+
@apply fill-none stroke-border/50;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.cn-chart-radial-track {
|
|
106
|
+
@apply fill-muted;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.cn-chart-radial-disc-muted {
|
|
110
|
+
@apply fill-muted;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.cn-chart-radial-disc-background {
|
|
114
|
+
@apply fill-background;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.cn-chart-inside-label {
|
|
118
|
+
@apply fill-background text-xs;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.cn-chart-radial-inside-label {
|
|
122
|
+
@apply fill-white capitalize mix-blend-luminosity text-[11px];
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.cn-chart-center-title {
|
|
126
|
+
@apply fill-foreground text-3xl font-bold;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.cn-chart-center-title-radial {
|
|
130
|
+
@apply fill-foreground text-4xl font-bold;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.cn-chart-center-title-compact {
|
|
134
|
+
@apply fill-foreground text-2xl font-bold;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.cn-chart-center-subtitle {
|
|
138
|
+
@apply fill-muted-foreground;
|
|
139
|
+
}
|
data/themes/nova.css
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/* poetry-charts nova theme - chart chrome under upstream
|
|
2
|
+
* style-nova.css (pinned clone 1773ecfe, the shadcn@4.19.0 release). Upstream ships ONE chart rule (cn-chart-tooltip) and nova's is byte-identical to default - the whole file carries the default treatment.
|
|
3
|
+
* Same contract as default.css: imported layer(base) by the host entry;
|
|
4
|
+
* POETRY_THEME=nova drives the gates and golden set. */
|
|
5
|
+
/* MARK: Tooltip */
|
|
6
|
+
.cn-chart-tooltip {
|
|
7
|
+
@apply gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.cn-chart-tooltip-label {
|
|
11
|
+
@apply font-medium;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.cn-chart-tooltip-row {
|
|
15
|
+
@apply gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.cn-chart-tooltip-name {
|
|
19
|
+
@apply text-muted-foreground;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.cn-chart-tooltip-value {
|
|
23
|
+
@apply font-mono font-medium text-foreground tabular-nums;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* MARK: Legend */
|
|
27
|
+
.cn-chart-legend {
|
|
28
|
+
@apply gap-4;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.cn-chart-legend-align-top {
|
|
32
|
+
@apply pb-3;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.cn-chart-legend-align-bottom {
|
|
36
|
+
@apply pt-3;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.cn-chart-legend-item {
|
|
40
|
+
@apply gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.cn-chart-legend-swatch {
|
|
44
|
+
@apply h-2 w-2 rounded-[2px];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* MARK: Cartesian chrome (shared across families) */
|
|
48
|
+
.cn-chart-grid-line {
|
|
49
|
+
@apply stroke-border/50;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.cn-chart-tick {
|
|
53
|
+
@apply fill-muted-foreground;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.cn-chart-cursor-line {
|
|
57
|
+
@apply stroke-border;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.cn-chart-cursor-band {
|
|
61
|
+
@apply fill-muted;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.cn-chart-reference-line {
|
|
65
|
+
@apply stroke-muted-foreground;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.cn-chart-reference-area {
|
|
69
|
+
@apply fill-muted-foreground;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.cn-chart-reference-dot {
|
|
73
|
+
@apply fill-background stroke-muted-foreground;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.cn-chart-error-bar {
|
|
77
|
+
@apply stroke-foreground;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.cn-chart-brush-track {
|
|
81
|
+
@apply fill-muted;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.cn-chart-brush-window {
|
|
85
|
+
@apply fill-foreground/10 stroke-border;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.cn-chart-brush-handle {
|
|
89
|
+
@apply fill-muted-foreground;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.cn-chart-label {
|
|
93
|
+
@apply fill-foreground;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* MARK: Polar chrome */
|
|
97
|
+
.cn-chart-polar-grid-line {
|
|
98
|
+
@apply fill-none stroke-border;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.cn-chart-polar-grid-circle {
|
|
102
|
+
@apply fill-none stroke-border/50;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.cn-chart-radial-track {
|
|
106
|
+
@apply fill-muted;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.cn-chart-radial-disc-muted {
|
|
110
|
+
@apply fill-muted;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.cn-chart-radial-disc-background {
|
|
114
|
+
@apply fill-background;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.cn-chart-inside-label {
|
|
118
|
+
@apply fill-background text-xs;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.cn-chart-radial-inside-label {
|
|
122
|
+
@apply fill-white capitalize mix-blend-luminosity text-[11px];
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.cn-chart-center-title {
|
|
126
|
+
@apply fill-foreground text-3xl font-bold;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.cn-chart-center-title-radial {
|
|
130
|
+
@apply fill-foreground text-4xl font-bold;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.cn-chart-center-title-compact {
|
|
134
|
+
@apply fill-foreground text-2xl font-bold;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.cn-chart-center-subtitle {
|
|
138
|
+
@apply fill-muted-foreground;
|
|
139
|
+
}
|
data/themes/rhea.css
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/* poetry-charts rhea theme - chart chrome under upstream
|
|
2
|
+
* style-rhea.css (pinned clone 1773ecfe, the shadcn@4.19.0 release). Upstream ships ONE chart rule (cn-chart-tooltip); rhea reskins it (popover surface, ring-for-border, rounded-xl) - everything else carries the default treatment.
|
|
3
|
+
* Same contract as default.css: imported layer(base) by the host entry;
|
|
4
|
+
* POETRY_THEME=rhea drives the gates and golden set. */
|
|
5
|
+
/* MARK: Tooltip */
|
|
6
|
+
.cn-chart-tooltip {
|
|
7
|
+
@apply bg-popover text-popover-foreground ring-foreground/5 dark:ring-foreground/10 gap-1.5 rounded-xl px-2.5 py-1.5 text-xs shadow-lg ring-1;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.cn-chart-tooltip-label {
|
|
11
|
+
@apply font-medium;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.cn-chart-tooltip-row {
|
|
15
|
+
@apply gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.cn-chart-tooltip-name {
|
|
19
|
+
@apply text-muted-foreground;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.cn-chart-tooltip-value {
|
|
23
|
+
@apply font-mono font-medium text-foreground tabular-nums;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* MARK: Legend */
|
|
27
|
+
.cn-chart-legend {
|
|
28
|
+
@apply gap-4;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.cn-chart-legend-align-top {
|
|
32
|
+
@apply pb-3;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.cn-chart-legend-align-bottom {
|
|
36
|
+
@apply pt-3;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.cn-chart-legend-item {
|
|
40
|
+
@apply gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.cn-chart-legend-swatch {
|
|
44
|
+
@apply h-2 w-2 rounded-[2px];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* MARK: Cartesian chrome (shared across families) */
|
|
48
|
+
.cn-chart-grid-line {
|
|
49
|
+
@apply stroke-border/50;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.cn-chart-tick {
|
|
53
|
+
@apply fill-muted-foreground;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.cn-chart-cursor-line {
|
|
57
|
+
@apply stroke-border;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.cn-chart-cursor-band {
|
|
61
|
+
@apply fill-muted;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.cn-chart-reference-line {
|
|
65
|
+
@apply stroke-muted-foreground;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.cn-chart-reference-area {
|
|
69
|
+
@apply fill-muted-foreground;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.cn-chart-reference-dot {
|
|
73
|
+
@apply fill-background stroke-muted-foreground;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.cn-chart-error-bar {
|
|
77
|
+
@apply stroke-foreground;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.cn-chart-brush-track {
|
|
81
|
+
@apply fill-muted;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.cn-chart-brush-window {
|
|
85
|
+
@apply fill-foreground/10 stroke-border;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.cn-chart-brush-handle {
|
|
89
|
+
@apply fill-muted-foreground;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.cn-chart-label {
|
|
93
|
+
@apply fill-foreground;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* MARK: Polar chrome */
|
|
97
|
+
.cn-chart-polar-grid-line {
|
|
98
|
+
@apply fill-none stroke-border;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.cn-chart-polar-grid-circle {
|
|
102
|
+
@apply fill-none stroke-border/50;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.cn-chart-radial-track {
|
|
106
|
+
@apply fill-muted;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.cn-chart-radial-disc-muted {
|
|
110
|
+
@apply fill-muted;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.cn-chart-radial-disc-background {
|
|
114
|
+
@apply fill-background;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.cn-chart-inside-label {
|
|
118
|
+
@apply fill-background text-xs;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.cn-chart-radial-inside-label {
|
|
122
|
+
@apply fill-white capitalize mix-blend-luminosity text-[11px];
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.cn-chart-center-title {
|
|
126
|
+
@apply fill-foreground text-3xl font-bold;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.cn-chart-center-title-radial {
|
|
130
|
+
@apply fill-foreground text-4xl font-bold;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.cn-chart-center-title-compact {
|
|
134
|
+
@apply fill-foreground text-2xl font-bold;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.cn-chart-center-subtitle {
|
|
138
|
+
@apply fill-muted-foreground;
|
|
139
|
+
}
|