@stfrigerio/sito-template 0.1.21 → 0.1.23

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.
@@ -0,0 +1,115 @@
1
+ import { ReactNode } from 'react';
2
+ /**
3
+ * Column configuration for the Table component
4
+ * @template T - The type of data objects in the table
5
+ */
6
+ export interface Column<T = any> {
7
+ /** The key to access the data field in each row object */
8
+ key: string;
9
+ /** The display text for the column header */
10
+ header: string;
11
+ /** Whether this column can be sorted */
12
+ sortable?: boolean;
13
+ /** Whether this column can be filtered */
14
+ filterable?: boolean;
15
+ /** CSS width value for the column */
16
+ width?: string;
17
+ /** Text alignment for the column content */
18
+ align?: 'left' | 'center' | 'right';
19
+ /** Custom renderer function for cell content */
20
+ render?: (value: any, item: T, index: number) => ReactNode;
21
+ /** Additional CSS class for the column */
22
+ className?: string;
23
+ }
24
+ /**
25
+ * Styling configuration for action buttons
26
+ */
27
+ export interface ActionButtonStyles {
28
+ /** Button size in pixels */
29
+ size?: number;
30
+ /** Border radius (CSS value or number for px) */
31
+ borderRadius?: string | number;
32
+ /** Button padding (CSS value) */
33
+ padding?: string;
34
+ /** Font size (CSS value or number for px) */
35
+ fontSize?: string | number;
36
+ /** Icon size (CSS value or number for px) */
37
+ iconSize?: string | number;
38
+ /** Additional CSS class name */
39
+ className?: string;
40
+ /** Inline styles object */
41
+ style?: React.CSSProperties;
42
+ }
43
+ /**
44
+ * Configuration for row action buttons
45
+ * @template T - The type of data objects in the table
46
+ */
47
+ export interface RowAction<T = any> {
48
+ /** Icon to display in the action button */
49
+ icon: ReactNode;
50
+ /** Accessible label for the action button */
51
+ label: string;
52
+ /** Function called when the action is clicked */
53
+ onClick: (item: T, index: number) => void;
54
+ /** Visual variant of the action button */
55
+ variant?: 'primary' | 'secondary' | 'danger' | 'warning' | 'success' | 'custom';
56
+ /** Function to determine if action should be disabled for specific row */
57
+ disabled?: (item: T) => boolean;
58
+ /** Custom CSS class for this specific action button */
59
+ className?: string;
60
+ /** Custom inline styles for this specific action button */
61
+ style?: React.CSSProperties;
62
+ /** Override button styling for this specific action */
63
+ buttonStyles?: ActionButtonStyles;
64
+ }
65
+ /**
66
+ * Props for the Table component
67
+ * @template T - The type of data objects in the table
68
+ */
69
+ export interface TableProps<T = any> {
70
+ /** Array of data objects to display in the table */
71
+ data: T[];
72
+ /** Column configuration defining how to display data fields */
73
+ columns: Column<T>[];
74
+ /** Field name to use as unique identifier for rows (defaults to 'id') */
75
+ keyField?: string;
76
+ /** Optional title displayed above the table */
77
+ title?: string;
78
+ /** Enable global search functionality */
79
+ searchable?: boolean;
80
+ /** Enable row selection with checkboxes */
81
+ selectable?: boolean;
82
+ /** Enable pagination (boolean for default settings or object for custom configuration) */
83
+ pagination?: boolean | {
84
+ pageSize?: number;
85
+ pageSizeOptions?: number[];
86
+ };
87
+ /** Function called when a table row is clicked */
88
+ onRowClick?: (item: T, index: number) => void;
89
+ /** Function called when row selection changes (only when selectable=true) */
90
+ onSelectionChange?: (selectedItems: T[]) => void;
91
+ /** Function that returns action buttons for selected rows (only when selectable=true) */
92
+ actions?: (selectedItems: T[]) => ReactNode;
93
+ /** Configuration for action buttons displayed in each row */
94
+ rowActions?: RowAction<T>[];
95
+ /** Global styling configuration for all action buttons */
96
+ actionButtonStyles?: ActionButtonStyles;
97
+ /** Message displayed when table is empty */
98
+ emptyMessage?: string;
99
+ /** Show loading state */
100
+ loading?: boolean;
101
+ /** Apply alternating row background colors */
102
+ striped?: boolean;
103
+ /** Enable hover effects on table rows */
104
+ hoverable?: boolean;
105
+ /** Use compact row spacing */
106
+ compact?: boolean;
107
+ /** Make table header sticky when scrolling */
108
+ stickyHeader?: boolean;
109
+ /** Enable Framer Motion animations (disable for better performance with large datasets) */
110
+ animated?: boolean;
111
+ /** Additional CSS class for the table container */
112
+ className?: string;
113
+ }
114
+ export declare const Table: <T extends Record<string, any>>(props: TableProps<T>) => JSX.Element;
115
+ //# sourceMappingURL=Table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/Table/Table.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { StoryObj } from '@storybook/react';
2
+ declare const meta: {
3
+ title: string;
4
+ component: <T extends Record<string, any>>(props: import("./Table").TableProps<T>) => JSX.Element;
5
+ parameters: {
6
+ layout: string;
7
+ };
8
+ argTypes: {
9
+ data: {
10
+ control: false;
11
+ };
12
+ columns: {
13
+ control: false;
14
+ };
15
+ rowActions: {
16
+ control: false;
17
+ };
18
+ onRowClick: {
19
+ action: string;
20
+ };
21
+ onSelectionChange: {
22
+ action: string;
23
+ };
24
+ };
25
+ };
26
+ export default meta;
27
+ type Story = StoryObj<typeof meta>;
28
+ export declare const Default: Story;
29
+ export declare const WithSearch: Story;
30
+ export declare const WithSelection: Story;
31
+ export declare const WithPagination: Story;
32
+ export declare const Striped: Story;
33
+ export declare const Compact: Story;
34
+ export declare const StickyHeader: Story;
35
+ export declare const Loading: Story;
36
+ export declare const Empty: Story;
37
+ export declare const NoAnimation: Story;
38
+ export declare const DebugActions: Story;
39
+ export declare const WithSimpleActions: Story;
40
+ export declare const CustomStyledActions: Story;
41
+ export declare const WithRowActions: Story;
42
+ export declare const CustomRendering: Story;
43
+ //# sourceMappingURL=Table.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/Table/Table.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAkDtD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;CAaoB,CAAA;AAE9B,eAAe,IAAI,CAAA;AACnB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAA;AAElC,eAAO,MAAM,OAAO,EAAE,KAMrB,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAOxB,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,KA6B3B,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAmB5B,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,KAQrB,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,KAQrB,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAe1B,CAAA;AAED,eAAO,MAAM,OAAO,EAAE,KAOrB,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,KAOnB,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAUzB,CAAA;AAwCD,eAAO,MAAM,YAAY,EAAE,KAkB1B,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,KAoB/B,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,KA+CjC,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KA4D5B,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,KAyG7B,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { Table } from './Table';
2
+ export type { Column, TableProps, RowAction, ActionButtonStyles } from './Table';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/Table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA"}
@@ -16,6 +16,7 @@ interface QuantifiableHabitsChartProps {
16
16
  habitEmojis?: {
17
17
  [key: string]: string;
18
18
  };
19
+ onDataPointClick?: (habit: string, date: string, value: number) => void;
19
20
  }
