diff --git a/examples/next-ts/pages/navigation-menu-nested.tsx b/examples/next-ts/pages/navigation-menu-nested.tsx index 45f34bc48c..cd82d8e259 100644 --- a/examples/next-ts/pages/navigation-menu-nested.tsx +++ b/examples/next-ts/pages/navigation-menu-nested.tsx @@ -47,6 +47,7 @@ export default function Page() { Products +
@@ -54,6 +55,7 @@ export default function Page() { Company +
@@ -61,6 +63,7 @@ export default function Page() { Developers +
@@ -77,14 +80,17 @@ export default function Page() {
+
+
+
@@ -99,15 +105,15 @@ export default function Page() { > {renderLinks(productSubmenu, { value: "extensibility", - items: ["Donec quis dui", "Vestibulum", "Nunc dignissim"], + items: ["API Extensions", "Plugin System", "Custom Hooks", "Integration Tools"], })} {renderLinks(productSubmenu, { value: "extensibility", - items: ["Fusce pellentesque", "Aliquam porttitor", "Pellentesque"], + items: ["Webhooks", "Event Handlers", "Middleware", "SDKs"], })} {renderLinks(productSubmenu, { value: "extensibility", - items: ["Fusce pellentesque", "Aliquam porttitor", "Pellentesque"], + items: ["Connectors", "Adapters", "Bridges", "Extensions"], })} @@ -119,15 +125,15 @@ export default function Page() { > {renderLinks(productSubmenu, { value: "security", - items: ["Fusce pellentesque", "Aliquam porttitor", "Pellentesque", "Vestibulum"], + items: ["Authentication", "Authorization", "Encryption", "SSL/TLS"], })} {renderLinks(productSubmenu, { value: "security", - items: ["Fusce pellentesque", "Aliquam porttitor", "Pellentesque"], + items: ["Firewall", "DDoS Protection", "Security Audit"], })} {renderLinks(productSubmenu, { value: "security", - items: ["Fusce pellentesque", "Aliquam porttitor"], + items: ["Access Control", "Identity Management"], })} @@ -139,15 +145,15 @@ export default function Page() { > {renderLinks(productSubmenu, { value: "authentication", - items: ["Donec quis dui", "Vestibulum", "Nunc dignissim"], + items: ["OAuth", "SAML", "JWT", "Multi-factor Auth"], })} {renderLinks(productSubmenu, { value: "authentication", - items: ["Fusce pellentesque", "Aliquam porttitor", "Pellentesque"], + items: ["Social Login", "Passwordless", "Biometrics"], })} {renderLinks(productSubmenu, { value: "authentication", - items: ["Fusce pellentesque", "Aliquam porttitor", "Pellentesque"], + items: ["SSO", "User Management", "Role-based Access"], })} @@ -160,14 +166,17 @@ export default function Page() {
+
+
+
@@ -182,11 +191,11 @@ export default function Page() { > {renderLinks(companySubmenu, { value: "customers", - items: ["Donec quis dui", "Vestibulum", "Nunc dignissim"], + items: ["Customer Stories", "Case Studies", "Testimonials", "Success Metrics"], })} {renderLinks(companySubmenu, { value: "customers", - items: ["Fusce pellentesque", "Aliquam porttitor", "Pellentesque"], + items: ["Customer Support", "Help Center", "Documentation"], })} @@ -198,11 +207,11 @@ export default function Page() { > {renderLinks(companySubmenu, { value: "partners", - items: ["Fusce pellentesque", "Aliquam porttitor", "Pellentesque", "Vestibulum"], + items: ["Partner Program", "Channel Partners", "Technology Partners", "Resellers"], })} {renderLinks(companySubmenu, { value: "partners", - items: ["Fusce pellentesque", "Aliquam porttitor", "Pellentesque"], + items: ["Integration Partners", "Consulting Partners", "System Integrators"], })} @@ -214,11 +223,16 @@ export default function Page() { > {renderLinks(companySubmenu, { value: "enterprise", - items: ["Donec quis dui", "Vestibulum", "Nunc dignissim"], + items: [ + "Enterprise Solutions", + "Large Scale Deployments", + "Custom Development", + "Dedicated Teams", + ], })} {renderLinks(companySubmenu, { value: "enterprise", - items: ["Fusce pellentesque", "Aliquam porttitor", "Pellentesque"], + items: ["Enterprise Support", "SLA Agreements", "Compliance"], })} @@ -228,11 +242,11 @@ export default function Page() { {renderLinks(rootMenu, { value: "developers", - items: ["Donec quis dui", "Vestibulum", "Fusce pellentesque", "Aliquam porttitor"], + items: ["Documentation", "API Reference", "SDKs", "Code Samples"], })} {renderLinks(rootMenu, { value: "developers", - items: ["Fusce pellentesque", "Aliquam porttitor"], + items: ["GitHub", "Changelog", "Release Notes"], })} @@ -241,9 +255,9 @@ export default function Page() { - - - + + + ) diff --git a/examples/next-ts/pages/navigation-menu-viewport.tsx b/examples/next-ts/pages/navigation-menu-viewport.tsx index 237345e85f..082bb373c8 100644 --- a/examples/next-ts/pages/navigation-menu-viewport.tsx +++ b/examples/next-ts/pages/navigation-menu-viewport.tsx @@ -30,7 +30,20 @@ export default function Page() { return ( <>
- +
+
@@ -39,6 +52,8 @@ export default function Page() { Products + +
@@ -46,6 +61,8 @@ export default function Page() { Company + +
@@ -53,6 +70,8 @@ export default function Page() { Developers + +
@@ -138,7 +157,17 @@ export default function Page() {
- + +
+ +
+

Heading

+

Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quos.

+
+ + Learn More +
+
@@ -147,25 +176,3 @@ export default function Page() { ) } - -const Navbar = ({ children }: { children: React.ReactNode }) => { - return ( -
- - {children} - -
- ) -} diff --git a/examples/nuxt-ts/app/components/Presence.vue b/examples/nuxt-ts/app/components/Presence.vue new file mode 100644 index 0000000000..95914ceb6c --- /dev/null +++ b/examples/nuxt-ts/app/components/Presence.vue @@ -0,0 +1,40 @@ + + + diff --git a/examples/nuxt-ts/app/pages/navigation-menu-viewport.vue b/examples/nuxt-ts/app/pages/navigation-menu-viewport.vue new file mode 100644 index 0000000000..19b44c5215 --- /dev/null +++ b/examples/nuxt-ts/app/pages/navigation-menu-viewport.vue @@ -0,0 +1,196 @@ + + + diff --git a/examples/nuxt-ts/app/pages/navigation-menu.vue b/examples/nuxt-ts/app/pages/navigation-menu.vue new file mode 100644 index 0000000000..fa40d3845e --- /dev/null +++ b/examples/nuxt-ts/app/pages/navigation-menu.vue @@ -0,0 +1,115 @@ + + + \ No newline at end of file diff --git a/examples/nuxt-ts/app/pages/popover.vue b/examples/nuxt-ts/app/pages/popover.vue index 235a90fe94..fdacdff4f1 100644 --- a/examples/nuxt-ts/app/pages/popover.vue +++ b/examples/nuxt-ts/app/pages/popover.vue @@ -25,7 +25,7 @@ const api = computed(() => popover.connect(service, normalizeProps))
-
+
@@ -36,7 +36,7 @@ const api = computed(() => popover.connect(service, normalizeProps))
-
+
I am just text diff --git a/examples/preact-ts/src/components/presence.tsx b/examples/preact-ts/src/components/presence.tsx new file mode 100644 index 0000000000..1283def478 --- /dev/null +++ b/examples/preact-ts/src/components/presence.tsx @@ -0,0 +1,41 @@ +import * as presence from "@zag-js/presence" +import { normalizeProps, useMachine } from "@zag-js/preact" +import { forwardRef, Ref } from "preact/compat" +import { useEffect, useRef } from "preact/hooks" +import { JSX } from "preact" + +interface PresenceProps extends JSX.HTMLAttributes {} + +export const Presence = forwardRef(function Presence(props, ref) { + const { hidden, ...rest } = props + + const present = !hidden + const service = useMachine(presence.machine, { present }) + const api = presence.connect(service, normalizeProps) + + const internalRef = useRef(null) + const mergedRef: Ref = (node) => { + internalRef.current = node + if (typeof ref === "function") { + ref(node) + } else if (ref) { + ref.current = node + } + } + + useEffect(() => { + if (internalRef.current) { + api.setNode(internalRef.current) + } + }, []) + + return ( +