@forthtilliath/shadcn-ui 0.2.0 → 0.3.0

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.
Files changed (32) hide show
  1. package/README.md +22 -12
  2. package/dist/components/blocks/accordion.d.ts.map +1 -1
  3. package/dist/components/blocks/animated-tabs.d.ts.map +1 -1
  4. package/dist/components/blocks/animated-tabs.js +0 -18
  5. package/dist/components/blocks/data-table-ext/pagination.d.ts +2 -2
  6. package/dist/components/blocks/data-table-ext/pagination.d.ts.map +1 -1
  7. package/dist/components/blocks/data-table-ext/pagination.js +6 -10
  8. package/dist/components/blocks/data-table-ext/utils/table-config.d.ts.map +1 -1
  9. package/dist/components/blocks/data-table-ext/utils/table-config.js +1 -16
  10. package/dist/components/blocks/data-table.d.ts +1 -1
  11. package/dist/components/blocks/data-table.js +2 -2
  12. package/dist/components/carousel.d.ts.map +1 -1
  13. package/dist/components/carousel.js +0 -1
  14. package/dist/components/chart.d.ts.map +1 -1
  15. package/dist/components/chart.js +3 -2
  16. package/dist/components/form.d.ts +2 -2
  17. package/dist/components/form.d.ts.map +1 -1
  18. package/dist/components/pagination.d.ts.map +1 -1
  19. package/dist/components/pagination.js +6 -1
  20. package/dist/components/sidebar.d.ts.map +1 -1
  21. package/dist/components/sidebar.js +0 -2
  22. package/dist/hooks/use-mobile.js +1 -1
  23. package/dist/styles/themes/brutalist.css +193 -0
  24. package/dist/styles/themes/crt.css +238 -0
  25. package/dist/styles/themes/default.css +2 -1
  26. package/dist/styles/themes/glass.css +178 -0
  27. package/dist/styles/themes/memphis.css +220 -0
  28. package/dist/styles/themes/newspaper.css +204 -0
  29. package/dist/styles/themes/pixel.css +189 -0
  30. package/dist/styles/themes/sketch.css +214 -0
  31. package/dist/styles/themes/synthwave.css +205 -0
  32. package/package.json +55 -48
package/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # @forthtilliath/shadcn-ui
2
2
 
