create-bluecopa-react-app 1.0.14 → 1.0.16
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/package.json +1 -1
- package/templates/latest/Agent.md +36 -110
- package/templates/latest/components.json +2 -1
- package/templates/latest/dist/assets/{__federation_expose_App-BIH7hwj_.js → __federation_expose_App-DK1ZdBX-.js} +1 -1
- package/templates/latest/dist/assets/{client-CsvW46cT.js → client-DqBeHjYu.js} +3 -5
- package/templates/latest/dist/assets/{index-CFECuPSy.js → index-B8EMpf6o.js} +1 -1
- package/templates/latest/dist/assets/remoteEntry.js +1 -1
- package/templates/latest/dist/index.html +2 -2
- package/templates/latest/package-lock.json +5 -79
- package/templates/latest/package.json +2 -2
package/package.json
CHANGED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
This guide helps AI assistants and developers understand the project structure, patterns, and best practices for working with this BlueCopa React application template.
|
|
4
4
|
|
|
5
|
-
---
|
|
6
|
-
|
|
7
5
|
## 🏗️ Project Architecture Overview
|
|
8
6
|
|
|
9
7
|
### Core Stack
|
|
@@ -14,48 +12,11 @@ This guide helps AI assistants and developers understand the project structure,
|
|
|
14
12
|
- **Vite 6** for build tooling
|
|
15
13
|
- **TanStack Query** (via @bluecopa/react)
|
|
16
14
|
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 💡 UI Components & @bluecopa-ui Registry
|
|
20
|
-
|
|
21
|
-
This project uses [shadcn/ui](https://ui.shadcn.com/) to scaffold and manage UI component libraries, configured with an explicit support for the **@bluecopa-ui** component registry.
|
|
22
|
-
|
|
23
|
-
### About the `@bluecopa-ui` Registry
|
|
24
|
-
|
|
25
|
-
The registry location is defined in your `components.json` file, mapping the registry name to a hosted registry endpoint:
|
|
26
|
-
|
|
27
|
-
```json
|
|
28
|
-
{
|
|
29
|
-
...
|
|
30
|
-
"registries": {
|
|
31
|
-
"@bluecopa-ui": "https://shadcn-ui-henna.vercel.app/r/{name}.json"
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
- **@bluecopa-ui** registry extends the standard shadcn/ui workflow and provides a curated set of BlueCopa-centric UI components, patterns, and design tokens.
|
|
37
|
-
- When running any `npx shadcn@latest` CLI commands and passing `add` or `add registry`, you can use `@bluecopa-ui` as the registry source, e.g.:
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
npx shadcn@latest add @bluecopa-ui/<component>
|
|
41
|
-
```
|
|
42
|
-
- This enables streamlined upgrades, easy addition of company-specific components, and consistency with the BlueCopa Design System.
|
|
43
|
-
|
|
44
|
-
#### Benefits
|
|
45
|
-
|
|
46
|
-
- **Consistency:** Centralizes custom BlueCopa UI patterns and updates.
|
|
47
|
-
- **Discoverability:** Quickly add business-specific primitives, layouts, dashboards, and utilities.
|
|
48
|
-
- **Maintenance:** Receive improvements, fixes, and new patterns from BlueCopa UX engineering.
|
|
49
|
-
|
|
50
|
-
**Tip:** `@bluecopa-ui` can be used alongside the default shadcn registry. Specify which to use with `--registry` CLI flag.
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
15
|
### Key Directories
|
|
55
16
|
```
|
|
56
17
|
app/
|
|
57
18
|
├── components/ # Reusable UI components
|
|
58
|
-
│ ├── ui/ # shadcn/ui
|
|
19
|
+
│ ├── ui/ # shadcn/ui components
|
|
59
20
|
│ ├── app-sidebar.tsx # Main navigation
|
|
60
21
|
│ ├── data-table.tsx # TanStack Table wrapper
|
|
61
22
|
│ └── chart-*.tsx # Recharts components
|
|
@@ -65,25 +26,23 @@ app/
|
|
|
65
26
|
└── dashboard/ # Sample data and components
|
|
66
27
|
```
|
|
67
28
|
|
|
68
|
-
---
|
|
69
|
-
|
|
70
29
|
## 🎨 Component Patterns
|
|
71
30
|
|
|
72
|
-
### shadcn/ui
|
|
73
|
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
- Use
|
|
78
|
-
-
|
|
31
|
+
### shadcn/ui Components
|
|
32
|
+
All UI components follow shadcn/ui patterns:
|
|
33
|
+
- Located in `app/components/ui/`
|
|
34
|
+
- Built on Radix UI primitives
|
|
35
|
+
- Styled with Tailwind CSS
|
|
36
|
+
- Use `cn()` utility for class merging
|
|
37
|
+
- Support dark mode via CSS variables
|
|
79
38
|
|
|
80
39
|
### Custom Components
|
|
81
40
|
- Use TypeScript interfaces for props
|
|
82
|
-
- Follow React best practices
|
|
83
|
-
- Implement
|
|
84
|
-
- Use semantic HTML
|
|
41
|
+
- Follow React best practices (hooks, memo, etc.)
|
|
42
|
+
- Implement proper accessibility
|
|
43
|
+
- Use semantic HTML elements
|
|
85
44
|
|
|
86
|
-
|
|
45
|
+
### Example Component Structure
|
|
87
46
|
```tsx
|
|
88
47
|
import { cn } from "~/lib/utils"
|
|
89
48
|
|
|
@@ -101,49 +60,41 @@ export function Component({ className, children }: ComponentProps) {
|
|
|
101
60
|
}
|
|
102
61
|
```
|
|
103
62
|
|
|
104
|
-
---
|
|
105
|
-
|
|
106
63
|
## 🔧 Development Patterns
|
|
107
64
|
|
|
108
65
|
### State Management
|
|
109
|
-
-
|
|
110
|
-
-
|
|
111
|
-
-
|
|
66
|
+
- Use React hooks (useState, useReducer, useContext)
|
|
67
|
+
- TanStack Query for server state
|
|
68
|
+
- Local state for UI interactions
|
|
69
|
+
- Avoid prop drilling with context
|
|
112
70
|
|
|
113
71
|
### Data Fetching
|
|
114
|
-
- Use `@bluecopa/react` hooks for
|
|
115
|
-
- Implement loading and error states
|
|
116
|
-
-
|
|
117
|
-
-
|
|
118
|
-
|
|
119
|
-
---
|
|
72
|
+
- Use `@bluecopa/react` hooks for API calls
|
|
73
|
+
- Implement loading and error states
|
|
74
|
+
- Use TanStack Query for caching
|
|
75
|
+
- Handle optimistic updates
|
|
120
76
|
|
|
121
77
|
# @bluecopa/react [](https://www.npmjs.com/package/@bluecopa/react) [](https://github.com/bluecopa/blui/blob/main/packages/react/LICENSE)
|
|
122
78
|
|
|
123
|
-
## A Comprehensive React Query Integration for
|
|
79
|
+
## A Comprehensive React Query Integration for Bluecopa
|
|
124
80
|
|
|
125
|
-
A React library providing opinionated custom hooks for TanStack React Query integration with
|
|
126
|
-
|
|
127
|
-
---
|
|
81
|
+
A React library providing opinionated custom hooks for TanStack React Query integration with Bluecopa core API. This package enables efficient data fetching, caching, and synchronization with the Bluecopa platform while maintaining type safety and developer experience.
|
|
128
82
|
|
|
129
83
|
## Table of Contents
|
|
130
84
|
|
|
131
85
|
- [AI Agent Guide for BlueCopa React shadcn/ui Template](#ai-agent-guide-for-bluecopa-react-shadcnui-template)
|
|
132
86
|
- [🏗️ Project Architecture Overview](#️-project-architecture-overview)
|
|
133
87
|
- [Core Stack](#core-stack)
|
|
134
|
-
- [💡 UI Components \& @bluecopa-ui Registry](#-ui-components--bluecopa-ui-registry)
|
|
135
|
-
- [About the `@bluecopa-ui` Registry](#about-the-bluecopa-ui-registry)
|
|
136
|
-
- [Benefits](#benefits)
|
|
137
88
|
- [Key Directories](#key-directories)
|
|
138
89
|
- [🎨 Component Patterns](#-component-patterns)
|
|
139
|
-
- [shadcn/ui
|
|
90
|
+
- [shadcn/ui Components](#shadcnui-components)
|
|
140
91
|
- [Custom Components](#custom-components)
|
|
141
|
-
|
|
92
|
+
- [Example Component Structure](#example-component-structure)
|
|
142
93
|
- [🔧 Development Patterns](#-development-patterns)
|
|
143
94
|
- [State Management](#state-management)
|
|
144
95
|
- [Data Fetching](#data-fetching)
|
|
145
96
|
- [@bluecopa/react ](#bluecopareact--)
|
|
146
|
-
- [A Comprehensive React Query Integration for
|
|
97
|
+
- [A Comprehensive React Query Integration for Bluecopa](#a-comprehensive-react-query-integration-for-bluecopa)
|
|
147
98
|
- [Table of Contents](#table-of-contents)
|
|
148
99
|
- [Features](#features)
|
|
149
100
|
- [Installation](#installation)
|
|
@@ -151,11 +102,11 @@ A React library providing opinionated custom hooks for TanStack React Query inte
|
|
|
151
102
|
- [Usage](#usage)
|
|
152
103
|
- [Query Provider Setup](#query-provider-setup)
|
|
153
104
|
- [Boilerplate Integration](#boilerplate-integration)
|
|
154
|
-
- [Adding a BlueCopa UI Component](#adding-a-bluecopa-ui-component)
|
|
155
105
|
- [Hook Examples](#hook-examples)
|
|
156
106
|
- [`useUser` - Fetch authenticated user](#useuser---fetch-authenticated-user)
|
|
157
107
|
- [`useDataset` - Fetch dataset with query controls](#usedataset---fetch-dataset-with-query-controls)
|
|
158
|
-
- [
|
|
108
|
+
- [API Documentation](#api-documentation)
|
|
109
|
+
- [`useUser(options?)`](#useuseroptions)
|
|
159
110
|
- [`useDataset(datasetId, options?)`](#usedatasetdatasetid-options)
|
|
160
111
|
- [`useDatasetSample(datasetId, options?)`](#usedatasetsampledatasetid-options)
|
|
161
112
|
- [`useMetric(metricId, options?)`](#usemetricmetricid-options)
|
|
@@ -226,9 +177,6 @@ A React library providing opinionated custom hooks for TanStack React Query inte
|
|
|
226
177
|
- 📦 Re-exports of core TanStack React Query utilities
|
|
227
178
|
- 📊 Sample data preview capabilities
|
|
228
179
|
- 🧩 Customizable query parameters (limit, caching, retries)
|
|
229
|
-
- 🪄 Quickly use shadcn/ui and BlueCopa-specific components via `@bluecopa-ui` registry
|
|
230
|
-
|
|
231
|
-
---
|
|
232
180
|
|
|
233
181
|
## Installation
|
|
234
182
|
|
|
@@ -238,24 +186,14 @@ npm install @bluecopa/react
|
|
|
238
186
|
pnpm add @bluecopa/react
|
|
239
187
|
```
|
|
240
188
|
|
|
241
|
-
**To enable shadcn/ui with BlueCopa custom components (from @bluecopa-ui registry):**
|
|
242
|
-
|
|
243
|
-
```bash
|
|
244
|
-
npx shadcn@latest add @bluecopa-ui/<component>
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
This will fetch the component from the "@bluecopa-ui" registry endpoint declared in your `components.json`. This means you automatically get the most up-to-date BlueCopa patterns and design system building blocks.
|
|
248
|
-
|
|
249
189
|
### Peer Dependencies
|
|
250
190
|
|
|
251
|
-
|
|
191
|
+
This package requires the following in your application:
|
|
252
192
|
|
|
253
193
|
```bash
|
|
254
194
|
npm install react@^18.0.0 react-dom@^18.0.0
|
|
255
195
|
```
|
|
256
196
|
|
|
257
|
-
---
|
|
258
|
-
|
|
259
197
|
## Usage
|
|
260
198
|
|
|
261
199
|
### Query Provider Setup
|
|
@@ -286,7 +224,7 @@ function App() {
|
|
|
286
224
|
|
|
287
225
|
### Boilerplate Integration
|
|
288
226
|
|
|
289
|
-
For projects using the
|
|
227
|
+
For projects using the Bluecopa React boilerplate, use the pre-configured `QueryProvider` component that handles API configuration automatically:
|
|
290
228
|
|
|
291
229
|
```tsx
|
|
292
230
|
// src/providers/query-provider.tsx
|
|
@@ -337,7 +275,7 @@ export default function QueryProvider({ children }: { children: React.ReactNode
|
|
|
337
275
|
|
|
338
276
|
| Variable | Description | Example |
|
|
339
277
|
|----------|-------------|---------|
|
|
340
|
-
| `VITE_BLUECOPA_API_URL` | Base URL for
|
|
278
|
+
| `VITE_BLUECOPA_API_URL` | Base URL for Bluecopa API | `https://develop.bluecopa.com` |
|
|
341
279
|
| `VITE_BLUECOPA_WORKSPACE_ID` | Your workspace identifier | `my-workspace-123` |
|
|
342
280
|
| `VITE_BLUECOPA_API_TOKEN` | Base64-encoded JSON string containing `accessToken` | `eyJhY2Nlc3NUb2tlbiI6IjEyMzQ1In0=` |
|
|
343
281
|
|
|
@@ -362,21 +300,7 @@ function App() {
|
|
|
362
300
|
}
|
|
363
301
|
```
|
|
364
302
|
|
|
365
|
-
This setup automatically configures
|
|
366
|
-
|
|
367
|
-
---
|
|
368
|
-
|
|
369
|
-
### Adding a BlueCopa UI Component
|
|
370
|
-
|
|
371
|
-
To add a BlueCopa custom UI primitive (e.g., "copa-card") to your project, use:
|
|
372
|
-
|
|
373
|
-
```bash
|
|
374
|
-
npx shadcn@latest add @bluecopa-ui/pagination-block
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
The CLI pulls the latest [copa-card](https://shadcn-ui-henna.vercel.app/r/copa-card.json) definition from the registry as specified in `components.json`, and installs it to `app/components/ui/`.
|
|
378
|
-
|
|
379
|
-
---
|
|
303
|
+
This setup automatically configures the API client with your environment-specific settings and applies optimal caching defaults.
|
|
380
304
|
|
|
381
305
|
### Hook Examples
|
|
382
306
|
|
|
@@ -414,12 +338,14 @@ function DatasetViewer({ datasetId }) {
|
|
|
414
338
|
}
|
|
415
339
|
```
|
|
416
340
|
|
|
417
|
-
|
|
341
|
+
## API Documentation
|
|
418
342
|
|
|
419
|
-
|
|
343
|
+
### `useUser(options?)`
|
|
420
344
|
|
|
421
|
-
|
|
345
|
+
Fetches authenticated user details with query controls.
|
|
422
346
|
|
|
347
|
+
**Parameters:**
|
|
348
|
+
- `options` (optional): Query options extending TanStack React Query's `UseQueryOptions`
|
|
423
349
|
|
|
424
350
|
**Returns:**
|
|
425
351
|
- `data`: User object or `undefined`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
System.register(['./__federation_fn_import-CzfA7kmP.js', './client-
|
|
1
|
+
System.register(['./__federation_fn_import-CzfA7kmP.js', './client-DqBeHjYu.js'], (function (exports, module) {
|
|
2
2
|
'use strict';
|
|
3
3
|
var importShared, clientExports, jsxRuntimeExports, MemoryRouter, BrowserRouter, App;
|
|
4
4
|
return {
|
|
@@ -71631,14 +71631,12 @@ ${colorConfig.map(([key, itemConfig]) => {
|
|
|
71631
71631
|
const handleConnect = () => {
|
|
71632
71632
|
try {
|
|
71633
71633
|
const config = UT();
|
|
71634
|
-
console.log("config", config);
|
|
71635
71634
|
if (!config.accessToken || !config.userId) {
|
|
71636
71635
|
addEvent("system", "error", {
|
|
71637
71636
|
error: "Missing configuration. Ensure accessToken and userId are set via copaSetConfig()"
|
|
71638
71637
|
});
|
|
71639
71638
|
return;
|
|
71640
71639
|
}
|
|
71641
|
-
console.log("config", config);
|
|
71642
71640
|
wsProviderRef.current = uC.websocketUtils.WebsocketContextFactory.create(
|
|
71643
71641
|
"centrifugo",
|
|
71644
71642
|
{
|
|
@@ -71951,7 +71949,7 @@ ${colorConfig.map(([key, itemConfig]) => {
|
|
|
71951
71949
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(CardContent, { className: "space-y-4", children: [
|
|
71952
71950
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
|
|
71953
71951
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "font-semibold", children: "Before Using:" }),
|
|
71954
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("pre", { className: "text-xs bg-muted p-3 rounded overflow-x-auto", children: `import { copaSetConfig } from "@bluecopa/
|
|
71952
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("pre", { className: "text-xs bg-muted p-3 rounded overflow-x-auto", children: `import { copaSetConfig } from "@bluecopa/react";
|
|
71955
71953
|
|
|
71956
71954
|
// Set configuration before connecting
|
|
71957
71955
|
copaSetConfig({
|
|
@@ -72470,13 +72468,13 @@ copaSetConfig({
|
|
|
72470
72468
|
useEffect(() => {
|
|
72471
72469
|
let copaUser = {};
|
|
72472
72470
|
try {
|
|
72473
|
-
const copaToken = "
|
|
72471
|
+
const copaToken = "eyJhY2Nlc3NUb2tlbiI6ImV5SnJhV1FpT2lJd1pHSXpNemRoWXkwek9EVm1MVFJpT0RndFltWm1NQzFrTURJek5HUTFNamMxWlRnaUxDSmhiR2NpT2lKU1V6STFOaUo5LmV5SnpkV0lpT2lJd1ZFOXNiVlZ4ZURCVVMzTmxWRzQ0VnpablZ5SXNJbk4xWW1wbFkzUmZkSGx3WlNJNklsVnpaWElpTENKcGMzTWlPaUpvZEhSd2N6b3ZMMkpzZFdWamIzQmhMbU52YlNJc0lteGhjM1JmYm1GdFpTSTZJblJsYzNScGJtZGtaWFpBWW14MVpXTnZjR0V1WTI5dElpd2lkRzlyWlc1ZmRIbHdaU0k2SWtGalkyVnpjMVJ2YTJWdUlpd2liM0puWDJsa0lqb2lNRlJQYkd4VE9HY3pNa04xYmpoaVdsaDNXR3NpTENKcFpIQmZZV05qWlhOelgzUnZhMlZ1SWpvaU1ERkxPRXBhUmpaTFVVUXdOMDVMTjB0TFVVVXlNREZUTlRJaUxDSmxlSEFpT2pFM05qRTFPVEF6TlRNc0ltbGhkQ0k2TVRjMk1UVTRNekUxTXl3aVptbHljM1JmYm1GdFpTSTZJblJsYzNScGJtZGtaWFpBWW14MVpXTnZjR0V1WTI5dElpd2lhblJwSWpvaU1GWXdjVlpQTWtZME1GWjRXRmMxVFhaeVJuWWlMQ0psYldGcGJDSTZJblJsYzNScGJtZGtaWFpBWW14MVpXTnZjR0V1WTI5dEluMC5XRHNwNXB3dWc5UmpuYnVlc0RvLXVRUVl3dzFoWEQ1WHR1VjZvVHRUQ1dEQ2E0OEkxcVJ5ZUhNZmFQTTlScjN1UEdQbEdnbDAzRGtLUFJkTW54YU10UG1iUlZXRklJWnRHUUpZMnJDVTBpekpPcldNcFNPRDJVUHY1WjFUdlhHSk82SGNoa01lX3g3am5SMmFOd2hXZy1XdlVwd1M3UmdIUW1FVjRwVnh3SmdYWTdRR0ZneTJHR1B6MFpLRFFuTzZPZG5TcEhYYkcwTkx4Znc1dnY2aXB3S2dxU1pPcWRIVkwtNjZ4bmFFeTZpYlpOd0JaRldrY01nZFNBR0lVeGJNbWNfVDZDcm8yZ1dkYnMxcXRERnpXQUdnVHUwRnIzRWF6VFFXOXVmREN3V0JjTzNoSFF1aV9jbjFFQ3RGWW1tXzA1NV9kS0hlVmhldHdPWVhyWVlEaFZrQTdKcTg4cmFqekI3LVJCUEw0ME9rQVdxbDh5NXhhZnRYUEgyTUFJM1J2bXc0Z3F0NzByc1JxZDN6ZHVFZ2pBaWp1UjFKTXRGWHMtMU5EbnFpNTNSdFlzQ055QkY4WnZfdnJMMXk1UXlTRDdnSmZMN0VLRDJPZnQ2OVNlWXZaeGZYUTRJb2hyNnVoaG1vVTlKYmdVeEtKMEctako2c2JyUVV1SkQzMDFYZFNEdEE2YnVkdnlrSFpnNGFjWG5vWkJNVGdNb2VVaDZGTUdhMERpUndIZ09aNjlpYWZFMDRvOFhCZGR4alRiamwyZ0ozR3Yxbk5KS0EyYlUyTHUxS3RIN29XbXhtRjlSbEJlSmx6NjJKMktnUU5KSHpMY1JPb2s5cDV5OXZET3pHeFRQWkhGR1MwUTZtcXAxOVE3R3Jmem9Wb2Q4R0Ixb1pJcnFKY1ZCNXczTSIsInJlZnJlc2hUb2tlbiI6IkFRSUNBSGd5VlBZaGhhUkFnU29PUk5CbjBBR205WmF4WktUakxVNHBXY3NiMGVyU0NRRXBKQnJUK0dxVzNPTzY3SDR1djU5aUFBQUIvRENDQWZnR0NTcUdTSWIzRFFFSEJxQ0NBZWt3Z2dIbEFnRUFNSUlCM2dZSktvWklodmNOQVFjQk1CNEdDV0NHU0FGbEF3UUJMakFSQkF3cGdrZllEMkFjRkt3TGJHb0NBUkNBZ2dHdjhueWF6VVZIYkJNYmFkWWRMMW83U0hGUjkzcTFyOCtKcElQWXgyQlZFV2dpaEN1dUFNdGk1SllRVjZmdGZVd21XN3FiQ2ZDU0VHdGhOUE1vVm40dXBZYzNNYVg0R1ZQeEY0MkJtUFFVZVZWcVpzN05HOWp0YkdYbGdwTlVpaDZzVm9HdlZ6cXdXeDhJeWQyVzNBdnRSTGZwQzRnTG5ScXIrY1NaTzlqVy9xUmdCTjNFeFY3bkNrY0luZ2wvTU9NMlhNaFQ4eVc0VmlJMW04MVZvQk5EQ2lydkZZTzNRUXpHYitYYktjNnFSWCtYR0F5eHZpQ1A3NlI2YldJNDhtZzVyY1FFTFNPcXZvdDdFYjcwNzBOUkQ5T3FXc2hVckp2ekcwcWduTlNUYmhPZTl5T3d2bHA3QjNGQVo0aGR0YjhGYzJHWTdHTWd3SjJRRnVmeC9xRE1UcSszTFBGSmEwdHAwTS81Unh6MVJZVUNXcUpUMllYZUpUdUNOVXdKajFOWG1NSFBLMzVHOFdhZVNhSlBYYlNTak5IU0lEdnU4SVRvTStxTGVlY2FlbzZHQk9qMjBId0M0Y29ERno1RjdwL1ZwQ3hCK0tVbTFjYUU3dUdycVlOYktCeTd5UkhYTUFITGIzQkoxZkJlc0FHQ3lodXZDM0ZGdkJyVHBERVdsSGFwWFJaNnNMbUszNWJwU1J0ZDU5MnFzNmRMMjFVN0hhUjc0eDgxOThubnY2TVVZYzZLRUVEZXJEb05uekF3azNRPSIsIm9yZ0lkIjoib3JnXzAxR0U2Rzk3RUVaNU5LQlhTV0VZRUdaSEVLIiwiZW1haWwiOiJ0ZXN0aW5nZGV2QGJsdWVjb3BhLmNvbSIsIndvcmtzcGFjZUlkIjoicHJvZCIsInVzZXJJZCI6IjBUT2xtVXF4MFRLc2VUbjhXNmdXIiwidXNlck5hbWUiOiJ0ZXN0aW5nZGV2QGJsdWVjb3BhLmNvbSB0ZXN0aW5nZGV2QGJsdWVjb3BhLmNvbSIsIndlYlVybCI6Imh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9zZXR0aW5ncy9kZXZpY2VzIiwiZGF0YVBsYW5lIjoiaHR0cHM6Ly9hcGktZGV2ZWxvcC5ibHVlY29wYS5jb20vZGF0YS1wbGFuZS1hcGkiLCJkZngiOiJodHRwczovL2FwaS1kZXZlbG9wLmJsdWVjb3BhLmNvbS9kZngiLCJhdXRoeiI6Imh0dHBzOi8vZGV2YXBpLmJsdWVjb3BhLmNvbS9hdXRoei1hcGkiLCJjb25uZWN0b3JBdXRoeiI6Imh0dHBzOi8vZGV2YXBpLmJsdWVjb3BhLmNvbS9hdXRoei1hcGkifQ==" ? atob("eyJhY2Nlc3NUb2tlbiI6ImV5SnJhV1FpT2lJd1pHSXpNemRoWXkwek9EVm1MVFJpT0RndFltWm1NQzFrTURJek5HUTFNamMxWlRnaUxDSmhiR2NpT2lKU1V6STFOaUo5LmV5SnpkV0lpT2lJd1ZFOXNiVlZ4ZURCVVMzTmxWRzQ0VnpablZ5SXNJbk4xWW1wbFkzUmZkSGx3WlNJNklsVnpaWElpTENKcGMzTWlPaUpvZEhSd2N6b3ZMMkpzZFdWamIzQmhMbU52YlNJc0lteGhjM1JmYm1GdFpTSTZJblJsYzNScGJtZGtaWFpBWW14MVpXTnZjR0V1WTI5dElpd2lkRzlyWlc1ZmRIbHdaU0k2SWtGalkyVnpjMVJ2YTJWdUlpd2liM0puWDJsa0lqb2lNRlJQYkd4VE9HY3pNa04xYmpoaVdsaDNXR3NpTENKcFpIQmZZV05qWlhOelgzUnZhMlZ1SWpvaU1ERkxPRXBhUmpaTFVVUXdOMDVMTjB0TFVVVXlNREZUTlRJaUxDSmxlSEFpT2pFM05qRTFPVEF6TlRNc0ltbGhkQ0k2TVRjMk1UVTRNekUxTXl3aVptbHljM1JmYm1GdFpTSTZJblJsYzNScGJtZGtaWFpBWW14MVpXTnZjR0V1WTI5dElpd2lhblJwSWpvaU1GWXdjVlpQTWtZME1GWjRXRmMxVFhaeVJuWWlMQ0psYldGcGJDSTZJblJsYzNScGJtZGtaWFpBWW14MVpXTnZjR0V1WTI5dEluMC5XRHNwNXB3dWc5UmpuYnVlc0RvLXVRUVl3dzFoWEQ1WHR1VjZvVHRUQ1dEQ2E0OEkxcVJ5ZUhNZmFQTTlScjN1UEdQbEdnbDAzRGtLUFJkTW54YU10UG1iUlZXRklJWnRHUUpZMnJDVTBpekpPcldNcFNPRDJVUHY1WjFUdlhHSk82SGNoa01lX3g3am5SMmFOd2hXZy1XdlVwd1M3UmdIUW1FVjRwVnh3SmdYWTdRR0ZneTJHR1B6MFpLRFFuTzZPZG5TcEhYYkcwTkx4Znc1dnY2aXB3S2dxU1pPcWRIVkwtNjZ4bmFFeTZpYlpOd0JaRldrY01nZFNBR0lVeGJNbWNfVDZDcm8yZ1dkYnMxcXRERnpXQUdnVHUwRnIzRWF6VFFXOXVmREN3V0JjTzNoSFF1aV9jbjFFQ3RGWW1tXzA1NV9kS0hlVmhldHdPWVhyWVlEaFZrQTdKcTg4cmFqekI3LVJCUEw0ME9rQVdxbDh5NXhhZnRYUEgyTUFJM1J2bXc0Z3F0NzByc1JxZDN6ZHVFZ2pBaWp1UjFKTXRGWHMtMU5EbnFpNTNSdFlzQ055QkY4WnZfdnJMMXk1UXlTRDdnSmZMN0VLRDJPZnQ2OVNlWXZaeGZYUTRJb2hyNnVoaG1vVTlKYmdVeEtKMEctako2c2JyUVV1SkQzMDFYZFNEdEE2YnVkdnlrSFpnNGFjWG5vWkJNVGdNb2VVaDZGTUdhMERpUndIZ09aNjlpYWZFMDRvOFhCZGR4alRiamwyZ0ozR3Yxbk5KS0EyYlUyTHUxS3RIN29XbXhtRjlSbEJlSmx6NjJKMktnUU5KSHpMY1JPb2s5cDV5OXZET3pHeFRQWkhGR1MwUTZtcXAxOVE3R3Jmem9Wb2Q4R0Ixb1pJcnFKY1ZCNXczTSIsInJlZnJlc2hUb2tlbiI6IkFRSUNBSGd5VlBZaGhhUkFnU29PUk5CbjBBR205WmF4WktUakxVNHBXY3NiMGVyU0NRRXBKQnJUK0dxVzNPTzY3SDR1djU5aUFBQUIvRENDQWZnR0NTcUdTSWIzRFFFSEJxQ0NBZWt3Z2dIbEFnRUFNSUlCM2dZSktvWklodmNOQVFjQk1CNEdDV0NHU0FGbEF3UUJMakFSQkF3cGdrZllEMkFjRkt3TGJHb0NBUkNBZ2dHdjhueWF6VVZIYkJNYmFkWWRMMW83U0hGUjkzcTFyOCtKcElQWXgyQlZFV2dpaEN1dUFNdGk1SllRVjZmdGZVd21XN3FiQ2ZDU0VHdGhOUE1vVm40dXBZYzNNYVg0R1ZQeEY0MkJtUFFVZVZWcVpzN05HOWp0YkdYbGdwTlVpaDZzVm9HdlZ6cXdXeDhJeWQyVzNBdnRSTGZwQzRnTG5ScXIrY1NaTzlqVy9xUmdCTjNFeFY3bkNrY0luZ2wvTU9NMlhNaFQ4eVc0VmlJMW04MVZvQk5EQ2lydkZZTzNRUXpHYitYYktjNnFSWCtYR0F5eHZpQ1A3NlI2YldJNDhtZzVyY1FFTFNPcXZvdDdFYjcwNzBOUkQ5T3FXc2hVckp2ekcwcWduTlNUYmhPZTl5T3d2bHA3QjNGQVo0aGR0YjhGYzJHWTdHTWd3SjJRRnVmeC9xRE1UcSszTFBGSmEwdHAwTS81Unh6MVJZVUNXcUpUMllYZUpUdUNOVXdKajFOWG1NSFBLMzVHOFdhZVNhSlBYYlNTak5IU0lEdnU4SVRvTStxTGVlY2FlbzZHQk9qMjBId0M0Y29ERno1RjdwL1ZwQ3hCK0tVbTFjYUU3dUdycVlOYktCeTd5UkhYTUFITGIzQkoxZkJlc0FHQ3lodXZDM0ZGdkJyVHBERVdsSGFwWFJaNnNMbUszNWJwU1J0ZDU5MnFzNmRMMjFVN0hhUjc0eDgxOThubnY2TVVZYzZLRUVEZXJEb05uekF3azNRPSIsIm9yZ0lkIjoib3JnXzAxR0U2Rzk3RUVaNU5LQlhTV0VZRUdaSEVLIiwiZW1haWwiOiJ0ZXN0aW5nZGV2QGJsdWVjb3BhLmNvbSIsIndvcmtzcGFjZUlkIjoicHJvZCIsInVzZXJJZCI6IjBUT2xtVXF4MFRLc2VUbjhXNmdXIiwidXNlck5hbWUiOiJ0ZXN0aW5nZGV2QGJsdWVjb3BhLmNvbSB0ZXN0aW5nZGV2QGJsdWVjb3BhLmNvbSIsIndlYlVybCI6Imh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9zZXR0aW5ncy9kZXZpY2VzIiwiZGF0YVBsYW5lIjoiaHR0cHM6Ly9hcGktZGV2ZWxvcC5ibHVlY29wYS5jb20vZGF0YS1wbGFuZS1hcGkiLCJkZngiOiJodHRwczovL2FwaS1kZXZlbG9wLmJsdWVjb3BhLmNvbS9kZngiLCJhdXRoeiI6Imh0dHBzOi8vZGV2YXBpLmJsdWVjb3BhLmNvbS9hdXRoei1hcGkiLCJjb25uZWN0b3JBdXRoeiI6Imh0dHBzOi8vZGV2YXBpLmJsdWVjb3BhLmNvbS9hdXRoei1hcGkifQ==") : "{}";
|
|
72474
72472
|
copaUser = JSON.parse(copaToken);
|
|
72475
72473
|
} catch (error) {
|
|
72476
72474
|
console.warn("Failed to parse VITE_BLUECOPA_API_TOKEN:", error);
|
|
72477
72475
|
}
|
|
72478
72476
|
NT({
|
|
72479
|
-
apiBaseUrl: props.apiBaseUrl || "https://
|
|
72477
|
+
apiBaseUrl: props.apiBaseUrl || "https://develop.bluecopa.com/api/v1",
|
|
72480
72478
|
workspaceId: props.workspaceId || "prod",
|
|
72481
72479
|
accessToken: props.accessToken || copaUser?.accessToken || "",
|
|
72482
72480
|
userId: props.userId || copaUser.userId || ""
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
System.register(['./__federation_fn_import-CzfA7kmP.js', './client-
|
|
1
|
+
System.register(['./__federation_fn_import-CzfA7kmP.js', './client-DqBeHjYu.js'], (function (exports, module) {
|
|
2
2
|
'use strict';
|
|
3
3
|
var importShared, ReactDOM, jsxRuntimeExports, BrowserRouter, App;
|
|
4
4
|
return {
|
|
@@ -8,7 +8,7 @@ System.register([], (function (exports, module) {
|
|
|
8
8
|
let moduleMap = {
|
|
9
9
|
"./App":()=>{
|
|
10
10
|
dynamicLoadingCss(["remoteEntry.css"], false, './App');
|
|
11
|
-
return __federation_import('./__federation_expose_App-
|
|
11
|
+
return __federation_import('./__federation_expose_App-DK1ZdBX-.js').then(module =>Object.keys(module).every(item => exportSet.has(item)) ? () => module.default : () => module)},};
|
|
12
12
|
const seen = {};
|
|
13
13
|
const dynamicLoadingCss = exports("dynamicLoadingCss", (cssFilePaths, dontAppendStylesToHead, exposeItemName) => {
|
|
14
14
|
const metaUrl = module.meta.url;
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Bluecopa - AI-powered Finance Automation</title>
|
|
8
8
|
<meta name="description" content="AI-powered close automation for modern finance teams. Streamline your order-to-cash, procure-to-pay, and record-to-report processes." />
|
|
9
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
+
<script type="module" crossorigin src="/assets/index-B8EMpf6o.js"></script>
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/__federation_fn_import-CzfA7kmP.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/index-BzNimew1.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/index-DMFtQdNS.js">
|
|
13
|
-
<link rel="modulepreload" crossorigin href="/assets/client-
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/client-DqBeHjYu.js">
|
|
14
14
|
<link rel="stylesheet" crossorigin href="/assets/remoteEntry.css">
|
|
15
15
|
</head>
|
|
16
16
|
<body>
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"tailwindcss": "^4.1.13",
|
|
52
52
|
"tw-animate-css": "^1.3.8",
|
|
53
53
|
"typescript": "^5.8.3",
|
|
54
|
-
"vite": "
|
|
54
|
+
"vite": "6.4.1",
|
|
55
55
|
"vite-tsconfig-paths": "^5.1.4"
|
|
56
56
|
}
|
|
57
57
|
},
|
|
@@ -617,19 +617,6 @@
|
|
|
617
617
|
"integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==",
|
|
618
618
|
"license": "MIT"
|
|
619
619
|
},
|
|
620
|
-
"node_modules/@isaacs/fs-minipass": {
|
|
621
|
-
"version": "4.0.1",
|
|
622
|
-
"resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
|
|
623
|
-
"integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
|
|
624
|
-
"dev": true,
|
|
625
|
-
"license": "ISC",
|
|
626
|
-
"dependencies": {
|
|
627
|
-
"minipass": "^7.0.4"
|
|
628
|
-
},
|
|
629
|
-
"engines": {
|
|
630
|
-
"node": ">=18.0.0"
|
|
631
|
-
}
|
|
632
|
-
},
|
|
633
620
|
"node_modules/@jridgewell/gen-mapping": {
|
|
634
621
|
"version": "0.3.13",
|
|
635
622
|
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
|
|
@@ -2219,8 +2206,7 @@
|
|
|
2219
2206
|
"hasInstallScript": true,
|
|
2220
2207
|
"license": "MIT",
|
|
2221
2208
|
"dependencies": {
|
|
2222
|
-
"detect-libc": "^2.0.4"
|
|
2223
|
-
"tar": "^7.5.1"
|
|
2209
|
+
"detect-libc": "^2.0.4"
|
|
2224
2210
|
},
|
|
2225
2211
|
"engines": {
|
|
2226
2212
|
"node": ">= 10"
|
|
@@ -2738,16 +2724,6 @@
|
|
|
2738
2724
|
"protobufjs": "^7.2.5"
|
|
2739
2725
|
}
|
|
2740
2726
|
},
|
|
2741
|
-
"node_modules/chownr": {
|
|
2742
|
-
"version": "3.0.0",
|
|
2743
|
-
"resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
|
|
2744
|
-
"integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
|
|
2745
|
-
"dev": true,
|
|
2746
|
-
"license": "BlueOak-1.0.0",
|
|
2747
|
-
"engines": {
|
|
2748
|
-
"node": ">=18"
|
|
2749
|
-
}
|
|
2750
|
-
},
|
|
2751
2727
|
"node_modules/class-variance-authority": {
|
|
2752
2728
|
"version": "0.7.1",
|
|
2753
2729
|
"resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz",
|
|
@@ -3650,29 +3626,6 @@
|
|
|
3650
3626
|
"node": ">= 0.6"
|
|
3651
3627
|
}
|
|
3652
3628
|
},
|
|
3653
|
-
"node_modules/minipass": {
|
|
3654
|
-
"version": "7.1.2",
|
|
3655
|
-
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
|
|
3656
|
-
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
|
|
3657
|
-
"dev": true,
|
|
3658
|
-
"license": "ISC",
|
|
3659
|
-
"engines": {
|
|
3660
|
-
"node": ">=16 || 14 >=14.17"
|
|
3661
|
-
}
|
|
3662
|
-
},
|
|
3663
|
-
"node_modules/minizlib": {
|
|
3664
|
-
"version": "3.1.0",
|
|
3665
|
-
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz",
|
|
3666
|
-
"integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==",
|
|
3667
|
-
"dev": true,
|
|
3668
|
-
"license": "MIT",
|
|
3669
|
-
"dependencies": {
|
|
3670
|
-
"minipass": "^7.1.2"
|
|
3671
|
-
},
|
|
3672
|
-
"engines": {
|
|
3673
|
-
"node": ">= 18"
|
|
3674
|
-
}
|
|
3675
|
-
},
|
|
3676
3629
|
"node_modules/ms": {
|
|
3677
3630
|
"version": "2.1.3",
|
|
3678
3631
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
|
@@ -4145,23 +4098,6 @@
|
|
|
4145
4098
|
"url": "https://opencollective.com/webpack"
|
|
4146
4099
|
}
|
|
4147
4100
|
},
|
|
4148
|
-
"node_modules/tar": {
|
|
4149
|
-
"version": "7.5.1",
|
|
4150
|
-
"resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz",
|
|
4151
|
-
"integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==",
|
|
4152
|
-
"dev": true,
|
|
4153
|
-
"license": "ISC",
|
|
4154
|
-
"dependencies": {
|
|
4155
|
-
"@isaacs/fs-minipass": "^4.0.0",
|
|
4156
|
-
"chownr": "^3.0.0",
|
|
4157
|
-
"minipass": "^7.1.2",
|
|
4158
|
-
"minizlib": "^3.1.0",
|
|
4159
|
-
"yallist": "^5.0.0"
|
|
4160
|
-
},
|
|
4161
|
-
"engines": {
|
|
4162
|
-
"node": ">=18"
|
|
4163
|
-
}
|
|
4164
|
-
},
|
|
4165
4101
|
"node_modules/tiny-invariant": {
|
|
4166
4102
|
"version": "1.3.3",
|
|
4167
4103
|
"resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
|
|
@@ -4329,9 +4265,9 @@
|
|
|
4329
4265
|
}
|
|
4330
4266
|
},
|
|
4331
4267
|
"node_modules/vite": {
|
|
4332
|
-
"version": "6.
|
|
4333
|
-
"resolved": "https://registry.npmjs.org/vite/-/vite-6.
|
|
4334
|
-
"integrity": "sha512
|
|
4268
|
+
"version": "6.4.1",
|
|
4269
|
+
"resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz",
|
|
4270
|
+
"integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==",
|
|
4335
4271
|
"license": "MIT",
|
|
4336
4272
|
"dependencies": {
|
|
4337
4273
|
"esbuild": "^0.25.0",
|
|
@@ -4422,16 +4358,6 @@
|
|
|
4422
4358
|
}
|
|
4423
4359
|
}
|
|
4424
4360
|
},
|
|
4425
|
-
"node_modules/yallist": {
|
|
4426
|
-
"version": "5.0.0",
|
|
4427
|
-
"resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
|
|
4428
|
-
"integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
|
|
4429
|
-
"dev": true,
|
|
4430
|
-
"license": "BlueOak-1.0.0",
|
|
4431
|
-
"engines": {
|
|
4432
|
-
"node": ">=18"
|
|
4433
|
-
}
|
|
4434
|
-
},
|
|
4435
4361
|
"node_modules/zod": {
|
|
4436
4362
|
"version": "4.1.12",
|
|
4437
4363
|
"resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"typecheck": "tsc"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@bluecopa/react": "0.1.
|
|
13
|
+
"@bluecopa/react": "0.1.15",
|
|
14
14
|
"@dnd-kit/core": "^6.3.1",
|
|
15
15
|
"@dnd-kit/modifiers": "^9.0.0",
|
|
16
16
|
"@dnd-kit/sortable": "^10.0.0",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"tailwindcss": "^4.1.13",
|
|
56
56
|
"tw-animate-css": "^1.3.8",
|
|
57
57
|
"typescript": "^5.8.3",
|
|
58
|
-
"vite": "
|
|
58
|
+
"vite": "6.4.1",
|
|
59
59
|
"vite-tsconfig-paths": "^5.1.4"
|
|
60
60
|
}
|
|
61
61
|
}
|