diff --git a/applications/uk.ewsgit.files/assets/uk.ewsgit.files.png b/applications/uk.ewsgit.files/assets/uk.ewsgit.files.png new file mode 100644 index 0000000000000000000000000000000000000000..4d2c228b76944a14721a5875ccdd1b40c133f1b4 GIT binary patch literal 730 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|NtNage(c!@6@aFBupZSkfJR9T^xl_H+M9WMyDr;45*BC<)F_D=AMbN@Z}%OwUc6 zw{coB0|Qg2r;B4q1>@VW^V!0VBLD8?%`#&m?L$(8^T5)}0m+_JQ3$Hcr#YP*f+ZojFr`F74ORnP6Mb)09` zZ+~C=`QDyN<~d5K0lPov?hBDI?sc8av$}te?*i+~+Wq$uXRz!$KmF9tH$NWjnAzxf zRFrmEYX6^`$uf zbSsuRJ)6ntn}scOmaI3G40%ygnb$fcOL&t-XkCDj0mBP{{o8Ds59bKoeO{-wD&$mi zx#-8N^QN^uD`b9#tPyDJ|0WhzUvn(}_)Y&s)2~^u6~5k-`XlKb&$BeW$Hzh#6`8W9 z>aWPjQTud2VMW;Lh_Y>kXRXdVzY_TI^w0b3ITm@#UT)WMcii>ruUW;p&wC%R6m!7Hp#c+J((Ni5^T)|09`Ssxj*>jn{cIgUOaYuJG zblek^N-2=rF}s67yL$h>(53x?n{KM!m^&q-)#01sf|KR81s84#J2@RVY_Q1JN~h|w*;{fWcY1PPB;hIZ=$i={6b7Z@qAzId*?RbYwNgCCU*@?AgA zNc3@us}scCB7jNwNUURc> z_V(<&!%6dh@bkLF#fm&J2sEF$RZF77WmRdww~%9-{hk&@dqnO0^~y8QxB4RYj0Ttd jK1T&ZFY);nZy0AaJ}fS|R3^Z{z`)??>gTe~DWM4fOus+8 literal 0 HcmV?d00001 diff --git a/applications/uk.ewsgit.files/assets/uk.ewsgit.files128.png b/applications/uk.ewsgit.files/assets/uk.ewsgit.files128.png new file mode 100644 index 0000000000000000000000000000000000000000..456b855d077d5bc37950e2ce13a7c38f6411bb58 GIT binary patch literal 4669 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 literal 0 HcmV?d00001 diff --git a/applications/uk.ewsgit.files/assets/uk.ewsgit.files256.png b/applications/uk.ewsgit.files/assets/uk.ewsgit.files256.png new file mode 100644 index 0000000000000000000000000000000000000000..afbeb40eec828468a2e9c7df6c7640b5179604f0 GIT binary patch literal 13565 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 z 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 { document.body.appendChild(elem); - document.body.style.borderRadius = "12px"; document.body.style.overflow = "hidden"; + document.body.style.boxShadow = "1px 0px #646464 inset, 0 0 1px 0px #646464"; document.body.style.border = "1px solid #646464"; + document.body.style.borderRadius = "10px"; }); diff --git a/applications/uk.ewsgit.files/web/App.tsx b/applications/uk.ewsgit.files/web/App.tsx index bf3d9ff..7d52bd9 100644 --- a/applications/uk.ewsgit.files/web/App.tsx +++ b/applications/uk.ewsgit.files/web/App.tsx @@ -28,6 +28,7 @@ interface ViewState { selectedItems: string[]; lastSelectionTime: number; viewId: number; + isLoading: boolean; } interface AppContextType { @@ -74,6 +75,7 @@ const App: Component = () => { selectedItems: [], lastSelectionTime: -1, viewId: 0, + isLoading: true, }); const [ taskStatus, setTaskStatus ] = createSignal([]) diff --git a/applications/uk.ewsgit.files/web/layout/components/ActionBar/ActionBar.tsx b/applications/uk.ewsgit.files/web/layout/components/ActionBar/ActionBar.tsx index 172191d..a07cb1c 100644 --- a/applications/uk.ewsgit.files/web/layout/components/ActionBar/ActionBar.tsx +++ b/applications/uk.ewsgit.files/web/layout/components/ActionBar/ActionBar.tsx @@ -126,33 +126,35 @@ const ActionBar: Component = () => { /> )} {!appContext?.isDesktopApp && ( - { - console.log("Does nothing"); - }} - /> + <> + { + console.log("Does nothing"); + }} + /> + { + for (let i = 0; i < 10; i++) { + appContext?.setViewState("viewItems", [ + ...appContext.viewState.viewItems, + {type: "file", path: `/randomNewItem${Math.round(Math.random() * 100000000)}`}, + ] as ViewItem[]); + } + }} + /> + )} - { - for (let i = 0; i < 10; i++) { - appContext?.setViewState("viewItems", [ - ...appContext.viewState.viewItems, - {type: "file", path: `/randomNewItem${Math.round(Math.random() * 100000000)}`}, - ] as ViewItem[]); - } - }} - /> {!isMobile() && ( { appContext?.setUserPreferences("showPreview", !appContext?.userPreferences.showPreview); }} diff --git a/applications/uk.ewsgit.files/web/layout/components/StatusBar/StatusBar.module.scss b/applications/uk.ewsgit.files/web/layout/components/StatusBar/StatusBar.module.scss index ce5691b..ef531c2 100644 --- a/applications/uk.ewsgit.files/web/layout/components/StatusBar/StatusBar.module.scss +++ b/applications/uk.ewsgit.files/web/layout/components/StatusBar/StatusBar.module.scss @@ -4,7 +4,8 @@ flex-direction: row; gap: 0.5rem; align-items: center; - padding: 0.5rem; + padding: 0.25rem; + padding-left: 0.5rem; border-top: 1px solid rgb(var(--uk-sys-color-outline-variant)); } @@ -31,3 +32,9 @@ opacity: 1; } } + +.sizeControls { + display: flex; + flex-direction: row; + gap: 0.25rem; +} diff --git a/applications/uk.ewsgit.files/web/layout/components/StatusBar/StatusBar.tsx b/applications/uk.ewsgit.files/web/layout/components/StatusBar/StatusBar.tsx index bea378e..2598ea1 100644 --- a/applications/uk.ewsgit.files/web/layout/components/StatusBar/StatusBar.tsx +++ b/applications/uk.ewsgit.files/web/layout/components/StatusBar/StatusBar.tsx @@ -5,6 +5,11 @@ import {AppContext} from "../../../appContext.ts"; import humanReadableSize from "../../../lib/humanReadableSize.ts"; import styles from "./StatusBar.module.scss"; import clsx from "clsx"; +import UKButtonGroup from "@onlineworkspace/uikit-solid/src/components/buttonGroup/UKButtonGroup.jsx"; +import UKIconButton from "@onlineworkspace/uikit-solid/src/components/iconButton/UKIconButton.jsx"; +import ZOOM_IN_ICON from "@material-symbols/svg-700/outlined/zoom_in.svg" +import ZOOM_OUT_ICON from "@material-symbols/svg-700/outlined/zoom_out.svg" +import VIEW_REAL_SIZE_ICON from "@material-symbols/svg-700/outlined/view_real_size.svg" const StatusBar: Component = () => { const appContext = useContext(AppContext); @@ -88,6 +93,11 @@ const StatusBar: Component = () => { {appContext!.tasks()[ 0 ]?.message.replaceAll("%c", appContext!.tasks()[ 0 ].current.toString()).replaceAll("%m", appContext!.tasks()[ 0 ].max.toString())} +

