@rehover/icons 0.1.0-beta.1 → 0.1.0-beta.2
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/dist/cli/index.js +343 -105
- package/dist/index.js +340 -102
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -450,7 +450,7 @@ function compileSpec(spec, paths) {
|
|
|
450
450
|
}
|
|
451
451
|
|
|
452
452
|
// lib/generators/runtime-template.generated.ts
|
|
453
|
-
var
|
|
453
|
+
var REHOVER_RUNTIME_TS = '/**\r\n * Rehover animation runtime \u2014 framework-agnostic, dependency-free, and safe to\r\n * copy into your project. Every generated icon (Vue/Svelte/Angular/Astro) ships\r\n * its SVG markup with `data-rehover` targets plus a compiled `plan`, then calls\r\n * `animateIcon(root, plan, props)` from here. All trigger behavior lives in this\r\n * one file, so it is identical across frameworks.\r\n *\r\n * This file has no imports on purpose: it is emitted verbatim next to your icons\r\n * (as `rehover-runtime.ts`) so nothing has to be installed. Tweak it freely.\r\n */\r\n\r\n/** What event starts an icon\'s animation. */\r\nexport type AnimationTrigger =\r\n | "hover"\r\n | "hoverHold"\r\n | "click"\r\n | "inView"\r\n | "autoplay"\r\n | "none";\r\n\r\n/** One element\'s compiled animation, keyed by its `data-rehover` target. */\r\nexport interface StepAnimation {\r\n /** Matches the `data-rehover` attribute on the element this animates. */\r\n key: string;\r\n /** Full keyframes (round-trip or destination) for hover/click/inView/autoplay. */\r\n active: Keyframe[];\r\n /** Rest \u2192 peak keyframes for `hoverHold` (the return is the reverse of this). */\r\n hold: Keyframe[];\r\n /** Base duration in seconds (before the `speed` prop divides it). */\r\n duration: number;\r\n /** Base delay in seconds (before `speed`; the `delay` prop is added at runtime). */\r\n delay: number;\r\n /** CSS timing-function string. */\r\n easing: string;\r\n /** Loops regardless of the `loop` prop (continuous/`repeat` steps). */\r\n alwaysLoop: boolean;\r\n}\r\n\r\n/** What the runtime needs from a compiled plan. */\r\nexport interface RuntimePlan {\r\n /** Per-element animations. */\r\n animations: StepAnimation[];\r\n /** Whether the icon autostarts (continuous specs). */\r\n continuous: boolean;\r\n}\r\n\r\n/** The runtime-tunable props that map to the icon\'s public API. */\r\nexport interface IconRuntimeProps {\r\n trigger: AnimationTrigger;\r\n speed: number;\r\n loop: boolean;\r\n delay: number;\r\n}\r\n\r\n/** Handle returned by {@link animateIcon} for prop updates and teardown. */\r\nexport interface IconController {\r\n /** Re-wire for new props (e.g. the playground changing `trigger`). */\r\n update(props: IconRuntimeProps): void;\r\n /** Remove all listeners/observers and cancel running animations. */\r\n destroy(): void;\r\n}\r\n\r\ntype Variant = "active" | "hold";\r\n\r\ninterface Bound {\r\n anim: StepAnimation;\r\n el: Element;\r\n}\r\n\r\n/** Attach the animation runtime to an already-rendered icon root. */\r\nexport function animateIcon(\r\n root: SVGSVGElement,\r\n plan: RuntimePlan,\r\n initialProps: IconRuntimeProps,\r\n): IconController {\r\n let props = initialProps;\r\n\r\n // Resolve each animation\'s DOM target once.\r\n const bound: Bound[] = [];\r\n for (const anim of plan.animations) {\r\n const el = root.querySelector(`[data-rehover="${anim.key}"]`);\r\n if (el) bound.push({ anim, el });\r\n }\r\n\r\n // The currently-playing Animation per target (for restart/reverse).\r\n const current = new Map<string, Animation>();\r\n const cleanups: Array<() => void> = [];\r\n let observer: IntersectionObserver | null = null;\r\n\r\n function makeAnimation(b: Bound, variant: Variant): Animation {\r\n const { anim } = b;\r\n const keyframes = variant === "hold" ? anim.hold : anim.active;\r\n const loops = variant === "active" && (anim.alwaysLoop || props.loop);\r\n return b.el.animate(keyframes, {\r\n duration: (anim.duration / props.speed) * 1000,\r\n delay: ((anim.delay + props.delay) / props.speed) * 1000,\r\n easing: anim.easing,\r\n fill: "forwards",\r\n iterations: loops ? Infinity : 1,\r\n });\r\n }\r\n\r\n /** (Re)start a variant on every target, cancelling any in-flight run. */\r\n function play(variant: Variant): void {\r\n for (const b of bound) {\r\n current.get(b.anim.key)?.cancel();\r\n current.set(b.anim.key, makeAnimation(b, variant));\r\n }\r\n }\r\n\r\n /** Reverse the held pose back to rest (smooth, from the current position). */\r\n function reverseToRest(): void {\r\n for (const b of bound) {\r\n const running = current.get(b.anim.key);\r\n if (running) running.reverse();\r\n }\r\n }\r\n\r\n function on(type: string, handler: EventListener): void {\r\n root.addEventListener(type, handler);\r\n cleanups.push(() => root.removeEventListener(type, handler));\r\n }\r\n\r\n /** Tear down listeners/observers and stop animations (keeps final pose). */\r\n function teardown(): void {\r\n for (const c of cleanups) c();\r\n cleanups.length = 0;\r\n observer?.disconnect();\r\n observer = null;\r\n }\r\n\r\n function setup(): void {\r\n teardown();\r\n\r\n // Accessibility reflects interactivity and stays in sync with `trigger`.\r\n if (props.trigger === "click") {\r\n root.setAttribute("role", "button");\r\n root.setAttribute("tabindex", "0");\r\n } else {\r\n root.setAttribute("role", "img");\r\n root.removeAttribute("tabindex");\r\n }\r\n\r\n // Continuous specs and autoplay start immediately.\r\n if (plan.continuous || props.trigger === "autoplay") play("active");\r\n\r\n switch (props.trigger) {\r\n case "hover":\r\n on("mouseenter", () => play("active"));\r\n on("focus", () => play("active"));\r\n break;\r\n case "hoverHold":\r\n on("mouseenter", () => play("hold"));\r\n on("mouseleave", () => reverseToRest());\r\n on("focus", () => play("hold"));\r\n on("blur", () => reverseToRest());\r\n break;\r\n case "click":\r\n on("click", () => play("active"));\r\n on("keydown", (e) => {\r\n const key = (e as KeyboardEvent).key;\r\n if (key === "Enter" || key === " ") {\r\n e.preventDefault();\r\n play("active");\r\n }\r\n });\r\n break;\r\n case "inView":\r\n observer = new IntersectionObserver(\r\n (entries) => {\r\n if (entries.some((entry) => entry.isIntersecting)) {\r\n play("active");\r\n observer?.disconnect();\r\n observer = null;\r\n }\r\n },\r\n { threshold: 0.5 },\r\n );\r\n observer.observe(root);\r\n break;\r\n }\r\n }\r\n\r\n setup();\r\n\r\n return {\r\n update(next: IconRuntimeProps) {\r\n props = next;\r\n // Reset every target to rest before re-wiring for the new props.\r\n for (const a of current.values()) a.cancel();\r\n current.clear();\r\n setup();\r\n },\r\n destroy() {\r\n teardown();\r\n for (const a of current.values()) a.cancel();\r\n current.clear();\r\n },\r\n };\r\n}\r\n';
|
|
454
454
|
|
|
455
455
|
// lib/generators/vue.ts
|
|
456
456
|
var DEFAULT_VUE_IMPORT_PATH = "@/components/icons";
|
|
@@ -518,7 +518,7 @@ function styleAttr(style) {
|
|
|
518
518
|
return s ? ` style="${s}"` : "";
|
|
519
519
|
}
|
|
520
520
|
function shapeMarkup(node) {
|
|
521
|
-
const draw = node.drawKey ? ` data-
|
|
521
|
+
const draw = node.drawKey ? ` data-rehover="${node.drawKey}" pathLength="1" style="stroke-dasharray: 1"` : "";
|
|
522
522
|
const d = node.data;
|
|
523
523
|
switch (d.type) {
|
|
524
524
|
case "path":
|
|
@@ -534,7 +534,7 @@ function shapeMarkup(node) {
|
|
|
534
534
|
function nodeMarkup(node, indent) {
|
|
535
535
|
if (node.kind === "shape") return shapeMarkup(node);
|
|
536
536
|
const child = nodeMarkup(node.child, `${indent} `);
|
|
537
|
-
return `<g data-
|
|
537
|
+
return `<g data-rehover="${node.key}"${styleAttr(node.style)}>
|
|
538
538
|
${indent} ${child}
|
|
539
539
|
${indent}</g>`;
|
|
540
540
|
}
|
|
@@ -639,7 +639,7 @@ onUnmounted(() => controller?.destroy())
|
|
|
639
639
|
importStatement: `import ${name} from '@/components/icons/${name}.vue';`,
|
|
640
640
|
usageSnippet: `<${name} />`,
|
|
641
641
|
dependencies: "none \u2014 self-contained (no npm install)",
|
|
642
|
-
runtime: { filename: `${RUNTIME_FILENAME}.ts`, code:
|
|
642
|
+
runtime: { filename: `${RUNTIME_FILENAME}.ts`, code: REHOVER_RUNTIME_TS }
|
|
643
643
|
};
|
|
644
644
|
}
|
|
645
645
|
};
|
|
@@ -807,6 +807,200 @@ var metadata3 = {
|
|
|
807
807
|
animationDescription: "The bell rocks back and forth around its top mount, settling to center."
|
|
808
808
|
};
|
|
809
809
|
|
|
810
|
+
// icons/brain/paths.ts
|
|
811
|
+
var brainPaths = {
|
|
812
|
+
leftHalf: {
|
|
813
|
+
type: "path",
|
|
814
|
+
d: "M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"
|
|
815
|
+
},
|
|
816
|
+
rightHalf: {
|
|
817
|
+
type: "path",
|
|
818
|
+
d: "M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z"
|
|
819
|
+
},
|
|
820
|
+
veinCenter: { type: "path", d: "M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4" },
|
|
821
|
+
veinTopRight: { type: "path", d: "M17.599 6.5A3 3 0 0 0 13.6 3.4" },
|
|
822
|
+
veinTopLeft: { type: "path", d: "M6.4 6.5A3 3 0 0 1 10.4 3.4" },
|
|
823
|
+
veinMiddleRight: { type: "path", d: "M18.5 10.5A2.5 2.5 0 0 0 15 9" },
|
|
824
|
+
veinMiddleLeft: { type: "path", d: "M5.5 10.5A2.5 2.5 0 0 1 9 9" },
|
|
825
|
+
veinBottomRight: { type: "path", d: "M16.5 15.5A2.5 2.5 0 0 0 13 16" },
|
|
826
|
+
veinBottomLeft: { type: "path", d: "M7.5 15.5A2.5 2.5 0 0 1 11 16" }
|
|
827
|
+
};
|
|
828
|
+
|
|
829
|
+
// icons/brain/animation.spec.ts
|
|
830
|
+
var brainSpec = {
|
|
831
|
+
elements: {
|
|
832
|
+
leftHalf: { id: "brain-left-half", description: "Left hemisphere outline" },
|
|
833
|
+
rightHalf: {
|
|
834
|
+
id: "brain-right-half",
|
|
835
|
+
description: "Right hemisphere outline"
|
|
836
|
+
},
|
|
837
|
+
veinCenter: {
|
|
838
|
+
id: "brain-vein-center",
|
|
839
|
+
description: "Central neural pathway"
|
|
840
|
+
},
|
|
841
|
+
veinTopLeft: {
|
|
842
|
+
id: "brain-vein-top-left",
|
|
843
|
+
description: "Top left neural pathway"
|
|
844
|
+
},
|
|
845
|
+
veinTopRight: {
|
|
846
|
+
id: "brain-vein-top-right",
|
|
847
|
+
description: "Top right neural pathway"
|
|
848
|
+
},
|
|
849
|
+
veinMiddleLeft: {
|
|
850
|
+
id: "brain-vein-middle-left",
|
|
851
|
+
description: "Middle left neural pathway"
|
|
852
|
+
},
|
|
853
|
+
veinMiddleRight: {
|
|
854
|
+
id: "brain-vein-middle-right",
|
|
855
|
+
description: "Middle right neural pathway"
|
|
856
|
+
},
|
|
857
|
+
veinBottomLeft: {
|
|
858
|
+
id: "brain-vein-bottom-left",
|
|
859
|
+
description: "Bottom left neural pathway"
|
|
860
|
+
},
|
|
861
|
+
veinBottomRight: {
|
|
862
|
+
id: "brain-vein-bottom-right",
|
|
863
|
+
description: "Bottom right neural pathway"
|
|
864
|
+
}
|
|
865
|
+
},
|
|
866
|
+
sequences: {
|
|
867
|
+
trigger: [
|
|
868
|
+
{
|
|
869
|
+
element: "veinCenter",
|
|
870
|
+
property: "pathLength",
|
|
871
|
+
values: [1, 0, 1],
|
|
872
|
+
duration: 1.5,
|
|
873
|
+
ease: "easeInOut"
|
|
874
|
+
},
|
|
875
|
+
{
|
|
876
|
+
element: "veinCenter",
|
|
877
|
+
property: "opacity",
|
|
878
|
+
values: [1, 0.2, 1],
|
|
879
|
+
duration: 1.5,
|
|
880
|
+
ease: "easeInOut"
|
|
881
|
+
},
|
|
882
|
+
{
|
|
883
|
+
element: "veinTopRight",
|
|
884
|
+
property: "pathLength",
|
|
885
|
+
values: [1, 0, 1],
|
|
886
|
+
duration: 1.5,
|
|
887
|
+
delay: 0.3,
|
|
888
|
+
ease: "easeInOut"
|
|
889
|
+
},
|
|
890
|
+
{
|
|
891
|
+
element: "veinTopRight",
|
|
892
|
+
property: "opacity",
|
|
893
|
+
values: [1, 0.2, 1],
|
|
894
|
+
duration: 1.5,
|
|
895
|
+
delay: 0.3,
|
|
896
|
+
ease: "easeInOut"
|
|
897
|
+
},
|
|
898
|
+
{
|
|
899
|
+
element: "veinTopLeft",
|
|
900
|
+
property: "pathLength",
|
|
901
|
+
values: [1, 0, 1],
|
|
902
|
+
duration: 1.5,
|
|
903
|
+
delay: 0.3,
|
|
904
|
+
ease: "easeInOut"
|
|
905
|
+
},
|
|
906
|
+
{
|
|
907
|
+
element: "veinTopLeft",
|
|
908
|
+
property: "opacity",
|
|
909
|
+
values: [1, 0.2, 1],
|
|
910
|
+
duration: 1.5,
|
|
911
|
+
delay: 0.3,
|
|
912
|
+
ease: "easeInOut"
|
|
913
|
+
},
|
|
914
|
+
{
|
|
915
|
+
element: "veinMiddleRight",
|
|
916
|
+
property: "pathLength",
|
|
917
|
+
values: [1, 0, 1],
|
|
918
|
+
duration: 1.5,
|
|
919
|
+
delay: 0.6,
|
|
920
|
+
ease: "easeInOut"
|
|
921
|
+
},
|
|
922
|
+
{
|
|
923
|
+
element: "veinMiddleRight",
|
|
924
|
+
property: "opacity",
|
|
925
|
+
values: [1, 0.2, 1],
|
|
926
|
+
duration: 1.5,
|
|
927
|
+
delay: 0.6,
|
|
928
|
+
ease: "easeInOut"
|
|
929
|
+
},
|
|
930
|
+
{
|
|
931
|
+
element: "veinMiddleLeft",
|
|
932
|
+
property: "pathLength",
|
|
933
|
+
values: [1, 0, 1],
|
|
934
|
+
duration: 1.5,
|
|
935
|
+
delay: 0.6,
|
|
936
|
+
ease: "easeInOut"
|
|
937
|
+
},
|
|
938
|
+
{
|
|
939
|
+
element: "veinMiddleLeft",
|
|
940
|
+
property: "opacity",
|
|
941
|
+
values: [1, 0.2, 1],
|
|
942
|
+
duration: 1.5,
|
|
943
|
+
delay: 0.6,
|
|
944
|
+
ease: "easeInOut"
|
|
945
|
+
},
|
|
946
|
+
{
|
|
947
|
+
element: "veinBottomRight",
|
|
948
|
+
property: "pathLength",
|
|
949
|
+
values: [1, 0, 1],
|
|
950
|
+
duration: 1.5,
|
|
951
|
+
delay: 0.9,
|
|
952
|
+
ease: "easeInOut"
|
|
953
|
+
},
|
|
954
|
+
{
|
|
955
|
+
element: "veinBottomRight",
|
|
956
|
+
property: "opacity",
|
|
957
|
+
values: [1, 0.2, 1],
|
|
958
|
+
duration: 1.5,
|
|
959
|
+
delay: 0.9,
|
|
960
|
+
ease: "easeInOut"
|
|
961
|
+
},
|
|
962
|
+
{
|
|
963
|
+
element: "veinBottomLeft",
|
|
964
|
+
property: "pathLength",
|
|
965
|
+
values: [1, 0, 1],
|
|
966
|
+
duration: 1.5,
|
|
967
|
+
delay: 0.9,
|
|
968
|
+
ease: "easeInOut"
|
|
969
|
+
},
|
|
970
|
+
{
|
|
971
|
+
element: "veinBottomLeft",
|
|
972
|
+
property: "opacity",
|
|
973
|
+
values: [1, 0.2, 1],
|
|
974
|
+
duration: 1.5,
|
|
975
|
+
delay: 0.9,
|
|
976
|
+
ease: "easeInOut"
|
|
977
|
+
}
|
|
978
|
+
]
|
|
979
|
+
},
|
|
980
|
+
defaultTrigger: "inView",
|
|
981
|
+
defaultLoop: true
|
|
982
|
+
};
|
|
983
|
+
var animation_spec_default4 = brainSpec;
|
|
984
|
+
|
|
985
|
+
// icons/brain/metadata.ts
|
|
986
|
+
var metadata4 = {
|
|
987
|
+
name: "Brain",
|
|
988
|
+
slug: "brain",
|
|
989
|
+
category: "Technology",
|
|
990
|
+
tags: [
|
|
991
|
+
"brain",
|
|
992
|
+
"ai",
|
|
993
|
+
"artificial intelligence",
|
|
994
|
+
"mind",
|
|
995
|
+
"neural",
|
|
996
|
+
"thinking",
|
|
997
|
+
"machine learning"
|
|
998
|
+
],
|
|
999
|
+
featured: false,
|
|
1000
|
+
description: "A brain symbolizing artificial intelligence and neural networks.",
|
|
1001
|
+
animationDescription: "The internal neural pathways sequentially pulse and redraw, representing active thinking and data processing."
|
|
1002
|
+
};
|
|
1003
|
+
|
|
810
1004
|
// icons/card-flip/paths.ts
|
|
811
1005
|
var cardFlipPaths = {
|
|
812
1006
|
// Rounded card outline spanning x:4–20, y:6–18.
|
|
@@ -850,10 +1044,10 @@ var cardFlipSpec = {
|
|
|
850
1044
|
defaultTrigger: "hoverHold",
|
|
851
1045
|
perspective: 500
|
|
852
1046
|
};
|
|
853
|
-
var
|
|
1047
|
+
var animation_spec_default5 = cardFlipSpec;
|
|
854
1048
|
|
|
855
1049
|
// icons/card-flip/metadata.ts
|
|
856
|
-
var
|
|
1050
|
+
var metadata5 = {
|
|
857
1051
|
name: "CardFlip",
|
|
858
1052
|
slug: "card-flip",
|
|
859
1053
|
category: "Objects",
|
|
@@ -897,10 +1091,10 @@ var checkSpec = {
|
|
|
897
1091
|
},
|
|
898
1092
|
defaultTrigger: "hover"
|
|
899
1093
|
};
|
|
900
|
-
var
|
|
1094
|
+
var animation_spec_default6 = checkSpec;
|
|
901
1095
|
|
|
902
1096
|
// icons/check/metadata.ts
|
|
903
|
-
var
|
|
1097
|
+
var metadata6 = {
|
|
904
1098
|
name: "Check",
|
|
905
1099
|
slug: "check",
|
|
906
1100
|
category: "Status",
|
|
@@ -945,10 +1139,10 @@ var clockSpec = {
|
|
|
945
1139
|
},
|
|
946
1140
|
defaultTrigger: "hoverHold"
|
|
947
1141
|
};
|
|
948
|
-
var
|
|
1142
|
+
var animation_spec_default7 = clockSpec;
|
|
949
1143
|
|
|
950
1144
|
// icons/clock/metadata.ts
|
|
951
|
-
var
|
|
1145
|
+
var metadata7 = {
|
|
952
1146
|
name: "Clock",
|
|
953
1147
|
slug: "clock",
|
|
954
1148
|
category: "Time",
|
|
@@ -960,75 +1154,48 @@ var metadata6 = {
|
|
|
960
1154
|
|
|
961
1155
|
// icons/creating-file/paths.ts
|
|
962
1156
|
var creatingFilePaths = {
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
},
|
|
967
|
-
|
|
968
|
-
type: "path",
|
|
969
|
-
d: "M10 11l1-.8 1.2 1.4 1-.9 1.2 1"
|
|
970
|
-
},
|
|
971
|
-
lineTop: {
|
|
972
|
-
type: "path",
|
|
973
|
-
d: "M10 11l1-.7 1.1 1.2 1-.8 1.2.9H16"
|
|
974
|
-
},
|
|
975
|
-
lineMiddle: {
|
|
976
|
-
type: "path",
|
|
977
|
-
d: "M10 14l.9-.5 1.2 1.5 1-.9 1.1.6H15"
|
|
978
|
-
},
|
|
979
|
-
lineBottom: {
|
|
980
|
-
type: "path",
|
|
981
|
-
d: "M10 17l1-.6 1 1 1.1-.7 1.1.8H16"
|
|
982
|
-
}
|
|
1157
|
+
outline: { type: "path", d: "M6 4L14 4L18 8L18 20L6 20L6 4" },
|
|
1158
|
+
fold: { type: "path", d: "M14 4L14 8L18 8" },
|
|
1159
|
+
line1: { type: "path", d: "M9 10L15 10" },
|
|
1160
|
+
line2: { type: "path", d: "M9 13L15 13" },
|
|
1161
|
+
line3: { type: "path", d: "M9 16L12 16" }
|
|
983
1162
|
};
|
|
984
1163
|
|
|
985
1164
|
// icons/creating-file/animation.spec.ts
|
|
986
1165
|
var creatingFileSpec = {
|
|
987
1166
|
elements: {
|
|
988
|
-
|
|
989
|
-
id: "creating-file-
|
|
990
|
-
description: "
|
|
991
|
-
},
|
|
992
|
-
fold: {
|
|
993
|
-
id: "creating-file-fold",
|
|
994
|
-
description: "Folded page corner"
|
|
1167
|
+
outline: {
|
|
1168
|
+
id: "creating-file-outline",
|
|
1169
|
+
description: "File outline with folded corner"
|
|
995
1170
|
},
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
}
|
|
1000
|
-
lineMiddle: {
|
|
1001
|
-
id: "creating-file-lineMiddle",
|
|
1002
|
-
description: "Middle content line"
|
|
1003
|
-
},
|
|
1004
|
-
lineBottom: {
|
|
1005
|
-
id: "creating-file-lineBottom",
|
|
1006
|
-
description: "Bottom content line"
|
|
1007
|
-
}
|
|
1171
|
+
fold: { id: "creating-file-fold", description: "Folded corner detail" },
|
|
1172
|
+
line1: { id: "creating-file-line1", description: "First text line" },
|
|
1173
|
+
line2: { id: "creating-file-line2", description: "Second text line" },
|
|
1174
|
+
line3: { id: "creating-file-line3", description: "Third text line" }
|
|
1008
1175
|
},
|
|
1009
1176
|
sequences: {
|
|
1010
1177
|
trigger: [
|
|
1011
1178
|
{
|
|
1012
|
-
element: "
|
|
1179
|
+
element: "line1",
|
|
1013
1180
|
property: "opacity",
|
|
1014
|
-
values: [0.3, 1
|
|
1015
|
-
duration: 0.
|
|
1181
|
+
values: [1, 0.3, 1],
|
|
1182
|
+
duration: 0.6,
|
|
1016
1183
|
ease: "easeInOut"
|
|
1017
1184
|
},
|
|
1018
1185
|
{
|
|
1019
|
-
element: "
|
|
1186
|
+
element: "line2",
|
|
1020
1187
|
property: "opacity",
|
|
1021
|
-
values: [0.3, 1
|
|
1022
|
-
duration: 0.
|
|
1023
|
-
delay: 0.
|
|
1188
|
+
values: [1, 0.3, 1],
|
|
1189
|
+
duration: 0.6,
|
|
1190
|
+
delay: 0.2,
|
|
1024
1191
|
ease: "easeInOut"
|
|
1025
1192
|
},
|
|
1026
1193
|
{
|
|
1027
|
-
element: "
|
|
1194
|
+
element: "line3",
|
|
1028
1195
|
property: "opacity",
|
|
1029
|
-
values: [0.3, 1
|
|
1030
|
-
duration: 0.
|
|
1031
|
-
delay: 0.
|
|
1196
|
+
values: [1, 0.3, 1],
|
|
1197
|
+
duration: 0.6,
|
|
1198
|
+
delay: 0.4,
|
|
1032
1199
|
ease: "easeInOut"
|
|
1033
1200
|
}
|
|
1034
1201
|
]
|
|
@@ -1036,10 +1203,10 @@ var creatingFileSpec = {
|
|
|
1036
1203
|
defaultTrigger: "inView",
|
|
1037
1204
|
defaultLoop: true
|
|
1038
1205
|
};
|
|
1039
|
-
var
|
|
1206
|
+
var animation_spec_default8 = creatingFileSpec;
|
|
1040
1207
|
|
|
1041
1208
|
// icons/creating-file/metadata.ts
|
|
1042
|
-
var
|
|
1209
|
+
var metadata8 = {
|
|
1043
1210
|
name: "CreatingFile",
|
|
1044
1211
|
slug: "creating-file",
|
|
1045
1212
|
category: "AI",
|
|
@@ -1100,10 +1267,10 @@ var doorSpec = {
|
|
|
1100
1267
|
defaultTrigger: "hoverHold",
|
|
1101
1268
|
perspective: 500
|
|
1102
1269
|
};
|
|
1103
|
-
var
|
|
1270
|
+
var animation_spec_default9 = doorSpec;
|
|
1104
1271
|
|
|
1105
1272
|
// icons/door/metadata.ts
|
|
1106
|
-
var
|
|
1273
|
+
var metadata9 = {
|
|
1107
1274
|
name: "Door",
|
|
1108
1275
|
slug: "door",
|
|
1109
1276
|
category: "Objects",
|
|
@@ -1154,10 +1321,10 @@ var downloadSpec = {
|
|
|
1154
1321
|
},
|
|
1155
1322
|
defaultTrigger: "hoverHold"
|
|
1156
1323
|
};
|
|
1157
|
-
var
|
|
1324
|
+
var animation_spec_default10 = downloadSpec;
|
|
1158
1325
|
|
|
1159
1326
|
// icons/download/metadata.ts
|
|
1160
|
-
var
|
|
1327
|
+
var metadata10 = {
|
|
1161
1328
|
name: "Download",
|
|
1162
1329
|
slug: "download",
|
|
1163
1330
|
category: "Actions",
|
|
@@ -1235,10 +1402,10 @@ var externalLinkSpec = {
|
|
|
1235
1402
|
},
|
|
1236
1403
|
defaultTrigger: "hoverHold"
|
|
1237
1404
|
};
|
|
1238
|
-
var
|
|
1405
|
+
var animation_spec_default11 = externalLinkSpec;
|
|
1239
1406
|
|
|
1240
1407
|
// icons/external-link/metadata.ts
|
|
1241
|
-
var
|
|
1408
|
+
var metadata11 = {
|
|
1242
1409
|
name: "ExternalLink",
|
|
1243
1410
|
slug: "external-link",
|
|
1244
1411
|
category: "Uncategorized",
|
|
@@ -1282,10 +1449,10 @@ var eyeSpec = {
|
|
|
1282
1449
|
},
|
|
1283
1450
|
defaultTrigger: "hoverHold"
|
|
1284
1451
|
};
|
|
1285
|
-
var
|
|
1452
|
+
var animation_spec_default12 = eyeSpec;
|
|
1286
1453
|
|
|
1287
1454
|
// icons/eye/metadata.ts
|
|
1288
|
-
var
|
|
1455
|
+
var metadata12 = {
|
|
1289
1456
|
name: "Eye",
|
|
1290
1457
|
slug: "eye",
|
|
1291
1458
|
category: "Visibility",
|
|
@@ -1322,10 +1489,10 @@ var heartSpec = {
|
|
|
1322
1489
|
},
|
|
1323
1490
|
defaultTrigger: "hover"
|
|
1324
1491
|
};
|
|
1325
|
-
var
|
|
1492
|
+
var animation_spec_default13 = heartSpec;
|
|
1326
1493
|
|
|
1327
1494
|
// icons/heart/metadata.ts
|
|
1328
|
-
var
|
|
1495
|
+
var metadata13 = {
|
|
1329
1496
|
name: "Heart",
|
|
1330
1497
|
slug: "heart",
|
|
1331
1498
|
category: "Social",
|
|
@@ -1373,10 +1540,10 @@ var helpSpec = {
|
|
|
1373
1540
|
},
|
|
1374
1541
|
defaultTrigger: "hover"
|
|
1375
1542
|
};
|
|
1376
|
-
var
|
|
1543
|
+
var animation_spec_default14 = helpSpec;
|
|
1377
1544
|
|
|
1378
1545
|
// icons/help/metadata.ts
|
|
1379
|
-
var
|
|
1546
|
+
var metadata14 = {
|
|
1380
1547
|
name: "Help",
|
|
1381
1548
|
slug: "help",
|
|
1382
1549
|
category: "Interface",
|
|
@@ -1450,10 +1617,10 @@ var layersSpec = {
|
|
|
1450
1617
|
},
|
|
1451
1618
|
defaultTrigger: "hover"
|
|
1452
1619
|
};
|
|
1453
|
-
var
|
|
1620
|
+
var animation_spec_default15 = layersSpec;
|
|
1454
1621
|
|
|
1455
1622
|
// icons/layers/metadata.ts
|
|
1456
|
-
var
|
|
1623
|
+
var metadata15 = {
|
|
1457
1624
|
name: "Layers",
|
|
1458
1625
|
slug: "layers",
|
|
1459
1626
|
category: "Interface",
|
|
@@ -1490,10 +1657,10 @@ var refreshSpec = {
|
|
|
1490
1657
|
},
|
|
1491
1658
|
defaultTrigger: "hover"
|
|
1492
1659
|
};
|
|
1493
|
-
var
|
|
1660
|
+
var animation_spec_default16 = refreshSpec;
|
|
1494
1661
|
|
|
1495
1662
|
// icons/refresh/metadata.ts
|
|
1496
|
-
var
|
|
1663
|
+
var metadata16 = {
|
|
1497
1664
|
name: "Refresh",
|
|
1498
1665
|
slug: "refresh",
|
|
1499
1666
|
category: "Interface",
|
|
@@ -1549,10 +1716,10 @@ var searchSpec = {
|
|
|
1549
1716
|
},
|
|
1550
1717
|
defaultTrigger: "hover"
|
|
1551
1718
|
};
|
|
1552
|
-
var
|
|
1719
|
+
var animation_spec_default17 = searchSpec;
|
|
1553
1720
|
|
|
1554
1721
|
// icons/search/metadata.ts
|
|
1555
|
-
var
|
|
1722
|
+
var metadata17 = {
|
|
1556
1723
|
name: "Search",
|
|
1557
1724
|
slug: "search",
|
|
1558
1725
|
category: "Interface",
|
|
@@ -1616,10 +1783,10 @@ var signalSpec = {
|
|
|
1616
1783
|
},
|
|
1617
1784
|
defaultTrigger: "hover"
|
|
1618
1785
|
};
|
|
1619
|
-
var
|
|
1786
|
+
var animation_spec_default18 = signalSpec;
|
|
1620
1787
|
|
|
1621
1788
|
// icons/signal/metadata.ts
|
|
1622
|
-
var
|
|
1789
|
+
var metadata18 = {
|
|
1623
1790
|
name: "Signal",
|
|
1624
1791
|
slug: "signal",
|
|
1625
1792
|
category: "Communication",
|
|
@@ -1629,6 +1796,75 @@ var metadata17 = {
|
|
|
1629
1796
|
animationDescription: "The bars compress and spring back in a staggered cascade, like a pulse sweeping across the signal."
|
|
1630
1797
|
};
|
|
1631
1798
|
|
|
1799
|
+
// icons/syncing/paths.ts
|
|
1800
|
+
var syncingPaths = {
|
|
1801
|
+
arrowOuter: {
|
|
1802
|
+
type: "path",
|
|
1803
|
+
d: "M 21 12 A 9 9 0 1 1 12 3 C 14.52 3 16.93 4 18.74 5.74 L 21 8 M 21 3 v 5 h -5"
|
|
1804
|
+
},
|
|
1805
|
+
arrowInner: {
|
|
1806
|
+
type: "path",
|
|
1807
|
+
d: "M 7 12 A 5 5 0 1 0 12 17 C 10.6 17 9.26 16.44 8.26 15.47 L 7 14 M 12 14 h -5 v 5"
|
|
1808
|
+
}
|
|
1809
|
+
};
|
|
1810
|
+
|
|
1811
|
+
// icons/syncing/animation.spec.ts
|
|
1812
|
+
var syncingSpec = {
|
|
1813
|
+
elements: {
|
|
1814
|
+
arrowOuter: {
|
|
1815
|
+
id: "syncing-arrow-outer",
|
|
1816
|
+
description: "Outer clockwise arrow"
|
|
1817
|
+
},
|
|
1818
|
+
arrowInner: {
|
|
1819
|
+
id: "syncing-arrow-inner",
|
|
1820
|
+
description: "Inner counter-clockwise arrow"
|
|
1821
|
+
}
|
|
1822
|
+
},
|
|
1823
|
+
sequences: {
|
|
1824
|
+
trigger: [
|
|
1825
|
+
{
|
|
1826
|
+
element: "arrowOuter",
|
|
1827
|
+
property: "rotate",
|
|
1828
|
+
values: [0, 360, 360],
|
|
1829
|
+
duration: 2.2,
|
|
1830
|
+
ease: "easeInOut",
|
|
1831
|
+
origin: { x: 12, y: 12 }
|
|
1832
|
+
},
|
|
1833
|
+
{
|
|
1834
|
+
element: "arrowInner",
|
|
1835
|
+
property: "rotate",
|
|
1836
|
+
values: [0, -360, -360],
|
|
1837
|
+
duration: 2.2,
|
|
1838
|
+
ease: "easeInOut",
|
|
1839
|
+
origin: { x: 12, y: 12 }
|
|
1840
|
+
}
|
|
1841
|
+
]
|
|
1842
|
+
},
|
|
1843
|
+
defaultTrigger: "inView",
|
|
1844
|
+
defaultLoop: true
|
|
1845
|
+
};
|
|
1846
|
+
var animation_spec_default19 = syncingSpec;
|
|
1847
|
+
|
|
1848
|
+
// icons/syncing/metadata.ts
|
|
1849
|
+
var metadata19 = {
|
|
1850
|
+
name: "Syncing",
|
|
1851
|
+
slug: "syncing",
|
|
1852
|
+
category: "System",
|
|
1853
|
+
tags: [
|
|
1854
|
+
"sync",
|
|
1855
|
+
"syncing",
|
|
1856
|
+
"refresh",
|
|
1857
|
+
"update",
|
|
1858
|
+
"loading",
|
|
1859
|
+
"process",
|
|
1860
|
+
"arrows",
|
|
1861
|
+
"cycle"
|
|
1862
|
+
],
|
|
1863
|
+
featured: false,
|
|
1864
|
+
description: "Two concentric arrows indicating synchronization or background processing.",
|
|
1865
|
+
animationDescription: "The two circular arrows rotate around a shared center in opposite directions, then align briefly before continuing."
|
|
1866
|
+
};
|
|
1867
|
+
|
|
1632
1868
|
// icons/user/paths.ts
|
|
1633
1869
|
var userPaths = {
|
|
1634
1870
|
shape: {
|
|
@@ -1666,10 +1902,10 @@ var userSpec = {
|
|
|
1666
1902
|
},
|
|
1667
1903
|
defaultTrigger: "hover"
|
|
1668
1904
|
};
|
|
1669
|
-
var
|
|
1905
|
+
var animation_spec_default20 = userSpec;
|
|
1670
1906
|
|
|
1671
1907
|
// icons/user/metadata.ts
|
|
1672
|
-
var
|
|
1908
|
+
var metadata20 = {
|
|
1673
1909
|
name: "User",
|
|
1674
1910
|
slug: "user",
|
|
1675
1911
|
category: "Uncategorized",
|
|
@@ -1720,10 +1956,10 @@ var wifiSpec = {
|
|
|
1720
1956
|
},
|
|
1721
1957
|
defaultTrigger: "hover"
|
|
1722
1958
|
};
|
|
1723
|
-
var
|
|
1959
|
+
var animation_spec_default21 = wifiSpec;
|
|
1724
1960
|
|
|
1725
1961
|
// icons/wifi/metadata.ts
|
|
1726
|
-
var
|
|
1962
|
+
var metadata21 = {
|
|
1727
1963
|
name: "Wifi",
|
|
1728
1964
|
slug: "wifi",
|
|
1729
1965
|
category: "Connectivity",
|
|
@@ -1738,22 +1974,24 @@ var ICON_SOURCES = {
|
|
|
1738
1974
|
"badge-check": { paths: badgeCheckPaths, spec: animation_spec_default, metadata },
|
|
1739
1975
|
"ball": { paths: ballPaths, spec: animation_spec_default2, metadata: metadata2 },
|
|
1740
1976
|
"bell": { paths: bellPaths, spec: animation_spec_default3, metadata: metadata3 },
|
|
1741
|
-
"
|
|
1742
|
-
"
|
|
1743
|
-
"
|
|
1744
|
-
"
|
|
1745
|
-
"
|
|
1746
|
-
"
|
|
1747
|
-
"
|
|
1748
|
-
"
|
|
1749
|
-
"
|
|
1750
|
-
"
|
|
1751
|
-
"
|
|
1752
|
-
"
|
|
1753
|
-
"
|
|
1754
|
-
"
|
|
1755
|
-
"
|
|
1756
|
-
"
|
|
1977
|
+
"brain": { paths: brainPaths, spec: animation_spec_default4, metadata: metadata4 },
|
|
1978
|
+
"card-flip": { paths: cardFlipPaths, spec: animation_spec_default5, metadata: metadata5 },
|
|
1979
|
+
"check": { paths: checkPaths, spec: animation_spec_default6, metadata: metadata6 },
|
|
1980
|
+
"clock": { paths: clockPaths, spec: animation_spec_default7, metadata: metadata7 },
|
|
1981
|
+
"creating-file": { paths: creatingFilePaths, spec: animation_spec_default8, metadata: metadata8 },
|
|
1982
|
+
"door": { paths: doorPaths, spec: animation_spec_default9, metadata: metadata9 },
|
|
1983
|
+
"download": { paths: downloadPaths, spec: animation_spec_default10, metadata: metadata10 },
|
|
1984
|
+
"external-link": { paths: externalLinkPaths, spec: animation_spec_default11, metadata: metadata11 },
|
|
1985
|
+
"eye": { paths: eyePaths, spec: animation_spec_default12, metadata: metadata12 },
|
|
1986
|
+
"heart": { paths: heartPaths, spec: animation_spec_default13, metadata: metadata13 },
|
|
1987
|
+
"help": { paths: helpPaths, spec: animation_spec_default14, metadata: metadata14 },
|
|
1988
|
+
"layers": { paths: layersPaths, spec: animation_spec_default15, metadata: metadata15 },
|
|
1989
|
+
"refresh": { paths: refreshPaths, spec: animation_spec_default16, metadata: metadata16 },
|
|
1990
|
+
"search": { paths: searchPaths, spec: animation_spec_default17, metadata: metadata17 },
|
|
1991
|
+
"signal": { paths: signalPaths, spec: animation_spec_default18, metadata: metadata18 },
|
|
1992
|
+
"syncing": { paths: syncingPaths, spec: animation_spec_default19, metadata: metadata19 },
|
|
1993
|
+
"user": { paths: userPaths, spec: animation_spec_default20, metadata: metadata20 },
|
|
1994
|
+
"wifi": { paths: wifiPaths, spec: animation_spec_default21, metadata: metadata21 }
|
|
1757
1995
|
};
|
|
1758
1996
|
|
|
1759
1997
|
// lib/icon-sources.ts
|