@financedistrict/apps-ui 0.1.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/LICENSE +19 -0
- package/README.md +119 -0
- package/dist/Radio-BYWz1n7p.d.cts +32 -0
- package/dist/Radio-BYWz1n7p.d.ts +32 -0
- package/dist/SelectTrigger-By0iPBI3.d.cts +78 -0
- package/dist/SelectTrigger-By0iPBI3.d.ts +78 -0
- package/dist/accordion.cjs +322 -0
- package/dist/accordion.d.cts +156 -0
- package/dist/accordion.d.ts +156 -0
- package/dist/accordion.js +2 -0
- package/dist/apps-ui.umd.js +1 -0
- package/dist/button.cjs +366 -0
- package/dist/button.d.cts +52 -0
- package/dist/button.d.ts +52 -0
- package/dist/button.js +3 -0
- package/dist/checkbox.cjs +74 -0
- package/dist/checkbox.d.cts +63 -0
- package/dist/checkbox.d.ts +63 -0
- package/dist/checkbox.js +2 -0
- package/dist/chunk-3RU7JMFE.js +27 -0
- package/dist/chunk-5TWRK4NW.js +783 -0
- package/dist/chunk-7EOSDFS3.js +9 -0
- package/dist/chunk-AIQ4UOGK.js +142 -0
- package/dist/chunk-B3MMGTPV.js +200 -0
- package/dist/chunk-DAHQYLUI.js +146 -0
- package/dist/chunk-DGBXADSS.js +1 -0
- package/dist/chunk-E6KPNTWW.js +295 -0
- package/dist/chunk-EOAB6G2D.js +149 -0
- package/dist/chunk-FAOVKDVM.js +32 -0
- package/dist/chunk-FV76Z4Z2.js +78 -0
- package/dist/chunk-GLTLBUZ7.js +285 -0
- package/dist/chunk-GTZFV43T.js +154 -0
- package/dist/chunk-HRGZNL4A.js +88 -0
- package/dist/chunk-IEVN3J2F.js +98 -0
- package/dist/chunk-IRS3T6LF.js +352 -0
- package/dist/chunk-IYYHCQXG.js +146 -0
- package/dist/chunk-JIXW3455.js +89 -0
- package/dist/chunk-N4VAP2GB.js +77 -0
- package/dist/chunk-SJ2ZRYVV.js +167 -0
- package/dist/chunk-SNU4YXOR.js +66 -0
- package/dist/chunk-TT6JQATV.js +99 -0
- package/dist/chunk-UPQ3ZPCO.js +66 -0
- package/dist/chunk-UVUSVFOH.js +264 -0
- package/dist/chunk-WJFPGGJB.js +255 -0
- package/dist/chunk-WXEBQA7A.js +371 -0
- package/dist/chunk-Y2O4YYZQ.js +184 -0
- package/dist/cut-corner.cjs +111 -0
- package/dist/cut-corner.d.cts +49 -0
- package/dist/cut-corner.d.ts +49 -0
- package/dist/cut-corner.js +1 -0
- package/dist/dialog.cjs +441 -0
- package/dist/dialog.d.cts +240 -0
- package/dist/dialog.d.ts +240 -0
- package/dist/dialog.js +3 -0
- package/dist/feature-card.cjs +182 -0
- package/dist/feature-card.d.cts +54 -0
- package/dist/feature-card.d.ts +54 -0
- package/dist/feature-card.js +2 -0
- package/dist/filter.cjs +873 -0
- package/dist/filter.d.cts +129 -0
- package/dist/filter.d.ts +129 -0
- package/dist/filter.js +6 -0
- package/dist/index.cjs +4583 -0
- package/dist/index.d.cts +29 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +27 -0
- package/dist/inline-select.cjs +856 -0
- package/dist/inline-select.d.cts +92 -0
- package/dist/inline-select.d.ts +92 -0
- package/dist/inline-select.js +6 -0
- package/dist/input.cjs +263 -0
- package/dist/input.d.cts +157 -0
- package/dist/input.d.ts +157 -0
- package/dist/input.js +4 -0
- package/dist/panel.cjs +185 -0
- package/dist/panel.d.cts +103 -0
- package/dist/panel.d.ts +103 -0
- package/dist/panel.js +2 -0
- package/dist/property-grid.cjs +110 -0
- package/dist/property-grid.d.cts +56 -0
- package/dist/property-grid.d.ts +56 -0
- package/dist/property-grid.js +2 -0
- package/dist/radio.cjs +74 -0
- package/dist/radio.d.cts +39 -0
- package/dist/radio.d.ts +39 -0
- package/dist/radio.js +2 -0
- package/dist/scrollbar.cjs +34 -0
- package/dist/scrollbar.d.cts +35 -0
- package/dist/scrollbar.d.ts +35 -0
- package/dist/scrollbar.js +1 -0
- package/dist/search-bar.cjs +408 -0
- package/dist/search-bar.d.cts +42 -0
- package/dist/search-bar.d.ts +42 -0
- package/dist/search-bar.js +4 -0
- package/dist/select.cjs +998 -0
- package/dist/select.d.cts +357 -0
- package/dist/select.d.ts +357 -0
- package/dist/select.js +5 -0
- package/dist/selectable-feature-card.cjs +159 -0
- package/dist/selectable-feature-card.d.cts +74 -0
- package/dist/selectable-feature-card.d.ts +74 -0
- package/dist/selectable-feature-card.js +3 -0
- package/dist/sidebar-item.cjs +175 -0
- package/dist/sidebar-item.d.cts +75 -0
- package/dist/sidebar-item.d.ts +75 -0
- package/dist/sidebar-item.js +2 -0
- package/dist/switch.cjs +86 -0
- package/dist/switch.d.cts +72 -0
- package/dist/switch.d.ts +72 -0
- package/dist/switch.js +2 -0
- package/dist/table-cell.cjs +196 -0
- package/dist/table-cell.d.cts +76 -0
- package/dist/table-cell.d.ts +76 -0
- package/dist/table-cell.js +2 -0
- package/dist/table-title.cjs +34 -0
- package/dist/table-title.d.cts +16 -0
- package/dist/table-title.d.ts +16 -0
- package/dist/table-title.js +2 -0
- package/dist/tabs.cjs +299 -0
- package/dist/tabs.d.cts +116 -0
- package/dist/tabs.d.ts +116 -0
- package/dist/tabs.js +2 -0
- package/dist/toast.cjs +87 -0
- package/dist/toast.d.cts +48 -0
- package/dist/toast.d.ts +48 -0
- package/dist/toast.js +2 -0
- package/dist/token-input.cjs +415 -0
- package/dist/token-input.d.cts +90 -0
- package/dist/token-input.d.ts +90 -0
- package/dist/token-input.js +3 -0
- package/dist/tooltip.cjs +384 -0
- package/dist/tooltip.d.cts +142 -0
- package/dist/tooltip.d.ts +142 -0
- package/dist/tooltip.js +2 -0
- package/package.json +200 -0
- package/src/fonts.css +33 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Property-grid CELL frame — the title (left) and content (right) sides of a
|
|
7
|
+
* property-grid row. Binds ONLY to the semantic `card/*` token layer; theme
|
|
8
|
+
* switch is automatic via `.dark`. Static (no hover/active/focus) — a
|
|
9
|
+
* property-grid row is read-only display.
|
|
10
|
+
*
|
|
11
|
+
* `variant` distinguishes the two sides:
|
|
12
|
+
* - `title` — muted text, left-aligned.
|
|
13
|
+
* - `content` — foreground text, right-aligned.
|
|
14
|
+
*/
|
|
15
|
+
declare const propertyGridCellVariants: (props?: ({
|
|
16
|
+
variant?: "title" | "content" | null | undefined;
|
|
17
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
18
|
+
type PropertyGridCellVariantsProps = VariantProps<typeof propertyGridCellVariants>;
|
|
19
|
+
/**
|
|
20
|
+
* Property-grid ITEM (row) frame — a two-column grid (title | content). Owns the
|
|
21
|
+
* bottom divider; `last` (the last row in a grid) omits it. Stacked items align
|
|
22
|
+
* columns automatically (each column is 1fr).
|
|
23
|
+
*/
|
|
24
|
+
declare const propertyGridItemVariants: (props?: ({
|
|
25
|
+
last?: boolean | null | undefined;
|
|
26
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
27
|
+
type PropertyGridItemVariantsProps = VariantProps<typeof propertyGridItemVariants>;
|
|
28
|
+
|
|
29
|
+
interface PropertyGridItemProps extends React.ComponentProps<"div">, PropertyGridItemVariantsProps {
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A property-grid row: a two-column grid holding one <PropertyGridTitle> (left)
|
|
33
|
+
* and one <PropertyGridContent> (right) as children. Owns the bottom divider;
|
|
34
|
+
* `last` (the last row in a grid) omits it. Stacked items align columns
|
|
35
|
+
* automatically (each is `grid-cols-2` at 1fr/1fr).
|
|
36
|
+
*/
|
|
37
|
+
declare function PropertyGridItem({ className, last, children, ref, ...props }: PropertyGridItemProps): React.JSX.Element;
|
|
38
|
+
|
|
39
|
+
interface PropertyGridCellProps extends React.ComponentProps<"div"> {
|
|
40
|
+
/** Which side of the row — sets tone (muted/foreground) + alignment. */
|
|
41
|
+
variant: "title" | "content";
|
|
42
|
+
/** Leading slot (e.g. a muted icon). Hidden when omitted. */
|
|
43
|
+
leading?: React.ReactNode;
|
|
44
|
+
/** Trailing slot (e.g. a copy icon). Hidden when omitted. */
|
|
45
|
+
trailing?: React.ReactNode;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
type PropertyGridTitleProps = Omit<PropertyGridCellProps, "variant">;
|
|
49
|
+
/** The title (left) cell of a property-grid row — muted, left-aligned. */
|
|
50
|
+
declare function PropertyGridTitle(props: PropertyGridTitleProps): React.JSX.Element;
|
|
51
|
+
|
|
52
|
+
type PropertyGridContentProps = Omit<PropertyGridCellProps, "variant">;
|
|
53
|
+
/** The content (right) cell of a property-grid row — foreground, right-aligned. */
|
|
54
|
+
declare function PropertyGridContent(props: PropertyGridContentProps): React.JSX.Element;
|
|
55
|
+
|
|
56
|
+
export { type PropertyGridCellVariantsProps, PropertyGridContent, type PropertyGridContentProps, PropertyGridItem, type PropertyGridItemProps, type PropertyGridItemVariantsProps, PropertyGridTitle, type PropertyGridTitleProps, propertyGridCellVariants, propertyGridItemVariants };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Property-grid CELL frame — the title (left) and content (right) sides of a
|
|
7
|
+
* property-grid row. Binds ONLY to the semantic `card/*` token layer; theme
|
|
8
|
+
* switch is automatic via `.dark`. Static (no hover/active/focus) — a
|
|
9
|
+
* property-grid row is read-only display.
|
|
10
|
+
*
|
|
11
|
+
* `variant` distinguishes the two sides:
|
|
12
|
+
* - `title` — muted text, left-aligned.
|
|
13
|
+
* - `content` — foreground text, right-aligned.
|
|
14
|
+
*/
|
|
15
|
+
declare const propertyGridCellVariants: (props?: ({
|
|
16
|
+
variant?: "title" | "content" | null | undefined;
|
|
17
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
18
|
+
type PropertyGridCellVariantsProps = VariantProps<typeof propertyGridCellVariants>;
|
|
19
|
+
/**
|
|
20
|
+
* Property-grid ITEM (row) frame — a two-column grid (title | content). Owns the
|
|
21
|
+
* bottom divider; `last` (the last row in a grid) omits it. Stacked items align
|
|
22
|
+
* columns automatically (each column is 1fr).
|
|
23
|
+
*/
|
|
24
|
+
declare const propertyGridItemVariants: (props?: ({
|
|
25
|
+
last?: boolean | null | undefined;
|
|
26
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
27
|
+
type PropertyGridItemVariantsProps = VariantProps<typeof propertyGridItemVariants>;
|
|
28
|
+
|
|
29
|
+
interface PropertyGridItemProps extends React.ComponentProps<"div">, PropertyGridItemVariantsProps {
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A property-grid row: a two-column grid holding one <PropertyGridTitle> (left)
|
|
33
|
+
* and one <PropertyGridContent> (right) as children. Owns the bottom divider;
|
|
34
|
+
* `last` (the last row in a grid) omits it. Stacked items align columns
|
|
35
|
+
* automatically (each is `grid-cols-2` at 1fr/1fr).
|
|
36
|
+
*/
|
|
37
|
+
declare function PropertyGridItem({ className, last, children, ref, ...props }: PropertyGridItemProps): React.JSX.Element;
|
|
38
|
+
|
|
39
|
+
interface PropertyGridCellProps extends React.ComponentProps<"div"> {
|
|
40
|
+
/** Which side of the row — sets tone (muted/foreground) + alignment. */
|
|
41
|
+
variant: "title" | "content";
|
|
42
|
+
/** Leading slot (e.g. a muted icon). Hidden when omitted. */
|
|
43
|
+
leading?: React.ReactNode;
|
|
44
|
+
/** Trailing slot (e.g. a copy icon). Hidden when omitted. */
|
|
45
|
+
trailing?: React.ReactNode;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
type PropertyGridTitleProps = Omit<PropertyGridCellProps, "variant">;
|
|
49
|
+
/** The title (left) cell of a property-grid row — muted, left-aligned. */
|
|
50
|
+
declare function PropertyGridTitle(props: PropertyGridTitleProps): React.JSX.Element;
|
|
51
|
+
|
|
52
|
+
type PropertyGridContentProps = Omit<PropertyGridCellProps, "variant">;
|
|
53
|
+
/** The content (right) cell of a property-grid row — foreground, right-aligned. */
|
|
54
|
+
declare function PropertyGridContent(props: PropertyGridContentProps): React.JSX.Element;
|
|
55
|
+
|
|
56
|
+
export { type PropertyGridCellVariantsProps, PropertyGridContent, type PropertyGridContentProps, PropertyGridItem, type PropertyGridItemProps, type PropertyGridItemVariantsProps, PropertyGridTitle, type PropertyGridTitleProps, propertyGridCellVariants, propertyGridItemVariants };
|
package/dist/radio.cjs
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('@phosphor-icons/react');
|
|
4
|
+
var clsx = require('clsx');
|
|
5
|
+
var tailwindMerge = require('tailwind-merge');
|
|
6
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
7
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
+
|
|
9
|
+
// src/radio/Radio.tsx
|
|
10
|
+
function cn(...inputs) {
|
|
11
|
+
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
12
|
+
}
|
|
13
|
+
var radioVariants = classVarianceAuthority.cva([
|
|
14
|
+
// Circle — 20×20 (`size-5`), fully round (Figma `radius/full`), 1px border.
|
|
15
|
+
// `peer` lets the sibling indicator react to :checked / :disabled.
|
|
16
|
+
"peer size-5 shrink-0 appearance-none rounded-full border",
|
|
17
|
+
"cursor-pointer transition-colors",
|
|
18
|
+
// Default
|
|
19
|
+
"bg-background border-border",
|
|
20
|
+
// Hover (unselected) — focus keeps the DEFAULT border; only the ring signals
|
|
21
|
+
// focus (so focus doesn't visually read as hover).
|
|
22
|
+
"hover:border-border-accent",
|
|
23
|
+
// Focus ring — suppress the native ring, draw the shared `--focus` ring the
|
|
24
|
+
// same way Checkbox and ghost Button do: 2px stroke, 2px offset
|
|
25
|
+
// (`outline-solid` restores what `outline-none` zeroed).
|
|
26
|
+
"outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-solid focus-visible:outline-focus",
|
|
27
|
+
// Selected
|
|
28
|
+
"checked:bg-brand-primary-background checked:border-brand-primary-border",
|
|
29
|
+
"checked:hover:bg-brand-primary-accent checked:hover:border-brand-primary-border",
|
|
30
|
+
"checked:focus-visible:bg-brand-primary-accent checked:focus-visible:border-brand-primary-border",
|
|
31
|
+
// Disabled — shared neutral-muted look whether selected or not (per Figma)
|
|
32
|
+
"disabled:pointer-events-none disabled:cursor-not-allowed disabled:border-border-muted",
|
|
33
|
+
"checked:disabled:bg-background checked:disabled:border-border-muted"
|
|
34
|
+
]);
|
|
35
|
+
function Radio({
|
|
36
|
+
className,
|
|
37
|
+
wrapperClassName,
|
|
38
|
+
onChange,
|
|
39
|
+
onCheckedChange,
|
|
40
|
+
...props
|
|
41
|
+
}) {
|
|
42
|
+
const handleChange = (event) => {
|
|
43
|
+
onChange?.(event);
|
|
44
|
+
onCheckedChange?.(event.currentTarget.checked);
|
|
45
|
+
};
|
|
46
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("relative inline-flex shrink-0", wrapperClassName), children: [
|
|
47
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
48
|
+
"input",
|
|
49
|
+
{
|
|
50
|
+
type: "radio",
|
|
51
|
+
"data-slot": "radio",
|
|
52
|
+
className: cn(radioVariants(), className),
|
|
53
|
+
...props,
|
|
54
|
+
onChange: handleChange
|
|
55
|
+
}
|
|
56
|
+
),
|
|
57
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
58
|
+
react.CircleIcon,
|
|
59
|
+
{
|
|
60
|
+
"aria-hidden": "true",
|
|
61
|
+
weight: "fill",
|
|
62
|
+
"data-slot": "radio-indicator",
|
|
63
|
+
className: cn(
|
|
64
|
+
"pointer-events-none invisible absolute inset-0 m-auto size-3",
|
|
65
|
+
"text-brand-primary-foreground",
|
|
66
|
+
"peer-checked:visible peer-disabled:text-foreground-muted"
|
|
67
|
+
)
|
|
68
|
+
}
|
|
69
|
+
)
|
|
70
|
+
] });
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
exports.Radio = Radio;
|
|
74
|
+
exports.radioVariants = radioVariants;
|
package/dist/radio.d.cts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export { R as Radio, a as RadioProps } from './Radio-BYWz1n7p.cjs';
|
|
2
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
import 'react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Radio styling — mirrors the Figma `radio-control` component set
|
|
8
|
+
* (node 5117:5677: `state` × `selected`, one 20×20 size) and binds ONLY to the
|
|
9
|
+
* semantic token layer (never primitives). Theme switching is automatic via
|
|
10
|
+
* the `.dark` class, so no `dark:` variants are needed.
|
|
11
|
+
*
|
|
12
|
+
* As with Checkbox (ADR-0010), every Figma axis here is an *interaction*
|
|
13
|
+
* state, so there is no prop-driven variant table: `selected` maps to the
|
|
14
|
+
* native `:checked` pseudo-class and `state` maps to `:hover` /
|
|
15
|
+
* `:focus-visible` / `:disabled`.
|
|
16
|
+
*
|
|
17
|
+
* State → token map (from the Figma variants):
|
|
18
|
+
* - default: `bg-background` + `border-border`
|
|
19
|
+
* - hover (unselected): border strengthens to `border-accent`
|
|
20
|
+
* - focused: border stays at the default; the ring alone marks focus
|
|
21
|
+
* - selected: `bg-brand-primary-background` + `border-brand-primary-border`
|
|
22
|
+
* - selected hover/focused: bg strengthens to `brand-primary-accent`
|
|
23
|
+
* - disabled (either): shared neutral look — `bg-background` + `border-border-muted`
|
|
24
|
+
* - focused additionally draws the shared 2px `--focus` ring, offset 2px from
|
|
25
|
+
* the circle — the ADR-0010 system standard (the Figma node draws its ring
|
|
26
|
+
* flush at inset −2px; component nodes do not override the system ring).
|
|
27
|
+
* The CSS outline follows `rounded-full`, so the ring is circular.
|
|
28
|
+
*
|
|
29
|
+
* Checked × hover/focus/disabled combinations are written as compound
|
|
30
|
+
* utilities (`checked:hover:`, `checked:disabled:`) so precedence is decided
|
|
31
|
+
* by selector specificity, not by Tailwind's stylesheet ordering.
|
|
32
|
+
*
|
|
33
|
+
* The ● indicator is a sibling of the input (an `<input>` can't have
|
|
34
|
+
* children), revealed via `peer-checked:` in <Radio>.
|
|
35
|
+
*/
|
|
36
|
+
declare const radioVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
|
|
37
|
+
type RadioVariantsProps = VariantProps<typeof radioVariants>;
|
|
38
|
+
|
|
39
|
+
export { type RadioVariantsProps, radioVariants };
|
package/dist/radio.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export { R as Radio, a as RadioProps } from './Radio-BYWz1n7p.js';
|
|
2
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
3
|
+
import { VariantProps } from 'class-variance-authority';
|
|
4
|
+
import 'react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Radio styling — mirrors the Figma `radio-control` component set
|
|
8
|
+
* (node 5117:5677: `state` × `selected`, one 20×20 size) and binds ONLY to the
|
|
9
|
+
* semantic token layer (never primitives). Theme switching is automatic via
|
|
10
|
+
* the `.dark` class, so no `dark:` variants are needed.
|
|
11
|
+
*
|
|
12
|
+
* As with Checkbox (ADR-0010), every Figma axis here is an *interaction*
|
|
13
|
+
* state, so there is no prop-driven variant table: `selected` maps to the
|
|
14
|
+
* native `:checked` pseudo-class and `state` maps to `:hover` /
|
|
15
|
+
* `:focus-visible` / `:disabled`.
|
|
16
|
+
*
|
|
17
|
+
* State → token map (from the Figma variants):
|
|
18
|
+
* - default: `bg-background` + `border-border`
|
|
19
|
+
* - hover (unselected): border strengthens to `border-accent`
|
|
20
|
+
* - focused: border stays at the default; the ring alone marks focus
|
|
21
|
+
* - selected: `bg-brand-primary-background` + `border-brand-primary-border`
|
|
22
|
+
* - selected hover/focused: bg strengthens to `brand-primary-accent`
|
|
23
|
+
* - disabled (either): shared neutral look — `bg-background` + `border-border-muted`
|
|
24
|
+
* - focused additionally draws the shared 2px `--focus` ring, offset 2px from
|
|
25
|
+
* the circle — the ADR-0010 system standard (the Figma node draws its ring
|
|
26
|
+
* flush at inset −2px; component nodes do not override the system ring).
|
|
27
|
+
* The CSS outline follows `rounded-full`, so the ring is circular.
|
|
28
|
+
*
|
|
29
|
+
* Checked × hover/focus/disabled combinations are written as compound
|
|
30
|
+
* utilities (`checked:hover:`, `checked:disabled:`) so precedence is decided
|
|
31
|
+
* by selector specificity, not by Tailwind's stylesheet ordering.
|
|
32
|
+
*
|
|
33
|
+
* The ● indicator is a sibling of the input (an `<input>` can't have
|
|
34
|
+
* children), revealed via `peer-checked:` in <Radio>.
|
|
35
|
+
*/
|
|
36
|
+
declare const radioVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
|
|
37
|
+
type RadioVariantsProps = VariantProps<typeof radioVariants>;
|
|
38
|
+
|
|
39
|
+
export { type RadioVariantsProps, radioVariants };
|
package/dist/radio.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
4
|
+
|
|
5
|
+
// src/lib/scrollbar.ts
|
|
6
|
+
var scrollbarVariants = classVarianceAuthority.cva(
|
|
7
|
+
[
|
|
8
|
+
// Firefox (approximate): thin themed scrollbar over a transparent track.
|
|
9
|
+
"[scrollbar-width:thin]",
|
|
10
|
+
"[scrollbar-color:var(--color-card-foreground-muted)_transparent]",
|
|
11
|
+
// WebKit gutter — 12px, both axes so the utility is axis-agnostic.
|
|
12
|
+
"[&::-webkit-scrollbar]:w-3 [&::-webkit-scrollbar]:h-3",
|
|
13
|
+
// WebKit thumb — 4px pill: a 4px transparent border + content-box clip
|
|
14
|
+
// leaves a 4px-wide fill centred in the 12px gutter.
|
|
15
|
+
"[&::-webkit-scrollbar-thumb]:rounded-full",
|
|
16
|
+
"[&::-webkit-scrollbar-thumb]:border-4 [&::-webkit-scrollbar-thumb]:border-solid [&::-webkit-scrollbar-thumb]:border-transparent",
|
|
17
|
+
"[&::-webkit-scrollbar-thumb]:bg-clip-content",
|
|
18
|
+
"[&::-webkit-scrollbar-thumb]:bg-card-foreground-muted",
|
|
19
|
+
// WebKit track — transparent by default (stroke is the `stroke` variant).
|
|
20
|
+
"[&::-webkit-scrollbar-track]:bg-transparent"
|
|
21
|
+
],
|
|
22
|
+
{
|
|
23
|
+
variants: {
|
|
24
|
+
stroke: {
|
|
25
|
+
// 1px leading-edge track stroke (Figma `stroke`, on by default).
|
|
26
|
+
true: "[&::-webkit-scrollbar-track]:border-l [&::-webkit-scrollbar-track]:border-card-border",
|
|
27
|
+
false: ""
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
defaultVariants: { stroke: true }
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
exports.scrollbarVariants = scrollbarVariants;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import { VariantProps } from 'class-variance-authority';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Custom scrollbar styling — the Figma `scroll-bar` component (node 538:18165):
|
|
6
|
+
* a **4px pill thumb** (`card-foreground-muted`, `rounded-full`) in a **12px
|
|
7
|
+
* gutter**, with an optional **1px leading track stroke** (`card-border`).
|
|
8
|
+
*
|
|
9
|
+
* Apply to the SCROLLABLE element itself (the one carrying `overflow-*-auto`),
|
|
10
|
+
* not a rendered child — the browser owns the scrollbar. Compose with `cn`:
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* className={cn("overflow-y-auto", scrollbarVariants())}
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Arbitrary variants are used deliberately: the WebKit scrollbar pseudo-elements
|
|
17
|
+
* (`::-webkit-scrollbar*`) and the Firefox `scrollbar-width`/`scrollbar-color`
|
|
18
|
+
* properties have **no** Tailwind token utilities, so there is no non-arbitrary
|
|
19
|
+
* way to reach them. Colours still bind to semantic tokens
|
|
20
|
+
* (`card-foreground-muted` / `card-border`), never raw values.
|
|
21
|
+
*
|
|
22
|
+
* Fidelity by engine:
|
|
23
|
+
* - **WebKit (Chrome/Safari):** near-exact — the 4px thumb is a 4px transparent
|
|
24
|
+
* border + `background-clip: content-box` inside the 12px gutter (12 − 4 − 4).
|
|
25
|
+
* - **Firefox:** approximate — only `scrollbar-width: thin` + a thumb colour are
|
|
26
|
+
* supported; there is no exact 4px width and no track stroke. Degrades to a
|
|
27
|
+
* thin themed scrollbar. (A JS overlay would be required for pixel parity;
|
|
28
|
+
* out of scope — see the scrollbar design decision.)
|
|
29
|
+
*/
|
|
30
|
+
declare const scrollbarVariants: (props?: ({
|
|
31
|
+
stroke?: boolean | null | undefined;
|
|
32
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
33
|
+
type ScrollbarVariantsProps = VariantProps<typeof scrollbarVariants>;
|
|
34
|
+
|
|
35
|
+
export { type ScrollbarVariantsProps, scrollbarVariants };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
2
|
+
import { VariantProps } from 'class-variance-authority';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Custom scrollbar styling — the Figma `scroll-bar` component (node 538:18165):
|
|
6
|
+
* a **4px pill thumb** (`card-foreground-muted`, `rounded-full`) in a **12px
|
|
7
|
+
* gutter**, with an optional **1px leading track stroke** (`card-border`).
|
|
8
|
+
*
|
|
9
|
+
* Apply to the SCROLLABLE element itself (the one carrying `overflow-*-auto`),
|
|
10
|
+
* not a rendered child — the browser owns the scrollbar. Compose with `cn`:
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* className={cn("overflow-y-auto", scrollbarVariants())}
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Arbitrary variants are used deliberately: the WebKit scrollbar pseudo-elements
|
|
17
|
+
* (`::-webkit-scrollbar*`) and the Firefox `scrollbar-width`/`scrollbar-color`
|
|
18
|
+
* properties have **no** Tailwind token utilities, so there is no non-arbitrary
|
|
19
|
+
* way to reach them. Colours still bind to semantic tokens
|
|
20
|
+
* (`card-foreground-muted` / `card-border`), never raw values.
|
|
21
|
+
*
|
|
22
|
+
* Fidelity by engine:
|
|
23
|
+
* - **WebKit (Chrome/Safari):** near-exact — the 4px thumb is a 4px transparent
|
|
24
|
+
* border + `background-clip: content-box` inside the 12px gutter (12 − 4 − 4).
|
|
25
|
+
* - **Firefox:** approximate — only `scrollbar-width: thin` + a thumb colour are
|
|
26
|
+
* supported; there is no exact 4px width and no track stroke. Degrades to a
|
|
27
|
+
* thin themed scrollbar. (A JS overlay would be required for pixel parity;
|
|
28
|
+
* out of scope — see the scrollbar design decision.)
|
|
29
|
+
*/
|
|
30
|
+
declare const scrollbarVariants: (props?: ({
|
|
31
|
+
stroke?: boolean | null | undefined;
|
|
32
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
33
|
+
type ScrollbarVariantsProps = VariantProps<typeof scrollbarVariants>;
|
|
34
|
+
|
|
35
|
+
export { type ScrollbarVariantsProps, scrollbarVariants };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { scrollbarVariants } from './chunk-FAOVKDVM.js';
|