20
21
  export declare const QuantifiableHabitsChart: React.FC<QuantifiableHabitsChartProps>;
21
22
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"QuantifiableHabitsChart.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAA;AAInE,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAA;AAOnE,UAAU,SAAS;IACf,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAAA;CACvC;AAED,UAAU,4BAA4B;IAClC,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,QAAQ,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;IAC9D,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACvC,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CAC1C;AAcD,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CA8T1E,CAAA"}
1
+ {"version":3,"file":"QuantifiableHabitsChart.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAA;AAInE,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAA;AAOnE,UAAU,SAAS;IACf,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAAA;CACvC;AAUD,UAAU,4BAA4B;IAClC,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,QAAQ,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;IAC9D,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACvC,WAAW,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACvC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC1E;AAcD,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAsb1E,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"SleepChart.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/charts/SleepChart/SleepChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqC,MAAM,OAAO,CAAA;AAIzD,UAAU,SAAS;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED,UAAU,eAAe;IACrB,SAAS,EAAE,SAAS,EAAE,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC;AAOD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAoQhD,CAAA"}
1
+ {"version":3,"file":"SleepChart.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/charts/SleepChart/SleepChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAA;AAInE,UAAU,SAAS;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAWD,UAAU,eAAe;IACrB,SAAS,EAAE,SAAS,EAAE,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC;AAeD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAsXhD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"SunburstChart.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/charts/SunburstChart/SunburstChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAI7D,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAA;CAC9B;AAED,UAAU,kBAAkB;IACxB,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAgCD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAkiBtD,CAAA"}
1
+ {"version":3,"file":"SunburstChart.d.ts","sourceRoot":"","sources":["../../../../../src/components/organisms/charts/SunburstChart/SunburstChart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAI7D,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAA;CAC9B;AAED,UAAU,kBAAkB;IACxB,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAgCD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA8jBtD,CAAA"}