@shadow-library/ui 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,12 @@
1
1
  import { type ReactNode } from 'react';
2
- import { type NavGroup, type NavItem, type NotificationsConfig, type UserInfo } from './layout.types';
2
+ import { type NavItems, type NotificationsConfig, type UserInfo } from './layout.types';
3
3
  /**
4
4
  * Defining types
5
5
  */
6
6
  interface AppLayoutProps {
7
7
  appName: string;
8
8
  children: ReactNode;
9
- navItems: (NavItem | NavGroup)[];
9
+ navItems: NavItems;
10
10
  headerContent?: ReactNode;
11
11
  user?: UserInfo;
12
12
  notifications?: NotificationsConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"AppLayout.js","sources":["../../../src/components/AppLayout/AppLayout.tsx"],"sourcesContent":["/**\n * Importing npm packages\n */\nimport { AppShell } from '@mantine/core';\nimport { type ReactNode } from 'react';\n\n/**\n * Importing user defined packages\n */\nimport styles from './AppLayout.module.css';\nimport { ContentFooter } from './ContentFooter';\nimport { useLayoutState } from './hooks/use-layout-state';\nimport { type NavGroup, type NavItem, type NotificationsConfig, type UserInfo } from './layout.types';\nimport { SideNavbar } from './SideNavbar';\nimport { TopNavbar } from './TopNavbar';\n\n/**\n * Defining types\n */\n\ninterface AppLayoutProps {\n appName: string;\n children: ReactNode;\n navItems: (NavItem | NavGroup)[];\n headerContent?: ReactNode;\n user?: UserInfo;\n notifications?: NotificationsConfig;\n footer?: ReactNode;\n showThemeToggle?: boolean;\n defaultCollapsed?: boolean;\n}\n\n/**\n * Declaring the constants\n */\n\nexport function AppLayout({ children, appName, navItems, headerContent, user, notifications, footer, showThemeToggle, defaultCollapsed }: AppLayoutProps) {\n const { collapsed, toggleCollapsed, mobileOpened, toggleMobile, closeMobile } = useLayoutState({ defaultCollapsed });\n\n return (\n <AppShell layout='alt' header={{ height: 56 }} navbar={{ width: collapsed ? 56 : 260, breakpoint: 'sm', collapsed: { mobile: !mobileOpened } }} padding='md'>\n <AppShell.Header>\n <TopNavbar\n navItems={navItems}\n headerContent={headerContent}\n user={user}\n notifications={notifications}\n showThemeToggle={showThemeToggle}\n mobileOpened={mobileOpened}\n onToggleMobile={toggleMobile}\n />\n </AppShell.Header>\n\n <AppShell.Navbar>\n <SideNavbar items={navItems} collapsed={collapsed} onToggleCollapsed={toggleCollapsed} onNavigate={closeMobile} appName={appName} onCloseMobile={closeMobile} />\n </AppShell.Navbar>\n\n <AppShell.Main className={styles.main}>\n <div className={styles.mainContent}>{children}</div>\n {footer && <ContentFooter content={footer} />}\n </AppShell.Main>\n </AppShell>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AppLayout.js","sources":["../../../src/components/AppLayout/AppLayout.tsx"],"sourcesContent":["/**\n * Importing npm packages\n */\nimport { AppShell } from '@mantine/core';\nimport { type ReactNode } from 'react';\n\n/**\n * Importing user defined packages\n */\nimport styles from './AppLayout.module.css';\nimport { ContentFooter } from './ContentFooter';\nimport { useLayoutState } from './hooks/use-layout-state';\nimport { type NavItems, type NotificationsConfig, type UserInfo } from './layout.types';\nimport { SideNavbar } from './SideNavbar';\nimport { TopNavbar } from './TopNavbar';\n\n/**\n * Defining types\n */\n\ninterface AppLayoutProps {\n appName: string;\n children: ReactNode;\n navItems: NavItems;\n headerContent?: ReactNode;\n user?: UserInfo;\n notifications?: NotificationsConfig;\n footer?: ReactNode;\n showThemeToggle?: boolean;\n defaultCollapsed?: boolean;\n}\n\n/**\n * Declaring the constants\n */\n\nexport function AppLayout({ children, appName, navItems, headerContent, user, notifications, footer, showThemeToggle, defaultCollapsed }: AppLayoutProps) {\n const { collapsed, toggleCollapsed, mobileOpened, toggleMobile, closeMobile } = useLayoutState({ defaultCollapsed });\n\n return (\n <AppShell layout='alt' header={{ height: 56 }} navbar={{ width: collapsed ? 56 : 260, breakpoint: 'sm', collapsed: { mobile: !mobileOpened } }} padding='md'>\n <AppShell.Header>\n <TopNavbar\n navItems={navItems}\n headerContent={headerContent}\n user={user}\n notifications={notifications}\n showThemeToggle={showThemeToggle}\n mobileOpened={mobileOpened}\n onToggleMobile={toggleMobile}\n />\n </AppShell.Header>\n\n <AppShell.Navbar>\n <SideNavbar items={navItems} collapsed={collapsed} onToggleCollapsed={toggleCollapsed} onNavigate={closeMobile} appName={appName} onCloseMobile={closeMobile} />\n </AppShell.Navbar>\n\n <AppShell.Main className={styles.main}>\n <div className={styles.mainContent}>{children}</div>\n {footer && <ContentFooter content={footer} />}\n </AppShell.Main>\n </AppShell>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { useComputedColorScheme, useMantineColorScheme, Group, Burger, Box, Text, ActionIcon, Indicator, Menu, Avatar } from '@mantine/core';
4
4
  import { Sun, Moon, Bell } from 'lucide-react';
5
+ import '../../lib/api-request.js';
5
6
  import { getInitials } from '../../lib/utils.js';
6
7
  import { useActiveNavLabel } from './hooks/use-active-nav-label.js';
7
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"TopNavbar.js","sources":["../../../src/components/AppLayout/TopNavbar.tsx"],"sourcesContent":["/**\n * Importing npm packages\n */\nimport { ActionIcon, Avatar, Box, Burger, Group, Indicator, Menu, Text, useComputedColorScheme, useMantineColorScheme } from '@mantine/core';\nimport { Bell, Moon, Sun } from 'lucide-react';\nimport { type ReactNode } from 'react';\n\n/**\n * Importing user defined packages\n */\nimport { getInitials } from '@/lib';\nimport { type VoidFn } from '@/types';\n\nimport { useActiveNavLabel } from './hooks/use-active-nav-label';\nimport { type NavGroup, type NavItem, type NotificationsConfig, type UserInfo } from './layout.types';\n\n/**\n * Defining types\n */\n\ninterface TopNavbarProps {\n navItems: (NavItem | NavGroup)[];\n headerContent?: ReactNode;\n user?: UserInfo;\n notifications?: NotificationsConfig;\n showThemeToggle?: boolean;\n mobileOpened: boolean;\n onToggleMobile: VoidFn;\n}\n\n/**\n * Declaring the constants\n */\n\nexport function TopNavbar({ navItems, headerContent, user, notifications, showThemeToggle = true, mobileOpened, onToggleMobile }: TopNavbarProps) {\n const theme = useComputedColorScheme();\n const { toggleColorScheme } = useMantineColorScheme();\n const activeLabel = useActiveNavLabel(navItems);\n\n return (\n <Group h='100%' px='md' justify='space-between' wrap='nowrap'>\n {/* Left section */}\n <Group gap='sm' wrap='nowrap'>\n <Burger opened={mobileOpened} onClick={onToggleMobile} hiddenFrom='sm' size='sm' aria-label='Toggle navigation' />\n <Box visibleFrom='sm'>\n {headerContent ??\n (activeLabel && (\n <Text fw={500} size='sm' c='dimmed'>\n {activeLabel}\n </Text>\n ))}\n </Box>\n </Group>\n\n {/* Right section */}\n <Group gap='sm' wrap='nowrap'>\n {showThemeToggle && (\n <ActionIcon onClick={toggleColorScheme} size='lg' aria-label='Toggle color scheme'>\n {theme === 'dark' ? <Sun size={18} /> : <Moon size={18} />}\n </ActionIcon>\n )}\n\n {notifications && (\n <Indicator label={notifications.count} size={16} disabled={notifications.count === 0} offset={4}>\n <ActionIcon onClick={notifications.onClick} size='lg' aria-label='Notifications'>\n <Bell size={18} />\n </ActionIcon>\n </Indicator>\n )}\n\n {user && (\n <Menu position='bottom-end' offset={8} width={200}>\n <Menu.Target>\n <ActionIcon variant='transparent' size='lg' radius='xl' aria-label='User menu' ml='md'>\n <Avatar src={user.avatarUrl} size='sm' radius='xl' color='initials'>\n {!user.avatarUrl && getInitials(user.name)}\n </Avatar>\n </ActionIcon>\n </Menu.Target>\n <Menu.Dropdown>\n <Menu.Label>\n <Text size='sm' fw={500}>\n {user.name}\n </Text>\n {user.email && (\n <Text size='xs' c='dimmed'>\n {user.email}\n </Text>\n )}\n </Menu.Label>\n {user.actions?.map((action, index) => (\n <div key={action.label}>\n {(action.divider || index === 0) && <Menu.Divider />}\n <Menu.Item leftSection={action.icon && <action.icon size={14} />} color={action.color} onClick={action.onClick}>\n {action.label}\n </Menu.Item>\n </div>\n ))}\n </Menu.Dropdown>\n </Menu>\n )}\n </Group>\n </Group>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TopNavbar.js","sources":["../../../src/components/AppLayout/TopNavbar.tsx"],"sourcesContent":["/**\n * Importing npm packages\n */\nimport { ActionIcon, Avatar, Box, Burger, Group, Indicator, Menu, Text, useComputedColorScheme, useMantineColorScheme } from '@mantine/core';\nimport { Bell, Moon, Sun } from 'lucide-react';\nimport { type ReactNode } from 'react';\n\n/**\n * Importing user defined packages\n */\nimport { getInitials } from '@/lib';\nimport { type VoidFn } from '@/types';\n\nimport { useActiveNavLabel } from './hooks/use-active-nav-label';\nimport { type NavGroup, type NavItem, type NotificationsConfig, type UserInfo } from './layout.types';\n\n/**\n * Defining types\n */\n\ninterface TopNavbarProps {\n navItems: (NavItem | NavGroup)[];\n headerContent?: ReactNode;\n user?: UserInfo;\n notifications?: NotificationsConfig;\n showThemeToggle?: boolean;\n mobileOpened: boolean;\n onToggleMobile: VoidFn;\n}\n\n/**\n * Declaring the constants\n */\n\nexport function TopNavbar({ navItems, headerContent, user, notifications, showThemeToggle = true, mobileOpened, onToggleMobile }: TopNavbarProps) {\n const theme = useComputedColorScheme();\n const { toggleColorScheme } = useMantineColorScheme();\n const activeLabel = useActiveNavLabel(navItems);\n\n return (\n <Group h='100%' px='md' justify='space-between' wrap='nowrap'>\n {/* Left section */}\n <Group gap='sm' wrap='nowrap'>\n <Burger opened={mobileOpened} onClick={onToggleMobile} hiddenFrom='sm' size='sm' aria-label='Toggle navigation' />\n <Box visibleFrom='sm'>\n {headerContent ??\n (activeLabel && (\n <Text fw={500} size='sm' c='dimmed'>\n {activeLabel}\n </Text>\n ))}\n </Box>\n </Group>\n\n {/* Right section */}\n <Group gap='sm' wrap='nowrap'>\n {showThemeToggle && (\n <ActionIcon onClick={toggleColorScheme} size='lg' aria-label='Toggle color scheme'>\n {theme === 'dark' ? <Sun size={18} /> : <Moon size={18} />}\n </ActionIcon>\n )}\n\n {notifications && (\n <Indicator label={notifications.count} size={16} disabled={notifications.count === 0} offset={4}>\n <ActionIcon onClick={notifications.onClick} size='lg' aria-label='Notifications'>\n <Bell size={18} />\n </ActionIcon>\n </Indicator>\n )}\n\n {user && (\n <Menu position='bottom-end' offset={8} width={200}>\n <Menu.Target>\n <ActionIcon variant='transparent' size='lg' radius='xl' aria-label='User menu' ml='md'>\n <Avatar src={user.avatarUrl} size='sm' radius='xl' color='initials'>\n {!user.avatarUrl && getInitials(user.name)}\n </Avatar>\n </ActionIcon>\n </Menu.Target>\n <Menu.Dropdown>\n <Menu.Label>\n <Text size='sm' fw={500}>\n {user.name}\n </Text>\n {user.email && (\n <Text size='xs' c='dimmed'>\n {user.email}\n </Text>\n )}\n </Menu.Label>\n {user.actions?.map((action, index) => (\n <div key={action.label}>\n {(action.divider || index === 0) && <Menu.Divider />}\n <Menu.Item leftSection={action.icon && <action.icon size={14} />} color={action.color} onClick={action.onClick}>\n {action.label}\n </Menu.Item>\n </div>\n ))}\n </Menu.Dropdown>\n </Menu>\n )}\n </Group>\n </Group>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Importing npm packages
3
3
  */
4
+ import { type LinkProps } from '@tanstack/react-router';
4
5
  import { type LucideIcon } from 'lucide-react';
5
6
  import { type MouseEventHandler } from 'react';
6
7
  /**
@@ -17,7 +18,7 @@ export interface NavItem {
17
18
  /** Lucide icon component (not element), e.g. `Home` not `<Home />` */
18
19
  icon: LucideIcon;
19
20
  /** Route path — used for navigation and active-state matching */
20
- path?: string;
21
+ path?: LinkProps['to'];
21
22
  /** Click handler — called in addition to navigation when `path` is set */
22
23
  onClick?: MouseEventHandler;
23
24
  /** Nested children — renders accordion (expanded) or flyout (collapsed) */
@@ -57,3 +58,4 @@ export interface NavGroup {
57
58
  /** Nav items belonging to this group */
58
59
  items: NavItem[];
59
60
  }
61
+ export type NavItems = (NavItem | NavGroup)[];
@@ -1,7 +1,7 @@
1
1
  import { ApiError } from './api-error.js';
2
2
 
3
3
  class APIRequest {
4
- static baseUrl = "/api/v1";
4
+ static baseUrl = import.meta.env.VITE_API_BASE_URL || "";
5
5
  static preRequestHook = null;
6
6
  static postResponseHook = null;
7
7
  options;
@@ -63,8 +63,10 @@ class APIRequest {
63
63
  }
64
64
  async execute() {
65
65
  const { path, method, headers, query, data } = this.options;
66
- const queryString = Object.keys(query).length > 0 ? `?${new URLSearchParams(query).toString()}` : "";
67
- const url = path.startsWith("http://") || path.startsWith("https://") ? `${path}${queryString}` : `${APIRequest.baseUrl}${path}${queryString}`;
66
+ let url = path;
67
+ const searchParams = new URLSearchParams(query);
68
+ if (searchParams.size) url += `?${searchParams.toString()}`;
69
+ if (!path.startsWith("http://") && !path.startsWith("https://")) url = APIRequest.baseUrl + url;
68
70
  const init = { method, headers };
69
71
  if (data) {
70
72
  headers["content-type"] = "application/json";
@@ -1 +1 @@
1
- {"version":3,"file":"api-request.js","sources":["../../src/lib/api-request.ts"],"sourcesContent":["/**\n * Importing npm packages\n */\n\n/**\n * Importing user defined packages\n */\nimport { type JsonObject, type JsonValue, type VoidFn } from '@/types';\n\nimport { ApiError, type ErrorResponse } from './api-error';\n\n/**\n * Defining types\n */\n\nexport interface APIRequestOptions {\n path: string;\n method: string;\n headers: Record<string, string>;\n query: Record<string, string>;\n data?: JsonObject;\n}\n\nexport interface PreRequestContext {\n url: string;\n init: RequestInit;\n options: Readonly<APIRequestOptions>;\n}\n\nexport interface PostResponseContext {\n response: Response;\n options: Readonly<APIRequestOptions>;\n}\n\nexport type PreRequestHook = (context: PreRequestContext) => void | Promise<void>;\n\nexport type PostResponseHook = (context: PostResponseContext) => void | Promise<void>;\n\nexport type QueryParams = Record<string, string | number | boolean | undefined>;\n\n/**\n * Declaring the constants\n */\n\nexport class APIRequest {\n private static baseUrl = '/api/v1';\n private static preRequestHook: PreRequestHook | null = null;\n private static postResponseHook: PostResponseHook | null = null;\n\n private readonly options: APIRequestOptions;\n\n private constructor(path: string, method: string) {\n this.options = { path, method, headers: {}, query: {} };\n }\n\n static get(path: string): APIRequest {\n return new APIRequest(path, 'GET');\n }\n\n static post(path: string): APIRequest {\n return new APIRequest(path, 'POST');\n }\n\n static put(path: string): APIRequest {\n return new APIRequest(path, 'PUT');\n }\n\n static patch(path: string): APIRequest {\n return new APIRequest(path, 'PATCH');\n }\n\n static delete(path: string): APIRequest {\n return new APIRequest(path, 'DELETE');\n }\n\n static setBaseUrl(baseUrl: string): void {\n APIRequest.baseUrl = baseUrl;\n }\n\n static setPreRequestHook(hook: PreRequestHook | null): void {\n APIRequest.preRequestHook = hook;\n }\n\n static setPostResponseHook(hook: PostResponseHook | null): void {\n APIRequest.postResponseHook = hook;\n }\n\n header(key: string, value: string): this {\n this.options.headers[key] = value;\n return this;\n }\n\n query(key: string, value: string): this;\n query(params: QueryParams): this;\n query(keyOrParams: string | QueryParams, value?: string): this {\n if (typeof keyOrParams === 'string') this.options.query[keyOrParams] = String(value);\n else {\n for (const [k, v] of Object.entries(keyOrParams)) {\n if (v !== undefined) this.options.query[k] = String(v);\n }\n }\n return this;\n }\n\n field(key: string, value: JsonValue): this {\n if (!this.options.data) this.options.data = {};\n\n const keys = key.split('.');\n let pointer = this.options.data;\n for (let index = 0; index < keys.length - 1; index++) {\n const currentKey = keys[index] as string;\n if (!pointer[currentKey]) pointer[currentKey] = {};\n pointer = pointer[currentKey] as JsonObject;\n }\n pointer[keys[keys.length - 1] as string] = value;\n\n return this;\n }\n\n body(data: JsonObject): this {\n this.options.data = data;\n return this;\n }\n\n async execute<T>(): Promise<T> {\n const { path, method, headers, query, data } = this.options;\n\n const queryString = Object.keys(query).length > 0 ? `?${new URLSearchParams(query).toString()}` : '';\n const url = path.startsWith('http://') || path.startsWith('https://') ? `${path}${queryString}` : `${APIRequest.baseUrl}${path}${queryString}`;\n\n const init: RequestInit = { method, headers };\n if (data) {\n headers['content-type'] = 'application/json';\n init.body = JSON.stringify(data);\n }\n\n let response: Response;\n try {\n const options = { ...this.options };\n if (APIRequest.preRequestHook) await APIRequest.preRequestHook({ url, init, options });\n response = await fetch(url, init);\n if (APIRequest.postResponseHook) await APIRequest.postResponseHook({ response, options });\n } catch {\n throw new ApiError(-1, { code: 'NETWORK_ERROR', type: 'NetworkError', message: 'Unable to reach the server' });\n }\n\n if (!response.ok) {\n let body: ErrorResponse;\n try {\n body = await response.json();\n } catch {\n throw new ApiError(response.status, { code: 'UNKNOWN_ERROR', type: 'UnknownError', message: `Request failed with status ${response.status}` });\n }\n throw new ApiError(response.status, body);\n }\n\n if (response.status === 204) return undefined as T;\n return response.json();\n }\n\n // biome-ignore lint/suspicious/noThenProperty: This class is designed to be thenable for convenient usage in async contexts\n then<T, TResult1 = T, TResult2 = never>(\n resolve?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n reject?: ((reason?: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n ): Promise<TResult1 | TResult2> {\n return this.execute<T>().then(resolve, reject);\n }\n\n catch<T, TResult = never>(reject?: ((reason?: unknown) => TResult | PromiseLike<TResult>) | null): Promise<T | TResult> {\n return this.execute<T>().catch(reject);\n }\n\n finally(callback: VoidFn): Promise<unknown> {\n return this.execute().finally(callback);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-request.js","sources":["../../src/lib/api-request.ts"],"sourcesContent":["/**\n * Importing npm packages\n */\n\n/**\n * Importing user defined packages\n */\nimport { type JsonObject, type JsonValue, type VoidFn } from '@/types';\n\nimport { ApiError, type ErrorResponse } from './api-error';\n\n/**\n * Defining types\n */\n\nexport interface APIRequestOptions {\n path: string;\n method: string;\n headers: Record<string, string>;\n query: Record<string, string>;\n data?: JsonObject;\n}\n\nexport interface PreRequestContext {\n url: string;\n init: RequestInit;\n options: Readonly<APIRequestOptions>;\n}\n\nexport interface PostResponseContext {\n response: Response;\n options: Readonly<APIRequestOptions>;\n}\n\nexport type PreRequestHook = (context: PreRequestContext) => void | Promise<void>;\n\nexport type PostResponseHook = (context: PostResponseContext) => void | Promise<void>;\n\nexport type QueryParams = Record<string, string | number | boolean | undefined>;\n\n/**\n * Declaring the constants\n */\n\nexport class APIRequest {\n private static baseUrl = import.meta.env.VITE_API_BASE_URL || '';\n private static preRequestHook: PreRequestHook | null = null;\n private static postResponseHook: PostResponseHook | null = null;\n\n private readonly options: APIRequestOptions;\n\n private constructor(path: string, method: string) {\n this.options = { path, method, headers: {}, query: {} };\n }\n\n static get(path: string): APIRequest {\n return new APIRequest(path, 'GET');\n }\n\n static post(path: string): APIRequest {\n return new APIRequest(path, 'POST');\n }\n\n static put(path: string): APIRequest {\n return new APIRequest(path, 'PUT');\n }\n\n static patch(path: string): APIRequest {\n return new APIRequest(path, 'PATCH');\n }\n\n static delete(path: string): APIRequest {\n return new APIRequest(path, 'DELETE');\n }\n\n static setBaseUrl(baseUrl: string): void {\n APIRequest.baseUrl = baseUrl;\n }\n\n static setPreRequestHook(hook: PreRequestHook | null): void {\n APIRequest.preRequestHook = hook;\n }\n\n static setPostResponseHook(hook: PostResponseHook | null): void {\n APIRequest.postResponseHook = hook;\n }\n\n header(key: string, value: string): this {\n this.options.headers[key] = value;\n return this;\n }\n\n query(key: string, value: string): this;\n query(params: QueryParams): this;\n query(keyOrParams: string | QueryParams, value?: string): this {\n if (typeof keyOrParams === 'string') this.options.query[keyOrParams] = String(value);\n else {\n for (const [k, v] of Object.entries(keyOrParams)) {\n if (v !== undefined) this.options.query[k] = String(v);\n }\n }\n return this;\n }\n\n field(key: string, value: JsonValue): this {\n if (!this.options.data) this.options.data = {};\n\n const keys = key.split('.');\n let pointer = this.options.data;\n for (let index = 0; index < keys.length - 1; index++) {\n const currentKey = keys[index] as string;\n if (!pointer[currentKey]) pointer[currentKey] = {};\n pointer = pointer[currentKey] as JsonObject;\n }\n pointer[keys[keys.length - 1] as string] = value;\n\n return this;\n }\n\n body(data: JsonObject): this {\n this.options.data = data;\n return this;\n }\n\n async execute<T>(): Promise<T> {\n const { path, method, headers, query, data } = this.options;\n\n let url: string = path;\n const searchParams = new URLSearchParams(query);\n if (searchParams.size) url += `?${searchParams.toString()}`;\n if (!path.startsWith('http://') && !path.startsWith('https://')) url = APIRequest.baseUrl + url;\n\n const init: RequestInit = { method, headers };\n if (data) {\n headers['content-type'] = 'application/json';\n init.body = JSON.stringify(data);\n }\n\n let response: Response;\n try {\n const options = { ...this.options };\n if (APIRequest.preRequestHook) await APIRequest.preRequestHook({ url, init, options });\n response = await fetch(url, init);\n if (APIRequest.postResponseHook) await APIRequest.postResponseHook({ response, options });\n } catch {\n throw new ApiError(-1, { code: 'NETWORK_ERROR', type: 'NetworkError', message: 'Unable to reach the server' });\n }\n\n if (!response.ok) {\n let body: ErrorResponse;\n try {\n body = await response.json();\n } catch {\n throw new ApiError(response.status, { code: 'UNKNOWN_ERROR', type: 'UnknownError', message: `Request failed with status ${response.status}` });\n }\n throw new ApiError(response.status, body);\n }\n\n if (response.status === 204) return undefined as T;\n return response.json();\n }\n\n // biome-ignore lint/suspicious/noThenProperty: This class is designed to be thenable for convenient usage in async contexts\n then<T, TResult1 = T, TResult2 = never>(\n resolve?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n reject?: ((reason?: unknown) => TResult2 | PromiseLike<TResult2>) | null,\n ): Promise<TResult1 | TResult2> {\n return this.execute<T>().then(resolve, reject);\n }\n\n catch<T, TResult = never>(reject?: ((reason?: unknown) => TResult | PromiseLike<TResult>) | null): Promise<T | TResult> {\n return this.execute<T>().catch(reject);\n }\n\n finally(callback: VoidFn): Promise<unknown> {\n return this.execute().finally(callback);\n }\n}\n"],"names":[],"mappings":";;AA4CO,MAAM,UAAA,CAAW;AAAA,EACtB,OAAe,OAAA,GAAU,MAAA,CAAA,IAAA,CAAY,GAAA,CAAI,iBAAA,IAAqB,EAAA;AAAA,EAC9D,OAAe,cAAA,GAAwC,IAAA;AAAA,EACvD,OAAe,gBAAA,GAA4C,IAAA;AAAA,EAE1C,OAAA;AAAA,EAET,WAAA,CAAY,MAAc,MAAA,EAAgB;AAChD,IAAA,IAAA,CAAK,OAAA,GAAU,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,EAAC,EAAG,KAAA,EAAO,EAAC,EAAE;AAAA,EACxD;AAAA,EAEA,OAAO,IAAI,IAAA,EAA0B;AACnC,IAAA,OAAO,IAAI,UAAA,CAAW,IAAA,EAAM,KAAK,CAAA;AAAA,EACnC;AAAA,EAEA,OAAO,KAAK,IAAA,EAA0B;AACpC,IAAA,OAAO,IAAI,UAAA,CAAW,IAAA,EAAM,MAAM,CAAA;AAAA,EACpC;AAAA,EAEA,OAAO,IAAI,IAAA,EAA0B;AACnC,IAAA,OAAO,IAAI,UAAA,CAAW,IAAA,EAAM,KAAK,CAAA;AAAA,EACnC;AAAA,EAEA,OAAO,MAAM,IAAA,EAA0B;AACrC,IAAA,OAAO,IAAI,UAAA,CAAW,IAAA,EAAM,OAAO,CAAA;AAAA,EACrC;AAAA,EAEA,OAAO,OAAO,IAAA,EAA0B;AACtC,IAAA,OAAO,IAAI,UAAA,CAAW,IAAA,EAAM,QAAQ,CAAA;AAAA,EACtC;AAAA,EAEA,OAAO,WAAW,OAAA,EAAuB;AACvC,IAAA,UAAA,CAAW,OAAA,GAAU,OAAA;AAAA,EACvB;AAAA,EAEA,OAAO,kBAAkB,IAAA,EAAmC;AAC1D,IAAA,UAAA,CAAW,cAAA,GAAiB,IAAA;AAAA,EAC9B;AAAA,EAEA,OAAO,oBAAoB,IAAA,EAAqC;AAC9D,IAAA,UAAA,CAAW,gBAAA,GAAmB,IAAA;AAAA,EAChC;AAAA,EAEA,MAAA,CAAO,KAAa,KAAA,EAAqB;AACvC,IAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,GAAG,CAAA,GAAI,KAAA;AAC5B,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAIA,KAAA,CAAM,aAAmC,KAAA,EAAsB;AAC7D,IAAA,IAAI,OAAO,gBAAgB,QAAA,EAAU,IAAA,CAAK,QAAQ,KAAA,CAAM,WAAW,CAAA,GAAI,MAAA,CAAO,KAAK,CAAA;AAAA,SAC9E;AACH,MAAA,KAAA,MAAW,CAAC,CAAA,EAAG,CAAC,KAAK,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAA,EAAG;AAChD,QAAA,IAAI,CAAA,KAAM,QAAW,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAC,CAAA,GAAI,OAAO,CAAC,CAAA;AAAA,MACvD;AAAA,IACF;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,KAAA,CAAM,KAAa,KAAA,EAAwB;AACzC,IAAA,IAAI,CAAC,IAAA,CAAK,OAAA,CAAQ,MAAM,IAAA,CAAK,OAAA,CAAQ,OAAO,EAAC;AAE7C,IAAA,MAAM,IAAA,GAAO,GAAA,CAAI,KAAA,CAAM,GAAG,CAAA;AAC1B,IAAA,IAAI,OAAA,GAAU,KAAK,OAAA,CAAQ,IAAA;AAC3B,IAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,IAAA,CAAK,MAAA,GAAS,GAAG,KAAA,EAAA,EAAS;AACpD,MAAA,MAAM,UAAA,GAAa,KAAK,KAAK,CAAA;AAC7B,MAAA,IAAI,CAAC,OAAA,CAAQ,UAAU,GAAG,OAAA,CAAQ,UAAU,IAAI,EAAC;AACjD,MAAA,OAAA,GAAU,QAAQ,UAAU,CAAA;AAAA,IAC9B;AACA,IAAA,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAW,CAAA,GAAI,KAAA;AAE3C,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,KAAK,IAAA,EAAwB;AAC3B,IAAA,IAAA,CAAK,QAAQ,IAAA,GAAO,IAAA;AACpB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAEA,MAAM,OAAA,GAAyB;AAC7B,IAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,KAAA,EAAO,IAAA,KAAS,IAAA,CAAK,OAAA;AAEpD,IAAA,IAAI,GAAA,GAAc,IAAA;AAClB,IAAA,MAAM,YAAA,GAAe,IAAI,eAAA,CAAgB,KAAK,CAAA;AAC9C,IAAA,IAAI,aAAa,IAAA,EAAM,GAAA,IAAO,CAAA,CAAA,EAAI,YAAA,CAAa,UAAU,CAAA,CAAA;AACzD,IAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,SAAS,CAAA,IAAK,CAAC,IAAA,CAAK,UAAA,CAAW,UAAU,CAAA,EAAG,GAAA,GAAM,UAAA,CAAW,OAAA,GAAU,GAAA;AAE5F,IAAA,MAAM,IAAA,GAAoB,EAAE,MAAA,EAAQ,OAAA,EAAQ;AAC5C,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,OAAA,CAAQ,cAAc,CAAA,GAAI,kBAAA;AAC1B,MAAA,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA;AAAA,IACjC;AAEA,IAAA,IAAI,QAAA;AACJ,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,EAAE,GAAG,IAAA,CAAK,OAAA,EAAQ;AAClC,MAAA,IAAI,UAAA,CAAW,gBAAgB,MAAM,UAAA,CAAW,eAAe,EAAE,GAAA,EAAK,IAAA,EAAM,OAAA,EAAS,CAAA;AACrF,MAAA,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK,IAAI,CAAA;AAChC,MAAA,IAAI,UAAA,CAAW,kBAAkB,MAAM,UAAA,CAAW,iBAAiB,EAAE,QAAA,EAAU,SAAS,CAAA;AAAA,IAC1F,CAAA,CAAA,MAAQ;AACN,MAAA,MAAM,IAAI,QAAA,CAAS,EAAA,EAAI,EAAE,IAAA,EAAM,iBAAiB,IAAA,EAAM,cAAA,EAAgB,OAAA,EAAS,4BAAA,EAA8B,CAAA;AAAA,IAC/G;AAEA,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,IAAI,IAAA;AACJ,MAAA,IAAI;AACF,QAAA,IAAA,GAAO,MAAM,SAAS,IAAA,EAAK;AAAA,MAC7B,CAAA,CAAA,MAAQ;AACN,QAAA,MAAM,IAAI,QAAA,CAAS,QAAA,CAAS,MAAA,EAAQ,EAAE,IAAA,EAAM,eAAA,EAAiB,IAAA,EAAM,cAAA,EAAgB,OAAA,EAAS,CAAA,2BAAA,EAA8B,QAAA,CAAS,MAAM,IAAI,CAAA;AAAA,MAC/I;AACA,MAAA,MAAM,IAAI,QAAA,CAAS,QAAA,CAAS,MAAA,EAAQ,IAAI,CAAA;AAAA,IAC1C;AAEA,IAAA,IAAI,QAAA,CAAS,MAAA,KAAW,GAAA,EAAK,OAAO,MAAA;AACpC,IAAA,OAAO,SAAS,IAAA,EAAK;AAAA,EACvB;AAAA;AAAA,EAGA,IAAA,CACE,SACA,MAAA,EAC8B;AAC9B,IAAA,OAAO,IAAA,CAAK,OAAA,EAAW,CAAE,IAAA,CAAK,SAAS,MAAM,CAAA;AAAA,EAC/C;AAAA,EAEA,MAA0B,MAAA,EAA8F;AACtH,IAAA,OAAO,IAAA,CAAK,OAAA,EAAW,CAAE,KAAA,CAAM,MAAM,CAAA;AAAA,EACvC;AAAA,EAEA,QAAQ,QAAA,EAAoC;AAC1C,IAAA,OAAO,IAAA,CAAK,OAAA,EAAQ,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACxC;AACF;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shadow-library/ui",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "type": "module",
5
5
  "sideEffects": [
6
6
  "**/*.css"
package/theme.d.ts CHANGED
@@ -15,7 +15,7 @@ declare module '@mantine/core' {
15
15
  }
16
16
  }
17
17
  export declare const shadowTheme: {
18
- focusRing?: "auto" | "always" | "never" | undefined;
18
+ focusRing?: "always" | "never" | "auto" | undefined;
19
19
  scale?: number | undefined;
20
20
  fontSmoothing?: boolean | undefined;
21
21
  white?: string | undefined;