diff --git a/package-lock.json b/package-lock.json index 29242c3..25b0758 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,17 @@ { "name": "primal-web-app", - "version": "0.78.0", + "version": "0.79.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "primal-web-app", - "version": "0.78.0", + "version": "0.79.2", "license": "MIT", "dependencies": { "@cookbook/solid-intl": "0.1.2", "@jukben/emoji-search": "3.0.0", + "@kobalte/core": "^0.11.0", "@picocss/pico": "1.5.10", "@scure/base": "1.1.3", "@solidjs/router": "0.8.3", @@ -512,6 +513,28 @@ "node": ">=12" } }, + "node_modules/@floating-ui/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", + "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "dependencies": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.4.tgz", + "integrity": "sha512-qprfWkn82Iw821mcKofJ5Pk9wgioHicxcQMxx+5zt5GSKoqdWvgG5AxVmpmUUjzTLPVSH5auBrhI93Deayn/DA==" + }, "node_modules/@formatjs/cli": { "version": "6.1.5", "dev": true, @@ -609,6 +632,31 @@ "tslib": "^2.4.0" } }, + "node_modules/@internationalized/date": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.0.tgz", + "integrity": "sha512-nw0Q+oRkizBWMioseI8+2TeUPEyopJVz5YxoYVzR0W1v+2YytiYah7s/ot35F149q/xAg4F1gT/6eTd+tsUpFQ==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/message": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.1.tgz", + "integrity": "sha512-ZgHxf5HAPIaR0th+w0RUD62yF6vxitjlprSxmLJ1tam7FOekqRSDELMg4Cr/DdszG5YLsp5BG3FgHgqquQZbqw==", + "dependencies": { + "@swc/helpers": "^0.5.0", + "intl-messageformat": "^10.1.0" + } + }, + "node_modules/@internationalized/number": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.2.1.tgz", + "integrity": "sha512-hK30sfBlmB1aIe3/OwAPg9Ey0DjjXvHEiGVhNaOiBJl31G0B6wMaX8BN3ibzdlpyRNE9p7X+3EBONmxtJO9Yfg==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "dev": true, @@ -663,6 +711,38 @@ "node": ">=12.0.0" } }, + "node_modules/@kobalte/core": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@kobalte/core/-/core-0.11.0.tgz", + "integrity": "sha512-KflwKawdAXv1/W1Eh88SPTwpxGTVs7bAGkkW72w6pnRI3hcFWXEH+E/9CojoFrIc3WVBUT+y7GzaYLOKCailDw==", + "dependencies": { + "@floating-ui/dom": "^1.5.1", + "@internationalized/date": "^3.4.0", + "@internationalized/message": "^3.1.1", + "@internationalized/number": "^3.2.1", + "@kobalte/utils": "^0.9.0" + }, + "peerDependencies": { + "solid-js": "^1.7.11" + } + }, + "node_modules/@kobalte/utils": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@kobalte/utils/-/utils-0.9.0.tgz", + "integrity": "sha512-TYVCpQcpqo1+0HBn3NXoGEBzxd4tH6Um1oc07nrYw1V7Qq0qbMaYAOnfBc1qhlh7sGV4XZldmb0j13Of0FrZQg==", + "dependencies": { + "@solid-primitives/event-listener": "^2.2.14", + "@solid-primitives/keyed": "^1.2.0", + "@solid-primitives/map": "^0.4.7", + "@solid-primitives/media": "^2.2.4", + "@solid-primitives/props": "^3.1.8", + "@solid-primitives/refs": "^1.0.5", + "@solid-primitives/utils": "^6.2.1" + }, + "peerDependencies": { + "solid-js": "^1.7.11" + } + }, "node_modules/@noble/ciphers": { "version": "0.2.0", "license": "MIT", @@ -724,6 +804,113 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@solid-primitives/event-listener": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@solid-primitives/event-listener/-/event-listener-2.3.0.tgz", + "integrity": "sha512-0DS7DQZvCExWSpurVZC9/wjI8RmkhuOtWOy6Pp1Woq9ElMT9/bfjNpkwXsOwisLpcTqh9eUs17kp7jtpWcC20w==", + "dependencies": { + "@solid-primitives/utils": "^6.2.1" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/keyed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@solid-primitives/keyed/-/keyed-1.2.0.tgz", + "integrity": "sha512-0DuTeJdxWjCTu73XnDZs24JzfXckBnpvCfQ6Mf/kTPKkMZJh7tjkBnZEk48ckrE9xmwat9stIdfrBmZctsepIw==", + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/map": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/@solid-primitives/map/-/map-0.4.8.tgz", + "integrity": "sha512-p9zhIaIWOQVxLaUEjg6nzrBLZUOzozJFHatdKqISSIq7iJhVXX1M1MPzDHHqKyJw/nSENoKgvZehnG3HErnamw==", + "dependencies": { + "@solid-primitives/trigger": "^1.0.8" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/media": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@solid-primitives/media/-/media-2.2.5.tgz", + "integrity": "sha512-wTESNFteSwOZsNIBPLMIVLuOHIIzt2AIZdaCYYxfsJIr/xjDqSomlmdFlAmxfJD3ondO7fwtWfc0rcmAvjoPCA==", + "dependencies": { + "@solid-primitives/event-listener": "^2.3.0", + "@solid-primitives/rootless": "^1.4.2", + "@solid-primitives/static-store": "^0.0.5", + "@solid-primitives/utils": "^6.2.1" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/props": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@solid-primitives/props/-/props-3.1.8.tgz", + "integrity": "sha512-38ERNFhl87emUDPRlYvCmlbvEcK2mOJB38SU22YS2QXFDK7TQf/7P46XZacs7oODc/fckhfZTitht71FMEDe2g==", + "dependencies": { + "@solid-primitives/utils": "^6.2.1" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/refs": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@solid-primitives/refs/-/refs-1.0.5.tgz", + "integrity": "sha512-5hmYmYbm6rs43nMHHozyyUngGA7P7q2WtlaCLJEfmlUJf67GWI1PZmqAiol6m9F37XSMZRuvZLoQ7HA/0q3GYg==", + "dependencies": { + "@solid-primitives/utils": "^6.2.1" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/rootless": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@solid-primitives/rootless/-/rootless-1.4.2.tgz", + "integrity": "sha512-ynI/2aEOPyc14IKCX6yDBqnsAYCoLbaP9V/jejEWMVKOT2ZdV2ZxdftaLimOpWPpvjyti5DUJIGTOfLaNb7jlg==", + "dependencies": { + "@solid-primitives/utils": "^6.2.1" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/static-store": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@solid-primitives/static-store/-/static-store-0.0.5.tgz", + "integrity": "sha512-ssQ+s/wrlFAEE4Zw8GV499yBfvWx7SMm+ZVc11wvao4T5xg9VfXCL9Oa+x4h+vPMvSV/Knv5LrsLiUa+wlJUXQ==", + "dependencies": { + "@solid-primitives/utils": "^6.2.1" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/trigger": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@solid-primitives/trigger/-/trigger-1.0.8.tgz", + "integrity": "sha512-p9e3FGhCk8sRPxDiCT8vnTE+DOEtrAnJZP4zV0NAV6YGnpV50JATVXNiLjKgyiI/mTIRkWB0+9c5SUbRlqFx6A==", + "dependencies": { + "@solid-primitives/utils": "^6.2.1" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/utils": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@solid-primitives/utils/-/utils-6.2.1.tgz", + "integrity": "sha512-TsecNzxiO5bLfzqb4OOuzfUmdOROcssuGqgh5rXMMaasoFZ3GoveUgdY1wcf17frMJM7kCNGNuK34EjErneZkg==", + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, "node_modules/@solidjs/router": { "version": "0.8.3", "license": "MIT", @@ -731,6 +918,14 @@ "solid-js": "^1.5.3" } }, + "node_modules/@swc/helpers": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@thisbeyond/solid-select": { "version": "0.13.0", "license": "MIT", diff --git a/package.json b/package.json index 42cf29d..e9cf236 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "dependencies": { "@cookbook/solid-intl": "0.1.2", "@jukben/emoji-search": "3.0.0", + "@kobalte/core": "^0.11.0", "@picocss/pico": "1.5.10", "@scure/base": "1.1.3", "@solidjs/router": "0.8.3", diff --git a/src/Router.tsx b/src/Router.tsx index ebed31d..1d1ce67 100644 --- a/src/Router.tsx +++ b/src/Router.tsx @@ -1,7 +1,7 @@ import { Component, createResource, lazy } from 'solid-js'; import { Routes, Route, Navigate, RouteDataFuncArgs } from "@solidjs/router"; -import { ComponentLog, PrimalWindow } from './types/primal'; +import { PrimalWindow } from './types/primal'; import { fetchKnownProfiles } from './lib/profile'; import { useHomeContext } from './contexts/HomeContext'; diff --git a/src/components/Buttons/ButtonPrimary.tsx b/src/components/Buttons/ButtonPrimary.tsx new file mode 100644 index 0000000..6e26c68 --- /dev/null +++ b/src/components/Buttons/ButtonPrimary.tsx @@ -0,0 +1,27 @@ +import { Component, JSXElement, Match, Show, Switch } from 'solid-js'; +import { hookForDev } from '../../lib/devTools'; +import { Button } from "@kobalte/core"; + +import styles from './Buttons.module.scss'; + +const ButtonPrimary: Component<{ + id?: string, + onClick?: (e: MouseEvent) => void, + children?: JSXElement, + disabled?: boolean, +}> = (props) => { + return ( + + + {props.children} + + + ) +} + +export default hookForDev(ButtonPrimary); diff --git a/src/components/Buttons/ButtonSecondary.tsx b/src/components/Buttons/ButtonSecondary.tsx new file mode 100644 index 0000000..e35812a --- /dev/null +++ b/src/components/Buttons/ButtonSecondary.tsx @@ -0,0 +1,29 @@ +import { Component, JSXElement, Match, Show, Switch } from 'solid-js'; +import { hookForDev } from '../../lib/devTools'; +import { Button } from "@kobalte/core"; + +import styles from './Buttons.module.scss'; + +const ButtonSecondary: Component<{ + id?: string, + onClick?: (e: MouseEvent) => void, + children?: JSXElement, + disabled?: boolean, +}> = (props) => { + return ( + +
+ + {props.children} + +
+
+ ); +} + +export default hookForDev(ButtonSecondary); diff --git a/src/components/Buttons/Buttons.module.scss b/src/components/Buttons/Buttons.module.scss new file mode 100644 index 0000000..5437743 --- /dev/null +++ b/src/components/Buttons/Buttons.module.scss @@ -0,0 +1,36 @@ +.primary { + border: none; + border-radius: 6px; + margin: 0px 8px; + padding: 0px; + font-size: 14px; + line-height: 20px; + font-weight: 700; + background: var(--brand-gradient-vertical); + color: white; + >span { + opacity: 0.75; + } +} + +.secondary { + border: none; + border-radius: 6px; + padding: 1px; + font-size: 14px; + line-height: 20px; + font-weight: 700; + background: var(--brand-gradient-vertical); + color: var(--text-tertiary-2); + >div { + width: 100%; + height: 100%; + vertical-align: middle; + border-radius: 6px; + background-color: var(--background-card); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + } +}