chesai-ui 0.16.7 → 0.16.8

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.
@@ -30,5 +30,10 @@ export interface DataDisplayProps<TData> {
30
30
  */
31
31
  enableSortControl?: boolean;
32
32
  searchViewProps?: Partial<Omit<SearchViewProps, "value" | "onChange">>;
33
+ emptyTitle?: string;
34
+ emptyDescription?: string;
35
+ emptyIcon?: React.ReactNode;
36
+ emptyAction?: React.ReactNode;
37
+ renderEmptyState?: () => React.ReactNode;
33
38
  }
34
- export declare function DataDisplay<TData>({ data, columns, renderItem, layout, gridProps, masonryProps, itemContainerClassName, pageCount, pagination, onPaginationChange, sorting, onSortingChange, columnFilters, onColumnFiltersChange, globalFilter, onGlobalFilterChange, isLoading, toolbarChildren, bulkActions, enableSortControl, searchViewProps, }: DataDisplayProps<TData>): import("react/jsx-runtime").JSX.Element;
39
+ export declare function DataDisplay<TData>({ data, columns, renderItem, layout, gridProps, masonryProps, itemContainerClassName, pageCount, pagination, onPaginationChange, sorting, onSortingChange, columnFilters, onColumnFiltersChange, globalFilter, onGlobalFilterChange, isLoading, toolbarChildren, bulkActions, enableSortControl, searchViewProps, emptyTitle, emptyDescription, emptyIcon, emptyAction, renderEmptyState, }: DataDisplayProps<TData>): import("react/jsx-runtime").JSX.Element;
@@ -1,29 +1,30 @@
1
- import { jsx as e, jsxs as r, Fragment as H } from "react/jsx-runtime";
2
- import { useReactTable as J, getFacetedUniqueValues as K, getFacetedRowModel as O, getSortedRowModel as Q, getPaginationRowModel as W, getFilteredRowModel as X, getCoreRowModel as Y } from "@tanstack/react-table";
3
- import { ArrowUpDown as Z } from "lucide-react";
1
+ import { jsx as e, jsxs as r, Fragment as W } from "react/jsx-runtime";
2
+ import { useReactTable as X, getFacetedUniqueValues as Y, getFacetedRowModel as Z, getSortedRowModel as ee, getPaginationRowModel as te, getFilteredRowModel as ne, getCoreRowModel as re } from "@tanstack/react-table";
3
+ import { ArrowUpDown as oe, Search as ie } from "lucide-react";
4
4
  import n from "react";
