@campminder/ds 0.3.0 → 0.4.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/dist/index.cjs +66 -55
- package/dist/index.d.cts +8 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.js +66 -55
- package/fonts/general-sans/GeneralSans-Bold.woff +0 -0
- package/fonts/general-sans/GeneralSans-Bold.woff2 +0 -0
- package/fonts/general-sans/GeneralSans-BoldItalic.woff +0 -0
- package/fonts/general-sans/GeneralSans-BoldItalic.woff2 +0 -0
- package/fonts/general-sans/GeneralSans-Extralight.woff +0 -0
- package/fonts/general-sans/GeneralSans-Extralight.woff2 +0 -0
- package/fonts/general-sans/GeneralSans-ExtralightItalic.woff +0 -0
- package/fonts/general-sans/GeneralSans-ExtralightItalic.woff2 +0 -0
- package/fonts/general-sans/GeneralSans-Italic.woff +0 -0
- package/fonts/general-sans/GeneralSans-Italic.woff2 +0 -0
- package/fonts/general-sans/GeneralSans-Light.woff +0 -0
- package/fonts/general-sans/GeneralSans-Light.woff2 +0 -0
- package/fonts/general-sans/GeneralSans-LightItalic.woff +0 -0
- package/fonts/general-sans/GeneralSans-LightItalic.woff2 +0 -0
- package/fonts/general-sans/GeneralSans-Medium.woff +0 -0
- package/fonts/general-sans/GeneralSans-Medium.woff2 +0 -0
- package/fonts/general-sans/GeneralSans-MediumItalic.woff +0 -0
- package/fonts/general-sans/GeneralSans-MediumItalic.woff2 +0 -0
- package/fonts/general-sans/GeneralSans-Regular.woff +0 -0
- package/fonts/general-sans/GeneralSans-Regular.woff2 +0 -0
- package/fonts/general-sans/GeneralSans-Semibold.woff +0 -0
- package/fonts/general-sans/GeneralSans-Semibold.woff2 +0 -0
- package/fonts/general-sans/GeneralSans-SemiboldItalic.woff +0 -0
- package/fonts/general-sans/GeneralSans-SemiboldItalic.woff2 +0 -0
- package/fonts/general-sans/GeneralSans-Variable.woff +0 -0
- package/fonts/general-sans/GeneralSans-Variable.woff2 +0 -0
- package/fonts/general-sans/GeneralSans-VariableItalic.woff +0 -0
- package/fonts/general-sans/GeneralSans-VariableItalic.woff2 +0 -0
- package/package.json +3 -2
- package/styles.css +120 -2
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
+
require('../styles.css');
|
|
4
5
|
var accordion = require('@base-ui/react/accordion');
|
|
5
6
|
var lucideReact = require('lucide-react');
|
|
6
7
|
var clsx = require('clsx');
|
|
@@ -60,7 +61,7 @@ var RPNInput__default = /*#__PURE__*/_interopDefault(RPNInput);
|
|
|
60
61
|
var flags__default = /*#__PURE__*/_interopDefault(flags);
|
|
61
62
|
var en__default = /*#__PURE__*/_interopDefault(en);
|
|
62
63
|
|
|
63
|
-
// src/
|
|
64
|
+
// src/index.ts
|
|
64
65
|
function cn(...inputs) {
|
|
65
66
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
66
67
|
}
|
|
@@ -1432,7 +1433,7 @@ function ColumnCustomizer({
|
|
|
1432
1433
|
c.key
|
|
1433
1434
|
)) })
|
|
1434
1435
|
] }),
|
|
1435
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col border-l", children: [
|
|
1436
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-0 min-w-0 flex-col overflow-hidden border-l", children: [
|
|
1436
1437
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between px-3 py-2.5", children: [
|
|
1437
1438
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm font-semibold", children: [
|
|
1438
1439
|
draft.length,
|
|
@@ -2154,6 +2155,7 @@ function DataTable({
|
|
|
2154
2155
|
paginated = false,
|
|
2155
2156
|
pageSize: pageSizeProp,
|
|
2156
2157
|
pageSizeOptions = [25, 50, 100],
|
|
2158
|
+
stickyPagination = false,
|
|
2157
2159
|
page: pageProp,
|
|
2158
2160
|
onPageChange,
|
|
2159
2161
|
toolbar,
|
|
@@ -2414,59 +2416,68 @@ function DataTable({
|
|
|
2414
2416
|
);
|
|
2415
2417
|
}) })
|
|
2416
2418
|
] }) }),
|
|
2417
|
-
paginated && total > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
|
|
2467
|
-
|
|
2468
|
-
|
|
2469
|
-
|
|
2419
|
+
paginated && total > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2420
|
+
"div",
|
|
2421
|
+
{
|
|
2422
|
+
className: cn(
|
|
2423
|
+
"flex items-center justify-between gap-4 text-sm text-muted-foreground",
|
|
2424
|
+
stickyPagination ? "sticky bottom-0 z-20 rounded-b-xl border-t bg-background px-3 py-2.5 shadow-[0_-2px_6px_-4px_rgba(0,0,0,0.2)]" : "px-1"
|
|
2425
|
+
),
|
|
2426
|
+
children: [
|
|
2427
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2428
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden sm:inline", children: "Rows per page" }),
|
|
2429
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2430
|
+
Select,
|
|
2431
|
+
{
|
|
2432
|
+
value: String(pageSize),
|
|
2433
|
+
onValueChange: (v) => {
|
|
2434
|
+
if (!v) return;
|
|
2435
|
+
setPageSizeInner(Number(v));
|
|
2436
|
+
setPage(0);
|
|
2437
|
+
},
|
|
2438
|
+
children: [
|
|
2439
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectTrigger, { "aria-label": "Rows per page", className: "h-8 w-[70px]", children: /* @__PURE__ */ jsxRuntime.jsx(SelectValue, {}) }),
|
|
2440
|
+
/* @__PURE__ */ jsxRuntime.jsx(SelectContent, { children: pageSizeOptions.map((n) => /* @__PURE__ */ jsxRuntime.jsx(SelectItem, { value: String(n), children: n }, n)) })
|
|
2441
|
+
]
|
|
2442
|
+
}
|
|
2443
|
+
)
|
|
2444
|
+
] }),
|
|
2445
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
2446
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "tabular-nums whitespace-nowrap", children: [
|
|
2447
|
+
pageStart + 1,
|
|
2448
|
+
"\u2013",
|
|
2449
|
+
Math.min(pageStart + pageSize, total),
|
|
2450
|
+
" of ",
|
|
2451
|
+
total
|
|
2452
|
+
] }),
|
|
2453
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
2454
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2455
|
+
"button",
|
|
2456
|
+
{
|
|
2457
|
+
type: "button",
|
|
2458
|
+
onClick: () => setPage(safePage - 1),
|
|
2459
|
+
disabled: safePage === 0,
|
|
2460
|
+
"aria-label": "Previous page",
|
|
2461
|
+
className: "inline-flex size-8 items-center justify-center rounded-md border bg-background hover:bg-muted disabled:pointer-events-none disabled:opacity-40",
|
|
2462
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "size-4" })
|
|
2463
|
+
}
|
|
2464
|
+
),
|
|
2465
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2466
|
+
"button",
|
|
2467
|
+
{
|
|
2468
|
+
type: "button",
|
|
2469
|
+
onClick: () => setPage(safePage + 1),
|
|
2470
|
+
disabled: safePage >= pageCount - 1,
|
|
2471
|
+
"aria-label": "Next page",
|
|
2472
|
+
className: "inline-flex size-8 items-center justify-center rounded-md border bg-background hover:bg-muted disabled:pointer-events-none disabled:opacity-40",
|
|
2473
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "size-4" })
|
|
2474
|
+
}
|
|
2475
|
+
)
|
|
2476
|
+
] })
|
|
2477
|
+
] })
|
|
2478
|
+
]
|
|
2479
|
+
}
|
|
2480
|
+
)
|
|
2470
2481
|
] });
|
|
2471
2482
|
}
|
|
2472
2483
|
function DropdownMenu(props) {
|
package/dist/index.d.cts
CHANGED
|
@@ -301,6 +301,13 @@ interface DataTableProps<T> {
|
|
|
301
301
|
paginated?: boolean;
|
|
302
302
|
pageSize?: number;
|
|
303
303
|
pageSizeOptions?: number[];
|
|
304
|
+
/**
|
|
305
|
+
* Pin the pagination bar to the bottom of the scroll viewport so it stays
|
|
306
|
+
* reachable without scrolling to the end of a long table. Off by default —
|
|
307
|
+
* only enable when the table is the page's dominant scrolling content (e.g.
|
|
308
|
+
* a full-page list view), not when it sits inside a card among other content.
|
|
309
|
+
*/
|
|
310
|
+
stickyPagination?: boolean;
|
|
304
311
|
page?: number;
|
|
305
312
|
onPageChange?: (page: number) => void;
|
|
306
313
|
toolbar?: ReactNode;
|
|
@@ -309,7 +316,7 @@ interface DataTableProps<T> {
|
|
|
309
316
|
rowClassName?: (row: T) => string;
|
|
310
317
|
className?: string;
|
|
311
318
|
}
|
|
312
|
-
declare function DataTable<T>({ data, columns, rowKey, selectable, selected: selectedProp, onSelectedChange, bulkActions, sort: sortProp, defaultSort, onSortChange, paginated, pageSize: pageSizeProp, pageSizeOptions, page: pageProp, onPageChange, toolbar, onRowClick, emptyMessage, rowClassName, className, }: DataTableProps<T>): React$1.JSX.Element;
|
|
319
|
+
declare function DataTable<T>({ data, columns, rowKey, selectable, selected: selectedProp, onSelectedChange, bulkActions, sort: sortProp, defaultSort, onSortChange, paginated, pageSize: pageSizeProp, pageSizeOptions, stickyPagination, page: pageProp, onPageChange, toolbar, onRowClick, emptyMessage, rowClassName, className, }: DataTableProps<T>): React$1.JSX.Element;
|
|
313
320
|
|
|
314
321
|
declare function DropdownMenu(props: Menu.Root.Props): React$1.JSX.Element;
|
|
315
322
|
declare function DropdownMenuTrigger({ ...props }: Menu.Trigger.Props): React$1.JSX.Element;
|
package/dist/index.d.ts
CHANGED
|
@@ -301,6 +301,13 @@ interface DataTableProps<T> {
|
|
|
301
301
|
paginated?: boolean;
|
|
302
302
|
pageSize?: number;
|
|
303
303
|
pageSizeOptions?: number[];
|
|
304
|
+
/**
|
|
305
|
+
* Pin the pagination bar to the bottom of the scroll viewport so it stays
|
|
306
|
+
* reachable without scrolling to the end of a long table. Off by default —
|
|
307
|
+
* only enable when the table is the page's dominant scrolling content (e.g.
|
|
308
|
+
* a full-page list view), not when it sits inside a card among other content.
|
|
309
|
+
*/
|
|
310
|
+
stickyPagination?: boolean;
|
|
304
311
|
page?: number;
|
|
305
312
|
onPageChange?: (page: number) => void;
|
|
306
313
|
toolbar?: ReactNode;
|
|
@@ -309,7 +316,7 @@ interface DataTableProps<T> {
|
|
|
309
316
|
rowClassName?: (row: T) => string;
|
|
310
317
|
className?: string;
|
|
311
318
|
}
|
|
312
|
-
declare function DataTable<T>({ data, columns, rowKey, selectable, selected: selectedProp, onSelectedChange, bulkActions, sort: sortProp, defaultSort, onSortChange, paginated, pageSize: pageSizeProp, pageSizeOptions, page: pageProp, onPageChange, toolbar, onRowClick, emptyMessage, rowClassName, className, }: DataTableProps<T>): React$1.JSX.Element;
|
|
319
|
+
declare function DataTable<T>({ data, columns, rowKey, selectable, selected: selectedProp, onSelectedChange, bulkActions, sort: sortProp, defaultSort, onSortChange, paginated, pageSize: pageSizeProp, pageSizeOptions, stickyPagination, page: pageProp, onPageChange, toolbar, onRowClick, emptyMessage, rowClassName, className, }: DataTableProps<T>): React$1.JSX.Element;
|
|
313
320
|
|
|
314
321
|
declare function DropdownMenu(props: Menu.Root.Props): React$1.JSX.Element;
|
|
315
322
|
declare function DropdownMenuTrigger({ ...props }: Menu.Trigger.Props): React$1.JSX.Element;
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import '../styles.css';
|
|
2
3
|
import { Accordion as Accordion$1 } from '@base-ui/react/accordion';
|
|
3
4
|
import { ChevronDown, CheckIcon, ChevronRightIcon, MoreHorizontalIcon, Loader2, ChevronDownIcon, ChevronUpIcon, XIcon, PlusIcon, Columns3, Search, GripVertical, X, SearchIcon, ChevronLeft, ChevronRight, Check, Circle, ListFilter, PencilIcon, TrashIcon, ArrowLeftIcon, ArrowRightIcon, ChevronLeftIcon, ChevronsUpDown, CameraIcon, PanelLeftIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon, InfoIcon, CircleCheckIcon, BadgeCheck, ChevronUp, AlertTriangleIcon } from 'lucide-react';
|
|
4
5
|
import { clsx } from 'clsx';
|
|
@@ -35,7 +36,7 @@ import { Toaster as Toaster$1 } from 'sonner';
|
|
|
35
36
|
import { Switch as Switch$1 } from '@base-ui/react/switch';
|
|
36
37
|
import { Tabs as Tabs$1 } from '@base-ui/react/tabs';
|
|
37
38
|
|
|
38
|
-
// src/
|
|
39
|
+
// src/index.ts
|
|
39
40
|
function cn(...inputs) {
|
|
40
41
|
return twMerge(clsx(inputs));
|
|
41
42
|
}
|
|
@@ -1407,7 +1408,7 @@ function ColumnCustomizer({
|
|
|
1407
1408
|
c.key
|
|
1408
1409
|
)) })
|
|
1409
1410
|
] }),
|
|
1410
|
-
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col border-l", children: [
|
|
1411
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-h-0 min-w-0 flex-col overflow-hidden border-l", children: [
|
|
1411
1412
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-3 py-2.5", children: [
|
|
1412
1413
|
/* @__PURE__ */ jsxs("span", { className: "text-sm font-semibold", children: [
|
|
1413
1414
|
draft.length,
|
|
@@ -2129,6 +2130,7 @@ function DataTable({
|
|
|
2129
2130
|
paginated = false,
|
|
2130
2131
|
pageSize: pageSizeProp,
|
|
2131
2132
|
pageSizeOptions = [25, 50, 100],
|
|
2133
|
+
stickyPagination = false,
|
|
2132
2134
|
page: pageProp,
|
|
2133
2135
|
onPageChange,
|
|
2134
2136
|
toolbar,
|
|
@@ -2389,59 +2391,68 @@ function DataTable({
|
|
|
2389
2391
|
);
|
|
2390
2392
|
}) })
|
|
2391
2393
|
] }) }),
|
|
2392
|
-
paginated && total > 0 && /* @__PURE__ */ jsxs(
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2394
|
+
paginated && total > 0 && /* @__PURE__ */ jsxs(
|
|
2395
|
+
"div",
|
|
2396
|
+
{
|
|
2397
|
+
className: cn(
|
|
2398
|
+
"flex items-center justify-between gap-4 text-sm text-muted-foreground",
|
|
2399
|
+
stickyPagination ? "sticky bottom-0 z-20 rounded-b-xl border-t bg-background px-3 py-2.5 shadow-[0_-2px_6px_-4px_rgba(0,0,0,0.2)]" : "px-1"
|
|
2400
|
+
),
|
|
2401
|
+
children: [
|
|
2402
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
2403
|
+
/* @__PURE__ */ jsx("span", { className: "hidden sm:inline", children: "Rows per page" }),
|
|
2404
|
+
/* @__PURE__ */ jsxs(
|
|
2405
|
+
Select,
|
|
2406
|
+
{
|
|
2407
|
+
value: String(pageSize),
|
|
2408
|
+
onValueChange: (v) => {
|
|
2409
|
+
if (!v) return;
|
|
2410
|
+
setPageSizeInner(Number(v));
|
|
2411
|
+
setPage(0);
|
|
2412
|
+
},
|
|
2413
|
+
children: [
|
|
2414
|
+
/* @__PURE__ */ jsx(SelectTrigger, { "aria-label": "Rows per page", className: "h-8 w-[70px]", children: /* @__PURE__ */ jsx(SelectValue, {}) }),
|
|
2415
|
+
/* @__PURE__ */ jsx(SelectContent, { children: pageSizeOptions.map((n) => /* @__PURE__ */ jsx(SelectItem, { value: String(n), children: n }, n)) })
|
|
2416
|
+
]
|
|
2417
|
+
}
|
|
2418
|
+
)
|
|
2419
|
+
] }),
|
|
2420
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
2421
|
+
/* @__PURE__ */ jsxs("span", { className: "tabular-nums whitespace-nowrap", children: [
|
|
2422
|
+
pageStart + 1,
|
|
2423
|
+
"\u2013",
|
|
2424
|
+
Math.min(pageStart + pageSize, total),
|
|
2425
|
+
" of ",
|
|
2426
|
+
total
|
|
2427
|
+
] }),
|
|
2428
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
2429
|
+
/* @__PURE__ */ jsx(
|
|
2430
|
+
"button",
|
|
2431
|
+
{
|
|
2432
|
+
type: "button",
|
|
2433
|
+
onClick: () => setPage(safePage - 1),
|
|
2434
|
+
disabled: safePage === 0,
|
|
2435
|
+
"aria-label": "Previous page",
|
|
2436
|
+
className: "inline-flex size-8 items-center justify-center rounded-md border bg-background hover:bg-muted disabled:pointer-events-none disabled:opacity-40",
|
|
2437
|
+
children: /* @__PURE__ */ jsx(ChevronLeft, { className: "size-4" })
|
|
2438
|
+
}
|
|
2439
|
+
),
|
|
2440
|
+
/* @__PURE__ */ jsx(
|
|
2441
|
+
"button",
|
|
2442
|
+
{
|
|
2443
|
+
type: "button",
|
|
2444
|
+
onClick: () => setPage(safePage + 1),
|
|
2445
|
+
disabled: safePage >= pageCount - 1,
|
|
2446
|
+
"aria-label": "Next page",
|
|
2447
|
+
className: "inline-flex size-8 items-center justify-center rounded-md border bg-background hover:bg-muted disabled:pointer-events-none disabled:opacity-40",
|
|
2448
|
+
children: /* @__PURE__ */ jsx(ChevronRight, { className: "size-4" })
|
|
2449
|
+
}
|
|
2450
|
+
)
|
|
2451
|
+
] })
|
|
2452
|
+
] })
|
|
2453
|
+
]
|
|
2454
|
+
}
|
|
2455
|
+
)
|
|
2445
2456
|
] });
|
|
2446
2457
|
}
|
|
2447
2458
|
function DropdownMenu(props) {
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@campminder/ds",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Campminder design system components, packaged. base-ui-era shadcn primitives + domain components + design tokens, for apps that prefer npm install over shadcn copy-source.",
|
|
6
6
|
"repository": {
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
],
|
|
15
15
|
"files": [
|
|
16
16
|
"dist",
|
|
17
|
-
"styles.css"
|
|
17
|
+
"styles.css",
|
|
18
|
+
"fonts"
|
|
18
19
|
],
|
|
19
20
|
"main": "./dist/index.cjs",
|
|
20
21
|
"module": "./dist/index.js",
|
package/styles.css
CHANGED
|
@@ -2,9 +2,122 @@
|
|
|
2
2
|
Run `npm run build` (or `node scripts/gen-tokens-css.mjs`) to regenerate.
|
|
3
3
|
Consumers: @import "@campminder/ds/styles.css" after @import "tailwindcss". */
|
|
4
4
|
|
|
5
|
+
@font-face {
|
|
6
|
+
font-family: 'General Sans';
|
|
7
|
+
src: url('./fonts/general-sans/GeneralSans-Extralight.woff2') format('woff2'),
|
|
8
|
+
url('./fonts/general-sans/GeneralSans-Extralight.woff') format('woff');
|
|
9
|
+
font-weight: 200;
|
|
10
|
+
font-style: normal;
|
|
11
|
+
font-display: swap;
|
|
12
|
+
}
|
|
13
|
+
@font-face {
|
|
14
|
+
font-family: 'General Sans';
|
|
15
|
+
src: url('./fonts/general-sans/GeneralSans-Light.woff2') format('woff2'),
|
|
16
|
+
url('./fonts/general-sans/GeneralSans-Light.woff') format('woff');
|
|
17
|
+
font-weight: 300;
|
|
18
|
+
font-style: normal;
|
|
19
|
+
font-display: swap;
|
|
20
|
+
}
|
|
21
|
+
@font-face {
|
|
22
|
+
font-family: 'General Sans';
|
|
23
|
+
src: url('./fonts/general-sans/GeneralSans-Regular.woff2') format('woff2'),
|
|
24
|
+
url('./fonts/general-sans/GeneralSans-Regular.woff') format('woff');
|
|
25
|
+
font-weight: 400;
|
|
26
|
+
font-style: normal;
|
|
27
|
+
font-display: swap;
|
|
28
|
+
}
|
|
29
|
+
@font-face {
|
|
30
|
+
font-family: 'General Sans';
|
|
31
|
+
src: url('./fonts/general-sans/GeneralSans-Medium.woff2') format('woff2'),
|
|
32
|
+
url('./fonts/general-sans/GeneralSans-Medium.woff') format('woff');
|
|
33
|
+
font-weight: 500;
|
|
34
|
+
font-style: normal;
|
|
35
|
+
font-display: swap;
|
|
36
|
+
}
|
|
37
|
+
@font-face {
|
|
38
|
+
font-family: 'General Sans';
|
|
39
|
+
src: url('./fonts/general-sans/GeneralSans-Semibold.woff2') format('woff2'),
|
|
40
|
+
url('./fonts/general-sans/GeneralSans-Semibold.woff') format('woff');
|
|
41
|
+
font-weight: 600;
|
|
42
|
+
font-style: normal;
|
|
43
|
+
font-display: swap;
|
|
44
|
+
}
|
|
45
|
+
@font-face {
|
|
46
|
+
font-family: 'General Sans';
|
|
47
|
+
src: url('./fonts/general-sans/GeneralSans-Bold.woff2') format('woff2'),
|
|
48
|
+
url('./fonts/general-sans/GeneralSans-Bold.woff') format('woff');
|
|
49
|
+
font-weight: 700;
|
|
50
|
+
font-style: normal;
|
|
51
|
+
font-display: swap;
|
|
52
|
+
}
|
|
53
|
+
@font-face {
|
|
54
|
+
font-family: 'General Sans';
|
|
55
|
+
src: url('./fonts/general-sans/GeneralSans-ExtralightItalic.woff2') format('woff2'),
|
|
56
|
+
url('./fonts/general-sans/GeneralSans-ExtralightItalic.woff') format('woff');
|
|
57
|
+
font-weight: 200;
|
|
58
|
+
font-style: italic;
|
|
59
|
+
font-display: swap;
|
|
60
|
+
}
|
|
61
|
+
@font-face {
|
|
62
|
+
font-family: 'General Sans';
|
|
63
|
+
src: url('./fonts/general-sans/GeneralSans-LightItalic.woff2') format('woff2'),
|
|
64
|
+
url('./fonts/general-sans/GeneralSans-LightItalic.woff') format('woff');
|
|
65
|
+
font-weight: 300;
|
|
66
|
+
font-style: italic;
|
|
67
|
+
font-display: swap;
|
|
68
|
+
}
|
|
69
|
+
@font-face {
|
|
70
|
+
font-family: 'General Sans';
|
|
71
|
+
src: url('./fonts/general-sans/GeneralSans-Italic.woff2') format('woff2'),
|
|
72
|
+
url('./fonts/general-sans/GeneralSans-Italic.woff') format('woff');
|
|
73
|
+
font-weight: 400;
|
|
74
|
+
font-style: italic;
|
|
75
|
+
font-display: swap;
|
|
76
|
+
}
|
|
77
|
+
@font-face {
|
|
78
|
+
font-family: 'General Sans';
|
|
79
|
+
src: url('./fonts/general-sans/GeneralSans-MediumItalic.woff2') format('woff2'),
|
|
80
|
+
url('./fonts/general-sans/GeneralSans-MediumItalic.woff') format('woff');
|
|
81
|
+
font-weight: 500;
|
|
82
|
+
font-style: italic;
|
|
83
|
+
font-display: swap;
|
|
84
|
+
}
|
|
85
|
+
@font-face {
|
|
86
|
+
font-family: 'General Sans';
|
|
87
|
+
src: url('./fonts/general-sans/GeneralSans-SemiboldItalic.woff2') format('woff2'),
|
|
88
|
+
url('./fonts/general-sans/GeneralSans-SemiboldItalic.woff') format('woff');
|
|
89
|
+
font-weight: 600;
|
|
90
|
+
font-style: italic;
|
|
91
|
+
font-display: swap;
|
|
92
|
+
}
|
|
93
|
+
@font-face {
|
|
94
|
+
font-family: 'General Sans';
|
|
95
|
+
src: url('./fonts/general-sans/GeneralSans-BoldItalic.woff2') format('woff2'),
|
|
96
|
+
url('./fonts/general-sans/GeneralSans-BoldItalic.woff') format('woff');
|
|
97
|
+
font-weight: 700;
|
|
98
|
+
font-style: italic;
|
|
99
|
+
font-display: swap;
|
|
100
|
+
}
|
|
101
|
+
@font-face {
|
|
102
|
+
font-family: 'General Sans Variable';
|
|
103
|
+
src: url('./fonts/general-sans/GeneralSans-Variable.woff2') format('woff2'),
|
|
104
|
+
url('./fonts/general-sans/GeneralSans-Variable.woff') format('woff');
|
|
105
|
+
font-weight: 200 700;
|
|
106
|
+
font-style: normal;
|
|
107
|
+
font-display: swap;
|
|
108
|
+
}
|
|
109
|
+
@font-face {
|
|
110
|
+
font-family: 'General Sans Variable';
|
|
111
|
+
src: url('./fonts/general-sans/GeneralSans-VariableItalic.woff2') format('woff2'),
|
|
112
|
+
url('./fonts/general-sans/GeneralSans-VariableItalic.woff') format('woff');
|
|
113
|
+
font-weight: 200 700;
|
|
114
|
+
font-style: italic;
|
|
115
|
+
font-display: swap;
|
|
116
|
+
}
|
|
117
|
+
|
|
5
118
|
@theme {
|
|
6
|
-
/*
|
|
7
|
-
--font-sans:
|
|
119
|
+
/* General Sans is self-hosted via @font-face above */
|
|
120
|
+
--font-sans: "General Sans", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
8
121
|
--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
|
|
9
122
|
|
|
10
123
|
--color-background: var(--base-background, #ffffff);
|
|
@@ -228,5 +341,10 @@
|
|
|
228
341
|
color-scheme: light;
|
|
229
342
|
}
|
|
230
343
|
|
|
344
|
+
/* Apply General Sans as the base typeface. */
|
|
345
|
+
body {
|
|
346
|
+
font-family: var(--font-sans);
|
|
347
|
+
}
|
|
348
|
+
|
|
231
349
|
/* Scan the package's compiled components so Tailwind v4 keeps their classes. */
|
|
232
350
|
@source "./dist";
|