+ appContext?.setUserPreferences("gridViewIconSize", appContext.userPreferences.gridViewIconSize + 2)} /> + appContext?.setUserPreferences("gridViewIconSize", appContext.userPreferences.gridViewIconSize + 2)} /> + appContext?.setUserPreferences("gridViewIconSize", appContext.userPreferences.gridViewIconSize + 2)} /> +
); }; diff --git a/applications/uk.ewsgit.files/web/layout/components/ViewMessage/ViewMessage.module.scss b/applications/uk.ewsgit.files/web/layout/components/ViewMessage/ViewMessage.module.scss index 1eb1f50..9d2608d 100644 --- a/applications/uk.ewsgit.files/web/layout/components/ViewMessage/ViewMessage.module.scss +++ b/applications/uk.ewsgit.files/web/layout/components/ViewMessage/ViewMessage.module.scss @@ -5,7 +5,6 @@ flex-direction: column; align-items: center; justify-content: center; - gap: 1rem; } .contentContainer { @@ -15,6 +14,10 @@ flex-direction: column; align-items: center; justify-content: center; - gap: 1rem; + gap: 0.5rem; padding: 1rem; } + +.icon { + --icon-size: 6rem; +} diff --git a/applications/uk.ewsgit.files/web/layout/components/ViewMessage/ViewMessage.tsx b/applications/uk.ewsgit.files/web/layout/components/ViewMessage/ViewMessage.tsx index 691fca2..4ac41fe 100644 --- a/applications/uk.ewsgit.files/web/layout/components/ViewMessage/ViewMessage.tsx +++ b/applications/uk.ewsgit.files/web/layout/components/ViewMessage/ViewMessage.tsx @@ -1,21 +1,28 @@ -import type {Component} from "solid-js"; +import {For, type Component} from "solid-js"; import styles from "./ViewMessage.module.scss" import UKIcon from "@onlineworkspace/uikit-solid/src/components/icon/UKIcon.jsx"; import UKText from "@onlineworkspace/uikit-solid/src/components/text/UKText.jsx"; import UKDivider from "@onlineworkspace/uikit-solid/src/components/divider/UKDivider.jsx"; import UKButtonGroup from "@onlineworkspace/uikit-solid/src/components/buttonGroup/UKButtonGroup.jsx"; +import UKButton from "@onlineworkspace/uikit-solid/src/components/button/UKButton.jsx"; const ViewMessage: Component<{title: string, icon: string, message: string, actions?: {color: "elevated" | "filled" | "tonal" | "outlined" | "standard", label: string, onClick(): void}[]}> = (props) => { return
- {props.icon} + {props.icon} {props.title} - {props.message} + {props.message}
{!!props.actions && - {null} + + { + action => + {action.label} + + } + }
diff --git a/applications/uk.ewsgit.files/web/pages/dir/View.tsx b/applications/uk.ewsgit.files/web/pages/dir/View.tsx index 790224a..7c3ede2 100644 --- a/applications/uk.ewsgit.files/web/pages/dir/View.tsx +++ b/applications/uk.ewsgit.files/web/pages/dir/View.tsx @@ -1,4 +1,5 @@ import ERROR_ICON from "@material-symbols/svg-700/outlined/error.svg"; +import FOLDER_LIMITED_ICON from "@material-symbols/svg-700/outlined/folder_limited.svg"; import {useSearchParams} from "@solidjs/router"; import {type Component, createEffect, createSignal, Match, Switch, useContext} from "solid-js"; import {createStore} from "solid-js/store"; @@ -26,20 +27,16 @@ const View: Component = () => { const [ errorMessage, setErrorMessage ] = createSignal(undefined); let navigationCounter = 0; - createEffect(async () => { - searchParams.path; - - navigationCounter++ - }) - createEffect(async () => { if (!searchParams.path) { setSearchParams({path: appContext?.userPreferences.homePath}); return; } + navigationCounter++ const currentNavigationCount = navigationCounter; + appContext?.setViewState("isLoading", true) const newItems = await filesystemInterface.readDirectory(searchParams.path || "remote:/"); if (currentNavigationCount !== navigationCounter) return; @@ -135,6 +132,8 @@ const View: Component = () => { resolve(); }); } + + appContext?.setViewState("isLoading", false) } else { setErrorMessage(newItems.status); } @@ -144,8 +143,25 @@ const View: Component = () => { <> {errorMessage() ? ( - ) : appContext?.viewState.viewItems.length === 0 ? ( - + ) : appContext?.viewState.viewItems.length === 0 && !appContext.viewState.isLoading ? ( + ) : ( <> {/** biome-ignore lint/a11y/noStaticElementInteractions: button functionality not required */} diff --git a/applications/uk.ewsgit.files/web/pages/dir/components/DetailsView/DetailsView.module.scss b/applications/uk.ewsgit.files/web/pages/dir/components/DetailsView/DetailsView.module.scss index 9a5c974..5a7c236 100644 --- a/applications/uk.ewsgit.files/web/pages/dir/components/DetailsView/DetailsView.module.scss +++ b/applications/uk.ewsgit.files/web/pages/dir/components/DetailsView/DetailsView.module.scss @@ -17,7 +17,8 @@ padding: 0.5rem; border-spacing: 0; user-select: none; - width: 100%; + max-width: 100%; + width: 72rem; } .columns { @@ -34,11 +35,7 @@ &:first-child { padding-left: 0; padding-right: 0; - width: 0; - } - - &:nth-child(2) { - width: 50%; + width: calc(calc(var(--col-spacing) * 2) + var(--icon-size)); } } } @@ -62,6 +59,7 @@ height: var(--item-height); box-sizing: border-box; vertical-align: middle; + white-space: nowrap; } &::after { diff --git a/applications/uk.ewsgit.files/web/pages/dir/components/DetailsView/DetailsView.tsx b/applications/uk.ewsgit.files/web/pages/dir/components/DetailsView/DetailsView.tsx index 7a83c3e..2b1e04c 100644 --- a/applications/uk.ewsgit.files/web/pages/dir/components/DetailsView/DetailsView.tsx +++ b/applications/uk.ewsgit.files/web/pages/dir/components/DetailsView/DetailsView.tsx @@ -20,22 +20,22 @@ const DetailsView: Component = () => { - + Name - + Modified - + Created - + Size diff --git a/applications/uk.ewsgit.store/backend/package.json b/applications/uk.ewsgit.store/backend/package.json index 22006a5..ac9619c 100644 --- a/applications/uk.ewsgit.store/backend/package.json +++ b/applications/uk.ewsgit.store/backend/package.json @@ -4,6 +4,9 @@ "type": "module", "private": true, "version": "0.0.1", + "trustedDependencies": [ + "fast-folder-size" + ], "dependencies": { "@onlineworkspace/workspace-instance": "workspace:*", "@trpc/server": "^11.6.0", @@ -26,4 +29,4 @@ "typescript": "^5.9.2", "zod": "^4.0.17" } -} +} \ No newline at end of file diff --git a/bun.lock b/bun.lock index 364796e..cc6f276 100644 --- a/bun.lock +++ b/bun.lock @@ -140,6 +140,7 @@ "@electron-forge/shared-types": "^7.11.1", "@types/node": "latest", "electron": "^41.3.0", + "fast-folder-size": "^2.4.0", }, "peerDependencies": { "typescript": "^5", @@ -381,6 +382,7 @@ "dockerode": "^4.0.7", "dotenv": "^17.2.1", "express": "^5.1.0", + "fast-folder-size": "^2.4.0", "hi-base32": "^0.5.1", "minimist": "^1.2.8", "nodemailer": "^7.0.12", @@ -446,6 +448,9 @@ }, }, }, + "trustedDependencies": [ + "fast-folder-size", + ], "packages": { "@acemir/cssom": ["@acemir/cssom@0.9.31", "", {}, "sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA=="], diff --git a/instance/package.json b/instance/package.json index 486dbc8..b1edab1 100644 --- a/instance/package.json +++ b/instance/package.json @@ -9,6 +9,9 @@ "url": "https://github.com/onlineworkspace/workspace" }, "private": true, + "trustedDependencies": [ + "fast-folder-size" + ], "dependencies": { "@simplewebauthn/server": "^13.3.0", "@trpc/server": "^11.8.0", @@ -38,6 +41,7 @@ "vite": "^7.3.0", "vite-plugin-solid": "^2.11.10", "ws": "^8.18.3", - "zod": "^4.0.17" + "zod": "^4.0.17", + "fast-folder-size": "^2.4.0" } -} +} \ No newline at end of file diff --git a/uikit-solid/src/components/iconButton/UKIconButton.module.scss b/uikit-solid/src/components/iconButton/UKIconButton.module.scss index 122360c..e09aad6 100644 --- a/uikit-solid/src/components/iconButton/UKIconButton.module.scss +++ b/uikit-solid/src/components/iconButton/UKIconButton.module.scss @@ -19,30 +19,20 @@ transition: all var(--uk-sys-motion-duration-50) var(--transition-all, linear), - outline-color var(--uk-sys-motion-duration-100) - var(--uk-sys-motion-easing-standard-decelerate), + outline-color var(--uk-sys-motion-duration-100) var(--uk-sys-motion-easing-standard-decelerate), outline-width 0ms linear, - background-color var(--uk-sys-motion-duration-100) - var(--uk-sys-motion-easing-standard-normal), - color var(--uk-sys-motion-duration-100) - var(--uk-sys-motion-easing-standard-normal), - padding-left var(--uk-sys-motion-duration-50) - var(--uk-sys-motion-easing-linear), - margin-left var(--uk-sys-motion-duration-50) - var(--uk-sys-motion-easing-linear), - padding-right var(--uk-sys-motion-duration-50) - var(--uk-sys-motion-easing-linear), - margin-right var(--uk-sys-motion-duration-50) - var(--uk-sys-motion-easing-linear), - border-radius - var(--border-radius-duration, var(--uk-sys-motion-duration-50)) - var(--uk-sys-motion-easing-linear); + background-color var(--uk-sys-motion-duration-100) var(--uk-sys-motion-easing-standard-normal), + color var(--uk-sys-motion-duration-100) var(--uk-sys-motion-easing-standard-normal), + padding-left var(--uk-sys-motion-duration-50) var(--uk-sys-motion-easing-linear), + margin-left var(--uk-sys-motion-duration-50) var(--uk-sys-motion-easing-linear), + padding-right var(--uk-sys-motion-duration-50) var(--uk-sys-motion-easing-linear), + margin-right var(--uk-sys-motion-duration-50) var(--uk-sys-motion-easing-linear), + border-radius var(--border-radius-duration, var(--uk-sys-motion-duration-50)) var(--uk-sys-motion-easing-linear); &::before { content: ""; position: absolute; - transition: background-color var(--uk-sys-motion-duration-100) - var(--uk-sys-motion-easing-standard-normal); + transition: background-color var(--uk-sys-motion-duration-100) var(--uk-sys-motion-easing-standard-normal); background-color: transparent; top: 0; left: 0; @@ -71,6 +61,48 @@ cursor: not-allowed; } + &[data-size="xxs"] { + height: 24px; + border-width: 1px; + --icon-size: 16px; + --outline-width: 1px; + + &[data-width="narrow"] { + --padding-left: 2px; + --padding-right: 2px; + } + + &[data-width="default"] { + --padding-left: 4px; + --padding-right: 4px; + } + + &[data-width="wide"] { + --padding-left: 8px; + --padding-right: 8px; + } + + &[data-shape="round"] { + border-radius: 24px; + + &[data-selected="true"] { + border-radius: var(--uk-sys-shape-corner-medium); + } + } + + &[data-shape="square"] { + border-radius: var(--uk-sys-shape-corner-medium); + + &[data-selected="true"] { + border-radius: 24px; + } + } + + &:active:not(:disabled) { + border-radius: var(--uk-sys-shape-corner-small) !important; + } + } + &[data-size="xs"] { height: 32px; border-width: 1px; @@ -299,20 +331,14 @@ color: rgb(var(--uk-sys-color-on-primary)); &::before { - background-color: rgb( - var(--uk-sys-color-on-primary), - var(--uk-sys-state-focus-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-primary), var(--uk-sys-state-focus-state-layer-opacity)); } &[data-type="toggle"] { color: rgb(var(--uk-sys-color-on-surface-variant)); &::before { - background-color: rgb( - var(--uk-sys-color-on-surface-variant), - var(--uk-sys-state-focus-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-surface-variant), var(--uk-sys-state-focus-state-layer-opacity)); } } @@ -320,10 +346,7 @@ color: rgb(var(--uk-sys-color-on-primary)); &::before { - background-color: rgb( - var(--uk-sys-color-on-surface-variant), - var(--uk-sys-state-focus-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-surface-variant), var(--uk-sys-state-focus-state-layer-opacity)); } } } @@ -332,20 +355,14 @@ color: rgb(var(--uk-sys-color-on-primary)); &::before { - background-color: rgb( - var(--uk-sys-color-on-primary), - var(--uk-sys-state-hover-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-primary), var(--uk-sys-state-hover-state-layer-opacity)); } &[data-type="toggle"] { color: rgb(var(--uk-sys-color-on-surface-variant)); &::before { - background-color: rgb( - var(--uk-sys-color-on-surface-variant), - var(--uk-sys-state-hover-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-surface-variant), var(--uk-sys-state-hover-state-layer-opacity)); } } @@ -353,10 +370,7 @@ color: rgb(var(--uk-sys-color-on-primary)); &::before { - background-color: rgb( - var(--uk-sys-color-on-surface-variant), - var(--uk-sys-state-hover-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-surface-variant), var(--uk-sys-state-hover-state-layer-opacity)); } } } @@ -365,10 +379,7 @@ color: rgb(var(--uk-sys-color-on-primary)); &::before { - background-color: rgb( - var(--uk-sys-color-on-primary), - var(--uk-sys-state-pressed-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-primary), var(--uk-sys-state-pressed-state-layer-opacity)); } &[data-type="toggle"] { @@ -455,10 +466,7 @@ color: rgb(var(--uk-sys-color-on-secondary)); &::before { - background-color: rgb( - var(--uk-sys-color-on-secondary), - var(--uk-sys-state-focus-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-secondary), var(--uk-sys-state-focus-state-layer-opacity)); } } } @@ -488,10 +496,7 @@ color: rgb(var(--uk-sys-color-on-secondary)); &::before { - background-color: rgb( - var(--uk-sys-color-on-secondary), - var(--uk-sys-state-hover-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-secondary), var(--uk-sys-state-hover-state-layer-opacity)); } } } @@ -521,10 +526,7 @@ color: rgb(var(--uk-sys-color-on-secondary)); &::before { - background-color: rgb( - var(--uk-sys-color-on-secondary), - var(--uk-sys-state-pressed-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-secondary), var(--uk-sys-state-pressed-state-layer-opacity)); } } } @@ -570,10 +572,7 @@ color: rgb(var(--uk-sys-color-on-surface-variant)); &::before { - background-color: rgb( - var(--uk-sys-color-on-surface-variant), - var(--uk-sys-state-focus-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-surface-variant), var(--uk-sys-state-focus-state-layer-opacity)); } &[data-type="toggle"] { @@ -591,10 +590,7 @@ color: rgb(var(--uk-sys-color-inverse-on-surface)); &::before { - background-color: rgb( - var(--uk-sys-color-inverse-on-surface), - var(--uk-sys-state-focus-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-inverse-on-surface), var(--uk-sys-state-focus-state-layer-opacity)); } } } @@ -603,20 +599,14 @@ color: rgb(var(--uk-sys-color-on-surface-variant)); &::before { - background-color: rgb( - var(--uk-sys-color-on-surface-variant), - var(--uk-sys-state-hover-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-surface-variant), var(--uk-sys-state-hover-state-layer-opacity)); } &[data-type="toggle"] { color: rgb(var(--uk-sys-color-on-surface-variant)); &::before { - background-color: rgb( - var(--uk-sys-color-on-surface-variant), - var(--uk-sys-state-hover-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-surface-variant), var(--uk-sys-state-hover-state-layer-opacity)); } } @@ -624,10 +614,7 @@ color: rgb(var(--uk-sys-color-inverse-on-surface)); &::before { - background-color: rgb( - var(--uk-sys-color-inverse-on-surface), - var(--uk-sys-state-hover-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-inverse-on-surface), var(--uk-sys-state-hover-state-layer-opacity)); } } } @@ -636,10 +623,7 @@ color: rgb(var(--uk-sys-color-on-surface-variant)); &::before { - background-color: rgb( - var(--uk-sys-color-on-surface-variant), - var(--uk-sys-state-pressed-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-surface-variant), var(--uk-sys-state-pressed-state-layer-opacity)); } &[data-type="toggle"] { @@ -703,20 +687,14 @@ color: rgb(var(--uk-sys-color-on-surface-variant)); &::before { - background-color: rgb( - var(--uk-sys-color-on-surface-variant), - var(--uk-sys-state-focus-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-surface-variant), var(--uk-sys-state-focus-state-layer-opacity)); } &[data-type="toggle"] { color: rgb(var(--uk-sys-color-on-surface-variant)); &::before { - background-color: rgb( - var(--uk-sys-color-on-surface-variant), - var(--uk-sys-state-focus-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-surface-variant), var(--uk-sys-state-focus-state-layer-opacity)); } } @@ -724,10 +702,7 @@ color: rgb(var(--uk-sys-color-primary)); &::before { - background-color: rgb( - var(--uk-sys-color-primary), - var(--uk-sys-state-focus-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-primary), var(--uk-sys-state-focus-state-layer-opacity)); } } } @@ -736,20 +711,14 @@ color: rgb(var(--uk-sys-color-on-surface-variant)); &::before { - background-color: rgb( - var(--uk-sys-color-on-surface-variant), - var(--uk-sys-state-hover-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-surface-variant), var(--uk-sys-state-hover-state-layer-opacity)); } &[data-type="toggle"] { color: rgb(var(--uk-sys-color-on-surface-variant)); &::before { - background-color: rgb( - var(--uk-sys-color-on-surface-variant), - var(--uk-sys-state-hover-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-surface-variant), var(--uk-sys-state-hover-state-layer-opacity)); } } @@ -757,10 +726,7 @@ color: rgb(var(--uk-sys-color-primary)); &::before { - background-color: rgb( - var(--uk-sys-color-primary), - var(--uk-sys-state-hover-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-primary), var(--uk-sys-state-hover-state-layer-opacity)); } } } @@ -769,10 +735,7 @@ color: rgb(var(--uk-sys-color-on-surface-variant)); &::before { - background-color: rgb( - var(--uk-sys-color-on-surface-variant), - var(--uk-sys-state-pressed-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-on-surface-variant), var(--uk-sys-state-pressed-state-layer-opacity)); } &[data-type="toggle"] { @@ -790,10 +753,7 @@ color: rgb(var(--uk-sys-color-primary)); &::before { - background-color: rgb( - var(--uk-sys-color-primary), - var(--uk-sys-state-pressed-state-layer-opacity) - ); + background-color: rgb(var(--uk-sys-color-primary), var(--uk-sys-state-pressed-state-layer-opacity)); } } } diff --git a/uikit-solid/src/components/iconButton/lib/size.ts b/uikit-solid/src/components/iconButton/lib/size.ts index 50523bc..8ae9004 100644 --- a/uikit-solid/src/components/iconButton/lib/size.ts +++ b/uikit-solid/src/components/iconButton/lib/size.ts @@ -1 +1 @@ -export type IconButtonSize = "xs" | "s" | "m" | "l" | "xl"; +export type IconButtonSize = "xxs" | "xs" | "s" | "m" | "l" | "xl"; diff --git a/uikit-solid/src/components/sideBar/UKSideBar.tsx b/uikit-solid/src/components/sideBar/UKSideBar.tsx index e3ef0e3..4dd7511 100644 --- a/uikit-solid/src/components/sideBar/UKSideBar.tsx +++ b/uikit-solid/src/components/sideBar/UKSideBar.tsx @@ -1,7 +1,7 @@ import MENU_ICON from "@material-symbols/svg-700/outlined/menu.svg"; import MENU_OPEN_ICON from "@material-symbols/svg-700/outlined/menu_open.svg"; import clsx from "clsx"; -import {type Component, createSignal, Index, type ParentProps, Show} from "solid-js"; +import {type Component, createSignal, For, type ParentProps, Show} from "solid-js"; import useIsMobile from "../../core/useIsMobile.ts"; import UKDivider from "../divider/UKDivider.tsx"; import UKIcon from "../icon/UKIcon.tsx"; @@ -62,35 +62,35 @@ const UKSideBar: Component< /> )} - i !== undefined)}> + i !== undefined)}> {(item, index) => { - switch (item().type) { + switch (item.type) { case "button": return ( - ); case "label": - return
{(item() as LabelItem).label}
; + return
{(item as LabelItem).label}
; case "margin": return
; case "divider": return ; case "component": - return <>{(item() as ComponentItem).component}; + return <>{(item as ComponentItem).component}; default: return
AHH
; } }} - +
{props.children}