mtrl-addons 0.2.1 → 0.2.3

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 (128) hide show
  1. package/{src/components/index.ts → dist/components/index.d.ts} +0 -2
  2. package/dist/components/vlist/config.d.ts +86 -0
  3. package/{src/components/vlist/constants.ts → dist/components/vlist/constants.d.ts} +10 -11
  4. package/dist/components/vlist/features/api.d.ts +7 -0
  5. package/{src/components/vlist/features/index.ts → dist/components/vlist/features/index.d.ts} +0 -2
  6. package/dist/components/vlist/features/selection.d.ts +6 -0
  7. package/dist/components/vlist/features/viewport.d.ts +9 -0
  8. package/dist/components/vlist/features.d.ts +31 -0
  9. package/{src/components/vlist/index.ts → dist/components/vlist/index.d.ts} +1 -9
  10. package/dist/components/vlist/types.d.ts +596 -0
  11. package/dist/components/vlist/vlist.d.ts +29 -0
  12. package/dist/core/compose/features/gestures/index.d.ts +86 -0
  13. package/dist/core/compose/features/gestures/longpress.d.ts +85 -0
  14. package/dist/core/compose/features/gestures/pan.d.ts +108 -0
  15. package/dist/core/compose/features/gestures/pinch.d.ts +111 -0
  16. package/dist/core/compose/features/gestures/rotate.d.ts +111 -0
  17. package/dist/core/compose/features/gestures/swipe.d.ts +149 -0
  18. package/dist/core/compose/features/gestures/tap.d.ts +79 -0
  19. package/{src/core/compose/features/index.ts → dist/core/compose/features/index.d.ts} +1 -2
  20. package/{src/core/compose/index.ts → dist/core/compose/index.d.ts} +2 -11
  21. package/{src/core/gestures/index.ts → dist/core/gestures/index.d.ts} +1 -20
  22. package/dist/core/gestures/longpress.d.ts +23 -0
  23. package/dist/core/gestures/manager.d.ts +14 -0
  24. package/dist/core/gestures/pan.d.ts +12 -0
  25. package/dist/core/gestures/pinch.d.ts +14 -0
  26. package/dist/core/gestures/rotate.d.ts +14 -0
  27. package/dist/core/gestures/swipe.d.ts +20 -0
  28. package/dist/core/gestures/tap.d.ts +12 -0
  29. package/dist/core/gestures/types.d.ts +320 -0
  30. package/dist/core/gestures/utils.d.ts +57 -0
  31. package/dist/core/index.d.ts +13 -0
  32. package/dist/core/layout/config.d.ts +33 -0
  33. package/dist/core/layout/index.d.ts +51 -0
  34. package/dist/core/layout/jsx.d.ts +65 -0
  35. package/dist/core/layout/schema.d.ts +112 -0
  36. package/dist/core/layout/types.d.ts +69 -0
  37. package/dist/core/viewport/constants.d.ts +105 -0
  38. package/dist/core/viewport/features/base.d.ts +14 -0
  39. package/dist/core/viewport/features/collection.d.ts +41 -0
  40. package/dist/core/viewport/features/events.d.ts +13 -0
  41. package/{src/core/viewport/features/index.ts → dist/core/viewport/features/index.d.ts} +0 -7
  42. package/dist/core/viewport/features/item-size.d.ts +30 -0
  43. package/dist/core/viewport/features/loading.d.ts +34 -0
  44. package/dist/core/viewport/features/momentum.d.ts +17 -0
  45. package/dist/core/viewport/features/performance.d.ts +53 -0
  46. package/dist/core/viewport/features/placeholders.d.ts +38 -0
  47. package/dist/core/viewport/features/rendering.d.ts +16 -0
  48. package/dist/core/viewport/features/scrollbar.d.ts +26 -0
  49. package/dist/core/viewport/features/scrolling.d.ts +16 -0
  50. package/dist/core/viewport/features/utils.d.ts +43 -0
  51. package/dist/core/viewport/features/virtual.d.ts +18 -0
  52. package/{src/core/viewport/index.ts → dist/core/viewport/index.d.ts} +1 -17
  53. package/dist/core/viewport/types.d.ts +96 -0
  54. package/dist/core/viewport/utils/speed-tracker.d.ts +22 -0
  55. package/dist/core/viewport/viewport.d.ts +11 -0
  56. package/{src/index.ts → dist/index.d.ts} +0 -4
  57. package/dist/index.js +5143 -0
  58. package/dist/index.mjs +5111 -0
  59. package/dist/styles.css +254 -0
  60. package/dist/styles.css.map +1 -0
  61. package/package.json +6 -1
  62. package/src/styles/components/_vlist.scss +234 -213
  63. package/.cursorrules +0 -117
  64. package/AI.md +0 -241
  65. package/build.js +0 -201
  66. package/scripts/analyze-orphaned-functions.ts +0 -387
  67. package/scripts/debug/vlist-selection.ts +0 -121
  68. package/src/components/vlist/config.ts +0 -323
  69. package/src/components/vlist/features/api.ts +0 -322
  70. package/src/components/vlist/features/selection.ts +0 -444
  71. package/src/components/vlist/features/viewport.ts +0 -65
  72. package/src/components/vlist/features.ts +0 -112
  73. package/src/components/vlist/types.ts +0 -591
  74. package/src/components/vlist/vlist.ts +0 -92
  75. package/src/core/compose/features/gestures/index.ts +0 -227
  76. package/src/core/compose/features/gestures/longpress.ts +0 -383
  77. package/src/core/compose/features/gestures/pan.ts +0 -424
  78. package/src/core/compose/features/gestures/pinch.ts +0 -475
  79. package/src/core/compose/features/gestures/rotate.ts +0 -485
  80. package/src/core/compose/features/gestures/swipe.ts +0 -492
  81. package/src/core/compose/features/gestures/tap.ts +0 -334
  82. package/src/core/gestures/longpress.ts +0 -68
  83. package/src/core/gestures/manager.ts +0 -418
  84. package/src/core/gestures/pan.ts +0 -48
  85. package/src/core/gestures/pinch.ts +0 -58
  86. package/src/core/gestures/rotate.ts +0 -58
  87. package/src/core/gestures/swipe.ts +0 -66
  88. package/src/core/gestures/tap.ts +0 -45
  89. package/src/core/gestures/types.ts +0 -387
  90. package/src/core/gestures/utils.ts +0 -128
  91. package/src/core/index.ts +0 -43
  92. package/src/core/layout/config.ts +0 -102
  93. package/src/core/layout/index.ts +0 -168
  94. package/src/core/layout/jsx.ts +0 -174
  95. package/src/core/layout/schema.ts +0 -1001
  96. package/src/core/layout/types.ts +0 -95
  97. package/src/core/viewport/constants.ts +0 -140
  98. package/src/core/viewport/features/base.ts +0 -73
  99. package/src/core/viewport/features/collection.ts +0 -882
  100. package/src/core/viewport/features/events.ts +0 -130
  101. package/src/core/viewport/features/item-size.ts +0 -271
  102. package/src/core/viewport/features/loading.ts +0 -263
  103. package/src/core/viewport/features/momentum.ts +0 -260
  104. package/src/core/viewport/features/performance.ts +0 -161
  105. package/src/core/viewport/features/placeholders.ts +0 -335
  106. package/src/core/viewport/features/rendering.ts +0 -568
  107. package/src/core/viewport/features/scrollbar.ts +0 -434
  108. package/src/core/viewport/features/scrolling.ts +0 -618
  109. package/src/core/viewport/features/utils.ts +0 -88
  110. package/src/core/viewport/features/virtual.ts +0 -384
  111. package/src/core/viewport/types.ts +0 -133
  112. package/src/core/viewport/utils/speed-tracker.ts +0 -79
  113. package/src/core/viewport/viewport.ts +0 -246
  114. package/test/benchmarks/layout/advanced.test.ts +0 -656
  115. package/test/benchmarks/layout/comparison.test.ts +0 -519
  116. package/test/benchmarks/layout/performance-comparison.test.ts +0 -274
  117. package/test/benchmarks/layout/real-components.test.ts +0 -733
  118. package/test/benchmarks/layout/simple.test.ts +0 -321
  119. package/test/benchmarks/layout/stress.test.ts +0 -990
  120. package/test/collection/basic.test.ts +0 -304
  121. package/test/components/vlist-selection.test.ts +0 -240
  122. package/test/components/vlist.test.ts +0 -63
  123. package/test/core/collection/adapter.test.ts +0 -161
  124. package/test/core/collection/collection.test.ts +0 -394
  125. package/test/core/layout/layout.test.ts +0 -201
  126. package/test/utils/dom-helpers.ts +0 -275
  127. package/test/utils/performance-helpers.ts +0 -392
  128. package/tsconfig.json +0 -20
