@navette-js/panels 0.0.0-stage → 1.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +8 -2
  3. package/THIRD-PARTY-NOTICES.md +12 -0
  4. package/dist/FILAMENT-LICENSE.md +21 -0
  5. package/dist/filament/css/filament/filament/app.css +2 -0
  6. package/dist/filament/fonts/INTER-LICENSE.txt +92 -0
  7. package/dist/filament/fonts/filament/filament/inter/index.css +1 -0
  8. package/dist/filament/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-SP7Z6XGK.woff2 +0 -0
  9. package/dist/filament/fonts/filament/filament/inter/inter-cyrillic-wght-normal-DR6K5BQD.woff2 +0 -0
  10. package/dist/filament/fonts/filament/filament/inter/inter-greek-ext-wght-normal-A2J6H3EX.woff2 +0 -0
  11. package/dist/filament/fonts/filament/filament/inter/inter-greek-wght-normal-ZABHMKQG.woff2 +0 -0
  12. package/dist/filament/fonts/filament/filament/inter/inter-latin-ext-wght-normal-ZIT2UBIY.woff2 +0 -0
  13. package/dist/filament/fonts/filament/filament/inter/inter-latin-wght-normal-DIHYUR35.woff2 +0 -0
  14. package/dist/filament/fonts/filament/filament/inter/inter-vietnamese-wght-normal-VWEHJHBA.woff2 +0 -0
  15. package/dist/filament/js/filament/actions/actions.js +1 -0
  16. package/dist/filament/js/filament/filament/app.js +1 -0
  17. package/dist/filament/js/filament/filament/echo.js +13 -0
  18. package/dist/filament/js/filament/forms/components/builder.js +1 -0
  19. package/dist/filament/js/filament/forms/components/checkbox-list.js +1 -0
  20. package/dist/filament/js/filament/forms/components/code-editor.js +38 -0
  21. package/dist/filament/js/filament/forms/components/color-picker.js +1 -0
  22. package/dist/filament/js/filament/forms/components/date-time-picker.js +1 -0
  23. package/dist/filament/js/filament/forms/components/file-upload.js +116 -0
  24. package/dist/filament/js/filament/forms/components/js-field.js +1 -0
  25. package/dist/filament/js/filament/forms/components/key-value.js +1 -0
  26. package/dist/filament/js/filament/forms/components/markdown-editor.js +51 -0
  27. package/dist/filament/js/filament/forms/components/repeater.js +1 -0
  28. package/dist/filament/js/filament/forms/components/rich-editor.js +161 -0
  29. package/dist/filament/js/filament/forms/components/select.js +11 -0
  30. package/dist/filament/js/filament/forms/components/slider.js +1 -0
  31. package/dist/filament/js/filament/forms/components/tags-input.js +1 -0
  32. package/dist/filament/js/filament/forms/components/text-input/password-reveal.js +1 -0
  33. package/dist/filament/js/filament/forms/components/textarea.js +1 -0
  34. package/dist/filament/js/filament/forms/components/toggle-buttons.js +1 -0
  35. package/dist/filament/js/filament/notifications/notifications.js +1 -0
  36. package/dist/filament/js/filament/schemas/components/actions.js +1 -0
  37. package/dist/filament/js/filament/schemas/components/js-component.js +1 -0
  38. package/dist/filament/js/filament/schemas/components/tabs.js +1 -0
  39. package/dist/filament/js/filament/schemas/components/wizard.js +1 -0
  40. package/dist/filament/js/filament/schemas/schemas.js +1 -0
  41. package/dist/filament/js/filament/support/support.js +46 -0
  42. package/dist/filament/js/filament/tables/components/columns/checkbox.js +1 -0
  43. package/dist/filament/js/filament/tables/components/columns/select.js +11 -0
  44. package/dist/filament/js/filament/tables/components/columns/text-input.js +1 -0
  45. package/dist/filament/js/filament/tables/components/columns/toggle.js +1 -0
  46. package/dist/filament/js/filament/tables/tables.js +1 -0
  47. package/dist/filament/js/filament/widgets/components/chart.js +31 -0
  48. package/dist/filament/js/filament/widgets/components/js-widget.js +1 -0
  49. package/dist/filament/js/filament/widgets/components/stats-overview/stat/chart.js +20 -0
  50. package/dist/navette/navette/calendar.css +108 -0
  51. package/dist/navette/navette/motion.css +101 -0
  52. package/dist/navette/navette/motion.js +49 -0
  53. package/lib/auth.d.ts +61 -0
  54. package/lib/auth.js +142 -0
  55. package/lib/calendar.d.ts +82 -0
  56. package/lib/calendar.js +107 -0
  57. package/lib/index.d.ts +1619 -0
  58. package/lib/index.js +3487 -0
  59. package/lib/notifications.d.ts +76 -0
  60. package/lib/notifications.js +112 -0
  61. package/lib/topbar.d.ts +90 -0
  62. package/lib/topbar.js +241 -0
  63. package/package.json +59 -4
  64. package/resources/filament/LICENSE.md +21 -0
  65. package/resources/filament/README.md +2 -0
  66. package/resources/filament/packages/actions/resources/css/actions.css +30 -0
  67. package/resources/filament/packages/actions/resources/css/index.css +1 -0
  68. package/resources/filament/packages/forms/dist/index.css +1 -0
  69. package/resources/filament/packages/forms/resources/css/components/builder.css +206 -0
  70. package/resources/filament/packages/forms/resources/css/components/checkbox-list.css +55 -0
  71. package/resources/filament/packages/forms/resources/css/components/code-editor.css +79 -0
  72. package/resources/filament/packages/forms/resources/css/components/color-picker.css +17 -0
  73. package/resources/filament/packages/forms/resources/css/components/date-time-picker.css +127 -0
  74. package/resources/filament/packages/forms/resources/css/components/field.css +88 -0
  75. package/resources/filament/packages/forms/resources/css/components/file-upload/filepond-plugin-media-preview.css +104 -0
  76. package/resources/filament/packages/forms/resources/css/components/file-upload.css +199 -0
  77. package/resources/filament/packages/forms/resources/css/components/key-value.css +57 -0
  78. package/resources/filament/packages/forms/resources/css/components/markdown-editor.css +343 -0
  79. package/resources/filament/packages/forms/resources/css/components/modal-table-select.css +17 -0
  80. package/resources/filament/packages/forms/resources/css/components/radio.css +41 -0
  81. package/resources/filament/packages/forms/resources/css/components/repeater.css +401 -0
  82. package/resources/filament/packages/forms/resources/css/components/rich-editor.css +666 -0
  83. package/resources/filament/packages/forms/resources/css/components/select.css +13 -0
  84. package/resources/filament/packages/forms/resources/css/components/slider.css +54 -0
  85. package/resources/filament/packages/forms/resources/css/components/tags-input.css +33 -0
  86. package/resources/filament/packages/forms/resources/css/components/text-input.css +20 -0
  87. package/resources/filament/packages/forms/resources/css/components/textarea.css +26 -0
  88. package/resources/filament/packages/forms/resources/css/components/toggle-buttons.css +49 -0
  89. package/resources/filament/packages/forms/resources/css/index.css +32 -0
  90. package/resources/filament/packages/infolists/resources/css/components/code.css +21 -0
  91. package/resources/filament/packages/infolists/resources/css/components/color.css +34 -0
  92. package/resources/filament/packages/infolists/resources/css/components/entry.css +68 -0
  93. package/resources/filament/packages/infolists/resources/css/components/icon.css +39 -0
  94. package/resources/filament/packages/infolists/resources/css/components/image.css +161 -0
  95. package/resources/filament/packages/infolists/resources/css/components/key-value.css +24 -0
  96. package/resources/filament/packages/infolists/resources/css/components/repeatable.css +136 -0
  97. package/resources/filament/packages/infolists/resources/css/components/text.css +234 -0
  98. package/resources/filament/packages/infolists/resources/css/index.css +14 -0
  99. package/resources/filament/packages/notifications/resources/css/database-notifications.css +56 -0
  100. package/resources/filament/packages/notifications/resources/css/index.css +3 -0
  101. package/resources/filament/packages/notifications/resources/css/notification.css +109 -0
  102. package/resources/filament/packages/notifications/resources/css/notifications.css +29 -0
  103. package/resources/filament/packages/panels/resources/css/base.css +13 -0
  104. package/resources/filament/packages/panels/resources/css/components/global-search.css +93 -0
  105. package/resources/filament/packages/panels/resources/css/components/header.css +56 -0
  106. package/resources/filament/packages/panels/resources/css/components/layout.css +182 -0
  107. package/resources/filament/packages/panels/resources/css/components/logo.css +11 -0
  108. package/resources/filament/packages/panels/resources/css/components/page.css +60 -0
  109. package/resources/filament/packages/panels/resources/css/components/sidebar.css +311 -0
  110. package/resources/filament/packages/panels/resources/css/components/tenant-menu.css +49 -0
  111. package/resources/filament/packages/panels/resources/css/components/theme-switcher.css +15 -0
  112. package/resources/filament/packages/panels/resources/css/components/topbar.css +89 -0
  113. package/resources/filament/packages/panels/resources/css/components/user-menu.css +46 -0
  114. package/resources/filament/packages/panels/resources/css/index.css +40 -0
  115. package/resources/filament/packages/panels/resources/css/theme.css +2 -0
  116. package/resources/filament/packages/panels/resources/css/utilities.css +3 -0
  117. package/resources/filament/packages/panels/resources/css/widgets/account-widget.css +21 -0
  118. package/resources/filament/packages/panels/resources/css/widgets/filament-info-widget.css +21 -0
  119. package/resources/filament/packages/schemas/resources/css/components/actions.css +29 -0
  120. package/resources/filament/packages/schemas/resources/css/components/flex.css +106 -0
  121. package/resources/filament/packages/schemas/resources/css/components/form.css +7 -0
  122. package/resources/filament/packages/schemas/resources/css/components/fused-group.css +337 -0
  123. package/resources/filament/packages/schemas/resources/css/components/icon.css +11 -0
  124. package/resources/filament/packages/schemas/resources/css/components/image.css +12 -0
  125. package/resources/filament/packages/schemas/resources/css/components/section.css +24 -0
  126. package/resources/filament/packages/schemas/resources/css/components/tabs.css +77 -0
  127. package/resources/filament/packages/schemas/resources/css/components/text.css +77 -0
  128. package/resources/filament/packages/schemas/resources/css/components/unordered-list.css +15 -0
  129. package/resources/filament/packages/schemas/resources/css/components/wizard.css +177 -0
  130. package/resources/filament/packages/schemas/resources/css/index.css +12 -0
  131. package/resources/filament/packages/schemas/resources/css/schema.css +132 -0
  132. package/resources/filament/packages/support/dist/index.css +1 -0
  133. package/resources/filament/packages/support/resources/css/base.css +23 -0
  134. package/resources/filament/packages/support/resources/css/components/avatar.css +15 -0
  135. package/resources/filament/packages/support/resources/css/components/badge.css +90 -0
  136. package/resources/filament/packages/support/resources/css/components/breadcrumbs.css +25 -0
  137. package/resources/filament/packages/support/resources/css/components/button.css +214 -0
  138. package/resources/filament/packages/support/resources/css/components/callout.css +57 -0
  139. package/resources/filament/packages/support/resources/css/components/dropdown/header.css +21 -0
  140. package/resources/filament/packages/support/resources/css/components/dropdown/index.css +79 -0
  141. package/resources/filament/packages/support/resources/css/components/dropdown/list/index.css +7 -0
  142. package/resources/filament/packages/support/resources/css/components/dropdown/list/item.css +74 -0
  143. package/resources/filament/packages/support/resources/css/components/empty-state.css +67 -0
  144. package/resources/filament/packages/support/resources/css/components/fieldset.css +23 -0
  145. package/resources/filament/packages/support/resources/css/components/grid.css +511 -0
  146. package/resources/filament/packages/support/resources/css/components/icon-button.css +124 -0
  147. package/resources/filament/packages/support/resources/css/components/icon.css +31 -0
  148. package/resources/filament/packages/support/resources/css/components/input/checkbox.css +32 -0
  149. package/resources/filament/packages/support/resources/css/components/input/index.css +55 -0
  150. package/resources/filament/packages/support/resources/css/components/input/one-time-code.css +7 -0
  151. package/resources/filament/packages/support/resources/css/components/input/radio.css +11 -0
  152. package/resources/filament/packages/support/resources/css/components/input/select.css +154 -0
  153. package/resources/filament/packages/support/resources/css/components/input/wrapper.css +107 -0
  154. package/resources/filament/packages/support/resources/css/components/link.css +90 -0
  155. package/resources/filament/packages/support/resources/css/components/loading-indicator.css +3 -0
  156. package/resources/filament/packages/support/resources/css/components/loading-section.css +3 -0
  157. package/resources/filament/packages/support/resources/css/components/modal.css +494 -0
  158. package/resources/filament/packages/support/resources/css/components/pagination.css +160 -0
  159. package/resources/filament/packages/support/resources/css/components/section.css +234 -0
  160. package/resources/filament/packages/support/resources/css/components/tabs.css +70 -0
  161. package/resources/filament/packages/support/resources/css/components/toggle.css +60 -0
  162. package/resources/filament/packages/support/resources/css/components/tooltip.css +36 -0
  163. package/resources/filament/packages/support/resources/css/index.css +133 -0
  164. package/resources/filament/packages/support/resources/css/sortable.css +3 -0
  165. package/resources/filament/packages/support/resources/css/utilities.css +897 -0
  166. package/resources/filament/packages/tables/resources/css/actions.css +51 -0
  167. package/resources/filament/packages/tables/resources/css/cell.css +139 -0
  168. package/resources/filament/packages/tables/resources/css/column-manager.css +48 -0
  169. package/resources/filament/packages/tables/resources/css/columns/checkbox.css +54 -0
  170. package/resources/filament/packages/tables/resources/css/columns/color.css +76 -0
  171. package/resources/filament/packages/tables/resources/css/columns/icon.css +81 -0
  172. package/resources/filament/packages/tables/resources/css/columns/image.css +207 -0
  173. package/resources/filament/packages/tables/resources/css/columns/layout/grid.css +49 -0
  174. package/resources/filament/packages/tables/resources/css/columns/layout/panel.css +3 -0
  175. package/resources/filament/packages/tables/resources/css/columns/layout/split.css +35 -0
  176. package/resources/filament/packages/tables/resources/css/columns/layout/stack.css +29 -0
  177. package/resources/filament/packages/tables/resources/css/columns/select.css +36 -0
  178. package/resources/filament/packages/tables/resources/css/columns/summaries/icon-count.css +43 -0
  179. package/resources/filament/packages/tables/resources/css/columns/summaries/range.css +27 -0
  180. package/resources/filament/packages/tables/resources/css/columns/summaries/text.css +29 -0
  181. package/resources/filament/packages/tables/resources/css/columns/summaries/values.css +33 -0
  182. package/resources/filament/packages/tables/resources/css/columns/text-input.css +36 -0
  183. package/resources/filament/packages/tables/resources/css/columns/text.css +319 -0
  184. package/resources/filament/packages/tables/resources/css/columns/toggle.css +54 -0
  185. package/resources/filament/packages/tables/resources/css/container.css +311 -0
  186. package/resources/filament/packages/tables/resources/css/content.css +342 -0
  187. package/resources/filament/packages/tables/resources/css/empty-state.css +31 -0
  188. package/resources/filament/packages/tables/resources/css/group-header.css +54 -0
  189. package/resources/filament/packages/tables/resources/css/header-cell.css +224 -0
  190. package/resources/filament/packages/tables/resources/css/index.css +26 -0
  191. package/resources/filament/packages/tables/resources/css/row.css +47 -0
  192. package/resources/filament/packages/tables/resources/css/table.css +394 -0
  193. package/resources/filament/packages/widgets/resources/css/chart-widget.css +88 -0
  194. package/resources/filament/packages/widgets/resources/css/index.css +3 -0
  195. package/resources/filament/packages/widgets/resources/css/stats-overview-widget.css +67 -0
  196. package/resources/filament/packages/widgets/resources/css/widget.css +3 -0
  197. package/theme.css +17 -0
  198. package/views/components/logo.ejs +9 -0
  199. package/views/components/tenant-menu.ejs +13 -0
  200. package/views/components/user-menu.ejs +82 -0
  201. package/views/layout/base.ejs +129 -0
  202. package/views/layout/index.ejs +41 -0
  203. package/views/layout/simple.ejs +19 -0
  204. package/views/livewire/sidebar.ejs +123 -0
  205. package/views/livewire/topbar.ejs +47 -0
  206. package/views/pages/page.ejs +143 -0
  207. package/views/pages/simple.ejs +32 -0
