@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
@@ -1,90 +1,90 @@
1
- /* ========================================
2
- @conduction/nextcloud-vue — Layout Styles
3
- ======================================== */
4
-
5
- /* List View Layout */
6
- .cn-list-layout {
7
- padding: 20px;
8
- }
9
-
10
- .cn-list-layout__header {
11
- display: flex;
12
- align-items: center;
13
- justify-content: space-between;
14
- margin-bottom: 16px;
15
- }
16
-
17
- .cn-list-layout__title {
18
- display: flex;
19
- align-items: baseline;
20
- gap: 8px;
21
- }
22
-
23
- .cn-list-layout__title h2 {
24
- margin: 0;
25
- font-size: 1.4em;
26
- color: var(--color-main-text);
27
- }
28
-
29
- .cn-list-layout__title .cn-list-layout__count {
30
- font-size: 0.85em;
31
- color: var(--color-text-maxcontrast);
32
- }
33
-
34
- .cn-list-layout__actions {
35
- display: flex;
36
- gap: 8px;
37
- }
38
-
39
- /* Filter Bar */
40
- .cn-filter-bar {
41
- display: flex;
42
- align-items: center;
43
- gap: 12px;
44
- margin-bottom: 16px;
45
- flex-wrap: wrap;
46
- }
47
-
48
- .cn-filter-bar__search {
49
- flex: 1;
50
- min-width: 200px;
51
- max-width: 400px;
52
- }
53
-
54
- .cn-filter-bar__filters {
55
- display: flex;
56
- align-items: center;
57
- gap: 8px;
58
- flex-wrap: wrap;
59
- }
60
-
61
- .cn-filter-bar__filter {
62
- min-width: 150px;
63
- max-width: 200px;
64
- }
65
-
66
- .cn-filter-bar__clear {
67
- margin-left: auto;
68
- }
69
-
70
- /* Dashboard Content */
71
- .cn-dashboard-content {
72
- margin-inline: auto;
73
- max-width: 1200px;
74
- padding-block: 20px;
75
- padding-inline: 20px;
76
- }
77
-
78
- /* Loading Container */
79
- .cn-loading-container {
80
- display: flex;
81
- align-items: center;
82
- gap: 10px;
83
- color: var(--color-text-maxcontrast);
84
- justify-content: center;
85
- padding-block: 40px;
86
- }
87
-
88
- /* Backwards compatibility aliases */
89
- .dashboardContent { margin-inline: auto; max-width: 1200px; padding-block: 20px; padding-inline: 20px; }
90
- .loadingContainer { display: flex; align-items: center; gap: 10px; color: var(--color-text-maxcontrast); justify-content: center; padding-block: 40px; }
1
+ /* ========================================
2
+ @conduction/nextcloud-vue — Layout & Filter Utility Styles
3
+ ======================================== */
4
+
5
+ /* List View Layout */
6
+ .cn-list-layout {
7
+ padding: calc(5 * var(--default-grid-baseline));
8
+ }
9
+
10
+ .cn-list-layout__header {
11
+ display: flex;
12
+ align-items: center;
13
+ justify-content: space-between;
14
+ margin-bottom: calc(4 * var(--default-grid-baseline));
15
+ }
16
+
17
+ .cn-list-layout__title {
18
+ display: flex;
19
+ align-items: baseline;
20
+ gap: calc(2 * var(--default-grid-baseline));
21
+ }
22
+
23
+ .cn-list-layout__title h2 {
24
+ margin: 0;
25
+ font-size: 1.4em;
26
+ color: var(--color-main-text);
27
+ }
28
+
29
+ .cn-list-layout__title .cn-list-layout__count {
30
+ font-size: 0.85em;
31
+ color: var(--color-text-maxcontrast);
32
+ }
33
+
34
+ .cn-list-layout__actions {
35
+ display: flex;
36
+ gap: calc(2 * var(--default-grid-baseline));
37
+ }
38
+
39
+ /* Filter Bar */
40
+ .cn-filter-bar {
41
+ display: flex;
42
+ align-items: center;
43
+ gap: calc(3 * var(--default-grid-baseline));
44
+ margin-bottom: calc(4 * var(--default-grid-baseline));
45
+ flex-wrap: wrap;
46
+ }
47
+
48
+ .cn-filter-bar__search {
49
+ flex: 1;
50
+ min-width: 200px;
51
+ max-width: 400px;
52
+ }
53
+
54
+ .cn-filter-bar__filters {
55
+ display: flex;
56
+ align-items: center;
57
+ gap: calc(2 * var(--default-grid-baseline));
58
+ flex-wrap: wrap;
59
+ }
60
+
61
+ .cn-filter-bar__filter {
62
+ min-width: 150px;
63
+ max-width: 200px;
64
+ }
65
+
66
+ .cn-filter-bar__clear {
67
+ margin-left: auto;
68
+ }
69
+
70
+ /* Dashboard Content */
71
+ .cn-dashboard-content {
72
+ margin-inline: auto;
73
+ max-width: 1200px;
74
+ padding-block: calc(5 * var(--default-grid-baseline));
75
+ padding-inline: calc(5 * var(--default-grid-baseline));
76
+ }
77
+
78
+ /* Loading Container */
79
+ .cn-loading-container {
80
+ display: flex;
81
+ align-items: center;
82
+ gap: calc(2 * var(--default-grid-baseline));
83
+ color: var(--color-text-maxcontrast);
84
+ justify-content: center;
85
+ padding-block: calc(10 * var(--default-grid-baseline));
86
+ }
87
+
88
+ /* Backwards compatibility aliases */
89
+ .dashboardContent { margin-inline: auto; max-width: 1200px; padding-block: calc(5 * var(--default-grid-baseline)); padding-inline: calc(5 * var(--default-grid-baseline)); }
90
+ .loadingContainer { display: flex; align-items: center; gap: calc(2 * var(--default-grid-baseline)); color: var(--color-text-maxcontrast); justify-content: center; padding-block: calc(10 * var(--default-grid-baseline)); }
@@ -0,0 +1,35 @@
1
+ /* CnPageHeader — Reusable page header styles */
2
+
3
+ .cn-page-header {
4
+ display: flex;
5
+ align-items: flex-start;
6
+ gap: calc(3 * var(--default-grid-baseline));
7
+ margin-bottom: calc(4 * var(--default-grid-baseline));
8
+ /* Clear the Nextcloud navigation toggle button (44px wide, absolutely positioned) */
9
+ padding-left: 44px;
10
+ }
11
+
12
+ .cn-page-header__icon {
13
+ flex-shrink: 0;
14
+ display: flex;
15
+ align-items: center;
16
+ padding-top: var(--default-grid-baseline);
17
+ color: var(--color-primary);
18
+ }
19
+
20
+ .cn-page-header__text {
21
+ flex: 1;
22
+ min-width: 0;
23
+ }
24
+
25
+ .cn-page-header__title {
26
+ margin: 0 0 var(--default-grid-baseline) 0;
27
+ font-size: 2rem;
28
+ font-weight: 300;
29
+ }
30
+
31
+ .cn-page-header__description {
32
+ color: var(--color-text-maxcontrast);
33
+ margin: 0;
34
+ font-size: var(--default-font-size);
35
+ }
@@ -1,72 +1,72 @@
1
- /* ========================================
2
- @conduction/nextcloud-vue — Pagination
3
- ======================================== */
4
-
5
- .cn-pagination {
6
- display: flex;
7
- justify-content: space-between;
8
- align-items: center;
9
- gap: 15px;
10
- margin-top: 30px;
11
- padding: 20px;
12
- flex-wrap: nowrap;
13
- }
14
-
15
- .cn-pagination__info {
16
- display: flex;
17
- align-items: center;
18
- flex-shrink: 0;
19
- }
20
-
21
- .cn-pagination__page-info {
22
- color: var(--color-text-maxcontrast);
23
- font-size: 0.9rem;
24
- }
25
-
26
- .cn-pagination__nav {
27
- display: flex;
28
- align-items: center;
29
- gap: 10px;
30
- flex-grow: 1;
31
- justify-content: center;
32
- }
33
-
34
- .cn-pagination__numbers {
35
- display: flex;
36
- align-items: center;
37
- gap: 5px;
38
- }
39
-
40
- .cn-pagination__ellipsis {
41
- padding: 0 5px;
42
- color: var(--color-text-maxcontrast);
43
- font-size: 0.9rem;
44
- }
45
-
46
- .cn-pagination__page-size {
47
- display: flex;
48
- align-items: center;
49
- gap: 10px;
50
- flex-shrink: 0;
51
- min-width: 0;
52
- }
53
-
54
- .cn-pagination__page-size label {
55
- font-size: 0.9rem;
56
- color: var(--color-text-maxcontrast);
57
- white-space: nowrap;
58
- }
59
-
60
- .cn-pagination__page-size-select {
61
- min-width: 100px !important;
62
- max-width: 120px !important;
63
- }
64
-
65
- /* Backwards compatibility aliases */
66
- .viewPagination { display: flex; justify-content: space-between; align-items: center; gap: 15px; margin-top: 30px; padding: 20px; flex-wrap: nowrap; }
67
- .viewPaginationInfo { display: flex; align-items: center; flex-shrink: 0; }
68
- .viewPageInfo { color: var(--color-text-maxcontrast); font-size: 0.9rem; }
69
- .viewPaginationNav { display: flex; align-items: center; gap: 10px; flex-grow: 1; justify-content: center; }
70
- .viewPaginationNumbers { display: flex; align-items: center; gap: 5px; }
71
- .viewPaginationEllipsis { padding: 0 5px; color: var(--color-text-maxcontrast); font-size: 0.9rem; }
72
- .viewPaginationPageSize { display: flex; align-items: center; gap: 10px; flex-shrink: 0; min-width: 0; }
1
+ /* ========================================
2
+ @conduction/nextcloud-vue — Pagination
3
+ ======================================== */
4
+
5
+ .cn-pagination {
6
+ display: flex;
7
+ justify-content: space-between;
8
+ align-items: center;
9
+ gap: calc(4 * var(--default-grid-baseline));
10
+ margin-top: calc(8 * var(--default-grid-baseline));
11
+ padding: calc(5 * var(--default-grid-baseline));
12
+ flex-wrap: nowrap;
13
+ }
14
+
15
+ .cn-pagination__info {
16
+ display: flex;
17
+ align-items: center;
18
+ flex-shrink: 0;
19
+ }
20
+
21
+ .cn-pagination__page-info {
22
+ color: var(--color-text-maxcontrast);
23
+ font-size: 0.9rem;
24
+ }
25
+
26
+ .cn-pagination__nav {
27
+ display: flex;
28
+ align-items: center;
29
+ gap: calc(2 * var(--default-grid-baseline));
30
+ flex-grow: 1;
31
+ justify-content: center;
32
+ }
33
+
34
+ .cn-pagination__numbers {
35
+ display: flex;
36
+ align-items: center;
37
+ gap: var(--default-grid-baseline);
38
+ }
39
+
40
+ .cn-pagination__ellipsis {
41
+ padding: 0 var(--default-grid-baseline);
42
+ color: var(--color-text-maxcontrast);
43
+ font-size: 0.9rem;
44
+ }
45
+
46
+ .cn-pagination__page-size {
47
+ display: flex;
48
+ align-items: center;
49
+ gap: calc(2 * var(--default-grid-baseline));
50
+ flex-shrink: 0;
51
+ min-width: 0;
52
+ }
53
+
54
+ .cn-pagination__page-size label {
55
+ font-size: 0.9rem;
56
+ color: var(--color-text-maxcontrast);
57
+ white-space: nowrap;
58
+ }
59
+
60
+ .cn-pagination__page-size-select {
61
+ min-width: 100px !important;
62
+ max-width: 120px !important;
63
+ }
64
+
65
+ /* Backwards compatibility aliases */
66
+ .viewPagination { display: flex; justify-content: space-between; align-items: center; gap: calc(4 * var(--default-grid-baseline)); margin-top: calc(8 * var(--default-grid-baseline)); padding: calc(5 * var(--default-grid-baseline)); flex-wrap: nowrap; }
67
+ .viewPaginationInfo { display: flex; align-items: center; flex-shrink: 0; }
68
+ .viewPageInfo { color: var(--color-text-maxcontrast); font-size: 0.9rem; }
69
+ .viewPaginationNav { display: flex; align-items: center; gap: calc(2 * var(--default-grid-baseline)); flex-grow: 1; justify-content: center; }
70
+ .viewPaginationNumbers { display: flex; align-items: center; gap: var(--default-grid-baseline); }
71
+ .viewPaginationEllipsis { padding: 0 var(--default-grid-baseline); color: var(--color-text-maxcontrast); font-size: 0.9rem; }
72
+ .viewPaginationPageSize { display: flex; align-items: center; gap: calc(2 * var(--default-grid-baseline)); flex-shrink: 0; min-width: 0; }
package/src/css/table.css CHANGED
@@ -1,143 +1,142 @@
1
- /* ========================================
2
- @conduction/nextcloud-vue — Table Styles
3
- ======================================== */
4
-
5
- /* Table Container */
6
- .cn-table-container {
7
- background: var(--nldesign-component-table-background-color, var(--color-main-background));
8
- border-radius: var(--nldesign-border-radius, var(--border-radius));
9
- overflow: hidden;
10
- box-shadow: 0 2px 4px var(--color-box-shadow);
11
- border: 1px solid var(--nldesign-component-table-border-color, var(--color-border));
12
- margin-bottom: 20px;
13
- }
14
-
15
- .cn-table-container.cn-table-container--scrollable {
16
- max-height: 400px;
17
- overflow-y: auto;
18
- }
19
-
20
- /* Base Table */
21
- .cn-data-table {
22
- width: 100%;
23
- border-collapse: collapse;
24
- background-color: var(--nldesign-component-table-background-color, var(--color-main-background));
25
- }
26
-
27
- .cn-data-table th,
28
- .cn-data-table td {
29
- padding: var(--nldesign-component-table-cell-padding-block, 12px)
30
- var(--nldesign-component-table-cell-padding-inline, 12px);
31
- text-align: left;
32
- border-bottom: 1px solid var(--nldesign-component-table-border-color, var(--color-border));
33
- vertical-align: middle;
34
- }
35
-
36
- .cn-data-table th {
37
- background: var(--nldesign-component-table-header-background-color, var(--color-background-dark));
38
- font-weight: var(--nldesign-component-table-header-font-weight, 500);
39
- color: var(--color-text-maxcontrast);
40
- }
41
-
42
- .cn-data-table th.cn-table-header--sortable {
43
- cursor: pointer;
44
- user-select: none;
45
- transition: background-color 0.2s ease;
46
- }
47
-
48
- .cn-data-table th.cn-table-header--sortable:hover {
49
- background-color: var(--color-background-hover);
50
- }
51
-
52
- .cn-table-sort-indicator {
53
- margin-left: 4px;
54
- opacity: 0.6;
55
- }
56
-
57
- /* Row States */
58
- .cn-table-row {
59
- border-bottom: 1px solid var(--nldesign-component-table-border-color, var(--color-border));
60
- cursor: pointer;
61
- transition: background-color 0.2s ease;
62
- }
63
-
64
- .cn-table-row:hover {
65
- background: var(--nldesign-component-table-row-hover-background-color, var(--color-background-hover));
66
- }
67
-
68
- .cn-table-row--selected {
69
- background-color: var(--color-primary-light);
70
- border-left: 3px solid var(--color-primary);
71
- }
72
-
73
- .cn-table-row--selected:hover {
74
- background-color: var(--color-primary-light);
75
- }
76
-
77
- /* Column Types */
78
- .cn-table-col--checkbox {
79
- width: 50px;
80
- text-align: center;
81
- }
82
-
83
- .cn-table-col--actions {
84
- width: 120px;
85
- text-align: center;
86
- min-width: 120px;
87
- }
88
-
89
- .cn-table-col--constrained {
90
- width: 150px;
91
- max-width: 150px;
92
- overflow: hidden;
93
- text-overflow: ellipsis;
94
- white-space: nowrap;
95
- }
96
-
97
- .cn-table-col--expanded {
98
- width: auto;
99
- min-width: 200px;
100
- }
101
-
102
- .cn-table-col--title {
103
- min-width: 120px;
104
- max-width: 200px;
105
- word-wrap: break-word;
106
- overflow: hidden;
107
- }
108
-
109
- /* Loading State */
110
- .cn-table-loading {
111
- text-align: center;
112
- padding: 50px;
113
- }
114
-
115
- .cn-table-loading p {
116
- margin-top: 20px;
117
- color: var(--color-text-maxcontrast);
118
- }
119
-
120
- /* Empty State (inside table) */
121
- .cn-table-empty td {
122
- text-align: center;
123
- padding: 48px 24px;
124
- color: var(--color-text-maxcontrast);
125
- }
126
-
127
- /* ========================================
128
- Backwards compatibility aliases
129
- (legacy OpenRegister CSS class names)
130
- ======================================== */
131
- .viewTableContainer { background: var(--nldesign-component-table-background-color, var(--color-main-background)); border-radius: var(--nldesign-border-radius, var(--border-radius)); overflow: hidden; box-shadow: 0 2px 4px var(--color-box-shadow); border: 1px solid var(--nldesign-component-table-border-color, var(--color-border)); margin-bottom: 20px; }
132
- .viewTableContainer.scrollable { max-height: 400px; overflow-y: auto; }
133
- .viewTable { width: 100%; border-collapse: collapse; background-color: var(--nldesign-component-table-background-color, var(--color-main-background)); }
134
- .viewTable th, .viewTable td { padding: 12px; text-align: left; border-bottom: 1px solid var(--color-border); vertical-align: middle; }
135
- .viewTable th { background: var(--color-background-hover); font-weight: 500; color: var(--color-text-maxcontrast); background-color: var(--color-background-dark); }
136
- .viewTableRow { border-bottom: 1px solid var(--color-border); cursor: pointer; transition: background-color 0.2s ease; }
137
- .viewTableRow:hover { background: var(--color-background-hover); }
138
- .viewTableRow.active, .viewTableRowSelected { background: var(--color-primary-light); }
139
- .tableColumnCheckbox { width: 50px; text-align: center; }
140
- .tableColumnActions { width: 120px; text-align: center; min-width: 120px; }
141
- .tableColumnConstrained { width: 150px; max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
142
- .tableColumnExpanded { width: auto; min-width: 200px; }
143
- .tableColumnTitle { min-width: 120px; max-width: 200px; word-wrap: break-word; overflow: hidden; }
1
+ /* ========================================
2
+ @conduction/nextcloud-vue — Table Styles
3
+ ======================================== */
4
+
5
+ /* Table Container */
6
+ .cn-table-container {
7
+ background: var(--color-main-background);
8
+ border-radius: var(--border-radius);
9
+ overflow-x: auto;
10
+ box-shadow: 0 2px 4px var(--color-box-shadow);
11
+ border: 1px solid var(--color-border);
12
+ margin-bottom: calc(5 * var(--default-grid-baseline));
13
+ }
14
+
15
+ .cn-table-container.cn-table-container--scrollable {
16
+ max-height: 400px;
17
+ overflow-y: auto;
18
+ }
19
+
20
+ /* Base Table */
21
+ .cn-data-table {
22
+ width: 100%;
23
+ border-collapse: collapse;
24
+ background-color: var(--color-main-background);
25
+ }
26
+
27
+ .cn-data-table th,
28
+ .cn-data-table td {
29
+ padding: calc(3 * var(--default-grid-baseline));
30
+ text-align: left;
31
+ border-bottom: 1px solid var(--color-border);
32
+ vertical-align: middle;
33
+ }
34
+
35
+ .cn-data-table th {
36
+ background: var(--color-background-dark);
37
+ font-weight: 500;
38
+ color: var(--color-text-maxcontrast);
39
+ }
40
+
41
+ .cn-data-table th.cn-table-header--sortable {
42
+ cursor: pointer;
43
+ user-select: none;
44
+ transition: background-color var(--animation-quick) ease;
45
+ }
46
+
47
+ .cn-data-table th.cn-table-header--sortable:hover {
48
+ background-color: var(--color-background-hover);
49
+ }
50
+
51
+ .cn-table-sort-indicator {
52
+ margin-left: var(--default-grid-baseline);
53
+ opacity: 0.6;
54
+ }
55
+
56
+ /* Row States */
57
+ .cn-table-row {
58
+ border-bottom: 1px solid var(--color-border);
59
+ cursor: pointer;
60
+ transition: background-color var(--animation-quick) ease;
61
+ }
62
+
63
+ .cn-table-row:hover {
64
+ background: var(--color-background-hover);
65
+ }
66
+
67
+ .cn-table-row--selected {
68
+ background-color: var(--color-primary-light);
69
+ box-shadow: inset 3px 0 0 0 var(--color-primary);
70
+ }
71
+
72
+ .cn-table-row--selected:hover {
73
+ background-color: var(--color-primary-light);
74
+ }
75
+
76
+ /* Column Types */
77
+ .cn-table-col--checkbox {
78
+ width: 50px;
79
+ text-align: center;
80
+ }
81
+
82
+ .cn-table-col--actions {
83
+ width: 120px;
84
+ text-align: center;
85
+ min-width: 120px;
86
+ }
87
+
88
+ .cn-table-col--constrained {
89
+ width: 150px;
90
+ max-width: 150px;
91
+ overflow: hidden;
92
+ text-overflow: ellipsis;
93
+ white-space: nowrap;
94
+ }
95
+
96
+ .cn-table-col--expanded {
97
+ width: auto;
98
+ min-width: 200px;
99
+ }
100
+
101
+ .cn-table-col--title {
102
+ min-width: 120px;
103
+ max-width: 200px;
104
+ word-wrap: break-word;
105
+ overflow: hidden;
106
+ }
107
+
108
+ /* Loading State */
109
+ .cn-table-loading {
110
+ text-align: center;
111
+ padding: calc(12 * var(--default-grid-baseline));
112
+ }
113
+
114
+ .cn-table-loading p {
115
+ margin-top: calc(5 * var(--default-grid-baseline));
116
+ color: var(--color-text-maxcontrast);
117
+ }
118
+
119
+ /* Empty State (inside table) */
120
+ .cn-table-empty td {
121
+ text-align: center;
122
+ padding: calc(12 * var(--default-grid-baseline)) calc(6 * var(--default-grid-baseline));
123
+ color: var(--color-text-maxcontrast);
124
+ }
125
+
126
+ /* ========================================
127
+ Backwards compatibility aliases
128
+ (legacy OpenRegister CSS class names)
129
+ ======================================== */
130
+ .viewTableContainer { background: var(--color-main-background); border-radius: var(--border-radius); overflow-x: hidden; overflow-y: visible; box-shadow: 0 2px 4px var(--color-box-shadow); border: 1px solid var(--color-border); margin-bottom: calc(5 * var(--default-grid-baseline)); }
131
+ .viewTableContainer.scrollable { max-height: 400px; overflow-y: auto; }
132
+ .viewTable { width: 100%; border-collapse: collapse; background-color: var(--color-main-background); }
133
+ .viewTable th, .viewTable td { padding: calc(3 * var(--default-grid-baseline)); text-align: left; border-bottom: 1px solid var(--color-border); vertical-align: middle; }
134
+ .viewTable th { background: var(--color-background-hover); font-weight: 500; color: var(--color-text-maxcontrast); background-color: var(--color-background-dark); }
135
+ .viewTableRow { border-bottom: 1px solid var(--color-border); cursor: pointer; transition: background-color var(--animation-quick) ease; }
136
+ .viewTableRow:hover { background: var(--color-background-hover); }
137
+ .viewTableRow.active, .viewTableRowSelected { background: var(--color-primary-light); }
138
+ .tableColumnCheckbox { width: 50px; text-align: center; }
139
+ .tableColumnActions { width: 120px; text-align: center; min-width: 120px; }
140
+ .tableColumnConstrained { width: 150px; max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
141
+ .tableColumnExpanded { width: auto; min-width: 200px; }
142
+ .tableColumnTitle { min-width: 120px; max-width: 200px; word-wrap: break-word; overflow: hidden; }