apptify 0.2.0 → 0.5.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.
Files changed (72) hide show
  1. package/README.md +95 -22
  2. package/dist/apptify.css +1 -1
  3. package/dist/apptify.js +4153 -2177
  4. package/dist/components/button.d.ts +1 -1
  5. package/dist/components/content.d.ts +73 -362
  6. package/dist/components/date-picker.d.ts +10 -0
  7. package/dist/components/forms.d.ts +77 -18
  8. package/dist/components/foundation.d.ts +2061 -111
  9. package/dist/components/gallery-scrollbar.d.ts +46 -0
  10. package/dist/components/mobile-image-viewer.d.ts +166 -0
  11. package/dist/components/navibar.d.ts +80 -0
  12. package/dist/components/overlays.d.ts +127 -158
  13. package/dist/components/tabs.d.ts +117 -0
  14. package/dist/core/context.d.ts +573 -9
  15. package/dist/core/desktop-image-enter.d.ts +6 -0
  16. package/dist/core/desktop-image-return.d.ts +1 -0
  17. package/dist/core/device.d.ts +5 -0
  18. package/dist/core/image-gallery-motion.d.ts +2 -0
  19. package/dist/core/image-geometry.d.ts +28 -0
  20. package/dist/core/image-motion.d.ts +18 -0
  21. package/dist/core/layers.d.ts +2 -0
  22. package/dist/core/motion.d.ts +2 -0
  23. package/dist/core/popup-motion.d.ts +12 -0
  24. package/dist/core/popup-placement.d.ts +31 -0
  25. package/dist/core/preview-navigation.d.ts +5 -0
  26. package/dist/index.d.ts +1214 -339
  27. package/docs/COMPONENTS.md +17 -15
  28. package/docs/PLAYGROUND-TEMPLATE.md +74 -0
  29. package/docs/VALIDATION.md +24 -0
  30. package/package.json +26 -7
  31. package/templates/playground/README.md +17 -0
  32. package/templates/playground/gitignore +3 -0
  33. package/templates/playground/index.html +26 -0
  34. package/templates/playground/package.json +26 -0
  35. package/templates/playground/playground/App.vue +73 -0
  36. package/templates/playground/playground/ComponentDemo.vue +234 -0
  37. package/templates/playground/playground/catalog.ts +80 -0
  38. package/templates/playground/playground/components/ComponentIndex.vue +62 -0
  39. package/templates/playground/playground/components/PageFooter.vue +3 -0
  40. package/templates/playground/playground/components/UserMenu.vue +132 -0
  41. package/templates/playground/playground/components/not-found-paper-scene.vue +210 -0
  42. package/templates/playground/playground/components/not-found-paper-story.ts +149 -0
  43. package/templates/playground/playground/env.d.ts +1 -0
  44. package/templates/playground/playground/main.ts +8 -0
  45. package/templates/playground/playground/router/index.ts +24 -0
  46. package/templates/playground/playground/style.css +228 -0
  47. package/templates/playground/playground/views/[...all].vue +68 -0
  48. package/templates/playground/playground/views/components.vue +126 -0
  49. package/templates/playground/playground/views/index.vue +75 -0
  50. package/templates/playground/playground/views/settings.vue +98 -0
  51. package/templates/playground/public/images/SOURCES.md +21 -0
  52. package/templates/playground/public/images/airpods-max-orange.jpg +0 -0
  53. package/templates/playground/public/images/architecture.jpg +0 -0
  54. package/templates/playground/public/images/city.jpg +0 -0
  55. package/templates/playground/public/images/coast.jpg +0 -0
  56. package/templates/playground/public/images/desert.jpg +0 -0
  57. package/templates/playground/public/images/food.jpg +0 -0
  58. package/templates/playground/public/images/forest.jpg +0 -0
  59. package/templates/playground/public/images/lake.jpg +0 -0
  60. package/templates/playground/public/images/mountains.jpg +0 -0
  61. package/templates/playground/public/images/snow.jpg +0 -0
  62. package/templates/playground/public/images/sunset.jpg +0 -0
  63. package/templates/playground/public/images/waterfall.jpg +0 -0
  64. package/templates/playground/source-snapshot.json +111 -0
  65. package/templates/playground/tsconfig.json +24 -0
  66. package/templates/playground/vite.config.ts +9 -0
  67. package/tooling/create-playground.mjs +35 -0
  68. package/tooling/prepare-package.mjs +35 -0
  69. package/tooling/prepare-playground.mjs +90 -0
  70. package/tooling/test-playground-package.mjs +188 -0
  71. package/tooling/vite.d.ts +5 -0
  72. package/tooling/vite.js +10 -0
