@manafishrov/ui 1.1.0 → 1.2.1
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/README.md +41 -0
- package/dist/_virtual/calendar-month.js +4 -4
- package/dist/_virtual/error.js +3 -3
- package/dist/_virtual/info.js +3 -3
- package/dist/_virtual/progress-activity.js +4 -4
- package/dist/_virtual/visibility.js +4 -4
- package/dist/_virtual/warning.js +3 -3
- package/dist/components/sidebar/Sidebar.d.ts +1 -1
- package/dist/components/sidebar/Sidebar.js.map +1 -1
- package/dist/components/sidebar/SidebarDesktop.js +38 -27
- package/dist/components/sidebar/SidebarDesktop.js.map +1 -1
- package/dist/components/sidebar/SidebarProvider.d.ts +5 -2
- package/dist/components/sidebar/SidebarProvider.js +43 -49
- package/dist/components/sidebar/SidebarProvider.js.map +1 -1
- package/dist/components/sidebar/SidebarSubComponents.js +75 -60
- package/dist/components/sidebar/SidebarSubComponents.js.map +1 -1
- package/dist/components/sidebar/index.js +23 -22
- package/dist/theme.css +1 -1
- package/package.json +2 -6
- package/src/components/sidebar/Sidebar.tsx +1 -1
- package/src/components/sidebar/SidebarDesktop.tsx +45 -22
- package/src/components/sidebar/SidebarProvider.tsx +21 -33
- package/src/components/sidebar/SidebarSubComponents.tsx +17 -7
- package/src/theme.css +7 -4
package/README.md
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# @manafishrov/ui
|
|
2
|
+
|
|
3
|
+
A very opinionated component library for Manafish interfaces.
|
|
4
|
+
|
|
5
|
+
## Dependencies
|
|
6
|
+
|
|
7
|
+
The consumer project requires these peer dependencies:
|
|
8
|
+
|
|
9
|
+
- `solid-js`
|
|
10
|
+
- `tailwindcss`
|
|
11
|
+
- `@tanstack/solid-router`
|
|
12
|
+
- `@tanstack/solid-form`
|
|
13
|
+
- `unplugin-icons`
|
|
14
|
+
- `@iconify-json/material-symbols`
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
### 1. Import the theme in your CSS
|
|
19
|
+
|
|
20
|
+
```css
|
|
21
|
+
@import 'tailwindcss';
|
|
22
|
+
@import '@manafishrov/ui/theme';
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### 2. Wrap your app with providers
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
import { LocaleProvider, ThemeProvider } from '@manafishrov/ui';
|
|
29
|
+
|
|
30
|
+
function App() {
|
|
31
|
+
return (
|
|
32
|
+
<ThemeProvider>
|
|
33
|
+
<LocaleProvider locale='en'>{/* your app */}</LocaleProvider>
|
|
34
|
+
</ThemeProvider>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## License
|
|
40
|
+
|
|
41
|
+
AGPL-3.0-or-later
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { template as e, spread as r } from "solid-js/web";
|
|
2
|
-
var
|
|
3
|
-
const
|
|
4
|
-
var t =
|
|
2
|
+
var h = /* @__PURE__ */ e('<svg viewBox="0 0 24 24"width=1.2em height=1.2em><path fill=currentColor d="M12 14q-.425 0-.712-.288T11 13t.288-.712T12 12t.713.288T13 13t-.288.713T12 14m-4.712-.288Q7 13.426 7 13t.288-.712T8 12t.713.288T9 13t-.288.713T8 14t-.712-.288M16 14q-.425 0-.712-.288T15 13t.288-.712T16 12t.713.288T17 13t-.288.713T16 14m-4 4q-.425 0-.712-.288T11 17t.288-.712T12 16t.713.288T13 17t-.288.713T12 18m-4.712-.288Q7 17.426 7 17t.288-.712T8 16t.713.288T9 17t-.288.713T8 18t-.712-.288M16 18q-.425 0-.712-.288T15 17t.288-.712T16 16t.713.288T17 17t-.288.713T16 18M5 22q-.825 0-1.412-.587T3 20V6q0-.825.588-1.412T5 4h1V2h2v2h8V2h2v2h1q.825 0 1.413.588T21 6v14q0 .825-.587 1.413T19 22zm0-2h14V10H5z">');
|
|
3
|
+
const a = (T = {}) => (() => {
|
|
4
|
+
var t = h();
|
|
5
5
|
return r(t, T, !0, !0), t;
|
|
6
6
|
})();
|
|
7
7
|
export {
|
|
8
|
-
|
|
8
|
+
a as default
|
|
9
9
|
};
|
|
10
10
|
//# sourceMappingURL=calendar-month.js.map
|
package/dist/_virtual/error.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { template as e, spread as T } from "solid-js/web";
|
|
2
|
-
var o = /* @__PURE__ */ e('<svg viewBox="0 0 24 24"width=1.2em height=1.2em><path fill=currentColor d="M12
|
|
3
|
-
const
|
|
2
|
+
var o = /* @__PURE__ */ e('<svg viewBox="0 0 24 24"width=1.2em height=1.2em><path fill=currentColor d="M12.713 16.713Q13 16.425 13 16t-.288-.712T12 15t-.712.288T11 16t.288.713T12 17t.713-.288M11 13h2V7h-2zm1 9q-2.075 0-3.9-.788t-3.175-2.137T2.788 15.9T2 12t.788-3.9t2.137-3.175T8.1 2.788T12 2t3.9.788t3.175 2.137T21.213 8.1T22 12t-.788 3.9t-2.137 3.175t-3.175 2.138T12 22">');
|
|
3
|
+
const l = (r = {}) => (() => {
|
|
4
4
|
var t = o();
|
|
5
5
|
return T(t, r, !0, !0), t;
|
|
6
6
|
})();
|
|
7
7
|
export {
|
|
8
|
-
|
|
8
|
+
l as default
|
|
9
9
|
};
|
|
10
10
|
//# sourceMappingURL=error.js.map
|
package/dist/_virtual/info.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { template as r, spread as T } from "solid-js/web";
|
|
2
|
-
var o = /* @__PURE__ */ r('<svg viewBox="0 0 24 24"width=1.2em height=1.2em><path fill=currentColor d="M11 17h2v-6h-2zm1-
|
|
3
|
-
const
|
|
2
|
+
var o = /* @__PURE__ */ r('<svg viewBox="0 0 24 24"width=1.2em height=1.2em><path fill=currentColor d="M11 17h2v-6h-2zm1.713-8.287Q13 8.425 13 8t-.288-.712T12 7t-.712.288T11 8t.288.713T12 9t.713-.288M12 22q-2.075 0-3.9-.788t-3.175-2.137T2.788 15.9T2 12t.788-3.9t2.137-3.175T8.1 2.788T12 2t3.9.788t3.175 2.137T21.213 8.1T22 12t-.788 3.9t-2.137 3.175t-3.175 2.138T12 22">');
|
|
3
|
+
const l = (e = {}) => (() => {
|
|
4
4
|
var t = o();
|
|
5
5
|
return T(t, e, !0, !0), t;
|
|
6
6
|
})();
|
|
7
7
|
export {
|
|
8
|
-
|
|
8
|
+
l as default
|
|
9
9
|
};
|
|
10
10
|
//# sourceMappingURL=info.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { template as r, spread as
|
|
2
|
-
var
|
|
1
|
+
import { template as r, spread as o } from "solid-js/web";
|
|
2
|
+
var T = /* @__PURE__ */ r('<svg viewBox="0 0 24 24"width=1.2em height=1.2em><path fill=currentColor d="M8.125 21.213q-1.825-.788-3.187-2.15t-2.15-3.188T2 11.988t.788-3.875t2.15-3.175t3.187-2.15T12 2q.425 0 .713.288T13 3t-.288.713T12 4Q8.675 4 6.337 6.338T4 12t2.338 5.663T12 20t5.663-2.337T20 12q0-.425.288-.712T21 11t.713.288T22 12q0 2.05-.788 3.875t-2.15 3.188t-3.175 2.15t-3.875.787t-3.887-.787">');
|
|
3
3
|
const i = (e = {}) => (() => {
|
|
4
|
-
var t =
|
|
5
|
-
return
|
|
4
|
+
var t = T();
|
|
5
|
+
return o(t, e, !0, !0), t;
|
|
6
6
|
})();
|
|
7
7
|
export {
|
|
8
8
|
i as default
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { template as r, spread as
|
|
2
|
-
var
|
|
1
|
+
import { template as r, spread as i } from "solid-js/web";
|
|
2
|
+
var T = /* @__PURE__ */ r('<svg viewBox="0 0 24 24"width=1.2em height=1.2em><path fill=currentColor d="M15.188 14.688Q16.5 13.375 16.5 11.5t-1.312-3.187T12 7T8.813 8.313T7.5 11.5t1.313 3.188T12 16t3.188-1.312m-5.1-1.276Q9.3 12.625 9.3 11.5t.788-1.912T12 8.8t1.913.788t.787 1.912t-.787 1.913T12 14.2t-1.912-.787m-4.738 3.55Q2.35 14.925 1 11.5q1.35-3.425 4.35-5.462T12 4t6.65 2.038T23 11.5q-1.35 3.425-4.35 5.463T12 19t-6.65-2.037">');
|
|
3
3
|
const m = (e = {}) => (() => {
|
|
4
|
-
var t =
|
|
5
|
-
return
|
|
4
|
+
var t = T();
|
|
5
|
+
return i(t, e, !0, !0), t;
|
|
6
6
|
})();
|
|
7
7
|
export {
|
|
8
8
|
m as default
|
package/dist/_virtual/warning.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { template as r, spread as a } from "solid-js/web";
|
|
2
|
-
var l = /* @__PURE__ */ r('<svg viewBox="0 0 24 24"width=1.2em height=1.2em><path fill=currentColor d="M1 21L12 2l11 19zm11-
|
|
3
|
-
const
|
|
2
|
+
var l = /* @__PURE__ */ r('<svg viewBox="0 0 24 24"width=1.2em height=1.2em><path fill=currentColor d="M1 21L12 2l11 19zm11.713-3.287Q13 17.425 13 17t-.288-.712T12 16t-.712.288T11 17t.288.713T12 18t.713-.288M11 15h2v-5h-2z">');
|
|
3
|
+
const m = (e = {}) => (() => {
|
|
4
4
|
var t = l();
|
|
5
5
|
return a(t, e, !0, !0), t;
|
|
6
6
|
})();
|
|
7
7
|
export {
|
|
8
|
-
|
|
8
|
+
m as default
|
|
9
9
|
};
|
|
10
10
|
//# sourceMappingURL=warning.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component, ComponentProps } from 'solid-js';
|
|
2
|
-
export type SidebarProps = ComponentProps<'
|
|
2
|
+
export type SidebarProps = ComponentProps<'aside'> & {
|
|
3
3
|
side?: 'left' | 'right';
|
|
4
4
|
variant?: 'sidebar' | 'floating' | 'inset';
|
|
5
5
|
collapsible?: 'offcanvas' | 'icon' | 'none';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.js","sources":["../../../src/components/sidebar/Sidebar.tsx"],"sourcesContent":["import { type Component, type ComponentProps, createEffect, onCleanup } from 'solid-js';\n\nimport { createMediaQuery } from '@/primitives/createMediaQuery';\n\nimport { useSidebar } from './context';\nimport { SidebarDesktop } from './SidebarDesktop';\nimport { SidebarMobile } from './SidebarMobile';\n\nexport type SidebarProps = ComponentProps<'
|
|
1
|
+
{"version":3,"file":"Sidebar.js","sources":["../../../src/components/sidebar/Sidebar.tsx"],"sourcesContent":["import { type Component, type ComponentProps, createEffect, onCleanup } from 'solid-js';\n\nimport { createMediaQuery } from '@/primitives/createMediaQuery';\n\nimport { useSidebar } from './context';\nimport { SidebarDesktop } from './SidebarDesktop';\nimport { SidebarMobile } from './SidebarMobile';\n\nexport type SidebarProps = ComponentProps<'aside'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n disableMobileSidebar?: boolean;\n};\n\nexport const Sidebar: Component<SidebarProps> = (props) => {\n const { isMobile, setMobileDisabled, setOpen, setSide } = useSidebar();\n const isViewportMobile = createMediaQuery('(max-width: 768px)');\n\n onCleanup(() => {\n setMobileDisabled(false);\n });\n\n createEffect(() => {\n const currentSide = props.side ?? 'left';\n const mobileDisabled = props.disableMobileSidebar ?? false;\n setSide(currentSide);\n setMobileDisabled(mobileDisabled);\n });\n\n createEffect(() => {\n if (props.disableMobileSidebar === true && props.collapsible === 'icon') {\n setOpen(!isViewportMobile());\n }\n });\n\n return (\n <Show\n when={!isMobile()}\n fallback={\n <Show when={(props.collapsible ?? 'offcanvas') !== 'none'}>\n <SidebarMobile {...props} />\n </Show>\n }\n >\n <SidebarDesktop {...props} />\n </Show>\n );\n};\n"],"names":["Sidebar","props","isMobile","setMobileDisabled","setOpen","setSide","useSidebar","isViewportMobile","createMediaQuery","onCleanup","createEffect","currentSide","side","mobileDisabled","disableMobileSidebar","collapsible","_$createComponent","_$Show","when","fallback","children","SidebarMobile","SidebarDesktop"],"mappings":";;;;;;AAeO,MAAMA,IAAoCC,CAAAA,MAAU;AACzD,QAAM;AAAA,IAAEC,UAAAA;AAAAA,IAAUC,mBAAAA;AAAAA,IAAmBC,SAAAA;AAAAA,IAASC,SAAAA;AAAAA,EAAAA,IAAYC,EAAAA,GACpDC,IAAmBC,EAAiB,oBAAoB;AAE9DC,SAAAA,EAAU,MAAM;AACdN,IAAAA,EAAkB,EAAK;AAAA,EACzB,CAAC,GAEDO,EAAa,MAAM;AACjB,UAAMC,IAAcV,EAAMW,QAAQ,QAC5BC,IAAiBZ,EAAMa,wBAAwB;AACrDT,IAAAA,EAAQM,CAAW,GACnBR,EAAkBU,CAAc;AAAA,EAClC,CAAC,GAEDH,EAAa,MAAM;AACjB,IAAIT,EAAMa,yBAAyB,MAAQb,EAAMc,gBAAgB,UAC/DX,EAAQ,CAACG,GAAkB;AAAA,EAE/B,CAAC,GAEDS,EACGC,GAAI;AAAA,IAAA,IACHC,OAAI;AAAA,aAAE,CAAChB,EAAAA;AAAAA,IAAU;AAAA,IAAA,IACjBiB,WAAQ;AAAA,aAAAH,EACLC,GAAI;AAAA,QAAA,IAACC,OAAI;AAAA,kBAAGjB,EAAMc,eAAe,iBAAiB;AAAA,QAAM;AAAA,QAAA,IAAAK,WAAA;AAAA,iBAAAJ,EACtDK,GAAkBpB,CAAK;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA;AAAA,IAAA,IAAAmB,WAAA;AAAA,aAAAJ,EAI3BM,GAAmBrB,CAAK;AAAA,IAAA;AAAA,EAAA,CAAA;AAG/B;"}
|
|
@@ -1,52 +1,63 @@
|
|
|
1
|
-
import { template as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { template as p, insert as h, createComponent as C, mergeProps as m, effect as D, style as k, className as u, setAttribute as s, spread as I } from "solid-js/web";
|
|
2
|
+
import { splitProps as w, createMemo as y } from "solid-js";
|
|
3
|
+
import { cn as d } from "../../node_modules/.bun/tailwind-variants@3.2.2_e7cab99c1b720a38/node_modules/tailwind-variants/dist/index.js";
|
|
4
|
+
import { SIDEBAR_WIDTH_ICON as M, SIDEBAR_WIDTH as A } from "./constants.js";
|
|
5
|
+
import { useSidebar as R } from "./context.js";
|
|
6
|
+
var z = /* @__PURE__ */ p('<aside data-slot=sidebar-container><div data-sidebar=sidebar data-slot=sidebar-inner class="group-data-[variant=floating]:shadow-sm flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border">'), B = /* @__PURE__ */ p("<div data-slot=sidebar><div data-slot=sidebar-gap>");
|
|
7
|
+
const E = (t) => d(t === !0 ? "group peer min-h-0 relative block self-stretch text-sidebar-foreground" : "group peer md:block min-h-0 relative hidden self-stretch text-sidebar-foreground"), H = (t) => d("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear", "group-data-[collapsible=offcanvas]:w-0", "group-data-[side=right]:rotate-180", t === "floating" || t === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+1rem)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"), N = (t) => {
|
|
8
|
+
const r = {
|
|
9
|
+
"--sidebar-width": A,
|
|
10
|
+
"--sidebar-width-icon": M
|
|
11
|
+
};
|
|
12
|
+
return typeof t == "object" && t !== null ? {
|
|
13
|
+
...r,
|
|
14
|
+
...t
|
|
15
|
+
} : r;
|
|
16
|
+
}, P = (t) => {
|
|
17
|
+
const [r, e] = w(t, ["variant", "side", "class", "children"]);
|
|
8
18
|
return (() => {
|
|
9
|
-
var
|
|
10
|
-
return
|
|
19
|
+
var o = z(), l = o.firstChild;
|
|
20
|
+
return I(o, m({
|
|
11
21
|
get class() {
|
|
12
|
-
return
|
|
22
|
+
return d("top-0 bottom-0 md:flex absolute z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear", r.side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]", r.variant === "floating" || r.variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+1rem+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l", r.class);
|
|
13
23
|
}
|
|
14
|
-
},
|
|
24
|
+
}, e), !1, !0), h(l, () => r.children), o;
|
|
15
25
|
})();
|
|
16
|
-
},
|
|
26
|
+
}, O = (t) => {
|
|
17
27
|
const {
|
|
18
|
-
state:
|
|
19
|
-
} =
|
|
28
|
+
state: r
|
|
29
|
+
} = R(), [e, o] = w(t, ["side", "variant", "collapsible", "disableMobileSidebar", "style", "class", "children"]), l = y(() => N(e.style));
|
|
20
30
|
return (() => {
|
|
21
|
-
var
|
|
22
|
-
return
|
|
31
|
+
var i = B(), S = i.firstChild;
|
|
32
|
+
return h(i, C(P, m({
|
|
23
33
|
get variant() {
|
|
24
|
-
return
|
|
34
|
+
return e.variant ?? "sidebar";
|
|
25
35
|
},
|
|
26
36
|
get side() {
|
|
27
|
-
return
|
|
37
|
+
return e.side ?? "left";
|
|
28
38
|
},
|
|
29
39
|
get class() {
|
|
30
|
-
return
|
|
40
|
+
return d(e.disableMobileSidebar === !0 ? "flex" : "md:flex hidden", e.class);
|
|
31
41
|
}
|
|
32
|
-
},
|
|
42
|
+
}, o, {
|
|
33
43
|
get children() {
|
|
34
|
-
return
|
|
44
|
+
return e.children;
|
|
35
45
|
}
|
|
36
|
-
})), null),
|
|
37
|
-
var
|
|
38
|
-
return
|
|
46
|
+
})), null), D((a) => {
|
|
47
|
+
var x = l(), n = E(e.disableMobileSidebar), c = r(), b = r() === "collapsed" ? e.collapsible ?? "offcanvas" : "", g = e.variant ?? "sidebar", v = e.side ?? "left", f = H(e.variant);
|
|
48
|
+
return a.e = k(i, x, a.e), n !== a.t && u(i, a.t = n), c !== a.a && s(i, "data-state", a.a = c), b !== a.o && s(i, "data-collapsible", a.o = b), g !== a.i && s(i, "data-variant", a.i = g), v !== a.n && s(i, "data-side", a.n = v), f !== a.s && u(S, a.s = f), a;
|
|
39
49
|
}, {
|
|
40
50
|
e: void 0,
|
|
41
51
|
t: void 0,
|
|
42
52
|
a: void 0,
|
|
43
53
|
o: void 0,
|
|
44
54
|
i: void 0,
|
|
45
|
-
n: void 0
|
|
46
|
-
|
|
55
|
+
n: void 0,
|
|
56
|
+
s: void 0
|
|
57
|
+
}), i;
|
|
47
58
|
})();
|
|
48
59
|
};
|
|
49
60
|
export {
|
|
50
|
-
|
|
61
|
+
O as SidebarDesktop
|
|
51
62
|
};
|
|
52
63
|
//# sourceMappingURL=SidebarDesktop.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidebarDesktop.js","sources":["../../../src/components/sidebar/SidebarDesktop.tsx"],"sourcesContent":["import type
|
|
1
|
+
{"version":3,"file":"SidebarDesktop.js","sources":["../../../src/components/sidebar/SidebarDesktop.tsx"],"sourcesContent":["import {\n createMemo,\n type Component,\n type ComponentProps,\n type JSX,\n type JSXElement,\n} from 'solid-js';\nimport { cn } from 'tailwind-variants';\n\nimport type { SidebarProps } from './Sidebar';\n\nimport { SIDEBAR_WIDTH, SIDEBAR_WIDTH_ICON } from './constants';\nimport { useSidebar } from './context';\n\ntype SidebarDesktopContainerProps = ComponentProps<'aside'> & {\n variant: string;\n side: string;\n children: JSXElement;\n};\n\nconst getSidebarDesktopRootClass = (\n disableMobileSidebar: boolean | undefined,\n): ComponentProps<'div'>['class'] =>\n cn(\n disableMobileSidebar === true\n ? 'group peer min-h-0 relative block self-stretch text-sidebar-foreground'\n : 'group peer md:block min-h-0 relative hidden self-stretch text-sidebar-foreground',\n );\n\nconst getSidebarGapClass = (variant: SidebarProps['variant']): ComponentProps<'div'>['class'] =>\n cn(\n 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+1rem)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n );\n\nconst getSidebarStyle = (style: SidebarProps['style']): JSX.CSSProperties => {\n const base: JSX.CSSProperties = {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n };\n return typeof style === 'object' && style !== null ? { ...base, ...style } : base;\n};\n\nconst SidebarDesktopContainer: Component<SidebarDesktopContainerProps> = (props) => {\n const [local, others] = splitProps(props, ['variant', 'side', 'class', 'children']);\n return (\n <aside\n data-slot='sidebar-container'\n class={cn(\n 'top-0 bottom-0 md:flex absolute z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear',\n local.side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n local.variant === 'floating' || local.variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+1rem+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n local.class,\n )}\n {...others}\n >\n <div\n data-sidebar='sidebar'\n data-slot='sidebar-inner'\n class='group-data-[variant=floating]:shadow-sm flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border'\n >\n {local.children}\n </div>\n </aside>\n );\n};\n\nexport const SidebarDesktop: Component<SidebarProps> = (props) => {\n const { state } = useSidebar();\n const [local, others] = splitProps(props, [\n 'side',\n 'variant',\n 'collapsible',\n 'disableMobileSidebar',\n 'style',\n 'class',\n 'children',\n ]);\n\n const style = createMemo(() => getSidebarStyle(local.style));\n\n return (\n <div\n style={style()}\n class={getSidebarDesktopRootClass(local.disableMobileSidebar)}\n data-state={state()}\n data-collapsible={state() === 'collapsed' ? (local.collapsible ?? 'offcanvas') : ''}\n data-variant={local.variant ?? 'sidebar'}\n data-side={local.side ?? 'left'}\n data-slot='sidebar'\n >\n <div data-slot='sidebar-gap' class={getSidebarGapClass(local.variant)} />\n <SidebarDesktopContainer\n variant={local.variant ?? 'sidebar'}\n side={local.side ?? 'left'}\n class={cn(local.disableMobileSidebar === true ? 'flex' : 'md:flex hidden', local.class)}\n {...others}\n >\n {local.children}\n </SidebarDesktopContainer>\n </div>\n );\n};\n"],"names":["getSidebarDesktopRootClass","disableMobileSidebar","cn","getSidebarGapClass","variant","getSidebarStyle","style","base","SIDEBAR_WIDTH","SIDEBAR_WIDTH_ICON","SidebarDesktopContainer","props","local","others","splitProps","_el$","_tmpl$","_el$2","firstChild","_$spread","_$mergeProps","side","class","_$insert","children","SidebarDesktop","state","useSidebar","createMemo","_el$3","_tmpl$2","_el$4","_$createComponent","_$effect","_p$","_v$","_v$2","_v$3","_v$4","collapsible","_v$5","_v$6","_v$7","e","_$style","t","_$className","a","_$setAttribute","o","i","n","s","undefined"],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { Component, ComponentProps } from 'solid-js';
|
|
2
|
-
export type SidebarProviderProps =
|
|
1
|
+
import { Component, ComponentProps, JSX } from 'solid-js';
|
|
2
|
+
export type SidebarProviderProps = {
|
|
3
3
|
defaultOpen?: boolean;
|
|
4
4
|
open?: boolean;
|
|
5
5
|
onOpenChange?: (openValue: boolean) => void;
|
|
6
|
+
children?: JSX.Element;
|
|
6
7
|
};
|
|
8
|
+
export type SidebarLayoutProps = ComponentProps<'div'>;
|
|
9
|
+
export declare const SidebarLayout: Component<SidebarLayoutProps>;
|
|
7
10
|
export declare const SidebarProvider: Component<SidebarProviderProps>;
|
|
@@ -1,35 +1,45 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { splitProps as
|
|
3
|
-
import { cn as
|
|
4
|
-
import { createMediaQuery as
|
|
5
|
-
import {
|
|
6
|
-
import { SidebarContext as
|
|
7
|
-
import { setSidebarCookie as
|
|
8
|
-
var
|
|
9
|
-
const
|
|
10
|
-
const o
|
|
1
|
+
import { template as m, spread as f, mergeProps as u, createComponent as M } from "solid-js/web";
|
|
2
|
+
import { splitProps as g, createSignal as r, onMount as O, onCleanup as h } from "solid-js";
|
|
3
|
+
import { cn as y } from "../../node_modules/.bun/tailwind-variants@3.2.2_e7cab99c1b720a38/node_modules/tailwind-variants/dist/index.js";
|
|
4
|
+
import { createMediaQuery as v } from "../../primitives/createMediaQuery.js";
|
|
5
|
+
import { SIDEBAR_KEYBOARD_SHORTCUT as C } from "./constants.js";
|
|
6
|
+
import { SidebarContext as D } from "./context.js";
|
|
7
|
+
import { setSidebarCookie as w } from "./utils.js";
|
|
8
|
+
var x = /* @__PURE__ */ m("<div data-slot=sidebar-wrapper>");
|
|
9
|
+
const V = (e) => {
|
|
10
|
+
const [o, n] = g(e, ["class"]);
|
|
11
|
+
return (() => {
|
|
12
|
+
var i = x();
|
|
13
|
+
return f(i, u({
|
|
14
|
+
get class() {
|
|
15
|
+
return y("relative flex h-full min-h-full w-full has-data-[variant=inset]:bg-sidebar", o.class);
|
|
16
|
+
}
|
|
17
|
+
}, n), !1, !1), i;
|
|
18
|
+
})();
|
|
19
|
+
}, E = (e) => {
|
|
20
|
+
const o = v("(max-width: 768px)"), [n, i] = r(!1), l = () => o() && !n(), [s, a] = r(!1), [d, p] = r(e.defaultOpen ?? !0), [b, c] = r("left");
|
|
11
21
|
return {
|
|
12
|
-
isMobile:
|
|
13
|
-
setMobileDisabled:
|
|
14
|
-
openMobile:
|
|
15
|
-
setOpenMobile:
|
|
16
|
-
open: () => typeof e.open == "boolean" ? e.open :
|
|
17
|
-
setOpen: (
|
|
18
|
-
e.onOpenChange ? e.onOpenChange(
|
|
22
|
+
isMobile: l,
|
|
23
|
+
setMobileDisabled: i,
|
|
24
|
+
openMobile: s,
|
|
25
|
+
setOpenMobile: a,
|
|
26
|
+
open: () => typeof e.open == "boolean" ? e.open : d(),
|
|
27
|
+
setOpen: (t) => {
|
|
28
|
+
e.onOpenChange ? e.onOpenChange(t) : p(t), w(t);
|
|
19
29
|
},
|
|
20
30
|
side: b,
|
|
21
31
|
setSide: c
|
|
22
32
|
};
|
|
23
|
-
},
|
|
33
|
+
}, S = (e) => {
|
|
24
34
|
const o = () => {
|
|
25
|
-
e.isMobile() ? e.setOpenMobile((
|
|
35
|
+
e.isMobile() ? e.setOpenMobile((n) => !n) : e.setOpen(!e.open());
|
|
26
36
|
};
|
|
27
|
-
return
|
|
28
|
-
const
|
|
29
|
-
|
|
37
|
+
return O(() => {
|
|
38
|
+
const n = (i) => {
|
|
39
|
+
i.key === C && (i.metaKey || i.ctrlKey) && (i.preventDefault(), o());
|
|
30
40
|
};
|
|
31
|
-
globalThis.addEventListener("keydown",
|
|
32
|
-
globalThis.removeEventListener("keydown",
|
|
41
|
+
globalThis.addEventListener("keydown", n), h(() => {
|
|
42
|
+
globalThis.removeEventListener("keydown", n);
|
|
33
43
|
});
|
|
34
44
|
}), {
|
|
35
45
|
toggle: o
|
|
@@ -45,37 +55,21 @@ const T = (e) => {
|
|
|
45
55
|
toggleSidebar: o,
|
|
46
56
|
side: e.side,
|
|
47
57
|
setSide: e.setSide
|
|
48
|
-
}),
|
|
49
|
-
const
|
|
50
|
-
toggle:
|
|
51
|
-
} =
|
|
52
|
-
|
|
53
|
-
"--sidebar-width": x,
|
|
54
|
-
"--sidebar-width-icon": v
|
|
55
|
-
};
|
|
56
|
-
return typeof o.style == "object" && o.style !== null ? {
|
|
57
|
-
...i,
|
|
58
|
-
...o.style
|
|
59
|
-
} : i;
|
|
60
|
-
});
|
|
61
|
-
return m(I.Provider, {
|
|
58
|
+
}), $ = (e) => {
|
|
59
|
+
const o = E(e), {
|
|
60
|
+
toggle: n
|
|
61
|
+
} = S(o);
|
|
62
|
+
return M(D.Provider, {
|
|
62
63
|
get value() {
|
|
63
|
-
return k(
|
|
64
|
+
return k(o, n);
|
|
64
65
|
},
|
|
65
66
|
get children() {
|
|
66
|
-
|
|
67
|
-
return u(i, g({
|
|
68
|
-
get style() {
|
|
69
|
-
return l();
|
|
70
|
-
},
|
|
71
|
-
get class() {
|
|
72
|
-
return w("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar", o.class);
|
|
73
|
-
}
|
|
74
|
-
}, t), !1, !0), O(i, () => o.children), i;
|
|
67
|
+
return e.children;
|
|
75
68
|
}
|
|
76
69
|
});
|
|
77
70
|
};
|
|
78
71
|
export {
|
|
79
|
-
|
|
72
|
+
V as SidebarLayout,
|
|
73
|
+
$ as SidebarProvider
|
|
80
74
|
};
|
|
81
75
|
//# sourceMappingURL=SidebarProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidebarProvider.js","sources":["../../../src/components/sidebar/SidebarProvider.tsx"],"sourcesContent":["import {\n type Component,\n type ComponentProps,\n
|
|
1
|
+
{"version":3,"file":"SidebarProvider.js","sources":["../../../src/components/sidebar/SidebarProvider.tsx"],"sourcesContent":["import {\n type Component,\n type ComponentProps,\n createSignal,\n onCleanup,\n onMount,\n splitProps,\n type JSX,\n} from 'solid-js';\nimport { cn } from 'tailwind-variants';\n\nimport { createMediaQuery } from '@/primitives/createMediaQuery';\n\nimport { SIDEBAR_KEYBOARD_SHORTCUT } from './constants';\nimport { SidebarContext, type SidebarContextProps } from './context';\nimport { setSidebarCookie } from './utils';\n\nexport type SidebarProviderProps = {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (openValue: boolean) => void;\n children?: JSX.Element;\n};\n\nexport type SidebarLayoutProps = ComponentProps<'div'>;\n\nexport const SidebarLayout: Component<SidebarLayoutProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n return (\n <div\n data-slot='sidebar-wrapper'\n class={cn(\n 'relative flex h-full min-h-full w-full has-data-[variant=inset]:bg-sidebar',\n local.class,\n )}\n {...others}\n />\n );\n};\n\nconst useSidebarState = (\n props: SidebarProviderProps,\n): {\n isMobile: () => boolean;\n setMobileDisabled: (value: boolean) => void;\n openMobile: () => boolean;\n setOpenMobile: (value: boolean | ((prev: boolean) => boolean)) => void;\n open: () => boolean;\n setOpen: (value: boolean) => void;\n side: () => 'left' | 'right';\n setSide: (value: 'left' | 'right') => void;\n} => {\n const isViewportMobile = createMediaQuery('(max-width: 768px)');\n const [mobileDisabled, setMobileDisabled] = createSignal(false);\n const isMobile = (): boolean => isViewportMobile() && !mobileDisabled();\n const [openMobile, setOpenMobile] = createSignal(false);\n const [internalOpen, setInternalOpen] = createSignal(props.defaultOpen ?? true);\n const [side, setSide] = createSignal<'left' | 'right'>('left');\n\n const open = (): boolean => (typeof props.open === 'boolean' ? props.open : internalOpen());\n\n const setOpen = (value: boolean): void => {\n if (props.onOpenChange) {\n props.onOpenChange(value);\n } else {\n setInternalOpen(value);\n }\n setSidebarCookie(value);\n };\n\n return {\n isMobile,\n setMobileDisabled,\n openMobile,\n setOpenMobile,\n open,\n setOpen,\n side,\n setSide,\n };\n};\nconst useSidebarEvents = (stateSet: ReturnType<typeof useSidebarState>): { toggle: () => void } => {\n const toggle = (): void => {\n if (stateSet.isMobile()) {\n stateSet.setOpenMobile((prev) => !prev);\n } else {\n stateSet.setOpen(!stateSet.open());\n }\n };\n\n onMount(() => {\n const handleKeyDown = (event: KeyboardEvent): void => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggle();\n }\n };\n globalThis.addEventListener('keydown', handleKeyDown);\n onCleanup(() => {\n globalThis.removeEventListener('keydown', handleKeyDown);\n });\n });\n\n return { toggle };\n};\n\nconst createSidebarContextValue = (\n stateSet: ReturnType<typeof useSidebarState>,\n toggle: () => void,\n): SidebarContextProps => ({\n state: (): 'expanded' | 'collapsed' => (stateSet.open() ? 'expanded' : 'collapsed'),\n open: stateSet.open,\n setOpen: stateSet.setOpen,\n isMobile: stateSet.isMobile,\n setMobileDisabled: stateSet.setMobileDisabled,\n openMobile: stateSet.openMobile,\n setOpenMobile: stateSet.setOpenMobile,\n toggleSidebar: toggle,\n side: stateSet.side,\n setSide: stateSet.setSide,\n});\n\nexport const SidebarProvider: Component<SidebarProviderProps> = (props) => {\n const stateSet = useSidebarState(props);\n const { toggle } = useSidebarEvents(stateSet);\n\n return (\n <SidebarContext.Provider value={createSidebarContextValue(stateSet, toggle)}>\n {props.children}\n </SidebarContext.Provider>\n );\n};\n"],"names":["SidebarLayout","props","local","others","splitProps","_el$","_tmpl$","_$spread","_$mergeProps","cn","class","useSidebarState","isViewportMobile","createMediaQuery","mobileDisabled","setMobileDisabled","createSignal","isMobile","openMobile","setOpenMobile","internalOpen","setInternalOpen","defaultOpen","side","setSide","open","setOpen","value","onOpenChange","setSidebarCookie","useSidebarEvents","stateSet","toggle","prev","onMount","handleKeyDown","event","key","SIDEBAR_KEYBOARD_SHORTCUT","metaKey","ctrlKey","preventDefault","globalThis","addEventListener","onCleanup","removeEventListener","createSidebarContextValue","state","toggleSidebar","SidebarProvider","_$createComponent","SidebarContext","Provider","children"],"mappings":";;;;;;;;AA0BO,MAAMA,IAAgDC,CAAAA,MAAU;AACrE,QAAM,CAACC,GAAOC,CAAM,IAAIC,EAAWH,GAAO,CAAC,OAAO,CAAC;AACnD,UAAA,MAAA;AAAA,QAAAI,IAAAC,EAAAA;AAAAC,WAAAA,EAAAF,GAAAG,EAAA;AAAA,MAAA,IAAA,QAAA;AAAA,eAGWC,EACL,8EACAP,EAAMQ,KACR;AAAA,MAAC;AAAA,IAAA,GACGP,CAAM,GAAA,IAAA,EAAA,GAAAE;AAAAA,EAAA,GAAA;AAGhB,GAEMM,IAAkBA,CACtBV,MAUG;AACH,QAAMW,IAAmBC,EAAiB,oBAAoB,GACxD,CAACC,GAAgBC,CAAiB,IAAIC,EAAa,EAAK,GACxDC,IAAWA,MAAeL,EAAAA,KAAsB,CAACE,EAAAA,GACjD,CAACI,GAAYC,CAAa,IAAIH,EAAa,EAAK,GAChD,CAACI,GAAcC,CAAe,IAAIL,EAAaf,EAAMqB,eAAe,EAAI,GACxE,CAACC,GAAMC,CAAO,IAAIR,EAA+B,MAAM;AAa7D,SAAO;AAAA,IACLC,UAAAA;AAAAA,IACAF,mBAAAA;AAAAA,IACAG,YAAAA;AAAAA,IACAC,eAAAA;AAAAA,IACAM,MAhBWA,MAAgB,OAAOxB,EAAMwB,QAAS,YAAYxB,EAAMwB,OAAOL,EAAAA;AAAAA,IAiB1EM,SAfcA,CAACC,MAAyB;AACxC,MAAI1B,EAAM2B,eACR3B,EAAM2B,aAAaD,CAAK,IAExBN,EAAgBM,CAAK,GAEvBE,EAAiBF,CAAK;AAAA,IACxB;AAAA,IASEJ,MAAAA;AAAAA,IACAC,SAAAA;AAAAA,EAAAA;AAEJ,GACMM,IAAmBA,CAACC,MAAyE;AACjG,QAAMC,IAASA,MAAY;AACzB,IAAID,EAASd,aACXc,EAASZ,cAAec,CAAAA,MAAS,CAACA,CAAI,IAEtCF,EAASL,QAAQ,CAACK,EAASN,KAAAA,CAAM;AAAA,EAErC;AAEAS,SAAAA,EAAQ,MAAM;AACZ,UAAMC,IAAgBA,CAACC,MAA+B;AACpD,MAAIA,EAAMC,QAAQC,MAA8BF,EAAMG,WAAWH,EAAMI,aACrEJ,EAAMK,eAAAA,GACNT,EAAAA;AAAAA,IAEJ;AACAU,eAAWC,iBAAiB,WAAWR,CAAa,GACpDS,EAAU,MAAM;AACdF,iBAAWG,oBAAoB,WAAWV,CAAa;AAAA,IACzD,CAAC;AAAA,EACH,CAAC,GAEM;AAAA,IAAEH,QAAAA;AAAAA,EAAAA;AACX,GAEMc,IAA4BA,CAChCf,GACAC,OACyB;AAAA,EACzBe,OAAOA,MAAiChB,EAASN,KAAAA,IAAS,aAAa;AAAA,EACvEA,MAAMM,EAASN;AAAAA,EACfC,SAASK,EAASL;AAAAA,EAClBT,UAAUc,EAASd;AAAAA,EACnBF,mBAAmBgB,EAAShB;AAAAA,EAC5BG,YAAYa,EAASb;AAAAA,EACrBC,eAAeY,EAASZ;AAAAA,EACxB6B,eAAehB;AAAAA,EACfT,MAAMQ,EAASR;AAAAA,EACfC,SAASO,EAASP;AACpB,IAEayB,IAAoDhD,CAAAA,MAAU;AACzE,QAAM8B,IAAWpB,EAAgBV,CAAK,GAChC;AAAA,IAAE+B,QAAAA;AAAAA,EAAAA,IAAWF,EAAiBC,CAAQ;AAE5C,SAAAmB,EACGC,EAAeC,UAAQ;AAAA,IAAA,IAACzB,QAAK;AAAA,aAAEmB,EAA0Bf,GAAUC,CAAM;AAAA,IAAC;AAAA,IAAA,IAAAqB,WAAA;AAAA,aACxEpD,EAAMoD;AAAAA,IAAQ;AAAA,EAAA,CAAA;AAGrB;"}
|