@conduction/nextcloud-vue 0.1.0-beta.1 → 0.1.0-beta.10

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 (197) hide show
  1. package/README.md +226 -0
  2. package/css/index.css +5 -0
  3. package/dist/nextcloud-vue.cjs +67614 -0
  4. package/dist/nextcloud-vue.cjs.js +76311 -5905
  5. package/dist/nextcloud-vue.cjs.js.map +1 -1
  6. package/dist/nextcloud-vue.cjs.map +1 -0
  7. package/dist/nextcloud-vue.css +3279 -203
  8. package/dist/nextcloud-vue.esm.js +76240 -5882
  9. package/dist/nextcloud-vue.esm.js.map +1 -1
  10. package/package.json +89 -63
  11. package/src/components/CnActionsBar/CnActionsBar.vue +254 -0
  12. package/src/components/CnActionsBar/index.js +1 -0
  13. package/src/components/CnAdvancedFormDialog/CnAdvancedFormDialog.vue +569 -0
  14. package/src/components/CnAdvancedFormDialog/CnDataTab.vue +217 -0
  15. package/src/components/CnAdvancedFormDialog/CnMetadataTab.vue +121 -0
  16. package/src/components/CnAdvancedFormDialog/CnPropertiesTab.vue +422 -0
  17. package/src/components/CnAdvancedFormDialog/CnPropertyValueCell.vue +247 -0
  18. package/src/components/CnAdvancedFormDialog/index.js +1 -0
  19. package/src/components/CnCard/CnCard.vue +415 -0
  20. package/src/components/CnCard/index.js +1 -0
  21. package/src/components/CnCardGrid/CnCardGrid.vue +23 -20
  22. package/src/components/CnCardGrid/index.js +1 -1
  23. package/src/components/CnCellRenderer/index.js +1 -1
  24. package/src/components/CnChartWidget/CnChartWidget.vue +318 -0
  25. package/src/components/CnChartWidget/index.js +1 -0
  26. package/src/components/CnConfigurationCard/index.js +1 -1
  27. package/src/components/CnContextMenu/CnContextMenu.vue +142 -0
  28. package/src/components/CnContextMenu/index.js +1 -0
  29. package/src/components/CnCopyDialog/CnCopyDialog.vue +257 -0
  30. package/src/components/CnCopyDialog/index.js +1 -0
  31. package/src/components/CnDashboardGrid/CnDashboardGrid.vue +229 -0
  32. package/src/components/CnDashboardGrid/index.js +1 -0
  33. package/src/components/CnDashboardPage/CnDashboardPage.vue +396 -0
  34. package/src/components/CnDashboardPage/index.js +1 -0
  35. package/src/components/CnDataTable/CnDataTable.vue +24 -16
  36. package/src/components/CnDataTable/index.js +1 -1
  37. package/src/components/CnDeleteDialog/CnDeleteDialog.vue +177 -0
  38. package/src/components/CnDeleteDialog/index.js +1 -0
  39. package/src/components/CnDetailCard/CnDetailCard.vue +225 -0
  40. package/src/components/CnDetailCard/index.js +1 -0
  41. package/src/components/CnDetailGrid/CnDetailGrid.vue +254 -0
  42. package/src/components/CnDetailGrid/index.js +1 -0
  43. package/src/components/CnDetailPage/CnDetailPage.vue +431 -0
  44. package/src/components/CnDetailPage/index.js +1 -0
  45. package/src/components/CnFacetSidebar/CnFacetSidebar.vue +12 -2
  46. package/src/components/CnFacetSidebar/index.js +1 -1
  47. package/src/components/CnFilterBar/index.js +1 -1
  48. package/src/components/CnFormDialog/CnFormDialog.vue +934 -0
  49. package/src/components/CnFormDialog/index.js +1 -0
  50. package/src/components/CnIcon/CnIcon.vue +89 -0
  51. package/src/components/CnIcon/index.js +1 -0
  52. package/src/components/CnIndexPage/CnIndexPage.vue +589 -291
  53. package/src/components/CnIndexPage/index.js +1 -1
  54. package/src/components/CnIndexSidebar/CnIndexSidebar.vue +535 -0
  55. package/src/components/CnIndexSidebar/index.js +1 -0
  56. package/src/components/CnInfoWidget/CnInfoWidget.vue +219 -0
  57. package/src/components/CnInfoWidget/index.js +1 -0
  58. package/src/components/CnItemCard/CnItemCard.vue +134 -0
  59. package/src/components/CnItemCard/index.js +1 -0
  60. package/src/components/CnJsonViewer/CnJsonViewer.vue +283 -0
  61. package/src/components/CnJsonViewer/index.js +1 -0
  62. package/src/components/CnKpiGrid/CnKpiGrid.vue +5 -1
  63. package/src/components/CnKpiGrid/index.js +1 -1
  64. package/src/components/CnMassActionBar/CnMassActionBar.vue +6 -5
  65. package/src/components/CnMassActionBar/index.js +1 -1
  66. package/src/components/CnMassCopyDialog/CnMassCopyDialog.vue +16 -9
  67. package/src/components/CnMassCopyDialog/index.js +1 -1
  68. package/src/components/CnMassDeleteDialog/CnMassDeleteDialog.vue +16 -9
  69. package/src/components/CnMassDeleteDialog/index.js +1 -1
  70. package/src/components/CnMassExportDialog/CnMassExportDialog.vue +8 -7
  71. package/src/components/CnMassExportDialog/index.js +1 -1
  72. package/src/components/CnMassImportDialog/CnMassImportDialog.vue +20 -17
  73. package/src/components/CnMassImportDialog/index.js +1 -1
  74. package/src/components/CnNoteCard/CnNoteCard.vue +149 -0
  75. package/src/components/CnNoteCard/index.js +1 -0
  76. package/src/components/CnNotesCard/CnNotesCard.vue +415 -0
  77. package/src/components/CnNotesCard/index.js +1 -0
  78. package/src/components/CnObjectCard/CnObjectCard.vue +3 -1
  79. package/src/components/CnObjectCard/index.js +1 -1
  80. package/src/components/CnObjectDataWidget/CnObjectDataWidget.vue +853 -0
  81. package/src/components/CnObjectDataWidget/index.js +1 -0
  82. package/src/components/CnObjectMetadataWidget/CnObjectMetadataWidget.vue +288 -0
  83. package/src/components/CnObjectMetadataWidget/index.js +1 -0
  84. package/src/components/CnObjectSidebar/CnAuditTrailTab.vue +368 -0
  85. package/src/components/CnObjectSidebar/CnFilesTab.vue +286 -0
  86. package/src/components/CnObjectSidebar/CnNotesTab.vue +249 -0
  87. package/src/components/CnObjectSidebar/CnObjectSidebar.vue +254 -0
  88. package/src/components/CnObjectSidebar/CnTagsTab.vue +258 -0
  89. package/src/components/CnObjectSidebar/CnTasksTab.vue +482 -0
  90. package/src/components/CnObjectSidebar/index.js +6 -0
  91. package/src/components/CnPageHeader/CnPageHeader.vue +61 -0
  92. package/src/components/CnPageHeader/index.js +1 -0
  93. package/src/components/CnPagination/CnPagination.vue +7 -6
  94. package/src/components/CnPagination/index.js +1 -1
  95. package/src/components/CnProgressBar/CnProgressBar.vue +262 -0
  96. package/src/components/CnProgressBar/index.js +1 -0
  97. package/src/components/CnRegisterMapping/CnRegisterMapping.vue +792 -0
  98. package/src/components/CnRegisterMapping/index.js +1 -0
  99. package/src/components/CnRowActions/CnRowActions.vue +25 -3
  100. package/src/components/CnRowActions/index.js +1 -1
  101. package/src/components/CnSchemaFormDialog/CnSchemaConfigurationTab.vue +226 -0
  102. package/src/components/CnSchemaFormDialog/CnSchemaFormDialog.vue +787 -0
  103. package/src/components/CnSchemaFormDialog/CnSchemaPropertiesTab.vue +305 -0
  104. package/src/components/CnSchemaFormDialog/CnSchemaPropertyActions.vue +1398 -0
  105. package/src/components/CnSchemaFormDialog/CnSchemaSecurityTab.vue +236 -0
  106. package/src/components/CnSchemaFormDialog/index.js +1 -0
  107. package/src/components/CnSettingsCard/index.js +1 -1
  108. package/src/components/CnSettingsSection/index.js +1 -1
  109. package/src/components/CnStatsBlock/CnStatsBlock.vue +89 -19
  110. package/src/components/CnStatsBlock/index.js +1 -1
  111. package/src/components/CnStatsPanel/CnStatsPanel.vue +320 -0
  112. package/src/components/CnStatsPanel/index.js +1 -0
  113. package/src/components/CnStatusBadge/CnStatusBadge.vue +15 -2
  114. package/src/components/CnStatusBadge/index.js +1 -1
  115. package/src/components/CnTabbedFormDialog/CnTabbedFormDialog.vue +544 -0
  116. package/src/components/CnTabbedFormDialog/index.js +1 -0
  117. package/src/components/CnTableWidget/CnTableWidget.vue +332 -0
  118. package/src/components/CnTableWidget/index.js +1 -0
  119. package/src/components/CnTasksCard/CnTasksCard.vue +373 -0
  120. package/src/components/CnTasksCard/index.js +1 -0
  121. package/src/components/CnTileWidget/CnTileWidget.vue +159 -0
  122. package/src/components/CnTileWidget/index.js +1 -0
  123. package/src/components/CnTimelineStages/CnTimelineStages.vue +292 -0
  124. package/src/components/CnTimelineStages/index.js +1 -0
  125. package/src/components/CnUserActionMenu/CnUserActionMenu.vue +435 -0
  126. package/src/components/CnUserActionMenu/index.js +1 -0
  127. package/src/components/CnVersionInfoCard/index.js +1 -1
  128. package/src/components/CnWidgetRenderer/CnWidgetRenderer.vue +180 -0
  129. package/src/components/CnWidgetRenderer/index.js +1 -0
  130. package/src/components/CnWidgetWrapper/CnWidgetWrapper.vue +246 -0
  131. package/src/components/CnWidgetWrapper/index.js +1 -0
  132. package/src/components/index.js +57 -25
  133. package/src/composables/index.js +5 -3
  134. package/src/composables/useContextMenu.js +126 -0
  135. package/src/composables/useDashboardView.js +286 -0
  136. package/src/composables/useDetailView.js +290 -132
  137. package/src/composables/useListView.js +364 -153
  138. package/src/composables/useSubResource.js +142 -142
  139. package/src/constants/metadata.js +30 -0
  140. package/src/css/CnSchemaFormDialog.css +546 -0
  141. package/src/css/__sample_nextcloud_tokens.css +110 -0
  142. package/src/css/actions-bar.css +54 -0
  143. package/src/css/badge.css +83 -51
  144. package/src/css/card.css +129 -128
  145. package/src/css/context-menu.css +20 -0
  146. package/src/css/dashboard.css +70 -0
  147. package/src/css/detail-page.css +235 -0
  148. package/src/css/detail.css +68 -68
  149. package/src/css/index-page.css +44 -0
  150. package/src/css/index-sidebar.css +193 -0
  151. package/src/css/index.css +17 -8
  152. package/src/css/layout.css +90 -90
  153. package/src/css/page-header.css +35 -0
  154. package/src/css/pagination.css +72 -72
  155. package/src/css/table.css +142 -143
  156. package/src/css/timeline-stages.css +220 -0
  157. package/src/css/utilities.css +46 -46
  158. package/src/index.js +91 -50
  159. package/src/mixins/gridLayout.js +118 -0
  160. package/src/store/createCrudStore.js +360 -0
  161. package/src/store/createSubResourcePlugin.js +125 -135
  162. package/src/store/index.js +4 -3
  163. package/src/store/plugins/auditTrails.js +357 -17
  164. package/src/store/plugins/files.js +250 -186
  165. package/src/store/plugins/index.js +7 -4
  166. package/src/store/plugins/lifecycle.js +180 -180
  167. package/src/store/plugins/registerMapping.js +195 -0
  168. package/src/store/plugins/relations.js +68 -68
  169. package/src/store/plugins/search.js +385 -0
  170. package/src/store/plugins/selection.js +104 -0
  171. package/src/store/useObjectStore.js +823 -625
  172. package/src/types/auditTrail.d.ts +32 -32
  173. package/src/types/file.d.ts +23 -23
  174. package/src/types/index.d.ts +35 -35
  175. package/src/types/notification.d.ts +36 -36
  176. package/src/types/object.d.ts +40 -40
  177. package/src/types/organisation.d.ts +41 -41
  178. package/src/types/register.d.ts +25 -25
  179. package/src/types/schema.d.ts +39 -39
  180. package/src/types/shared.d.ts +79 -79
  181. package/src/types/source.d.ts +14 -14
  182. package/src/types/task.d.ts +31 -31
  183. package/src/utils/errors.js +96 -96
  184. package/src/utils/getTheme.js +9 -0
  185. package/src/utils/headers.js +80 -44
  186. package/src/utils/id.js +13 -0
  187. package/src/utils/index.js +4 -3
  188. package/src/utils/schema.js +422 -287
  189. package/src/utils/widgetVisibility.js +162 -0
  190. package/src/components/CnDetailViewLayout/CnDetailViewLayout.vue +0 -88
  191. package/src/components/CnDetailViewLayout/index.js +0 -1
  192. package/src/components/CnEmptyState/CnEmptyState.vue +0 -78
  193. package/src/components/CnEmptyState/index.js +0 -1
  194. package/src/components/CnListViewLayout/CnListViewLayout.vue +0 -80
  195. package/src/components/CnListViewLayout/index.js +0 -1
  196. package/src/components/CnViewModeToggle/CnViewModeToggle.vue +0 -77
  197. package/src/components/CnViewModeToggle/index.js +0 -1
