@glasshome/ui 1.1.2 → 1.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/SPEC.md +149 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +9 -9
- package/dist/lib/alert-tones.d.ts +3 -3
- package/dist/lib/input-classes.d.ts +3 -2
- package/dist/lib/overlay-classes.d.ts +5 -2
- package/dist/solid/alert-dialog.d.ts +7 -1
- package/dist/solid/index.d.ts +2 -1
- package/dist/solid/index.js +4197 -3718
- package/dist/solid/list-reorder.d.ts +38 -0
- package/dist/solid/schema-form.d.ts +36 -0
- package/dist/solid/section-card.d.ts +1 -0
- package/dist/solid/slider.d.ts +11 -0
- package/dist/tokens/index.js +3 -3
- package/dist/{utils-BLMzDBJk.js → utils-B020EZLJ.js} +144 -144
- package/package.json +6 -4
- package/scripts/check-structural-classes.ts +43 -0
- package/src/lib/alert-tones.ts +5 -4
- package/src/lib/button-variants.ts +3 -0
- package/src/lib/input-classes.ts +18 -3
- package/src/lib/overlay-classes.ts +20 -4
- package/src/styles/globals.css +65 -3
- package/src/styles/theme.css +28 -7
package/SPEC.md
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# @glasshome/ui — design system contract
|
|
2
|
+
|
|
3
|
+
Shared by **hub** (Astro + Solid islands) and **dash** (Solid). Read this before
|
|
4
|
+
building or styling any UI in either app. `bun run dev:gallery` (in this
|
|
5
|
+
package) serves a live gallery of every primitive, hot-reloading against src;
|
|
6
|
+
treat it as the executable form of this document.
|
|
7
|
+
|
|
8
|
+
## The one material
|
|
9
|
+
|
|
10
|
+
Glass is a single CSS formula: the `.glass` class in `src/styles/globals.css`,
|
|
11
|
+
driven by `--glass-*` custom-property knobs. There are no other glass
|
|
12
|
+
implementations. Never hand-roll `backdrop-blur` + translucent `bg-*` panels.
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
.glass neutral pane: card fill, border edge, lit rim, no tint
|
|
16
|
+
.glass-tint + tinted look driven by --glass-tone (badge/alert/button/chip)
|
|
17
|
+
.glass-sink rim flipped concave: the surface reads dug-out (fields)
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Knobs (typed `@property`, `inherits: false` — a knob set on a parent never
|
|
21
|
+
leaks into a nested glass element; set knobs on the element itself):
|
|
22
|
+
|
|
23
|
+
| Knob | Type | Default | Meaning |
|
|
24
|
+
|---|---|---|---|
|
|
25
|
+
| `--glass-tone` | color | `transparent` | tint color; every tone term is inert when transparent |
|
|
26
|
+
| `--glass-base` | color | `var(--card)` | ground fill; carry alpha for translucency (`color-mix(in srgb, var(--card) 60%, transparent)`) |
|
|
27
|
+
| `--glass-edge` | color | border 60% | border color (`.glass-tint` derives it from the tone) |
|
|
28
|
+
| `--glass-wash` | % | 28% | tone gradient strength (second stop = wash-2) |
|
|
29
|
+
| `--glass-tone-2` | color | `var(--glass-tone)` | second tint stop; ordinary property re-declared per `.glass` (no leak), not `@property` |
|
|
30
|
+
| `--glass-wash-2` | % | wash/3 | second stop strength; raise to `var(--glass-wash)` for an equal-strength two-tone wash |
|
|
31
|
+
| `--glass-wash-angle` | angle | 135deg | tone wash direction; 90deg for horizontal fills (sliders) |
|
|
32
|
+
|
|
33
|
+
Two-tone surfaces add `.glass-edge-gradient`: border-color cannot gradient, so
|
|
34
|
+
the class swaps the border for a masked 1px ring running tone-1→tone-2 at the
|
|
35
|
+
`.glass-tint` edge alpha (element must be positioned).
|
|
36
|
+
| `--glass-light` | number | 0.05 | top-left white sheen (`.glass-tint` raises to 0.16) |
|
|
37
|
+
| `--glass-sheen` | `<x> <y>` | 120% 120% | sheen ellipse size; pin lengths on edge-anchored panels, where a percentage stretches into a blob over a flat field (side sheets use `600px 300px`) |
|
|
38
|
+
| `--glass-shade` | number | 0 | bottom-right dark shade (light-theme depth) |
|
|
39
|
+
| `--glass-glow` | % | 16% | inner tone glow |
|
|
40
|
+
| `--glass-drop` | % | 20% | tone drop shadow |
|
|
41
|
+
| `--glass-lift` | number | 0 | elevation shadow (cards 0.45, overlays 0.6) |
|
|
42
|
+
| `--glass-rim` | number | 1 | bevel strength 0..1 (cards 0.3, overlays 1) |
|
|
43
|
+
| `--glass-text` | % | 65% | tinted text mix, used by `.glass-tint` only |
|
|
44
|
+
|
|
45
|
+
`.glass` also publishes `--surface-tone`, an ordinary **inheriting** property
|
|
46
|
+
mirroring that surface's `--glass-tone`. Descendants that need the accent (an
|
|
47
|
+
icon, a label) read `--surface-tone`; reading `--glass-tone` from a child
|
|
48
|
+
silently yields `transparent` and paints nothing, because the knobs do not
|
|
49
|
+
inherit by design. A nested `.glass` re-declares `--surface-tone` from its own
|
|
50
|
+
knob, so the no-leak guarantee still holds.
|
|
51
|
+
|
|
52
|
+
The `.glass` formula is deliberately **unlayered**, so it owns
|
|
53
|
+
border/background/box-shadow on the element: `bg-*`, `border-*`, and `shadow-*`
|
|
54
|
+
utilities on a glass element are no-ops. Tune via knobs instead.
|
|
55
|
+
|
|
56
|
+
`backdrop-blur` is not part of the formula. Cards add `CARD_BLUR` and overlays
|
|
57
|
+
`OVERLAY_BLUR` (both read the `--glass-blur` px knob); toasts and other
|
|
58
|
+
transform-animated surfaces must not blur (Chromium renders black
|
|
59
|
+
mid-animation), and a surface that skips the blur takes an opaque fill
|
|
60
|
+
(`CARD_SURFACE_OPAQUE`, `OVERLAY_SURFACE_OPAQUE`) — a translucent fill with
|
|
61
|
+
nothing blurred behind it is just see-through.
|
|
62
|
+
|
|
63
|
+
Mixing rules: tone washes mix in **srgb** (oklch drags a tone mixed toward
|
|
64
|
+
transparent down to mud); tinted text mixes in **oklab** (no hue channel, so a
|
|
65
|
+
tone desaturates without swinging yellow — `glassToneText()`).
|
|
66
|
+
|
|
67
|
+
## Surfaces (the only sanctioned recipes)
|
|
68
|
+
|
|
69
|
+
| Recipe | File | Wear it for |
|
|
70
|
+
|---|---|---|
|
|
71
|
+
| `CARD_SURFACE` / `CARD_SURFACE_OPAQUE` | lib/card-classes.ts | panels; via `<Card>` |
|
|
72
|
+
| `CARD_SURFACE_BASE` + `CARD_BLUR` | lib/card-classes.ts | perf-blur gating (dash SectionCard) |
|
|
73
|
+
| `OVERLAY_SURFACE` | lib/overlay-classes.ts | anything floating: menus, dialogs, sheets, tooltips |
|
|
74
|
+
| `OVERLAY_SURFACE_BASE` + `OVERLAY_BLUR` | lib/overlay-classes.ts | perf-blur gating, same split as the card recipe |
|
|
75
|
+
| `OVERLAY_SURFACE_OPAQUE` | lib/overlay-classes.ts | drag-animated overlays that cannot blur (BottomSheet) |
|
|
76
|
+
| `SCRIM_CLASS` | lib/overlay-classes.ts | modal backdrop (BottomSheet keeps its unblurred scrim for mobile perf) |
|
|
77
|
+
| `INPUT_SURFACE` / `INPUT_CLASS` | lib/input-classes.ts | text fields + pickers (concave) |
|
|
78
|
+
| `FIELD_CHROME` | lib/input-classes.ts | toggle chrome and rails (checkbox box, radio ring, switch track, slider rail, chart wells) |
|
|
79
|
+
| `TRACK_SURFACE` | lib/card-classes.ts | segmented tracks (tabs, toggle groups) |
|
|
80
|
+
|
|
81
|
+
**Fields are not symmetric across the themes.** The recess is `.glass-sink`'s
|
|
82
|
+
rim, which is theme independent; the fill under it is not. On the dark ground a
|
|
83
|
+
field sits a touch ABOVE its card (card 0.17, `--input` 0.19) and reads as
|
|
84
|
+
dug-out. Applying the same idea downward in the light theme puts a 0.9 fill
|
|
85
|
+
under a 0.995 card — a nine-point drop, which is the cue this library (and every
|
|
86
|
+
browser) spends on `disabled`, so a form of nine fields reads switched off. So
|
|
87
|
+
`INPUT_SURFACE` takes its knobs from a theme-owned pair, `--field` /
|
|
88
|
+
`--field-edge`: light fields sit AT the card with a solid `--border` edge (the
|
|
89
|
+
boundary still measures 1.33:1 against the card, exactly what the fill drop used
|
|
90
|
+
to carry), dark fields keep `--input` and the formula's soft 60% edge. Controls
|
|
91
|
+
that must read as an *empty well* rather than a fillable field — the toggle
|
|
92
|
+
chrome and rails — stay on `--input` in both themes via `FIELD_CHROME`.
|
|
93
|
+
|
|
94
|
+
Semantic roles (`--success`, `--warning`, `--destructive`, `--ring`) are one
|
|
95
|
+
value each, worn as fill and as text, so each theme tunes its own: the light
|
|
96
|
+
values are darker than their dark-theme counterparts, not the same color. Every
|
|
97
|
+
role clears 4.5:1 against `--background`/`--card`/`--popover`/`--muted` (3:1 for
|
|
98
|
+
`--ring`, a focus indicator), enforced by `tests/tokens/contrast.test.ts`.
|
|
99
|
+
|
|
100
|
+
## One door per concept
|
|
101
|
+
|
|
102
|
+
| Need | Use | Never |
|
|
103
|
+
|---|---|---|
|
|
104
|
+
| a panel | `<Card>` (Solid or `astro/Card.astro`) | `border bg-card/NN backdrop-blur` |
|
|
105
|
+
| a floating panel | `<Overlay>` / the overlay-wearing primitive | raw `bg-popover shadow` |
|
|
106
|
+
| a modal | `<ResponsiveDialog>` (desktop dialog + mobile bottom sheet), `<Dialog>` for desktop-only | `<Sheet side="bottom">` as a modal |
|
|
107
|
+
| a status chip | `<Badge tone="var(--success)">` | `rounded-full bg-green-500/10` |
|
|
108
|
+
| a callout | `<Alert tone="warning">` | `border-amber-500/30 bg-amber-500/10` |
|
|
109
|
+
| tinted text alone | `glassToneText(tone)` | ad-hoc color-mix |
|
|
110
|
+
| a metallic tier chip | `<TierBadge>` | gradients by hand |
|
|
111
|
+
|
|
112
|
+
In server-run `.astro` frontmatter you cannot import `@glasshome/ui/solid`
|
|
113
|
+
(Solid `template()` throws at module load). Use the `@glasshome/ui/astro`
|
|
114
|
+
components, or the pure recipes/tokens from the root `@glasshome/ui`.
|
|
115
|
+
|
|
116
|
+
## Prop language
|
|
117
|
+
|
|
118
|
+
- `tone` — a CSS **color** string on glass primitives (`Badge`, indicators).
|
|
119
|
+
`Alert.tone` is the one semantic enum (`info|warning|success|destructive`);
|
|
120
|
+
it keys the `ALERT_TONES` table.
|
|
121
|
+
- `as` — polymorphic element/component. Never `component`.
|
|
122
|
+
- `variant` — cva **style** axis only. Layout choices get their own prop
|
|
123
|
+
(`WidgetCard.layout = "row" | "tile"`).
|
|
124
|
+
- Every rendered part carries `data-slot="<component>-<part>"`
|
|
125
|
+
(bottom-sheet's `data-sheet-*` attributes are functional drag hooks, not
|
|
126
|
+
slots).
|
|
127
|
+
- All color comes from theme vars (`var(--primary)` etc.). No hex/oklch
|
|
128
|
+
literals in components except neutral black/white shadow alphas.
|
|
129
|
+
|
|
130
|
+
## Extending the system
|
|
131
|
+
|
|
132
|
+
Checklist for a new component:
|
|
133
|
+
|
|
134
|
+
1. Wear an existing surface recipe (or compose `.glass` + knobs). If a new
|
|
135
|
+
surface is genuinely needed, add it as a named recipe in `lib/`, once.
|
|
136
|
+
2. Props follow the language above; class merging via `cn(...)`, pass-through
|
|
137
|
+
`class` last.
|
|
138
|
+
3. `data-slot` on every rendered part.
|
|
139
|
+
4. Astro twin only if server-rendered pages need it; share every class string
|
|
140
|
+
through a pure `lib/` file, never duplicate it.
|
|
141
|
+
5. Export via `src/solid/index.ts` (components) and root `src/index.ts` (pure
|
|
142
|
+
recipes needed by SSR).
|
|
143
|
+
6. Register a specimen in the gallery (`dev/groups/*` in this package).
|
|
144
|
+
7. Comments: only constraints the code cannot express (rendering bugs worked
|
|
145
|
+
around, cascade requirements, a11y invariants). One line each.
|
|
146
|
+
|
|
147
|
+
Guards: `bun run check:tokens` (theme.css ↔ tokens/presets.ts sync) here;
|
|
148
|
+
`bun run ui:check` in the apps (deny-by-default drift scan; escape with a
|
|
149
|
+
`ui-drift-ok <reason>` line comment only for genuinely bespoke art).
|
package/dist/index.d.ts
CHANGED
|
@@ -3,9 +3,9 @@ export { BUTTON_DEFAULT_CLASS, BUTTON_OUTLINE_CLASS, buttonVariants, ICON_BUTTON
|
|
|
3
3
|
export { CARD_BLUR, CARD_SURFACE, CARD_SURFACE_BASE, CARD_SURFACE_OPAQUE, TRACK_SURFACE, } from "./lib/card-classes.js";
|
|
4
4
|
export { CAROUSEL_DOTS, CAROUSEL_VIEWPORT, type CarouselTransition, carouselDot, carouselItem, carouselTrack, } from "./lib/carousel-classes.js";
|
|
5
5
|
export { glassToneText, toneTextMix } from "./lib/glass-tone.js";
|
|
6
|
-
export { INPUT_CLASS, INPUT_SURFACE } from "./lib/input-classes.js";
|
|
6
|
+
export { FIELD_CHROME, INPUT_CLASS, INPUT_SURFACE } from "./lib/input-classes.js";
|
|
7
7
|
export { LOGO_DEFAULT_SIZE, LOGO_DEFAULT_SRC, LOGO_DEFAULT_SUB, LOGO_MARK_CLASS, LOGO_MARK_PX, LOGO_NAME_CLASS, LOGO_ROOT_CLASS, LOGO_SIZES, LOGO_STACK_CLASS, LOGO_SUB_CLASS, type LogoSize, } from "./lib/logo-lockup.js";
|
|
8
|
-
export { OVERLAY_SURFACE, SCRIM_CLASS } from "./lib/overlay-classes.js";
|
|
8
|
+
export { OVERLAY_BLUR, OVERLAY_SURFACE, OVERLAY_SURFACE_BASE, OVERLAY_SURFACE_OPAQUE, SCRIM_CLASS, } from "./lib/overlay-classes.js";
|
|
9
9
|
export { SECTION_INNER_RADIUS, SECTION_OUTER_RADIUS, SECTION_PADDING, SECTION_ROW_CLASS, } from "./lib/section-tokens.js";
|
|
10
10
|
export { createIsMobile } from "./lib/use-is-mobile.js";
|
|
11
11
|
export { cn } from "./lib/utils.js";
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { $ as e,
|
|
2
|
-
import { createSignal as
|
|
1
|
+
import { $ as e, A as t, B as n, C as r, D as i, E as a, G as o, K as s, M as c, O as l, Q as u, S as d, T as f, U as p, V as m, W as h, X as g, Y as _, Z as v, _ as y, a as b, at as x, b as S, c as C, d as w, et as T, f as E, g as D, h as O, i as ee, it as k, k as A, l as j, m as M, n as N, nt as P, o as F, ot as I, p as L, q as R, r as z, rt as B, s as V, t as H, tt as U, u as W, v as G, w as K, x as q, y as J, z as Y } from "./utils-B020EZLJ.js";
|
|
2
|
+
import { createSignal as X, onCleanup as Z, onMount as Q } from "solid-js";
|
|
3
3
|
//#region src/lib/use-is-mobile.ts
|
|
4
|
-
var
|
|
5
|
-
function
|
|
6
|
-
let [e, t] =
|
|
7
|
-
return
|
|
8
|
-
let e = window.matchMedia(`(max-width: ${
|
|
9
|
-
e.addEventListener("change", n), t(window.innerWidth <
|
|
4
|
+
var $ = 768;
|
|
5
|
+
function te() {
|
|
6
|
+
let [e, t] = X(void 0);
|
|
7
|
+
return Q(() => {
|
|
8
|
+
let e = window.matchMedia(`(max-width: ${$ - 1}px)`), n = () => t(window.innerWidth < $);
|
|
9
|
+
e.addEventListener("change", n), t(window.innerWidth < $), Z(() => e.removeEventListener("change", n));
|
|
10
10
|
}), e;
|
|
11
11
|
}
|
|
12
12
|
//#endregion
|
|
13
|
-
export {
|
|
13
|
+
export { _ as ALERT_CLASS, g as ALERT_CONTENT_CLASS, v as ALERT_DESCRIPTION_CLASS, u as ALERT_ICON_BG_CLASS, e as ALERT_ICON_CLASS, T as ALERT_ICON_PATHS, U as ALERT_TITLE_CLASS, P as ALERT_TONES, h as BUTTON_DEFAULT_CLASS, o as BUTTON_OUTLINE_CLASS, c as CARD_BLUR, Y as CARD_SURFACE, n as CARD_SURFACE_BASE, m as CARD_SURFACE_OPAQUE, a as CAROUSEL_DOTS, i as CAROUSEL_VIEWPORT, q as FIELD_CHROME, s as ICON_BUTTON_CLASS, d as INPUT_CLASS, r as INPUT_SURFACE, w as LOGO_DEFAULT_SIZE, E as LOGO_DEFAULT_SRC, L as LOGO_DEFAULT_SUB, M as LOGO_MARK_CLASS, O as LOGO_MARK_PX, D as LOGO_NAME_CLASS, y as LOGO_ROOT_CLASS, G as LOGO_SIZES, J as LOGO_STACK_CLASS, S as LOGO_SUB_CLASS, F as OVERLAY_BLUR, V as OVERLAY_SURFACE, C as OVERLAY_SURFACE_BASE, j as OVERLAY_SURFACE_OPAQUE, W as SCRIM_CLASS, N as SECTION_INNER_RADIUS, z as SECTION_OUTER_RADIUS, ee as SECTION_PADDING, b as SECTION_ROW_CLASS, p as TRACK_SURFACE, B as alertBorder, k as alertFill, x as alertIconBgStyle, I as alertIconFill, R as buttonVariants, l as carouselDot, A as carouselItem, t as carouselTrack, H as cn, te as createIsMobile, K as glassToneText, f as toneTextMix };
|
|
@@ -10,9 +10,9 @@ export declare const alertBorder: (c: string) => string;
|
|
|
10
10
|
export declare const alertFill: (c: string) => string;
|
|
11
11
|
export declare const alertIconFill: (c: string) => string;
|
|
12
12
|
export declare const ALERT_CLASS = "relative overflow-hidden flex items-start gap-3 rounded-lg border p-3 backdrop-blur-sm";
|
|
13
|
-
export declare const ALERT_ICON_CLASS = "flex size-8 shrink-0 items-center justify-center rounded-md
|
|
14
|
-
export declare const ALERT_ICON_BG_CLASS = "pointer-events-none absolute -right-3 -bottom-4
|
|
13
|
+
export declare const ALERT_ICON_CLASS = "gh-alert-icon flex size-8 shrink-0 items-center justify-center rounded-md";
|
|
14
|
+
export declare const ALERT_ICON_BG_CLASS = "gh-alert-icon-bg pointer-events-none absolute -right-3 -bottom-4";
|
|
15
15
|
export declare function alertIconBgStyle(color: string): Record<string, string>;
|
|
16
16
|
export declare const ALERT_CONTENT_CLASS = "relative z-10 min-w-0 flex-1";
|
|
17
17
|
export declare const ALERT_TITLE_CLASS = "font-semibold text-base leading-snug";
|
|
18
|
-
export declare const ALERT_DESCRIPTION_CLASS = "text-foreground/80 text-sm leading-snug
|
|
18
|
+
export declare const ALERT_DESCRIPTION_CLASS = "gh-alert-desc text-foreground/80 text-sm leading-snug";
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export declare const INPUT_SURFACE = "glass glass-sink [--glass-base:var(--
|
|
2
|
-
export declare const
|
|
1
|
+
export declare const INPUT_SURFACE = "glass glass-sink [--glass-base:var(--field)] [--glass-edge:var(--field-edge)] [--glass-light:0.04]";
|
|
2
|
+
export declare const FIELD_CHROME = "glass glass-sink [--glass-base:var(--input)] [--glass-light:0.04]";
|
|
3
|
+
export declare const INPUT_CLASS = "flex h-9 w-full min-w-0 rounded-md glass glass-sink [--glass-base:var(--field)] [--glass-edge:var(--field-edge)] [--glass-light:0.04] px-3 py-1 text-base outline-none transition-[color,box-shadow] selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:font-medium file:text-foreground file:text-sm placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40";
|
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
export declare const
|
|
1
|
+
export declare const OVERLAY_BLUR = "backdrop-blur-[var(--glass-blur,20px)] backdrop-saturate-[1.6]";
|
|
2
|
+
export declare const OVERLAY_SURFACE_BASE = "glass [--glass-rim:1] [--glass-lift:0.6] [--glass-light:0.05] [--glass-edge:color-mix(in_srgb,var(--border)_90%,transparent)] [--glass-base:color-mix(in_srgb,var(--popover)_75%,transparent)]";
|
|
3
|
+
export declare const OVERLAY_SURFACE = "glass [--glass-rim:1] [--glass-lift:0.6] [--glass-light:0.05] [--glass-edge:color-mix(in_srgb,var(--border)_90%,transparent)] [--glass-base:color-mix(in_srgb,var(--popover)_75%,transparent)] backdrop-blur-[var(--glass-blur,20px)] backdrop-saturate-[1.6]";
|
|
4
|
+
export declare const OVERLAY_SURFACE_OPAQUE = "glass [--glass-rim:1] [--glass-lift:0.6] [--glass-light:0.05] [--glass-edge:color-mix(in_srgb,var(--border)_90%,transparent)] [--glass-base:var(--popover)]";
|
|
5
|
+
export declare const SCRIM_CLASS = "bg-background/70 backdrop-blur-md";
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { AlertDialog as AlertDialogPrimitive } from "@kobalte/core/alert-dialog";
|
|
2
|
+
import type { VariantProps } from "cva";
|
|
2
3
|
import { type Component, type ComponentProps } from "solid-js";
|
|
4
|
+
import { buttonVariants } from "./button.js";
|
|
3
5
|
declare const AlertDialog: typeof import("@kobalte/core/alert-dialog").Root & {
|
|
4
6
|
CloseButton: typeof import("@kobalte/core/alert-dialog").CloseButton;
|
|
5
7
|
Content: typeof import("@kobalte/core/alert-dialog").Content;
|
|
@@ -15,6 +17,10 @@ declare const AlertDialogHeader: Component<ComponentProps<"div">>;
|
|
|
15
17
|
declare const AlertDialogFooter: Component<ComponentProps<"div">>;
|
|
16
18
|
declare const AlertDialogTitle: Component<ComponentProps<typeof AlertDialogPrimitive.Title>>;
|
|
17
19
|
declare const AlertDialogDescription: Component<ComponentProps<typeof AlertDialogPrimitive.Description>>;
|
|
18
|
-
|
|
20
|
+
/** Confirming action. Pass `variant` (e.g. "destructive"); layering a second
|
|
21
|
+
* buttonVariants() call through `class` cannot work, because the variants
|
|
22
|
+
* carry tone as arbitrary custom properties that tailwind-merge keeps side by
|
|
23
|
+
* side, leaving the later stylesheet rule to win. */
|
|
24
|
+
declare const AlertDialogAction: Component<ComponentProps<typeof AlertDialogPrimitive.CloseButton> & Partial<Pick<VariantProps<typeof buttonVariants>, "variant" | "size">>>;
|
|
19
25
|
declare const AlertDialogCancel: Component<ComponentProps<typeof AlertDialogPrimitive.CloseButton>>;
|
|
20
26
|
export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, };
|
package/dist/solid/index.d.ts
CHANGED
|
@@ -41,6 +41,7 @@ export { InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, } from "./inp
|
|
|
41
41
|
export { Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, } from "./item.js";
|
|
42
42
|
export { Kbd, KbdGroup } from "./kbd.js";
|
|
43
43
|
export { Label } from "./label.js";
|
|
44
|
+
export { createListReorder, dragTargetIndex, type ListReorder, type ListReorderOptions, } from "./list-reorder.js";
|
|
44
45
|
export { Logo } from "./logo.js";
|
|
45
46
|
export { NumberField } from "./number-field.js";
|
|
46
47
|
export { Overlay } from "./overlay.js";
|
|
@@ -51,7 +52,7 @@ export { Progress } from "./progress.js";
|
|
|
51
52
|
export { RadioGroup, RadioGroupItem } from "./radio-group.js";
|
|
52
53
|
export { ResizableHandle, ResizablePanel, ResizablePanelGroup, } from "./resizable.js";
|
|
53
54
|
export { ResponsiveDialog, ResponsiveDialogClose, ResponsiveDialogContent, ResponsiveDialogDescription, ResponsiveDialogFooter, ResponsiveDialogHeader, ResponsiveDialogTitle, ResponsiveDialogTrigger, } from "./responsive-dialog.js";
|
|
54
|
-
export { SchemaForm } from "./schema-form.js";
|
|
55
|
+
export { type ExtendedJSONSchema, SCHEMA_FORM_FORM_TYPES, SchemaForm, } from "./schema-form.js";
|
|
55
56
|
export { ScopeIndicator } from "./scope-indicator.js";
|
|
56
57
|
export { ScrollArea, ScrollBar } from "./scroll-area.js";
|
|
57
58
|
export { type GlassSurface, SectionCard, SectionIcon, SectionLabel, SectionMeta, SectionRow, SectionRowSkeleton, SectionRowSkeletons, SectionSubtitle, SectionTitle, } from "./section-card.js";
|