braid-ui 1.0.97 → 1.0.99

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.
Files changed (145) hide show
  1. package/README.md +44 -327
  2. package/components.json +20 -0
  3. package/eslint.config.js +29 -0
  4. package/index.html +24 -0
  5. package/package.json +55 -115
  6. package/postcss.config.js +6 -0
  7. package/public/favicon.ico +0 -0
  8. package/public/placeholder.svg +1 -0
  9. package/public/robots.txt +14 -0
  10. package/src/App.css +42 -0
  11. package/src/App.tsx +94 -0
  12. package/src/components/MainLayout.tsx +15 -0
  13. package/src/components/alerts/AlertDocuments.tsx +320 -0
  14. package/src/components/alerts/AlertNotes.tsx +185 -0
  15. package/src/components/alerts/AlertTimeline.tsx +79 -0
  16. package/src/components/alerts/ContextSection.tsx +155 -0
  17. package/src/components/app-sidebar.tsx +341 -0
  18. package/src/components/form-sections/ACHBankCard.tsx +78 -0
  19. package/src/components/form-sections/ACHBasicInfoCard.tsx +100 -0
  20. package/src/components/form-sections/ACHTransferSection.tsx +64 -0
  21. package/src/components/form-sections/AddressForm.tsx +94 -0
  22. package/src/components/form-sections/BankAddressCard.tsx +95 -0
  23. package/src/components/form-sections/BankingDetailsCard.tsx +46 -0
  24. package/src/components/form-sections/BasicInfoCard.tsx +103 -0
  25. package/src/components/form-sections/BasicInfoSection.tsx +34 -0
  26. package/src/components/form-sections/BeneficiaryAddress.tsx +19 -0
  27. package/src/components/form-sections/BeneficiaryCard.tsx +41 -0
  28. package/src/components/form-sections/BeneficiaryDomesticWire.tsx +23 -0
  29. package/src/components/form-sections/BusinessProfileCard.tsx +131 -0
  30. package/src/components/form-sections/BusinessStatusCard.tsx +53 -0
  31. package/src/components/form-sections/ContactInfoCard.tsx +63 -0
  32. package/src/components/form-sections/CounterpartyBasicInfo.tsx +101 -0
  33. package/src/components/form-sections/CounterpartyProfileCard.tsx +104 -0
  34. package/src/components/form-sections/CounterpartyRecordsCard.tsx +41 -0
  35. package/src/components/form-sections/IntermediaryCard.tsx +77 -0
  36. package/src/components/form-sections/IntermediaryFI.tsx +41 -0
  37. package/src/components/form-sections/IntermediaryFIAddress.tsx +14 -0
  38. package/src/components/form-sections/OriginatorCard.tsx +49 -0
  39. package/src/components/form-sections/OriginatorFI.tsx +42 -0
  40. package/src/components/form-sections/OriginatorFIAddress.tsx +14 -0
  41. package/src/components/form-sections/PaymentInformationSection.tsx +163 -0
  42. package/src/components/form-sections/ReceiverCard.tsx +94 -0
  43. package/src/components/form-sections/WireTransferSection.tsx +75 -0
  44. package/src/components/layouts/list-page.tsx +103 -0
  45. package/src/components/transaction/ACHDetailsSection.tsx +95 -0
  46. package/src/components/transaction/WireDetailsSection.tsx +112 -0
  47. package/src/components/ui/account-card.tsx +94 -0
  48. package/src/components/ui/badge.tsx +75 -0
  49. package/src/components/ui/breadcrumb.tsx +78 -0
  50. package/src/components/ui/business-type-badge.tsx +42 -0
  51. package/src/components/ui/button.tsx +56 -0
  52. package/src/components/ui/calendar.tsx +49 -0
  53. package/src/components/ui/card.tsx +223 -0
  54. package/src/components/ui/container.tsx +45 -0
  55. package/src/components/ui/counterparty-type-badge.tsx +53 -0
  56. package/src/components/ui/data-grid.tsx +99 -0
  57. package/src/components/ui/data-table.tsx +152 -0
  58. package/src/components/ui/detail-page-layout.tsx +83 -0
  59. package/src/components/ui/dialog.tsx +120 -0
  60. package/src/components/ui/dropdown-menu.tsx +82 -0
  61. package/src/components/ui/editable-form-card.tsx +106 -0
  62. package/src/components/ui/editable-info-field.tsx +67 -0
  63. package/src/components/ui/enhanced-input.tsx +78 -0
  64. package/src/components/ui/enhanced-select.tsx +101 -0
  65. package/src/components/ui/enhanced-textarea.tsx +64 -0
  66. package/src/components/ui/entity-card.tsx +140 -0
  67. package/src/components/ui/form-card.tsx +40 -0
  68. package/src/components/ui/form-field.tsx +50 -0
  69. package/src/components/ui/form-input.tsx +29 -0
  70. package/src/components/ui/form-provider.tsx +18 -0
  71. package/src/components/ui/form-section.tsx +66 -0
  72. package/src/components/ui/form-select.tsx +35 -0
  73. package/src/components/ui/info-field.tsx +36 -0
  74. package/src/components/ui/json-viewer.tsx +146 -0
  75. package/src/components/ui/label.tsx +24 -0
  76. package/src/components/ui/metric-card.tsx +80 -0
  77. package/src/components/ui/page-layout.tsx +183 -0
  78. package/src/components/ui/popover.tsx +29 -0
  79. package/src/components/ui/responsive-grid.tsx +46 -0
  80. package/src/components/ui/separator.tsx +31 -0
  81. package/src/components/ui/sheet.tsx +140 -0
  82. package/src/components/ui/sidebar.tsx +775 -0
  83. package/src/components/ui/sonner.tsx +29 -0
  84. package/src/components/ui/stack.tsx +77 -0
  85. package/src/components/ui/status-badge.tsx +68 -0
  86. package/src/components/ui/tabs.tsx +52 -0
  87. package/src/components/ui/toast.tsx +127 -0
  88. package/src/components/ui/toaster.tsx +33 -0
  89. package/src/components/ui/tooltip.tsx +28 -0
  90. package/src/components/ui/use-toast.ts +3 -0
  91. package/src/components/ui-kit/dashboard-demo.tsx +156 -0
  92. package/src/components/ui-kit/pattern-library.tsx +248 -0
  93. package/src/components/ui-kit/showcase.tsx +211 -0
  94. package/src/hooks/use-mobile.tsx +19 -0
  95. package/src/hooks/use-toast.ts +191 -0
  96. package/src/hooks/useEditState.ts +70 -0
  97. package/src/hooks/useFormWithEditState.ts +115 -0
  98. package/src/{styles.css → index.css} +10 -4
  99. package/src/lib/constants.ts +25 -0
  100. package/src/lib/mock-data/alert-data.ts +275 -0
  101. package/src/lib/mock-data/banking-data.ts +72 -0
  102. package/src/lib/mock-data/business-data.ts +71 -0
  103. package/src/lib/mock-data/counterparty-data.ts +70 -0
  104. package/src/lib/mock-data/index.ts +5 -0
  105. package/src/lib/mock-data/transaction-data.ts +283 -0
  106. package/src/lib/mock-data/wire-data.ts +103 -0
  107. package/src/lib/mock-data.tsx +180 -0
  108. package/src/lib/schemas/banking-schemas.ts +30 -0
  109. package/src/lib/schemas/business-schemas.ts +36 -0
  110. package/src/lib/schemas/counterparty-schemas.ts +43 -0
  111. package/src/lib/schemas/index.ts +5 -0
  112. package/src/lib/schemas/wire-schemas.ts +44 -0
  113. package/src/lib/utils.ts +6 -0
  114. package/src/main.tsx +10 -0
  115. package/src/pages/Cases.tsx +16 -0
  116. package/src/pages/Dashboard.tsx +16 -0
  117. package/src/pages/NotFound.tsx +27 -0
  118. package/src/pages/TransactionHistory.tsx +532 -0
  119. package/src/pages/UIKit.tsx +51 -0
  120. package/src/pages/alerts/AlertDetail.tsx +193 -0
  121. package/src/pages/alerts/Alerts.tsx +373 -0
  122. package/src/pages/business/Business.tsx +48 -0
  123. package/src/pages/business/Create.tsx +173 -0
  124. package/src/pages/counterparty/Create.tsx +48 -0
  125. package/src/pages/counterparty/DomesticWire.tsx +78 -0
  126. package/src/pages/counterparty/Manage.tsx +79 -0
  127. package/src/pages/transactions/NewTransaction.tsx +527 -0
  128. package/src/pages/transactions/TransactionDetail.tsx +192 -0
  129. package/src/vite-env.d.ts +1 -0
  130. package/tailwind.config.ts +124 -0
  131. package/tsconfig.app.json +30 -0
  132. package/tsconfig.json +19 -0
  133. package/tsconfig.node.json +22 -0
  134. package/vite.config.ts +22 -0
  135. package/dist/css/braid-ui-variables.css +0 -88
  136. package/dist/css/braid-ui.css +0 -4484
  137. package/dist/css/braid-ui.min.css +0 -1
  138. package/dist/index.cjs +0 -4
  139. package/dist/index.cjs.map +0 -1
  140. package/dist/index.d.cts +0 -2429
  141. package/dist/index.d.ts +0 -2429
  142. package/dist/index.js +0 -4
  143. package/dist/index.js.map +0 -1
  144. package/src/styles-only.css +0 -121
  145. /package/{dist/braid-logo-343BOQZ2.png → src/assets/braid-logo.png} +0 -0