3
3
  The [shadcn/ui](https://ui.shadcn.com) component library for this monorepo —
4
- Radix UI primitives styled with Tailwind CSS, generated via the shadcn CLI
5
- and kept in source form (not compiled) so consumers can customize freely.
6
- `private: true`, internal to this monorepo.
4
+ Radix UI primitives styled with Tailwind CSS, generated via the shadcn CLI.
5
+ Published to npm as a regular compiled package (`dist/`); within this
6
+ monorepo it's still edited and consumed as plain source (`src/`), keeping
7
+ the usual shadcn/ui "you own the code" experience for in-repo work.
7
8
 
8
9
  > Distinct from [`@forthtilliath/forth-ui`](../forth-ui): this package is
9
10
  > the (mostly) unmodified shadcn/ui base layer; `forth-ui` builds
@@ -11,6 +12,12 @@ and kept in source form (not compiled) so consumers can customize freely.
11
12
 
12
13
  ## Install
13
14
 
15
+ ```bash
16
+ npm install @forthtilliath/shadcn-ui
17
+ ```
18
+
19
+ Or, from within this monorepo, as a workspace dependency:
20
+
14
21
  ```json
15
22
  {
16
23
  "dependencies": {
@@ -21,9 +28,8 @@ and kept in source form (not compiled) so consumers can customize freely.
21
28
 
22
29
  ## Usage
23
30
 
24
- No build step — everything is consumed straight from `src/` (see the
25
- `exports` field), so import components, lib helpers and hooks directly by
26
- file name:
31
+ Import components, lib helpers and hooks directly by file name (see the
32
+ `exports` field in `package.json`):
27
33
 
28
34
  ```tsx
29
35
  import { Button } from "@forthtilliath/shadcn-ui/components/button";
@@ -69,16 +75,20 @@ Larger, composed patterns built from the primitives above: `accordion`,
69
75
 
70
76
  ### Themes (`src/styles/themes/`)
71
77
 
72
- `globals.css` imports `themes/default.css`. Ten additional
73
- [tweakcn](https://tweakcn.com)-generated theme files are available to swap
74
- in instead: `blue`, `bubblegum`, `claymorphism`, `green`, `orange`, `red`,
75
- `rose`, `twitter`, `violet`, `yellow`. `globals-static.css` is a
78
+ `globals.css` imports `themes/default.css`. 18 additional theme files are available to swap in instead: ten
79
+ [tweakcn](https://tweakcn.com)-generated ones (`blue`, `bubblegum`,
80
+ `claymorphism`, `green`, `orange`, `red`, `rose`, `twitter`, `violet`,
81
+ `yellow`) and 8 with their own fonts, radius, shadows and signature effects
82
+ (`brutalist`, `pixel`, `crt`, `synthwave`, `glass`, `sketch`, `newspaper`, `memphis`) — see forth-ui's README for a
83
+ gallery. `globals-static.css` is a
76
84
  non-`@theme inline` variant for tooling that doesn't support Tailwind v4's
77
85
  CSS-first theming.
78
86
 
79
87
  ## Scripts
80
88
 
81
89
  ```bash
82
- pnpm run check-types # tsc --noEmit
83
- pnpm run lint # eslint
90
+ pnpm run dev # tsc --watch -> dist/
91
+ pnpm run build # tsc -> dist/ (+ copies src/styles -> dist/styles)
92
+ pnpm run check-types # tsc --noEmit
93
+ pnpm run lint # eslint
84
94
  ```
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/components/blocks/accordion.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAUhD,KAAK,oBAAoB,GACrB,SAAS,GACT,SAAS,GACT,KAAK,GACL,WAAW,GACX,eAAe,GACf,MAAM,GACN,kBAAkB,CAAC;AAEvB,KAAK,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAkDjD,QAAA,MAAM,wBAAwB;;;;;8EAgC5B,CAAC;AAsBH,UAAU,IAAI;IACZ,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,YAAa,SAAQ,IAAI;IACjC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;CACvB;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,YAAY,CAC7B,OAAO,wBAAwB,CAChC,CAAC,kBAAkB,CAAC,CAAC;IACtB,aAAa,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAGD,KAAK,YAAY,GAAG,MAAM,CAAC;AAC3B,KAAK,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;AACxE,KAAK,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;AAE5E,KAAK,KAAK,GAAG,WAAW,GAAG,aAAa,CAAC;AAEzC;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,qBAUtD"}
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/components/blocks/accordion.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAUhD,KAAK,oBAAoB,GACrB,SAAS,GACT,SAAS,GACT,KAAK,GACL,WAAW,GACX,eAAe,GACf,MAAM,GACN,kBAAkB,CAAC;AAEvB,KAAK,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAkDjD,QAAA,MAAM,wBAAwB;;;;;8EAgC5B,CAAC;AAsBH,UAAU,IAAI;IACZ,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,YAAa,SAAQ,IAAI;IACjC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;CACvB;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,IAAI,EAAE,GAAG,YAAY,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,YAAY,CAC7B,OAAO,wBAAwB,CAChC,CAAC,kBAAkB,CAAC,CAAC;IACtB,aAAa,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAED,KAAK,YAAY,GAAG,MAAM,CAAC;AAC3B,KAAK,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;AACxE,KAAK,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;AAE5E,KAAK,KAAK,GAAG,WAAW,GAAG,aAAa,CAAC;AAEzC;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,qBAUtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"animated-tabs.d.ts","sourceRoot":"","sources":["../../../src/components/blocks/animated-tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAMxE,UAAU,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,UAAU,iBAAiB,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;IAC5D,IAAI,EAAE,CAAC,CAAC;IACR,eAAe,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,CAAC;CACH;AAoLD,wBAAgB,YAAY,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,EAC/D,IAAI,EACJ,eAAe,EACf,OAAO,EAAE,GAAQ,GAClB,EAAE,iBAAiB,CAAC,CAAC,CAAC,qBAsBtB"}
1
+ {"version":3,"file":"animated-tabs.d.ts","sourceRoot":"","sources":["../../../src/components/blocks/animated-tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAIxE,UAAU,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,UAAU,iBAAiB,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;IAC5D,IAAI,EAAE,CAAC,CAAC;IACR,eAAe,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,CAAC;CACH;AAoLD,wBAAgB,YAAY,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,EAC/D,IAAI,EACJ,eAAe,EACf,OAAO,EAAE,GAAQ,GAClB,EAAE,iBAAiB,CAAC,CAAC,CAAC,qBAsBtB"}
@@ -101,24 +101,6 @@ function useTabs({ tabs, initialTabId, onChange, }) {
101
101
  return [indexOfInitialTab === -1 ? 0 : indexOfInitialTab, 0];
102
102
  });
103
103
  const [selectedTabIndex, direction] = selectedTab;
104
- /**
105
- * Returns the tabs prop, the selected tab, and the content props.
106
- *
107
- * The tabs prop is an object with the following properties:
108
- * - tabs: The array of tabs.
109
- * - selectedTabIndex: The index of the selected tab.
110
- * - onChange: The function to call when the selected tab changes.
111
- * - setSelectedTab: The function to call to change the selected tab.
112
- *
113
- * The selected tab is the currently selected tab object.
114
- *
115
- * The content props is an object with the following properties:
116
- * - ref: The ref for the content element.
117
- * - className: The class name for the content element.
118
- * - "aria-hidden": Whether the content element is hidden.
119
- * - "aria-labelledby": The id of the tab element that labels the content element.
120
- * - role: The role of the content element.
121
- */
122
104
  return {
123
105
  tabProps: {
124
106
  tabs,
@@ -2,11 +2,11 @@ import type { Table } from "@tanstack/react-table";
2
2
  interface DataTablePaginationProps<TData> {
3
3
  table: Table<TData>;
4
4
  totalItems?: number;
5
+ /** Total selected items across all pages, not just the current page. */
5
6
  totalSelectedItems?: number;
6
7
  pageSizeOptions?: number[];
7
8
  size?: "sm" | "default" | "lg";
8
9
  }
9
- export declare function DataTablePagination<TData>({ table, totalItems, totalSelectedItems, pageSizeOptions, // Default options if none provided
10
- size, }: DataTablePaginationProps<TData>): import("react").JSX.Element;
10
+ export declare function DataTablePagination<TData>({ table, totalItems, totalSelectedItems, pageSizeOptions, size, }: DataTablePaginationProps<TData>): import("react").JSX.Element;
11
11
  export {};
12
12
  //# sourceMappingURL=pagination.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../../src/components/blocks/data-table-ext/pagination.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAsBnD,UAAU,wBAAwB,CAAC,KAAK;IACtC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,EACzC,KAAK,EACL,UAAc,EACd,kBAAsB,EACtB,eAAsC,EAAE,mCAAmC;AAC3E,IAAgB,GACjB,EAAE,wBAAwB,CAAC,KAAK,CAAC,+BA0HjC"}
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../../src/components/blocks/data-table-ext/pagination.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAsBnD,UAAU,wBAAwB,CAAC,KAAK;IACtC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,EACzC,KAAK,EACL,UAAc,EACd,kBAAsB,EACtB,eAAsC,EACtC,IAAgB,GACjB,EAAE,wBAAwB,CAAC,KAAK,CAAC,+BAuHjC"}
@@ -13,28 +13,24 @@ const getButtonSizeClass = (size) => {
13
13
  return "h-8 w-8 p-0";
14
14
  }
15
15
  };
16
- export function DataTablePagination({ table, totalItems = 0, totalSelectedItems = 0, pageSizeOptions = [10, 20, 30, 40, 50], // Default options if none provided
17
- size = "default", }) {
18
- // Convert 'lg' size to 'default' for SelectTrigger since it only accepts 'sm' | 'default'
16
+ export function DataTablePagination({ table, totalItems = 0, totalSelectedItems = 0, pageSizeOptions = [10, 20, 30, 40, 50], size = "default", }) {
17
+ // SelectTrigger only accepts "sm" | "default".
19
18
  const selectSize = size === "lg" ? "default" : size;
20
19
  return (_jsxs("div", { className: "flex w-full flex-col items-center justify-between gap-4 overflow-auto px-2 py-1 sm:flex-row sm:gap-8", children: [_jsxs("div", { className: "flex-1 text-sm text-muted-foreground", children: [totalSelectedItems, " of ", totalItems, " row(s) selected."] }), _jsxs("div", { className: "flex flex-col items-center gap-4 sm:flex-row sm:gap-6 lg:gap-8", children: [_jsxs("div", { className: "flex items-center space-x-2", children: [_jsx("p", { className: "whitespace-nowrap text-sm font-medium", children: "Rows per page" }), _jsxs(Select, { value: table.getState().pagination.pageSize.toString(), onValueChange: (value) => {
21
- // Validate the input value
22
20
  const numericValue = parseInt(value, 10);
23
21
  if (isNaN(numericValue) || numericValue <= 0) {
24
22
  console.error(`Invalid page size value: ${value}`);
25
23
  return;
26
24
  }
27
25
  try {
28
- // Force URL update via direct window manipulation first
29
- // This ensures the URL gets updated before the table state changes
26
+ // Update the URL before the table state, so a consumer
27
+ // syncing pagination from the URL doesn't read a stale value.
30
28
  const url = new URL(window.location.href);
31
29
  url.searchParams.set("pageSize", value);
32
- url.searchParams.set("page", "1"); // Always reset to page 1
30
+ url.searchParams.set("page", "1");
33
31
  window.history.replaceState({}, "", url.toString());
34
- // Then use the table's pagination change handler to update table state
35
- // This order ensures the URL is already set when the table state updates
36
32
  table.setPagination({
37
- pageIndex: 0, // Reset to first page
33
+ pageIndex: 0,
38
34
  pageSize: numericValue,
39
35
  });
40
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"table-config.d.ts","sourceRoot":"","sources":["../../../../../src/components/blocks/data-table-ext/utils/table-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,WAAW;IAW1B,gBAAgB,EAAE,OAAO,CAAC;CAqC3B;AAqBD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,cAAc,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACpC,WAAW,CAEb"}
1
+ {"version":3,"file":"table-config.d.ts","sourceRoot":"","sources":["../../../../../src/components/blocks/data-table-ext/utils/table-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,cAAc,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACpC,WAAW,CAEb"}
@@ -1,20 +1,5 @@
1
- // Default configuration
2
1
  const defaultConfig = {
3
- // enableRowSelection: true, // Row selection enabled by default
4
- // enableKeyboardNavigation: false, // Keyboard navigation disabled by default
5
- // enableClickRowSelect: false, // Clicking row to select disabled by default
6
- enablePagination: true, // Pagination enabled by default
7
- // enableSearch: true, // Search enabled by default
8
- // enableColumnFilters: true, // Column filters enabled by default
9
- // enableDateFilter: true, // Date filter enabled by default
10
- // enableColumnVisibility: true, // Column visibility options enabled by default
11
- // enableExport: true, // Data export enabled by default
12
- // enableUrlState: true, // URL state persistence enabled by default
13
- // enableColumnResizing: true, // Column resizing enabled by default
14
- // enableToolbar: true, // Toolbar enabled by default
15
- // size: "default", // Default size for buttons and inputs
16
- // columnResizingTableId: undefined, // No table ID by default
17
- // searchPlaceholder: undefined, // No custom search placeholder by default
2
+ enablePagination: true,
18
3
  };
19
4
  /**
20
5
  * Provides table configuration, merging in any overrides.
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { type ColumnDef } from "@tanstack/react-table";
3
- import { type TableConfig } from "./data-table-ext/utils/table-config";
3
+ import { type TableConfig } from "./data-table-ext/utils/table-config.js";
4
4
  export interface Props<T> {
5
5
  columns: ColumnDef<T>[];
6
6
  data: T[];
@@ -7,8 +7,8 @@ import { Button } from "@forthtilliath/shadcn-ui/components/button";
7
7
  import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuTrigger, } from "@forthtilliath/shadcn-ui/components/dropdown-menu";
8
8
  import { Input } from "@forthtilliath/shadcn-ui/components/input";
9
9
  import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@forthtilliath/shadcn-ui/components/table";
10
- import { DataTablePagination } from "./data-table-ext/pagination";
11
- import { getTableConfig, } from "./data-table-ext/utils/table-config";
10
+ import { DataTablePagination } from "./data-table-ext/pagination.js";
11
+ import { getTableConfig, } from "./data-table-ext/utils/table-config.js";
12
12
  export function DataTable({ columns, data, config }) {
13
13
  "use no memo";
14
14
  // TanStack Table's useReactTable() returns functions that can't be safely
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../src/components/carousel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,gBAAgB,EAAE,EACvB,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,MAAM,EAAE,MAAM,4CAA4C,CAAC;AAGpE,KAAK,WAAW,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AACjE,KAAK,eAAe,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAChD,KAAK,cAAc,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAE/C,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;CACrC;AAuBD,iBAAS,QAAQ,CAAC,EAChB,WAA0B,EAC1B,IAAI,EACJ,MAAM,EACN,OAAO,EACP,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,aAAa,qBAyF7C;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAmB5E;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAgBzE;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,OAAmB,EACnB,IAAa,EACb,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,qBAuBrC;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,OAAmB,EACnB,IAAa,EACb,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,qBAuBrC;AAED,OAAO,EACL,QAAQ,EACR,KAAK,WAAW,EAChB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,gBAAgB,GACjB,CAAC"}
1
+ {"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../src/components/carousel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,gBAAgB,EAAE,EACvB,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,MAAM,EAAE,MAAM,4CAA4C,CAAC;AAGpE,KAAK,WAAW,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AACjE,KAAK,eAAe,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAChD,KAAK,cAAc,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAE/C,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,CAAC;CACrC;AAuBD,iBAAS,QAAQ,CAAC,EAChB,WAA0B,EAC1B,IAAI,EACJ,MAAM,EACN,OAAO,EACP,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,aAAa,qBAwF7C;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAmB5E;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAgBzE;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,OAAmB,EACnB,IAAa,EACb,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,qBAuBrC;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,OAAmB,EACnB,IAAa,EACb,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,qBAuBrC;AAED,OAAO,EACL,QAAQ,EACR,KAAK,WAAW,EAChB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,gBAAgB,GACjB,CAAC"}
@@ -59,7 +59,6 @@ function Carousel({ orientation = "horizontal", opts, setApi, plugins, className
59
59
  // state has to happen here — this is the same "subscribe to an external
60
60
  // system, sync state in the callback" pattern as the `.on()` listeners
61
61
  // right below, just invoked once upfront for the initial state.
62
- // eslint-disable-next-line react-hooks/set-state-in-effect
63
62
  onSelect(api);
64
63
  api.on("reInit", onSelect);
65
64
  api.on("select", onSelect);
@@ -1 +1 @@
1
- {"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../src/components/chart.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,iBAAiB,MAAM,UAAU,CAAC;AAK9C,QAAA,MAAM,MAAM;;;CAAwC,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG,MAAM,CAC9B,MAAM,EACN;IACE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC5B,GAAG,CACA;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GACjC;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,OAAO,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAChE,CACF,CAAC;AAkBF,iBAAS,cAAc,CAAC,EACtB,EAAE,EACF,SAAS,EACT,QAAQ,EACR,MAAM,EACN,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,cAAc,CAC5B,OAAO,iBAAiB,CAAC,mBAAmB,CAC7C,CAAC,UAAU,CAAC,CAAC;CACf,qBAyBA;AAED,QAAA,MAAM,UAAU,GAAI,gBAAgB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,6BAmCtE,CAAC;AAEF,QAAA,MAAM,YAAY,kCAA4B,CAAC;AAE/C,iBAAS,mBAAmB,CAAC,EAC3B,MAAM,EACN,OAAO,EACP,SAAS,EACT,SAAiB,EACjB,SAAiB,EACjB,aAAqB,EACrB,KAAK,EACL,cAAc,EACd,cAAc,EACd,SAAS,EACT,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,IAAI,CACL,iBAAiB,CAAC,mBAAmB,EACrC,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,oBAAoB,GAAG,aAAa,CAC3E,GAIC,OAAO,CACL,IAAI,CACF,iBAAiB,CAAC,mBAAmB,EACrC,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,oBAAoB,GAAG,aAAa,CAC3E,CACF,GACD,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,4BAgIF;AAED,QAAA,MAAM,WAAW,sGAA2B,CAAC;AAE7C,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,QAAgB,EAChB,OAAO,EACP,aAAwB,EACxB,OAAO,GACR,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAC5B,IAAI,CACF,iBAAiB,CAAC,yBAAyB,EAC3C,SAAS,GAAG,eAAe,CAC5B,GAAG;IACF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,4BA0CF;AA6CD,OAAO,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,mBAAmB,GACpB,CAAC"}
1
+ {"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../src/components/chart.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,iBAAiB,MAAM,UAAU,CAAC;AAK9C,QAAA,MAAM,MAAM;;;CAAwC,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG,MAAM,CAC9B,MAAM,EACN;IACE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC5B,GAAG,CACA;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GACjC;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,OAAO,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAChE,CACF,CAAC;AAkBF,iBAAS,cAAc,CAAC,EACtB,EAAE,EACF,SAAS,EACT,QAAQ,EACR,MAAM,EACN,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,cAAc,CAC5B,OAAO,iBAAiB,CAAC,mBAAmB,CAC7C,CAAC,UAAU,CAAC,CAAC;CACf,qBAyBA;AAED,QAAA,MAAM,UAAU,GAAI,gBAAgB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,6BAmCtE,CAAC;AAEF,QAAA,MAAM,YAAY,kCAA4B,CAAC;AAE/C,iBAAS,mBAAmB,CAAC,EAC3B,MAAM,EACN,OAAO,EACP,SAAS,EACT,SAAiB,EACjB,SAAiB,EACjB,aAAqB,EACrB,KAAK,EACL,cAAc,EACd,cAAc,EACd,SAAS,EACT,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,IAAI,CACL,iBAAiB,CAAC,mBAAmB,EACrC,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,oBAAoB,GAAG,aAAa,CAC3E,GAIC,OAAO,CACL,IAAI,CACF,iBAAiB,CAAC,mBAAmB,EACrC,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,oBAAoB,GAAG,aAAa,CAC3E,CACF,GACD,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,4BAgIF;AAED,QAAA,MAAM,WAAW,sGAA2B,CAAC;AAE7C,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,QAAgB,EAChB,OAAO,EAEP,aAAwB,EACxB,OAAO,GACR,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAC5B,IAAI,CACF,iBAAiB,CAAC,yBAAyB,EAC3C,SAAS,GAAG,eAAe,CAC5B,GAAG;IACF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,4BA0CF;AA4CD,OAAO,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,mBAAmB,GACpB,CAAC"}
@@ -99,7 +99,9 @@ function ChartTooltipContent({ active, payload, className, indicator = "dot", hi
99
99
  }) })] }));
100
100
  }
101
101
  const ChartLegend = RechartsPrimitive.Legend;
102
- function ChartLegendContent({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey, }) {
102
+ function ChartLegendContent({ className, hideIcon = false, payload,
103
+ // eslint-disable-next-line @typescript-eslint/no-deprecated -- Recharts' <Legend> still calls its content render-prop with this shape; the deprecation is on Legend's own top-level `verticalAlign` config prop (in favor of `position`), not this callback signature.
104
+ verticalAlign = "bottom", nameKey, }) {
103
105
  const { config } = useChart();
104
106
  if (!payload?.length) {
105
107
  return null;
@@ -119,7 +121,6 @@ function dataKeyToString(dataKey) {
119
121
  ? dataKey
120
122
  : undefined;
121
123
  }
122
- // Helper to extract item config from a payload.
123
124
  function getPayloadConfigFromPayload(config, payload, key) {
124
125
  if (typeof payload !== "object" || payload === null) {
125
126
  return undefined;
@@ -2,14 +2,14 @@ import * as React from "react";
2
2
  import { type ControllerProps, type FieldPath, type FieldValues } from "react-hook-form";
3
3
  import type * as LabelPrimitive from "@radix-ui/react-label";
4
4
  import { Slot } from "@radix-ui/react-slot";
5
- declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>({ children, watch, getValues, getFieldState, setError, clearErrors, setValue, setValues, trigger, formState, resetField, reset, handleSubmit, unregister, control, register, setFocus, subscribe, }: import("react-hook-form").FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
5
+ declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>({ children, watch, getValues, getFieldState, setError, clearErrors, setValue, setValues, trigger, formState, resetField, reset, resetDefaultValues, handleSubmit, unregister, control, register, setFocus, subscribe, }: import("react-hook-form").FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
6
6
  declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>) => React.JSX.Element;
7
7
  declare const useFormField: () => {
8
8
  invalid: boolean;
9
9
  isDirty: boolean;
10
10
  isTouched: boolean;
11
11
  isValidating: boolean;
12
- error?: import("react-hook-form").FieldError;
12
+ error?: import("react-hook-form").FieldError | undefined;
13
13
  id: string;
14
14
  name: string;
15
15
  formItemId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/components/form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EAIjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,KAAK,cAAc,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAK5C,QAAA,MAAM,IAAI,0YAAe,CAAC;AAa1B,QAAA,MAAM,SAAS,GACb,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,cAEC,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,sBAMtC,CAAC;AAEF,QAAA,MAAM,YAAY;;;;;;;;;;;CAiBjB,CAAC;AAUF,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAYrE;AAED,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,qBAYlD;AAED,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,qBAenE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAW1E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,4BAkBtE;AAED,OAAO,EACL,IAAI,EACJ,WAAW,EACX,eAAe,EACf,SAAS,EACT,QAAQ,EACR,SAAS,EACT,WAAW,EACX,YAAY,GACb,CAAC"}
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/components/form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EAIjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,KAAK,cAAc,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAK5C,QAAA,MAAM,IAAI,8ZAAe,CAAC;AAa1B,QAAA,MAAM,SAAS,GACb,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,cAEC,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,sBAMtC,CAAC;AAEF,QAAA,MAAM,YAAY;;;;;;;;;;;CAiBjB,CAAC;AAUF,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAYrE;AAED,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,qBAYlD;AAED,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,qBAenE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,qBAW1E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,4BAkBtE;AAED,OAAO,EACL,IAAI,EACJ,WAAW,EACX,eAAe,EACf,SAAS,EACT,QAAQ,EACR,SAAS,EACT,WAAW,EACX,YAAY,GACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/components/pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAOpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4CAA4C,CAAC;AAIzE,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAUvE;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAQ5B;AAED,iBAAS,cAAc,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAE/D;AAED,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,MAAM,CAAC,GACnD,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAE5B,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,QAAQ,EACR,IAAa,EACb,GAAG,KAAK,EACT,EAAE,mBAAmB,qBAgBrB;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,qBAY7C;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,qBAY7C;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAY9B;AAED,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,cAAc,EACd,kBAAkB,GACnB,CAAC"}
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/components/pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAOpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4CAA4C,CAAC;AAIzE,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAUvE;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAQ5B;AAED,iBAAS,cAAc,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAE/D;AAED,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,MAAM,CAAC,GACnD,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAE5B,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,QAAQ,EACR,IAAa,EACb,GAAG,KAAK,EACT,EAAE,mBAAmB,qBAoBrB;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,qBAY7C;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,qBAY7C;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAY9B;AAED,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,cAAc,EACd,kBAAkB,GACnB,CAAC"}
@@ -12,7 +12,12 @@ function PaginationItem({ ...props }) {
12
12
  return _jsx("li", { "data-slot": "pagination-item", ...props });
13
13
  }
14
14
  function PaginationLink({ className, isActive, size = "icon", ...props }) {
15
- return (_jsx("a", { "aria-current": isActive ? "page" : undefined, "data-slot": "pagination-link", "data-active": isActive, className: cn(buttonVariants({
15
+ return (
16
+ // Content always comes through {...props} (children) from callers —
17
+ // PaginationPrevious/Next always pass an icon+label, and numbered page
18
+ // links pass the page number — the rule can't see through the spread.
19
+ // eslint-disable-next-line jsx-a11y/anchor-has-content
20
+ _jsx("a", { "aria-current": isActive ? "page" : undefined, "data-slot": "pagination-link", "data-active": isActive, className: cn(buttonVariants({
16
21
  variant: isActive ? "outline" : "ghost",
17
22
  size,
18
23
  }), className), ...props }));
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/components/sidebar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/components/sidebar.tsx"],"names":[],"mappings":"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"}
@@ -44,10 +44,8 @@ function SidebarProvider({ defaultOpen = true, open: openProp, onOpenChange: set
44
44
  else {
45
45
  _setOpen(openState);
46
46
  }
47
- // This sets the cookie to keep the sidebar state.
48
47
  document.cookie = `${SIDEBAR_COOKIE_NAME}=${String(openState)}; path=/; max-age=${String(SIDEBAR_COOKIE_MAX_AGE)}`;
49
48
  }, [setOpenProp, open]);
50
- // Helper to toggle the sidebar.
51
49
  const toggleSidebar = React.useCallback(() => {
52
50
  if (isMobile) {
53
51
  setOpenMobile((open) => !open);
@@ -14,7 +14,7 @@ export function useIsMobile() {
14
14
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
15
15
  };
16
16
  mql.addEventListener("change", onChange);
17
- // eslint-disable-next-line @eslint-react/set-state-in-effect, react-hooks/set-state-in-effect
17
+ // eslint-disable-next-line @eslint-react/set-state-in-effect
18
18
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
19
19
  return () => {
20
20
  mql.removeEventListener("change", onChange);
@@ -0,0 +1,193 @@
1
+ /*
2
+ * brutalist — Neo-brutalism: thick black outlines, hard offset shadows, buttons that press in, dotted paper.
3
+ *
4
+ * Tokens plus signature effects: plain CSS rules on shadcn's data-slot
5
+ * attributes, active only while this theme is imported. Fonts fall back to
6
+ * system stacks; for the full look, load Space Grotesk, Space Mono
7
+ * (e.g. from Google Fonts, or next/font).
8
+ */
9
+
10
+ :root {
11
+ --background: oklch(0.97 0.03 95);
12
+ --foreground: oklch(0.15 0 0);
13
+ --card: oklch(1 0 0);
14
+ --card-foreground: oklch(0.15 0 0);
15
+ --popover: oklch(1 0 0);
16
+ --popover-foreground: oklch(0.15 0 0);
17
+ --primary: oklch(0.15 0 0);
18
+ --primary-foreground: oklch(0.87 0.17 95);
19
+ --secondary: oklch(0.87 0.17 95);
20
+ --secondary-foreground: oklch(0.15 0 0);
21
+ --muted: oklch(0.93 0.03 95);
22
+ --muted-foreground: oklch(0.38 0 0);
23
+ --accent: oklch(0.82 0.12 350);
24
+ --accent-foreground: oklch(0.15 0 0);
25
+ --destructive: oklch(0.55 0.21 27);
26
+ --destructive-foreground: oklch(0.99 0 0);
27
+ --border: oklch(0.15 0 0);
28
+ --input: oklch(0.15 0 0);
29
+ --ring: oklch(0.15 0 0);
30
+ --chart-1: oklch(0.87 0.17 95);
31
+ --chart-2: oklch(0.15 0 0);
32
+ --chart-3: oklch(0.82 0.12 350);
33
+ --chart-4: oklch(0.8 0.16 145);
34
+ --chart-5: oklch(0.7 0.18 40);
35
+ --sidebar: oklch(1 0 0);
36
+ --sidebar-foreground: oklch(0.15 0 0);
37
+ --sidebar-primary: oklch(0.15 0 0);
38
+ --sidebar-primary-foreground: oklch(0.87 0.17 95);
39
+ --sidebar-accent: oklch(0.82 0.12 350);
40
+ --sidebar-accent-foreground: oklch(0.15 0 0);
41
+ --sidebar-border: oklch(0.15 0 0);
42
+ --sidebar-ring: oklch(0.15 0 0);
43
+ --font-sans:
44
+ "Space Grotesk", "Archivo", ui-sans-serif, system-ui, -apple-system,
45
+ "Segoe UI", sans-serif;
46
+ --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", serif;
47
+ --font-mono:
48
+ "Space Mono", ui-monospace, SFMono-Regular, Menlo, Consolas,
49
+ "Liberation Mono", monospace;
50
+ --radius: 0rem;
51
+ --shadow-2xs: 1px 1px 0px 0px oklch(0.15 0 0);
52
+ --shadow-xs: 2px 2px 0px 0px oklch(0.15 0 0);
53
+ --shadow-sm: 2px 2px 0px 0px oklch(0.15 0 0);
54
+ --shadow: 3px 3px 0px 0px oklch(0.15 0 0);
55
+ --shadow-md: 4px 4px 0px 0px oklch(0.15 0 0);
56
+ --shadow-lg: 6px 6px 0px 0px oklch(0.15 0 0);
57
+ --shadow-xl: 8px 8px 0px 0px oklch(0.15 0 0);
58
+ --shadow-2xl: 12px 12px 0px 0px oklch(0.15 0 0);
59
+ }
60
+
61
+ .dark {
62
+ --background: oklch(0.2 0.01 95);
63
+ --foreground: oklch(0.96 0.02 95);
64
+ --card: oklch(0.26 0.012 95);
65
+ --card-foreground: oklch(0.96 0.02 95);
66
+ --popover: oklch(0.26 0.012 95);
67
+ --popover-foreground: oklch(0.96 0.02 95);
68
+ --primary: oklch(0.87 0.17 95);
69
+ --primary-foreground: oklch(0.15 0 0);
70
+ --secondary: oklch(0.75 0.1 230);
71
+ --secondary-foreground: oklch(0.15 0 0);
72
+ --muted: oklch(0.28 0.01 95);
73
+ --muted-foreground: oklch(0.78 0.02 95);
74
+ --accent: oklch(0.78 0.12 350);
75
+ --accent-foreground: oklch(0.15 0 0);
76
+ --destructive: oklch(0.66 0.21 27);
77
+ --destructive-foreground: oklch(0.15 0 0);
78
+ --border: oklch(0.96 0.02 95);
79
+ --input: oklch(0.96 0.02 95);
80
+ --ring: oklch(0.87 0.17 95);
81
+ --chart-1: oklch(0.87 0.17 95);
82
+ --chart-2: oklch(0.75 0.1 230);
83
+ --chart-3: oklch(0.78 0.12 350);
84
+ --chart-4: oklch(0.78 0.16 145);
85
+ --chart-5: oklch(0.72 0.17 40);
86
+ --sidebar: oklch(0.26 0.012 95);
87
+ --sidebar-foreground: oklch(0.96 0.02 95);
88
+ --sidebar-primary: oklch(0.87 0.17 95);
89
+ --sidebar-primary-foreground: oklch(0.15 0 0);
90
+ --sidebar-accent: oklch(0.78 0.12 350);
91
+ --sidebar-accent-foreground: oklch(0.15 0 0);
92
+ --sidebar-border: oklch(0.96 0.02 95);
93
+ --sidebar-ring: oklch(0.87 0.17 95);
94
+ --font-sans:
95
+ "Space Grotesk", "Archivo", ui-sans-serif, system-ui, -apple-system,
96
+ "Segoe UI", sans-serif;
97
+ --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", serif;
98
+ --font-mono:
99
+ "Space Mono", ui-monospace, SFMono-Regular, Menlo, Consolas,
100
+ "Liberation Mono", monospace;
101
+ --radius: 0rem;
102
+ --shadow-2xs: 1px 1px 0px 0px oklch(0.87 0.17 95);
103
+ --shadow-xs: 2px 2px 0px 0px oklch(0.87 0.17 95);
104
+ --shadow-sm: 2px 2px 0px 0px oklch(0.87 0.17 95);
105
+ --shadow: 3px 3px 0px 0px oklch(0.87 0.17 95);
106
+ --shadow-md: 4px 4px 0px 0px oklch(0.87 0.17 95);
107
+ --shadow-lg: 6px 6px 0px 0px oklch(0.87 0.17 95);
108
+ --shadow-xl: 8px 8px 0px 0px oklch(0.87 0.17 95);
109
+ --shadow-2xl: 12px 12px 0px 0px oklch(0.87 0.17 95);
110
+ }
111
+
112
+ /* Signature effects */
113
+
114
+ :where([data-slot="button"][class*="shadow-xs"]):focus-visible {
115
+ outline: 2px solid var(--ring);
116
+ outline-offset: 2px;
117
+ }
118
+
119
+ body {
120
+ background-image: radial-gradient(
121
+ color-mix(in oklab, var(--foreground) 14%, transparent) 1px,
122
+ transparent 1.5px
123
+ );
124
+ background-size: 18px 18px;
125
+ }
126
+
127
+ [data-slot="card"],
128
+ [data-slot="alert"],
129
+ [data-slot="dialog-content"],
130
+ [data-slot="alert-dialog-content"],
131
+ [data-slot="sheet-content"],
132
+ [data-slot="drawer-content"],
133
+ [data-slot="popover-content"],
134
+ [data-slot="hover-card-content"],
135
+ [data-slot="dropdown-menu-content"],
136
+ [data-slot="select-content"],
137
+ [data-slot="menubar-content"],
138
+ [data-slot="input"],
139
+ [data-slot="textarea"],
140
+ [data-slot="select-trigger"],
141
+ [data-slot="input-otp-slot"],
142
+ [data-slot="button"][class*="shadow-xs"],
143
+ [data-slot="badge"] {
144
+ border: 2px solid var(--border);
145
+ border-radius: 0;
146
+ }
147
+
148
+ [data-slot="card"] {
149
+ border-width: 3px;
150
+ box-shadow: var(--shadow-lg);
151
+ }
152
+
153
+ [data-slot="card-title"],
154
+ [data-slot="dialog-title"],
155
+ [data-slot="alert-dialog-title"],
156
+ [data-slot="sheet-title"],
157
+ [data-slot="drawer-title"] {
158
+ font-weight: 800;
159
+ text-transform: uppercase;
160
+ letter-spacing: -0.01em;
161
+ }
162
+
163
+ [data-slot="button"][class*="shadow-xs"] {
164
+ font-weight: 800;
165
+ text-transform: uppercase;
166
+ letter-spacing: 0.02em;
167
+ box-shadow: var(--shadow-md);
168
+ transition:
169
+ transform 80ms ease-out,
170
+ box-shadow 80ms ease-out;
171
+ }
172
+
173
+ [data-slot="button"][class*="shadow-xs"]:hover {
174
+ transform: translate(-1px, -1px);
175
+ box-shadow: var(--shadow-lg);
176
+ }
177
+
178
+ /* Pressed: the button sinks into its own shadow. */
179
+ [data-slot="button"][class*="shadow-xs"]:active {
180
+ transform: translate(4px, 4px);
181
+ box-shadow: 0 0 #0000;
182
+ }
183
+
184
+ [data-slot="button"][class*="shadow-xs"]:focus-visible {
185
+ outline: 3px solid var(--ring);
186
+ outline-offset: 3px;
187
+ }
188
+
189
+ @media (prefers-reduced-motion: reduce) {
190
+ [data-slot="button"][class*="shadow-xs"] {
191
+ transition: none;
192
+ }
193
+ }