5
- import { Button as ee } from "../button/index.mjs";
6
- import { DataTableContext as te } from "../data-table/context.mjs";
7
- import { advancedFilterFn as ne } from "../data-table/filter-utils.mjs";
8
- import { DataTablePagination as re } from "../data-table/pagination.mjs";
9
- import { DataTableToolbar as oe } from "../data-table/toolbar.mjs";
10
- import { DropdownMenu as ie, DropdownMenuTrigger as le, DropdownMenuContent as ae, DropdownMenuLabel as se, DropdownMenuSeparator as M, DropdownMenuItem as p } from "../dropdown-menu/index.mjs";
11
- import { Grid as de } from "../layouts/grid.mjs";
12
- import { Masonry as ce } from "../layouts/masonry.mjs";
13
- import { LoadingIndicator as me } from "../loadingIndicator/index.mjs";
14
- function ge({
15
- table: l
5
+ import { Button as ae } from "../button/index.mjs";
6
+ import { EmptyState as le } from "../empty-state/index.mjs";
7
+ import { DataTableContext as se } from "../data-table/context.mjs";
8
+ import { advancedFilterFn as de } from "../data-table/filter-utils.mjs";
9
+ import { DataTablePagination as ce } from "../data-table/pagination.mjs";
10
+ import { DataTableToolbar as me } from "../data-table/toolbar.mjs";
11
+ import { DropdownMenu as ue, DropdownMenuTrigger as ge, DropdownMenuContent as fe, DropdownMenuLabel as pe, DropdownMenuSeparator as C, DropdownMenuItem as p } from "../dropdown-menu/index.mjs";
12
+ import { Grid as he } from "../layouts/grid.mjs";
13
+ import { Masonry as Se } from "../layouts/masonry.mjs";
14
+ import { LoadingIndicator as we } from "../loadingIndicator/index.mjs";
15
+ function Fe({
16
+ table: a
16
17
  }) {
17
- const d = l.getAllColumns().filter((t) => t.getCanSort());
18
+ const d = a.getAllColumns().filter((t) => t.getCanSort());
18
19
  if (d.length === 0) return null;
19
- const o = l.getState().sorting[0];
20
- return /* @__PURE__ */ r(ie, { children: [
21
- /* @__PURE__ */ e(le, { asChild: !0, children: /* @__PURE__ */ r(
22
- ee,
20
+ const o = a.getState().sorting[0];
21
+ return /* @__PURE__ */ r(ue, { children: [
22
+ /* @__PURE__ */ e(ge, { asChild: !0, children: /* @__PURE__ */ r(
23
+ ae,
23
24
  {
24
25
  variant: "secondary",
25
26
  size: "sm",
26
- startIcon: /* @__PURE__ */ e(Z, { className: "h-3.5 w-3.5" }),
27
+ startIcon: /* @__PURE__ */ e(oe, { className: "h-3.5 w-3.5" }),
27
28
  className: "h-8",
28
29
  children: [
29
30
  "Sort",
@@ -37,9 +38,9 @@ function ge({
37
38
  ]
38
39
  }
39
40
  ) }),
40
- /* @__PURE__ */ r(ae, { align: "end", className: "w-48", children: [
41
- /* @__PURE__ */ e(se, { children: "Sort by" }),
42
- /* @__PURE__ */ e(M, {}),
41
+ /* @__PURE__ */ r(fe, { align: "end", className: "w-48", children: [
42
+ /* @__PURE__ */ e(pe, { children: "Sort by" }),
43
+ /* @__PURE__ */ e(C, {}),
43
44
  d.map((t) => {
44
45
  const c = typeof t.columnDef.header == "string" ? t.columnDef.header : t.id;
45
46
  return /* @__PURE__ */ r(n.Fragment, { children: [
@@ -53,99 +54,113 @@ function ge({
53
54
  ] })
54
55
  ] }, t.id);
55
56
  }),
56
- o && /* @__PURE__ */ r(H, { children: [
57
- /* @__PURE__ */ e(M, {}),
58
- /* @__PURE__ */ e(p, { onClick: () => l.resetSorting(), children: "Clear Sort" })
57
+ o && /* @__PURE__ */ r(W, { children: [
58
+ /* @__PURE__ */ e(C, {}),
59
+ /* @__PURE__ */ e(p, { onClick: () => a.resetSorting(), children: "Clear Sort" })
59
60
  ] })
60
61
  ] })
61
62
  ] });
62
63
  }
63
- function ye({
64
- data: l,
64
+ function Ae({
65
+ data: a,
65
66
  columns: d,
66
67
  renderItem: o,
67
68
  layout: t = "grid",
68
69
  gridProps: c,
69
- masonryProps: C,
70
- itemContainerClassName: g,
71
- pageCount: D,
72
- pagination: b,
70
+ masonryProps: D,
71
+ itemContainerClassName: u,
72
+ pageCount: b,
73
+ pagination: y,
73
74
  onPaginationChange: h,
74
75
  sorting: R,
75
76
  onSortingChange: S,
76
- columnFilters: x,
77
+ columnFilters: v,
77
78
  onColumnFiltersChange: w,
78
- globalFilter: y,
79
+ globalFilter: x,
79
80
  onGlobalFilterChange: F,
80
- isLoading: v,
81
- toolbarChildren: N,
82
- bulkActions: I,
83
- enableSortControl: P = !0,
84
- searchViewProps: T
81
+ isLoading: N,
82
+ toolbarChildren: I,
83
+ bulkActions: P,
84
+ enableSortControl: T = !0,
85
+ searchViewProps: V,
86
+ emptyTitle: j,
87
+ emptyDescription: A,
88
+ emptyIcon: k,
89
+ emptyAction: G,
90
+ renderEmptyState: M
85
91
  }) {
86
- const [V, j] = n.useState({}), [A, k] = n.useState({}), [G, U] = n.useState(
92
+ const [U, q] = n.useState({}), [z, L] = n.useState({}), [_, B] = n.useState(
87
93
  []
88
- ), [q, z] = n.useState([]), [L, _] = n.useState(""), [B, $] = n.useState({
94
+ ), [$, E] = n.useState([]), [H, J] = n.useState(""), [K, O] = n.useState({
89
95
  pageIndex: 0,
90
96
  pageSize: 12
91
- }), m = !!h, u = !!S, a = !!w || !!F, f = J({
92
- data: l,
97
+ }), m = !!h, g = !!S, l = !!w || !!F, f = X({
98
+ data: a,
93
99
  columns: d,
94
- pageCount: m ? D : void 0,
100
+ pageCount: m ? b : void 0,
95
101
  state: {
96
- sorting: u ? R : G,
97
- columnFilters: a ? x : q,
98
- globalFilter: a ? y : L,
99
- pagination: m ? b : B,
100
- columnVisibility: A,
101
- rowSelection: V
102
+ sorting: g ? R : _,
103
+ columnFilters: l ? v : $,
104
+ globalFilter: l ? x : H,
105
+ pagination: m ? y : K,
106
+ columnVisibility: z,
107
+ rowSelection: U
102
108
  },
103
- onRowSelectionChange: j,
104
- onColumnVisibilityChange: k,
105
- onSortingChange: u ? S : U,
106
- onColumnFiltersChange: a ? w : z,
107
- onGlobalFilterChange: a ? F : _,
108
- onPaginationChange: m ? h : $,
109
+ onRowSelectionChange: q,
110
+ onColumnVisibilityChange: L,
111
+ onSortingChange: g ? S : B,
112
+ onColumnFiltersChange: l ? w : E,
113
+ onGlobalFilterChange: l ? F : J,
114
+ onPaginationChange: m ? h : O,
109
115
  manualPagination: m,
110
- manualSorting: u,
111
- manualFiltering: a,
112
- getCoreRowModel: Y(),
113
- getFilteredRowModel: X(),
114
- getPaginationRowModel: W(),
115
- getSortedRowModel: Q(),
116
- getFacetedRowModel: O(),
117
- getFacetedUniqueValues: K(),
116
+ manualSorting: g,
117
+ manualFiltering: l,
118
+ getCoreRowModel: re(),
119
+ getFilteredRowModel: ne(),
120
+ getPaginationRowModel: te(),
121
+ getSortedRowModel: ee(),
122
+ getFacetedRowModel: Z(),
123
+ getFacetedUniqueValues: Y(),
118
124
  defaultColumn: {
119
- filterFn: ne
125
+ filterFn: de
120
126
  }
121
- }), s = f.getRowModel().rows, E = () => v && s.length === 0 ? /* @__PURE__ */ e("div", { className: "flex h-64 w-full items-center justify-center", children: /* @__PURE__ */ e(me, { variant: "material-morph" }) }) : s.length === 0 ? /* @__PURE__ */ e("div", { className: "flex h-64 w-full items-center justify-center border-2 border-dashed border-outline-variant rounded-xl text-on-surface-variant", children: "No results found." }) : t === "masonry" ? /* @__PURE__ */ e(
122
- ce,
127
+ }), s = f.getRowModel().rows, Q = () => N && s.length === 0 ? /* @__PURE__ */ e("div", { className: "flex h-64 w-full items-center justify-center", children: /* @__PURE__ */ e(we, { variant: "material-morph" }) }) : s.length === 0 ? M ? M() : /* @__PURE__ */ e("div", { className: "flex h-64 w-full items-center justify-center border-2 border-dashed border-outline-variant rounded-xl p-6", children: /* @__PURE__ */ e(
128
+ le,
129
+ {
130
+ variant: "default",
131
+ icon: k ?? /* @__PURE__ */ e(ie, { className: "h-10 w-10 opacity-40 text-on-surface-variant" }),
132
+ title: j ?? "No results found.",
133
+ description: A ?? "Try adjusting your filters or search terms.",
134
+ action: G
135
+ }
136
+ ) }) : t === "masonry" ? /* @__PURE__ */ e(
137
+ Se,
123
138
  {
124
139
  columns: { default: 1, sm: 2, md: 3, lg: 4 },
125
140
  gap: "md",
126
- ...C,
127
- className: g,
141
+ ...D,
142
+ className: u,
128
143
  children: s.map((i) => /* @__PURE__ */ e(n.Fragment, { children: o(i) }, i.id))
129
144
  }
130
145
  ) : t === "grid" ? /* @__PURE__ */ e(
131
- de,
146
+ he,
132
147
  {
133
148
  columns: { default: 1, sm: 2, md: 3, lg: 4 },
134
149
  gap: "md",
135
150
  ...c,
136
- className: g,
151
+ className: u,
137
152
  children: s.map((i) => /* @__PURE__ */ e(n.Fragment, { children: o(i) }, i.id))
138
153
  }
139
- ) : /* @__PURE__ */ e("div", { className: `flex flex-col gap-4 ${g}`, children: s.map((i) => /* @__PURE__ */ e(n.Fragment, { children: o(i) }, i.id)) });
140
- return /* @__PURE__ */ e(te.Provider, { value: { table: f, searchViewProps: T }, children: /* @__PURE__ */ r("div", { className: "flex flex-col w-full space-y-6", children: [
141
- /* @__PURE__ */ r(oe, { bulkActions: I, children: [
142
- N,
143
- P && /* @__PURE__ */ e(ge, { table: f })
154
+ ) : /* @__PURE__ */ e("div", { className: `flex flex-col gap-4 ${u}`, children: s.map((i) => /* @__PURE__ */ e(n.Fragment, { children: o(i) }, i.id)) });
155
+ return /* @__PURE__ */ e(se.Provider, { value: { table: f, searchViewProps: V }, children: /* @__PURE__ */ r("div", { className: "flex flex-col w-full space-y-6", children: [
156
+ /* @__PURE__ */ r(me, { bulkActions: P, children: [
157
+ I,
158
+ T && /* @__PURE__ */ e(Fe, { table: f })
144
159
  ] }),
145
- /* @__PURE__ */ e("div", { className: "min-h-[200px]", children: E() }),
146
- /* @__PURE__ */ e(re, {})
160
+ /* @__PURE__ */ e("div", { className: "min-h-[200px]", children: Q() }),
161
+ /* @__PURE__ */ e(ce, {})
147
162
  ] }) });
148
163
  }
149
164
  export {
150
- ye as DataDisplay
165
+ Ae as DataDisplay
151
166
  };
@@ -1,10 +1,11 @@
1
- import { jsxs as a, jsx as n } from "react/jsx-runtime";
2
- import { cva as z } from "class-variance-authority";
1
+ import { jsxs as o, jsx as n } from "react/jsx-runtime";
2
+ import { cva as E } from "class-variance-authority";
3
3
  import { clsx as i } from "clsx";
4
4
  import { motion as h } from "framer-motion";
5
- import { Check as D, X as A } from "lucide-react";
6
- import y, { useState as K } from "react";
7
- const R = z(
5
+ import { Check as A, X as K } from "lucide-react";
6
+ import w, { useState as L } from "react";
7
+ import { useLayout as W } from "../../context/layout-context.mjs";
8
+ const X = E(
8
9
  "relative border-2 cursor-pointer disabled:cursor-not-allowed disabled:opacity-50 outline-none rounded-full transition-colors duration-300",
9
10
  {
10
11
  variants: {
@@ -22,43 +23,50 @@ const R = z(
22
23
  size: "md"
23
24
  }
24
25
  }
25
- ), W = {
26
+ ), _ = {
26
27
  type: "spring",
27
28
  stiffness: 700,
28
29
  damping: 30
29
- }, w = {
30
+ }, k = {
30
31
  type: "spring",
31
32
  stiffness: 500,
32
33
  damping: 25
33
- }, _ = y.forwardRef(
34
+ }, q = w.forwardRef(
34
35
  ({
35
- className: k,
36
- size: o = "md",
37
- label: l,
38
- description: u,
39
- withIcons: N = !0,
40
- showUncheckedIcon: b = !1,
41
- checked: c,
42
- defaultChecked: I,
43
- onCheckedChange: m,
36
+ className: N,
37
+ size: c = "md",
38
+ label: u,
39
+ description: m,
40
+ withIcons: b = !0,
41
+ showUncheckedIcon: I = !1,
42
+ checked: l,
43
+ defaultChecked: j,
44
+ onCheckedChange: d,
44
45
  disabled: t,
45
- id: j,
46
- ...d
47
- }, S) => {
48
- const T = y.useId(), p = j || T, [C, g] = K(
49
- I ?? !1
50
- ), e = c !== void 0 ? c : C, x = (r) => {
46
+ id: S,
47
+ ...p
48
+ }, T) => {
49
+ const C = w.useId(), g = S || C;
50
+ let s = !1;
51
+ try {
52
+ s = W().isRtl;
53
+ } catch {
54
+ typeof window < "u" && (s = document.documentElement.dir === "rtl" || document.documentElement.classList.contains("rtl"));
55
+ }
56
+ const [R, y] = L(
57
+ j ?? !1
58
+ ), e = l !== void 0 ? l : R, x = (r) => {
51
59
  if (t) return;
52
- const s = r.target.checked;
53
- c === void 0 && g(s), m?.(s), d.onChange?.(r);
60
+ const a = r.target.checked;
61
+ l === void 0 && y(a), d?.(a), p.onChange?.(r);
54
62
  }, V = (r) => {
55
63
  if (!t && (r.key === "Enter" || r.key === " ")) {
56
64
  r.preventDefault();
57
- const s = !e;
58
- c === void 0 && g(s), m?.(s);
65
+ const a = !e;
66
+ l === void 0 && y(a), d?.(a);
59
67
  }
60
68
  }, f = (() => {
61
- switch (o) {
69
+ switch (c) {
62
70
  case "sm":
63
71
  return {
64
72
  width: e ? 16 : 12,
@@ -78,12 +86,12 @@ const R = z(
78
86
  x: e ? 22 : 7
79
87
  };
80
88
  }
81
- })(), v = o === "sm" ? 10 : o === "lg" ? 20 : 16;
82
- return /* @__PURE__ */ a("div", { className: i("inline-flex items-center gap-3", k), children: [
83
- /* @__PURE__ */ a(
89
+ })(), z = s ? -1 : 1, D = f.x * z, v = c === "sm" ? 10 : c === "lg" ? 20 : 16;
90
+ return /* @__PURE__ */ o("div", { className: i("inline-flex items-center gap-3", N), children: [
91
+ /* @__PURE__ */ o(
84
92
  "label",
85
93
  {
86
- htmlFor: p,
94
+ htmlFor: g,
87
95
  className: i(
88
96
  "relative inline-flex items-center group outline-none rounded-full select-none",
89
97
  !t && "cursor-pointer",
@@ -96,35 +104,39 @@ const R = z(
96
104
  "input",
97
105
  {
98
106
  type: "checkbox",
99
- id: p,
100
- ref: S,
107
+ id: g,
108
+ ref: T,
101
109
  className: "sr-only",
102
110
  checked: e,
103
111
  onChange: x,
104
112
  disabled: t,
105
113
  tabIndex: -1,
106
- ...d
114
+ ...p
107
115
  }
108
116
  ),
109
117
  /* @__PURE__ */ n(
110
118
  "div",
111
119
  {
112
120
  className: i(
113
- R({ size: o, checked: e }),
121
+ X({ size: c, checked: e }),
114
122
  t && e && "bg-on-surface/12 border-transparent",
115
123
  t && !e && "bg-surface-container-highest/38 border-on-surface/12"
116
124
  ),
117
- children: /* @__PURE__ */ a(
125
+ children: /* @__PURE__ */ o(
118
126
  h.div,
119
127
  {
120
- transition: W,
128
+ transition: _,
121
129
  initial: !1,
122
130
  animate: {
123
- x: f.x,
131
+ x: D,
124
132
  width: f.width,
125
133
  height: f.height,
126
134
  backgroundColor: e ? "var(--md-sys-color-on-primary)" : "var(--md-sys-color-outline-variant)"
127
135
  },
136
+ style: {
137
+ left: s ? "auto" : 0,
138
+ right: s ? 0 : "auto"
139
+ },
128
140
  className: i(
129
141
  "absolute top-1/2 -translate-y-1/2 rounded-full shadow-sm flex items-center justify-center z-10",
130
142
  t && "!bg-on-surface/38"
@@ -142,8 +154,8 @@ const R = z(
142
154
  }
143
155
  }
144
156
  ),
145
- /* @__PURE__ */ a("div", { className: "relative w-full h-full flex items-center justify-center overflow-hidden", children: [
146
- N && /* @__PURE__ */ n(
157
+ /* @__PURE__ */ o("div", { className: "relative w-full h-full flex items-center justify-center overflow-hidden", children: [
158
+ b && /* @__PURE__ */ n(
147
159
  h.div,
148
160
  {
149
161
  initial: !1,
@@ -152,9 +164,9 @@ const R = z(
152
164
  opacity: e ? 1 : 0,
153
165
  rotate: e ? 0 : -90
154
166
  },
155
- transition: w,
167
+ transition: k,
156
168
  children: /* @__PURE__ */ n(
157
- D,
169
+ A,
158
170
  {
159
171
  size: v,
160
172
  strokeWidth: 4,
@@ -163,7 +175,7 @@ const R = z(
163
175
  )
164
176
  }
165
177
  ),
166
- b && /* @__PURE__ */ n(
178
+ I && /* @__PURE__ */ n(
167
179
  h.div,
168
180
  {
169
181
  initial: !1,
@@ -173,9 +185,9 @@ const R = z(
173
185
  opacity: e ? 0 : 1,
174
186
  rotate: e ? 90 : 0
175
187
  },
176
- transition: w,
188
+ transition: k,
177
189
  children: /* @__PURE__ */ n(
178
- A,
190
+ K,
179
191
  {
180
192
  size: v - 2,
181
193
  strokeWidth: 3,
@@ -193,30 +205,30 @@ const R = z(
193
205
  ]
194
206
  }
195
207
  ),
196
- (l || u) && /* @__PURE__ */ a(
208
+ (u || m) && /* @__PURE__ */ o(
197
209
  "div",
198
210
  {
199
211
  className: i("flex flex-col", !t && "cursor-pointer"),
200
212
  onClick: () => !t && x({ target: { checked: !e } }),
201
213
  children: [
202
- l && /* @__PURE__ */ n(
214
+ u && /* @__PURE__ */ n(
203
215
  "span",
204
216
  {
205
217
  className: i(
206
218
  "text-sm font-medium select-none",
207
219
  t ? "text-on-surface/38" : "text-on-surface"
208
220
  ),
209
- children: l
221
+ children: u
210
222
  }
211
223
  ),
212
- u && /* @__PURE__ */ n(
224
+ m && /* @__PURE__ */ n(
213
225
  "span",
214
226
  {
215
227
  className: i(
216
228
  "text-xs select-none",
217
229
  t ? "text-on-surface-variant/38" : "text-on-surface-variant"
218
230
  ),
219
- children: u
231
+ children: m
220
232
  }
221
233
  )
222
234
  ]
@@ -225,7 +237,7 @@ const R = z(
225
237
  ] });
226
238
  }
227
239
  );
228
- _.displayName = "Switch";
240
+ q.displayName = "Switch";
229
241
  export {
230
- _ as Switch
242
+ q as Switch
231
243
  };
package/package.json CHANGED
@@ -1,8 +1,7 @@
1
1
  {
2
2
  "name": "chesai-ui",
3
3
  "private": false,
4
- "version": "0.16.7",
5
- "packageManager": "pnpm@10.12.1",
4
+ "version": "0.16.8",
6
5
  "repository": {
7
6
  "type": "git",
8
7
  "url": "https://github.com/ayhamdev/chesai-ui"
@@ -25,19 +24,6 @@
25
24
  "engines": {
26
25
  "node": ">=22"
27
26
  },
28
- "scripts": {
29
- "dev": "bunx storybook dev -p 8000",
30
- "build": "storybook build",
31
- "build:lib": "tsc && vite build",
32
- "build:docs": "npx ts-node ./scripts/generate-llm.ts",
33
- "lint": "npx @biomejs/biome lint --write ./src",
34
- "format": "npx @biomejs/biome check --write --organize-imports-enabled=true ./src",
35
- "test": "vitest",
36
- "test:cov": "vitest run --coverage",
37
- "gen:context": "bun run ./scripts/context.ts",
38
- "git:diff-merge": "git diff --unified=2000 $(git merge-base main HEAD)...HEAD",
39
- "git:diff": "git diff --unified=2000 > git-changes.txt"
40
- },
41
27
  "dependencies": {
42
28
  "@capacitor/app": "^8.0.0",
43
29
  "@capacitor/core": "^8.0.1",
@@ -168,5 +154,18 @@
168
154
  "biome lint --write --no-errors-on-unmatched --files-ignore-unknown=true",
169
155
  "biome format --write --no-errors-on-unmatched"
170
156
  ]
157
+ },
158
+ "scripts": {
159
+ "dev": "bunx storybook dev -p 8000",
160
+ "build": "storybook build",
161
+ "build:lib": "tsc && vite build",
162
+ "build:docs": "npx ts-node ./scripts/generate-llm.ts",
163
+ "lint": "npx @biomejs/biome lint --write ./src",
164
+ "format": "npx @biomejs/biome check --write --organize-imports-enabled=true ./src",
165
+ "test": "vitest",
166
+ "test:cov": "vitest run --coverage",
167
+ "gen:context": "bun run ./scripts/context.ts",
168
+ "git:diff-merge": "git diff --unified=2000 $(git merge-base main HEAD)...HEAD",
169
+ "git:diff": "git diff --unified=2000 > git-changes.txt"
171
170
  }
172
- }
171
+ }