@conduction/nextcloud-vue 0.1.0-beta.14 → 0.1.0-beta.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/nextcloud-vue.cjs.js +7282 -3443
  2. package/dist/nextcloud-vue.cjs.js.map +1 -1
  3. package/dist/nextcloud-vue.css +719 -100
  4. package/dist/nextcloud-vue.esm.js +7120 -3300
  5. package/dist/nextcloud-vue.esm.js.map +1 -1
  6. package/package.json +3 -2
  7. package/src/components/CnAdvancedFormDialog/CnAdvancedFormDialog.vue +36 -3
  8. package/src/components/CnAdvancedFormDialog/CnMetadataTab.vue +34 -19
  9. package/src/components/CnAdvancedFormDialog/CnPropertiesTab.vue +312 -36
  10. package/src/components/CnAdvancedFormDialog/CnPropertyValueCell.vue +983 -64
  11. package/src/components/CnAdvancedFormDialog/index.js +3 -0
  12. package/src/components/CnAppLoading/CnAppLoading.vue +93 -0
  13. package/src/components/CnAppLoading/index.js +3 -0
  14. package/src/components/CnAppNav/CnAppNav.vue +269 -0
  15. package/src/components/CnAppNav/index.js +3 -0
  16. package/src/components/CnAppRoot/CnAppRoot.vue +201 -0
  17. package/src/components/CnAppRoot/index.js +3 -0
  18. package/src/components/CnColorPicker/CnColorPicker.vue +251 -0
  19. package/src/components/CnColorPicker/index.js +1 -0
  20. package/src/components/CnContextMenu/CnContextMenu.vue +41 -4
  21. package/src/components/CnDashboardPage/CnDashboardPage.vue +8 -0
  22. package/src/components/CnDependencyMissing/CnDependencyMissing.vue +152 -0
  23. package/src/components/CnDependencyMissing/index.js +3 -0
  24. package/src/components/CnDetailPage/CnDetailPage.vue +27 -16
  25. package/src/components/CnIndexPage/CnIndexPage.vue +36 -6
  26. package/src/components/CnPageRenderer/CnPageRenderer.vue +278 -0
  27. package/src/components/CnPageRenderer/index.js +4 -0
  28. package/src/components/CnPageRenderer/pageTypes.js +37 -0
  29. package/src/components/CnRowActions/CnRowActions.vue +44 -3
  30. package/src/components/CnSchemaFormDialog/CnSchemaConfigurationTab.vue +4 -0
  31. package/src/components/CnSchemaFormDialog/CnSchemaFormDialog.vue +103 -74
  32. package/src/components/CnSchemaFormDialog/CnSchemaPropertiesTab.vue +30 -2
  33. package/src/components/CnSchemaFormDialog/CnSchemaSecurityTab.vue +16 -12
  34. package/src/components/CnTabbedFormDialog/CnTabbedFormDialog.vue +9 -4
  35. package/src/components/index.js +7 -1
  36. package/src/composables/index.js +2 -0
  37. package/src/composables/useAppManifest.js +115 -0
  38. package/src/composables/useAppStatus.js +107 -0
  39. package/src/css/CnSchemaFormDialog.css +22 -0
  40. package/src/index.js +24 -2
  41. package/src/schemas/app-manifest.schema.json +153 -0
  42. package/src/types/index.d.ts +9 -0
  43. package/src/types/manifest.d.ts +88 -0
  44. package/src/utils/index.js +1 -1
  45. package/src/utils/schema.js +157 -2
  46. package/src/utils/validateManifest.js +113 -0
@@ -1219,6 +1219,15 @@
1219
1219
  background-color: var(--color-primary-light);
1220
1220
  border-left: 3px solid var(--color-primary);
1221
1221
  }
1222
+ .cn-schema-form__viewTable tbody tr.cn-schema-form__inherited-row {
1223
+ background-color: var(--color-background-dark);
1224
+ border-left: 3px solid var(--color-text-maxcontrast);
1225
+ cursor: default;
1226
+ opacity: 0.8;
1227
+ }
1228
+ .cn-schema-form__viewTable tbody tr.cn-schema-form__inherited-row:hover {
1229
+ background-color: var(--color-background-dark);
1230
+ }
1222
1231
  /* Form editor */
1223
1232
  .cn-schema-form__form-editor {
1224
1233
  display: flex;
@@ -1236,6 +1245,10 @@
1236
1245
  color: var(--color-warning-text);
1237
1246
  flex-shrink: 0;
1238
1247
  }
1248
+ .cn-schema-form__lock-icon {
1249
+ color: var(--color-text-maxcontrast);
1250
+ flex-shrink: 0;
1251
+ }
1239
1252
  /* Table column widths */
1240
1253
  .cn-schema-form__tableColumnActions {
1241
1254
  width: 150px;
@@ -1502,6 +1515,11 @@
1502
1515
  background-color: var(--color-success);
1503
1516
  color: var(--color-success-text);
1504
1517
  }
1518
+ .cn-schema-form__chip-inherited {
1519
+ background-color: var(--color-background-dark);
1520
+ color: var(--color-text-maxcontrast);
1521
+ border: 1px solid var(--color-border);
1522
+ }
1505
1523
  .cn-schema-form__properties-warning {
1506
1524
  margin-top: 15px;
1507
1525
  }
@@ -2506,12 +2524,12 @@ html[data-cn-ctx-menu] .cn-row-action--destructive {
2506
2524
  }
2507
2525
 
2508
2526
 
