@yewdiel21/motion-kit 0.17.0 → 0.19.0
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.
- package/README.md +240 -199
- package/dist/auto/index.d.ts +19 -3
- package/dist/auto/index.js +35 -3
- package/dist/auto/index.js.map +1 -1
- package/dist/{chunk-QFBOHPWZ.js → chunk-CQP66AZK.js} +2 -2
- package/dist/{chunk-QP4QJOEN.js → chunk-H4STLMCM.js} +2 -2
- package/dist/{chunk-BZLMCHUD.js → chunk-KDIJX6G4.js} +3 -3
- package/dist/{chunk-DOOMULVV.js → chunk-OLT3CWDJ.js} +4 -2
- package/dist/chunk-OLT3CWDJ.js.map +1 -0
- package/dist/{chunk-VJFPTLAK.js → chunk-PEDYJ2TV.js} +8 -22
- package/dist/chunk-PEDYJ2TV.js.map +1 -0
- package/dist/{chunk-7IQTMF7Y.js → chunk-Y4GIBTRG.js} +5130 -2153
- package/dist/chunk-Y4GIBTRG.js.map +1 -0
- package/dist/css/components/badge-button.css +16 -0
- package/dist/css/components/bento-grid.css +13 -0
- package/dist/css/components/code-block.css +267 -0
- package/dist/css/components/command-search.css +274 -2
- package/dist/css/components/dialog.css +264 -0
- package/dist/css/components/drilldown-menu.css +11 -7
- package/dist/css/components/equalizer-slider.css +26 -0
- package/dist/css/components/handwriting-text.css +15 -0
- package/dist/css/components/heatmap-chart.css +267 -1
- package/dist/css/components/magnetize-button.css +18 -0
- package/dist/css/components/morphing-page-dots.css +13 -0
- package/dist/css/components/not-found.css +22 -0
- package/dist/css/components/notification-stack.css +42 -0
- package/dist/css/components/particle-button.css +14 -0
- package/dist/css/components/radio-group.css +29 -0
- package/dist/css/components/rating-scale.css +23 -0
- package/dist/css/components/scroll-area.css +261 -0
- package/dist/css/components/scroll-preview-dock.css +18 -0
- package/dist/css/components/select.css +300 -4
- package/dist/css/components/signature-pad.css +130 -103
- package/dist/css/components/stepper.css +36 -0
- package/dist/css/components/sticky-header.css +10 -0
- package/dist/css/components/temperature-slider.css +29 -0
- package/dist/css/components/voice-message-bubble.css +62 -45
- package/dist/css/components/waveform-player.css +49 -34
- package/dist/css/components/wheel-picker.css +16 -15
- package/dist/css/tokens.css +4 -0
- package/dist/elements/index.d.ts +217 -4
- package/dist/elements/index.js +614 -9
- package/dist/elements/index.js.map +1 -1
- package/dist/{engine-Bn6hC87X.d.ts → engine-D6XV-WNt.d.ts} +390 -1
- package/dist/gl/index.js +2 -2
- package/dist/index.css +886 -177
- package/dist/index.d.ts +23 -23
- package/dist/index.js +37 -5
- package/dist/index.js.map +1 -1
- package/dist/react/index.d.ts +126 -7
- package/dist/react/index.js +722 -7
- package/dist/react/index.js.map +1 -1
- package/dist/{reduced-YS6TZjpa.d.ts → reduced-4croIXl-.d.ts} +1 -1
- package/dist/{store-CZ6vdtIE.d.ts → store-CAHWkurn.d.ts} +1 -1
- package/package.json +110 -110
- package/registry.json +1357 -1160
- package/src/auto/auto-init.ts +341 -308
- package/src/components/badge-button/README.md +28 -0
- package/src/components/badge-button/badge-button.css +15 -0
- package/src/components/badge-button/element.ts +16 -0
- package/src/components/badge-button/engine.ts +85 -0
- package/src/components/badge-button/react.tsx +31 -0
- package/src/components/bento-grid/README.md +26 -0
- package/src/components/bento-grid/bento-grid.css +12 -0
- package/src/components/bento-grid/element.ts +22 -0
- package/src/components/bento-grid/engine.ts +153 -0
- package/src/components/bento-grid/react.tsx +25 -0
- package/src/components/code-block/README.md +1 -1
- package/src/components/code-block/code-block.css +5 -0
- package/src/components/code-block/engine.ts +5 -0
- package/src/components/command-search/README.md +1 -1
- package/src/components/command-search/command-search.css +12 -2
- package/src/components/command-search/engine.ts +6 -0
- package/src/components/dialog/README.md +104 -103
- package/src/components/dialog/dialog.css +2 -0
- package/src/components/dialog/engine.ts +465 -449
- package/src/components/drilldown-menu/drilldown-menu.css +11 -7
- package/src/components/drilldown-menu/engine.ts +44 -4
- package/src/components/equalizer-slider/README.md +43 -0
- package/src/components/equalizer-slider/element.ts +41 -0
- package/src/components/equalizer-slider/engine.ts +32 -0
- package/src/components/equalizer-slider/equalizer-slider.css +26 -0
- package/src/components/equalizer-slider/react.tsx +60 -0
- package/src/components/equalizer-slider/shared.ts +161 -0
- package/src/components/handwriting-text/README.md +29 -0
- package/src/components/handwriting-text/element.ts +14 -0
- package/src/components/handwriting-text/engine.ts +108 -0
- package/src/components/handwriting-text/glyphs.ts +71 -0
- package/src/components/handwriting-text/handwriting-text.css +14 -0
- package/src/components/handwriting-text/react.tsx +23 -0
- package/src/components/heatmap-chart/README.md +48 -48
- package/src/components/heatmap-chart/engine.ts +6 -1
- package/src/components/heatmap-chart/heatmap-chart.css +5 -1
- package/src/components/icons.ts +1 -0
- package/src/components/magnetize-button/README.md +26 -0
- package/src/components/magnetize-button/element.ts +13 -0
- package/src/components/magnetize-button/engine.ts +84 -0
- package/src/components/magnetize-button/magnetize-button.css +17 -0
- package/src/components/magnetize-button/react.tsx +22 -0
- package/src/components/morphing-page-dots/README.md +28 -0
- package/src/components/morphing-page-dots/element.ts +16 -0
- package/src/components/morphing-page-dots/engine.ts +89 -0
- package/src/components/morphing-page-dots/morphing-page-dots.css +12 -0
- package/src/components/morphing-page-dots/react.tsx +32 -0
- package/src/components/not-found/README.md +26 -0
- package/src/components/not-found/element.ts +15 -0
- package/src/components/not-found/engine.ts +57 -0
- package/src/components/not-found/not-found.css +21 -0
- package/src/components/not-found/react.tsx +23 -0
- package/src/components/notification-stack/README.md +24 -0
- package/src/components/notification-stack/element.ts +26 -0
- package/src/components/notification-stack/engine.ts +329 -0
- package/src/components/notification-stack/notification-stack.css +41 -0
- package/src/components/notification-stack/react.tsx +28 -0
- package/src/components/particle-button/README.md +26 -0
- package/src/components/particle-button/element.ts +13 -0
- package/src/components/particle-button/engine.ts +52 -0
- package/src/components/particle-button/particle-button.css +13 -0
- package/src/components/particle-button/react.tsx +22 -0
- package/src/components/radio-group/README.md +43 -0
- package/src/components/radio-group/element.ts +41 -0
- package/src/components/radio-group/engine.ts +11 -0
- package/src/components/radio-group/radio-group.css +28 -0
- package/src/components/radio-group/react.tsx +60 -0
- package/src/components/radio-group/shared.ts +118 -0
- package/src/components/rating-scale/README.md +43 -0
- package/src/components/rating-scale/element.ts +41 -0
- package/src/components/rating-scale/engine.ts +63 -0
- package/src/components/rating-scale/rating-scale.css +22 -0
- package/src/components/rating-scale/react.tsx +60 -0
- package/src/components/scroll-area/README.md +89 -0
- package/src/components/scroll-area/element.ts +35 -0
- package/src/components/scroll-area/engine.ts +528 -0
- package/src/components/scroll-area/react.tsx +67 -0
- package/src/components/scroll-area/scroll-area.css +260 -0
- package/src/components/scroll-preview-dock/README.md +24 -0
- package/src/components/scroll-preview-dock/element.ts +20 -0
- package/src/components/scroll-preview-dock/engine.ts +228 -0
- package/src/components/scroll-preview-dock/react.tsx +26 -0
- package/src/components/scroll-preview-dock/scroll-preview-dock.css +17 -0
- package/src/components/select/README.md +23 -9
- package/src/components/select/engine.ts +16 -4
- package/src/components/select/select.css +38 -4
- package/src/components/signature-pad/engine.ts +550 -437
- package/src/components/signature-pad/signature-pad.css +130 -103
- package/src/components/stepper/README.md +46 -0
- package/src/components/stepper/element.ts +42 -0
- package/src/components/stepper/engine.ts +103 -0
- package/src/components/stepper/react.tsx +60 -0
- package/src/components/stepper/stepper.css +35 -0
- package/src/components/sticky-header/README.md +30 -0
- package/src/components/sticky-header/element.ts +19 -0
- package/src/components/sticky-header/engine.ts +95 -0
- package/src/components/sticky-header/react.tsx +25 -0
- package/src/components/sticky-header/sticky-header.css +9 -0
- package/src/components/temperature-slider/README.md +42 -0
- package/src/components/temperature-slider/element.ts +53 -0
- package/src/components/temperature-slider/engine.ts +44 -0
- package/src/components/temperature-slider/react.tsx +66 -0
- package/src/components/temperature-slider/temperature-slider.css +29 -0
- package/src/components/voice-message-bubble/engine.ts +11 -0
- package/src/components/voice-message-bubble/voice-message-bubble.css +14 -12
- package/src/components/waveform-player/README.md +1 -1
- package/src/components/waveform-player/engine.ts +344 -261
- package/src/components/waveform-player/waveform-player.css +50 -35
- package/src/components/wheel-picker/README.md +3 -1
- package/src/components/wheel-picker/element.ts +12 -5
- package/src/components/wheel-picker/engine.ts +37 -8
- package/src/components/wheel-picker/wheel-picker.css +17 -16
- package/src/core/timing.ts +2 -0
- package/src/css/tokens.css +4 -0
- package/src/elements/index.ts +321 -273
- package/src/index.ts +312 -295
- package/src/motion/morph.ts +5 -2
- package/src/react/index.ts +17 -0
- package/dist/chunk-7IQTMF7Y.js.map +0 -1
- package/dist/chunk-DOOMULVV.js.map +0 -1
- package/dist/chunk-VJFPTLAK.js.map +0 -1
- /package/dist/{chunk-QFBOHPWZ.js.map → chunk-CQP66AZK.js.map} +0 -0
- /package/dist/{chunk-QP4QJOEN.js.map → chunk-H4STLMCM.js.map} +0 -0
- /package/dist/{chunk-BZLMCHUD.js.map → chunk-KDIJX6G4.js.map} +0 -0
|
@@ -4,6 +4,7 @@ import { createScope } from '../../core/scope';
|
|
|
4
4
|
import { inert, type Instance } from '../../core/types';
|
|
5
5
|
import { press } from '../../motion/micro';
|
|
6
6
|
import { createMenu } from '../menu/engine';
|
|
7
|
+
import { createScrollArea } from '../scroll-area/engine';
|
|
7
8
|
|
|
8
9
|
/*
|
|
9
10
|
* Select: one choice from a list, opened as the kit's menu (it grows out of its
|
|
@@ -12,8 +13,9 @@ import { createMenu } from '../menu/engine';
|
|
|
12
13
|
* step: forms post it and its `change` listeners keep working) or builds one from
|
|
13
14
|
* `options`. The chosen label slides in out of a blur, the chevron turns, typing
|
|
14
15
|
* a letter on the closed button picks the next option that starts with it, and
|
|
15
|
-
* ↓ ↑ Enter Space open the menu.
|
|
16
|
-
*
|
|
16
|
+
* ↓ ↑ Enter Space open the menu. A long list scrolls under the kit's scroll-area
|
|
17
|
+
* bar (no system bar on the menu's rounded edge) with its edges fading out.
|
|
18
|
+
* Changes made to the select's options (by the app) show up on their own.
|
|
17
19
|
*/
|
|
18
20
|
|
|
19
21
|
export interface SelectOption {
|
|
@@ -121,6 +123,10 @@ export function createSelect(root: HTMLElement | null, options: SelectOptions =
|
|
|
121
123
|
dialog.className = 'mk-dialog mk-menu mk-select-menu';
|
|
122
124
|
dialog.dataset.mkSelectMenu = '';
|
|
123
125
|
dialog.setAttribute('aria-label', options.label ?? 'Opciones');
|
|
126
|
+
// The items scroll inside a list, so the bar rides over the menu instead of cutting its rounded edge.
|
|
127
|
+
const list = document.createElement('div');
|
|
128
|
+
list.dataset.mkSelectList = '';
|
|
129
|
+
dialog.append(list);
|
|
124
130
|
root.append(dialog);
|
|
125
131
|
made.push(dialog);
|
|
126
132
|
scope.attr(root, 'data-mk-ready', '');
|
|
@@ -161,7 +167,7 @@ export function createSelect(root: HTMLElement | null, options: SelectOptions =
|
|
|
161
167
|
nodes.push(heading, ...[...child.children].filter((node): node is HTMLOptionElement => node instanceof HTMLOptionElement).map(item));
|
|
162
168
|
} else if (child instanceof HTMLOptionElement) nodes.push(item(child));
|
|
163
169
|
}
|
|
164
|
-
|
|
170
|
+
list.replaceChildren(...nodes);
|
|
165
171
|
};
|
|
166
172
|
|
|
167
173
|
const placeholderText = () => options.placeholder ?? choices().find((option) => option.value === '')?.text ?? 'Elige…';
|
|
@@ -201,13 +207,19 @@ export function createSelect(root: HTMLElement | null, options: SelectOptions =
|
|
|
201
207
|
root.dispatchEvent(new CustomEvent('mk:change', { bubbles: true, detail: { value } }));
|
|
202
208
|
};
|
|
203
209
|
|
|
210
|
+
// The menu's children must be its items: the bar stays out of assistive tech (the list scrolls with the keys).
|
|
211
|
+
const area = createScrollArea(dialog, { viewport: list, axis: 'y', focusable: false, decorative: true });
|
|
204
212
|
const menu = createMenu(dialog, {
|
|
205
213
|
triggers: false,
|
|
206
|
-
onOpen:
|
|
214
|
+
onOpen: () => {
|
|
215
|
+
markItems();
|
|
216
|
+
area.refresh();
|
|
217
|
+
},
|
|
207
218
|
onClose: () => trigger.setAttribute('aria-expanded', 'false'),
|
|
208
219
|
onSelect: (value) => choose(value, true),
|
|
209
220
|
});
|
|
210
221
|
scope.add(() => menu.destroy());
|
|
222
|
+
scope.add(() => area.destroy());
|
|
211
223
|
// The menu's own selection stays inside: listeners on the select hear its change.
|
|
212
224
|
scope.on(dialog, 'mk:select', (event) => event.stopPropagation());
|
|
213
225
|
|
|
@@ -72,20 +72,38 @@ mk-select {
|
|
|
72
72
|
transform: rotate(180deg);
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
/* The menu: like the panels of the data table (surface-1, a hairline, 8 px items).
|
|
75
|
+
/* The menu: like the panels of the data table (surface-1, a hairline, 8 px items). The items scroll in a list with the
|
|
76
|
+
kit's scroll-area bar, kept clear of the rounded corners; the system bar never shows. */
|
|
76
77
|
.mk-dialog.mk-select-menu {
|
|
77
78
|
--mk-dialog-bg: var(--mk-surface-1);
|
|
78
79
|
--mk-dialog-radius: 16px;
|
|
79
80
|
--mk-dialog-shadow: 0 0 0 1px var(--mk-outline-soft), 0 16px 48px -12px color-mix(in srgb, var(--mk-shadow-color, #000) 35%, transparent);
|
|
80
|
-
|
|
81
|
+
--mk-scroll-inset: 10px;
|
|
81
82
|
min-width: max(10rem, var(--mk-select-width, 0px));
|
|
82
83
|
max-height: min(20rem, 60dvh);
|
|
83
|
-
padding: 0
|
|
84
|
-
overflow
|
|
84
|
+
padding: 0;
|
|
85
|
+
overflow: hidden;
|
|
85
86
|
-webkit-backdrop-filter: none;
|
|
86
87
|
backdrop-filter: none;
|
|
87
88
|
}
|
|
88
89
|
|
|
90
|
+
.mk-dialog.mk-select-menu [data-mk-select-list] {
|
|
91
|
+
display: flex;
|
|
92
|
+
flex: 1 1 auto;
|
|
93
|
+
flex-direction: column;
|
|
94
|
+
gap: 0.125rem;
|
|
95
|
+
min-height: 0;
|
|
96
|
+
padding: 0.375rem;
|
|
97
|
+
overflow-x: hidden;
|
|
98
|
+
overflow-y: auto;
|
|
99
|
+
overscroll-behavior: contain;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/* A long list leaves the bar its own lane. */
|
|
103
|
+
.mk-dialog.mk-select-menu[data-mk-overflow-y] [data-mk-select-list] {
|
|
104
|
+
padding-inline-end: 0.875rem;
|
|
105
|
+
}
|
|
106
|
+
|
|
89
107
|
.mk-dialog.mk-select-menu [data-mk-item] {
|
|
90
108
|
flex: none;
|
|
91
109
|
gap: 0.625rem;
|
|
@@ -133,3 +151,19 @@ mk-select {
|
|
|
133
151
|
transition: none;
|
|
134
152
|
}
|
|
135
153
|
}
|
|
154
|
+
|
|
155
|
+
/* Inside a kit field the trigger takes the field's height, radius, fill and type. */
|
|
156
|
+
.mk-field :is(.mk-select, mk-select) {
|
|
157
|
+
display: flex;
|
|
158
|
+
width: 100%;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.mk-field [data-mk-select-trigger] {
|
|
162
|
+
height: auto;
|
|
163
|
+
min-height: 56px;
|
|
164
|
+
padding: 0 14px 0 16px;
|
|
165
|
+
border-radius: var(--mk-field-radius);
|
|
166
|
+
background: var(--mk-field-bg);
|
|
167
|
+
font-family: var(--md-sys-typescale-body-large-font);
|
|
168
|
+
font-size: var(--md-sys-typescale-body-large-size);
|
|
169
|
+
}
|