@crediblemark/build 0.24.9 → 0.25.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/README.md +88 -152
- package/dist/{ArrayField-ABD3HGQK.css → ArrayField-HGGIE5AL.css} +73 -72
- package/dist/ArrayField-N36WXYIG.mjs +19 -0
- package/dist/{Editor-3EPLDK4J.mjs → Editor-CD7CMRO5.mjs} +7 -7
- package/dist/{ObjectField-RGVFMP6O.css → ObjectField-NKMT3CLS.css} +73 -72
- package/dist/ObjectField-RMXFC6TI.mjs +19 -0
- package/dist/{actions-CEH_5LMY.d.mts → actions-LaZpJ1KE.d.mts} +6 -1
- package/dist/{actions-CEH_5LMY.d.ts → actions-LaZpJ1KE.d.ts} +6 -1
- package/dist/{chunk-NV5F47RH.mjs → chunk-3S3KWE2J.mjs} +7 -7
- package/dist/{chunk-VE6BIQKS.mjs → chunk-BC5TH63U.mjs} +1 -1
- package/dist/{chunk-XLNVCM4Q.mjs → chunk-BPBYJDIJ.mjs} +129 -135
- package/dist/{chunk-5JSNFZKX.mjs → chunk-JKWSSGAY.mjs} +7 -7
- package/dist/{chunk-MFTVX2ME.mjs → chunk-MLM27DOG.mjs} +1 -1
- package/dist/{chunk-VZMLLRBL.mjs → chunk-NJZPPQVT.mjs} +4 -4
- package/dist/{chunk-KUWVOWUV.mjs → chunk-NSDGBGNG.mjs} +1 -1
- package/dist/{chunk-SJLXKGIW.mjs → chunk-OUXISRNA.mjs} +13 -13
- package/dist/{chunk-XQ5K5BWA.mjs → chunk-PQXVFRLA.mjs} +9 -9
- package/dist/{chunk-WH3A7FAR.mjs → chunk-UPNU77XM.mjs} +1 -1
- package/dist/{chunk-YE4FXNJW.mjs → chunk-WEPD3OBO.mjs} +2 -2
- package/dist/{full-SYDEKGLJ.mjs → full-HTQAR5N2.mjs} +5 -5
- package/dist/{index-CkSfgrvw.d.ts → index-Bj2x5pZ7.d.ts} +1 -1
- package/dist/{index-Cxwg4vUV.d.mts → index-CD3PszvP.d.mts} +1 -1
- package/dist/index.css +73 -72
- package/dist/index.d.mts +5 -10
- package/dist/index.d.ts +5 -10
- package/dist/index.js +206 -220
- package/dist/index.mjs +11 -11
- package/dist/internal.d.mts +2 -2
- package/dist/internal.d.ts +2 -2
- package/dist/{loaded-NHGZU7V3.mjs → loaded-AHSNCA4P.mjs} +2 -2
- package/dist/{loaded-5JH76RZT.mjs → loaded-CDAPR2WZ.mjs} +2 -2
- package/dist/{loaded-ON5OAY2P.mjs → loaded-Q7N3MNZB.mjs} +2 -2
- package/dist/no-external.css +73 -72
- package/dist/no-external.d.mts +3 -3
- package/dist/no-external.d.ts +3 -3
- package/dist/no-external.js +206 -220
- package/dist/no-external.mjs +11 -11
- package/dist/rsc.d.mts +2 -2
- package/dist/rsc.d.ts +2 -2
- package/dist/{walk-tree-B4ZvMfxS.d.ts → walk-tree-BEw6kTXm.d.ts} +1 -1
- package/dist/{walk-tree-C78ZVz19.d.mts → walk-tree-BO8uRNcW.d.mts} +1 -1
- package/package.json +1 -1
- package/dist/ArrayField-OPQ2CJX7.mjs +0 -19
- package/dist/ObjectField-ITKHRUX2.mjs +0 -19
package/README.md
CHANGED
|
@@ -5,205 +5,141 @@ The open-source visual editor for React. Build complex, high-performance page bu
|
|
|
5
5
|
[](https://www.npmjs.com/package/@crediblemark/build)
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
7
7
|
|
|
8
|
-
## Features
|
|
8
|
+
## 🎨 Features
|
|
9
9
|
|
|
10
10
|
- **Drag & Drop**: Powered by `@dnd-kit` for smooth, accessible, and highly customizable layouts.
|
|
11
11
|
- **Rich Text Editing**: Integrated with `tiptap` for a seamless content editing experience.
|
|
12
|
-
- **
|
|
12
|
+
- **Premium Matrix UI**: A sleek, high-density neutral-dark theme designed for professional CMS workflows.
|
|
13
|
+
- **Path Aliases Support**: Ready for `@/*` aliases to keep your codebase clean.
|
|
14
|
+
- **Magic Edit Mode**: Integrated pattern for `/edit` URL rewrites.
|
|
13
15
|
- **React Server Components (RSC) Support**: Optimized for modern Next.js applications.
|
|
14
|
-
- **High Performance**: Built with `zustand` for efficient state management and optimized rendering.
|
|
15
|
-
- **TypeScript First**: Fully typed API for a great developer experience.
|
|
16
16
|
|
|
17
|
-
## Installation
|
|
17
|
+
## 🚀 Installation
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
bun add @crediblemark/build
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
##
|
|
23
|
+
## 🏗️ Next.js Implementation Pattern
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
To replicate the professional CMS setup used in `NEXT_CMS`, follow this architecture:
|
|
26
|
+
|
|
27
|
+
### 1. Folder Structure
|
|
28
|
+
Organize your project to keep the editor logic separate from your public site logic:
|
|
29
|
+
```
|
|
30
|
+
/
|
|
31
|
+
├── credbuild.config.tsx # Central configuration
|
|
32
|
+
├── app/
|
|
33
|
+
│ ├── (site)/ # Public site routes
|
|
34
|
+
│ │ └── [...path]/ # Dynamic renderer
|
|
35
|
+
│ └── credbuild/ # Editor-only routes
|
|
36
|
+
│ └── [...path]/ # Dynamic editor
|
|
37
|
+
└── components/
|
|
38
|
+
└── credbuild/ # Your custom blocks
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 2. The "Magic Edit" Rewrite
|
|
42
|
+
Use Next.js `proxy.ts` to allow users to visit any page and simply add `/edit` to the URL to start building:
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
// proxy.ts
|
|
46
|
+
import type { NextRequest } from "next/server";
|
|
47
|
+
|
|
48
|
+
export function proxy(request: NextRequest) {
|
|
49
|
+
const url = request.nextUrl.clone();
|
|
50
|
+
if (url.pathname.endsWith("/edit")) {
|
|
51
|
+
const pathWithoutEdit = url.pathname.replace(/\/edit$/, "");
|
|
52
|
+
// Rewrite to the internal editor route
|
|
53
|
+
url.pathname = `/credbuild${pathWithoutEdit || "/"}`;
|
|
54
|
+
return NextResponse.rewrite(url);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 3. Dynamic Editor Route
|
|
60
|
+
Create a catch-all route at `app/credbuild/[...path]/page.tsx` that loads the `CredBuild` component:
|
|
26
61
|
|
|
27
62
|
```tsx
|
|
28
|
-
import React from "react";
|
|
29
63
|
import { CredBuild } from "@crediblemark/build";
|
|
64
|
+
import config from "@/credbuild.config";
|
|
30
65
|
import "@crediblemark/build/dist/index.css";
|
|
31
66
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
render: ({ title }) => <h1>{title}</h1>,
|
|
36
|
-
},
|
|
37
|
-
// Add more blocks here
|
|
38
|
-
},
|
|
39
|
-
};
|
|
67
|
+
export default async function EditorPage({ params }) {
|
|
68
|
+
const { path } = await params;
|
|
69
|
+
const data = await getPageData(path); // Fetch your JSON data
|
|
40
70
|
|
|
41
|
-
const MyEditor = () => {
|
|
42
71
|
return (
|
|
43
72
|
<CredBuild
|
|
44
73
|
config={config}
|
|
45
|
-
data={
|
|
46
|
-
|
|
74
|
+
data={data}
|
|
75
|
+
headerPath={path}
|
|
76
|
+
onPublish={async (newData) => {
|
|
77
|
+
await savePageData(path, newData);
|
|
78
|
+
}}
|
|
47
79
|
/>
|
|
48
80
|
);
|
|
49
|
-
}
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### 2. Render the Content
|
|
53
|
-
|
|
54
|
-
```tsx
|
|
55
|
-
import { Render } from "@crediblemark/build";
|
|
56
|
-
|
|
57
|
-
const MyPage = ({ data }) => {
|
|
58
|
-
return <Render config={config} data={data} />;
|
|
59
|
-
};
|
|
81
|
+
}
|
|
60
82
|
```
|
|
61
83
|
|
|
62
|
-
## Creating
|
|
63
|
-
|
|
64
|
-
Adding new components (blocks) to your editor is straightforward. Follow this pattern:
|
|
65
|
-
|
|
66
|
-
### 1. Define your Props
|
|
67
|
-
|
|
68
|
-
```tsx
|
|
69
|
-
type HeroProps = {
|
|
70
|
-
title: string;
|
|
71
|
-
description: string;
|
|
72
|
-
buttonText: string;
|
|
73
|
-
};
|
|
74
|
-
```
|
|
84
|
+
## 🧩 Creating Premium Components
|
|
75
85
|
|
|
76
|
-
|
|
86
|
+
For a high-fidelity "Premium Matrix" feel, follow the modular component pattern:
|
|
77
87
|
|
|
78
|
-
|
|
88
|
+
### 1. Define Component Logic (`AboutCompany.tsx`)
|
|
89
|
+
Keep your configuration and fields clean. Use Lucide icons and compact labels for a dashboard feel.
|
|
79
90
|
|
|
80
91
|
```tsx
|
|
81
92
|
import { ComponentConfig } from "@crediblemark/build";
|
|
93
|
+
import { User, Settings } from "lucide-react";
|
|
94
|
+
import { AboutRender } from "./AboutRender";
|
|
82
95
|
|
|
83
|
-
export const
|
|
84
|
-
label: "
|
|
96
|
+
export const AboutCompany: ComponentConfig<AboutProps> = {
|
|
97
|
+
label: "About Company",
|
|
85
98
|
fields: {
|
|
86
99
|
title: {
|
|
87
100
|
type: "text",
|
|
88
|
-
label: "📝 Title"
|
|
89
|
-
|
|
90
|
-
description: {
|
|
91
|
-
type: "textarea",
|
|
92
|
-
label: "📄 Description"
|
|
93
|
-
},
|
|
94
|
-
buttonText: {
|
|
95
|
-
type: "text",
|
|
96
|
-
label: "🔘 Button Label"
|
|
97
|
-
},
|
|
98
|
-
},
|
|
99
|
-
defaultProps: {
|
|
100
|
-
title: "Welcome to our site",
|
|
101
|
-
description: "Built with @crediblemark/build",
|
|
102
|
-
buttonText: "Get Started",
|
|
103
|
-
},
|
|
104
|
-
render: ({ title, description, buttonText }) => (
|
|
105
|
-
<section className="hero">
|
|
106
|
-
<h1>{title}</h1>
|
|
107
|
-
<p>{description}</p>
|
|
108
|
-
<button>{buttonText}</button>
|
|
109
|
-
</section>
|
|
110
|
-
),
|
|
111
|
-
};
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### 3. Register in the Editor Config
|
|
115
|
-
|
|
116
|
-
```tsx
|
|
117
|
-
const config = {
|
|
118
|
-
blocks: {
|
|
119
|
-
Hero,
|
|
120
|
-
// Add more blocks here
|
|
121
|
-
},
|
|
122
|
-
categories: {
|
|
123
|
-
"🎬 Hero Sections": {
|
|
124
|
-
components: ["Hero"],
|
|
125
|
-
},
|
|
126
|
-
},
|
|
127
|
-
};
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## Organizing with Categories
|
|
131
|
-
|
|
132
|
-
You can group your components into categories to keep the sidebar organized.
|
|
133
|
-
|
|
134
|
-
```tsx
|
|
135
|
-
const config = {
|
|
136
|
-
categories: {
|
|
137
|
-
"🎬 Hero Sections": {
|
|
138
|
-
components: ["Hero", "Banner"],
|
|
139
|
-
},
|
|
140
|
-
"📦 Content Blocks": {
|
|
141
|
-
components: ["Text", "Image", "Video"],
|
|
101
|
+
label: "📝 Title",
|
|
102
|
+
placeholder: "Enter company name..."
|
|
142
103
|
},
|
|
104
|
+
count: {
|
|
105
|
+
type: "number",
|
|
106
|
+
label: "🔢 Employee Count"
|
|
107
|
+
}
|
|
143
108
|
},
|
|
144
|
-
|
|
145
|
-
// ... all blocks defined here
|
|
146
|
-
},
|
|
109
|
+
render: AboutRender,
|
|
147
110
|
};
|
|
148
111
|
```
|
|
149
112
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
113
|
+
### 2. Standardize UI Aesthetics
|
|
114
|
+
CredBuild enforces a high-density UI. When creating custom field labels or sidebars, use these CSS variables and standards:
|
|
115
|
+
- **Font Size**: Labels at `9px`, Inputs at `12px`.
|
|
116
|
+
- **Border Radius**: `5px` (rounded-md).
|
|
117
|
+
- **Icons**: Always include icons in field labels for visual scanning.
|
|
153
118
|
|
|
154
|
-
|
|
155
|
-
```tsx
|
|
156
|
-
title: { type: "text", label: "📝 Title" }
|
|
157
|
-
```
|
|
158
|
-
2. **Responsive Typography**: Use `clamp()` for fluid font sizes that work on all screens.
|
|
159
|
-
```tsx
|
|
160
|
-
<h1 style={{ fontSize: 'clamp(2rem, 5vw, 4rem)' }}>{title}</h1>
|
|
161
|
-
```
|
|
162
|
-
3. **Smart Fallbacks**: Always provide sensible `defaultProps` and handle missing images/content gracefully in your `render` function.
|
|
163
|
-
4. **Group Related Fields**: If a component has many fields, group them logically in the `fields` definition.
|
|
119
|
+
## 💎 Premium Design System Standards
|
|
164
120
|
|
|
165
|
-
|
|
121
|
+
To maintain the "Premium Matrix" aesthetic across your host application:
|
|
166
122
|
|
|
123
|
+
1. **Isolation**: CredBuild uses `data-cb-theme="dark"` to isolate its styles. Ensure your host application CSS doesn't leak into the editor by using specific selectors.
|
|
124
|
+
2. **Compactness**: Set your sidebar width to `300px` to `380px`. The fields are optimized for narrow containers.
|
|
125
|
+
3. **Typography**: Use modern fonts like *Inter* or *Outfit* for the best visual results.
|
|
167
126
|
|
|
168
|
-
|
|
127
|
+
## ⚡ Quick Start (Basic)
|
|
169
128
|
|
|
170
|
-
|
|
129
|
+
If you just want a simple standalone editor:
|
|
171
130
|
|
|
172
131
|
```tsx
|
|
173
|
-
|
|
174
|
-
type: "array",
|
|
175
|
-
label: "✨ Features",
|
|
176
|
-
arrayFields: {
|
|
177
|
-
title: { type: "text", label: "Feature Title" },
|
|
178
|
-
description: { type: "textarea", label: "Description" },
|
|
179
|
-
},
|
|
180
|
-
getItemSummary: (item) => item.title || "Feature",
|
|
181
|
-
}
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
### Using Hooks
|
|
186
|
-
|
|
187
|
-
Access the editor state or trigger actions programmatically.
|
|
188
|
-
|
|
189
|
-
```tsx
|
|
190
|
-
import { useCredBuild } from "@crediblemark/build";
|
|
191
|
-
|
|
192
|
-
const CustomTool = () => {
|
|
193
|
-
const { appendBlock } = useCredBuild();
|
|
132
|
+
import { CredBuild } from "@crediblemark/build";
|
|
194
133
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
134
|
+
const MyEditor = () => (
|
|
135
|
+
<CredBuild
|
|
136
|
+
config={{ components: { ... } }}
|
|
137
|
+
data={{ content: [] }}
|
|
138
|
+
onChange={(data) => console.log(data)}
|
|
139
|
+
/>
|
|
140
|
+
);
|
|
201
141
|
```
|
|
202
142
|
|
|
203
|
-
##
|
|
204
|
-
|
|
205
|
-
For full documentation and examples, visit [build.crediblemark.com](https://build.crediblemark.com).
|
|
206
|
-
|
|
207
|
-
## License
|
|
143
|
+
## 📜 License
|
|
208
144
|
|
|
209
145
|
MIT © [Rasyiqi Crediblemark](https://github.com/crediblemark-official)
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/* css-module:/home/crediblemark/Project/Credibuild/components/AutoField/fields/ArrayField/styles.module.css/#css-module-data */
|
|
2
|
-
.
|
|
2
|
+
._ArrayField_rvhj3_5 {
|
|
3
3
|
display: flex;
|
|
4
4
|
flex-direction: column;
|
|
5
5
|
background: var(--credbuild-color-azure-11);
|
|
6
6
|
border: 1px solid var(--credbuild-color-grey-09);
|
|
7
7
|
border-radius: 4px;
|
|
8
8
|
}
|
|
9
|
-
._ArrayField--
|
|
9
|
+
._ArrayField--isDraggingFrom_rvhj3_13 {
|
|
10
10
|
background-color: var(--credbuild-color-azure-11);
|
|
11
11
|
overflow: hidden;
|
|
12
12
|
}
|
|
13
|
-
._ArrayField-
|
|
13
|
+
._ArrayField-addButton_rvhj3_18 {
|
|
14
14
|
background-color: var(--credbuild-color-white);
|
|
15
15
|
border: none;
|
|
16
16
|
border-radius: 3px;
|
|
@@ -24,139 +24,139 @@
|
|
|
24
24
|
text-align: left;
|
|
25
25
|
transition: background-color 50ms ease-in;
|
|
26
26
|
}
|
|
27
|
-
._ArrayField--
|
|
27
|
+
._ArrayField--hasItems_rvhj3_33 > ._ArrayField-addButton_rvhj3_18 {
|
|
28
28
|
border-top: 1px solid var(--credbuild-color-grey-09);
|
|
29
29
|
border-top-left-radius: 0;
|
|
30
30
|
border-top-right-radius: 0;
|
|
31
31
|
}
|
|
32
|
-
._ArrayField-
|
|
32
|
+
._ArrayField-addButton_rvhj3_18:focus-visible {
|
|
33
33
|
outline: 2px solid var(--credbuild-color-azure-05);
|
|
34
34
|
outline-offset: 2px;
|
|
35
35
|
position: relative;
|
|
36
36
|
}
|
|
37
37
|
@media (hover: hover) and (pointer: fine) {
|
|
38
|
-
.
|
|
38
|
+
._ArrayField_rvhj3_5:not(._ArrayField--isDraggingFrom_rvhj3_13) > ._ArrayField-addButton_rvhj3_18:hover {
|
|
39
39
|
background: var(--credbuild-color-azure-12);
|
|
40
40
|
color: var(--credbuild-color-azure-04);
|
|
41
41
|
transition: none;
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
-
.
|
|
44
|
+
._ArrayField_rvhj3_5:not(._ArrayField--isDraggingFrom_rvhj3_13) > ._ArrayField-addButton_rvhj3_18:active {
|
|
45
45
|
background: var(--credbuild-color-azure-11);
|
|
46
46
|
color: var(--credbuild-color-azure-04);
|
|
47
47
|
transition: none;
|
|
48
48
|
}
|
|
49
|
-
._ArrayField-
|
|
49
|
+
._ArrayField-inner_rvhj3_59 {
|
|
50
50
|
margin-top: -1px;
|
|
51
51
|
}
|
|
52
|
-
.
|
|
52
|
+
._ArrayFieldItem_rvhj3_67 {
|
|
53
53
|
border-top-left-radius: 3px;
|
|
54
54
|
border-top-right-radius: 3px;
|
|
55
55
|
display: block;
|
|
56
56
|
position: relative;
|
|
57
57
|
}
|
|
58
|
-
.
|
|
58
|
+
._ArrayFieldItem_rvhj3_67 {
|
|
59
59
|
border-top: 1px solid var(--credbuild-color-grey-09);
|
|
60
60
|
}
|
|
61
|
-
._ArrayFieldItem--
|
|
61
|
+
._ArrayFieldItem--isDragging_rvhj3_78 {
|
|
62
62
|
border-top: transparent;
|
|
63
63
|
}
|
|
64
|
-
._ArrayFieldItem--
|
|
64
|
+
._ArrayFieldItem--isExpanded_rvhj3_82::before {
|
|
65
65
|
display: none;
|
|
66
66
|
}
|
|
67
|
-
._ArrayFieldItem--
|
|
67
|
+
._ArrayFieldItem--isExpanded_rvhj3_82 {
|
|
68
68
|
border-bottom: 0;
|
|
69
69
|
outline-offset: 0px !important;
|
|
70
70
|
outline: 1px solid var(--credbuild-color-azure-07) !important;
|
|
71
71
|
z-index: 2;
|
|
72
72
|
}
|
|
73
|
-
._ArrayFieldItem--
|
|
73
|
+
._ArrayFieldItem--isDragging_rvhj3_78 {
|
|
74
74
|
outline: 2px var(--credbuild-color-azure-09) solid !important;
|
|
75
75
|
}
|
|
76
|
-
._ArrayFieldItem--
|
|
76
|
+
._ArrayFieldItem--isDragging_rvhj3_78 ._ArrayFieldItem-summary_rvhj3_97:active {
|
|
77
77
|
background-color: var(--credbuild-color-white);
|
|
78
78
|
}
|
|
79
|
-
.
|
|
79
|
+
._ArrayFieldItem_rvhj3_67 + ._ArrayFieldItem_rvhj3_67 {
|
|
80
80
|
border-top-left-radius: 0;
|
|
81
81
|
border-top-right-radius: 0;
|
|
82
82
|
}
|
|
83
|
-
._ArrayFieldItem-
|
|
83
|
+
._ArrayFieldItem-summary_rvhj3_97 {
|
|
84
84
|
background: var(--credbuild-color-white);
|
|
85
85
|
color: var(--credbuild-color-grey-04);
|
|
86
86
|
cursor: pointer;
|
|
87
87
|
display: flex;
|
|
88
88
|
align-items: center;
|
|
89
|
-
gap:
|
|
89
|
+
gap: 4px;
|
|
90
90
|
justify-content: space-between;
|
|
91
|
-
font-size:
|
|
91
|
+
font-size: 11px;
|
|
92
92
|
list-style: none;
|
|
93
|
-
padding:
|
|
93
|
+
padding: 4px 10px;
|
|
94
94
|
position: relative;
|
|
95
95
|
overflow: hidden;
|
|
96
96
|
transition: background-color 50ms ease-in;
|
|
97
97
|
}
|
|
98
|
-
._ArrayFieldItem--
|
|
98
|
+
._ArrayFieldItem--noFields_rvhj3_122 > ._ArrayFieldItem-summary_rvhj3_97 {
|
|
99
99
|
cursor: grab;
|
|
100
100
|
}
|
|
101
|
-
.
|
|
101
|
+
._ArrayFieldItem_rvhj3_67:first-of-type > ._ArrayFieldItem-summary_rvhj3_97 {
|
|
102
102
|
border-top-left-radius: 3px;
|
|
103
103
|
border-top-right-radius: 3px;
|
|
104
104
|
}
|
|
105
|
-
._ArrayField--
|
|
105
|
+
._ArrayField--addDisabled_rvhj3_131 > ._ArrayField-inner_rvhj3_59 > ._ArrayFieldItem_rvhj3_67:last-of-type:not(._ArrayFieldItem--isExpanded_rvhj3_82) > ._ArrayFieldItem-summary_rvhj3_97 {
|
|
106
106
|
border-bottom-left-radius: 3px;
|
|
107
107
|
border-bottom-right-radius: 3px;
|
|
108
108
|
}
|
|
109
|
-
._ArrayField--
|
|
109
|
+
._ArrayField--addDisabled_rvhj3_131 > ._ArrayField-inner_rvhj3_59 > ._ArrayFieldItem--isExpanded_rvhj3_82:last-of-type {
|
|
110
110
|
border-bottom-left-radius: 3px;
|
|
111
111
|
border-bottom-right-radius: 3px;
|
|
112
112
|
}
|
|
113
|
-
._ArrayFieldItem-
|
|
113
|
+
._ArrayFieldItem-summary_rvhj3_97:focus-visible {
|
|
114
114
|
outline: 2px solid var(--credbuild-color-azure-05);
|
|
115
115
|
outline-offset: 2px;
|
|
116
116
|
}
|
|
117
117
|
@media (hover: hover) and (pointer: fine) {
|
|
118
|
-
._ArrayFieldItem-
|
|
118
|
+
._ArrayFieldItem-summary_rvhj3_97:hover {
|
|
119
119
|
background-color: var(--credbuild-color-azure-12);
|
|
120
120
|
transition: none;
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
|
-
._ArrayFieldItem-
|
|
123
|
+
._ArrayFieldItem-summary_rvhj3_97:active {
|
|
124
124
|
background-color: var(--credbuild-color-azure-11);
|
|
125
125
|
transition: none;
|
|
126
126
|
}
|
|
127
|
-
._ArrayFieldItem--
|
|
127
|
+
._ArrayFieldItem--isExpanded_rvhj3_82 > ._ArrayFieldItem-summary_rvhj3_97 {
|
|
128
128
|
background: var(--credbuild-color-azure-11);
|
|
129
129
|
color: var(--credbuild-color-azure-04);
|
|
130
130
|
font-weight: 600;
|
|
131
131
|
transition: none;
|
|
132
132
|
}
|
|
133
|
-
._ArrayFieldItem-
|
|
133
|
+
._ArrayFieldItem-body_rvhj3_170 {
|
|
134
134
|
background: var(--credbuild-color-white);
|
|
135
135
|
display: none;
|
|
136
136
|
}
|
|
137
|
-
._ArrayFieldItem--
|
|
137
|
+
._ArrayFieldItem--isExpanded_rvhj3_82 > ._ArrayFieldItem-body_rvhj3_170 {
|
|
138
138
|
display: block;
|
|
139
139
|
}
|
|
140
|
-
._ArrayFieldItem-
|
|
140
|
+
._ArrayFieldItem-fieldset_rvhj3_179 {
|
|
141
141
|
border: none;
|
|
142
142
|
border-top: 1px solid var(--credbuild-color-grey-09);
|
|
143
143
|
margin: 0;
|
|
144
144
|
min-width: 0;
|
|
145
|
-
padding:
|
|
145
|
+
padding: 6px 10px;
|
|
146
146
|
}
|
|
147
|
-
._ArrayFieldItem-
|
|
147
|
+
._ArrayFieldItem-rhs_rvhj3_187 {
|
|
148
148
|
display: flex;
|
|
149
149
|
gap: 4px;
|
|
150
150
|
align-items: center;
|
|
151
151
|
}
|
|
152
|
-
._ArrayFieldItem-
|
|
152
|
+
._ArrayFieldItem-actions_rvhj3_193 {
|
|
153
153
|
color: var(--credbuild-color-grey-04);
|
|
154
154
|
display: flex;
|
|
155
155
|
gap: 4px;
|
|
156
156
|
opacity: 0;
|
|
157
157
|
}
|
|
158
|
-
._ArrayFieldItem-
|
|
159
|
-
._ArrayFieldItem-
|
|
158
|
+
._ArrayFieldItem-summary_rvhj3_97:focus-within > ._ArrayFieldItem-rhs_rvhj3_187 > ._ArrayFieldItem-actions_rvhj3_193,
|
|
159
|
+
._ArrayFieldItem-summary_rvhj3_97:hover > ._ArrayFieldItem-rhs_rvhj3_187 > ._ArrayFieldItem-actions_rvhj3_193 {
|
|
160
160
|
opacity: 1;
|
|
161
161
|
}
|
|
162
162
|
|
|
@@ -258,44 +258,45 @@
|
|
|
258
258
|
}
|
|
259
259
|
|
|
260
260
|
/* css-module:/home/crediblemark/Project/Credibuild/components/AutoField/styles.module.css/#css-module-data */
|
|
261
|
-
.
|
|
261
|
+
._InputWrapper_rcfsp_1:not(._InputWrapper--object_rcfsp_1):not(._InputWrapper--array_rcfsp_1) {
|
|
262
262
|
border: 1px solid var(--credbuild-color-grey-10);
|
|
263
263
|
border-radius: 5px;
|
|
264
|
-
padding:
|
|
264
|
+
padding: 4px 8px;
|
|
265
265
|
background-color: var(--credbuild-color-white);
|
|
266
266
|
transition: all 0.2s ease;
|
|
267
267
|
}
|
|
268
|
-
.
|
|
268
|
+
._InputWrapper_rcfsp_1 + ._InputWrapper_rcfsp_1 {
|
|
269
269
|
margin-top: 2px;
|
|
270
270
|
}
|
|
271
|
-
.
|
|
271
|
+
._InputWrapper_rcfsp_1:not(._InputWrapper--object_rcfsp_1):not(._InputWrapper--array_rcfsp_1):hover {
|
|
272
272
|
border-color: var(--credbuild-color-grey-08);
|
|
273
273
|
background-color: var(--credbuild-color-grey-11);
|
|
274
274
|
}
|
|
275
|
-
._Input-
|
|
275
|
+
._Input-label_rcfsp_18 {
|
|
276
276
|
align-items: center;
|
|
277
|
-
color: var(--credbuild-color-grey-
|
|
277
|
+
color: var(--credbuild-color-grey-06);
|
|
278
278
|
display: flex;
|
|
279
279
|
padding-bottom: 2px;
|
|
280
|
-
font-size:
|
|
280
|
+
font-size: 9px;
|
|
281
281
|
font-weight: 500;
|
|
282
282
|
text-transform: uppercase;
|
|
283
|
-
letter-spacing: 0.
|
|
283
|
+
letter-spacing: 0.08em;
|
|
284
|
+
opacity: 0.7;
|
|
284
285
|
}
|
|
285
|
-
._Input-label--
|
|
286
|
+
._Input-label--noChildren_rcfsp_30 {
|
|
286
287
|
padding-bottom: 0;
|
|
287
288
|
}
|
|
288
|
-
._Input-
|
|
289
|
+
._Input-labelIcon_rcfsp_34 {
|
|
289
290
|
color: var(--credbuild-color-grey-07);
|
|
290
291
|
display: flex;
|
|
291
292
|
margin-inline-end: 4px;
|
|
292
293
|
padding-inline-start: 4px;
|
|
293
294
|
}
|
|
294
|
-
._Input-
|
|
295
|
+
._Input-disabledIcon_rcfsp_41 {
|
|
295
296
|
color: var(--credbuild-color-grey-05);
|
|
296
297
|
margin-inline-start: auto;
|
|
297
298
|
}
|
|
298
|
-
._Input-
|
|
299
|
+
._Input-input_rcfsp_46 {
|
|
299
300
|
background: transparent;
|
|
300
301
|
border: none;
|
|
301
302
|
border-radius: 0;
|
|
@@ -310,11 +311,11 @@
|
|
|
310
311
|
outline: none;
|
|
311
312
|
}
|
|
312
313
|
@media (min-width: 458px) {
|
|
313
|
-
._Input-
|
|
314
|
-
font-size:
|
|
314
|
+
._Input-input_rcfsp_46 {
|
|
315
|
+
font-size: 12px;
|
|
315
316
|
}
|
|
316
317
|
}
|
|
317
|
-
select._Input-
|
|
318
|
+
select._Input-input_rcfsp_46 {
|
|
318
319
|
appearance: none;
|
|
319
320
|
background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23c3c3c3'><polygon points='0,0 100,0 50,50'/></svg>") no-repeat;
|
|
320
321
|
background-size: 12px;
|
|
@@ -323,29 +324,29 @@ select._Input-input_1xuyz_45 {
|
|
|
323
324
|
background-color: var(--credbuild-color-white);
|
|
324
325
|
cursor: pointer;
|
|
325
326
|
}
|
|
326
|
-
select._Input-
|
|
327
|
+
select._Input-input_rcfsp_46:dir(rtl) {
|
|
327
328
|
background-position: 12px calc(50% + 3px);
|
|
328
329
|
}
|
|
329
330
|
@media (hover: hover) and (pointer: fine) {
|
|
330
|
-
.
|
|
331
|
-
.
|
|
331
|
+
._Input_rcfsp_1:has(> input):hover ._Input-input_rcfsp_46:not([readonly]),
|
|
332
|
+
._Input_rcfsp_1:has(> textarea):hover ._Input-input_rcfsp_46:not([readonly]) {
|
|
332
333
|
border-color: var(--credbuild-color-grey-05);
|
|
333
334
|
transition: none;
|
|
334
335
|
}
|
|
335
|
-
.
|
|
336
|
+
._Input_rcfsp_1:has(> select):hover ._Input-input_rcfsp_46:not([disabled]) {
|
|
336
337
|
background-color: var(--credbuild-color-azure-12);
|
|
337
338
|
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%235a5a5a'><polygon points='0,0 100,0 50,50'/></svg>");
|
|
338
339
|
border-color: var(--credbuild-color-grey-05);
|
|
339
340
|
transition: none;
|
|
340
341
|
}
|
|
341
342
|
}
|
|
342
|
-
._Input-
|
|
343
|
+
._Input-input_rcfsp_46:focus {
|
|
343
344
|
border-color: var(--credbuild-color-grey-05);
|
|
344
345
|
outline: 2px solid var(--credbuild-color-azure-05);
|
|
345
346
|
transition: none;
|
|
346
347
|
}
|
|
347
|
-
._Input--
|
|
348
|
-
._Input--
|
|
348
|
+
._Input--readOnly_rcfsp_102 > ._Input-input_rcfsp_46,
|
|
349
|
+
._Input--readOnly_rcfsp_102 > select._Input-input_rcfsp_46 {
|
|
349
350
|
background-color: var(--credbuild-color-grey-11);
|
|
350
351
|
border-color: var(--credbuild-color-grey-09);
|
|
351
352
|
color: var(--credbuild-color-grey-04);
|
|
@@ -354,34 +355,34 @@ select._Input-input_1xuyz_45:dir(rtl) {
|
|
|
354
355
|
outline: 0;
|
|
355
356
|
transition: none;
|
|
356
357
|
}
|
|
357
|
-
._Input-
|
|
358
|
+
._Input-radioGroupItems_rcfsp_113 {
|
|
358
359
|
display: flex;
|
|
359
360
|
border: 1px solid var(--credbuild-color-grey-09);
|
|
360
361
|
border-radius: 4px;
|
|
361
362
|
flex-wrap: wrap;
|
|
362
363
|
}
|
|
363
|
-
._Input-
|
|
364
|
+
._Input-radio_rcfsp_113 {
|
|
364
365
|
border-inline-end: 1px solid var(--credbuild-color-grey-09);
|
|
365
366
|
flex-grow: 1;
|
|
366
367
|
}
|
|
367
|
-
._Input-
|
|
368
|
+
._Input-radio_rcfsp_113:first-of-type {
|
|
368
369
|
border-bottom-left-radius: 4px;
|
|
369
370
|
border-top-left-radius: 4px;
|
|
370
371
|
}
|
|
371
|
-
._Input-
|
|
372
|
+
._Input-radio_rcfsp_113:first-of-type ._Input-radioInner_rcfsp_130 {
|
|
372
373
|
border-bottom-left-radius: 3px;
|
|
373
374
|
border-top-left-radius: 3px;
|
|
374
375
|
}
|
|
375
|
-
._Input-
|
|
376
|
+
._Input-radio_rcfsp_113:last-of-type {
|
|
376
377
|
border-bottom-right-radius: 4px;
|
|
377
378
|
border-inline-end: 0;
|
|
378
379
|
border-top-right-radius: 4px;
|
|
379
380
|
}
|
|
380
|
-
._Input-
|
|
381
|
+
._Input-radio_rcfsp_113:last-of-type ._Input-radioInner_rcfsp_130 {
|
|
381
382
|
border-bottom-right-radius: 3px;
|
|
382
383
|
border-top-right-radius: 3px;
|
|
383
384
|
}
|
|
384
|
-
._Input-
|
|
385
|
+
._Input-radioInner_rcfsp_130 {
|
|
385
386
|
background-color: var(--credbuild-color-white);
|
|
386
387
|
color: var(--credbuild-color-grey-04);
|
|
387
388
|
cursor: pointer;
|
|
@@ -390,32 +391,32 @@ select._Input-input_1xuyz_45:dir(rtl) {
|
|
|
390
391
|
text-align: center;
|
|
391
392
|
transition: background-color 50ms ease-in;
|
|
392
393
|
}
|
|
393
|
-
._Input-
|
|
394
|
+
._Input-radio_rcfsp_113:has(:focus-visible) {
|
|
394
395
|
outline: 2px solid var(--credbuild-color-azure-05);
|
|
395
396
|
outline-offset: 2px;
|
|
396
397
|
position: relative;
|
|
397
398
|
}
|
|
398
399
|
@media (hover: hover) and (pointer: fine) {
|
|
399
|
-
._Input-
|
|
400
|
+
._Input-radioInner_rcfsp_130:hover {
|
|
400
401
|
background-color: var(--credbuild-color-azure-12);
|
|
401
402
|
transition: none;
|
|
402
403
|
}
|
|
403
404
|
}
|
|
404
|
-
._Input--
|
|
405
|
+
._Input--readOnly_rcfsp_102 ._Input-radioInner_rcfsp_130 {
|
|
405
406
|
background-color: var(--credbuild-color-white);
|
|
406
407
|
color: var(--credbuild-color-grey-04);
|
|
407
408
|
cursor: default;
|
|
408
409
|
}
|
|
409
|
-
._Input-
|
|
410
|
+
._Input-radio_rcfsp_113 ._Input-radioInput_rcfsp_175:checked ~ ._Input-radioInner_rcfsp_130 {
|
|
410
411
|
background-color: var(--credbuild-color-azure-11);
|
|
411
412
|
color: var(--credbuild-color-azure-04);
|
|
412
413
|
font-weight: 500;
|
|
413
414
|
}
|
|
414
|
-
._Input--
|
|
415
|
+
._Input--readOnly_rcfsp_102 ._Input-radioInput_rcfsp_175:checked ~ ._Input-radioInner_rcfsp_130 {
|
|
415
416
|
background-color: var(--credbuild-color-grey-11);
|
|
416
417
|
color: var(--credbuild-color-grey-04);
|
|
417
418
|
}
|
|
418
|
-
._Input-
|
|
419
|
+
._Input-radio_rcfsp_113 ._Input-radioInput_rcfsp_175 {
|
|
419
420
|
clip: rect(0 0 0 0);
|
|
420
421
|
clip-path: inset(100%);
|
|
421
422
|
height: 1px;
|
|
@@ -424,7 +425,7 @@ select._Input-input_1xuyz_45:dir(rtl) {
|
|
|
424
425
|
white-space: nowrap;
|
|
425
426
|
width: 1px;
|
|
426
427
|
}
|
|
427
|
-
textarea._Input-
|
|
428
|
+
textarea._Input-input_rcfsp_46 {
|
|
428
429
|
margin-bottom: -4px;
|
|
429
430
|
}
|
|
430
431
|
|