homebox/frontend/composables/use-preferences.ts
Hayden 91d0c588d9
refactor: refactor item page UI (#235)
* fix generated types

* fix tailwind auto-complete

* force lowercase buttons

* add title and change style for items page

* add copy button support for item details

* empty state for log

* fix duplicate padding

* add option for create without closing the current dialog.

* hide purchase price is not set

* invert toggle for edit mode

* update styles on item cards

* add edit support for maintenance logs
2023-01-21 21:15:23 -09:00

30 lines
885 B
TypeScript

import { Ref } from "vue";
import { DaisyTheme } from "~~/lib/data/themes";
export type LocationViewPreferences = {
showDetails: boolean;
showEmpty: boolean;
editorAdvancedView: boolean;
theme: DaisyTheme;
};
/**
* useViewPreferences loads the view preferences from local storage and hydrates
* them. These are reactive and will update the local storage when changed.
*/
export function useViewPreferences(): Ref<LocationViewPreferences> {
const results = useLocalStorage(
"homebox/preferences/location",
{
showDetails: true,
showEmpty: true,
editorAdvancedView: false,
theme: "homebox",
},
{ mergeDefaults: true }
);
// casting is required because the type returned is removable, however since we
// use `mergeDefaults` the result _should_ always be present.
return results as unknown as Ref<LocationViewPreferences>;
}