2509
- .cn-row-action--destructive[data-v-61defc0c] {
2527
+ .cn-row-action--destructive[data-v-3b1fab28] {
2510
2528
  color: var(--color-error) !important;
2511
2529
  }
2512
2530
 
2513
2531
 
2514
- .cn-context-menu[data-v-56560e88] {
2532
+ .cn-context-menu[data-v-25355ff4] {
2515
2533
  /* Hide the NcActions trigger button — menu opens only via right-click */
2516
2534
  display: none;
2517
2535
  }
@@ -2883,29 +2901,129 @@ html[data-cn-ctx-menu] .cn-row-action--destructive {
2883
2901
  }
2884
2902
 
2885
2903
 
2886
- .cn-advanced-form-dialog__value-input-container[data-v-e6f842ea] :deep(.text-field) {
2904
+ .cn-color-picker__swatch[data-v-5f9b4239] {
2905
+ --cn-color-picker-checker:
2906
+ linear-gradient(45deg, var(--color-background-dark) 25%, transparent 25%),
2907
+ linear-gradient(-45deg, var(--color-background-dark) 25%, transparent 25%),
2908
+ linear-gradient(45deg, transparent 75%, var(--color-background-dark) 75%),
2909
+ linear-gradient(-45deg, transparent 75%, var(--color-background-dark) 75%);
2910
+ display: inline-block;
2911
+ width: 32px;
2912
+ height: 32px;
2913
+ flex-shrink: 0;
2914
+ padding: 0;
2915
+ border: 1px solid var(--color-border);
2916
+ border-radius: var(--border-radius);
2917
+ cursor: pointer;
2918
+ background-image: var(--cn-color-picker-checker);
2919
+ background-size: 8px 8px;
2920
+ background-position: 0 0, 0 4px, 4px -4px, -4px 0;
2921
+ overflow: hidden;
2922
+ position: relative;
2923
+ }
2924
+ .cn-color-picker__swatch[data-v-5f9b4239]:focus-visible {
2925
+ outline: 2px solid var(--color-primary-element);
2926
+ outline-offset: 2px;
2927
+ }
2928
+ .cn-color-picker__swatch--disabled[data-v-5f9b4239] {
2929
+ cursor: not-allowed;
2930
+ opacity: 0.6;
2931
+ }
2932
+ /* Strip Chrome's hardcoded light-mode palette so it adopts the active theme.
2933
+ The class lands on the picker's root via Vue's class merging, so target it
2934
+ directly — NOT as a descendant. */
2935
+ .cn-color-picker__chrome[data-v-5f9b4239] {
2936
+ background: var(--color-main-background);
2937
+ background-color: var(--color-main-background);
2938
+ box-shadow: none;
2939
+ color: var(--color-main-text);
2940
+ font-family: var(--font-face);
2941
+ overflow: hidden;
2942
+ }
2943
+ .cn-color-picker__chrome[data-v-5f9b4239] :deep(.vc-chrome-body),
2944
+ .cn-color-picker__chrome[data-v-5f9b4239] :deep(.vc-chrome-saturation-wrap),
2945
+ .cn-color-picker__chrome[data-v-5f9b4239] :deep(.vc-chrome-color-wrap),
2946
+ .cn-color-picker__chrome[data-v-5f9b4239] :deep(.vc-chrome-active-color) {
2947
+ background-color: var(--color-main-background);
2948
+ }
2949
+ .cn-color-picker__chrome[data-v-5f9b4239] :deep(.vc-chrome-toggle-icon-highlight) {
2950
+ background: var(--color-background-hover);
2951
+ }
2952
+ .cn-color-picker__chrome[data-v-5f9b4239] :deep(.vc-hue-picker),
2953
+ .cn-color-picker__chrome[data-v-5f9b4239] :deep(.vc-alpha-picker) {
2954
+ background-color: var(--color-main-background);
2955
+ box-shadow: 0 1px 4px 0 var(--color-box-shadow);
2956
+ }
2957
+ .cn-color-picker__chrome[data-v-5f9b4239] :deep(.vc-chrome-fields .vc-input__input) {
2958
+ background-color: var(--color-main-background);
2959
+ color: var(--color-main-text);
2960
+ box-shadow: inset 0 0 0 1px var(--color-border);
2961
+ }
2962
+ .cn-color-picker__chrome[data-v-5f9b4239] :deep(.vc-chrome-fields .vc-input__label) {
2963
+ color: var(--color-text-maxcontrast);
2964
+ }
2965
+ .cn-color-picker__chrome[data-v-5f9b4239] :deep(.vc-chrome-toggle-icon svg path) {
2966
+ fill: var(--color-main-text);
2967
+ }
2968
+ /* When `mode` is set, lock the field-mode toggle so the user can't switch
2969
+ between hex/rgb/hsl. */
2970
+ .cn-color-picker__chrome--locked-mode[data-v-5f9b4239] :deep(.vc-chrome-toggle-btn) {
2971
+ display: none;
2972
+ }
2973
+
2974
+
2975
+ .cn-color-picker__popper .v-popper__inner,
2976
+ .cn-color-picker__popper .v-popper__wrapper {
2977
+ background: var(--color-main-background);
2978
+ background-color: var(--color-main-background);
2979
+ color: var(--color-main-text);
2980
+ }
2981
+ .cn-color-picker__popper .v-popper__arrow-inner,
2982
+ .cn-color-picker__popper .v-popper__arrow-outer {
2983
+ border-color: var(--color-main-background);
2984
+ }
2985
+ /* Default NcPopover style sets `top: -9px` with specificity (0,4,1) using a
2986
+ hashed class name; bump with !important rather than depend on the hash. */
2987
+ .cn-color-picker__popper .v-popper__arrow-container {
2988
+ top: -10px !important;
2989
+ }
2990
+
2991
+
2992
+ .cn-advanced-form-dialog__value-input-container[data-v-55998c61] {
2993
+ width: 100%;
2994
+ min-width: 0;
2995
+ }
2996
+ .cn-advanced-form-dialog__value-input-container[data-v-55998c61] :deep(.text-field) {
2887
2997
  margin: 0;
2888
2998
  padding: 0;
2889
2999
  }
2890
- .cn-advanced-form-dialog__boolean-input-row[data-v-e6f842ea] {
3000
+ .cn-advanced-form-dialog__boolean-input-row[data-v-55998c61] {
2891
3001
  display: flex;
2892
3002
  align-items: center;
2893
3003
  gap: 6px;
2894
3004
  }
3005
+ .cn-advanced-form-dialog__array-input-row[data-v-55998c61] {
3006
+ display: flex;
3007
+ align-items: center;
3008
+ gap: 6px;
3009
+ }
3010
+ .cn-advanced-form-dialog__array-input-row[data-v-55998c61] > :first-child {
3011
+ flex: 1;
3012
+ }
2895
3013
  /* patch extreme size in field */
2896
- .cn-advanced-form-dialog__boolean-input-row__input > span[data-v-e6f842ea] {
3014
+ .cn-advanced-form-dialog__boolean-input-row__input > span[data-v-55998c61] {
2897
3015
  padding-left: 0;
2898
3016
  padding-block: 0;
2899
3017
  }
2900
- .cn-advanced-form-dialog__boolean-input-row__input > input[data-v-e6f842ea] {
3018
+ .cn-advanced-form-dialog__boolean-input-row__input > input[data-v-55998c61] {
2901
3019
  margin: 0;
2902
3020
  }
2903
- .cn-advanced-form-dialog__info-icon[data-v-e6f842ea] {
3021
+ .cn-advanced-form-dialog__info-icon[data-v-55998c61] {
2904
3022
  flex-shrink: 0;
2905
3023
  color: var(--color-text-maxcontrast);
2906
3024
  cursor: help;
2907
3025
  }
2908
- .cn-advanced-form-dialog__json-value[data-v-e6f842ea] {
3026
+ .cn-advanced-form-dialog__json-value[data-v-55998c61] {
2909
3027
  max-height: 200px;
2910
3028
  overflow-y: auto;
2911
3029
  white-space: pre-wrap;
@@ -2915,118 +3033,270 @@ html[data-cn-ctx-menu] .cn-row-action--destructive {
2915
3033
  padding: 8px;
2916
3034
  border-radius: 4px;
2917
3035
  margin: 0;
3036
+ }
3037
+ /* Textarea: keep it inside the table cell instead of overflowing.
3038
+ NcTextArea's wrapper has a fixed height (`calc(var(--default-clickable-area) * 2)`)
3039
+ that ignores the `rows` attribute, which causes the textarea to render with a
3040
+ too-small viewport. Let the wrapper grow with its content instead. */
3041
+ .cn-advanced-form-dialog__textarea[data-v-55998c61] {
3042
+ width: 100%;
3043
+ box-sizing: border-box;
3044
+ }
3045
+ .cn-advanced-form-dialog__textarea[data-v-55998c61] :deep(.textarea__main-wrapper) {
3046
+ height: auto;
3047
+ min-height: var(--default-clickable-area);
3048
+ }
3049
+ .cn-advanced-form-dialog__textarea[data-v-55998c61] :deep(textarea) {
3050
+ width: 100%;
3051
+ max-width: 100%;
3052
+ box-sizing: border-box;
3053
+ resize: vertical;
3054
+ min-height: 80px;
3055
+ max-height: 240px;
3056
+ display: block;
3057
+ }
3058
+ /* Color widget: clickable swatch (native picker) + visible text input */
3059
+ .cn-advanced-form-dialog__color-input-row[data-v-55998c61] {
3060
+ display: flex;
3061
+ align-items: center;
3062
+ gap: 8px;
3063
+ width: 100%;
3064
+ }
3065
+ .cn-advanced-form-dialog__color-input-row[data-v-55998c61] > :last-child {
3066
+ flex: 1;
3067
+ min-width: 0;
3068
+ }
3069
+ .cn-advanced-form-dialog__color-swatch[data-v-55998c61] {
3070
+ --cn-color-swatch-checker:
3071
+ linear-gradient(45deg, var(--color-background-dark) 25%, transparent 25%),
3072
+ linear-gradient(-45deg, var(--color-background-dark) 25%, transparent 25%),
3073
+ linear-gradient(45deg, transparent 75%, var(--color-background-dark) 75%),
3074
+ linear-gradient(-45deg, transparent 75%, var(--color-background-dark) 75%);
3075
+ display: inline-block;
3076
+ width: 32px;
3077
+ height: 32px;
3078
+ flex-shrink: 0;
3079
+ padding: 0;
3080
+ border: 1px solid var(--color-border);
3081
+ border-radius: var(--border-radius);
3082
+ cursor: pointer;
3083
+ background-image: var(--cn-color-swatch-checker);
3084
+ background-size: 8px 8px;
3085
+ background-position: 0 0, 0 4px, 4px -4px, -4px 0;
3086
+ overflow: hidden;
3087
+ position: relative;
3088
+ }
3089
+ .cn-advanced-form-dialog__color-swatch[data-v-55998c61]:focus-visible {
3090
+ outline: 2px solid var(--color-primary-element);
3091
+ outline-offset: 2px;
3092
+ }
3093
+ .cn-advanced-form-dialog__color-swatch--readonly[data-v-55998c61] {
3094
+ cursor: default;
3095
+ width: 20px;
3096
+ height: 20px;
3097
+ vertical-align: middle;
3098
+ margin-inline-end: 6px;
3099
+ }
3100
+ .cn-advanced-form-dialog__color-display[data-v-55998c61] {
3101
+ display: inline-flex;
3102
+ align-items: center;
3103
+ }
3104
+ /* Help text & inline validation under the input */
3105
+ .cn-advanced-form-dialog__field-help[data-v-55998c61] {
3106
+ display: flex;
3107
+ flex-direction: column;
3108
+ gap: 2px;
3109
+ margin-top: 4px;
3110
+ font-size: 0.85em;
3111
+ color: var(--color-text-maxcontrast);
3112
+ }
3113
+ .cn-advanced-form-dialog__field-example[data-v-55998c61] {
3114
+ font-style: italic;
3115
+ }
3116
+ .cn-advanced-form-dialog__field-error[data-v-55998c61] {
3117
+ margin-top: 4px;
3118
+ font-size: 0.85em;
3119
+ color: var(--color-error-text);
3120
+ }
3121
+ .cn-advanced-form-dialog__value-cell-wrapper[data-v-55998c61] {
3122
+ display: flex;
3123
+ flex-direction: column;
3124
+ width: 100%;
3125
+ }
3126
+ /* Object-array widget: chip list + add button */
3127
+ .cn-advanced-form-dialog__object-array[data-v-55998c61] {
3128
+ display: flex;
3129
+ flex-direction: column;
3130
+ gap: 8px;
3131
+ width: 100%;
3132
+ }
3133
+ .cn-advanced-form-dialog__object-array-chips[data-v-55998c61] {
3134
+ display: flex;
3135
+ flex-wrap: wrap;
3136
+ gap: 6px;
3137
+ }
3138
+ .cn-advanced-form-dialog__object-array-chip[data-v-55998c61] {
3139
+ display: inline-flex;
3140
+ align-items: center;
3141
+ gap: 4px;
3142
+ padding: 2px 4px 2px 10px;
3143
+ background: var(--color-background-dark);
3144
+ border: 1px solid var(--color-border);
3145
+ border-radius: var(--border-radius-pill, 14px);
3146
+ color: var(--color-main-text);
3147
+ cursor: pointer;
3148
+ font: inherit;
3149
+ max-width: 240px;
3150
+ }
3151
+ .cn-advanced-form-dialog__object-array-chip[data-v-55998c61]:hover {
3152
+ background: var(--color-background-hover);
3153
+ }
3154
+ .cn-advanced-form-dialog__object-array-chip-label[data-v-55998c61] {
3155
+ overflow: hidden;
3156
+ text-overflow: ellipsis;
3157
+ white-space: nowrap;
3158
+ }
3159
+ .cn-advanced-form-dialog__object-array-chip-remove[data-v-55998c61] {
3160
+ flex-shrink: 0;
3161
+ }
3162
+ .cn-advanced-form-dialog__object-array-add[data-v-55998c61] {
3163
+ align-self: flex-start;
2918
3164
  }
2919
3165
 
2920
3166
 
2921
- .cn-advanced-form-dialog__table-container[data-v-d25a1406] {
3167
+ .cn-advanced-form-dialog__table-container[data-v-0e9d750d] {
2922
3168
  background: var(--color-main-background);
2923
3169
  border-radius: var(--border-radius);
2924
- overflow: hidden;
2925
3170
  box-shadow: 0 2px 4px var(--color-box-shadow);
2926
3171
  border: 1px solid var(--color-border);
2927
3172
  margin-bottom: calc(5 * var(--default-grid-baseline));
2928
3173
  }
2929
- .cn-advanced-form-dialog__table[data-v-d25a1406] {
3174
+ .cn-advanced-form-dialog__table[data-v-0e9d750d] {
2930
3175
  width: 100%;
2931
3176
  border-collapse: collapse;
2932
3177
  background-color: var(--color-main-background);
2933
3178
  }
2934
- .cn-advanced-form-dialog__table th[data-v-d25a1406],
2935
- .cn-advanced-form-dialog__table td[data-v-d25a1406] {
3179
+ .cn-advanced-form-dialog__table th[data-v-0e9d750d],
3180
+ .cn-advanced-form-dialog__table td[data-v-0e9d750d] {
2936
3181
  padding: calc(3 * var(--default-grid-baseline));
2937
3182
  text-align: left;
2938
3183
  border-bottom: 1px solid var(--color-border);
2939
3184
  vertical-align: middle;
2940
3185
  }
2941
- .cn-advanced-form-dialog__table th[data-v-d25a1406] {
3186
+ /* Selected (editing) row: align the constrained label cell to the top of the
3187
+ value cell so tall inputs (textarea, JSON editor) do not visually overflow
3188
+ into the next row. */
3189
+ .cn-advanced-form-dialog__table-row--selected td[data-v-0e9d750d] {
3190
+ vertical-align: top;
3191
+ }
3192
+ .cn-advanced-form-dialog__table th[data-v-0e9d750d] {
2942
3193
  background: var(--color-background-dark);
2943
3194
  font-weight: 500;
2944
3195
  color: var(--color-text-maxcontrast);
2945
3196
  }
2946
- .cn-advanced-form-dialog__table-row[data-v-d25a1406] {
3197
+ .cn-advanced-form-dialog__table-row[data-v-0e9d750d] {
2947
3198
  cursor: pointer;
2948
3199
  transition: background-color 0.2s ease;
2949
3200
  background-color: var(--color-main-background);
2950
3201
  }
2951
- .cn-advanced-form-dialog__table-row[data-v-d25a1406]:hover {
3202
+ .cn-advanced-form-dialog__table-row[data-v-0e9d750d]:hover {
2952
3203
  background-color: var(--color-background-hover);
2953
3204
  }
2954
3205
  /* Active/selected row: light blue; ensure it wins over validation state classes */
2955
- .cn-advanced-form-dialog__table-row.cn-advanced-form-dialog__table-row--selected[data-v-d25a1406],
2956
- .cn-advanced-form-dialog__table-row--selected[data-v-d25a1406]:hover {
3206
+ .cn-advanced-form-dialog__table-row.cn-advanced-form-dialog__table-row--selected[data-v-0e9d750d],
3207
+ .cn-advanced-form-dialog__table-row--selected[data-v-0e9d750d]:hover {
2957
3208
  background-color: var(--color-primary-light);
2958
3209
  box-shadow: inset 3px 0 0 0 var(--color-primary);
2959
3210
  }
2960
- .cn-advanced-form-dialog__table-row--edited[data-v-d25a1406] {
2961
- background-color: var(--color-success-light);
2962
- box-shadow: inset 3px 0 0 0 var(--color-success);
3211
+ .cn-advanced-form-dialog__table-row--edited[data-v-0e9d750d] {
3212
+ background-color: var(--color-warning-light);
2963
3213
  }
2964
- .cn-advanced-form-dialog__table-row--non-editable[data-v-d25a1406] {
3214
+ .cn-advanced-form-dialog__table-row--non-editable[data-v-0e9d750d] {
2965
3215
  background-color: var(--color-background-dark);
2966
3216
  cursor: not-allowed;
2967
3217
  opacity: 0.7;
2968
3218
  }
2969
- .cn-advanced-form-dialog__table-row--non-editable *[data-v-d25a1406] {
3219
+ .cn-advanced-form-dialog__table-row--non-editable *[data-v-0e9d750d] {
2970
3220
  cursor: not-allowed !important;
2971
3221
  }
2972
- .cn-advanced-form-dialog__table-row--valid[data-v-d25a1406] {
2973
- box-shadow: inset 3px 0 0 0 var(--color-success);
2974
- }
2975
- .cn-advanced-form-dialog__table-row--invalid[data-v-d25a1406] {
2976
- background-color: var(--color-error-light);
2977
- box-shadow: inset 3px 0 0 0 var(--color-error);
3222
+ .cn-advanced-form-dialog__table-row--invalid[data-v-0e9d750d] {
3223
+ background-color: var(--color-error-light);
2978
3224
  }
2979
- .cn-advanced-form-dialog__table-row--warning[data-v-d25a1406] {
2980
- background-color: var(--color-warning-light);
2981
- box-shadow: inset 3px 0 0 0 var(--color-warning);
3225
+ .cn-advanced-form-dialog__table-row--warning[data-v-0e9d750d] {
3226
+ background-color: var(--color-warning-light);
2982
3227
  }
2983
- .cn-advanced-form-dialog__table-row--new[data-v-d25a1406] {
2984
- box-shadow: inset 3px 0 0 0 var(--color-primary-element);
2985
- }
2986
- .cn-advanced-form-dialog__table-col-constrained[data-v-d25a1406] {
3228
+ .cn-advanced-form-dialog__table-col-constrained[data-v-0e9d750d] {
2987
3229
  width: 150px;
2988
3230
  max-width: 150px;
2989
3231
  overflow: hidden;
2990
3232
  text-overflow: ellipsis;
2991
3233
  white-space: nowrap;
2992
3234
  }
2993
- .cn-advanced-form-dialog__table-col-expanded[data-v-d25a1406] {
3235
+ .cn-advanced-form-dialog__table-col-expanded[data-v-0e9d750d] {
2994
3236
  width: auto;
2995
3237
  min-width: 200px;
2996
3238
  }
2997
- .cn-advanced-form-dialog__prop-cell[data-v-d25a1406] {
3239
+ .cn-advanced-form-dialog__table-col-actions[data-v-0e9d750d] {
3240
+ width: 56px;
3241
+ text-align: right;
3242
+ white-space: nowrap;
3243
+ }
3244
+ .cn-advanced-form-dialog__prop-cell[data-v-0e9d750d] {
2998
3245
  width: 30%;
2999
- font-weight: 600;
3000
- box-shadow: inset 3px 0 0 0 var(--color-primary);
3246
+ font-weight: 600;
3001
3247
  }
3002
- .cn-advanced-form-dialog__value-cell[data-v-d25a1406] {
3248
+ .cn-advanced-form-dialog__value-cell[data-v-0e9d750d] {
3003
3249
  width: 70%;
3004
3250
  word-break: break-word;
3005
3251
  border-radius: 4px;
3006
3252
  }
3007
- .cn-advanced-form-dialog__prop-cell-content[data-v-d25a1406] {
3253
+ .cn-advanced-form-dialog__value-cell > *[data-v-0e9d750d] {
3254
+ max-width: 100%;
3255
+ }
3256
+ .cn-advanced-form-dialog__prop-cell-content[data-v-0e9d750d] {
3008
3257
  display: flex;
3009
3258
  align-items: center;
3010
3259
  gap: 8px;
3011
3260
  }
3012
- .cn-advanced-form-dialog__validation-icon[data-v-d25a1406] {
3261
+ .cn-advanced-form-dialog__validation-icon[data-v-0e9d750d] {
3013
3262
  flex-shrink: 0;
3014
3263
  }
3015
- .cn-advanced-form-dialog__validation-icon--error[data-v-d25a1406] {
3264
+ .cn-advanced-form-dialog__validation-icon--error[data-v-0e9d750d] {
3016
3265
  color: var(--color-error);
3017
3266
  }
3018
- .cn-advanced-form-dialog__validation-icon--warning[data-v-d25a1406] {
3267
+ .cn-advanced-form-dialog__validation-icon--edited[data-v-0e9d750d] {
3019
3268
  color: var(--color-warning);
3020
3269
  }
3021
- .cn-advanced-form-dialog__validation-icon--lock[data-v-d25a1406] {
3270
+ .cn-advanced-form-dialog__validation-icon--warning[data-v-0e9d750d] {
3271
+ color: var(--color-warning);
3272
+ }
3273
+ .cn-advanced-form-dialog__validation-icon--lock[data-v-0e9d750d] {
3022
3274
  color: var(--color-text-lighter);
3023
3275
  }
3024
- .cn-advanced-form-dialog__validation-icon--new[data-v-d25a1406] {
3276
+ .cn-advanced-form-dialog__validation-icon--new[data-v-0e9d750d] {
3025
3277
  color: var(--color-primary-element);
3278
+ }
3279
+ .cn-advanced-form-dialog__required-indicator[data-v-0e9d750d] {
3280
+ color: var(--color-error-text);
3281
+ font-weight: bold;
3282
+ cursor: help;
3283
+ }
3284
+ .cn-advanced-form-dialog__immutable-badge[data-v-0e9d750d] {
3285
+ display: inline-block;
3286
+ padding: 1px 6px;
3287
+ border-radius: 10px;
3288
+ background: var(--color-background-dark);
3289
+ color: var(--color-text-maxcontrast);
3290
+ font-size: 0.75em;
3291
+ font-weight: 500;
3292
+ text-transform: uppercase;
3293
+ letter-spacing: 0.02em;
3294
+ cursor: help;
3295
+ white-space: nowrap;
3026
3296
  }
3027
3297
 
3028
3298
 
3029
- .cn-advanced-form-dialog__table-container[data-v-70a30bac] {
3299
+ .cn-advanced-form-dialog__table-container[data-v-3fbbdca2] {
3030
3300
  background: var(--color-main-background);
3031
3301
  border-radius: var(--border-radius);
3032
3302
  overflow: hidden;
@@ -3034,35 +3304,35 @@ html[data-cn-ctx-menu] .cn-row-action--destructive {
3034
3304
  border: 1px solid var(--color-border);
3035
3305
  margin-bottom: calc(5 * var(--default-grid-baseline));
3036
3306
  }
3037
- .cn-advanced-form-dialog__table[data-v-70a30bac] {
3307
+ .cn-advanced-form-dialog__table[data-v-3fbbdca2] {
3038
3308
  width: 100%;
3039
3309
  border-collapse: collapse;
3040
3310
  background-color: var(--color-main-background);
3041
3311
  }
3042
- .cn-advanced-form-dialog__table th[data-v-70a30bac],
3043
- .cn-advanced-form-dialog__table td[data-v-70a30bac] {
3312
+ .cn-advanced-form-dialog__table th[data-v-3fbbdca2],
3313
+ .cn-advanced-form-dialog__table td[data-v-3fbbdca2] {
3044
3314
  padding: calc(3 * var(--default-grid-baseline));
3045
3315
  text-align: left;
3046
3316
  border-bottom: 1px solid var(--color-border);
3047
3317
  vertical-align: middle;
3048
3318
  }
3049
- .cn-advanced-form-dialog__table th[data-v-70a30bac] {
3319
+ .cn-advanced-form-dialog__table th[data-v-3fbbdca2] {
3050
3320
  background: var(--color-background-dark);
3051
3321
  font-weight: 500;
3052
3322
  color: var(--color-text-maxcontrast);
3053
3323
  }
3054
- .cn-advanced-form-dialog__table-row[data-v-70a30bac] {
3324
+ .cn-advanced-form-dialog__table-row[data-v-3fbbdca2] {
3055
3325
  cursor: default;
3056
3326
  background-color: var(--color-main-background);
3057
3327
  }
3058
- .cn-advanced-form-dialog__table-col-constrained[data-v-70a30bac] {
3328
+ .cn-advanced-form-dialog__table-col-constrained[data-v-3fbbdca2] {
3059
3329
  width: 150px;
3060
3330
  max-width: 150px;
3061
3331
  overflow: hidden;
3062
3332
  text-overflow: ellipsis;
3063
3333
  white-space: nowrap;
3064
3334
  }
3065
- .cn-advanced-form-dialog__table-col-expanded[data-v-70a30bac] {
3335
+ .cn-advanced-form-dialog__table-col-expanded[data-v-3fbbdca2] {
3066
3336
  width: auto;
3067
3337
  min-width: 200px;
3068
3338
  }
@@ -3177,61 +3447,61 @@ html[data-cn-ctx-menu] .cn-row-action--destructive {
3177
3447
  }
3178
3448
 
3179
3449
 
3180
- .cn-advanced-form-dialog__form[data-v-56dc256b] {
3450
+ .cn-advanced-form-dialog__form[data-v-b2ee3d32] {
3181
3451
  display: flex;
3182
3452
  flex-direction: column;
3183
3453
  gap: 8px;
3184
3454
  }
3185
- .cn-advanced-form-dialog__tabs[data-v-56dc256b] {
3455
+ .cn-advanced-form-dialog__tabs[data-v-b2ee3d32] {
3186
3456
  display: flex;
3187
3457
  flex-direction: column;
3188
3458
  gap: 12px;
3189
3459
  }
3190
3460
  /* Bootstrap-Vue tab styling to match ViewObject */
3191
- .tabContainer[data-v-56dc256b] {
3461
+ .tabContainer[data-v-b2ee3d32] {
3192
3462
  margin-top: 20px;
3193
3463
  }
3194
- .tabContainer > * ul > li[data-v-56dc256b] {
3464
+ .tabContainer > * ul > li[data-v-b2ee3d32] {
3195
3465
  display: flex;
3196
3466
  flex: 1;
3197
3467
  }
3198
- .tabContainer > * ul > li[data-v-56dc256b]:hover {
3468
+ .tabContainer > * ul > li[data-v-b2ee3d32]:hover {
3199
3469
  background-color: var(--color-background-hover);
3200
3470
  }
3201
- .tabContainer > * ul > li > a[data-v-56dc256b] {
3471
+ .tabContainer > * ul > li > a[data-v-b2ee3d32] {
3202
3472
  flex: 1;
3203
3473
  text-align: center;
3204
3474
  }
3205
- .tabContainer > * ul > li > .active[data-v-56dc256b] {
3475
+ .tabContainer > * ul > li > .active[data-v-b2ee3d32] {
3206
3476
  background: transparent !important;
3207
3477
  color: var(--color-main-text) !important;
3208
3478
  border-bottom: var(--default-grid-baseline) solid var(--color-primary-element) !important;
3209
3479
  }
3210
- .tabContainer > * ul[role="tablist"][data-v-56dc256b] {
3480
+ .tabContainer > * ul[role="tablist"][data-v-b2ee3d32] {
3211
3481
  display: flex;
3212
3482
  margin: 10px 8px 0 8px;
3213
3483
  justify-content: space-between;
3214
3484
  border-bottom: 1px solid var(--color-border);
3215
3485
  }
3216
- .tabContainer > * ul[role="tablist"] > * a[role="tab"][data-v-56dc256b] {
3486
+ .tabContainer > * ul[role="tablist"] > * a[role="tab"][data-v-b2ee3d32] {
3217
3487
  padding-inline-start: 10px;
3218
3488
  padding-inline-end: 10px;
3219
3489
  padding-block-start: 10px;
3220
3490
  padding-block-end: 10px;
3221
3491
  }
3222
- .tabContainer > * div[role="tabpanel"][data-v-56dc256b] {
3492
+ .tabContainer > * div[role="tabpanel"][data-v-b2ee3d32] {
3223
3493
  margin-block-start: var(--OR-margin-10);
3224
3494
  }
3225
- [data-v-56dc256b]:deep(.nav-tabs) {
3495
+ [data-v-b2ee3d32]:deep(.nav-tabs) {
3226
3496
  border-bottom: 1px solid var(--color-border);
3227
3497
  margin-bottom: 15px;
3228
3498
  display: flex;
3229
3499
  }
3230
- [data-v-56dc256b]:deep(.nav-tabs .nav-item) {
3500
+ [data-v-b2ee3d32]:deep(.nav-tabs .nav-item) {
3231
3501
  display: flex;
3232
3502
  flex: 1;
3233
3503
  }
3234
- [data-v-56dc256b]:deep(.nav-tabs .nav-link) {
3504
+ [data-v-b2ee3d32]:deep(.nav-tabs .nav-link) {
3235
3505
  flex: 1;
3236
3506
  text-align: center;
3237
3507
  border: none;
@@ -3239,15 +3509,15 @@ html[data-cn-ctx-menu] .cn-row-action--destructive {
3239
3509
  color: var(--color-text-maxcontrast);
3240
3510
  padding: 8px 16px;
3241
3511
  }
3242
- [data-v-56dc256b]:deep(.nav-tabs .nav-link.active) {
3512
+ [data-v-b2ee3d32]:deep(.nav-tabs .nav-link.active) {
3243
3513
  color: var(--color-main-text);
3244
3514
  border-bottom: 2px solid var(--color-primary);
3245
3515
  background-color: transparent;
3246
3516
  }
3247
- [data-v-56dc256b]:deep(.nav-tabs .nav-link:hover) {
3517
+ [data-v-b2ee3d32]:deep(.nav-tabs .nav-link:hover) {
3248
3518
  border-bottom: 2px solid var(--color-border);
3249
3519
  }
3250
- [data-v-56dc256b]:deep(.tab-content) {
3520
+ [data-v-b2ee3d32]:deep(.tab-content) {
3251
3521
  padding: 16px;
3252
3522
  background-color: var(--color-main-background);
3253
3523
  }
@@ -3612,11 +3882,11 @@ html[data-cn-ctx-menu] .cn-row-action--destructive {
3612
3882
  }
3613
3883
 
3614
3884
 
3615
- .cn-dashboard-page[data-v-9c0c8868] {
3885
+ .cn-dashboard-page[data-v-5b5cafec] {
3616
3886
  padding: 20px;
3617
3887
  max-width: 1400px;
3618
3888
  }
3619
- .cn-dashboard-page__header[data-v-9c0c8868] {
3889
+ .cn-dashboard-page__header[data-v-5b5cafec] {
3620
3890
  display: flex;
3621
3891
  justify-content: space-between;
3622
3892
  align-items: flex-start;
@@ -3624,29 +3894,29 @@ html[data-cn-ctx-menu] .cn-row-action--destructive {
3624
3894
  flex-wrap: wrap;
3625
3895
  gap: 12px;
3626
3896
  }
3627
- .cn-dashboard-page__header-left[data-v-9c0c8868] {
3897
+ .cn-dashboard-page__header-left[data-v-5b5cafec] {
3628
3898
  min-width: 0;
3629
3899
  }
3630
- .cn-dashboard-page__title[data-v-9c0c8868] {
3900
+ .cn-dashboard-page__title[data-v-5b5cafec] {
3631
3901
  margin: 0;
3632
3902
  font-size: 20px;
3633
3903
  font-weight: 700;
3634
3904
  }
3635
- .cn-dashboard-page__description[data-v-9c0c8868] {
3905
+ .cn-dashboard-page__description[data-v-5b5cafec] {
3636
3906
  margin: 4px 0 0;
3637
3907
  font-size: 14px;
3638
3908
  color: var(--color-text-maxcontrast);
3639
3909
  }
3640
- .cn-dashboard-page__header-actions[data-v-9c0c8868] {
3910
+ .cn-dashboard-page__header-actions[data-v-5b5cafec] {
3641
3911
  display: flex;
3642
3912
  gap: 8px;
3643
3913
  flex-wrap: wrap;
3644
3914
  flex-shrink: 0;
3645
3915
  }
3646
- .cn-dashboard-page__empty[data-v-9c0c8868] {
3916
+ .cn-dashboard-page__empty[data-v-5b5cafec] {
3647
3917
  padding: 60px 20px;
3648
3918
  }
3649
- .cn-dashboard-page__unknown[data-v-9c0c8868] {
3919
+ .cn-dashboard-page__unknown[data-v-5b5cafec] {
3650
3920
  display: flex;
3651
3921
  align-items: center;
3652
3922
  justify-content: center;
@@ -4130,6 +4400,11 @@ html[data-cn-ctx-menu] .cn-row-action--destructive {
4130
4400
 
4131
4401
 
4132
4402
 
4403
+
4404
+
4405
+
4406
+
4407
+
4133
4408
 
4134
4409
 
4135
4410
 
@@ -4138,74 +4413,74 @@ html[data-cn-ctx-menu] .cn-row-action--destructive {
4138
4413
 
4139
4414
 
4140
4415
  /* Result phase container */
4141
- .cn-tabbed-form-dialog__result[data-v-1eb8c90d] {
4416
+ .cn-tabbed-form-dialog__result[data-v-43f5afda] {
4142
4417
  padding: 16px 0;
4143
4418
  }
4144
4419
  /* Form phase container */
4145
- .cn-tabbed-form-dialog__form[data-v-1eb8c90d] {
4420
+ .cn-tabbed-form-dialog__form[data-v-43f5afda] {
4146
4421
  display: flex;
4147
4422
  flex-direction: column;
4148
4423
  gap: 8px;
4149
4424
  }
4150
4425
  /* Tabs wrapper */
4151
- .cn-tabbed-form-dialog__tabs[data-v-1eb8c90d] {
4426
+ .cn-tabbed-form-dialog__tabs[data-v-43f5afda] {
4152
4427
  display: flex;
4153
4428
  flex-direction: column;
4154
4429
  gap: 12px;
4155
4430
  }
4156
4431
  /* Tab content area — also uses .form-editor for compatibility */
4157
- .cn-tabbed-form-dialog__tab-content[data-v-1eb8c90d] {
4432
+ .cn-tabbed-form-dialog__tab-content[data-v-43f5afda] {
4158
4433
  display: flex;
4159
4434
  flex-direction: column;
4160
4435
  gap: 16px;
4161
4436
  padding: 16px 0;
4162
4437
  }
4163
4438
  /* Create another checkbox — push to the left in actions area */
4164
- .cn-tabbed-form-dialog__create-another[data-v-1eb8c90d] {
4439
+ .cn-tabbed-form-dialog__create-another[data-v-43f5afda] {
4165
4440
  margin-right: auto;
4166
4441
  }
4167
4442
  /* Bootstrap-Vue tab container styling */
4168
- .tabContainer > * ul > li[data-v-1eb8c90d] {
4443
+ .tabContainer > * ul > li[data-v-43f5afda] {
4169
4444
  display: flex;
4170
4445
  flex: 1;
4171
4446
  }
4172
- .tabContainer > * ul > li[data-v-1eb8c90d]:hover {
4447
+ .tabContainer > * ul > li[data-v-43f5afda]:hover {
4173
4448
  background-color: var(--color-background-hover);
4174
4449
  }
4175
- .tabContainer > * ul > li > a[data-v-1eb8c90d] {
4450
+ .tabContainer > * ul > li > a[data-v-43f5afda] {
4176
4451
  flex: 1;
4177
4452
  text-align: center;
4178
4453
  }
4179
- .tabContainer > * ul > li > .active[data-v-1eb8c90d] {
4454
+ .tabContainer > * ul > li > .active[data-v-43f5afda] {
4180
4455
  background: transparent !important;
4181
4456
  color: var(--color-main-text) !important;
4182
4457
  border-bottom: var(--default-grid-baseline) solid var(--color-primary-element) !important;
4183
4458
  }
4184
- .tabContainer > * ul[role="tablist"][data-v-1eb8c90d] {
4459
+ .tabContainer > * ul[role="tablist"][data-v-43f5afda] {
4185
4460
  display: flex;
4186
4461
  margin: 10px 8px 0 8px;
4187
4462
  justify-content: space-between;
4188
4463
  border-bottom: 1px solid var(--color-border);
4189
4464
  }
4190
- .tabContainer > * ul[role="tablist"] > * a[role="tab"][data-v-1eb8c90d] {
4465
+ .tabContainer > * ul[role="tablist"] > * a[role="tab"][data-v-43f5afda] {
4191
4466
  padding-inline-start: 10px;
4192
4467
  padding-inline-end: 10px;
4193
4468
  padding-block-start: 10px;
4194
4469
  padding-block-end: 10px;
4195
4470
  }
4196
- .tabContainer > * div[role="tabpanel"][data-v-1eb8c90d] {
4471
+ .tabContainer > * div[role="tabpanel"][data-v-43f5afda] {
4197
4472
  margin-block-start: var(--OR-margin-10);
4198
4473
  }
4199
- [data-v-1eb8c90d]:deep(.nav-tabs) {
4474
+ [data-v-43f5afda]:deep(.nav-tabs) {
4200
4475
  border-bottom: 1px solid var(--color-border);
4201
4476
  margin-bottom: 15px;
4202
4477
  display: flex;
4203
4478
  }
4204
- [data-v-1eb8c90d]:deep(.nav-tabs .nav-item) {
4479
+ [data-v-43f5afda]:deep(.nav-tabs .nav-item) {
4205
4480
  display: flex;
4206
4481
  flex: 1;
4207
4482
  }
4208
- [data-v-1eb8c90d]:deep(.nav-tabs .nav-link) {
4483
+ [data-v-43f5afda]:deep(.nav-tabs .nav-link) {
4209
4484
  flex: 1;
4210
4485
  text-align: center;
4211
4486
  border: none;
@@ -4217,27 +4492,27 @@ html[data-cn-ctx-menu] .cn-row-action--destructive {
4217
4492
  gap: 8px;
4218
4493
  justify-content: center;
4219
4494
  }
4220
- [data-v-1eb8c90d]:deep(.nav-tabs .nav-link.active) {
4495
+ [data-v-43f5afda]:deep(.nav-tabs .nav-link.active) {
4221
4496
  color: var(--color-main-text);
4222
4497
  border-bottom: 2px solid var(--color-primary);
4223
4498
  background-color: transparent;
4224
4499
  }
4225
- [data-v-1eb8c90d]:deep(.nav-tabs .nav-link:hover) {
4500
+ [data-v-43f5afda]:deep(.nav-tabs .nav-link:hover) {
4226
4501
  border-bottom: 2px solid var(--color-border);
4227
4502
  }
4228
- [data-v-1eb8c90d]:deep(.nav-tabs .nav-link.disabled) {
4503
+ [data-v-43f5afda]:deep(.nav-tabs .nav-link.disabled) {
4229
4504
  cursor: not-allowed;
4230
4505
  opacity: 0.5;
4231
4506
  color: var(--color-text-maxcontrast);
4232
4507
  pointer-events: auto;
4233
4508
  }
4234
- [data-v-1eb8c90d]:deep(.nav-tabs .nav-link.disabled *) {
4509
+ [data-v-43f5afda]:deep(.nav-tabs .nav-link.disabled *) {
4235
4510
  cursor: not-allowed;
4236
4511
  }
4237
- [data-v-1eb8c90d]:deep(.nav-tabs .nav-link.disabled:hover) {
4512
+ [data-v-43f5afda]:deep(.nav-tabs .nav-link.disabled:hover) {
4238
4513
  border-bottom: 2px solid transparent;
4239
4514
  }
4240
- [data-v-1eb8c90d]:deep(.tab-content) {
4515
+ [data-v-43f5afda]:deep(.tab-content) {
4241
4516
  padding: 16px;
4242
4517
  background-color: var(--color-main-background);
4243
4518
  }
@@ -5848,3 +6123,347 @@ to { opacity: 1; max-height: 600px;
5848
6123
  word-break: break-all;
5849
6124
  margin: 0;
5850
6125
  }
6126
+
6127
+
6128
+ .cn-page-renderer {
6129
+ display: contents;
6130
+ }
6131
+
6132
+
6133
+
6134
+
6135
+
6136
+
6137
+
6138
+
6139
+
6140
+
6141
+
6142
+
6143
+
6144
+
6145
+
6146
+
6147
+
6148
+
6149
+
6150
+
6151
+
6152
+
6153
+
6154
+
6155
+
6156
+
6157
+
6158
+
6159
+
6160
+
6161
+
6162
+
6163
+
6164
+
6165
+
6166
+
6167
+
6168
+
6169
+
6170
+
6171
+
6172
+
6173
+
6174
+
6175
+
6176
+
6177
+
6178
+
6179
+
6180
+
6181
+
6182
+
6183
+
6184
+
6185
+
6186
+
6187
+
6188
+
6189
+
6190
+
6191
+
6192
+
6193
+
6194
+
6195
+
6196
+
6197
+
6198
+
6199
+
6200
+
6201
+
6202
+
6203
+
6204
+
6205
+
6206
+
6207
+
6208
+
6209
+
6210
+
6211
+
6212
+
6213
+
6214
+
6215
+
6216
+
6217
+
6218
+
6219
+
6220
+
6221
+
6222
+
6223
+
6224
+
6225
+
6226
+
6227
+
6228
+
6229
+
6230
+
6231
+
6232
+
6233
+
6234
+
6235
+
6236
+
6237
+
6238
+
6239
+
6240
+
6241
+
6242
+
6243
+
6244
+
6245
+
6246
+
6247
+
6248
+
6249
+
6250
+
6251
+
6252
+
6253
+
6254
+
6255
+
6256
+
6257
+
6258
+
6259
+
6260
+
6261
+
6262
+
6263
+
6264
+
6265
+
6266
+
6267
+
6268
+
6269
+
6270
+
6271
+
6272
+
6273
+
6274
+
6275
+
6276
+
6277
+
6278
+
6279
+
6280
+
6281
+
6282
+
6283
+
6284
+
6285
+
6286
+
6287
+
6288
+
6289
+
6290
+
6291
+
6292
+
6293
+
6294
+
6295
+
6296
+
6297
+
6298
+
6299
+
6300
+
6301
+
6302
+
6303
+
6304
+
6305
+
6306
+
6307
+
6308
+
6309
+
6310
+
6311
+
6312
+
6313
+
6314
+
6315
+
6316
+
6317
+
6318
+
6319
+
6320
+
6321
+
6322
+
6323
+
6324
+
6325
+
6326
+
6327
+
6328
+
6329
+
6330
+
6331
+
6332
+
6333
+
6334
+
6335
+
6336
+
6337
+
6338
+
6339
+
6340
+
6341
+
6342
+
6343
+
6344
+
6345
+
6346
+
6347
+
6348
+
6349
+
6350
+
6351
+
6352
+
6353
+
6354
+
6355
+
6356
+
6357
+
6358
+
6359
+
6360
+
6361
+
6362
+
6363
+
6364
+
6365
+
6366
+ /*
6367
+ * The legacy `icon-*` classes in Nextcloud render a background-image
6368
+ * with a hardcoded dark fill, so they stay grey when an entry becomes
6369
+ * active (text turns white against the primary-element background).
6370
+ * Force the icon to white in the active state to match the label.
6371
+ * Only applies when the icon is provided via the `icon` prop (CSS
6372
+ * class) — items using a `<template #icon>` MDI component already
6373
+ * inherit `currentColor`.
6374
+ */
6375
+ .app-navigation-entry.active .app-navigation-entry-icon[class*="icon-"] {
6376
+ filter: brightness(0) invert(1);
6377
+ }
6378
+ /*
6379
+ * Footer-list (section: "settings" items rendered in NcAppNavigation's
6380
+ * `#footer` slot). Reset list defaults so the entries align with the
6381
+ * main list, and add a thin separator above the group so it visually
6382
+ * detaches from the scrollable list when the two meet.
6383
+ *
6384
+ * NcAppNavigation's scoped style targets `.app-navigation__content >
6385
+ * ul` with `overflow-y: auto` + flex padding, and Vue 2 propagates the
6386
+ * parent's data-v attribute onto slot-root elements — so without these
6387
+ * overrides the footer list renders its own scrollbar even though the
6388
+ * footer area has plenty of room. The `!important` flags force-beat
6389
+ * the parent rule's specificity (which includes the data-v attribute).
6390
+ */
6391
+ .cn-app-nav__footer-list {
6392
+ list-style: none;
6393
+ margin: 0;
6394
+ padding: 0 !important;
6395
+ border-top: 1px solid var(--color-border);
6396
+ overflow: visible !important;
6397
+ flex: 0 0 auto;
6398
+ }
6399
+
6400
+
6401
+ .cn-app-loading {
6402
+ display: flex;
6403
+ align-items: center;
6404
+ justify-content: center;
6405
+ width: 100%;
6406
+ min-height: 100vh;
6407
+ background: var(--color-main-background);
6408
+ color: var(--color-main-text);
6409
+ }
6410
+ .cn-app-loading__inner {
6411
+ display: flex;
6412
+ flex-direction: column;
6413
+ align-items: center;
6414
+ gap: calc(2 * var(--default-grid-baseline));
6415
+ }
6416
+ .cn-app-loading__logo {
6417
+ max-width: 96px;
6418
+ max-height: 96px;
6419
+ }
6420
+ .cn-app-loading__message {
6421
+ margin: 0;
6422
+ color: var(--color-text-maxcontrast);
6423
+ font-size: var(--default-font-size);
6424
+ }
6425
+
6426
+
6427
+ .cn-dependency-missing {
6428
+ display: flex;
6429
+ align-items: center;
6430
+ justify-content: center;
6431
+ width: 100%;
6432
+ min-height: 100vh;
6433
+ background: var(--color-main-background);
6434
+ color: var(--color-main-text);
6435
+ }
6436
+ .cn-dependency-missing__inner {
6437
+ max-width: 600px;
6438
+ padding: calc(4 * var(--default-grid-baseline));
6439
+ }
6440
+ .cn-dependency-missing__heading {
6441
+ margin: 0 0 calc(2 * var(--default-grid-baseline));
6442
+ font-size: 1.5em;
6443
+ }
6444
+ .cn-dependency-missing__intro {
6445
+ margin: 0 0 calc(3 * var(--default-grid-baseline));
6446
+ color: var(--color-text-maxcontrast);
6447
+ }
6448
+ .cn-dependency-missing__list {
6449
+ margin: 0;
6450
+ padding: 0;
6451
+ list-style: none;
6452
+ }
6453
+ .cn-dependency-missing__item {
6454
+ display: flex;
6455
+ align-items: center;
6456
+ justify-content: space-between;
6457
+ padding: calc(2 * var(--default-grid-baseline)) 0;
6458
+ border-bottom: 1px solid var(--color-border);
6459
+ }
6460
+ .cn-dependency-missing__item:last-child {
6461
+ border-bottom: 0;
6462
+ }
6463
+ .cn-dependency-missing__item-name {
6464
+ font-weight: bold;
6465
+ }
6466
+ .cn-dependency-missing__item-link {
6467
+ color: var(--color-primary-element);
6468
+ text-decoration: underline;
6469
+ }