@@ -0,0 +1,254 @@
1
+ /**
2
+ * Creates a color with alpha transparency using RGB values
3
+ * This version uses string.unquote to preserve the rgba function correctly
4
+ * @param {String} $key - Color token name
5
+ * @param {Number} $opacity - Opacity value (0-1)
6
+ * @return {String} rgba CSS function with variable
7
+ */
8
+ @keyframes placeholder-pulse {
9
+ 0%, 100% {
10
+ opacity: 0.6;
11
+ }
12
+ 50% {
13
+ opacity: 0.4;
14
+ }
15
+ }
16
+ @keyframes fade-in {
17
+ from {
18
+ opacity: 0.6;
19
+ }
20
+ to {
21
+ opacity: 1;
22
+ }
23
+ }
24
+ @keyframes item-updated {
25
+ 0% {
26
+ background-color: rgba(var(--mtrl-sys-color-primary-rgb), 0.25);
27
+ box-shadow: inset 0 0 0 2px rgba(var(--mtrl-sys-color-primary-rgb), 0.4);
28
+ }
29
+ 100% {
30
+ background-color: transparent;
31
+ box-shadow: inset 0 0 0 2px transparent;
32
+ }
33
+ }
34
+ .mtrl-vlist {
35
+ position: relative;
36
+ width: 100%;
37
+ height: 100%;
38
+ min-height: 100px;
39
+ background-color: var(--mtrl-sys-color-surface);
40
+ border: 2px solid var(--mtrl-sys-color-outline-variant);
41
+ border-radius: 3px;
42
+ transition: background-color 400ms cubic-bezier(0.2, 0, 0, 1);
43
+ contain: layout style paint;
44
+ transform: translateZ(0);
45
+ backface-visibility: hidden;
46
+ }
47
+ .mtrl-vlist--selection {
48
+ cursor: pointer;
49
+ }
50
+ .mtrl-vlist--selection .mtrl-viewport-item:hover {
51
+ background-color: rgba(var(--mtrl-sys-color-on-surface-variant-rgb), 0.1);
52
+ }
53
+ .mtrl-vlist--selection .mtrl-viewport-item--selected,
54
+ .mtrl-vlist--selection .mtrl-viewport-item--selected:hover {
55
+ background-color: var(--mtrl-sys-color-secondary-container);
56
+ color: var(--mtrl-sys-color-on-secondary-container);
57
+ transition: background-color 400ms cubic-bezier(0.2, 0, 0, 1), color 400ms cubic-bezier(0.2, 0, 0, 1);
58
+ }
59
+ .mtrl-vlist--selection .mtrl-viewport-item--selected .mtrl-vlist-item-leading, .mtrl-vlist--selection .mtrl-viewport-item--selected .mtrl-vlist-item-trailing, .mtrl-vlist--selection .mtrl-viewport-item--selected .mtrl-vlist-item-supporting, .mtrl-vlist--selection .mtrl-viewport-item--selected .mtrl-vlist-item-overline, .mtrl-vlist--selection .mtrl-viewport-item--selected .mtrl-vlist-item-meta,
60
+ .mtrl-vlist--selection .mtrl-viewport-item--selected:hover .mtrl-vlist-item-leading,
61
+ .mtrl-vlist--selection .mtrl-viewport-item--selected:hover .mtrl-vlist-item-trailing,
62
+ .mtrl-vlist--selection .mtrl-viewport-item--selected:hover .mtrl-vlist-item-supporting,
63
+ .mtrl-vlist--selection .mtrl-viewport-item--selected:hover .mtrl-vlist-item-overline,
64
+ .mtrl-vlist--selection .mtrl-viewport-item--selected:hover .mtrl-vlist-item-meta {
65
+ color: var(--mtrl-sys-color-on-secondary-container);
66
+ transition: color 400ms cubic-bezier(0.2, 0, 0, 1);
67
+ }
68
+ .mtrl-vlist--disabled {
69
+ pointer-events: none;
70
+ opacity: 0.38;
71
+ transition: opacity 400ms cubic-bezier(0.2, 0, 0, 1);
72
+ }
73
+
74
+ .mtrl-viewport {
75
+ position: relative;
76
+ width: 100%;
77
+ height: 100%;
78
+ overflow: hidden;
79
+ }
80
+ .mtrl-viewport-items {
81
+ position: relative;
82
+ width: 100%;
83
+ height: 100%;
84
+ padding: 8px 0;
85
+ will-change: transform;
86
+ }
87
+
88
+ .mtrl-viewport-item {
89
+ user-select: none;
90
+ opacity: 1;
91
+ transition: opacity 400ms cubic-bezier(0.2, 0, 0, 1);
92
+ will-change: transform;
93
+ }
94
+ .mtrl-viewport-item--replaced {
95
+ animation: fade-in 0.3s ease-out;
96
+ }
97
+ .mtrl-viewport-item--updated, .mtrl-viewport-item--updated > * {
98
+ animation: item-updated 0.6s ease-out;
99
+ }
100
+ .mtrl-viewport-item .item--updated {
101
+ animation: item-updated 0.6s ease-out;
102
+ }
103
+
104
+ .mtrl-viewport-item {
105
+ padding: 11px 12px;
106
+ display: flex;
107
+ align-items: start;
108
+ transition: background-color 0.2s ease;
109
+ min-height: 48px;
110
+ left: 0;
111
+ right: 0;
112
+ width: 100%;
113
+ will-change: transform;
114
+ contain: layout style;
115
+ gap: 16px;
116
+ color: var(--mtrl-sys-color-on-surface);
117
+ overflow: hidden;
118
+ }
119
+
120
+ .mtrl-viewport-item__avatar,
121
+ .mtrl-viewport-item__image {
122
+ width: 40px;
123
+ height: 40px;
124
+ margin-top: 4px;
125
+ border-radius: 50%;
126
+ background-color: var(--mtrl-sys-color-primary-container);
127
+ color: white;
128
+ display: flex;
129
+ align-items: center;
130
+ justify-content: center;
131
+ font-weight: bold;
132
+ flex-shrink: 0;
133
+ }
134
+
135
+ .mtrl-viewport-item__details {
136
+ flex: 1;
137
+ min-width: 0;
138
+ margin-left: 12px;
139
+ }
140
+
141
+ .mtrl-viewport-item__headline {
142
+ font-weight: 500;
143
+ }
144
+
145
+ .mtrl-viewport-item__text {
146
+ font-size: 14px;
147
+ white-space: nowrap;
148
+ overflow: hidden;
149
+ text-overflow: ellipsis;
150
+ }
151
+
152
+ .mtrl-viewport-item__meta {
153
+ color: var(--mtrl-sys-color-on-surface-variant);
154
+ font-size: 12px;
155
+ margin-top: 2px;
156
+ }
157
+
158
+ .mtrl-viewport-item--placeholder {
159
+ opacity: 0.6;
160
+ animation: placeholder-pulse 2s ease-in-out infinite;
161
+ }
162
+ .mtrl-viewport-item--placeholder .mtrl-viewport-item__headline,
163
+ .mtrl-viewport-item--placeholder .mtrl-viewport-item__text,
164
+ .mtrl-viewport-item--placeholder .mtrl-viewport-item__meta {
165
+ position: relative;
166
+ display: inline-block;
167
+ font-size: 0.8em;
168
+ color: transparent;
169
+ background-color: var(--mtrl-sys-color-on-surface);
170
+ border-radius: 0.1em;
171
+ opacity: 0.4;
172
+ text-decoration: none;
173
+ line-height: 1;
174
+ padding: 0 0 0.05em;
175
+ vertical-align: middle;
176
+ }
177
+ .mtrl-viewport-item--placeholder .mtrl-viewport-item__text,
178
+ .mtrl-viewport-item--placeholder .mtrl-viewport-item__meta {
179
+ margin-top: 0.2em;
180
+ }
181
+ .mtrl-viewport-item--placeholder .mtrl-viewport-item__meta {
182
+ font-size: 10px;
183
+ }
184
+ .mtrl-viewport-item--placeholder .mtrl-viewport-item__user-headline,
185
+ .mtrl-viewport-item--placeholder .mtrl-viewport-item__user-text {
186
+ text-transform: capitalize;
187
+ }
188
+ .mtrl-viewport-item--placeholder .mtrl-viewport-item__avatar {
189
+ background-color: var(--mtrl-sys-color-primary-container);
190
+ color: var(--mtrl-sys-color-primary-container);
191
+ opacity: 1;
192
+ }
193
+
194
+ .mtrl-viewport__scrollbar {
195
+ position: absolute;
196
+ top: 0;
197
+ right: 0;
198
+ width: 8px;
199
+ height: 100%;
200
+ padding: 0;
201
+ opacity: 0;
202
+ transition: opacity 0.3s ease;
203
+ cursor: pointer;
204
+ z-index: 10;
205
+ }
206
+ .mtrl-viewport__scrollbar--visible, .mtrl-viewport__scrollbar--dragging, .mtrl-viewport__scrollbar:hover {
207
+ opacity: 1;
208
+ }
209
+ .mtrl-viewport__scrollbar:hover {
210
+ background: rgba(0, 0, 0, 0.05);
211
+ }
212
+ .mtrl-viewport__scrollbar-thumb {
213
+ position: absolute;
214
+ top: 0;
215
+ width: 6px;
216
+ padding: 1px;
217
+ background: rgba(0, 0, 0, 0.3);
218
+ border-radius: 4px;
219
+ will-change: transform;
220
+ cursor: grab;
221
+ transition: background 0.2s ease;
222
+ }
223
+ .mtrl-viewport__scrollbar-thumb:hover {
224
+ background: rgba(0, 0, 0, 0.5);
225
+ }
226
+ .mtrl-viewport__scrollbar-thumb:active, .mtrl-viewport__scrollbar-thumb--dragging {
227
+ cursor: grabbing;
228
+ background: rgba(0, 0, 0, 0.6);
229
+ transition: none;
230
+ }
231
+
232
+ @media (prefers-color-scheme: dark) {
233
+ .mtrl-viewport__scrollbar {
234
+ background: transparent;
235
+ }
236
+ .mtrl-viewport__scrollbar-thumb {
237
+ background: rgba(255, 255, 255, 0.4);
238
+ }
239
+ .mtrl-viewport__scrollbar-thumb:hover {
240
+ background: rgba(255, 255, 255, 0.6);
241
+ }
242
+ .mtrl-viewport__scrollbar-thumb:active, .mtrl-viewport__scrollbar-thumb--dragging {
243
+ background: rgba(255, 255, 255, 0.4);
244
+ }
245
+ }
246
+ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
247
+ .mtrl-viewport-item {
248
+ text-rendering: optimizeLegibility;
249
+ -webkit-font-smoothing: antialiased;
250
+ -moz-osx-font-smoothing: grayscale;
251
+ }
252
+ }
253
+
254
+ /*# sourceMappingURL=styles.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../mtrl/src/styles/abstract/_theme.scss","../src/styles/components/_vlist.scss"],"names":[],"mappings":"AAkDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACpBA;EACI;IAEI;;EAEJ;IACI;;;AAIR;EACI;IACI;;EAEJ;IACI;;;AAIR;EACI;IACI;IACA;;EAEJ;IACI;IACA;;;AAQR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YAjDY;EAoDZ;EACA;EACA;;AAGA;EACI;;AACA;EACI;;AAGJ;AAAA;EAEI;EACA;EACA;;AASI;AAAA;AAAA;AAAA;AAAA;AAAA;EAKI;EACA,YAnFD;;AA0Ff;EACI;EACA;EACA,YA3Fa;;;AAmGrB;EACI;EACA;EACA;EACA;;AAGA;EACI;EACA;EACA;EACA;EACA;;;AAIR;EACI;EACA;EACA,YAtHiB;EAuHjB;;AAEA;EACI;;AAGJ;EAEI;;AAIJ;EACI;;;AAIR;EACI;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EAEI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAOJ;EACI;EACA;;AAGA;AAAA;AAAA;EAGI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIJ;AAAA;EAEI;;AAGJ;EACI;;AAIJ;AAAA;EAEI;;AAIJ;EACI;EACA;EACA;;;AAQR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EAGI;;AAGJ;EACI;;AAIJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EAEI;EACA;EACA;;;AASZ;EACI;IACI;;EAEA;IACI;;EAEA;IACI;;EAGJ;IAEI;;;AAWhB;EACI;IACI;IACA;IACA","file":"styles.css"}
package/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "mtrl-addons",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "Additional components and utilities for the mtrl system, featuring forms, specialized elements, and extended functionality for modern applications",
5
5
  "type": "module",
6
6
  "main": "index.ts",
7
+ "files": [
8
+ "dist",
9
+ "src/styles"
10
+ ],
7
11
  "scripts": {
8
12
  "build": "bun run ./build.js",
9
13
  "build:app": "bun run ../mtrl-app/build.js",
@@ -43,6 +47,7 @@
43
47
  "jsdom": "^26.1.0",
44
48
  "madge": "^8.0.0",
45
49
  "mtrl": "^0.2.8",
50
+ "sass": "^1.94.2",
46
51
  "standard": "^17.0.0",
47
52
  "typescript": "^5.0.0"
48
53
  }