@@ -0,0 +1,28 @@
1
+ export interface PhotoSize {
2
+ width: number;
3
+ height: number;
4
+ }
5
+ export interface PhotoPoint {
6
+ x: number;
7
+ y: number;
8
+ }
9
+ export interface PhotoGeometry {
10
+ left: number;
11
+ top: number;
12
+ width: number;
13
+ height: number;
14
+ image: {
15
+ left: number;
16
+ top: number;
17
+ width: number;
18
+ height: number;
19
+ };
20
+ radius: number;
21
+ inset: [number, number, number, number];
22
+ }
23
+ export declare const touchImageQuery = "(any-pointer: coarse)";
24
+ export declare const isTouchImageDevice: () => boolean;
25
+ export declare const clamp: (value: number, min: number, max: number) => number;
26
+ export declare function fitPhoto(photo: PhotoSize, viewport: PhotoSize): PhotoSize;
27
+ export declare function boundPhoto(point: PhotoPoint, photo: PhotoSize, viewport: PhotoSize, scale: number, elastic?: boolean): PhotoPoint;
28
+ export declare function thumbnailGeometry(image: HTMLImageElement, panel: DOMRect): PhotoGeometry | null;
@@ -0,0 +1,18 @@
1
+ import { type PhotoGeometry, type PhotoSize } from './image-geometry';
2
+ export declare const photoMotion: {
3
+ readonly open: 360;
4
+ readonly close: 300;
5
+ readonly zoom: 300;
6
+ readonly settle: 320;
7
+ readonly page: 360;
8
+ };
9
+ export declare function photoSpring(duration: number, velocity?: number): string;
10
+ export declare const photoEasing: string;
11
+ export declare const photoPageEasing = "cubic-bezier(.38,0,.05,1)";
12
+ export declare function photoPageTiming(distance: number, velocity: number, _width: number): {
13
+ duration: number;
14
+ easing: string;
15
+ };
16
+ export declare function photoFlightSize(from: PhotoGeometry, to: PhotoGeometry): PhotoSize;
17
+ export declare function photoFlightFrame(rect: PhotoGeometry, base: PhotoSize): Keyframe;
18
+ export declare function readPhotoGeometry(frame: HTMLElement, photo: HTMLElement, panel: DOMRect): PhotoGeometry;
@@ -0,0 +1,2 @@
1
+ export declare const overlayZIndex: (depth: number) => number;
2
+ export declare const imageReturnZIndex: (depth: number) => number;
@@ -1,7 +1,9 @@
1
1
  import { type ObjectDirective, type VNode } from 'vue';
2
+ import '../styles/ripple.css';
2
3
  export declare function motionDuration(element: HTMLElement, fallback?: number): number;
3
4
  export declare const AppleRipple: ObjectDirective<HTMLElement, boolean>;
4
5
  export declare function ripple(node: VNode, enabled?: boolean): VNode;
6
+ export declare function animateEntrance(element: HTMLElement, axis?: 'x' | 'y'): Animation | undefined;
5
7
  export declare const AppleEntrance: ObjectDirective<HTMLElement, unknown>;
6
8
  type SelectionValue = unknown | {
7
9
  selector: string;
@@ -0,0 +1,12 @@
1
+ import { type VNode, type VNodeChild } from 'vue';
2
+ export declare function freezePopup(element: Element): number | undefined;
3
+ export declare function finishPopup(element: HTMLElement): void;
4
+ export declare function resetPopup(element: Element): void;
5
+ export declare function preparePopup(element: Element, reveal: boolean, interrupted?: number): void;
6
+ /** One scalar controls visibility. Reproject it when placement changes so an
7
+ * in-flight reveal/reversal never keeps the opening side's clip or translation. */
8
+ export declare function animatePopup(element: Element, opened: boolean, done: () => void, reveal?: boolean): void;
9
+ /** Shared field transition keeps the full panel layout stable during clipping. */
10
+ export declare function popupTransition(content: VNodeChild, name?: string, persisted?: boolean, gap?: number): VNode<import("vue").RendererNode, import("vue").RendererElement, {
11
+ [key: string]: any;
12
+ }>;
@@ -0,0 +1,31 @@
1
+ import type { ObjectDirective } from 'vue';
2
+ export type PopupSide = 'top' | 'bottom' | 'left' | 'right';
3
+ export declare function choosePopupSide(preferred: PopupSide, anchor: Pick<DOMRect, 'top' | 'bottom' | 'left' | 'right'>, size: {
4
+ width: number;
5
+ height: number;
6
+ }, viewport: {
7
+ width: number;
8
+ height: number;
9
+ }, gap?: number): PopupSide;
10
+ export declare function applyPopupSide(element: HTMLElement, side: PopupSide, gap?: number): void;
11
+ export interface PopupPositioner {
12
+ update(): void;
13
+ destroy(): void;
14
+ }
15
+ interface PopupPositionOptions {
16
+ anchor: HTMLElement;
17
+ placement?: () => PopupSide;
18
+ align?: () => 'start' | 'center' | 'end';
19
+ fixed?: boolean;
20
+ gap?: number;
21
+ }
22
+ /** Keep the DOM node, not a component ref: Vue clears refs before leave finishes. */
23
+ export declare function createPopupPositioner(panel: HTMLElement, options: PopupPositionOptions): PopupPositioner;
24
+ /** Inline field popups stay attached to their anchor; placement is live through leave. */
25
+ export declare function updateFieldPopup(element: HTMLElement): void;
26
+ export declare function unmountFieldPopup(element: HTMLElement): void;
27
+ export declare function mountFieldPopup(element: HTMLElement, gap?: number): void;
28
+ export declare const FieldPopupPlacement: ObjectDirective<HTMLElement, {
29
+ gap?: number;
30
+ } | undefined>;
31
+ export {};
@@ -0,0 +1,5 @@
1
+ export declare function holdPreviewNavigation(source: Element): () => void;
2
+ export declare function usePreviewNavigation(): {
3
+ previewRoot: import("vue").ShallowRef<HTMLElement | undefined, HTMLElement | undefined>;
4
+ previewActive: import("vue").Ref<boolean, boolean>;
5
+ };