@manafishrov/ui 1.3.7 → 1.3.9
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.
- package/dist/Theme.d.ts +5 -0
- package/dist/Theme.js +31 -26
- package/dist/Theme.js.map +1 -1
- package/dist/components/Select.js +1 -1
- package/dist/components/Select.js.map +1 -1
- package/dist/components/form/SelectField.d.ts +1 -0
- package/dist/components/form/SelectField.js +35 -25
- package/dist/components/form/SelectField.js.map +1 -1
- package/dist/components/toaster/Toaster.js +13 -10
- package/dist/components/toaster/Toaster.js.map +1 -1
- package/dist/theme.css +1 -1
- package/package.json +1 -1
- package/src/Theme.tsx +10 -4
- package/src/components/Select.tsx +1 -1
- package/src/components/form/SelectField.tsx +29 -12
- package/src/components/toaster/Toaster.tsx +2 -2
- package/src/components/toaster/toaster.css +1 -0
package/dist/Theme.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { Component, JSXElement } from 'solid-js';
|
|
2
2
|
export type Theme = 'light' | 'dark' | 'system';
|
|
3
|
+
export declare const Theme: {
|
|
4
|
+
readonly light: "light";
|
|
5
|
+
readonly dark: "dark";
|
|
6
|
+
readonly system: "system";
|
|
7
|
+
};
|
|
3
8
|
export type ThemeProviderProps = {
|
|
4
9
|
theme?: Theme;
|
|
5
10
|
defaultTheme?: Theme;
|
package/dist/Theme.js
CHANGED
|
@@ -1,52 +1,57 @@
|
|
|
1
|
-
import { createComponent as
|
|
2
|
-
import { createSignal as
|
|
3
|
-
const
|
|
1
|
+
import { createComponent as y } from "solid-js/web";
|
|
2
|
+
import { createSignal as h, onMount as E, createEffect as i, on as m, useContext as b, createContext as S } from "solid-js";
|
|
3
|
+
const n = {
|
|
4
|
+
light: "light",
|
|
5
|
+
dark: "dark",
|
|
6
|
+
system: "system"
|
|
7
|
+
}, l = S(), k = "theme", g = "(prefers-color-scheme: dark)", d = () => typeof globalThis.matchMedia != "function" ? "light" : globalThis.matchMedia(g).matches ? "dark" : "light", v = (e, t) => {
|
|
4
8
|
if (!("localStorage" in globalThis))
|
|
5
9
|
return t;
|
|
6
10
|
const o = globalThis.localStorage.getItem(e);
|
|
7
|
-
return o ===
|
|
8
|
-
},
|
|
9
|
-
|
|
11
|
+
return o === n.light || o === n.dark || o === n.system ? o : t;
|
|
12
|
+
}, C = (e) => {
|
|
13
|
+
i(m(e, (t) => {
|
|
10
14
|
document.documentElement.classList.toggle("dark", t === "dark");
|
|
11
15
|
}));
|
|
12
|
-
},
|
|
16
|
+
}, M = (e) => {
|
|
13
17
|
if (typeof globalThis.matchMedia != "function")
|
|
14
18
|
return () => {
|
|
15
|
-
e(
|
|
19
|
+
e(d());
|
|
16
20
|
};
|
|
17
|
-
const t = globalThis.matchMedia(
|
|
18
|
-
e(
|
|
21
|
+
const t = globalThis.matchMedia(g), o = (s) => {
|
|
22
|
+
e(s.matches ? "dark" : "light");
|
|
19
23
|
};
|
|
20
24
|
return t.addEventListener("change", o), () => {
|
|
21
25
|
t.removeEventListener("change", o);
|
|
22
26
|
};
|
|
23
|
-
},
|
|
24
|
-
const t = () => e.storageKey ??
|
|
25
|
-
|
|
26
|
-
},
|
|
27
|
-
const r =
|
|
28
|
-
return r ===
|
|
27
|
+
}, K = (e) => {
|
|
28
|
+
const t = () => e.storageKey ?? k, o = () => e.defaultTheme ?? n.system, [s, a] = h(e.theme ?? v(t(), o())), [u, T] = h(d()), f = (r) => {
|
|
29
|
+
a(r), "localStorage" in globalThis && globalThis.localStorage.setItem(t(), r);
|
|
30
|
+
}, c = () => {
|
|
31
|
+
const r = s();
|
|
32
|
+
return r === n.system ? u() : r;
|
|
29
33
|
};
|
|
30
|
-
return
|
|
31
|
-
typeof r == "string" &&
|
|
32
|
-
})),
|
|
34
|
+
return E(() => M(T)), i(m(() => e.theme, (r) => {
|
|
35
|
+
typeof r == "string" && a(r);
|
|
36
|
+
})), C(c), y(l.Provider, {
|
|
33
37
|
value: {
|
|
34
|
-
theme:
|
|
35
|
-
setTheme:
|
|
36
|
-
resolvedTheme:
|
|
38
|
+
theme: s,
|
|
39
|
+
setTheme: f,
|
|
40
|
+
resolvedTheme: c
|
|
37
41
|
},
|
|
38
42
|
get children() {
|
|
39
43
|
return e.children;
|
|
40
44
|
}
|
|
41
45
|
});
|
|
42
|
-
},
|
|
43
|
-
const e =
|
|
46
|
+
}, R = () => {
|
|
47
|
+
const e = b(l);
|
|
44
48
|
if (!e)
|
|
45
49
|
throw new Error("useTheme must be used within a ThemeProvider");
|
|
46
50
|
return e;
|
|
47
51
|
};
|
|
48
52
|
export {
|
|
49
|
-
|
|
50
|
-
K as
|
|
53
|
+
n as Theme,
|
|
54
|
+
K as ThemeProvider,
|
|
55
|
+
R as useTheme
|
|
51
56
|
};
|
|
52
57
|
//# sourceMappingURL=Theme.js.map
|
package/dist/Theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Theme.js","sources":["../src/Theme.tsx"],"sourcesContent":["import type { Component, JSXElement } from 'solid-js';\n\nexport type Theme = 'light' | 'dark' | 'system';\n\nexport type ThemeProviderProps = {\n theme?: Theme;\n defaultTheme?: Theme;\n storageKey?: string;\n children: JSXElement;\n};\n\ntype ThemeContextValue = {\n theme: () => Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: () => 'light' | 'dark';\n};\n\nconst ThemeContext = createContext<ThemeContextValue>();\nconst DEFAULT_STORAGE_KEY = 'theme';\nconst DARK_THEME_QUERY = '(prefers-color-scheme: dark)';\n\nconst getSystemTheme = (): 'light' | 'dark' => {\n if (typeof globalThis.matchMedia !== 'function') {\n return 'light';\n }\n return globalThis.matchMedia(DARK_THEME_QUERY).matches ? 'dark' : 'light';\n};\n\nconst readStoredTheme = (storageKey: string, defaultTheme: Theme): Theme => {\n if (!('localStorage' in globalThis)) {\n return defaultTheme;\n }\n const stored = globalThis.localStorage.getItem(storageKey);\n if (stored ===
|
|
1
|
+
{"version":3,"file":"Theme.js","sources":["../src/Theme.tsx"],"sourcesContent":["import type { Component, JSXElement } from 'solid-js';\n\nexport type Theme = 'light' | 'dark' | 'system';\n\nexport const Theme = {\n light: 'light',\n dark: 'dark',\n system: 'system',\n} as const;\n\nexport type ThemeProviderProps = {\n theme?: Theme;\n defaultTheme?: Theme;\n storageKey?: string;\n children: JSXElement;\n};\n\ntype ThemeContextValue = {\n theme: () => Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: () => 'light' | 'dark';\n};\n\nconst ThemeContext = createContext<ThemeContextValue>();\nconst DEFAULT_STORAGE_KEY = 'theme';\nconst DARK_THEME_QUERY = '(prefers-color-scheme: dark)';\n\nconst getSystemTheme = (): 'light' | 'dark' => {\n if (typeof globalThis.matchMedia !== 'function') {\n return 'light';\n }\n return globalThis.matchMedia(DARK_THEME_QUERY).matches ? 'dark' : 'light';\n};\n\nconst readStoredTheme = (storageKey: string, defaultTheme: Theme): Theme => {\n if (!('localStorage' in globalThis)) {\n return defaultTheme;\n }\n const stored = globalThis.localStorage.getItem(storageKey);\n if (stored === Theme.light || stored === Theme.dark || stored === Theme.system) {\n return stored as Theme;\n }\n return defaultTheme;\n};\n\nconst applyRootThemeClass = (resolvedTheme: () => 'light' | 'dark'): void => {\n createEffect(\n on(resolvedTheme, (resolved) => {\n const root = document.documentElement;\n root.classList.toggle('dark', resolved === 'dark');\n }),\n );\n};\n\nconst createSystemThemeListener = (\n setSystemTheme: (theme: 'light' | 'dark') => void,\n): (() => void) => {\n if (typeof globalThis.matchMedia !== 'function') {\n return (): void => {\n setSystemTheme(getSystemTheme());\n };\n }\n const mediaQuery = globalThis.matchMedia(DARK_THEME_QUERY);\n const handleChange = (mediaQueryEvent: MediaQueryListEvent): void => {\n setSystemTheme(mediaQueryEvent.matches ? 'dark' : 'light');\n };\n mediaQuery.addEventListener('change', handleChange);\n return (): void => {\n mediaQuery.removeEventListener('change', handleChange);\n };\n};\n\nexport const ThemeProvider: Component<ThemeProviderProps> = (props) => {\n const storageKey = (): string => props.storageKey ?? DEFAULT_STORAGE_KEY;\n const fallbackTheme = (): Theme => props.defaultTheme ?? Theme.system;\n const [theme, setThemeState] = createSignal<Theme>(\n props.theme ?? readStoredTheme(storageKey(), fallbackTheme()),\n );\n const [systemTheme, setSystemTheme] = createSignal<'light' | 'dark'>(getSystemTheme());\n\n const setTheme = (newTheme: Theme): void => {\n setThemeState(newTheme);\n if ('localStorage' in globalThis) {\n globalThis.localStorage.setItem(storageKey(), newTheme);\n }\n };\n\n const resolvedTheme = (): 'light' | 'dark' => {\n const current = theme();\n return current === Theme.system ? systemTheme() : current;\n };\n\n onMount(() => createSystemThemeListener(setSystemTheme));\n\n createEffect(\n on(\n () => props.theme,\n (propTheme) => {\n if (typeof propTheme === 'string') {\n setThemeState(propTheme);\n }\n },\n ),\n );\n applyRootThemeClass(resolvedTheme);\n\n return (\n <ThemeContext.Provider value={{ theme, setTheme, resolvedTheme }}>\n {props.children}\n </ThemeContext.Provider>\n );\n};\n\nexport const useTheme = (): ThemeContextValue => {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n};\n"],"names":["Theme","light","dark","system","ThemeContext","createContext","DEFAULT_STORAGE_KEY","DARK_THEME_QUERY","getSystemTheme","globalThis","matchMedia","matches","readStoredTheme","storageKey","defaultTheme","stored","localStorage","getItem","applyRootThemeClass","resolvedTheme","createEffect","on","resolved","root","document","documentElement","classList","toggle","createSystemThemeListener","setSystemTheme","mediaQuery","handleChange","mediaQueryEvent","addEventListener","removeEventListener","ThemeProvider","props","fallbackTheme","theme","setThemeState","createSignal","systemTheme","setTheme","newTheme","setItem","current","onMount","propTheme","_$createComponent","Provider","value","children","useTheme","context","useContext","Error"],"mappings":";;AAIO,MAAMA,IAAQ;AAAA,EACnBC,OAAO;AAAA,EACPC,MAAM;AAAA,EACNC,QAAQ;AACV,GAeMC,IAAeC,EAAAA,GACfC,IAAsB,SACtBC,IAAmB,gCAEnBC,IAAiBA,MACjB,OAAOC,WAAWC,cAAe,aAC5B,UAEFD,WAAWC,WAAWH,CAAgB,EAAEI,UAAU,SAAS,SAG9DC,IAAkBA,CAACC,GAAoBC,MAA+B;AAC1E,MAAI,EAAE,kBAAkBL;AACtB,WAAOK;AAET,QAAMC,IAASN,WAAWO,aAAaC,QAAQJ,CAAU;AACzD,SAAIE,MAAWf,EAAMC,SAASc,MAAWf,EAAME,QAAQa,MAAWf,EAAMG,SAC/DY,IAEFD;AACT,GAEMI,IAAsBA,CAACC,MAAgD;AAC3EC,EAAAA,EACEC,EAAGF,GAAgBG,CAAAA,MAAa;AAE9BC,IADaC,SAASC,gBACjBC,UAAUC,OAAO,QAAQL,MAAa,MAAM;AAAA,EACnD,CAAC,CACH;AACF,GAEMM,IAA4BA,CAChCC,MACiB;AACjB,MAAI,OAAOpB,WAAWC,cAAe;AACnC,WAAO,MAAY;AACjBmB,MAAAA,EAAerB,GAAgB;AAAA,IACjC;AAEF,QAAMsB,IAAarB,WAAWC,WAAWH,CAAgB,GACnDwB,IAAeA,CAACC,MAA+C;AACnEH,IAAAA,EAAeG,EAAgBrB,UAAU,SAAS,OAAO;AAAA,EAC3D;AACAmB,SAAAA,EAAWG,iBAAiB,UAAUF,CAAY,GAC3C,MAAY;AACjBD,IAAAA,EAAWI,oBAAoB,UAAUH,CAAY;AAAA,EACvD;AACF,GAEaI,IAAgDC,CAAAA,MAAU;AACrE,QAAMvB,IAAaA,MAAcuB,EAAMvB,cAAcP,GAC/C+B,IAAgBA,MAAaD,EAAMtB,gBAAgBd,EAAMG,QACzD,CAACmC,GAAOC,CAAa,IAAIC,EAC7BJ,EAAME,SAAS1B,EAAgBC,KAAcwB,EAAAA,CAAe,CAC9D,GACM,CAACI,GAAaZ,CAAc,IAAIW,EAA+BhC,GAAgB,GAE/EkC,IAAWA,CAACC,MAA0B;AAC1CJ,IAAAA,EAAcI,CAAQ,GAClB,kBAAkBlC,cACpBA,WAAWO,aAAa4B,QAAQ/B,EAAAA,GAAc8B,CAAQ;AAAA,EAE1D,GAEMxB,IAAgBA,MAAwB;AAC5C,UAAM0B,IAAUP,EAAAA;AAChB,WAAOO,MAAY7C,EAAMG,SAASsC,EAAAA,IAAgBI;AAAAA,EACpD;AAEAC,SAAAA,EAAQ,MAAMlB,EAA0BC,CAAc,CAAC,GAEvDT,EACEC,EACE,MAAMe,EAAME,OACXS,CAAAA,MAAc;AACb,IAAI,OAAOA,KAAc,YACvBR,EAAcQ,CAAS;AAAA,EAE3B,CACF,CACF,GACA7B,EAAoBC,CAAa,GAEjC6B,EACG5C,EAAa6C,UAAQ;AAAA,IAACC,OAAO;AAAA,MAAEZ,OAAAA;AAAAA,MAAOI,UAAAA;AAAAA,MAAUvB,eAAAA;AAAAA,IAAAA;AAAAA,IAAe,IAAAgC,WAAA;AAAA,aAC7Df,EAAMe;AAAAA,IAAQ;AAAA,EAAA,CAAA;AAGrB,GAEaC,IAAWA,MAAyB;AAC/C,QAAMC,IAAUC,EAAWlD,CAAY;AACvC,MAAI,CAACiD;AACH,UAAM,IAAIE,MAAM,8CAA8C;AAEhE,SAAOF;AACT;"}
|
|
@@ -89,7 +89,7 @@ const F = r.Control, M = r.ItemContext, N = r.HiddenSelect, O = (t) => {
|
|
|
89
89
|
"data-slot": "select-trigger",
|
|
90
90
|
"data-size": a,
|
|
91
91
|
get class() {
|
|
92
|
-
return n('px-2.5 text-sm *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*="size-"])]:size-4 gap-1.5 min-w-0 shadow-xs flex w-full items-center justify-between rounded-lg border border-input bg-transparent whitespace-nowrap transition-[color,box-shadow] outline-none select-none disabled:cursor-not-allowed disabled:opacity-50 data-placeholder-shown:text-muted-foreground *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center dark:bg-input/30 dark:hover:bg-input/50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*="size-"])]:text-muted-foreground', "data-[size=default]:h-
|
|
92
|
+
return n('px-2.5 text-sm *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*="size-"])]:size-4 gap-1.5 min-w-0 shadow-xs flex w-full items-center justify-between rounded-lg border border-input bg-transparent whitespace-nowrap transition-[color,box-shadow] outline-none select-none disabled:cursor-not-allowed disabled:opacity-50 data-placeholder-shown:text-muted-foreground *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center dark:bg-input/30 dark:hover:bg-input/50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*="size-"])]:text-muted-foreground', "data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)]", "focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 data-[focus-visible]:border-ring data-[focus-visible]:ring-[3px] data-[focus-visible]:ring-ring/50", "data-[invalid=true]:border-destructive data-[invalid=true]:ring-[3px] data-[invalid=true]:ring-destructive/20 dark:data-[invalid=true]:ring-destructive/40", "data-[disabled=true]:bg-input/50 data-[disabled=true]:opacity-50 dark:data-[disabled=true]:bg-input/80", "data-[readonly=true]:cursor-default data-[readonly=true]:focus-visible:border-input data-[readonly=true]:focus-visible:ring-0 data-[readonly=true]:data-[focus-visible]:border-input data-[readonly=true]:data-[focus-visible]:ring-0", e.class);
|
|
93
93
|
}
|
|
94
94
|
}, s));
|
|
95
95
|
}, X = (t) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","sources":["../../src/components/Select.tsx"],"sourcesContent":["import { Select as SelectPrimitive } from '@ark-ui/solid/select';\nimport {\n type Component,\n type ComponentProps,\n type JSX,\n type JSXElement,\n For,\n splitProps,\n} from 'solid-js';\nimport { cn } from 'tailwind-variants';\nimport CheckIcon from '~icons/material-symbols/check';\nimport CloseIcon from '~icons/material-symbols/close';\nimport ExpandMoreIcon from '~icons/material-symbols/expand-more';\n\nexport const SelectControl = SelectPrimitive.Control;\nexport const SelectItemContext = SelectPrimitive.ItemContext;\nexport const SelectHiddenSelect = SelectPrimitive.HiddenSelect;\nexport const SelectList: Component<SelectPrimitive.ListProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <SelectPrimitive.List\n data-slot='select-list'\n class={cn('p-1 max-h-[min(var(--available-height),300px)] overflow-y-auto', local.class)}\n {...others}\n />\n );\n};\nexport const SelectContext = SelectPrimitive.Context;\n\ntype SelectComponent = (<TItem extends { value: string; label: string }>(\n props: SelectPrimitive.RootProps<TItem> & { class?: string },\n) => JSXElement) & {\n Tabs: <TItem extends { value: string; label: string }>(\n props: SelectTabsProps<TItem>,\n ) => JSXElement;\n};\n\nexport type SelectTabsTab<TItem extends { value: string; label: string }> = {\n value: TItem['value'];\n label: string;\n disabled?: boolean;\n};\n\nexport type SelectTabsProps<TItem extends { value: string; label: string }> =\n ComponentProps<'div'> & {\n items: SelectTabsTab<TItem>[];\n value?: TItem['value'];\n onValueChange?: (value: TItem['value']) => void;\n };\n\nconst SelectTabs = <TItem extends { value: string; label: string }>(\n props: SelectTabsProps<TItem>,\n): JSXElement => {\n const [local, others] = splitProps(props, ['class', 'items', 'value', 'onValueChange']);\n return (\n <div\n role='tablist'\n data-slot='select-tabs'\n class={cn('gap-1 p-1 inline-flex rounded-md bg-muted', local.class)}\n {...others}\n >\n <For each={local.items}>\n {(tab) => {\n const isActive = (): boolean => local.value === tab.value;\n return (\n <button\n type='button'\n role='tab'\n disabled={tab.disabled === true}\n aria-selected={isActive()}\n data-state={isActive() ? 'active' : 'inactive'}\n class={cn(\n 'h-8 px-3 text-sm rounded-sm transition-colors',\n 'data-[state=active]:shadow-sm data-[state=active]:bg-background data-[state=active]:text-foreground',\n 'data-[state=inactive]:text-muted-foreground hover:data-[state=inactive]:text-foreground',\n 'disabled:pointer-events-none disabled:opacity-50',\n )}\n onClick={() => {\n if (typeof local.onValueChange === 'function' && tab.disabled !== true) {\n local.onValueChange(tab.value);\n }\n }}\n >\n {tab.label}\n </button>\n );\n }}\n </For>\n </div>\n );\n};\n\nconst SelectRoot = <TItem extends { value: string; label: string }>(\n props: SelectPrimitive.RootProps<TItem> & { class?: string },\n): JSXElement => {\n const [local, others] = splitProps(props, ['class', 'positioning']);\n\n const positioning: NonNullable<SelectPrimitive.RootProps<TItem>['positioning']> = {\n placement: 'bottom-start',\n gutter: 4,\n sameWidth: true,\n ...local.positioning,\n };\n\n return (\n <SelectPrimitive.Root\n class={cn('flex w-full flex-col', local.class)}\n positioning={positioning}\n {...others}\n />\n );\n};\n\nexport const Select: SelectComponent = Object.assign(SelectRoot, {\n Tabs: SelectTabs as SelectComponent['Tabs'],\n});\n\nexport const SelectLabel: Component<SelectPrimitive.LabelProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <SelectPrimitive.Label\n class={cn(\n 'mb-1.5 gap-2 text-sm font-medium flex items-center leading-none select-none group-data-disabled:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n local.class,\n )}\n {...others}\n />\n );\n};\n\nexport const SelectGroup: Component<SelectPrimitive.ItemGroupProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <SelectPrimitive.ItemGroup\n data-slot='select-group'\n class={cn('scroll-my-1', local.class)}\n {...others}\n />\n );\n};\n\nexport const SelectValue: Component<SelectPrimitive.ValueTextProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <SelectPrimitive.ValueText\n data-slot='select-value'\n class={cn('flex flex-1 text-left', local.class)}\n {...others}\n />\n );\n};\n\nexport const SelectTrigger: Component<\n SelectPrimitive.TriggerProps & { size?: 'sm' | 'default' }\n> = (props) => {\n const [local, others] = splitProps(props, ['class', 'size']);\n const size = local.size ?? 'default';\n\n return (\n <SelectPrimitive.Trigger\n data-slot='select-trigger'\n data-size={size}\n class={cn(\n 'px-2.5 text-sm *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*=\"size-\"])]:size-4 gap-1.5 min-w-0 shadow-xs flex w-full items-center justify-between rounded-lg border border-input bg-transparent whitespace-nowrap transition-[color,box-shadow] outline-none select-none disabled:cursor-not-allowed disabled:opacity-50 data-placeholder-shown:text-muted-foreground *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center dark:bg-input/30 dark:hover:bg-input/50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\"size-\"])]:text-muted-foreground',\n 'data-[size=default]:h-10 data-[size=sm]:h-8 data-[size=sm]:rounded-[min(var(--radius-md),10px)]',\n 'focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 data-[focus-visible]:border-ring data-[focus-visible]:ring-[3px] data-[focus-visible]:ring-ring/50',\n 'data-[invalid=true]:border-destructive data-[invalid=true]:ring-[3px] data-[invalid=true]:ring-destructive/20 dark:data-[invalid=true]:ring-destructive/40',\n 'data-[disabled=true]:bg-input/50 data-[disabled=true]:opacity-50 dark:data-[disabled=true]:bg-input/80',\n 'data-[readonly=true]:cursor-default data-[readonly=true]:focus-visible:border-input data-[readonly=true]:focus-visible:ring-0 data-[readonly=true]:data-[focus-visible]:border-input data-[readonly=true]:data-[focus-visible]:ring-0',\n local.class,\n )}\n {...others}\n />\n );\n};\n\nexport const SelectIndicator: Component<SelectPrimitive.IndicatorProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <SelectPrimitive.Indicator\n class={cn('opacity-50 transition-transform data-[state=open]:rotate-180', local.class)}\n {...others}\n >\n {local.children ?? <ExpandMoreIcon class='size-4' />}\n </SelectPrimitive.Indicator>\n );\n};\n\nconst callEventHandler = <\n TElement,\n THandlerEvent extends Event,\n TEvent extends THandlerEvent & { currentTarget: TElement; target: Element },\n>(\n handler: JSX.EventHandlerUnion<TElement, THandlerEvent> | undefined,\n event: TEvent,\n): void => {\n if (typeof handler === 'function') {\n handler(event);\n return;\n }\n if (Array.isArray(handler)) {\n const [boundHandler, boundData] = handler;\n boundHandler(boundData, event);\n }\n};\n\nexport const SelectClearTrigger: Component<SelectPrimitive.ClearTriggerProps> = (props) => {\n const [local, others] = splitProps(props, [\n 'class',\n 'children',\n 'tabIndex',\n 'onClick',\n 'onKeyDown',\n ]);\n return (\n <SelectPrimitive.ClearTrigger\n class={cn(\n 'p-0.5 rounded-[4px] text-muted-foreground transition-colors hover:text-foreground focus-visible:text-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none',\n local.class,\n )}\n onClick={(event: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }) => {\n event.stopPropagation();\n callEventHandler(local.onClick, event);\n }}\n onKeyDown={(event: KeyboardEvent & { currentTarget: HTMLButtonElement; target: Element }) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.stopPropagation();\n }\n callEventHandler(local.onKeyDown, event);\n }}\n {...others}\n tabIndex={local.tabIndex ?? 0}\n >\n {local.children ?? <CloseIcon class='size-3.5' />}\n </SelectPrimitive.ClearTrigger>\n );\n};\n\nexport const SelectPositioner: Component<SelectPrimitive.PositionerProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return <SelectPrimitive.Positioner class={cn('isolate z-50', local.class)} {...others} />;\n};\n\nexport const SelectContent: Component<SelectPrimitive.ContentProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <SelectPrimitive.Content\n data-slot='select-content'\n class={cn(\n 'shadow-md relative isolate z-50 max-h-(--available-height) w-(--reference-width) min-w-[8rem] origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-input bg-popover text-popover-foreground duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95',\n 'outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 data-[focus-visible]:border-ring data-[focus-visible]:ring-[3px] data-[focus-visible]:ring-ring/50',\n local.class,\n )}\n {...others}\n />\n );\n};\n\nexport const SelectItemGroupLabel: Component<SelectPrimitive.ItemGroupLabelProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <SelectPrimitive.ItemGroupLabel\n data-slot='select-group-label'\n class={cn('px-1.5 py-1 text-xs text-muted-foreground', local.class)}\n {...others}\n />\n );\n};\n\nexport const SelectItem: Component<SelectPrimitive.ItemProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <SelectPrimitive.Item\n data-slot='select-item'\n class={cn(\n \"gap-2 py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:gap-2 relative flex w-full cursor-default items-center rounded-sm outline-hidden select-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 *:[span]:last:flex *:[span]:last:items-center\",\n local.class,\n )}\n {...others}\n >\n <SelectPrimitive.ItemText class='gap-2 flex flex-1 shrink-0 whitespace-nowrap'>\n {local.children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator class='right-2 size-4 pointer-events-none absolute flex items-center justify-center'>\n <CheckIcon class='pointer-events-none' />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n};\n\nexport const SelectSeparator: Component<ComponentProps<'div'>> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <div\n data-slot='select-separator'\n class={cn('-mx-1 my-1 pointer-events-none h-px bg-border', local.class)}\n {...others}\n />\n );\n};\n"],"names":["SelectControl","SelectPrimitive","Control","SelectItemContext","ItemContext","SelectHiddenSelect","HiddenSelect","SelectList","props","local","others","splitProps","_$createComponent","List","_$mergeProps","cn","class","SelectContext","Context","SelectTabs","_el$","_tmpl$","_$spread","_$insert","For","each","items","children","tab","isActive","value","_el$2","_tmpl$2","$$click","onValueChange","disabled","label","_$effect","_p$","_v$","_v$2","_v$3","_v$4","e","t","_$setAttribute","a","o","_$className","undefined","SelectRoot","positioning","placement","gutter","sameWidth","Root","Select","Object","assign","Tabs","SelectLabel","Label","SelectGroup","ItemGroup","SelectValue","ValueText","SelectTrigger","size","Trigger","SelectIndicator","Indicator","ExpandMoreIcon","callEventHandler","handler","event","Array","isArray","boundHandler","boundData","SelectClearTrigger","ClearTrigger","onClick","stopPropagation","onKeyDown","key","tabIndex","CloseIcon","SelectPositioner","Positioner","SelectContent","Content","SelectItemGroupLabel","ItemGroupLabel","SelectItem","Item","ItemText","ItemIndicator","CheckIcon","SelectSeparator","_el$3","_tmpl$3","_$delegateEvents"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Select.js","sources":["../../src/components/Select.tsx"],"sourcesContent":["import { Select as SelectPrimitive } from '@ark-ui/solid/select';\nimport {\n type Component,\n type ComponentProps,\n type JSX,\n type JSXElement,\n For,\n splitProps,\n} from 'solid-js';\nimport { cn } from 'tailwind-variants';\nimport CheckIcon from '~icons/material-symbols/check';\nimport CloseIcon from '~icons/material-symbols/close';\nimport ExpandMoreIcon from '~icons/material-symbols/expand-more';\n\nexport const SelectControl = SelectPrimitive.Control;\nexport const SelectItemContext = SelectPrimitive.ItemContext;\nexport const SelectHiddenSelect = SelectPrimitive.HiddenSelect;\nexport const SelectList: Component<SelectPrimitive.ListProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <SelectPrimitive.List\n data-slot='select-list'\n class={cn('p-1 max-h-[min(var(--available-height),300px)] overflow-y-auto', local.class)}\n {...others}\n />\n );\n};\nexport const SelectContext = SelectPrimitive.Context;\n\ntype SelectComponent = (<TItem extends { value: string; label: string }>(\n props: SelectPrimitive.RootProps<TItem> & { class?: string },\n) => JSXElement) & {\n Tabs: <TItem extends { value: string; label: string }>(\n props: SelectTabsProps<TItem>,\n ) => JSXElement;\n};\n\nexport type SelectTabsTab<TItem extends { value: string; label: string }> = {\n value: TItem['value'];\n label: string;\n disabled?: boolean;\n};\n\nexport type SelectTabsProps<TItem extends { value: string; label: string }> =\n ComponentProps<'div'> & {\n items: SelectTabsTab<TItem>[];\n value?: TItem['value'];\n onValueChange?: (value: TItem['value']) => void;\n };\n\nconst SelectTabs = <TItem extends { value: string; label: string }>(\n props: SelectTabsProps<TItem>,\n): JSXElement => {\n const [local, others] = splitProps(props, ['class', 'items', 'value', 'onValueChange']);\n return (\n <div\n role='tablist'\n data-slot='select-tabs'\n class={cn('gap-1 p-1 inline-flex rounded-md bg-muted', local.class)}\n {...others}\n >\n <For each={local.items}>\n {(tab) => {\n const isActive = (): boolean => local.value === tab.value;\n return (\n <button\n type='button'\n role='tab'\n disabled={tab.disabled === true}\n aria-selected={isActive()}\n data-state={isActive() ? 'active' : 'inactive'}\n class={cn(\n 'h-8 px-3 text-sm rounded-sm transition-colors',\n 'data-[state=active]:shadow-sm data-[state=active]:bg-background data-[state=active]:text-foreground',\n 'data-[state=inactive]:text-muted-foreground hover:data-[state=inactive]:text-foreground',\n 'disabled:pointer-events-none disabled:opacity-50',\n )}\n onClick={() => {\n if (typeof local.onValueChange === 'function' && tab.disabled !== true) {\n local.onValueChange(tab.value);\n }\n }}\n >\n {tab.label}\n </button>\n );\n }}\n </For>\n </div>\n );\n};\n\nconst SelectRoot = <TItem extends { value: string; label: string }>(\n props: SelectPrimitive.RootProps<TItem> & { class?: string },\n): JSXElement => {\n const [local, others] = splitProps(props, ['class', 'positioning']);\n\n const positioning: NonNullable<SelectPrimitive.RootProps<TItem>['positioning']> = {\n placement: 'bottom-start',\n gutter: 4,\n sameWidth: true,\n ...local.positioning,\n };\n\n return (\n <SelectPrimitive.Root\n class={cn('flex w-full flex-col', local.class)}\n positioning={positioning}\n {...others}\n />\n );\n};\n\nexport const Select: SelectComponent = Object.assign(SelectRoot, {\n Tabs: SelectTabs as SelectComponent['Tabs'],\n});\n\nexport const SelectLabel: Component<SelectPrimitive.LabelProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <SelectPrimitive.Label\n class={cn(\n 'mb-1.5 gap-2 text-sm font-medium flex items-center leading-none select-none group-data-disabled:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n local.class,\n )}\n {...others}\n />\n );\n};\n\nexport const SelectGroup: Component<SelectPrimitive.ItemGroupProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <SelectPrimitive.ItemGroup\n data-slot='select-group'\n class={cn('scroll-my-1', local.class)}\n {...others}\n />\n );\n};\n\nexport const SelectValue: Component<SelectPrimitive.ValueTextProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <SelectPrimitive.ValueText\n data-slot='select-value'\n class={cn('flex flex-1 text-left', local.class)}\n {...others}\n />\n );\n};\n\nexport const SelectTrigger: Component<\n SelectPrimitive.TriggerProps & { size?: 'sm' | 'default' }\n> = (props) => {\n const [local, others] = splitProps(props, ['class', 'size']);\n const size = local.size ?? 'default';\n\n return (\n <SelectPrimitive.Trigger\n data-slot='select-trigger'\n data-size={size}\n class={cn(\n 'px-2.5 text-sm *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*=\"size-\"])]:size-4 gap-1.5 min-w-0 shadow-xs flex w-full items-center justify-between rounded-lg border border-input bg-transparent whitespace-nowrap transition-[color,box-shadow] outline-none select-none disabled:cursor-not-allowed disabled:opacity-50 data-placeholder-shown:text-muted-foreground *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center dark:bg-input/30 dark:hover:bg-input/50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\"size-\"])]:text-muted-foreground',\n 'data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)]',\n 'focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 data-[focus-visible]:border-ring data-[focus-visible]:ring-[3px] data-[focus-visible]:ring-ring/50',\n 'data-[invalid=true]:border-destructive data-[invalid=true]:ring-[3px] data-[invalid=true]:ring-destructive/20 dark:data-[invalid=true]:ring-destructive/40',\n 'data-[disabled=true]:bg-input/50 data-[disabled=true]:opacity-50 dark:data-[disabled=true]:bg-input/80',\n 'data-[readonly=true]:cursor-default data-[readonly=true]:focus-visible:border-input data-[readonly=true]:focus-visible:ring-0 data-[readonly=true]:data-[focus-visible]:border-input data-[readonly=true]:data-[focus-visible]:ring-0',\n local.class,\n )}\n {...others}\n />\n );\n};\n\nexport const SelectIndicator: Component<SelectPrimitive.IndicatorProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <SelectPrimitive.Indicator\n class={cn('opacity-50 transition-transform data-[state=open]:rotate-180', local.class)}\n {...others}\n >\n {local.children ?? <ExpandMoreIcon class='size-4' />}\n </SelectPrimitive.Indicator>\n );\n};\n\nconst callEventHandler = <\n TElement,\n THandlerEvent extends Event,\n TEvent extends THandlerEvent & { currentTarget: TElement; target: Element },\n>(\n handler: JSX.EventHandlerUnion<TElement, THandlerEvent> | undefined,\n event: TEvent,\n): void => {\n if (typeof handler === 'function') {\n handler(event);\n return;\n }\n if (Array.isArray(handler)) {\n const [boundHandler, boundData] = handler;\n boundHandler(boundData, event);\n }\n};\n\nexport const SelectClearTrigger: Component<SelectPrimitive.ClearTriggerProps> = (props) => {\n const [local, others] = splitProps(props, [\n 'class',\n 'children',\n 'tabIndex',\n 'onClick',\n 'onKeyDown',\n ]);\n return (\n <SelectPrimitive.ClearTrigger\n class={cn(\n 'p-0.5 rounded-[4px] text-muted-foreground transition-colors hover:text-foreground focus-visible:text-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none',\n local.class,\n )}\n onClick={(event: MouseEvent & { currentTarget: HTMLButtonElement; target: Element }) => {\n event.stopPropagation();\n callEventHandler(local.onClick, event);\n }}\n onKeyDown={(event: KeyboardEvent & { currentTarget: HTMLButtonElement; target: Element }) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.stopPropagation();\n }\n callEventHandler(local.onKeyDown, event);\n }}\n {...others}\n tabIndex={local.tabIndex ?? 0}\n >\n {local.children ?? <CloseIcon class='size-3.5' />}\n </SelectPrimitive.ClearTrigger>\n );\n};\n\nexport const SelectPositioner: Component<SelectPrimitive.PositionerProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return <SelectPrimitive.Positioner class={cn('isolate z-50', local.class)} {...others} />;\n};\n\nexport const SelectContent: Component<SelectPrimitive.ContentProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <SelectPrimitive.Content\n data-slot='select-content'\n class={cn(\n 'shadow-md relative isolate z-50 max-h-(--available-height) w-(--reference-width) min-w-[8rem] origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-input bg-popover text-popover-foreground duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95',\n 'outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 data-[focus-visible]:border-ring data-[focus-visible]:ring-[3px] data-[focus-visible]:ring-ring/50',\n local.class,\n )}\n {...others}\n />\n );\n};\n\nexport const SelectItemGroupLabel: Component<SelectPrimitive.ItemGroupLabelProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <SelectPrimitive.ItemGroupLabel\n data-slot='select-group-label'\n class={cn('px-1.5 py-1 text-xs text-muted-foreground', local.class)}\n {...others}\n />\n );\n};\n\nexport const SelectItem: Component<SelectPrimitive.ItemProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children']);\n return (\n <SelectPrimitive.Item\n data-slot='select-item'\n class={cn(\n \"gap-2 py-1.5 pr-8 pl-2 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:gap-2 relative flex w-full cursor-default items-center rounded-sm outline-hidden select-none data-disabled:pointer-events-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 *:[span]:last:flex *:[span]:last:items-center\",\n local.class,\n )}\n {...others}\n >\n <SelectPrimitive.ItemText class='gap-2 flex flex-1 shrink-0 whitespace-nowrap'>\n {local.children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator class='right-2 size-4 pointer-events-none absolute flex items-center justify-center'>\n <CheckIcon class='pointer-events-none' />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n};\n\nexport const SelectSeparator: Component<ComponentProps<'div'>> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <div\n data-slot='select-separator'\n class={cn('-mx-1 my-1 pointer-events-none h-px bg-border', local.class)}\n {...others}\n />\n );\n};\n"],"names":["SelectControl","SelectPrimitive","Control","SelectItemContext","ItemContext","SelectHiddenSelect","HiddenSelect","SelectList","props","local","others","splitProps","_$createComponent","List","_$mergeProps","cn","class","SelectContext","Context","SelectTabs","_el$","_tmpl$","_$spread","_$insert","For","each","items","children","tab","isActive","value","_el$2","_tmpl$2","$$click","onValueChange","disabled","label","_$effect","_p$","_v$","_v$2","_v$3","_v$4","e","t","_$setAttribute","a","o","_$className","undefined","SelectRoot","positioning","placement","gutter","sameWidth","Root","Select","Object","assign","Tabs","SelectLabel","Label","SelectGroup","ItemGroup","SelectValue","ValueText","SelectTrigger","size","Trigger","SelectIndicator","Indicator","ExpandMoreIcon","callEventHandler","handler","event","Array","isArray","boundHandler","boundData","SelectClearTrigger","ClearTrigger","onClick","stopPropagation","onKeyDown","key","tabIndex","CloseIcon","SelectPositioner","Positioner","SelectContent","Content","SelectItemGroupLabel","ItemGroupLabel","SelectItem","Item","ItemText","ItemIndicator","CheckIcon","SelectSeparator","_el$3","_tmpl$3","_$delegateEvents"],"mappings":"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"}
|
|
@@ -1,32 +1,39 @@
|
|
|
1
|
-
import { createComponent as e, mergeProps as i } from "solid-js/web";
|
|
2
|
-
import { Field as
|
|
3
|
-
import { Select as
|
|
4
|
-
import { useFieldContext as
|
|
5
|
-
import { WithTrailingAddon as
|
|
6
|
-
import { splitProps as
|
|
7
|
-
const
|
|
1
|
+
import { createComponent as e, mergeProps as i, Show as o } from "solid-js/web";
|
|
2
|
+
import { Field as a, FieldLabel as c, FieldContent as u, FieldError as g, FieldDescription as s } from "../Field.js";
|
|
3
|
+
import { Select as h, SelectControl as m, SelectTrigger as p, SelectValue as S, SelectIndicator as f, SelectPositioner as b, SelectContent as C } from "../Select.js";
|
|
4
|
+
import { useFieldContext as F } from "./context.js";
|
|
5
|
+
import { WithTrailingAddon as I } from "./WithTrailingAddon.js";
|
|
6
|
+
import { splitProps as w } from "solid-js";
|
|
7
|
+
const O = (n) => [e(m, {
|
|
8
8
|
get children() {
|
|
9
9
|
return e(p, {
|
|
10
10
|
get children() {
|
|
11
|
-
return e(
|
|
11
|
+
return [e(S, {
|
|
12
12
|
get placeholder() {
|
|
13
|
-
return
|
|
13
|
+
return n.placeholder;
|
|
14
14
|
}
|
|
15
|
-
})
|
|
15
|
+
}), e(o, {
|
|
16
|
+
get when() {
|
|
17
|
+
return n.showSelectIndicator !== !1;
|
|
18
|
+
},
|
|
19
|
+
get children() {
|
|
20
|
+
return e(f, {});
|
|
21
|
+
}
|
|
22
|
+
})];
|
|
16
23
|
}
|
|
17
24
|
});
|
|
18
25
|
}
|
|
19
|
-
}), e(
|
|
26
|
+
}), e(b, {
|
|
20
27
|
get children() {
|
|
21
|
-
return e(
|
|
28
|
+
return e(C, {
|
|
22
29
|
get children() {
|
|
23
|
-
return
|
|
30
|
+
return n.children;
|
|
24
31
|
}
|
|
25
32
|
});
|
|
26
33
|
}
|
|
27
|
-
})],
|
|
28
|
-
const t =
|
|
29
|
-
return e(
|
|
34
|
+
})], v = ["label", "description", "required", "disabled", "readOnly", "placeholder", "showSelectIndicator", "children", "trailingAddon"], T = (n) => {
|
|
35
|
+
const t = F(), [r, l] = w(n, v);
|
|
36
|
+
return e(a, {
|
|
30
37
|
get invalid() {
|
|
31
38
|
return t().state.meta.errors.length > 0;
|
|
32
39
|
},
|
|
@@ -40,18 +47,18 @@ const v = (l) => [e(h, {
|
|
|
40
47
|
return r.required ?? !1;
|
|
41
48
|
},
|
|
42
49
|
get children() {
|
|
43
|
-
return [e(
|
|
50
|
+
return [e(c, {
|
|
44
51
|
get children() {
|
|
45
52
|
return r.label;
|
|
46
53
|
}
|
|
47
|
-
}), e(
|
|
54
|
+
}), e(u, {
|
|
48
55
|
get children() {
|
|
49
|
-
return [e(
|
|
56
|
+
return [e(I, {
|
|
50
57
|
get addon() {
|
|
51
58
|
return r.trailingAddon;
|
|
52
59
|
},
|
|
53
60
|
get children() {
|
|
54
|
-
return e(
|
|
61
|
+
return e(h, i({
|
|
55
62
|
get value() {
|
|
56
63
|
return t().state.value;
|
|
57
64
|
},
|
|
@@ -70,12 +77,15 @@ const v = (l) => [e(h, {
|
|
|
70
77
|
get readOnly() {
|
|
71
78
|
return r.readOnly ?? !1;
|
|
72
79
|
}
|
|
73
|
-
},
|
|
80
|
+
}, l, {
|
|
74
81
|
get children() {
|
|
75
|
-
return e(
|
|
82
|
+
return e(O, {
|
|
76
83
|
get placeholder() {
|
|
77
84
|
return r.placeholder ?? "";
|
|
78
85
|
},
|
|
86
|
+
get showSelectIndicator() {
|
|
87
|
+
return r.showSelectIndicator;
|
|
88
|
+
},
|
|
79
89
|
get children() {
|
|
80
90
|
return r.children;
|
|
81
91
|
}
|
|
@@ -83,11 +93,11 @@ const v = (l) => [e(h, {
|
|
|
83
93
|
}
|
|
84
94
|
}));
|
|
85
95
|
}
|
|
86
|
-
}), e(
|
|
96
|
+
}), e(g, {
|
|
87
97
|
get errors() {
|
|
88
98
|
return t().state.meta.errors;
|
|
89
99
|
}
|
|
90
|
-
}), e(
|
|
100
|
+
}), e(s, {
|
|
91
101
|
get children() {
|
|
92
102
|
return r.description;
|
|
93
103
|
}
|
|
@@ -98,6 +108,6 @@ const v = (l) => [e(h, {
|
|
|
98
108
|
});
|
|
99
109
|
};
|
|
100
110
|
export {
|
|
101
|
-
|
|
111
|
+
T as SelectField
|
|
102
112
|
};
|
|
103
113
|
//# sourceMappingURL=SelectField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectField.js","sources":["../../../src/components/form/SelectField.tsx"],"sourcesContent":["import type { Component, ComponentProps, JSX, JSXElement } from 'solid-js';\n\nimport { Field, FieldContent, FieldDescription, FieldError, FieldLabel } from '@/components/Field';\nimport {\n Select,\n SelectContent,\n SelectControl,\n SelectPositioner,\n SelectTrigger,\n SelectValue,\n} from '@/components/Select';\n\nimport { useFieldContext } from './context';\nimport { WithTrailingAddon } from './WithTrailingAddon';\n\nconst SelectInput: Component<{
|
|
1
|
+
{"version":3,"file":"SelectField.js","sources":["../../../src/components/form/SelectField.tsx"],"sourcesContent":["import type { Component, ComponentProps, JSX, JSXElement } from 'solid-js';\n\nimport { Field, FieldContent, FieldDescription, FieldError, FieldLabel } from '@/components/Field';\nimport {\n Select,\n SelectContent,\n SelectControl,\n SelectIndicator,\n SelectPositioner,\n SelectTrigger,\n SelectValue,\n} from '@/components/Select';\n\nimport { useFieldContext } from './context';\nimport { WithTrailingAddon } from './WithTrailingAddon';\n\nconst SelectInput: Component<{\n placeholder: string;\n showSelectIndicator: boolean | undefined;\n children: JSX.Element;\n}> = (props) => (\n <>\n <SelectControl>\n <SelectTrigger>\n <SelectValue placeholder={props.placeholder} />\n <Show when={props.showSelectIndicator !== false}>\n <SelectIndicator />\n </Show>\n </SelectTrigger>\n </SelectControl>\n <SelectPositioner>\n <SelectContent>{props.children}</SelectContent>\n </SelectPositioner>\n </>\n);\n\nexport type SelectFieldProps = ComponentProps<typeof Select> & {\n label?: string;\n description?: string;\n placeholder?: string;\n showSelectIndicator?: boolean;\n trailingAddon?: JSXElement;\n};\n\nconst SELECT_FIELD_PROPS = [\n 'label',\n 'description',\n 'required',\n 'disabled',\n 'readOnly',\n 'placeholder',\n 'showSelectIndicator',\n 'children',\n 'trailingAddon',\n] as const;\n\nexport const SelectField: Component<SelectFieldProps> = (props) => {\n const field = useFieldContext<string[]>();\n const [local, others] = splitProps(props, SELECT_FIELD_PROPS);\n\n return (\n <Field\n invalid={field().state.meta.errors.length > 0}\n disabled={local.disabled ?? false}\n readOnly={local.readOnly ?? false}\n required={local.required ?? false}\n >\n <FieldLabel>{local.label}</FieldLabel>\n <FieldContent>\n <WithTrailingAddon addon={local.trailingAddon}>\n <Select\n value={field().state.value}\n onValueChange={(details) => {\n field().handleChange(details.value);\n }}\n onBlur={() => {\n field().handleBlur();\n }}\n invalid={field().state.meta.errors.length > 0}\n disabled={local.disabled ?? false}\n readOnly={local.readOnly ?? false}\n {...others}\n >\n <SelectInput\n placeholder={local.placeholder ?? ''}\n showSelectIndicator={local.showSelectIndicator}\n >\n {local.children}\n </SelectInput>\n </Select>\n </WithTrailingAddon>\n <FieldError errors={field().state.meta.errors} />\n <FieldDescription>{local.description}</FieldDescription>\n </FieldContent>\n </Field>\n );\n};\n"],"names":["SelectInput","props","_$createComponent","SelectControl","children","SelectTrigger","SelectValue","placeholder","_$Show","when","showSelectIndicator","SelectIndicator","SelectPositioner","SelectContent","SELECT_FIELD_PROPS","SelectField","field","useFieldContext","local","others","splitProps","Field","invalid","state","meta","errors","length","disabled","readOnly","required","FieldLabel","label","FieldContent","WithTrailingAddon","addon","trailingAddon","Select","_$mergeProps","value","onValueChange","details","handleChange","onBlur","handleBlur","FieldError","FieldDescription","description"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createComponent as t, Portal as
|
|
1
|
+
import { createComponent as t, Portal as l, insert as a, template as s } from "solid-js/web";
|
|
2
2
|
import { Toaster as c, createToaster as u, toast_exports as o } from "../../node_modules/.bun/@ark-ui_solid@5.34.1_2e1854f049906f04/node_modules/@ark-ui/solid/dist/chunk/4OJLSY6B.js";
|
|
3
3
|
import { Show as r } from "solid-js";
|
|
4
4
|
import { cn as n } from "../../node_modules/.bun/tailwind-variants@3.2.2_7ac958b541464b98/node_modules/tailwind-variants/dist/index.js";
|
|
@@ -8,14 +8,14 @@ import m from "../../_virtual/error.js";
|
|
|
8
8
|
import h from "../../_virtual/info.js";
|
|
9
9
|
import p from "../../_virtual/warning.js";
|
|
10
10
|
import { Spinner as f } from "../Spinner.js";
|
|
11
|
-
var x = /* @__PURE__ */
|
|
12
|
-
const
|
|
11
|
+
var x = /* @__PURE__ */ s('<div class="gap-1 grid">'), w = /* @__PURE__ */ s("<div aria-hidden=true class=h-5>");
|
|
12
|
+
const b = u({
|
|
13
13
|
placement: "bottom-end",
|
|
14
14
|
overlap: !0,
|
|
15
15
|
gap: 16
|
|
16
|
-
}),
|
|
16
|
+
}), v = (e) => t(o.Root, {
|
|
17
17
|
get class() {
|
|
18
|
-
return n("group gap-3 p-4 pr-10 shadow-lg min-w-72 pointer-events-auto relative flex w-full items-center rounded-lg border bg-popover
|
|
18
|
+
return n("group gap-3 p-4 pr-10 shadow-lg min-w-72 pointer-events-auto relative flex w-full items-center rounded-lg border bg-popover", "data-[state=open]:sm:slide-in-from-bottom-full data-[state=open]:animate-in data-[state=open]:slide-in-from-top-full", "border-border text-popover-foreground");
|
|
19
19
|
},
|
|
20
20
|
get children() {
|
|
21
21
|
return [t(r, {
|
|
@@ -95,6 +95,9 @@ const w = u({
|
|
|
95
95
|
get when() {
|
|
96
96
|
return e.toast().description;
|
|
97
97
|
},
|
|
98
|
+
get fallback() {
|
|
99
|
+
return w();
|
|
100
|
+
},
|
|
98
101
|
get children() {
|
|
99
102
|
return t(o.Description, {
|
|
100
103
|
class: "text-sm opacity-90",
|
|
@@ -113,18 +116,18 @@ const w = u({
|
|
|
113
116
|
}
|
|
114
117
|
})];
|
|
115
118
|
}
|
|
116
|
-
}),
|
|
119
|
+
}), E = () => t(l, {
|
|
117
120
|
get children() {
|
|
118
121
|
return t(c, {
|
|
119
|
-
toaster:
|
|
120
|
-
children: (e) => t(
|
|
122
|
+
toaster: b,
|
|
123
|
+
children: (e) => t(v, {
|
|
121
124
|
toast: e
|
|
122
125
|
})
|
|
123
126
|
});
|
|
124
127
|
}
|
|
125
128
|
});
|
|
126
129
|
export {
|
|
127
|
-
|
|
128
|
-
|
|
130
|
+
E as Toaster,
|
|
131
|
+
b as toast
|
|
129
132
|
};
|
|
130
133
|
//# sourceMappingURL=Toaster.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toaster.js","sources":["../../../src/components/toaster/Toaster.tsx"],"sourcesContent":["import {\n Toast,\n Toaster as ToasterPrimitive,\n createToaster,\n type ToastOptions,\n} from '@ark-ui/solid/toast';\nimport { type Component, type Accessor, Show } from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { cn } from 'tailwind-variants';\nimport CheckCircleIcon from '~icons/material-symbols/check-circle';\nimport CloseIcon from '~icons/material-symbols/close';\nimport ErrorIcon from '~icons/material-symbols/error';\nimport InfoIcon from '~icons/material-symbols/info';\nimport WarningIcon from '~icons/material-symbols/warning';\n\nimport { Spinner } from '@/components/Spinner';\n\nexport const toast = createToaster({\n placement: 'bottom-end',\n overlap: true,\n gap: 16,\n});\n\nconst ToastItem: Component<{ toast: Accessor<ToastOptions> }> = (props) => (\n <Toast.Root\n class={cn(\n 'group gap-3 p-4 pr-10 shadow-lg min-w-72 pointer-events-auto relative flex w-full items-center rounded-lg border bg-popover
|
|
1
|
+
{"version":3,"file":"Toaster.js","sources":["../../../src/components/toaster/Toaster.tsx"],"sourcesContent":["import {\n Toast,\n Toaster as ToasterPrimitive,\n createToaster,\n type ToastOptions,\n} from '@ark-ui/solid/toast';\nimport { type Component, type Accessor, Show } from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { cn } from 'tailwind-variants';\nimport CheckCircleIcon from '~icons/material-symbols/check-circle';\nimport CloseIcon from '~icons/material-symbols/close';\nimport ErrorIcon from '~icons/material-symbols/error';\nimport InfoIcon from '~icons/material-symbols/info';\nimport WarningIcon from '~icons/material-symbols/warning';\n\nimport { Spinner } from '@/components/Spinner';\n\nexport const toast = createToaster({\n placement: 'bottom-end',\n overlap: true,\n gap: 16,\n});\n\nconst ToastItem: Component<{ toast: Accessor<ToastOptions> }> = (props) => (\n <Toast.Root\n class={cn(\n 'group gap-3 p-4 pr-10 shadow-lg min-w-72 pointer-events-auto relative flex w-full items-center rounded-lg border bg-popover',\n 'data-[state=open]:sm:slide-in-from-bottom-full data-[state=open]:animate-in data-[state=open]:slide-in-from-top-full',\n 'border-border text-popover-foreground',\n )}\n >\n <Show when={props.toast().type === 'success'}>\n <CheckCircleIcon class={cn('size-5 text-green-500 shrink-0')} aria-hidden='true' />\n </Show>\n <Show when={props.toast().type === 'info'}>\n <InfoIcon class={cn('size-5 text-blue-500 shrink-0')} aria-hidden='true' />\n </Show>\n <Show when={props.toast().type === 'warning'}>\n <WarningIcon class={cn('size-5 text-amber-500 shrink-0')} aria-hidden='true' />\n </Show>\n <Show when={props.toast().type === 'error'}>\n <ErrorIcon class={cn('size-5 text-red-500 shrink-0')} aria-hidden='true' />\n </Show>\n <Show when={props.toast().type === 'loading'}>\n <Spinner class={cn('size-5 text-muted-foreground')} />\n </Show>\n <div class='gap-1 grid'>\n <Show when={props.toast().title}>\n <Toast.Title class='text-sm font-semibold tracking-tight leading-none'>\n {props.toast().title}\n </Toast.Title>\n </Show>\n <Show when={props.toast().description} fallback={<div aria-hidden='true' class='h-5' />}>\n <Toast.Description class='text-sm opacity-90'>\n {props.toast().description}\n </Toast.Description>\n </Show>\n </div>\n <Toast.CloseTrigger class='top-2 right-2 p-1 absolute cursor-pointer rounded-md text-foreground/50 opacity-0 transition-opacity group-hover:opacity-100 hover:text-foreground focus:opacity-100 focus:outline-none'>\n <CloseIcon class='size-4' />\n </Toast.CloseTrigger>\n </Toast.Root>\n);\n\nexport const Toaster: Component = () => (\n <Portal>\n <ToasterPrimitive toaster={toast}>{(item) => <ToastItem toast={item} />}</ToasterPrimitive>\n </Portal>\n);\n"],"names":["toast","createToaster","placement","overlap","gap","ToastItem","props","_$createComponent","Toast","Root","cn","children","Show","when","type","CheckCircleIcon","InfoIcon","WarningIcon","ErrorIcon","Spinner","_el$","_tmpl$","_$insert","title","Title","description","fallback","_tmpl$2","Description","CloseTrigger","CloseIcon","Toaster","Portal","ToasterPrimitive","toaster","item"],"mappings":"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"}
|