@@ -0,0 +1,43 @@
1
+ import { z } from "zod"
2
+
3
+ export const counterpartyBasicInfoSchema = z.object({
4
+ name: z.string().min(1, "Name is required"),
5
+ type: z.string().min(1, "Type is required"),
6
+ status: z.string().min(1, "Status is required"),
7
+ description: z.string().optional(),
8
+ })
9
+
10
+ export const counterpartyProfileSchema = z.object({
11
+ legalName: z.string().min(1, "Legal name is required"),
12
+ dbaName: z.string().optional(),
13
+ businessType: z.string().min(1, "Business type is required"),
14
+ taxId: z.string().min(1, "Tax ID is required"),
15
+ businessPhone: z.string().min(1, "Business phone is required"),
16
+ businessEmail: z.string().email("Invalid email format"),
17
+ website: z.string().url("Invalid URL format").optional().or(z.literal("")),
18
+ })
19
+
20
+ export const addressSchema = z.object({
21
+ streetAddress: z.string().min(1, "Street address is required"),
22
+ apartment: z.string().optional(),
23
+ city: z.string().min(1, "City is required"),
24
+ state: z.string().min(1, "State is required"),
25
+ postalCode: z.string().min(1, "Postal code is required"),
26
+ country: z.string().min(1, "Country is required"),
27
+ addressType: z.string().optional(),
28
+ })
29
+
30
+ export const counterpartyRecordsSchema = z.object({
31
+ id: z.string(),
32
+ createdBy: z.string(),
33
+ createdAt: z.string(),
34
+ updatedBy: z.string(),
35
+ updatedAt: z.string(),
36
+ lastOFACDate: z.string(),
37
+ lastOFACStatus: z.string(),
38
+ })
39
+
40
+ export type CounterpartyBasicInfo = z.infer<typeof counterpartyBasicInfoSchema>
41
+ export type CounterpartyProfile = z.infer<typeof counterpartyProfileSchema>
42
+ export type Address = z.infer<typeof addressSchema>
43
+ export type CounterpartyRecords = z.infer<typeof counterpartyRecordsSchema>
@@ -0,0 +1,5 @@
1
+ // Re-export all schemas for easy importing
2
+ export * from "./counterparty-schemas"
3
+ export * from "./banking-schemas"
4
+ export * from "./wire-schemas"
5
+ export * from "./business-schemas"
@@ -0,0 +1,44 @@
1
+ import { z } from "zod"
2
+ import { addressSchema } from "./counterparty-schemas"
3
+
4
+ export const wireBasicInfoSchema = z.object({
5
+ counterpartyName: z.string().min(1, "Counterparty name is required"),
6
+ shortName: z.string().min(1, "Short name is required"),
7
+ type: z.string().min(1, "Type is required"),
8
+ description: z.string().optional(),
9
+ })
10
+
11
+ export const beneficiarySchema = z.object({
12
+ name: z.string().min(1, "Beneficiary name is required"),
13
+ accountNumber: z.string().min(1, "Account number is required"),
14
+ address: addressSchema,
15
+ })
16
+
17
+ export const originatorFISchema = z.object({
18
+ accountNumber: z.string().min(1, "Account number is required"),
19
+ name: z.string().min(1, "FI name is required"),
20
+ idType: z.string().min(1, "ID type is required"),
21
+ idNumber: z.string().min(1, "ID number is required"),
22
+ address: addressSchema,
23
+ })
24
+
25
+ export const intermediaryFISchema = z.object({
26
+ accountNumber: z.string().optional(),
27
+ name: z.string().optional(),
28
+ idType: z.string().optional(),
29
+ idNumber: z.string().optional(),
30
+ address: addressSchema.optional(),
31
+ })
32
+
33
+ export const wireTransferSchema = z.object({
34
+ basicInfo: wireBasicInfoSchema,
35
+ beneficiary: beneficiarySchema,
36
+ originatorFI: originatorFISchema,
37
+ intermediaryFI: intermediaryFISchema.optional(),
38
+ })
39
+
40
+ export type WireBasicInfo = z.infer<typeof wireBasicInfoSchema>
41
+ export type Beneficiary = z.infer<typeof beneficiarySchema>
42
+ export type OriginatorFI = z.infer<typeof originatorFISchema>
43
+ export type IntermediaryFI = z.infer<typeof intermediaryFISchema>
44
+ export type WireTransfer = z.infer<typeof wireTransferSchema>
@@ -0,0 +1,6 @@
1
+ import { clsx, type ClassValue } from "clsx"
2
+ import { twMerge } from "tailwind-merge"
3
+
4
+ export function cn(...inputs: ClassValue[]) {
5
+ return twMerge(clsx(inputs))
6
+ }
package/src/main.tsx ADDED
@@ -0,0 +1,10 @@
1
+ import { StrictMode } from 'react'
2
+ import { createRoot } from 'react-dom/client'
3
+ import App from './App.tsx'
4
+ import './index.css'
5
+
6
+ createRoot(document.getElementById("root")!).render(
7
+ <StrictMode>
8
+ <App />
9
+ </StrictMode>
10
+ );
@@ -0,0 +1,16 @@
1
+ import { PageLayout } from "@/components/ui/page-layout"
2
+
3
+ const Cases = () => {
4
+ return (
5
+ <PageLayout
6
+ title="Cases"
7
+ description="Manage and track investigation cases"
8
+ >
9
+ <div className="text-center py-12 text-muted-foreground">
10
+ Cases content coming soon
11
+ </div>
12
+ </PageLayout>
13
+ )
14
+ }
15
+
16
+ export default Cases
@@ -0,0 +1,16 @@
1
+ import { PageLayout } from "@/components/ui/page-layout"
2
+
3
+ const Dashboard = () => {
4
+ return (
5
+ <PageLayout
6
+ title="Dashboard"
7
+ description="Overview of your system metrics and activity"
8
+ >
9
+ <div className="text-center py-12 text-muted-foreground">
10
+ Dashboard content coming soon
11
+ </div>
12
+ </PageLayout>
13
+ )
14
+ }
15
+
16
+ export default Dashboard
@@ -0,0 +1,27 @@
1
+ import { useLocation } from "react-router-dom";
2
+ import { useEffect } from "react";
3
+
4
+ const NotFound = () => {
5
+ const location = useLocation();
6
+
7
+ useEffect(() => {
8
+ console.error(
9
+ "404 Error: User attempted to access non-existent route:",
10
+ location.pathname
11
+ );
12
+ }, [location.pathname]);
13
+
14
+ return (
15
+ <div className="min-h-screen flex items-center justify-center bg-gray-100">
16
+ <div className="text-center">
17
+ <h1 className="text-4xl font-bold mb-4">404</h1>
18
+ <p className="text-xl text-gray-600 mb-4">Oops! Page not found</p>
19
+ <a href="/" className="text-blue-500 hover:text-blue-700 underline">
20
+ Return to Home
21
+ </a>
22
+ </div>
23
+ </div>
24
+ );
25
+ };
26
+
27
+ export default NotFound;