@konce-pt/angular 0.4.0 → 0.6.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@konce-pt/angular",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "Open-source Angular 22 component library on Signals & Signal Forms — 70+ components, rich data table, zoneless, fully tokenized. Selektory kpt-*, klasy Kpt*.",
5
5
  "license": "MIT",
6
6
  "author": "konce.pt",
@@ -43,6 +43,14 @@
43
43
  "types": "./types/konce-pt-angular-icons.d.ts",
44
44
  "default": "./fesm2022/konce-pt-angular-icons.mjs"
45
45
  },
46
+ "./charts": {
47
+ "types": "./types/konce-pt-angular-charts.d.ts",
48
+ "default": "./fesm2022/konce-pt-angular-charts.mjs"
49
+ },
50
+ "./grid": {
51
+ "types": "./types/konce-pt-angular-grid.d.ts",
52
+ "default": "./fesm2022/konce-pt-angular-grid.mjs"
53
+ },
46
54
  "./package.json": {
47
55
  "default": "./package.json"
48
56
  }
@@ -0,0 +1,356 @@
1
+ import * as _konce_pt_angular_charts from '@konce-pt/angular/charts';
2
+ import * as _angular_core from '@angular/core';
3
+
4
+ type KptChartType = 'line' | 'bar' | 'pie' | 'doughnut' | 'polarArea' | 'radar';
5
+ /** Tryb interpolacji linii dla wykresu liniowego. */
6
+ type KptLineInterpolation = 'linear' | 'cubic' | 'cubic-monotonic';
7
+ /** Orientacja słupków. */
8
+ type KptBarOrientation = 'vertical' | 'horizontal';
9
+ /** Pojedyncza seria danych. Kolejność wartości odpowiada `labels`. */
10
+ interface KptChartSeries {
11
+ /** Nazwa serii (legenda, tooltip). */
12
+ name: string;
13
+ /** Wartości; długość zwykle równa liczbie etykiet. */
14
+ data: number[];
15
+ /** Kolor (CSS). Domyślnie z palety tokenów. */
16
+ color?: string;
17
+ }
18
+ type KptLegendPosition = 'top' | 'bottom' | 'left' | 'right';
19
+ type KptAlign = 'start' | 'center' | 'end';
20
+ type KptPointStyle = 'circle' | 'rect' | 'rectRot' | 'triangle' | 'line';
21
+ interface KptLegendTitle {
22
+ display?: boolean;
23
+ text?: string;
24
+ position?: KptAlign;
25
+ }
26
+ interface KptLegendOptions {
27
+ display?: boolean;
28
+ position?: KptLegendPosition;
29
+ align?: KptAlign;
30
+ pointStyle?: KptPointStyle;
31
+ title?: KptLegendTitle;
32
+ }
33
+ interface KptFont {
34
+ family?: string;
35
+ size?: number;
36
+ weight?: string | number;
37
+ }
38
+ interface KptPadding {
39
+ top?: number;
40
+ bottom?: number;
41
+ }
42
+ interface KptTitleOptions {
43
+ display?: boolean;
44
+ text?: string;
45
+ align?: KptAlign;
46
+ color?: string;
47
+ font?: KptFont;
48
+ padding?: KptPadding;
49
+ }
50
+ /** Kontekst przekazywany do formatera tooltipa. */
51
+ interface KptTooltipContext {
52
+ series: string;
53
+ label: string;
54
+ value: number;
55
+ }
56
+ interface KptTooltipOptions {
57
+ enabled?: boolean;
58
+ format?: (ctx: KptTooltipContext) => string;
59
+ }
60
+ interface KptAnimationOptions {
61
+ enabled?: boolean;
62
+ /** Czas trwania w ms (domyślnie 400). */
63
+ duration?: number;
64
+ /** Opóźnienie startu w ms (domyślnie 0). */
65
+ delay?: number;
66
+ /** Przesunięcie kolejnych elementów w ms (`delay = index * stagger`). */
67
+ stagger?: number;
68
+ }
69
+ /** Pełna konfiguracja wykresu. Jeden kształt dla wszystkich typów. */
70
+ interface KptChartConfig {
71
+ type: KptChartType;
72
+ /** Etykiety osi kategorii / wycinków. */
73
+ labels: string[];
74
+ series: KptChartSeries[];
75
+ /** Bar: orientacja słupków (domyślnie 'vertical'). */
76
+ orientation?: KptBarOrientation;
77
+ /** Line: tryb interpolacji (domyślnie 'linear'). */
78
+ interpolation?: KptLineInterpolation;
79
+ /** Line: wypełnienie obszaru pod linią. */
80
+ area?: boolean;
81
+ /** Line: punkty danych widoczne (domyślnie true). */
82
+ points?: boolean;
83
+ /** Line: pionowa prowadnica + podświetlona etykieta osi X przy hoverze punktu. */
84
+ crosshair?: boolean;
85
+ /** Doughnut/PolarArea/Radar: promień wewnętrzny 0..1 (doughnut, domyślnie 0.6). */
86
+ innerRadius?: number;
87
+ /** Bar: promień zaokrąglenia rogów w px (domyślnie 4). */
88
+ borderRadius?: number;
89
+ animation?: KptAnimationOptions;
90
+ legend?: KptLegendOptions;
91
+ title?: KptTitleOptions;
92
+ subtitle?: KptTitleOptions;
93
+ tooltip?: KptTooltipOptions;
94
+ }
95
+ /** Punkt w układzie SVG. */
96
+ interface KptPoint {
97
+ x: number;
98
+ y: number;
99
+ }
100
+ /** Prostokąt obszaru rysowania (plot area). */
101
+ interface KptRect {
102
+ x: number;
103
+ y: number;
104
+ width: number;
105
+ height: number;
106
+ }
107
+
108
+ interface KptChartLegendItem {
109
+ key: string;
110
+ name: string;
111
+ color: string;
112
+ hidden: boolean;
113
+ }
114
+
115
+ interface KptChartTooltipRow {
116
+ name: string;
117
+ value: string;
118
+ color: string;
119
+ }
120
+ interface KptChartTooltipState {
121
+ /** Pozycja pozioma w % szerokości kontenera (0..100). */
122
+ x: number;
123
+ /** Pozycja pionowa w % wysokości kontenera (0..100). */
124
+ y: number;
125
+ label: string;
126
+ rows: KptChartTooltipRow[];
127
+ }
128
+
129
+ interface AxisLabel {
130
+ x: number;
131
+ y: number;
132
+ text: string;
133
+ anchor: 'start' | 'middle' | 'end';
134
+ }
135
+ interface GridLine {
136
+ x1: number;
137
+ y1: number;
138
+ x2: number;
139
+ y2: number;
140
+ }
141
+ interface LinePoint {
142
+ x: number;
143
+ y: number;
144
+ value: number;
145
+ label: string;
146
+ }
147
+ interface LineSeriesVm {
148
+ key: string;
149
+ name: string;
150
+ color: string;
151
+ path: string;
152
+ area: string | null;
153
+ points: LinePoint[];
154
+ }
155
+ interface LineVm {
156
+ plot: {
157
+ x: number;
158
+ y: number;
159
+ width: number;
160
+ height: number;
161
+ };
162
+ series: LineSeriesVm[];
163
+ grid: GridLine[];
164
+ valueLabels: AxisLabel[];
165
+ catLabels: AxisLabel[];
166
+ showPoints: boolean;
167
+ }
168
+ interface BarVm {
169
+ orientation: 'vertical' | 'horizontal';
170
+ bars: {
171
+ key: string;
172
+ path: string;
173
+ color: string;
174
+ name: string;
175
+ label: string;
176
+ value: number;
177
+ tipX: number;
178
+ tipY: number;
179
+ index: number;
180
+ }[];
181
+ grid: GridLine[];
182
+ valueLabels: AxisLabel[];
183
+ catLabels: AxisLabel[];
184
+ }
185
+ interface SliceVm {
186
+ key: string;
187
+ path: string;
188
+ color: string;
189
+ label: string;
190
+ value: number;
191
+ tipX: number;
192
+ tipY: number;
193
+ }
194
+ interface RadarSeriesVm {
195
+ key: string;
196
+ name: string;
197
+ color: string;
198
+ polygon: string;
199
+ points: LinePoint[];
200
+ }
201
+ interface RadarVm {
202
+ rings: string[];
203
+ axisLines: GridLine[];
204
+ axisLabels: AxisLabel[];
205
+ series: RadarSeriesVm[];
206
+ }
207
+ /**
208
+ * Wykres SVG w pełni konfigurowalny przez obiekt `config`.
209
+ * Typy: line, bar, pie, doughnut, polarArea, radar. Sygnały + zoneless,
210
+ * natywne renderowanie SVG (bez manipulacji DOM). Rdzeń obliczeń: `../core`.
211
+ *
212
+ * @example
213
+ * <kpt-chart [config]="{ type: 'line', labels: ['Sty','Lut','Mar'],
214
+ * series: [{ name: 'Sprzedaż', data: [12, 19, 7] }] }" />
215
+ */
216
+ declare class KptChart {
217
+ readonly config: _angular_core.InputSignal<KptChartConfig>;
218
+ /** Szerokość viewBoxa (jednostki SVG). Wykres skaluje się do kontenera. */
219
+ readonly width: _angular_core.InputSignal<number>;
220
+ /** Wysokość viewBoxa (jednostki SVG). */
221
+ readonly height: _angular_core.InputSignal<number>;
222
+ protected readonly hidden: _angular_core.WritableSignal<ReadonlySet<string>>;
223
+ protected readonly highlighted: _angular_core.WritableSignal<string | null>;
224
+ protected readonly tooltip: _angular_core.WritableSignal<KptChartTooltipState | null>;
225
+ /** Indeks kategorii pod kursorem (dla prowadnicy crosshair w wykresie liniowym). */
226
+ protected readonly activeIndex: _angular_core.WritableSignal<number | null>;
227
+ protected readonly type: _angular_core.Signal<_konce_pt_angular_charts.KptChartType>;
228
+ protected readonly anim: _angular_core.Signal<Required<KptAnimationOptions>>;
229
+ protected readonly legendOpts: _angular_core.Signal<{
230
+ display: boolean;
231
+ position: _konce_pt_angular_charts.KptLegendPosition;
232
+ align: KptAlign;
233
+ pointStyle: _konce_pt_angular_charts.KptPointStyle;
234
+ title: _konce_pt_angular_charts.KptLegendTitle | undefined;
235
+ }>;
236
+ protected readonly titleOpts: _angular_core.Signal<_konce_pt_angular_charts.KptTitleOptions | undefined>;
237
+ protected readonly subtitleOpts: _angular_core.Signal<_konce_pt_angular_charts.KptTitleOptions | undefined>;
238
+ protected readonly titleStyle: _angular_core.Signal<string>;
239
+ protected readonly subtitleStyle: _angular_core.Signal<string>;
240
+ protected readonly legendItems: _angular_core.Signal<KptChartLegendItem[]>;
241
+ protected readonly lineVm: _angular_core.Signal<LineVm | null>;
242
+ protected readonly barVm: _angular_core.Signal<BarVm | null>;
243
+ protected readonly pieVm: _angular_core.Signal<SliceVm[] | null>;
244
+ protected readonly radarVm: _angular_core.Signal<RadarVm | null>;
245
+ protected readonly crosshair: _angular_core.Signal<{
246
+ x: number;
247
+ y1: number;
248
+ y2: number;
249
+ text: string;
250
+ labelX: number;
251
+ labelY: number;
252
+ pillX: number;
253
+ pillY: number;
254
+ pillW: number;
255
+ pillH: number;
256
+ } | null>;
257
+ protected onLineEnter(idx: number, tipX: number, tipY: number, name: string, label: string, value: number, color: string): void;
258
+ protected onLineLeave(): void;
259
+ protected showTip(tipX: number, tipY: number, name: string, label: string, value: number, color: string): void;
260
+ protected hideTip(): void;
261
+ protected onToggle(key: string): void;
262
+ protected onHighlight(key: string | null): void;
263
+ /** Czy dany element ma być wygaszony (aktywne podświetlenie innego). */
264
+ protected dim(key: string): boolean;
265
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptChart, never>;
266
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KptChart, "kpt-chart", never, { "config": { "alias": "config"; "required": true; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
267
+ }
268
+
269
+ interface NiceScale {
270
+ min: number;
271
+ max: number;
272
+ step: number;
273
+ ticks: number[];
274
+ }
275
+ /**
276
+ * „Ładna" skala obejmująca [dataMin, dataMax] z ~`maxTicks` podziałkami.
277
+ * Wynikowy zakres jest rozszerzony do równych kroków; zawsze zawiera 0,
278
+ * gdy dane są jednoznakowe (typowe dla słupków/linii wartościowych).
279
+ */
280
+ declare function niceScale(dataMin: number, dataMax: number, maxTicks?: number): NiceScale;
281
+
282
+ /** Ścieżka linii dla wybranego trybu interpolacji. */
283
+ declare function linePath(points: KptPoint[], mode?: KptLineInterpolation): string;
284
+ /** Ścieżka obszaru pod linią (domknięta do `baselineY`). */
285
+ declare function areaPath(points: KptPoint[], baselineY: number, mode?: KptLineInterpolation): string;
286
+
287
+ interface BarGeom {
288
+ rect: KptRect;
289
+ /** Ścieżka słupka z zaokrąglonymi rogami „od strony wzrostu". */
290
+ path: string;
291
+ seriesIndex: number;
292
+ categoryIndex: number;
293
+ value: number;
294
+ }
295
+ interface BarLayout {
296
+ bars: BarGeom[];
297
+ /** Podziałki osi wartości (wartość → współrzędna). */
298
+ ticks: {
299
+ value: number;
300
+ pos: number;
301
+ }[];
302
+ /** Współrzędna linii bazowej (0). */
303
+ baseline: number;
304
+ scale: ReturnType<typeof niceScale>;
305
+ }
306
+ /**
307
+ * Wylicza słupki dla obszaru `plot`.
308
+ * @param seriesData wartości[serie][kategorie]
309
+ * @param plot obszar rysowania {x,y,width,height}
310
+ * @param orientation pionowa (rośnie w górę) lub pozioma (rośnie w prawo)
311
+ * @param borderRadius promień zaokrąglenia w px
312
+ */
313
+ declare function barLayout(seriesData: number[][], categoryCount: number, plot: KptRect, orientation: KptBarOrientation, borderRadius: number): BarLayout;
314
+
315
+ interface ArcSlice {
316
+ path: string;
317
+ /** Kąt środka wycinka (do pozycjonowania etykiet/tooltipa). */
318
+ midAngle: number;
319
+ startAngle: number;
320
+ endAngle: number;
321
+ value: number;
322
+ }
323
+ /**
324
+ * Wycinki pie/doughnut: kąt proporcjonalny do wartości (Σ = 2π).
325
+ * `innerRadius` w px (0 dla pie).
326
+ */
327
+ declare function pieSlices(values: number[], cx: number, cy: number, outerRadius: number, innerRadius?: number): ArcSlice[];
328
+ /**
329
+ * Wycinki polar area: równy kąt (2π/N), promień proporcjonalny do wartości.
330
+ * `maxValue` skaluje promień do `outerRadius`.
331
+ */
332
+ declare function polarSlices(values: number[], cx: number, cy: number, outerRadius: number, maxValue?: number): ArcSlice[];
333
+
334
+ interface RadarAxis {
335
+ /** Punkt na obwodzie (koniec osi). */
336
+ end: KptPoint;
337
+ angle: number;
338
+ labelIndex: number;
339
+ }
340
+ interface RadarGrid {
341
+ /** Poziomy siatki (pierścienie) jako ścieżki wielokątów. */
342
+ rings: string[];
343
+ axes: RadarAxis[];
344
+ }
345
+ /** Siatka radaru: `levels` koncentrycznych wielokątów + osie do etykiet. */
346
+ declare function radarGrid(count: number, cx: number, cy: number, radius: number, levels?: number): RadarGrid;
347
+ /** Punkty wielokąta serii (wartość → promień, skalowane do `maxValue`). */
348
+ declare function radarPoints(values: number[], cx: number, cy: number, radius: number, maxValue: number): KptPoint[];
349
+
350
+ /** Kolejność kolorów dla kolejnych serii / wycinków. */
351
+ declare const KPT_CHART_PALETTE: readonly string[];
352
+ /** Kolor serii/wycinka: jawny z danych albo z palety (cyklicznie). */
353
+ declare function seriesColor(explicit: string | undefined, index: number, palette?: readonly string[]): string;
354
+
355
+ export { KPT_CHART_PALETTE, KptChart, areaPath, barLayout, linePath, niceScale, pieSlices, polarSlices, radarGrid, radarPoints, seriesColor };
356
+ export type { KptAlign, KptAnimationOptions, KptBarOrientation, KptChartConfig, KptChartSeries, KptChartType, KptFont, KptLegendOptions, KptLegendPosition, KptLegendTitle, KptLineInterpolation, KptPadding, KptPointStyle, KptTitleOptions, KptTooltipContext, KptTooltipOptions };
@@ -0,0 +1,136 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ /**
4
+ * Siatka Koncept UI — CSS Grid sterowany custom properties z `@konce-pt/grid`.
5
+ * Dyrektywa, nie komponent: nie dokłada elementu do DOM i działa na dowolnym
6
+ * tagu (`<section>`, `<ul>`, `<main>`). Alias `kpt-grid` dla zgodności.
7
+ *
8
+ * Zmiana `columns` nie manipuluje klasami — ustawia zmienną inline, a układ
9
+ * przelicza natywny silnik CSS.
10
+ *
11
+ * Wymaga arkusza `@konce-pt/grid` (`import '@konce-pt/grid';`).
12
+ *
13
+ * @example
14
+ * <div kptGrid [columns]="18" gap="1.5rem">
15
+ * <div [kptCol]="18" [kptColLg]="5">Sidebar</div>
16
+ * <div [kptCol]="18" [kptColLg]="13">Treść</div>
17
+ * </div>
18
+ */
19
+ declare class KptGrid {
20
+ /** Liczba kolumn — baza mobile-first. Domyślnie 12 (z CSS). */
21
+ readonly columns: _angular_core.InputSignal<number | undefined>;
22
+ /** Liczba kolumn od breakpointa SM (>= 640px). */
23
+ readonly columnsSm: _angular_core.InputSignal<number | undefined>;
24
+ /** Liczba kolumn od breakpointa MD (>= 768px). */
25
+ readonly columnsMd: _angular_core.InputSignal<number | undefined>;
26
+ /** Liczba kolumn od breakpointa LG (>= 1024px). */
27
+ readonly columnsLg: _angular_core.InputSignal<number | undefined>;
28
+ /** Liczba kolumn od breakpointa XL (>= 1280px). */
29
+ readonly columnsXl: _angular_core.InputSignal<number | undefined>;
30
+ /** Liczba kolumn od breakpointa 2XL (>= 1536px). */
31
+ readonly columns2xl: _angular_core.InputSignal<number | undefined>;
32
+ /** Odstęp w obu osiach, np. `'1.5rem'` albo `'var(--kpt-space-6)'`. */
33
+ readonly gap: _angular_core.InputSignal<string | undefined>;
34
+ /** Odstęp między kolumnami — nadpisuje `gap` w poziomie. */
35
+ readonly gapX: _angular_core.InputSignal<string | undefined>;
36
+ /** Odstęp między wierszami — nadpisuje `gap` w pionie. */
37
+ readonly gapY: _angular_core.InputSignal<string | undefined>;
38
+ /**
39
+ * Tryb kontenerowy: spany dzieci reagują na szerokość TEJ siatki, nie okna.
40
+ * Liczba kolumn i odstępy nadal idą za viewportem — `@container` nie potrafi
41
+ * odpytać elementu o jego własny kontener.
42
+ */
43
+ readonly container: _angular_core.InputSignalWithTransform<boolean, unknown>;
44
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptGrid, never>;
45
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KptGrid, "[kptGrid], kpt-grid", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "columnsSm": { "alias": "columnsSm"; "required": false; "isSignal": true; }; "columnsMd": { "alias": "columnsMd"; "required": false; "isSignal": true; }; "columnsLg": { "alias": "columnsLg"; "required": false; "isSignal": true; }; "columnsXl": { "alias": "columnsXl"; "required": false; "isSignal": true; }; "columns2xl": { "alias": "columns2xl"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "gapX": { "alias": "gapX"; "required": false; "isSignal": true; }; "gapY": { "alias": "gapY"; "required": false; "isSignal": true; }; "container": { "alias": "container"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
46
+ }
47
+
48
+ /** Rozpiętość kolumny: liczba, `'full'` (cała szerokość) albo dowolna wartość CSS. */
49
+ type KptColSpan = number | string;
50
+ /**
51
+ * Kolumna siatki `kptGrid` — rozpiętość mobile-first z nadpisaniami per breakpoint.
52
+ *
53
+ * Wartość podana dla mniejszego breakpointa obowiązuje aż do następnego, który ją
54
+ * nadpisze: `[kptCol]="12" [kptColLg]="5"` daje 12 na mobile, tablecie i `md`,
55
+ * a dopiero od `lg` — 5.
56
+ *
57
+ * Dyrektywa ustawia wyłącznie custom properties inline; nie dodaje ani nie usuwa klas.
58
+ *
59
+ * @example
60
+ * <div kptGrid>
61
+ * <div [kptCol]="12" [kptColSm]="6" [kptColMd]="4">Karta</div>
62
+ * </div>
63
+ */
64
+ declare class KptCol {
65
+ /** Rozpiętość kolumny — baza mobile-first. */
66
+ readonly span: _angular_core.InputSignal<KptColSpan | undefined>;
67
+ /** Rozpiętość od breakpointa SM (>= 640px). */
68
+ readonly spanSm: _angular_core.InputSignal<KptColSpan | undefined>;
69
+ /** Rozpiętość od breakpointa MD (>= 768px). */
70
+ readonly spanMd: _angular_core.InputSignal<KptColSpan | undefined>;
71
+ /** Rozpiętość od breakpointa LG (>= 1024px). */
72
+ readonly spanLg: _angular_core.InputSignal<KptColSpan | undefined>;
73
+ /** Rozpiętość od breakpointa XL (>= 1280px). */
74
+ readonly spanXl: _angular_core.InputSignal<KptColSpan | undefined>;
75
+ /** Rozpiętość od breakpointa 2XL (>= 1536px). */
76
+ readonly span2xl: _angular_core.InputSignal<KptColSpan | undefined>;
77
+ /** Numer linii, od której zaczyna się kolumna (1-based) — pozwala robić offsety. */
78
+ readonly start: _angular_core.InputSignal<string | number | undefined>;
79
+ /** Kolejność wizualna (`order`). Nie zmienia kolejności w DOM ani dla czytników ekranu. */
80
+ readonly order: _angular_core.InputSignal<string | number | undefined>;
81
+ /** Wyrównanie w poprzek osi (`align-self`): `start`, `end`, `center`, `stretch`, `baseline`. */
82
+ readonly self: _angular_core.InputSignal<string | undefined>;
83
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptCol, never>;
84
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KptCol, "[kptCol], [kptColSm], [kptColMd], [kptColLg], [kptColXl], [kptCol2xl], [kptColStart], [kptColOrder], [kptColSelf]", never, { "span": { "alias": "kptCol"; "required": false; "isSignal": true; }; "spanSm": { "alias": "kptColSm"; "required": false; "isSignal": true; }; "spanMd": { "alias": "kptColMd"; "required": false; "isSignal": true; }; "spanLg": { "alias": "kptColLg"; "required": false; "isSignal": true; }; "spanXl": { "alias": "kptColXl"; "required": false; "isSignal": true; }; "span2xl": { "alias": "kptCol2xl"; "required": false; "isSignal": true; }; "start": { "alias": "kptColStart"; "required": false; "isSignal": true; }; "order": { "alias": "kptColOrder"; "required": false; "isSignal": true; }; "self": { "alias": "kptColSelf"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
85
+ }
86
+
87
+ type KptFlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse';
88
+ type KptFlexWrap = 'wrap' | 'nowrap' | 'wrap-reverse';
89
+ type KptAlignment = 'start' | 'end' | 'center' | 'stretch' | 'baseline' | 'space-between' | 'space-around' | 'space-evenly';
90
+ /**
91
+ * Kontener flexbox Koncept UI — te same zmienne i breakpointy co `kptGrid`.
92
+ * Dla wartości bez odpowiednika w inputach (`grow`, `shrink`, `order` na dziecku)
93
+ * używa się klas utility: `kpt-grow-1`, `kpt-order-first`, `kpt-self-end`.
94
+ *
95
+ * Wymaga arkusza `@konce-pt/grid` (`import '@konce-pt/grid';`).
96
+ *
97
+ * @example
98
+ * <div kptFlex direction="column" directionMd="row" justify="space-between" gap="1rem">
99
+ * <span>Lewa</span>
100
+ * <span class="kpt-order-first kpt-order-md-none">Prawa</span>
101
+ * </div>
102
+ */
103
+ declare class KptFlex {
104
+ /** Kierunek osi głównej — baza mobile-first. */
105
+ readonly direction: _angular_core.InputSignal<KptFlexDirection | undefined>;
106
+ /** Kierunek od breakpointa MD (>= 768px). */
107
+ readonly directionMd: _angular_core.InputSignal<KptFlexDirection | undefined>;
108
+ /** Kierunek od breakpointa LG (>= 1024px). */
109
+ readonly directionLg: _angular_core.InputSignal<KptFlexDirection | undefined>;
110
+ /** Zawijanie elementów. */
111
+ readonly wrap: _angular_core.InputSignal<KptFlexWrap | undefined>;
112
+ /** Rozkład wzdłuż osi głównej (`justify-content`). */
113
+ readonly justify: _angular_core.InputSignal<KptAlignment | undefined>;
114
+ /** Rozkład wzdłuż osi głównej od breakpointa MD. */
115
+ readonly justifyMd: _angular_core.InputSignal<KptAlignment | undefined>;
116
+ /** Wyrównanie w poprzek osi (`align-items`). */
117
+ readonly align: _angular_core.InputSignal<KptAlignment | undefined>;
118
+ /** Wyrównanie w poprzek osi od breakpointa MD. */
119
+ readonly alignMd: _angular_core.InputSignal<KptAlignment | undefined>;
120
+ /** Odstęp w obu osiach. */
121
+ readonly gap: _angular_core.InputSignal<string | undefined>;
122
+ /** Odstęp w poziomie. */
123
+ readonly gapX: _angular_core.InputSignal<string | undefined>;
124
+ /** Odstęp w pionie. */
125
+ readonly gapY: _angular_core.InputSignal<string | undefined>;
126
+ /** Tryb kontenerowy — zmienne dzieci reagują na szerokość tego kontenera. */
127
+ readonly container: _angular_core.InputSignalWithTransform<boolean, unknown>;
128
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KptFlex, never>;
129
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KptFlex, "[kptFlex]", never, { "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "directionMd": { "alias": "directionMd"; "required": false; "isSignal": true; }; "directionLg": { "alias": "directionLg"; "required": false; "isSignal": true; }; "wrap": { "alias": "wrap"; "required": false; "isSignal": true; }; "justify": { "alias": "justify"; "required": false; "isSignal": true; }; "justifyMd": { "alias": "justifyMd"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "alignMd": { "alias": "alignMd"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "gapX": { "alias": "gapX"; "required": false; "isSignal": true; }; "gapY": { "alias": "gapY"; "required": false; "isSignal": true; }; "container": { "alias": "container"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
130
+ }
131
+
132
+ /** Komplet dyrektyw układu — `imports: [...KPT_GRID_IMPORTS]`. */
133
+ declare const KPT_GRID_IMPORTS: readonly [typeof KptGrid, typeof KptCol, typeof KptFlex];
134
+
135
+ export { KPT_GRID_IMPORTS, KptCol, KptFlex, KptGrid };
136
+ export type { KptAlignment, KptColSpan, KptFlexDirection, KptFlexWrap };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@konce-pt/angular",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "Open-source Angular 22 component library on Signals & Signal Forms — 70+ components, rich data table, zoneless, fully tokenized. Selektory kpt-*, klasy Kpt*.",
5
5
  "license": "MIT",
6
6
  "author": "konce.pt",
@@ -42,6 +42,14 @@
42
42
  "./icons": {
43
43
  "types": "./dist/types/konce-pt-angular-icons.d.ts",
44
44
  "default": "./dist/fesm2022/konce-pt-angular-icons.mjs"
45
+ },
46
+ "./charts": {
47
+ "types": "./dist/types/konce-pt-angular-charts.d.ts",
48
+ "default": "./dist/fesm2022/konce-pt-angular-charts.mjs"
49
+ },
50
+ "./grid": {
51
+ "types": "./dist/types/konce-pt-angular-grid.d.ts",
52
+ "default": "./dist/fesm2022/konce-pt-angular-grid.mjs"
45
53
  }
46
54
  },
47
55
  "peerDependencies": {