From fe8f6d7a3eef34e932bd43d244460d417865de88 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Fri, 24 Oct 2025 08:26:17 -0500 Subject: wip: desktop work --- packages/ui/src/components/collapsible.css | 46 ++++++++++++++++++++++++++++++ packages/ui/src/components/collapsible.tsx | 35 +++++++++++++++++++++++ packages/ui/src/components/index.ts | 1 + 3 files changed, 82 insertions(+) create mode 100644 packages/ui/src/components/collapsible.css create mode 100644 packages/ui/src/components/collapsible.tsx (limited to 'packages/ui/src/components') diff --git a/packages/ui/src/components/collapsible.css b/packages/ui/src/components/collapsible.css new file mode 100644 index 000000000..441d0083f --- /dev/null +++ b/packages/ui/src/components/collapsible.css @@ -0,0 +1,46 @@ +[data-component="collapsible"] { + display: flex; + flex-direction: column; + + [data-slot="trigger"] { + cursor: pointer; + user-select: none; + + &:focus-visible { + outline: 2px solid var(--border-focus); + outline-offset: 2px; + } + + &[data-disabled] { + cursor: not-allowed; + opacity: 0.5; + } + } + + [data-slot="content"] { + overflow: hidden; + /* animation: slideUp 250ms ease-out; */ + + /* &[data-expanded] { */ + /* animation: slideDown 250ms ease-out; */ + /* } */ + } +} + +@keyframes slideDown { + from { + height: 0; + } + to { + height: var(--kb-collapsible-content-height); + } +} + +@keyframes slideUp { + from { + height: var(--kb-collapsible-content-height); + } + to { + height: 0; + } +} diff --git a/packages/ui/src/components/collapsible.tsx b/packages/ui/src/components/collapsible.tsx new file mode 100644 index 000000000..011d103c1 --- /dev/null +++ b/packages/ui/src/components/collapsible.tsx @@ -0,0 +1,35 @@ +import { Collapsible as Kobalte, CollapsibleRootProps } from "@kobalte/core/collapsible" +import { ComponentProps, ParentProps, splitProps } from "solid-js" + +export interface CollapsibleProps extends ParentProps { + class?: string + classList?: ComponentProps<"div">["classList"] +} + +function CollapsibleRoot(props: CollapsibleProps) { + const [local, others] = splitProps(props, ["class", "classList"]) + + return ( + + ) +} + +function CollapsibleTrigger(props: ComponentProps) { + return +} + +function CollapsibleContent(props: ComponentProps) { + return +} + +export const Collapsible = Object.assign(CollapsibleRoot, { + Trigger: CollapsibleTrigger, + Content: CollapsibleContent, +}) diff --git a/packages/ui/src/components/index.ts b/packages/ui/src/components/index.ts index 71cfd3a89..3691363cd 100644 --- a/packages/ui/src/components/index.ts +++ b/packages/ui/src/components/index.ts @@ -1,4 +1,5 @@ export * from "./button" +export * from "./collapsible" export * from "./dialog" export * from "./icon" export * from "./icon-button" -- cgit v1.2.3