@@ -0,0 +1,235 @@
1
+ /* ========================================
2
+ @conduction/nextcloud-vue — CnDetailPage Styles
3
+ ======================================== */
4
+
5
+ .cn-detail-page {
6
+ margin-inline: auto;
7
+ padding: calc(5 * var(--default-grid-baseline));
8
+ position: relative;
9
+ }
10
+
11
+ /* Header */
12
+ .cn-detail-page__header {
13
+ display: flex;
14
+ justify-content: space-between;
15
+ align-items: center;
16
+ margin-bottom: calc(4 * var(--default-grid-baseline));
17
+ flex-wrap: wrap;
18
+ gap: calc(4 * var(--default-grid-baseline));
19
+ }
20
+
21
+ .cn-detail-page__header-left {
22
+ display: flex;
23
+ align-items: center;
24
+ gap: calc(3 * var(--default-grid-baseline));
25
+ min-width: 0;
26
+ }
27
+
28
+ .cn-detail-page__header-text {
29
+ min-width: 0;
30
+ }
31
+
32
+ .cn-detail-page__icon {
33
+ flex-shrink: 0;
34
+ }
35
+
36
+ .cn-detail-page__title-group {
37
+ display: flex;
38
+ align-items: baseline;
39
+ gap: calc(3 * var(--default-grid-baseline));
40
+ min-width: 0;
41
+ }
42
+
43
+ .cn-detail-page__title {
44
+ margin: 0;
45
+ font-size: 22px;
46
+ font-weight: 700;
47
+ line-height: 1.3;
48
+ color: var(--color-main-text);
49
+ white-space: nowrap;
50
+ overflow: hidden;
51
+ text-overflow: ellipsis;
52
+ }
53
+
54
+ .cn-detail-page__subtitle {
55
+ font-size: 14px;
56
+ color: var(--color-text-maxcontrast);
57
+ white-space: nowrap;
58
+ }
59
+
60
+ .cn-detail-page__description {
61
+ margin: 4px 0 0;
62
+ font-size: var(--default-font-size);
63
+ color: var(--color-text-maxcontrast);
64
+ }
65
+
66
+ .cn-detail-page__header-actions {
67
+ display: flex;
68
+ gap: calc(2 * var(--default-grid-baseline));
69
+ flex-wrap: wrap;
70
+ flex-shrink: 0;
71
+ }
72
+
73
+ /* Loading state */
74
+ .cn-detail-page__loading {
75
+ display: flex;
76
+ align-items: center;
77
+ gap: calc(2 * var(--default-grid-baseline));
78
+ color: var(--color-text-maxcontrast);
79
+ justify-content: center;
80
+ padding-block: calc(8 * var(--default-grid-baseline));
81
+ }
82
+
83
+ /* Error state */
84
+ .cn-detail-page__error {
85
+ padding: calc(8 * var(--default-grid-baseline)) calc(4 * var(--default-grid-baseline));
86
+ }
87
+
88
+ /* Empty state */
89
+ .cn-detail-page__empty {
90
+ padding: calc(8 * var(--default-grid-baseline)) calc(4 * var(--default-grid-baseline));
91
+ }
92
+
93
+ /* Statistics table */
94
+ .cn-detail-page__stats {
95
+ margin-bottom: calc(5 * var(--default-grid-baseline));
96
+ }
97
+
98
+ .cn-detail-page__section-title {
99
+ margin: 0 0 calc(2 * var(--default-grid-baseline));
100
+ font-size: 1.1em;
101
+ font-weight: 600;
102
+ color: var(--color-main-text);
103
+ }
104
+
105
+ .cn-detail-page__stats-table {
106
+ width: 100%;
107
+ border-collapse: collapse;
108
+ background: var(--color-main-background);
109
+ border-radius: var(--border-radius-large);
110
+ overflow: hidden;
111
+ border: 1px solid var(--color-border);
112
+ }
113
+
114
+ .cn-detail-page__stats-table thead th {
115
+ padding: calc(1.5 * var(--default-grid-baseline)) calc(2 * var(--default-grid-baseline));
116
+ text-align: left;
117
+ font-weight: 600;
118
+ font-size: 0.9em;
119
+ color: var(--color-text-maxcontrast);
120
+ background: var(--color-background-hover);
121
+ border-bottom: 1px solid var(--color-border);
122
+ }
123
+
124
+ .cn-detail-page__stats-table tbody td {
125
+ padding: calc(1.5 * var(--default-grid-baseline)) calc(2 * var(--default-grid-baseline));
126
+ border-bottom: 1px solid var(--color-border-dark);
127
+ color: var(--color-main-text);
128
+ font-size: 0.95em;
129
+ }
130
+
131
+ .cn-detail-page__stats-table tbody tr:last-child td {
132
+ border-bottom: none;
133
+ }
134
+
135
+ .cn-detail-page__stats-row--sub td {
136
+ color: var(--color-text-maxcontrast);
137
+ font-size: 0.9em;
138
+ }
139
+
140
+ .cn-detail-page__stats-cell--indented {
141
+ padding-left: calc(5 * var(--default-grid-baseline)) !important;
142
+ }
143
+
144
+ .cn-detail-page__stats-cell--center {
145
+ text-align: center;
146
+ }
147
+
148
+ .cn-detail-page__stats-cell--right {
149
+ text-align: right;
150
+ }
151
+
152
+ /* Body & content */
153
+ .cn-detail-page__body {
154
+ display: flex;
155
+ flex-direction: column;
156
+ gap: calc(5 * var(--default-grid-baseline));
157
+ }
158
+
159
+ .cn-detail-page__content {
160
+ flex: 1;
161
+ min-width: 0;
162
+ display: flex;
163
+ flex-direction: column;
164
+ gap: calc(4 * var(--default-grid-baseline));
165
+ }
166
+
167
+ /* Grid layout mode */
168
+ .cn-detail-page__content--grid {
169
+ display: grid;
170
+ grid-template-columns: repeat(12, 1fr);
171
+ gap: calc(4 * var(--default-grid-baseline));
172
+ }
173
+
174
+ .cn-detail-page__grid-item {
175
+ min-width: 0;
176
+ }
177
+
178
+ .cn-detail-page__widget-title {
179
+ margin: 0 0 calc(2 * var(--default-grid-baseline)) 0;
180
+ font-size: 16px;
181
+ font-weight: 600;
182
+ line-height: 1.4;
183
+ }
184
+
185
+ .cn-detail-page__sections {
186
+ margin-top: calc(4 * var(--default-grid-baseline));
187
+ }
188
+
189
+ /* Sidebar */
190
+ .cn-detail-page__sidebar {
191
+ width: 340px;
192
+ flex-shrink: 0;
193
+ position: sticky;
194
+ top: calc(5 * var(--default-grid-baseline));
195
+ }
196
+
197
+ .cn-detail-page__sidebar-toggle {
198
+ position: fixed;
199
+ right: calc(5 * var(--default-grid-baseline));
200
+ top: 80px;
201
+ z-index: 10;
202
+ }
203
+
204
+ /* Footer */
205
+ .cn-detail-page__footer {
206
+ margin-top: calc(4 * var(--default-grid-baseline));
207
+ padding-top: calc(3 * var(--default-grid-baseline));
208
+ border-top: 1px solid var(--color-border);
209
+ }
210
+
211
+ /* Responsive */
212
+ @media (max-width: 768px) {
213
+ .cn-detail-page {
214
+ padding: calc(3 * var(--default-grid-baseline));
215
+ }
216
+
217
+ .cn-detail-page__header {
218
+ flex-direction: column;
219
+ }
220
+
221
+ .cn-detail-page__header-actions {
222
+ width: 100%;
223
+ }
224
+ }
225
+
226
+ @media (max-width: 600px) {
227
+ .cn-detail-page__content--grid {
228
+ grid-template-columns: 1fr;
229
+ }
230
+
231
+ .cn-detail-page__content--grid .cn-detail-page__grid-item {
232
+ grid-column: 1 / -1 !important;
233
+ grid-row: auto !important;
234
+ }
235
+ }
@@ -1,68 +1,68 @@
1
- /* ========================================
2
- @conduction/nextcloud-vue — Detail Styles
3
- ======================================== */
4
-
5
- /* Detail Grid (metadata display) */
6
- .cn-detail-grid {
7
- display: grid;
8
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
9
- gap: 16px;
10
- margin-bottom: 20px;
11
- }
12
-
13
- .cn-detail-item {
14
- display: flex;
15
- flex-direction: column;
16
- gap: 4px;
17
- padding: 8px 12px;
18
- border-left: 3px solid var(--color-primary-element);
19
- background: var(--color-background-hover);
20
- border-radius: 0 var(--border-radius) var(--border-radius) 0;
21
- }
22
-
23
- .cn-detail-item__label {
24
- font-size: 0.85em;
25
- color: var(--color-text-maxcontrast);
26
- font-weight: 500;
27
- }
28
-
29
- .cn-detail-item__value {
30
- font-size: 1em;
31
- color: var(--color-main-text);
32
- word-break: break-word;
33
- }
34
-
35
- /* Detail Layout */
36
- .cn-detail-layout {
37
- max-width: 1000px;
38
- padding: 20px;
39
- }
40
-
41
- .cn-detail-layout__header {
42
- display: flex;
43
- align-items: center;
44
- gap: 12px;
45
- margin-bottom: 24px;
46
- }
47
-
48
- .cn-detail-layout__title {
49
- flex: 1;
50
- margin: 0;
51
- font-size: 1.5em;
52
- color: var(--color-main-text);
53
- }
54
-
55
- .cn-detail-layout__actions {
56
- display: flex;
57
- gap: 8px;
58
- flex-shrink: 0;
59
- }
60
-
61
- .cn-detail-layout__content {
62
- margin-top: 16px;
63
- }
64
-
65
- /* Backwards compatibility aliases */
66
- .detail-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 16px; margin-bottom: 20px; }
67
- .detail-item { display: flex; flex-direction: column; gap: 4px; padding: 8px 12px; border-left: 3px solid var(--color-primary-element); background: var(--color-background-hover); border-radius: 0 var(--border-radius) var(--border-radius) 0; }
68
- .detailContainer { margin-block-start: 20px; margin-inline-start: 20px; margin-inline-end: 20px; }
1
+ /* ========================================
2
+ @conduction/nextcloud-vue — Detail Grid & Layout Utility Styles
3
+ ======================================== */
4
+
5
+ /* Detail Grid (metadata display) */
6
+ .cn-detail-grid {
7
+ display: grid;
8
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
9
+ gap: calc(4 * var(--default-grid-baseline));
10
+ margin-bottom: calc(5 * var(--default-grid-baseline));
11
+ }
12
+
13
+ .cn-detail-item {
14
+ display: flex;
15
+ flex-direction: column;
16
+ gap: var(--default-grid-baseline);
17
+ padding: calc(2 * var(--default-grid-baseline)) calc(3 * var(--default-grid-baseline));
18
+ border-left: 3px solid var(--color-primary-element);
19
+ background: var(--color-background-hover);
20
+ border-radius: 0 var(--border-radius) var(--border-radius) 0;
21
+ }
22
+
23
+ .cn-detail-item__label {
24
+ font-size: 0.85em;
25
+ color: var(--color-text-maxcontrast);
26
+ font-weight: 500;
27
+ }
28
+
29
+ .cn-detail-item__value {
30
+ font-size: 1em;
31
+ color: var(--color-main-text);
32
+ word-break: break-word;
33
+ }
34
+
35
+ /* Detail Layout */
36
+ .cn-detail-layout {
37
+ max-width: 1000px;
38
+ padding: calc(5 * var(--default-grid-baseline));
39
+ }
40
+
41
+ .cn-detail-layout__header {
42
+ display: flex;
43
+ align-items: center;
44
+ gap: calc(3 * var(--default-grid-baseline));
45
+ margin-bottom: calc(6 * var(--default-grid-baseline));
46
+ }
47
+
48
+ .cn-detail-layout__title {
49
+ flex: 1;
50
+ margin: 0;
51
+ font-size: 1.5em;
52
+ color: var(--color-main-text);
53
+ }
54
+
55
+ .cn-detail-layout__actions {
56
+ display: flex;
57
+ gap: calc(2 * var(--default-grid-baseline));
58
+ flex-shrink: 0;
59
+ }
60
+
61
+ .cn-detail-layout__content {
62
+ margin-top: calc(4 * var(--default-grid-baseline));
63
+ }
64
+
65
+ /* Backwards compatibility aliases */
66
+ .detail-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: calc(4 * var(--default-grid-baseline)); margin-bottom: calc(5 * var(--default-grid-baseline)); }
67
+ .detail-item { display: flex; flex-direction: column; gap: var(--default-grid-baseline); padding: calc(2 * var(--default-grid-baseline)) calc(3 * var(--default-grid-baseline)); border-left: 3px solid var(--color-primary-element); background: var(--color-background-hover); border-radius: 0 var(--border-radius) var(--border-radius) 0; }
68
+ .detailContainer { margin-block-start: calc(5 * var(--default-grid-baseline)); margin-inline-start: calc(5 * var(--default-grid-baseline)); margin-inline-end: calc(5 * var(--default-grid-baseline)); }
@@ -0,0 +1,44 @@
1
+ /* CnIndexPage — Index page layout styles */
2
+ /* Header styles: see page-header.css (CnPageHeader) */
3
+ /* Actions bar styles: see actions-bar.css (CnActionsBar) */
4
+
5
+ .cn-index-page {
6
+ display: flex;
7
+ flex-direction: column;
8
+ height: 100%;
9
+ min-height: 0;
10
+ padding: calc(5 * var(--default-grid-baseline));
11
+ }
12
+
13
+ .cn-index-page__below-header {
14
+ margin-bottom: calc(4 * var(--default-grid-baseline));
15
+ }
16
+
17
+ /* Body layout */
18
+ .cn-index-page__body {
19
+ display: flex;
20
+ flex: 1;
21
+ min-height: 0;
22
+ }
23
+
24
+ .cn-index-page__main {
25
+ flex: 1;
26
+ min-width: 0;
27
+ min-height: 0;
28
+ overflow-y: auto;
29
+ }
30
+
31
+ .cn-index-page__loading {
32
+ display: flex;
33
+ justify-content: center;
34
+ padding: calc(15 * var(--default-grid-baseline));
35
+ }
36
+
37
+ .cn-index-page__empty {
38
+ padding: calc(10 * var(--default-grid-baseline)) calc(5 * var(--default-grid-baseline));
39
+ text-align: center;
40
+ }
41
+
42
+ .cn-index-page__pagination {
43
+ margin-top: calc(4 * var(--default-grid-baseline));
44
+ }
@@ -0,0 +1,193 @@
1
+ /* CnIndexSidebar — NcAppSidebar wrapper styles */
2
+
3
+ /* Tab content: limit height to container so overflow shows a scrollbar */
4
+ .cn-index-sidebar__tab-content {
5
+ max-height: 100%;
6
+ min-height: 0;
7
+ overflow-y: auto;
8
+ }
9
+
10
+ /* Sidebar header icon (compact mode figure area) */
11
+ .cn-index-sidebar__header-icon {
12
+ display: flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+ width: 100%;
16
+ height: 100%;
17
+ color: var(--color-primary-element);
18
+ }
19
+
20
+ .cn-index-sidebar__header-emoji {
21
+ font-size: 28px;
22
+ line-height: 1;
23
+ }
24
+
25
+ /* Search tab sections */
26
+ .cn-index-sidebar__section {
27
+ padding: calc(4 * var(--default-grid-baseline));
28
+ }
29
+
30
+ .cn-index-sidebar__section h3 {
31
+ margin: 0 0 calc(3 * var(--default-grid-baseline)) 0;
32
+ font-size: 15px;
33
+ font-weight: 600;
34
+ }
35
+
36
+ .cn-index-sidebar__description {
37
+ color: var(--color-text-maxcontrast);
38
+ font-size: 13px;
39
+ margin: 0 0 calc(4 * var(--default-grid-baseline)) 0;
40
+ }
41
+
42
+ .cn-index-sidebar__filter-group {
43
+ margin-bottom: calc(3 * var(--default-grid-baseline));
44
+ }
45
+
46
+ .cn-index-sidebar__filter-header {
47
+ display: flex;
48
+ align-items: center;
49
+ gap: var(--default-grid-baseline);
50
+ margin-bottom: var(--default-grid-baseline);
51
+ }
52
+
53
+ .cn-index-sidebar__filter-label {
54
+ font-size: 13px;
55
+ font-weight: 500;
56
+ color: var(--color-main-text);
57
+ }
58
+
59
+ .cn-index-sidebar__info-btn {
60
+ min-width: var(--clickable-area-small, 24px) !important;
61
+ min-height: var(--clickable-area-small, 24px) !important;
62
+ width: var(--clickable-area-small, 24px) !important;
63
+ height: var(--clickable-area-small, 24px) !important;
64
+ padding: 0 !important;
65
+ color: var(--color-text-maxcontrast);
66
+ }
67
+
68
+ .cn-index-sidebar__info-btn:hover {
69
+ color: var(--color-primary);
70
+ }
71
+
72
+ .cn-index-sidebar__filter-description {
73
+ padding: calc(2 * var(--default-grid-baseline)) calc(3 * var(--default-grid-baseline));
74
+ max-width: 260px;
75
+ font-size: 13px;
76
+ color: var(--color-main-text);
77
+ margin: 0;
78
+ line-height: var(--default-line-height, 1.4);
79
+ }
80
+
81
+ .cn-index-sidebar__select {
82
+ width: 100%;
83
+ }
84
+
85
+ /* Visually hide NcSelect's rendered label — the filter heading already shows it.
86
+ Keep input-label prop for screen-reader accessibility. */
87
+ .cn-index-sidebar__select label {
88
+ position: absolute;
89
+ width: 1px;
90
+ height: 1px;
91
+ padding: 0;
92
+ margin: -1px;
93
+ overflow: hidden;
94
+ clip: rect(0, 0, 0, 0);
95
+ white-space: nowrap;
96
+ border: 0;
97
+ }
98
+
99
+ .cn-index-sidebar__empty {
100
+ color: var(--color-text-maxcontrast);
101
+ font-size: 13px;
102
+ font-style: italic;
103
+ }
104
+
105
+ /* ── Columns tab ── */
106
+
107
+ .cn-sidebar-columns {
108
+ padding: calc(4 * var(--default-grid-baseline));
109
+ }
110
+
111
+ .cn-sidebar-columns h3 {
112
+ margin-top: 0;
113
+ margin-bottom: calc(2 * var(--default-grid-baseline));
114
+ font-size: 18px;
115
+ font-weight: 600;
116
+ }
117
+
118
+ .cn-sidebar-columns__description {
119
+ color: var(--color-text-maxcontrast);
120
+ margin-bottom: calc(4 * var(--default-grid-baseline));
121
+ font-size: var(--default-font-size);
122
+ }
123
+
124
+ /* Collapsible column group card */
125
+ .cn-sidebar-columns__group {
126
+ margin-bottom: calc(6 * var(--default-grid-baseline));
127
+ }
128
+
129
+ .cn-sidebar-columns__group h4 {
130
+ margin-top: 0;
131
+ margin-bottom: calc(3 * var(--default-grid-baseline));
132
+ font-size: var(--default-font-size);
133
+ font-weight: 600;
134
+ color: var(--color-text-light);
135
+ border-bottom: 1px solid var(--color-border);
136
+ padding-bottom: calc(2 * var(--default-grid-baseline));
137
+ }
138
+
139
+ .cn-sidebar-columns__group .checkbox-radio-switch {
140
+ margin-bottom: calc(2 * var(--default-grid-baseline));
141
+ }
142
+
143
+ .cn-sidebar-columns__group .checkbox-radio-switch__content {
144
+ padding: var(--default-grid-baseline) 0;
145
+ }
146
+
147
+ .cn-sidebar-columns__group--collapsible {
148
+ border: 1px solid var(--color-border);
149
+ border-radius: var(--border-radius);
150
+ padding: 0;
151
+ margin-bottom: calc(3 * var(--default-grid-baseline));
152
+ }
153
+
154
+ .cn-sidebar-columns__group-header {
155
+ display: flex;
156
+ align-items: center;
157
+ gap: calc(2 * var(--default-grid-baseline));
158
+ padding: calc(3 * var(--default-grid-baseline));
159
+ cursor: pointer;
160
+ user-select: none;
161
+ transition: background-color var(--animation-quick) ease;
162
+ }
163
+
164
+ .cn-sidebar-columns__group-header:hover {
165
+ background-color: var(--color-background-hover);
166
+ }
167
+
168
+ .cn-sidebar-columns__group-header h4 {
169
+ margin: 0;
170
+ padding: 0;
171
+ border: none;
172
+ flex: 1;
173
+ color: var(--color-main-text);
174
+ }
175
+
176
+ .cn-sidebar-columns__select-all {
177
+ margin: 0 !important;
178
+ font-size: 12px;
179
+ }
180
+
181
+ .cn-sidebar-columns__group-content {
182
+ padding: calc(3 * var(--default-grid-baseline));
183
+ border-top: 1px solid var(--color-border);
184
+ display: flex;
185
+ flex-direction: column;
186
+ gap: calc(2 * var(--default-grid-baseline));
187
+ }
188
+
189
+ .cn-sidebar-columns__empty {
190
+ color: var(--color-text-maxcontrast);
191
+ font-size: 13px;
192
+ font-style: italic;
193
+ }
package/src/css/index.css CHANGED
@@ -1,8 +1,17 @@
1
- /* @conduction/nextcloud-vue — Main CSS entry point */
2
- @import './table.css';
3
- @import './card.css';
4
- @import './pagination.css';
5
- @import './detail.css';
6
- @import './badge.css';
7
- @import './layout.css';
8
- @import './utilities.css';
1
+ /* @conduction/nextcloud-vue — Main CSS entry point */
2
+ @import './table.css';
3
+ @import './card.css';
4
+ @import './pagination.css';
5
+ @import './detail.css';
6
+ @import './badge.css';
7
+ @import './layout.css';
8
+ @import './utilities.css';
9
+ @import './page-header.css';
10
+ @import './actions-bar.css';
11
+ @import './index-page.css';
12
+ @import './index-sidebar.css';
13
+ @import './dashboard.css';
14
+ @import './detail-page.css';
15
+ @import './CnSchemaFormDialog.css';
16
+ @import './timeline-stages.css';
17
+ @import './context-menu.css';