@@ -0,0 +1,394 @@
1
+ .fi-ta-table {
2
+ @apply w-full table-auto divide-y divide-gray-200 text-start dark:divide-white/5;
3
+
4
+ &.fi-ta-table-stacked-on-mobile {
5
+ @apply block sm:table sm:table-auto;
6
+
7
+ & > thead {
8
+ @apply block sm:table-header-group;
9
+
10
+ &:not(:has(.fi-ta-table-stacked-header-row)) {
11
+ @apply hidden sm:table-header-group;
12
+ }
13
+
14
+ & > tr:not(.fi-ta-table-stacked-header-row) {
15
+ @apply hidden sm:table-row;
16
+ }
17
+
18
+ & > tr > .fi-ta-header-cell {
19
+ @apply max-sm:hidden;
20
+ }
21
+
22
+ & > tr > .fi-ta-selection-cell {
23
+ @apply hidden sm:table-cell;
24
+ }
25
+ }
26
+
27
+ & > tbody {
28
+ @apply block whitespace-normal sm:table-row-group sm:whitespace-nowrap;
29
+ }
30
+
31
+ & > tbody > tr {
32
+ @apply relative block py-2 sm:static sm:table-row sm:py-0;
33
+
34
+ &.fi-collapsed {
35
+ @apply hidden;
36
+ }
37
+
38
+ &.fi-selected {
39
+ &::before {
40
+ @apply bg-primary-600 absolute inset-y-0 start-0 w-0.5 sm:hidden;
41
+ content: '';
42
+ }
43
+
44
+ @variant dark {
45
+ &::before {
46
+ @apply bg-primary-500;
47
+ }
48
+ }
49
+
50
+ & > *:first-child {
51
+ @apply max-sm:inset-shadow-none;
52
+ }
53
+ }
54
+
55
+ &.fi-ta-group-header-row {
56
+ @apply py-0;
57
+
58
+ &.fi-ta-group-header-row-with-selection {
59
+ @apply grid grid-cols-[1fr_auto] sm:table-row;
60
+ }
61
+
62
+ & > td {
63
+ @apply block w-full sm:table-cell sm:w-auto;
64
+ }
65
+
66
+ & > td:empty {
67
+ @apply hidden sm:table-cell;
68
+ }
69
+
70
+ & > .fi-ta-group-selection-cell {
71
+ @apply order-last flex! w-auto items-center px-4 sm:table-cell! sm:w-1 sm:px-3;
72
+ }
73
+ }
74
+
75
+ &.fi-ta-summary-row {
76
+ @apply py-0;
77
+ }
78
+
79
+ &.fi-ta-summary-header-row {
80
+ @apply hidden sm:table-row;
81
+ }
82
+ }
83
+
84
+ & > tbody > tr > .fi-ta-selection-cell {
85
+ @apply absolute end-4 top-0 pe-4 sm:static sm:table-cell sm:w-1 sm:px-3 sm:py-4 sm:first-of-type:ps-6 sm:last-of-type:pe-6;
86
+ }
87
+
88
+ & > tfoot {
89
+ @apply max-sm:block;
90
+
91
+ & > tr {
92
+ @apply max-sm:block;
93
+ }
94
+ }
95
+
96
+ & > tbody > tr > .fi-ta-cell:not(.fi-ta-selection-cell) {
97
+ @apply block px-4 sm:table-cell sm:px-0;
98
+
99
+ @variant sm {
100
+ &:first-child {
101
+ @apply ps-3;
102
+ }
103
+
104
+ &:last-child {
105
+ @apply pe-3;
106
+ }
107
+ }
108
+
109
+ &.fi-ta-summary-row-heading-cell {
110
+ @apply pb-0 sm:px-3 sm:py-4 sm:first:ps-6 sm:last:pe-6;
111
+ }
112
+
113
+ &.fi-ta-summary-header-cell {
114
+ @apply sm:px-3 sm:first:ps-6;
115
+ }
116
+
117
+ &.fi-ta-individual-search-cell {
118
+ @apply sm:px-3;
119
+ }
120
+
121
+ &.fi-ta-group-selection-cell,
122
+ &:has(.fi-ta-reorder-handle) {
123
+ @apply sm:px-3 sm:first-of-type:ps-6 sm:last-of-type:pe-6;
124
+ }
125
+
126
+ &.sm\:fi-hidden {
127
+ @apply sm:hidden;
128
+ }
129
+
130
+ &.md\:fi-hidden {
131
+ @apply md:hidden;
132
+ }
133
+
134
+ &.lg\:fi-hidden {
135
+ @apply lg:hidden;
136
+ }
137
+
138
+ &.xl\:fi-hidden {
139
+ @apply xl:hidden;
140
+ }
141
+
142
+ &.\32xl\:fi-hidden {
143
+ @apply 2xl:hidden;
144
+ }
145
+
146
+ &.sm\:fi-visible {
147
+ @apply hidden sm:table-cell;
148
+ }
149
+
150
+ &.md\:fi-visible {
151
+ @apply hidden md:table-cell;
152
+ }
153
+
154
+ &.lg\:fi-visible {
155
+ @apply hidden lg:table-cell;
156
+ }
157
+
158
+ &.xl\:fi-visible {
159
+ @apply hidden xl:table-cell;
160
+ }
161
+
162
+ &.\32xl\:fi-visible {
163
+ @apply hidden 2xl:table-cell;
164
+ }
165
+
166
+ &.fi-ta-summary-row-heading-cell-responsive {
167
+ @apply max-sm:block!;
168
+ }
169
+
170
+ & > .fi-ta-cell-label {
171
+ @apply pt-2 text-sm leading-6 font-semibold text-gray-500 sm:hidden dark:text-gray-400;
172
+ }
173
+
174
+ & > .fi-ta-cell-content {
175
+ @apply text-sm break-words text-gray-800 sm:block dark:text-gray-200;
176
+ }
177
+
178
+ &:has(.fi-ta-actions) {
179
+ @apply py-2 sm:px-3 sm:py-4;
180
+
181
+ @variant sm {
182
+ &:first-of-type {
183
+ @apply ps-6;
184
+ }
185
+
186
+ &:last-of-type {
187
+ @apply pe-6;
188
+ }
189
+ }
190
+
191
+ & > .fi-ta-actions {
192
+ @apply w-full flex-wrap justify-start gap-x-3 gap-y-2 sm:w-auto sm:flex-nowrap sm:justify-end sm:gap-3;
193
+ }
194
+ }
195
+ }
196
+ }
197
+
198
+ & > thead {
199
+ @apply divide-y divide-gray-200 dark:divide-white/5;
200
+
201
+ & > tr {
202
+ @apply bg-gray-50 dark:bg-white/5;
203
+
204
+ &.fi-ta-table-head-groups-row {
205
+ @apply bg-gray-100 dark:bg-transparent;
206
+ }
207
+ }
208
+ }
209
+
210
+ & > tbody {
211
+ @apply divide-y divide-gray-200 whitespace-nowrap dark:divide-white/5;
212
+ }
213
+
214
+ & > tfoot {
215
+ @apply bg-gray-50 dark:bg-white/5;
216
+ }
217
+ }
218
+
219
+ :where(.fi-ta-table.fi-ta-table-stacked-on-mobile > tfoot > tr > td),
220
+ :where(.fi-ta-table.fi-ta-table-stacked-on-mobile > tfoot > tr > th) {
221
+ @apply max-sm:block max-sm:w-full;
222
+ }
223
+
224
+ @variant max-sm {
225
+ .fi-ta-table .fi-ta-individual-search-row[data-search-hidden-at~='base'] {
226
+ @apply hidden;
227
+ }
228
+ }
229
+
230
+ @variant sm {
231
+ @variant max-md {
232
+ .fi-ta-table .fi-ta-individual-search-row[data-search-hidden-at~='sm'] {
233
+ @apply hidden;
234
+ }
235
+ }
236
+ }
237
+
238
+ @variant md {
239
+ @variant max-lg {
240
+ .fi-ta-table .fi-ta-individual-search-row[data-search-hidden-at~='md'] {
241
+ @apply hidden;
242
+ }
243
+ }
244
+ }
245
+
246
+ @variant lg {
247
+ @variant max-xl {
248
+ .fi-ta-table .fi-ta-individual-search-row[data-search-hidden-at~='lg'] {
249
+ @apply hidden;
250
+ }
251
+ }
252
+ }
253
+
254
+ @variant xl {
255
+ @variant max-2xl {
256
+ .fi-ta-table .fi-ta-individual-search-row[data-search-hidden-at~='xl'] {
257
+ @apply hidden;
258
+ }
259
+ }
260
+ }
261
+
262
+ @variant 2xl {
263
+ .fi-ta-table .fi-ta-individual-search-row[data-search-hidden-at~='2xl'] {
264
+ @apply hidden;
265
+ }
266
+ }
267
+
268
+ .fi-ta-summary-row-heading-fallback {
269
+ @apply hidden min-h-9 px-3 pt-4 text-sm leading-5 font-medium text-gray-950 dark:text-white;
270
+
271
+ & > span {
272
+ @apply sr-only;
273
+ }
274
+ }
275
+
276
+ @variant max-sm {
277
+ .fi-ta-summary-row[data-summary-heading-hidden-at~='base'] {
278
+ & > td:has(> .fi-ta-summary-row-heading-fallback) {
279
+ @apply align-top;
280
+ }
281
+
282
+ & > td > .fi-ta-summary-row-heading-fallback {
283
+ @apply block;
284
+
285
+ & > span[data-visible-at~='base'] {
286
+ @apply not-sr-only block whitespace-nowrap;
287
+ }
288
+ }
289
+ }
290
+ }
291
+
292
+ @variant sm {
293
+ @variant max-md {
294
+ .fi-ta-summary-row[data-summary-heading-hidden-at~='sm'] {
295
+ & > td:has(> .fi-ta-summary-row-heading-fallback) {
296
+ @apply align-top;
297
+ }
298
+
299
+ & > td > .fi-ta-summary-row-heading-fallback {
300
+ @apply block;
301
+
302
+ & > span[data-visible-at~='sm'] {
303
+ @apply not-sr-only block whitespace-nowrap;
304
+ }
305
+ }
306
+ }
307
+ }
308
+ }
309
+
310
+ @variant md {
311
+ @variant max-lg {
312
+ .fi-ta-summary-row[data-summary-heading-hidden-at~='md'] {
313
+ & > td:has(> .fi-ta-summary-row-heading-fallback) {
314
+ @apply align-top;
315
+ }
316
+
317
+ & > td > .fi-ta-summary-row-heading-fallback {
318
+ @apply block;
319
+
320
+ & > span[data-visible-at~='md'] {
321
+ @apply not-sr-only block whitespace-nowrap;
322
+ }
323
+ }
324
+ }
325
+ }
326
+ }
327
+
328
+ @variant lg {
329
+ @variant max-xl {
330
+ .fi-ta-summary-row[data-summary-heading-hidden-at~='lg'] {
331
+ & > td:has(> .fi-ta-summary-row-heading-fallback) {
332
+ @apply align-top;
333
+ }
334
+
335
+ & > td > .fi-ta-summary-row-heading-fallback {
336
+ @apply block;
337
+
338
+ & > span[data-visible-at~='lg'] {
339
+ @apply not-sr-only block whitespace-nowrap;
340
+ }
341
+ }
342
+ }
343
+ }
344
+ }
345
+
346
+ @variant xl {
347
+ @variant max-2xl {
348
+ .fi-ta-summary-row[data-summary-heading-hidden-at~='xl'] {
349
+ & > td:has(> .fi-ta-summary-row-heading-fallback) {
350
+ @apply align-top;
351
+ }
352
+
353
+ & > td > .fi-ta-summary-row-heading-fallback {
354
+ @apply block;
355
+
356
+ & > span[data-visible-at~='xl'] {
357
+ @apply not-sr-only block whitespace-nowrap;
358
+ }
359
+ }
360
+ }
361
+ }
362
+ }
363
+
364
+ @variant 2xl {
365
+ .fi-ta-summary-row[data-summary-heading-hidden-at~='2xl'] {
366
+ & > td:has(> .fi-ta-summary-row-heading-fallback) {
367
+ @apply align-top;
368
+ }
369
+
370
+ & > td > .fi-ta-summary-row-heading-fallback {
371
+ @apply block;
372
+
373
+ & > span[data-visible-at~='2xl'] {
374
+ @apply not-sr-only block whitespace-nowrap;
375
+ }
376
+ }
377
+ }
378
+ }
379
+
380
+ .fi-ta-table-stacked-header-row {
381
+ @apply block w-full border-y-0 sm:hidden;
382
+
383
+ & .fi-ta-table-stacked-header-cell {
384
+ @apply flex w-full items-center gap-4 bg-gray-50 px-4 py-3 font-normal dark:bg-white/5;
385
+
386
+ & .fi-ta-page-checkbox {
387
+ @apply ms-auto shrink-0;
388
+ }
389
+
390
+ & .fi-ta-table-stacked-sorting {
391
+ @apply flex flex-1 gap-x-3;
392
+ }
393
+ }
394
+ }
@@ -0,0 +1,88 @@
1
+ .fi-wi-chart {
2
+ & .fi-wi-chart-frame {
3
+ @apply mx-auto flex w-full items-center justify-center;
4
+
5
+ &:not(.fi-wi-chart-frame-no-aspect-ratio) {
6
+ @apply aspect-square;
7
+ }
8
+ }
9
+
10
+ @supports (container-type: inline-size) {
11
+ & .fi-section-content {
12
+ @apply @container;
13
+ }
14
+
15
+ & .fi-wi-chart-frame:not(.fi-wi-chart-frame-no-aspect-ratio) {
16
+ @apply @sm:aspect-[1.5];
17
+ }
18
+ }
19
+
20
+ @supports not (container-type: inline-size) {
21
+ & .fi-wi-chart-frame:not(.fi-wi-chart-frame-no-aspect-ratio) {
22
+ @apply sm:aspect-[1.5];
23
+ }
24
+ }
25
+
26
+ & .fi-wi-chart-filter {
27
+ &.fi-input-wrp {
28
+ @apply w-max sm:-my-2;
29
+ }
30
+
31
+ &.fi-dropdown {
32
+ & .fi-wi-chart-filter-content {
33
+ @apply grid gap-y-4 p-6;
34
+ }
35
+
36
+ & .fi-wi-chart-filter-content-actions-ctn {
37
+ @apply flex gap-3;
38
+ }
39
+ }
40
+ }
41
+
42
+ & .fi-color {
43
+ & .fi-wi-chart-bg-color {
44
+ @apply text-color-50 dark:text-color-400/10;
45
+ }
46
+
47
+ & .fi-wi-chart-border-color {
48
+ @apply text-color-500 dark:text-color-400;
49
+ }
50
+ }
51
+
52
+ & .fi-wi-chart-bg-color {
53
+ @apply text-gray-100 dark:text-gray-800;
54
+ }
55
+
56
+ & .fi-wi-chart-border-color {
57
+ @apply text-gray-400;
58
+ }
59
+
60
+ & .fi-wi-chart-grid-color {
61
+ @apply text-gray-200 dark:text-gray-800;
62
+ }
63
+
64
+ & .fi-wi-chart-text-color {
65
+ @apply text-gray-500 dark:text-gray-400;
66
+ }
67
+
68
+ /* Tooltips are painted onto the canvas, so these three elements are the only way to
69
+ color them. Their values are Chart.js' own tooltip colors rather than Filament
70
+ palette values, which is why they are written out longhand instead of `@apply`.
71
+ The border only appears once `--chart-tooltip-border-width` is set, so its
72
+ color defaults to a hairline that suits the background above it. */
73
+ & .fi-wi-chart-tooltip-bg-color {
74
+ color: rgb(0 0 0 / 0.8);
75
+ }
76
+
77
+ & .fi-wi-chart-tooltip-text-color {
78
+ color: rgb(255 255 255);
79
+ }
80
+
81
+ & .fi-wi-chart-tooltip-border-color {
82
+ color: rgb(255 255 255 / 0.2);
83
+ }
84
+
85
+ & .fi-empty-state {
86
+ @apply p-0;
87
+ }
88
+ }
@@ -0,0 +1,3 @@
1
+ @import './chart-widget.css' layer(components);
2
+ @import './stats-overview-widget.css' layer(components);
3
+ @import './widget.css' layer(components);
@@ -0,0 +1,67 @@
1
+ .fi-wi-stats-overview-stat {
2
+ @apply focus-visible:ring-primary-600 dark:focus-visible:ring-primary-500 relative block h-full rounded-xl bg-white p-6 shadow-sm ring-1 ring-gray-950/5 outline-none focus-visible:ring-2 dark:bg-gray-900 dark:ring-white/10;
3
+
4
+ & .fi-icon {
5
+ @apply shrink-0 text-gray-400 dark:text-gray-500;
6
+ }
7
+
8
+ & .fi-wi-stats-overview-stat-content {
9
+ @apply grid gap-y-2;
10
+ }
11
+
12
+ & .fi-wi-stats-overview-stat-label-ctn {
13
+ @apply flex items-center gap-x-2;
14
+ }
15
+
16
+ & .fi-wi-stats-overview-stat-label {
17
+ @apply text-sm font-medium text-gray-500 dark:text-gray-400;
18
+ }
19
+
20
+ & .fi-wi-stats-overview-stat-value {
21
+ /* Tabular figures: stat values are near-always numeric, and polled
22
+ widgets would otherwise reflow as digit widths change. */
23
+ @apply text-3xl font-semibold tracking-tight text-gray-950 tabular-nums dark:text-white;
24
+ }
25
+
26
+ & .fi-wi-stats-overview-stat-placeholder {
27
+ @apply text-3xl font-medium text-gray-500 dark:text-gray-400;
28
+ }
29
+
30
+ & .fi-wi-stats-overview-stat-description {
31
+ @apply flex items-center gap-x-1 text-sm text-gray-500 dark:text-gray-400;
32
+
33
+ &.fi-color {
34
+ @apply text-(--text) dark:text-(--dark-text);
35
+
36
+ & .fi-icon {
37
+ @apply text-color-500;
38
+ }
39
+ }
40
+ }
41
+
42
+ & .fi-wi-stats-overview-stat-chart {
43
+ @apply absolute inset-x-0 bottom-0 overflow-hidden rounded-b-xl;
44
+
45
+ & > canvas {
46
+ @apply h-6;
47
+ }
48
+
49
+ & .fi-wi-stats-overview-stat-chart-bg-color {
50
+ @apply text-gray-100 dark:text-gray-800;
51
+ }
52
+
53
+ & .fi-wi-stats-overview-stat-chart-border-color {
54
+ @apply text-gray-400;
55
+ }
56
+
57
+ &.fi-color {
58
+ & .fi-wi-stats-overview-stat-chart-bg-color {
59
+ @apply text-color-50 dark:text-color-400/10;
60
+ }
61
+
62
+ & .fi-wi-stats-overview-stat-chart-border-color {
63
+ @apply text-color-500 dark:text-color-400;
64
+ }
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,3 @@
1
+ .fi-wi {
2
+ @apply gap-6;
3
+ }
package/theme.css ADDED
@@ -0,0 +1,17 @@
1
+ /* Thème de base de Navette : le thème de FilamentPHP (MIT), compilé par Tailwind avec les sources de l'application.
2
+ Une application l'importe depuis sa propre feuille de thème, puis déclare ses sources avec `@source`. */
3
+ @import './resources/filament/packages/panels/resources/css/theme.css';
4
+
5
+ /* Classes utilitaires écrites dans les vues et le code de Navette lui-même. */
6
+ @source './views/**/*.ejs';
7
+ @source './src/**/*.ts';
8
+ @source '../forms/src/**/*.ts';
9
+ @source '../forms/views/**/*.ejs';
10
+ @source '../tables/src/**/*.ts';
11
+ @source '../tables/views/**/*.ejs';
12
+ @source '../actions/src/**/*.ts';
13
+ @source '../actions/views/**/*.ejs';
14
+ @source '../schemas/src/**/*.ts';
15
+ @source '../support/src/**/*.ts';
16
+ @source '../support/views/**/*.ejs';
17
+ @source '../infolists/src/**/*.ts';
@@ -0,0 +1,9 @@
1
+ <%# Logo ou nom de marque — port de filament-panels::components.logo %>
2
+ <% if (brand.logo) { %>
3
+ <img alt="<%= t('filament-panels::layout.logo.alt', { name: brand.name }) %>" src="<%= brand.logo %>" style="height: <%- brand.height %>;" class="<%- brand.darkLogo ? 'fi-logo fi-logo-light' : 'fi-logo' %>" />
4
+ <% if (brand.darkLogo) { %>
5
+ <img alt="<%= t('filament-panels::layout.logo.alt', { name: brand.name }) %>" src="<%= brand.darkLogo %>" style="height: <%- brand.height %>;" class="fi-logo fi-logo-dark" />
6
+ <% } %>
7
+ <% } else { %>
8
+ <div class="fi-logo"><%= brand.name %></div>
9
+ <% } %>
@@ -0,0 +1,13 @@
1
+ <%# Menu du locataire — port de filament-panels::components.tenant-menu (sans recherche au-delà de dix locataires : voir README) %>
2
+ <%- renderHook('panels::tenant-menu.before') %>
3
+ <div x-data="filamentDropdown({ isMenu: true })" class="fi-dropdown fi-tenant-menu" ><div x-on:mousedown="if ($event.button === 0) toggle($event)" class="fi-dropdown-trigger" ><button<% if (isSidebarCollapsibleOnDesktop) { %> x-data="{ tooltip: false }" x-effect="
4
+ tooltip = $store.sidebar.isOpen
5
+ ? false
6
+ : {
7
+ content: <%= js(tenant.name) %>,
8
+ allowHTML: false,
9
+ placement: document.dir === 'rtl' ? 'left' : 'right',
10
+ theme: $store.theme,
11
+ }
12
+ " x-tooltip="tooltip"<% } %> type="button" class="fi-tenant-menu-trigger" ><img alt="<%= t('filament-panels::layout.avatar.alt', { name: tenant.name }) %>" class="fi-avatar fi-size-md fi-tenant-avatar" src="<%= tenant.avatarUrl %>" loading="lazy" /><span<% if (isSidebarCollapsibleOnDesktop) { %> x-show="$store.sidebar.isOpen"<% } %> class="fi-tenant-menu-trigger-text" ><% if (tenant.label) { %><span class="fi-tenant-menu-trigger-current-tenant-label"> <%= tenant.label %> </span><% } %><span class="fi-tenant-menu-trigger-tenant-name"> <%= tenant.name %> </span></span><%- icon('m-chevron-down', isSidebarCollapsibleOnDesktop ? { attributes: attrs({ 'x-show': '$store.sidebar.isOpen' }) } : {}) %></button></div><div x-cloak x-float.placement.bottom-start.size.flip<% if (teleport) { %>.teleport<% } %>.offset="{ offset: 8, size: {&quot;padding&quot;:16} }" x-ref="panel" x-transition:enter-start="fi-opacity-0" x-transition:leave-end="fi-opacity-0" role="menu" class="fi-dropdown-panel fi-scrollable" style="" ><% if (itemsBefore.length) { %><div class="fi-dropdown-list"><%- itemsBefore.join('') %></div><% } %><% if (switchable.length) { %><div x-data="filamentTenantMenu"><div class="fi-dropdown-list"><% for (const other of switchable) { %><div class="fi-tenant-menu-item" x-show="matchesSearch(<%= js(other.name) %>)"><a href="<%= other.url %>" class="fi-dropdown-list-item" role="menuitem" tabindex="-1"><div class="fi-dropdown-list-item-image" style="background-image: url('<%= other.avatarUrl %>')"></div><span class="fi-dropdown-list-item-label"><%= other.name %></span></a></div><% } %></div></div><% } %><% if (itemsAfter.length) { %><div class="fi-dropdown-list"><%- itemsAfter.join('') %></div><% } %></div></div>
13
+ <%- renderHook('panels::tenant-menu.after') %>
@@ -0,0 +1,82 @@
1
+ <%# Menu utilisateur (sidebar ou barre du haut) — port de filament-panels::components.user-menu, theme-switcher et dropdown %>
2
+ <% const topbar = locals.position === 'topbar'; const collapsible = locals.isSidebarCollapsibleOnDesktop === true; const before = locals.itemsBefore ?? []; const after = locals.itemsAfter ?? []; %>
3
+ <%- renderHook('panels::user-menu.before') %>
4
+ <div x-data="filamentDropdown({ isMenu: true })" class="fi-dropdown fi-user-menu">
5
+ <div x-on:mousedown="if ($event.button === 0) toggle($event)" class="fi-dropdown-trigger">
6
+ <% if (topbar) { %>
7
+ <button aria-label="<%= t('filament-panels::layout.actions.open_user_menu.label') %>" type="button" class="fi-user-menu-trigger">
8
+ <img alt="<%= t('filament-panels::layout.avatar.alt', { name: user.name }) %>" class="fi-avatar fi-circular fi-size-md fi-user-avatar" src="<%= avatarUrl %>" loading="lazy" />
9
+ </button>
10
+ <% } else { %>
11
+ <button aria-label="<%= user.name %>" type="button" class="fi-user-menu-trigger">
12
+ <img alt="<%= t('filament-panels::layout.avatar.alt', { name: user.name }) %>" class="fi-avatar fi-circular fi-size-md fi-user-avatar" src="<%= avatarUrl %>" loading="lazy" />
13
+ <span<% if (collapsible) { %> x-show="$store.sidebar.isOpen"<% } %> class="fi-user-menu-trigger-text">
14
+ <%= user.name %>
15
+ </span>
16
+ <%- icon('m-chevron-up', collapsible ? { attributes: attrs({ 'x-show': '$store.sidebar.isOpen' }) } : {}) %>
17
+ </button>
18
+ <% } %>
19
+ </div>
20
+
21
+ <div x-cloak x-float.placement.<%= topbar ? 'bottom-end' : 'top-end' %>.flip<% if (topbar) { %>.teleport<% } %>.offset="{ offset: 8, }" x-ref="panel" x-transition:enter-start="fi-opacity-0" x-transition:leave-end="fi-opacity-0" role="menu" class="fi-dropdown-panel " style="">
22
+ <% if (!locals.profileUrl) { %>
23
+ <%- renderHook('panels::user-menu.profile.before') %>
24
+ <div class="fi-dropdown-header">
25
+ <%- icon('m-user-circle') %>
26
+ <span>
27
+ <%= user.name %>
28
+ </span>
29
+ </div>
30
+ <%- renderHook('panels::user-menu.profile.after') %>
31
+ <% } %>
32
+ <% if (before.length) { %> <div class="fi-dropdown-list"><%- before.join('') %></div>
33
+ <% } %>
34
+ <div class="fi-dropdown-list">
35
+ <div x-data="{ theme: null }" x-init="
36
+ $watch('theme', () => {
37
+ $dispatch('theme-changed', theme)
38
+ })
39
+
40
+ theme = localStorage.getItem('filament:theme:mode') || 'system' " role="group" aria-label="<%= t('filament-panels::layout.actions.theme_switcher.label') %>" class="fi-theme-switcher">
41
+ <% for (const [theme, iconName] of [['light', 'm-sun'], ['dark', 'm-moon'], ['system', 'm-computer-desktop']]) { %>
42
+ <% const label = t('filament-panels::layout.actions.theme_switcher.' + theme + '.label') %>
43
+ <button aria-label="<%= label %>" role="menuitemradio" tabindex="-1" type="button" x-on:click="(theme = <%- js(theme) %>) && close()" x-tooltip="{
44
+ content: <%- js(label) %>,
45
+ theme: $store.theme,
46
+ }" x-bind:aria-checked="theme === <%- js(theme) %> ? 'true' : 'false'" x-bind:class="{ 'fi-active': theme === <%- js(theme) %> }" class="fi-theme-switcher-btn">
47
+ <%- icon(iconName) %>
48
+ </button>
49
+ <% } %>
50
+ </div>
51
+ </div>
52
+
53
+ <% if (locals.themes && themes.length > 1) { %>
54
+ <%# Écart assumé avec Filament : choix d'un thème prédéfini du panel (Panel.themes()). %>
55
+ <div role="group" aria-label="Theme" class="fi-dropdown-list nv-theme-list">
56
+ <% for (const theme of themes) { %>
57
+ <button role="menuitemradio" aria-checked="<%= theme.id === activeTheme ? 'true' : 'false' %>" tabindex="-1" type="button" wire:click="setTheme(<%= js(theme.id) %>)" data-theme="<%= theme.id %>" class="<%- cls(['fi-dropdown-list-item', theme.id === activeTheme && 'fi-active']) %>">
58
+ <span aria-hidden="true" class="nv-theme-swatch" style="display: inline-block; flex-shrink: 0; width: 1.25rem; height: 1.25rem; border-radius: 9999px; box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.1); background-color: <%= theme.swatch %>"></span>
59
+ <span class="fi-dropdown-list-item-label">
60
+ <%= theme.label %>
61
+ </span>
62
+ <% if (theme.id === activeTheme) { %><%- icon('m-check') %><% } %>
63
+ </button>
64
+ <% } %>
65
+ </div>
66
+ <% } %>
67
+
68
+ <% if (after.length) { %> <div class="fi-dropdown-list"><%- after.join('') %></div>
69
+ <% } %>
70
+ <div class="fi-dropdown-list">
71
+ <form action="<%= logoutUrl %>" method="post"><input type="hidden" name="_token" value="<%= csrf %>" autocomplete="off">
72
+ <button role="menuitem" tabindex="-1" type="submit" class="fi-dropdown-list-item">
73
+ <%- icon('m-arrow-left-on-rectangle') %>
74
+ <span class="fi-dropdown-list-item-label">
75
+ <%= t('filament-panels::layout.actions.logout.label') %>
76
+ </span>
77
+ </button>
78
+ </form>
79
+ </div>
80
+ </div>
81
+ </div>
82
+ <%- renderHook('panels::user-menu.after') %>