@arpproject/recrate 0.1.32 → 0.1.34
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 +80 -2
- package/dist/crate-builder/RenderEntity/Shell2.d.ts +2 -0
- package/dist/crate-builder/Shell.d.ts +3 -0
- package/dist/crate-builder/locales/en.d.ts +7 -0
- package/dist/crate-builder/locales/hu.d.ts +7 -0
- package/dist/crate-builder/property-definitions.d.ts +5 -0
- package/dist/recrate.css +1 -1
- package/dist/recrate.es.js +105 -44
- package/dist/types.d.ts +224 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -11,6 +11,10 @@ The package version matches the latest version of the original Crate Builder pr
|
|
|
11
11
|
- [Crate Builder Component](#crate-builder-component)
|
|
12
12
|
- [Documentation](#documentation)
|
|
13
13
|
- [API Documentation](#api-documentation)
|
|
14
|
+
- [ARP feature notes](#arp-feature-notes)
|
|
15
|
+
- [AI metadata review](#ai-metadata-review)
|
|
16
|
+
- [Quick filter/settings header](#quick-filtersettings-header)
|
|
17
|
+
- [Profile action management](#profile-action-management)
|
|
14
18
|
- [Developing the plugin](#developing-the-plugin)
|
|
15
19
|
- [Storybook](#storybook)
|
|
16
20
|
- [Development application](#development-application)
|
|
@@ -19,7 +23,7 @@ The package version matches the latest version of the original Crate Builder pr
|
|
|
19
23
|
- [Repository structure](#repository-structure)
|
|
20
24
|
|
|
21
25
|
This is the core UI component for assembling an RO-Crate inside Describo. It is a self contained
|
|
22
|
-
|
|
26
|
+
React component that can be used inside your app. If you use this component, your app is responsible
|
|
23
27
|
for loading the crate file from the storage layer (or minting a new one if none exists) and saving
|
|
24
28
|
the updated crate back. Your app can also provide a profile to the component and a class to handle
|
|
25
29
|
template lookups.
|
|
@@ -35,11 +39,85 @@ Comprehensive documentation is available @
|
|
|
35
39
|
- [ProfileManager](https://describo.github.io/crate-builder-component/ProfileManager.html)
|
|
36
40
|
- [EditorState](https://describo.github.io/crate-builder-component/EditorState.html)
|
|
37
41
|
|
|
42
|
+
# ARP feature notes
|
|
43
|
+
|
|
44
|
+
The ARP fork adds several host-integrated workflows on top of the upstream crate builder. Their
|
|
45
|
+
public integration points are documented in the generated `DescriboCrateBuilderProps` API docs.
|
|
46
|
+
|
|
47
|
+
## AI metadata review
|
|
48
|
+
|
|
49
|
+
Pass `roCrateApproval` to display AI-generated metadata changes that still need review. The approval
|
|
50
|
+
payload is usually loaded from `ro-crate-approval.json` and can be an array of entity approval
|
|
51
|
+
objects, an object with an `items` array, or a single entity approval object with an `approval`
|
|
52
|
+
array.
|
|
53
|
+
|
|
54
|
+
Each approval record should include:
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"propertyName": "title",
|
|
59
|
+
"previousValue": "Original title",
|
|
60
|
+
"operation": "update",
|
|
61
|
+
"approved": false,
|
|
62
|
+
"timestamp": "2026-05-12T08:15:00.000Z"
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
When pending records exist for the current entity, the editor shows the AI review banner, field-level
|
|
67
|
+
diffs, edited-field badges, and next/previous review controls. Accepting a field marks its records as
|
|
68
|
+
approved. Rejecting a field or making a manual edit removes the pending records from the approval
|
|
69
|
+
state. Persist approval state changes with `onSaveRoCrateApproval`.
|
|
70
|
+
|
|
71
|
+
```tsx
|
|
72
|
+
<DescriboCrateBuilder
|
|
73
|
+
crate={crate}
|
|
74
|
+
profile={profile}
|
|
75
|
+
roCrateApproval={roCrateApproval}
|
|
76
|
+
onSaveCrate={({ crate }) => saveCrate(crate)}
|
|
77
|
+
onSaveRoCrateApproval={({ roCrateApproval }) => saveApproval(roCrateApproval)}
|
|
78
|
+
/>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Quick filter/settings header
|
|
82
|
+
|
|
83
|
+
The control-bar settings button opens a quick settings header above the entity fields. It lets users
|
|
84
|
+
toggle field help, filter visible fields by label or value, hide empty fields, and, when approved AI
|
|
85
|
+
records exist, show only AI-edited fields.
|
|
86
|
+
|
|
87
|
+
Host applications can control the panel state with `quickSettingsVisible` and
|
|
88
|
+
`onQuickSettingsVisibleChange`.
|
|
89
|
+
|
|
90
|
+
```tsx
|
|
91
|
+
<DescriboCrateBuilder
|
|
92
|
+
crate={crate}
|
|
93
|
+
profile={profile}
|
|
94
|
+
quickSettingsVisible={quickSettingsVisible}
|
|
95
|
+
onQuickSettingsVisibleChange={setQuickSettingsVisible}
|
|
96
|
+
/>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Profile action management
|
|
100
|
+
|
|
101
|
+
Set `enableProfileActions` or provide profile action callbacks to show add/remove profile controls in
|
|
102
|
+
the profile tab rail. `onAddNewProfileRequest` tells the host that the user wants to add a profile to
|
|
103
|
+
the current entity. `onRemoveProfile` gives the host the entity id and selected profile tab metadata,
|
|
104
|
+
including whether the tab has data or missing required fields.
|
|
105
|
+
|
|
106
|
+
```tsx
|
|
107
|
+
<DescriboCrateBuilder
|
|
108
|
+
crate={crate}
|
|
109
|
+
profile={profile}
|
|
110
|
+
enableProfileActions
|
|
111
|
+
onAddNewProfileRequest={() => openProfilePicker()}
|
|
112
|
+
onRemoveProfile={({ entityId, tab }) => removeProfileFromEntity(entityId, tab)}
|
|
113
|
+
/>
|
|
114
|
+
```
|
|
115
|
+
|
|
38
116
|
# Developing the plugin
|
|
39
117
|
|
|
40
118
|
## Storybook
|
|
41
119
|
|
|
42
|
-
[Storybook](storybook.js.org/) is used in this application. When you are just developing the
|
|
120
|
+
[Storybook](https://storybook.js.org/) is used in this application. When you are just developing the
|
|
43
121
|
components, storybook is what you want as you can focus just on the component in isolation. To start
|
|
44
122
|
it run:
|
|
45
123
|
|
|
@@ -9,6 +9,8 @@ interface RenderEntityProps {
|
|
|
9
9
|
onSaveEntityTemplate: () => void;
|
|
10
10
|
onWarning: () => void;
|
|
11
11
|
onError: () => void;
|
|
12
|
+
quickSettingsVisible?: boolean;
|
|
13
|
+
onQuickSettingsVisibleChange?: (visible: boolean) => void;
|
|
12
14
|
onAddNewProfileRequest?: (requested: boolean) => void;
|
|
13
15
|
onRemoveProfile?: (data: any) => void;
|
|
14
16
|
}
|
|
@@ -12,6 +12,7 @@ export interface DescriboCrateBuilderProps {
|
|
|
12
12
|
enableBrowseEntities?: boolean;
|
|
13
13
|
enableTemplateSave?: boolean;
|
|
14
14
|
enableBulkAdd?: boolean;
|
|
15
|
+
enableProfileActions?: boolean;
|
|
15
16
|
enableReverseLinkBrowser?: boolean;
|
|
16
17
|
enableUrlMarkup?: boolean;
|
|
17
18
|
enableEntityTimestamps?: boolean;
|
|
@@ -23,6 +24,7 @@ export interface DescriboCrateBuilderProps {
|
|
|
23
24
|
language?: string;
|
|
24
25
|
resetTabOnEntityChange?: boolean;
|
|
25
26
|
resetTabOnProfileChange?: boolean;
|
|
27
|
+
quickSettingsVisible?: boolean;
|
|
26
28
|
stateScopeKey?: string;
|
|
27
29
|
onReady?: () => void;
|
|
28
30
|
onError?: (errors: any) => void;
|
|
@@ -45,6 +47,7 @@ export interface DescriboCrateBuilderProps {
|
|
|
45
47
|
value?: any;
|
|
46
48
|
}) => void;
|
|
47
49
|
onSaveEntityTemplate?: (entity: any) => void;
|
|
50
|
+
onQuickSettingsVisibleChange?: (visible: boolean) => void;
|
|
48
51
|
onAddNewProfileRequest?: (requested: boolean) => void;
|
|
49
52
|
onRemoveProfile?: (payload: any) => void;
|
|
50
53
|
}
|
|
@@ -72,6 +72,12 @@ declare namespace en {
|
|
|
72
72
|
let create_new_entity: string;
|
|
73
73
|
let select_a_type_to_add: string;
|
|
74
74
|
let add_profile_button_tooltip: string;
|
|
75
|
+
let add_profile_button_aria: string;
|
|
76
|
+
let profile_actions_aria: string;
|
|
77
|
+
let profile_sections_aria: string;
|
|
78
|
+
let remove_profile_aria: string;
|
|
79
|
+
let scroll_profile_tabs_up: string;
|
|
80
|
+
let scroll_profile_tabs_down: string;
|
|
75
81
|
let switch_to_icon_view: string;
|
|
76
82
|
let switch_to_label_view: string;
|
|
77
83
|
let select_a_class_to_add: string;
|
|
@@ -156,6 +162,7 @@ declare namespace en {
|
|
|
156
162
|
let ai_hide_unlink_diff_aria: string;
|
|
157
163
|
let ai_show_unlink_diff_aria: string;
|
|
158
164
|
let ai_entity_was_added_by_ai: string;
|
|
165
|
+
let quick_filter_settings: string;
|
|
159
166
|
let quick_filter_settings_aria: string;
|
|
160
167
|
let field_display_settings_aria: string;
|
|
161
168
|
let hide_field_help: string;
|
|
@@ -72,6 +72,12 @@ declare namespace hu {
|
|
|
72
72
|
let create_new_entity: string;
|
|
73
73
|
let select_a_type_to_add: string;
|
|
74
74
|
let add_profile_button_tooltip: string;
|
|
75
|
+
let add_profile_button_aria: string;
|
|
76
|
+
let profile_actions_aria: string;
|
|
77
|
+
let profile_sections_aria: string;
|
|
78
|
+
let remove_profile_aria: string;
|
|
79
|
+
let scroll_profile_tabs_up: string;
|
|
80
|
+
let scroll_profile_tabs_down: string;
|
|
75
81
|
let switch_to_icon_view: string;
|
|
76
82
|
let switch_to_label_view: string;
|
|
77
83
|
let select_a_class_to_add: string;
|
|
@@ -156,6 +162,7 @@ declare namespace hu {
|
|
|
156
162
|
let ai_hide_unlink_diff_aria: string;
|
|
157
163
|
let ai_show_unlink_diff_aria: string;
|
|
158
164
|
let ai_entity_was_added_by_ai: string;
|
|
165
|
+
let quick_filter_settings: string;
|
|
159
166
|
let quick_filter_settings_aria: string;
|
|
160
167
|
let field_display_settings_aria: string;
|
|
161
168
|
let hide_field_help: string;
|
|
@@ -36,6 +36,11 @@ export declare const propertyDefinitions: {
|
|
|
36
36
|
default: boolean;
|
|
37
37
|
validator: (val: boolean) => boolean;
|
|
38
38
|
};
|
|
39
|
+
enableProfileActions: {
|
|
40
|
+
type: (BooleanConstructor | undefined)[];
|
|
41
|
+
default: undefined;
|
|
42
|
+
validator: (val: boolean | undefined) => boolean;
|
|
43
|
+
};
|
|
39
44
|
enableReverseLinkBrowser: {
|
|
40
45
|
type: BooleanConstructor;
|
|
41
46
|
default: boolean;
|
package/dist/recrate.css
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
.el-tabs__item{height:unset}.el-select-dropdown__wrap{max-height:500px!important}.el-select-group__title{font-size:14px!important}.scrollbar{overflow:overlay}.scrollbar::-webkit-scrollbar{background-color:#0000;height:16px;width:16px;z-index:999999}.scrollbar::-webkit-scrollbar-track{background-color:#0000}.scrollbar::-webkit-scrollbar-thumb{background-color:#0000;border:0 solid #fff;border-radius:16px}.scrollbar::-webkit-scrollbar-button{display:none}.scrollbar:hover::-webkit-scrollbar-thumb{background-color:#a0a0a5;border:4px solid #fff}.scrollbar::-webkit-scrollbar-thumb:hover{background-color:#a0a0a5;border:4px solid #f4f4f4}.cm-editor{font-size:12px;height:auto;max-height:none}.describo-tab-icon{align-items:center;display:flex;font-size:14px;font-weight:600;height:100%;justify-content:center;width:100%}.describo-add-only-tabs .ant-tabs-nav,.describo-add-only-tabs .ant-tabs-nav-wrap{height:100%}.describo-add-only-tabs .ant-tabs-nav-list{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center}.describo-add-only-tabs .ant-tabs-tab{justify-content:center}.describo-tab-rail{background:#fff;display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden;position:relative}.describo-tab-rail-actions{border-bottom:1px solid #e5e7eb;display:flex;flex:0 0 auto;gap:8px;justify-content:center;padding:10px 8px 8px}.describo-tab-rail-actions-only .describo-tab-rail-actions{border-bottom:0}.describo-tab-rail-list{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;padding:8px 6px 16px;scrollbar-width:none}.describo-tab-rail-list::-webkit-scrollbar{display:none}.describo-tab-rail-item{border-radius:6px;color:#334155;cursor:pointer;display:block;margin:2px 0;outline:none;padding:12px 10px;position:relative;transition:background-color .12s ease,color .12s ease;width:100%}.describo-tab-rail-item:focus-visible,.describo-tab-rail-item:hover{background:#f1f5f9}.describo-tab-rail-item-active{background:#eaf2ff;color:#1d4ed8}.describo-tab-rail-item-active:before{background:#2563eb;border-radius:999px;bottom:10px;content:"";left:0;position:absolute;top:10px;width:3px}.describo-tab-rail-item-icon{align-items:center;display:flex;justify-content:center;min-height:42px;padding:8px}.describo-tab-rail-row{align-items:center;display:flex;gap:8px;justify-content:space-between}.describo-tab-rail-title{font-size:15px;font-weight:600;line-height:1.35;min-width:0;overflow-wrap:anywhere}.describo-tab-rail-status{align-items:center;display:inline-flex;flex:0 0 auto;gap:4px}.describo-tab-rail-remove-button{flex:0 0 auto;transition:opacity .12s ease}.describo-tab-rail-description{color:#64748b;font-size:12px;line-height:1.35;margin-top:4px;overflow-wrap:anywhere}.describo-tab-rail:after,.describo-tab-rail:before{content:"";height:34px;left:0;opacity:0;pointer-events:none;position:absolute;right:0;transition:opacity .12s ease;z-index:2}.describo-tab-rail:before{background:linear-gradient(#fff,#fff0);top:53px}.describo-tab-rail:after{background:linear-gradient(#fff0,#fff);bottom:0}.describo-tab-rail-can-scroll-down:after,.describo-tab-rail-can-scroll-up:before{opacity:1}.describo-tab-rail-scroll-button{box-shadow:0 2px 8px #0f172a24;left:50%;position:absolute;transform:translateX(-50%);z-index:3}.describo-tab-rail-scroll-button-up{top:58px}.describo-tab-rail-scroll-button-down{bottom:8px}.describo-add-property-drawer{z-index:6000}.describo-add-property-title.ant-typography{font-size:22px;line-height:1.25;margin:0}.describo-add-property-row{border:1px solid #0000;border-radius:6px;color:#111827;cursor:pointer;outline:none;padding:10px 12px 10px 14px;position:relative;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease,transform .12s ease}.describo-add-property-row:before{background:#0000;border-radius:999px;bottom:10px;content:"";left:0;position:absolute;top:10px;transition:background-color .12s ease;width:3px}.describo-add-property-row:focus-visible,.describo-add-property-row:hover{background:#f8fafc;border-color:#dbeafe;box-shadow:0 1px 4px #0f172a14}.describo-add-property-row:active{transform:translateY(1px)}.describo-add-property-row-selected{background:#eff6ff;border-color:#93c5fd;box-shadow:0 0 0 1px #2563eb1f}.describo-add-property-row-selected:before{background:#2563eb}.describo-add-property-row-header{color:#111827;min-width:0}.describo-add-property-row-name{color:inherit;flex:0 1 auto;font-weight:600;min-width:0;overflow-wrap:anywhere}.describo-add-property-row-type{color:#475569;overflow-wrap:anywhere}.describo-add-property-row-help{color:#6b7280;display:block;line-height:1.45;margin-top:4px}.describo-add-property-row-check{color:#2563eb;margin-left:auto}.describo-quick-settings-header{align-items:center;backdrop-filter:blur(8px);background:#fffffff5;border-bottom:1px solid #dbe3ef;box-shadow:0 6px 14px #0f172a14;display:flex;gap:14px;margin:0 -12px 12px;padding:2px 12px 5px 18px;position:sticky;top:0;z-index:4}.describo-quick-settings-actions{align-items:center;display:inline-flex;flex:0 0 auto;gap:6px}.describo-quick-settings-filter{flex:1 1 260px;max-width:420px;min-width:160px}.describo-property-compact .describo-add-control{margin-bottom:0;margin-top:0;padding-bottom:0;padding-top:0}.describo-property-name-with-ai{align-items:center;display:inline-flex;gap:6px;min-width:0}.describo-ai-edited-icon{align-items:center;background:#effbf5;border-radius:50%;color:#087446;display:inline-flex;flex:0 0 auto;font-size:12px;font-weight:800;height:18px;justify-content:center;line-height:1;width:18px}.describo-ai-edited-filter-button.ant-btn{color:#087446;font-weight:800;min-width:32px;padding-inline:0}.describo-ai-edited-filter-button.ant-btn-primary{background:#12a76c;border-color:#12a76c;color:#fff}.describo-ai-entity-review-card{box-shadow:inset 0 0 0 1px #38c88a47,0 2px 8px #186f4a14}.describo-ai-entity-delete-card{box-shadow:0 2px 8px #b91c1c14}.describo-ai-entity-delete-card:hover{box-shadow:0 6px 18px #b91c1c24}.describo-ai-entity-unlink-card{box-shadow:0 2px 8px #c2610014}.describo-ai-entity-unlink-card:hover{box-shadow:0 6px 18px #c2610024}.describo-ai-deleted-linked-entity-id{border-bottom:1px solid #0003;color:#00000073;display:block;font-size:.75rem;line-height:1.35;margin-bottom:4px;overflow-wrap:anywhere;padding-bottom:4px}.describo-ai-deleted-linked-entity-name{color:#000000e0;font-weight:700;overflow-wrap:anywhere}.describo-ai-entity-reviewed-card{position:relative}.describo-ai-entity-edited-badge{bottom:14px;position:absolute;right:14px;z-index:1}.describo-ai-entity-review-card .describo-ai-entity-edited-badge{right:130px}.describo-ai-entity-review-summary{align-items:center;display:flex;gap:8px;justify-content:space-between;margin-top:10px}.describo-ai-entity-review-meta{align-items:center;display:inline-flex;gap:8px;min-width:0}.describo-ai-entity-review-count{color:#087446;font-size:13px;font-weight:800;white-space:nowrap}.describo-ai-entity-inline-actions{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-top:18px}.describo-ai-entity-inline-actions .describo-ai-actions{gap:12px}.describo-ai-entity-review-button.ant-btn{background:#57d8a3;border:0;border-radius:6px;box-shadow:0 1px 2px #00000024;color:#0d2d23;font-size:13px;font-weight:800;height:28px;padding:0 10px}.describo-ai-entity-review-button.ant-btn:focus-visible,.describo-ai-entity-review-button.ant-btn:hover{background:#45c991!important;color:#0d2d23!important}.describo-ai-entity-diff-toggle.ant-btn{background:#ffffffd1;border-color:#1486553d;color:#047857;min-width:28px;padding:0;width:28px}.describo-ai-entity-diff-toggle.ant-btn:focus-visible,.describo-ai-entity-diff-toggle.ant-btn:hover{background:#ecfdf5!important;border-color:#14865573;color:#047857!important}.describo-ai-entity-delete-card .describo-ai-entity-review-count{color:#b91c1c}.describo-ai-entity-delete-card .describo-ai-entity-review-button.ant-btn{background:#ff5b63}.describo-ai-entity-delete-card .describo-ai-entity-review-button.ant-btn:focus-visible,.describo-ai-entity-delete-card .describo-ai-entity-review-button.ant-btn:hover{background:#f0444f!important;color:#111827!important}.describo-ai-entity-delete-card .describo-ai-action-approve.ant-btn{background:#ff5b63;border-color:#ff5b63}.describo-ai-entity-delete-card .describo-ai-action-approve.ant-btn:focus-visible,.describo-ai-entity-delete-card .describo-ai-action-approve.ant-btn:hover{background:#f0444f!important;border-color:#f0444f!important;color:#111827!important}.describo-ai-entity-delete-card .describo-ai-action-reject.ant-btn{background:#57d8a3;border-color:#57d8a3}.describo-ai-entity-delete-card .describo-ai-action-reject.ant-btn:focus-visible,.describo-ai-entity-delete-card .describo-ai-action-reject.ant-btn:hover{background:#45c991!important;border-color:#45c991!important;color:#111827!important}.describo-ai-entity-unlink-card .describo-ai-action-approve.ant-btn{background:#fb923c;border-color:#fb923c}.describo-ai-entity-unlink-card .describo-ai-action-approve.ant-btn:focus-visible,.describo-ai-entity-unlink-card .describo-ai-action-approve.ant-btn:hover{background:#f97316!important;border-color:#f97316!important;color:#111827!important}.describo-ai-entity-unlink-card .describo-ai-action-reject.ant-btn{background:#57d8a3;border-color:#57d8a3}.describo-ai-entity-unlink-card .describo-ai-action-reject.ant-btn:focus-visible,.describo-ai-entity-unlink-card .describo-ai-action-reject.ant-btn:hover{background:#45c991!important;border-color:#45c991!important;color:#111827!important}.describo-ai-confirm-bar{align-items:center;background:linear-gradient(90deg,#f5fff9,#f9fbfd);border-bottom:1px solid #c8ded4;border-top:1px solid #e7eee9;box-shadow:inset 4px 0 0 #54d69d;color:#2d3b35;display:grid;gap:10px;grid-template-columns:minmax(220px,1fr) auto;min-height:40px;padding:5px 10px 5px 14px}.describo-ai-confirm-message{align-items:center;display:flex;font-size:13px;font-weight:700;gap:10px;line-height:1.2;min-width:0;overflow:hidden}.describo-ai-confirm-spark{color:#12a76c;font-size:17px;line-height:1}.describo-ai-confirm-controls{align-items:center;display:flex;gap:6px;white-space:nowrap}.describo-ai-confirm-bar-remaining{background:linear-gradient(90deg,#fff9eb,#f9fbfd);box-shadow:inset 4px 0 0 #f59e0b}.describo-ai-confirm-bar-remaining .describo-ai-confirm-spark{color:#b45309}.describo-ai-review-next-entity.ant-btn{background:#fbbf24;border:0;border-radius:5px;box-shadow:0 1px 2px #0000001f;color:#1f1710;font-size:12px;font-weight:800;height:26px;padding:0 10px}.describo-ai-review-next-entity.ant-btn:focus-visible,.describo-ai-review-next-entity.ant-btn:hover{background:#f59e0b!important;color:#1f1710!important}.describo-ai-bulk-action.ant-btn{border:0;border-radius:5px;box-shadow:0 1px 2px #0000001f;color:#14201b;font-size:12px;font-weight:800;height:26px;padding:0 9px}.describo-ai-bulk-accept.ant-btn{background:#57d8a3}.describo-ai-bulk-accept.ant-btn:focus-visible,.describo-ai-bulk-accept.ant-btn:hover{background:#45c991!important;color:#14201b!important}.describo-ai-bulk-reject.ant-btn{background:#ff6a71;color:#1f1717}.describo-ai-bulk-reject.ant-btn:focus-visible,.describo-ai-bulk-reject.ant-btn:hover{background:#f0444f!important;color:#1f1717!important}.describo-ai-stepper{align-items:center;border-left:1px solid #cad7d1;color:#53625c;display:inline-flex;font-weight:800;gap:4px;margin-left:2px;padding-left:8px}.describo-ai-stepper .ant-btn{border-radius:5px;color:#4a5a54;height:24px;width:24px}.describo-ai-stepper .ant-btn:not(:disabled):focus-visible,.describo-ai-stepper .ant-btn:not(:disabled):hover{background:#e6f4ec!important;color:#33443d!important}.describo-ai-step-count{color:#34443d;font-size:13px;min-width:32px;text-align:center}.describo-ai-review{border-radius:8px;margin-top:18px;padding-top:20px!important;position:relative}.describo-ai-review-current .describo-ai-suggestion,.describo-ai-review-current.describo-property,.describo-ai-suggestion.describo-ai-review-current{border-color:#12a76ce6!important;box-shadow:inset 4px 0 0 #12a76c,0 0 0 3px #12a76c1f,0 6px 18px #1969461f!important}.describo-ai-delete.describo-ai-review-current,.describo-ai-review-current .describo-ai-delete{border-color:#dc2626e0!important;box-shadow:inset 4px 0 0 #ef4444,0 0 0 3px #ef44441f,0 6px 18px #b91c1c1f!important}.describo-ai-suggestion{background:linear-gradient(90deg,#22c55e1c,#22c55e0a 55%,#fff0);border:1px solid #22c55e6b;box-shadow:inset 4px 0 0 #22c55e,0 4px 14px #15803d14}.describo-ai-delete{background:linear-gradient(90deg,#ef44441c,#ef44440a 55%,#fff0);border:1px solid #ef44446b;box-shadow:inset 4px 0 0 #ef4444,0 4px 14px #b91c1c14}.describo-ai-suggestion:hover{background:linear-gradient(90deg,#22c55e26,#22c55e0d 55%,#fff0)}.describo-ai-delete:hover{background:linear-gradient(90deg,#ef444426,#ef44440d 55%,#fff0)}.describo-ai-deleted-entity-card{border-radius:8px;margin:18px;padding:26px 18px 18px;position:relative}.describo-ai-deleted-entity-header{align-items:flex-start;display:flex;gap:18px;justify-content:space-between}.describo-ai-deleted-entity-title{color:#7f1d1d;font-size:18px;font-weight:800;line-height:1.25;overflow-wrap:anywhere}.describo-ai-deleted-entity-id{color:#991b1b;font-size:13px;font-weight:600;margin-top:4px;overflow-wrap:anywhere}.describo-ai-deleted-entity-controls{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-top:14px}.describo-ai-deleted-entity-controls .describo-ai-actions{gap:8px}.describo-ai-deleted-entity-controls .describo-ai-actions .ant-btn{border-radius:6px;font-size:13px;height:28px;min-width:66px}.describo-ai-deleted-entity-summary{align-items:center;color:#7f1d1d;display:inline-flex;font-size:14px;font-weight:700;gap:10px;min-width:0}.describo-ai-deleted-entity-summary span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.describo-ai-entity-delete-details-toggle.ant-btn{background:#ffffffb8;border-color:#f8717175;color:#b91c1c;flex:0 0 auto;min-width:30px;padding:0;width:30px}.describo-ai-entity-delete-details-toggle.ant-btn:focus-visible,.describo-ai-entity-delete-details-toggle.ant-btn:hover,.describo-ai-entity-delete-details-toggle.ant-btn[aria-pressed=true]{background:#ffe8e8!important;border-color:#f87171bd;color:#b91c1c!important}.describo-ai-deleted-entity-fields{background:#f8717152;border:1px solid #f8717152;border-radius:8px;display:grid;gap:1px;grid-template-columns:minmax(120px,220px) minmax(0,1fr);margin-top:14px;overflow:hidden}.describo-ai-deleted-entity-fields-inline{grid-template-columns:minmax(100px,170px) minmax(0,1fr);margin-top:10px}.describo-ai-deleted-entity-field{display:contents}.describo-ai-deleted-entity-field-name,.describo-ai-deleted-entity-field-value{background:#ffffffb8;font-size:13px;min-width:0;overflow-wrap:anywhere;padding:8px 10px}.describo-ai-deleted-entity-field-name{color:#7f1d1d;font-weight:800}.describo-ai-deleted-entity-field-value{color:#450a0a}.describo-ai-entity-diff-card{background:#f0fbf5;border:1px solid #38c88a8c;border-left:4px solid #38c88a;border-radius:8px;box-shadow:0 2px 8px #186f4a14;min-height:226px;overflow:hidden;position:relative}.describo-ai-entity-diff-card-delete{background:#fff5f5;border-color:#dd505c7a #dd505c7a #dd505c7a #e24d5c;box-shadow:0 2px 8px #85242f14}.describo-ai-entity-diff-card-unlink{background:#fff7ed;border-color:#f973167a #f973167a #f973167a #f97316;box-shadow:0 2px 8px #c2610014}.describo-ai-entity-diff-head{align-items:center;background:#e4f7ed;border-bottom:1px solid #38c88a40;color:#087446;display:flex;font-size:13px;font-weight:900;gap:10px;justify-content:space-between;min-height:36px;padding:0 14px}.describo-ai-entity-diff-card-delete .describo-ai-entity-diff-head{background:#ffe8e8;border-bottom-color:#dd505c40;color:#9a1f29}.describo-ai-entity-diff-card-unlink .describo-ai-entity-diff-head{background:#ffedd5;border-bottom-color:#f9731640;color:#9a3412}.describo-ai-entity-diff-close.ant-btn{color:currentColor;flex:0 0 auto}.describo-ai-entity-diff-close.ant-btn:focus-visible,.describo-ai-entity-diff-close.ant-btn:hover{background:#ffffff9e!important;color:currentColor!important}.describo-ai-entity-diff-body{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:14px;padding:10px 0 52px}.describo-ai-entity-diff-line{align-items:center;border-bottom:1px solid #0000000a;display:grid;grid-template-columns:28px minmax(74px,96px) minmax(0,1fr);min-height:29px}.describo-ai-entity-diff-line-context{background:#f7faf8}.describo-ai-entity-diff-line-removed{background:#fff1f1}.describo-ai-entity-diff-line-added{background:#effbf5}.describo-ai-entity-diff-marker{align-self:stretch;display:grid;font-weight:900;place-items:center}.describo-ai-entity-diff-line-context .describo-ai-entity-diff-marker{background:#eef2f0;color:#738078}.describo-ai-entity-diff-line-removed .describo-ai-entity-diff-marker{background:#ffdede;color:#9a1f29}.describo-ai-entity-diff-line-added .describo-ai-entity-diff-marker{background:#d8f5e7;color:#087446}.describo-ai-entity-diff-key{color:#5b7167;padding:0 8px}.describo-ai-entity-diff-key,.describo-ai-entity-diff-value{font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.describo-ai-entity-diff-value{color:#1e2732;padding-right:10px}.describo-ai-entity-diff-actions{bottom:14px;display:flex;gap:7px;position:absolute;right:14px}.describo-ai-entity-diff-button.ant-btn{background:#57d8a3;border:0;border-radius:6px;box-shadow:0 1px 2px #00000024;color:#0d2d23;font-size:13px;font-weight:900;height:31px;min-width:100px;padding:0 10px}.describo-ai-entity-diff-button.ant-btn:focus-visible,.describo-ai-entity-diff-button.ant-btn:hover{background:#45c991!important;color:#0d2d23!important}.describo-ai-entity-diff-button-reject.ant-btn{background:#ff6a71;color:#171717}.describo-ai-entity-diff-button-reject.ant-btn:focus-visible,.describo-ai-entity-diff-button-reject.ant-btn:hover{background:#f0444f!important;color:#171717!important}.describo-ai-suggestion-badge{align-items:center;background:#ecfdf5;border:1px solid #10b98161;border-radius:7px;box-shadow:0 1px 2px #0f764a14;color:#047857;display:inline-flex;font-size:13px;font-weight:700;gap:6px;height:30px;left:18px;line-height:1;padding:0 11px;position:absolute;top:-15px;z-index:1}.describo-ai-delete .describo-ai-suggestion-badge{background:#fef2f2;border-color:#f871716b;box-shadow:0 1px 2px #b91c1c14;color:#b91c1c}.describo-ai-suggestion-badge-icon{color:#047857;font-size:14px;line-height:1}.describo-ai-delete .describo-ai-suggestion-badge-icon{color:#b91c1c}.describo-ai-entity-status-badge{left:14px;top:-15px}.describo-ai-entity-delete-card .describo-ai-entity-status-badge{background:#fef2f2;border-color:#f871716b;box-shadow:0 1px 2px #b91c1c14;color:#b91c1c}.describo-ai-entity-delete-card .describo-ai-entity-status-badge .describo-ai-suggestion-badge-icon{color:#b91c1c}.describo-ai-entity-unlink-card .describo-ai-entity-status-badge{background:#fff7ed;border-color:#fb923c73;box-shadow:0 1px 2px #c2610014;color:#9a3412}.describo-ai-entity-unlink-card .describo-ai-entity-status-badge .describo-ai-suggestion-badge-icon{color:#c2410c}.describo-ai-field-row{align-items:flex-start}.describo-ai-field-control .ant-space-compact{width:100%}.describo-ai-field-control .ant-input,.describo-ai-field-control .ant-input-affix-wrapper,.describo-ai-field-control .ant-input-number,.describo-ai-field-control .ant-picker,.describo-ai-field-control .ant-select-selector,.describo-ai-field-control textarea.ant-input{background:#f0fdf4!important;border-color:#22c55e!important;box-shadow:inset 0 0 0 1px #22c55e2e,0 0 0 3px #22c55e1a!important}.describo-ai-delete .describo-ai-field-control .ant-input,.describo-ai-delete .describo-ai-field-control .ant-input-affix-wrapper,.describo-ai-delete .describo-ai-field-control .ant-input-number,.describo-ai-delete .describo-ai-field-control .ant-picker,.describo-ai-delete .describo-ai-field-control .ant-select-selector,.describo-ai-delete .describo-ai-field-control textarea.ant-input{background:#fef2f2!important;border-color:#ef4444!important;box-shadow:inset 0 0 0 1px #ef44442e,0 0 0 3px #ef44441a!important}.describo-ai-field-control .ant-space-compact>.ant-input,.describo-ai-field-control .ant-space-compact>.ant-input-affix-wrapper,.describo-ai-field-control .ant-space-compact>textarea.ant-input{border-end-end-radius:8px!important;border-start-end-radius:8px!important}.describo-ai-field-control .ant-space-compact>.ant-btn{display:none}.describo-ai-field-diff{background:#fbfcfd;border:1px solid #d4ddd8;border-radius:7px;box-shadow:0 1px 2px #0000000d;font-size:15px;overflow:hidden;width:100%}.describo-ai-field-diff-head{align-items:center;background:#f5f8f6;border-bottom:1px solid #dce5e0;color:#506158;display:flex;font-size:13px;font-weight:800;gap:10px;justify-content:space-between;min-height:31px;padding:0 10px}.describo-ai-field-diff-chip{color:#087446;flex:0 0 auto;font-size:12px}.describo-ai-field-diff-line{border-bottom:1px solid #0000000a;display:grid;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;grid-template-columns:28px minmax(0,1fr);min-height:36px}.describo-ai-field-diff-line:last-child{border-bottom:0}.describo-ai-field-diff-marker{align-self:stretch;display:grid;font-weight:900;place-items:center}.describo-ai-field-diff-value{color:#27322d;margin:0;min-width:0;overflow:auto;overflow-wrap:anywhere;padding:7px 11px;white-space:pre-wrap}.describo-ai-field-diff-line-removed{background:#fff1f1}.describo-ai-field-diff-line-removed .describo-ai-field-diff-marker{background:#ffdede;color:#9a1f29}.describo-ai-field-diff-line-added{background:#effbf5}.describo-ai-field-diff-line-added .describo-ai-field-diff-marker{background:#d8f5e7;color:#087446}.describo-ai-field-diff-empty{color:#7b8781;font-style:italic}.describo-ai-actions{align-items:flex-start;display:flex;flex:0 0 auto;gap:18px}.describo-ai-actions .ant-btn{border:0;border-radius:8px;box-shadow:0 2px 5px #0f172a2e;color:#111827;font-size:14px;font-weight:700;height:34px;min-width:82px}.describo-ai-action-diff.ant-btn{background:#fff;border:1px solid #d4ddd8;color:#0f172a;min-width:36px;padding:0;width:36px}.describo-ai-action-diff.ant-btn:focus-visible,.describo-ai-action-diff.ant-btn:hover{background:#f5f8f6!important;border-color:#9bc7b3!important;color:#087446!important}.describo-ai-action-diff.ant-btn[aria-pressed=true]{background:#d8f5e7;border-color:#9bc7b3;color:#087446}.describo-ai-action-approve.ant-btn{background:#57d8a3;border-color:#57d8a3}.describo-ai-action-approve.ant-btn:focus-visible,.describo-ai-action-approve.ant-btn:hover{background:#45c991!important;border-color:#45c991!important;color:#111827!important}.describo-ai-action-reject.ant-btn,.describo-ai-delete .describo-ai-action-approve.ant-btn{background:#ff5b63;border-color:#ff5b63}.describo-ai-delete .describo-ai-action-approve.ant-btn:focus-visible,.describo-ai-delete .describo-ai-action-approve.ant-btn:hover{background:#f0444f!important;border-color:#f0444f!important;color:#111827!important}.describo-ai-delete .describo-ai-action-reject.ant-btn{background:#57d8a3;border-color:#57d8a3}.describo-ai-delete .describo-ai-action-reject.ant-btn:focus-visible,.describo-ai-delete .describo-ai-action-reject.ant-btn:hover{background:#45c991!important;border-color:#45c991!important;color:#111827!important}.describo-ai-action-reject.ant-btn:focus-visible,.describo-ai-action-reject.ant-btn:hover{background:#f0444f!important;border-color:#f0444f!important;color:#111827!important}@media (max-width:900px){.describo-ai-confirm-bar{grid-template-columns:1fr}.describo-ai-confirm-controls{flex-wrap:wrap}.describo-ai-stepper{border-left:0;margin-left:0;padding-left:0}.describo-ai-field-row{flex-wrap:wrap}.describo-ai-actions{justify-content:flex-start;width:100%}}@media (max-width:640px){.describo-quick-settings-header{flex-wrap:wrap}.describo-quick-settings-filter{flex-basis:100%;max-width:none}}.recrate,.recrate .recrate-ant{display:flex;flex-direction:column;height:100vh;min-height:100vh}.describo-editor-scroll,.recrate .ant-tabs-left .ant-tabs-nav,.recrate .ant-tabs-right .ant-tabs-nav{height:100%}.recrate .ant-tabs-bottom .ant-tabs-nav-wrap,.recrate .ant-tabs-top .ant-tabs-nav-wrap{overflow-x:auto}
|
|
2
|
-
/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */@layer theme, base, components, utilities;@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-200:oklch(88.5% 0.062 18.334);--color-red-500:oklch(63.7% 0.237 25.331);--color-red-600:oklch(57.7% 0.245 27.325);--color-red-700:oklch(50.5% 0.213 27.518);--color-green-100:oklch(96.2% 0.044 156.743);--color-green-200:oklch(92.5% 0.084 155.995);--color-green-600:oklch(62.7% 0.194 149.214);--color-cyan-200:oklch(91.7% 0.08 205.041);--color-sky-100:oklch(95.1% 0.026 236.824);--color-sky-500:oklch(68.5% 0.169 237.323);--color-blue-200:oklch(88.2% 0.059 254.128);--color-blue-300:oklch(80.9% 0.105 251.813);--color-blue-500:oklch(62.3% 0.214 259.815);--color-blue-600:oklch(54.6% 0.245 262.881);--color-blue-700:oklch(48.8% 0.243 264.376);--color-indigo-200:oklch(87% 0.065 274.039);--color-purple-200:oklch(90.2% 0.063 306.703);--color-slate-200:oklch(92.9% 0.013 255.508);--color-slate-300:oklch(86.9% 0.022 252.894);--color-slate-700:oklch(37.2% 0.044 257.287);--color-gray-50:oklch(98.5% 0.002 247.839);--color-gray-200:oklch(92.8% 0.006 264.531);--color-gray-300:oklch(87.2% 0.01 258.338);--color-gray-400:oklch(70.7% 0.022 261.325);--color-gray-600:oklch(44.6% 0.03 256.802);--color-gray-700:oklch(37.3% 0.034 259.733);--color-gray-800:oklch(27.8% 0.033 256.848);--color-black:#000;--color-white:#fff;--spacing:0.25rem;--text-xs:0.75rem;--text-xs--line-height:1.33333;--text-sm:0.875rem;--text-sm--line-height:1.42857;--text-base:1rem;--text-base--line-height:1.5;--text-lg:1.125rem;--text-lg--line-height:1.55556;--font-weight-light:300;--font-weight-bold:700;--radius-lg:0.5rem;--animate-pulse:pulse 2s cubic-bezier(0.4,0,0.6,1) infinite;--default-transition-duration:150ms;--default-transition-timing-function:cubic-bezier(0.4,0,0.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,::file-selector-button,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:initial}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}::file-selector-button,button,input,optgroup,select,textarea{background-color:initial;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::placeholder{color:currentcolor;@supports (color:color-mix(in lab,red,red)){color:color-mix(in oklab,currentcolor 50%,#0000)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}::file-selector-button,button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-2{bottom:calc(var(--spacing)*2)}.left-0{left:calc(var(--spacing)*0)}.isolate{isolation:isolate}.z-50{z-index:50}.float-right{float:right}.container{width:100%;@media (width >= 40rem){max-width:40rem}@media (width >= 48rem){max-width:48rem}@media (width >= 64rem){max-width:64rem}@media (width >= 80rem){max-width:80rem}@media (width >= 96rem){max-width:96rem}}.m-1{margin:calc(var(--spacing)*1)}.m-2{margin:calc(var(--spacing)*2)}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.my-1{margin-block:calc(var(--spacing)*1)}.my-2{margin-block:calc(var(--spacing)*2)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5{margin-top:calc(var(--spacing)*5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-2{margin-left:calc(var(--spacing)*2)}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.table-cell{display:table-cell}.h-1{height:calc(var(--spacing)*1)}.h-3{height:calc(var(--spacing)*3)}.h-8{height:calc(var(--spacing)*8)}.h-\[520px\]{height:520px}.h-full{height:100%}.min-h-0{min-height:calc(var(--spacing)*0)}.w-1{width:calc(var(--spacing)*1)}.w-1\/2{width:50%}.w-1\/3{width:33.33333%}.w-2\/3{width:66.66667%}.w-2\/6{width:33.33333%}.w-3{width:calc(var(--spacing)*3)}.w-4\/6{width:66.66667%}.w-6{width:calc(var(--spacing)*6)}.w-12{width:calc(var(--spacing)*12)}.w-\[600px\]{width:600px}.w-full{width:100%}.w-screen{width:100vw}.max-w-\[715px\]{max-width:715px}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-32{min-width:calc(var(--spacing)*32)}.min-w-72{min-width:calc(var(--spacing)*72)}.flex-1{flex:1}.flex-\[1_1_360px\]{flex:1 1 360px}.flex-grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-pointer{cursor:pointer}.resize{resize:both}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-content-between{place-content:space-between}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.space-y-1{:where(&>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*1*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*1*var(--tw-space-y-reverse))}}.space-y-2{:where(&>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*2*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*2*var(--tw-space-y-reverse))}}.space-y-3{:where(&>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*3*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*3*var(--tw-space-y-reverse))}}.space-y-4{:where(&>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*4*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*4*var(--tw-space-y-reverse))}}.gap-x-1{column-gap:calc(var(--spacing)*1)}.gap-x-2{column-gap:calc(var(--spacing)*2)}.space-x-1{:where(&>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*1*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*1*var(--tw-space-x-reverse))}}.space-x-2{:where(&>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*2*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*2*var(--tw-space-x-reverse))}}.space-x-4{:where(&>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*4*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*4*var(--tw-space-x-reverse))}}.gap-y-2{row-gap:calc(var(--spacing)*2)}.divide-y{:where(&>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-bottom-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse))}}.divide-gray-300{:where(&>:not(:last-child)){border-color:var(--color-gray-300)}}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.scroll-smooth{scroll-behavior:smooth}.rounded{border-radius:.25rem}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-solid{--tw-border-style:solid;border-style:solid}.border-black{border-color:var(--color-black)}.border-black\/20{border-color:color-mix(in srgb,#000 20%,#0000);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-black) 20%,#0000)}}.border-gray-400{border-color:var(--color-gray-400)}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-700{border-color:var(--color-slate-700)}.bg-blue-200{background-color:var(--color-blue-200)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-200{background-color:var(--color-green-200)}.bg-indigo-200{background-color:var(--color-indigo-200)}.bg-purple-200{background-color:var(--color-purple-200)}.bg-red-200{background-color:var(--color-red-200)}.bg-red-500{background-color:var(--color-red-500)}.bg-slate-300{background-color:var(--color-slate-300)}.bg-slate-700{background-color:var(--color-slate-700)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-8{padding:calc(var(--spacing)*8)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pr-1{padding-right:calc(var(--spacing)*1)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pl-1{padding-left:calc(var(--spacing)*1)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.whitespace-pre-wrap{white-space:pre-wrap}.text-blue-600{color:var(--color-blue-600)}.text-gray-400{color:var(--color-gray-400)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-green-600{color:var(--color-green-600)}.text-red-600{color:var(--color-red-600)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.opacity-0{opacity:0}.opacity-50{opacity:50%}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-colors{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-transform{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.duration-1000{--tw-duration:1000ms;transition-duration:1s}.group-hover\:opacity-100{&:is(:where(.group):hover *){@media (hover:hover){opacity:100%}}}.hover\:scale-105{&:hover{@media (hover:hover){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}}}.hover\:rounded-r-none{&:hover{@media (hover:hover){border-bottom-right-radius:0;border-top-right-radius:0}}}.hover\:bg-blue-300{&:hover{@media (hover:hover){background-color:var(--color-blue-300)}}}.hover\:bg-blue-700{&:hover{@media (hover:hover){background-color:var(--color-blue-700)}}}.hover\:bg-cyan-200{&:hover{@media (hover:hover){background-color:var(--color-cyan-200)}}}.hover\:bg-green-200{&:hover{@media (hover:hover){background-color:var(--color-green-200)}}}.hover\:bg-red-700{&:hover{@media (hover:hover){background-color:var(--color-red-700)}}}.hover\:bg-sky-100{&:hover{@media (hover:hover){background-color:var(--color-sky-100)}}}.hover\:text-black{&:hover{@media (hover:hover){color:var(--color-black)}}}.focus\:border-2{&:focus{border-style:var(--tw-border-style);border-width:2px}}.focus\:border-green-600{&:focus{border-color:var(--color-green-600)}}.focus\:outline-none{&:focus{--tw-outline-style:none;outline-style:none}}.focus-visible\:ring-2{&:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus-visible\:ring-sky-500{&:focus-visible{--tw-ring-color:var(--color-sky-500)}}.focus-visible\:outline-none{&:focus-visible{--tw-outline-style:none;outline-style:none}}.xl\:w-1\/5{@media (width >= 80rem){width:20%}}.xl\:w-4\/5{@media (width >= 80rem){width:80%}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}
|
|
2
|
+
/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */@layer theme, base, components, utilities;@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-200:oklch(88.5% 0.062 18.334);--color-red-500:oklch(63.7% 0.237 25.331);--color-red-600:oklch(57.7% 0.245 27.325);--color-red-700:oklch(50.5% 0.213 27.518);--color-green-100:oklch(96.2% 0.044 156.743);--color-green-200:oklch(92.5% 0.084 155.995);--color-green-600:oklch(62.7% 0.194 149.214);--color-cyan-200:oklch(91.7% 0.08 205.041);--color-sky-100:oklch(95.1% 0.026 236.824);--color-sky-500:oklch(68.5% 0.169 237.323);--color-blue-200:oklch(88.2% 0.059 254.128);--color-blue-300:oklch(80.9% 0.105 251.813);--color-blue-500:oklch(62.3% 0.214 259.815);--color-blue-600:oklch(54.6% 0.245 262.881);--color-blue-700:oklch(48.8% 0.243 264.376);--color-indigo-200:oklch(87% 0.065 274.039);--color-purple-200:oklch(90.2% 0.063 306.703);--color-slate-200:oklch(92.9% 0.013 255.508);--color-slate-300:oklch(86.9% 0.022 252.894);--color-slate-700:oklch(37.2% 0.044 257.287);--color-gray-50:oklch(98.5% 0.002 247.839);--color-gray-200:oklch(92.8% 0.006 264.531);--color-gray-300:oklch(87.2% 0.01 258.338);--color-gray-400:oklch(70.7% 0.022 261.325);--color-gray-600:oklch(44.6% 0.03 256.802);--color-gray-700:oklch(37.3% 0.034 259.733);--color-gray-800:oklch(27.8% 0.033 256.848);--color-black:#000;--color-white:#fff;--spacing:0.25rem;--text-xs:0.75rem;--text-xs--line-height:1.33333;--text-sm:0.875rem;--text-sm--line-height:1.42857;--text-base:1rem;--text-base--line-height:1.5;--text-lg:1.125rem;--text-lg--line-height:1.55556;--font-weight-light:300;--font-weight-bold:700;--radius-lg:0.5rem;--animate-pulse:pulse 2s cubic-bezier(0.4,0,0.6,1) infinite;--default-transition-duration:150ms;--default-transition-timing-function:cubic-bezier(0.4,0,0.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,::file-selector-button,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:initial}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}::file-selector-button,button,input,optgroup,select,textarea{background-color:initial;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::placeholder{color:currentcolor;@supports (color:color-mix(in lab,red,red)){color:color-mix(in oklab,currentcolor 50%,#0000)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}::file-selector-button,button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-2{bottom:calc(var(--spacing)*2)}.left-0{left:calc(var(--spacing)*0)}.isolate{isolation:isolate}.z-50{z-index:50}.float-right{float:right}.container{width:100%;@media (width >= 40rem){max-width:40rem}@media (width >= 48rem){max-width:48rem}@media (width >= 64rem){max-width:64rem}@media (width >= 80rem){max-width:80rem}@media (width >= 96rem){max-width:96rem}}.m-1{margin:calc(var(--spacing)*1)}.m-2{margin:calc(var(--spacing)*2)}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.my-1{margin-block:calc(var(--spacing)*1)}.my-2{margin-block:calc(var(--spacing)*2)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5{margin-top:calc(var(--spacing)*5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-2{margin-left:calc(var(--spacing)*2)}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.h-1{height:calc(var(--spacing)*1)}.h-3{height:calc(var(--spacing)*3)}.h-8{height:calc(var(--spacing)*8)}.h-\[520px\]{height:520px}.h-full{height:100%}.min-h-0{min-height:calc(var(--spacing)*0)}.w-1{width:calc(var(--spacing)*1)}.w-1\/2{width:50%}.w-1\/3{width:33.33333%}.w-2\/3{width:66.66667%}.w-2\/6{width:33.33333%}.w-3{width:calc(var(--spacing)*3)}.w-4\/6{width:66.66667%}.w-6{width:calc(var(--spacing)*6)}.w-12{width:calc(var(--spacing)*12)}.w-\[600px\]{width:600px}.w-full{width:100%}.w-screen{width:100vw}.max-w-\[715px\]{max-width:715px}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-32{min-width:calc(var(--spacing)*32)}.min-w-72{min-width:calc(var(--spacing)*72)}.flex-1{flex:1}.flex-\[1_1_360px\]{flex:1 1 360px}.flex-grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-pointer{cursor:pointer}.resize{resize:both}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-content-between{place-content:space-between}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.space-y-1{:where(&>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*1*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*1*var(--tw-space-y-reverse))}}.space-y-2{:where(&>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*2*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*2*var(--tw-space-y-reverse))}}.space-y-3{:where(&>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*3*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*3*var(--tw-space-y-reverse))}}.space-y-4{:where(&>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*4*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*4*var(--tw-space-y-reverse))}}.gap-x-1{column-gap:calc(var(--spacing)*1)}.gap-x-2{column-gap:calc(var(--spacing)*2)}.space-x-1{:where(&>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*1*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*1*var(--tw-space-x-reverse))}}.space-x-2{:where(&>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*2*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*2*var(--tw-space-x-reverse))}}.space-x-4{:where(&>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*4*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*4*var(--tw-space-x-reverse))}}.gap-y-2{row-gap:calc(var(--spacing)*2)}.divide-y{:where(&>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-bottom-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse))}}.divide-gray-300{:where(&>:not(:last-child)){border-color:var(--color-gray-300)}}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.scroll-smooth{scroll-behavior:smooth}.rounded{border-radius:.25rem}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-solid{--tw-border-style:solid;border-style:solid}.border-black{border-color:var(--color-black)}.border-black\/20{border-color:color-mix(in srgb,#000 20%,#0000);@supports (color:color-mix(in lab,red,red)){border-color:color-mix(in oklab,var(--color-black) 20%,#0000)}}.border-gray-400{border-color:var(--color-gray-400)}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-700{border-color:var(--color-slate-700)}.bg-blue-200{background-color:var(--color-blue-200)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-200{background-color:var(--color-green-200)}.bg-indigo-200{background-color:var(--color-indigo-200)}.bg-purple-200{background-color:var(--color-purple-200)}.bg-red-200{background-color:var(--color-red-200)}.bg-red-500{background-color:var(--color-red-500)}.bg-slate-300{background-color:var(--color-slate-300)}.bg-slate-700{background-color:var(--color-slate-700)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-8{padding:calc(var(--spacing)*8)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pr-1{padding-right:calc(var(--spacing)*1)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pl-1{padding-left:calc(var(--spacing)*1)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.whitespace-pre-wrap{white-space:pre-wrap}.text-blue-600{color:var(--color-blue-600)}.text-gray-400{color:var(--color-gray-400)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-green-600{color:var(--color-green-600)}.text-red-600{color:var(--color-red-600)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.opacity-0{opacity:0}.opacity-50{opacity:50%}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-colors{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-transform{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.duration-1000{--tw-duration:1000ms;transition-duration:1s}.group-hover\:opacity-100{&:is(:where(.group):hover *){@media (hover:hover){opacity:100%}}}.hover\:scale-105{&:hover{@media (hover:hover){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}}}.hover\:rounded-r-none{&:hover{@media (hover:hover){border-bottom-right-radius:0;border-top-right-radius:0}}}.hover\:bg-blue-300{&:hover{@media (hover:hover){background-color:var(--color-blue-300)}}}.hover\:bg-blue-700{&:hover{@media (hover:hover){background-color:var(--color-blue-700)}}}.hover\:bg-cyan-200{&:hover{@media (hover:hover){background-color:var(--color-cyan-200)}}}.hover\:bg-green-200{&:hover{@media (hover:hover){background-color:var(--color-green-200)}}}.hover\:bg-red-700{&:hover{@media (hover:hover){background-color:var(--color-red-700)}}}.hover\:bg-sky-100{&:hover{@media (hover:hover){background-color:var(--color-sky-100)}}}.hover\:text-black{&:hover{@media (hover:hover){color:var(--color-black)}}}.focus\:border-2{&:focus{border-style:var(--tw-border-style);border-width:2px}}.focus\:border-green-600{&:focus{border-color:var(--color-green-600)}}.focus\:outline-none{&:focus{--tw-outline-style:none;outline-style:none}}.focus-visible\:ring-2{&:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus-visible\:ring-sky-500{&:focus-visible{--tw-ring-color:var(--color-sky-500)}}.focus-visible\:outline-none{&:focus-visible{--tw-outline-style:none;outline-style:none}}.xl\:w-1\/5{@media (width >= 80rem){width:20%}}.xl\:w-4\/5{@media (width >= 80rem){width:80%}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}
|
|
3
3
|
.recrate{all:revert-layer}
|
package/dist/recrate.es.js
CHANGED
|
@@ -80470,17 +80470,12 @@ const getPendingEntityApprovalRecords = (approvalData, entityId) => {
|
|
|
80470
80470
|
const approvedPropertyNames = new Set(
|
|
80471
80471
|
entityApproval.approval.filter(approvalIsApproved).map((approvalRecord) => approvalRecord == null ? void 0 : approvalRecord.propertyName).filter((propertyName2) => typeof propertyName2 === "string" && propertyName2.length > 0)
|
|
80472
80472
|
);
|
|
80473
|
-
return entityApproval.approval.filter((approvalRecord) => (approvalRecord == null ? void 0 : approvalRecord.propertyName) && !approvalIsApproved(approvalRecord) && !approvedPropertyNames.has(approvalRecord.propertyName));
|
|
80473
|
+
return entityApproval.approval.filter((approvalRecord) => (approvalRecord == null ? void 0 : approvalRecord.propertyName) && approvalRecord.propertyName !== "@context" && !approvalIsApproved(approvalRecord) && !approvedPropertyNames.has(approvalRecord.propertyName));
|
|
80474
80474
|
};
|
|
80475
80475
|
const getPendingEntityApprovalFieldCount = (approvalData, entityId) => new Set(
|
|
80476
80476
|
getPendingEntityApprovalRecords(approvalData, entityId).map((approvalRecord) => approvalRecord == null ? void 0 : approvalRecord.propertyName).filter((propertyName2) => typeof propertyName2 === "string" && propertyName2.length > 0)
|
|
80477
80477
|
).size;
|
|
80478
80478
|
const getPendingApprovalEntities = (approvalData) => getApprovalEntities(approvalData).filter((entityApproval) => getPendingEntityApprovalRecords(approvalData, entityApproval == null ? void 0 : entityApproval["@id"]).length > 0);
|
|
80479
|
-
const getPendingApprovalFieldCount = (approvalData, excludedEntityId) => getPendingApprovalEntities(approvalData).reduce((count, entityApproval) => {
|
|
80480
|
-
const entityId = entityApproval == null ? void 0 : entityApproval["@id"];
|
|
80481
|
-
if (excludedEntityId && entityIdsMatch(entityId, excludedEntityId)) return count;
|
|
80482
|
-
return count + getPendingEntityApprovalFieldCount(approvalData, entityId);
|
|
80483
|
-
}, 0);
|
|
80484
80479
|
const getApprovedEntityApprovalRecords = (approvalData, entityId) => {
|
|
80485
80480
|
const entityApproval = getEntityApproval(approvalData, entityId);
|
|
80486
80481
|
if (!Array.isArray(entityApproval == null ? void 0 : entityApproval.approval)) return [];
|
|
@@ -110722,14 +110717,13 @@ const QuickSettingsHeader = ({
|
|
|
110722
110717
|
onClick: onToggleEmptyFields
|
|
110723
110718
|
}
|
|
110724
110719
|
) }),
|
|
110725
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip2, { title: showAiEditedFields ? t2("show_all_fields") : t2("show_ai_edited_fields"), children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
110720
|
+
aiEditedFieldCount > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip2, { title: showAiEditedFields ? t2("show_all_fields") : t2("show_ai_edited_fields"), children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
110726
110721
|
Button$1,
|
|
110727
110722
|
{
|
|
110728
110723
|
type: showAiEditedFields ? "primary" : "default",
|
|
110729
110724
|
className: "describo-ai-edited-filter-button",
|
|
110730
110725
|
"aria-label": showAiEditedFields ? String(t2("show_all_fields")) : String(t2("show_ai_edited_fields")),
|
|
110731
110726
|
"aria-pressed": showAiEditedFields,
|
|
110732
|
-
disabled: aiEditedFieldCount === 0,
|
|
110733
110727
|
onClick: onToggleAiEditedFields,
|
|
110734
110728
|
children: "✦"
|
|
110735
110729
|
}
|
|
@@ -112537,8 +112531,19 @@ const buildAiApprovalNavigationKey = (entityId, approvalRecord) => {
|
|
|
112537
112531
|
return `${entityId}:${propertyName2}:${operation}:${timestamp}:${previousValue}`;
|
|
112538
112532
|
};
|
|
112539
112533
|
const RenderEntity = forwardRef((props, ref) => {
|
|
112540
|
-
var _a2, _b, _c, _d, _e2, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;
|
|
112541
|
-
const {
|
|
112534
|
+
var _a2, _b, _c, _d, _e2, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;
|
|
112535
|
+
const {
|
|
112536
|
+
entity,
|
|
112537
|
+
onLoadEntity,
|
|
112538
|
+
onSaveCrate,
|
|
112539
|
+
onSaveEntityTemplate,
|
|
112540
|
+
onWarning,
|
|
112541
|
+
onError,
|
|
112542
|
+
quickSettingsVisible: controlledQuickSettingsVisible,
|
|
112543
|
+
onQuickSettingsVisibleChange,
|
|
112544
|
+
onAddNewProfileRequest,
|
|
112545
|
+
onRemoveProfile
|
|
112546
|
+
} = props;
|
|
112542
112547
|
const state = useStateStore();
|
|
112543
112548
|
const profileManager = useContext(ProfileManagerContext);
|
|
112544
112549
|
const crateManager = useContext(CrateManagerContext);
|
|
@@ -112554,7 +112559,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
112554
112559
|
const [savedProperty, setSavedProperty] = useState(void 0);
|
|
112555
112560
|
const [tabs, setTabs] = useState([]);
|
|
112556
112561
|
const [showAddPanel, setShowAddPanel] = useState(false);
|
|
112557
|
-
const [
|
|
112562
|
+
const [internalQuickSettingsVisible, setInternalQuickSettingsVisible] = useState(false);
|
|
112558
112563
|
const [showFieldHelp, setShowFieldHelp] = useState(true);
|
|
112559
112564
|
const [fieldTitleFilter, setFieldTitleFilter] = useState("");
|
|
112560
112565
|
const [hideEmptyFields, setHideEmptyFields] = useState(false);
|
|
@@ -112579,6 +112584,15 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
112579
112584
|
const [scrollRestoreNonce, setScrollRestoreNonce] = useState(0);
|
|
112580
112585
|
const contentContainerRef = useRef(null);
|
|
112581
112586
|
const activeContentRef = useRef(null);
|
|
112587
|
+
const quickSettingsVisible = controlledQuickSettingsVisible ?? internalQuickSettingsVisible;
|
|
112588
|
+
const updateQuickSettingsVisible = useCallback((visible) => {
|
|
112589
|
+
if (quickSettingsVisible === visible) return;
|
|
112590
|
+
setInternalQuickSettingsVisible(visible);
|
|
112591
|
+
onQuickSettingsVisibleChange == null ? void 0 : onQuickSettingsVisibleChange(visible);
|
|
112592
|
+
}, [onQuickSettingsVisibleChange, quickSettingsVisible]);
|
|
112593
|
+
const enableProfileActions = ((_a2 = state.configuration) == null ? void 0 : _a2.enableProfileActions) === true;
|
|
112594
|
+
const canAddProfile = enableProfileActions && Boolean(onAddNewProfileRequest);
|
|
112595
|
+
const canRemoveProfile = enableProfileActions && Boolean(onRemoveProfile);
|
|
112582
112596
|
const tabRailListRef = useRef(null);
|
|
112583
112597
|
const editorPanelRef = useRef(null);
|
|
112584
112598
|
const navigationRestoreReadyRef = useRef(false);
|
|
@@ -112607,8 +112621,29 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
112607
112621
|
)), [approvedAiApprovals]);
|
|
112608
112622
|
const selectedAiApproval = pendingAiApprovals[selectedAiApprovalIndex] ?? pendingAiApprovals[0];
|
|
112609
112623
|
const selectedAiApprovalProperty = selectedAiApproval == null ? void 0 : selectedAiApproval.propertyName;
|
|
112610
|
-
const
|
|
112611
|
-
|
|
112624
|
+
const canReviewAiApprovalEntity = useCallback((entityApproval) => {
|
|
112625
|
+
const entityId = entityApproval == null ? void 0 : entityApproval["@id"];
|
|
112626
|
+
if (!entityId) return false;
|
|
112627
|
+
if (isPendingEntityDeleteApproval(entityApproval)) {
|
|
112628
|
+
const reviewTarget = getDeletedEntityReviewTarget(entityApproval);
|
|
112629
|
+
if (!(reviewTarget == null ? void 0 : reviewTarget.entityId)) return false;
|
|
112630
|
+
return Boolean(crateManager == null ? void 0 : crateManager.getEntity({
|
|
112631
|
+
id: reviewTarget.entityId,
|
|
112632
|
+
link: false,
|
|
112633
|
+
materialise: false
|
|
112634
|
+
}));
|
|
112635
|
+
}
|
|
112636
|
+
return Boolean(crateManager == null ? void 0 : crateManager.getEntity({
|
|
112637
|
+
id: entityId,
|
|
112638
|
+
link: false,
|
|
112639
|
+
materialise: false
|
|
112640
|
+
}));
|
|
112641
|
+
}, [crateManager]);
|
|
112642
|
+
const pendingOtherAiApprovalEntities = useMemo$1(() => getPendingApprovalEntities(approvalContext == null ? void 0 : approvalContext.roCrateApproval).filter((entityApproval) => !entityIdsMatch(entityApproval == null ? void 0 : entityApproval["@id"], contextEntity == null ? void 0 : contextEntity["@id"]) && canReviewAiApprovalEntity(entityApproval)), [approvalContext == null ? void 0 : approvalContext.roCrateApproval, canReviewAiApprovalEntity, contextEntity == null ? void 0 : contextEntity["@id"]]);
|
|
112643
|
+
const pendingOtherAiApprovalFieldCount = useMemo$1(() => pendingOtherAiApprovalEntities.reduce((count, entityApproval) => count + getPendingEntityApprovalFieldCount(
|
|
112644
|
+
approvalContext == null ? void 0 : approvalContext.roCrateApproval,
|
|
112645
|
+
entityApproval == null ? void 0 : entityApproval["@id"]
|
|
112646
|
+
), 0), [approvalContext == null ? void 0 : approvalContext.roCrateApproval, pendingOtherAiApprovalEntities]);
|
|
112612
112647
|
const handleReviewNextAiApprovalEntity = useCallback(() => {
|
|
112613
112648
|
for (const entityApproval of pendingOtherAiApprovalEntities) {
|
|
112614
112649
|
const nextEntityId = entityApproval == null ? void 0 : entityApproval["@id"];
|
|
@@ -113148,6 +113183,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
113148
113183
|
};
|
|
113149
113184
|
const handleAddNewProfile = () => {
|
|
113150
113185
|
var _a3;
|
|
113186
|
+
if (!canAddProfile) return;
|
|
113151
113187
|
try {
|
|
113152
113188
|
const next2 = !showAddPanel;
|
|
113153
113189
|
const currentProfileTabKeys = tabs.filter(isProfileTab).map(getProfileTabKey).filter(Boolean);
|
|
@@ -113175,6 +113211,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
113175
113211
|
}
|
|
113176
113212
|
};
|
|
113177
113213
|
const handleRemoveProfile = (tab) => {
|
|
113214
|
+
if (!canRemoveProfile) return;
|
|
113178
113215
|
try {
|
|
113179
113216
|
onRemoveProfile == null ? void 0 : onRemoveProfile({
|
|
113180
113217
|
entityId: entity["@id"],
|
|
@@ -113387,7 +113424,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
113387
113424
|
type: "default",
|
|
113388
113425
|
shape: "circle",
|
|
113389
113426
|
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$q, {}),
|
|
113390
|
-
"aria-label": "
|
|
113427
|
+
"aria-label": String(t2("add_profile_button_aria")),
|
|
113391
113428
|
"aria-controls": "add-property-panel",
|
|
113392
113429
|
"aria-expanded": showAddPanel,
|
|
113393
113430
|
onClick: handleAddNewProfile
|
|
@@ -113447,25 +113484,25 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
113447
113484
|
}
|
|
113448
113485
|
}
|
|
113449
113486
|
) }),
|
|
113450
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip2, { title: t2("add_profile_button_tooltip"), children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
113487
|
+
canAddProfile && /* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip2, { title: t2("add_profile_button_tooltip"), children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
113451
113488
|
Button$1,
|
|
113452
113489
|
{
|
|
113453
113490
|
type: "default",
|
|
113454
113491
|
shape: "circle",
|
|
113455
113492
|
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$q, {}),
|
|
113456
|
-
"aria-label": "
|
|
113493
|
+
"aria-label": String(t2("add_profile_button_aria")),
|
|
113457
113494
|
"aria-controls": "add-property-panel",
|
|
113458
113495
|
"aria-expanded": showAddPanel,
|
|
113459
113496
|
onClick: handleAddNewProfile
|
|
113460
113497
|
}
|
|
113461
113498
|
) })
|
|
113462
113499
|
] });
|
|
113463
|
-
const renderProfileActionRail = () => /* @__PURE__ */ jsxRuntimeExports.jsx("nav", { className: "describo-tab-rail describo-tab-rail-actions-only", "aria-label": "
|
|
113500
|
+
const renderProfileActionRail = () => /* @__PURE__ */ jsxRuntimeExports.jsx("nav", { className: "describo-tab-rail describo-tab-rail-actions-only", "aria-label": String(t2("profile_actions_aria")), children: renderProfileRailActions() });
|
|
113464
113501
|
const renderProfileTabRail = () => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
113465
113502
|
"nav",
|
|
113466
113503
|
{
|
|
113467
113504
|
className: `describo-tab-rail ${tabRailScrollState.canScrollUp ? "describo-tab-rail-can-scroll-up" : ""} ${tabRailScrollState.canScrollDown ? "describo-tab-rail-can-scroll-down" : ""}`,
|
|
113468
|
-
"aria-label": "
|
|
113505
|
+
"aria-label": String(t2("profile_sections_aria")),
|
|
113469
113506
|
children: [
|
|
113470
113507
|
renderProfileRailActions(),
|
|
113471
113508
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -113478,7 +113515,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
113478
113515
|
onScroll: updateTabRailScrollState,
|
|
113479
113516
|
children: tabs.map((tab, idx) => {
|
|
113480
113517
|
const isActive2 = tab.name === activeTab;
|
|
113481
|
-
const canRemove = !(["about", "overflow", "other"].includes((tab.name || "").toLowerCase()) || ["about", "other"].includes((tab.label || tab.name || "").toLowerCase()));
|
|
113518
|
+
const canRemove = canRemoveProfile && !(["about", "overflow", "other"].includes((tab.name || "").toLowerCase()) || ["about", "other"].includes((tab.label || tab.name || "").toLowerCase()));
|
|
113482
113519
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
113483
113520
|
"div",
|
|
113484
113521
|
{
|
|
@@ -113504,7 +113541,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
113504
113541
|
canRemove && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
113505
113542
|
Button$1,
|
|
113506
113543
|
{
|
|
113507
|
-
"aria-label": "
|
|
113544
|
+
"aria-label": String(t2("remove_profile_aria")),
|
|
113508
113545
|
type: "text",
|
|
113509
113546
|
size: "small",
|
|
113510
113547
|
className: "describo-tab-rail-remove-button",
|
|
@@ -113538,7 +113575,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
113538
113575
|
size: "small",
|
|
113539
113576
|
className: "describo-tab-rail-scroll-button describo-tab-rail-scroll-button-up",
|
|
113540
113577
|
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$p, {}),
|
|
113541
|
-
"aria-label": "
|
|
113578
|
+
"aria-label": String(t2("scroll_profile_tabs_up")),
|
|
113542
113579
|
onClick: () => scrollTabRail("up")
|
|
113543
113580
|
}
|
|
113544
113581
|
),
|
|
@@ -113550,7 +113587,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
113550
113587
|
size: "small",
|
|
113551
113588
|
className: "describo-tab-rail-scroll-button describo-tab-rail-scroll-button-down",
|
|
113552
113589
|
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$u, {}),
|
|
113553
|
-
"aria-label": "
|
|
113590
|
+
"aria-label": String(t2("scroll_profile_tabs_down")),
|
|
113554
113591
|
onClick: () => scrollTabRail("down")
|
|
113555
113592
|
}
|
|
113556
113593
|
)
|
|
@@ -114039,7 +114076,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
114039
114076
|
}
|
|
114040
114077
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-row", children: [
|
|
114041
114078
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col w-full", children: [
|
|
114042
|
-
((
|
|
114079
|
+
((_b = state.configuration) == null ? void 0 : _b.showControls) && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-row place-content-between pb-1 border-b border-slate-700", children: [
|
|
114043
114080
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
114044
114081
|
RenderControls,
|
|
114045
114082
|
{
|
|
@@ -114054,18 +114091,18 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
114054
114091
|
}
|
|
114055
114092
|
),
|
|
114056
114093
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-grow" }),
|
|
114057
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip2, { title: "
|
|
114094
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Tooltip2, { title: t2("quick_filter_settings"), children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
114058
114095
|
Button$1,
|
|
114059
114096
|
{
|
|
114060
114097
|
style: { marginRight: 8 },
|
|
114061
|
-
onClick: () =>
|
|
114098
|
+
onClick: () => updateQuickSettingsVisible(!quickSettingsVisible),
|
|
114062
114099
|
type: quickSettingsVisible ? "primary" : "default",
|
|
114063
114100
|
icon: /* @__PURE__ */ jsxRuntimeExports.jsx(RefIcon$8, {}),
|
|
114064
|
-
"aria-label": "
|
|
114101
|
+
"aria-label": String(t2("quick_filter_settings")),
|
|
114065
114102
|
"aria-pressed": quickSettingsVisible
|
|
114066
114103
|
}
|
|
114067
114104
|
) }),
|
|
114068
|
-
((
|
|
114105
|
+
((_c = state.configuration) == null ? void 0 : _c.enableReverseLinkBrowser) && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
114069
114106
|
"button",
|
|
114070
114107
|
{
|
|
114071
114108
|
className: "bg-blue-500 hover:bg-blue-700 text-white font-bold py-1 px-2 rounded text-sm",
|
|
@@ -114088,7 +114125,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
114088
114125
|
activePropertyLabel: selectedAiApprovalProperty ? getFieldTitle(selectedAiApprovalProperty) : void 0,
|
|
114089
114126
|
remainingEntityCount: pendingOtherAiApprovalEntities.length,
|
|
114090
114127
|
remainingFieldCount: pendingOtherAiApprovalFieldCount,
|
|
114091
|
-
readonly: (
|
|
114128
|
+
readonly: (_d = state.configuration) == null ? void 0 : _d.readonly,
|
|
114092
114129
|
canGoPrevious: selectedAiApprovalIndex > 0,
|
|
114093
114130
|
canGoNext: selectedAiApprovalIndex < pendingAiApprovals.length - 1,
|
|
114094
114131
|
onPrevious: () => navigateToAiApproval(selectedAiApprovalIndex - 1),
|
|
@@ -114098,13 +114135,13 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
114098
114135
|
onReviewNextEntity: handleReviewNextAiApprovalEntity
|
|
114099
114136
|
}
|
|
114100
114137
|
),
|
|
114101
|
-
!renderTabs && (((
|
|
114138
|
+
!renderTabs && (((_e2 = state.configuration) == null ? void 0 : _e2.tabLocation) === "left" || ((_f = state.configuration) == null ? void 0 : _f.tabLocation) === "right" ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: contentContainerRef, className: "min-h-0 overflow-hidden", style: { height: scrollViewportHeight ? `${scrollViewportHeight}px` : "calc(100vh - 200px)" }, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Ve, { vertical: false, proportionalLayout: false, separator: !iconView, onChange: (sizes2) => {
|
|
114102
114139
|
var _a3;
|
|
114103
114140
|
const w2 = ((_a3 = state.configuration) == null ? void 0 : _a3.tabLocation) === "left" ? sizes2[0] : sizes2[1];
|
|
114104
114141
|
setTabPaneWidth(w2);
|
|
114105
114142
|
persistTabWidth(w2);
|
|
114106
114143
|
}, children: [
|
|
114107
|
-
((
|
|
114144
|
+
((_g = state.configuration) == null ? void 0 : _g.tabLocation) === "left" && /* @__PURE__ */ jsxRuntimeExports.jsx(Ve.Pane, { minSize: iconView ? ICON_TAB_PANE_WIDTH : MIN_LABEL_TAB_PANE_WIDTH, maxSize: iconView ? ICON_TAB_PANE_WIDTH : MAX_LABEL_TAB_PANE_WIDTH, preferredSize: iconView ? ICON_TAB_PANE_WIDTH : tabPaneWidth, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative group h-full border-r border-slate-200", children: [
|
|
114108
114145
|
renderProfileActionRail(),
|
|
114109
114146
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute right-0 top-0 bottom-0 w-1 bg-slate-300 opacity-0 group-hover:opacity-100" })
|
|
114110
114147
|
] }) }),
|
|
@@ -114127,7 +114164,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
114127
114164
|
)
|
|
114128
114165
|
}
|
|
114129
114166
|
),
|
|
114130
|
-
!((
|
|
114167
|
+
!((_h = state.configuration) == null ? void 0 : _h.readonly) && missingRequiredData && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
114131
114168
|
"button",
|
|
114132
114169
|
{
|
|
114133
114170
|
className: "bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded",
|
|
@@ -114136,7 +114173,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
114136
114173
|
}
|
|
114137
114174
|
)
|
|
114138
114175
|
] }),
|
|
114139
|
-
!shouldRenderCoreField("@id") && !((
|
|
114176
|
+
!shouldRenderCoreField("@id") && !((_i = state.configuration) == null ? void 0 : _i.readonly) && missingRequiredData && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-row place-content-between my-2 p-2", children: [
|
|
114140
114177
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-grow" }),
|
|
114141
114178
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
114142
114179
|
"button",
|
|
@@ -114214,11 +114251,11 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
114214
114251
|
return null;
|
|
114215
114252
|
})
|
|
114216
114253
|
] }) }),
|
|
114217
|
-
((
|
|
114254
|
+
((_j = state.configuration) == null ? void 0 : _j.tabLocation) === "right" && /* @__PURE__ */ jsxRuntimeExports.jsx(Ve.Pane, { minSize: iconView ? ICON_TAB_PANE_WIDTH : MIN_LABEL_TAB_PANE_WIDTH, maxSize: iconView ? ICON_TAB_PANE_WIDTH : MAX_LABEL_TAB_PANE_WIDTH, preferredSize: iconView ? ICON_TAB_PANE_WIDTH : tabPaneWidth, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative group h-full border-l border-slate-200", children: [
|
|
114218
114255
|
renderProfileActionRail(),
|
|
114219
114256
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute left-0 top-0 bottom-0 w-1 bg-slate-300 opacity-0 group-hover:opacity-100" })
|
|
114220
114257
|
] }) })
|
|
114221
|
-
] }, `untabbed-${(
|
|
114258
|
+
] }, `untabbed-${(_k = state.configuration) == null ? void 0 : _k.tabLocation}-${iconView ? "icon" : "label"}`) }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { ref: contentContainerRef, className: "flex min-h-0 overflow-hidden", style: {
|
|
114222
114259
|
flexDirection: "column",
|
|
114223
114260
|
height: scrollViewportHeight ? `${scrollViewportHeight}px` : "calc(100vh - 200px)"
|
|
114224
114261
|
}, children: [
|
|
@@ -114228,7 +114265,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
114228
114265
|
tabPosition: "top",
|
|
114229
114266
|
items: [
|
|
114230
114267
|
toggleViewTabItem,
|
|
114231
|
-
addProfileTabItem
|
|
114268
|
+
...canAddProfile ? [addProfileTabItem] : []
|
|
114232
114269
|
],
|
|
114233
114270
|
style: { width: "100%" },
|
|
114234
114271
|
tabBarStyle: { width: "100%" }
|
|
@@ -114253,7 +114290,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
114253
114290
|
)
|
|
114254
114291
|
}
|
|
114255
114292
|
),
|
|
114256
|
-
!((
|
|
114293
|
+
!((_l = state.configuration) == null ? void 0 : _l.readonly) && missingRequiredData && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
114257
114294
|
"button",
|
|
114258
114295
|
{
|
|
114259
114296
|
className: "bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded",
|
|
@@ -114262,7 +114299,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
114262
114299
|
}
|
|
114263
114300
|
)
|
|
114264
114301
|
] }),
|
|
114265
|
-
!shouldRenderCoreField("@id") && !((
|
|
114302
|
+
!shouldRenderCoreField("@id") && !((_m = state.configuration) == null ? void 0 : _m.readonly) && missingRequiredData && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-row place-content-between my-2 p-2", children: [
|
|
114266
114303
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-grow" }),
|
|
114267
114304
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
114268
114305
|
"button",
|
|
@@ -114353,7 +114390,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
114353
114390
|
] }) }),
|
|
114354
114391
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Ve.Pane, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { ref: activeContentRef, className: `${editorScrollClassName} h-full overflow-y-auto scroll-smooth min-h-0`, children: [
|
|
114355
114392
|
renderQuickSettingsHeader(),
|
|
114356
|
-
!((
|
|
114393
|
+
!((_n = state.configuration) == null ? void 0 : _n.readonly) && ((_o = tabs.find((t22) => t22.name === activeTab)) == null ? void 0 : _o.missingRequiredData) && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-red-600 float-right mb-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
114357
114394
|
"button",
|
|
114358
114395
|
{
|
|
114359
114396
|
className: "bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded text-sm",
|
|
@@ -114405,7 +114442,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
114405
114442
|
)
|
|
114406
114443
|
}
|
|
114407
114444
|
),
|
|
114408
|
-
(
|
|
114445
|
+
(_p = tabs.find((tab) => tab.name === "about")) == null ? void 0 : _p.inputs.map((input) => {
|
|
114409
114446
|
if (!["@id", "@type", "name", "@reverse"].includes(input.name) && shouldRenderField(input.name, input.label)) {
|
|
114410
114447
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
114411
114448
|
"div",
|
|
@@ -114490,7 +114527,7 @@ const RenderEntity = forwardRef((props, ref) => {
|
|
|
114490
114527
|
return null;
|
|
114491
114528
|
})
|
|
114492
114529
|
] }) })
|
|
114493
|
-
] }, `tabbed-${(
|
|
114530
|
+
] }, `tabbed-${(_q = state.configuration) == null ? void 0 : _q.tabLocation}-${iconView ? "icon" : "label"}`) })
|
|
114494
114531
|
] }),
|
|
114495
114532
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
114496
114533
|
Drawer2,
|
|
@@ -121857,6 +121894,12 @@ const en = {
|
|
|
121857
121894
|
select_a_type_to_add: "Select a type to add",
|
|
121858
121895
|
// Shell2.tsx
|
|
121859
121896
|
add_profile_button_tooltip: "Add a new profile",
|
|
121897
|
+
add_profile_button_aria: "Add profile",
|
|
121898
|
+
profile_actions_aria: "Profile actions",
|
|
121899
|
+
profile_sections_aria: "Profile sections",
|
|
121900
|
+
remove_profile_aria: "Remove profile",
|
|
121901
|
+
scroll_profile_tabs_up: "Scroll profile tabs up",
|
|
121902
|
+
scroll_profile_tabs_down: "Scroll profile tabs down",
|
|
121860
121903
|
switch_to_icon_view: "Switch to icon view",
|
|
121861
121904
|
switch_to_label_view: "Switch to default view",
|
|
121862
121905
|
// EntityType.tsx
|
|
@@ -121956,6 +121999,7 @@ const en = {
|
|
|
121956
121999
|
// LinkedEntityCard.tsx / DialogBrowseEntities.tsx
|
|
121957
122000
|
ai_entity_was_added_by_ai: "Entity was added by AI",
|
|
121958
122001
|
// QuickSettingsHeader.tsx
|
|
122002
|
+
quick_filter_settings: "Quick filter settings",
|
|
121959
122003
|
quick_filter_settings_aria: "Quick filter settings",
|
|
121960
122004
|
field_display_settings_aria: "Field display settings",
|
|
121961
122005
|
hide_field_help: "Hide field help",
|
|
@@ -122068,6 +122112,12 @@ const hu = {
|
|
|
122068
122112
|
select_a_type_to_add: "Válassz hozzáadandó típust",
|
|
122069
122113
|
// Shell2.tsx
|
|
122070
122114
|
add_profile_button_tooltip: "Új profil hozzáadása",
|
|
122115
|
+
add_profile_button_aria: "Profil hozzáadása",
|
|
122116
|
+
profile_actions_aria: "Profilműveletek",
|
|
122117
|
+
profile_sections_aria: "Profilszakaszok",
|
|
122118
|
+
remove_profile_aria: "Profil eltávolítása",
|
|
122119
|
+
scroll_profile_tabs_up: "Profilfülek görgetése felfelé",
|
|
122120
|
+
scroll_profile_tabs_down: "Profilfülek görgetése lefelé",
|
|
122071
122121
|
switch_to_icon_view: "Ikon nézetre váltás",
|
|
122072
122122
|
switch_to_label_view: "Alap nézetre váltás",
|
|
122073
122123
|
// EntityType.tsx
|
|
@@ -122167,6 +122217,7 @@ const hu = {
|
|
|
122167
122217
|
// LinkedEntityCard.tsx / DialogBrowseEntities.tsx
|
|
122168
122218
|
ai_entity_was_added_by_ai: "Az entitást AI adta hozzá",
|
|
122169
122219
|
// QuickSettingsHeader.tsx
|
|
122220
|
+
quick_filter_settings: "Gyors szűrési beállítások",
|
|
122170
122221
|
quick_filter_settings_aria: "Gyors szűrési beállítások",
|
|
122171
122222
|
field_display_settings_aria: "Mezőmegjelenítési beállítások",
|
|
122172
122223
|
hide_field_help: "Mezősúgó elrejtése",
|
|
@@ -123040,7 +123091,7 @@ var EmotionCacheContext = /* @__PURE__ */ React.createContext(
|
|
|
123040
123091
|
}) : null
|
|
123041
123092
|
);
|
|
123042
123093
|
var CacheProvider = EmotionCacheContext.Provider;
|
|
123043
|
-
const version = "0.1.
|
|
123094
|
+
const version = "0.1.34";
|
|
123044
123095
|
const pkg = {
|
|
123045
123096
|
version
|
|
123046
123097
|
};
|
|
@@ -123177,6 +123228,7 @@ function DescriboCrateBuilderInner(props) {
|
|
|
123177
123228
|
enableBrowseEntities = propertyDefinitions.enableBrowseEntities.default,
|
|
123178
123229
|
enableTemplateSave = propertyDefinitions.enableTemplateSave.default,
|
|
123179
123230
|
enableBulkAdd = propertyDefinitions.enableBulkAdd.default,
|
|
123231
|
+
enableProfileActions,
|
|
123180
123232
|
enableReverseLinkBrowser = propertyDefinitions.enableReverseLinkBrowser.default,
|
|
123181
123233
|
enableUrlMarkup = propertyDefinitions.enableUrlMarkup.default,
|
|
123182
123234
|
enableEntityTimestamps = propertyDefinitions.enableEntityTimestamps.default,
|
|
@@ -123188,6 +123240,7 @@ function DescriboCrateBuilderInner(props) {
|
|
|
123188
123240
|
language: language2 = propertyDefinitions.language.default,
|
|
123189
123241
|
resetTabOnEntityChange = false,
|
|
123190
123242
|
resetTabOnProfileChange = false,
|
|
123243
|
+
quickSettingsVisible,
|
|
123191
123244
|
stateScopeKey,
|
|
123192
123245
|
onReady,
|
|
123193
123246
|
onError,
|
|
@@ -123196,6 +123249,7 @@ function DescriboCrateBuilderInner(props) {
|
|
|
123196
123249
|
onSaveCrate,
|
|
123197
123250
|
onSaveRoCrateApproval,
|
|
123198
123251
|
onSaveEntityTemplate,
|
|
123252
|
+
onQuickSettingsVisibleChange,
|
|
123199
123253
|
onAddNewProfileRequest,
|
|
123200
123254
|
onRemoveProfile
|
|
123201
123255
|
} = props;
|
|
@@ -123210,6 +123264,7 @@ function DescriboCrateBuilderInner(props) {
|
|
|
123210
123264
|
const renderEntityRef = useRef(null);
|
|
123211
123265
|
const keys2 = useRef({ cm: 0, pm: 0, lookups: 0 });
|
|
123212
123266
|
const lastHandledEntityIdRef = useRef(void 0);
|
|
123267
|
+
const hasProfileActionHandler = Boolean(onAddNewProfileRequest || onRemoveProfile);
|
|
123213
123268
|
useEffect(() => {
|
|
123214
123269
|
setApprovalState(roCrateApproval);
|
|
123215
123270
|
}, [roCrateApproval]);
|
|
@@ -123258,12 +123313,14 @@ function DescriboCrateBuilderInner(props) {
|
|
|
123258
123313
|
markApprovalEntityApproved
|
|
123259
123314
|
}), [approvalState, markApprovalEntityApproved, markApprovalPropertyApproved]);
|
|
123260
123315
|
const configuration = useMemo$1(() => {
|
|
123316
|
+
const profileActionsEnabled = enableProfileActions ?? hasProfileActionHandler;
|
|
123261
123317
|
const config2 = {
|
|
123262
123318
|
enableContextEditor,
|
|
123263
123319
|
enableCratePreview,
|
|
123264
123320
|
enableBrowseEntities,
|
|
123265
123321
|
enableTemplateSave,
|
|
123266
123322
|
enableBulkAdd,
|
|
123323
|
+
enableProfileActions: profileActionsEnabled,
|
|
123267
123324
|
enableReverseLinkBrowser,
|
|
123268
123325
|
enableUrlMarkup,
|
|
123269
123326
|
enableEntityTimestamps,
|
|
@@ -123291,6 +123348,7 @@ function DescriboCrateBuilderInner(props) {
|
|
|
123291
123348
|
enableBrowseEntities,
|
|
123292
123349
|
enableTemplateSave,
|
|
123293
123350
|
enableBulkAdd,
|
|
123351
|
+
enableProfileActions,
|
|
123294
123352
|
enableReverseLinkBrowser,
|
|
123295
123353
|
enableUrlMarkup,
|
|
123296
123354
|
enableEntityTimestamps,
|
|
@@ -123300,7 +123358,8 @@ function DescriboCrateBuilderInner(props) {
|
|
|
123300
123358
|
tabLocation,
|
|
123301
123359
|
showControls,
|
|
123302
123360
|
language2,
|
|
123303
|
-
lookup
|
|
123361
|
+
lookup,
|
|
123362
|
+
hasProfileActionHandler
|
|
123304
123363
|
]);
|
|
123305
123364
|
const init2 = useCallback(async () => {
|
|
123306
123365
|
var _a2, _b;
|
|
@@ -123458,8 +123517,10 @@ function DescriboCrateBuilderInner(props) {
|
|
|
123458
123517
|
onSaveEntityTemplate: saveEntityAsTemplate,
|
|
123459
123518
|
onWarning: handleWarning,
|
|
123460
123519
|
onError: handleError,
|
|
123461
|
-
|
|
123462
|
-
|
|
123520
|
+
quickSettingsVisible,
|
|
123521
|
+
onQuickSettingsVisibleChange,
|
|
123522
|
+
onAddNewProfileRequest: configuration.enableProfileActions ? handleAddProfileRequest : void 0,
|
|
123523
|
+
onRemoveProfile: configuration.enableProfileActions ? onRemoveProfile : void 0
|
|
123463
123524
|
}
|
|
123464
123525
|
) }) }) }) }) }) }) }),
|
|
123465
123526
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "pointer-events-none fixed bottom-2 right-2 z-50 text-xs text-gray-400", children: [
|
package/dist/types.d.ts
CHANGED
|
@@ -1,55 +1,268 @@
|
|
|
1
1
|
export interface JSONObject {
|
|
2
2
|
[key: string]: any;
|
|
3
3
|
}
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Decision emitted when a user resolves AI-generated metadata approval records.
|
|
6
|
+
*/
|
|
7
|
+
export type RoCrateApprovalDecision = "accept" | "reject" | "manual-edit";
|
|
5
8
|
export interface EntityTemplatesParams {
|
|
6
9
|
type?: Array<any> | string;
|
|
7
10
|
queryString?: string;
|
|
8
11
|
limit?: number;
|
|
9
12
|
}
|
|
10
13
|
export interface Lookup {
|
|
14
|
+
/**
|
|
15
|
+
* Look up entity templates in the host application.
|
|
16
|
+
*
|
|
17
|
+
* The component passes the requested `@type`, the user's search string, and a
|
|
18
|
+
* result limit. Most host applications should search at least `@id` and
|
|
19
|
+
* `name`.
|
|
20
|
+
*/
|
|
11
21
|
entityTemplates(params: EntityTemplatesParams): Promise<void>;
|
|
12
22
|
}
|
|
23
|
+
export interface RoCrateApprovalSaveData {
|
|
24
|
+
/**
|
|
25
|
+
* Updated approval data after the decision has been applied.
|
|
26
|
+
*/
|
|
27
|
+
roCrateApproval: JSONObject | JSONObject[] | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Entity whose approval records were changed.
|
|
30
|
+
*/
|
|
31
|
+
entityId: string;
|
|
32
|
+
/**
|
|
33
|
+
* Property whose approval records were changed. Entity-level bulk decisions
|
|
34
|
+
* use `"*"`.
|
|
35
|
+
*/
|
|
36
|
+
propertyName: string;
|
|
37
|
+
/**
|
|
38
|
+
* User decision that caused the approval data update.
|
|
39
|
+
*/
|
|
40
|
+
decision: RoCrateApprovalDecision;
|
|
41
|
+
/**
|
|
42
|
+
* Approval records affected by the decision.
|
|
43
|
+
*/
|
|
44
|
+
approvalRecords: JSONObject[];
|
|
45
|
+
/**
|
|
46
|
+
* Optional edited value associated with a manual decision.
|
|
47
|
+
*/
|
|
48
|
+
value?: any;
|
|
49
|
+
}
|
|
50
|
+
export interface RemoveProfilePayload {
|
|
51
|
+
/**
|
|
52
|
+
* Entity currently being edited.
|
|
53
|
+
*/
|
|
54
|
+
entityId: string;
|
|
55
|
+
/**
|
|
56
|
+
* Profile tab selected for removal.
|
|
57
|
+
*/
|
|
58
|
+
tab: {
|
|
59
|
+
name?: string;
|
|
60
|
+
label?: string;
|
|
61
|
+
hasData?: boolean;
|
|
62
|
+
missingRequiredData?: boolean;
|
|
63
|
+
description?: string;
|
|
64
|
+
inputs?: JSONObject[];
|
|
65
|
+
profileUrl?: string;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
13
68
|
export type DescriboCrateBuilderProps = {
|
|
69
|
+
/**
|
|
70
|
+
* RO-Crate JSON to display and edit.
|
|
71
|
+
*/
|
|
14
72
|
crate?: JSONObject;
|
|
73
|
+
/**
|
|
74
|
+
* Optional AI metadata approval records, usually loaded from
|
|
75
|
+
* `ro-crate-approval.json`.
|
|
76
|
+
*
|
|
77
|
+
* Records may be supplied as an array, as `{ items: [...] }`, or as a single
|
|
78
|
+
* entity approval object with an `approval` array. Pending records drive the
|
|
79
|
+
* AI review banner, field-level diffs, edited-field badges, deleted entity
|
|
80
|
+
* review cards, and the AI-edited quick filter.
|
|
81
|
+
*/
|
|
15
82
|
roCrateApproval?: JSONObject | JSONObject[];
|
|
83
|
+
/**
|
|
84
|
+
* Profile to use when editing the crate.
|
|
85
|
+
*/
|
|
16
86
|
profile?: JSONObject;
|
|
87
|
+
/**
|
|
88
|
+
* Initially selected entity id.
|
|
89
|
+
*/
|
|
17
90
|
entityId?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Host-provided lookup callbacks for template and data-pack searches.
|
|
93
|
+
*/
|
|
18
94
|
lookup?: Lookup;
|
|
95
|
+
/**
|
|
96
|
+
* Enable context editor functionality. Only used at component initialization
|
|
97
|
+
* time.
|
|
98
|
+
*/
|
|
19
99
|
enableContextEditor?: boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Enable crate preview functionality. Only used at component initialization
|
|
102
|
+
* time.
|
|
103
|
+
*/
|
|
20
104
|
enableCratePreview?: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Enable entity browser functionality. Only used at component initialization
|
|
107
|
+
* time.
|
|
108
|
+
*/
|
|
21
109
|
enableBrowseEntities?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Enable entity template save functionality. Only used at component
|
|
112
|
+
* initialization time.
|
|
113
|
+
*/
|
|
22
114
|
enableTemplateSave?: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Enable bulk-add functionality. Only used at component initialization time.
|
|
117
|
+
*/
|
|
23
118
|
enableBulkAdd?: boolean;
|
|
119
|
+
/**
|
|
120
|
+
* Show add/remove profile controls in the profile tab rail.
|
|
121
|
+
*
|
|
122
|
+
* When omitted, the component enables these controls automatically if
|
|
123
|
+
* `onAddNewProfileRequest` or `onRemoveProfile` is supplied.
|
|
124
|
+
*/
|
|
125
|
+
enableProfileActions?: boolean;
|
|
126
|
+
/**
|
|
127
|
+
* If true, the component does not allow edits and does not call save
|
|
128
|
+
* callbacks.
|
|
129
|
+
*/
|
|
24
130
|
readonly?: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Enable the reverse link browser sidebar.
|
|
133
|
+
*/
|
|
25
134
|
enableReverseLinkBrowser?: boolean;
|
|
135
|
+
/**
|
|
136
|
+
* Whether the component is hosted as a web component.
|
|
137
|
+
*/
|
|
138
|
+
webComponent?: boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Let the component manage browser history internally.
|
|
141
|
+
*/
|
|
26
142
|
enableInternalRouting?: boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Purge unlinked entities from the crate before emitting it for saving.
|
|
145
|
+
*/
|
|
27
146
|
purgeUnlinkedEntities?: boolean;
|
|
147
|
+
/**
|
|
148
|
+
* Localization language. Supported values are `en` and `hu`; defaults to
|
|
149
|
+
* `en`.
|
|
150
|
+
*/
|
|
28
151
|
language?: string;
|
|
152
|
+
/**
|
|
153
|
+
* Called when the component is ready.
|
|
154
|
+
*/
|
|
29
155
|
onReady?: () => void;
|
|
30
|
-
|
|
156
|
+
/**
|
|
157
|
+
* Called when the component reports an error.
|
|
158
|
+
*/
|
|
159
|
+
onError?: (message: any) => void;
|
|
160
|
+
/**
|
|
161
|
+
* Called when the component reports a warning.
|
|
162
|
+
*/
|
|
163
|
+
onWarning?: (warnings: any) => void;
|
|
164
|
+
/**
|
|
165
|
+
* Called when the crate has changed.
|
|
166
|
+
*/
|
|
31
167
|
onSaveCrate?: (saveData: {
|
|
32
168
|
crate: JSONObject;
|
|
33
169
|
entityId?: string;
|
|
34
170
|
}) => void;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
171
|
+
/**
|
|
172
|
+
* Called when AI approval records change.
|
|
173
|
+
*
|
|
174
|
+
* Accepting a field marks its matching approval records as approved.
|
|
175
|
+
* Rejecting a field or choosing manual edit removes those pending approval
|
|
176
|
+
* records from the approval state. The host application is responsible for
|
|
177
|
+
* persisting the returned `roCrateApproval` payload.
|
|
178
|
+
*/
|
|
179
|
+
onSaveRoCrateApproval?: (saveData: RoCrateApprovalSaveData) => void;
|
|
180
|
+
/**
|
|
181
|
+
* Called when the crate is to be saved as a template.
|
|
182
|
+
*
|
|
183
|
+
* If implemented, also pass a `Lookup` object with `entityTemplates` so saved
|
|
184
|
+
* templates can be looked up and reused in the component.
|
|
185
|
+
*/
|
|
43
186
|
onSaveCrateAsTemplate?: (name: string, crate: JSONObject) => void;
|
|
187
|
+
/**
|
|
188
|
+
* Called when the entity is to be saved as a template.
|
|
189
|
+
*
|
|
190
|
+
* This is the current React component prop.
|
|
191
|
+
*/
|
|
192
|
+
onSaveEntityTemplate?: (entity: JSONObject) => void;
|
|
193
|
+
/**
|
|
194
|
+
* Legacy entity-template callback name kept for consumers that still import
|
|
195
|
+
* the public type.
|
|
196
|
+
*/
|
|
44
197
|
onSaveEntityAsTemplate?: (name: string, entity: JSONObject) => void;
|
|
198
|
+
/**
|
|
199
|
+
* Called when the quick filter/settings panel visibility changes.
|
|
200
|
+
*/
|
|
201
|
+
onQuickSettingsVisibleChange?: (visible: boolean) => void;
|
|
202
|
+
/**
|
|
203
|
+
* Called when the editor requests that the host add a profile to the current
|
|
204
|
+
* entity.
|
|
205
|
+
*
|
|
206
|
+
* The host should update `profile` and/or `crate` as needed; the component
|
|
207
|
+
* remembers existing profile tabs and selects the newly added tab after the
|
|
208
|
+
* update.
|
|
209
|
+
*/
|
|
210
|
+
onAddNewProfileRequest?: (requested: boolean) => void;
|
|
211
|
+
/**
|
|
212
|
+
* Called when the editor requests removal of a profile tab from the current
|
|
213
|
+
* entity.
|
|
214
|
+
*
|
|
215
|
+
* The payload includes the entity id and the tab metadata, including whether
|
|
216
|
+
* the tab currently has data or missing required fields.
|
|
217
|
+
*/
|
|
218
|
+
onRemoveProfile?: (payload: RemoveProfilePayload) => void;
|
|
219
|
+
/**
|
|
220
|
+
* Called when the crate builder navigates to a context entity.
|
|
221
|
+
*/
|
|
45
222
|
onNavigation?: (entity: {
|
|
46
223
|
"@id": string;
|
|
224
|
+
"@type"?: string[];
|
|
225
|
+
name?: string;
|
|
47
226
|
}) => void;
|
|
48
|
-
|
|
227
|
+
/**
|
|
228
|
+
* Location of layout tabs.
|
|
229
|
+
*/
|
|
230
|
+
tabLocation?: "left" | "right" | "top" | "bottom";
|
|
231
|
+
/**
|
|
232
|
+
* Show or hide the main control bar.
|
|
233
|
+
*/
|
|
49
234
|
showControls?: boolean;
|
|
235
|
+
/**
|
|
236
|
+
* When the crate/entity is updated, stay on the selected tab instead of
|
|
237
|
+
* jumping back to About.
|
|
238
|
+
*/
|
|
50
239
|
resetTabOnEntityChange?: boolean;
|
|
240
|
+
/**
|
|
241
|
+
* When the profile is updated, stay on the selected tab instead of jumping
|
|
242
|
+
* back to About.
|
|
243
|
+
*/
|
|
51
244
|
resetTabOnProfileChange?: boolean;
|
|
245
|
+
/**
|
|
246
|
+
* Optionally control quick filter/settings panel visibility from a custom
|
|
247
|
+
* header.
|
|
248
|
+
*
|
|
249
|
+
* When visible, the panel lets users toggle field help, filter fields by name
|
|
250
|
+
* or value, hide empty fields, and, when AI approval data exists, show only
|
|
251
|
+
* AI-edited fields.
|
|
252
|
+
*/
|
|
253
|
+
quickSettingsVisible?: boolean;
|
|
254
|
+
/**
|
|
255
|
+
* Optional scope identifier used to isolate editor state between multiple
|
|
256
|
+
* concurrent component instances.
|
|
257
|
+
*/
|
|
52
258
|
stateScopeKey?: string;
|
|
259
|
+
/**
|
|
260
|
+
* If true, text fields containing a URL are marked up with an entity link. If
|
|
261
|
+
* false, the URL is shown as plain text.
|
|
262
|
+
*/
|
|
53
263
|
enableUrlMarkup?: boolean;
|
|
264
|
+
/**
|
|
265
|
+
* If true, add timestamps reflecting the last time an entity was updated.
|
|
266
|
+
*/
|
|
54
267
|
enableEntityTimestamps?: boolean;
|
|
55
268
|
};
|