braid-ui 1.0.99 → 1.0.101
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/README.md +327 -44
- package/dist/css/braid-ui-variables.css +88 -0
- package/dist/css/braid-ui.css +4702 -0
- package/dist/css/braid-ui.min.css +1 -0
- package/dist/index.cjs +4 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +2027 -0
- package/dist/index.d.ts +2027 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/package.json +115 -55
- package/src/styles-only.css +121 -0
- package/src/{index.css → styles.css} +4 -10
- package/components.json +0 -20
- package/eslint.config.js +0 -29
- package/index.html +0 -24
- package/postcss.config.js +0 -6
- package/public/favicon.ico +0 -0
- package/public/placeholder.svg +0 -1
- package/public/robots.txt +0 -14
- package/src/App.css +0 -42
- package/src/App.tsx +0 -94
- package/src/components/MainLayout.tsx +0 -15
- package/src/components/alerts/AlertDocuments.tsx +0 -320
- package/src/components/alerts/AlertNotes.tsx +0 -185
- package/src/components/alerts/AlertTimeline.tsx +0 -79
- package/src/components/alerts/ContextSection.tsx +0 -155
- package/src/components/app-sidebar.tsx +0 -341
- package/src/components/form-sections/ACHBankCard.tsx +0 -78
- package/src/components/form-sections/ACHBasicInfoCard.tsx +0 -100
- package/src/components/form-sections/ACHTransferSection.tsx +0 -64
- package/src/components/form-sections/AddressForm.tsx +0 -94
- package/src/components/form-sections/BankAddressCard.tsx +0 -95
- package/src/components/form-sections/BankingDetailsCard.tsx +0 -46
- package/src/components/form-sections/BasicInfoCard.tsx +0 -103
- package/src/components/form-sections/BasicInfoSection.tsx +0 -34
- package/src/components/form-sections/BeneficiaryAddress.tsx +0 -19
- package/src/components/form-sections/BeneficiaryCard.tsx +0 -41
- package/src/components/form-sections/BeneficiaryDomesticWire.tsx +0 -23
- package/src/components/form-sections/BusinessProfileCard.tsx +0 -131
- package/src/components/form-sections/BusinessStatusCard.tsx +0 -53
- package/src/components/form-sections/ContactInfoCard.tsx +0 -63
- package/src/components/form-sections/CounterpartyBasicInfo.tsx +0 -101
- package/src/components/form-sections/CounterpartyProfileCard.tsx +0 -104
- package/src/components/form-sections/CounterpartyRecordsCard.tsx +0 -41
- package/src/components/form-sections/IntermediaryCard.tsx +0 -77
- package/src/components/form-sections/IntermediaryFI.tsx +0 -41
- package/src/components/form-sections/IntermediaryFIAddress.tsx +0 -14
- package/src/components/form-sections/OriginatorCard.tsx +0 -49
- package/src/components/form-sections/OriginatorFI.tsx +0 -42
- package/src/components/form-sections/OriginatorFIAddress.tsx +0 -14
- package/src/components/form-sections/PaymentInformationSection.tsx +0 -163
- package/src/components/form-sections/ReceiverCard.tsx +0 -94
- package/src/components/form-sections/WireTransferSection.tsx +0 -75
- package/src/components/layouts/list-page.tsx +0 -103
- package/src/components/transaction/ACHDetailsSection.tsx +0 -95
- package/src/components/transaction/WireDetailsSection.tsx +0 -112
- package/src/components/ui/account-card.tsx +0 -94
- package/src/components/ui/badge.tsx +0 -75
- package/src/components/ui/breadcrumb.tsx +0 -78
- package/src/components/ui/business-type-badge.tsx +0 -42
- package/src/components/ui/button.tsx +0 -56
- package/src/components/ui/calendar.tsx +0 -49
- package/src/components/ui/card.tsx +0 -223
- package/src/components/ui/container.tsx +0 -45
- package/src/components/ui/counterparty-type-badge.tsx +0 -53
- package/src/components/ui/data-grid.tsx +0 -99
- package/src/components/ui/data-table.tsx +0 -152
- package/src/components/ui/detail-page-layout.tsx +0 -83
- package/src/components/ui/dialog.tsx +0 -120
- package/src/components/ui/dropdown-menu.tsx +0 -82
- package/src/components/ui/editable-form-card.tsx +0 -106
- package/src/components/ui/editable-info-field.tsx +0 -67
- package/src/components/ui/enhanced-input.tsx +0 -78
- package/src/components/ui/enhanced-select.tsx +0 -101
- package/src/components/ui/enhanced-textarea.tsx +0 -64
- package/src/components/ui/entity-card.tsx +0 -140
- package/src/components/ui/form-card.tsx +0 -40
- package/src/components/ui/form-field.tsx +0 -50
- package/src/components/ui/form-input.tsx +0 -29
- package/src/components/ui/form-provider.tsx +0 -18
- package/src/components/ui/form-section.tsx +0 -66
- package/src/components/ui/form-select.tsx +0 -35
- package/src/components/ui/info-field.tsx +0 -36
- package/src/components/ui/json-viewer.tsx +0 -146
- package/src/components/ui/label.tsx +0 -24
- package/src/components/ui/metric-card.tsx +0 -80
- package/src/components/ui/page-layout.tsx +0 -183
- package/src/components/ui/popover.tsx +0 -29
- package/src/components/ui/responsive-grid.tsx +0 -46
- package/src/components/ui/separator.tsx +0 -31
- package/src/components/ui/sheet.tsx +0 -140
- package/src/components/ui/sidebar.tsx +0 -775
- package/src/components/ui/sonner.tsx +0 -29
- package/src/components/ui/stack.tsx +0 -77
- package/src/components/ui/status-badge.tsx +0 -68
- package/src/components/ui/tabs.tsx +0 -52
- package/src/components/ui/toast.tsx +0 -127
- package/src/components/ui/toaster.tsx +0 -33
- package/src/components/ui/tooltip.tsx +0 -28
- package/src/components/ui/use-toast.ts +0 -3
- package/src/components/ui-kit/dashboard-demo.tsx +0 -156
- package/src/components/ui-kit/pattern-library.tsx +0 -248
- package/src/components/ui-kit/showcase.tsx +0 -211
- package/src/hooks/use-mobile.tsx +0 -19
- package/src/hooks/use-toast.ts +0 -191
- package/src/hooks/useEditState.ts +0 -70
- package/src/hooks/useFormWithEditState.ts +0 -115
- package/src/lib/constants.ts +0 -25
- package/src/lib/mock-data/alert-data.ts +0 -275
- package/src/lib/mock-data/banking-data.ts +0 -72
- package/src/lib/mock-data/business-data.ts +0 -71
- package/src/lib/mock-data/counterparty-data.ts +0 -70
- package/src/lib/mock-data/index.ts +0 -5
- package/src/lib/mock-data/transaction-data.ts +0 -283
- package/src/lib/mock-data/wire-data.ts +0 -103
- package/src/lib/mock-data.tsx +0 -180
- package/src/lib/schemas/banking-schemas.ts +0 -30
- package/src/lib/schemas/business-schemas.ts +0 -36
- package/src/lib/schemas/counterparty-schemas.ts +0 -43
- package/src/lib/schemas/index.ts +0 -5
- package/src/lib/schemas/wire-schemas.ts +0 -44
- package/src/lib/utils.ts +0 -6
- package/src/main.tsx +0 -10
- package/src/pages/Cases.tsx +0 -16
- package/src/pages/Dashboard.tsx +0 -16
- package/src/pages/NotFound.tsx +0 -27
- package/src/pages/TransactionHistory.tsx +0 -532
- package/src/pages/UIKit.tsx +0 -51
- package/src/pages/alerts/AlertDetail.tsx +0 -193
- package/src/pages/alerts/Alerts.tsx +0 -373
- package/src/pages/business/Business.tsx +0 -48
- package/src/pages/business/Create.tsx +0 -173
- package/src/pages/counterparty/Create.tsx +0 -48
- package/src/pages/counterparty/DomesticWire.tsx +0 -78
- package/src/pages/counterparty/Manage.tsx +0 -79
- package/src/pages/transactions/NewTransaction.tsx +0 -527
- package/src/pages/transactions/TransactionDetail.tsx +0 -192
- package/src/vite-env.d.ts +0 -1
- package/tailwind.config.ts +0 -124
- package/tsconfig.app.json +0 -30
- package/tsconfig.json +0 -19
- package/tsconfig.node.json +0 -22
- package/vite.config.ts +0 -22
- /package/{src/assets/braid-logo.png → dist/braid-logo-343BOQZ2.png} +0 -0
package/README.md
CHANGED
|
@@ -1,73 +1,356 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Braid UI
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A comprehensive React UI component library built with TypeScript, Tailwind CSS, and Radix UI primitives.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Installation
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
```bash
|
|
8
|
+
npm install braid-ui
|
|
9
|
+
# or
|
|
10
|
+
yarn add braid-ui
|
|
11
|
+
# or
|
|
12
|
+
pnpm add braid-ui
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
import { Button, Card } from 'braid-ui'
|
|
19
|
+
import 'braid-ui/styles'
|
|
20
|
+
|
|
21
|
+
function App() {
|
|
22
|
+
return (
|
|
23
|
+
<Card>
|
|
24
|
+
<Button>Click me</Button>
|
|
25
|
+
</Card>
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Peer Dependencies
|
|
31
|
+
|
|
32
|
+
Braid UI requires the following peer dependencies. Make sure they are installed:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install react react-dom react-router-dom \
|
|
36
|
+
@radix-ui/react-accordion @radix-ui/react-alert-dialog \
|
|
37
|
+
@radix-ui/react-aspect-ratio @radix-ui/react-avatar \
|
|
38
|
+
@radix-ui/react-checkbox @radix-ui/react-collapsible \
|
|
39
|
+
@radix-ui/react-context-menu @radix-ui/react-dialog \
|
|
40
|
+
@radix-ui/react-dropdown-menu @radix-ui/react-hover-card \
|
|
41
|
+
@radix-ui/react-label @radix-ui/react-menubar \
|
|
42
|
+
@radix-ui/react-navigation-menu @radix-ui/react-popover \
|
|
43
|
+
@radix-ui/react-progress @radix-ui/react-radio-group \
|
|
44
|
+
@radix-ui/react-scroll-area @radix-ui/react-select \
|
|
45
|
+
@radix-ui/react-separator @radix-ui/react-slider \
|
|
46
|
+
@radix-ui/react-slot @radix-ui/react-switch \
|
|
47
|
+
@radix-ui/react-tabs @radix-ui/react-toast \
|
|
48
|
+
@radix-ui/react-toggle @radix-ui/react-toggle-group \
|
|
49
|
+
@radix-ui/react-tooltip \
|
|
50
|
+
@tanstack/react-query @hookform/resolvers \
|
|
51
|
+
class-variance-authority clsx cmdk date-fns \
|
|
52
|
+
embla-carousel-react input-otp lucide-react next-themes \
|
|
53
|
+
react-day-picker react-hook-form react-resizable-panels \
|
|
54
|
+
recharts sonner tailwind-merge tailwindcss-animate vaul zod \
|
|
55
|
+
lodash react-pdf
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Or install them individually as needed. See the full list in `package.json` under `peerDependencies`.
|
|
59
|
+
|
|
60
|
+
## Setup
|
|
61
|
+
|
|
62
|
+
### 1. Import Styles
|
|
63
|
+
|
|
64
|
+
Import the CSS styles in your application entry point:
|
|
8
65
|
|
|
9
|
-
|
|
66
|
+
```tsx
|
|
67
|
+
// In your main.tsx, App.tsx, or index.tsx
|
|
68
|
+
import 'braid-ui/styles'
|
|
69
|
+
```
|
|
10
70
|
|
|
11
|
-
|
|
71
|
+
Alternatively, import in your main CSS file:
|
|
12
72
|
|
|
13
|
-
|
|
73
|
+
```css
|
|
74
|
+
/* In your globals.css or main.css */
|
|
75
|
+
@import 'braid-ui/styles';
|
|
76
|
+
```
|
|
14
77
|
|
|
15
|
-
|
|
78
|
+
### 2. Configure Tailwind CSS
|
|
16
79
|
|
|
17
|
-
|
|
80
|
+
Braid UI requires Tailwind CSS to be configured in your project. Add the library's theme extensions to your `tailwind.config.js`:
|
|
18
81
|
|
|
19
|
-
|
|
82
|
+
```js
|
|
83
|
+
/** @type {import('tailwindcss').Config} */
|
|
84
|
+
module.exports = {
|
|
85
|
+
content: [
|
|
86
|
+
"./src/**/*.{js,ts,jsx,tsx}",
|
|
87
|
+
"./node_modules/braid-ui/dist/**/*.{js,ts,jsx,tsx}",
|
|
88
|
+
],
|
|
89
|
+
theme: {
|
|
90
|
+
extend: {
|
|
91
|
+
colors: {
|
|
92
|
+
border: 'hsl(var(--border))',
|
|
93
|
+
input: 'hsl(var(--input))',
|
|
94
|
+
ring: 'hsl(var(--ring))',
|
|
95
|
+
background: 'hsl(var(--background))',
|
|
96
|
+
foreground: 'hsl(var(--foreground))',
|
|
97
|
+
primary: {
|
|
98
|
+
DEFAULT: 'hsl(var(--primary))',
|
|
99
|
+
foreground: 'hsl(var(--primary-foreground))',
|
|
100
|
+
glow: 'hsl(var(--primary-glow))'
|
|
101
|
+
},
|
|
102
|
+
secondary: {
|
|
103
|
+
DEFAULT: 'hsl(var(--secondary))',
|
|
104
|
+
foreground: 'hsl(var(--secondary-foreground))'
|
|
105
|
+
},
|
|
106
|
+
destructive: {
|
|
107
|
+
DEFAULT: 'hsl(var(--destructive))',
|
|
108
|
+
foreground: 'hsl(var(--destructive-foreground))'
|
|
109
|
+
},
|
|
110
|
+
success: {
|
|
111
|
+
DEFAULT: 'hsl(var(--success))',
|
|
112
|
+
foreground: 'hsl(var(--success-foreground))'
|
|
113
|
+
},
|
|
114
|
+
warning: {
|
|
115
|
+
DEFAULT: 'hsl(var(--warning))',
|
|
116
|
+
foreground: 'hsl(var(--warning-foreground))'
|
|
117
|
+
},
|
|
118
|
+
muted: {
|
|
119
|
+
DEFAULT: 'hsl(var(--muted))',
|
|
120
|
+
foreground: 'hsl(var(--muted-foreground))'
|
|
121
|
+
},
|
|
122
|
+
accent: {
|
|
123
|
+
DEFAULT: 'hsl(var(--accent))',
|
|
124
|
+
foreground: 'hsl(var(--accent-foreground))'
|
|
125
|
+
},
|
|
126
|
+
popover: {
|
|
127
|
+
DEFAULT: 'hsl(var(--popover))',
|
|
128
|
+
foreground: 'hsl(var(--popover-foreground))'
|
|
129
|
+
},
|
|
130
|
+
card: {
|
|
131
|
+
DEFAULT: 'hsl(var(--card))',
|
|
132
|
+
foreground: 'hsl(var(--card-foreground))'
|
|
133
|
+
},
|
|
134
|
+
form: {
|
|
135
|
+
background: 'hsl(var(--form-background))',
|
|
136
|
+
border: 'hsl(var(--form-border))',
|
|
137
|
+
'border-focus': 'hsl(var(--form-border-focus))',
|
|
138
|
+
'border-error': 'hsl(var(--form-border-error))',
|
|
139
|
+
'border-success': 'hsl(var(--form-border-success))'
|
|
140
|
+
},
|
|
141
|
+
sidebar: {
|
|
142
|
+
DEFAULT: 'hsl(var(--sidebar-background))',
|
|
143
|
+
foreground: 'hsl(var(--sidebar-foreground))',
|
|
144
|
+
primary: 'hsl(var(--sidebar-primary))',
|
|
145
|
+
'primary-foreground': 'hsl(var(--sidebar-primary-foreground))',
|
|
146
|
+
accent: 'hsl(var(--sidebar-accent))',
|
|
147
|
+
'accent-foreground': 'hsl(var(--sidebar-accent-foreground))',
|
|
148
|
+
border: 'hsl(var(--sidebar-border))',
|
|
149
|
+
ring: 'hsl(var(--sidebar-ring))'
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
borderRadius: {
|
|
153
|
+
lg: 'var(--radius)',
|
|
154
|
+
md: 'calc(var(--radius) - 2px)',
|
|
155
|
+
sm: 'calc(var(--radius) - 4px)'
|
|
156
|
+
},
|
|
157
|
+
keyframes: {
|
|
158
|
+
'accordion-down': {
|
|
159
|
+
from: { height: '0' },
|
|
160
|
+
to: { height: 'var(--radix-accordion-content-height)' }
|
|
161
|
+
},
|
|
162
|
+
'accordion-up': {
|
|
163
|
+
from: { height: 'var(--radix-accordion-content-height)' },
|
|
164
|
+
to: { height: '0' }
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
animation: {
|
|
168
|
+
'accordion-down': 'accordion-down 0.2s ease-out',
|
|
169
|
+
'accordion-up': 'accordion-up 0.2s ease-out'
|
|
170
|
+
},
|
|
171
|
+
backgroundImage: {
|
|
172
|
+
'gradient-primary': 'var(--gradient-primary)',
|
|
173
|
+
'gradient-subtle': 'var(--gradient-subtle)'
|
|
174
|
+
},
|
|
175
|
+
boxShadow: {
|
|
176
|
+
'form': 'var(--shadow-form)',
|
|
177
|
+
'form-focus': 'var(--shadow-form-focus)',
|
|
178
|
+
'form-error': 'var(--shadow-form-error)'
|
|
179
|
+
},
|
|
180
|
+
transitionProperty: {
|
|
181
|
+
'form': 'var(--transition-form)'
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
plugins: [require('tailwindcss-animate')],
|
|
186
|
+
}
|
|
187
|
+
```
|
|
20
188
|
|
|
21
|
-
|
|
189
|
+
**Important:** Make sure `tailwindcss-animate` is installed:
|
|
22
190
|
|
|
23
|
-
|
|
191
|
+
```bash
|
|
192
|
+
npm install -D tailwindcss-animate
|
|
193
|
+
```
|
|
24
194
|
|
|
25
|
-
|
|
26
|
-
# Step 1: Clone the repository using the project's Git URL.
|
|
27
|
-
git clone <YOUR_GIT_URL>
|
|
195
|
+
## Usage
|
|
28
196
|
|
|
29
|
-
|
|
30
|
-
cd <YOUR_PROJECT_NAME>
|
|
197
|
+
### Importing Components
|
|
31
198
|
|
|
32
|
-
|
|
33
|
-
npm i
|
|
199
|
+
Import components directly from the main package:
|
|
34
200
|
|
|
35
|
-
|
|
36
|
-
|
|
201
|
+
```tsx
|
|
202
|
+
import { Button, Card, Dialog, Input } from 'braid-ui'
|
|
37
203
|
```
|
|
38
204
|
|
|
39
|
-
|
|
205
|
+
### Using Components
|
|
206
|
+
|
|
207
|
+
```tsx
|
|
208
|
+
import { Button, Card, CardHeader, CardTitle, CardContent } from 'braid-ui'
|
|
209
|
+
|
|
210
|
+
function MyComponent() {
|
|
211
|
+
return (
|
|
212
|
+
<Card>
|
|
213
|
+
<CardHeader>
|
|
214
|
+
<CardTitle>Card Title</CardTitle>
|
|
215
|
+
</CardHeader>
|
|
216
|
+
<CardContent>
|
|
217
|
+
<Button>Click me</Button>
|
|
218
|
+
</CardContent>
|
|
219
|
+
</Card>
|
|
220
|
+
)
|
|
221
|
+
}
|
|
222
|
+
```
|
|
40
223
|
|
|
41
|
-
|
|
42
|
-
- Click the "Edit" button (pencil icon) at the top right of the file view.
|
|
43
|
-
- Make your changes and commit the changes.
|
|
224
|
+
### Using Hooks
|
|
44
225
|
|
|
45
|
-
|
|
226
|
+
```tsx
|
|
227
|
+
import { useToast, useEditState } from 'braid-ui'
|
|
228
|
+
|
|
229
|
+
function MyComponent() {
|
|
230
|
+
const { toast } = useToast()
|
|
231
|
+
|
|
232
|
+
return (
|
|
233
|
+
<button onClick={() => toast({
|
|
234
|
+
title: 'Success!',
|
|
235
|
+
description: 'Action completed successfully.'
|
|
236
|
+
})}>
|
|
237
|
+
Show Toast
|
|
238
|
+
</button>
|
|
239
|
+
)
|
|
240
|
+
}
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Using Pages
|
|
244
|
+
|
|
245
|
+
```tsx
|
|
246
|
+
import { Dashboard, Alerts, Businesses } from 'braid-ui'
|
|
247
|
+
import { BrowserRouter, Routes, Route } from 'react-router-dom'
|
|
248
|
+
|
|
249
|
+
function App() {
|
|
250
|
+
return (
|
|
251
|
+
<BrowserRouter>
|
|
252
|
+
<Routes>
|
|
253
|
+
<Route path="/" element={<Dashboard />} />
|
|
254
|
+
<Route path="/alerts" element={<Alerts />} />
|
|
255
|
+
<Route path="/businesses" element={<Businesses />} />
|
|
256
|
+
</Routes>
|
|
257
|
+
</BrowserRouter>
|
|
258
|
+
)
|
|
259
|
+
}
|
|
260
|
+
```
|
|
46
261
|
|
|
47
|
-
|
|
48
|
-
- Click on the "Code" button (green button) near the top right.
|
|
49
|
-
- Select the "Codespaces" tab.
|
|
50
|
-
- Click on "New codespace" to launch a new Codespace environment.
|
|
51
|
-
- Edit files directly within the Codespace and commit and push your changes once you're done.
|
|
262
|
+
## Styling Options
|
|
52
263
|
|
|
53
|
-
|
|
264
|
+
### With Tailwind CSS (Recommended)
|
|
54
265
|
|
|
55
|
-
|
|
266
|
+
If you're using Tailwind CSS, import the styles and configure your Tailwind config as shown above.
|
|
56
267
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
|
|
268
|
+
### Without Tailwind CSS
|
|
269
|
+
|
|
270
|
+
If you're not using Tailwind CSS, you can use the pre-compiled CSS:
|
|
271
|
+
|
|
272
|
+
```tsx
|
|
273
|
+
// Import pre-compiled CSS
|
|
274
|
+
import 'braid-ui/css'
|
|
275
|
+
// or minified version
|
|
276
|
+
import 'braid-ui/css/min'
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
You can also import just the CSS variables:
|
|
280
|
+
|
|
281
|
+
```tsx
|
|
282
|
+
import 'braid-ui/css/variables'
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
## Customizing Colors
|
|
286
|
+
|
|
287
|
+
You can customize the color scheme by overriding CSS variables:
|
|
288
|
+
|
|
289
|
+
```css
|
|
290
|
+
:root {
|
|
291
|
+
--primary: 204 100% 54%;
|
|
292
|
+
--primary-foreground: 0 0% 100%;
|
|
293
|
+
--background: 240 10% 98%;
|
|
294
|
+
--foreground: 240 10% 8%;
|
|
295
|
+
/* ... override other variables as needed */
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
**Note:** Colors should be defined as HSL values without the `hsl()` wrapper.
|
|
300
|
+
|
|
301
|
+
## Dark Mode
|
|
302
|
+
|
|
303
|
+
Braid UI supports dark mode automatically. The CSS variables switch when the `.dark` class is present on a parent element (usually `<html>` or `<body>`).
|
|
304
|
+
|
|
305
|
+
If you're using a theme provider like `next-themes`:
|
|
306
|
+
|
|
307
|
+
```tsx
|
|
308
|
+
import { ThemeProvider } from 'next-themes'
|
|
309
|
+
|
|
310
|
+
function App() {
|
|
311
|
+
return (
|
|
312
|
+
<ThemeProvider attribute="class" defaultTheme="system">
|
|
313
|
+
{/* Your app */}
|
|
314
|
+
</ThemeProvider>
|
|
315
|
+
)
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## TypeScript
|
|
320
|
+
|
|
321
|
+
Braid UI is built with TypeScript and includes type definitions. No additional `@types` packages are required.
|
|
322
|
+
|
|
323
|
+
## Next.js Configuration
|
|
324
|
+
|
|
325
|
+
If you're using Braid UI in a Next.js application and need to use components that include PDF viewing (like `BusinessDetailView` with `BusinessDocuments`), you'll need to configure Next.js webpack to handle `react-pdf` dependencies correctly.
|
|
326
|
+
|
|
327
|
+
Add the following to your `next.config.js`:
|
|
328
|
+
|
|
329
|
+
```js
|
|
330
|
+
const nextConfig = {
|
|
331
|
+
webpack: (config, { isServer }) => {
|
|
332
|
+
// Fix for react-pdf/pdfjs-dist in Next.js
|
|
333
|
+
if (!isServer) {
|
|
334
|
+
config.resolve.alias = {
|
|
335
|
+
...config.resolve.alias,
|
|
336
|
+
canvas: false,
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return config
|
|
340
|
+
},
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
module.exports = nextConfig
|
|
344
|
+
```
|
|
62
345
|
|
|
63
|
-
|
|
346
|
+
This prevents Next.js from trying to bundle Node.js-specific dependencies that `pdfjs-dist` might reference during webpack analysis.
|
|
64
347
|
|
|
65
|
-
|
|
348
|
+
**Note**: If you're not using any PDF-related components, this configuration is optional.
|
|
66
349
|
|
|
67
|
-
##
|
|
350
|
+
## License
|
|
68
351
|
|
|
69
|
-
|
|
352
|
+
MIT
|
|
70
353
|
|
|
71
|
-
|
|
354
|
+
## Repository
|
|
72
355
|
|
|
73
|
-
|
|
356
|
+
[GitHub Repository](https://github.com/your-username/braid-ui-kit.git)
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
|
|
2
|
+
/* Braid UI CSS Variables */
|
|
3
|
+
:root {
|
|
4
|
+
--background: 240 10% 98%;
|
|
5
|
+
--foreground: 240 10% 8%;
|
|
6
|
+
--card: 0 0% 100%;
|
|
7
|
+
--card-foreground: 240 10% 8%;
|
|
8
|
+
--popover: 0 0% 100%;
|
|
9
|
+
--popover-foreground: 240 10% 8%;
|
|
10
|
+
--primary: 204 100% 54%;
|
|
11
|
+
--primary-foreground: 0 0% 100%;
|
|
12
|
+
--primary-glow: 204 100% 64%;
|
|
13
|
+
--secondary: 240 5% 96%;
|
|
14
|
+
--secondary-foreground: 240 6% 10%;
|
|
15
|
+
--muted: 240 5% 96%;
|
|
16
|
+
--muted-foreground: 240 4% 60%;
|
|
17
|
+
--accent: 240 5% 96%;
|
|
18
|
+
--accent-foreground: 240 6% 10%;
|
|
19
|
+
--destructive: 0 84% 60%;
|
|
20
|
+
--destructive-foreground: 0 0% 98%;
|
|
21
|
+
--border: 240 6% 90%;
|
|
22
|
+
--input: 240 6% 90%;
|
|
23
|
+
--ring: 204 100% 54%;
|
|
24
|
+
--success: 142 76% 36%;
|
|
25
|
+
--success-foreground: 0 0% 98%;
|
|
26
|
+
--warning: 38 92% 50%;
|
|
27
|
+
--warning-foreground: 0 0% 98%;
|
|
28
|
+
--form-background: 0 0% 100%;
|
|
29
|
+
--form-border: 240 6% 88%;
|
|
30
|
+
--form-border-focus: 204 100% 54%;
|
|
31
|
+
--form-border-error: 0 84% 60%;
|
|
32
|
+
--form-border-success: 142 76% 36%;
|
|
33
|
+
--gradient-primary: linear-gradient(135deg, hsl(204 100% 54%), hsl(204 100% 64%));
|
|
34
|
+
--gradient-subtle: linear-gradient(180deg, hsl(240 10% 98%), hsl(240 5% 96%));
|
|
35
|
+
--shadow-form: 0 1px 3px 0 hsl(240 5% 84% / 0.12), 0 1px 2px 0 hsl(240 5% 84% / 0.24);
|
|
36
|
+
--shadow-form-focus: 0 0 0 3px hsl(204 100% 54% / 0.12);
|
|
37
|
+
--shadow-form-error: 0 0 0 3px hsl(0 84% 60% / 0.12);
|
|
38
|
+
--transition-form: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
|
39
|
+
--radius: 0.5rem;
|
|
40
|
+
--sidebar-background: 0 0% 98%;
|
|
41
|
+
--sidebar-foreground: 240 5.3% 26.1%;
|
|
42
|
+
--sidebar-primary: 240 5.9% 10%;
|
|
43
|
+
--sidebar-primary-foreground: 0 0% 98%;
|
|
44
|
+
--sidebar-accent: 240 4.8% 95.9%;
|
|
45
|
+
--sidebar-accent-foreground: 240 5.9% 10%;
|
|
46
|
+
--sidebar-border: 220 13% 91%;
|
|
47
|
+
--sidebar-ring: 217.2 91.2% 59.8%;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.dark {
|
|
51
|
+
--background: 222.2 84% 4.9%;
|
|
52
|
+
--foreground: 210 40% 98%;
|
|
53
|
+
--card: 222.2 84% 4.9%;
|
|
54
|
+
--card-foreground: 210 40% 98%;
|
|
55
|
+
--popover: 222.2 84% 4.9%;
|
|
56
|
+
--popover-foreground: 210 40% 98%;
|
|
57
|
+
--primary: 210 40% 98%;
|
|
58
|
+
--primary-foreground: 222.2 47.4% 11.2%;
|
|
59
|
+
--secondary: 217.2 32.6% 17.5%;
|
|
60
|
+
--secondary-foreground: 210 40% 98%;
|
|
61
|
+
--muted: 217.2 32.6% 17.5%;
|
|
62
|
+
--muted-foreground: 215 20.2% 65.1%;
|
|
63
|
+
--accent: 217.2 32.6% 17.5%;
|
|
64
|
+
--accent-foreground: 210 40% 98%;
|
|
65
|
+
--destructive: 0 62.8% 30.6%;
|
|
66
|
+
--destructive-foreground: 210 40% 98%;
|
|
67
|
+
--border: 217.2 32.6% 17.5%;
|
|
68
|
+
--input: 217.2 32.6% 17.5%;
|
|
69
|
+
--ring: 212.7 26.8% 83.9%;
|
|
70
|
+
--sidebar-background: 240 5.9% 10%;
|
|
71
|
+
--sidebar-foreground: 240 4.8% 95.9%;
|
|
72
|
+
--sidebar-primary: 224.3 76.3% 48%;
|
|
73
|
+
--sidebar-primary-foreground: 0 0% 100%;
|
|
74
|
+
--sidebar-accent: 240 3.7% 15.9%;
|
|
75
|
+
--sidebar-accent-foreground: 240 4.8% 95.9%;
|
|
76
|
+
--sidebar-border: 240 3.7% 15.9%;
|
|
77
|
+
--sidebar-ring: 217.2 91.2% 59.8%;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@layer base {
|
|
81
|
+
* {
|
|
82
|
+
border-color: hsl(var(--border));
|
|
83
|
+
}
|
|
84
|
+
body {
|
|
85
|
+
background-color: hsl(var(--background));
|
|
86
|
+
color: hsl(var(--foreground));
|
|
87
|
+
}
|
|
88
|
+
}
|