@fylib/catalog 0.1.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.
@@ -0,0 +1,29 @@
1
+ import { UIComponentDefinition } from '@fylib/core';
2
+ export type AccordionExpandMode = 'single' | 'multiple';
3
+ export type AccordionSize = 'sm' | 'md' | 'lg';
4
+ export type AccordionStatus = 'default' | 'success' | 'error';
5
+ export interface AccordionItem {
6
+ id: string;
7
+ title: string;
8
+ subtitle?: string;
9
+ content?: string;
10
+ disabled?: boolean;
11
+ icon?: string;
12
+ }
13
+ export interface AccordionProps {
14
+ items?: AccordionItem[];
15
+ activeIndex?: number | number[];
16
+ expandMode?: AccordionExpandMode;
17
+ size?: AccordionSize;
18
+ status?: AccordionStatus;
19
+ bordered?: boolean;
20
+ flush?: boolean;
21
+ animated?: boolean;
22
+ lazy?: boolean;
23
+ iconPosition?: 'left' | 'right';
24
+ disabled?: boolean;
25
+ onOpen?: (index: number) => void;
26
+ onClose?: (index: number) => void;
27
+ onChange?: (activeIndex: number | number[]) => void;
28
+ }
29
+ export declare const AccordionDefinition: UIComponentDefinition<AccordionProps>;
@@ -0,0 +1,26 @@
1
+ export const AccordionDefinition = {
2
+ name: 'accordion',
3
+ version: '1.0.0',
4
+ defaultProps: {
5
+ items: [],
6
+ expandMode: 'single',
7
+ size: 'md',
8
+ status: 'default',
9
+ bordered: true,
10
+ flush: false,
11
+ animated: true,
12
+ lazy: false,
13
+ iconPosition: 'right',
14
+ disabled: false
15
+ },
16
+ variants: ['default', 'success', 'error'],
17
+ features: {
18
+ requiresLicenseFeature: 'basic-components',
19
+ animations: {
20
+ expand: 'accordion-expand',
21
+ collapse: 'accordion-collapse',
22
+ error: 'accordion-error-shake',
23
+ success: 'accordion-success-pulse'
24
+ }
25
+ }
26
+ };
@@ -0,0 +1,14 @@
1
+ import { UIComponentDefinition } from '@fylib/core';
2
+ import { IconSet } from '@fylib/config';
3
+ export interface ButtonProps {
4
+ label?: string;
5
+ variant: 'primary' | 'secondary' | 'ghost' | 'danger';
6
+ size: 'sm' | 'md' | 'lg';
7
+ disabled?: boolean;
8
+ loading?: boolean;
9
+ icon?: string;
10
+ iconName?: string;
11
+ iconSet?: IconSet;
12
+ onClick?: () => void;
13
+ }
14
+ export declare const ButtonDefinition: UIComponentDefinition<ButtonProps>;
@@ -0,0 +1,21 @@
1
+ export const ButtonDefinition = {
2
+ name: 'button',
3
+ version: '1.0.0',
4
+ defaultProps: {
5
+ variant: 'primary',
6
+ size: 'md',
7
+ disabled: false,
8
+ loading: false
9
+ },
10
+ variants: ['primary', 'secondary', 'ghost', 'danger'],
11
+ features: {
12
+ requiresLicenseFeature: 'basic-components',
13
+ animations: {
14
+ hover: 'button-hover-soft',
15
+ click: 'button-click-press'
16
+ },
17
+ effects: {
18
+ onSuccess: 'confetti'
19
+ }
20
+ }
21
+ };
@@ -0,0 +1,14 @@
1
+ import { UIComponentDefinition } from '@fylib/core';
2
+ export interface CardProps {
3
+ title?: string;
4
+ variant?: 'default' | 'elevated' | 'outlined';
5
+ mode?: 'default' | 'form';
6
+ mutedHeader?: boolean;
7
+ mutedFooter?: boolean;
8
+ footerText?: string;
9
+ scrollContent?: boolean;
10
+ activeAnimations?: boolean | null;
11
+ activeEffects?: boolean | null;
12
+ customStyles?: Record<string, string> | null;
13
+ }
14
+ export declare const CardDefinition: UIComponentDefinition<CardProps>;
@@ -0,0 +1,23 @@
1
+ export const CardDefinition = {
2
+ name: 'card',
3
+ version: '1.0.0',
4
+ defaultProps: {
5
+ variant: 'default',
6
+ mode: 'default',
7
+ mutedHeader: true,
8
+ mutedFooter: true,
9
+ scrollContent: false,
10
+ activeAnimations: null,
11
+ activeEffects: null,
12
+ customStyles: null
13
+ },
14
+ variants: ['default', 'elevated', 'outlined'],
15
+ features: {
16
+ animations: {
17
+ enter: 'card-fade-in'
18
+ },
19
+ effects: {
20
+ onSubmit: 'confetti'
21
+ }
22
+ }
23
+ };
@@ -0,0 +1,25 @@
1
+ import { UIComponentDefinition } from '@fylib/core';
2
+ export type ChartType = 'line' | 'bar' | 'area' | 'pie' | 'donut' | 'radar';
3
+ export interface ChartSeries {
4
+ name: string;
5
+ data: number[];
6
+ }
7
+ export interface ChartProps {
8
+ type: ChartType;
9
+ series: ChartSeries[];
10
+ categories?: string[];
11
+ title?: string;
12
+ subtitle?: string;
13
+ height?: string | number;
14
+ width?: string | number;
15
+ colors?: string[];
16
+ showLegend?: boolean;
17
+ showGrid?: boolean;
18
+ showLabels?: boolean;
19
+ stacked?: boolean;
20
+ animated?: boolean;
21
+ activeAnimations?: boolean | null;
22
+ activeEffects?: boolean | null;
23
+ customStyles?: Record<string, string> | null;
24
+ }
25
+ export declare const ChartDefinition: UIComponentDefinition<ChartProps>;
@@ -0,0 +1,27 @@
1
+ export const ChartDefinition = {
2
+ name: 'chart',
3
+ version: '1.0.0',
4
+ defaultProps: {
5
+ type: 'line',
6
+ series: [],
7
+ height: '350px',
8
+ width: '100%',
9
+ showLegend: true,
10
+ showGrid: true,
11
+ showLabels: true,
12
+ stacked: false,
13
+ animated: true,
14
+ activeAnimations: null,
15
+ activeEffects: null
16
+ },
17
+ variants: ['default', 'minimal', 'compact'],
18
+ features: {
19
+ animations: {
20
+ enter: 'chart-fade-in',
21
+ update: 'chart-data-update'
22
+ },
23
+ effects: {
24
+ onDataClick: 'confetti'
25
+ }
26
+ }
27
+ };
@@ -0,0 +1,20 @@
1
+ import { UIComponentDefinition } from '@fylib/core';
2
+ export type InputType = 'text' | 'password' | 'email' | 'number' | 'search';
3
+ export interface InputProps {
4
+ value?: string;
5
+ placeholder?: string;
6
+ type?: InputType;
7
+ disabled?: boolean;
8
+ readonly?: boolean;
9
+ mask?: string;
10
+ showPasswordToggle?: boolean;
11
+ iconLeft?: string;
12
+ iconRight?: string;
13
+ size?: 'sm' | 'md' | 'lg';
14
+ status?: 'default' | 'success' | 'error';
15
+ onInput?: (value: string) => void;
16
+ onChange?: (value: string) => void;
17
+ onFocus?: () => void;
18
+ onBlur?: () => void;
19
+ }
20
+ export declare const InputDefinition: UIComponentDefinition<InputProps>;
@@ -0,0 +1,21 @@
1
+ export const InputDefinition = {
2
+ name: 'input',
3
+ version: '1.0.0',
4
+ defaultProps: {
5
+ type: 'text',
6
+ disabled: false,
7
+ readonly: false,
8
+ showPasswordToggle: false,
9
+ size: 'md',
10
+ status: 'default'
11
+ },
12
+ variants: ['default', 'success', 'error'],
13
+ features: {
14
+ requiresLicenseFeature: 'basic-components',
15
+ animations: {
16
+ focus: 'input-focus-glow',
17
+ error: 'input-error-shake',
18
+ success: 'input-success-pulse'
19
+ }
20
+ }
21
+ };
@@ -0,0 +1,33 @@
1
+ import { UIComponentDefinition } from '@fylib/core';
2
+ export type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
3
+ export type ModalPosition = 'center' | 'top' | 'bottom';
4
+ export type ModalStatus = 'default' | 'success' | 'error' | 'warning';
5
+ export interface ModalProps {
6
+ visible?: boolean;
7
+ title?: string;
8
+ subtitle?: string;
9
+ content?: string;
10
+ size?: ModalSize;
11
+ position?: ModalPosition;
12
+ status?: ModalStatus;
13
+ closable?: boolean;
14
+ closeOnEscape?: boolean;
15
+ closeOnBackdrop?: boolean;
16
+ showHeader?: boolean;
17
+ showFooter?: boolean;
18
+ showConfirmButton?: boolean;
19
+ showCancelButton?: boolean;
20
+ confirmText?: string;
21
+ cancelText?: string;
22
+ loading?: boolean;
23
+ centered?: boolean;
24
+ blockScroll?: boolean;
25
+ draggable?: boolean;
26
+ resizable?: boolean;
27
+ icon?: string;
28
+ onOpen?: () => void;
29
+ onClose?: () => void;
30
+ onConfirm?: () => void;
31
+ onCancel?: () => void;
32
+ }
33
+ export declare const ModalDefinition: UIComponentDefinition<ModalProps>;
@@ -0,0 +1,34 @@
1
+ export const ModalDefinition = {
2
+ name: 'modal',
3
+ version: '1.0.0',
4
+ defaultProps: {
5
+ visible: false,
6
+ size: 'md',
7
+ position: 'center',
8
+ status: 'default',
9
+ closable: true,
10
+ closeOnEscape: true,
11
+ closeOnBackdrop: true,
12
+ showHeader: true,
13
+ showFooter: false,
14
+ showConfirmButton: false,
15
+ showCancelButton: false,
16
+ confirmText: 'Confirmar',
17
+ cancelText: 'Cancelar',
18
+ loading: false,
19
+ centered: true,
20
+ blockScroll: true,
21
+ draggable: false,
22
+ resizable: false
23
+ },
24
+ variants: ['default', 'success', 'error', 'warning'],
25
+ features: {
26
+ requiresLicenseFeature: 'basic-components',
27
+ animations: {
28
+ open: 'modal-fade-in',
29
+ close: 'modal-fade-out',
30
+ error: 'modal-error-shake',
31
+ success: 'modal-success-pulse'
32
+ }
33
+ }
34
+ };
@@ -0,0 +1,33 @@
1
+ import { UIComponentDefinition } from '@fylib/core';
2
+ export interface NotificationItem {
3
+ id: string;
4
+ title: string;
5
+ description: string;
6
+ date: Date | string;
7
+ read: boolean;
8
+ type?: 'info' | 'success' | 'warning' | 'error';
9
+ icon?: string;
10
+ details?: string;
11
+ actionUrl?: string;
12
+ }
13
+ export interface NotificationMenuProps {
14
+ notifications: NotificationItem[];
15
+ unreadCount?: number;
16
+ showAllNotifications?: boolean;
17
+ maxNotifications?: number;
18
+ enableClearAll?: boolean;
19
+ enableAccordion?: boolean;
20
+ showViewAll?: boolean;
21
+ viewAllPosition?: 'header-left' | 'header-right' | 'footer-left' | 'footer-right';
22
+ markAllAsReadOnOpen?: boolean;
23
+ markAsReadOnClick?: boolean;
24
+ readApiEndpoint?: string;
25
+ readApiMethod?: 'POST' | 'PUT' | 'PATCH';
26
+ readApiHeaders?: Record<string, string>;
27
+ onRead?: (notification: NotificationItem) => void;
28
+ onReadAll?: (notifications: NotificationItem[]) => void;
29
+ activeAnimations?: boolean | null;
30
+ activeEffects?: boolean | null;
31
+ customStyles?: Record<string, string> | null;
32
+ }
33
+ export declare const NotificationMenuDefinition: UIComponentDefinition<NotificationMenuProps>;
@@ -0,0 +1,25 @@
1
+ export const NotificationMenuDefinition = {
2
+ name: 'notification-menu',
3
+ version: '1.0.0',
4
+ defaultProps: {
5
+ notifications: [],
6
+ unreadCount: 0,
7
+ showAllNotifications: false,
8
+ maxNotifications: 5,
9
+ enableClearAll: true,
10
+ enableAccordion: true,
11
+ showViewAll: true,
12
+ viewAllPosition: 'footer-right',
13
+ markAllAsReadOnOpen: false,
14
+ markAsReadOnClick: true,
15
+ readApiMethod: 'POST',
16
+ activeAnimations: null,
17
+ activeEffects: null
18
+ },
19
+ features: {
20
+ animations: {
21
+ open: 'dropdown-in',
22
+ close: 'dropdown-out'
23
+ }
24
+ }
25
+ };
@@ -0,0 +1,29 @@
1
+ import { UIComponentDefinition } from '@fylib/core';
2
+ export interface SelectOption {
3
+ label: string;
4
+ value: string;
5
+ disabled?: boolean;
6
+ icon?: string;
7
+ }
8
+ export interface SelectProps {
9
+ options: SelectOption[];
10
+ value?: string | string[];
11
+ disabled?: boolean;
12
+ readonly?: boolean;
13
+ searchable?: boolean;
14
+ showCheckbox?: boolean;
15
+ closeOnSelect?: boolean;
16
+ loading?: boolean;
17
+ clearable?: boolean;
18
+ placeholder?: string;
19
+ size?: 'sm' | 'md' | 'lg';
20
+ status?: 'default' | 'success' | 'error';
21
+ iconLeft?: string;
22
+ iconRight?: string;
23
+ onChange?: (value: string | string[]) => void;
24
+ onFocus?: () => void;
25
+ onBlur?: () => void;
26
+ onOpen?: () => void;
27
+ onClose?: () => void;
28
+ }
29
+ export declare const SelectDefinition: UIComponentDefinition<SelectProps>;
@@ -0,0 +1,19 @@
1
+ export const SelectDefinition = {
2
+ name: 'select',
3
+ version: '1.0.0',
4
+ defaultProps: {
5
+ disabled: false,
6
+ readonly: false,
7
+ size: 'md',
8
+ status: 'default',
9
+ },
10
+ variants: ['default', 'success', 'error'],
11
+ features: {
12
+ requiresLicenseFeature: 'basic-components',
13
+ animations: {
14
+ focus: 'input-focus-glow',
15
+ error: 'input-error-shake',
16
+ success: 'input-success-pulse',
17
+ },
18
+ },
19
+ };
@@ -0,0 +1,46 @@
1
+ import { UIComponentDefinition } from '@fylib/core';
2
+ import { IconSet } from '@fylib/config';
3
+ export interface TableColumn {
4
+ key: string;
5
+ label: string;
6
+ width?: string;
7
+ sortable?: boolean;
8
+ align?: 'left' | 'center' | 'right';
9
+ iconName?: string;
10
+ iconSet?: IconSet;
11
+ hidden?: boolean;
12
+ }
13
+ export interface TableAction {
14
+ id: string;
15
+ label?: string;
16
+ iconName?: string;
17
+ iconSet?: IconSet;
18
+ variant?: 'primary' | 'secondary' | 'ghost' | 'danger';
19
+ onClick?: (row: any) => void;
20
+ }
21
+ export interface TableProps {
22
+ data: any[];
23
+ columns: TableColumn[];
24
+ title?: string;
25
+ subtitle?: string;
26
+ footer?: string;
27
+ loading?: boolean;
28
+ showHeader?: boolean;
29
+ showFooter?: boolean;
30
+ showPagination?: boolean;
31
+ showSearch?: boolean;
32
+ searchTargets?: string[];
33
+ currentPage?: number;
34
+ pageSize?: number;
35
+ totalItems?: number;
36
+ actions?: TableAction[];
37
+ rowClickable?: boolean;
38
+ variant?: 'default' | 'striped' | 'bordered' | 'compact';
39
+ stickyHeader?: boolean;
40
+ scrollable?: boolean;
41
+ maxHeight?: string;
42
+ activeAnimations?: boolean | null;
43
+ activeEffects?: boolean | null;
44
+ customStyles?: Record<string, string> | null;
45
+ }
46
+ export declare const TableDefinition: UIComponentDefinition<TableProps>;
@@ -0,0 +1,31 @@
1
+ export const TableDefinition = {
2
+ name: 'table',
3
+ version: '1.0.0',
4
+ defaultProps: {
5
+ data: [],
6
+ columns: [],
7
+ variant: 'default',
8
+ showHeader: true,
9
+ showFooter: false,
10
+ showPagination: false,
11
+ showSearch: false,
12
+ searchTargets: [],
13
+ currentPage: 1,
14
+ pageSize: 10,
15
+ totalItems: 0,
16
+ stickyHeader: false,
17
+ scrollable: true,
18
+ activeAnimations: null,
19
+ activeEffects: null
20
+ },
21
+ variants: ['default', 'striped', 'bordered', 'compact'],
22
+ features: {
23
+ animations: {
24
+ enter: 'table-fade-in',
25
+ rowEnter: 'table-row-enter'
26
+ },
27
+ effects: {
28
+ rowClick: 'confetti'
29
+ }
30
+ }
31
+ };
@@ -0,0 +1,17 @@
1
+ import { UIComponentDefinition } from '@fylib/core';
2
+ export type ToastType = 'info' | 'success' | 'warning' | 'error';
3
+ export type ToastPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center';
4
+ export interface ToastProps {
5
+ id?: string;
6
+ title?: string;
7
+ message: string;
8
+ type?: ToastType;
9
+ duration?: number;
10
+ showIcon?: boolean;
11
+ closable?: boolean;
12
+ position?: ToastPosition;
13
+ activeAnimations?: boolean | null;
14
+ activeEffects?: boolean | null;
15
+ customStyles?: Record<string, string> | null;
16
+ }
17
+ export declare const ToastDefinition: UIComponentDefinition<ToastProps>;
@@ -0,0 +1,19 @@
1
+ export const ToastDefinition = {
2
+ name: 'toast',
3
+ version: '1.0.0',
4
+ defaultProps: {
5
+ type: 'info',
6
+ duration: 3000,
7
+ showIcon: true,
8
+ closable: true,
9
+ position: 'top-right',
10
+ activeAnimations: null,
11
+ activeEffects: null
12
+ },
13
+ features: {
14
+ animations: {
15
+ enter: 'toast-slide-in',
16
+ leave: 'toast-slide-out'
17
+ }
18
+ }
19
+ };
@@ -0,0 +1,12 @@
1
+ export * from './components/button';
2
+ export * from './components/input';
3
+ export * from './components/card';
4
+ export * from './components/table';
5
+ export * from './components/select';
6
+ export * from './components/modal';
7
+ export * from './components/accordion';
8
+ export * from './components/select';
9
+ export * from './components/chart';
10
+ export * from './components/toast';
11
+ export * from './components/notification-menu';
12
+ export * from './layouts/app-layout';
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ export * from './components/button';
2
+ export * from './components/input';
3
+ export * from './components/card';
4
+ export * from './components/table';
5
+ export * from './components/select';
6
+ export * from './components/modal';
7
+ export * from './components/accordion';
8
+ export * from './components/select';
9
+ export * from './components/chart';
10
+ export * from './components/toast';
11
+ export * from './components/notification-menu';
12
+ export * from './layouts/app-layout';
@@ -0,0 +1,2 @@
1
+ import { UILayoutDefinition } from '@fylib/core';
2
+ export declare const AppLayoutDefinition: UILayoutDefinition;
@@ -0,0 +1,10 @@
1
+ export const AppLayoutDefinition = {
2
+ name: 'app-layout',
3
+ version: '1.0.0',
4
+ slots: [
5
+ { name: 'header', required: false },
6
+ { name: 'sidebar', required: false },
7
+ { name: 'content', required: true },
8
+ { name: 'footer', required: false }
9
+ ]
10
+ };
package/package.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@fylib/catalog",
3
+ "version": "0.1.0",
4
+ "main": "dist/index.js",
5
+ "types": "dist/index.d.ts",
6
+ "files": ["dist"],
7
+ "publishConfig": {
8
+ "access": "public"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc -p tsconfig.json"
12
+ },
13
+ "dependencies": {
14
+ "@fylib/core": "workspace:*",
15
+ "@fylib/theme": "workspace:*",
16
+ "@fylib/animation": "workspace:*"
17
+ },
18
+ "devDependencies": {
19
+ "typescript": "catalog:",
20
+ "@types/node": "catalog:"
21
+ }
22
+ }