@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.
- package/README.md +22 -12
- package/dist/components/blocks/accordion.d.ts.map +1 -1
- package/dist/components/blocks/animated-tabs.d.ts.map +1 -1
- package/dist/components/blocks/animated-tabs.js +0 -18
- package/dist/components/blocks/data-table-ext/pagination.d.ts +2 -2
- package/dist/components/blocks/data-table-ext/pagination.d.ts.map +1 -1
- package/dist/components/blocks/data-table-ext/pagination.js +6 -10
- package/dist/components/blocks/data-table-ext/utils/table-config.d.ts.map +1 -1
- package/dist/components/blocks/data-table-ext/utils/table-config.js +1 -16
- package/dist/components/blocks/data-table.d.ts +1 -1
- package/dist/components/blocks/data-table.js +2 -2
- package/dist/components/carousel.d.ts.map +1 -1
- package/dist/components/carousel.js +0 -1
- package/dist/components/chart.d.ts.map +1 -1
- package/dist/components/chart.js +3 -2
- package/dist/components/form.d.ts +2 -2
- package/dist/components/form.d.ts.map +1 -1
- package/dist/components/pagination.d.ts.map +1 -1
- package/dist/components/pagination.js +6 -1
- package/dist/components/sidebar.d.ts.map +1 -1
- package/dist/components/sidebar.js +0 -2
- package/dist/hooks/use-mobile.js +1 -1
- package/dist/styles/themes/brutalist.css +193 -0
- package/dist/styles/themes/crt.css +238 -0
- package/dist/styles/themes/default.css +2 -1
- package/dist/styles/themes/glass.css +178 -0
- package/dist/styles/themes/memphis.css +220 -0
- package/dist/styles/themes/newspaper.css +204 -0
- package/dist/styles/themes/pixel.css +189 -0
- package/dist/styles/themes/sketch.css +214 -0
- package/dist/styles/themes/synthwave.css +205 -0
- 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
|
-
|
|
6
|
-
|
|
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
|
-
|
|
25
|
-
`exports` field
|
|
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`.
|
|
73
|
-
[tweakcn](https://tweakcn.com)-generated
|
|
74
|
-
|
|
75
|
-
`
|
|
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
|
|
83
|
-
pnpm run
|
|
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;
|
|
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;
|
|
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,
|
|
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,
|
|
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],
|
|
17
|
-
|
|
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
|
-
//
|
|
29
|
-
//
|
|
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");
|
|
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,
|
|
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;
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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"}
|
package/dist/components/chart.js
CHANGED
|
@@ -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,
|
|
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,
|
|
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,
|
|
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 (
|
|
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":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,MAAM,EAAE,MAAM,4CAA4C,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAS1E,OAAO,EAEL,cAAc,EAGf,MAAM,6CAA6C,CAAC;AAWrD,UAAU,mBAAmB;IAC3B,KAAK,EAAE,UAAU,GAAG,WAAW,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAID,iBAAS,UAAU,wBAOlB;AAED,iBAAS,eAAe,CAAC,EACvB,WAAkB,EAClB,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,WAAW,EACzB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC,
|
|
1
|
+
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/components/sidebar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,MAAM,EAAE,MAAM,4CAA4C,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAS1E,OAAO,EAEL,cAAc,EAGf,MAAM,6CAA6C,CAAC;AAWrD,UAAU,mBAAmB;IAC3B,KAAK,EAAE,UAAU,GAAG,WAAW,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAID,iBAAS,UAAU,wBAOlB;AAED,iBAAS,eAAe,CAAC,EACvB,WAAkB,EAClB,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,WAAW,EACzB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC,qBA2FA;AAED,iBAAS,OAAO,CAAC,EACf,IAAa,EACb,OAAmB,EACnB,WAAyB,EACzB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IAC3C,WAAW,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;CAC7C,qBAyFA;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,qBAoBrC;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,qBAuB3E;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAY1E;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,qBASpC;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAS1E;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAS1E;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,SAAS,CAAC,qBASxC;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAY3E;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBASzE;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,OAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,qBAerD;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,OAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,qBAiBxD;AAED,iBAAS,mBAAmB,CAAC,EAC3B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAS7B;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBASvE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAS3E;AAED,QAAA,MAAM,yBAAyB;;;8EAoB9B,CAAC;AAEF,iBAAS,iBAAiB,CAAC,EACzB,OAAe,EACf,QAAgB,EAChB,OAAmB,EACnB,IAAgB,EAChB,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,CAAC;CAChE,GAAG,YAAY,CAAC,OAAO,yBAAyB,CAAC,qBAoCjD;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,OAAe,EACf,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,qBAsBA;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAiB7B;AAED,iBAAS,mBAAmB,CAAC,EAC3B,SAAS,EACT,QAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,qBAgCA;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAa1E;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,qBAS5B;AAED,iBAAS,oBAAoB,CAAC,EAC5B,OAAe,EACf,IAAW,EACX,QAAgB,EAChB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,qBAoBA;AAED,OAAO,EACL,OAAO,EACP,cAAc,EACd,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,UAAU,GACX,CAAC"}
|
|
@@ -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);
|
package/dist/hooks/use-mobile.js
CHANGED
|
@@ -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
|
|
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
|
+
}
|