@sableui/react 0.3.0 → 0.3.2
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/AGENTS.md +5 -1
- package/CHANGELOG.md +52 -0
- package/README.md +5 -1
- package/bin/sable.mjs +6 -2
- package/dist/{_contract-o3tUc8Ig.d.ts → _contract-BlKMR4eX.d.ts} +6 -1
- package/dist/blocks/index.js +2 -2
- package/dist/{chunk-CKNM7KSB.js → chunk-CCUDFLU3.js} +23 -6
- package/dist/{chunk-6LCIBMMG.js → chunk-D2ETQBHV.js} +1 -1
- package/dist/{chunk-K6LII3OE.js → chunk-FBSL2LZQ.js} +27 -23
- package/dist/{chunk-X276MF2W.js → chunk-OQACYT2D.js} +2 -0
- package/dist/index.d.ts +7 -7
- package/dist/index.js +8 -8
- package/dist/ios/styles.css +8 -0
- package/dist/patterns/index.js +2 -2
- package/dist/presets/index.d.ts +1 -1
- package/dist/presets/index.js +11 -2
- package/dist/styles.css +9 -0
- package/dist/{theme-provider-BE-KqUG-.d.ts → theme-provider-CuYYxF0o.d.ts} +1 -1
- package/dist/themes/atelier/index.d.ts +1 -1
- package/dist/themes/base/index.d.ts +1 -1
- package/dist/themes/ember/index.d.ts +1 -1
- package/dist/themes/index.d.ts +2 -2
- package/dist/themes/meridian/index.d.ts +1 -1
- package/dist/themes/poppy/index.d.ts +1 -1
- package/dist/themes/prism/index.d.ts +1 -1
- package/dist/themes/verdant/index.d.ts +1 -1
- package/llms/components/button.md +15 -3
- package/llms/components/input.md +1 -1
- package/llms/components/scrub-field.md +1 -1
- package/llms/components/select.md +1 -1
- package/llms/reference/token-intent.md +5 -1
- package/llms/tasks/getting-started.md +4 -0
- package/llms-full.txt +27 -7
- package/package.json +1 -1
- package/registry.json +2446 -8
- package/scripts/agent-setup.mjs +34 -7
- package/scripts/grade.mjs +33 -7
package/AGENTS.md
CHANGED
|
@@ -61,7 +61,7 @@ The machine-readable version of this section is the `consume` block in `registry
|
|
|
61
61
|
|
|
62
62
|
`styles.css` carries **Base only** — the default theme, and the layout floor every other theme inherits (`--page-inset`, `--region-*`, `--rhythm-unit` on a bare `:root`). The bundled **alternates are opt-in**, because they are `[data-sable-theme]`-scoped and an app that never sets the attribute ships CSS that can never match: 5.5 KB gzip of permanently-dead weight, which is exactly how a real app's build audit found this. Using one? `@import "@sableui/react/theme/prism.css";`. Offering the whole set through a `<ThemeSelector>`? `@import "@sableui/react/themes.css";`. **Symptom of forgetting:** `data-sable-theme` is set, nothing matches, and the page silently renders as Base — no error, just the wrong theme.
|
|
63
63
|
4. **Fonts:** load Figtree (sans) + DM Mono (mono) — the theme declares the stacks, the host provides the files. Apply `antialiased` (`-webkit-font-smoothing: antialiased` / `-moz-osx-font-smoothing: grayscale`) **once on the app root**: Sable's type scale was drawn against smoothed text, and without it macOS renders every weight heavier than designed. The package deliberately doesn't set it — a library has no business styling the host's whole page — so it has to happen here.
|
|
64
|
-
5. **Providers (all optional):** components render with **Reicon** by default, so `<IconProvider set={…}>` is only needed to replace it with another icon package or extend it using `composeIconSets(appExtras, reiconIconSet)
|
|
64
|
+
5. **Providers (all optional):** components render with **Reicon** by default, so `<IconProvider set={…}>` is only needed to replace it with another icon package or extend it using `composeIconSets(appExtras, reiconIconSet)` (list the added names in `.sable/icons.json` as `{ "names": [...] }` so `sable grade` accepts them); `<MotionProvider>` is optional too. Use `<SableThemeProvider>` + `useSableTheme()` when the app should expose user-selectable themes; pair `themeId` / `setThemeId` with `<ThemeSelector>` and `preference` / `setPreference` with `<ThemeSwitcher>`. The provider stores `light` / `dark` / `system`, toggles the `dark` class on `<html>`, stores the active design theme, and writes `data-sable-theme` for non-default themes. Apps with their own state layer can call `applySableColorMode()` / `applySableTheme()` instead. You only need a Tailwind `@custom-variant dark` if **your** app code uses `dark:` utilities (Sable ships none).
|
|
65
65
|
6. Import from the root barrel: `import { Button } from "@sableui/react"`. Page shells live on the `patterns` subpath (`import { SettingsPage } from "@sableui/react/patterns"`) — preview one, then copy its source from `registry.json → patterns` when the route needs to diverge. Blocks — section-sized compositions such as a sign-in card or a pricing card — live on the `blocks` subpath (`import { SignInBlock } from "@sableui/react/blocks"`) and ship the same way (`registry.json → blocks`); copy one and edit its content constants. A block's props are only `className`, `framed` and its primary action's callback, never content.
|
|
66
66
|
|
|
67
67
|
7. **Check the wiring:** `npx sable doctor`. Every check it runs corresponds to a way Sable fails *silently* — a second React (blank page, "invalid hook call"), a missing `@source` (Tailwind emits none of the package's classes, everything renders unstyled), or `data-sable-theme` set with no theme CSS imported (every theme renders as Base and the switcher looks broken). Exits 1 on any failure; `--json` for the structured report.
|
|
@@ -144,6 +144,10 @@ Base UI wires `aria-invalid`/`aria-describedby` when you use `Field`; the behavi
|
|
|
144
144
|
After installing Sable, run `pnpm exec sable setup --agent` in the target
|
|
145
145
|
project. It installs discoverable entry files in `.agents/skills/sable` for
|
|
146
146
|
Codex/Cursor and `.claude/skills/sable` for Claude Code; `--target` selects a host.
|
|
147
|
+
In a monorepo where Sable belongs to one workspace package, run setup in that
|
|
148
|
+
package with `--root` naming the repository root (for example
|
|
149
|
+
`pnpm --filter web exec sable setup --agent --root ../..`); the entries go
|
|
150
|
+
there and resolve Sable through the package.
|
|
147
151
|
Each entry resolves `skills/sable/SKILL.md` from the installed package, so package
|
|
148
152
|
upgrades also update the workflow. Other agents can read that file directly.
|
|
149
153
|
Use `$sable build <idea>`, `inspire <references>`, `audit <target>`, or
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,57 @@
|
|
|
1
1
|
# What's new
|
|
2
2
|
|
|
3
|
+
## 0.3.2
|
|
4
|
+
|
|
5
|
+
### Workspace panels
|
|
6
|
+
|
|
7
|
+
- **`panel-field` and `panel-field-hover` tokens.** The fill of a compact
|
|
8
|
+
control docked in a panel, and its hover step. They default to the canvas
|
|
9
|
+
tone and the raised panel step, so nothing changes visually. The `xs` field
|
|
10
|
+
rung (Input, SelectTrigger, Combobox, ScrubField) now wears them, and a panel
|
|
11
|
+
control of your own can too, without a lint exception.
|
|
12
|
+
- **`<Button variant="field">`.** A button that sits among `xs` fields in a
|
|
13
|
+
panel row, such as a font picker or an add action: the inset field fill and
|
|
14
|
+
the field's corner instead of a pill. Use it with `size="xs"` or `"icon-xs"`.
|
|
15
|
+
|
|
16
|
+
### Agent tools
|
|
17
|
+
|
|
18
|
+
- `sable grade` checks props against each component's real type, so props a
|
|
19
|
+
component forwards to Base UI (`Toggle`'s `pressed`, `Combobox`'s `filter`)
|
|
20
|
+
are no longer reported as hallucinated. `registry.json` carries the result as
|
|
21
|
+
`propSurface`.
|
|
22
|
+
- `sable grade` reads the icon names your app adds with `composeIconSets` from
|
|
23
|
+
`.sable/icons.json` (`{ "names": [...] }`), or from `--icons <file>`, and stops
|
|
24
|
+
counting them as off-contract.
|
|
25
|
+
- `sable setup --agent --root <dir>` writes the skill entries in an ancestor
|
|
26
|
+
directory. In a monorepo, run it in the workspace package that depends on
|
|
27
|
+
Sable with `--root` at the repository root. The entries resolve Sable through
|
|
28
|
+
that package.
|
|
29
|
+
|
|
30
|
+
## 0.3.1
|
|
31
|
+
|
|
32
|
+
### Charts
|
|
33
|
+
|
|
34
|
+
- **Smoother hover.** The tooltip is anchored to the data instead of chasing
|
|
35
|
+
the pointer, and glides between positions; the cursor and the active dots
|
|
36
|
+
glide too. Moving within one data position no longer re-renders the chart.
|
|
37
|
+
Hover feedback has its own quick timing — dimming the other bars no longer
|
|
38
|
+
waits out the arrival stagger.
|
|
39
|
+
- Active dots on stacked areas draw above every series, so a later fill no
|
|
40
|
+
longer covers the dot below it.
|
|
41
|
+
|
|
42
|
+
### Presets
|
|
43
|
+
|
|
44
|
+
- Presets may carry the chart palette (`chart-1` … `chart-8`). Optional — a
|
|
45
|
+
preset without them inherits Base's validated set. On sableui.com,
|
|
46
|
+
Customize now generates a chart palette from the brand and the Palette
|
|
47
|
+
setting, held to the same colour-blind and normal-vision separation checks.
|
|
48
|
+
|
|
49
|
+
### iOS
|
|
50
|
+
|
|
51
|
+
- Layers portalled out of an iOS prototype (a toast stack, a menu) read the
|
|
52
|
+
prototype's safe-area geometry, so a toast placed under the status bar shows
|
|
53
|
+
there instead of below the screen.
|
|
54
|
+
|
|
3
55
|
## 0.3.0
|
|
4
56
|
|
|
5
57
|
Blocks, charts, and the components they needed.
|
package/README.md
CHANGED
|
@@ -107,7 +107,7 @@ function ThemeControls() {
|
|
|
107
107
|
</IconProvider>
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
-
Components render Reicon icons out of the box. To replace Reicon, mount `<IconProvider set={yourIconSet}>`; to add domain icons, use `composeIconSets(appExtras, reiconIconSet)`. Both helpers and the `IconSet` type are exported from Sable. A set returns `null` for names it does not handle. `fallbackIconSet` remains a deprecated alias of Reicon for compatibility. `SableThemeProvider` is the preferred route for user-facing theme switching: it stores the user's color preference (`light` / `dark` / `system`), toggles the **`.dark` class**, stores the active design theme, and writes **`data-sable-theme`** for non-default themes. If your app already owns this state, use `applySableColorMode()` / `applySableTheme()` or the exported `SABLE_THEME_ATTRIBUTE` constant directly. You do **not** need a Tailwind `@custom-variant dark` for Sable itself — add one (`@custom-variant dark (&:where(.dark, .dark *));`) only if **your own** app code uses `dark:` utilities (Sable ships none).
|
|
110
|
+
Components render Reicon icons out of the box. To replace Reicon, mount `<IconProvider set={yourIconSet}>`; to add domain icons, use `composeIconSets(appExtras, reiconIconSet)`. Both helpers and the `IconSet` type are exported from Sable. A set returns `null` for names it does not handle. List the names your extras add in `.sable/icons.json` (`{ "names": [...] }`) so `sable grade` counts them as icons the app supplies, not off-contract ones. `fallbackIconSet` remains a deprecated alias of Reicon for compatibility. `SableThemeProvider` is the preferred route for user-facing theme switching: it stores the user's color preference (`light` / `dark` / `system`), toggles the **`.dark` class**, stores the active design theme, and writes **`data-sable-theme`** for non-default themes. If your app already owns this state, use `applySableColorMode()` / `applySableTheme()` or the exported `SABLE_THEME_ATTRIBUTE` constant directly. You do **not** need a Tailwind `@custom-variant dark` for Sable itself — add one (`@custom-variant dark (&:where(.dark, .dark *));`) only if **your own** app code uses `dark:` utilities (Sable ships none).
|
|
111
111
|
|
|
112
112
|
**6. Use it:**
|
|
113
113
|
|
|
@@ -181,6 +181,10 @@ pnpm --filter @sableui/react build # regenerates registry.json from the metas
|
|
|
181
181
|
After installing Sable, run `pnpm exec sable setup --agent` in the target
|
|
182
182
|
project. It installs discoverable entry files in `.agents/skills/sable` for
|
|
183
183
|
Codex/Cursor and `.claude/skills/sable` for Claude Code; `--target` selects a host.
|
|
184
|
+
In a monorepo where Sable belongs to one workspace package, run setup in that
|
|
185
|
+
package with `--root` naming the repository root (for example
|
|
186
|
+
`pnpm --filter web exec sable setup --agent --root ../..`); the entries go
|
|
187
|
+
there and resolve Sable through the package.
|
|
184
188
|
Each entry resolves `skills/sable/SKILL.md` from the installed package, so package
|
|
185
189
|
upgrades also update the workflow. Other agents can read that file directly.
|
|
186
190
|
Use `$sable build <idea>`, `inspire <references>`, `audit <target>`, or
|
package/bin/sable.mjs
CHANGED
|
@@ -96,6 +96,7 @@ const COMMANDS = [
|
|
|
96
96
|
flags: [
|
|
97
97
|
{ name: "--agent", value: null, describe: "Install skill entry files. Required." },
|
|
98
98
|
{ name: "--target", value: "all|codex|claude|cursor", describe: "Host discovery directories. Default all; Codex and Cursor share .agents." },
|
|
99
|
+
{ name: "--root", value: "dir", describe: "Write the entries in this ancestor instead, e.g. the repository root when Sable belongs to one workspace package. Run setup in that package." },
|
|
99
100
|
{ name: "--update", value: null, describe: "Refresh unchanged managed entries after a package upgrade." },
|
|
100
101
|
{ name: "--dry-run", value: null, describe: "Check and report the destination without writing files." },
|
|
101
102
|
],
|
|
@@ -208,6 +209,7 @@ const COMMANDS = [
|
|
|
208
209
|
{ name: "--review", value: "review.json", describe: "Check captures, observations, iterations, and the source fingerprint." },
|
|
209
210
|
{ name: "--strict", value: null, describe: "Exit 1 for contract findings or missing/incomplete/unresolved review evidence." },
|
|
210
211
|
{ name: "--cli-log", value: "file.jsonl", describe: "Include retrieval usage from a SABLE_CLI_LOG file." },
|
|
212
|
+
{ name: "--icons", value: "icons.json", describe: 'Icon names the app adds with composeIconSets, as { "names": [...] }. Default: .sable/icons.json when present.' },
|
|
211
213
|
],
|
|
212
214
|
returns: ["grade.score", "grade.template"],
|
|
213
215
|
},
|
|
@@ -1215,9 +1217,11 @@ const HANDLERS = {
|
|
|
1215
1217
|
preset: () => cmdDesignTool("design-presets.mjs"),
|
|
1216
1218
|
setup: () => {
|
|
1217
1219
|
if (!flags.has("agent") || rest.length) fail("ERR_BAD_ARGUMENT", "Use sable setup --agent from your project root.", ["sable setup --agent --dry-run"])
|
|
1220
|
+
const root = flags.get("root")
|
|
1221
|
+
if (root === true) fail("ERR_BAD_ARGUMENT", "--root needs a directory.", ["pnpm --filter <package> exec sable setup --agent --root ../.."])
|
|
1218
1222
|
try {
|
|
1219
|
-
const data = installAgentSkill({ root: CWD, packageRoot: PKG_ROOT, target: flags.get("target") ?? "all", update: flags.has("update"), dryRun: flags.has("dry-run") })
|
|
1220
|
-
ok("setup.agent", data, `${data.dryRun ? "Would install" : "Installed"} Sable skill entries at ${data.destinations.join(", ")}.\nNext: ${data.next}`)
|
|
1223
|
+
const data = installAgentSkill({ root: root ? resolve(CWD, root) : CWD, project: CWD, packageRoot: PKG_ROOT, target: flags.get("target") ?? "all", update: flags.has("update"), dryRun: flags.has("dry-run") })
|
|
1224
|
+
ok("setup.agent", data, `${data.dryRun ? "Would install" : "Installed"} Sable skill entries at ${data.destinations.map((d) => relative(CWD, join(data.root, d)).replaceAll("\\", "/")).join(", ")}.\nNext: ${data.next}`)
|
|
1221
1225
|
} catch (error) { fail("ERR_AGENT_SETUP", error.message, ["sable setup --agent --dry-run"]) }
|
|
1222
1226
|
},
|
|
1223
1227
|
manifest: cmdManifest,
|
|
@@ -95,11 +95,16 @@ type DensityToken = (typeof DENSITY_TOKENS)[number];
|
|
|
95
95
|
* COMPRESSED tonal band — Paper's whole ladder spans 249→242→238, about 3-7
|
|
96
96
|
* RGB units, with a low-contrast hairline doing the structural work. `card` is
|
|
97
97
|
* tuned for the opposite job (lifting content off a page).
|
|
98
|
+
* - `panel-field` / `panel-field-hover` are the inset fill of a compact control
|
|
99
|
+
* docked in a panel (the `size="xs"` field rung, a field-style button) and its
|
|
100
|
+
* hover step. They default to `canvas` / `panel-raised`, but name the role so
|
|
101
|
+
* a consumer's own panel control can wear it without borrowing the work
|
|
102
|
+
* surface's token or a fixed hover the surface-hover rule rightly rejects.
|
|
98
103
|
* - `hairline` / `hairline-strong` are that structural edge. In this register
|
|
99
104
|
* hairlines carry structure INSTEAD of tonal steps — a deliberate reversal of
|
|
100
105
|
* the page register's "prefer a tonal step or space over a divider line".
|
|
101
106
|
*/
|
|
102
|
-
declare const WORKSPACE_SURFACE_TOKENS: readonly ["canvas", "canvas-foreground", "panel", "panel-foreground", "panel-raised", "hairline", "hairline-strong"];
|
|
107
|
+
declare const WORKSPACE_SURFACE_TOKENS: readonly ["canvas", "canvas-foreground", "panel", "panel-foreground", "panel-raised", "panel-field", "panel-field-hover", "hairline", "hairline-strong"];
|
|
103
108
|
type WorkspaceSurfaceToken = (typeof WORKSPACE_SURFACE_TOKENS)[number];
|
|
104
109
|
/**
|
|
105
110
|
* UI type tiers (mode-independent) — the chrome typography register.
|
package/dist/blocks/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Kbd, CommandMenuPanel, ToggleGroup, Toggle, BarChart, DateTile, Accordion, AccordionItem, AccordionTrigger, AccordionPanel, RadialChart, Sparkline, Slider, Stepper, StepperItem, SegmentedBar, Checkbox, PieChart, AreaChart, OtpField } from '../chunk-
|
|
2
|
-
import { Card, CardHeader, CardTitle, CardDescription, CardAction, Button, CardList, Entity, OverflowMenu, MenuItem, MenuSeparator, Code, CardContent, Message, Bubble, CardFooter, DestructiveActionModal, Badge, AvatarGroup, Avatar, Textarea, CodeBlock, Input, Table, TableHeader, TableRow, TableHead, TableBody, TableCell, StatusDot, Switch, Form, Field, Select, SelectTrigger, SelectContent, SelectItem, Separator, Label, Attachment } from '../chunk-
|
|
1
|
+
import { Kbd, CommandMenuPanel, ToggleGroup, Toggle, BarChart, DateTile, Accordion, AccordionItem, AccordionTrigger, AccordionPanel, RadialChart, Sparkline, Slider, Stepper, StepperItem, SegmentedBar, Checkbox, PieChart, AreaChart, OtpField } from '../chunk-FBSL2LZQ.js';
|
|
2
|
+
import { Card, CardHeader, CardTitle, CardDescription, CardAction, Button, CardList, Entity, OverflowMenu, MenuItem, MenuSeparator, Code, CardContent, Message, Bubble, CardFooter, DestructiveActionModal, Badge, AvatarGroup, Avatar, Textarea, CodeBlock, Input, Table, TableHeader, TableRow, TableHead, TableBody, TableCell, StatusDot, Switch, Form, Field, Select, SelectTrigger, SelectContent, SelectItem, Separator, Label, Attachment } from '../chunk-CCUDFLU3.js';
|
|
3
3
|
import { Region, Stack, Row, Grid } from '../chunk-3IWZYBGH.js';
|
|
4
4
|
import { cn } from '../chunk-SRQWQUTW.js';
|
|
5
5
|
import { Icon } from '../chunk-NGBDP3BM.js';
|
|
@@ -339,6 +339,15 @@ var buttonVariants = cva(
|
|
|
339
339
|
* restyling secondary/ghost three different ways was the alternative.
|
|
340
340
|
*/
|
|
341
341
|
floating: "border border-border-floating bg-popover/90 text-popover-foreground shadow-md backdrop-blur hover:bg-popover",
|
|
342
|
+
/*
|
|
343
|
+
* A button docked in a panel among compact fields — a picker that
|
|
344
|
+
* opens a popover, "Add fill", a swatch's trigger. It wears the xs
|
|
345
|
+
* field rung's shell (lib/field-shell → FIELD_SHELL_XS): the inset
|
|
346
|
+
* `panel-field` fill, no border, the field's corner rather than the
|
|
347
|
+
* button's pill, so it reads as one of the row's controls. Secondary
|
|
348
|
+
* or ghost there read as page buttons dropped into tool chrome.
|
|
349
|
+
*/
|
|
350
|
+
field: "rounded-[var(--panel-field-radius,var(--radius-xs))] bg-panel-field text-panel-foreground hover:bg-panel-field-hover",
|
|
342
351
|
/*
|
|
343
352
|
* On-colour tiers — for a button sitting ON a coloured fill (a tone
|
|
344
353
|
* band, a solid Banner, a brand panel, a dark section in a light
|
|
@@ -587,9 +596,9 @@ var buttonMeta = {
|
|
|
587
596
|
props: [
|
|
588
597
|
{
|
|
589
598
|
name: "variant",
|
|
590
|
-
type: '"primary" | "secondary" | "ghost" | "outline" | "destructive" | "link" | "floating" | "on-color" | "on-color-outline" | "on-color-ghost"',
|
|
599
|
+
type: '"primary" | "secondary" | "ghost" | "outline" | "destructive" | "link" | "floating" | "field" | "on-color" | "on-color-outline" | "on-color-ghost"',
|
|
591
600
|
default: '"primary"',
|
|
592
|
-
description: "Visual emphasis tier. One primary per screen. The on-color tiers are for buttons ON a coloured fill: they paint with the inherited text colour (the fill's ink) \u2014 on-color is solid (ink background, fill-coloured label via the optional --on-color-fill var, else black/white), on-color-outline and on-color-ghost are transparent with an ink label. Never use them on page or card surfaces. floating is for a control that sits OVER content (carousel arrows, a marquee pause, a jump-to-latest over a conversation): its own edge, lift and translucent popover fill, so it reads on arbitrary content beneath."
|
|
601
|
+
description: "Visual emphasis tier. One primary per screen. The on-color tiers are for buttons ON a coloured fill: they paint with the inherited text colour (the fill's ink) \u2014 on-color is solid (ink background, fill-coloured label via the optional --on-color-fill var, else black/white), on-color-outline and on-color-ghost are transparent with an ink label. Never use them on page or card surfaces. floating is for a control that sits OVER content (carousel arrows, a marquee pause, a jump-to-latest over a conversation): its own edge, lift and translucent popover fill, so it reads on arbitrary content beneath. field is for a button docked in a workspace panel among xs fields: the inset panel-field fill and the field's corner, so a picker trigger or an add action reads as one of the row's controls; pair it with size xs or icon-xs."
|
|
593
602
|
},
|
|
594
603
|
{
|
|
595
604
|
name: "size",
|
|
@@ -638,6 +647,7 @@ var buttonMeta = {
|
|
|
638
647
|
"destructive",
|
|
639
648
|
"link",
|
|
640
649
|
"floating",
|
|
650
|
+
"field",
|
|
641
651
|
"on-color",
|
|
642
652
|
"on-color-outline",
|
|
643
653
|
"on-color-ghost"
|
|
@@ -654,7 +664,10 @@ var buttonMeta = {
|
|
|
654
664
|
"input",
|
|
655
665
|
"destructive",
|
|
656
666
|
"destructive-foreground",
|
|
657
|
-
"ring"
|
|
667
|
+
"ring",
|
|
668
|
+
"panel-field",
|
|
669
|
+
"panel-field-hover",
|
|
670
|
+
"panel-foreground"
|
|
658
671
|
],
|
|
659
672
|
motion: [
|
|
660
673
|
{
|
|
@@ -746,6 +759,10 @@ var buttonMeta = {
|
|
|
746
759
|
label: "Icon button with an unread badge",
|
|
747
760
|
code: '<Button size="icon" variant="ghost" aria-label="Notifications" badge={<NotificationBadge dot />}><Icon name="bell" /></Button>'
|
|
748
761
|
},
|
|
762
|
+
{
|
|
763
|
+
label: "Field button in a panel row",
|
|
764
|
+
code: '<PanelSection title="Text">\n <PropertyRow label="Font">\n <Button variant="field" size="xs" className="w-full justify-between" iconEnd={<Icon name="chevron-down" />}>Figtree</Button>\n </PropertyRow>\n</PanelSection>'
|
|
765
|
+
},
|
|
749
766
|
{
|
|
750
767
|
label: "On a coloured band",
|
|
751
768
|
code: '<div className="flex gap-3 bg-tone-info p-6 text-tone-info-foreground [--on-color-fill:var(--tone-info)]"><Button variant="on-color">Join the beta</Button><Button variant="on-color-outline">Read the notes</Button></div>'
|
|
@@ -2183,7 +2200,7 @@ var separatorMeta = {
|
|
|
2183
2200
|
var FIELD_SHELL = "rounded-sm border border-input bg-card motion-interactive placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50";
|
|
2184
2201
|
var MOBILE_FIELD_TIER = "max-sm:text-body-lg";
|
|
2185
2202
|
var FIELD_INVALID = "aria-[invalid=true]:border-destructive aria-[invalid=true]:ring-destructive/30";
|
|
2186
|
-
var FIELD_SHELL_XS = "rounded-[var(--panel-field-radius,var(--radius-xs))] border-transparent bg-
|
|
2203
|
+
var FIELD_SHELL_XS = "rounded-[var(--panel-field-radius,var(--radius-xs))] border-transparent bg-panel-field hover:bg-panel-field-hover";
|
|
2187
2204
|
function Input({ className, type, size = "md", ref, ...props }) {
|
|
2188
2205
|
const tier = useTypeTier();
|
|
2189
2206
|
const density = useDensity();
|
|
@@ -2289,7 +2306,7 @@ var inputMeta = {
|
|
|
2289
2306
|
name: "size",
|
|
2290
2307
|
type: '"md" | "xs"',
|
|
2291
2308
|
default: '"md"',
|
|
2292
|
-
description: "md is the form field. xs is the dense inset field of a tool panel (an inset
|
|
2309
|
+
description: "md is the form field. xs is the dense inset field of a tool panel (an inset panel-field fill, no outline, tight padding) \u2014 the same ladder as Select and Combobox. Use it instead of overriding the height with className."
|
|
2293
2310
|
},
|
|
2294
2311
|
{
|
|
2295
2312
|
name: "type",
|
|
@@ -3969,7 +3986,7 @@ var selectMeta = {
|
|
|
3969
3986
|
{
|
|
3970
3987
|
name: "SelectTrigger",
|
|
3971
3988
|
type: 'Base UI Trigger props + placeholder?: ReactNode + size?: "md" | "xs" + className',
|
|
3972
|
-
description: 'The button. Composes Trigger + Value + a chevron Icon that flips on open (data-[popup-open]). `size="xs"` is the property-grid rung \u2014 height, padding, radius AND surface move together, which is why it is a prop and not a className: the xs trigger is an inset `bg-
|
|
3989
|
+
description: 'The button. Composes Trigger + Value + a chevron Icon that flips on open (data-[popup-open]). `size="xs"` is the property-grid rung \u2014 height, padding, radius AND surface move together, which is why it is a prop and not a className: the xs trigger is an inset `bg-panel-field` field with no border, matching ScrubField on the same row. A consumer overriding only the height gets an md-register 8px radius on a 24px box and a raised card sitting among inset fields; one inspector panel had eleven of those, and both tells are visible at a glance.'
|
|
3973
3990
|
},
|
|
3974
3991
|
{
|
|
3975
3992
|
name: "SelectContent",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useMotion, useIsomorphicLayoutEffect, mergeRefs, trimLabel, useTypeTier, buttonVariants, Input, Table, TableCaption, TableHeader, TableRow, TableHead, Button, TableBody, TableCell, Card, SimpleTooltip, useDensity, FIELD_SHELL, FIELD_INVALID, MOBILE_FIELD_TIER, Tooltip, TooltipTrigger, TooltipContent, useScrollActivity, setRef, Textarea, Menu, MenuTrigger, MenuContent, MenuSubmenu, MenuSubmenuTrigger, Separator } from './chunk-
|
|
1
|
+
import { useMotion, useIsomorphicLayoutEffect, mergeRefs, trimLabel, useTypeTier, buttonVariants, Input, Table, TableCaption, TableHeader, TableRow, TableHead, Button, TableBody, TableCell, Card, SimpleTooltip, useDensity, FIELD_SHELL, FIELD_INVALID, MOBILE_FIELD_TIER, Tooltip, TooltipTrigger, TooltipContent, useScrollActivity, setRef, Textarea, Menu, MenuTrigger, MenuContent, MenuSubmenu, MenuSubmenuTrigger, Separator } from './chunk-CCUDFLU3.js';
|
|
2
2
|
import { cn } from './chunk-SRQWQUTW.js';
|
|
3
3
|
import { Icon } from './chunk-NGBDP3BM.js';
|
|
4
4
|
import { createContext, useRef, useState, useEffect, isValidElement, cloneElement, useContext, useMemo, useCallback, useImperativeHandle } from 'react';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FIELD_SHELL, FIELD_INVALID, useMotion, useTypeTier, useScrollActivity, setRef, useAnchoredDensity, Dialog, DialogContent, DialogTitle, DialogDescription, useIsomorphicLayoutEffect } from './chunk-
|
|
1
|
+
import { FIELD_SHELL, FIELD_INVALID, useMotion, useTypeTier, useScrollActivity, setRef, useAnchoredDensity, Dialog, DialogContent, DialogTitle, DialogDescription, useIsomorphicLayoutEffect } from './chunk-CCUDFLU3.js';
|
|
2
2
|
import { cn } from './chunk-SRQWQUTW.js';
|
|
3
3
|
import { Icon } from './chunk-NGBDP3BM.js';
|
|
4
4
|
import * as OtpParts from '@base-ui/react/otp-field';
|
|
@@ -705,7 +705,6 @@ function ChartFrame({
|
|
|
705
705
|
const [size, setSize] = useState(null);
|
|
706
706
|
const [shown, setShown] = useState(!animate);
|
|
707
707
|
const [uncontrolled, setUncontrolled] = useState(defaultActiveIndex);
|
|
708
|
-
const [pointer, setPointer] = useState(null);
|
|
709
708
|
const [viaKeyboard, setViaKeyboard] = useState(false);
|
|
710
709
|
const appeared = useRef(true);
|
|
711
710
|
const tableId = useId();
|
|
@@ -753,8 +752,7 @@ function ChartFrame({
|
|
|
753
752
|
const onPointer = (event) => {
|
|
754
753
|
if (!interactive || !size || !hitTest) return;
|
|
755
754
|
const p = local(event);
|
|
756
|
-
|
|
757
|
-
setViaKeyboard(false);
|
|
755
|
+
if (viaKeyboard) setViaKeyboard(false);
|
|
758
756
|
setActive(hitTest(p.x, p.y, size));
|
|
759
757
|
};
|
|
760
758
|
const onKeyDown = (event) => {
|
|
@@ -767,11 +765,10 @@ function ChartFrame({
|
|
|
767
765
|
else if (event.key === "Escape") next = null;
|
|
768
766
|
if (next === void 0) return;
|
|
769
767
|
event.preventDefault();
|
|
770
|
-
setPointer(null);
|
|
771
768
|
setViaKeyboard(true);
|
|
772
769
|
setActive(next);
|
|
773
770
|
};
|
|
774
|
-
const placement = size && active != null && tooltip ? tooltip(active, size
|
|
771
|
+
const placement = size && active != null && tooltip ? tooltip(active, size) : null;
|
|
775
772
|
const flip = placement && size ? placement.x > size.width / 2 : false;
|
|
776
773
|
return /* @__PURE__ */ jsxs(
|
|
777
774
|
"figure",
|
|
@@ -792,7 +789,6 @@ function ChartFrame({
|
|
|
792
789
|
onPointerMove: onPointer,
|
|
793
790
|
onPointerDown: onPointer,
|
|
794
791
|
onPointerLeave: () => {
|
|
795
|
-
setPointer(null);
|
|
796
792
|
if (!viaKeyboard) setActive(null);
|
|
797
793
|
},
|
|
798
794
|
onKeyDown,
|
|
@@ -816,10 +812,11 @@ function ChartFrame({
|
|
|
816
812
|
"aria-hidden": true,
|
|
817
813
|
className: cn(
|
|
818
814
|
"pointer-events-none absolute start-0 top-0 z-10",
|
|
815
|
+
// Glides between positions; appears in place the first time.
|
|
819
816
|
!appeared.current && "transition-transform duration-(--motion-duration-fast) ease-standard"
|
|
820
817
|
),
|
|
821
818
|
style: { transform: `translate(${Math.round(placement.x)}px, ${Math.round(placement.y)}px)` },
|
|
822
|
-
children: /* @__PURE__ */ jsx("div", { className: cn("w-max -translate-y-1/2", flip ? "-translate-x-[calc(100%+0.75rem)]" : "translate-x-3"), children: placement.content })
|
|
819
|
+
children: /* @__PURE__ */ jsx("div", { className: cn("w-max -translate-y-1/2 transition-transform duration-(--motion-duration-fast) ease-standard", flip ? "-translate-x-[calc(100%+0.75rem)]" : "translate-x-3"), children: placement.content })
|
|
823
820
|
}
|
|
824
821
|
) : null
|
|
825
822
|
]
|
|
@@ -1002,17 +999,22 @@ function strokeArcPath(cx, cy, r, a0, a1) {
|
|
|
1002
999
|
var DRAW_DURATION = "calc(var(--motion-duration-slower) * 1.8)";
|
|
1003
1000
|
var RISE = "var(--motion-duration-slower) var(--motion-ease-emphasized)";
|
|
1004
1001
|
var MORPH = "var(--motion-duration-slow) var(--motion-ease-standard)";
|
|
1002
|
+
var HOVER = "var(--motion-duration-fast) var(--motion-ease-standard)";
|
|
1003
|
+
var GLIDE = `transform ${HOVER}, opacity ${HOVER}, cx ${HOVER}, cy ${HOVER}`;
|
|
1004
|
+
function barTransition(delay = "0ms") {
|
|
1005
|
+
return `scale ${RISE} ${delay}, opacity ${HOVER}, d ${MORPH}`;
|
|
1006
|
+
}
|
|
1005
1007
|
function stagger(index, stepMs = 35) {
|
|
1006
1008
|
return `calc(${Math.min(index, 24) * stepMs}ms * var(--motion-scale, 1))`;
|
|
1007
1009
|
}
|
|
1008
1010
|
function drawTransition(delay = "0ms") {
|
|
1009
|
-
return `stroke-dashoffset ${DRAW_DURATION} var(--motion-ease-decelerate) ${delay}, d ${MORPH}`;
|
|
1011
|
+
return `stroke-dashoffset ${DRAW_DURATION} var(--motion-ease-decelerate) ${delay}, d ${MORPH}, opacity ${HOVER}`;
|
|
1010
1012
|
}
|
|
1011
1013
|
function riseTransition(delay = "0ms") {
|
|
1012
1014
|
return `scale ${RISE} ${delay}, opacity ${RISE} ${delay}, d ${MORPH}`;
|
|
1013
1015
|
}
|
|
1014
1016
|
function morphTransition() {
|
|
1015
|
-
return `d ${MORPH}, opacity ${
|
|
1017
|
+
return `d ${MORPH}, opacity ${HOVER}, cx ${MORPH}, cy ${MORPH}`;
|
|
1016
1018
|
}
|
|
1017
1019
|
function pathStyle(d) {
|
|
1018
1020
|
return { d: `path("${d}")` };
|
|
@@ -1186,7 +1188,7 @@ function CartesianChart(props) {
|
|
|
1186
1188
|
return best;
|
|
1187
1189
|
};
|
|
1188
1190
|
const describe = (i) => `${categories[i]}: ${series.map((s, k) => `${s.label} ${fullValue(k, i)}`).join(", ")}`;
|
|
1189
|
-
const tooltipFor = (i, size
|
|
1191
|
+
const tooltipFor = (i, size) => {
|
|
1190
1192
|
const L = layoutFor(size);
|
|
1191
1193
|
const total = values.reduce((sum, s) => sum + s[i], 0);
|
|
1192
1194
|
const content = /* @__PURE__ */ jsx(
|
|
@@ -1198,8 +1200,11 @@ function CartesianChart(props) {
|
|
|
1198
1200
|
total: tooltipOptions.showTotal ? fmt.full(total) : void 0
|
|
1199
1201
|
}
|
|
1200
1202
|
);
|
|
1201
|
-
if (horizontal)
|
|
1202
|
-
|
|
1203
|
+
if (horizontal) {
|
|
1204
|
+
const end = Math.max(0, ...series.map((_, k) => stacks ? stacks[k][i][1] : values[k][i]));
|
|
1205
|
+
return { content, x: Math.min(L.value(end), L.x1), y: L.center(i) };
|
|
1206
|
+
}
|
|
1207
|
+
return { content, x: L.center(i), y: (L.y0 + L.y1) / 2 };
|
|
1203
1208
|
};
|
|
1204
1209
|
const table = {
|
|
1205
1210
|
headers: [index.charAt(0).toUpperCase() + index.slice(1), ...series.map((s) => s.label)],
|
|
@@ -1224,6 +1229,7 @@ function CartesianChart(props) {
|
|
|
1224
1229
|
children: ({ size, activeIndex: active }) => {
|
|
1225
1230
|
const L = layoutFor(size);
|
|
1226
1231
|
const marks = [];
|
|
1232
|
+
const activeDots = [];
|
|
1227
1233
|
const widths = categories.map((_, i) => approxTextWidth(tickText(i)));
|
|
1228
1234
|
const slot = (horizontal ? L.y1 - L.y0 : L.x1 - L.x0) / Math.max(1, n) || 1;
|
|
1229
1235
|
const every = Math.max(1, Math.ceil((horizontal ? 18 : Math.max(0, ...widths) + 12) / slot));
|
|
@@ -1247,15 +1253,13 @@ function CartesianChart(props) {
|
|
|
1247
1253
|
});
|
|
1248
1254
|
let cursor = null;
|
|
1249
1255
|
if (active != null && active < n) {
|
|
1256
|
+
const c = L.center(active);
|
|
1257
|
+
const move = { transform: horizontal ? `translate(0px, ${c}px)` : `translate(${c}px, 0px)`, transition: GLIDE };
|
|
1250
1258
|
if (L.band) {
|
|
1251
|
-
const
|
|
1252
|
-
|
|
1253
|
-
const a = Math.max(horizontal ? L.y0 : L.x0, c - half);
|
|
1254
|
-
const b = Math.min(horizontal ? L.y1 : L.x1, c + half);
|
|
1255
|
-
cursor = horizontal ? /* @__PURE__ */ jsx("rect", { x: L.x0, y: a, width: L.x1 - L.x0, height: b - a, rx: 6, className: "fill-foreground/5" }) : /* @__PURE__ */ jsx("rect", { x: a, y: L.y0, width: b - a, height: L.y1 - L.y0, rx: 6, className: "fill-foreground/5" });
|
|
1259
|
+
const w = L.band.bandwidth;
|
|
1260
|
+
cursor = /* @__PURE__ */ jsx("g", { style: move, children: horizontal ? /* @__PURE__ */ jsx("rect", { x: L.x0, y: -w / 2, width: L.x1 - L.x0, height: w, rx: 6, className: "fill-foreground/5" }) : /* @__PURE__ */ jsx("rect", { x: -w / 2, y: L.y0, width: w, height: L.y1 - L.y0, rx: 6, className: "fill-foreground/5" }) });
|
|
1256
1261
|
} else {
|
|
1257
|
-
|
|
1258
|
-
cursor = /* @__PURE__ */ jsx("line", { x1: p, x2: p, y1: L.y0, y2: L.y1, className: "stroke-foreground/25" });
|
|
1262
|
+
cursor = /* @__PURE__ */ jsx("g", { style: move, children: /* @__PURE__ */ jsx("line", { x1: 0, x2: 0, y1: L.y0, y2: L.y1, className: "stroke-foreground/25" }) });
|
|
1259
1263
|
}
|
|
1260
1264
|
}
|
|
1261
1265
|
if (kind === "bar" && L.band) {
|
|
@@ -1297,14 +1301,13 @@ function CartesianChart(props) {
|
|
|
1297
1301
|
d,
|
|
1298
1302
|
className: cn(
|
|
1299
1303
|
horizontal ? "[[data-reveal=out]_&]:scale-x-0" : "[[data-reveal=out]_&]:scale-y-0",
|
|
1300
|
-
"transition-opacity",
|
|
1301
1304
|
dim && "opacity-40"
|
|
1302
1305
|
),
|
|
1303
1306
|
style: {
|
|
1304
1307
|
...pathStyle(d),
|
|
1305
1308
|
fill: colorAt(k, i),
|
|
1306
1309
|
transformOrigin: origin,
|
|
1307
|
-
transition:
|
|
1310
|
+
transition: barTransition(stagger(i))
|
|
1308
1311
|
}
|
|
1309
1312
|
},
|
|
1310
1313
|
`b${k}-${i}`
|
|
@@ -1406,7 +1409,7 @@ function CartesianChart(props) {
|
|
|
1406
1409
|
}
|
|
1407
1410
|
if (active != null && active < n) {
|
|
1408
1411
|
const [x, y] = top[active];
|
|
1409
|
-
|
|
1412
|
+
activeDots.push(/* @__PURE__ */ jsx("circle", { cx: x, cy: y, r: 5, strokeWidth: 2, className: SURFACE, style: { fill: s.colorValue, cx: x, cy: y, transition: GLIDE } }, `ap${k}`));
|
|
1410
1413
|
}
|
|
1411
1414
|
}
|
|
1412
1415
|
}
|
|
@@ -1415,6 +1418,7 @@ function CartesianChart(props) {
|
|
|
1415
1418
|
grid ? /* @__PURE__ */ jsx("g", { children: gridLines }) : null,
|
|
1416
1419
|
cursor,
|
|
1417
1420
|
/* @__PURE__ */ jsx("g", { children: marks }),
|
|
1421
|
+
/* @__PURE__ */ jsx("g", { children: activeDots }),
|
|
1418
1422
|
zero ? horizontal ? /* @__PURE__ */ jsx("line", { x1: L.base, x2: L.base, y1: L.y0, y2: L.y1, className: "stroke-foreground/20" }) : /* @__PURE__ */ jsx("line", { x1: L.x0, x2: L.x1, y1: L.base, y2: L.base, className: "stroke-foreground/20" }) : null,
|
|
1419
1423
|
(horizontal ? xAxis : yAxis) ? /* @__PURE__ */ jsx("g", { children: valueAxis }) : null,
|
|
1420
1424
|
(horizontal ? yAxis : xAxis) ? /* @__PURE__ */ jsx("g", { children: categoryAxis }) : null
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { ClassValue } from 'clsx';
|
|
2
2
|
import { C as ComponentMeta } from './meta-CcE_SeFu.js';
|
|
3
3
|
export { A as AnatomyMeta, a as BestPracticeMeta, E as ExampleMeta, M as MotionMeta, b as MotionSlot, c as PropMeta, R as RelatedMeta, S as SubcomponentMeta, U as UsageMeta } from './meta-CcE_SeFu.js';
|
|
4
|
-
import { T as ThemeManifest, a as ThemeMode$1 } from './_contract-
|
|
5
|
-
export { D as DENSITY_TOKENS, b as DensityToken, M as MOTION_TOKENS, c as MotionToken, R as RADIUS_TOKENS, d as RadiusToken, S as SEMANTIC_TOKENS, e as SemanticToken, f as TYPE_OVERLINE_TOKENS, g as TYPE_REFINEMENT_TOKENS, h as TYPE_SCALE_TOKENS, i as TYPE_UI_TOKENS, j as TypeOverlineToken, k as TypeRefinementToken, l as TypeScaleToken, m as TypeUiToken, W as WORKSPACE_SURFACE_TOKENS, n as WorkspaceSurfaceToken } from './_contract-
|
|
6
|
-
import { T as ThemeId } from './theme-provider-
|
|
7
|
-
export { D as DEFAULT_THEME_ID, S as SABLE_COLOR_STORAGE_KEY, a as SABLE_THEME_ATTRIBUTE, b as SABLE_THEME_STORAGE_KEY, c as SableColorMode, d as SableThemeContextValue, e as SableThemePreference, f as SableThemeProvider, g as SableThemeProviderProps, h as applySableColorMode, i as applySableTheme, k as defaultThemeId, m as getThemeManifest, o as isThemeId, t as themeIds, p as themeManifestById, q as themeManifests, u as useSableTheme } from './theme-provider-
|
|
4
|
+
import { T as ThemeManifest, a as ThemeMode$1 } from './_contract-BlKMR4eX.js';
|
|
5
|
+
export { D as DENSITY_TOKENS, b as DensityToken, M as MOTION_TOKENS, c as MotionToken, R as RADIUS_TOKENS, d as RadiusToken, S as SEMANTIC_TOKENS, e as SemanticToken, f as TYPE_OVERLINE_TOKENS, g as TYPE_REFINEMENT_TOKENS, h as TYPE_SCALE_TOKENS, i as TYPE_UI_TOKENS, j as TypeOverlineToken, k as TypeRefinementToken, l as TypeScaleToken, m as TypeUiToken, W as WORKSPACE_SURFACE_TOKENS, n as WorkspaceSurfaceToken } from './_contract-BlKMR4eX.js';
|
|
6
|
+
import { T as ThemeId } from './theme-provider-CuYYxF0o.js';
|
|
7
|
+
export { D as DEFAULT_THEME_ID, S as SABLE_COLOR_STORAGE_KEY, a as SABLE_THEME_ATTRIBUTE, b as SABLE_THEME_STORAGE_KEY, c as SableColorMode, d as SableThemeContextValue, e as SableThemePreference, f as SableThemeProvider, g as SableThemeProviderProps, h as applySableColorMode, i as applySableTheme, k as defaultThemeId, m as getThemeManifest, o as isThemeId, t as themeIds, p as themeManifestById, q as themeManifests, u as useSableTheme } from './theme-provider-CuYYxF0o.js';
|
|
8
8
|
export { AspectBox, AspectBoxProps, Bleed, BleedProps, Breakpoint, Center, CenterProps, Col, ColProps, Columns, ColumnsProps, Grid, GridOverlay, GridOverlayProps, GridProps, Page, PageProps, Region, RegionMax, RegionProps, Responsive, Row, RowProps, SafeArea, SafeAreaProps, Spacer, SpacerProps, SplitPane, SplitPaneProps, Stack, StackProps } from './layout/index.js';
|
|
9
9
|
export { Icon, IconContextValue, IconProps, IconProvider, IconProviderProps, composeIconSets, useIconSet } from './icon/index.js';
|
|
10
10
|
export { reiconIconSet as fallbackIconSet, reiconIconNames, reiconIconSet } from './icon-sets/reicon.js';
|
|
@@ -348,7 +348,7 @@ declare namespace ViewTransitionName {
|
|
|
348
348
|
}
|
|
349
349
|
|
|
350
350
|
declare const buttonVariants: (props?: ({
|
|
351
|
-
variant?: "link" | "primary" | "secondary" | "destructive" | "outline" | "ghost" | "floating" | "on-color" | "on-color-outline" | "on-color-ghost" | null | undefined;
|
|
351
|
+
variant?: "link" | "primary" | "secondary" | "destructive" | "outline" | "ghost" | "floating" | "field" | "on-color" | "on-color-outline" | "on-color-ghost" | null | undefined;
|
|
352
352
|
size?: "icon" | "sm" | "md" | "xs" | "cta" | "icon-sm" | "icon-xs" | null | undefined;
|
|
353
353
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
354
354
|
|
|
@@ -2485,7 +2485,7 @@ type TriggerProps$2 = Omit<ComponentProps<typeof Select$1.Trigger>, "className"
|
|
|
2485
2485
|
* The surface is the part a `h-(--control-xs)` override could never reach,
|
|
2486
2486
|
* and it is what the eye actually catches. A property grid's fields are
|
|
2487
2487
|
* inset, not raised: `ScrubField` — the control immediately beside this one
|
|
2488
|
-
* on the same rung — is `bg-
|
|
2488
|
+
* on the same rung — is `bg-panel-field` with no border, and a bordered `bg-card`
|
|
2489
2489
|
* select beside it reads as a different KIND of control rather than the same
|
|
2490
2490
|
* control holding a word. Consumers that overrode the height got an
|
|
2491
2491
|
* md-register 8px radius on a 24px box and a raised card among inset fields;
|
|
@@ -7499,6 +7499,6 @@ interface UseCopyResult {
|
|
|
7499
7499
|
*/
|
|
7500
7500
|
declare function useCopy(text: string, { timeout }?: UseCopyOptions): UseCopyResult;
|
|
7501
7501
|
|
|
7502
|
-
declare const SABLE_UI_VERSION: "0.3.
|
|
7502
|
+
declare const SABLE_UI_VERSION: "0.3.2";
|
|
7503
7503
|
|
|
7504
7504
|
export { Accordion, AccordionItem, AccordionPanel, AccordionTrigger, AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogTitle, AlertDialogTrigger, AppHeader, type AppHeaderProps, AppShell, type AppShellProps, AreaChart, type AreaChartProps, Attachment, type AttachmentProps, Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, type AvatarGroupCountProps, type AvatarGroupProps, AvatarImage, type AvatarProps, AvatarRoot, BADGE_APPEARANCES, BADGE_TONES, Badge, type BadgeAppearance, type BadgeProps, type BadgeTone, Banner, type BannerProps, BarChart, type BarChartProps, BottomNav, BottomNavItem, type BottomNavItemProps, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbPage, type BreadcrumbPageProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, Breadcrumbs, type BreadcrumbsProps, Browser, type BrowserProps, Bubble, type BubbleProps, BubbleReaction, type BubbleReactionProps, BubbleReactions, type BubbleReactionsProps, Button, type ButtonProps, CHART_SERIES_COUNT, COMPONENT_GROUPS, COMPONENT_TAXONOMY, Calendar, type CalendarProps, Card, CardAction, CardContent, type CardContentProps, CardDescription, CardFooter, CardHeader, CardList, type CardProps, CardTitle, type CardTitleProps, Carousel, type CarouselProps, type CarouselSlidesToShow, type ChartCategories, type ChartCenterLabel, type ChartCurve, type ChartDatum, type ChartSeries, type ChartTone, type ChartTooltipIndicator, type ChartTooltipOptions, type ChartValueFormatter, ChatComposer, type ChatComposerProps, Checkbox, CheckboxCard, type CheckboxCardProps, type CheckboxCardTone, CheckboxGroup, type CheckboxGroupProps, Code, CodeBlock, type CodeBlockProps, CodeHighlightProvider, type CodeHighlighter, type CodeProps, Collapsible, CollapsibleIndicator, CollapsiblePanel, CollapsibleTrigger, ColorField, type ColorFieldProps, Combobox, ComboboxChips, ComboboxClear, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, type ComboboxItemGroup, ComboboxItemIndicator, ComboboxList, ComboboxPortal, type ComboboxProps, ComboboxValue, ComboboxVirtualList, type ComboboxVirtualListProps, type CommandFilter, type CommandItem, CommandMenu, CommandMenuGroup, type CommandMenuGroupProps, CommandMenuItem, type CommandMenuItemProps, CommandMenuPanel, type CommandMenuPanelProps, type CommandMenuProps, CommandMenuTrigger, type CommandMenuTriggerProps, type ComponentGroup, type ComponentGuidance, ComponentMeta, type ComponentRegister, ContextCard, ContextCardArrow, ContextCardContent, ContextCardPortal, ContextCardTrigger, ContextMenu, ContextMenuContent, ContextMenuGroup, ContextMenuGroupLabel, ContextMenuItem, ContextMenuPortal, ContextMenuSeparator, ContextMenuTrigger, DataTable, type DataTableColumn, type DataTableProps, DatePicker, type DatePickerProps, DateTile, type DateTileProps, Density, DensityProvider, Density as DensityValue, DestructiveActionModal, type DestructiveActionModalProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, type DialogSize, DialogTitle, DialogTrigger, EmptyState, type EmptyStateProps, Entity, type EntityProps, Feedback, type FeedbackData, type FeedbackProps, type FeedbackRating, Field, type FieldProps, Fieldset, FieldsetContent, FieldsetDescription, FieldsetFooter, FieldsetLegend, FileDropzone, type FileDropzoneProps, type FileRejection, type FileRejectionCode, Form, type FormProps, GlidingHighlight, type GlidingHighlightProps, type Hsv, InlineStatus, type InlineStatusProps, type StatusTone as InlineTone, Input, type InputProps$1 as InputProps, Kbd, KbdGroup, type KbdGroupProps, type KbdProps, Label, type LabelProps$2 as LabelProps, LineChart, type LineChartProps, Marker, type MarkerProps, Marquee, type MarqueeProps, Menu, MenuCheckboxItem, MenuContent, MenuGroup, MenuGroupLabel, MenuItem, MenuPortal, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSubmenu, MenuSubmenuTrigger, MenuTrigger, Message, type MessageProps, MessageScroller, type MessageScrollerHandle, type MessageScrollerProps, Meter, MeterIndicator, MeterLabel, type MeterSize, type MeterTone, MeterTrack, MeterValue, MiddleTruncate, type MiddleTruncateProps, type MotionPolicy, MotionProvider, type MotionProviderProps, Note, type NoteAction, type NoteProps, NotificationBadge, type NotificationBadgeProps, NumberField, type NumberFieldProps, type OrbMode, type OrbSize, OtpField, type OtpFieldProps, OverflowMenu, type OverflowMenuProps, PageHeader, type PageHeaderProps, PageLoader, type PageLoaderProps, Pagination, type PaginationProps, Panel, PanelGroup, PanelResizer, type PanelResizerProps, PanelSection, type PanelWidthBounds, Phone, type PhoneProps, PieChart, type PieChartProps, Pill, type PillProps, Popover, PopoverArrow, PopoverClose, PopoverContent, PopoverDescription, PopoverPortal, PopoverTitle, PopoverTrigger, Presence, type PresenceProps, Progress, ProgressIndicator, ProgressLabel, type ProgressSize, ProgressTrack, ProgressValue, PropertyPair, PropertyRow, RadarChart, type RadarChartProps, RadialChart, type RadialChartProps, Radio, RadioCard, type RadioCardProps, type RadioCardTone, RadioGroup, RelativeTime, type RelativeTimeProps, Reveal, type RevealProps, type Rgb, SABLE_UI_VERSION, SEGMENTED_BAR_TONES, STATUS_TONES, STATUS_TONE_ICON, type ScrollCommandOptions, Scroller, type ScrollerProps, ScrubField, type ScrubFieldProps, SearchInput, type SearchInputProps, SegmentedBar, type SegmentedBarProps, type SegmentedBarSegment, type SegmentedBarTone, Select, SelectContent, SelectGroup, SelectGroupLabel, SelectItem, SelectPortal, SelectSeparator, SelectTrigger, SelectValue, Separator, type SeparatorProps$3 as SeparatorProps, SettingsMenu, type SettingsMenuProps, SettingsRow, type SettingsRowProps, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetPortal, SheetTitle, SheetTrigger, ShowMore, type ShowMoreProps, SideNav, type SideNavActiveVariant, SideNavGroup, type SideNavGroupProps, SideNavItem, type SideNavItemProps, type SideNavProps, type SideNavSize, Sidebar, SidebarFooter, SidebarHeader, SidebarItem, type SidebarItemProps, SidebarNav, type SidebarProps, SimpleTooltip, Skeleton, Slider, SliderControl, SliderIndicator, SliderRoot, SliderThumb, SliderTrack, SliderValue, Sparkline, type SparklineProps, Spinner, type SpinnerProps, StatusBar, StatusBarGroup, StatusBarSeparator, StatusDot, type StatusDotProps, type StatusTone, type StepStatus, Stepper, StepperItem, type StepperItemProps, type StepperOrientation, type StepperProps, StreamingText, type StreamingTextProps, Switch, TRANSPARENT, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsPanel as TabsContent, TabsList, TabsPanel, TabsTrigger, TextReveal, type TextRevealProps, Textarea, type TextareaProps, ThemeId, ThemeManifest, ThemeMode$1 as ThemeManifestMode, type ThemeMode, ThemeSelector, type ThemeSelectorProps, ThemeSwitcher, type ThemeSwitcherProps, ThinkingOrb, type ThinkingOrbProps, ToastAction, type ToastApi, ToastClose, ToastDescription, type ToastManagerApi, type ToastOptions, type ToastPosition, ToastProvider, type ToastProviderProps, ToastRoot, ToastTitle, type ToastType, ToastViewport, Toggle, ToggleGroup, type ToggleGroupAppearance, Toggle as ToggleGroupItem, Toolbar, ToolbarButton, type ToolbarButtonProps, ToolbarGroup, type ToolbarGroupProps, ToolbarInput, type ToolbarInputProps, ToolbarLink, type ToolbarLinkProps, type ToolbarProps, ToolbarSeparator, type ToolbarSeparatorProps, Tooltip, TooltipArrow, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, Tree, TreeAddRow, TreeEmpty, TreeRow, TreeSection, type UseCopyOptions, type UseCopyResult, type UseInViewOptions, type UsePanelWidthOptions, Video, type VideoProps, ViewTransitionName, type ViewTransitionNameProps, Workspace, WorkspaceBar, WorkspaceCanvas, accordionMeta, appHeaderMeta, appShellMeta, areaChartMeta, attachmentMeta, avatarGroupVariants, avatarMeta, avatarVariants, badgeMeta, badgeVariants, bannerMeta, bannerVariants, barChartMeta, bottomNavMeta, breadcrumbsMeta, browserMeta, bubbleMeta, buttonMeta, buttonVariants, calendarMeta, cardMeta, carouselMeta, chartColor, toneColor as chartToneColor, chatComposerMeta, checkboxCardMeta, checkboxMeta, cn, codeBlockMeta, codeMeta, collapsibleMeta, colorFieldMeta, comboboxMeta, commandMenuMeta, componentGuidance, componentLabel, componentSlug, componentsInGroup, contextCardMeta, contextMenuMeta, dataTableMeta, datePickerMeta, dateTileMeta, destructiveActionModalMeta, dialogMeta, emptyStateMeta, entityMeta, feedbackMeta, fieldsetMeta, fileDropzoneMeta, fileDropzoneVariants, formMeta, formatFileSize, formatHex, glidingHighlightMeta, hsvToRgb, hueColor, inlineStatusMeta, inputMeta, isTransparent, kbdMeta, labelMeta, lineChartMeta, markerMeta, marqueeMeta, menuMeta, messageMeta, messageScrollerMeta, meterIndicatorVariants, meterMeta, meterTrackVariants, middleTruncateMeta, noteMeta, noteVariants, notificationBadgeMeta, notificationCountVariants, notificationDotVariants, numberFieldMeta, otpFieldMeta, overflowMenuMeta, pageHeaderMeta, pageLoaderMeta, paginationMeta, panelGroupMeta, panelSectionMeta, parseHex, phoneMeta, pieChartMeta, pillMeta, pillVariants, popoverMeta, progressMeta, progressTrackVariants, radarChartMeta, radialChartMeta, radioCardMeta, radioMeta, relativeTimeMeta, rgbToHsv, scrollerMeta, scrubFieldMeta, searchInputMeta, segmentedBarMeta, segmentedBarSegmentVariants, segmentedBarVariants, selectMeta, separatorMeta, settingsMenuMeta, sheetMeta, sheetVariants, showMoreMeta, sideNavMeta, sidebarMeta, skeletonMeta, sliderMeta, sparklineMeta, spinnerMeta, startViewTransition, statusBarMeta, statusDotMeta, statusDotVariants, stepperConnectorVariants, stepperIndicatorVariants, stepperMeta, streamingTextMeta, supportsViewTransitions, switchMeta, tableMeta, tabsMeta, textareaMeta, themeSelectorMeta, themeSwitcherMeta, thinkingOrbMeta, toast, toastMeta, toggleMeta, toolbarGroupVariants, toolbarMeta, toolbarSeparatorVariants, toolbarVariants, tooltipMeta, treeIndent, treeMeta, useAnchoredDensity, useComboboxFilteredItems, useCommandMenuShortcut, useCopy, useDensity, useInView, useMotion, usePanelWidth, useReducedMotion, useScrollActivity, useSidebar, useToast, useToastManager, useTypeTier, videoMeta, workspaceMeta };
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export { DENSITY_TOKENS, MOTION_TOKENS, RADIUS_TOKENS, SEMANTIC_TOKENS, TYPE_OVERLINE_TOKENS, TYPE_REFINEMENT_TOKENS, TYPE_SCALE_TOKENS, TYPE_UI_TOKENS, WORKSPACE_SURFACE_TOKENS } from './chunk-
|
|
1
|
+
export { DENSITY_TOKENS, MOTION_TOKENS, RADIUS_TOKENS, SEMANTIC_TOKENS, TYPE_OVERLINE_TOKENS, TYPE_REFINEMENT_TOKENS, TYPE_SCALE_TOKENS, TYPE_UI_TOKENS, WORKSPACE_SURFACE_TOKENS } from './chunk-OQACYT2D.js';
|
|
2
2
|
export { Phone, phoneMeta } from './chunk-KFZ43RKU.js';
|
|
3
3
|
import './chunk-NEQNXI2G.js';
|
|
4
|
-
export { AppHeader, AppShell, BottomNav, BottomNavItem, Browser, ChatComposer, DataTable, EmptyState, Marker, MessageScroller, Meter, MeterIndicator, MeterLabel, MeterTrack, MeterValue, NotificationBadge, PageHeader, Presence, RelativeTime, Reveal, SearchInput, SettingsMenu, SettingsRow, SideNav, SideNavGroup, SideNavItem, Sidebar, SidebarFooter, SidebarHeader, SidebarItem, SidebarNav, Skeleton, StreamingText, Tabs, TabsPanel as TabsContent, TabsList, TabsPanel, TabsTrigger, TextReveal, Toolbar, ToolbarButton, ToolbarGroup, ToolbarInput, ToolbarLink, ToolbarSeparator, ViewTransitionName, appHeaderMeta, appShellMeta, bottomNavMeta, browserMeta, chatComposerMeta, dataTableMeta, emptyStateMeta, markerMeta, messageScrollerMeta, meterIndicatorVariants, meterMeta, meterTrackVariants, notificationBadgeMeta, notificationCountVariants, notificationDotVariants, pageHeaderMeta, relativeTimeMeta, searchInputMeta, settingsMenuMeta, sideNavMeta, sidebarMeta, skeletonMeta, startViewTransition, streamingTextMeta, supportsViewTransitions, tabsMeta, toolbarGroupVariants, toolbarMeta, toolbarSeparatorVariants, toolbarVariants, useInView, useSidebar } from './chunk-
|
|
5
|
-
import { SELECTION_CARD_CHECKED, CartesianChart, resolveSeries, chartFormatters, categoryText, numberValue, niceTicks, ChartFrame, polar, riseTransition, stagger, pathStyle, morphTransition, ChartLegend, RADIO_DOT, RADIO_RING, SELECTION_CARD_TILE_HEAD, SELECTION_CARD_GLYPH, SELECTION_CARD_SHELL, SELECTION_CARD_LAYOUT, CheckboxMark, CHECK_BOX, SEGMENTED_STEP, SEGMENTED_ITEM, SEGMENTED_TRACK, ToggleGroup, Toggle, approxTextWidth, ChartTooltipContent } from './chunk-
|
|
6
|
-
export { Accordion, AccordionItem, AccordionPanel, AccordionTrigger, AreaChart, BarChart, CHART_SERIES_COUNT, Checkbox, CommandMenu, CommandMenuGroup, CommandMenuItem, CommandMenuPanel, CommandMenuTrigger, DateTile, Kbd, KbdGroup, OtpField, PieChart, RadialChart, SEGMENTED_BAR_TONES, Scroller, SegmentedBar, Slider, SliderControl, SliderIndicator, SliderRoot, SliderThumb, SliderTrack, SliderValue, Sparkline, Stepper, StepperItem, Toggle, ToggleGroup, Toggle as ToggleGroupItem, accordionMeta, areaChartMeta, barChartMeta, chartColor, toneColor as chartToneColor, checkboxMeta, commandMenuMeta, dateTileMeta, kbdMeta, otpFieldMeta, pieChartMeta, radialChartMeta, segmentedBarMeta, segmentedBarSegmentVariants, segmentedBarVariants, sliderMeta, sparklineMeta, stepperConnectorVariants, stepperIndicatorVariants, stepperMeta, toggleMeta, useCommandMenuShortcut } from './chunk-
|
|
7
|
-
import { withPortalThemeScope, FIELD_SHELL_XS, useTypeTier, useDensity, FIELD_SHELL, MOBILE_FIELD_TIER, useMotion, HighlightGlide, useAnchoredDensity, anchoredScroll, useIsomorphicLayoutEffect, mergeRefs, buttonVariants, FIELD_INVALID, Select, SelectTrigger, SelectContent, SelectItem, Button, Spinner, Badge, anchoredListScroll, useResizeObserver, MENU_ITEM_DESTRUCTIVE, DensityProvider, Input, Textarea, Progress } from './chunk-
|
|
8
|
-
export { AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogTitle, AlertDialogTrigger, Attachment, Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, AvatarRoot, BADGE_APPEARANCES, BADGE_TONES, Badge, Bubble, BubbleReaction, BubbleReactions, Button, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardList, CardTitle, Code, CodeBlock, CodeHighlightProvider, Density, DensityProvider, DestructiveActionModal, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Entity, Field, Form, Input, Label, Menu, MenuCheckboxItem, MenuContent, MenuGroup, MenuGroupLabel, MenuItem, MenuPortal, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSubmenu, MenuSubmenuTrigger, MenuTrigger, Message, MotionProvider, OverflowMenu, Pill, Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, Select, SelectContent, SelectGroup, SelectGroupLabel, SelectItem, SelectPortal, SelectSeparator, SelectTrigger, SelectValue, Separator, SimpleTooltip, Spinner, StatusDot, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Textarea, Tooltip, TooltipArrow, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, attachmentMeta, avatarGroupVariants, avatarMeta, avatarVariants, badgeMeta, badgeVariants, bubbleMeta, buttonMeta, buttonVariants, cardMeta, codeBlockMeta, codeMeta, destructiveActionModalMeta, dialogMeta, entityMeta, formMeta, inputMeta, labelMeta, menuMeta, messageMeta, overflowMenuMeta, pillVariants, progressMeta, progressTrackVariants, selectMeta, separatorMeta, spinnerMeta, statusDotMeta, statusDotVariants, switchMeta, tableMeta, textareaMeta, tooltipMeta, useAnchoredDensity, useCopy, useDensity, useMotion, useReducedMotion, useScrollActivity, useTypeTier } from './chunk-
|
|
4
|
+
export { AppHeader, AppShell, BottomNav, BottomNavItem, Browser, ChatComposer, DataTable, EmptyState, Marker, MessageScroller, Meter, MeterIndicator, MeterLabel, MeterTrack, MeterValue, NotificationBadge, PageHeader, Presence, RelativeTime, Reveal, SearchInput, SettingsMenu, SettingsRow, SideNav, SideNavGroup, SideNavItem, Sidebar, SidebarFooter, SidebarHeader, SidebarItem, SidebarNav, Skeleton, StreamingText, Tabs, TabsPanel as TabsContent, TabsList, TabsPanel, TabsTrigger, TextReveal, Toolbar, ToolbarButton, ToolbarGroup, ToolbarInput, ToolbarLink, ToolbarSeparator, ViewTransitionName, appHeaderMeta, appShellMeta, bottomNavMeta, browserMeta, chatComposerMeta, dataTableMeta, emptyStateMeta, markerMeta, messageScrollerMeta, meterIndicatorVariants, meterMeta, meterTrackVariants, notificationBadgeMeta, notificationCountVariants, notificationDotVariants, pageHeaderMeta, relativeTimeMeta, searchInputMeta, settingsMenuMeta, sideNavMeta, sidebarMeta, skeletonMeta, startViewTransition, streamingTextMeta, supportsViewTransitions, tabsMeta, toolbarGroupVariants, toolbarMeta, toolbarSeparatorVariants, toolbarVariants, useInView, useSidebar } from './chunk-D2ETQBHV.js';
|
|
5
|
+
import { SELECTION_CARD_CHECKED, CartesianChart, resolveSeries, chartFormatters, categoryText, numberValue, niceTicks, ChartFrame, polar, riseTransition, stagger, pathStyle, morphTransition, ChartLegend, RADIO_DOT, RADIO_RING, SELECTION_CARD_TILE_HEAD, SELECTION_CARD_GLYPH, SELECTION_CARD_SHELL, SELECTION_CARD_LAYOUT, CheckboxMark, CHECK_BOX, SEGMENTED_STEP, SEGMENTED_ITEM, SEGMENTED_TRACK, ToggleGroup, Toggle, approxTextWidth, ChartTooltipContent } from './chunk-FBSL2LZQ.js';
|
|
6
|
+
export { Accordion, AccordionItem, AccordionPanel, AccordionTrigger, AreaChart, BarChart, CHART_SERIES_COUNT, Checkbox, CommandMenu, CommandMenuGroup, CommandMenuItem, CommandMenuPanel, CommandMenuTrigger, DateTile, Kbd, KbdGroup, OtpField, PieChart, RadialChart, SEGMENTED_BAR_TONES, Scroller, SegmentedBar, Slider, SliderControl, SliderIndicator, SliderRoot, SliderThumb, SliderTrack, SliderValue, Sparkline, Stepper, StepperItem, Toggle, ToggleGroup, Toggle as ToggleGroupItem, accordionMeta, areaChartMeta, barChartMeta, chartColor, toneColor as chartToneColor, checkboxMeta, commandMenuMeta, dateTileMeta, kbdMeta, otpFieldMeta, pieChartMeta, radialChartMeta, segmentedBarMeta, segmentedBarSegmentVariants, segmentedBarVariants, sliderMeta, sparklineMeta, stepperConnectorVariants, stepperIndicatorVariants, stepperMeta, toggleMeta, useCommandMenuShortcut } from './chunk-FBSL2LZQ.js';
|
|
7
|
+
import { withPortalThemeScope, FIELD_SHELL_XS, useTypeTier, useDensity, FIELD_SHELL, MOBILE_FIELD_TIER, useMotion, HighlightGlide, useAnchoredDensity, anchoredScroll, useIsomorphicLayoutEffect, mergeRefs, buttonVariants, FIELD_INVALID, Select, SelectTrigger, SelectContent, SelectItem, Button, Spinner, Badge, anchoredListScroll, useResizeObserver, MENU_ITEM_DESTRUCTIVE, DensityProvider, Input, Textarea, Progress } from './chunk-CCUDFLU3.js';
|
|
8
|
+
export { AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogTitle, AlertDialogTrigger, Attachment, Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, AvatarRoot, BADGE_APPEARANCES, BADGE_TONES, Badge, Bubble, BubbleReaction, BubbleReactions, Button, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardList, CardTitle, Code, CodeBlock, CodeHighlightProvider, Density, DensityProvider, DestructiveActionModal, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Entity, Field, Form, Input, Label, Menu, MenuCheckboxItem, MenuContent, MenuGroup, MenuGroupLabel, MenuItem, MenuPortal, MenuRadioGroup, MenuRadioItem, MenuSeparator, MenuSubmenu, MenuSubmenuTrigger, MenuTrigger, Message, MotionProvider, OverflowMenu, Pill, Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, Select, SelectContent, SelectGroup, SelectGroupLabel, SelectItem, SelectPortal, SelectSeparator, SelectTrigger, SelectValue, Separator, SimpleTooltip, Spinner, StatusDot, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Textarea, Tooltip, TooltipArrow, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, attachmentMeta, avatarGroupVariants, avatarMeta, avatarVariants, badgeMeta, badgeVariants, bubbleMeta, buttonMeta, buttonVariants, cardMeta, codeBlockMeta, codeMeta, destructiveActionModalMeta, dialogMeta, entityMeta, formMeta, inputMeta, labelMeta, menuMeta, messageMeta, overflowMenuMeta, pillVariants, progressMeta, progressTrackVariants, selectMeta, separatorMeta, spinnerMeta, statusDotMeta, statusDotVariants, switchMeta, tableMeta, textareaMeta, tooltipMeta, useAnchoredDensity, useCopy, useDensity, useMotion, useReducedMotion, useScrollActivity, useTypeTier } from './chunk-CCUDFLU3.js';
|
|
9
9
|
export { AspectBox, Bleed, Center, Col, Columns, Grid, GridOverlay, Page, Region, Row, SafeArea, Spacer, SplitPane, Stack } from './chunk-3IWZYBGH.js';
|
|
10
10
|
import { cn } from './chunk-SRQWQUTW.js';
|
|
11
11
|
export { cn } from './chunk-SRQWQUTW.js';
|
|
@@ -7003,7 +7003,7 @@ var scrubFieldMeta = {
|
|
|
7003
7003
|
"Every scrub gesture is reachable from the keyboard: ArrowUp/ArrowDown step by `step`, Shift+Arrow by ten steps.",
|
|
7004
7004
|
"Enter commits, Escape reverts to the last committed value, and blur commits \u2014 so a partial edit is never silently kept."
|
|
7005
7005
|
],
|
|
7006
|
-
tokensUsed: ["foreground", "muted-foreground", "ring", "
|
|
7006
|
+
tokensUsed: ["foreground", "muted-foreground", "ring", "panel-field", "panel-field-hover"],
|
|
7007
7007
|
examples: [
|
|
7008
7008
|
{
|
|
7009
7009
|
label: "Opacity with a glyph handle",
|
|
@@ -11260,6 +11260,6 @@ var carouselMeta = {
|
|
|
11260
11260
|
};
|
|
11261
11261
|
|
|
11262
11262
|
// src/index.ts
|
|
11263
|
-
var SABLE_UI_VERSION = "0.3.
|
|
11263
|
+
var SABLE_UI_VERSION = "0.3.2";
|
|
11264
11264
|
|
|
11265
11265
|
export { Banner, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, Breadcrumbs, COMPONENT_GROUPS, COMPONENT_TAXONOMY, Calendar, Carousel, CheckboxCard, CheckboxGroup, Collapsible, CollapsibleIndicator, CollapsiblePanel, CollapsibleTrigger, ColorField, Combobox, ComboboxChips, ComboboxClear, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxInput, ComboboxItem, ComboboxItemIndicator, ComboboxList, ComboboxPortal, ComboboxValue, ComboboxVirtualList, ContextCard, ContextCardArrow, ContextCardContent, ContextCardPortal, ContextCardTrigger, ContextMenu, ContextMenuContent, ContextMenuGroup, ContextMenuGroupLabel, ContextMenuItem, ContextMenuPortal, ContextMenuSeparator, ContextMenuTrigger, DatePicker, Feedback, Fieldset, FieldsetContent, FieldsetDescription, FieldsetFooter, FieldsetLegend, FileDropzone, GlidingHighlight, InlineStatus, LineChart, Marquee, MiddleTruncate, Note, NumberField, PageLoader, Pagination, Panel, PanelGroup, PanelResizer, PanelSection, Popover, PopoverArrow, PopoverClose, PopoverContent, PopoverDescription, PopoverPortal, PopoverTitle, PopoverTrigger, PropertyPair, PropertyRow, RadarChart, Radio, RadioCard, RadioGroup, SABLE_UI_VERSION, STATUS_TONES, STATUS_TONE_ICON, ScrubField, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetPortal, SheetTitle, SheetTrigger, ShowMore, StatusBar, StatusBarGroup, StatusBarSeparator, TRANSPARENT, ThemeSelector, ThemeSwitcher, ThinkingOrb, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastRoot, ToastTitle, ToastViewport, Tree, TreeAddRow, TreeEmpty, TreeRow, TreeSection, Video, Workspace, WorkspaceBar, WorkspaceCanvas, bannerMeta, bannerVariants, breadcrumbsMeta, calendarMeta, carouselMeta, checkboxCardMeta, collapsibleMeta, colorFieldMeta, comboboxMeta, componentGuidance, componentLabel, componentSlug, componentsInGroup, contextCardMeta, contextMenuMeta, datePickerMeta, feedbackMeta, fieldsetMeta, fileDropzoneMeta, fileDropzoneVariants, formatFileSize, formatHex, glidingHighlightMeta, hsvToRgb, hueColor, inlineStatusMeta, isTransparent, lineChartMeta, marqueeMeta, middleTruncateMeta, noteMeta, noteVariants, numberFieldMeta, pageLoaderMeta, paginationMeta, panelGroupMeta, panelSectionMeta, parseHex, pillMeta, popoverMeta, radarChartMeta, radioCardMeta, radioMeta, rgbToHsv, scrollerMeta, scrubFieldMeta, sheetMeta, sheetVariants, showMoreMeta, statusBarMeta, themeSelectorMeta, themeSwitcherMeta, thinkingOrbMeta, toast, toastMeta, treeIndent, treeMeta, useComboboxFilteredItems, usePanelWidth, useToast, useToastManager, videoMeta, workspaceMeta };
|
package/dist/ios/styles.css
CHANGED
|
@@ -30,6 +30,14 @@
|
|
|
30
30
|
--ios-safe-top: env(safe-area-inset-top, 0px); --ios-header-height: calc(92px + var(--ios-safe-top));
|
|
31
31
|
--ios-tabbar-bottom: max(12px, env(safe-area-inset-bottom, 0px)); --ios-content-bottom: calc(82px + var(--ios-tabbar-bottom));
|
|
32
32
|
}
|
|
33
|
+
/* Portalled layers — a toast stack, a menu — render at <body>, outside
|
|
34
|
+
.ios-prototype, so they could not see its geometry: a toast placed at
|
|
35
|
+
top: var(--ios-safe-top) fell back to top: auto and landed below the screen.
|
|
36
|
+
A prototype owns its whole document (the framed page, or a real phone's
|
|
37
|
+
screen), so the root carries the same values whenever one is present.
|
|
38
|
+
Keep these in step with the .ios-prototype rules above. */
|
|
39
|
+
:root:has(.ios-prototype) { --ios-inset: 16px; --ios-safe-top: 62px; --ios-tabbar-bottom: 28px; }
|
|
40
|
+
:root:has(.ios-prototype.ios-bare) { --ios-safe-top: env(safe-area-inset-top, 0px); --ios-tabbar-bottom: max(12px, env(safe-area-inset-bottom, 0px)); }
|
|
33
41
|
.ios-prototype.dark {
|
|
34
42
|
--ios-canvas: var(--background, #000); --ios-ink: var(--foreground, #f2f2f7); --ios-secondary: var(--muted-foreground, #aeaeb2);
|
|
35
43
|
--ios-panel: var(--card, #1c1c1e); --ios-primary-ink: var(--primary-foreground, #fff);
|
package/dist/patterns/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TextReveal, Reveal, MessageScroller, Marker, Toolbar, ToolbarButton, StreamingText, ChatComposer, SettingsMenu, SettingsRow, AppShell, PageHeader, DataTable, Meter, RelativeTime, Sidebar, SidebarHeader, SidebarNav, SidebarItem, NotificationBadge, SidebarFooter, BottomNav, BottomNavItem, AppHeader, Tabs, TabsList, TabsTrigger, TabsPanel, Skeleton, Browser, MeterLabel, MeterValue, MeterTrack, SearchInput, EmptyState, SideNav, SideNavItem } from '../chunk-
|
|
2
|
-
import { Form, Field, Input, Button, Separator, Card, CardContent, Badge, Entity, Avatar, StatusDot, CardHeader, CardTitle, CardDescription, CardAction, Message, Bubble, CodeBlock, SimpleTooltip, Attachment, CardFooter, MenuRadioGroup, MenuRadioItem, CardList, OverflowMenu, MenuItem, MenuSeparator, Textarea, Code, Select, SelectTrigger, SelectContent, SelectItem, DestructiveActionModal, Switch } from '../chunk-
|
|
1
|
+
import { TextReveal, Reveal, MessageScroller, Marker, Toolbar, ToolbarButton, StreamingText, ChatComposer, SettingsMenu, SettingsRow, AppShell, PageHeader, DataTable, Meter, RelativeTime, Sidebar, SidebarHeader, SidebarNav, SidebarItem, NotificationBadge, SidebarFooter, BottomNav, BottomNavItem, AppHeader, Tabs, TabsList, TabsTrigger, TabsPanel, Skeleton, Browser, MeterLabel, MeterValue, MeterTrack, SearchInput, EmptyState, SideNav, SideNavItem } from '../chunk-D2ETQBHV.js';
|
|
2
|
+
import { Form, Field, Input, Button, Separator, Card, CardContent, Badge, Entity, Avatar, StatusDot, CardHeader, CardTitle, CardDescription, CardAction, Message, Bubble, CodeBlock, SimpleTooltip, Attachment, CardFooter, MenuRadioGroup, MenuRadioItem, CardList, OverflowMenu, MenuItem, MenuSeparator, Textarea, Code, Select, SelectTrigger, SelectContent, SelectItem, DestructiveActionModal, Switch } from '../chunk-CCUDFLU3.js';
|
|
3
3
|
import { Region, Stack, Row, Grid, Page, Columns, Col, AspectBox } from '../chunk-3IWZYBGH.js';
|
|
4
4
|
import '../chunk-SRQWQUTW.js';
|
|
5
5
|
import { Icon } from '../chunk-NGBDP3BM.js';
|
package/dist/presets/index.d.ts
CHANGED