aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorMurillo Pinheiro de Oliveira <[email protected]>2024-02-06 23:41:43 -0300
committerMurillo Pinheiro de Oliveira <[email protected]>2024-02-06 23:41:43 -0300
commita02ea8e85d789d5acca9922b61222233bbc09ec6 (patch)
treee89f53936e861bf50e8a7503c75723778570b538 /src/lib
parent7e33d06f2952f64815d8c7669f0f057cde20d280 (diff)
downloadcoinos-ui-a02ea8e85d789d5acca9922b61222233bbc09ec6.tar.gz
coinos-ui-a02ea8e85d789d5acca9922b61222233bbc09ec6.zip
layout fixes
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/shadcn/components/ui/accordion/accordion-content.svelte22
-rw-r--r--src/lib/shadcn/components/ui/accordion/accordion-item.svelte11
-rw-r--r--src/lib/shadcn/components/ui/accordion/accordion-trigger.svelte22
-rw-r--r--src/lib/shadcn/components/ui/accordion/index.js16
-rw-r--r--src/lib/shadcn/components/ui/separator/index.js6
-rw-r--r--src/lib/shadcn/components/ui/separator/separator.svelte19
-rw-r--r--src/lib/shadcn/utils.js48
-rw-r--r--src/lib/utils.js2
8 files changed, 145 insertions, 1 deletions
diff --git a/src/lib/shadcn/components/ui/accordion/accordion-content.svelte b/src/lib/shadcn/components/ui/accordion/accordion-content.svelte
new file mode 100644
index 00000000..14328e88
--- /dev/null
+++ b/src/lib/shadcn/components/ui/accordion/accordion-content.svelte
@@ -0,0 +1,22 @@
+<script>
+ import { Accordion as AccordionPrimitive } from "bits-ui";
+ import { cn } from "$lib/shadcn/utils";
+ import { slide } from "svelte/transition";
+ let className = undefined;
+ export let transition = slide;
+ export let transitionConfig = {
+ duration: 200,
+ };
+ export { className as class };
+</script>
+
+<AccordionPrimitive.Content
+ class={cn("overflow-hidden text-sm transition-all", className)}
+ {transition}
+ {transitionConfig}
+ {...$$restProps}
+>
+ <div class="pb-4 pt-0">
+ <slot />
+ </div>
+</AccordionPrimitive.Content>
diff --git a/src/lib/shadcn/components/ui/accordion/accordion-item.svelte b/src/lib/shadcn/components/ui/accordion/accordion-item.svelte
new file mode 100644
index 00000000..b0887d7e
--- /dev/null
+++ b/src/lib/shadcn/components/ui/accordion/accordion-item.svelte
@@ -0,0 +1,11 @@
+<script>
+ import { Accordion as AccordionPrimitive } from "bits-ui";
+ import { cn } from "$lib/shadcn/utils";
+ let className = undefined;
+ export let value;
+ export { className as class };
+</script>
+
+<AccordionPrimitive.Item {value} class={cn("border-b", className)} {...$$restProps}>
+ <slot />
+</AccordionPrimitive.Item>
diff --git a/src/lib/shadcn/components/ui/accordion/accordion-trigger.svelte b/src/lib/shadcn/components/ui/accordion/accordion-trigger.svelte
new file mode 100644
index 00000000..8acf4675
--- /dev/null
+++ b/src/lib/shadcn/components/ui/accordion/accordion-trigger.svelte
@@ -0,0 +1,22 @@
+<script>
+ import { Accordion as AccordionPrimitive } from "bits-ui";
+ import { ChevronDown } from "lucide-svelte";
+ import { cn } from "$lib/shadcn/utils";
+ let className = undefined;
+ export let level = 3;
+ export { className as class };
+</script>
+
+<AccordionPrimitive.Header {level} class="flex">
+ <AccordionPrimitive.Trigger
+ class={cn(
+ "flex flex-1 items-center justify-between py-2 font-medium transition-all [&[data-state=open]>svg]:rotate-180",
+ className
+ )}
+ {...$$restProps}
+ on:click
+ >
+ <slot />
+ <ChevronDown class="h-4 w-4 transition-transform duration-200" />
+ </AccordionPrimitive.Trigger>
+</AccordionPrimitive.Header>
diff --git a/src/lib/shadcn/components/ui/accordion/index.js b/src/lib/shadcn/components/ui/accordion/index.js
new file mode 100644
index 00000000..d75ea273
--- /dev/null
+++ b/src/lib/shadcn/components/ui/accordion/index.js
@@ -0,0 +1,16 @@
+import { Accordion as AccordionPrimitive } from "bits-ui";
+import Content from "./accordion-content.svelte";
+import Item from "./accordion-item.svelte";
+import Trigger from "./accordion-trigger.svelte";
+const Root = AccordionPrimitive.Root;
+export {
+ Root,
+ Content,
+ Item,
+ Trigger,
+ //
+ Root as Accordion,
+ Content as AccordionContent,
+ Item as AccordionItem,
+ Trigger as AccordionTrigger,
+};
diff --git a/src/lib/shadcn/components/ui/separator/index.js b/src/lib/shadcn/components/ui/separator/index.js
new file mode 100644
index 00000000..073c5c4c
--- /dev/null
+++ b/src/lib/shadcn/components/ui/separator/index.js
@@ -0,0 +1,6 @@
+import Root from "./separator.svelte";
+export {
+ Root,
+ //
+ Root as Separator,
+};
diff --git a/src/lib/shadcn/components/ui/separator/separator.svelte b/src/lib/shadcn/components/ui/separator/separator.svelte
new file mode 100644
index 00000000..b07c93ea
--- /dev/null
+++ b/src/lib/shadcn/components/ui/separator/separator.svelte
@@ -0,0 +1,19 @@
+<script>
+ import { Separator as SeparatorPrimitive } from "bits-ui";
+ import { cn } from "$lib/shadcn/utils";
+ let className = undefined;
+ export let orientation = "horizontal";
+ export let decorative = undefined;
+ export { className as class };
+</script>
+
+<SeparatorPrimitive.Root
+ class={cn(
+ "shrink-0 bg-border",
+ orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
+ className
+ )}
+ {orientation}
+ {decorative}
+ {...$$restProps}
+/>
diff --git a/src/lib/shadcn/utils.js b/src/lib/shadcn/utils.js
new file mode 100644
index 00000000..08747b8f
--- /dev/null
+++ b/src/lib/shadcn/utils.js
@@ -0,0 +1,48 @@
+import { clsx } from "clsx";
+import { twMerge } from "tailwind-merge";
+import { cubicOut } from "svelte/easing";
+
+export function cn(...inputs) {
+ return twMerge(clsx(inputs));
+}
+
+export const flyAndScale = (
+ node,
+ params = { y: -8, x: 0, start: 0.95, duration: 150 }
+) => {
+ const style = getComputedStyle(node);
+ const transform = style.transform === "none" ? "" : style.transform;
+
+ const scaleConversion = (valueA, scaleA, scaleB) => {
+ const [minA, maxA] = scaleA;
+ const [minB, maxB] = scaleB;
+
+ const percentage = (valueA - minA) / (maxA - minA);
+ const valueB = percentage * (maxB - minB) + minB;
+
+ return valueB;
+ };
+
+ const styleToString = (style) => {
+ return Object.keys(style).reduce((str, key) => {
+ if (style[key] === undefined) return str;
+ return str + `${key}:${style[key]};`;
+ }, "");
+ };
+
+ return {
+ duration: params.duration ?? 200,
+ delay: 0,
+ css: (t) => {
+ const y = scaleConversion(t, [0, 1], [params.y ?? 5, 0]);
+ const x = scaleConversion(t, [0, 1], [params.x ?? 0, 0]);
+ const scale = scaleConversion(t, [0, 1], [params.start ?? 0.95, 1]);
+
+ return styleToString({
+ transform: `${transform} translate3d(${x}px, ${y}px, 0) scale(${scale})`,
+ opacity: t
+ });
+ },
+ easing: cubicOut
+ };
+};
diff --git a/src/lib/utils.js b/src/lib/utils.js
index 738413bf..434ca268 100644
--- a/src/lib/utils.js
+++ b/src/lib/utils.js
@@ -300,4 +300,4 @@ export let isLiquid = (text) =>
(text.startsWith("ert1q") && text.length === 43) ||
(text.startsWith("ex1q") && text.length === 42) ||
text.startsWith("el1qq") ||
- text.startsWith("lq1qq");
+ text.startsWith("lq1qq"); \ No newline at end of file