@pfm-platform/alerts-ui-mui 0.1.1
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/index.cjs +528 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +59 -0
- package/dist/index.d.ts +59 -0
- package/dist/index.js +522 -0
- package/dist/index.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/AlertList.tsx","../src/components/AlertSummary.tsx","../src/components/AlertCreateForm.tsx","../src/components/AlertEditForm.tsx","../src/components/AlertDeleteButton.tsx"],"names":["EmailIcon","SmsIcon","jsx","Card","jsxs","CardContent","Typography","Box","Chip","SOURCE_TYPES","useState","TextField","FormGroup","FormControlLabel","Checkbox","FormControl","InputLabel","Select","MenuItem","MuiAlert","Button","DeleteIcon","Dialog","DialogTitle","DialogContent","DialogActions"],"mappings":"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","file":"index.js","sourcesContent":["import { Box, Card, CardContent, List, ListItem, ListItemText, Typography, Chip } from '@mui/material';\nimport { Email as EmailIcon, Sms as SmsIcon } from '@mui/icons-material';\nimport { useAlerts } from '@pfm-platform/alerts-data-access';\nimport type { Alert } from '@pfm-platform/shared';\n\nexport interface AlertListProps {\n userId: string;\n /** Filter by alert type */\n filterType?: string;\n /** Filter by source type */\n filterSource?: string;\n /** Custom title for the list */\n title?: string;\n /** Maximum number of alerts to display */\n maxItems?: number;\n}\n\n/**\n * AlertList component displays user alerts with type badges and delivery indicators.\n * Supports filtering by alert type or source type.\n */\nexport function AlertList({\n userId,\n filterType,\n filterSource,\n title = 'Alerts',\n maxItems,\n}: AlertListProps) {\n const { data: alerts } = useAlerts({ userId });\n\n if (!alerts) {\n return (\n <Card>\n <CardContent>\n <Typography variant=\"h6\" gutterBottom>\n {title}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Loading alerts...\n </Typography>\n </CardContent>\n </Card>\n );\n }\n\n // Apply filters\n let filteredAlerts = alerts;\n if (filterType) {\n filteredAlerts = filteredAlerts.filter((alert) => alert.type === filterType);\n }\n if (filterSource) {\n filteredAlerts = filteredAlerts.filter((alert) => alert.source_type === filterSource);\n }\n\n // Apply max items limit\n const displayAlerts = maxItems ? filteredAlerts.slice(0, maxItems) : filteredAlerts;\n\n return (\n <Card>\n <CardContent>\n <Typography variant=\"h6\" gutterBottom>\n {title}\n </Typography>\n {displayAlerts.length === 0 ? (\n <Typography variant=\"body2\" color=\"text.secondary\">\n No alerts found\n </Typography>\n ) : (\n <List disablePadding>\n {displayAlerts.map((alert, index) => (\n <ListItem\n key={alert.id}\n divider={index < displayAlerts.length - 1}\n sx={{ px: 0, display: 'flex', flexDirection: 'column', alignItems: 'flex-start' }}\n >\n <Box sx={{ width: '100%', display: 'flex', alignItems: 'center', gap: 1, mb: 0.5 }}>\n <Chip label={alert.type} size=\"small\" color=\"primary\" />\n {alert.source_type && (\n <Chip label={alert.source_type} size=\"small\" variant=\"outlined\" />\n )}\n <Box sx={{ ml: 'auto', display: 'flex', gap: 0.5 }}>\n {alert.email_delivery && (\n <EmailIcon fontSize=\"small\" color=\"action\" titleAccess=\"Email delivery\" />\n )}\n {alert.sms_delivery && (\n <SmsIcon fontSize=\"small\" color=\"action\" titleAccess=\"SMS delivery\" />\n )}\n </Box>\n </Box>\n <ListItemText\n primary={`Alert ID: ${alert.id}`}\n secondary={alert.source_id ? `Source: ${alert.source_id}` : undefined}\n primaryTypographyProps={{ variant: 'body2' }}\n secondaryTypographyProps={{ variant: 'caption' }}\n />\n </ListItem>\n ))}\n </List>\n )}\n </CardContent>\n </Card>\n );\n}\n","import { Box, Card, CardContent, Typography, Grid, Chip } from '@mui/material';\nimport { useAlertFilters } from '@pfm-platform/alerts-feature';\n\nexport interface AlertSummaryProps {\n userId: string;\n /** Custom title for the summary */\n title?: string;\n /** Show type breakdown */\n showTypes?: boolean;\n /** Show delivery breakdown */\n showDelivery?: boolean;\n /** Show source breakdown */\n showSources?: boolean;\n}\n\n/**\n * AlertSummary component displays alert statistics grouped by type, delivery, and source.\n * Shows counts and categories for quick overview of alert configuration.\n */\nexport function AlertSummary({\n userId,\n title = 'Alert Summary',\n showTypes = true,\n showDelivery = true,\n showSources = true,\n}: AlertSummaryProps) {\n const filters = useAlertFilters(userId);\n\n if (!filters) {\n return (\n <Card>\n <CardContent>\n <Typography variant=\"h6\" gutterBottom>\n {title}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Loading alerts...\n </Typography>\n </CardContent>\n </Card>\n );\n }\n\n const alertTypes = Object.keys(filters.byType);\n const sourcTypes = Object.keys(filters.bySource);\n const totalAlerts =\n filters.byDelivery.email.length +\n filters.byDelivery.sms.length +\n filters.byDelivery.both.length;\n\n const hasData = totalAlerts > 0;\n\n return (\n <Card>\n <CardContent>\n <Typography variant=\"h6\" gutterBottom>\n {title}\n </Typography>\n {!hasData ? (\n <Typography variant=\"body2\" color=\"text.secondary\">\n No alerts configured\n </Typography>\n ) : (\n <Grid container spacing={3}>\n {/* Total Count */}\n <Grid size={12}>\n <Box>\n <Typography variant=\"body2\" color=\"text.secondary\">\n Total Alerts\n </Typography>\n <Typography variant=\"h4\" fontWeight=\"medium\">\n {totalAlerts}\n </Typography>\n </Box>\n </Grid>\n\n {/* Alert Types */}\n {showTypes && alertTypes.length > 0 && (\n <Grid size={12}>\n <Box>\n <Typography variant=\"body2\" color=\"text.secondary\" gutterBottom>\n By Type ({alertTypes.length} types)\n </Typography>\n <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 0.5 }}>\n {alertTypes.map((type) => (\n <Chip\n key={type}\n label={`${type} (${filters.byType[type].length})`}\n size=\"small\"\n color=\"primary\"\n variant=\"outlined\"\n />\n ))}\n </Box>\n </Box>\n </Grid>\n )}\n\n {/* Delivery Methods */}\n {showDelivery && (\n <Grid size={12}>\n <Box>\n <Typography variant=\"body2\" color=\"text.secondary\" gutterBottom>\n By Delivery Method\n </Typography>\n <Box sx={{ display: 'flex', gap: 1 }}>\n <Chip\n label={`Email: ${filters.byDelivery.email.length}`}\n size=\"small\"\n color=\"secondary\"\n />\n <Chip\n label={`SMS: ${filters.byDelivery.sms.length}`}\n size=\"small\"\n color=\"secondary\"\n />\n <Chip\n label={`Both: ${filters.byDelivery.both.length}`}\n size=\"small\"\n color=\"secondary\"\n />\n </Box>\n </Box>\n </Grid>\n )}\n\n {/* Source Types */}\n {showSources && sourcTypes.length > 0 && (\n <Grid size={12}>\n <Box>\n <Typography variant=\"body2\" color=\"text.secondary\" gutterBottom>\n By Source ({sourcTypes.length} sources)\n </Typography>\n <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 0.5 }}>\n {sourcTypes.map((source) => (\n <Chip\n key={source}\n label={`${source} (${filters.bySource[source].length})`}\n size=\"small\"\n variant=\"outlined\"\n />\n ))}\n </Box>\n </Box>\n </Grid>\n )}\n </Grid>\n )}\n </CardContent>\n </Card>\n );\n}\n","import { useState } from 'react';\nimport {\n Box,\n Button,\n TextField,\n Select,\n MenuItem,\n FormControl,\n InputLabel,\n FormControlLabel,\n Checkbox,\n FormGroup,\n Alert,\n Snackbar,\n Typography,\n Paper,\n} from '@mui/material';\nimport { useCreateAlert } from '@pfm-platform/alerts-data-access';\nimport type { AlertCreate, AlertType, AlertSourceType } from '@pfm-platform/shared';\n\ninterface AlertCreateFormProps {\n userId: string;\n onSuccess?: () => void;\n}\n\nconst ALERT_TYPES: AlertType[] = [\n 'AccountThresholdAlert',\n 'GoalAlert',\n 'MerchantNameAlert',\n 'SpendingTargetAlert',\n 'TransactionLimitAlert',\n 'UpcomingBillAlert',\n];\n\nconst SOURCE_TYPES: (AlertSourceType | 'none')[] = [\n 'none',\n 'Account',\n 'Budget',\n 'CashflowTransaction',\n 'PayoffGoal',\n 'SavingsGoal',\n];\n\nexport function AlertCreateForm({ userId, onSuccess }: AlertCreateFormProps) {\n const [alertType, setAlertType] = useState<AlertType>('AccountThresholdAlert');\n const [formData, setFormData] = useState<Partial<AlertCreate>>({\n options: {},\n email_delivery: true,\n sms_delivery: false,\n source_type: null,\n source_id: undefined,\n });\n const [sourceTypeSelection, setSourceTypeSelection] = useState<AlertSourceType | 'none'>('none');\n const [showSuccess, setShowSuccess] = useState(false);\n\n const createMutation = useCreateAlert({\n onSuccess: () => {\n setShowSuccess(true);\n // Reset form\n setFormData({\n options: {},\n email_delivery: true,\n sms_delivery: false,\n source_type: null,\n source_id: undefined,\n });\n setSourceTypeSelection('none');\n onSuccess?.();\n },\n });\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n\n // Prepare data with source_type handling\n const submitData: AlertCreate = {\n ...formData,\n source_type: sourceTypeSelection === 'none' ? null : sourceTypeSelection,\n } as AlertCreate;\n\n createMutation.mutate({\n userId,\n type: alertType,\n data: submitData,\n });\n };\n\n return (\n <Paper elevation={2} sx={{ p: 3 }}>\n <Box component=\"form\" onSubmit={handleSubmit}>\n <Typography variant=\"h6\" gutterBottom>\n Create New Alert\n </Typography>\n\n {/* Alert Type Selection */}\n <FormControl fullWidth margin=\"normal\" required>\n <InputLabel>Alert Type</InputLabel>\n <Select\n value={alertType}\n onChange={(e) => setAlertType(e.target.value as AlertType)}\n label=\"Alert Type\"\n >\n {ALERT_TYPES.map((type) => (\n <MenuItem key={type} value={type}>\n {type.replace(/([A-Z])/g, ' $1').trim()}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n\n {/* Options (JSON input for flexibility) */}\n <TextField\n label=\"Alert Options (JSON)\"\n fullWidth\n margin=\"normal\"\n value={JSON.stringify(formData.options, null, 2)}\n onChange={(e) => {\n try {\n const parsed = JSON.parse(e.target.value);\n setFormData({ ...formData, options: parsed });\n } catch {\n // Invalid JSON, keep previous value\n }\n }}\n multiline\n rows={4}\n helperText=\"Enter alert-specific configuration as JSON (e.g., {"threshold": 100})\"\n placeholder=\"{}\"\n />\n\n {/* Delivery Settings */}\n <Typography variant=\"subtitle2\" sx={{ mt: 2, mb: 1 }}>\n Delivery Settings:\n </Typography>\n <FormGroup>\n <FormControlLabel\n control={\n <Checkbox\n checked={formData.email_delivery ?? true}\n onChange={(e) =>\n setFormData({ ...formData, email_delivery: e.target.checked })\n }\n />\n }\n label=\"Email Delivery\"\n />\n <FormControlLabel\n control={\n <Checkbox\n checked={formData.sms_delivery ?? false}\n onChange={(e) =>\n setFormData({ ...formData, sms_delivery: e.target.checked })\n }\n />\n }\n label=\"SMS Delivery\"\n />\n </FormGroup>\n\n {/* Source Reference (Optional) */}\n <Typography variant=\"subtitle2\" sx={{ mt: 2, mb: 1 }}>\n Source Reference (Optional):\n </Typography>\n\n <FormControl fullWidth margin=\"normal\">\n <InputLabel id=\"source-type-label\">Source Type</InputLabel>\n <Select\n labelId=\"source-type-label\"\n id=\"source-type\"\n value={sourceTypeSelection}\n onChange={(e) => setSourceTypeSelection(e.target.value as AlertSourceType | 'none')}\n label=\"Source Type\"\n >\n {SOURCE_TYPES.map((type) => (\n <MenuItem key={type} value={type as string}>\n {type === 'none' ? 'None' : type}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n\n {sourceTypeSelection !== 'none' && (\n <TextField\n label=\"Source ID\"\n fullWidth\n margin=\"normal\"\n value={formData.source_id ?? ''}\n onChange={(e) => {\n const value = e.target.value;\n // Try to parse as number, fallback to string\n const parsed = /^\\d+$/.test(value) ? parseInt(value) : value;\n setFormData({ ...formData, source_id: parsed });\n }}\n helperText=\"Enter the ID of the source object (Account, Goal, etc.)\"\n />\n )}\n\n {/* Error display */}\n {createMutation.isError && (\n <Alert severity=\"error\" sx={{ mt: 2 }}>\n {createMutation.error instanceof Error\n ? createMutation.error.message\n : 'Failed to create alert'}\n </Alert>\n )}\n\n {/* Validation errors from Zod */}\n {createMutation.isError && createMutation.error?.message.includes('issues') && (\n <Alert severity=\"error\" sx={{ mt: 2 }}>\n <Typography variant=\"body2\" fontWeight=\"bold\">Validation Errors:</Typography>\n {(() => {\n try {\n const parsed = JSON.parse(createMutation.error.message);\n return (\n <ul style={{ margin: '8px 0', paddingLeft: '20px' }}>\n {parsed.map((issue: any, idx: number) => (\n <li key={idx}>\n {issue.path?.join('.')}: {issue.message}\n </li>\n ))}\n </ul>\n );\n } catch {\n return createMutation.error.message;\n }\n })()}\n </Alert>\n )}\n\n {/* Submit button */}\n <Box sx={{ mt: 3 }}>\n <Button type=\"submit\" variant=\"contained\" disabled={createMutation.isPending}>\n {createMutation.isPending ? 'Creating...' : 'Create Alert'}\n </Button>\n </Box>\n\n {/* Success notification */}\n <Snackbar\n open={showSuccess}\n autoHideDuration={3000}\n onClose={() => setShowSuccess(false)}\n message=\"Alert created successfully\"\n />\n </Box>\n </Paper>\n );\n}\n","import { useState, useEffect } from 'react';\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Button,\n TextField,\n FormControl,\n InputLabel,\n Select,\n MenuItem,\n FormControlLabel,\n Checkbox,\n FormGroup,\n Alert as MuiAlert,\n Typography,\n} from '@mui/material';\nimport { useUpdateAlert } from '@pfm-platform/alerts-data-access';\nimport type { Alert, AlertSourceType } from '@pfm-platform/shared';\n\ninterface AlertEditFormProps {\n alert: Alert;\n open: boolean;\n onClose: () => void;\n userId: string;\n}\n\nconst SOURCE_TYPES: (AlertSourceType | 'none')[] = [\n 'none',\n 'Account',\n 'Budget',\n 'CashflowTransaction',\n 'PayoffGoal',\n 'SavingsGoal',\n];\n\nexport function AlertEditForm({ alert, open, onClose, userId }: AlertEditFormProps) {\n const [formData, setFormData] = useState(alert);\n const [sourceTypeSelection, setSourceTypeSelection] = useState<AlertSourceType | 'none'>(\n alert.source_type ?? 'none'\n );\n\n useEffect(() => {\n setFormData(alert);\n setSourceTypeSelection(alert.source_type ?? 'none');\n }, [alert]);\n\n const updateMutation = useUpdateAlert({\n onSuccess: () => {\n onClose();\n },\n });\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n\n updateMutation.mutate({\n userId,\n alertId: alert.id,\n type: alert.type,\n data: {\n options: formData.options,\n email_delivery: formData.email_delivery,\n sms_delivery: formData.sms_delivery,\n source_type: sourceTypeSelection === 'none' ? null : sourceTypeSelection,\n source_id: formData.source_id,\n },\n });\n };\n\n return (\n <Dialog open={open} onClose={onClose} maxWidth=\"sm\" fullWidth>\n <form onSubmit={handleSubmit}>\n <DialogTitle>Edit Alert</DialogTitle>\n <DialogContent>\n {/* Alert Type (Read-only) */}\n <TextField\n label=\"Alert Type\"\n fullWidth\n margin=\"normal\"\n value={alert.type.replace(/([A-Z])/g, ' $1').trim()}\n disabled\n helperText=\"Alert type cannot be changed after creation\"\n />\n\n {/* Options (JSON input for flexibility) */}\n <TextField\n label=\"Alert Options (JSON)\"\n fullWidth\n margin=\"normal\"\n value={JSON.stringify(formData.options, null, 2)}\n onChange={(e) => {\n try {\n const parsed = JSON.parse(e.target.value);\n setFormData({ ...formData, options: parsed });\n } catch {\n // Invalid JSON, keep previous value\n }\n }}\n multiline\n rows={4}\n helperText=\"Enter alert-specific configuration as JSON\"\n />\n\n {/* Delivery Settings */}\n <Typography variant=\"subtitle2\" sx={{ mt: 2, mb: 1 }}>\n Delivery Settings:\n </Typography>\n <FormGroup>\n <FormControlLabel\n control={\n <Checkbox\n checked={formData.email_delivery}\n onChange={(e) =>\n setFormData({ ...formData, email_delivery: e.target.checked })\n }\n />\n }\n label=\"Email Delivery\"\n />\n <FormControlLabel\n control={\n <Checkbox\n checked={formData.sms_delivery}\n onChange={(e) =>\n setFormData({ ...formData, sms_delivery: e.target.checked })\n }\n />\n }\n label=\"SMS Delivery\"\n />\n </FormGroup>\n\n {/* Source Reference (Optional) */}\n <Typography variant=\"subtitle2\" sx={{ mt: 2, mb: 1 }}>\n Source Reference:\n </Typography>\n\n <FormControl fullWidth margin=\"normal\">\n <InputLabel id=\"source-type-label\">Source Type</InputLabel>\n <Select\n labelId=\"source-type-label\"\n id=\"source-type\"\n value={sourceTypeSelection}\n onChange={(e) => setSourceTypeSelection(e.target.value as AlertSourceType | 'none')}\n label=\"Source Type\"\n >\n {SOURCE_TYPES.map((type) => (\n <MenuItem key={type} value={type as string}>\n {type === 'none' ? 'None' : type}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n\n {sourceTypeSelection !== 'none' && (\n <TextField\n label=\"Source ID\"\n fullWidth\n margin=\"normal\"\n value={formData.source_id ?? ''}\n onChange={(e) => {\n const value = e.target.value;\n // Try to parse as number, fallback to string\n const parsed = /^\\d+$/.test(value) ? parseInt(value) : value;\n setFormData({ ...formData, source_id: parsed });\n }}\n helperText=\"Enter the ID of the source object (Account, Goal, etc.)\"\n />\n )}\n\n {/* Error display */}\n {updateMutation.isError && (\n <MuiAlert severity=\"error\" sx={{ mt: 2 }}>\n {updateMutation.error instanceof Error\n ? updateMutation.error.message\n : 'Failed to update alert'}\n </MuiAlert>\n )}\n </DialogContent>\n\n <DialogActions>\n <Button onClick={onClose}>Cancel</Button>\n <Button\n type=\"submit\"\n variant=\"contained\"\n disabled={updateMutation.isPending}\n >\n {updateMutation.isPending ? 'Saving...' : 'Save Changes'}\n </Button>\n </DialogActions>\n </form>\n </Dialog>\n );\n}\n","import { useState } from 'react';\nimport {\n IconButton,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Button,\n Typography,\n} from '@mui/material';\nimport { Delete as DeleteIcon } from '@mui/icons-material';\nimport { useDeleteAlert } from '@pfm-platform/alerts-data-access';\n\ninterface AlertDeleteButtonProps {\n alertId: number;\n userId: string;\n alertType: string;\n}\n\nexport function AlertDeleteButton({\n alertId,\n userId,\n alertType,\n}: AlertDeleteButtonProps) {\n const [confirmOpen, setConfirmOpen] = useState(false);\n\n const deleteMutation = useDeleteAlert({\n onSuccess: () => {\n setConfirmOpen(false);\n },\n });\n\n const handleDelete = () => {\n deleteMutation.mutate({ userId, alertId });\n };\n\n return (\n <>\n <IconButton\n color=\"error\"\n onClick={() => setConfirmOpen(true)}\n size=\"small\"\n aria-label=\"delete alert\"\n >\n <DeleteIcon />\n </IconButton>\n\n <Dialog open={confirmOpen} onClose={() => setConfirmOpen(false)}>\n <DialogTitle>Delete Alert?</DialogTitle>\n <DialogContent>\n <Typography>\n Are you sure you want to delete this {alertType} alert? This action cannot be undone.\n </Typography>\n </DialogContent>\n <DialogActions>\n <Button onClick={() => setConfirmOpen(false)}>Cancel</Button>\n <Button\n onClick={handleDelete}\n color=\"error\"\n variant=\"contained\"\n disabled={deleteMutation.isPending}\n >\n {deleteMutation.isPending ? 'Deleting...' : 'Delete'}\n </Button>\n </DialogActions>\n </Dialog>\n </>\n );\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pfm-platform/alerts-ui-mui",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"@emotion/react": "^11.14.0",
|
|
8
|
+
"@emotion/styled": "^11.14.1",
|
|
9
|
+
"@mui/x-charts": "8.18.0",
|
|
10
|
+
"@pfm-platform/alerts-data-access": "0.1.1",
|
|
11
|
+
"@pfm-platform/alerts-feature": "0.1.1",
|
|
12
|
+
"@pfm-platform/shared": "0.0.1"
|
|
13
|
+
},
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"@tanstack/react-query": "5.90.9",
|
|
16
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
17
|
+
"@testing-library/react": "^16.3.0",
|
|
18
|
+
"@testing-library/user-event": "^14.6.1",
|
|
19
|
+
"@types/react": "19.2.5",
|
|
20
|
+
"@vitejs/plugin-react": "^5.1.1",
|
|
21
|
+
"@vitest/coverage-v8": "^4.0.9",
|
|
22
|
+
"jsdom": "^27.2.0",
|
|
23
|
+
"msw": "^2.12.2",
|
|
24
|
+
"vitest": "4.0.9"
|
|
25
|
+
},
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"@mui/icons-material": "^7.3.5",
|
|
28
|
+
"@mui/material": "^7.3.5",
|
|
29
|
+
"react": "19.2.0"
|
|
30
|
+
},
|
|
31
|
+
"module": "./dist/index.js",
|
|
32
|
+
"types": "./dist/index.d.ts",
|
|
33
|
+
"exports": {
|
|
34
|
+
".": {
|
|
35
|
+
"types": "./dist/index.d.ts",
|
|
36
|
+
"import": "./dist/index.js",
|
|
37
|
+
"require": "./dist/index.cjs"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"files": [
|
|
41
|
+
"dist",
|
|
42
|
+
"README.md"
|
|
43
|
+
],
|
|
44
|
+
"description": "Personal Finance Management - ALERTS ui-mui layer",
|
|
45
|
+
"keywords": [
|
|
46
|
+
"pfm",
|
|
47
|
+
"finance",
|
|
48
|
+
"alerts",
|
|
49
|
+
"ui-mui",
|
|
50
|
+
"react",
|
|
51
|
+
"typescript"
|
|
52
|
+
],
|
|
53
|
+
"author": "Lenny Miller",
|
|
54
|
+
"license": "MIT",
|
|
55
|
+
"repository": {
|
|
56
|
+
"type": "git",
|
|
57
|
+
"url": "https://github.com/lennylmiller/pfm-research",
|
|
58
|
+
"directory": "packages/alerts/ui-mui"
|
|
59
|
+
},
|
|
60
|
+
"bugs": "https://github.com/lennylmiller/pfm-research/issues",
|
|
61
|
+
"homepage": "https://github.com/lennylmiller/pfm-research#readme",
|
|
62
|
+
"scripts": {
|
|
63
|
+
"test": "vitest run",
|
|
64
|
+
"test:watch": "vitest",
|
|
65
|
+
"test:ui": "vitest --ui",
|
|
66
|
+
"test:coverage": "vitest run --coverage",
|
|
67
|
+
"build": "tsup src/index.ts --format cjs,esm --dts --clean"
|
|
68
|
+
}
|
|
69
|
+
}
|